diff --git a/.claude/settings.local.json b/.claude/settings.local.json
index 003711fc..a2b5d10d 100644
--- a/.claude/settings.local.json
+++ b/.claude/settings.local.json
@@ -1,34 +1,36 @@
{
- "permissions": {
- "allow": [
- "Bash(pnpm check:*)",
- "mcp__ide__getDiagnostics",
- "mcp__plugin_svelte_svelte__svelte-autofixer",
- "mcp__plugin_svelte_svelte__list-sections",
- "Bash(pkill:*)",
- "Bash(timeout 8 pnpm dev:*)",
- "Bash(git checkout:*)",
- "Bash(npx svelte-kit:*)",
- "Bash(ls:*)",
- "Bash(pnpm format:*)",
- "Bash(pnpm add:*)",
- "WebSearch",
- "WebFetch(domain:github.com)",
- "WebFetch(domain:flipclockjs.com)",
- "WebFetch(domain:codepen.io)",
- "WebFetch(domain:flo-bit.dev)",
- "Bash(pnpm install)",
- "Bash(pnpm install:*)",
- "Bash(pnpm config:*)",
- "Bash(lsof:*)",
- "Bash(pnpm dev)",
- "Bash(pnpm exec svelte-kit:*)",
- "Bash(pnpm build:*)",
- "Bash(pnpm remove:*)",
- "Bash(grep:*)",
- "Bash(find:*)",
- "Bash(npx prettier:*)",
- "Bash(node -e:*)"
- ]
- }
+ "permissions": {
+ "allow": [
+ "Bash(pnpm check:*)",
+ "mcp__ide__getDiagnostics",
+ "mcp__plugin_svelte_svelte__svelte-autofixer",
+ "mcp__plugin_svelte_svelte__list-sections",
+ "Bash(pkill:*)",
+ "Bash(timeout 8 pnpm dev:*)",
+ "Bash(git checkout:*)",
+ "Bash(npx svelte-kit:*)",
+ "Bash(ls:*)",
+ "Bash(pnpm format:*)",
+ "Bash(pnpm add:*)",
+ "WebSearch",
+ "WebFetch(domain:github.com)",
+ "WebFetch(domain:flipclockjs.com)",
+ "WebFetch(domain:codepen.io)",
+ "WebFetch(domain:flo-bit.dev)",
+ "Bash(pnpm install)",
+ "Bash(pnpm install:*)",
+ "Bash(pnpm config:*)",
+ "Bash(lsof:*)",
+ "Bash(pnpm dev)",
+ "Bash(pnpm exec svelte-kit:*)",
+ "Bash(pnpm build:*)",
+ "Bash(pnpm remove:*)",
+ "Bash(grep:*)",
+ "Bash(find:*)",
+ "Bash(npx prettier:*)",
+ "Bash(node -e:*)",
+ "mcp__plugin_svelte_svelte__get-documentation",
+ "WebFetch(domain:bits-ui.com)"
+ ]
+ }
}
diff --git a/package.json b/package.json
index d889dbef..71c40663 100644
--- a/package.json
+++ b/package.json
@@ -58,6 +58,7 @@
"@foxui/social": "^0.4.7",
"@foxui/time": "^0.4.7",
"@foxui/visual": "^0.4.7",
+ "@internationalized/date": "^3.11.0",
"@number-flow/svelte": "^0.3.10",
"@tailwindcss/typography": "^0.5.19",
"@threlte/core": "^8.3.1",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 320fabac..a1ad7dba 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -62,6 +62,9 @@ importers:
'@foxui/visual':
specifier: ^0.4.7
version: 0.4.7(svelte@5.48.0)(tailwindcss@4.1.18)
+ '@internationalized/date':
+ specifier: ^3.11.0
+ version: 3.11.0
'@number-flow/svelte':
specifier: ^0.3.10
version: 0.3.10(svelte@5.48.0)
@@ -124,7 +127,7 @@ importers:
version: 0.176.0
bits-ui:
specifier: ^2.15.4
- version: 2.15.4(@internationalized/date@3.10.1)(@sveltejs/kit@2.50.1(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.48.0)(vite@7.3.1(@types/node@25.0.10)(jiti@2.6.1)(lightningcss@1.30.2)))(svelte@5.48.0)(typescript@5.9.3)(vite@7.3.1(@types/node@25.0.10)(jiti@2.6.1)(lightningcss@1.30.2)))(svelte@5.48.0)
+ version: 2.15.4(@internationalized/date@3.11.0)(@sveltejs/kit@2.50.1(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.48.0)(vite@7.3.1(@types/node@25.0.10)(jiti@2.6.1)(lightningcss@1.30.2)))(svelte@5.48.0)(typescript@5.9.3)(vite@7.3.1(@types/node@25.0.10)(jiti@2.6.1)(lightningcss@1.30.2)))(svelte@5.48.0)
clsx:
specifier: ^2.1.1
version: 2.1.1
@@ -964,8 +967,8 @@ packages:
cpu: [x64]
os: [win32]
- '@internationalized/date@3.10.1':
- resolution: {integrity: sha512-oJrXtQiAXLvT9clCf1K4kxp3eKsQhIaZqxEyowkBcsvZDdZkbWrVmnGknxs5flTD0VGsxrxKgBCZty1EzoiMzA==}
+ '@internationalized/date@3.11.0':
+ resolution: {integrity: sha512-BOx5huLAWhicM9/ZFs84CzP+V3gBW6vlpM02yzsdYC7TGlZJX1OJiEEHcSayF00Z+3jLlm4w79amvSt6RqKN3Q==, tarball: https://registry.npmjs.org/@internationalized/date/-/date-3.11.0.tgz}
'@jridgewell/gen-mapping@0.3.13':
resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==}
@@ -1233,7 +1236,7 @@ packages:
vite: ^6.3.0 || ^7.0.0
'@swc/helpers@0.5.18':
- resolution: {integrity: sha512-TXTnIcNJQEKwThMMqBXsZ4VGAza6bvN4pa41Rkqoio6QBKMvo+5lexeTMScGCIxtzgQJzElcvIltani+adC5PQ==}
+ resolution: {integrity: sha512-TXTnIcNJQEKwThMMqBXsZ4VGAza6bvN4pa41Rkqoio6QBKMvo+5lexeTMScGCIxtzgQJzElcvIltani+adC5PQ==, tarball: https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.18.tgz}
'@tailwindcss/forms@0.5.11':
resolution: {integrity: sha512-h9wegbZDPurxG22xZSoWtdzc41/OlNEUQERNqI/0fOwa2aVlWGu7C35E/x6LDyD3lgtztFSSjKZyuVM0hxhbgA==}
@@ -3043,7 +3046,7 @@ packages:
typescript: '>=4.8.4'
tslib@2.8.1:
- resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
+ resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==, tarball: https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz}
turndown@7.2.2:
resolution: {integrity: sha512-1F7db8BiExOKxjSMU2b7if62D/XOyQyZbPKq/nUwopfgnHlqXHqQ0lvfUTeUIr1lZJzOPFn43dODyMSIfvWRKQ==}
@@ -3811,7 +3814,7 @@ snapshots:
'@img/sharp-win32-x64@0.34.5':
optional: true
- '@internationalized/date@3.10.1':
+ '@internationalized/date@3.11.0':
dependencies:
'@swc/helpers': 0.5.18
@@ -4587,7 +4590,7 @@ snapshots:
dependencies:
'@floating-ui/core': 1.7.3
'@floating-ui/dom': 1.7.5
- '@internationalized/date': 3.10.1
+ '@internationalized/date': 3.11.0
css.escape: 1.5.1
esm-env: 1.2.2
runed: 0.23.4(svelte@5.48.0)
@@ -4595,11 +4598,11 @@ snapshots:
svelte-toolbelt: 0.7.1(svelte@5.48.0)
tabbable: 6.4.0
- bits-ui@2.15.4(@internationalized/date@3.10.1)(@sveltejs/kit@2.50.1(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.48.0)(vite@7.3.1(@types/node@25.0.10)(jiti@2.6.1)(lightningcss@1.30.2)))(svelte@5.48.0)(typescript@5.9.3)(vite@7.3.1(@types/node@25.0.10)(jiti@2.6.1)(lightningcss@1.30.2)))(svelte@5.48.0):
+ bits-ui@2.15.4(@internationalized/date@3.11.0)(@sveltejs/kit@2.50.1(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.48.0)(vite@7.3.1(@types/node@25.0.10)(jiti@2.6.1)(lightningcss@1.30.2)))(svelte@5.48.0)(typescript@5.9.3)(vite@7.3.1(@types/node@25.0.10)(jiti@2.6.1)(lightningcss@1.30.2)))(svelte@5.48.0):
dependencies:
'@floating-ui/core': 1.7.3
'@floating-ui/dom': 1.7.5
- '@internationalized/date': 3.10.1
+ '@internationalized/date': 3.11.0
esm-env: 1.2.2
runed: 0.35.1(@sveltejs/kit@2.50.1(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.48.0)(vite@7.3.1(@types/node@25.0.10)(jiti@2.6.1)(lightningcss@1.30.2)))(svelte@5.48.0)(typescript@5.9.3)(vite@7.3.1(@types/node@25.0.10)(jiti@2.6.1)(lightningcss@1.30.2)))(svelte@5.48.0)
svelte: 5.48.0
diff --git a/src/lib/components/DatePicker.svelte b/src/lib/components/DatePicker.svelte
new file mode 100644
index 00000000..b3a03326
--- /dev/null
+++ b/src/lib/components/DatePicker.svelte
@@ -0,0 +1,244 @@
+
+
+
Log in to edit this event.
++ Log in to {isNew ? 'create an event' : 'edit this event'}. +
- {formatWeekday(startDate)}, {formatFullDate(startDate)} - {#if endDate && !isSameDay} - - {formatWeekday(endDate)}, {formatFullDate(endDate)} + {#if startDate && !editingDates} + +
- {formatTime(startDate)} - {#if endDate && isSameDay} - - {formatTime(endDate)} + {#if startDate} + {/if} -
+{error}
{/if} -{linkError}
+ {/if}+ Are you sure? This cannot be undone. +
+Log in to create an event.
-Add location
- - - {#if locationError} -{locationError}
- {/if} - - {#if locationResult} -- {getLocationDisplayString(locationResult.location)} -
-- {locationResult.displayName} -
-- Geocoding by Nominatim - / © - OpenStreetMap contributors -
-