shadcn-glass-ui 2.3.0 → 2.3.1

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.
Files changed (66) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/dist/cli/index.cjs +1 -1
  3. package/dist/components/glass/index.d.ts +7 -5
  4. package/dist/components/glass/index.d.ts.map +1 -1
  5. package/dist/components/glass/specialized/flag-alert-glass.d.ts.map +1 -1
  6. package/dist/components/glass/specialized/progress-glass.d.ts.map +1 -1
  7. package/dist/components/glass/ui/avatar-glass.d.ts.map +1 -1
  8. package/dist/components/glass/ui/checkbox-glass.d.ts +21 -46
  9. package/dist/components/glass/ui/checkbox-glass.d.ts.map +1 -1
  10. package/dist/components/glass/ui/circular-progress-glass.d.ts.map +1 -1
  11. package/dist/components/glass/ui/dropdown-menu-glass.d.ts +11 -5
  12. package/dist/components/glass/ui/dropdown-menu-glass.d.ts.map +1 -1
  13. package/dist/components/glass/ui/glass-card.d.ts.map +1 -1
  14. package/dist/components/glass/ui/index.d.ts +7 -1
  15. package/dist/components/glass/ui/index.d.ts.map +1 -1
  16. package/dist/components/glass/ui/notification-glass.d.ts.map +1 -1
  17. package/dist/components/glass/ui/popover-glass.d.ts +6 -3
  18. package/dist/components/glass/ui/popover-glass.d.ts.map +1 -1
  19. package/dist/components/glass/ui/skeleton-glass.d.ts.map +1 -1
  20. package/dist/components/glass/ui/slider-glass.d.ts.map +1 -1
  21. package/dist/components/glass/ui/stepper-glass.d.ts.map +1 -1
  22. package/dist/components/glass/ui/tabs-glass.d.ts +93 -142
  23. package/dist/components/glass/ui/tabs-glass.d.ts.map +1 -1
  24. package/dist/components/glass/ui/toggle-glass.d.ts.map +1 -1
  25. package/dist/components.cjs +4 -4
  26. package/dist/components.mjs +1 -1
  27. package/dist/hooks.cjs +2 -2
  28. package/dist/index.cjs +12 -5
  29. package/dist/index.cjs.map +1 -1
  30. package/dist/index.mjs +8 -1
  31. package/dist/index.mjs.map +1 -1
  32. package/dist/lib/variants/skeleton-glass-variants.d.ts +1 -1
  33. package/dist/r/avatar-glass.json +1 -1
  34. package/dist/r/checkbox-glass.json +4 -5
  35. package/dist/r/circular-progress-glass.json +1 -1
  36. package/dist/r/dropdown-glass.json +1 -1
  37. package/dist/r/dropdown-menu-glass.json +1 -1
  38. package/dist/r/flag-alert-glass.json +1 -1
  39. package/dist/r/glass-card.json +3 -2
  40. package/dist/r/notification-glass.json +1 -1
  41. package/dist/r/popover-glass.json +1 -1
  42. package/dist/r/progress-glass.json +1 -1
  43. package/dist/r/registry.json +2 -2
  44. package/dist/r/skeleton-glass.json +1 -1
  45. package/dist/r/slider-glass.json +1 -1
  46. package/dist/r/stepper-glass.json +1 -1
  47. package/dist/r/tabs-glass.json +5 -4
  48. package/dist/r/toggle-glass.json +1 -1
  49. package/dist/shadcn-glass-ui.css +1 -1
  50. package/dist/{theme-context-DmTETrFi.cjs → theme-context-7NcW0KZL.cjs} +2 -2
  51. package/dist/{theme-context-DmTETrFi.cjs.map → theme-context-7NcW0KZL.cjs.map} +1 -1
  52. package/dist/themes.cjs +1 -1
  53. package/dist/{trust-score-card-glass-EfMB5l5J.mjs → trust-score-card-glass-BGqBcdyJ.mjs} +120 -177
  54. package/dist/trust-score-card-glass-BGqBcdyJ.mjs.map +1 -0
  55. package/dist/{trust-score-card-glass-3VBi9soW.cjs → trust-score-card-glass-DtgFygh5.cjs} +124 -179
  56. package/dist/trust-score-card-glass-DtgFygh5.cjs.map +1 -0
  57. package/dist/{use-focus-CswOSq71.cjs → use-focus-BFBcpBh1.cjs} +2 -2
  58. package/dist/{use-focus-CswOSq71.cjs.map → use-focus-BFBcpBh1.cjs.map} +1 -1
  59. package/dist/{use-wallpaper-tint-WtRWtupA.cjs → use-wallpaper-tint-DTTStm5f.cjs} +2 -2
  60. package/dist/{use-wallpaper-tint-WtRWtupA.cjs.map → use-wallpaper-tint-DTTStm5f.cjs.map} +1 -1
  61. package/dist/{utils-DX6rdBol.cjs → utils-CiuCe_Aq.cjs} +2 -2
  62. package/dist/{utils-DX6rdBol.cjs.map → utils-CiuCe_Aq.cjs.map} +1 -1
  63. package/dist/utils.cjs +1 -1
  64. package/package.json +5 -1
  65. package/dist/trust-score-card-glass-3VBi9soW.cjs.map +0 -1
  66. package/dist/trust-score-card-glass-EfMB5l5J.mjs.map +0 -1
@@ -1,4 +1,4 @@
1
- const require_trust_score_card_glass = require("./trust-score-card-glass-3VBi9soW.cjs");
1
+ const require_trust_score_card_glass = require("./trust-score-card-glass-DtgFygh5.cjs");
2
2
  let react = require("react");
3
3
  let lucide_react = require("lucide-react");
4
4
  let react_jsx_runtime = require("react/jsx-runtime");
@@ -99,4 +99,4 @@ Object.defineProperty(exports, "useTheme", {
99
99
  }
100
100
  });
101
101
 
