@brycks/core-front 0.3.5 → 0.5.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.cjs +1 -1
- package/dist/components/data/List/List.cjs.map +1 -1
- package/dist/components/data/List/List.js +1 -1
- package/dist/components/data/List/List.js.map +1 -1
- package/dist/components/data/Table/Table.cjs +1 -1
- package/dist/components/data/Table/Table.cjs.map +1 -1
- package/dist/components/data/Table/Table.js +196 -166
- package/dist/components/data/Table/Table.js.map +1 -1
- package/dist/components/data/TreeView/TreeView.cjs +1 -1
- package/dist/components/data/TreeView/TreeView.cjs.map +1 -1
- package/dist/components/data/TreeView/TreeView.js +1 -1
- package/dist/components/data/TreeView/TreeView.js.map +1 -1
- package/dist/components/data.cjs +1 -1
- package/dist/components/data.js +23 -21
- package/dist/components/feedback/Alert/Alert.cjs +1 -1
- package/dist/components/feedback/Alert/Alert.cjs.map +1 -1
- package/dist/components/feedback/Alert/Alert.js +20 -19
- package/dist/components/feedback/Alert/Alert.js.map +1 -1
- package/dist/components/feedback/Banner/Banner.cjs +2 -0
- package/dist/components/feedback/Banner/Banner.cjs.map +1 -0
- package/dist/components/feedback/Banner/Banner.js +77 -0
- package/dist/components/feedback/Banner/Banner.js.map +1 -0
- package/dist/components/feedback/ConfirmDialog/ConfirmDialog.cjs +2 -0
- package/dist/components/feedback/ConfirmDialog/ConfirmDialog.cjs.map +1 -0
- package/dist/components/feedback/ConfirmDialog/ConfirmDialog.js +68 -0
- package/dist/components/feedback/ConfirmDialog/ConfirmDialog.js.map +1 -0
- package/dist/components/feedback/Drawer/Drawer.cjs +2 -2
- package/dist/components/feedback/Drawer/Drawer.cjs.map +1 -1
- package/dist/components/feedback/Drawer/Drawer.js +58 -57
- package/dist/components/feedback/Drawer/Drawer.js.map +1 -1
- package/dist/components/feedback/Modal/Modal.cjs +1 -1
- package/dist/components/feedback/Modal/Modal.cjs.map +1 -1
- package/dist/components/feedback/Modal/Modal.js +101 -91
- package/dist/components/feedback/Modal/Modal.js.map +1 -1
- package/dist/components/feedback/Popover/Popover.cjs +2 -2
- package/dist/components/feedback/Popover/Popover.cjs.map +1 -1
- package/dist/components/feedback/Popover/Popover.js +93 -85
- package/dist/components/feedback/Popover/Popover.js.map +1 -1
- package/dist/components/feedback/Toast/Toast.cjs +2 -2
- package/dist/components/feedback/Toast/Toast.cjs.map +1 -1
- package/dist/components/feedback/Toast/Toast.js +102 -93
- package/dist/components/feedback/Toast/Toast.js.map +1 -1
- package/dist/components/feedback.cjs +1 -1
- package/dist/components/feedback.js +17 -13
- package/dist/components/feedback.js.map +1 -1
- package/dist/components/form/Combobox/Combobox.cjs +2 -2
- package/dist/components/form/Combobox/Combobox.cjs.map +1 -1
- package/dist/components/form/Combobox/Combobox.js +187 -167
- package/dist/components/form/Combobox/Combobox.js.map +1 -1
- package/dist/components/form/DateInput/DateInput.cjs +1 -1
- package/dist/components/form/DateInput/DateInput.cjs.map +1 -1
- package/dist/components/form/DateInput/DateInput.js +2 -2
- package/dist/components/form/DateInput/DateInput.js.map +1 -1
- package/dist/components/form/DateRangePicker/DateRangePicker.cjs +1 -1
- package/dist/components/form/DateRangePicker/DateRangePicker.cjs.map +1 -1
- package/dist/components/form/DateRangePicker/DateRangePicker.js +34 -34
- package/dist/components/form/DateRangePicker/DateRangePicker.js.map +1 -1
- package/dist/components/form/DropZone/DropZone.cjs +1 -1
- package/dist/components/form/DropZone/DropZone.cjs.map +1 -1
- package/dist/components/form/DropZone/DropZone.js +10 -10
- package/dist/components/form/DropZone/DropZone.js.map +1 -1
- package/dist/components/form/FileInput/FileInput.cjs +1 -1
- package/dist/components/form/FileInput/FileInput.cjs.map +1 -1
- package/dist/components/form/FileInput/FileInput.js +1 -1
- package/dist/components/form/FileInput/FileInput.js.map +1 -1
- package/dist/components/form/FormCard/FormCard.cjs +1 -1
- package/dist/components/form/FormCard/FormCard.cjs.map +1 -1
- package/dist/components/form/FormCard/FormCard.js +9 -9
- package/dist/components/form/FormCard/FormCard.js.map +1 -1
- package/dist/components/form/FormField/FormField.cjs +1 -1
- package/dist/components/form/FormField/FormField.cjs.map +1 -1
- package/dist/components/form/FormField/FormField.js +67 -55
- package/dist/components/form/FormField/FormField.js.map +1 -1
- package/dist/components/form/MultiSelect/MultiSelect.cjs +1 -1
- package/dist/components/form/MultiSelect/MultiSelect.cjs.map +1 -1
- package/dist/components/form/MultiSelect/MultiSelect.js +2 -3
- package/dist/components/form/MultiSelect/MultiSelect.js.map +1 -1
- package/dist/components/form/Radio/Radio.cjs +1 -1
- package/dist/components/form/Radio/Radio.cjs.map +1 -1
- package/dist/components/form/Radio/Radio.js +20 -20
- package/dist/components/form/Radio/Radio.js.map +1 -1
- package/dist/components/form/SearchInput/SearchInput.cjs +2 -0
- package/dist/components/form/SearchInput/SearchInput.cjs.map +1 -0
- package/dist/components/form/SearchInput/SearchInput.js +68 -0
- package/dist/components/form/SearchInput/SearchInput.js.map +1 -0
- package/dist/components/form/TagInput/TagInput.cjs +1 -1
- package/dist/components/form/TagInput/TagInput.cjs.map +1 -1
- package/dist/components/form/TagInput/TagInput.js +104 -102
- package/dist/components/form/TagInput/TagInput.js.map +1 -1
- package/dist/components/form/TimePicker/TimePicker.cjs +1 -1
- package/dist/components/form/TimePicker/TimePicker.cjs.map +1 -1
- package/dist/components/form/TimePicker/TimePicker.js +29 -30
- package/dist/components/form/TimePicker/TimePicker.js.map +1 -1
- package/dist/components/form.cjs +1 -1
- package/dist/components/form.js +15 -13
- package/dist/components/form.js.map +1 -1
- package/dist/components/layout/Card/Card.cjs +1 -1
- package/dist/components/layout/Card/Card.cjs.map +1 -1
- package/dist/components/layout/Card/Card.js +7 -5
- package/dist/components/layout/Card/Card.js.map +1 -1
- package/dist/components/layout/Collapse/Collapse.cjs.map +1 -1
- package/dist/components/layout/Collapse/Collapse.js.map +1 -1
- package/dist/components/media/Image/Image.cjs +1 -1
- package/dist/components/media/Image/Image.cjs.map +1 -1
- package/dist/components/media/Image/Image.js +9 -9
- package/dist/components/media/Image/Image.js.map +1 -1
- package/dist/components/media/ImageThumbnail/ImageThumbnail.cjs +1 -1
- package/dist/components/media/ImageThumbnail/ImageThumbnail.cjs.map +1 -1
- package/dist/components/media/ImageThumbnail/ImageThumbnail.js +6 -6
- package/dist/components/media/ImageThumbnail/ImageThumbnail.js.map +1 -1
- package/dist/components/navigation/Accordion/Accordion.cjs +1 -1
- package/dist/components/navigation/Accordion/Accordion.cjs.map +1 -1
- package/dist/components/navigation/Accordion/Accordion.js +0 -1
- package/dist/components/navigation/Accordion/Accordion.js.map +1 -1
- package/dist/components/navigation/Menu/Menu.cjs +1 -1
- package/dist/components/navigation/Menu/Menu.cjs.map +1 -1
- package/dist/components/navigation/Menu/Menu.js +87 -86
- package/dist/components/navigation/Menu/Menu.js.map +1 -1
- package/dist/components/navigation/Pagination/Pagination.cjs +1 -1
- package/dist/components/navigation/Pagination/Pagination.cjs.map +1 -1
- package/dist/components/navigation/Pagination/Pagination.js +107 -99
- package/dist/components/navigation/Pagination/Pagination.js.map +1 -1
- package/dist/components/navigation/SegmentedControl/SegmentedControl.cjs +2 -0
- package/dist/components/navigation/SegmentedControl/SegmentedControl.cjs.map +1 -0
- package/dist/components/navigation/SegmentedControl/SegmentedControl.js +90 -0
- package/dist/components/navigation/SegmentedControl/SegmentedControl.js.map +1 -0
- package/dist/components/navigation.cjs +1 -1
- package/dist/components/navigation.js +25 -23
- package/dist/components/navigation.js.map +1 -1
- package/dist/components/utility/Avatar/Avatar.cjs +1 -1
- package/dist/components/utility/Avatar/Avatar.cjs.map +1 -1
- package/dist/components/utility/Avatar/Avatar.js +18 -18
- package/dist/components/utility/Avatar/Avatar.js.map +1 -1
- package/dist/components/utility/Badge/Badge.cjs +1 -1
- package/dist/components/utility/Badge/Badge.cjs.map +1 -1
- package/dist/components/utility/Badge/Badge.js +31 -23
- package/dist/components/utility/Badge/Badge.js.map +1 -1
- package/dist/components/utility/Kbd/Kbd.cjs +2 -0
- package/dist/components/utility/Kbd/Kbd.cjs.map +1 -0
- package/dist/components/utility/Kbd/Kbd.js +20 -0
- package/dist/components/utility/Kbd/Kbd.js.map +1 -0
- package/dist/components/utility/Logo/Logo.cjs +1 -1
- package/dist/components/utility/Logo/Logo.cjs.map +1 -1
- package/dist/components/utility/Logo/Logo.js +21 -21
- package/dist/components/utility/Logo/Logo.js.map +1 -1
- package/dist/components/utility.cjs +1 -1
- package/dist/components/utility.js +9 -7
- package/dist/components/utility.js.map +1 -1
- package/dist/data.d.ts +34 -1
- package/dist/design-system/themes/ThemeProvider.cjs +1 -1
- package/dist/design-system/themes/ThemeProvider.cjs.map +1 -1
- package/dist/design-system/themes/ThemeProvider.js +46 -46
- package/dist/design-system/themes/ThemeProvider.js.map +1 -1
- package/dist/design-system/tokens/zIndex.cjs +1 -1
- package/dist/design-system/tokens/zIndex.cjs.map +1 -1
- package/dist/design-system/tokens/zIndex.js +2 -0
- package/dist/design-system/tokens/zIndex.js.map +1 -1
- package/dist/feedback.d.ts +75 -2
- package/dist/form.d.ts +41 -0
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +213 -3
- package/dist/index.js +177 -165
- package/dist/index.js.map +1 -1
- package/dist/navigation.d.ts +58 -0
- package/dist/styles.css +1 -1
- package/dist/tokens.d.ts +2 -0
- package/dist/utility.d.ts +19 -0
- package/package.json +2 -1
package/dist/data.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { CSSProperties } from 'react';
|
|
2
2
|
import { ForwardRefExoticComponent } from 'react';
|
|
3
3
|
import { HTMLAttributes } from 'react';
|
|
4
|
+
import { JSX } from 'react/jsx-runtime';
|
|
4
5
|
import { ReactNode } from 'react';
|
|
5
6
|
import { RefAttributes } from 'react';
|
|
6
7
|
import { TdHTMLAttributes } from 'react';
|
|
@@ -135,6 +136,23 @@ export declare interface TableCellProps extends TdHTMLAttributes<HTMLTableCellEl
|
|
|
135
136
|
className?: string;
|
|
136
137
|
}
|
|
137
138
|
|
|
139
|
+
export declare const TableEmpty: ForwardRefExoticComponent<TableEmptyProps & RefAttributes<HTMLTableRowElement>>;
|
|
140
|
+
|
|
141
|
+
export declare interface TableEmptyProps {
|
|
142
|
+
/** Number of columns to span (match the table's column count) */
|
|
143
|
+
colSpan: number;
|
|
144
|
+
/** Icon or illustration */
|
|
145
|
+
icon?: ReactNode;
|
|
146
|
+
/** Title text */
|
|
147
|
+
title?: ReactNode;
|
|
148
|
+
/** Description text */
|
|
149
|
+
description?: ReactNode;
|
|
150
|
+
/** Action element (button, link) */
|
|
151
|
+
action?: ReactNode;
|
|
152
|
+
/** Custom class name */
|
|
153
|
+
className?: string;
|
|
154
|
+
}
|
|
155
|
+
|
|
138
156
|
export declare const TableFoot: ForwardRefExoticComponent<TableFootProps & RefAttributes<HTMLTableSectionElement>>;
|
|
139
157
|
|
|
140
158
|
export declare interface TableFootProps extends HTMLAttributes<HTMLTableSectionElement> {
|
|
@@ -194,7 +212,22 @@ export declare interface TableRowProps extends HTMLAttributes<HTMLTableRowElemen
|
|
|
194
212
|
|
|
195
213
|
export declare type TableSize = 'sm' | 'md' | 'lg';
|
|
196
214
|
|
|
197
|
-
export declare
|
|
215
|
+
export declare function TableSkeleton({ rows, columns, className }: TableSkeletonProps): JSX.Element;
|
|
216
|
+
|
|
217
|
+
export declare namespace TableSkeleton {
|
|
218
|
+
var displayName: string;
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
export declare interface TableSkeletonProps {
|
|
222
|
+
/** Number of skeleton rows */
|
|
223
|
+
rows?: number;
|
|
224
|
+
/** Number of columns per row (match the table's column count) */
|
|
225
|
+
columns: number;
|
|
226
|
+
/** Custom class name applied to each row */
|
|
227
|
+
className?: string;
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
export declare type TableVariant = 'default' | 'bordered';
|
|
198
231
|
|
|
199
232
|
export declare interface TreeNode {
|
|
200
233
|
/** Unique identifier */
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const S=require("react/jsx-runtime"),s=require("react"),x=require("./lightTheme.cjs"),O=require("./darkTheme.cjs"),y=s.createContext(null),M="brycks-theme-mode";function P(o,n){return n?Object.keys(o).reduce((c,r)=>{const m=o[r],u=n[r];return typeof m=="object"&&typeof u=="object"?c[r]={...m,...u}:u!==void 0?c[r]=u:c[r]=m,c},{}):o}function L({children:o,config:n,skipCSSVariables:c=!1}){const[r,m]=s.useState(()=>typeof window>"u"?n?.defaultMode??"system":localStorage.getItem(M)??n?.defaultMode??"system"),[u,C]=s.useState(()=>typeof window>"u"?"light":window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light");s.useEffect(()=>{const e=window.matchMedia("(prefers-color-scheme: dark)"),d=T=>{C(T.matches?"dark":"light")};return e.addEventListener("change",d),()=>e.removeEventListener("change",d)},[]);const t=r==="system"?u:r,h=s.useMemo(()=>{const e=t==="dark"?O.darkTheme:x.lightTheme,d=t==="dark"?n?.dark:n?.light;return d?{name:e.name,colors:P(e.colors,d)}:e},[t,n]),f=s.useCallback(e=>{m(e),typeof window<"u"&&localStorage.setItem(M,e)},[]),b=s.useCallback(()=>{f(t==="dark"?"light":"dark")},[t,f]);s.useEffect(()=>{if(c||typeof document>"u")return;const e=document.documentElement;e.style.colorScheme=t,e.dataset.theme=t,t==="dark"?e.classList.add("dark"):e.classList.remove("dark");const d=i=>i.replace(/[A-Z]/g,a=>`-${a.toLowerCase()}`),T=(i,a="")=>Object.entries(i).reduce((g,[v,l])=>{const k=d(v),w=a?`${a}-${k}`:k;return typeof l=="object"&&l!==null?Object.assign(g,T(l,w)):typeof l=="string"&&(g[`--brycks-${w}`]=l),g},{}),j=T(h.colors);Object.entries(j).forEach(([i,a])=>{e.style.setProperty(i,a)})},[h,t,c]);const E=s.useMemo(()=>({theme:h,mode:r,resolvedMode:t,setMode:f,toggleMode:b}),[h,r,t,f,b]);return S.jsx(y.Provider,{value:E,children:o})}function p(){const o=s.useContext(y);if(!o)throw new Error("useTheme must be used within a ThemeProvider");return o}function q(){const{theme:o}=p();return o.colors}exports.ThemeContext=y;exports.ThemeProvider=L;exports.useTheme=p;exports.useThemeColors=q;
|
|
2
2
|
//# sourceMappingURL=ThemeProvider.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ThemeProvider.cjs","sources":["../../../src/design-system/themes/ThemeProvider.tsx"],"sourcesContent":["/**\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 // Add/remove dark class for Tailwind CSS dark mode\r\n if (resolvedMode === 'dark') {\r\n root.classList.add('dark')\r\n } else {\r\n root.classList.remove('dark')\r\n }\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}-${
|
|
1
|
+
{"version":3,"file":"ThemeProvider.cjs","sources":["../../../src/design-system/themes/ThemeProvider.tsx"],"sourcesContent":["/**\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 // Add/remove dark class for Tailwind CSS dark mode\r\n if (resolvedMode === 'dark') {\r\n root.classList.add('dark')\r\n } else {\r\n root.classList.remove('dark')\r\n }\r\n\r\n // Flatten and inject CSS variables.\r\n // Keys are converted to kebab-case so generated names match the ones the\r\n // stylesheets consume (e.g. softHover -> --brycks-primary-soft-hover).\r\n const toKebab = (key: string) => key.replace(/[A-Z]/g, (m) => `-${m.toLowerCase()}`)\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 segment = toKebab(key)\r\n const varName = prefix ? `${prefix}-${segment}` : segment\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"],"names":["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","darkTheme","lightTheme","setMode","useCallback","newMode","toggleMode","root","toKebab","m","flattenColors","obj","prefix","value","segment","varName","cssVars","contextValue","useTheme","context","useContext","useThemeColors"],"mappings":"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"}
|
|
@@ -1,78 +1,78 @@
|
|
|
1
|
-
import { jsx as
|
|
2
|
-
import { createContext as
|
|
3
|
-
import { lightTheme as
|
|
4
|
-
import { darkTheme as
|
|
5
|
-
const j =
|
|
6
|
-
function
|
|
7
|
-
return s ? Object.keys(o).reduce((
|
|
8
|
-
const
|
|
9
|
-
return typeof
|
|
1
|
+
import { jsx as O } from "react/jsx-runtime";
|
|
2
|
+
import { createContext as S, useState as b, useEffect as k, useMemo as T, useCallback as M, useContext as P } from "react";
|
|
3
|
+
import { lightTheme as $ } from "./lightTheme.js";
|
|
4
|
+
import { darkTheme as V } from "./darkTheme.js";
|
|
5
|
+
const j = S(null), E = "brycks-theme-mode";
|
|
6
|
+
function A(o, s) {
|
|
7
|
+
return s ? Object.keys(o).reduce((n, r) => {
|
|
8
|
+
const a = o[r], c = s[r];
|
|
9
|
+
return typeof a == "object" && typeof c == "object" ? n[r] = { ...a, ...c } : c !== void 0 ? n[r] = c : n[r] = a, n;
|
|
10
10
|
}, {}) : o;
|
|
11
11
|
}
|
|
12
|
-
function
|
|
12
|
+
function N({
|
|
13
13
|
children: o,
|
|
14
14
|
config: s,
|
|
15
|
-
skipCSSVariables:
|
|
15
|
+
skipCSSVariables: n = !1
|
|
16
16
|
}) {
|
|
17
|
-
const [r,
|
|
17
|
+
const [r, a] = b(() => typeof window > "u" ? s?.defaultMode ?? "system" : localStorage.getItem(E) ?? s?.defaultMode ?? "system"), [c, v] = b(() => typeof window > "u" ? "light" : window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light");
|
|
18
18
|
k(() => {
|
|
19
|
-
const e = window.matchMedia("(prefers-color-scheme: dark)"),
|
|
20
|
-
v(
|
|
19
|
+
const e = window.matchMedia("(prefers-color-scheme: dark)"), d = (h) => {
|
|
20
|
+
v(h.matches ? "dark" : "light");
|
|
21
21
|
};
|
|
22
|
-
return e.addEventListener("change",
|
|
22
|
+
return e.addEventListener("change", d), () => e.removeEventListener("change", d);
|
|
23
23
|
}, []);
|
|
24
|
-
const t = r === "system" ? c : r,
|
|
25
|
-
const e = t === "dark" ?
|
|
26
|
-
return
|
|
24
|
+
const t = r === "system" ? c : r, l = T(() => {
|
|
25
|
+
const e = t === "dark" ? V : $, d = t === "dark" ? s?.dark : s?.light;
|
|
26
|
+
return d ? {
|
|
27
27
|
name: e.name,
|
|
28
|
-
colors:
|
|
28
|
+
colors: A(e.colors, d)
|
|
29
29
|
} : e;
|
|
30
|
-
}, [t, s]),
|
|
31
|
-
|
|
32
|
-
}, []),
|
|
33
|
-
|
|
34
|
-
}, [t,
|
|
30
|
+
}, [t, s]), f = M((e) => {
|
|
31
|
+
a(e), typeof window < "u" && localStorage.setItem(E, e);
|
|
32
|
+
}, []), g = M(() => {
|
|
33
|
+
f(t === "dark" ? "light" : "dark");
|
|
34
|
+
}, [t, f]);
|
|
35
35
|
k(() => {
|
|
36
|
-
if (
|
|
36
|
+
if (n || typeof document > "u") return;
|
|
37
37
|
const e = document.documentElement;
|
|
38
38
|
e.style.colorScheme = t, e.dataset.theme = t, t === "dark" ? e.classList.add("dark") : e.classList.remove("dark");
|
|
39
|
-
const
|
|
40
|
-
(y, [
|
|
41
|
-
const w =
|
|
42
|
-
return typeof
|
|
39
|
+
const d = (i) => i.replace(/[A-Z]/g, (m) => `-${m.toLowerCase()}`), h = (i, m = "") => Object.entries(i).reduce(
|
|
40
|
+
(y, [L, u]) => {
|
|
41
|
+
const p = d(L), w = m ? `${m}-${p}` : p;
|
|
42
|
+
return typeof u == "object" && u !== null ? Object.assign(y, h(u, w)) : typeof u == "string" && (y[`--brycks-${w}`] = u), y;
|
|
43
43
|
},
|
|
44
44
|
{}
|
|
45
|
-
),
|
|
46
|
-
Object.entries(
|
|
47
|
-
e.style.setProperty(
|
|
45
|
+
), x = h(l.colors);
|
|
46
|
+
Object.entries(x).forEach(([i, m]) => {
|
|
47
|
+
e.style.setProperty(i, m);
|
|
48
48
|
});
|
|
49
|
-
}, [
|
|
50
|
-
const C =
|
|
49
|
+
}, [l, t, n]);
|
|
50
|
+
const C = T(
|
|
51
51
|
() => ({
|
|
52
|
-
theme:
|
|
52
|
+
theme: l,
|
|
53
53
|
mode: r,
|
|
54
54
|
resolvedMode: t,
|
|
55
|
-
setMode:
|
|
56
|
-
toggleMode:
|
|
55
|
+
setMode: f,
|
|
56
|
+
toggleMode: g
|
|
57
57
|
}),
|
|
58
|
-
[
|
|
58
|
+
[l, r, t, f, g]
|
|
59
59
|
);
|
|
60
|
-
return /* @__PURE__ */
|
|
60
|
+
return /* @__PURE__ */ O(j.Provider, { value: C, children: o });
|
|
61
61
|
}
|
|
62
|
-
function
|
|
63
|
-
const o =
|
|
62
|
+
function I() {
|
|
63
|
+
const o = P(j);
|
|
64
64
|
if (!o)
|
|
65
65
|
throw new Error("useTheme must be used within a ThemeProvider");
|
|
66
66
|
return o;
|
|
67
67
|
}
|
|
68
|
-
function
|
|
69
|
-
const { theme: o } =
|
|
68
|
+
function Q() {
|
|
69
|
+
const { theme: o } = I();
|
|
70
70
|
return o.colors;
|
|
71
71
|
}
|
|
72
72
|
export {
|
|
73
73
|
j as ThemeContext,
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
74
|
+
N as ThemeProvider,
|
|
75
|
+
I as useTheme,
|
|
76
|
+
Q as useThemeColors
|
|
77
77
|
};
|
|
78
78
|
//# sourceMappingURL=ThemeProvider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ThemeProvider.js","sources":["../../../src/design-system/themes/ThemeProvider.tsx"],"sourcesContent":["/**\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 // Add/remove dark class for Tailwind CSS dark mode\r\n if (resolvedMode === 'dark') {\r\n root.classList.add('dark')\r\n } else {\r\n root.classList.remove('dark')\r\n }\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}-${
|
|
1
|
+
{"version":3,"file":"ThemeProvider.js","sources":["../../../src/design-system/themes/ThemeProvider.tsx"],"sourcesContent":["/**\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 // Add/remove dark class for Tailwind CSS dark mode\r\n if (resolvedMode === 'dark') {\r\n root.classList.add('dark')\r\n } else {\r\n root.classList.remove('dark')\r\n }\r\n\r\n // Flatten and inject CSS variables.\r\n // Keys are converted to kebab-case so generated names match the ones the\r\n // stylesheets consume (e.g. softHover -> --brycks-primary-soft-hover).\r\n const toKebab = (key: string) => key.replace(/[A-Z]/g, (m) => `-${m.toLowerCase()}`)\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 segment = toKebab(key)\r\n const varName = prefix ? `${prefix}-${segment}` : segment\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"],"names":["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","darkTheme","lightTheme","setMode","useCallback","newMode","toggleMode","root","toKebab","flattenColors","obj","prefix","value","segment","varName","cssVars","contextValue","useTheme","context","useContext","useThemeColors"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e={hide:-1,auto:"auto",base:0,docked:10,dropdown:1e3,sticky:1100,banner:1200,overlay:1300,modal:1400,drawer:1400,popover:1500,skipLink:1600,toast:1700,tooltip:1800};exports.zIndex=e;
|
|
2
2
|
//# sourceMappingURL=zIndex.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zIndex.cjs","sources":["../../../src/design-system/tokens/zIndex.ts"],"sourcesContent":["/**\r\n * Brycks Design System - Z-Index Tokens\r\n *\r\n * Layering system for consistent stacking context management.\r\n */\r\n\r\n/** Z-index scale */\r\nexport const zIndex = {\r\n /** Hidden - below everything */\r\n hide: -1,\r\n /** Auto - default stacking */\r\n auto: 'auto',\r\n /** Base - normal content */\r\n base: 0,\r\n /** Docked - sticky elements */\r\n docked: 10,\r\n /** Dropdown - menus, selects */\r\n dropdown: 1000,\r\n /** Sticky - sticky headers */\r\n sticky: 1100,\r\n /** Banner - notification banners */\r\n banner: 1200,\r\n /** Overlay - backdrop overlays */\r\n overlay: 1300,\r\n /** Modal - dialog windows */\r\n modal: 1400,\r\n /** Popover - popovers, tooltips */\r\n popover: 1500,\r\n /** Skiplink - accessibility skip links */\r\n skipLink: 1600,\r\n /** Toast - notification toasts */\r\n toast: 1700,\r\n /** Tooltip - tooltips (highest) */\r\n tooltip: 1800,\r\n} as const\r\n\r\nexport type ZIndex = keyof typeof zIndex\r\n"],"names":["zIndex"],"mappings":"gFAOO,MAAMA,EAAS,CAEpB,KAAM,GAEN,KAAM,OAEN,KAAM,EAEN,OAAQ,GAER,SAAU,IAEV,OAAQ,KAER,OAAQ,KAER,QAAS,KAET,MAAO,KAEP,QAAS,KAET,SAAU,KAEV,MAAO,KAEP,QAAS,IACX"}
|
|
1
|
+
{"version":3,"file":"zIndex.cjs","sources":["../../../src/design-system/tokens/zIndex.ts"],"sourcesContent":["/**\r\n * Brycks Design System - Z-Index Tokens\r\n *\r\n * Layering system for consistent stacking context management.\r\n */\r\n\r\n/** Z-index scale */\r\nexport const zIndex = {\r\n /** Hidden - below everything */\r\n hide: -1,\r\n /** Auto - default stacking */\r\n auto: 'auto',\r\n /** Base - normal content */\r\n base: 0,\r\n /** Docked - sticky elements */\r\n docked: 10,\r\n /** Dropdown - menus, selects */\r\n dropdown: 1000,\r\n /** Sticky - sticky headers */\r\n sticky: 1100,\r\n /** Banner - notification banners */\r\n banner: 1200,\r\n /** Overlay - backdrop overlays */\r\n overlay: 1300,\r\n /** Modal - dialog windows */\r\n modal: 1400,\r\n /** Drawer - side panels (same layer as modal) */\r\n drawer: 1400,\r\n /** Popover - popovers, tooltips */\r\n popover: 1500,\r\n /** Skiplink - accessibility skip links */\r\n skipLink: 1600,\r\n /** Toast - notification toasts */\r\n toast: 1700,\r\n /** Tooltip - tooltips (highest) */\r\n tooltip: 1800,\r\n} as const\r\n\r\nexport type ZIndex = keyof typeof zIndex\r\n"],"names":["zIndex"],"mappings":"gFAOO,MAAMA,EAAS,CAEpB,KAAM,GAEN,KAAM,OAEN,KAAM,EAEN,OAAQ,GAER,SAAU,IAEV,OAAQ,KAER,OAAQ,KAER,QAAS,KAET,MAAO,KAEP,OAAQ,KAER,QAAS,KAET,SAAU,KAEV,MAAO,KAEP,QAAS,IACX"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zIndex.js","sources":["../../../src/design-system/tokens/zIndex.ts"],"sourcesContent":["/**\r\n * Brycks Design System - Z-Index Tokens\r\n *\r\n * Layering system for consistent stacking context management.\r\n */\r\n\r\n/** Z-index scale */\r\nexport const zIndex = {\r\n /** Hidden - below everything */\r\n hide: -1,\r\n /** Auto - default stacking */\r\n auto: 'auto',\r\n /** Base - normal content */\r\n base: 0,\r\n /** Docked - sticky elements */\r\n docked: 10,\r\n /** Dropdown - menus, selects */\r\n dropdown: 1000,\r\n /** Sticky - sticky headers */\r\n sticky: 1100,\r\n /** Banner - notification banners */\r\n banner: 1200,\r\n /** Overlay - backdrop overlays */\r\n overlay: 1300,\r\n /** Modal - dialog windows */\r\n modal: 1400,\r\n /** Popover - popovers, tooltips */\r\n popover: 1500,\r\n /** Skiplink - accessibility skip links */\r\n skipLink: 1600,\r\n /** Toast - notification toasts */\r\n toast: 1700,\r\n /** Tooltip - tooltips (highest) */\r\n tooltip: 1800,\r\n} as const\r\n\r\nexport type ZIndex = keyof typeof zIndex\r\n"],"names":["zIndex"],"mappings":"AAOO,MAAMA,IAAS;AAAA;AAAA,EAEpB,MAAM;AAAA;AAAA,EAEN,MAAM;AAAA;AAAA,EAEN,MAAM;AAAA;AAAA,EAEN,QAAQ;AAAA;AAAA,EAER,UAAU;AAAA;AAAA,EAEV,QAAQ;AAAA;AAAA,EAER,QAAQ;AAAA;AAAA,EAER,SAAS;AAAA;AAAA,EAET,OAAO;AAAA;AAAA,EAEP,SAAS;AAAA;AAAA,EAET,UAAU;AAAA;AAAA,EAEV,OAAO;AAAA;AAAA,EAEP,SAAS;AACX;"}
|
|
1
|
+
{"version":3,"file":"zIndex.js","sources":["../../../src/design-system/tokens/zIndex.ts"],"sourcesContent":["/**\r\n * Brycks Design System - Z-Index Tokens\r\n *\r\n * Layering system for consistent stacking context management.\r\n */\r\n\r\n/** Z-index scale */\r\nexport const zIndex = {\r\n /** Hidden - below everything */\r\n hide: -1,\r\n /** Auto - default stacking */\r\n auto: 'auto',\r\n /** Base - normal content */\r\n base: 0,\r\n /** Docked - sticky elements */\r\n docked: 10,\r\n /** Dropdown - menus, selects */\r\n dropdown: 1000,\r\n /** Sticky - sticky headers */\r\n sticky: 1100,\r\n /** Banner - notification banners */\r\n banner: 1200,\r\n /** Overlay - backdrop overlays */\r\n overlay: 1300,\r\n /** Modal - dialog windows */\r\n modal: 1400,\r\n /** Drawer - side panels (same layer as modal) */\r\n drawer: 1400,\r\n /** Popover - popovers, tooltips */\r\n popover: 1500,\r\n /** Skiplink - accessibility skip links */\r\n skipLink: 1600,\r\n /** Toast - notification toasts */\r\n toast: 1700,\r\n /** Tooltip - tooltips (highest) */\r\n tooltip: 1800,\r\n} as const\r\n\r\nexport type ZIndex = keyof typeof zIndex\r\n"],"names":["zIndex"],"mappings":"AAOO,MAAMA,IAAS;AAAA;AAAA,EAEpB,MAAM;AAAA;AAAA,EAEN,MAAM;AAAA;AAAA,EAEN,MAAM;AAAA;AAAA,EAEN,QAAQ;AAAA;AAAA,EAER,UAAU;AAAA;AAAA,EAEV,QAAQ;AAAA;AAAA,EAER,QAAQ;AAAA;AAAA,EAER,SAAS;AAAA;AAAA,EAET,OAAO;AAAA;AAAA,EAEP,QAAQ;AAAA;AAAA,EAER,SAAS;AAAA;AAAA,EAET,UAAU;AAAA;AAAA,EAEV,OAAO;AAAA;AAAA,EAEP,SAAS;AACX;"}
|
package/dist/feedback.d.ts
CHANGED
|
@@ -27,6 +27,8 @@ export declare interface AlertProps extends Omit<HTMLAttributes<HTMLDivElement>,
|
|
|
27
27
|
isDismissible?: boolean;
|
|
28
28
|
/** Callback when dismissed */
|
|
29
29
|
onDismiss?: () => void;
|
|
30
|
+
/** Accessible label of the dismiss button */
|
|
31
|
+
dismissLabel?: string;
|
|
30
32
|
/** Custom class name */
|
|
31
33
|
className?: string;
|
|
32
34
|
/** Test ID */
|
|
@@ -37,6 +39,71 @@ export declare interface AlertProps extends Omit<HTMLAttributes<HTMLDivElement>,
|
|
|
37
39
|
|
|
38
40
|
export declare type AlertVariant = 'subtle' | 'solid' | 'outline';
|
|
39
41
|
|
|
42
|
+
export declare const Banner: default_2.ForwardRefExoticComponent<BannerProps & default_2.RefAttributes<HTMLDivElement>>;
|
|
43
|
+
|
|
44
|
+
export declare type BannerIntent = 'info' | 'success' | 'warning' | 'error' | 'neutral';
|
|
45
|
+
|
|
46
|
+
export declare interface BannerProps extends Omit<HTMLAttributes<HTMLDivElement>, 'title'> {
|
|
47
|
+
/** Visual intent/status */
|
|
48
|
+
intent?: BannerIntent;
|
|
49
|
+
/** Banner title (stronger weight, sits above the description) */
|
|
50
|
+
title?: ReactNode;
|
|
51
|
+
/** Custom icon (overrides the default per-intent icon) */
|
|
52
|
+
icon?: ReactNode;
|
|
53
|
+
/** Whether to show the leading icon */
|
|
54
|
+
showIcon?: boolean;
|
|
55
|
+
/** Action element (button, link) shown on the trailing edge */
|
|
56
|
+
action?: ReactNode;
|
|
57
|
+
/** Whether the banner can be dismissed */
|
|
58
|
+
isDismissible?: boolean;
|
|
59
|
+
/** Callback when dismissed */
|
|
60
|
+
onDismiss?: () => void;
|
|
61
|
+
/** Accessible label of the dismiss button */
|
|
62
|
+
dismissLabel?: string;
|
|
63
|
+
/**
|
|
64
|
+
* ARIA live-region role. Defaults to `alert` for warning/error and
|
|
65
|
+
* `status` for info/success/neutral. Override when the default is wrong.
|
|
66
|
+
*/
|
|
67
|
+
role?: 'alert' | 'status';
|
|
68
|
+
/** Custom class name */
|
|
69
|
+
className?: string;
|
|
70
|
+
/** Test ID */
|
|
71
|
+
testId?: string;
|
|
72
|
+
/** Banner content (description) */
|
|
73
|
+
children?: ReactNode;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
export declare const ConfirmDialog: ForwardRefExoticComponent<ConfirmDialogProps & RefAttributes<HTMLDivElement>>;
|
|
77
|
+
|
|
78
|
+
export declare interface ConfirmDialogProps {
|
|
79
|
+
/** Whether the dialog is open */
|
|
80
|
+
isOpen: boolean;
|
|
81
|
+
/** Callback when the dialog should close (cancel / overlay / escape) */
|
|
82
|
+
onClose: () => void;
|
|
83
|
+
/** Callback when the user confirms */
|
|
84
|
+
onConfirm: () => void;
|
|
85
|
+
/** Dialog title */
|
|
86
|
+
title: ReactNode;
|
|
87
|
+
/** Body message (use `children` for richer content) */
|
|
88
|
+
message?: ReactNode;
|
|
89
|
+
/** Label of the confirm button */
|
|
90
|
+
confirmLabel?: string;
|
|
91
|
+
/** Label of the cancel button */
|
|
92
|
+
cancelLabel?: string;
|
|
93
|
+
/** Accessible label of the modal close button */
|
|
94
|
+
closeLabel?: string;
|
|
95
|
+
/** Visual variant — `danger` for destructive actions */
|
|
96
|
+
variant?: ConfirmDialogVariant;
|
|
97
|
+
/** Whether the confirm action is in progress (disables cancel, spins confirm) */
|
|
98
|
+
isLoading?: boolean;
|
|
99
|
+
/** Test ID */
|
|
100
|
+
testId?: string;
|
|
101
|
+
/** Richer body content (rendered below `message`) */
|
|
102
|
+
children?: ReactNode;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
export declare type ConfirmDialogVariant = 'default' | 'danger';
|
|
106
|
+
|
|
40
107
|
export declare const Drawer: ForwardRefExoticComponent<DrawerProps & RefAttributes<HTMLDivElement>>;
|
|
41
108
|
|
|
42
109
|
export declare type DrawerPlacement = 'left' | 'right' | 'top' | 'bottom';
|
|
@@ -58,6 +125,8 @@ export declare interface DrawerProps extends Omit<HTMLAttributes<HTMLDivElement>
|
|
|
58
125
|
closeOnEscape?: boolean;
|
|
59
126
|
/** Whether to show close button */
|
|
60
127
|
showCloseButton?: boolean;
|
|
128
|
+
/** Accessible label of the close button */
|
|
129
|
+
closeLabel?: string;
|
|
61
130
|
/** Whether to show overlay */
|
|
62
131
|
showOverlay?: boolean;
|
|
63
132
|
/** Custom class name */
|
|
@@ -87,6 +156,10 @@ export declare interface ModalProps extends Omit<HTMLAttributes<HTMLDivElement>,
|
|
|
87
156
|
closeOnEscape?: boolean;
|
|
88
157
|
/** Whether to show close button */
|
|
89
158
|
showCloseButton?: boolean;
|
|
159
|
+
/** Accessible label of the close button */
|
|
160
|
+
closeLabel?: string;
|
|
161
|
+
/** Footer content (e.g. action buttons), pinned below the scrollable body */
|
|
162
|
+
footer?: ReactNode;
|
|
90
163
|
/** Custom class name */
|
|
91
164
|
className?: string;
|
|
92
165
|
/** Test ID */
|
|
@@ -124,8 +197,6 @@ export declare interface PopoverProps extends Omit<HTMLAttributes<HTMLDivElement
|
|
|
124
197
|
closeDelay?: number;
|
|
125
198
|
/** Whether to close on outside click */
|
|
126
199
|
closeOnOutsideClick?: boolean;
|
|
127
|
-
/** Whether to show arrow */
|
|
128
|
-
showArrow?: boolean;
|
|
129
200
|
/** Custom class name for content */
|
|
130
201
|
className?: string;
|
|
131
202
|
/** Test ID */
|
|
@@ -200,6 +271,8 @@ export declare interface ToastProps extends Omit<HTMLAttributes<HTMLDivElement>,
|
|
|
200
271
|
onClose?: () => void;
|
|
201
272
|
/** Whether to show close button */
|
|
202
273
|
showCloseButton?: boolean;
|
|
274
|
+
/** Accessible label of the close button */
|
|
275
|
+
closeLabel?: string;
|
|
203
276
|
/** Action button */
|
|
204
277
|
action?: ReactNode;
|
|
205
278
|
/** Custom icon */
|
package/dist/form.d.ts
CHANGED
|
@@ -77,10 +77,20 @@ export declare interface ComboboxProps {
|
|
|
77
77
|
filterFn?: (option: ComboboxOption, inputValue: string) => boolean;
|
|
78
78
|
/** Text to show when no options match */
|
|
79
79
|
emptyText?: string;
|
|
80
|
+
/** Whether options are being loaded asynchronously */
|
|
81
|
+
isLoading?: boolean;
|
|
82
|
+
/** Text to show while loading */
|
|
83
|
+
loadingText?: string;
|
|
80
84
|
/** Whether to allow creating new options */
|
|
81
85
|
creatable?: boolean;
|
|
82
86
|
/** Callback when creating new option */
|
|
83
87
|
onCreate?: (inputValue: string) => void;
|
|
88
|
+
/** Label of the create-option button */
|
|
89
|
+
createLabel?: (inputValue: string) => ReactNode;
|
|
90
|
+
/** Accessible label of the clear button */
|
|
91
|
+
clearLabel?: string;
|
|
92
|
+
/** Accessible label of the options listbox (when no aria-label is given) */
|
|
93
|
+
listboxLabel?: string;
|
|
84
94
|
/** Custom class name */
|
|
85
95
|
className?: string;
|
|
86
96
|
/** Test ID */
|
|
@@ -414,6 +424,8 @@ export declare interface MultiSelectProps {
|
|
|
414
424
|
|
|
415
425
|
export declare type MultiSelectSize = 'sm' | 'md' | 'lg';
|
|
416
426
|
|
|
427
|
+
declare type NativeInputProps = Omit<InputHTMLAttributes<HTMLInputElement>, 'size' | 'value' | 'defaultValue' | 'onChange' | 'type'>;
|
|
428
|
+
|
|
417
429
|
export declare const Radio: ForwardRefExoticComponent<RadioProps & RefAttributes<HTMLInputElement>>;
|
|
418
430
|
|
|
419
431
|
export declare function RadioGroup({ name, value: controlledValue, defaultValue, onChange, disabled, size, orientation, gap, children, className, style, }: RadioGroupProps): JSX.Element;
|
|
@@ -503,6 +515,31 @@ export declare interface RatingProps {
|
|
|
503
515
|
|
|
504
516
|
export declare type RatingSize = 'sm' | 'md' | 'lg' | 'xl';
|
|
505
517
|
|
|
518
|
+
export declare const SearchInput: ForwardRefExoticComponent<SearchInputProps & RefAttributes<HTMLInputElement>>;
|
|
519
|
+
|
|
520
|
+
export declare interface SearchInputProps extends NativeInputProps {
|
|
521
|
+
/** Current value (controlled) */
|
|
522
|
+
value?: string;
|
|
523
|
+
/** Initial value (uncontrolled) */
|
|
524
|
+
defaultValue?: string;
|
|
525
|
+
/** Callback when the value changes (typing or clearing) */
|
|
526
|
+
onValueChange?: (value: string) => void;
|
|
527
|
+
/** Callback fired when the clear button is pressed */
|
|
528
|
+
onClear?: () => void;
|
|
529
|
+
/** Input size */
|
|
530
|
+
size?: InputSize;
|
|
531
|
+
/** Placeholder text */
|
|
532
|
+
placeholder?: string;
|
|
533
|
+
/** Custom leading element (defaults to a search icon) */
|
|
534
|
+
leftElement?: ReactNode;
|
|
535
|
+
/** Accessible label of the clear button */
|
|
536
|
+
clearLabel?: string;
|
|
537
|
+
/** Custom class name */
|
|
538
|
+
className?: string;
|
|
539
|
+
/** Test ID */
|
|
540
|
+
testId?: string;
|
|
541
|
+
}
|
|
542
|
+
|
|
506
543
|
export declare const Select: ForwardRefExoticComponent<SelectProps & RefAttributes<HTMLSelectElement>>;
|
|
507
544
|
|
|
508
545
|
export declare interface SelectProps extends Omit<SelectHTMLAttributes<HTMLSelectElement>, 'size'> {
|
|
@@ -609,6 +646,10 @@ export declare interface TagInputProps {
|
|
|
609
646
|
suggestions?: TagItem[];
|
|
610
647
|
/** Custom tag renderer */
|
|
611
648
|
renderTag?: (tag: TagItem, onRemove: () => void) => ReactNode;
|
|
649
|
+
/** Message shown when the tag limit is reached */
|
|
650
|
+
maxTagsMessage?: (maxTags: number) => string;
|
|
651
|
+
/** Message shown when a duplicate tag is rejected */
|
|
652
|
+
duplicateMessage?: string;
|
|
612
653
|
/** Label for accessibility */
|
|
613
654
|
'aria-label'?: string;
|
|
614
655
|
/** Custom class name */
|
package/dist/index.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});;/* empty css */const i=require("./hooks/useMediaQuery.cjs"),V=require("./hooks/useDisclosure.cjs"),E=require("./hooks/useClickOutside.cjs"),W=require("./hooks/useKeyboardNavigation.cjs"),N=require("./hooks/useFocusTrap.cjs"),D=require("./hooks/useId.cjs"),Q=require("./hooks/useControllable.cjs"),n=require("./utils/styles.cjs"),T=require("./utils/lazyComponent.cjs"),o=require("./design-system/tokens/colors.cjs"),z=require("./design-system/tokens/spacing.cjs"),s=require("./design-system/tokens/typography.cjs"),b=require("./design-system/tokens/shadows.cjs"),I=require("./design-system/tokens/borders.cjs"),y=require("./design-system/tokens/breakpoints.cjs"),K=require("./design-system/tokens/zIndex.cjs"),d=require("./design-system/tokens/motion.cjs"),e=require("./design-system/primitives/sizing.cjs"),r=require("./design-system/primitives/layout.cjs"),h=require("./design-system/primitives/focus.cjs"),c=require("./design-system/primitives/transitions.cjs"),l=require("./design-system/primitives/typography.cjs"),F=require("./design-system/primitives/opacity.cjs"),C=require("./design-system/themes/ThemeProvider.cjs"),Z=require("./design-system/themes/lightTheme.cjs"),X=require("./design-system/themes/darkTheme.cjs"),Y=require("./design-system/themes/cssVariables.cjs"),j=require("./components/layout/Box/Box.cjs"),P=require("./components/layout/Stack/Stack.cjs"),f=require("./components/layout/Grid/Grid.cjs"),$=require("./components/layout/Container/Container.cjs"),p=require("./components/layout/Card/Card.cjs"),J=require("./components/layout/Section/Section.cjs"),U=require("./components/layout/Spacer/Spacer.cjs"),v=require("./components/layout/Flex/Flex.cjs"),_=require("./components/layout/AspectRatio/AspectRatio.cjs"),ee=require("./components/media/Image/Image.cjs"),re=require("./components/media/Video/Video.cjs"),oe=require("./components/media/ImageThumbnail/ImageThumbnail.cjs"),k=require("./components/typography/Text/Text.cjs"),x=require("./components/typography/Heading/Heading.cjs"),L=require("./components/primitives/Button/Button.cjs"),te=require("./components/primitives/Icon/Icon.cjs"),ie=require("./components/primitives/Icon/iconPaths.cjs"),ne=require("./components/form/Input/Input.cjs"),se=require("./components/form/TextField/TextField.cjs"),ae=require("./components/form/Select/Select.cjs"),ce=require("./components/form/Checkbox/Checkbox.cjs"),ue=require("./components/form/Switch/Switch.cjs"),de=require("./components/form/Textarea/Textarea.cjs"),w=require("./components/form/Radio/Radio.cjs"),le=require("./components/form/Slider/Slider.cjs"),pe=require("./components/form/DateInput/DateInput.cjs"),me=require("./components/form/FileInput/FileInput.cjs"),ge=require("./components/form/FormField/FormField.cjs"),qe=require("./components/form/FieldError/FieldError.cjs"),Se=require("./components/form/Form/Form.cjs"),Te=require("./components/form/FormLabel/FormLabel.cjs"),be=require("./components/form/FormGroup/FormGroup.cjs"),Ie=require("./components/form/DropZone/DropZone.cjs"),ye=require("./components/form/FormCard/FormCard.cjs"),he=require("./components/feedback/Modal/Modal.cjs"),Fe=require("./components/feedback/Alert/Alert.cjs"),Ce=require("./components/feedback/Tooltip/Tooltip.cjs"),A=require("./components/feedback/Toast/Toast.cjs"),Pe=require("./components/feedback/Toast/ToastContext.cjs"),De=require("./components/feedback/Drawer/Drawer.cjs"),ze=require("./components/feedback/Popover/Popover.cjs"),fe=require("./components/feedback/Progress/Progress.cjs"),u=require("./components/navigation/Tabs/Tabs.cjs"),m=require("./components/navigation/Accordion/Accordion.cjs"),g=require("./components/navigation/Dropdown/Dropdown.cjs"),q=require("./components/navigation/Menu/Menu.cjs"),ve=require("./components/navigation/Pagination/Pagination.cjs"),M=require("./components/navigation/Breadcrumb/Breadcrumb.cjs"),t=require("./components/data/Table/Table.cjs"),S=require("./components/data/List/List.cjs"),H=require("./components/data/InfoItem/InfoItem.cjs"),ke=require("./components/utility/Badge/Badge.cjs"),R=require("./components/utility/Loader/Loader.cjs"),B=require("./components/utility/Skeleton/Skeleton.cjs"),xe=require("./components/utility/Divider/Divider.cjs"),O=require("./components/utility/EmptyState/EmptyState.cjs"),Le=require("./components/utility/Portal/Portal.cjs"),we=require("./components/utility/FocusTrap/FocusTrap.cjs"),Ae=require("./components/utility/Overlay/Overlay.cjs"),G=require("./components/utility/ScreenReaderOnly/ScreenReaderOnly.cjs"),Me=require("./components/utility/Avatar/Avatar.cjs"),He=require("./components/utility/Logo/Logo.cjs"),a=require("./components/layout/Semantic/Semantic.cjs");exports.useIsDesktop=i.useIsDesktop;exports.useIsMobile=i.useIsMobile;exports.useIsTablet=i.useIsTablet;exports.useMediaQuery=i.useMediaQuery;exports.usePrefersDarkMode=i.usePrefersDarkMode;exports.usePrefersReducedMotion=i.usePrefersReducedMotion;exports.useDisclosure=V.useDisclosure;exports.useClickOutside=E.useClickOutside;exports.useKeyboardNavigation=W.useKeyboardNavigation;exports.useFocusTrap=N.useFocusTrap;exports.useId=D.useId;exports.useIds=D.useIds;exports.useControllable=Q.useControllable;exports.buildSpacingStyles=n.buildSpacingStyles;exports.cx=n.cx;exports.generateId=n.generateId;exports.getSpacingValue=n.getSpacingValue;exports.hexToRgba=n.hexToRgba;exports.spacingToCss=n.spacingToCss;exports.createInteractionLazyComponent=T.createInteractionLazyComponent;exports.createLazyComponent=T.createLazyComponent;exports.preloadComponents=T.preloadComponents;exports.accent=o.accent;exports.colors=o.colors;exports.error=o.error;exports.info=o.info;exports.neutrals=o.neutrals;exports.primary=o.primary;exports.success=o.success;exports.warning=o.warning;exports.semanticSpacing=z.semanticSpacing;exports.spacing=z.spacing;exports.fontFamilies=s.fontFamilies;exports.fontSizes=s.fontSizes;exports.fontWeights=s.fontWeights;exports.letterSpacings=s.letterSpacings;exports.lineHeights=s.lineHeights;exports.textStyles=s.textStyles;exports.focusRings=b.focusRings;exports.glows=b.glows;exports.shadows=b.shadows;exports.borderStyles=I.borderStyles;exports.borderWidths=I.borderWidths;exports.radii=I.radii;exports.breakpoints=y.breakpoints;exports.containers=y.containers;exports.mediaQueries=y.mediaQueries;exports.zIndex=K.zIndex;exports.animations=d.animations;exports.durations=d.durations;exports.easings=d.easings;exports.transitions=d.transitions;exports.componentGap=e.componentGap;exports.componentHeights=e.componentHeights;exports.componentPaddingX=e.componentPaddingX;exports.componentPaddingY=e.componentPaddingY;exports.controlSizes=e.controlSizes;exports.iconSizes=e.iconSizes;exports.modalWidths=e.modalWidths;exports.popoverSizing=e.popoverSizing;exports.switchSizes=e.switchSizes;exports.avatarSizes=r.avatarSizes;exports.contentPadding=r.contentPadding;exports.headerSizes=r.headerSizes;exports.iconButtonSizes=r.iconButtonSizes;exports.pageHeaderSpacing=r.pageHeaderSpacing;exports.quickActionSizes=r.quickActionSizes;exports.searchInputSizes=r.searchInputSizes;exports.sidebarSizes=r.sidebarSizes;exports.statCardSizes=r.statCardSizes;exports.focusRing=h.focusRing;exports.focusRingOffset=h.focusRingOffset;exports.focusStyles=h.focusStyles;exports.duration=c.duration;exports.easing=c.easing;exports.keyframes=c.keyframes;exports.transition=c.transition;exports.transitionProperties=c.transitionProperties;exports.componentFontSize=l.componentFontSize;exports.componentFontWeight=l.componentFontWeight;exports.componentLineHeight=l.componentLineHeight;exports.componentTypography=l.componentTypography;exports.opacity=F.opacity;exports.scale=F.scale;exports.stateOpacity=F.stateOpacity;exports.ThemeProvider=C.ThemeProvider;exports.useTheme=C.useTheme;exports.useThemeColors=C.useThemeColors;exports.lightTheme=Z.lightTheme;exports.darkTheme=X.darkTheme;exports.cssVar=Y.cssVar;exports.Box=j.Box;exports.HStack=P.HStack;exports.Stack=P.Stack;exports.VStack=P.VStack;exports.Grid=f.Grid;exports.GridItem=f.GridItem;exports.Container=$.Container;exports.Card=p.Card;exports.CardBody=p.CardBody;exports.CardFooter=p.CardFooter;exports.CardHeader=p.CardHeader;exports.Section=J.Section;exports.Spacer=U.Spacer;exports.Flex=v.Flex;exports.FlexItem=v.FlexItem;exports.AspectRatio=_.AspectRatio;exports.Image=ee.Image;exports.Video=re.Video;exports.ImageThumbnail=oe.ImageThumbnail;exports.Code=k.Code;exports.Text=k.Text;exports.Display=x.Display;exports.Heading=x.Heading;exports.Button=L.Button;exports.IconButton=L.IconButton;exports.Icon=te.Icon;exports.iconPaths=ie.iconPaths;exports.Input=ne.Input;exports.TextField=se.TextField;exports.Select=ae.Select;exports.Checkbox=ce.Checkbox;exports.Switch=ue.Switch;exports.Textarea=de.Textarea;exports.Radio=w.Radio;exports.RadioGroup=w.RadioGroup;exports.Slider=le.Slider;exports.DateInput=pe.DateInput;exports.FileInput=me.FileInput;exports.FormField=ge.FormField;exports.FieldError=qe.FieldError;exports.Form=Se.Form;exports.FormLabel=Te.FormLabel;exports.FormGroup=be.FormGroup;exports.DropZone=Ie.DropZone;exports.FormCard=ye.FormCard;exports.Modal=he.Modal;exports.Alert=Fe.Alert;exports.Tooltip=Ce.Tooltip;exports.Toast=A.Toast;exports.ToastProvider=A.ToastProvider;exports.useToast=Pe.useToast;exports.Drawer=De.Drawer;exports.Popover=ze.Popover;exports.Progress=fe.Progress;exports.Tab=u.Tab;exports.TabList=u.TabList;exports.TabPanel=u.TabPanel;exports.TabPanels=u.TabPanels;exports.Tabs=u.Tabs;exports.Accordion=m.Accordion;exports.AccordionContent=m.AccordionContent;exports.AccordionItem=m.AccordionItem;exports.AccordionTrigger=m.AccordionTrigger;exports.Dropdown=g.Dropdown;exports.DropdownDivider=g.DropdownDivider;exports.DropdownItem=g.DropdownItem;exports.DropdownLabel=g.DropdownLabel;exports.Menu=q.Menu;exports.MenuDivider=q.MenuDivider;exports.MenuGroup=q.MenuGroup;exports.MenuItem=q.MenuItem;exports.Pagination=ve.Pagination;exports.Breadcrumb=M.Breadcrumb;exports.BreadcrumbItem=M.BreadcrumbItem;exports.Table=t.Table;exports.TableBody=t.TableBody;exports.TableCaption=t.TableCaption;exports.TableCell=t.TableCell;exports.TableFoot=t.TableFoot;exports.TableHead=t.TableHead;exports.TableHeader=t.TableHeader;exports.TableRow=t.TableRow;exports.List=S.List;exports.ListDivider=S.ListDivider;exports.ListHeader=S.ListHeader;exports.ListItem=S.ListItem;exports.InfoItem=H.InfoItem;exports.InfoList=H.InfoList;exports.Badge=ke.Badge;exports.Loader=R.Loader;exports.Spinner=R.Spinner;exports.Skeleton=B.Skeleton;exports.SkeletonText=B.SkeletonText;exports.Divider=xe.Divider;exports.EmptyState=O.EmptyState;exports.EmptyStateIcon=O.EmptyStateIcon;exports.Portal=Le.Portal;exports.FocusTrap=we.FocusTrap;exports.Overlay=Ae.Overlay;exports.ScreenReaderOnly=G.ScreenReaderOnly;exports.SrOnly=G.SrOnly;exports.Avatar=Me.Avatar;exports.Logo=He.Logo;exports.Article=a.Article;exports.Aside=a.Aside;exports.Footer=a.Footer;exports.Header=a.Header;exports.Main=a.Main;exports.Nav=a.Nav;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});;/* empty css */const i=require("./hooks/useMediaQuery.cjs"),E=require("./hooks/useDisclosure.cjs"),V=require("./hooks/useClickOutside.cjs"),W=require("./hooks/useKeyboardNavigation.cjs"),K=require("./hooks/useFocusTrap.cjs"),P=require("./hooks/useId.cjs"),N=require("./hooks/useControllable.cjs"),n=require("./utils/styles.cjs"),T=require("./utils/lazyComponent.cjs"),t=require("./design-system/tokens/colors.cjs"),f=require("./design-system/tokens/spacing.cjs"),s=require("./design-system/tokens/typography.cjs"),b=require("./design-system/tokens/shadows.cjs"),I=require("./design-system/tokens/borders.cjs"),y=require("./design-system/tokens/breakpoints.cjs"),Q=require("./design-system/tokens/zIndex.cjs"),d=require("./design-system/tokens/motion.cjs"),r=require("./design-system/primitives/sizing.cjs"),o=require("./design-system/primitives/layout.cjs"),h=require("./design-system/primitives/focus.cjs"),c=require("./design-system/primitives/transitions.cjs"),l=require("./design-system/primitives/typography.cjs"),C=require("./design-system/primitives/opacity.cjs"),F=require("./design-system/themes/ThemeProvider.cjs"),Z=require("./design-system/themes/lightTheme.cjs"),X=require("./design-system/themes/darkTheme.cjs"),Y=require("./design-system/themes/cssVariables.cjs"),j=require("./components/layout/Box/Box.cjs"),D=require("./components/layout/Stack/Stack.cjs"),z=require("./components/layout/Grid/Grid.cjs"),$=require("./components/layout/Container/Container.cjs"),p=require("./components/layout/Card/Card.cjs"),J=require("./components/layout/Section/Section.cjs"),U=require("./components/layout/Spacer/Spacer.cjs"),k=require("./components/layout/Flex/Flex.cjs"),_=require("./components/layout/AspectRatio/AspectRatio.cjs"),ee=require("./components/media/Image/Image.cjs"),re=require("./components/media/Video/Video.cjs"),oe=require("./components/media/ImageThumbnail/ImageThumbnail.cjs"),v=require("./components/typography/Text/Text.cjs"),x=require("./components/typography/Heading/Heading.cjs"),L=require("./components/primitives/Button/Button.cjs"),te=require("./components/primitives/Icon/Icon.cjs"),ie=require("./components/primitives/Icon/iconPaths.cjs"),ne=require("./components/form/Input/Input.cjs"),se=require("./components/form/SearchInput/SearchInput.cjs"),ae=require("./components/form/TextField/TextField.cjs"),ce=require("./components/form/Select/Select.cjs"),ue=require("./components/form/Checkbox/Checkbox.cjs"),de=require("./components/form/Switch/Switch.cjs"),le=require("./components/form/Textarea/Textarea.cjs"),w=require("./components/form/Radio/Radio.cjs"),pe=require("./components/form/Slider/Slider.cjs"),me=require("./components/form/DateInput/DateInput.cjs"),ge=require("./components/form/FileInput/FileInput.cjs"),qe=require("./components/form/FormField/FormField.cjs"),Se=require("./components/form/FieldError/FieldError.cjs"),Te=require("./components/form/Form/Form.cjs"),be=require("./components/form/FormLabel/FormLabel.cjs"),Ie=require("./components/form/FormGroup/FormGroup.cjs"),ye=require("./components/form/DropZone/DropZone.cjs"),he=require("./components/form/FormCard/FormCard.cjs"),Ce=require("./components/feedback/Modal/Modal.cjs"),Fe=require("./components/feedback/Alert/Alert.cjs"),De=require("./components/feedback/Banner/Banner.cjs"),Pe=require("./components/feedback/ConfirmDialog/ConfirmDialog.cjs"),fe=require("./components/feedback/Tooltip/Tooltip.cjs"),B=require("./components/feedback/Toast/Toast.cjs"),ze=require("./components/feedback/Toast/ToastContext.cjs"),ke=require("./components/feedback/Drawer/Drawer.cjs"),ve=require("./components/feedback/Popover/Popover.cjs"),xe=require("./components/feedback/Progress/Progress.cjs"),u=require("./components/navigation/Tabs/Tabs.cjs"),m=require("./components/navigation/Accordion/Accordion.cjs"),g=require("./components/navigation/Dropdown/Dropdown.cjs"),q=require("./components/navigation/Menu/Menu.cjs"),Le=require("./components/navigation/Pagination/Pagination.cjs"),A=require("./components/navigation/Breadcrumb/Breadcrumb.cjs"),we=require("./components/navigation/SegmentedControl/SegmentedControl.cjs"),e=require("./components/data/Table/Table.cjs"),S=require("./components/data/List/List.cjs"),M=require("./components/data/InfoItem/InfoItem.cjs"),Be=require("./components/utility/Badge/Badge.cjs"),H=require("./components/utility/Loader/Loader.cjs"),R=require("./components/utility/Skeleton/Skeleton.cjs"),Ae=require("./components/utility/Divider/Divider.cjs"),O=require("./components/utility/EmptyState/EmptyState.cjs"),Me=require("./components/utility/Portal/Portal.cjs"),He=require("./components/utility/FocusTrap/FocusTrap.cjs"),Re=require("./components/utility/Overlay/Overlay.cjs"),G=require("./components/utility/ScreenReaderOnly/ScreenReaderOnly.cjs"),Oe=require("./components/utility/Avatar/Avatar.cjs"),Ge=require("./components/utility/Logo/Logo.cjs"),Ee=require("./components/utility/Kbd/Kbd.cjs"),a=require("./components/layout/Semantic/Semantic.cjs");exports.useIsDesktop=i.useIsDesktop;exports.useIsMobile=i.useIsMobile;exports.useIsTablet=i.useIsTablet;exports.useMediaQuery=i.useMediaQuery;exports.usePrefersDarkMode=i.usePrefersDarkMode;exports.usePrefersReducedMotion=i.usePrefersReducedMotion;exports.useDisclosure=E.useDisclosure;exports.useClickOutside=V.useClickOutside;exports.useKeyboardNavigation=W.useKeyboardNavigation;exports.useFocusTrap=K.useFocusTrap;exports.useId=P.useId;exports.useIds=P.useIds;exports.useControllable=N.useControllable;exports.buildSpacingStyles=n.buildSpacingStyles;exports.cx=n.cx;exports.generateId=n.generateId;exports.getSpacingValue=n.getSpacingValue;exports.hexToRgba=n.hexToRgba;exports.spacingToCss=n.spacingToCss;exports.createInteractionLazyComponent=T.createInteractionLazyComponent;exports.createLazyComponent=T.createLazyComponent;exports.preloadComponents=T.preloadComponents;exports.accent=t.accent;exports.colors=t.colors;exports.error=t.error;exports.info=t.info;exports.neutrals=t.neutrals;exports.primary=t.primary;exports.success=t.success;exports.warning=t.warning;exports.semanticSpacing=f.semanticSpacing;exports.spacing=f.spacing;exports.fontFamilies=s.fontFamilies;exports.fontSizes=s.fontSizes;exports.fontWeights=s.fontWeights;exports.letterSpacings=s.letterSpacings;exports.lineHeights=s.lineHeights;exports.textStyles=s.textStyles;exports.focusRings=b.focusRings;exports.glows=b.glows;exports.shadows=b.shadows;exports.borderStyles=I.borderStyles;exports.borderWidths=I.borderWidths;exports.radii=I.radii;exports.breakpoints=y.breakpoints;exports.containers=y.containers;exports.mediaQueries=y.mediaQueries;exports.zIndex=Q.zIndex;exports.animations=d.animations;exports.durations=d.durations;exports.easings=d.easings;exports.transitions=d.transitions;exports.componentGap=r.componentGap;exports.componentHeights=r.componentHeights;exports.componentPaddingX=r.componentPaddingX;exports.componentPaddingY=r.componentPaddingY;exports.controlSizes=r.controlSizes;exports.iconSizes=r.iconSizes;exports.modalWidths=r.modalWidths;exports.popoverSizing=r.popoverSizing;exports.switchSizes=r.switchSizes;exports.avatarSizes=o.avatarSizes;exports.contentPadding=o.contentPadding;exports.headerSizes=o.headerSizes;exports.iconButtonSizes=o.iconButtonSizes;exports.pageHeaderSpacing=o.pageHeaderSpacing;exports.quickActionSizes=o.quickActionSizes;exports.searchInputSizes=o.searchInputSizes;exports.sidebarSizes=o.sidebarSizes;exports.statCardSizes=o.statCardSizes;exports.focusRing=h.focusRing;exports.focusRingOffset=h.focusRingOffset;exports.focusStyles=h.focusStyles;exports.duration=c.duration;exports.easing=c.easing;exports.keyframes=c.keyframes;exports.transition=c.transition;exports.transitionProperties=c.transitionProperties;exports.componentFontSize=l.componentFontSize;exports.componentFontWeight=l.componentFontWeight;exports.componentLineHeight=l.componentLineHeight;exports.componentTypography=l.componentTypography;exports.opacity=C.opacity;exports.scale=C.scale;exports.stateOpacity=C.stateOpacity;exports.ThemeProvider=F.ThemeProvider;exports.useTheme=F.useTheme;exports.useThemeColors=F.useThemeColors;exports.lightTheme=Z.lightTheme;exports.darkTheme=X.darkTheme;exports.cssVar=Y.cssVar;exports.Box=j.Box;exports.HStack=D.HStack;exports.Stack=D.Stack;exports.VStack=D.VStack;exports.Grid=z.Grid;exports.GridItem=z.GridItem;exports.Container=$.Container;exports.Card=p.Card;exports.CardBody=p.CardBody;exports.CardFooter=p.CardFooter;exports.CardHeader=p.CardHeader;exports.Section=J.Section;exports.Spacer=U.Spacer;exports.Flex=k.Flex;exports.FlexItem=k.FlexItem;exports.AspectRatio=_.AspectRatio;exports.Image=ee.Image;exports.Video=re.Video;exports.ImageThumbnail=oe.ImageThumbnail;exports.Code=v.Code;exports.Text=v.Text;exports.Display=x.Display;exports.Heading=x.Heading;exports.Button=L.Button;exports.IconButton=L.IconButton;exports.Icon=te.Icon;exports.iconPaths=ie.iconPaths;exports.Input=ne.Input;exports.SearchInput=se.SearchInput;exports.TextField=ae.TextField;exports.Select=ce.Select;exports.Checkbox=ue.Checkbox;exports.Switch=de.Switch;exports.Textarea=le.Textarea;exports.Radio=w.Radio;exports.RadioGroup=w.RadioGroup;exports.Slider=pe.Slider;exports.DateInput=me.DateInput;exports.FileInput=ge.FileInput;exports.FormField=qe.FormField;exports.FieldError=Se.FieldError;exports.Form=Te.Form;exports.FormLabel=be.FormLabel;exports.FormGroup=Ie.FormGroup;exports.DropZone=ye.DropZone;exports.FormCard=he.FormCard;exports.Modal=Ce.Modal;exports.Alert=Fe.Alert;exports.Banner=De.Banner;exports.ConfirmDialog=Pe.ConfirmDialog;exports.Tooltip=fe.Tooltip;exports.Toast=B.Toast;exports.ToastProvider=B.ToastProvider;exports.useToast=ze.useToast;exports.Drawer=ke.Drawer;exports.Popover=ve.Popover;exports.Progress=xe.Progress;exports.Tab=u.Tab;exports.TabList=u.TabList;exports.TabPanel=u.TabPanel;exports.TabPanels=u.TabPanels;exports.Tabs=u.Tabs;exports.Accordion=m.Accordion;exports.AccordionContent=m.AccordionContent;exports.AccordionItem=m.AccordionItem;exports.AccordionTrigger=m.AccordionTrigger;exports.Dropdown=g.Dropdown;exports.DropdownDivider=g.DropdownDivider;exports.DropdownItem=g.DropdownItem;exports.DropdownLabel=g.DropdownLabel;exports.Menu=q.Menu;exports.MenuDivider=q.MenuDivider;exports.MenuGroup=q.MenuGroup;exports.MenuItem=q.MenuItem;exports.Pagination=Le.Pagination;exports.Breadcrumb=A.Breadcrumb;exports.BreadcrumbItem=A.BreadcrumbItem;exports.SegmentedControl=we.SegmentedControl;exports.Table=e.Table;exports.TableBody=e.TableBody;exports.TableCaption=e.TableCaption;exports.TableCell=e.TableCell;exports.TableEmpty=e.TableEmpty;exports.TableFoot=e.TableFoot;exports.TableHead=e.TableHead;exports.TableHeader=e.TableHeader;exports.TableRow=e.TableRow;exports.TableSkeleton=e.TableSkeleton;exports.List=S.List;exports.ListDivider=S.ListDivider;exports.ListHeader=S.ListHeader;exports.ListItem=S.ListItem;exports.InfoItem=M.InfoItem;exports.InfoList=M.InfoList;exports.Badge=Be.Badge;exports.Loader=H.Loader;exports.Spinner=H.Spinner;exports.Skeleton=R.Skeleton;exports.SkeletonText=R.SkeletonText;exports.Divider=Ae.Divider;exports.EmptyState=O.EmptyState;exports.EmptyStateIcon=O.EmptyStateIcon;exports.Portal=Me.Portal;exports.FocusTrap=He.FocusTrap;exports.Overlay=Re.Overlay;exports.ScreenReaderOnly=G.ScreenReaderOnly;exports.SrOnly=G.SrOnly;exports.Avatar=Oe.Avatar;exports.Logo=Ge.Logo;exports.Kbd=Ee.Kbd;exports.Article=a.Article;exports.Aside=a.Aside;exports.Footer=a.Footer;exports.Header=a.Header;exports.Main=a.Main;exports.Nav=a.Nav;
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|