@brycks/core-front 0.1.0 → 0.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/dist/components/data/List/List.d.ts +44 -0
- package/dist/components/data/List/List.d.ts.map +1 -0
- package/dist/components/data/List/index.d.ts +3 -0
- package/dist/components/data/List/index.d.ts.map +1 -0
- package/dist/components/data/Table/Table.d.ts +74 -0
- package/dist/components/data/Table/Table.d.ts.map +1 -0
- package/dist/components/data/Table/index.d.ts +3 -0
- package/dist/components/data/Table/index.d.ts.map +1 -0
- package/dist/components/data/index.d.ts +6 -0
- package/dist/components/data/index.d.ts.map +1 -0
- package/dist/components/feedback/Drawer/Drawer.d.ts +29 -0
- package/dist/components/feedback/Drawer/Drawer.d.ts.map +1 -0
- package/dist/components/feedback/Drawer/index.d.ts +3 -0
- package/dist/components/feedback/Drawer/index.d.ts.map +1 -0
- package/dist/components/feedback/Popover/Popover.d.ts +35 -0
- package/dist/components/feedback/Popover/Popover.d.ts.map +1 -0
- package/dist/components/feedback/Popover/index.d.ts +3 -0
- package/dist/components/feedback/Popover/index.d.ts.map +1 -0
- package/dist/components/feedback/Progress/Progress.d.ts +30 -0
- package/dist/components/feedback/Progress/Progress.d.ts.map +1 -0
- package/dist/components/feedback/Progress/index.d.ts +3 -0
- package/dist/components/feedback/Progress/index.d.ts.map +1 -0
- package/dist/components/feedback/Toast/Toast.d.ts +47 -0
- package/dist/components/feedback/Toast/Toast.d.ts.map +1 -0
- package/dist/components/feedback/Toast/index.d.ts +3 -0
- package/dist/components/feedback/Toast/index.d.ts.map +1 -0
- package/dist/components/feedback/index.d.ts +4 -0
- package/dist/components/feedback/index.d.ts.map +1 -1
- package/dist/components/form/DateInput/DateInput.d.ts +28 -0
- package/dist/components/form/DateInput/DateInput.d.ts.map +1 -0
- package/dist/components/form/DateInput/index.d.ts +3 -0
- package/dist/components/form/DateInput/index.d.ts.map +1 -0
- package/dist/components/form/FieldError/FieldError.d.ts +18 -0
- package/dist/components/form/FieldError/FieldError.d.ts.map +1 -0
- package/dist/components/form/FieldError/index.d.ts +3 -0
- package/dist/components/form/FieldError/index.d.ts.map +1 -0
- package/dist/components/form/FileInput/FileInput.d.ts +33 -0
- package/dist/components/form/FileInput/FileInput.d.ts.map +1 -0
- package/dist/components/form/FileInput/index.d.ts +3 -0
- package/dist/components/form/FileInput/index.d.ts.map +1 -0
- package/dist/components/form/FormField/FormField.d.ts +36 -0
- package/dist/components/form/FormField/FormField.d.ts.map +1 -0
- package/dist/components/form/FormField/index.d.ts +3 -0
- package/dist/components/form/FormField/index.d.ts.map +1 -0
- package/dist/components/form/Radio/Radio.d.ts +46 -0
- package/dist/components/form/Radio/Radio.d.ts.map +1 -0
- package/dist/components/form/Radio/index.d.ts +3 -0
- package/dist/components/form/Radio/index.d.ts.map +1 -0
- package/dist/components/form/Slider/Slider.d.ts +32 -0
- package/dist/components/form/Slider/Slider.d.ts.map +1 -0
- package/dist/components/form/Slider/index.d.ts +3 -0
- package/dist/components/form/Slider/index.d.ts.map +1 -0
- package/dist/components/form/index.d.ts +6 -0
- package/dist/components/form/index.d.ts.map +1 -1
- package/dist/components/layout/Card/Card.d.ts +40 -0
- package/dist/components/layout/Card/Card.d.ts.map +1 -0
- package/dist/components/layout/Card/index.d.ts +3 -0
- package/dist/components/layout/Card/index.d.ts.map +1 -0
- package/dist/components/layout/Flex/Flex.d.ts +63 -0
- package/dist/components/layout/Flex/Flex.d.ts.map +1 -0
- package/dist/components/layout/Flex/index.d.ts +3 -0
- package/dist/components/layout/Flex/index.d.ts.map +1 -0
- package/dist/components/layout/Section/Section.d.ts +22 -0
- package/dist/components/layout/Section/Section.d.ts.map +1 -0
- package/dist/components/layout/Section/index.d.ts +3 -0
- package/dist/components/layout/Section/index.d.ts.map +1 -0
- package/dist/components/layout/Spacer/Spacer.d.ts +18 -0
- package/dist/components/layout/Spacer/Spacer.d.ts.map +1 -0
- package/dist/components/layout/Spacer/index.d.ts +3 -0
- package/dist/components/layout/Spacer/index.d.ts.map +1 -0
- package/dist/components/layout/index.d.ts +4 -0
- package/dist/components/layout/index.d.ts.map +1 -1
- package/dist/components/navigation/Accordion/Accordion.d.ts +41 -0
- package/dist/components/navigation/Accordion/Accordion.d.ts.map +1 -0
- package/dist/components/navigation/Accordion/index.d.ts +3 -0
- package/dist/components/navigation/Accordion/index.d.ts.map +1 -0
- package/dist/components/navigation/Breadcrumb/Breadcrumb.d.ts +31 -0
- package/dist/components/navigation/Breadcrumb/Breadcrumb.d.ts.map +1 -0
- package/dist/components/navigation/Breadcrumb/index.d.ts +3 -0
- package/dist/components/navigation/Breadcrumb/index.d.ts.map +1 -0
- package/dist/components/navigation/Dropdown/Dropdown.d.ts +47 -0
- package/dist/components/navigation/Dropdown/Dropdown.d.ts.map +1 -0
- package/dist/components/navigation/Dropdown/index.d.ts +3 -0
- package/dist/components/navigation/Dropdown/index.d.ts.map +1 -0
- package/dist/components/navigation/Menu/Menu.d.ts +45 -0
- package/dist/components/navigation/Menu/Menu.d.ts.map +1 -0
- package/dist/components/navigation/Menu/index.d.ts +3 -0
- package/dist/components/navigation/Menu/index.d.ts.map +1 -0
- package/dist/components/navigation/Pagination/Pagination.d.ts +29 -0
- package/dist/components/navigation/Pagination/Pagination.d.ts.map +1 -0
- package/dist/components/navigation/Pagination/index.d.ts +3 -0
- package/dist/components/navigation/Pagination/index.d.ts.map +1 -0
- package/dist/components/navigation/Tabs/Tabs.d.ts +52 -0
- package/dist/components/navigation/Tabs/Tabs.d.ts.map +1 -0
- package/dist/components/navigation/Tabs/index.d.ts +3 -0
- package/dist/components/navigation/Tabs/index.d.ts.map +1 -0
- package/dist/components/navigation/index.d.ts +10 -0
- package/dist/components/navigation/index.d.ts.map +1 -0
- package/dist/components/primitives/Icon/Icon.d.ts +84 -0
- package/dist/components/primitives/Icon/Icon.d.ts.map +1 -0
- package/dist/components/primitives/Icon/index.d.ts +3 -0
- package/dist/components/primitives/Icon/index.d.ts.map +1 -0
- package/dist/components/primitives/index.d.ts +1 -0
- package/dist/components/primitives/index.d.ts.map +1 -1
- package/dist/components/utility/FocusTrap/FocusTrap.d.ts +19 -0
- package/dist/components/utility/FocusTrap/FocusTrap.d.ts.map +1 -0
- package/dist/components/utility/FocusTrap/index.d.ts +3 -0
- package/dist/components/utility/FocusTrap/index.d.ts.map +1 -0
- package/dist/components/utility/Overlay/Overlay.d.ts +25 -0
- package/dist/components/utility/Overlay/Overlay.d.ts.map +1 -0
- package/dist/components/utility/Overlay/index.d.ts +3 -0
- package/dist/components/utility/Overlay/index.d.ts.map +1 -0
- package/dist/components/utility/Portal/Portal.d.ts +14 -0
- package/dist/components/utility/Portal/Portal.d.ts.map +1 -0
- package/dist/components/utility/Portal/index.d.ts +3 -0
- package/dist/components/utility/Portal/index.d.ts.map +1 -0
- package/dist/components/utility/index.d.ts +3 -0
- package/dist/components/utility/index.d.ts.map +1 -1
- package/dist/{cssVariables-D_naqeoR.cjs → cssVariables-BguyVeCi.cjs} +2 -2
- package/dist/cssVariables-BguyVeCi.cjs.map +1 -0
- package/dist/{cssVariables-CU3jCd8f.js → cssVariables-D9uw0uKO.js} +30 -30
- package/dist/cssVariables-D9uw0uKO.js.map +1 -0
- package/dist/design-system/themes/ThemeProvider.d.ts.map +1 -1
- package/dist/hooks/index.d.ts +5 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/useClickOutside.d.ts +9 -0
- package/dist/hooks/useClickOutside.d.ts.map +1 -0
- package/dist/hooks/useControllable.d.ts +24 -0
- package/dist/hooks/useControllable.d.ts.map +1 -0
- package/dist/hooks/useFocusTrap.d.ts +21 -0
- package/dist/hooks/useFocusTrap.d.ts.map +1 -0
- package/dist/hooks/useId.d.ts +9 -0
- package/dist/hooks/useId.d.ts.map +1 -0
- package/dist/hooks/useKeyboardNavigation.d.ts +35 -0
- package/dist/hooks/useKeyboardNavigation.d.ts.map +1 -0
- package/dist/index.cjs +67 -7
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +62 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5314 -1627
- package/dist/index.js.map +1 -1
- package/dist/themes.cjs +1 -1
- package/dist/themes.js +1 -1
- package/package.json +1 -1
- package/dist/cssVariables-CU3jCd8f.js.map +0 -1
- package/dist/cssVariables-D_naqeoR.cjs.map +0 -1
package/dist/themes.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./cssVariables-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./cssVariables-BguyVeCi.cjs");exports.ThemeContext=e.ThemeContext;exports.ThemeProvider=e.ThemeProvider;exports.cssVar=e.cssVar;exports.darkTheme=e.darkTheme;exports.lightTheme=e.lightTheme;exports.useTheme=e.useTheme;exports.useThemeColors=e.useThemeColors;
|
|
2
2
|
//# sourceMappingURL=themes.cjs.map
|
package/dist/themes.js
CHANGED
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cssVariables-CU3jCd8f.js","sources":["../src/design-system/themes/lightTheme.ts","../src/design-system/themes/darkTheme.ts","../src/design-system/themes/ThemeProvider.tsx","../src/design-system/themes/cssVariables.ts"],"sourcesContent":["/**\r\n * Brycks Design System - Light Theme\r\n *\r\n * A clean, calm light theme inspired by Apple's design language.\r\n * Subtle contrasts, soft shadows, and refined colors.\r\n */\r\n\r\nimport { neutrals, primary, accent, success, warning, error, info } from '../tokens/colors'\r\nimport type { Theme } from './types'\r\n\r\nexport const lightTheme: Theme = {\r\n name: 'light',\r\n colors: {\r\n background: {\r\n app: neutrals.white,\r\n subtle: neutrals.gray50,\r\n muted: neutrals.gray100,\r\n elevated: neutrals.white,\r\n overlay: 'rgba(0, 0, 0, 0.4)',\r\n inverse: neutrals.gray950,\r\n },\r\n\r\n foreground: {\r\n default: neutrals.gray950,\r\n muted: neutrals.gray600,\r\n subtle: neutrals.gray500,\r\n disabled: neutrals.gray400,\r\n inverse: neutrals.white,\r\n link: primary[600],\r\n },\r\n\r\n border: {\r\n default: neutrals.gray200,\r\n muted: neutrals.gray100,\r\n strong: neutrals.gray300,\r\n focus: primary[500],\r\n },\r\n\r\n primary: {\r\n default: primary[600],\r\n hover: primary[700],\r\n active: primary[800],\r\n muted: primary[50],\r\n softHover: primary[100],\r\n foreground: neutrals.white,\r\n },\r\n\r\n accent: {\r\n default: accent[500],\r\n hover: accent[600],\r\n active: accent[700],\r\n muted: accent[50],\r\n softHover: accent[100],\r\n foreground: neutrals.white,\r\n },\r\n\r\n success: {\r\n default: success[600],\r\n hover: success[700],\r\n muted: success[50],\r\n softHover: success[100],\r\n foreground: neutrals.white,\r\n },\r\n\r\n warning: {\r\n default: warning[500],\r\n hover: warning[600],\r\n muted: warning[50],\r\n softHover: warning[100],\r\n foreground: neutrals.gray950,\r\n },\r\n\r\n error: {\r\n default: error[600],\r\n hover: error[700],\r\n muted: error[50],\r\n softHover: error[100],\r\n foreground: neutrals.white,\r\n },\r\n\r\n info: {\r\n default: info[600],\r\n hover: info[700],\r\n muted: info[50],\r\n softHover: info[100],\r\n foreground: neutrals.white,\r\n },\r\n },\r\n}\r\n","/**\r\n * Brycks Design System - Dark Theme\r\n *\r\n * A sophisticated dark theme with deep blacks and vibrant accents.\r\n * Inspired by Apple's dark mode - true black with subtle depth.\r\n */\r\n\r\nimport { neutrals, primary, accent, success, warning, error, info } from '../tokens/colors'\r\nimport type { Theme } from './types'\r\n\r\nexport const darkTheme: Theme = {\r\n name: 'dark',\r\n colors: {\r\n background: {\r\n app: neutrals.black,\r\n subtle: neutrals.gray950,\r\n muted: neutrals.gray900,\r\n elevated: neutrals.gray800,\r\n overlay: 'rgba(0, 0, 0, 0.7)',\r\n inverse: neutrals.white,\r\n },\r\n\r\n foreground: {\r\n default: neutrals.gray100,\r\n muted: neutrals.gray400,\r\n subtle: neutrals.gray500,\r\n disabled: neutrals.gray600,\r\n inverse: neutrals.gray950,\r\n link: primary[400],\r\n },\r\n\r\n border: {\r\n default: neutrals.gray800,\r\n muted: neutrals.gray900,\r\n strong: neutrals.gray700,\r\n focus: primary[400],\r\n },\r\n\r\n primary: {\r\n default: primary[500],\r\n hover: primary[400],\r\n active: primary[300],\r\n muted: 'rgba(85, 120, 244, 0.15)',\r\n softHover: 'rgba(85, 120, 244, 0.25)',\r\n foreground: neutrals.white,\r\n },\r\n\r\n accent: {\r\n default: accent[400],\r\n hover: accent[300],\r\n active: accent[200],\r\n muted: 'rgba(248, 101, 69, 0.15)',\r\n softHover: 'rgba(248, 101, 69, 0.25)',\r\n foreground: neutrals.white,\r\n },\r\n\r\n success: {\r\n default: success[500],\r\n hover: success[400],\r\n muted: 'rgba(16, 185, 129, 0.15)',\r\n softHover: 'rgba(16, 185, 129, 0.25)',\r\n foreground: neutrals.white,\r\n },\r\n\r\n warning: {\r\n default: warning[400],\r\n hover: warning[300],\r\n muted: 'rgba(245, 158, 11, 0.15)',\r\n softHover: 'rgba(245, 158, 11, 0.25)',\r\n foreground: neutrals.gray950,\r\n },\r\n\r\n error: {\r\n default: error[500],\r\n hover: error[400],\r\n muted: 'rgba(239, 68, 68, 0.15)',\r\n softHover: 'rgba(239, 68, 68, 0.25)',\r\n foreground: neutrals.white,\r\n },\r\n\r\n info: {\r\n default: info[500],\r\n hover: info[400],\r\n muted: 'rgba(6, 182, 212, 0.15)',\r\n softHover: 'rgba(6, 182, 212, 0.25)',\r\n foreground: neutrals.white,\r\n },\r\n },\r\n}\r\n","/**\r\n * Brycks Design System - Theme Provider\r\n *\r\n * React context provider for theme management.\r\n * Handles light/dark mode switching and system preference detection.\r\n */\r\n\r\nimport {\r\n createContext,\r\n useCallback,\r\n useContext,\r\n useEffect,\r\n useMemo,\r\n useState,\r\n type ReactNode,\r\n} from 'react'\r\nimport { lightTheme } from './lightTheme'\r\nimport { darkTheme } from './darkTheme'\r\nimport type { Theme, ThemeContextValue, ThemeMode, ThemeConfig, ThemeColors } from './types'\r\n\r\nconst ThemeContext = createContext<ThemeContextValue | null>(null)\r\n\r\n/** Storage key for persisting theme preference */\r\nconst THEME_STORAGE_KEY = 'brycks-theme-mode'\r\n\r\n/** Deep merge theme colors */\r\nfunction mergeThemeColors(base: ThemeColors, overrides?: Partial<ThemeColors>): ThemeColors {\r\n if (!overrides) return base\r\n\r\n return Object.keys(base).reduce((acc, key) => {\r\n const baseValue = base[key as keyof ThemeColors]\r\n const overrideValue = overrides[key as keyof ThemeColors]\r\n\r\n if (typeof baseValue === 'object' && typeof overrideValue === 'object') {\r\n acc[key as keyof ThemeColors] = { ...baseValue, ...overrideValue } as never\r\n } else if (overrideValue !== undefined) {\r\n acc[key as keyof ThemeColors] = overrideValue as never\r\n } else {\r\n acc[key as keyof ThemeColors] = baseValue as never\r\n }\r\n\r\n return acc\r\n }, {} as ThemeColors)\r\n}\r\n\r\ninterface ThemeProviderProps {\r\n /** Child components */\r\n children: ReactNode\r\n /** Theme configuration for customization */\r\n config?: ThemeConfig\r\n /** Skip injecting CSS variables (for SSR or custom handling) */\r\n skipCSSVariables?: boolean\r\n}\r\n\r\nexport function ThemeProvider({\r\n children,\r\n config,\r\n skipCSSVariables = false,\r\n}: ThemeProviderProps) {\r\n const [mode, setModeState] = useState<ThemeMode>(() => {\r\n if (typeof window === 'undefined') return config?.defaultMode ?? 'system'\r\n\r\n const stored = localStorage.getItem(THEME_STORAGE_KEY) as ThemeMode | null\r\n return stored ?? config?.defaultMode ?? 'system'\r\n })\r\n\r\n const [systemMode, setSystemMode] = useState<'light' | 'dark'>(() => {\r\n if (typeof window === 'undefined') return 'light'\r\n return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light'\r\n })\r\n\r\n // Listen to system preference changes\r\n useEffect(() => {\r\n const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)')\r\n const handleChange = (e: MediaQueryListEvent) => {\r\n setSystemMode(e.matches ? 'dark' : 'light')\r\n }\r\n\r\n mediaQuery.addEventListener('change', handleChange)\r\n return () => mediaQuery.removeEventListener('change', handleChange)\r\n }, [])\r\n\r\n // Resolve actual mode (never 'system')\r\n const resolvedMode = mode === 'system' ? systemMode : mode\r\n\r\n // Build theme with any config overrides\r\n const theme = useMemo<Theme>(() => {\r\n const baseTheme = resolvedMode === 'dark' ? darkTheme : lightTheme\r\n const overrides = resolvedMode === 'dark' ? config?.dark : config?.light\r\n\r\n if (!overrides) return baseTheme\r\n\r\n return {\r\n name: baseTheme.name,\r\n colors: mergeThemeColors(baseTheme.colors, overrides),\r\n }\r\n }, [resolvedMode, config])\r\n\r\n // Persist mode to localStorage\r\n const setMode = useCallback((newMode: ThemeMode) => {\r\n setModeState(newMode)\r\n if (typeof window !== 'undefined') {\r\n localStorage.setItem(THEME_STORAGE_KEY, newMode)\r\n }\r\n }, [])\r\n\r\n const toggleMode = useCallback(() => {\r\n setMode(resolvedMode === 'dark' ? 'light' : 'dark')\r\n }, [resolvedMode, setMode])\r\n\r\n // Inject CSS variables\r\n useEffect(() => {\r\n if (skipCSSVariables || typeof document === 'undefined') return\r\n\r\n const root = document.documentElement\r\n\r\n // Set color scheme for native browser support\r\n root.style.colorScheme = resolvedMode\r\n\r\n // Set data attribute for CSS selectors\r\n root.dataset.theme = resolvedMode\r\n\r\n // Flatten and inject CSS variables\r\n const flattenColors = (obj: Record<string, unknown>, prefix = ''): Record<string, string> => {\r\n return Object.entries(obj).reduce(\r\n (acc, [key, value]) => {\r\n const varName = prefix ? `${prefix}-${key}` : key\r\n\r\n if (typeof value === 'object' && value !== null) {\r\n Object.assign(acc, flattenColors(value as Record<string, unknown>, varName))\r\n } else if (typeof value === 'string') {\r\n acc[`--brycks-${varName}`] = value\r\n }\r\n\r\n return acc\r\n },\r\n {} as Record<string, string>\r\n )\r\n }\r\n\r\n const cssVars = flattenColors(theme.colors as unknown as Record<string, unknown>)\r\n Object.entries(cssVars).forEach(([key, value]) => {\r\n root.style.setProperty(key, value)\r\n })\r\n\r\n // Clean up function not needed as we just overwrite values\r\n }, [theme, resolvedMode, skipCSSVariables])\r\n\r\n const contextValue = useMemo<ThemeContextValue>(\r\n () => ({\r\n theme,\r\n mode,\r\n resolvedMode,\r\n setMode,\r\n toggleMode,\r\n }),\r\n [theme, mode, resolvedMode, setMode, toggleMode]\r\n )\r\n\r\n return <ThemeContext.Provider value={contextValue}>{children}</ThemeContext.Provider>\r\n}\r\n\r\n/** Hook to access theme context */\r\nexport function useTheme(): ThemeContextValue {\r\n const context = useContext(ThemeContext)\r\n\r\n if (!context) {\r\n throw new Error('useTheme must be used within a ThemeProvider')\r\n }\r\n\r\n return context\r\n}\r\n\r\n/** Hook to get current theme colors */\r\nexport function useThemeColors() {\r\n const { theme } = useTheme()\r\n return theme.colors\r\n}\r\n\r\nexport { ThemeContext }\r\n","/**\r\n * Brycks Design System - CSS Variable Helpers\r\n *\r\n * Utilities for working with CSS variables in components.\r\n */\r\n\r\n/** CSS variable names mapped to theme paths */\r\nexport const cssVar = {\r\n // Background\r\n bgApp: 'var(--brycks-background-app)',\r\n bgSubtle: 'var(--brycks-background-subtle)',\r\n bgMuted: 'var(--brycks-background-muted)',\r\n bgElevated: 'var(--brycks-background-elevated)',\r\n bgOverlay: 'var(--brycks-background-overlay)',\r\n bgInverse: 'var(--brycks-background-inverse)',\r\n\r\n // Foreground\r\n fgDefault: 'var(--brycks-foreground-default)',\r\n fgMuted: 'var(--brycks-foreground-muted)',\r\n fgSubtle: 'var(--brycks-foreground-subtle)',\r\n fgDisabled: 'var(--brycks-foreground-disabled)',\r\n fgInverse: 'var(--brycks-foreground-inverse)',\r\n fgLink: 'var(--brycks-foreground-link)',\r\n\r\n // Border\r\n borderDefault: 'var(--brycks-border-default)',\r\n borderMuted: 'var(--brycks-border-muted)',\r\n borderStrong: 'var(--brycks-border-strong)',\r\n borderFocus: 'var(--brycks-border-focus)',\r\n\r\n // Primary\r\n primaryDefault: 'var(--brycks-primary-default)',\r\n primaryHover: 'var(--brycks-primary-hover)',\r\n primaryActive: 'var(--brycks-primary-active)',\r\n primaryMuted: 'var(--brycks-primary-muted)',\r\n primaryForeground: 'var(--brycks-primary-foreground)',\r\n\r\n // Accent\r\n accentDefault: 'var(--brycks-accent-default)',\r\n accentHover: 'var(--brycks-accent-hover)',\r\n accentActive: 'var(--brycks-accent-active)',\r\n accentMuted: 'var(--brycks-accent-muted)',\r\n accentForeground: 'var(--brycks-accent-foreground)',\r\n\r\n // Success\r\n successDefault: 'var(--brycks-success-default)',\r\n successHover: 'var(--brycks-success-hover)',\r\n successMuted: 'var(--brycks-success-muted)',\r\n successForeground: 'var(--brycks-success-foreground)',\r\n\r\n // Warning\r\n warningDefault: 'var(--brycks-warning-default)',\r\n warningHover: 'var(--brycks-warning-hover)',\r\n warningMuted: 'var(--brycks-warning-muted)',\r\n warningForeground: 'var(--brycks-warning-foreground)',\r\n\r\n // Error\r\n errorDefault: 'var(--brycks-error-default)',\r\n errorHover: 'var(--brycks-error-hover)',\r\n errorMuted: 'var(--brycks-error-muted)',\r\n errorForeground: 'var(--brycks-error-foreground)',\r\n\r\n // Info\r\n infoDefault: 'var(--brycks-info-default)',\r\n infoHover: 'var(--brycks-info-hover)',\r\n infoMuted: 'var(--brycks-info-muted)',\r\n infoForeground: 'var(--brycks-info-foreground)',\r\n} as const\r\n\r\nexport type CSSVar = keyof typeof cssVar\r\n"],"names":["lightTheme","neutrals","primary","accent","success","warning","error","info","darkTheme","ThemeContext","createContext","THEME_STORAGE_KEY","mergeThemeColors","base","overrides","acc","key","baseValue","overrideValue","ThemeProvider","children","config","skipCSSVariables","mode","setModeState","useState","systemMode","setSystemMode","useEffect","mediaQuery","handleChange","e","resolvedMode","theme","useMemo","baseTheme","setMode","useCallback","newMode","toggleMode","root","flattenColors","obj","prefix","value","varName","cssVars","contextValue","useTheme","context","useContext","useThemeColors","cssVar"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cssVariables-D_naqeoR.cjs","sources":["../src/design-system/themes/lightTheme.ts","../src/design-system/themes/darkTheme.ts","../src/design-system/themes/ThemeProvider.tsx","../src/design-system/themes/cssVariables.ts"],"sourcesContent":["/**\r\n * Brycks Design System - Light Theme\r\n *\r\n * A clean, calm light theme inspired by Apple's design language.\r\n * Subtle contrasts, soft shadows, and refined colors.\r\n */\r\n\r\nimport { neutrals, primary, accent, success, warning, error, info } from '../tokens/colors'\r\nimport type { Theme } from './types'\r\n\r\nexport const lightTheme: Theme = {\r\n name: 'light',\r\n colors: {\r\n background: {\r\n app: neutrals.white,\r\n subtle: neutrals.gray50,\r\n muted: neutrals.gray100,\r\n elevated: neutrals.white,\r\n overlay: 'rgba(0, 0, 0, 0.4)',\r\n inverse: neutrals.gray950,\r\n },\r\n\r\n foreground: {\r\n default: neutrals.gray950,\r\n muted: neutrals.gray600,\r\n subtle: neutrals.gray500,\r\n disabled: neutrals.gray400,\r\n inverse: neutrals.white,\r\n link: primary[600],\r\n },\r\n\r\n border: {\r\n default: neutrals.gray200,\r\n muted: neutrals.gray100,\r\n strong: neutrals.gray300,\r\n focus: primary[500],\r\n },\r\n\r\n primary: {\r\n default: primary[600],\r\n hover: primary[700],\r\n active: primary[800],\r\n muted: primary[50],\r\n softHover: primary[100],\r\n foreground: neutrals.white,\r\n },\r\n\r\n accent: {\r\n default: accent[500],\r\n hover: accent[600],\r\n active: accent[700],\r\n muted: accent[50],\r\n softHover: accent[100],\r\n foreground: neutrals.white,\r\n },\r\n\r\n success: {\r\n default: success[600],\r\n hover: success[700],\r\n muted: success[50],\r\n softHover: success[100],\r\n foreground: neutrals.white,\r\n },\r\n\r\n warning: {\r\n default: warning[500],\r\n hover: warning[600],\r\n muted: warning[50],\r\n softHover: warning[100],\r\n foreground: neutrals.gray950,\r\n },\r\n\r\n error: {\r\n default: error[600],\r\n hover: error[700],\r\n muted: error[50],\r\n softHover: error[100],\r\n foreground: neutrals.white,\r\n },\r\n\r\n info: {\r\n default: info[600],\r\n hover: info[700],\r\n muted: info[50],\r\n softHover: info[100],\r\n foreground: neutrals.white,\r\n },\r\n },\r\n}\r\n","/**\r\n * Brycks Design System - Dark Theme\r\n *\r\n * A sophisticated dark theme with deep blacks and vibrant accents.\r\n * Inspired by Apple's dark mode - true black with subtle depth.\r\n */\r\n\r\nimport { neutrals, primary, accent, success, warning, error, info } from '../tokens/colors'\r\nimport type { Theme } from './types'\r\n\r\nexport const darkTheme: Theme = {\r\n name: 'dark',\r\n colors: {\r\n background: {\r\n app: neutrals.black,\r\n subtle: neutrals.gray950,\r\n muted: neutrals.gray900,\r\n elevated: neutrals.gray800,\r\n overlay: 'rgba(0, 0, 0, 0.7)',\r\n inverse: neutrals.white,\r\n },\r\n\r\n foreground: {\r\n default: neutrals.gray100,\r\n muted: neutrals.gray400,\r\n subtle: neutrals.gray500,\r\n disabled: neutrals.gray600,\r\n inverse: neutrals.gray950,\r\n link: primary[400],\r\n },\r\n\r\n border: {\r\n default: neutrals.gray800,\r\n muted: neutrals.gray900,\r\n strong: neutrals.gray700,\r\n focus: primary[400],\r\n },\r\n\r\n primary: {\r\n default: primary[500],\r\n hover: primary[400],\r\n active: primary[300],\r\n muted: 'rgba(85, 120, 244, 0.15)',\r\n softHover: 'rgba(85, 120, 244, 0.25)',\r\n foreground: neutrals.white,\r\n },\r\n\r\n accent: {\r\n default: accent[400],\r\n hover: accent[300],\r\n active: accent[200],\r\n muted: 'rgba(248, 101, 69, 0.15)',\r\n softHover: 'rgba(248, 101, 69, 0.25)',\r\n foreground: neutrals.white,\r\n },\r\n\r\n success: {\r\n default: success[500],\r\n hover: success[400],\r\n muted: 'rgba(16, 185, 129, 0.15)',\r\n softHover: 'rgba(16, 185, 129, 0.25)',\r\n foreground: neutrals.white,\r\n },\r\n\r\n warning: {\r\n default: warning[400],\r\n hover: warning[300],\r\n muted: 'rgba(245, 158, 11, 0.15)',\r\n softHover: 'rgba(245, 158, 11, 0.25)',\r\n foreground: neutrals.gray950,\r\n },\r\n\r\n error: {\r\n default: error[500],\r\n hover: error[400],\r\n muted: 'rgba(239, 68, 68, 0.15)',\r\n softHover: 'rgba(239, 68, 68, 0.25)',\r\n foreground: neutrals.white,\r\n },\r\n\r\n info: {\r\n default: info[500],\r\n hover: info[400],\r\n muted: 'rgba(6, 182, 212, 0.15)',\r\n softHover: 'rgba(6, 182, 212, 0.25)',\r\n foreground: neutrals.white,\r\n },\r\n },\r\n}\r\n","/**\r\n * Brycks Design System - Theme Provider\r\n *\r\n * React context provider for theme management.\r\n * Handles light/dark mode switching and system preference detection.\r\n */\r\n\r\nimport {\r\n createContext,\r\n useCallback,\r\n useContext,\r\n useEffect,\r\n useMemo,\r\n useState,\r\n type ReactNode,\r\n} from 'react'\r\nimport { lightTheme } from './lightTheme'\r\nimport { darkTheme } from './darkTheme'\r\nimport type { Theme, ThemeContextValue, ThemeMode, ThemeConfig, ThemeColors } from './types'\r\n\r\nconst ThemeContext = createContext<ThemeContextValue | null>(null)\r\n\r\n/** Storage key for persisting theme preference */\r\nconst THEME_STORAGE_KEY = 'brycks-theme-mode'\r\n\r\n/** Deep merge theme colors */\r\nfunction mergeThemeColors(base: ThemeColors, overrides?: Partial<ThemeColors>): ThemeColors {\r\n if (!overrides) return base\r\n\r\n return Object.keys(base).reduce((acc, key) => {\r\n const baseValue = base[key as keyof ThemeColors]\r\n const overrideValue = overrides[key as keyof ThemeColors]\r\n\r\n if (typeof baseValue === 'object' && typeof overrideValue === 'object') {\r\n acc[key as keyof ThemeColors] = { ...baseValue, ...overrideValue } as never\r\n } else if (overrideValue !== undefined) {\r\n acc[key as keyof ThemeColors] = overrideValue as never\r\n } else {\r\n acc[key as keyof ThemeColors] = baseValue as never\r\n }\r\n\r\n return acc\r\n }, {} as ThemeColors)\r\n}\r\n\r\ninterface ThemeProviderProps {\r\n /** Child components */\r\n children: ReactNode\r\n /** Theme configuration for customization */\r\n config?: ThemeConfig\r\n /** Skip injecting CSS variables (for SSR or custom handling) */\r\n skipCSSVariables?: boolean\r\n}\r\n\r\nexport function ThemeProvider({\r\n children,\r\n config,\r\n skipCSSVariables = false,\r\n}: ThemeProviderProps) {\r\n const [mode, setModeState] = useState<ThemeMode>(() => {\r\n if (typeof window === 'undefined') return config?.defaultMode ?? 'system'\r\n\r\n const stored = localStorage.getItem(THEME_STORAGE_KEY) as ThemeMode | null\r\n return stored ?? config?.defaultMode ?? 'system'\r\n })\r\n\r\n const [systemMode, setSystemMode] = useState<'light' | 'dark'>(() => {\r\n if (typeof window === 'undefined') return 'light'\r\n return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light'\r\n })\r\n\r\n // Listen to system preference changes\r\n useEffect(() => {\r\n const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)')\r\n const handleChange = (e: MediaQueryListEvent) => {\r\n setSystemMode(e.matches ? 'dark' : 'light')\r\n }\r\n\r\n mediaQuery.addEventListener('change', handleChange)\r\n return () => mediaQuery.removeEventListener('change', handleChange)\r\n }, [])\r\n\r\n // Resolve actual mode (never 'system')\r\n const resolvedMode = mode === 'system' ? systemMode : mode\r\n\r\n // Build theme with any config overrides\r\n const theme = useMemo<Theme>(() => {\r\n const baseTheme = resolvedMode === 'dark' ? darkTheme : lightTheme\r\n const overrides = resolvedMode === 'dark' ? config?.dark : config?.light\r\n\r\n if (!overrides) return baseTheme\r\n\r\n return {\r\n name: baseTheme.name,\r\n colors: mergeThemeColors(baseTheme.colors, overrides),\r\n }\r\n }, [resolvedMode, config])\r\n\r\n // Persist mode to localStorage\r\n const setMode = useCallback((newMode: ThemeMode) => {\r\n setModeState(newMode)\r\n if (typeof window !== 'undefined') {\r\n localStorage.setItem(THEME_STORAGE_KEY, newMode)\r\n }\r\n }, [])\r\n\r\n const toggleMode = useCallback(() => {\r\n setMode(resolvedMode === 'dark' ? 'light' : 'dark')\r\n }, [resolvedMode, setMode])\r\n\r\n // Inject CSS variables\r\n useEffect(() => {\r\n if (skipCSSVariables || typeof document === 'undefined') return\r\n\r\n const root = document.documentElement\r\n\r\n // Set color scheme for native browser support\r\n root.style.colorScheme = resolvedMode\r\n\r\n // Set data attribute for CSS selectors\r\n root.dataset.theme = resolvedMode\r\n\r\n // Flatten and inject CSS variables\r\n const flattenColors = (obj: Record<string, unknown>, prefix = ''): Record<string, string> => {\r\n return Object.entries(obj).reduce(\r\n (acc, [key, value]) => {\r\n const varName = prefix ? `${prefix}-${key}` : key\r\n\r\n if (typeof value === 'object' && value !== null) {\r\n Object.assign(acc, flattenColors(value as Record<string, unknown>, varName))\r\n } else if (typeof value === 'string') {\r\n acc[`--brycks-${varName}`] = value\r\n }\r\n\r\n return acc\r\n },\r\n {} as Record<string, string>\r\n )\r\n }\r\n\r\n const cssVars = flattenColors(theme.colors as unknown as Record<string, unknown>)\r\n Object.entries(cssVars).forEach(([key, value]) => {\r\n root.style.setProperty(key, value)\r\n })\r\n\r\n // Clean up function not needed as we just overwrite values\r\n }, [theme, resolvedMode, skipCSSVariables])\r\n\r\n const contextValue = useMemo<ThemeContextValue>(\r\n () => ({\r\n theme,\r\n mode,\r\n resolvedMode,\r\n setMode,\r\n toggleMode,\r\n }),\r\n [theme, mode, resolvedMode, setMode, toggleMode]\r\n )\r\n\r\n return <ThemeContext.Provider value={contextValue}>{children}</ThemeContext.Provider>\r\n}\r\n\r\n/** Hook to access theme context */\r\nexport function useTheme(): ThemeContextValue {\r\n const context = useContext(ThemeContext)\r\n\r\n if (!context) {\r\n throw new Error('useTheme must be used within a ThemeProvider')\r\n }\r\n\r\n return context\r\n}\r\n\r\n/** Hook to get current theme colors */\r\nexport function useThemeColors() {\r\n const { theme } = useTheme()\r\n return theme.colors\r\n}\r\n\r\nexport { ThemeContext }\r\n","/**\r\n * Brycks Design System - CSS Variable Helpers\r\n *\r\n * Utilities for working with CSS variables in components.\r\n */\r\n\r\n/** CSS variable names mapped to theme paths */\r\nexport const cssVar = {\r\n // Background\r\n bgApp: 'var(--brycks-background-app)',\r\n bgSubtle: 'var(--brycks-background-subtle)',\r\n bgMuted: 'var(--brycks-background-muted)',\r\n bgElevated: 'var(--brycks-background-elevated)',\r\n bgOverlay: 'var(--brycks-background-overlay)',\r\n bgInverse: 'var(--brycks-background-inverse)',\r\n\r\n // Foreground\r\n fgDefault: 'var(--brycks-foreground-default)',\r\n fgMuted: 'var(--brycks-foreground-muted)',\r\n fgSubtle: 'var(--brycks-foreground-subtle)',\r\n fgDisabled: 'var(--brycks-foreground-disabled)',\r\n fgInverse: 'var(--brycks-foreground-inverse)',\r\n fgLink: 'var(--brycks-foreground-link)',\r\n\r\n // Border\r\n borderDefault: 'var(--brycks-border-default)',\r\n borderMuted: 'var(--brycks-border-muted)',\r\n borderStrong: 'var(--brycks-border-strong)',\r\n borderFocus: 'var(--brycks-border-focus)',\r\n\r\n // Primary\r\n primaryDefault: 'var(--brycks-primary-default)',\r\n primaryHover: 'var(--brycks-primary-hover)',\r\n primaryActive: 'var(--brycks-primary-active)',\r\n primaryMuted: 'var(--brycks-primary-muted)',\r\n primaryForeground: 'var(--brycks-primary-foreground)',\r\n\r\n // Accent\r\n accentDefault: 'var(--brycks-accent-default)',\r\n accentHover: 'var(--brycks-accent-hover)',\r\n accentActive: 'var(--brycks-accent-active)',\r\n accentMuted: 'var(--brycks-accent-muted)',\r\n accentForeground: 'var(--brycks-accent-foreground)',\r\n\r\n // Success\r\n successDefault: 'var(--brycks-success-default)',\r\n successHover: 'var(--brycks-success-hover)',\r\n successMuted: 'var(--brycks-success-muted)',\r\n successForeground: 'var(--brycks-success-foreground)',\r\n\r\n // Warning\r\n warningDefault: 'var(--brycks-warning-default)',\r\n warningHover: 'var(--brycks-warning-hover)',\r\n warningMuted: 'var(--brycks-warning-muted)',\r\n warningForeground: 'var(--brycks-warning-foreground)',\r\n\r\n // Error\r\n errorDefault: 'var(--brycks-error-default)',\r\n errorHover: 'var(--brycks-error-hover)',\r\n errorMuted: 'var(--brycks-error-muted)',\r\n errorForeground: 'var(--brycks-error-foreground)',\r\n\r\n // Info\r\n infoDefault: 'var(--brycks-info-default)',\r\n infoHover: 'var(--brycks-info-hover)',\r\n infoMuted: 'var(--brycks-info-muted)',\r\n infoForeground: 'var(--brycks-info-foreground)',\r\n} as const\r\n\r\nexport type CSSVar = keyof typeof cssVar\r\n"],"names":["lightTheme","neutrals","primary","accent","success","warning","error","info","darkTheme","ThemeContext","createContext","THEME_STORAGE_KEY","mergeThemeColors","base","overrides","acc","key","baseValue","overrideValue","ThemeProvider","children","config","skipCSSVariables","mode","setModeState","useState","systemMode","setSystemMode","useEffect","mediaQuery","handleChange","e","resolvedMode","theme","useMemo","baseTheme","setMode","useCallback","newMode","toggleMode","root","flattenColors","obj","prefix","value","varName","cssVars","contextValue","useTheme","context","useContext","useThemeColors","cssVar"],"mappings":"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"}
|