102
- //# sourceMappingURL=theme-context-DmTETrFi.cjs.map
102
+ //# sourceMappingURL=theme-context-7NcW0KZL.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"theme-context-DmTETrFi.cjs","names":["THEMES: readonly Theme[]","THEME_CONFIG: Record<Theme, ThemeConfig>","DEFAULT_THEME: Theme","value: ThemeContextValue"],"sources":["../src/lib/theme-context.tsx"],"sourcesContent":["/**\n * Theme System for Glass UI Components\n *\n * Multi-theme support with CSS variables for glass, light, and aurora themes.\n * Provides ThemeProvider context and useTheme hook for theme management.\n *\n * @module theme-context\n *\n * @example\n * ```tsx\n * // Wrap your app with ThemeProvider\n * import { ThemeProvider } from 'shadcn-glass-ui';\n *\n * function App() {\n * return (\n * <ThemeProvider defaultTheme=\"glass\">\n * <YourApp />\n * </ThemeProvider>\n * );\n * }\n * ```\n *\n * @example\n * ```tsx\n * // Use the theme hook in components\n * import { useTheme } from 'shadcn-glass-ui';\n *\n * function ThemeSwitcher() {\n * const { theme, setTheme, cycleTheme } = useTheme();\n *\n * return (\n * <div>\n * <p>Current theme: {theme}</p>\n * <button onClick={cycleTheme}>Cycle Theme</button>\n * <button onClick={() => setTheme('glass')}>Set Glass</button>\n * </div>\n * );\n * }\n * ```\n *\n * @see {@link docs/THEME_CREATION_GUIDE.md} for creating custom themes\n * @see {@link docs/TOKEN_ARCHITECTURE.md} for CSS variable system\n */\n\nimport { createContext, useContext, useState, useEffect, useCallback, type ReactNode } from 'react';\nimport { Sun, Moon, Palette, type LucideIcon } from 'lucide-react';\n\n// ========================================\n// TYPES\n// ========================================\n\n/**\n * Available theme options for Glass UI components.\n * - `light` - Light theme with subtle glass effects\n * - `aurora` - Gradient theme with aurora/northern lights effects\n * - `glass` - Dark glassmorphism theme (default)\n */\nexport type Theme = 'light' | 'aurora' | 'glass';\n\n/** @deprecated Use Theme instead */\nexport type ThemeName = Theme;\n\n/**\n * Configuration for a single theme including display label and icon.\n */\nexport interface ThemeConfig {\n /** Human-readable theme name for UI display */\n readonly label: string;\n /** Lucide icon component for theme toggle buttons */\n readonly icon: LucideIcon;\n}\n\n/**\n * Context value returned by useTheme hook.\n */\nexport interface ThemeContextValue {\n /** Current active theme */\n readonly theme: Theme;\n /** Set a specific theme */\n readonly setTheme: (theme: Theme) => void;\n /** Cycle to next theme in order: light → aurora → glass → light */\n readonly cycleTheme: () => void;\n}\n\n// ========================================\n// CONSTANTS\n// ========================================\n\n/** Array of all available themes in cycle order */\nexport const THEMES: readonly Theme[] = ['light', 'aurora', 'glass'] as const;\n\n/**\n * Theme configuration map with labels and icons.\n * Used by ThemeToggleGlass and other theme switching components.\n */\n// eslint-disable-next-line react-refresh/only-export-components\nexport const THEME_CONFIG: Record<Theme, ThemeConfig> = {\n light: { label: 'Light', icon: Sun },\n aurora: { label: 'Aurora', icon: Moon },\n glass: { label: 'Glass', icon: Palette },\n} as const;\n\nconst STORAGE_KEY = 'glass-ui-theme';\nconst DEFAULT_THEME: Theme = 'glass';\n\n// ========================================\n// CONTEXT\n// ========================================\n\nconst ThemeContext = createContext<ThemeContextValue | null>(null);\n\n// ========================================\n// PROVIDER\n// ========================================\n\ninterface ThemeProviderProps {\n /** Child components to wrap with theme context */\n readonly children: ReactNode;\n /** Initial theme to use (default: \"glass\") */\n readonly defaultTheme?: Theme;\n /** localStorage key for persistence (default: \"glass-ui-theme\") */\n readonly storageKey?: string;\n}\n\n/**\n * Theme provider component that manages theme state and persistence.\n *\n * Wraps your application to provide theme context to all child components.\n * Theme is automatically persisted to localStorage and applied to document.\n *\n * @param props - Provider configuration\n * @param props.children - Child components to wrap\n * @param props.defaultTheme - Initial theme (default: \"glass\")\n * @param props.storageKey - localStorage key (default: \"glass-ui-theme\")\n *\n * @example\n * ```tsx\n * <ThemeProvider defaultTheme=\"glass\">\n * <App />\n * </ThemeProvider>\n * ```\n */\nexport function ThemeProvider({\n children,\n defaultTheme = DEFAULT_THEME,\n storageKey = STORAGE_KEY,\n}: ThemeProviderProps) {\n const [theme, setThemeState] = useState<Theme>(() => {\n if (typeof window === 'undefined') {\n return defaultTheme;\n }\n\n const stored = localStorage.getItem(storageKey);\n if (stored && THEMES.includes(stored as Theme)) {\n return stored as Theme;\n }\n\n return defaultTheme;\n });\n\n // Apply theme to document\n useEffect(() => {\n const root = document.documentElement;\n root.setAttribute('data-theme', theme);\n localStorage.setItem(storageKey, theme);\n }, [theme, storageKey]);\n\n const setTheme = useCallback((newTheme: Theme) => {\n if (THEMES.includes(newTheme)) {\n setThemeState(newTheme);\n }\n }, []);\n\n const cycleTheme = useCallback(() => {\n setThemeState((current) => {\n const currentIndex = THEMES.indexOf(current);\n const nextIndex = (currentIndex + 1) % THEMES.length;\n return THEMES[nextIndex];\n });\n }, []);\n\n const value: ThemeContextValue = {\n theme,\n setTheme,\n cycleTheme,\n };\n\n return <ThemeContext.Provider value={value}>{children}</ThemeContext.Provider>;\n}\n\n// ========================================\n// HOOK\n// ========================================\n\n/**\n * Hook to access theme context values.\n *\n * Must be used within a ThemeProvider. Returns the current theme,\n * a setter function, and a cycle function.\n *\n * @returns Theme context value with theme, setTheme, and cycleTheme\n * @throws Error if used outside of ThemeProvider\n *\n * @example\n * ```tsx\n * function MyComponent() {\n * const { theme, setTheme, cycleTheme } = useTheme();\n *\n * return (\n * <button onClick={cycleTheme}>\n * Current: {theme}\n * </button>\n * );\n * }\n * ```\n */\n// eslint-disable-next-line react-refresh/only-export-components\nexport function useTheme(): ThemeContextValue {\n const context = useContext(ThemeContext);\n\n if (!context) {\n throw new Error('useTheme must be used within a ThemeProvider');\n }\n\n return context;\n}\n\n// ========================================\n// UTILITIES\n// ========================================\n\n/**\n * Get the next theme in the cycle order.\n *\n * @param current - Current theme\n * @returns Next theme in cycle (light → aurora → glass → light)\n *\n * @example\n * ```tsx\n * const next = getNextTheme('glass'); // returns 'light'\n * ```\n */\n// eslint-disable-next-line react-refresh/only-export-components\nexport function getNextTheme(current: Theme): Theme {\n const currentIndex = THEMES.indexOf(current);\n const nextIndex = (currentIndex + 1) % THEMES.length;\n return THEMES[nextIndex];\n}\n\n/**\n * Get configuration for a specific theme.\n *\n * @param theme - Theme to get configuration for\n * @returns Theme configuration with label and icon\n *\n * @example\n * ```tsx\n * const config = getThemeConfig('glass');\n * // { label: 'Glass', icon: Palette }\n * ```\n */\n// eslint-disable-next-line react-refresh/only-export-components\nexport function getThemeConfig(theme: Theme): ThemeConfig {\n return THEME_CONFIG[theme];\n}\n"],"mappings":";;;;AAyFA,MAAaA,SAA2B;CAAC;CAAS;CAAU;CAAQ;AAOpE,MAAaC,eAA2C;CACtD,OAAO;EAAE,OAAO;EAAS,MAAM,aAAA;EAAK;CACpC,QAAQ;EAAE,OAAO;EAAU,MAAM,aAAA;EAAM;CACvC,OAAO;EAAE,OAAO;EAAS,MAAM,aAAA;EAAS;CACzC;AAED,IAAM,cAAc;AACpB,IAAMC,gBAAuB;AAM7B,IAAM,gBAAA,GAAA,MAAA,eAAuD,KAAK;AAiClE,SAAgB,cAAc,EAC5B,UACA,eAAe,eACf,aAAa,eACQ;CACrB,MAAM,CAAC,OAAO,kBAAA,GAAA,MAAA,gBAAuC;AACnD,MAAI,OAAO,WAAW,YACpB,QAAO;EAGT,MAAM,SAAS,aAAa,QAAQ,WAAW;AAC/C,MAAI,UAAU,OAAO,SAAS,OAAgB,CAC5C,QAAO;AAGT,SAAO;GACP;AAGF,EAAA,GAAA,MAAA,iBAAgB;AACD,WAAS,gBACjB,aAAa,cAAc,MAAM;AACtC,eAAa,QAAQ,YAAY,MAAM;IACtC,CAAC,OAAO,WAAW,CAAC;CAgBvB,MAAMC,QAA2B;EAC/B;EACA,WAAA,GAAA,MAAA,cAhB4B,aAAoB;AAChD,OAAI,OAAO,SAAS,SAAS,CAC3B,eAAc,SAAS;KAExB,EAAE,CAAC;EAaJ,aAAA,GAAA,MAAA,mBAXmC;AACnC,kBAAe,YAAY;AAGzB,WAAO,QAFc,OAAO,QAAQ,QAAQ,GACV,KAAK,OAAO;KAE9C;KACD,EAAE,CAAC;EAML;AAED,QAAO,iBAAA,GAAA,kBAAA,KAAC,aAAa,UAAA;EAAgB;EAAQ;GAAiC;;AA8BhF,SAAgB,WAA8B;CAC5C,MAAM,WAAA,GAAA,MAAA,YAAqB,aAAa;AAExC,KAAI,CAAC,QACH,OAAM,IAAI,MAAM,+CAA+C;AAGjE,QAAO;;AAmBT,SAAgB,aAAa,SAAuB;AAGlD,QAAO,QAFc,OAAO,QAAQ,QAAQ,GACV,KAAK,OAAO;;AAiBhD,SAAgB,eAAe,OAA2B;AACxD,QAAO,aAAa"}
1
+ {"version":3,"file":"theme-context-7NcW0KZL.cjs","names":["THEMES: readonly Theme[]","THEME_CONFIG: Record<Theme, ThemeConfig>","DEFAULT_THEME: Theme","value: ThemeContextValue"],"sources":["../src/lib/theme-context.tsx"],"sourcesContent":["/**\n * Theme System for Glass UI Components\n *\n * Multi-theme support with CSS variables for glass, light, and aurora themes.\n * Provides ThemeProvider context and useTheme hook for theme management.\n *\n * @module theme-context\n *\n * @example\n * ```tsx\n * // Wrap your app with ThemeProvider\n * import { ThemeProvider } from 'shadcn-glass-ui';\n *\n * function App() {\n * return (\n * <ThemeProvider defaultTheme=\"glass\">\n * <YourApp />\n * </ThemeProvider>\n * );\n * }\n * ```\n *\n * @example\n * ```tsx\n * // Use the theme hook in components\n * import { useTheme } from 'shadcn-glass-ui';\n *\n * function ThemeSwitcher() {\n * const { theme, setTheme, cycleTheme } = useTheme();\n *\n * return (\n * <div>\n * <p>Current theme: {theme}</p>\n * <button onClick={cycleTheme}>Cycle Theme</button>\n * <button onClick={() => setTheme('glass')}>Set Glass</button>\n * </div>\n * );\n * }\n * ```\n *\n * @see {@link docs/THEME_CREATION_GUIDE.md} for creating custom themes\n * @see {@link docs/TOKEN_ARCHITECTURE.md} for CSS variable system\n */\n\nimport { createContext, useContext, useState, useEffect, useCallback, type ReactNode } from 'react';\nimport { Sun, Moon, Palette, type LucideIcon } from 'lucide-react';\n\n// ========================================\n// TYPES\n// ========================================\n\n/**\n * Available theme options for Glass UI components.\n * - `light` - Light theme with subtle glass effects\n * - `aurora` - Gradient theme with aurora/northern lights effects\n * - `glass` - Dark glassmorphism theme (default)\n */\nexport type Theme = 'light' | 'aurora' | 'glass';\n\n/** @deprecated Use Theme instead */\nexport type ThemeName = Theme;\n\n/**\n * Configuration for a single theme including display label and icon.\n */\nexport interface ThemeConfig {\n /** Human-readable theme name for UI display */\n readonly label: string;\n /** Lucide icon component for theme toggle buttons */\n readonly icon: LucideIcon;\n}\n\n/**\n * Context value returned by useTheme hook.\n */\nexport interface ThemeContextValue {\n /** Current active theme */\n readonly theme: Theme;\n /** Set a specific theme */\n readonly setTheme: (theme: Theme) => void;\n /** Cycle to next theme in order: light → aurora → glass → light */\n readonly cycleTheme: () => void;\n}\n\n// ========================================\n// CONSTANTS\n// ========================================\n\n/** Array of all available themes in cycle order */\nexport const THEMES: readonly Theme[] = ['light', 'aurora', 'glass'] as const;\n\n/**\n * Theme configuration map with labels and icons.\n * Used by ThemeToggleGlass and other theme switching components.\n */\n// eslint-disable-next-line react-refresh/only-export-components\nexport const THEME_CONFIG: Record<Theme, ThemeConfig> = {\n light: { label: 'Light', icon: Sun },\n aurora: { label: 'Aurora', icon: Moon },\n glass: { label: 'Glass', icon: Palette },\n} as const;\n\nconst STORAGE_KEY = 'glass-ui-theme';\nconst DEFAULT_THEME: Theme = 'glass';\n\n// ========================================\n// CONTEXT\n// ========================================\n\nconst ThemeContext = createContext<ThemeContextValue | null>(null);\n\n// ========================================\n// PROVIDER\n// ========================================\n\ninterface ThemeProviderProps {\n /** Child components to wrap with theme context */\n readonly children: ReactNode;\n /** Initial theme to use (default: \"glass\") */\n readonly defaultTheme?: Theme;\n /** localStorage key for persistence (default: \"glass-ui-theme\") */\n readonly storageKey?: string;\n}\n\n/**\n * Theme provider component that manages theme state and persistence.\n *\n * Wraps your application to provide theme context to all child components.\n * Theme is automatically persisted to localStorage and applied to document.\n *\n * @param props - Provider configuration\n * @param props.children - Child components to wrap\n * @param props.defaultTheme - Initial theme (default: \"glass\")\n * @param props.storageKey - localStorage key (default: \"glass-ui-theme\")\n *\n * @example\n * ```tsx\n * <ThemeProvider defaultTheme=\"glass\">\n * <App />\n * </ThemeProvider>\n * ```\n */\nexport function ThemeProvider({\n children,\n defaultTheme = DEFAULT_THEME,\n storageKey = STORAGE_KEY,\n}: ThemeProviderProps) {\n const [theme, setThemeState] = useState<Theme>(() => {\n if (typeof window === 'undefined') {\n return defaultTheme;\n }\n\n const stored = localStorage.getItem(storageKey);\n if (stored && THEMES.includes(stored as Theme)) {\n return stored as Theme;\n }\n\n return defaultTheme;\n });\n\n // Apply theme to document\n useEffect(() => {\n const root = document.documentElement;\n root.setAttribute('data-theme', theme);\n localStorage.setItem(storageKey, theme);\n }, [theme, storageKey]);\n\n const setTheme = useCallback((newTheme: Theme) => {\n if (THEMES.includes(newTheme)) {\n setThemeState(newTheme);\n }\n }, []);\n\n const cycleTheme = useCallback(() => {\n setThemeState((current) => {\n const currentIndex = THEMES.indexOf(current);\n const nextIndex = (currentIndex + 1) % THEMES.length;\n return THEMES[nextIndex];\n });\n }, []);\n\n const value: ThemeContextValue = {\n theme,\n setTheme,\n cycleTheme,\n };\n\n return <ThemeContext.Provider value={value}>{children}</ThemeContext.Provider>;\n}\n\n// ========================================\n// HOOK\n// ========================================\n\n/**\n * Hook to access theme context values.\n *\n * Must be used within a ThemeProvider. Returns the current theme,\n * a setter function, and a cycle function.\n *\n * @returns Theme context value with theme, setTheme, and cycleTheme\n * @throws Error if used outside of ThemeProvider\n *\n * @example\n * ```tsx\n * function MyComponent() {\n * const { theme, setTheme, cycleTheme } = useTheme();\n *\n * return (\n * <button onClick={cycleTheme}>\n * Current: {theme}\n * </button>\n * );\n * }\n * ```\n */\n// eslint-disable-next-line react-refresh/only-export-components\nexport function useTheme(): ThemeContextValue {\n const context = useContext(ThemeContext);\n\n if (!context) {\n throw new Error('useTheme must be used within a ThemeProvider');\n }\n\n return context;\n}\n\n// ========================================\n// UTILITIES\n// ========================================\n\n/**\n * Get the next theme in the cycle order.\n *\n * @param current - Current theme\n * @returns Next theme in cycle (light → aurora → glass → light)\n *\n * @example\n * ```tsx\n * const next = getNextTheme('glass'); // returns 'light'\n * ```\n */\n// eslint-disable-next-line react-refresh/only-export-components\nexport function getNextTheme(current: Theme): Theme {\n const currentIndex = THEMES.indexOf(current);\n const nextIndex = (currentIndex + 1) % THEMES.length;\n return THEMES[nextIndex];\n}\n\n/**\n * Get configuration for a specific theme.\n *\n * @param theme - Theme to get configuration for\n * @returns Theme configuration with label and icon\n *\n * @example\n * ```tsx\n * const config = getThemeConfig('glass');\n * // { label: 'Glass', icon: Palette }\n * ```\n */\n// eslint-disable-next-line react-refresh/only-export-components\nexport function getThemeConfig(theme: Theme): ThemeConfig {\n return THEME_CONFIG[theme];\n}\n"],"mappings":";;;;AAyFA,MAAaA,SAA2B;CAAC;CAAS;CAAU;CAAQ;AAOpE,MAAaC,eAA2C;CACtD,OAAO;EAAE,OAAO;EAAS,MAAM,aAAA;EAAK;CACpC,QAAQ;EAAE,OAAO;EAAU,MAAM,aAAA;EAAM;CACvC,OAAO;EAAE,OAAO;EAAS,MAAM,aAAA;EAAS;CACzC;AAED,IAAM,cAAc;AACpB,IAAMC,gBAAuB;AAM7B,IAAM,gBAAA,GAAA,MAAA,eAAuD,KAAK;AAiClE,SAAgB,cAAc,EAC5B,UACA,eAAe,eACf,aAAa,eACQ;CACrB,MAAM,CAAC,OAAO,kBAAA,GAAA,MAAA,gBAAuC;AACnD,MAAI,OAAO,WAAW,YACpB,QAAO;EAGT,MAAM,SAAS,aAAa,QAAQ,WAAW;AAC/C,MAAI,UAAU,OAAO,SAAS,OAAgB,CAC5C,QAAO;AAGT,SAAO;GACP;AAGF,EAAA,GAAA,MAAA,iBAAgB;AACD,WAAS,gBACjB,aAAa,cAAc,MAAM;AACtC,eAAa,QAAQ,YAAY,MAAM;IACtC,CAAC,OAAO,WAAW,CAAC;CAgBvB,MAAMC,QAA2B;EAC/B;EACA,WAAA,GAAA,MAAA,cAhB4B,aAAoB;AAChD,OAAI,OAAO,SAAS,SAAS,CAC3B,eAAc,SAAS;KAExB,EAAE,CAAC;EAaJ,aAAA,GAAA,MAAA,mBAXmC;AACnC,kBAAe,YAAY;AAGzB,WAAO,QAFc,OAAO,QAAQ,QAAQ,GACV,KAAK,OAAO;KAE9C;KACD,EAAE,CAAC;EAML;AAED,QAAO,iBAAA,GAAA,kBAAA,KAAC,aAAa,UAAA;EAAgB;EAAQ;GAAiC;;AA8BhF,SAAgB,WAA8B;CAC5C,MAAM,WAAA,GAAA,MAAA,YAAqB,aAAa;AAExC,KAAI,CAAC,QACH,OAAM,IAAI,MAAM,+CAA+C;AAGjE,QAAO;;AAmBT,SAAgB,aAAa,SAAuB;AAGlD,QAAO,QAFc,OAAO,QAAQ,QAAQ,GACV,KAAK,OAAO;;AAiBhD,SAAgB,eAAe,OAA2B;AACxD,QAAO,aAAa"}
package/dist/themes.cjs CHANGED
@@ -1,4 +1,4 @@
1
- const require_theme_context = require("./theme-context-DmTETrFi.cjs");
1
+ const require_theme_context = require("./theme-context-7NcW0KZL.cjs");
2
2
  exports.THEMES = require_theme_context.THEMES;
