@blimu/react 1.1.1 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/client/auth.service.cjs +9 -10
- package/dist/client/auth.service.cjs.map +1 -1
- package/dist/client/auth.service.d.ts.map +1 -1
- package/dist/client/auth.service.js +0 -1
- package/dist/client/auth.service.js.map +1 -1
- package/dist/client/runtime-client.cjs +1 -1
- package/dist/client/runtime-client.cjs.map +1 -1
- package/dist/client/runtime-client.d.ts +1 -1
- package/dist/client/runtime-client.d.ts.map +1 -1
- package/dist/client/runtime-client.js +1 -1
- package/dist/client/runtime-client.js.map +1 -1
- package/dist/components/index.cjs +6 -6
- package/dist/components/index.d.ts +6 -6
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +3 -3
- package/dist/components/members-list.cjs +2 -2
- package/dist/components/members-list.cjs.map +1 -1
- package/dist/components/members-list.d.ts.map +1 -1
- package/dist/components/members-list.js +2 -2
- package/dist/components/members-list.js.map +1 -1
- package/dist/components/sign-in-button.cjs +1 -1
- package/dist/components/sign-in-button.cjs.map +1 -1
- package/dist/components/sign-in-button.d.ts.map +1 -1
- package/dist/components/sign-in-button.js +1 -1
- package/dist/components/sign-in-button.js.map +1 -1
- package/dist/components/ui/avatar.cjs +1 -1
- package/dist/components/ui/avatar.cjs.map +1 -1
- package/dist/components/ui/avatar.d.ts +2 -2
- package/dist/components/ui/avatar.d.ts.map +1 -1
- package/dist/components/ui/avatar.js +1 -1
- package/dist/components/ui/avatar.js.map +1 -1
- package/dist/components/ui/badge.d.ts +2 -2
- package/dist/components/ui/badge.d.ts.map +1 -1
- package/dist/components/ui/dropdown-menu.cjs +2 -2
- package/dist/components/ui/dropdown-menu.cjs.map +1 -1
- package/dist/components/ui/dropdown-menu.d.ts +2 -2
- package/dist/components/ui/dropdown-menu.d.ts.map +1 -1
- package/dist/components/ui/dropdown-menu.js +2 -2
- package/dist/components/ui/dropdown-menu.js.map +1 -1
- package/dist/components/ui/popover.d.ts +2 -2
- package/dist/components/ui/popover.d.ts.map +1 -1
- package/dist/components/ui/separator.d.ts +1 -1
- package/dist/components/ui/separator.d.ts.map +1 -1
- package/dist/components/user-avatar.cjs +1 -1
- package/dist/components/user-avatar.cjs.map +1 -1
- package/dist/components/user-avatar.d.ts +5 -5
- package/dist/components/user-avatar.d.ts.map +1 -1
- package/dist/components/user-avatar.js +1 -1
- package/dist/components/user-avatar.js.map +1 -1
- package/dist/components/user-button/user-button.cjs +1 -1
- package/dist/components/user-button/user-button.cjs.map +1 -1
- package/dist/components/user-button/user-button.d.ts +1 -1
- package/dist/components/user-button/user-button.d.ts.map +1 -1
- package/dist/components/user-button/user-button.js +1 -1
- package/dist/components/user-button/user-button.js.map +1 -1
- package/dist/hooks/index.cjs +2 -2
- package/dist/hooks/index.d.ts +3 -3
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +1 -1
- package/dist/hooks/use-auth.cjs.map +1 -1
- package/dist/hooks/use-auth.d.ts.map +1 -1
- package/dist/hooks/use-auth.js.map +1 -1
- package/dist/hooks/use-members.cjs +3 -3
- package/dist/hooks/use-members.cjs.map +1 -1
- package/dist/hooks/use-members.d.ts +5 -5
- package/dist/hooks/use-members.d.ts.map +1 -1
- package/dist/hooks/use-members.js +3 -3
- package/dist/hooks/use-members.js.map +1 -1
- package/dist/index.cjs +6 -6
- package/dist/index.d.ts +5 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -3
- package/dist/lib/variants.d.ts +1 -1
- package/dist/node_modules/@radix-ui/react-menu/dist/index.cjs +1 -1
- package/dist/node_modules/@radix-ui/react-menu/dist/index.cjs.map +1 -1
- package/dist/node_modules/js-cookie/dist/js.cookie.cjs +2 -1
- package/dist/node_modules/js-cookie/dist/js.cookie.cjs.map +1 -1
- package/dist/node_modules/lucide-react/dist/esm/Icon.cjs +3 -2
- package/dist/node_modules/lucide-react/dist/esm/Icon.cjs.map +1 -1
- package/dist/node_modules/lucide-react/dist/esm/createLucideIcon.cjs +3 -2
- package/dist/node_modules/lucide-react/dist/esm/createLucideIcon.cjs.map +1 -1
- package/dist/node_modules/lucide-react/dist/esm/defaultAttributes.cjs +2 -1
- package/dist/node_modules/lucide-react/dist/esm/defaultAttributes.cjs.map +1 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/check.cjs +1 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/check.cjs.map +1 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/chevron-right.cjs +1 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/chevron-right.cjs.map +1 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/circle.cjs +1 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/circle.cjs.map +1 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/log-out.cjs +1 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/log-out.cjs.map +1 -1
- package/dist/node_modules/react-remove-scroll/dist/es2015/Combination.cjs +3 -2
- package/dist/node_modules/react-remove-scroll/dist/es2015/Combination.cjs.map +1 -1
- package/dist/node_modules/react-remove-scroll/dist/es2015/sidecar.cjs +2 -1
- package/dist/node_modules/react-remove-scroll/dist/es2015/sidecar.cjs.map +1 -1
- package/dist/node_modules/tailwindcss/dist/plugin.cjs +2 -1
- package/dist/node_modules/tailwindcss/dist/plugin.cjs.map +1 -1
- package/dist/providers/blimu/blimu.context.cjs.map +1 -1
- package/dist/providers/blimu/blimu.context.d.ts +4 -4
- package/dist/providers/blimu/blimu.context.d.ts.map +1 -1
- package/dist/providers/blimu/blimu.context.js.map +1 -1
- package/dist/providers/blimu/blimu.provider.cjs.map +1 -1
- package/dist/providers/blimu/blimu.provider.d.ts +1 -1
- package/dist/providers/blimu/blimu.provider.d.ts.map +1 -1
- package/dist/providers/blimu/blimu.provider.js.map +1 -1
- package/dist/providers/index.cjs +2 -2
- package/dist/providers/index.d.ts +3 -3
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/providers/index.js +1 -1
- package/dist/providers/theme/index.d.ts +2 -2
- package/dist/providers/theme/index.d.ts.map +1 -1
- package/dist/providers/theme/theme.provider.cjs.map +1 -1
- package/dist/providers/theme/theme.provider.d.ts.map +1 -1
- package/dist/providers/theme/theme.provider.js.map +1 -1
- package/dist/styles/styles.css +34 -40
- package/dist/styles/tw-styles.css +34 -40
- package/dist/tailwind.cjs +39 -39
- package/dist/tailwind.cjs.map +1 -1
- package/dist/tailwind.js +38 -38
- package/dist/tailwind.js.map +1 -1
- package/dist/types/index.cjs.map +1 -1
- package/dist/types/index.d.ts +22 -8
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js.map +1 -1
- package/package.json +29 -13
package/dist/types/index.d.ts
CHANGED
|
@@ -37,11 +37,11 @@ export interface BlimuTheme {
|
|
|
37
37
|
}
|
|
38
38
|
export interface BlimuConfig {
|
|
39
39
|
/** Redirect URI for auth flow (where to return after authentication) */
|
|
40
|
-
redirectUri?: string;
|
|
40
|
+
redirectUri?: string | undefined;
|
|
41
41
|
/** Publishable key for the environment (contains full UI domain) */
|
|
42
42
|
publishableKey: string;
|
|
43
43
|
/** Theme customization */
|
|
44
|
-
theme?: BlimuTheme;
|
|
44
|
+
theme?: BlimuTheme | undefined;
|
|
45
45
|
}
|
|
46
46
|
export interface User {
|
|
47
47
|
id: string;
|
|
@@ -106,23 +106,37 @@ export interface AuthContextValue {
|
|
|
106
106
|
logout: () => Promise<void>;
|
|
107
107
|
getToken: (options: {
|
|
108
108
|
template: 'web';
|
|
109
|
-
}) => Promise<string |
|
|
109
|
+
}) => Promise<string | undefined>;
|
|
110
110
|
getAuthState: () => AuthState;
|
|
111
111
|
}
|
|
112
|
+
/**
|
|
113
|
+
* Known class keys for component customization
|
|
114
|
+
* These are the specific sub-elements that can be styled via the `classes` prop
|
|
115
|
+
*/
|
|
116
|
+
export type ComponentClassKey = 'avatar' | 'avatarFallback' | 'userInfo' | 'userName' | 'userEmail' | 'trigger' | 'popover' | 'signOutButton' | 'manageAccountButton';
|
|
112
117
|
/**
|
|
113
118
|
* Component customization props for className overrides
|
|
119
|
+
* Allows styling specific sub-elements of components
|
|
120
|
+
*
|
|
121
|
+
* @example
|
|
122
|
+
* ```tsx
|
|
123
|
+
* <UserButton
|
|
124
|
+
* classes={{
|
|
125
|
+
* avatar: 'ring-2 ring-primary',
|
|
126
|
+
* trigger: 'hover:scale-105',
|
|
127
|
+
* }}
|
|
128
|
+
* />
|
|
129
|
+
* ```
|
|
114
130
|
*/
|
|
115
|
-
export
|
|
116
|
-
[key: string]: string | undefined;
|
|
117
|
-
}
|
|
131
|
+
export type ComponentClasses = Partial<Record<ComponentClassKey, string>>;
|
|
118
132
|
/**
|
|
119
133
|
* Common props for all Blimu components
|
|
120
134
|
*/
|
|
121
135
|
export interface BlimuComponentProps {
|
|
122
136
|
/** Custom className to apply to the root element */
|
|
123
|
-
className?: string;
|
|
137
|
+
className?: string | undefined;
|
|
124
138
|
/** Object of classNames to apply to specific sub-elements */
|
|
125
|
-
classes?: ComponentClasses;
|
|
139
|
+
classes?: ComponentClasses | undefined;
|
|
126
140
|
}
|
|
127
141
|
export {};
|
|
128
142
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC;AAE5E;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,qFAAqF;IACrF,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,+CAA+C;IAC/C,MAAM,CAAC,EAAE,iBAAiB,GAAG,MAAM,CAAC;CACrC;AAED,MAAM,WAAW,WAAW;IAC1B,wEAAwE;IACxE,WAAW,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
|
package/dist/types/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../src/types/index.ts"],"sourcesContent":["/**\n * Theme colors that can be customized\n */\nexport interface BlimuThemeColors {\n background?: string;\n foreground?: string;\n card?: string;\n cardForeground?: string;\n popover?: string;\n popoverForeground?: string;\n primary?: string;\n primaryForeground?: string;\n secondary?: string;\n secondaryForeground?: string;\n muted?: string;\n mutedForeground?: string;\n accent?: string;\n accentForeground?: string;\n destructive?: string;\n destructiveForeground?: string;\n border?: string;\n input?: string;\n ring?: string;\n}\n\n/**\n * Border radius presets\n */\nexport type BlimuRadiusPreset = 'none' | 'sm' | 'md' | 'lg' | 'xl' | 'full';\n\n/**\n * Theme configuration for Blimu components\n */\nexport interface BlimuTheme {\n /** Color overrides using CSS color values (e.g., 'oklch(0.5 0.2 250)', '#3b82f6') */\n colors?: BlimuThemeColors;\n /** Border radius preset or custom CSS value */\n radius?: BlimuRadiusPreset | string;\n}\n\nexport interface BlimuConfig {\n /** Redirect URI for auth flow (where to return after authentication) */\n redirectUri?: string;\n /** Publishable key for the environment (contains full UI domain) */\n publishableKey: string;\n /** Theme customization */\n theme?: BlimuTheme;\n}\n\nexport interface User {\n id: string;\n email: string;\n firstName?: string | null;\n lastName?: string | null;\n emailVerified: boolean;\n}\n\nexport type AuthStatus = 'idle' | 'loading' | 'authenticated' | 'unauthenticated' | 'error';\n\n/**\n * Discriminated union for auth states\n * Provides type-safe state management with clear state transitions\n */\nexport type AuthState =\n | {\n status: 'idle';\n user: null;\n error: null;\n }\n | {\n status: 'loading';\n user: null;\n error: null;\n }\n | {\n status: 'authenticated';\n user: User;\n error: null;\n }\n | {\n status: 'unauthenticated';\n user: null;\n error: null;\n }\n | {\n status: 'error';\n user: null;\n error: string;\n };\n\ntype ReadyState = Extract<AuthState, { status: 'authenticated' | 'unauthenticated' | 'error' }>;\n\n/**\n * Helper type guards for auth states\n */\nexport const AuthStateGuards = {\n isIdle: (state: AuthState): state is Extract<AuthState, { status: 'idle' }> =>\n state.status === 'idle',\n isLoading: (state: AuthState): state is Extract<AuthState, { status: 'loading' }> =>\n state.status === 'loading',\n isAuthenticated: (state: AuthState): state is Extract<AuthState, { status: 'authenticated' }> =>\n state.status === 'authenticated',\n isUnauthenticated: (\n state: AuthState,\n ): state is Extract<AuthState, { status: 'unauthenticated' }> =>\n state.status === 'unauthenticated',\n isError: (state: AuthState): state is Extract<AuthState, { status: 'error' }> =>\n state.status === 'error',\n isReady: (state: AuthState): state is ReadyState =>\n state.status === 'authenticated' || state.status === 'unauthenticated',\n} as const;\n\nexport interface AuthContextValue {\n // State (discriminated union)\n state: AuthState;\n\n // Actions\n login: (returnUrl?: string) => void; // Redirects to auth domain for authentication\n logout: () => Promise<void>;\n\n // Utilities\n getToken: (options: { template: 'web' }) => Promise<string |
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/types/index.ts"],"sourcesContent":["/**\n * Theme colors that can be customized\n */\nexport interface BlimuThemeColors {\n background?: string;\n foreground?: string;\n card?: string;\n cardForeground?: string;\n popover?: string;\n popoverForeground?: string;\n primary?: string;\n primaryForeground?: string;\n secondary?: string;\n secondaryForeground?: string;\n muted?: string;\n mutedForeground?: string;\n accent?: string;\n accentForeground?: string;\n destructive?: string;\n destructiveForeground?: string;\n border?: string;\n input?: string;\n ring?: string;\n}\n\n/**\n * Border radius presets\n */\nexport type BlimuRadiusPreset = 'none' | 'sm' | 'md' | 'lg' | 'xl' | 'full';\n\n/**\n * Theme configuration for Blimu components\n */\nexport interface BlimuTheme {\n /** Color overrides using CSS color values (e.g., 'oklch(0.5 0.2 250)', '#3b82f6') */\n colors?: BlimuThemeColors;\n /** Border radius preset or custom CSS value */\n radius?: BlimuRadiusPreset | string;\n}\n\nexport interface BlimuConfig {\n /** Redirect URI for auth flow (where to return after authentication) */\n redirectUri?: string | undefined;\n /** Publishable key for the environment (contains full UI domain) */\n publishableKey: string;\n /** Theme customization */\n theme?: BlimuTheme | undefined;\n}\n\nexport interface User {\n id: string;\n email: string;\n firstName?: string | null;\n lastName?: string | null;\n emailVerified: boolean;\n}\n\nexport type AuthStatus = 'idle' | 'loading' | 'authenticated' | 'unauthenticated' | 'error';\n\n/**\n * Discriminated union for auth states\n * Provides type-safe state management with clear state transitions\n */\nexport type AuthState =\n | {\n status: 'idle';\n user: null;\n error: null;\n }\n | {\n status: 'loading';\n user: null;\n error: null;\n }\n | {\n status: 'authenticated';\n user: User;\n error: null;\n }\n | {\n status: 'unauthenticated';\n user: null;\n error: null;\n }\n | {\n status: 'error';\n user: null;\n error: string;\n };\n\ntype ReadyState = Extract<AuthState, { status: 'authenticated' | 'unauthenticated' | 'error' }>;\n\n/**\n * Helper type guards for auth states\n */\nexport const AuthStateGuards = {\n isIdle: (state: AuthState): state is Extract<AuthState, { status: 'idle' }> =>\n state.status === 'idle',\n isLoading: (state: AuthState): state is Extract<AuthState, { status: 'loading' }> =>\n state.status === 'loading',\n isAuthenticated: (state: AuthState): state is Extract<AuthState, { status: 'authenticated' }> =>\n state.status === 'authenticated',\n isUnauthenticated: (\n state: AuthState,\n ): state is Extract<AuthState, { status: 'unauthenticated' }> =>\n state.status === 'unauthenticated',\n isError: (state: AuthState): state is Extract<AuthState, { status: 'error' }> =>\n state.status === 'error',\n isReady: (state: AuthState): state is ReadyState =>\n state.status === 'authenticated' || state.status === 'unauthenticated',\n} as const;\n\nexport interface AuthContextValue {\n // State (discriminated union)\n state: AuthState;\n\n // Actions\n login: (returnUrl?: string) => void; // Redirects to auth domain for authentication\n logout: () => Promise<void>;\n\n // Utilities\n getToken: (options: { template: 'web' }) => Promise<string | undefined>;\n getAuthState: () => AuthState;\n}\n\n/**\n * Known class keys for component customization\n * These are the specific sub-elements that can be styled via the `classes` prop\n */\nexport type ComponentClassKey =\n // UserButton component\n | 'avatar'\n | 'avatarFallback'\n | 'userInfo'\n | 'userName'\n | 'userEmail'\n | 'trigger'\n | 'popover'\n | 'signOutButton'\n | 'manageAccountButton';\n\n/**\n * Component customization props for className overrides\n * Allows styling specific sub-elements of components\n *\n * @example\n * ```tsx\n * <UserButton\n * classes={{\n * avatar: 'ring-2 ring-primary',\n * trigger: 'hover:scale-105',\n * }}\n * />\n * ```\n */\nexport type ComponentClasses = Partial<Record<ComponentClassKey, string>>;\n\n/**\n * Common props for all Blimu components\n */\nexport interface BlimuComponentProps {\n /** Custom className to apply to the root element */\n className?: string | undefined;\n /** Object of classNames to apply to specific sub-elements */\n classes?: ComponentClasses | undefined;\n}\n"],"names":[],"mappings":"AA+FO,MAAM,kBAAkB;AAAA,EAC7B,QAAQ,CAAC,UACP,MAAM,WAAW;AAAA,EACnB,WAAW,CAAC,UACV,MAAM,WAAW;AAAA,EACnB,iBAAiB,CAAC,UAChB,MAAM,WAAW;AAAA,EACnB,mBAAmB,CACjB,UAEA,MAAM,WAAW;AAAA,EACnB,SAAS,CAAC,UACR,MAAM,WAAW;AAAA,EACnB,SAAS,CAAC,UACR,MAAM,WAAW,mBAAmB,MAAM,WAAW;AACzD;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@blimu/react",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.2.0",
|
|
4
|
+
"type": "module",
|
|
4
5
|
"description": "React components and hooks for Blimu authentication and authorization",
|
|
5
6
|
"repository": {
|
|
6
7
|
"type": "git",
|
|
@@ -54,6 +55,7 @@
|
|
|
54
55
|
"./package.json": "./package.json"
|
|
55
56
|
},
|
|
56
57
|
"scripts": {
|
|
58
|
+
"d:build": "npm run build && npm run typecheck",
|
|
57
59
|
"build": "vite build && yarn typecheck && tsc --project tsconfig.build.json --emitDeclarationOnly && node build-css.js",
|
|
58
60
|
"lint": "eslint . --max-warnings 0",
|
|
59
61
|
"typecheck": "tsc --noEmit",
|
|
@@ -64,7 +66,7 @@
|
|
|
64
66
|
"test:coverage": "vitest run --coverage",
|
|
65
67
|
"storybook": "storybook dev -p 6006",
|
|
66
68
|
"build-storybook": "storybook build",
|
|
67
|
-
"prepublishOnly": "
|
|
69
|
+
"prepublishOnly": "echo 'Skipping build in prepublishOnly - packages already built'"
|
|
68
70
|
},
|
|
69
71
|
"peerDependencies": {
|
|
70
72
|
"react": "^18.0.0 || ^19.0.0",
|
|
@@ -78,7 +80,7 @@
|
|
|
78
80
|
}
|
|
79
81
|
},
|
|
80
82
|
"dependencies": {
|
|
81
|
-
"@blimu/client": "1.
|
|
83
|
+
"@blimu/client": "1.2.0",
|
|
82
84
|
"@radix-ui/react-avatar": "^1.1.11",
|
|
83
85
|
"@radix-ui/react-dropdown-menu": "^2.1.16",
|
|
84
86
|
"@radix-ui/react-popover": "^1.1.15",
|
|
@@ -88,10 +90,10 @@
|
|
|
88
90
|
"js-cookie": "^3.0.5",
|
|
89
91
|
"jwt-decode": "^4.0.0",
|
|
90
92
|
"lucide-react": "^0.562.0",
|
|
91
|
-
"tailwind-merge": "^3.4.0"
|
|
92
|
-
"zustand": "^5.0.9"
|
|
93
|
+
"tailwind-merge": "^3.4.0"
|
|
93
94
|
},
|
|
94
95
|
"devDependencies": {
|
|
96
|
+
"@eslint/js": "^9.39.2",
|
|
95
97
|
"@storybook/addon-links": "^10.1.11",
|
|
96
98
|
"@storybook/react": "^10.1.11",
|
|
97
99
|
"@storybook/react-vite": "^10.1.11",
|
|
@@ -99,25 +101,35 @@
|
|
|
99
101
|
"@tailwindcss/vite": "^4.1.18",
|
|
100
102
|
"@testing-library/dom": "^10.4.1",
|
|
101
103
|
"@testing-library/jest-dom": "^6.9.1",
|
|
102
|
-
"@testing-library/react": "^16.3.
|
|
104
|
+
"@testing-library/react": "^16.3.2",
|
|
103
105
|
"@testing-library/user-event": "^14.6.1",
|
|
104
106
|
"@types/js-cookie": "^3.0.6",
|
|
105
|
-
"@types/react": "^19.2.
|
|
107
|
+
"@types/react": "^19.2.8",
|
|
106
108
|
"@types/react-dom": "^19.2.3",
|
|
107
109
|
"@vitejs/plugin-react": "^5.1.2",
|
|
108
|
-
"@vitest/coverage-v8": "^4.0.
|
|
109
|
-
"@vitest/ui": "^4.0.
|
|
110
|
+
"@vitest/coverage-v8": "^4.0.17",
|
|
111
|
+
"@vitest/ui": "^4.0.17",
|
|
112
|
+
"eslint": "^9.39.2",
|
|
113
|
+
"eslint-config-prettier": "^10.1.8",
|
|
114
|
+
"eslint-plugin-prettier": "^5.5.5",
|
|
115
|
+
"eslint-plugin-react-hooks": "^7.0.1",
|
|
116
|
+
"eslint-plugin-react-refresh": "^0.4.26",
|
|
117
|
+
"eslint-plugin-simple-import-sort": "^12.1.1",
|
|
118
|
+
"eslint-plugin-unused-imports": "^4.3.0",
|
|
119
|
+
"globals": "^17.0.0",
|
|
110
120
|
"jsdom": "^27.4.0",
|
|
111
121
|
"msw": "^2.12.7",
|
|
112
122
|
"node-fetch": "^3.3.2",
|
|
123
|
+
"prettier": "^3.8.0",
|
|
113
124
|
"react": "^19.2.3",
|
|
114
125
|
"react-dom": "^19.2.3",
|
|
115
126
|
"storybook": "^10.1.11",
|
|
116
127
|
"tailwindcss": "^4.1.18",
|
|
117
128
|
"tw-animate-css": "^1.4.0",
|
|
118
|
-
"
|
|
119
|
-
"vite
|
|
120
|
-
"
|
|
129
|
+
"typescript-eslint": "^8.53.0",
|
|
130
|
+
"vite": "^7.3.1",
|
|
131
|
+
"vite-tsconfig-paths": "^6.0.4",
|
|
132
|
+
"vitest": "^4.0.17"
|
|
121
133
|
},
|
|
122
134
|
"packageManager": "yarn@4.12.0",
|
|
123
135
|
"volta": {
|
|
@@ -127,5 +139,9 @@
|
|
|
127
139
|
"workerDirectory": [
|
|
128
140
|
".storybook/public"
|
|
129
141
|
]
|
|
130
|
-
}
|
|
142
|
+
},
|
|
143
|
+
"engines": {
|
|
144
|
+
"node": ">=18.0.0"
|
|
145
|
+
},
|
|
146
|
+
"license": "MIT"
|
|
131
147
|
}
|