From 44a1ea8a377d2e2c35a80624a66388e8ab335ab0 Mon Sep 17 00:00:00 2001 From: Gib Date: Fri, 23 May 2025 13:51:42 -0500 Subject: [PATCH] Start working on Auth flow. Made email templates for auth --- package.json | 8 +- pnpm-lock.yaml | 446 +++++++++---------- src/app/(auth-pages)/profile/page.tsx | 29 +- src/app/(auth-pages)/reset-password/page.tsx | 10 +- src/app/(auth-pages)/sign-in/page.tsx | 6 +- src/app/(auth-pages)/sign-up/page.tsx | 4 + src/components/default/profile/index.tsx | 1 + src/lib/actions/auth.ts | 51 ++- src/utils/supabase/index.ts | 2 +- src/utils/supabase/server.ts | 6 +- 10 files changed, 320 insertions(+), 243 deletions(-) diff --git a/package.json b/package.json index db37a72..d601bb8 100644 --- a/package.json +++ b/package.json @@ -24,7 +24,7 @@ "@radix-ui/react-separator": "^1.1.7", "@radix-ui/react-slot": "^1.2.3", "@supabase/ssr": "^0.6.1", - "@supabase/supabase-js": "^2.49.7", + "@supabase/supabase-js": "^2.49.8", "@t3-oss/env-nextjs": "^0.12.0", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", @@ -35,13 +35,13 @@ "react-dom": "^19.1.0", "react-hook-form": "^7.56.4", "sonner": "^2.0.3", - "zod": "^3.25.7" + "zod": "^3.25.23" }, "devDependencies": { "@eslint/eslintrc": "^3.3.1", "@tailwindcss/postcss": "^4.1.7", - "@types/node": "^20.17.49", - "@types/react": "^19.1.4", + "@types/node": "^20.17.50", + "@types/react": "^19.1.5", "@types/react-dom": "^19.1.5", "eslint": "^9.27.0", "eslint-config-next": "^15.3.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 05d4dd4..15403bb 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -13,31 +13,31 @@ importers: version: 5.0.1(react-hook-form@7.56.4(react@19.1.0)) '@radix-ui/react-avatar': specifier: ^1.1.10 - version: 1.1.10(@types/react-dom@19.1.5(@types/react@19.1.4))(@types/react@19.1.4)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + version: 1.1.10(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-checkbox': specifier: ^1.3.2 - version: 1.3.2(@types/react-dom@19.1.5(@types/react@19.1.4))(@types/react@19.1.4)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + version: 1.3.2(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-dropdown-menu': specifier: ^2.1.15 - version: 2.1.15(@types/react-dom@19.1.5(@types/react@19.1.4))(@types/react@19.1.4)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + version: 2.1.15(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-label': specifier: ^2.1.7 - version: 2.1.7(@types/react-dom@19.1.5(@types/react@19.1.4))(@types/react@19.1.4)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + version: 2.1.7(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-separator': specifier: ^1.1.7 - version: 1.1.7(@types/react-dom@19.1.5(@types/react@19.1.4))(@types/react@19.1.4)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + version: 1.1.7(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-slot': specifier: ^1.2.3 - version: 1.2.3(@types/react@19.1.4)(react@19.1.0) + version: 1.2.3(@types/react@19.1.5)(react@19.1.0) '@supabase/ssr': specifier: ^0.6.1 - version: 0.6.1(@supabase/supabase-js@2.49.7) + version: 0.6.1(@supabase/supabase-js@2.49.8) '@supabase/supabase-js': - specifier: ^2.49.7 - version: 2.49.7 + specifier: ^2.49.8 + version: 2.49.8 '@t3-oss/env-nextjs': specifier: ^0.12.0 - version: 0.12.0(typescript@5.8.3)(zod@3.25.7) + version: 0.12.0(typescript@5.8.3)(zod@3.25.23) class-variance-authority: specifier: ^0.7.1 version: 0.7.1 @@ -66,8 +66,8 @@ importers: specifier: ^2.0.3 version: 2.0.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0) zod: - specifier: ^3.25.7 - version: 3.25.7 + specifier: ^3.25.23 + version: 3.25.23 devDependencies: '@eslint/eslintrc': specifier: ^3.3.1 @@ -76,14 +76,14 @@ importers: specifier: ^4.1.7 version: 4.1.7 '@types/node': - specifier: ^20.17.49 - version: 20.17.49 + specifier: ^20.17.50 + version: 20.17.50 '@types/react': - specifier: ^19.1.4 - version: 19.1.4 + specifier: ^19.1.5 + version: 19.1.5 '@types/react-dom': specifier: ^19.1.5 - version: 19.1.5(@types/react@19.1.4) + version: 19.1.5(@types/react@19.1.5) eslint: specifier: ^9.27.0 version: 9.27.0(jiti@2.4.2) @@ -795,8 +795,8 @@ packages: '@supabase/storage-js@2.7.1': resolution: {integrity: sha512-asYHcyDR1fKqrMpytAS1zjyEfvxuOIp1CIXX7ji4lHHcJKqyk+sLl/Vxgm4sN6u8zvuUtae9e4kDxQP2qrwWBA==} - '@supabase/supabase-js@2.49.7': - resolution: {integrity: sha512-hx6khHHC9GherCxTaRF91Sp3uiRtlgo8Aw+MUC5hck/DLdsIIZfbBbLzXqiiDUdGDeERagmFVanI93QDZe+Nww==} + '@supabase/supabase-js@2.49.8': + resolution: {integrity: sha512-zzBQLgS/jZs7btWcIAc7V5yfB+juG7h0AXxKowMJuySsO5vK+F7Vp+HCa07Z+tu9lZtr3sT9fofkc86bdylmtw==} '@swc/counter@0.1.3': resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} @@ -932,8 +932,8 @@ packages: '@types/json5@0.0.29': resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} - '@types/node@20.17.49': - resolution: {integrity: sha512-lu4U+g0EbSW2aPGksNyqcesB2D3eDD0mv8ig9youJsEs/DuMOdeqcEbFOBDCCurXNpa10NkKSSRfOQLBFCiD8w==} + '@types/node@20.17.50': + resolution: {integrity: sha512-Mxiq0ULv/zo1OzOhwPqOA13I81CV/W3nvd3ChtQZRT5Cwz3cr0FKo/wMSsbTqL3EXpaBAEQhva2B8ByRkOIh9A==} '@types/phoenix@1.6.6': resolution: {integrity: sha512-PIzZZlEppgrpoT2QgbnDU+MMzuR6BbCjllj0bM70lWoejMeNJAxCchxnv7J3XFkI8MpygtRpzXrIlmWUBclP5A==} @@ -943,8 +943,8 @@ packages: peerDependencies: '@types/react': ^19.0.0 - '@types/react@19.1.4': - resolution: {integrity: sha512-EB1yiiYdvySuIITtD5lhW4yPyJ31RkJkkDw794LaQYrxCSaQV/47y5o1FMC4zF9ZyjUjzJMZwbovEnT5yHTW6g==} + '@types/react@19.1.5': + resolution: {integrity: sha512-piErsCVVbpMMT2r7wbawdZsq4xMvIAhQuac2gedQHysu1TZYEigE6pnFfgZT+/jQnrRuF5r+SHzuehFjfRjr4g==} '@types/ws@8.18.1': resolution: {integrity: sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==} @@ -1307,8 +1307,8 @@ packages: resolution: {integrity: sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==} engines: {node: '>=10.13.0'} - es-abstract@1.23.9: - resolution: {integrity: sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==} + es-abstract@1.23.10: + resolution: {integrity: sha512-MtUbM072wlJNyeYAe0mhzrD+M6DIJa96CZAOBBrhDbgKnB4MApIKefcyAB1eOdYn8cUNZgvwBvEzdoAYsxgEIw==} engines: {node: '>= 0.4'} es-define-property@1.0.1: @@ -2468,8 +2468,8 @@ packages: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} - zod@3.25.7: - resolution: {integrity: sha512-YGdT1cVRmKkOg6Sq7vY7IkxdphySKnXhaUmFI4r4FcuFVNgpCb9tZfNwXbT6BPjD5oz0nubFsoo9pIqKrDcCvg==} + zod@3.25.23: + resolution: {integrity: sha512-Od2bdMosahjSrSgJtakrwjMDb1zM1A3VIHCPGveZt/3/wlrTWBya2lmEh2OYe4OIu8mPTmmr0gnLHIWQXdtWBg==} snapshots: @@ -2730,301 +2730,301 @@ snapshots: '@radix-ui/primitive@1.1.2': {} - '@radix-ui/react-arrow@1.1.7(@types/react-dom@19.1.5(@types/react@19.1.4))(@types/react@19.1.4)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-arrow@1.1.7(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.5(@types/react@19.1.4))(@types/react@19.1.4)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) optionalDependencies: - '@types/react': 19.1.4 - '@types/react-dom': 19.1.5(@types/react@19.1.4) + '@types/react': 19.1.5 + '@types/react-dom': 19.1.5(@types/react@19.1.5) - '@radix-ui/react-avatar@1.1.10(@types/react-dom@19.1.5(@types/react@19.1.4))(@types/react@19.1.4)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-avatar@1.1.10(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: - '@radix-ui/react-context': 1.1.2(@types/react@19.1.4)(react@19.1.0) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.5(@types/react@19.1.4))(@types/react@19.1.4)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.4)(react@19.1.0) - '@radix-ui/react-use-is-hydrated': 0.1.0(@types/react@19.1.4)(react@19.1.0) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.4)(react@19.1.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.5)(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.5)(react@19.1.0) + '@radix-ui/react-use-is-hydrated': 0.1.0(@types/react@19.1.5)(react@19.1.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.5)(react@19.1.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) optionalDependencies: - '@types/react': 19.1.4 - '@types/react-dom': 19.1.5(@types/react@19.1.4) + '@types/react': 19.1.5 + '@types/react-dom': 19.1.5(@types/react@19.1.5) - '@radix-ui/react-checkbox@1.3.2(@types/react-dom@19.1.5(@types/react@19.1.4))(@types/react@19.1.4)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-checkbox@1.3.2(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: '@radix-ui/primitive': 1.1.2 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.4)(react@19.1.0) - '@radix-ui/react-context': 1.1.2(@types/react@19.1.4)(react@19.1.0) - '@radix-ui/react-presence': 1.1.4(@types/react-dom@19.1.5(@types/react@19.1.4))(@types/react@19.1.4)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.5(@types/react@19.1.4))(@types/react@19.1.4)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.4)(react@19.1.0) - '@radix-ui/react-use-previous': 1.1.1(@types/react@19.1.4)(react@19.1.0) - '@radix-ui/react-use-size': 1.1.1(@types/react@19.1.4)(react@19.1.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.5)(react@19.1.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.5)(react@19.1.0) + '@radix-ui/react-presence': 1.1.4(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.5)(react@19.1.0) + '@radix-ui/react-use-previous': 1.1.1(@types/react@19.1.5)(react@19.1.0) + '@radix-ui/react-use-size': 1.1.1(@types/react@19.1.5)(react@19.1.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) optionalDependencies: - '@types/react': 19.1.4 - '@types/react-dom': 19.1.5(@types/react@19.1.4) + '@types/react': 19.1.5 + '@types/react-dom': 19.1.5(@types/react@19.1.5) - '@radix-ui/react-collection@1.1.7(@types/react-dom@19.1.5(@types/react@19.1.4))(@types/react@19.1.4)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-collection@1.1.7(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.4)(react@19.1.0) - '@radix-ui/react-context': 1.1.2(@types/react@19.1.4)(react@19.1.0) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.5(@types/react@19.1.4))(@types/react@19.1.4)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-slot': 1.2.3(@types/react@19.1.4)(react@19.1.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.5)(react@19.1.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.5)(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-slot': 1.2.3(@types/react@19.1.5)(react@19.1.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) optionalDependencies: - '@types/react': 19.1.4 - '@types/react-dom': 19.1.5(@types/react@19.1.4) + '@types/react': 19.1.5 + '@types/react-dom': 19.1.5(@types/react@19.1.5) - '@radix-ui/react-compose-refs@1.1.2(@types/react@19.1.4)(react@19.1.0)': + '@radix-ui/react-compose-refs@1.1.2(@types/react@19.1.5)(react@19.1.0)': dependencies: react: 19.1.0 optionalDependencies: - '@types/react': 19.1.4 + '@types/react': 19.1.5 - '@radix-ui/react-context@1.1.2(@types/react@19.1.4)(react@19.1.0)': + '@radix-ui/react-context@1.1.2(@types/react@19.1.5)(react@19.1.0)': dependencies: react: 19.1.0 optionalDependencies: - '@types/react': 19.1.4 + '@types/react': 19.1.5 - '@radix-ui/react-direction@1.1.1(@types/react@19.1.4)(react@19.1.0)': + '@radix-ui/react-direction@1.1.1(@types/react@19.1.5)(react@19.1.0)': dependencies: react: 19.1.0 optionalDependencies: - '@types/react': 19.1.4 + '@types/react': 19.1.5 - '@radix-ui/react-dismissable-layer@1.1.10(@types/react-dom@19.1.5(@types/react@19.1.4))(@types/react@19.1.4)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-dismissable-layer@1.1.10(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: '@radix-ui/primitive': 1.1.2 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.4)(react@19.1.0) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.5(@types/react@19.1.4))(@types/react@19.1.4)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.4)(react@19.1.0) - '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@19.1.4)(react@19.1.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.5)(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.5)(react@19.1.0) + '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@19.1.5)(react@19.1.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) optionalDependencies: - '@types/react': 19.1.4 - '@types/react-dom': 19.1.5(@types/react@19.1.4) + '@types/react': 19.1.5 + '@types/react-dom': 19.1.5(@types/react@19.1.5) - '@radix-ui/react-dropdown-menu@2.1.15(@types/react-dom@19.1.5(@types/react@19.1.4))(@types/react@19.1.4)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-dropdown-menu@2.1.15(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: '@radix-ui/primitive': 1.1.2 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.4)(react@19.1.0) - '@radix-ui/react-context': 1.1.2(@types/react@19.1.4)(react@19.1.0) - '@radix-ui/react-id': 1.1.1(@types/react@19.1.4)(react@19.1.0) - '@radix-ui/react-menu': 2.1.15(@types/react-dom@19.1.5(@types/react@19.1.4))(@types/react@19.1.4)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.5(@types/react@19.1.4))(@types/react@19.1.4)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.4)(react@19.1.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.5)(react@19.1.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.5)(react@19.1.0) + '@radix-ui/react-id': 1.1.1(@types/react@19.1.5)(react@19.1.0) + '@radix-ui/react-menu': 2.1.15(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.5)(react@19.1.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) optionalDependencies: - '@types/react': 19.1.4 - '@types/react-dom': 19.1.5(@types/react@19.1.4) + '@types/react': 19.1.5 + '@types/react-dom': 19.1.5(@types/react@19.1.5) - '@radix-ui/react-focus-guards@1.1.2(@types/react@19.1.4)(react@19.1.0)': + '@radix-ui/react-focus-guards@1.1.2(@types/react@19.1.5)(react@19.1.0)': dependencies: react: 19.1.0 optionalDependencies: - '@types/react': 19.1.4 + '@types/react': 19.1.5 - '@radix-ui/react-focus-scope@1.1.7(@types/react-dom@19.1.5(@types/react@19.1.4))(@types/react@19.1.4)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-focus-scope@1.1.7(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.4)(react@19.1.0) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.5(@types/react@19.1.4))(@types/react@19.1.4)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.4)(react@19.1.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.5)(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.5)(react@19.1.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) optionalDependencies: - '@types/react': 19.1.4 - '@types/react-dom': 19.1.5(@types/react@19.1.4) + '@types/react': 19.1.5 + '@types/react-dom': 19.1.5(@types/react@19.1.5) - '@radix-ui/react-id@1.1.1(@types/react@19.1.4)(react@19.1.0)': + '@radix-ui/react-id@1.1.1(@types/react@19.1.5)(react@19.1.0)': dependencies: - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.4)(react@19.1.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.5)(react@19.1.0) react: 19.1.0 optionalDependencies: - '@types/react': 19.1.4 + '@types/react': 19.1.5 - '@radix-ui/react-label@2.1.7(@types/react-dom@19.1.5(@types/react@19.1.4))(@types/react@19.1.4)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-label@2.1.7(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.5(@types/react@19.1.4))(@types/react@19.1.4)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) optionalDependencies: - '@types/react': 19.1.4 - '@types/react-dom': 19.1.5(@types/react@19.1.4) + '@types/react': 19.1.5 + '@types/react-dom': 19.1.5(@types/react@19.1.5) - '@radix-ui/react-menu@2.1.15(@types/react-dom@19.1.5(@types/react@19.1.4))(@types/react@19.1.4)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-menu@2.1.15(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: '@radix-ui/primitive': 1.1.2 - '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.1.5(@types/react@19.1.4))(@types/react@19.1.4)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.4)(react@19.1.0) - '@radix-ui/react-context': 1.1.2(@types/react@19.1.4)(react@19.1.0) - '@radix-ui/react-direction': 1.1.1(@types/react@19.1.4)(react@19.1.0) - '@radix-ui/react-dismissable-layer': 1.1.10(@types/react-dom@19.1.5(@types/react@19.1.4))(@types/react@19.1.4)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-focus-guards': 1.1.2(@types/react@19.1.4)(react@19.1.0) - '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.1.5(@types/react@19.1.4))(@types/react@19.1.4)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-id': 1.1.1(@types/react@19.1.4)(react@19.1.0) - '@radix-ui/react-popper': 1.2.7(@types/react-dom@19.1.5(@types/react@19.1.4))(@types/react@19.1.4)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.1.5(@types/react@19.1.4))(@types/react@19.1.4)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-presence': 1.1.4(@types/react-dom@19.1.5(@types/react@19.1.4))(@types/react@19.1.4)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.5(@types/react@19.1.4))(@types/react@19.1.4)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-roving-focus': 1.1.10(@types/react-dom@19.1.5(@types/react@19.1.4))(@types/react@19.1.4)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-slot': 1.2.3(@types/react@19.1.4)(react@19.1.0) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.4)(react@19.1.0) + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.5)(react@19.1.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.5)(react@19.1.0) + '@radix-ui/react-direction': 1.1.1(@types/react@19.1.5)(react@19.1.0) + '@radix-ui/react-dismissable-layer': 1.1.10(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-focus-guards': 1.1.2(@types/react@19.1.5)(react@19.1.0) + '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-id': 1.1.1(@types/react@19.1.5)(react@19.1.0) + '@radix-ui/react-popper': 1.2.7(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-presence': 1.1.4(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-roving-focus': 1.1.10(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-slot': 1.2.3(@types/react@19.1.5)(react@19.1.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.5)(react@19.1.0) aria-hidden: 1.2.6 react: 19.1.0 react-dom: 19.1.0(react@19.1.0) - react-remove-scroll: 2.7.0(@types/react@19.1.4)(react@19.1.0) + react-remove-scroll: 2.7.0(@types/react@19.1.5)(react@19.1.0) optionalDependencies: - '@types/react': 19.1.4 - '@types/react-dom': 19.1.5(@types/react@19.1.4) + '@types/react': 19.1.5 + '@types/react-dom': 19.1.5(@types/react@19.1.5) - '@radix-ui/react-popper@1.2.7(@types/react-dom@19.1.5(@types/react@19.1.4))(@types/react@19.1.4)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-popper@1.2.7(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: '@floating-ui/react-dom': 2.1.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-arrow': 1.1.7(@types/react-dom@19.1.5(@types/react@19.1.4))(@types/react@19.1.4)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.4)(react@19.1.0) - '@radix-ui/react-context': 1.1.2(@types/react@19.1.4)(react@19.1.0) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.5(@types/react@19.1.4))(@types/react@19.1.4)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.4)(react@19.1.0) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.4)(react@19.1.0) - '@radix-ui/react-use-rect': 1.1.1(@types/react@19.1.4)(react@19.1.0) - '@radix-ui/react-use-size': 1.1.1(@types/react@19.1.4)(react@19.1.0) + '@radix-ui/react-arrow': 1.1.7(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.5)(react@19.1.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.5)(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.5)(react@19.1.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.5)(react@19.1.0) + '@radix-ui/react-use-rect': 1.1.1(@types/react@19.1.5)(react@19.1.0) + '@radix-ui/react-use-size': 1.1.1(@types/react@19.1.5)(react@19.1.0) '@radix-ui/rect': 1.1.1 react: 19.1.0 react-dom: 19.1.0(react@19.1.0) optionalDependencies: - '@types/react': 19.1.4 - '@types/react-dom': 19.1.5(@types/react@19.1.4) + '@types/react': 19.1.5 + '@types/react-dom': 19.1.5(@types/react@19.1.5) - '@radix-ui/react-portal@1.1.9(@types/react-dom@19.1.5(@types/react@19.1.4))(@types/react@19.1.4)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-portal@1.1.9(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.5(@types/react@19.1.4))(@types/react@19.1.4)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.4)(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.5)(react@19.1.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) optionalDependencies: - '@types/react': 19.1.4 - '@types/react-dom': 19.1.5(@types/react@19.1.4) + '@types/react': 19.1.5 + '@types/react-dom': 19.1.5(@types/react@19.1.5) - '@radix-ui/react-presence@1.1.4(@types/react-dom@19.1.5(@types/react@19.1.4))(@types/react@19.1.4)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-presence@1.1.4(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.4)(react@19.1.0) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.4)(react@19.1.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.5)(react@19.1.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.5)(react@19.1.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) optionalDependencies: - '@types/react': 19.1.4 - '@types/react-dom': 19.1.5(@types/react@19.1.4) + '@types/react': 19.1.5 + '@types/react-dom': 19.1.5(@types/react@19.1.5) - '@radix-ui/react-primitive@2.1.3(@types/react-dom@19.1.5(@types/react@19.1.4))(@types/react@19.1.4)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-primitive@2.1.3(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: - '@radix-ui/react-slot': 1.2.3(@types/react@19.1.4)(react@19.1.0) + '@radix-ui/react-slot': 1.2.3(@types/react@19.1.5)(react@19.1.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) optionalDependencies: - '@types/react': 19.1.4 - '@types/react-dom': 19.1.5(@types/react@19.1.4) + '@types/react': 19.1.5 + '@types/react-dom': 19.1.5(@types/react@19.1.5) - '@radix-ui/react-roving-focus@1.1.10(@types/react-dom@19.1.5(@types/react@19.1.4))(@types/react@19.1.4)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-roving-focus@1.1.10(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: '@radix-ui/primitive': 1.1.2 - '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.1.5(@types/react@19.1.4))(@types/react@19.1.4)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.4)(react@19.1.0) - '@radix-ui/react-context': 1.1.2(@types/react@19.1.4)(react@19.1.0) - '@radix-ui/react-direction': 1.1.1(@types/react@19.1.4)(react@19.1.0) - '@radix-ui/react-id': 1.1.1(@types/react@19.1.4)(react@19.1.0) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.5(@types/react@19.1.4))(@types/react@19.1.4)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.4)(react@19.1.0) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.4)(react@19.1.0) + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.5)(react@19.1.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.5)(react@19.1.0) + '@radix-ui/react-direction': 1.1.1(@types/react@19.1.5)(react@19.1.0) + '@radix-ui/react-id': 1.1.1(@types/react@19.1.5)(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.5)(react@19.1.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.5)(react@19.1.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) optionalDependencies: - '@types/react': 19.1.4 - '@types/react-dom': 19.1.5(@types/react@19.1.4) + '@types/react': 19.1.5 + '@types/react-dom': 19.1.5(@types/react@19.1.5) - '@radix-ui/react-separator@1.1.7(@types/react-dom@19.1.5(@types/react@19.1.4))(@types/react@19.1.4)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-separator@1.1.7(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.5(@types/react@19.1.4))(@types/react@19.1.4)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) optionalDependencies: - '@types/react': 19.1.4 - '@types/react-dom': 19.1.5(@types/react@19.1.4) + '@types/react': 19.1.5 + '@types/react-dom': 19.1.5(@types/react@19.1.5) - '@radix-ui/react-slot@1.2.3(@types/react@19.1.4)(react@19.1.0)': + '@radix-ui/react-slot@1.2.3(@types/react@19.1.5)(react@19.1.0)': dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.4)(react@19.1.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.5)(react@19.1.0) react: 19.1.0 optionalDependencies: - '@types/react': 19.1.4 + '@types/react': 19.1.5 - '@radix-ui/react-use-callback-ref@1.1.1(@types/react@19.1.4)(react@19.1.0)': + '@radix-ui/react-use-callback-ref@1.1.1(@types/react@19.1.5)(react@19.1.0)': dependencies: react: 19.1.0 optionalDependencies: - '@types/react': 19.1.4 + '@types/react': 19.1.5 - '@radix-ui/react-use-controllable-state@1.2.2(@types/react@19.1.4)(react@19.1.0)': + '@radix-ui/react-use-controllable-state@1.2.2(@types/react@19.1.5)(react@19.1.0)': dependencies: - '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.1.4)(react@19.1.0) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.4)(react@19.1.0) + '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.1.5)(react@19.1.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.5)(react@19.1.0) react: 19.1.0 optionalDependencies: - '@types/react': 19.1.4 + '@types/react': 19.1.5 - '@radix-ui/react-use-effect-event@0.0.2(@types/react@19.1.4)(react@19.1.0)': + '@radix-ui/react-use-effect-event@0.0.2(@types/react@19.1.5)(react@19.1.0)': dependencies: - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.4)(react@19.1.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.5)(react@19.1.0) react: 19.1.0 optionalDependencies: - '@types/react': 19.1.4 + '@types/react': 19.1.5 - '@radix-ui/react-use-escape-keydown@1.1.1(@types/react@19.1.4)(react@19.1.0)': + '@radix-ui/react-use-escape-keydown@1.1.1(@types/react@19.1.5)(react@19.1.0)': dependencies: - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.4)(react@19.1.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.5)(react@19.1.0) react: 19.1.0 optionalDependencies: - '@types/react': 19.1.4 + '@types/react': 19.1.5 - '@radix-ui/react-use-is-hydrated@0.1.0(@types/react@19.1.4)(react@19.1.0)': + '@radix-ui/react-use-is-hydrated@0.1.0(@types/react@19.1.5)(react@19.1.0)': dependencies: react: 19.1.0 use-sync-external-store: 1.5.0(react@19.1.0) optionalDependencies: - '@types/react': 19.1.4 + '@types/react': 19.1.5 - '@radix-ui/react-use-layout-effect@1.1.1(@types/react@19.1.4)(react@19.1.0)': + '@radix-ui/react-use-layout-effect@1.1.1(@types/react@19.1.5)(react@19.1.0)': dependencies: react: 19.1.0 optionalDependencies: - '@types/react': 19.1.4 + '@types/react': 19.1.5 - '@radix-ui/react-use-previous@1.1.1(@types/react@19.1.4)(react@19.1.0)': + '@radix-ui/react-use-previous@1.1.1(@types/react@19.1.5)(react@19.1.0)': dependencies: react: 19.1.0 optionalDependencies: - '@types/react': 19.1.4 + '@types/react': 19.1.5 - '@radix-ui/react-use-rect@1.1.1(@types/react@19.1.4)(react@19.1.0)': + '@radix-ui/react-use-rect@1.1.1(@types/react@19.1.5)(react@19.1.0)': dependencies: '@radix-ui/rect': 1.1.1 react: 19.1.0 optionalDependencies: - '@types/react': 19.1.4 + '@types/react': 19.1.5 - '@radix-ui/react-use-size@1.1.1(@types/react@19.1.4)(react@19.1.0)': + '@radix-ui/react-use-size@1.1.1(@types/react@19.1.5)(react@19.1.0)': dependencies: - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.4)(react@19.1.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.5)(react@19.1.0) react: 19.1.0 optionalDependencies: - '@types/react': 19.1.4 + '@types/react': 19.1.5 '@radix-ui/rect@1.1.1': {} @@ -3060,16 +3060,16 @@ snapshots: - bufferutil - utf-8-validate - '@supabase/ssr@0.6.1(@supabase/supabase-js@2.49.7)': + '@supabase/ssr@0.6.1(@supabase/supabase-js@2.49.8)': dependencies: - '@supabase/supabase-js': 2.49.7 + '@supabase/supabase-js': 2.49.8 cookie: 1.0.2 '@supabase/storage-js@2.7.1': dependencies: '@supabase/node-fetch': 2.6.15 - '@supabase/supabase-js@2.49.7': + '@supabase/supabase-js@2.49.8': dependencies: '@supabase/auth-js': 2.69.1 '@supabase/functions-js': 2.4.4 @@ -3087,17 +3087,17 @@ snapshots: dependencies: tslib: 2.8.1 - '@t3-oss/env-core@0.12.0(typescript@5.8.3)(zod@3.25.7)': + '@t3-oss/env-core@0.12.0(typescript@5.8.3)(zod@3.25.23)': optionalDependencies: typescript: 5.8.3 - zod: 3.25.7 + zod: 3.25.23 - '@t3-oss/env-nextjs@0.12.0(typescript@5.8.3)(zod@3.25.7)': + '@t3-oss/env-nextjs@0.12.0(typescript@5.8.3)(zod@3.25.23)': dependencies: - '@t3-oss/env-core': 0.12.0(typescript@5.8.3)(zod@3.25.7) + '@t3-oss/env-core': 0.12.0(typescript@5.8.3)(zod@3.25.23) optionalDependencies: typescript: 5.8.3 - zod: 3.25.7 + zod: 3.25.23 '@tailwindcss/node@4.1.7': dependencies: @@ -3182,23 +3182,23 @@ snapshots: '@types/json5@0.0.29': {} - '@types/node@20.17.49': + '@types/node@20.17.50': dependencies: undici-types: 6.19.8 '@types/phoenix@1.6.6': {} - '@types/react-dom@19.1.5(@types/react@19.1.4)': + '@types/react-dom@19.1.5(@types/react@19.1.5)': dependencies: - '@types/react': 19.1.4 + '@types/react': 19.1.5 - '@types/react@19.1.4': + '@types/react@19.1.5': dependencies: csstype: 3.1.3 '@types/ws@8.18.1': dependencies: - '@types/node': 20.17.49 + '@types/node': 20.17.50 '@typescript-eslint/eslint-plugin@8.32.1(@typescript-eslint/parser@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)': dependencies: @@ -3364,7 +3364,7 @@ snapshots: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.9 + es-abstract: 1.23.10 es-object-atoms: 1.1.1 get-intrinsic: 1.3.0 is-string: 1.1.1 @@ -3373,7 +3373,7 @@ snapshots: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.9 + es-abstract: 1.23.10 es-errors: 1.3.0 es-object-atoms: 1.1.1 es-shim-unscopables: 1.1.0 @@ -3383,7 +3383,7 @@ snapshots: call-bind: 1.0.8 call-bound: 1.0.4 define-properties: 1.2.1 - es-abstract: 1.23.9 + es-abstract: 1.23.10 es-errors: 1.3.0 es-object-atoms: 1.1.1 es-shim-unscopables: 1.1.0 @@ -3392,21 +3392,21 @@ snapshots: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.9 + es-abstract: 1.23.10 es-shim-unscopables: 1.1.0 array.prototype.flatmap@1.3.3: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.9 + es-abstract: 1.23.10 es-shim-unscopables: 1.1.0 array.prototype.tosorted@1.1.4: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.9 + es-abstract: 1.23.10 es-errors: 1.3.0 es-shim-unscopables: 1.1.0 @@ -3415,7 +3415,7 @@ snapshots: array-buffer-byte-length: 1.0.2 call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.9 + es-abstract: 1.23.10 es-errors: 1.3.0 get-intrinsic: 1.3.0 is-array-buffer: 3.0.5 @@ -3580,7 +3580,7 @@ snapshots: graceful-fs: 4.2.11 tapable: 2.2.2 - es-abstract@1.23.9: + es-abstract@1.23.10: dependencies: array-buffer-byte-length: 1.0.2 arraybuffer.prototype.slice: 1.0.4 @@ -3643,7 +3643,7 @@ snapshots: call-bind: 1.0.8 call-bound: 1.0.4 define-properties: 1.2.1 - es-abstract: 1.23.9 + es-abstract: 1.23.10 es-errors: 1.3.0 es-set-tostringtag: 2.1.0 function-bind: 1.1.2 @@ -4353,14 +4353,14 @@ snapshots: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.9 + es-abstract: 1.23.10 es-object-atoms: 1.1.1 object.groupby@1.0.3: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.9 + es-abstract: 1.23.10 object.values@1.2.1: dependencies: @@ -4451,32 +4451,32 @@ snapshots: react-is@16.13.1: {} - react-remove-scroll-bar@2.3.8(@types/react@19.1.4)(react@19.1.0): + react-remove-scroll-bar@2.3.8(@types/react@19.1.5)(react@19.1.0): dependencies: react: 19.1.0 - react-style-singleton: 2.2.3(@types/react@19.1.4)(react@19.1.0) + react-style-singleton: 2.2.3(@types/react@19.1.5)(react@19.1.0) tslib: 2.8.1 optionalDependencies: - '@types/react': 19.1.4 + '@types/react': 19.1.5 - react-remove-scroll@2.7.0(@types/react@19.1.4)(react@19.1.0): + react-remove-scroll@2.7.0(@types/react@19.1.5)(react@19.1.0): dependencies: react: 19.1.0 - react-remove-scroll-bar: 2.3.8(@types/react@19.1.4)(react@19.1.0) - react-style-singleton: 2.2.3(@types/react@19.1.4)(react@19.1.0) + react-remove-scroll-bar: 2.3.8(@types/react@19.1.5)(react@19.1.0) + react-style-singleton: 2.2.3(@types/react@19.1.5)(react@19.1.0) tslib: 2.8.1 - use-callback-ref: 1.3.3(@types/react@19.1.4)(react@19.1.0) - use-sidecar: 1.1.3(@types/react@19.1.4)(react@19.1.0) + use-callback-ref: 1.3.3(@types/react@19.1.5)(react@19.1.0) + use-sidecar: 1.1.3(@types/react@19.1.5)(react@19.1.0) optionalDependencies: - '@types/react': 19.1.4 + '@types/react': 19.1.5 - react-style-singleton@2.2.3(@types/react@19.1.4)(react@19.1.0): + react-style-singleton@2.2.3(@types/react@19.1.5)(react@19.1.0): dependencies: get-nonce: 1.0.1 react: 19.1.0 tslib: 2.8.1 optionalDependencies: - '@types/react': 19.1.4 + '@types/react': 19.1.5 react@19.1.0: {} @@ -4484,7 +4484,7 @@ snapshots: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.9 + es-abstract: 1.23.10 es-errors: 1.3.0 es-object-atoms: 1.1.1 get-intrinsic: 1.3.0 @@ -4652,14 +4652,14 @@ snapshots: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.9 + es-abstract: 1.23.10 string.prototype.matchall@4.0.12: dependencies: call-bind: 1.0.8 call-bound: 1.0.4 define-properties: 1.2.1 - es-abstract: 1.23.9 + es-abstract: 1.23.10 es-errors: 1.3.0 es-object-atoms: 1.1.1 get-intrinsic: 1.3.0 @@ -4673,7 +4673,7 @@ snapshots: string.prototype.repeat@1.0.0: dependencies: define-properties: 1.2.1 - es-abstract: 1.23.9 + es-abstract: 1.23.10 string.prototype.trim@1.2.10: dependencies: @@ -4681,7 +4681,7 @@ snapshots: call-bound: 1.0.4 define-data-property: 1.1.4 define-properties: 1.2.1 - es-abstract: 1.23.9 + es-abstract: 1.23.10 es-object-atoms: 1.1.1 has-property-descriptors: 1.0.2 @@ -4842,20 +4842,20 @@ snapshots: dependencies: punycode: 2.3.1 - use-callback-ref@1.3.3(@types/react@19.1.4)(react@19.1.0): + use-callback-ref@1.3.3(@types/react@19.1.5)(react@19.1.0): dependencies: react: 19.1.0 tslib: 2.8.1 optionalDependencies: - '@types/react': 19.1.4 + '@types/react': 19.1.5 - use-sidecar@1.1.3(@types/react@19.1.4)(react@19.1.0): + use-sidecar@1.1.3(@types/react@19.1.5)(react@19.1.0): dependencies: detect-node-es: 1.1.0 react: 19.1.0 tslib: 2.8.1 optionalDependencies: - '@types/react': 19.1.4 + '@types/react': 19.1.5 use-sync-external-store@1.5.0(react@19.1.0): dependencies: @@ -4921,4 +4921,4 @@ snapshots: yocto-queue@0.1.0: {} - zod@3.25.7: {} + zod@3.25.23: {} diff --git a/src/app/(auth-pages)/profile/page.tsx b/src/app/(auth-pages)/profile/page.tsx index 9d09baf..748bb1f 100644 --- a/src/app/(auth-pages)/profile/page.tsx +++ b/src/app/(auth-pages)/profile/page.tsx @@ -2,7 +2,7 @@ import { useAuth } from '@/components/context/auth'; import { useRouter } from 'next/navigation'; import { useEffect } from 'react'; -import { AvatarUpload, ProfileForm } from '@/components/default/profile'; +import { AvatarUpload, ProfileForm, ResetPasswordForm } from '@/components/default/profile'; import { Card, CardContent, @@ -12,6 +12,8 @@ import { Separator, } from '@/components/ui'; import { Loader2 } from 'lucide-react'; +import { resetPassword } from '@/lib/actions'; +import { toast } from 'sonner'; const ProfilePage = () => { const { profile, isLoading, isAuthenticated, updateProfile, refreshUserData } = useAuth(); @@ -32,12 +34,27 @@ const ProfilePage = () => { full_name: string; email: string; }) => { - await updateProfile({ - full_name: values.full_name, - email: values.email, - }); + try { + await updateProfile({ + full_name: values.full_name, + email: values.email, + }); + } catch { + toast.error('Error updating profile!: '); + } }; + const handleResetPasswordSubmit = async (values: { + password: string; + confirmPassword: string; + }) => { + try { + await resetPassword(values); + } catch { + toast.error('Error resetting password!: '); + } + } + // Show loading state while checking authentication if (isLoading) { return ( @@ -75,6 +92,8 @@ const ProfilePage = () => { + + )} diff --git a/src/app/(auth-pages)/reset-password/page.tsx b/src/app/(auth-pages)/reset-password/page.tsx index 4ead72d..d332861 100644 --- a/src/app/(auth-pages)/reset-password/page.tsx +++ b/src/app/(auth-pages)/reset-password/page.tsx @@ -1,8 +1,14 @@ -import { resetPassword } from '@/lib/actions'; +import { resetPasswordFromEmail } from '@/lib/actions'; import { FormMessage, type Message, SubmitButton } from '@/components/default'; import { Input, Label } from '@/components/ui'; +import { getUser } from '@/lib/actions'; +import { redirect } from 'next/navigation'; const ResetPassword = async (props: { searchParams: Promise }) => { + const user = await getUser(); + if (!user.success) { + redirect('/sign-in'); + } const searchParams = await props.searchParams; return (
@@ -24,7 +30,7 @@ const ResetPassword = async (props: { searchParams: Promise }) => { placeholder='Confirm password' required /> - Reset password + Reset password ); diff --git a/src/app/(auth-pages)/sign-in/page.tsx b/src/app/(auth-pages)/sign-in/page.tsx index 2889e63..87ac74b 100644 --- a/src/app/(auth-pages)/sign-in/page.tsx +++ b/src/app/(auth-pages)/sign-in/page.tsx @@ -1,10 +1,14 @@ import Link from 'next/link'; -import { signIn } from '@/lib/actions'; +import { getUser, signIn } from '@/lib/actions'; import { FormMessage, type Message, SubmitButton } from '@/components/default'; import { Input, Label } from '@/components/ui'; +import { redirect } from 'next/navigation'; +import type { User } from '@/utils/supabase'; const Login = async (props: { searchParams: Promise }) => { const searchParams = await props.searchParams; + const user = await getUser(); + if (user.success) redirect('/profile'); return (

Sign in

diff --git a/src/app/(auth-pages)/sign-up/page.tsx b/src/app/(auth-pages)/sign-up/page.tsx index be4c1db..f005c36 100644 --- a/src/app/(auth-pages)/sign-up/page.tsx +++ b/src/app/(auth-pages)/sign-up/page.tsx @@ -2,9 +2,13 @@ import Link from 'next/link'; import { signUp } from '@/lib/actions'; import { FormMessage, type Message, SubmitButton } from '@/components/default'; import { Input, Label } from '@/components/ui'; +import { redirect } from 'next/navigation'; +import { getUser } from '@/lib/actions'; const SignUp = async (props: { searchParams: Promise }) => { const searchParams = await props.searchParams; + const user = await getUser(); + if (user.success) redirect('/profile'); if ('message' in searchParams) { return (
{ ); }; -export const resetPassword = async (formData: FormData) => { - const supabase = await createServerClient(); - const password = formData.get('password') as string; - const confirmPassword = formData.get('confirmPassword') as string; +export const resetPassword = async ( + formData: FormData | {password: string, confirmPassword: string} +) => { + let password = ''; + let confirmPassword = ''; + + if (formData instanceof FormData) { + password = formData.get('password') as string; + confirmPassword = formData.get('confirmPassword') as string; + } else { + password = formData.password; + confirmPassword = formData.confirmPassword; + } + if (!password || !confirmPassword) { encodedRedirect( 'error', @@ -118,6 +128,39 @@ export const resetPassword = async (formData: FormData) => { ); } + const supabase = await createServerClient(); + + if (password !== confirmPassword) { + encodedRedirect('error', '/reset-password', 'Passwords do not match'); + } + + const { error } = await supabase.auth.updateUser({ + password: password, + }); + + if (error) { + encodedRedirect('error', '/reset-password', 'Password update failed'); + } + + encodedRedirect('success', '/reset-password', 'Password updated'); +}; + + +export const resetPasswordFromEmail = async (formData: FormData) => { + + const password = formData.get('password') as string; + const confirmPassword = formData.get('confirmPassword') as string; + + if (!password || !confirmPassword) { + encodedRedirect( + 'error', + '/reset-password', + 'Password and confirm password are required', + ); + } + + const supabase = await createServerClient(); + if (password !== confirmPassword) { encodedRedirect('error', '/reset-password', 'Passwords do not match'); } diff --git a/src/utils/supabase/index.ts b/src/utils/supabase/index.ts index 4ba781d..4e8f72f 100644 --- a/src/utils/supabase/index.ts +++ b/src/utils/supabase/index.ts @@ -1,5 +1,5 @@ export { createClient } from './client'; -export { createClient as createServerClient } from './server'; +export { createServerClient } from './server'; export { updateSession } from './middleware'; export type * from './utils'; export type { Database } from './types'; diff --git a/src/utils/supabase/server.ts b/src/utils/supabase/server.ts index f5efed2..7d3ce88 100644 --- a/src/utils/supabase/server.ts +++ b/src/utils/supabase/server.ts @@ -1,11 +1,11 @@ -import { createServerClient } from '@supabase/ssr'; +import { createServerClient as CreateServerClient } from '@supabase/ssr'; import type { Database } from '@/utils/supabase/types'; import { cookies } from 'next/headers'; -export const createClient = async () => { +export const createServerClient = async () => { const cookieStore = await cookies(); - return createServerClient( + return CreateServerClient( process.env.NEXT_PUBLIC_SUPABASE_URL!, process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY!, {