3
3
  exports.THEME_CONFIG = require_theme_context.THEME_CONFIG;
4
4
  exports.ThemeProvider = require_theme_context.ThemeProvider;
@@ -2,17 +2,19 @@ import { t as cn } from "./utils-B792GPM_.mjs";
2
2
  import { n as useHover, t as useFocus } from "./use-focus-C5kPAKr_.mjs";
3
3
  import { o as useTheme } from "./theme-context-DLS2uAgJ.mjs";
4
4
  import * as React from "react";
5
- import { createContext, forwardRef, useCallback, useContext, useEffect, useId, useMemo, useRef, useState } from "react";
5
+ import { forwardRef, useCallback, useEffect, useId, useMemo, useRef, useState } from "react";
6
6
  import { AlertCircle, AlertTriangle, ArrowDown, ArrowUp, Calendar, Check, CheckCircle, CheckIcon, ChevronDown, ChevronRight, ChevronRightIcon, ChevronUp, ChevronsUpDownIcon, CircleIcon, Clock, Code, ExternalLink, FolderGit2, GitPullRequest, Github, Info, Minus, Moon, Palette, RefreshCw, Search, SearchIcon, Sparkles, Star, Sun, Target, TrendingDown, TrendingUp, User, Users, X, Zap } from "lucide-react";
