diff --git a/app/components/app/SignInDialog.vue b/app/components/app/SignInDialog.vue
new file mode 100644
index 0000000..2ba417b
--- /dev/null
+++ b/app/components/app/SignInDialog.vue
@@ -0,0 +1,20 @@
+
+
+
+
+
diff --git a/app/components/ui/dialog/Dialog.vue b/app/components/ui/dialog/Dialog.vue
new file mode 100644
index 0000000..ade5260
--- /dev/null
+++ b/app/components/ui/dialog/Dialog.vue
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
diff --git a/app/components/ui/dialog/DialogClose.vue b/app/components/ui/dialog/DialogClose.vue
new file mode 100644
index 0000000..c5fae04
--- /dev/null
+++ b/app/components/ui/dialog/DialogClose.vue
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
diff --git a/app/components/ui/dialog/DialogContent.vue b/app/components/ui/dialog/DialogContent.vue
new file mode 100644
index 0000000..7f86b47
--- /dev/null
+++ b/app/components/ui/dialog/DialogContent.vue
@@ -0,0 +1,53 @@
+
+
+
+
+
+
+
+
+
+
+ Close
+
+
+
+
diff --git a/app/components/ui/dialog/DialogDescription.vue b/app/components/ui/dialog/DialogDescription.vue
new file mode 100644
index 0000000..f52e655
--- /dev/null
+++ b/app/components/ui/dialog/DialogDescription.vue
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
diff --git a/app/components/ui/dialog/DialogFooter.vue b/app/components/ui/dialog/DialogFooter.vue
new file mode 100644
index 0000000..0a936e6
--- /dev/null
+++ b/app/components/ui/dialog/DialogFooter.vue
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
diff --git a/app/components/ui/dialog/DialogHeader.vue b/app/components/ui/dialog/DialogHeader.vue
new file mode 100644
index 0000000..bfc3c64
--- /dev/null
+++ b/app/components/ui/dialog/DialogHeader.vue
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
diff --git a/app/components/ui/dialog/DialogOverlay.vue b/app/components/ui/dialog/DialogOverlay.vue
new file mode 100644
index 0000000..7790077
--- /dev/null
+++ b/app/components/ui/dialog/DialogOverlay.vue
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
diff --git a/app/components/ui/dialog/DialogScrollContent.vue b/app/components/ui/dialog/DialogScrollContent.vue
new file mode 100644
index 0000000..f2475db
--- /dev/null
+++ b/app/components/ui/dialog/DialogScrollContent.vue
@@ -0,0 +1,59 @@
+
+
+
+
+
+ {
+ const originalEvent = event.detail.originalEvent;
+ const target = originalEvent.target as HTMLElement;
+ if (originalEvent.offsetX > target.clientWidth || originalEvent.offsetY > target.clientHeight) {
+ event.preventDefault();
+ }
+ }"
+ >
+
+
+
+
+ Close
+
+
+
+
+
diff --git a/app/components/ui/dialog/DialogTitle.vue b/app/components/ui/dialog/DialogTitle.vue
new file mode 100644
index 0000000..860f01a
--- /dev/null
+++ b/app/components/ui/dialog/DialogTitle.vue
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
diff --git a/app/components/ui/dialog/DialogTrigger.vue b/app/components/ui/dialog/DialogTrigger.vue
new file mode 100644
index 0000000..49667e9
--- /dev/null
+++ b/app/components/ui/dialog/DialogTrigger.vue
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
diff --git a/app/components/ui/dialog/index.ts b/app/components/ui/dialog/index.ts
new file mode 100644
index 0000000..6768b09
--- /dev/null
+++ b/app/components/ui/dialog/index.ts
@@ -0,0 +1,10 @@
+export { default as Dialog } from "./Dialog.vue"
+export { default as DialogClose } from "./DialogClose.vue"
+export { default as DialogContent } from "./DialogContent.vue"
+export { default as DialogDescription } from "./DialogDescription.vue"
+export { default as DialogFooter } from "./DialogFooter.vue"
+export { default as DialogHeader } from "./DialogHeader.vue"
+export { default as DialogOverlay } from "./DialogOverlay.vue"
+export { default as DialogScrollContent } from "./DialogScrollContent.vue"
+export { default as DialogTitle } from "./DialogTitle.vue"
+export { default as DialogTrigger } from "./DialogTrigger.vue"
diff --git a/app/layouts/default.vue b/app/layouts/default.vue
index 1d54525..906aff8 100644
--- a/app/layouts/default.vue
+++ b/app/layouts/default.vue
@@ -1,10 +1,18 @@
+
diff --git a/nuxt.config.ts b/nuxt.config.ts
index ec65fd4..dd7fb7e 100644
--- a/nuxt.config.ts
+++ b/nuxt.config.ts
@@ -10,7 +10,7 @@ export default defineNuxtConfig({
tailwindcss(),
],
},
- modules: ['shadcn-nuxt', '@nuxtjs/color-mode', '@pinia/nuxt', 'nuxt-cron'],
+ modules: ['shadcn-nuxt', '@nuxtjs/color-mode', '@pinia/nuxt', 'nuxt-cron', '@clerk/nuxt'],
colorMode: {
classSuffix: ''
},
diff --git a/package.json b/package.json
index ce1390d..045c0e3 100644
--- a/package.json
+++ b/package.json
@@ -12,11 +12,11 @@
"db:migrate": "drizzle-kit generate && drizzle-kit migrate"
},
"dependencies": {
+ "@clerk/nuxt": "^1.13.10",
"@neondatabase/serverless": "^1.0.2",
"@pinia/nuxt": "0.11.2",
"@tailwindcss/vite": "^4.1.16",
"@vueuse/core": "^14.0.0",
- "better-auth": "^1.4.7",
"class-variance-authority": "^0.7.1",
"clsx": "^2.1.1",
"dotenv": "^17.2.3",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index e757b44..9ae7d4e 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -8,6 +8,9 @@ importers:
.:
dependencies:
+ '@clerk/nuxt':
+ specifier: ^1.13.10
+ version: 1.13.10(magicast@0.5.0)(react@19.2.3)(vue@3.5.22(typescript@5.9.3))
'@neondatabase/serverless':
specifier: ^1.0.2
version: 1.0.2
@@ -20,9 +23,6 @@ importers:
'@vueuse/core':
specifier: ^14.0.0
version: 14.0.0(vue@3.5.22(typescript@5.9.3))
- better-auth:
- specifier: ^1.4.7
- version: 1.4.7(drizzle-kit@0.31.8)(drizzle-orm@0.45.1(@neondatabase/serverless@1.0.2)(@types/pg@8.16.0)(kysely@0.28.9))(vue@3.5.22(typescript@5.9.3))
class-variance-authority:
specifier: ^0.7.1
version: 0.7.1
@@ -216,26 +216,35 @@ packages:
resolution: {integrity: sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==}
engines: {node: '>=6.9.0'}
- '@better-auth/core@1.4.7':
- resolution: {integrity: sha512-rNfj8aNFwPwAMYo+ahoWDsqKrV7svD3jhHSC6+A77xxKodbgV0UgH+RO21GMaZ0PPAibEl851nw5e3bsNslW/w==}
+ '@clerk/backend@2.29.0':
+ resolution: {integrity: sha512-cw4CK6ZHgeFROirlIOawelqRBxZAyH6v3GPSYZEEzYAL0WWUHx7cMXzoQcTMruH7w6UM7s3Ox+uUcINESWkQPA==}
+ engines: {node: '>=18.17.0'}
+
+ '@clerk/nuxt@1.13.10':
+ resolution: {integrity: sha512-zaw1Coc3In8/y3O3zEcwaydcvAeVMZdmTt9D+wkpvZGiUGDHfKipQRwuFpw92HhSTUD4LjeJ2h/XbCScKZnepg==}
+ engines: {node: '>=18.17.0'}
+
+ '@clerk/shared@3.41.1':
+ resolution: {integrity: sha512-BCbT7Xodk2rndA2nV/lW8X5LMNTvFP5UG2wNN9cYuAcTaI6hYZP18/z2zef2gG4xIrK7WAEjGVzHscikqNtzFQ==}
+ engines: {node: '>=18.17.0'}
peerDependencies:
- '@better-auth/utils': 0.3.0
- '@better-fetch/fetch': 1.1.21
- better-call: 1.1.5
- jose: ^6.1.0
- kysely: ^0.28.5
- nanostores: ^1.0.1
+ react: ^18.0.0 || ~19.0.3 || ~19.1.4 || ~19.2.3 || ~19.3.0-0
+ react-dom: ^18.0.0 || ~19.0.3 || ~19.1.4 || ~19.2.3 || ~19.3.0-0
+ peerDependenciesMeta:
+ react:
+ optional: true
+ react-dom:
+ optional: true
- '@better-auth/telemetry@1.4.7':
- resolution: {integrity: sha512-k07C/FWnX6m+IxLruNkCweIxuaIwVTB2X40EqwamRVhYNBAhOYZFGLHH+PtQyM+Yf1Z4+8H6MugLOXSreXNAjQ==}
+ '@clerk/types@4.101.9':
+ resolution: {integrity: sha512-RO00JqqmkIoI1o0XCtvudjaLpqEoe8PRDHlLS1r/aNZazUQCO0TT6nZOx1F3X+QJDjqYVY7YmYl3mtO2QVEk1g==}
+ engines: {node: '>=18.17.0'}
+
+ '@clerk/vue@1.17.6':
+ resolution: {integrity: sha512-N2k90EEwFqo7qXU8vVfVJDRHJ5G33ip+IwoWhbuWIk947PvMLZFirmCfX1c3D/xkv1r0qBs6AGocFClllE+X/w==}
+ engines: {node: '>=18.17.0'}
peerDependencies:
- '@better-auth/core': 1.4.7
-
- '@better-auth/utils@0.3.0':
- resolution: {integrity: sha512-W+Adw6ZA6mgvnSnhOki270rwJ42t4XzSK6YWGF//BbVXL6SwCLWfyzBc1lN2m/4RM28KubdBKQ4X5VMoLRNPQw==}
-
- '@better-fetch/fetch@1.1.21':
- resolution: {integrity: sha512-/ImESw0sskqlVR94jB+5+Pxjf+xBwDZF/N5+y2/q4EqD7IARUTSpPfIo8uf39SYpCxyOCtbyYpUrZ3F/k0zT4A==}
+ vue: ^3.2.0
'@cloudflare/kv-asset-handler@0.4.0':
resolution: {integrity: sha512-+tv3z+SPp+gqTIcImN9o0hqE9xyfQjI1XD9pL6NuKjua9B1y7mNYv0S9cP+QEbA4ppVgGZEmKOvHX5G5Ei1CVA==}
@@ -788,14 +797,6 @@ packages:
resolution: {integrity: sha512-I5sbpSIAHiB+b6UttofhrN/UJXII+4tZPAq1qugzwCwLIL8EZLV7F/JyHUrEIiGgQpEXzpnjlJ+zwcEhheGvCw==}
engines: {node: '>=19.0.0'}
- '@noble/ciphers@2.1.1':
- resolution: {integrity: sha512-bysYuiVfhxNJuldNXlFEitTVdNnYUc+XNJZd7Qm2a5j1vZHgY+fazadNFWFaMK/2vye0JVlxV3gHmC0WDfAOQw==}
- engines: {node: '>= 20.19.0'}
-
- '@noble/hashes@2.0.1':
- resolution: {integrity: sha512-XlOlEbQcE9fmuXxrVTXCTlG2nlRXa9Rj3rr5Ue/+tX+nmkgbX720YHh0VR3hBF9xDvwnb8D2shVGOwNx+ulArw==}
- engines: {node: '>= 20.19.0'}
-
'@nodelib/fs.scandir@2.1.5':
resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
engines: {node: '>= 8'}
@@ -1541,8 +1542,8 @@ packages:
'@speed-highlight/core@1.2.8':
resolution: {integrity: sha512-IGytNtnUnPIobIbOq5Y6LIlqiHNX+vnToQIS7lj6L5819C+rA8TXRDkkG8vePsiBOGcoW9R6i+dp2YBUKdB09Q==}
- '@standard-schema/spec@1.1.0':
- resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==}
+ '@stablelib/base64@1.0.1':
+ resolution: {integrity: sha512-1bnPQqSxSuc3Ii6MhBysoWCg58j97aUjuCSZrGSmDxNqtytIi0k8utUenAwTZN4V5mXXYGsVUI9zeBqy+jBOSQ==}
'@swc/helpers@0.5.17':
resolution: {integrity: sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==}
@@ -1912,73 +1913,6 @@ packages:
resolution: {integrity: sha512-JMWsdF+O8Orq3EMukbUN1QfbLK9mX2CkUmQBcW2T0s8OmdAUL5LLM/6wFwSrqXzlXB13yhyK9gTKS1rIizOduQ==}
hasBin: true
- better-auth@1.4.7:
- resolution: {integrity: sha512-kVmDQxzqGwP4FFMOYpS5I7oAaoFW3hwooUAAtcbb2DrOYv5EUvRUDJbTMaPoMTj7URjNDQ6vG9gcCS1Q+0aVBw==}
- peerDependencies:
- '@lynx-js/react': '*'
- '@prisma/client': ^5.22.0
- '@sveltejs/kit': ^2.0.0
- '@tanstack/react-start': ^1.0.0
- better-sqlite3: ^12.4.1
- drizzle-kit: ^0.31.4
- drizzle-orm: ^0.41.0
- mongodb: ^6.18.0
- mysql2: ^3.14.4
- next: ^14.0.0 || ^15.0.0 || ^16.0.0
- pg: ^8.16.3
- prisma: ^5.22.0
- react: ^18.0.0 || ^19.0.0
- react-dom: ^18.0.0 || ^19.0.0
- solid-js: ^1.0.0
- svelte: ^4.0.0 || ^5.0.0
- vitest: ^4.0.15
- vue: ^3.0.0
- peerDependenciesMeta:
- '@lynx-js/react':
- optional: true
- '@prisma/client':
- optional: true
- '@sveltejs/kit':
- optional: true
- '@tanstack/react-start':
- optional: true
- better-sqlite3:
- optional: true
- drizzle-kit:
- optional: true
- drizzle-orm:
- optional: true
- mongodb:
- optional: true
- mysql2:
- optional: true
- next:
- optional: true
- pg:
- optional: true
- prisma:
- optional: true
- react:
- optional: true
- react-dom:
- optional: true
- solid-js:
- optional: true
- svelte:
- optional: true
- vitest:
- optional: true
- vue:
- optional: true
-
- better-call@1.1.5:
- resolution: {integrity: sha512-nQJ3S87v6wApbDwbZ++FrQiSiVxWvZdjaO+2v6lZJAG2WWggkB2CziUDjPciz3eAt9TqfRursIQMZIcpkBnvlw==}
- peerDependencies:
- zod: ^4.0.0
- peerDependenciesMeta:
- zod:
- optional: true
-
bindings@1.5.0:
resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==}
@@ -2260,6 +2194,10 @@ packages:
resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==}
engines: {node: '>= 0.8'}
+ dequal@2.0.3:
+ resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==}
+ engines: {node: '>=6'}
+
destr@2.0.5:
resolution: {integrity: sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==}
@@ -2512,6 +2450,9 @@ packages:
fast-npm-meta@0.4.7:
resolution: {integrity: sha512-aZU3i3eRcSb2NCq8i6N6IlyiTyF6vqAqzBGl2NBF6ngNx/GIqfYbkLDIKZ4z4P0o/RmtsFnVqHwdrSm13o4tnQ==}
+ fast-sha256@1.3.0:
+ resolution: {integrity: sha512-n11RGP/lrWEFI/bWdygLxhI+pVeo1ZYIVwvvPkW7azl/rOy+F3HYRZ2K5zeE9mmkhQppyv9sQFx0JM9UabnpPQ==}
+
fastq@1.19.1:
resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==}
@@ -2594,6 +2535,9 @@ packages:
resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
engines: {node: '>= 6'}
+ glob-to-regexp@0.4.1:
+ resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==}
+
glob@10.4.5:
resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==}
hasBin: true
@@ -2782,8 +2726,9 @@ packages:
resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==}
hasBin: true
- jose@6.1.3:
- resolution: {integrity: sha512-0TpaTfihd4QMNwrz/ob2Bp7X04yuxJkjRGi4aKmOqwhov54i6u79oCv7T+C7lo70MKH6BesI3vscD1yb/yzKXQ==}
+ js-cookie@3.0.5:
+ resolution: {integrity: sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==}
+ engines: {node: '>=14'}
js-tokens@4.0.0:
resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
@@ -3039,10 +2984,6 @@ packages:
engines: {node: ^18 || >=20}
hasBin: true
- nanostores@1.1.0:
- resolution: {integrity: sha512-yJBmDJr18xy47dbNVlHcgdPrulSn1nhSE6Ns9vTG+Nx9VPT6iV1MD6aQFp/t52zpf82FhLLTXAXr30NuCnxvwA==}
- engines: {node: ^20.0.0 || >=22.0.0}
-
nanotar@0.2.0:
resolution: {integrity: sha512-9ca1h0Xjvo9bEkE4UOxgAzLV0jHKe6LMaxo37ND2DAhhAtd0j8pR1Wxz+/goMrZO8AEZTWCmyaOsFI/W5AdpCQ==}
@@ -3504,6 +3445,10 @@ packages:
rc9@2.1.2:
resolution: {integrity: sha512-btXCnMmRIBINM2LDZoEmOogIZU7Qe7zn4BpomSKZ/ykbLObuBdvG+mFq11DL6fjH1DRwHhrlgtYWG96bJiC7Cg==}
+ react@19.2.3:
+ resolution: {integrity: sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA==}
+ engines: {node: '>=0.10.0'}
+
readable-stream@2.3.8:
resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==}
@@ -3576,9 +3521,6 @@ packages:
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
hasBin: true
- rou3@0.7.12:
- resolution: {integrity: sha512-iFE4hLDuloSWcD7mjdCDhx2bKcIsYbtOTpfH5MHHLSKMOUyjqQXTeZVa289uuwEGEKFoE/BAPbhaU4B774nceg==}
-
run-applescript@7.1.0:
resolution: {integrity: sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==}
engines: {node: '>=18'}
@@ -3625,9 +3567,6 @@ packages:
resolution: {integrity: sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==}
engines: {node: '>= 18'}
- set-cookie-parser@2.7.2:
- resolution: {integrity: sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw==}
-
setprototypeof@1.2.0:
resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==}
@@ -3694,6 +3633,9 @@ packages:
standard-as-callback@2.1.0:
resolution: {integrity: sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==}
+ standardwebhooks@1.0.0:
+ resolution: {integrity: sha512-BbHGOQK9olHPMvQNHWul6MYlrRTAOKn03rOe4A8O3CLWhNf4YHBqq2HJKKC+sfqpxiBY52pNeesD6jIiLDz8jg==}
+
statuses@2.0.1:
resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==}
engines: {node: '>= 0.8'}
@@ -3767,6 +3709,11 @@ packages:
engines: {node: '>=16'}
hasBin: true
+ swr@2.3.4:
+ resolution: {integrity: sha512-bYd2lrhc+VarcpkgWclcUi92wYCpOgMws9Sd1hG1ntAu0NEy+14CbotuFjshBU2kt9rYj9TSmDcybpxpeTU1fg==}
+ peerDependencies:
+ react: ^16.11.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
+
system-architecture@0.1.0:
resolution: {integrity: sha512-ulAk51I9UVUyJgxlv9M6lFot2WP3e7t8Kz9+IS6D4rVba1tR9kON+Ey69f+1R4Q8cd45Lod6a4IcJIxnzGc/zA==}
engines: {node: '>=18'}
@@ -3987,6 +3934,11 @@ packages:
uqr@0.1.2:
resolution: {integrity: sha512-MJu7ypHq6QasgF5YRTjqscSzQp/W11zoUk6kvmlH+fmWEs63Y0Eib13hYFwAzagRJcVY8WVnlV+eBDUGMJ5IbA==}
+ use-sync-external-store@1.6.0:
+ resolution: {integrity: sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
+
util-deprecate@1.0.2:
resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
@@ -4230,9 +4182,6 @@ packages:
resolution: {integrity: sha512-zK7YHHz4ZXpW89AHXUPbQVGKI7uvkd3hzusTdotCg1UxyaVtg0zFJSTfW/Dq5f7OBBVnq6cZIaC8Ti4hb6dtCA==}
engines: {node: '>= 14'}
- zod@4.2.1:
- resolution: {integrity: sha512-0wZ1IRqGGhMP76gLqz8EyfBXKk0J2qo2+H3fi4mcUP/KtTocoX08nmIAHl1Z2kJIZbZee8KOpBCSNPRgauucjw==}
-
snapshots:
'@babel/code-frame@7.27.1':
@@ -4402,26 +4351,58 @@ snapshots:
'@babel/helper-string-parser': 7.27.1
'@babel/helper-validator-identifier': 7.28.5
- '@better-auth/core@1.4.7(@better-auth/utils@0.3.0)(@better-fetch/fetch@1.1.21)(better-call@1.1.5(zod@4.2.1))(jose@6.1.3)(kysely@0.28.9)(nanostores@1.1.0)':
+ '@clerk/backend@2.29.0(react@19.2.3)':
dependencies:
- '@better-auth/utils': 0.3.0
- '@better-fetch/fetch': 1.1.21
- '@standard-schema/spec': 1.1.0
- better-call: 1.1.5(zod@4.2.1)
- jose: 6.1.3
- kysely: 0.28.9
- nanostores: 1.1.0
- zod: 4.2.1
+ '@clerk/shared': 3.41.1(react@19.2.3)
+ '@clerk/types': 4.101.9(react@19.2.3)
+ cookie: 1.0.2
+ standardwebhooks: 1.0.0
+ tslib: 2.8.1
+ transitivePeerDependencies:
+ - react
+ - react-dom
- '@better-auth/telemetry@1.4.7(@better-auth/core@1.4.7(@better-auth/utils@0.3.0)(@better-fetch/fetch@1.1.21)(better-call@1.1.5(zod@4.2.1))(jose@6.1.3)(kysely@0.28.9)(nanostores@1.1.0))':
+ '@clerk/nuxt@1.13.10(magicast@0.5.0)(react@19.2.3)(vue@3.5.22(typescript@5.9.3))':
dependencies:
- '@better-auth/core': 1.4.7(@better-auth/utils@0.3.0)(@better-fetch/fetch@1.1.21)(better-call@1.1.5(zod@4.2.1))(jose@6.1.3)(kysely@0.28.9)(nanostores@1.1.0)
- '@better-auth/utils': 0.3.0
- '@better-fetch/fetch': 1.1.21
+ '@clerk/backend': 2.29.0(react@19.2.3)
+ '@clerk/shared': 3.41.1(react@19.2.3)
+ '@clerk/types': 4.101.9(react@19.2.3)
+ '@clerk/vue': 1.17.6(react@19.2.3)(vue@3.5.22(typescript@5.9.3))
+ '@nuxt/kit': 4.2.0(magicast@0.5.0)
+ '@nuxt/schema': 4.2.0
+ h3: 1.15.4
+ transitivePeerDependencies:
+ - magicast
+ - react
+ - react-dom
+ - vue
- '@better-auth/utils@0.3.0': {}
+ '@clerk/shared@3.41.1(react@19.2.3)':
+ dependencies:
+ csstype: 3.1.3
+ dequal: 2.0.3
+ glob-to-regexp: 0.4.1
+ js-cookie: 3.0.5
+ std-env: 3.10.0
+ swr: 2.3.4(react@19.2.3)
+ optionalDependencies:
+ react: 19.2.3
- '@better-fetch/fetch@1.1.21': {}
+ '@clerk/types@4.101.9(react@19.2.3)':
+ dependencies:
+ '@clerk/shared': 3.41.1(react@19.2.3)
+ transitivePeerDependencies:
+ - react
+ - react-dom
+
+ '@clerk/vue@1.17.6(react@19.2.3)(vue@3.5.22(typescript@5.9.3))':
+ dependencies:
+ '@clerk/shared': 3.41.1(react@19.2.3)
+ '@clerk/types': 4.101.9(react@19.2.3)
+ vue: 3.5.22(typescript@5.9.3)
+ transitivePeerDependencies:
+ - react
+ - react-dom
'@cloudflare/kv-asset-handler@0.4.0':
dependencies:
@@ -4800,10 +4781,6 @@ snapshots:
'@types/node': 22.19.3
'@types/pg': 8.16.0
- '@noble/ciphers@2.1.1': {}
-
- '@noble/hashes@2.0.1': {}
-
'@nodelib/fs.scandir@2.1.5':
dependencies:
'@nodelib/fs.stat': 2.0.5
@@ -5566,7 +5543,7 @@ snapshots:
'@speed-highlight/core@1.2.8': {}
- '@standard-schema/spec@1.1.0': {}
+ '@stablelib/base64@1.0.1': {}
'@swc/helpers@0.5.17':
dependencies:
@@ -5988,34 +5965,6 @@ snapshots:
baseline-browser-mapping@2.8.20: {}
- better-auth@1.4.7(drizzle-kit@0.31.8)(drizzle-orm@0.45.1(@neondatabase/serverless@1.0.2)(@types/pg@8.16.0)(kysely@0.28.9))(vue@3.5.22(typescript@5.9.3)):
- dependencies:
- '@better-auth/core': 1.4.7(@better-auth/utils@0.3.0)(@better-fetch/fetch@1.1.21)(better-call@1.1.5(zod@4.2.1))(jose@6.1.3)(kysely@0.28.9)(nanostores@1.1.0)
- '@better-auth/telemetry': 1.4.7(@better-auth/core@1.4.7(@better-auth/utils@0.3.0)(@better-fetch/fetch@1.1.21)(better-call@1.1.5(zod@4.2.1))(jose@6.1.3)(kysely@0.28.9)(nanostores@1.1.0))
- '@better-auth/utils': 0.3.0
- '@better-fetch/fetch': 1.1.21
- '@noble/ciphers': 2.1.1
- '@noble/hashes': 2.0.1
- better-call: 1.1.5(zod@4.2.1)
- defu: 6.1.4
- jose: 6.1.3
- kysely: 0.28.9
- nanostores: 1.1.0
- zod: 4.2.1
- optionalDependencies:
- drizzle-kit: 0.31.8
- drizzle-orm: 0.45.1(@neondatabase/serverless@1.0.2)(@types/pg@8.16.0)(kysely@0.28.9)
- vue: 3.5.22(typescript@5.9.3)
-
- better-call@1.1.5(zod@4.2.1):
- dependencies:
- '@better-auth/utils': 0.3.0
- '@better-fetch/fetch': 1.1.21
- rou3: 0.7.12
- set-cookie-parser: 2.7.2
- optionalDependencies:
- zod: 4.2.1
-
bindings@1.5.0:
dependencies:
file-uri-to-path: 1.0.0
@@ -6306,6 +6255,8 @@ snapshots:
depd@2.0.0: {}
+ dequal@2.0.3: {}
+
destr@2.0.5: {}
detect-libc@1.0.3: {}
@@ -6539,6 +6490,8 @@ snapshots:
fast-npm-meta@0.4.7: {}
+ fast-sha256@1.3.0: {}
+
fastq@1.19.1:
dependencies:
reusify: 1.1.0
@@ -6612,6 +6565,8 @@ snapshots:
dependencies:
is-glob: 4.0.3
+ glob-to-regexp@0.4.1: {}
+
glob@10.4.5:
dependencies:
foreground-child: 3.3.1
@@ -6794,7 +6749,7 @@ snapshots:
jiti@2.6.1: {}
- jose@6.1.3: {}
+ js-cookie@3.0.5: {}
js-tokens@4.0.0: {}
@@ -6812,7 +6767,8 @@ snapshots:
knitwork@1.2.0: {}
- kysely@0.28.9: {}
+ kysely@0.28.9:
+ optional: true
launch-editor@2.12.0:
dependencies:
@@ -7013,8 +6969,6 @@ snapshots:
nanoid@5.1.6: {}
- nanostores@1.1.0: {}
-
nanotar@0.2.0: {}
nitropack@2.12.9(drizzle-orm@0.45.1(@neondatabase/serverless@1.0.2)(@types/pg@8.16.0)(kysely@0.28.9)):
@@ -7689,6 +7643,8 @@ snapshots:
defu: 6.1.4
destr: 2.0.5
+ react@19.2.3: {}
+
readable-stream@2.3.8:
dependencies:
core-util-is: 1.0.3
@@ -7791,8 +7747,6 @@ snapshots:
'@rollup/rollup-win32-x64-msvc': 4.52.5
fsevents: 2.3.3
- rou3@0.7.12: {}
-
run-applescript@7.1.0: {}
run-parallel@1.2.0:
@@ -7846,8 +7800,6 @@ snapshots:
transitivePeerDependencies:
- supports-color
- set-cookie-parser@2.7.2: {}
-
setprototypeof@1.2.0: {}
shadcn-nuxt@2.3.2(magicast@0.5.0):
@@ -7904,6 +7856,11 @@ snapshots:
standard-as-callback@2.1.0: {}
+ standardwebhooks@1.0.0:
+ dependencies:
+ '@stablelib/base64': 1.0.1
+ fast-sha256: 1.3.0
+
statuses@2.0.1: {}
statuses@2.0.2: {}
@@ -7981,6 +7938,12 @@ snapshots:
picocolors: 1.1.1
sax: 1.4.1
+ swr@2.3.4(react@19.2.3):
+ dependencies:
+ dequal: 2.0.3
+ react: 19.2.3
+ use-sync-external-store: 1.6.0(react@19.2.3)
+
system-architecture@0.1.0: {}
tagged-tag@1.0.0: {}
@@ -8193,6 +8156,10 @@ snapshots:
uqr@0.1.2: {}
+ use-sync-external-store@1.6.0(react@19.2.3):
+ dependencies:
+ react: 19.2.3
+
util-deprecate@1.0.2: {}
vite-dev-rpc@1.1.0(vite@7.1.12(@types/node@24.9.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)):
@@ -8394,5 +8361,3 @@ snapshots:
archiver-utils: 5.0.2
compress-commons: 6.0.2
readable-stream: 4.7.0
-
- zod@4.2.1: {}