chore: update package versions and dependencies across multiple files (#416)

* chore: update package versions and dependencies across multiple files

- Bumped application version to 2.21.4 in package.json.
- Updated @supabase/supabase-js to version 2.84.0 and @tanstack/react-query to version 5.90.10.
- Incremented various dependencies including lucide-react to version 0.554.0, react-hook-form to version 7.66.1, and react-i18next to version 16.3.5.
- Adjusted @types/nodemailer to version 7.0.4 for consistency.
- Refactored package.json files to utilize catalog dependencies for improved management.

* chore: update Stripe API version to 2025-11-17.clover in stripe-sdk.ts

* fix: update wording for password recovery prompt in auth.json
This commit is contained in:
Giancarlo Buomprisco
2025-11-25 10:18:44 +07:00
committed by GitHub
parent 3e6fef41c7
commit db4aa6007e
27 changed files with 1421 additions and 1304 deletions

View File

@@ -12,8 +12,8 @@
"@faker-js/faker": "^10.1.0", "@faker-js/faker": "^10.1.0",
"@hookform/resolvers": "^5.2.2", "@hookform/resolvers": "^5.2.2",
"@tanstack/react-query": "catalog:", "@tanstack/react-query": "catalog:",
"ai": "5.0.93", "ai": "5.0.100",
"lucide-react": "^0.553.0", "lucide-react": "^0.554.0",
"next": "catalog:", "next": "catalog:",
"nodemailer": "^7.0.10", "nodemailer": "^7.0.10",
"react": "catalog:", "react": "catalog:",
@@ -31,12 +31,12 @@
"@kit/ui": "workspace:*", "@kit/ui": "workspace:*",
"@tailwindcss/postcss": "^4.1.17", "@tailwindcss/postcss": "^4.1.17",
"@types/node": "catalog:", "@types/node": "catalog:",
"@types/nodemailer": "7.0.3", "@types/nodemailer": "7.0.4",
"@types/react": "catalog:", "@types/react": "catalog:",
"@types/react-dom": "catalog:", "@types/react-dom": "catalog:",
"babel-plugin-react-compiler": "1.0.0", "babel-plugin-react-compiler": "1.0.0",
"pino-pretty": "13.0.0", "pino-pretty": "13.0.0",
"react-hook-form": "^7.66.0", "react-hook-form": "^7.66.1",
"recharts": "2.15.3", "recharts": "2.15.3",
"tailwindcss": "catalog:", "tailwindcss": "catalog:",
"tailwindcss-animate": "^1.0.7", "tailwindcss-animate": "^1.0.7",

View File

@@ -13,11 +13,11 @@
@import './shadcn-ui.css'; @import './shadcn-ui.css';
/* plugins - update the below if you add a new plugin */ /* plugins - update the below if you add a new plugin */
@plugin "tailwindcss-animate"; @plugin 'tailwindcss-animate';
/* content sources - update the below if you add a new path */ /* content sources - update the below if you add a new path */
@source "../../../packages/ui/src/**/*.{ts,tsx}"; @source '../../../packages/ui/src/**/*.{ts,tsx}';
@source "../{app,components}/**/*.{ts,tsx}"; @source '../{app,components}/**/*.{ts,tsx}';
/* variants - update the below if you add a new variant */ /* variants - update the below if you add a new variant */
@variant dark (&:where(.dark, .dark *)); @variant dark (&:where(.dark, .dark *));
@@ -25,7 +25,9 @@
@layer base { @layer base {
body { body {
@apply bg-background text-foreground; @apply bg-background text-foreground;
font-feature-settings: "rlig" 1, "calt" 1; font-feature-settings:
'rlig' 1,
'calt' 1;
} }
*, *,

View File

@@ -7,98 +7,98 @@
*/ */
@layer base { @layer base {
:root { :root {
--font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; --font-sans: -apple-system, var(--font-sans-fallback);
--font-heading: var(--font-sans); --font-heading: var(--font-sans);
--background: var(--color-white); --background: var(--color-white);
--foreground: var(--color-neutral-950); --foreground: var(--color-neutral-950);
--card: var(--color-white); --card: var(--color-white);
--card-foreground: var(--color-neutral-950); --card-foreground: var(--color-neutral-950);
--popover: var(--color-white); --popover: var(--color-white);
--popover-foreground: var(--color-neutral-950); --popover-foreground: var(--color-neutral-950);
--primary: var(--color-neutral-950); --primary: var(--color-neutral-950);
--primary-foreground: var(--color-white); --primary-foreground: var(--color-white);
--secondary: oklch(96.76% 0.0013 286.38); --secondary: oklch(96.76% 0.0013 286.38);
--secondary-foreground: oklch(21.03% 0.0318 264.65); --secondary-foreground: oklch(21.03% 0.0318 264.65);
--muted: oklch(96.71% 0.0029 264.54); --muted: oklch(96.71% 0.0029 264.54);
--muted-foreground: oklch(55.13% 0.0233 264.36); --muted-foreground: oklch(55.13% 0.0233 264.36);
--accent: oklch(96.76% 0.0013 286.38); --accent: oklch(96.76% 0.0013 286.38);
--accent-foreground: oklch(21.03% 0.0318 264.65); --accent-foreground: oklch(21.03% 0.0318 264.65);
--destructive: var(--color-red-500); --destructive: var(--color-red-500);
--destructive-foreground: var(--color-white); --destructive-foreground: var(--color-white);
--border: var(--color-gray-100); --border: var(--color-gray-100);
--input: var(--color-gray-200); --input: var(--color-gray-200);
--ring: var(--color-neutral-800); --ring: var(--color-neutral-800);
--radius: 0.5rem; --radius: 0.5rem;
--chart-1: var(--color-orange-400); --chart-1: var(--color-orange-400);
--chart-2: var(--color-teal-600); --chart-2: var(--color-teal-600);
--chart-3: var(--color-green-800); --chart-3: var(--color-green-800);
--chart-4: var(--color-yellow-200); --chart-4: var(--color-yellow-200);
--chart-5: var(--color-orange-200); --chart-5: var(--color-orange-200);
--sidebar-background: var(--color-neutral-50); --sidebar-background: var(--color-neutral-50);
--sidebar-foreground: oklch(37.05% 0.012 285.8); --sidebar-foreground: oklch(37.05% 0.012 285.8);
--sidebar-primary: var(--color-neutral-950); --sidebar-primary: var(--color-neutral-950);
--sidebar-primary-foreground: var(--color-white); --sidebar-primary-foreground: var(--color-white);
--sidebar-accent: var(--color-neutral-100); --sidebar-accent: var(--color-neutral-100);
--sidebar-accent-foreground: var(--color-neutral-950); --sidebar-accent-foreground: var(--color-neutral-950);
--sidebar-border: var(--border); --sidebar-border: var(--border);
--sidebar-ring: var(--color-blue-500); --sidebar-ring: var(--color-blue-500);
} }
.dark { .dark {
--background: var(--color-neutral-900); --background: var(--color-neutral-900);
--foreground: var(--color-white); --foreground: var(--color-white);
--card: var(--color-neutral-900); --card: var(--color-neutral-900);
--card-foreground: var(--color-white); --card-foreground: var(--color-white);
--popover: var(--color-neutral-900); --popover: var(--color-neutral-900);
--popover-foreground: var(--color-white); --popover-foreground: var(--color-white);
--primary: var(--color-white); --primary: var(--color-white);
--primary-foreground: var(--color-neutral-900); --primary-foreground: var(--color-neutral-900);
--secondary: var(--color-neutral-800); --secondary: var(--color-neutral-800);
--secondary-foreground: oklch(98.43% 0.0017 247.84); --secondary-foreground: oklch(98.43% 0.0017 247.84);
--muted: var(--color-neutral-800); --muted: var(--color-neutral-800);
--muted-foreground: oklch(71.19% 0.0129 286.07); --muted-foreground: oklch(71.19% 0.0129 286.07);
--accent: var(--color-neutral-800); --accent: var(--color-neutral-800);
--accent-foreground: oklch(98.48% 0 0); --accent-foreground: oklch(98.48% 0 0);
--destructive: var(--color-red-700); --destructive: var(--color-red-700);
--destructive-foreground: var(--color-white); --destructive-foreground: var(--color-white);
--border: var(--color-neutral-800); --border: var(--color-neutral-800);
--input: var(--color-neutral-700); --input: var(--color-neutral-700);
--ring: oklch(87.09% 0.0055 286.29); --ring: oklch(87.09% 0.0055 286.29);
--chart-1: var(--color-blue-600); --chart-1: var(--color-blue-600);
--chart-2: var(--color-emerald-400); --chart-2: var(--color-emerald-400);
--chart-3: var(--color-orange-400); --chart-3: var(--color-orange-400);
--chart-4: var(--color-purple-500); --chart-4: var(--color-purple-500);
--chart-5: var(--color-pink-500); --chart-5: var(--color-pink-500);
--sidebar-background: var(--color-neutral-900); --sidebar-background: var(--color-neutral-900);
--sidebar-foreground: var(--color-white); --sidebar-foreground: var(--color-white);
--sidebar-primary: var(--color-blue-500); --sidebar-primary: var(--color-blue-500);
--sidebar-primary-foreground: var(--color-white); --sidebar-primary-foreground: var(--color-white);
--sidebar-accent: var(--color-neutral-800); --sidebar-accent: var(--color-neutral-800);
--sidebar-accent-foreground: var(--color-white); --sidebar-accent-foreground: var(--color-white);
--sidebar-border: var(--border); --sidebar-border: var(--border);
--sidebar-ring: var(--color-blue-500); --sidebar-ring: var(--color-blue-500);
} }
} }

View File

@@ -1,5 +1,5 @@
@utility container { @utility container {
margin-inline: auto; margin-inline: auto;
@apply xl:max-w-[80rem] px-8; @apply px-8 xl:max-w-[80rem];
} }

View File

@@ -9,7 +9,7 @@ import { cn } from '@kit/ui/utils';
*/ */
const sans = SansFont({ const sans = SansFont({
subsets: ['latin'], subsets: ['latin'],
variable: '--font-sans', variable: '--font-sans-fallback',
fallback: ['system-ui', 'Helvetica Neue', 'Helvetica', 'Arial'], fallback: ['system-ui', 'Helvetica Neue', 'Helvetica', 'Arial'],
preload: true, preload: true,
weight: ['300', '400', '500', '600', '700'], weight: ['300', '400', '500', '600', '700'],

View File

@@ -60,14 +60,14 @@
"@tanstack/react-query": "catalog:", "@tanstack/react-query": "catalog:",
"@tanstack/react-table": "^8.21.3", "@tanstack/react-table": "^8.21.3",
"date-fns": "^4.1.0", "date-fns": "^4.1.0",
"lucide-react": "^0.553.0", "lucide-react": "^0.554.0",
"next": "catalog:", "next": "catalog:",
"next-sitemap": "^4.2.3", "next-sitemap": "^4.2.3",
"next-themes": "0.4.6", "next-themes": "0.4.6",
"react": "catalog:", "react": "catalog:",
"react-dom": "19.2.0", "react-dom": "19.2.0",
"react-hook-form": "^7.66.0", "react-hook-form": "^7.66.1",
"react-i18next": "^16.3.3", "react-i18next": "^16.3.5",
"recharts": "2.15.3", "recharts": "2.15.3",
"tailwind-merge": "^3.4.0", "tailwind-merge": "^3.4.0",
"tw-animate-css": "catalog:", "tw-animate-css": "catalog:",

View File

@@ -28,7 +28,7 @@
"passwordHint": "Ensure it's at least 8 characters", "passwordHint": "Ensure it's at least 8 characters",
"repeatPasswordHint": "Type your password again", "repeatPasswordHint": "Type your password again",
"repeatPassword": "Repeat password", "repeatPassword": "Repeat password",
"passwordForgottenQuestion": "Password forgotten?", "passwordForgottenQuestion": "Forgot Password?",
"passwordResetLabel": "Reset Password", "passwordResetLabel": "Reset Password",
"passwordResetSubheading": "Enter your email address below. You will receive a link to reset your password.", "passwordResetSubheading": "Enter your email address below. You will receive a link to reset your password.",
"passwordResetSuccessMessage": "Check your Inbox! We emailed you a link for resetting your Password.", "passwordResetSuccessMessage": "Check your Inbox! We emailed you a link for resetting your Password.",

View File

@@ -9,34 +9,42 @@
Optimize dropdowns for mobile Optimize dropdowns for mobile
*/ */
[data-radix-popper-content-wrapper] { [data-radix-popper-content-wrapper] {
@apply w-full md:w-auto; @apply w-full md:w-auto;
} }
[data-radix-menu-content] { [data-radix-menu-content] {
@apply rounded-none md:rounded-lg w-full md:w-auto; @apply w-full rounded-none md:w-auto md:rounded-lg;
} }
[data-radix-menu-content] [role="menuitem"] { [data-radix-menu-content] [role='menuitem'] {
@apply md:min-h-0 min-h-12; @apply min-h-12 md:min-h-0;
} }
.site-header > .container:before, .site-header > .container:before,
.site-footer > .container:before { .site-footer > .container:before {
background: radial-gradient(62.87% 100% at 50% 100%, var(--color-gray-200) 0%, rgba(255, 255, 255, 0) 100%); background: radial-gradient(
62.87% 100% at 50% 100%,
var(--color-gray-200) 0%,
rgba(255, 255, 255, 0) 100%
);
bottom: 0; bottom: 0;
content: ""; content: '';
height: 1px; height: 1px;
left: 0; left: 0;
position: absolute; position: absolute;
width: 100%; width: 100%;
} }
.dark .site-header > .container:before, .dark .site-header > .container:before,
.dark .site-footer > .container:before { .dark .site-footer > .container:before {
background: radial-gradient(62.87% 100% at 50% 100%, rgba(255, 255, 255, .10) 0%, rgba(255, 255, 255, 0) 100%); background: radial-gradient(
62.87% 100% at 50% 100%,
rgba(255, 255, 255, 0.1) 0%,
rgba(255, 255, 255, 0) 100%
);
} }
.site-footer > .container:before { .site-footer > .container:before {
top: 0; top: 0;
} }

View File

@@ -8,9 +8,7 @@
@layer base { @layer base {
:root { :root {
--font-sans: --font-sans: -apple-system, BlinkMacSystemFont, var(--font-sans-fallback);
-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial,
sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol';
--font-heading: var(--font-sans); --font-heading: var(--font-sans);
--background: var(--color-white); --background: var(--color-white);

View File

@@ -1,5 +1,5 @@
@utility container { @utility container {
margin-inline: auto; margin-inline: auto;
@apply xl:max-w-[80rem] px-4 lg:px-8; @apply px-4 lg:px-8 xl:max-w-[80rem];
} }

View File

@@ -1,6 +1,6 @@
{ {
"name": "next-supabase-saas-kit-turbo", "name": "next-supabase-saas-kit-turbo",
"version": "2.21.3", "version": "2.21.4",
"private": true, "private": true,
"sideEffects": false, "sideEffects": false,
"engines": { "engines": {

View File

@@ -29,11 +29,11 @@
"@supabase/supabase-js": "catalog:", "@supabase/supabase-js": "catalog:",
"@types/react": "catalog:", "@types/react": "catalog:",
"date-fns": "^4.1.0", "date-fns": "^4.1.0",
"lucide-react": "^0.553.0", "lucide-react": "^0.554.0",
"next": "catalog:", "next": "catalog:",
"react": "catalog:", "react": "catalog:",
"react-hook-form": "^7.66.0", "react-hook-form": "^7.66.1",
"react-i18next": "^16.3.3", "react-i18next": "^16.3.5",
"zod": "catalog:" "zod": "catalog:"
}, },
"typesVersions": { "typesVersions": {

View File

@@ -15,9 +15,9 @@
"./components": "./src/components/index.ts" "./components": "./src/components/index.ts"
}, },
"dependencies": { "dependencies": {
"@stripe/react-stripe-js": "^5.3.0", "@stripe/react-stripe-js": "^5.4.0",
"@stripe/stripe-js": "^8.4.0", "@stripe/stripe-js": "^8.5.2",
"stripe": "^19.3.1" "stripe": "^20.0.0"
}, },
"devDependencies": { "devDependencies": {
"@kit/billing": "workspace:*", "@kit/billing": "workspace:*",

View File

@@ -2,7 +2,7 @@ import 'server-only';
import { StripeServerEnvSchema } from '../schema/stripe-server-env.schema'; import { StripeServerEnvSchema } from '../schema/stripe-server-env.schema';
const STRIPE_API_VERSION = '2025-10-29.clover'; const STRIPE_API_VERSION = '2025-11-17.clover';
/** /**
* @description returns a Stripe instance * @description returns a Stripe instance

View File

@@ -38,13 +38,13 @@
"@tanstack/react-query": "catalog:", "@tanstack/react-query": "catalog:",
"@types/react": "catalog:", "@types/react": "catalog:",
"@types/react-dom": "catalog:", "@types/react-dom": "catalog:",
"lucide-react": "^0.553.0", "lucide-react": "^0.554.0",
"next": "catalog:", "next": "catalog:",
"next-themes": "0.4.6", "next-themes": "0.4.6",
"react": "catalog:", "react": "catalog:",
"react-dom": "19.2.0", "react-dom": "19.2.0",
"react-hook-form": "^7.66.0", "react-hook-form": "^7.66.1",
"react-i18next": "^16.3.3", "react-i18next": "^16.3.5",
"zod": "catalog:" "zod": "catalog:"
}, },
"prettier": "@kit/prettier-config", "prettier": "@kit/prettier-config",

View File

@@ -24,11 +24,11 @@
"@tanstack/react-query": "catalog:", "@tanstack/react-query": "catalog:",
"@tanstack/react-table": "^8.21.3", "@tanstack/react-table": "^8.21.3",
"@types/react": "catalog:", "@types/react": "catalog:",
"lucide-react": "^0.553.0", "lucide-react": "^0.554.0",
"next": "catalog:", "next": "catalog:",
"react": "catalog:", "react": "catalog:",
"react-dom": "19.2.0", "react-dom": "19.2.0",
"react-hook-form": "^7.66.0", "react-hook-form": "^7.66.1",
"zod": "catalog:" "zod": "catalog:"
}, },
"exports": { "exports": {

View File

@@ -32,10 +32,10 @@
"@supabase/supabase-js": "catalog:", "@supabase/supabase-js": "catalog:",
"@tanstack/react-query": "catalog:", "@tanstack/react-query": "catalog:",
"@types/react": "catalog:", "@types/react": "catalog:",
"lucide-react": "^0.553.0", "lucide-react": "^0.554.0",
"next": "catalog:", "next": "catalog:",
"react-hook-form": "^7.66.0", "react-hook-form": "^7.66.1",
"react-i18next": "^16.3.3", "react-i18next": "^16.3.5",
"sonner": "^2.0.7", "sonner": "^2.0.7",
"zod": "catalog:" "zod": "catalog:"
}, },

View File

@@ -22,10 +22,10 @@
"@supabase/supabase-js": "catalog:", "@supabase/supabase-js": "catalog:",
"@tanstack/react-query": "catalog:", "@tanstack/react-query": "catalog:",
"@types/react": "catalog:", "@types/react": "catalog:",
"lucide-react": "^0.553.0", "lucide-react": "^0.554.0",
"react": "catalog:", "react": "catalog:",
"react-dom": "19.2.0", "react-dom": "19.2.0",
"react-i18next": "^16.3.3" "react-i18next": "^16.3.5"
}, },
"prettier": "@kit/prettier-config", "prettier": "@kit/prettier-config",
"typesVersions": { "typesVersions": {

View File

@@ -43,12 +43,12 @@
"@types/react-dom": "catalog:", "@types/react-dom": "catalog:",
"class-variance-authority": "^0.7.1", "class-variance-authority": "^0.7.1",
"date-fns": "^4.1.0", "date-fns": "^4.1.0",
"lucide-react": "^0.553.0", "lucide-react": "^0.554.0",
"next": "catalog:", "next": "catalog:",
"react": "catalog:", "react": "catalog:",
"react-dom": "19.2.0", "react-dom": "19.2.0",
"react-hook-form": "^7.66.0", "react-hook-form": "^7.66.1",
"react-i18next": "^16.3.3", "react-i18next": "^16.3.5",
"zod": "catalog:" "zod": "catalog:"
}, },
"prettier": "@kit/prettier-config", "prettier": "@kit/prettier-config",

View File

@@ -24,10 +24,10 @@
"next": "catalog:", "next": "catalog:",
"react": "catalog:", "react": "catalog:",
"react-dom": "19.2.0", "react-dom": "19.2.0",
"react-i18next": "^16.3.3" "react-i18next": "^16.3.5"
}, },
"dependencies": { "dependencies": {
"i18next": "25.6.2", "i18next": "25.6.3",
"i18next-browser-languagedetector": "8.2.0", "i18next-browser-languagedetector": "8.2.0",
"i18next-resources-to-backend": "^1.2.1" "i18next-resources-to-backend": "^1.2.1"
}, },

View File

@@ -20,7 +20,7 @@
"@kit/mailers-shared": "workspace:*", "@kit/mailers-shared": "workspace:*",
"@kit/prettier-config": "workspace:*", "@kit/prettier-config": "workspace:*",
"@kit/tsconfig": "workspace:*", "@kit/tsconfig": "workspace:*",
"@types/nodemailer": "7.0.3", "@types/nodemailer": "7.0.4",
"zod": "catalog:" "zod": "catalog:"
}, },
"typesVersions": { "typesVersions": {

View File

@@ -16,7 +16,7 @@
"./config/server": "./src/sentry.client.server.ts" "./config/server": "./src/sentry.client.server.ts"
}, },
"dependencies": { "dependencies": {
"@sentry/nextjs": "^10.25.0" "@sentry/nextjs": "^10.26.0"
}, },
"devDependencies": { "devDependencies": {
"@kit/eslint-config": "workspace:*", "@kit/eslint-config": "workspace:*",

View File

@@ -30,7 +30,7 @@
"@types/react-dom": "catalog:", "@types/react-dom": "catalog:",
"react": "catalog:", "react": "catalog:",
"react-dom": "19.2.0", "react-dom": "19.2.0",
"react-hook-form": "^7.66.0", "react-hook-form": "^7.66.1",
"zod": "catalog:" "zod": "catalog:"
}, },
"typesVersions": { "typesVersions": {

View File

@@ -14,7 +14,7 @@
"clsx": "^2.1.1", "clsx": "^2.1.1",
"cmdk": "1.1.1", "cmdk": "1.1.1",
"input-otp": "1.4.2", "input-otp": "1.4.2",
"lucide-react": "^0.553.0", "lucide-react": "^0.554.0",
"radix-ui": "1.4.3", "radix-ui": "1.4.3",
"react-dropzone": "^14.3.8", "react-dropzone": "^14.3.8",
"react-top-loading-bar": "3.0.2", "react-top-loading-bar": "3.0.2",
@@ -36,9 +36,9 @@
"next": "catalog:", "next": "catalog:",
"next-themes": "0.4.6", "next-themes": "0.4.6",
"prettier": "^3.6.2", "prettier": "^3.6.2",
"react-day-picker": "^9.11.1", "react-day-picker": "^9.11.2",
"react-hook-form": "^7.66.0", "react-hook-form": "^7.66.1",
"react-i18next": "^16.3.3", "react-i18next": "^16.3.5",
"sonner": "^2.0.7", "sonner": "^2.0.7",
"tailwindcss": "catalog:", "tailwindcss": "catalog:",
"tailwindcss-animate": "^1.0.7", "tailwindcss-animate": "^1.0.7",

2437
pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff

View File

@@ -6,19 +6,19 @@ packages:
catalog: catalog:
'@next/bundle-analyzer': 16.0.2 '@next/bundle-analyzer': 16.0.2
'@next/eslint-plugin-next': 16.0.2 '@next/eslint-plugin-next': 16.0.2
'@supabase/supabase-js': 2.84.0
'@tailwindcss/postcss': 4.1.17 '@tailwindcss/postcss': 4.1.17
'@tanstack/react-query': 5.90.10
'@types/node': 24.10.1 '@types/node': 24.10.1
'@types/react': 19.2.5 '@types/react': 19.2.6
'@types/react-dom': 19.2.3 '@types/react-dom': 19.2.3
eslint-config-next: 16.0.3 eslint-config-next: 16.0.3
next: 16.0.2 next: 16.0.2
react: 19.2.0
supabase: 2.58.5 supabase: 2.58.5
tailwindcss: 4.1.17 tailwindcss: 4.1.17
tw-animate-css: 1.4.0 tw-animate-css: 1.4.0
'@supabase/supabase-js': 2.81.1
'@tanstack/react-query': 5.90.9
zod: 3.25.74 zod: 3.25.74
react: 19.2.0
onlyBuiltDependencies: onlyBuiltDependencies:
- '@tailwindcss/oxide' - '@tailwindcss/oxide'