Dependencies Updates, Sidebar fixes, default plan, Radix single package (#297)

* Refactor Radix UI imports and update package dependencies, fix Sidebar "group" references, add default value to plan picker to preselect a plan
This commit is contained in:
Giancarlo Buomprisco
2025-07-11 16:57:27 +07:00
committed by GitHub
parent 1d734e6818
commit 50337298fd
72 changed files with 1902 additions and 1263 deletions

View File

@@ -8,13 +8,13 @@
"format": "prettier --check --write \"**/*.{js,cjs,mjs,ts,tsx,md,json}\"" "format": "prettier --check --write \"**/*.{js,cjs,mjs,ts,tsx,md,json}\""
}, },
"dependencies": { "dependencies": {
"@ai-sdk/openai": "^1.3.22", "@ai-sdk/openai": "^1.3.23",
"@hookform/resolvers": "^5.1.1", "@hookform/resolvers": "^5.1.1",
"@tanstack/react-query": "5.81.2", "@tanstack/react-query": "5.82.0",
"ai": "4.3.16", "ai": "4.3.17",
"lucide-react": "^0.523.0", "lucide-react": "^0.525.0",
"next": "15.3.4", "next": "15.3.5",
"nodemailer": "^7.0.3", "nodemailer": "^7.0.5",
"react": "19.1.0", "react": "19.1.0",
"react-dom": "19.1.0", "react-dom": "19.1.0",
"rxjs": "^7.8.2" "rxjs": "^7.8.2"
@@ -25,18 +25,18 @@
"@kit/shared": "workspace:*", "@kit/shared": "workspace:*",
"@kit/tsconfig": "workspace:*", "@kit/tsconfig": "workspace:*",
"@kit/ui": "workspace:*", "@kit/ui": "workspace:*",
"@tailwindcss/postcss": "^4.1.10", "@tailwindcss/postcss": "^4.1.11",
"@types/node": "^24.0.4", "@types/node": "^24.0.13",
"@types/nodemailer": "6.4.17", "@types/nodemailer": "6.4.17",
"@types/react": "19.1.8", "@types/react": "19.1.8",
"@types/react-dom": "19.1.6", "@types/react-dom": "19.1.6",
"babel-plugin-react-compiler": "19.1.0-rc.2", "babel-plugin-react-compiler": "19.1.0-rc.2",
"pino-pretty": "^13.0.0", "pino-pretty": "^13.0.0",
"react-hook-form": "^7.58.1", "react-hook-form": "^7.60.0",
"tailwindcss": "4.1.10", "tailwindcss": "4.1.11",
"tailwindcss-animate": "^1.0.7", "tailwindcss-animate": "^1.0.7",
"typescript": "^5.8.3", "typescript": "^5.8.3",
"zod": "^3.25.67" "zod": "^3.25.74"
}, },
"prettier": "@kit/prettier-config", "prettier": "@kit/prettier-config",
"browserslist": [ "browserslist": [

View File

@@ -12,9 +12,9 @@
"author": "", "author": "",
"license": "ISC", "license": "ISC",
"devDependencies": { "devDependencies": {
"@playwright/test": "^1.53.1", "@playwright/test": "^1.54.0",
"@types/node": "^24.0.4", "@types/node": "^24.0.13",
"dotenv": "16.5.0", "dotenv": "17.2.0",
"node-html-parser": "^7.0.1", "node-html-parser": "^7.0.1",
"totp-generator": "^1.0.0" "totp-generator": "^1.0.0"
} }

View File

@@ -35,7 +35,7 @@ export function HomeSidebar(props: HomeSidebarProps) {
fallback={ fallback={
<AppLogo <AppLogo
className={cn( className={cn(
'p-2 group-data-[minimized=true]:max-w-full group-data-[minimized=true]:py-0', 'p-2 group-data-[minimized=true]/sidebar:max-w-full group-data-[minimized=true]/sidebar:py-0',
)} )}
/> />
} }
@@ -43,7 +43,7 @@ export function HomeSidebar(props: HomeSidebarProps) {
<HomeAccountSelector userId={user.id} accounts={accounts} /> <HomeAccountSelector userId={user.id} accounts={accounts} />
</If> </If>
<div className={'group-data-[minimized=true]:hidden'}> <div className={'group-data-[minimized=true]/sidebar:hidden'}>
<UserNotifications userId={user.id} /> <UserNotifications userId={user.id} />
</div> </div>
</div> </div>

View File

@@ -58,7 +58,7 @@ function SidebarContainer(props: {
accounts={accounts} accounts={accounts}
/> />
<div className={'group-data-[minimized=true]:hidden'}> <div className={'group-data-[minimized=true]/sidebar:hidden'}>
<TeamAccountNotifications <TeamAccountNotifications
userId={userId} userId={userId}
accountId={props.accountId} accountId={props.accountId}

View File

@@ -61,7 +61,7 @@ export function RootProviders({
<ReactQueryProvider> <ReactQueryProvider>
<I18nProvider settings={i18nSettings} resolver={i18nResolver}> <I18nProvider settings={i18nSettings} resolver={i18nResolver}>
<CaptchaProvider> <CaptchaProvider>
<CaptchaTokenSetter siteKey={captchaSiteKey} /> <CaptchaTokenSetter siteKey={captchaSiteKey} nonce={nonce} />
<AuthProvider> <AuthProvider>
<ThemeProvider <ThemeProvider

View File

@@ -54,39 +54,39 @@
"@makerkit/data-loader-supabase-core": "^0.0.10", "@makerkit/data-loader-supabase-core": "^0.0.10",
"@makerkit/data-loader-supabase-nextjs": "^1.2.5", "@makerkit/data-loader-supabase-nextjs": "^1.2.5",
"@marsidev/react-turnstile": "^1.1.0", "@marsidev/react-turnstile": "^1.1.0",
"@nosecone/next": "1.0.0-beta.8", "@nosecone/next": "1.0.0-beta.9",
"@radix-ui/react-icons": "^1.3.2", "@radix-ui/react-icons": "^1.3.2",
"@supabase/supabase-js": "2.50.2", "@supabase/supabase-js": "2.50.5",
"@tanstack/react-query": "5.81.2", "@tanstack/react-query": "5.82.0",
"@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.523.0", "lucide-react": "^0.525.0",
"next": "15.3.4", "next": "15.3.5",
"next-sitemap": "^4.2.3", "next-sitemap": "^4.2.3",
"next-themes": "0.4.6", "next-themes": "0.4.6",
"react": "19.1.0", "react": "19.1.0",
"react-dom": "19.1.0", "react-dom": "19.1.0",
"react-hook-form": "^7.58.1", "react-hook-form": "^7.60.0",
"react-i18next": "^15.5.3", "react-i18next": "^15.6.0",
"recharts": "2.15.3", "recharts": "2.15.3",
"tailwind-merge": "^3.3.1", "tailwind-merge": "^3.3.1",
"zod": "^3.25.67" "zod": "^3.25.74"
}, },
"devDependencies": { "devDependencies": {
"@kit/eslint-config": "workspace:*", "@kit/eslint-config": "workspace:*",
"@kit/prettier-config": "workspace:*", "@kit/prettier-config": "workspace:*",
"@kit/tsconfig": "workspace:*", "@kit/tsconfig": "workspace:*",
"@next/bundle-analyzer": "15.3.4", "@next/bundle-analyzer": "15.3.5",
"@tailwindcss/postcss": "^4.1.10", "@tailwindcss/postcss": "^4.1.11",
"@types/node": "^24.0.4", "@types/node": "^24.0.13",
"@types/react": "19.1.8", "@types/react": "19.1.8",
"@types/react-dom": "19.1.6", "@types/react-dom": "19.1.6",
"babel-plugin-react-compiler": "19.1.0-rc.2", "babel-plugin-react-compiler": "19.1.0-rc.2",
"cssnano": "^7.0.7", "cssnano": "^7.0.7",
"pino-pretty": "^13.0.0", "pino-pretty": "^13.0.0",
"prettier": "^3.6.1", "prettier": "^3.6.2",
"supabase": "^2.26.9", "supabase": "^2.30.4",
"tailwindcss": "4.1.10", "tailwindcss": "4.1.11",
"tailwindcss-animate": "^1.0.7", "tailwindcss-animate": "^1.0.7",
"typescript": "^5.8.3" "typescript": "^5.8.3"
}, },

View File

@@ -48,7 +48,7 @@
"@manypkg/cli": "^0.24.0", "@manypkg/cli": "^0.24.0",
"@turbo/gen": "^2.5.4", "@turbo/gen": "^2.5.4",
"cross-env": "^7.0.3", "cross-env": "^7.0.3",
"prettier": "^3.6.1", "prettier": "^3.6.2",
"turbo": "2.5.4", "turbo": "2.5.4",
"typescript": "^5.8.3" "typescript": "^5.8.3"
} }

View File

@@ -16,7 +16,7 @@
"@kit/eslint-config": "workspace:*", "@kit/eslint-config": "workspace:*",
"@kit/prettier-config": "workspace:*", "@kit/prettier-config": "workspace:*",
"@kit/tsconfig": "workspace:*", "@kit/tsconfig": "workspace:*",
"@types/node": "^24.0.4" "@types/node": "^24.0.13"
}, },
"typesVersions": { "typesVersions": {
"*": { "*": {

View File

@@ -21,7 +21,7 @@
"@kit/supabase": "workspace:*", "@kit/supabase": "workspace:*",
"@kit/tsconfig": "workspace:*", "@kit/tsconfig": "workspace:*",
"@kit/ui": "workspace:*", "@kit/ui": "workspace:*",
"zod": "^3.25.67" "zod": "^3.25.74"
}, },
"typesVersions": { "typesVersions": {
"*": { "*": {

View File

@@ -26,15 +26,15 @@
"@kit/supabase": "workspace:*", "@kit/supabase": "workspace:*",
"@kit/tsconfig": "workspace:*", "@kit/tsconfig": "workspace:*",
"@kit/ui": "workspace:*", "@kit/ui": "workspace:*",
"@supabase/supabase-js": "2.50.2", "@supabase/supabase-js": "2.50.5",
"@types/react": "19.1.8", "@types/react": "19.1.8",
"date-fns": "^4.1.0", "date-fns": "^4.1.0",
"lucide-react": "^0.523.0", "lucide-react": "^0.525.0",
"next": "15.3.4", "next": "15.3.5",
"react": "19.1.0", "react": "19.1.0",
"react-hook-form": "^7.58.1", "react-hook-form": "^7.60.0",
"react-i18next": "^15.5.3", "react-i18next": "^15.6.0",
"zod": "^3.25.67" "zod": "^3.25.74"
}, },
"typesVersions": { "typesVersions": {
"*": { "*": {

View File

@@ -45,6 +45,11 @@ export function PlanPicker(
onSubmit: (data: { planId: string; productId: string }) => void; onSubmit: (data: { planId: string; productId: string }) => void;
canStartTrial?: boolean; canStartTrial?: boolean;
pending?: boolean; pending?: boolean;
value?: {
interval: string;
planId: string;
productId: string;
};
}>, }>,
) { ) {
const { t } = useTranslation(`billing`); const { t } = useTranslation(`billing`);
@@ -81,9 +86,9 @@ export function PlanPicker(
), ),
), ),
defaultValues: { defaultValues: {
interval: intervals[0], interval: props.value?.interval ?? intervals[0],
planId: '', planId: props.value?.planId ?? '',
productId: '', productId: props.value?.productId ?? '',
}, },
}); });

View File

@@ -25,9 +25,9 @@
"@kit/tsconfig": "workspace:*", "@kit/tsconfig": "workspace:*",
"@kit/ui": "workspace:*", "@kit/ui": "workspace:*",
"@types/react": "19.1.8", "@types/react": "19.1.8",
"next": "15.3.4", "next": "15.3.5",
"react": "19.1.0", "react": "19.1.0",
"zod": "^3.25.67" "zod": "^3.25.74"
}, },
"typesVersions": { "typesVersions": {
"*": { "*": {

View File

@@ -17,7 +17,7 @@
"dependencies": { "dependencies": {
"@stripe/react-stripe-js": "^3.7.0", "@stripe/react-stripe-js": "^3.7.0",
"@stripe/stripe-js": "^7.4.0", "@stripe/stripe-js": "^7.4.0",
"stripe": "^18.2.1" "stripe": "^18.3.0"
}, },
"devDependencies": { "devDependencies": {
"@kit/billing": "workspace:*", "@kit/billing": "workspace:*",
@@ -29,9 +29,9 @@
"@kit/ui": "workspace:*", "@kit/ui": "workspace:*",
"@types/react": "19.1.8", "@types/react": "19.1.8",
"date-fns": "^4.1.0", "date-fns": "^4.1.0",
"next": "15.3.4", "next": "15.3.5",
"react": "19.1.0", "react": "19.1.0",
"zod": "^3.25.67" "zod": "^3.25.74"
}, },
"typesVersions": { "typesVersions": {
"*": { "*": {

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-05-28.basil'; const STRIPE_API_VERSION = '2025-06-30.basil';
/** /**
* @description returns a Stripe instance * @description returns a Stripe instance

View File

@@ -20,7 +20,7 @@
"@kit/shared": "workspace:*", "@kit/shared": "workspace:*",
"@kit/tsconfig": "workspace:*", "@kit/tsconfig": "workspace:*",
"@kit/wordpress": "workspace:*", "@kit/wordpress": "workspace:*",
"@types/node": "^24.0.4" "@types/node": "^24.0.13"
}, },
"typesVersions": { "typesVersions": {
"*": { "*": {

View File

@@ -26,10 +26,10 @@
"@kit/prettier-config": "workspace:*", "@kit/prettier-config": "workspace:*",
"@kit/tsconfig": "workspace:*", "@kit/tsconfig": "workspace:*",
"@kit/ui": "workspace:*", "@kit/ui": "workspace:*",
"@types/node": "^24.0.4", "@types/node": "^24.0.13",
"@types/react": "19.1.8", "@types/react": "19.1.8",
"react": "19.1.0", "react": "19.1.0",
"zod": "^3.25.67" "zod": "^3.25.74"
}, },
"typesVersions": { "typesVersions": {
"*": { "*": {

View File

@@ -20,9 +20,9 @@
"@kit/prettier-config": "workspace:*", "@kit/prettier-config": "workspace:*",
"@kit/tsconfig": "workspace:*", "@kit/tsconfig": "workspace:*",
"@kit/ui": "workspace:*", "@kit/ui": "workspace:*",
"@types/node": "^24.0.4", "@types/node": "^24.0.13",
"@types/react": "19.1.8", "@types/react": "19.1.8",
"wp-types": "^4.68.0" "wp-types": "^4.68.1"
}, },
"typesVersions": { "typesVersions": {
"*": { "*": {

View File

@@ -22,8 +22,8 @@
"@kit/supabase": "workspace:*", "@kit/supabase": "workspace:*",
"@kit/team-accounts": "workspace:*", "@kit/team-accounts": "workspace:*",
"@kit/tsconfig": "workspace:*", "@kit/tsconfig": "workspace:*",
"@supabase/supabase-js": "2.50.2", "@supabase/supabase-js": "2.50.5",
"zod": "^3.25.67" "zod": "^3.25.74"
}, },
"typesVersions": { "typesVersions": {
"*": { "*": {

View File

@@ -13,7 +13,7 @@
".": "./src/index.ts" ".": "./src/index.ts"
}, },
"dependencies": { "dependencies": {
"@react-email/components": "0.1.1" "@react-email/components": "0.2.0"
}, },
"devDependencies": { "devDependencies": {
"@kit/eslint-config": "workspace:*", "@kit/eslint-config": "workspace:*",

View File

@@ -34,18 +34,18 @@
"@kit/tsconfig": "workspace:*", "@kit/tsconfig": "workspace:*",
"@kit/ui": "workspace:*", "@kit/ui": "workspace:*",
"@radix-ui/react-icons": "^1.3.2", "@radix-ui/react-icons": "^1.3.2",
"@supabase/supabase-js": "2.50.2", "@supabase/supabase-js": "2.50.5",
"@tanstack/react-query": "5.81.2", "@tanstack/react-query": "5.82.0",
"@types/react": "19.1.8", "@types/react": "19.1.8",
"@types/react-dom": "19.1.6", "@types/react-dom": "19.1.6",
"lucide-react": "^0.523.0", "lucide-react": "^0.525.0",
"next": "15.3.4", "next": "15.3.5",
"next-themes": "0.4.6", "next-themes": "0.4.6",
"react": "19.1.0", "react": "19.1.0",
"react-dom": "19.1.0", "react-dom": "19.1.0",
"react-hook-form": "^7.58.1", "react-hook-form": "^7.60.0",
"react-i18next": "^15.5.3", "react-i18next": "^15.6.0",
"zod": "^3.25.67" "zod": "^3.25.74"
}, },
"prettier": "@kit/prettier-config", "prettier": "@kit/prettier-config",
"typesVersions": { "typesVersions": {

View File

@@ -91,7 +91,7 @@ export function PersonalAccountDropdown({
aria-label="Open your profile menu" aria-label="Open your profile menu"
data-test={'account-dropdown-trigger'} data-test={'account-dropdown-trigger'}
className={cn( className={cn(
'animate-in group/trigger fade-in focus:outline-primary flex cursor-pointer items-center group-data-[minimized=true]:px-0', 'animate-in group/trigger fade-in focus:outline-primary flex cursor-pointer items-center group-data-[minimized=true]/sidebar:px-0',
className ?? '', className ?? '',
{ {
['active:bg-secondary/50 items-center gap-4 rounded-md' + ['active:bg-secondary/50 items-center gap-4 rounded-md' +
@@ -112,7 +112,7 @@ export function PersonalAccountDropdown({
<If condition={showProfileName}> <If condition={showProfileName}>
<div <div
className={ className={
'fade-in animate-in flex w-full flex-col truncate text-left group-data-[minimized=true]:hidden' 'fade-in animate-in flex w-full flex-col truncate text-left group-data-[minimized=true]/sidebar:hidden'
} }
> >
<span <span
@@ -132,7 +132,7 @@ export function PersonalAccountDropdown({
<ChevronsUpDown <ChevronsUpDown
className={ className={
'text-muted-foreground mr-1 h-8 group-data-[minimized=true]:hidden' 'text-muted-foreground mr-1 h-8 group-data-[minimized=true]/sidebar:hidden'
} }
/> />
</If> </If>

View File

@@ -2,6 +2,7 @@ import { useCallback } from 'react';
import { useQuery, useQueryClient } from '@tanstack/react-query'; import { useQuery, useQueryClient } from '@tanstack/react-query';
import { Json } from '@kit/supabase/database';
import { useSupabase } from '@kit/supabase/hooks/use-supabase'; import { useSupabase } from '@kit/supabase/hooks/use-supabase';
export function usePersonalAccountData( export function usePersonalAccountData(
@@ -10,6 +11,7 @@ export function usePersonalAccountData(
id: string | null; id: string | null;
name: string | null; name: string | null;
picture_url: string | null; picture_url: string | null;
public_data?: Json;
}, },
) { ) {
const client = useSupabase(); const client = useSupabase();
@@ -26,7 +28,8 @@ export function usePersonalAccountData(
` `
id, id,
name, name,
picture_url picture_url,
public_data
`, `,
) )
.eq('primary_owner_user_id', userId) .eq('primary_owner_user_id', userId)
@@ -51,6 +54,7 @@ export function usePersonalAccountData(
id: partialAccount.id, id: partialAccount.id,
name: partialAccount.name, name: partialAccount.name,
picture_url: partialAccount.picture_url, picture_url: partialAccount.picture_url,
public_data: partialAccount.public_data,
} }
: undefined, : undefined,
}); });

View File

@@ -20,16 +20,16 @@
"@kit/ui": "workspace:*", "@kit/ui": "workspace:*",
"@makerkit/data-loader-supabase-core": "^0.0.10", "@makerkit/data-loader-supabase-core": "^0.0.10",
"@makerkit/data-loader-supabase-nextjs": "^1.2.5", "@makerkit/data-loader-supabase-nextjs": "^1.2.5",
"@supabase/supabase-js": "2.50.2", "@supabase/supabase-js": "2.50.5",
"@tanstack/react-query": "5.81.2", "@tanstack/react-query": "5.82.0",
"@tanstack/react-table": "^8.21.3", "@tanstack/react-table": "^8.21.3",
"@types/react": "19.1.8", "@types/react": "19.1.8",
"lucide-react": "^0.523.0", "lucide-react": "^0.525.0",
"next": "15.3.4", "next": "15.3.5",
"react": "19.1.0", "react": "19.1.0",
"react-dom": "19.1.0", "react-dom": "19.1.0",
"react-hook-form": "^7.58.1", "react-hook-form": "^7.60.0",
"zod": "^3.25.67" "zod": "^3.25.74"
}, },
"exports": { "exports": {
".": "./src/index.ts", ".": "./src/index.ts",

View File

@@ -29,15 +29,15 @@
"@kit/ui": "workspace:*", "@kit/ui": "workspace:*",
"@marsidev/react-turnstile": "^1.1.0", "@marsidev/react-turnstile": "^1.1.0",
"@radix-ui/react-icons": "^1.3.2", "@radix-ui/react-icons": "^1.3.2",
"@supabase/supabase-js": "2.50.2", "@supabase/supabase-js": "2.50.5",
"@tanstack/react-query": "5.81.2", "@tanstack/react-query": "5.82.0",
"@types/react": "19.1.8", "@types/react": "19.1.8",
"lucide-react": "^0.523.0", "lucide-react": "^0.525.0",
"next": "15.3.4", "next": "15.3.5",
"react-hook-form": "^7.58.1", "react-hook-form": "^7.60.0",
"react-i18next": "^15.5.3", "react-i18next": "^15.6.0",
"sonner": "^2.0.5", "sonner": "^2.0.6",
"zod": "^3.25.67" "zod": "^3.25.74"
}, },
"prettier": "@kit/prettier-config", "prettier": "@kit/prettier-config",
"typesVersions": { "typesVersions": {

View File

@@ -9,6 +9,7 @@ import { Captcha } from './captcha-provider';
export function CaptchaTokenSetter(props: { export function CaptchaTokenSetter(props: {
siteKey: string | undefined; siteKey: string | undefined;
options?: TurnstileProps; options?: TurnstileProps;
nonce?: string;
}) { }) {
const { setToken, setInstance } = useContext(Captcha); const { setToken, setInstance } = useContext(Captcha);
@@ -31,6 +32,9 @@ export function CaptchaTokenSetter(props: {
}} }}
siteKey={props.siteKey} siteKey={props.siteKey}
onSuccess={setToken} onSuccess={setToken}
scriptOptions={{
nonce: props.nonce,
}}
{...options} {...options}
/> />
); );

View File

@@ -19,13 +19,13 @@
"@kit/supabase": "workspace:*", "@kit/supabase": "workspace:*",
"@kit/tsconfig": "workspace:*", "@kit/tsconfig": "workspace:*",
"@kit/ui": "workspace:*", "@kit/ui": "workspace:*",
"@supabase/supabase-js": "2.50.2", "@supabase/supabase-js": "2.50.5",
"@tanstack/react-query": "5.81.2", "@tanstack/react-query": "5.82.0",
"@types/react": "19.1.8", "@types/react": "19.1.8",
"lucide-react": "^0.523.0", "lucide-react": "^0.525.0",
"react": "19.1.0", "react": "19.1.0",
"react-dom": "19.1.0", "react-dom": "19.1.0",
"react-i18next": "^15.5.3" "react-i18next": "^15.6.0"
}, },
"prettier": "@kit/prettier-config", "prettier": "@kit/prettier-config",
"typesVersions": { "typesVersions": {

View File

@@ -32,20 +32,20 @@
"@kit/supabase": "workspace:*", "@kit/supabase": "workspace:*",
"@kit/tsconfig": "workspace:*", "@kit/tsconfig": "workspace:*",
"@kit/ui": "workspace:*", "@kit/ui": "workspace:*",
"@supabase/supabase-js": "2.50.2", "@supabase/supabase-js": "2.50.5",
"@tanstack/react-query": "5.81.2", "@tanstack/react-query": "5.82.0",
"@tanstack/react-table": "^8.21.3", "@tanstack/react-table": "^8.21.3",
"@types/react": "19.1.8", "@types/react": "19.1.8",
"@types/react-dom": "19.1.6", "@types/react-dom": "19.1.6",
"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.523.0", "lucide-react": "^0.525.0",
"next": "15.3.4", "next": "15.3.5",
"react": "19.1.0", "react": "19.1.0",
"react-dom": "19.1.0", "react-dom": "19.1.0",
"react-hook-form": "^7.58.1", "react-hook-form": "^7.60.0",
"react-i18next": "^15.5.3", "react-i18next": "^15.6.0",
"zod": "^3.25.67" "zod": "^3.25.74"
}, },
"prettier": "@kit/prettier-config", "prettier": "@kit/prettier-config",
"typesVersions": { "typesVersions": {

View File

@@ -20,14 +20,14 @@
"@kit/prettier-config": "workspace:*", "@kit/prettier-config": "workspace:*",
"@kit/shared": "workspace:*", "@kit/shared": "workspace:*",
"@kit/tsconfig": "workspace:*", "@kit/tsconfig": "workspace:*",
"@tanstack/react-query": "5.81.2", "@tanstack/react-query": "5.82.0",
"next": "15.3.4", "next": "15.3.5",
"react": "19.1.0", "react": "19.1.0",
"react-dom": "19.1.0", "react-dom": "19.1.0",
"react-i18next": "^15.5.3" "react-i18next": "^15.6.0"
}, },
"dependencies": { "dependencies": {
"i18next": "25.2.1", "i18next": "25.3.2",
"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,8 +20,8 @@
"@kit/resend": "workspace:*", "@kit/resend": "workspace:*",
"@kit/shared": "workspace:*", "@kit/shared": "workspace:*",
"@kit/tsconfig": "workspace:*", "@kit/tsconfig": "workspace:*",
"@types/node": "^24.0.4", "@types/node": "^24.0.13",
"zod": "^3.25.67" "zod": "^3.25.74"
}, },
"typesVersions": { "typesVersions": {
"*": { "*": {

View File

@@ -13,7 +13,7 @@
".": "./src/index.ts" ".": "./src/index.ts"
}, },
"dependencies": { "dependencies": {
"nodemailer": "^7.0.3" "nodemailer": "^7.0.5"
}, },
"devDependencies": { "devDependencies": {
"@kit/eslint-config": "workspace:*", "@kit/eslint-config": "workspace:*",
@@ -21,7 +21,7 @@
"@kit/prettier-config": "workspace:*", "@kit/prettier-config": "workspace:*",
"@kit/tsconfig": "workspace:*", "@kit/tsconfig": "workspace:*",
"@types/nodemailer": "6.4.17", "@types/nodemailer": "6.4.17",
"zod": "^3.25.67" "zod": "^3.25.74"
}, },
"typesVersions": { "typesVersions": {
"*": { "*": {

View File

@@ -17,8 +17,8 @@
"@kit/mailers-shared": "workspace:*", "@kit/mailers-shared": "workspace:*",
"@kit/prettier-config": "workspace:*", "@kit/prettier-config": "workspace:*",
"@kit/tsconfig": "workspace:*", "@kit/tsconfig": "workspace:*",
"@types/node": "^24.0.4", "@types/node": "^24.0.13",
"zod": "^3.25.67" "zod": "^3.25.74"
}, },
"typesVersions": { "typesVersions": {
"*": { "*": {

View File

@@ -16,7 +16,7 @@
"@kit/eslint-config": "workspace:*", "@kit/eslint-config": "workspace:*",
"@kit/prettier-config": "workspace:*", "@kit/prettier-config": "workspace:*",
"@kit/tsconfig": "workspace:*", "@kit/tsconfig": "workspace:*",
"zod": "^3.25.67" "zod": "^3.25.74"
}, },
"typesVersions": { "typesVersions": {
"*": { "*": {

View File

@@ -26,7 +26,7 @@
"@kit/tsconfig": "workspace:*", "@kit/tsconfig": "workspace:*",
"@types/react": "19.1.8", "@types/react": "19.1.8",
"react": "19.1.0", "react": "19.1.0",
"zod": "^3.25.67" "zod": "^3.25.74"
}, },
"typesVersions": { "typesVersions": {
"*": { "*": {

View File

@@ -26,7 +26,7 @@
"@kit/tsconfig": "workspace:*", "@kit/tsconfig": "workspace:*",
"@types/react": "19.1.8", "@types/react": "19.1.8",
"react": "19.1.0", "react": "19.1.0",
"zod": "^3.25.67" "zod": "^3.25.74"
}, },
"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": "^9.32.0", "@sentry/nextjs": "^9.37.0",
"import-in-the-middle": "1.14.2" "import-in-the-middle": "1.14.2"
}, },
"devDependencies": { "devDependencies": {

View File

@@ -20,9 +20,9 @@
"@kit/prettier-config": "workspace:*", "@kit/prettier-config": "workspace:*",
"@kit/supabase": "workspace:*", "@kit/supabase": "workspace:*",
"@kit/tsconfig": "workspace:*", "@kit/tsconfig": "workspace:*",
"@supabase/supabase-js": "2.50.2", "@supabase/supabase-js": "2.50.5",
"next": "15.3.4", "next": "15.3.5",
"zod": "^3.25.67" "zod": "^3.25.74"
}, },
"typesVersions": { "typesVersions": {
"*": { "*": {

View File

@@ -25,13 +25,13 @@
"@kit/tsconfig": "workspace:*", "@kit/tsconfig": "workspace:*",
"@kit/ui": "workspace:*", "@kit/ui": "workspace:*",
"@radix-ui/react-icons": "^1.3.2", "@radix-ui/react-icons": "^1.3.2",
"@supabase/supabase-js": "2.50.2", "@supabase/supabase-js": "2.50.5",
"@types/react": "19.1.8", "@types/react": "19.1.8",
"@types/react-dom": "19.1.6", "@types/react-dom": "19.1.6",
"react": "19.1.0", "react": "19.1.0",
"react-dom": "19.1.0", "react-dom": "19.1.0",
"react-hook-form": "^7.58.1", "react-hook-form": "^7.60.0",
"zod": "^3.25.67" "zod": "^3.25.74"
}, },
"typesVersions": { "typesVersions": {
"*": { "*": {

View File

@@ -25,13 +25,13 @@
"@kit/prettier-config": "workspace:*", "@kit/prettier-config": "workspace:*",
"@kit/tsconfig": "workspace:*", "@kit/tsconfig": "workspace:*",
"@supabase/ssr": "^0.6.1", "@supabase/ssr": "^0.6.1",
"@supabase/supabase-js": "2.50.2", "@supabase/supabase-js": "2.50.5",
"@tanstack/react-query": "5.81.2", "@tanstack/react-query": "5.82.0",
"@types/react": "19.1.8", "@types/react": "19.1.8",
"next": "15.3.4", "next": "15.3.5",
"react": "19.1.0", "react": "19.1.0",
"server-only": "^0.0.1", "server-only": "^0.0.1",
"zod": "^3.25.67" "zod": "^3.25.74"
}, },
"typesVersions": { "typesVersions": {
"*": { "*": {

View File

@@ -10,30 +10,12 @@
}, },
"dependencies": { "dependencies": {
"@hookform/resolvers": "^5.1.1", "@hookform/resolvers": "^5.1.1",
"@radix-ui/react-accordion": "1.2.11", "@radix-ui/react-icons": "^1.3.2",
"@radix-ui/react-alert-dialog": "^1.1.14",
"@radix-ui/react-avatar": "^1.1.10",
"@radix-ui/react-checkbox": "^1.3.2",
"@radix-ui/react-collapsible": "1.1.11",
"@radix-ui/react-dialog": "^1.1.14",
"@radix-ui/react-dropdown-menu": "^2.1.15",
"@radix-ui/react-label": "^2.1.7",
"@radix-ui/react-navigation-menu": "^1.2.13",
"@radix-ui/react-popover": "^1.1.14",
"@radix-ui/react-progress": "^1.1.7",
"@radix-ui/react-radio-group": "^1.3.7",
"@radix-ui/react-scroll-area": "^1.2.9",
"@radix-ui/react-select": "^2.2.5",
"@radix-ui/react-separator": "^1.1.7",
"@radix-ui/react-slot": "1.2.3",
"@radix-ui/react-switch": "^1.2.5",
"@radix-ui/react-tabs": "^1.1.12",
"@radix-ui/react-toast": "^1.2.14",
"@radix-ui/react-tooltip": "1.2.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.523.0", "lucide-react": "^0.525.0",
"radix-ui": "1.4.2",
"react-dropzone": "^14.3.8", "react-dropzone": "^14.3.8",
"react-top-loading-bar": "3.0.2", "react-top-loading-bar": "3.0.2",
"recharts": "2.15.3", "recharts": "2.15.3",
@@ -43,26 +25,25 @@
"@kit/eslint-config": "workspace:*", "@kit/eslint-config": "workspace:*",
"@kit/prettier-config": "workspace:*", "@kit/prettier-config": "workspace:*",
"@kit/tsconfig": "workspace:*", "@kit/tsconfig": "workspace:*",
"@radix-ui/react-icons": "^1.3.2", "@supabase/supabase-js": "2.50.5",
"@supabase/supabase-js": "2.50.2", "@tanstack/react-query": "5.82.0",
"@tanstack/react-query": "5.81.2",
"@tanstack/react-table": "^8.21.3", "@tanstack/react-table": "^8.21.3",
"@types/react": "19.1.8", "@types/react": "19.1.8",
"@types/react-dom": "19.1.6", "@types/react-dom": "19.1.6",
"class-variance-authority": "^0.7.1", "class-variance-authority": "^0.7.1",
"date-fns": "^4.1.0", "date-fns": "^4.1.0",
"eslint": "^9.29.0", "eslint": "^9.30.1",
"next": "15.3.4", "next": "15.3.5",
"next-themes": "0.4.6", "next-themes": "0.4.6",
"prettier": "^3.6.1", "prettier": "^3.6.2",
"react-day-picker": "^9.7.0", "react-day-picker": "^9.8.0",
"react-hook-form": "^7.58.1", "react-hook-form": "^7.60.0",
"react-i18next": "^15.5.3", "react-i18next": "^15.6.0",
"sonner": "^2.0.5", "sonner": "^2.0.6",
"tailwindcss": "4.1.10", "tailwindcss": "4.1.11",
"tailwindcss-animate": "^1.0.7", "tailwindcss-animate": "^1.0.7",
"typescript": "^5.8.3", "typescript": "^5.8.3",
"zod": "^3.25.67" "zod": "^3.25.74"
}, },
"prettier": "@kit/prettier-config", "prettier": "@kit/prettier-config",
"imports": { "imports": {

View File

@@ -1,7 +1,7 @@
import * as React from 'react'; import * as React from 'react';
import { Slot, Slottable } from '@radix-ui/react-slot';
import { ChevronRight } from 'lucide-react'; import { ChevronRight } from 'lucide-react';
import { Slot } from 'radix-ui';
import { cn } from '../lib/utils'; import { cn } from '../lib/utils';
@@ -12,7 +12,7 @@ export const CardButton: React.FC<
children: React.ReactNode; children: React.ReactNode;
} & React.ButtonHTMLAttributes<HTMLButtonElement> } & React.ButtonHTMLAttributes<HTMLButtonElement>
> = function CardButton({ className, asChild, ...props }) { > = function CardButton({ className, asChild, ...props }) {
const Comp = asChild ? Slot : 'button'; const Comp = asChild ? Slot.Root : 'button';
return ( return (
<Comp <Comp
@@ -22,7 +22,7 @@ export const CardButton: React.FC<
)} )}
{...props} {...props}
> >
<Slottable>{props.children}</Slottable> <Slot.Slottable>{props.children}</Slot.Slottable>
</Comp> </Comp>
); );
}; };
@@ -33,7 +33,7 @@ export const CardButtonTitle: React.FC<
children: React.ReactNode; children: React.ReactNode;
} & React.HTMLAttributes<HTMLDivElement> } & React.HTMLAttributes<HTMLDivElement>
> = function CardButtonTitle({ className, asChild, ...props }) { > = function CardButtonTitle({ className, asChild, ...props }) {
const Comp = asChild ? Slot : 'div'; const Comp = asChild ? Slot.Root : 'div';
return ( return (
<Comp <Comp
@@ -43,7 +43,7 @@ export const CardButtonTitle: React.FC<
)} )}
{...props} {...props}
> >
<Slottable>{props.children}</Slottable> <Slot.Slottable>{props.children}</Slot.Slottable>
</Comp> </Comp>
); );
}; };
@@ -60,11 +60,11 @@ export const CardButtonHeader: React.FC<
displayArrow = true, displayArrow = true,
...props ...props
}) { }) {
const Comp = asChild ? Slot : 'div'; const Comp = asChild ? Slot.Root : 'div';
return ( return (
<Comp className={cn(className, 'p-4')} {...props}> <Comp className={cn(className, 'p-4')} {...props}>
<Slottable> <Slot.Slottable>
{props.children} {props.children}
<ChevronRight <ChevronRight
@@ -75,7 +75,7 @@ export const CardButtonHeader: React.FC<
}, },
)} )}
/> />
</Slottable> </Slot.Slottable>
</Comp> </Comp>
); );
}; };
@@ -86,11 +86,11 @@ export const CardButtonContent: React.FC<
children: React.ReactNode; children: React.ReactNode;
} & React.HTMLAttributes<HTMLDivElement> } & React.HTMLAttributes<HTMLDivElement>
> = function CardButtonContent({ className, asChild, ...props }) { > = function CardButtonContent({ className, asChild, ...props }) {
const Comp = asChild ? Slot : 'div'; const Comp = asChild ? Slot.Root : 'div';
return ( return (
<Comp className={cn(className, 'flex flex-1 flex-col px-4')} {...props}> <Comp className={cn(className, 'flex flex-1 flex-col px-4')} {...props}>
<Slottable>{props.children}</Slottable> <Slot.Slottable>{props.children}</Slot.Slottable>
</Comp> </Comp>
); );
}; };
@@ -101,7 +101,7 @@ export const CardButtonFooter: React.FC<
children: React.ReactNode; children: React.ReactNode;
} & React.HTMLAttributes<HTMLDivElement> } & React.HTMLAttributes<HTMLDivElement>
> = function CardButtonFooter({ className, asChild, ...props }) { > = function CardButtonFooter({ className, asChild, ...props }) {
const Comp = asChild ? Slot : 'div'; const Comp = asChild ? Slot.Root : 'div';
return ( return (
<Comp <Comp
@@ -111,7 +111,7 @@ export const CardButtonFooter: React.FC<
)} )}
{...props} {...props}
> >
<Slottable>{props.children}</Slottable> <Slot.Slottable>{props.children}</Slot.Slottable>
</Comp> </Comp>
); );
}; };

View File

@@ -2,7 +2,7 @@
import { useCallback, useMemo, useState } from 'react'; import { useCallback, useMemo, useState } from 'react';
import * as DialogPrimitive from '@radix-ui/react-dialog'; import { Dialog as DialogPrimitive } from 'radix-ui';
import { Button } from '../shadcn/button'; import { Button } from '../shadcn/button';
import { Heading } from '../shadcn/heading'; import { Heading } from '../shadcn/heading';

View File

@@ -1,4 +1,4 @@
import { Slot, Slottable } from '@radix-ui/react-slot'; import { Slot } from 'radix-ui';
import { cn } from '../../lib/utils'; import { cn } from '../../lib/utils';
@@ -7,7 +7,7 @@ export const GradientSecondaryText: React.FC<
asChild?: boolean; asChild?: boolean;
} }
> = function GradientSecondaryTextComponent({ className, ...props }) { > = function GradientSecondaryTextComponent({ className, ...props }) {
const Comp = props.asChild ? Slot : 'span'; const Comp = props.asChild ? Slot.Root : 'span';
return ( return (
<Comp <Comp
@@ -17,7 +17,7 @@ export const GradientSecondaryText: React.FC<
)} )}
{...props} {...props}
> >
<Slottable>{props.children}</Slottable> <Slot.Slottable>{props.children}</Slot.Slottable>
</Comp> </Comp>
); );
}; };

View File

@@ -1,4 +1,4 @@
import { Slot, Slottable } from '@radix-ui/react-slot'; import { Slot } from 'radix-ui';
import { cn } from '../../lib/utils'; import { cn } from '../../lib/utils';
@@ -7,7 +7,7 @@ export const HeroTitle: React.FC<
asChild?: boolean; asChild?: boolean;
} }
> = function HeroTitleComponent({ children, className, ...props }) { > = function HeroTitleComponent({ children, className, ...props }) {
const Comp = props.asChild ? Slot : 'h1'; const Comp = props.asChild ? Slot.Root : 'h1';
return ( return (
<Comp <Comp
@@ -17,7 +17,7 @@ export const HeroTitle: React.FC<
)} )}
{...props} {...props}
> >
<Slottable>{children}</Slottable> <Slot.Slottable>{children}</Slot.Slottable>
</Comp> </Comp>
); );
}; };

View File

@@ -1,4 +1,4 @@
import { Slot, Slottable } from '@radix-ui/react-slot'; import { Slot } from 'radix-ui';
import { cn } from '../../lib/utils'; import { cn } from '../../lib/utils';
import { GradientSecondaryText } from './gradient-secondary-text'; import { GradientSecondaryText } from './gradient-secondary-text';
@@ -9,7 +9,7 @@ export const Pill: React.FC<
asChild?: boolean; asChild?: boolean;
} }
> = function PillComponent({ className, asChild, ...props }) { > = function PillComponent({ className, asChild, ...props }) {
const Comp = asChild ? Slot : 'h3'; const Comp = asChild ? Slot.Root : 'h3';
return ( return (
<Comp <Comp
@@ -28,13 +28,13 @@ export const Pill: React.FC<
{props.label} {props.label}
</span> </span>
)} )}
<Slottable> <Slot.Slottable>
<GradientSecondaryText <GradientSecondaryText
className={'flex items-center gap-x-2 font-semibold tracking-tight'} className={'flex items-center gap-x-2 font-semibold tracking-tight'}
> >
{props.children} {props.children}
</GradientSecondaryText> </GradientSecondaryText>
</Slottable> </Slot.Slottable>
</Comp> </Comp>
); );
}; };
@@ -44,7 +44,7 @@ export const PillActionButton: React.FC<
asChild?: boolean; asChild?: boolean;
} }
> = ({ asChild, ...props }) => { > = ({ asChild, ...props }) => {
const Comp = asChild ? Slot : 'button'; const Comp = asChild ? Slot.Root : 'button';
return ( return (
<Comp <Comp

View File

@@ -11,8 +11,8 @@ import React, {
useState, useState,
} from 'react'; } from 'react';
import { Slot, Slottable } from '@radix-ui/react-slot';
import { useMutation } from '@tanstack/react-query'; import { useMutation } from '@tanstack/react-query';
import { Slot } from 'radix-ui';
import { Path, UseFormReturn } from 'react-hook-form'; import { Path, UseFormReturn } from 'react-hook-form';
import { z } from 'zod'; import { z } from 'zod';
@@ -136,11 +136,11 @@ export const MultiStepFormStep: React.FC<
} & HTMLProps<HTMLDivElement> } & HTMLProps<HTMLDivElement>
> >
> = function MultiStepFormStep({ children, asChild, ...props }) { > = function MultiStepFormStep({ children, asChild, ...props }) {
const Cmp = asChild ? Slot : 'div'; const Cmp = asChild ? Slot.Root : 'div';
return ( return (
<Cmp {...props}> <Cmp {...props}>
<Slottable>{children}</Slottable> <Slot.Slottable>{children}</Slot.Slottable>
</Cmp> </Cmp>
); );
}; };
@@ -331,11 +331,11 @@ export const MultiStepFormHeader: React.FC<
} & HTMLProps<HTMLDivElement> } & HTMLProps<HTMLDivElement>
> >
> = function MultiStepFormHeader({ children, asChild, ...props }) { > = function MultiStepFormHeader({ children, asChild, ...props }) {
const Cmp = asChild ? Slot : 'div'; const Cmp = asChild ? Slot.Root : 'div';
return ( return (
<Cmp {...props}> <Cmp {...props}>
<Slottable>{children}</Slottable> <Slot.Slottable>{children}</Slot.Slottable>
</Cmp> </Cmp>
); );
}; };
@@ -347,11 +347,11 @@ export const MultiStepFormFooter: React.FC<
} & HTMLProps<HTMLDivElement> } & HTMLProps<HTMLDivElement>
> >
> = function MultiStepFormFooter({ children, asChild, ...props }) { > = function MultiStepFormFooter({ children, asChild, ...props }) {
const Cmp = asChild ? Slot : 'div'; const Cmp = asChild ? Slot.Root : 'div';
return ( return (
<Cmp {...props}> <Cmp {...props}>
<Slottable>{children}</Slottable> <Slot.Slottable>{children}</Slot.Slottable>
</Cmp> </Cmp>
); );
}; };

View File

@@ -2,8 +2,8 @@
import * as React from 'react'; import * as React from 'react';
import * as AccordionPrimitive from '@radix-ui/react-accordion';
import { ChevronDownIcon } from '@radix-ui/react-icons'; import { ChevronDownIcon } from '@radix-ui/react-icons';
import { Accordion as AccordionPrimitive } from 'radix-ui';
import { cn } from '../lib/utils'; import { cn } from '../lib/utils';

View File

@@ -2,7 +2,7 @@
import * as React from 'react'; import * as React from 'react';
import * as AlertDialogPrimitive from '@radix-ui/react-alert-dialog'; import { AlertDialog as AlertDialogPrimitive } from 'radix-ui';
import { cn } from '../lib/utils'; import { cn } from '../lib/utils';
import { buttonVariants } from './button'; import { buttonVariants } from './button';

View File

@@ -2,7 +2,7 @@
import * as React from 'react'; import * as React from 'react';
import * as AvatarPrimitive from '@radix-ui/react-avatar'; import { Avatar as AvatarPrimitive } from 'radix-ui';
import { cn } from '../lib/utils'; import { cn } from '../lib/utils';

View File

@@ -1,7 +1,7 @@
import * as React from 'react'; import * as React from 'react';
import { ChevronRightIcon, DotsHorizontalIcon } from '@radix-ui/react-icons'; import { ChevronRightIcon, DotsHorizontalIcon } from '@radix-ui/react-icons';
import { Slot } from '@radix-ui/react-slot'; import { Slot } from 'radix-ui';
import { cn } from '../lib/utils'; import { cn } from '../lib/utils';
@@ -42,7 +42,7 @@ const BreadcrumbLink: React.FC<
asChild?: boolean; asChild?: boolean;
} }
> = ({ asChild, className, ...props }) => { > = ({ asChild, className, ...props }) => {
const Comp = asChild ? Slot : 'a'; const Comp = asChild ? Slot.Root : 'a';
return ( return (
<Comp <Comp

View File

@@ -1,8 +1,8 @@
import * as React from 'react'; import * as React from 'react';
import { Slot } from '@radix-ui/react-slot';
import { cva } from 'class-variance-authority'; import { cva } from 'class-variance-authority';
import type { VariantProps } from 'class-variance-authority'; import type { VariantProps } from 'class-variance-authority';
import { Slot } from 'radix-ui';
import { cn } from '../lib/utils'; import { cn } from '../lib/utils';
@@ -49,7 +49,7 @@ const Button: React.FC<ButtonProps> = ({
asChild = false, asChild = false,
...props ...props
}) => { }) => {
const Comp = asChild ? Slot : 'button'; const Comp = asChild ? Slot.Root : 'button';
return ( return (
<Comp <Comp

View File

@@ -2,8 +2,8 @@
import * as React from 'react'; import * as React from 'react';
import * as CheckboxPrimitive from '@radix-ui/react-checkbox';
import { CheckIcon } from '@radix-ui/react-icons'; import { CheckIcon } from '@radix-ui/react-icons';
import { Checkbox as CheckboxPrimitive } from 'radix-ui';
import { cn } from '../lib/utils'; import { cn } from '../lib/utils';

View File

@@ -1,6 +1,6 @@
'use client'; 'use client';
import * as CollapsiblePrimitive from '@radix-ui/react-collapsible'; import { Collapsible as CollapsiblePrimitive } from 'radix-ui';
const Collapsible = CollapsiblePrimitive.Root; const Collapsible = CollapsiblePrimitive.Root;

View File

@@ -2,7 +2,6 @@
import * as React from 'react'; import * as React from 'react';
import { type DialogProps } from '@radix-ui/react-dialog';
import { MagnifyingGlassIcon } from '@radix-ui/react-icons'; import { MagnifyingGlassIcon } from '@radix-ui/react-icons';
import { Command as CommandPrimitive } from 'cmdk'; import { Command as CommandPrimitive } from 'cmdk';
@@ -22,7 +21,7 @@ const Command: React.FC<
); );
Command.displayName = CommandPrimitive.displayName; Command.displayName = CommandPrimitive.displayName;
type CommandDialogProps = DialogProps; type CommandDialogProps = React.ComponentProps<typeof Dialog>;
const CommandDialog = ({ children, ...props }: CommandDialogProps) => { const CommandDialog = ({ children, ...props }: CommandDialogProps) => {
return ( return (

View File

@@ -2,8 +2,8 @@
import * as React from 'react'; import * as React from 'react';
import * as DialogPrimitive from '@radix-ui/react-dialog';
import { Cross2Icon } from '@radix-ui/react-icons'; import { Cross2Icon } from '@radix-ui/react-icons';
import { Dialog as DialogPrimitive } from 'radix-ui';
import { cn } from '../lib/utils'; import { cn } from '../lib/utils';

View File

@@ -2,12 +2,12 @@
import * as React from 'react'; import * as React from 'react';
import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';
import { import {
CheckIcon, CheckIcon,
ChevronRightIcon, ChevronRightIcon,
DotFilledIcon, DotFilledIcon,
} from '@radix-ui/react-icons'; } from '@radix-ui/react-icons';
import { DropdownMenu as DropdownMenuPrimitive } from 'radix-ui';
import { cn } from '../lib/utils'; import { cn } from '../lib/utils';

View File

@@ -2,8 +2,8 @@
import * as React from 'react'; import * as React from 'react';
import type * as LabelPrimitive from '@radix-ui/react-label'; import { Label as LabelPrimitive } from 'radix-ui';
import { Slot } from '@radix-ui/react-slot'; import { Slot } from 'radix-ui';
import type { ControllerProps, FieldPath, FieldValues } from 'react-hook-form'; import type { ControllerProps, FieldPath, FieldValues } from 'react-hook-form';
import { Controller, FormProvider, useFormContext } from 'react-hook-form'; import { Controller, FormProvider, useFormContext } from 'react-hook-form';
@@ -97,14 +97,14 @@ const FormLabel: React.FC<
}; };
FormLabel.displayName = 'FormLabel'; FormLabel.displayName = 'FormLabel';
const FormControl: React.FC<React.ComponentPropsWithoutRef<typeof Slot>> = ({ const FormControl: React.FC<
...props React.ComponentPropsWithoutRef<typeof Slot.Root>
}) => { > = ({ ...props }) => {
const { error, formItemId, formDescriptionId, formMessageId } = const { error, formItemId, formDescriptionId, formMessageId } =
useFormField(); useFormField();
return ( return (
<Slot <Slot.Root
id={formItemId} id={formItemId}
aria-describedby={ aria-describedby={
!error !error

View File

@@ -2,8 +2,8 @@
import * as React from 'react'; import * as React from 'react';
import * as LabelPrimitive from '@radix-ui/react-label';
import { type VariantProps, cva } from 'class-variance-authority'; import { type VariantProps, cva } from 'class-variance-authority';
import { Label as LabelPrimitive } from 'radix-ui';
import { cn } from '../lib/utils'; import { cn } from '../lib/utils';

View File

@@ -3,8 +3,8 @@
import * as React from 'react'; import * as React from 'react';
import { ChevronDownIcon } from '@radix-ui/react-icons'; import { ChevronDownIcon } from '@radix-ui/react-icons';
import * as NavigationMenuPrimitive from '@radix-ui/react-navigation-menu';
import { cva } from 'class-variance-authority'; import { cva } from 'class-variance-authority';
import { NavigationMenu as NavigationMenuPrimitive } from 'radix-ui';
import { cn } from '../lib/utils'; import { cn } from '../lib/utils';

View File

@@ -2,7 +2,7 @@
import * as React from 'react'; import * as React from 'react';
import * as PopoverPrimitive from '@radix-ui/react-popover'; import { Popover as PopoverPrimitive } from 'radix-ui';
import { cn } from '../lib/utils'; import { cn } from '../lib/utils';

View File

@@ -2,7 +2,7 @@
import * as React from 'react'; import * as React from 'react';
import * as ProgressPrimitive from '@radix-ui/react-progress'; import { Progress as ProgressPrimitive } from 'radix-ui';
import { cn } from '../lib/utils'; import { cn } from '../lib/utils';

View File

@@ -3,7 +3,7 @@
import * as React from 'react'; import * as React from 'react';
import { CheckIcon } from '@radix-ui/react-icons'; import { CheckIcon } from '@radix-ui/react-icons';
import * as RadioGroupPrimitive from '@radix-ui/react-radio-group'; import { RadioGroup as RadioGroupPrimitive } from 'radix-ui';
import { cn } from '../lib/utils'; import { cn } from '../lib/utils';

View File

@@ -2,7 +2,7 @@
import * as React from 'react'; import * as React from 'react';
import * as ScrollAreaPrimitive from '@radix-ui/react-scroll-area'; import { ScrollArea as ScrollAreaPrimitive } from 'radix-ui';
import { cn } from '../lib/utils'; import { cn } from '../lib/utils';

View File

@@ -8,7 +8,7 @@ import {
ChevronDownIcon, ChevronDownIcon,
ChevronUpIcon, ChevronUpIcon,
} from '@radix-ui/react-icons'; } from '@radix-ui/react-icons';
import * as SelectPrimitive from '@radix-ui/react-select'; import { Select as SelectPrimitive } from 'radix-ui';
import { cn } from '../lib/utils'; import { cn } from '../lib/utils';

View File

@@ -2,7 +2,7 @@
import * as React from 'react'; import * as React from 'react';
import * as SeparatorPrimitive from '@radix-ui/react-separator'; import { Separator as SeparatorPrimitive } from 'radix-ui';
import { cn } from '../lib/utils'; import { cn } from '../lib/utils';

View File

@@ -2,9 +2,9 @@
import * as React from 'react'; import * as React from 'react';
import * as SheetPrimitive from '@radix-ui/react-dialog';
import { Cross2Icon } from '@radix-ui/react-icons'; import { Cross2Icon } from '@radix-ui/react-icons';
import { type VariantProps, cva } from 'class-variance-authority'; import { type VariantProps, cva } from 'class-variance-authority';
import { Dialog as SheetPrimitive } from 'radix-ui';
import { cn } from '../lib/utils'; import { cn } from '../lib/utils';

View File

@@ -5,9 +5,9 @@ import * as React from 'react';
import Link from 'next/link'; import Link from 'next/link';
import { usePathname } from 'next/navigation'; import { usePathname } from 'next/navigation';
import { Slot } from '@radix-ui/react-slot';
import { VariantProps, cva } from 'class-variance-authority'; import { VariantProps, cva } from 'class-variance-authority';
import { ChevronDown, PanelLeft } from 'lucide-react'; import { ChevronDown, PanelLeft } from 'lucide-react';
import { Slot } from 'radix-ui';
import { useTranslation } from 'react-i18next'; import { useTranslation } from 'react-i18next';
import { useIsMobile } from '../hooks/use-mobile'; import { useIsMobile } from '../hooks/use-mobile';
@@ -149,26 +149,24 @@ const SidebarProvider: React.FC<
return ( return (
<SidebarContext.Provider value={contextValue}> <SidebarContext.Provider value={contextValue}>
<TooltipProvider delayDuration={0}> <div
<div style={
style={ {
{ '--sidebar-width': sidebarWidth,
'--sidebar-width': sidebarWidth, '--sidebar-width-icon': SIDEBAR_WIDTH_ICON,
'--sidebar-width-icon': SIDEBAR_WIDTH_ICON, ...style,
...style, } as React.CSSProperties
} as React.CSSProperties }
} data-minimized={!open}
data-minimized={!open} className={cn(
className={cn( 'group/sidebar text-sidebar-foreground has-data-[variant=inset]:bg-sidebar flex min-h-svh w-full',
'group text-sidebar-foreground has-data-[variant=inset]:bg-sidebar flex min-h-svh w-full', className,
className, )}
)} ref={ref}
ref={ref} {...props}
{...props} >
> {children}
{children} </div>
</div>
</TooltipProvider>
</SidebarContext.Provider> </SidebarContext.Provider>
); );
}; };
@@ -464,7 +462,7 @@ SidebarGroup.displayName = 'SidebarGroup';
const SidebarGroupLabel: React.FC< const SidebarGroupLabel: React.FC<
React.ComponentProps<'div'> & { asChild?: boolean } React.ComponentProps<'div'> & { asChild?: boolean }
> = ({ className, asChild = false, ...props }) => { > = ({ className, asChild = false, ...props }) => {
const Comp = asChild ? Slot : 'div'; const Comp = asChild ? Slot.Root : 'div';
return ( return (
<Comp <Comp
@@ -483,7 +481,7 @@ SidebarGroupLabel.displayName = 'SidebarGroupLabel';
const SidebarGroupAction: React.FC< const SidebarGroupAction: React.FC<
React.ComponentProps<'button'> & { asChild?: boolean } React.ComponentProps<'button'> & { asChild?: boolean }
> = ({ className, asChild = false, ...props }) => { > = ({ className, asChild = false, ...props }) => {
const Comp = asChild ? Slot : 'button'; const Comp = asChild ? Slot.Root : 'button';
return ( return (
<Comp <Comp
@@ -520,7 +518,7 @@ const SidebarMenu: React.FC<React.ComponentProps<'ul'>> = ({
<ul <ul
data-sidebar="menu" data-sidebar="menu"
className={cn( className={cn(
'flex w-full min-w-0 flex-col gap-1 group-data-[minimized=true]:items-center', 'flex w-full min-w-0 flex-col gap-1 group-data-[minimized=true]/sidebar:items-center',
className, className,
)} )}
{...props} {...props}
@@ -580,7 +578,7 @@ const SidebarMenuButton: React.FC<
className, className,
...props ...props
}) => { }) => {
const Comp = asChild ? Slot : 'button'; const Comp = asChild ? Slot.Root : 'button';
const { isMobile, open } = useSidebar(); const { isMobile, open } = useSidebar();
const { t } = useTranslation(); const { t } = useTranslation();
@@ -607,15 +605,17 @@ const SidebarMenuButton: React.FC<
} }
return ( return (
<Tooltip> <TooltipProvider delayDuration={0}>
<TooltipTrigger asChild>{button}</TooltipTrigger> <Tooltip>
<TooltipContent <TooltipTrigger asChild>{button}</TooltipTrigger>
side="right" <TooltipContent
align="center" side="right"
hidden={isMobile || open} align="center"
{...tooltip} hidden={isMobile || open}
/> {...tooltip}
</Tooltip> />
</Tooltip>
</TooltipProvider>
); );
}; };
@@ -627,7 +627,7 @@ const SidebarMenuAction: React.FC<
showOnHover?: boolean; showOnHover?: boolean;
} }
> = ({ className, asChild = false, showOnHover = false, ...props }) => { > = ({ className, asChild = false, showOnHover = false, ...props }) => {
const Comp = asChild ? Slot : 'button'; const Comp = asChild ? Slot.Root : 'button';
return ( return (
<Comp <Comp
@@ -735,7 +735,7 @@ const SidebarMenuSubButton: React.FC<
isActive?: boolean; isActive?: boolean;
} }
> = ({ asChild = false, size = 'md', isActive, className, ...props }) => { > = ({ asChild = false, size = 'md', isActive, className, ...props }) => {
const Comp = asChild ? Slot : 'a'; const Comp = asChild ? Slot.Root : 'a';
return ( return (
<Comp <Comp

View File

@@ -2,7 +2,7 @@
import * as React from 'react'; import * as React from 'react';
import * as SwitchPrimitives from '@radix-ui/react-switch'; import { Switch as SwitchPrimitives } from 'radix-ui';
import { cn } from '../lib/utils'; import { cn } from '../lib/utils';

View File

@@ -2,7 +2,7 @@
import * as React from 'react'; import * as React from 'react';
import * as TabsPrimitive from '@radix-ui/react-tabs'; import { Tabs as TabsPrimitive } from 'radix-ui';
import { cn } from '../lib/utils'; import { cn } from '../lib/utils';

View File

@@ -2,7 +2,7 @@
import * as React from 'react'; import * as React from 'react';
import * as TooltipPrimitive from '@radix-ui/react-tooltip'; import { Tooltip as TooltipPrimitive } from 'radix-ui';
import { cn } from '../lib/utils'; import { cn } from '../lib/utils';

2662
pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff

View File

@@ -13,16 +13,16 @@
"format": "prettier --check \"**/*.{js,json}\"" "format": "prettier --check \"**/*.{js,json}\""
}, },
"dependencies": { "dependencies": {
"@next/eslint-plugin-next": "15.3.4", "@next/eslint-plugin-next": "15.3.5",
"@types/eslint": "9.6.1", "@types/eslint": "9.6.1",
"eslint-config-next": "15.3.4", "eslint-config-next": "15.3.5",
"eslint-config-turbo": "^2.5.4", "eslint-config-turbo": "^2.5.4",
"typescript-eslint": "8.35.0" "typescript-eslint": "8.36.0"
}, },
"devDependencies": { "devDependencies": {
"@kit/prettier-config": "workspace:*", "@kit/prettier-config": "workspace:*",
"@kit/tsconfig": "workspace:*", "@kit/tsconfig": "workspace:*",
"eslint": "^9.29.0", "eslint": "^9.30.1",
"typescript": "^5.8.3" "typescript": "^5.8.3"
}, },
"prettier": "@kit/prettier-config" "prettier": "@kit/prettier-config"

View File

@@ -10,8 +10,8 @@
}, },
"dependencies": { "dependencies": {
"@trivago/prettier-plugin-sort-imports": "5.2.2", "@trivago/prettier-plugin-sort-imports": "5.2.2",
"prettier": "^3.6.1", "prettier": "^3.6.2",
"prettier-plugin-tailwindcss": "^0.6.13" "prettier-plugin-tailwindcss": "^0.6.14"
}, },
"devDependencies": { "devDependencies": {
"@kit/tsconfig": "workspace:*", "@kit/tsconfig": "workspace:*",