@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.
Files changed (168) hide show
  1. package/dist/components/data/List/List.cjs +1 -1
  2. package/dist/components/data/List/List.cjs.map +1 -1
  3. package/dist/components/data/List/List.js +1 -1
  4. package/dist/components/data/List/List.js.map +1 -1
  5. package/dist/components/data/Table/Table.cjs +1 -1
  6. package/dist/components/data/Table/Table.cjs.map +1 -1
  7. package/dist/components/data/Table/Table.js +196 -166
  8. package/dist/components/data/Table/Table.js.map +1 -1
  9. package/dist/components/data/TreeView/TreeView.cjs +1 -1
  10. package/dist/components/data/TreeView/TreeView.cjs.map +1 -1
  11. package/dist/components/data/TreeView/TreeView.js +1 -1
  12. package/dist/components/data/TreeView/TreeView.js.map +1 -1
  13. package/dist/components/data.cjs +1 -1
  14. package/dist/components/data.js +23 -21
  15. package/dist/components/feedback/Alert/Alert.cjs +1 -1
  16. package/dist/components/feedback/Alert/Alert.cjs.map +1 -1
  17. package/dist/components/feedback/Alert/Alert.js +20 -19
  18. package/dist/components/feedback/Alert/Alert.js.map +1 -1
  19. package/dist/components/feedback/Banner/Banner.cjs +2 -0
  20. package/dist/components/feedback/Banner/Banner.cjs.map +1 -0
  21. package/dist/components/feedback/Banner/Banner.js +77 -0
  22. package/dist/components/feedback/Banner/Banner.js.map +1 -0
  23. package/dist/components/feedback/ConfirmDialog/ConfirmDialog.cjs +2 -0
  24. package/dist/components/feedback/ConfirmDialog/ConfirmDialog.cjs.map +1 -0
  25. package/dist/components/feedback/ConfirmDialog/ConfirmDialog.js +68 -0
  26. package/dist/components/feedback/ConfirmDialog/ConfirmDialog.js.map +1 -0
  27. package/dist/components/feedback/Drawer/Drawer.cjs +2 -2
  28. package/dist/components/feedback/Drawer/Drawer.cjs.map +1 -1
  29. package/dist/components/feedback/Drawer/Drawer.js +58 -57
  30. package/dist/components/feedback/Drawer/Drawer.js.map +1 -1
  31. package/dist/components/feedback/Modal/Modal.cjs +1 -1
  32. package/dist/components/feedback/Modal/Modal.cjs.map +1 -1
  33. package/dist/components/feedback/Modal/Modal.js +101 -91
  34. package/dist/components/feedback/Modal/Modal.js.map +1 -1
  35. package/dist/components/feedback/Popover/Popover.cjs +2 -2
  36. package/dist/components/feedback/Popover/Popover.cjs.map +1 -1
  37. package/dist/components/feedback/Popover/Popover.js +93 -85
  38. package/dist/components/feedback/Popover/Popover.js.map +1 -1
  39. package/dist/components/feedback/Toast/Toast.cjs +2 -2
  40. package/dist/components/feedback/Toast/Toast.cjs.map +1 -1
  41. package/dist/components/feedback/Toast/Toast.js +102 -93
  42. package/dist/components/feedback/Toast/Toast.js.map +1 -1
  43. package/dist/components/feedback.cjs +1 -1
  44. package/dist/components/feedback.js +17 -13
  45. package/dist/components/feedback.js.map +1 -1
  46. package/dist/components/form/Combobox/Combobox.cjs +2 -2
  47. package/dist/components/form/Combobox/Combobox.cjs.map +1 -1
  48. package/dist/components/form/Combobox/Combobox.js +187 -167
  49. package/dist/components/form/Combobox/Combobox.js.map +1 -1
  50. package/dist/components/form/DateInput/DateInput.cjs +1 -1
  51. package/dist/components/form/DateInput/DateInput.cjs.map +1 -1
  52. package/dist/components/form/DateInput/DateInput.js +2 -2
  53. package/dist/components/form/DateInput/DateInput.js.map +1 -1
  54. package/dist/components/form/DateRangePicker/DateRangePicker.cjs +1 -1
  55. package/dist/components/form/DateRangePicker/DateRangePicker.cjs.map +1 -1
  56. package/dist/components/form/DateRangePicker/DateRangePicker.js +34 -34
  57. package/dist/components/form/DateRangePicker/DateRangePicker.js.map +1 -1
  58. package/dist/components/form/DropZone/DropZone.cjs +1 -1
  59. package/dist/components/form/DropZone/DropZone.cjs.map +1 -1
  60. package/dist/components/form/DropZone/DropZone.js +10 -10
  61. package/dist/components/form/DropZone/DropZone.js.map +1 -1
  62. package/dist/components/form/FileInput/FileInput.cjs +1 -1
  63. package/dist/components/form/FileInput/FileInput.cjs.map +1 -1
  64. package/dist/components/form/FileInput/FileInput.js +1 -1
  65. package/dist/components/form/FileInput/FileInput.js.map +1 -1
  66. package/dist/components/form/FormCard/FormCard.cjs +1 -1
  67. package/dist/components/form/FormCard/FormCard.cjs.map +1 -1
  68. package/dist/components/form/FormCard/FormCard.js +9 -9
  69. package/dist/components/form/FormCard/FormCard.js.map +1 -1
  70. package/dist/components/form/FormField/FormField.cjs +1 -1
  71. package/dist/components/form/FormField/FormField.cjs.map +1 -1
  72. package/dist/components/form/FormField/FormField.js +67 -55
  73. package/dist/components/form/FormField/FormField.js.map +1 -1
  74. package/dist/components/form/MultiSelect/MultiSelect.cjs +1 -1
  75. package/dist/components/form/MultiSelect/MultiSelect.cjs.map +1 -1
  76. package/dist/components/form/MultiSelect/MultiSelect.js +2 -3
  77. package/dist/components/form/MultiSelect/MultiSelect.js.map +1 -1
  78. package/dist/components/form/Radio/Radio.cjs +1 -1
  79. package/dist/components/form/Radio/Radio.cjs.map +1 -1
  80. package/dist/components/form/Radio/Radio.js +20 -20
  81. package/dist/components/form/Radio/Radio.js.map +1 -1
  82. package/dist/components/form/SearchInput/SearchInput.cjs +2 -0
  83. package/dist/components/form/SearchInput/SearchInput.cjs.map +1 -0
  84. package/dist/components/form/SearchInput/SearchInput.js +68 -0
  85. package/dist/components/form/SearchInput/SearchInput.js.map +1 -0
  86. package/dist/components/form/TagInput/TagInput.cjs +1 -1
  87. package/dist/components/form/TagInput/TagInput.cjs.map +1 -1
  88. package/dist/components/form/TagInput/TagInput.js +104 -102
  89. package/dist/components/form/TagInput/TagInput.js.map +1 -1
  90. package/dist/components/form/TimePicker/TimePicker.cjs +1 -1
  91. package/dist/components/form/TimePicker/TimePicker.cjs.map +1 -1
  92. package/dist/components/form/TimePicker/TimePicker.js +29 -30
  93. package/dist/components/form/TimePicker/TimePicker.js.map +1 -1
  94. package/dist/components/form.cjs +1 -1
  95. package/dist/components/form.js +15 -13
  96. package/dist/components/form.js.map +1 -1
  97. package/dist/components/layout/Card/Card.cjs +1 -1
  98. package/dist/components/layout/Card/Card.cjs.map +1 -1
  99. package/dist/components/layout/Card/Card.js +7 -5
  100. package/dist/components/layout/Card/Card.js.map +1 -1
  101. package/dist/components/layout/Collapse/Collapse.cjs.map +1 -1
  102. package/dist/components/layout/Collapse/Collapse.js.map +1 -1
  103. package/dist/components/media/Image/Image.cjs +1 -1
  104. package/dist/components/media/Image/Image.cjs.map +1 -1
  105. package/dist/components/media/Image/Image.js +9 -9
  106. package/dist/components/media/Image/Image.js.map +1 -1
  107. package/dist/components/media/ImageThumbnail/ImageThumbnail.cjs +1 -1
  108. package/dist/components/media/ImageThumbnail/ImageThumbnail.cjs.map +1 -1
  109. package/dist/components/media/ImageThumbnail/ImageThumbnail.js +6 -6
  110. package/dist/components/media/ImageThumbnail/ImageThumbnail.js.map +1 -1
  111. package/dist/components/navigation/Accordion/Accordion.cjs +1 -1
  112. package/dist/components/navigation/Accordion/Accordion.cjs.map +1 -1
  113. package/dist/components/navigation/Accordion/Accordion.js +0 -1
  114. package/dist/components/navigation/Accordion/Accordion.js.map +1 -1
  115. package/dist/components/navigation/Menu/Menu.cjs +1 -1
  116. package/dist/components/navigation/Menu/Menu.cjs.map +1 -1
  117. package/dist/components/navigation/Menu/Menu.js +87 -86
  118. package/dist/components/navigation/Menu/Menu.js.map +1 -1
  119. package/dist/components/navigation/Pagination/Pagination.cjs +1 -1
  120. package/dist/components/navigation/Pagination/Pagination.cjs.map +1 -1
  121. package/dist/components/navigation/Pagination/Pagination.js +107 -99
  122. package/dist/components/navigation/Pagination/Pagination.js.map +1 -1
  123. package/dist/components/navigation/SegmentedControl/SegmentedControl.cjs +2 -0
  124. package/dist/components/navigation/SegmentedControl/SegmentedControl.cjs.map +1 -0
  125. package/dist/components/navigation/SegmentedControl/SegmentedControl.js +90 -0
  126. package/dist/components/navigation/SegmentedControl/SegmentedControl.js.map +1 -0
  127. package/dist/components/navigation.cjs +1 -1
  128. package/dist/components/navigation.js +25 -23
  129. package/dist/components/navigation.js.map +1 -1
  130. package/dist/components/utility/Avatar/Avatar.cjs +1 -1
  131. package/dist/components/utility/Avatar/Avatar.cjs.map +1 -1
  132. package/dist/components/utility/Avatar/Avatar.js +18 -18
  133. package/dist/components/utility/Avatar/Avatar.js.map +1 -1
  134. package/dist/components/utility/Badge/Badge.cjs +1 -1
  135. package/dist/components/utility/Badge/Badge.cjs.map +1 -1
  136. package/dist/components/utility/Badge/Badge.js +31 -23
  137. package/dist/components/utility/Badge/Badge.js.map +1 -1
  138. package/dist/components/utility/Kbd/Kbd.cjs +2 -0
  139. package/dist/components/utility/Kbd/Kbd.cjs.map +1 -0
  140. package/dist/components/utility/Kbd/Kbd.js +20 -0
  141. package/dist/components/utility/Kbd/Kbd.js.map +1 -0
  142. package/dist/components/utility/Logo/Logo.cjs +1 -1
  143. package/dist/components/utility/Logo/Logo.cjs.map +1 -1
  144. package/dist/components/utility/Logo/Logo.js +21 -21
  145. package/dist/components/utility/Logo/Logo.js.map +1 -1
  146. package/dist/components/utility.cjs +1 -1
  147. package/dist/components/utility.js +9 -7
  148. package/dist/components/utility.js.map +1 -1
  149. package/dist/data.d.ts +34 -1
  150. package/dist/design-system/themes/ThemeProvider.cjs +1 -1
  151. package/dist/design-system/themes/ThemeProvider.cjs.map +1 -1
  152. package/dist/design-system/themes/ThemeProvider.js +46 -46
  153. package/dist/design-system/themes/ThemeProvider.js.map +1 -1
  154. package/dist/design-system/tokens/zIndex.cjs +1 -1
  155. package/dist/design-system/tokens/zIndex.cjs.map +1 -1
  156. package/dist/design-system/tokens/zIndex.js +2 -0
  157. package/dist/design-system/tokens/zIndex.js.map +1 -1
  158. package/dist/feedback.d.ts +75 -2
  159. package/dist/form.d.ts +41 -0
  160. package/dist/index.cjs +1 -1
  161. package/dist/index.d.ts +213 -3
  162. package/dist/index.js +177 -165
  163. package/dist/index.js.map +1 -1
  164. package/dist/navigation.d.ts +58 -0
  165. package/dist/styles.css +1 -1
  166. package/dist/tokens.d.ts +2 -0
  167. package/dist/utility.d.ts +19 -0
  168. 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 type TableVariant = 'default' | 'striped' | 'bordered';
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 v=require("react/jsx-runtime"),s=require("react"),C=require("./lightTheme.cjs"),S=require("./darkTheme.cjs"),g=s.createContext(null),w="brycks-theme-mode";function x(o,n){return n?Object.keys(o).reduce((c,r)=>{const i=o[r],u=n[r];return typeof i=="object"&&typeof u=="object"?c[r]={...i,...u}:u!==void 0?c[r]=u:c[r]=i,c},{}):o}function O({children:o,config:n,skipCSSVariables:c=!1}){const[r,i]=s.useState(()=>typeof window>"u"?n?.defaultMode??"system":localStorage.getItem(w)??n?.defaultMode??"system"),[u,j]=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=f=>{j(f.matches?"dark":"light")};return e.addEventListener("change",d),()=>e.removeEventListener("change",d)},[]);const t=r==="system"?u:r,a=s.useMemo(()=>{const e=t==="dark"?S.darkTheme:C.lightTheme,d=t==="dark"?n?.dark:n?.light;return d?{name:e.name,colors:x(e.colors,d)}:e},[t,n]),l=s.useCallback(e=>{i(e),typeof window<"u"&&localStorage.setItem(w,e)},[]),b=s.useCallback(()=>{l(t==="dark"?"light":"dark")},[t,l]);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=(T,h="")=>Object.entries(T).reduce((y,[k,m])=>{const M=h?`${h}-${k}`:k;return typeof m=="object"&&m!==null?Object.assign(y,d(m,M)):typeof m=="string"&&(y[`--brycks-${M}`]=m),y},{}),f=d(a.colors);Object.entries(f).forEach(([T,h])=>{e.style.setProperty(T,h)})},[a,t,c]);const p=s.useMemo(()=>({theme:a,mode:r,resolvedMode:t,setMode:l,toggleMode:b}),[a,r,t,l,b]);return v.jsx(g.Provider,{value:p,children:o})}function E(){const o=s.useContext(g);if(!o)throw new Error("useTheme must be used within a ThemeProvider");return o}function P(){const{theme:o}=E();return o.colors}exports.ThemeContext=g;exports.ThemeProvider=O;exports.useTheme=E;exports.useThemeColors=P;
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}-${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"],"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","flattenColors","obj","prefix","value","varName","cssVars","contextValue","useTheme","context","useContext","useThemeColors"],"mappings":"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"}
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 x } from "react/jsx-runtime";
2
- import { createContext as O, useState as T, useEffect as k, useMemo as M, useCallback as b, useContext as S } from "react";
3
- import { lightTheme as L } from "./lightTheme.js";
4
- import { darkTheme as P } from "./darkTheme.js";
5
- const j = O(null), E = "brycks-theme-mode";
6
- function V(o, s) {
7
- return s ? Object.keys(o).reduce((d, r) => {
8
- const m = o[r], c = s[r];
9
- return typeof m == "object" && typeof c == "object" ? d[r] = { ...m, ...c } : c !== void 0 ? d[r] = c : d[r] = m, d;
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 H({
12
+ function N({
13
13
  children: o,
14
14
  config: s,
15
- skipCSSVariables: d = !1
15
+ skipCSSVariables: n = !1
16
16
  }) {
17
- const [r, m] = T(() => typeof window > "u" ? s?.defaultMode ?? "system" : localStorage.getItem(E) ?? s?.defaultMode ?? "system"), [c, v] = T(() => typeof window > "u" ? "light" : window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light");
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)"), n = (f) => {
20
- v(f.matches ? "dark" : "light");
19
+ const e = window.matchMedia("(prefers-color-scheme: dark)"), d = (h) => {
20
+ v(h.matches ? "dark" : "light");
21
21
  };
22
- return e.addEventListener("change", n), () => e.removeEventListener("change", n);
22
+ return e.addEventListener("change", d), () => e.removeEventListener("change", d);
23
23
  }, []);
24
- const t = r === "system" ? c : r, a = M(() => {
25
- const e = t === "dark" ? P : L, n = t === "dark" ? s?.dark : s?.light;
26
- return n ? {
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: V(e.colors, n)
28
+ colors: A(e.colors, d)
29
29
  } : e;
30
- }, [t, s]), u = b((e) => {
31
- m(e), typeof window < "u" && localStorage.setItem(E, e);
32
- }, []), p = b(() => {
33
- u(t === "dark" ? "light" : "dark");
34
- }, [t, u]);
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 (d || typeof document > "u") return;
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 n = (h, l = "") => Object.entries(h).reduce(
40
- (y, [g, i]) => {
41
- const w = l ? `${l}-${g}` : g;
42
- return typeof i == "object" && i !== null ? Object.assign(y, n(i, w)) : typeof i == "string" && (y[`--brycks-${w}`] = i), y;
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
- ), f = n(a.colors);
46
- Object.entries(f).forEach(([h, l]) => {
47
- e.style.setProperty(h, l);
45
+ ), x = h(l.colors);
46
+ Object.entries(x).forEach(([i, m]) => {
47
+ e.style.setProperty(i, m);
48
48
  });
49
- }, [a, t, d]);
50
- const C = M(
49
+ }, [l, t, n]);
50
+ const C = T(
51
51
  () => ({
52
- theme: a,
52
+ theme: l,
53
53
  mode: r,
54
54
  resolvedMode: t,
55
- setMode: u,
56
- toggleMode: p
55
+ setMode: f,
56
+ toggleMode: g
57
57
  }),
58
- [a, r, t, u, p]
58
+ [l, r, t, f, g]
59
59
  );
60
- return /* @__PURE__ */ x(j.Provider, { value: C, children: o });
60
+ return /* @__PURE__ */ O(j.Provider, { value: C, children: o });
61
61
  }
62
- function $() {
63
- const o = S(j);
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 K() {
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
- H as ThemeProvider,
75
- $ as useTheme,
76
- K as useThemeColors
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}-${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"],"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","flattenColors","obj","prefix","value","varName","cssVars","contextValue","useTheme","context","useContext","useThemeColors"],"mappings":"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"}
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 o={hide:-1,auto:"auto",base:0,docked:10,dropdown:1e3,sticky:1100,banner:1200,overlay:1300,modal:1400,popover:1500,skipLink:1600,toast:1700,tooltip:1800};exports.zIndex=o;
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"}
@@ -17,6 +17,8 @@ const o = {
17
17
  overlay: 1300,
18
18
  /** Modal - dialog windows */
19
19
  modal: 1400,
20
+ /** Drawer - side panels (same layer as modal) */
21
+ drawer: 1400,
20
22
  /** Popover - popovers, tooltips */
21
23
  popover: 1500,
22
24
  /** Skiplink - accessibility skip links */
@@ -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;"}
@@ -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