7
7
  import { cva } from "class-variance-authority";
8
8
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
9
9
  import * as AvatarPrimitive from "@radix-ui/react-avatar";
10
10
  import { Slot } from "@radix-ui/react-slot";
11
+ import * as CheckboxPrimitive from "@radix-ui/react-checkbox";
11
12
  import * as PopoverPrimitive from "@radix-ui/react-popover";
12
13
  import { Command } from "cmdk";
13
14
  import * as DialogPrimitive from "@radix-ui/react-dialog";
14
15
  import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu";
15
16
  import * as SliderPrimitive from "@radix-ui/react-slider";
17
+ import * as TabsPrimitive from "@radix-ui/react-tabs";
16
18
  import * as TooltipPrimitive from "@radix-ui/react-tooltip";
17
19
  import { Bar, BarChart, Cell, ResponsiveContainer, Tooltip } from "recharts";
18
20
  const alertVariants = cva("flex items-start gap-2 md:gap-3 p-3 md:p-4 rounded-xl transition-all duration-300 backdrop-blur-sm min-w-96 max-w-2xl", {
@@ -261,6 +263,7 @@ var AvatarGlassRoot = React.forwardRef(({ className, size = "md", status, glowin
261
263
  glowing
262
264
  },
263
265
  children: /* @__PURE__ */ jsxs("div", {
266
+ "data-slot": "avatar",
264
267
  className: cn("relative inline-flex", className),
265
268
  onMouseEnter: hoverProps.onMouseEnter,
266
269
  onMouseLeave: hoverProps.onMouseLeave,
@@ -271,6 +274,7 @@ var AvatarGlassRoot = React.forwardRef(({ className, size = "md", status, glowin
271
274
  ...props,
272
275
  children
273
276
  }), status && /* @__PURE__ */ jsx("span", {
277
+ "data-slot": "avatar-status",
274
278
  className: cn(statusSizes({ size })),
275
279
  style: {
276
280
  background: getStatusVars$1(status).bg,
@@ -286,6 +290,7 @@ AvatarGlassRoot.displayName = "AvatarGlass";
286
290
  var AvatarGlassImage = React.forwardRef(({ className, ...props }, ref) => {
287
291
  return /* @__PURE__ */ jsx(AvatarPrimitive.Image, {
288
292
  ref,
293
+ "data-slot": "avatar-image",
289
294
  className: cn("aspect-square h-full w-full object-cover", className),
290
295
  ...props
291
296
  });
@@ -294,6 +299,7 @@ AvatarGlassImage.displayName = "AvatarGlassImage";
294
299
  var AvatarGlassFallback = React.forwardRef(({ className, ...props }, ref) => {
295
300
  return /* @__PURE__ */ jsx(AvatarPrimitive.Fallback, {
296
301
  ref,
302
+ "data-slot": "avatar-fallback",
297
303
  className: cn("flex h-full w-full items-center justify-center font-semibold uppercase", className),
298
304
  ...props
299
305
  });
@@ -528,78 +534,47 @@ const ButtonGlass = forwardRef(({ asChild = false, className, variant = "default
528
534
  });
529
535
  });
530
536
  ButtonGlass.displayName = "ButtonGlass";
531
- const CheckboxGlass = forwardRef(({ className, checked: controlledChecked, defaultChecked, onCheckedChange, onChange, label, disabled, ...props }, ref) => {
532
- const { isHovered, hoverProps } = useHover();
533
- const { isFocusVisible, focusProps } = useFocus({ focusVisible: true });
534
- const [uncontrolledChecked, setUncontrolledChecked] = React.useState(defaultChecked ?? false);
535
- const isControlled = controlledChecked !== void 0;
536
- const checked = isControlled ? controlledChecked : uncontrolledChecked;
537
- const isChecked = checked === true;
538
- const isIndeterminate = checked === "indeterminate";
539
- const showIndicator = isChecked || isIndeterminate;
540
- const handleChange = (newChecked) => {
541
- if (disabled) return;
542
- if (!isControlled) setUncontrolledChecked(newChecked);
537
+ const CheckboxGlass = React.forwardRef(({ className, label, onChange, onCheckedChange, disabled, checked, ...props }, ref) => {
538
+ const handleCheckedChange = React.useCallback((newChecked) => {
543
539
  onCheckedChange?.(newChecked);
544
540
  if (onChange && typeof newChecked === "boolean") onChange(newChecked);
545
- };
546
- const toggleChecked = () => {
547
- if (isIndeterminate) handleChange(true);
548
- else handleChange(!isChecked);
549
- };
541
+ }, [onCheckedChange, onChange]);
542
+ const isIndeterminate = checked === "indeterminate";
543
+ const showIndicator = checked === true || isIndeterminate;
550
544
  const checkboxStyles = {
551
545
  background: showIndicator ? "var(--checkbox-checked-bg)" : "var(--checkbox-bg)",
552
- border: `2px solid ${showIndicator ? "var(--checkbox-checked-bg)" : "var(--checkbox-border)"}`,
553
- boxShadow: isFocusVisible && !disabled ? "var(--focus-glow)" : isHovered && !disabled ? "var(--checkbox-glow)" : "none"
546
+ borderColor: showIndicator ? "var(--checkbox-checked-bg)" : "var(--checkbox-border)"
554
547
  };
555
- const ariaChecked = isIndeterminate ? "mixed" : isChecked;
556
548
  return /* @__PURE__ */ jsxs("label", {
557
549
  className: cn("inline-flex items-center gap-2 md:gap-2.5", disabled ? "opacity-50 cursor-not-allowed" : "cursor-pointer", className),
558
- onMouseEnter: hoverProps.onMouseEnter,
559
- onMouseLeave: hoverProps.onMouseLeave,
560
- children: [
561
- /* @__PURE__ */ jsx("input", {
550
+ children: [/* @__PURE__ */ jsx("span", {
551
+ className: "inline-flex items-center justify-center min-w-11 min-h-11",
552
+ children: /* @__PURE__ */ jsx(CheckboxPrimitive.Root, {
562
553
  ref,
563
- type: "checkbox",
564
- checked: isChecked,
565
- onChange: (e) => handleChange(e.target.checked),
554
+ "data-slot": "checkbox",
555
+ checked,
556
+ onCheckedChange: handleCheckedChange,
566
557
  disabled,
567
- className: "sr-only",
568
- ...props
569
- }),
570
- /* @__PURE__ */ jsx("span", {
571
- className: "inline-flex items-center justify-center min-w-11 min-h-11",
572
- children: /* @__PURE__ */ jsxs("div", {
573
- onClick: toggleChecked,
574
- onFocus: focusProps.onFocus,
575
- onBlur: focusProps.onBlur,
576
- className: "relative w-6 h-6 md:w-5 md:h-5 rounded-md flex items-center justify-center transition-all duration-300",
577
- style: checkboxStyles,
578
- role: "checkbox",
579
- "aria-checked": ariaChecked,
580
- "aria-label": label || "Checkbox",
581
- tabIndex: disabled ? -1 : 0,
582
- onKeyDown: (e) => {
583
- if (!disabled && (e.key === "Enter" || e.key === " ")) {
584
- e.preventDefault();
585
- toggleChecked();
586
- }
587
- },
588
- children: [isChecked && /* @__PURE__ */ jsx(Check, {
558
+ className: cn("peer relative w-6 h-6 md:w-5 md:h-5 shrink-0", "rounded-md border-2 transition-all duration-300", "flex items-center justify-center", "focus-visible:outline-none focus-visible:shadow-(--focus-glow)", "hover:shadow-(--checkbox-glow)", "disabled:cursor-not-allowed disabled:opacity-50 disabled:hover:shadow-none"),
559
+ style: checkboxStyles,
560
+ ...props,
561
+ children: /* @__PURE__ */ jsx(CheckboxPrimitive.Indicator, {
562
+ "data-slot": "checkbox-indicator",
563
+ className: "flex items-center justify-center text-current",
564
+ children: isIndeterminate ? /* @__PURE__ */ jsx(Minus, {
589
565
  className: "w-3.5 h-3.5 md:w-3 md:h-3",
590
566
  style: { color: "var(--text-inverse)" }
591
- }), isIndeterminate && /* @__PURE__ */ jsx(Minus, {
567
+ }) : /* @__PURE__ */ jsx(Check, {
592
568
  className: "w-3.5 h-3.5 md:w-3 md:h-3",
593
569
  style: { color: "var(--text-inverse)" }
594
- })]
570
+ })
595
571
  })
596
- }),
597
- label && /* @__PURE__ */ jsx("span", {
598
- className: "text-xs md:text-sm",
599
- style: { color: "var(--text-secondary)" },
600
- children: label
601
572
  })
602
- ]
573
+ }), label && /* @__PURE__ */ jsx("span", {
574
+ className: "text-xs md:text-sm",
575
+ style: { color: "var(--text-secondary)" },
576
+ children: label
577
+ })]
603
578
  });
604
579
  });
605
580
  CheckboxGlass.displayName = "CheckboxGlass";
@@ -679,6 +654,7 @@ const CircularProgressGlass = forwardRef(({ className, size = "md", value = 0, v
679
654
  const glowId = `circular-glow-${uniqueId}`;
680
655
  return /* @__PURE__ */ jsxs("div", {
681
656
  ref,
657
+ "data-slot": "circular-progress",
682
658
  className: cn(circularProgressVariants({ size }), className),
683
659
  ...props,
684
660
  children: [
@@ -952,14 +928,33 @@ function ComboBoxGlassInner({ options, value, onValueChange, placeholder = "Sele
952
928
  }
953
929
  const ComboBoxGlass = forwardRef(ComboBoxGlassInner);
954
930
  ComboBoxGlassInner.displayName = "ComboBoxGlass";
955
- var DropdownMenuGlass = DropdownMenuPrimitive.Root;
956
- var DropdownMenuGlassTrigger = DropdownMenuPrimitive.Trigger;
957
- var DropdownMenuGlassGroup = DropdownMenuPrimitive.Group;
931
+ var DropdownMenuGlassRoot = (props) => /* @__PURE__ */ jsx(DropdownMenuPrimitive.Root, { ...props });
932
+ DropdownMenuGlassRoot.displayName = "DropdownMenuGlass";
933
+ var DropdownMenuGlass = DropdownMenuGlassRoot;
934
+ var DropdownMenuGlassTrigger = React.forwardRef((props, ref) => /* @__PURE__ */ jsx(DropdownMenuPrimitive.Trigger, {
935
+ "data-slot": "dropdown-menu-trigger",
936
+ ref,
937
+ ...props
938
+ }));
939
+ DropdownMenuGlassTrigger.displayName = "DropdownMenuGlassTrigger";
940
+ var DropdownMenuGlassGroup = React.forwardRef((props, ref) => /* @__PURE__ */ jsx(DropdownMenuPrimitive.Group, {
941
+ "data-slot": "dropdown-menu-group",
942
+ ref,
943
+ ...props
944
+ }));
945
+ DropdownMenuGlassGroup.displayName = "DropdownMenuGlassGroup";
958
946
  var DropdownMenuGlassPortal = DropdownMenuPrimitive.Portal;
959
- var DropdownMenuGlassSub = DropdownMenuPrimitive.Sub;
960
- var DropdownMenuGlassRadioGroup = DropdownMenuPrimitive.RadioGroup;
947
+ var DropdownMenuGlassSub = (props) => /* @__PURE__ */ jsx(DropdownMenuPrimitive.Sub, { ...props });
948
+ DropdownMenuGlassSub.displayName = "DropdownMenuGlassSub";
949
+ var DropdownMenuGlassRadioGroup = React.forwardRef((props, ref) => /* @__PURE__ */ jsx(DropdownMenuPrimitive.RadioGroup, {
950
+ "data-slot": "dropdown-menu-radio-group",
951
+ ref,
952
+ ...props
953
+ }));
954
+ DropdownMenuGlassRadioGroup.displayName = "DropdownMenuGlassRadioGroup";
961
955
  var DropdownMenuGlassSubTrigger = React.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ jsxs(DropdownMenuPrimitive.SubTrigger, {
962
956
  ref,
957
+ "data-slot": "dropdown-menu-sub-trigger",
963
958
  className: cn(getDropdownItemClasses(), "data-[state=open]:bg-[var(--dropdown-item-hover)]", inset && "pl-8", className),
964
959
  ...props,
965
960
  children: [children, /* @__PURE__ */ jsx(ChevronRightIcon, { className: "ml-auto h-4 w-4" })]
@@ -967,6 +962,7 @@ var DropdownMenuGlassSubTrigger = React.forwardRef(({ className, inset, children
967
962
  DropdownMenuGlassSubTrigger.displayName = "DropdownMenuGlassSubTrigger";
968
963
  var DropdownMenuGlassSubContent = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(DropdownMenuPrimitive.SubContent, {
969
964
  ref,
965
+ "data-slot": "dropdown-menu-sub-content",
970
966
  className: cn(dropdownContentClasses, "p-1.5", className),
971
967
  style: getDropdownContentStyles(),
972
968
  ...props
@@ -974,6 +970,7 @@ var DropdownMenuGlassSubContent = React.forwardRef(({ className, ...props }, ref
974
970
  DropdownMenuGlassSubContent.displayName = "DropdownMenuGlassSubContent";
975
971
  var DropdownMenuGlassContent = React.forwardRef(({ className, sideOffset = 8, ...props }, ref) => /* @__PURE__ */ jsx(DropdownMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx(DropdownMenuPrimitive.Content, {
976
972
  ref,
973
+ "data-slot": "dropdown-menu-content",
977
974
  sideOffset,
978
975
  className: cn(dropdownContentClasses, "p-1.5", className),
979
976
  style: getDropdownContentStyles(),
@@ -982,12 +979,14 @@ var DropdownMenuGlassContent = React.forwardRef(({ className, sideOffset = 8, ..
982
979
  DropdownMenuGlassContent.displayName = "DropdownMenuGlassContent";
983
980
  var DropdownMenuGlassItem = React.forwardRef(({ className, inset, variant = "default", ...props }, ref) => /* @__PURE__ */ jsx(DropdownMenuPrimitive.Item, {
984
981
  ref,
982
+ "data-slot": "dropdown-menu-item",
985
983
  className: cn(getDropdownItemClasses({ danger: variant === "destructive" }), inset && "pl-8", className),
986
984
  ...props
987
985
  }));
988
986
  DropdownMenuGlassItem.displayName = "DropdownMenuGlassItem";
989
987
  var DropdownMenuGlassCheckboxItem = React.forwardRef(({ className, children, checked, ...props }, ref) => /* @__PURE__ */ jsxs(DropdownMenuPrimitive.CheckboxItem, {
990
988
  ref,
989
+ "data-slot": "dropdown-menu-checkbox-item",
991
990
  className: cn(getDropdownItemClasses(), "pl-8 pr-2", className),
992
991
  checked,
993
992
  ...props,
@@ -999,6 +998,7 @@ var DropdownMenuGlassCheckboxItem = React.forwardRef(({ className, children, che
999
998
  DropdownMenuGlassCheckboxItem.displayName = "DropdownMenuGlassCheckboxItem";
1000
999
  var DropdownMenuGlassRadioItem = React.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(DropdownMenuPrimitive.RadioItem, {
1001
1000
  ref,
1001
+ "data-slot": "dropdown-menu-radio-item",
1002
1002
  className: cn(getDropdownItemClasses(), "pl-8 pr-2", className),
1003
1003
  ...props,
1004
1004
  children: [/* @__PURE__ */ jsx("span", {
@@ -1009,18 +1009,21 @@ var DropdownMenuGlassRadioItem = React.forwardRef(({ className, children, ...pro
1009
1009
  DropdownMenuGlassRadioItem.displayName = "DropdownMenuGlassRadioItem";
1010
1010
  var DropdownMenuGlassLabel = React.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx(DropdownMenuPrimitive.Label, {
1011
1011
  ref,
1012
+ "data-slot": "dropdown-menu-label",
1012
1013
  className: cn(dropdownLabelClasses, inset && "pl-8", className),
1013
1014
  ...props
1014
1015
  }));
1015
1016
  DropdownMenuGlassLabel.displayName = "DropdownMenuGlassLabel";
1016
1017
  var DropdownMenuGlassSeparator = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(DropdownMenuPrimitive.Separator, {
1017
1018
  ref,
1019
+ "data-slot": "dropdown-menu-separator",
1018
1020
  className: cn(dropdownSeparatorClasses, "-mx-1 my-1", className),
1019
1021
  ...props
1020
1022
  }));
1021
1023
  DropdownMenuGlassSeparator.displayName = "DropdownMenuGlassSeparator";
1022
1024
  var DropdownMenuGlassShortcut = ({ className, ...props }) => {
1023
1025
  return /* @__PURE__ */ jsx("span", {
1026
+ "data-slot": "dropdown-menu-shortcut",
1024
1027
  className: cn("ml-auto text-xs tracking-widest text-(--text-muted)", className),
1025
1028
  ...props
1026
1029
  });
@@ -1029,6 +1032,7 @@ DropdownMenuGlassShortcut.displayName = "DropdownMenuGlassShortcut";
1029
1032
  const DropdownGlass = React.forwardRef(({ trigger, items, align = "left", className }, ref) => {
1030
1033
  return /* @__PURE__ */ jsx("div", {
1031
1034
  ref,
1035
+ "data-slot": "dropdown",
1032
1036
  className: cn("relative inline-block", className),
1033
1037
  children: /* @__PURE__ */ jsxs(DropdownMenuGlass, { children: [/* @__PURE__ */ jsx(DropdownMenuGlassTrigger, {
1034
1038
  asChild: true,
@@ -1104,6 +1108,7 @@ const GlassCard = forwardRef(({ asChild = false, children, className, intensity
1104
1108
  };
1105
1109
  return /* @__PURE__ */ jsx(asChild ? Slot : "div", {
1106
1110
  ref,
1111
+ "data-slot": "card",
1107
1112
  className: cn(cardIntensity({
1108
1113
  intensity,
1109
1114
  hover,
@@ -1386,6 +1391,7 @@ const NotificationGlass = forwardRef(({ variant: variantProp, type: typeProp, ti
1386
1391
  };
1387
1392
  return /* @__PURE__ */ jsxs("div", {
1388
1393
  ref,
1394
+ "data-slot": "notification",
1389
1395
  className: cn(notificationVariants({ type: effectiveType }), className),
1390
1396
  style: containerStyles,
1391
1397
  role: "alert",
@@ -1426,9 +1432,20 @@ const NotificationGlass = forwardRef(({ variant: variantProp, type: typeProp, ti
1426
1432
  });
1427
1433
  });
1428
1434
  NotificationGlass.displayName = "NotificationGlass";
1429
- var PopoverGlassRoot = PopoverPrimitive.Root;
1430
- var PopoverGlassTrigger = PopoverPrimitive.Trigger;
1431
- var PopoverGlassAnchor = PopoverPrimitive.Anchor;
1435
+ var PopoverGlassRoot = (props) => /* @__PURE__ */ jsx(PopoverPrimitive.Root, { ...props });
1436
+ PopoverGlassRoot.displayName = "PopoverGlass";
1437
+ var PopoverGlassTrigger = React.forwardRef((props, ref) => /* @__PURE__ */ jsx(PopoverPrimitive.Trigger, {
1438
+ "data-slot": "popover-trigger",
1439
+ ref,
1440
+ ...props
1441
+ }));
1442
+ PopoverGlassTrigger.displayName = "PopoverGlassTrigger";
1443
+ var PopoverGlassAnchor = React.forwardRef((props, ref) => /* @__PURE__ */ jsx(PopoverPrimitive.Anchor, {
1444
+ "data-slot": "popover-anchor",
1445
+ ref,
1446
+ ...props
1447
+ }));
1448
+ PopoverGlassAnchor.displayName = "PopoverGlassAnchor";
1432
1449
  var PopoverGlassContent = React.forwardRef(({ className, align = "center", sideOffset = 8, showArrow = true, children, ...props }, ref) => {
1433
1450
  const popoverStyles = {
1434
1451
  background: "var(--popover-bg)",
@@ -1440,6 +1457,7 @@ var PopoverGlassContent = React.forwardRef(({ className, align = "center", sideO
1440
1457
  const arrowStyles = { fill: "var(--popover-arrow-bg)" };
1441
1458
  return /* @__PURE__ */ jsx(PopoverPrimitive.Portal, { children: /* @__PURE__ */ jsxs(PopoverPrimitive.Content, {
1442
1459
  ref,
1460
+ "data-slot": "popover-content",
1443
1461
  align,
1444
1462
  sideOffset,
1445
1463
  className: cn("z-50003 rounded-2xl", "animate-in fade-in-0 zoom-in-95 duration-200", "data-[side=bottom]:slide-in-from-top-2", "data-[side=top]:slide-in-from-bottom-2", "data-[side=right]:slide-in-from-left-2", "data-[side=left]:slide-in-from-right-2", "outline-none", className),
@@ -1495,6 +1513,7 @@ const SkeletonGlass = forwardRef(({ className, variant = "text", width, height,
1495
1513
  };
1496
1514
  return /* @__PURE__ */ jsx("div", {
1497
1515
  ref,
1516
+ "data-slot": "skeleton",
1498
1517
  className: cn(skeletonVariants({ variant }), className),
1499
1518
  style: skeletonStyles,
1500
1519
  "aria-hidden": "true",
@@ -1533,6 +1552,7 @@ const SliderGlass = forwardRef(({ className, value, defaultValue, onValueChange,
1533
1552
  className: cn("w-full", className),
1534
1553
  children: [customLabel, /* @__PURE__ */ jsxs(SliderPrimitive.Root, {
1535
1554
  ref,
1555
+ "data-slot": "slider",
1536
1556
  value,
1537
1557
  defaultValue,
1538
1558
  onValueChange,
@@ -1545,13 +1565,16 @@ const SliderGlass = forwardRef(({ className, value, defaultValue, onValueChange,
1545
1565
  className: cn("relative flex touch-none select-none", orientation === "horizontal" ? "w-full h-8 md:h-6 items-center" : "flex-col h-full w-8 md:w-6 justify-center", disabled && "opacity-50 cursor-not-allowed", "group"),
1546
1566
  ...props,
1547
1567
  children: [/* @__PURE__ */ jsx(SliderPrimitive.Track, {
1568
+ "data-slot": "slider-track",
1548
1569
  className: cn("relative grow rounded-full", orientation === "horizontal" ? "h-2.5 md:h-2 w-full" : "w-2.5 md:w-2 h-full"),
1549
1570
  style: trackStyles,
1550
1571
  children: /* @__PURE__ */ jsx(SliderPrimitive.Range, {
1572
+ "data-slot": "slider-range",
1551
1573
  className: cn("absolute rounded-full transition-shadow duration-150", orientation === "horizontal" ? "h-full" : "w-full", "group-hover:shadow-(--slider-fill-glow)", "group-active:shadow-(--slider-fill-glow)"),
1552
1574
  style: rangeStyles
1553
1575
  })
1554
1576
  }), currentValue.map((_, index) => /* @__PURE__ */ jsx(SliderPrimitive.Thumb, {
1577
+ "data-slot": "slider-thumb",
1555
1578
  className: cn("block rounded-full shadow-md transition-all duration-150", "w-6 h-6 md:w-5 md:h-5", "hover:scale-105", "focus-visible:outline-none focus-visible:shadow-(--focus-glow)", "active:scale-110", disabled && "pointer-events-none"),
1556
1579
  style: thumbStyles,
1557
1580
  "aria-label": label ? currentValue.length > 1 ? `${label} thumb ${index + 1}` : label : `Slider thumb ${index + 1}`
@@ -1560,118 +1583,35 @@ const SliderGlass = forwardRef(({ className, value, defaultValue, onValueChange,
1560
1583
  });
1561
1584
  });
1562
1585
  SliderGlass.displayName = "SliderGlass";
1563
- var TabsContext = createContext(null);
1564
- var useTabsContext = () => {
1565
- const context = useContext(TabsContext);
1566
- if (!context) throw new Error("Tabs compound components must be used within TabsGlass.Root");
1567
- return context;
1568
- };
1569
- var TabsRoot = ({ value: controlledValue, defaultValue, onValueChange, children, className }) => {
1570
- const [uncontrolledValue, setUncontrolledValue] = useState(defaultValue ?? "");
1571
- const isControlled = controlledValue !== void 0;
1572
- const value = isControlled ? controlledValue : uncontrolledValue;
1573
- const handleValueChange = (newValue) => {
1574
- if (!isControlled) setUncontrolledValue(newValue);
1575
- onValueChange?.(newValue);
1576
- };
1577
- return /* @__PURE__ */ jsx(TabsContext.Provider, {
1578
- value: {
1579
- value,
1580
- onValueChange: handleValueChange
1581
- },
1582
- children: /* @__PURE__ */ jsx("div", {
1583
- className: cn("tabs-glass-root", className),
1584
- children
1585
- })
1586
- });
1587
- };
1588
- var TabsList = forwardRef(({ children, className, ...props }, ref) => {
1589
- return /* @__PURE__ */ jsx("div", {
1590
- ref,
1591
- className: cn("inline-flex gap-0.5 md:gap-1 p-0.5 md:p-1 rounded-xl", className),
1592
- style: {
1593
- background: "var(--tab-container-bg)",
1594
- border: "1px solid var(--tab-container-border)"
1595
- },
1596
- role: "tablist",
1597
- ...props,
1598
- children
1586
+ function TabsRoot({ className, ...props }) {
1587
+ return /* @__PURE__ */ jsx(TabsPrimitive.Root, {
1588
+ "data-slot": "tabs",
1589
+ className: cn("tabs-glass-root", className),
1590
+ ...props
1599
1591
  });
1600
- });
1592
+ }
1593
+ var TabsList = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(TabsPrimitive.List, {
1594
+ ref,
1595
+ "data-slot": "tabs-list",
1596
+ className: cn("inline-flex gap-0.5 md:gap-1 p-0.5 md:p-1 rounded-xl", "bg-(--tab-container-bg) border border-(--tab-container-border)", className),
1597
+ ...props
1598
+ }));
1601
1599
  TabsList.displayName = "TabsList";
1602
- var TabsTrigger = forwardRef(({ value, children, className, disabled }, ref) => {
1603
- const { value: activeValue, onValueChange } = useTabsContext();
1604
- const { isFocusVisible, focusProps } = useFocus({ focusVisible: true });
1605
- const isActive = activeValue === value;
1606
- const tabStyles = {
1607
- background: isActive ? "var(--tab-active-bg)" : "var(--tab-bg)",
1608
- color: isActive ? "var(--tab-active-text)" : "var(--text-secondary)",
1609
- boxShadow: isFocusVisible && !disabled ? "var(--focus-glow)" : "none"
1610
- };
1611
- const handleKeyDown = (e) => {
1612
- if (disabled) return;
1613
- const tablist = e.currentTarget.closest("[role=\"tablist\"]");
1614
- if (!tablist) return;
1615
- const tabs = Array.from(tablist.querySelectorAll("[role=\"tab\"]:not([disabled])"));
1616
- const currentIndex = tabs.indexOf(e.currentTarget);
1617
- let nextIndex = currentIndex;
1618
- switch (e.key) {
1619
- case "ArrowRight":
1620
- e.preventDefault();
1621
- nextIndex = currentIndex + 1 >= tabs.length ? 0 : currentIndex + 1;
1622
- break;
1623
- case "ArrowLeft":
1624
- e.preventDefault();
1625
- nextIndex = currentIndex - 1 < 0 ? tabs.length - 1 : currentIndex - 1;
1626
- break;
1627
- case "Home":
1628
- e.preventDefault();
1629
- nextIndex = 0;
1630
- break;
1631
- case "End":
1632
- e.preventDefault();
1633
- nextIndex = tabs.length - 1;
1634
- break;
1635
- default: return;
1636
- }
1637
- const nextTab = tabs[nextIndex];
1638
- if (nextTab) {
1639
- nextTab.focus();
1640
- const nextValue = nextTab.getAttribute("data-value");
1641
- if (nextValue && onValueChange) onValueChange(nextValue);
1642
- }
1643
- };
1644
- return /* @__PURE__ */ jsxs("button", {
1645
- ref,
1646
- type: "button",
1647
- role: "tab",
1648
- "aria-selected": isActive,
1649
- disabled,
1650
- "data-value": value,
1651
- className: cn("relative px-2.5 py-1.5 md:px-4 md:py-2 rounded-lg text-xs md:text-sm font-medium transition-[background-color,color,opacity] duration-300", disabled && "opacity-50 cursor-not-allowed", className),
1652
- style: tabStyles,
1653
- onClick: () => !disabled && onValueChange?.(value),
1654
- onKeyDown: handleKeyDown,
1655
- onFocus: focusProps.onFocus,
1656
- onBlur: focusProps.onBlur,
1657
- children: [children, isActive && /* @__PURE__ */ jsx("div", {
1658
- className: "absolute bottom-0 left-1/2 -translate-x-1/2 w-6 md:w-8 h-0.5 rounded-full",
1659
- style: { background: "var(--tab-indicator)" }
1660
- })]
1661
- });
1662
- });
1600
+ var TabsTrigger = React.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsx(TabsPrimitive.Trigger, {
1601
+ ref,
1602
+ "data-slot": "tabs-trigger",
1603
+ className: cn("relative px-2.5 py-1.5 md:px-4 md:py-2 rounded-lg", "text-xs md:text-sm font-medium", "transition-[background-color,color,opacity,box-shadow] duration-300", "bg-(--tab-bg) text-(--text-secondary)", "data-[state=active]:bg-(--tab-active-bg) data-[state=active]:text-(--tab-active-text)", "focus-visible:outline-none focus-visible:shadow-(--focus-glow)", "disabled:opacity-50 disabled:cursor-not-allowed", "after:absolute after:bottom-0 after:left-1/2 after:-translate-x-1/2", "after:w-6 md:after:w-8 after:h-0.5 after:rounded-full", "after:bg-(--tab-indicator)", "after:opacity-0 data-[state=active]:after:opacity-100", "after:transition-opacity after:duration-300", className),
1604
+ ...props,
1605
+ children
1606
+ }));
1663
1607
  TabsTrigger.displayName = "TabsTrigger";
1664
- var TabsContent = ({ value, children, className }) => {
1665
- const { value: activeValue } = useTabsContext();
1666
- const isActive = activeValue === value;
1667
- if (!isActive) return null;
1668
- return /* @__PURE__ */ jsx("div", {
1669
- role: "tabpanel",
1670
- "aria-hidden": !isActive,
1671
- className: cn("animate-in fade-in-0 duration-200", className),
1672
- children
1673
- });
1674
- };
1608
+ var TabsContent = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(TabsPrimitive.Content, {
1609
+ ref,
1610
+ "data-slot": "tabs-content",
1611
+ className: cn("animate-in fade-in-0 duration-200 outline-none", "focus-visible:outline-none", className),
1612
+ ...props
1613
+ }));
1614
+ TabsContent.displayName = "TabsContent";
1675
1615
  const TabsGlass = {
1676
1616
  Root: TabsRoot,
1677
1617
  List: TabsList,
@@ -1741,6 +1681,7 @@ const ToggleGlass = forwardRef(({ className, size = "default", variant = "defaul
1741
1681
  className: "inline-flex items-center justify-center min-h-11",
1742
1682
  children: /* @__PURE__ */ jsx("button", {
1743
1683
  ref,
1684
+ "data-slot": "toggle",
1744
1685
  type: "button",
1745
1686
  role: "switch",
1746
1687
  "aria-pressed": isPressed,
@@ -2344,7 +2285,7 @@ const FlagAlertGlass = forwardRef(({ type = "warning", title, description, class
2344
2285
  };
2345
2286
  return /* @__PURE__ */ jsxs("div", {
2346
2287
  ref,
2347
- className: cn("p-2.5 md:p-3 rounded-xl border transition-all duration-300", className),
2288
+ className: cn("p-2.5 md:p-3 rounded-xl border transition-all duration-300 max-w-md", className),
2348
2289
  style: alertStyles,
2349
2290
  onMouseEnter: () => setIsHovered(true),
2350
2291
  onMouseLeave: () => setIsHovered(false),
@@ -2534,6 +2475,7 @@ const ProgressGlass = forwardRef(({ className, size = "md", value = 0, gradient
2534
2475
  };
2535
2476
  return /* @__PURE__ */ jsxs("div", {
2536
2477
  ref,
2478
+ "data-slot": "progress",
2537
2479
  className: cn("w-full", className),
2538
2480
  ...props,
2539
2481
  children: [showLabel && /* @__PURE__ */ jsxs("div", {
@@ -2549,6 +2491,7 @@ const ProgressGlass = forwardRef(({ className, size = "md", value = 0, gradient
2549
2491
  className: cn(progressSizes({ size })),
2550
2492
  style: trackStyles,
2551
2493
  children: /* @__PURE__ */ jsx("div", {
2494
+ "data-slot": "progress-indicator",
2552
2495
  className: "h-full rounded-full transition-all duration-700 ease-out",
2553
2496
  style: fillStyles,
2554
2497
  role: "progressbar",
@@ -4223,4 +4166,4 @@ const TrustScoreCardGlass = forwardRef(({ score = 72, metrics = [], className, .
4223
4166
  TrustScoreCardGlass.displayName = "TrustScoreCardGlass";
4224
4167
  export { TabsTrigger as $, FlagAlertGlass as A, DropdownMenuGlassTrigger as At, IconButtonGlass as B, AvatarGlass as Bt, sparklineContainerVariants as C, DropdownMenuGlassRadioGroup as Ct, progressSizes as D, DropdownMenuGlassSub as Dt, ProgressGlass as E, DropdownMenuGlassShortcut as Et, SortDropdownGlass as F, CheckboxGlass as Ft, TooltipGlassSimple as G, statusSizes as Gt, TooltipGlass as H, AvatarGlassImage as Ht, SearchBoxGlass as I, ButtonGlass as It, toggleSizes as J, AlertGlassTitle as Jt, TooltipGlassTrigger as K, AlertGlass as Kt, InsightCardGlass as L, buttonGlassVariants as Lt, BaseProgressGlass as M, inputVariants as Mt, ThemeToggleGlass as N, CircularProgressGlass as Nt, ProfileAvatarGlass as O, DropdownMenuGlassSubContent as Ot, StatItemGlass as P, Checkbox as Pt, TabsList as Q, alertVariants as Qt, insightCardVariants as R, BadgeGlass as Rt, sparklineBarVariants as S, DropdownMenuGlassPortal as St, RainbowProgressGlass as T, DropdownMenuGlassSeparator as Tt, TooltipGlassContent as U, AvatarGlassSimple as Ut, ExpandableHeaderGlass as V, AvatarGlassFallback as Vt, TooltipGlassProvider as W, avatarSizes as Wt, TabsContent as X, FormFieldWrapper as Xt, Tabs as Y, InteractiveCard as Yt, TabsGlass as Z, TouchTarget as Zt, ContributionMetricsGlass as _, DropdownMenuGlassCheckboxItem as _t, HeaderBrandingGlass as a, PopoverGlassContent as at, AICardGlass as b, DropdownMenuGlassItem as bt, YearCardGlass as c, NotificationGlass as ct, TrustScoreDisplayGlass as d, modalSizes as dt, SliderGlass as et, RepositoryMetadataGlass as f, InputGlass as ft, MetricCardGlass as g, DropdownMenuGlass as gt, MetricsGridGlass as h, DropdownGlass as ht, HeaderNavGlass as i, PopoverGlassAnchor as it, StatusIndicatorGlass as j, ComboBoxGlass as jt, LanguageBarGlass as k, DropdownMenuGlassSubTrigger as kt, UserStatsLineGlass as l, notificationVariants as lt, RepositoryCardGlass as m, cardIntensity as mt, ProjectsListGlass as n, skeletonVariants as nt, FlagsSectionGlass as o, PopoverGlassLegacy as ot, RepositoryHeaderGlass as p, GlassCard as pt, ToggleGlass as q, AlertGlassDescription as qt, ProfileHeaderGlass as r, PopoverGlass as rt, CareerStatsGlass as s, PopoverGlassTrigger as st, TrustScoreCardGlass as t, SkeletonGlass as tt, UserInfoGlass as u, ModalGlass as ut, CircularMetricGlass as v, DropdownMenuGlassContent as vt, SegmentedControlGlass as w, DropdownMenuGlassRadioItem as wt, SparklineGlass as x, DropdownMenuGlassLabel as xt, CareerStatsHeaderGlass as y, DropdownMenuGlassGroup as yt, insightVariantConfig as z, badgeVariants as zt };
4225
4168
 
4226
- //# sourceMappingURL=trust-score-card-glass-EfMB5l5J.mjs.map
4169
+ //# sourceMappingURL=trust-score-card-glass-BGqBcdyJ.mjs.map