@brycks/core-front 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (146) hide show
  1. package/dist/components/data/List/List.d.ts +44 -0
  2. package/dist/components/data/List/List.d.ts.map +1 -0
  3. package/dist/components/data/List/index.d.ts +3 -0
  4. package/dist/components/data/List/index.d.ts.map +1 -0
  5. package/dist/components/data/Table/Table.d.ts +74 -0
  6. package/dist/components/data/Table/Table.d.ts.map +1 -0
  7. package/dist/components/data/Table/index.d.ts +3 -0
  8. package/dist/components/data/Table/index.d.ts.map +1 -0
  9. package/dist/components/data/index.d.ts +6 -0
  10. package/dist/components/data/index.d.ts.map +1 -0
  11. package/dist/components/feedback/Drawer/Drawer.d.ts +29 -0
  12. package/dist/components/feedback/Drawer/Drawer.d.ts.map +1 -0
  13. package/dist/components/feedback/Drawer/index.d.ts +3 -0
  14. package/dist/components/feedback/Drawer/index.d.ts.map +1 -0
  15. package/dist/components/feedback/Popover/Popover.d.ts +35 -0
  16. package/dist/components/feedback/Popover/Popover.d.ts.map +1 -0
  17. package/dist/components/feedback/Popover/index.d.ts +3 -0
  18. package/dist/components/feedback/Popover/index.d.ts.map +1 -0
  19. package/dist/components/feedback/Progress/Progress.d.ts +30 -0
  20. package/dist/components/feedback/Progress/Progress.d.ts.map +1 -0
  21. package/dist/components/feedback/Progress/index.d.ts +3 -0
  22. package/dist/components/feedback/Progress/index.d.ts.map +1 -0
  23. package/dist/components/feedback/Toast/Toast.d.ts +47 -0
  24. package/dist/components/feedback/Toast/Toast.d.ts.map +1 -0
  25. package/dist/components/feedback/Toast/index.d.ts +3 -0
  26. package/dist/components/feedback/Toast/index.d.ts.map +1 -0
  27. package/dist/components/feedback/index.d.ts +4 -0
  28. package/dist/components/feedback/index.d.ts.map +1 -1
  29. package/dist/components/form/DateInput/DateInput.d.ts +28 -0
  30. package/dist/components/form/DateInput/DateInput.d.ts.map +1 -0
  31. package/dist/components/form/DateInput/index.d.ts +3 -0
  32. package/dist/components/form/DateInput/index.d.ts.map +1 -0
  33. package/dist/components/form/FieldError/FieldError.d.ts +18 -0
  34. package/dist/components/form/FieldError/FieldError.d.ts.map +1 -0
  35. package/dist/components/form/FieldError/index.d.ts +3 -0
  36. package/dist/components/form/FieldError/index.d.ts.map +1 -0
  37. package/dist/components/form/FileInput/FileInput.d.ts +33 -0
  38. package/dist/components/form/FileInput/FileInput.d.ts.map +1 -0
  39. package/dist/components/form/FileInput/index.d.ts +3 -0
  40. package/dist/components/form/FileInput/index.d.ts.map +1 -0
  41. package/dist/components/form/FormField/FormField.d.ts +36 -0
  42. package/dist/components/form/FormField/FormField.d.ts.map +1 -0
  43. package/dist/components/form/FormField/index.d.ts +3 -0
  44. package/dist/components/form/FormField/index.d.ts.map +1 -0
  45. package/dist/components/form/Radio/Radio.d.ts +46 -0
  46. package/dist/components/form/Radio/Radio.d.ts.map +1 -0
  47. package/dist/components/form/Radio/index.d.ts +3 -0
  48. package/dist/components/form/Radio/index.d.ts.map +1 -0
  49. package/dist/components/form/Slider/Slider.d.ts +32 -0
  50. package/dist/components/form/Slider/Slider.d.ts.map +1 -0
  51. package/dist/components/form/Slider/index.d.ts +3 -0
  52. package/dist/components/form/Slider/index.d.ts.map +1 -0
  53. package/dist/components/form/index.d.ts +6 -0
  54. package/dist/components/form/index.d.ts.map +1 -1
  55. package/dist/components/layout/Card/Card.d.ts +40 -0
  56. package/dist/components/layout/Card/Card.d.ts.map +1 -0
  57. package/dist/components/layout/Card/index.d.ts +3 -0
  58. package/dist/components/layout/Card/index.d.ts.map +1 -0
  59. package/dist/components/layout/Flex/Flex.d.ts +63 -0
  60. package/dist/components/layout/Flex/Flex.d.ts.map +1 -0
  61. package/dist/components/layout/Flex/index.d.ts +3 -0
  62. package/dist/components/layout/Flex/index.d.ts.map +1 -0
  63. package/dist/components/layout/Section/Section.d.ts +22 -0
  64. package/dist/components/layout/Section/Section.d.ts.map +1 -0
  65. package/dist/components/layout/Section/index.d.ts +3 -0
  66. package/dist/components/layout/Section/index.d.ts.map +1 -0
  67. package/dist/components/layout/Spacer/Spacer.d.ts +18 -0
  68. package/dist/components/layout/Spacer/Spacer.d.ts.map +1 -0
  69. package/dist/components/layout/Spacer/index.d.ts +3 -0
  70. package/dist/components/layout/Spacer/index.d.ts.map +1 -0
  71. package/dist/components/layout/index.d.ts +4 -0
  72. package/dist/components/layout/index.d.ts.map +1 -1
  73. package/dist/components/navigation/Accordion/Accordion.d.ts +41 -0
  74. package/dist/components/navigation/Accordion/Accordion.d.ts.map +1 -0
  75. package/dist/components/navigation/Accordion/index.d.ts +3 -0
  76. package/dist/components/navigation/Accordion/index.d.ts.map +1 -0
  77. package/dist/components/navigation/Breadcrumb/Breadcrumb.d.ts +31 -0
  78. package/dist/components/navigation/Breadcrumb/Breadcrumb.d.ts.map +1 -0
  79. package/dist/components/navigation/Breadcrumb/index.d.ts +3 -0
  80. package/dist/components/navigation/Breadcrumb/index.d.ts.map +1 -0
  81. package/dist/components/navigation/Dropdown/Dropdown.d.ts +47 -0
  82. package/dist/components/navigation/Dropdown/Dropdown.d.ts.map +1 -0
  83. package/dist/components/navigation/Dropdown/index.d.ts +3 -0
  84. package/dist/components/navigation/Dropdown/index.d.ts.map +1 -0
  85. package/dist/components/navigation/Menu/Menu.d.ts +45 -0
  86. package/dist/components/navigation/Menu/Menu.d.ts.map +1 -0
  87. package/dist/components/navigation/Menu/index.d.ts +3 -0
  88. package/dist/components/navigation/Menu/index.d.ts.map +1 -0
  89. package/dist/components/navigation/Pagination/Pagination.d.ts +29 -0
  90. package/dist/components/navigation/Pagination/Pagination.d.ts.map +1 -0
  91. package/dist/components/navigation/Pagination/index.d.ts +3 -0
  92. package/dist/components/navigation/Pagination/index.d.ts.map +1 -0
  93. package/dist/components/navigation/Tabs/Tabs.d.ts +52 -0
  94. package/dist/components/navigation/Tabs/Tabs.d.ts.map +1 -0
  95. package/dist/components/navigation/Tabs/index.d.ts +3 -0
  96. package/dist/components/navigation/Tabs/index.d.ts.map +1 -0
  97. package/dist/components/navigation/index.d.ts +10 -0
  98. package/dist/components/navigation/index.d.ts.map +1 -0
  99. package/dist/components/primitives/Icon/Icon.d.ts +84 -0
  100. package/dist/components/primitives/Icon/Icon.d.ts.map +1 -0
  101. package/dist/components/primitives/Icon/index.d.ts +3 -0
  102. package/dist/components/primitives/Icon/index.d.ts.map +1 -0
  103. package/dist/components/primitives/index.d.ts +1 -0
  104. package/dist/components/primitives/index.d.ts.map +1 -1
  105. package/dist/components/utility/FocusTrap/FocusTrap.d.ts +19 -0
  106. package/dist/components/utility/FocusTrap/FocusTrap.d.ts.map +1 -0
  107. package/dist/components/utility/FocusTrap/index.d.ts +3 -0
  108. package/dist/components/utility/FocusTrap/index.d.ts.map +1 -0
  109. package/dist/components/utility/Overlay/Overlay.d.ts +25 -0
  110. package/dist/components/utility/Overlay/Overlay.d.ts.map +1 -0
  111. package/dist/components/utility/Overlay/index.d.ts +3 -0
  112. package/dist/components/utility/Overlay/index.d.ts.map +1 -0
  113. package/dist/components/utility/Portal/Portal.d.ts +14 -0
  114. package/dist/components/utility/Portal/Portal.d.ts.map +1 -0
  115. package/dist/components/utility/Portal/index.d.ts +3 -0
  116. package/dist/components/utility/Portal/index.d.ts.map +1 -0
  117. package/dist/components/utility/index.d.ts +3 -0
  118. package/dist/components/utility/index.d.ts.map +1 -1
  119. package/dist/{cssVariables-D_naqeoR.cjs → cssVariables-BguyVeCi.cjs} +2 -2
  120. package/dist/cssVariables-BguyVeCi.cjs.map +1 -0
  121. package/dist/{cssVariables-CU3jCd8f.js → cssVariables-D9uw0uKO.js} +30 -30
  122. package/dist/cssVariables-D9uw0uKO.js.map +1 -0
  123. package/dist/design-system/themes/ThemeProvider.d.ts.map +1 -1
  124. package/dist/hooks/index.d.ts +5 -0
  125. package/dist/hooks/index.d.ts.map +1 -1
  126. package/dist/hooks/useClickOutside.d.ts +9 -0
  127. package/dist/hooks/useClickOutside.d.ts.map +1 -0
  128. package/dist/hooks/useControllable.d.ts +24 -0
  129. package/dist/hooks/useControllable.d.ts.map +1 -0
  130. package/dist/hooks/useFocusTrap.d.ts +21 -0
  131. package/dist/hooks/useFocusTrap.d.ts.map +1 -0
  132. package/dist/hooks/useId.d.ts +9 -0
  133. package/dist/hooks/useId.d.ts.map +1 -0
  134. package/dist/hooks/useKeyboardNavigation.d.ts +35 -0
  135. package/dist/hooks/useKeyboardNavigation.d.ts.map +1 -0
  136. package/dist/index.cjs +67 -7
  137. package/dist/index.cjs.map +1 -1
  138. package/dist/index.d.ts +62 -1
  139. package/dist/index.d.ts.map +1 -1
  140. package/dist/index.js +5314 -1627
  141. package/dist/index.js.map +1 -1
  142. package/dist/themes.cjs +1 -1
  143. package/dist/themes.js +1 -1
  144. package/package.json +1 -1
  145. package/dist/cssVariables-CU3jCd8f.js.map +0 -1
  146. package/dist/cssVariables-D_naqeoR.cjs.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/navigation/Tabs/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAA;AAChE,YAAY,EACV,SAAS,EACT,YAAY,EACZ,QAAQ,EACR,cAAc,EACd,aAAa,EACb,QAAQ,EACR,WAAW,EACX,eAAe,GAChB,MAAM,QAAQ,CAAA"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Navigation Components
3
+ */
4
+ export * from './Tabs';
5
+ export * from './Accordion';
6
+ export * from './Dropdown';
7
+ export * from './Menu';
8
+ export * from './Pagination';
9
+ export * from './Breadcrumb';
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/navigation/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,QAAQ,CAAA;AACtB,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAC1B,cAAc,QAAQ,CAAA;AACtB,cAAc,cAAc,CAAA;AAC5B,cAAc,cAAc,CAAA"}
@@ -0,0 +1,84 @@
1
+ import { SVGAttributes, ReactNode } from 'react';
2
+ export type IconSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl';
3
+ export interface IconProps extends Omit<SVGAttributes<SVGSVGElement>, 'children'> {
4
+ /** Icon size */
5
+ size?: IconSize;
6
+ /** Custom size in pixels */
7
+ customSize?: number;
8
+ /** Icon color (uses currentColor by default) */
9
+ color?: string;
10
+ /** SVG path data or children */
11
+ path?: string;
12
+ /** Multiple paths */
13
+ paths?: string[];
14
+ /** SVG viewBox */
15
+ viewBox?: string;
16
+ /** Fill rule for paths */
17
+ fillRule?: 'nonzero' | 'evenodd';
18
+ /** Custom class name */
19
+ className?: string;
20
+ /** Test ID */
21
+ testId?: string;
22
+ /** Accessibility label */
23
+ label?: string;
24
+ /** Custom SVG children (overrides path/paths) */
25
+ children?: ReactNode;
26
+ }
27
+ export declare const Icon: import('react').ForwardRefExoticComponent<IconProps & import('react').RefAttributes<SVGSVGElement>>;
28
+ export declare const iconPaths: {
29
+ readonly close: "M18 6L6 18M6 6l12 12";
30
+ readonly check: "M20 6L9 17l-5-5";
31
+ readonly chevronDown: "M6 9l6 6 6-6";
32
+ readonly chevronUp: "M18 15l-6-6-6 6";
33
+ readonly chevronLeft: "M15 18l-6-6 6-6";
34
+ readonly chevronRight: "M9 18l6-6-6-6";
35
+ readonly plus: "M12 5v14m-7-7h14";
36
+ readonly minus: "M5 12h14";
37
+ readonly search: "M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z";
38
+ readonly menu: "M4 6h16M4 12h16M4 18h16";
39
+ readonly info: "M12 16v-4m0-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z";
40
+ readonly warning: "M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z";
41
+ readonly error: "M10 14l2-2m0 0l2-2m-2 2l-2-2m2 2l2 2m7-2a9 9 0 11-18 0 9 9 0 0118 0z";
42
+ readonly success: "M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z";
43
+ readonly eye: "M15 12a3 3 0 11-6 0 3 3 0 016 0z M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z";
44
+ readonly eyeOff: "M13.875 18.825A10.05 10.05 0 0112 19c-4.478 0-8.268-2.943-9.543-7a9.97 9.97 0 011.563-3.029m5.858.908a3 3 0 114.243 4.243M9.878 9.878l4.242 4.242M9.88 9.88l-3.29-3.29m7.532 7.532l3.29 3.29M3 3l3.59 3.59m0 0A9.953 9.953 0 0112 5c4.478 0 8.268 2.943 9.543 7a10.025 10.025 0 01-4.132 5.411m0 0L21 21";
45
+ readonly calendar: "M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z";
46
+ readonly upload: "M4 16l4.586-4.586a2 2 0 012.828 0L16 16m-2-2l1.586-1.586a2 2 0 012.828 0L20 14m-6-6h.01M6 20h12a2 2 0 002-2V6a2 2 0 00-2-2H6a2 2 0 00-2 2v12a2 2 0 002 2z";
47
+ readonly download: "M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-4l-4 4m0 0l-4-4m4 4V4";
48
+ readonly trash: "M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16";
49
+ readonly edit: "M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z";
50
+ readonly copy: "M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z";
51
+ readonly externalLink: "M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14";
52
+ readonly settings: "M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z M15 12a3 3 0 11-6 0 3 3 0 016 0z";
53
+ readonly user: "M16 7a4 4 0 11-8 0 4 4 0 018 0zM12 14a7 7 0 00-7 7h14a7 7 0 00-7-7z";
54
+ readonly logout: "M17 16l4-4m0 0l-4-4m4 4H7m6 4v1a3 3 0 01-3 3H6a3 3 0 01-3-3V7a3 3 0 013-3h4a3 3 0 013 3v1";
55
+ readonly arrowLeft: "M10 19l-7-7m0 0l7-7m-7 7h18";
56
+ readonly arrowRight: "M14 5l7 7m0 0l-7 7m7-7H3";
57
+ readonly arrowUp: "M5 10l7-7m0 0l7 7m-7-7v18";
58
+ readonly arrowDown: "M19 14l-7 7m0 0l-7-7m7 7V3";
59
+ readonly refresh: "M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15";
60
+ readonly filter: "M3 4a1 1 0 011-1h16a1 1 0 011 1v2.586a1 1 0 01-.293.707l-6.414 6.414a1 1 0 00-.293.707V17l-4 4v-6.586a1 1 0 00-.293-.707L3.293 7.293A1 1 0 013 6.586V4z";
61
+ readonly sort: "M3 4h13M3 8h9m-9 4h6m4 0l4-4m0 0l4 4m-4-4v12";
62
+ readonly home: "M3 12l2-2m0 0l7-7 7 7M5 10v10a1 1 0 001 1h3m10-11l2 2m-2-2v10a1 1 0 01-1 1h-3m-6 0a1 1 0 001-1v-4a1 1 0 011-1h2a1 1 0 011 1v4a1 1 0 001 1m-6 0h6";
63
+ readonly folder: "M3 7v10a2 2 0 002 2h14a2 2 0 002-2V9a2 2 0 00-2-2h-6l-2-2H5a2 2 0 00-2 2z";
64
+ readonly file: "M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z";
65
+ readonly bell: "M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9";
66
+ readonly mail: "M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z";
67
+ readonly lock: "M12 15v2m-6 4h12a2 2 0 002-2v-6a2 2 0 00-2-2H6a2 2 0 00-2 2v6a2 2 0 002 2zm10-10V7a4 4 0 00-8 0v4h8z";
68
+ readonly unlock: "M8 11V7a4 4 0 118 0m-4 8v2m-6 4h12a2 2 0 002-2v-6a2 2 0 00-2-2H6a2 2 0 00-2 2v6a2 2 0 002 2z";
69
+ readonly star: "M11.049 2.927c.3-.921 1.603-.921 1.902 0l1.519 4.674a1 1 0 00.95.69h4.915c.969 0 1.371 1.24.588 1.81l-3.976 2.888a1 1 0 00-.363 1.118l1.518 4.674c.3.922-.755 1.688-1.538 1.118l-3.976-2.888a1 1 0 00-1.176 0l-3.976 2.888c-.783.57-1.838-.197-1.538-1.118l1.518-4.674a1 1 0 00-.363-1.118l-3.976-2.888c-.784-.57-.38-1.81.588-1.81h4.914a1 1 0 00.951-.69l1.519-4.674z";
70
+ readonly heart: "M4.318 6.318a4.5 4.5 0 000 6.364L12 20.364l7.682-7.682a4.5 4.5 0 00-6.364-6.364L12 7.636l-1.318-1.318a4.5 4.5 0 00-6.364 0z";
71
+ readonly share: "M8.684 13.342C8.886 12.938 9 12.482 9 12c0-.482-.114-.938-.316-1.342m0 2.684a3 3 0 110-2.684m0 2.684l6.632 3.316m-6.632-6l6.632-3.316m0 0a3 3 0 105.367-2.684 3 3 0 00-5.367 2.684zm0 9.316a3 3 0 105.368 2.684 3 3 0 00-5.368-2.684z";
72
+ readonly link: "M13.828 10.172a4 4 0 00-5.656 0l-4 4a4 4 0 105.656 5.656l1.102-1.101m-.758-4.899a4 4 0 005.656 0l4-4a4 4 0 00-5.656-5.656l-1.1 1.1";
73
+ readonly code: "M10 20l4-16m4 4l4 4-4 4M6 16l-4-4 4-4";
74
+ readonly terminal: "M8 9l3 3-3 3m5 0h3M5 20h14a2 2 0 002-2V6a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z";
75
+ readonly database: "M4 7v10c0 2.21 3.582 4 8 4s8-1.79 8-4V7M4 7c0 2.21 3.582 4 8 4s8-1.79 8-4M4 7c0-2.21 3.582-4 8-4s8 1.79 8 4m0 5c0 2.21-3.582 4-8 4s-8-1.79-8-4";
76
+ readonly cloud: "M3 15a4 4 0 004 4h9a5 5 0 10-.1-9.999 5.002 5.002 0 10-9.78 2.096A4.001 4.001 0 003 15z";
77
+ readonly sun: "M12 3v1m0 16v1m9-9h-1M4 12H3m15.364 6.364l-.707-.707M6.343 6.343l-.707-.707m12.728 0l-.707.707M6.343 17.657l-.707.707M16 12a4 4 0 11-8 0 4 4 0 018 0z";
78
+ readonly moon: "M20.354 15.354A9 9 0 018.646 3.646 9.003 9.003 0 0012 21a9.003 9.003 0 008.354-5.646z";
79
+ readonly grip: "M4 6a2 2 0 114 0 2 2 0 01-4 0zM10 6a2 2 0 114 0 2 2 0 01-4 0zM16 6a2 2 0 114 0 2 2 0 01-4 0zM4 12a2 2 0 114 0 2 2 0 01-4 0zM10 12a2 2 0 114 0 2 2 0 01-4 0zM16 12a2 2 0 114 0 2 2 0 01-4 0zM4 18a2 2 0 114 0 2 2 0 01-4 0zM10 18a2 2 0 114 0 2 2 0 01-4 0zM16 18a2 2 0 114 0 2 2 0 01-4 0z";
80
+ readonly moreHorizontal: "M5 12h.01M12 12h.01M19 12h.01M6 12a1 1 0 11-2 0 1 1 0 012 0zm7 0a1 1 0 11-2 0 1 1 0 012 0zm7 0a1 1 0 11-2 0 1 1 0 012 0z";
81
+ readonly moreVertical: "M12 5v.01M12 12v.01M12 19v.01M12 6a1 1 0 110-2 1 1 0 010 2zm0 7a1 1 0 110-2 1 1 0 010 2zm0 7a1 1 0 110-2 1 1 0 010 2z";
82
+ };
83
+ export type IconName = keyof typeof iconPaths;
84
+ //# sourceMappingURL=Icon.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Icon.d.ts","sourceRoot":"","sources":["../../../../src/components/primitives/Icon/Icon.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAc,KAAK,aAAa,EAAsB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAG1F,MAAM,MAAM,QAAQ,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,CAAA;AAE/D,MAAM,WAAW,SAAU,SAAQ,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,UAAU,CAAC;IAC/E,gBAAgB;IAChB,IAAI,CAAC,EAAE,QAAQ,CAAA;IACf,4BAA4B;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,gDAAgD;IAChD,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,gCAAgC;IAChC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,qBAAqB;IACrB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;IAChB,kBAAkB;IAClB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,0BAA0B;IAC1B,QAAQ,CAAC,EAAE,SAAS,GAAG,SAAS,CAAA;IAChC,wBAAwB;IACxB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,cAAc;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,0BAA0B;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,iDAAiD;IACjD,QAAQ,CAAC,EAAE,SAAS,CAAA;CACrB;AAWD,eAAO,MAAM,IAAI,qGAgEf,CAAA;AAKF,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsDZ,CAAA;AAGV,MAAM,MAAM,QAAQ,GAAG,MAAM,OAAO,SAAS,CAAA"}
@@ -0,0 +1,3 @@
1
+ export { Icon, iconPaths } from './Icon';
2
+ export type { IconProps, IconSize, IconName } from './Icon';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/primitives/Icon/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AACxC,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAA"}
@@ -4,4 +4,5 @@
4
4
  * Core interactive components.
5
5
  */
6
6
  export * from './Button';
7
+ export * from './Icon';
7
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/primitives/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,UAAU,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/primitives/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,UAAU,CAAA;AACxB,cAAc,QAAQ,CAAA"}
@@ -0,0 +1,19 @@
1
+ import { ReactNode, CSSProperties } from 'react';
2
+ export interface FocusTrapProps {
3
+ /** Content to trap focus within */
4
+ children: ReactNode;
5
+ /** Whether the focus trap is active */
6
+ enabled?: boolean;
7
+ /** Whether to auto-focus the first element */
8
+ autoFocus?: boolean;
9
+ /** Whether to restore focus on unmount */
10
+ restoreFocus?: boolean;
11
+ /** Initial element to focus (selector) */
12
+ initialFocus?: string;
13
+ /** Custom class name */
14
+ className?: string;
15
+ /** Custom inline styles */
16
+ style?: CSSProperties;
17
+ }
18
+ export declare const FocusTrap: import('react').ForwardRefExoticComponent<FocusTrapProps & import('react').RefAttributes<HTMLDivElement>>;
19
+ //# sourceMappingURL=FocusTrap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FocusTrap.d.ts","sourceRoot":"","sources":["../../../../src/components/utility/FocusTrap/FocusTrap.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAc,KAAK,SAAS,EAAE,KAAK,aAAa,EAAE,MAAM,OAAO,CAAA;AAGtE,MAAM,WAAW,cAAc;IAC7B,mCAAmC;IACnC,QAAQ,EAAE,SAAS,CAAA;IACnB,uCAAuC;IACvC,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,8CAA8C;IAC9C,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,0CAA0C;IAC1C,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,0CAA0C;IAC1C,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,wBAAwB;IACxB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,2BAA2B;IAC3B,KAAK,CAAC,EAAE,aAAa,CAAA;CACtB;AAED,eAAO,MAAM,SAAS,2GAmCpB,CAAA"}
@@ -0,0 +1,3 @@
1
+ export { FocusTrap } from './FocusTrap';
2
+ export type { FocusTrapProps } from './FocusTrap';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/utility/FocusTrap/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA"}
@@ -0,0 +1,25 @@
1
+ import { HTMLAttributes } from 'react';
2
+ export interface OverlayProps extends HTMLAttributes<HTMLDivElement> {
3
+ /** Whether the overlay is visible */
4
+ isOpen: boolean;
5
+ /** Callback when overlay is clicked */
6
+ onClose?: () => void;
7
+ /** Whether clicking the overlay closes it */
8
+ closeOnClick?: boolean;
9
+ /** Whether to apply backdrop blur */
10
+ blur?: boolean;
11
+ /** Blur intensity (in pixels) */
12
+ blurAmount?: number;
13
+ /** Background opacity (0-1) */
14
+ opacity?: number;
15
+ /** Whether to use a portal */
16
+ usePortal?: boolean;
17
+ /** Z-index for the overlay */
18
+ zIndex?: number;
19
+ /** Custom class name */
20
+ className?: string;
21
+ /** Test ID */
22
+ testId?: string;
23
+ }
24
+ export declare const Overlay: import('react').ForwardRefExoticComponent<OverlayProps & import('react').RefAttributes<HTMLDivElement>>;
25
+ //# sourceMappingURL=Overlay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Overlay.d.ts","sourceRoot":"","sources":["../../../../src/components/utility/Overlay/Overlay.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAkC,KAAK,cAAc,EAAE,MAAM,OAAO,CAAA;AAI3E,MAAM,WAAW,YAAa,SAAQ,cAAc,CAAC,cAAc,CAAC;IAClE,qCAAqC;IACrC,MAAM,EAAE,OAAO,CAAA;IACf,uCAAuC;IACvC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IACpB,6CAA6C;IAC7C,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,qCAAqC;IACrC,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,iCAAiC;IACjC,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,+BAA+B;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,8BAA8B;IAC9B,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,8BAA8B;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,wBAAwB;IACxB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,cAAc;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,eAAO,MAAM,OAAO,yGAkElB,CAAA"}
@@ -0,0 +1,3 @@
1
+ export { Overlay } from './Overlay';
2
+ export type { OverlayProps } from './Overlay';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/utility/Overlay/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA"}
@@ -0,0 +1,14 @@
1
+ import { ReactNode } from 'react';
2
+ export interface PortalProps {
3
+ /** Content to render in the portal */
4
+ children: ReactNode;
5
+ /** Container element or selector to render into */
6
+ container?: HTMLElement | string;
7
+ /** Whether the portal is disabled (renders inline) */
8
+ disabled?: boolean;
9
+ }
10
+ export declare function Portal({ children, container, disabled }: PortalProps): import("react/jsx-runtime").JSX.Element | null;
11
+ export declare namespace Portal {
12
+ var displayName: string;
13
+ }
14
+ //# sourceMappingURL=Portal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Portal.d.ts","sourceRoot":"","sources":["../../../../src/components/utility/Portal/Portal.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAuB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAG3D,MAAM,WAAW,WAAW;IAC1B,sCAAsC;IACtC,QAAQ,EAAE,SAAS,CAAA;IACnB,mDAAmD;IACnD,SAAS,CAAC,EAAE,WAAW,GAAG,MAAM,CAAA;IAChC,sDAAsD;IACtD,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED,wBAAgB,MAAM,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAgB,EAAE,EAAE,WAAW,kDA4B5E;yBA5Be,MAAM"}
@@ -0,0 +1,3 @@
1
+ export { Portal } from './Portal';
2
+ export type { PortalProps } from './Portal';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/utility/Portal/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AACjC,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA"}
@@ -8,4 +8,7 @@ export * from './Loader';
8
8
  export * from './Skeleton';
9
9
  export * from './Divider';
10
10
  export * from './EmptyState';
11
+ export * from './Portal';
12
+ export * from './FocusTrap';
13
+ export * from './Overlay';
11
14
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/utility/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,SAAS,CAAA;AACvB,cAAc,UAAU,CAAA;AACxB,cAAc,YAAY,CAAA;AAC1B,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/utility/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,SAAS,CAAA;AACvB,cAAc,UAAU,CAAA;AACxB,cAAc,YAAY,CAAA;AAC1B,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA;AAC5B,cAAc,UAAU,CAAA;AACxB,cAAc,aAAa,CAAA;AAC3B,cAAc,WAAW,CAAA"}
@@ -1,2 +1,2 @@
1
- "use strict";const D=require("react/jsx-runtime"),n=require("react"),r=require("./colors-Bp6ROxvx.cjs"),H={name:"light",colors:{background:{app:r.neutrals.white,subtle:r.neutrals.gray50,muted:r.neutrals.gray100,elevated:r.neutrals.white,overlay:"rgba(0, 0, 0, 0.4)",inverse:r.neutrals.gray950},foreground:{default:r.neutrals.gray950,muted:r.neutrals.gray600,subtle:r.neutrals.gray500,disabled:r.neutrals.gray400,inverse:r.neutrals.white,link:r.primary[600]},border:{default:r.neutrals.gray200,muted:r.neutrals.gray100,strong:r.neutrals.gray300,focus:r.primary[500]},primary:{default:r.primary[600],hover:r.primary[700],active:r.primary[800],muted:r.primary[50],softHover:r.primary[100],foreground:r.neutrals.white},accent:{default:r.accent[500],hover:r.accent[600],active:r.accent[700],muted:r.accent[50],softHover:r.accent[100],foreground:r.neutrals.white},success:{default:r.success[600],hover:r.success[700],muted:r.success[50],softHover:r.success[100],foreground:r.neutrals.white},warning:{default:r.warning[500],hover:r.warning[600],muted:r.warning[50],softHover:r.warning[100],foreground:r.neutrals.gray950},error:{default:r.error[600],hover:r.error[700],muted:r.error[50],softHover:r.error[100],foreground:r.neutrals.white},info:{default:r.info[600],hover:r.info[700],muted:r.info[50],softHover:r.info[100],foreground:r.neutrals.white}}},T={name:"dark",colors:{background:{app:r.neutrals.black,subtle:r.neutrals.gray950,muted:r.neutrals.gray900,elevated:r.neutrals.gray800,overlay:"rgba(0, 0, 0, 0.7)",inverse:r.neutrals.white},foreground:{default:r.neutrals.gray100,muted:r.neutrals.gray400,subtle:r.neutrals.gray500,disabled:r.neutrals.gray600,inverse:r.neutrals.gray950,link:r.primary[400]},border:{default:r.neutrals.gray800,muted:r.neutrals.gray900,strong:r.neutrals.gray700,focus:r.primary[400]},primary:{default:r.primary[500],hover:r.primary[400],active:r.primary[300],muted:"rgba(85, 120, 244, 0.15)",softHover:"rgba(85, 120, 244, 0.25)",foreground:r.neutrals.white},accent:{default:r.accent[400],hover:r.accent[300],active:r.accent[200],muted:"rgba(248, 101, 69, 0.15)",softHover:"rgba(248, 101, 69, 0.25)",foreground:r.neutrals.white},success:{default:r.success[500],hover:r.success[400],muted:"rgba(16, 185, 129, 0.15)",softHover:"rgba(16, 185, 129, 0.25)",foreground:r.neutrals.white},warning:{default:r.warning[400],hover:r.warning[300],muted:"rgba(245, 158, 11, 0.15)",softHover:"rgba(245, 158, 11, 0.25)",foreground:r.neutrals.gray950},error:{default:r.error[500],hover:r.error[400],muted:"rgba(239, 68, 68, 0.15)",softHover:"rgba(239, 68, 68, 0.25)",foreground:r.neutrals.white},info:{default:r.info[500],hover:r.info[400],muted:"rgba(6, 182, 212, 0.15)",softHover:"rgba(6, 182, 212, 0.25)",foreground:r.neutrals.white}}},h=n.createContext(null),M="brycks-theme-mode";function S(a,e){return e?Object.keys(a).reduce((c,o)=>{const l=a[o],d=e[o];return typeof l=="object"&&typeof d=="object"?c[o]={...l,...d}:d!==void 0?c[o]=d:c[o]=l,c},{}):a}function x({children:a,config:e,skipCSSVariables:c=!1}){const[o,l]=n.useState(()=>typeof window>"u"?(e==null?void 0:e.defaultMode)??"system":localStorage.getItem(M)??(e==null?void 0:e.defaultMode)??"system"),[d,C]=n.useState(()=>typeof window>"u"?"light":window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light");n.useEffect(()=>{const t=window.matchMedia("(prefers-color-scheme: dark)"),u=y=>{C(y.matches?"dark":"light")};return t.addEventListener("change",u),()=>t.removeEventListener("change",u)},[]);const s=o==="system"?d:o,f=n.useMemo(()=>{const t=s==="dark"?T:H,u=s==="dark"?e==null?void 0:e.dark:e==null?void 0:e.light;return u?{name:t.name,colors:S(t.colors,u)}:t},[s,e]),v=n.useCallback(t=>{l(t),typeof window<"u"&&localStorage.setItem(M,t)},[]),k=n.useCallback(()=>{v(s==="dark"?"light":"dark")},[s,v]);n.useEffect(()=>{if(c||typeof document>"u")return;const t=document.documentElement;t.style.colorScheme=s,t.dataset.theme=s;const u=(b,g="")=>Object.entries(b).reduce((m,[w,i])=>{const p=g?`${g}-${w}`:w;return typeof i=="object"&&i!==null?Object.assign(m,u(i,p)):typeof i=="string"&&(m[`--brycks-${p}`]=i),m},{}),y=u(f.colors);Object.entries(y).forEach(([b,g])=>{t.style.setProperty(b,g)})},[f,s,c]);const j=n.useMemo(()=>({theme:f,mode:o,resolvedMode:s,setMode:v,toggleMode:k}),[f,o,s,v,k]);return D.jsx(h.Provider,{value:j,children:a})}function E(){const a=n.useContext(h);if(!a)throw new Error("useTheme must be used within a ThemeProvider");return a}function F(){const{theme:a}=E();return a.colors}const O={bgApp:"var(--brycks-background-app)",bgSubtle:"var(--brycks-background-subtle)",bgMuted:"var(--brycks-background-muted)",bgElevated:"var(--brycks-background-elevated)",bgOverlay:"var(--brycks-background-overlay)",bgInverse:"var(--brycks-background-inverse)",fgDefault:"var(--brycks-foreground-default)",fgMuted:"var(--brycks-foreground-muted)",fgSubtle:"var(--brycks-foreground-subtle)",fgDisabled:"var(--brycks-foreground-disabled)",fgInverse:"var(--brycks-foreground-inverse)",fgLink:"var(--brycks-foreground-link)",borderDefault:"var(--brycks-border-default)",borderMuted:"var(--brycks-border-muted)",borderStrong:"var(--brycks-border-strong)",borderFocus:"var(--brycks-border-focus)",primaryDefault:"var(--brycks-primary-default)",primaryHover:"var(--brycks-primary-hover)",primaryActive:"var(--brycks-primary-active)",primaryMuted:"var(--brycks-primary-muted)",primaryForeground:"var(--brycks-primary-foreground)",accentDefault:"var(--brycks-accent-default)",accentHover:"var(--brycks-accent-hover)",accentActive:"var(--brycks-accent-active)",accentMuted:"var(--brycks-accent-muted)",accentForeground:"var(--brycks-accent-foreground)",successDefault:"var(--brycks-success-default)",successHover:"var(--brycks-success-hover)",successMuted:"var(--brycks-success-muted)",successForeground:"var(--brycks-success-foreground)",warningDefault:"var(--brycks-warning-default)",warningHover:"var(--brycks-warning-hover)",warningMuted:"var(--brycks-warning-muted)",warningForeground:"var(--brycks-warning-foreground)",errorDefault:"var(--brycks-error-default)",errorHover:"var(--brycks-error-hover)",errorMuted:"var(--brycks-error-muted)",errorForeground:"var(--brycks-error-foreground)",infoDefault:"var(--brycks-info-default)",infoHover:"var(--brycks-info-hover)",infoMuted:"var(--brycks-info-muted)",infoForeground:"var(--brycks-info-foreground)"};exports.ThemeContext=h;exports.ThemeProvider=x;exports.cssVar=O;exports.darkTheme=T;exports.lightTheme=H;exports.useTheme=E;exports.useThemeColors=F;
2
- //# sourceMappingURL=cssVariables-D_naqeoR.cjs.map
1
+ "use strict";const D=require("react/jsx-runtime"),n=require("react"),r=require("./colors-Bp6ROxvx.cjs"),H={name:"light",colors:{background:{app:r.neutrals.white,subtle:r.neutrals.gray50,muted:r.neutrals.gray100,elevated:r.neutrals.white,overlay:"rgba(0, 0, 0, 0.4)",inverse:r.neutrals.gray950},foreground:{default:r.neutrals.gray950,muted:r.neutrals.gray600,subtle:r.neutrals.gray500,disabled:r.neutrals.gray400,inverse:r.neutrals.white,link:r.primary[600]},border:{default:r.neutrals.gray200,muted:r.neutrals.gray100,strong:r.neutrals.gray300,focus:r.primary[500]},primary:{default:r.primary[600],hover:r.primary[700],active:r.primary[800],muted:r.primary[50],softHover:r.primary[100],foreground:r.neutrals.white},accent:{default:r.accent[500],hover:r.accent[600],active:r.accent[700],muted:r.accent[50],softHover:r.accent[100],foreground:r.neutrals.white},success:{default:r.success[600],hover:r.success[700],muted:r.success[50],softHover:r.success[100],foreground:r.neutrals.white},warning:{default:r.warning[500],hover:r.warning[600],muted:r.warning[50],softHover:r.warning[100],foreground:r.neutrals.gray950},error:{default:r.error[600],hover:r.error[700],muted:r.error[50],softHover:r.error[100],foreground:r.neutrals.white},info:{default:r.info[600],hover:r.info[700],muted:r.info[50],softHover:r.info[100],foreground:r.neutrals.white}}},T={name:"dark",colors:{background:{app:r.neutrals.black,subtle:r.neutrals.gray950,muted:r.neutrals.gray900,elevated:r.neutrals.gray800,overlay:"rgba(0, 0, 0, 0.7)",inverse:r.neutrals.white},foreground:{default:r.neutrals.gray100,muted:r.neutrals.gray400,subtle:r.neutrals.gray500,disabled:r.neutrals.gray600,inverse:r.neutrals.gray950,link:r.primary[400]},border:{default:r.neutrals.gray800,muted:r.neutrals.gray900,strong:r.neutrals.gray700,focus:r.primary[400]},primary:{default:r.primary[500],hover:r.primary[400],active:r.primary[300],muted:"rgba(85, 120, 244, 0.15)",softHover:"rgba(85, 120, 244, 0.25)",foreground:r.neutrals.white},accent:{default:r.accent[400],hover:r.accent[300],active:r.accent[200],muted:"rgba(248, 101, 69, 0.15)",softHover:"rgba(248, 101, 69, 0.25)",foreground:r.neutrals.white},success:{default:r.success[500],hover:r.success[400],muted:"rgba(16, 185, 129, 0.15)",softHover:"rgba(16, 185, 129, 0.25)",foreground:r.neutrals.white},warning:{default:r.warning[400],hover:r.warning[300],muted:"rgba(245, 158, 11, 0.15)",softHover:"rgba(245, 158, 11, 0.25)",foreground:r.neutrals.gray950},error:{default:r.error[500],hover:r.error[400],muted:"rgba(239, 68, 68, 0.15)",softHover:"rgba(239, 68, 68, 0.25)",foreground:r.neutrals.white},info:{default:r.info[500],hover:r.info[400],muted:"rgba(6, 182, 212, 0.15)",softHover:"rgba(6, 182, 212, 0.25)",foreground:r.neutrals.white}}},h=n.createContext(null),M="brycks-theme-mode";function S(s,e){return e?Object.keys(s).reduce((c,o)=>{const l=s[o],d=e[o];return typeof l=="object"&&typeof d=="object"?c[o]={...l,...d}:d!==void 0?c[o]=d:c[o]=l,c},{}):s}function x({children:s,config:e,skipCSSVariables:c=!1}){const[o,l]=n.useState(()=>typeof window>"u"?(e==null?void 0:e.defaultMode)??"system":localStorage.getItem(M)??(e==null?void 0:e.defaultMode)??"system"),[d,C]=n.useState(()=>typeof window>"u"?"light":window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light");n.useEffect(()=>{const t=window.matchMedia("(prefers-color-scheme: dark)"),u=y=>{C(y.matches?"dark":"light")};return t.addEventListener("change",u),()=>t.removeEventListener("change",u)},[]);const a=o==="system"?d:o,f=n.useMemo(()=>{const t=a==="dark"?T:H,u=a==="dark"?e==null?void 0:e.dark:e==null?void 0:e.light;return u?{name:t.name,colors:S(t.colors,u)}:t},[a,e]),v=n.useCallback(t=>{l(t),typeof window<"u"&&localStorage.setItem(M,t)},[]),k=n.useCallback(()=>{v(a==="dark"?"light":"dark")},[a,v]);n.useEffect(()=>{if(c||typeof document>"u")return;const t=document.documentElement;t.style.colorScheme=a,t.dataset.theme=a,a==="dark"?t.classList.add("dark"):t.classList.remove("dark");const u=(b,g="")=>Object.entries(b).reduce((m,[w,i])=>{const p=g?`${g}-${w}`:w;return typeof i=="object"&&i!==null?Object.assign(m,u(i,p)):typeof i=="string"&&(m[`--brycks-${p}`]=i),m},{}),y=u(f.colors);Object.entries(y).forEach(([b,g])=>{t.style.setProperty(b,g)})},[f,a,c]);const j=n.useMemo(()=>({theme:f,mode:o,resolvedMode:a,setMode:v,toggleMode:k}),[f,o,a,v,k]);return D.jsx(h.Provider,{value:j,children:s})}function E(){const s=n.useContext(h);if(!s)throw new Error("useTheme must be used within a ThemeProvider");return s}function F(){const{theme:s}=E();return s.colors}const O={bgApp:"var(--brycks-background-app)",bgSubtle:"var(--brycks-background-subtle)",bgMuted:"var(--brycks-background-muted)",bgElevated:"var(--brycks-background-elevated)",bgOverlay:"var(--brycks-background-overlay)",bgInverse:"var(--brycks-background-inverse)",fgDefault:"var(--brycks-foreground-default)",fgMuted:"var(--brycks-foreground-muted)",fgSubtle:"var(--brycks-foreground-subtle)",fgDisabled:"var(--brycks-foreground-disabled)",fgInverse:"var(--brycks-foreground-inverse)",fgLink:"var(--brycks-foreground-link)",borderDefault:"var(--brycks-border-default)",borderMuted:"var(--brycks-border-muted)",borderStrong:"var(--brycks-border-strong)",borderFocus:"var(--brycks-border-focus)",primaryDefault:"var(--brycks-primary-default)",primaryHover:"var(--brycks-primary-hover)",primaryActive:"var(--brycks-primary-active)",primaryMuted:"var(--brycks-primary-muted)",primaryForeground:"var(--brycks-primary-foreground)",accentDefault:"var(--brycks-accent-default)",accentHover:"var(--brycks-accent-hover)",accentActive:"var(--brycks-accent-active)",accentMuted:"var(--brycks-accent-muted)",accentForeground:"var(--brycks-accent-foreground)",successDefault:"var(--brycks-success-default)",successHover:"var(--brycks-success-hover)",successMuted:"var(--brycks-success-muted)",successForeground:"var(--brycks-success-foreground)",warningDefault:"var(--brycks-warning-default)",warningHover:"var(--brycks-warning-hover)",warningMuted:"var(--brycks-warning-muted)",warningForeground:"var(--brycks-warning-foreground)",errorDefault:"var(--brycks-error-default)",errorHover:"var(--brycks-error-hover)",errorMuted:"var(--brycks-error-muted)",errorForeground:"var(--brycks-error-foreground)",infoDefault:"var(--brycks-info-default)",infoHover:"var(--brycks-info-hover)",infoMuted:"var(--brycks-info-muted)",infoForeground:"var(--brycks-info-foreground)"};exports.ThemeContext=h;exports.ThemeProvider=x;exports.cssVar=O;exports.darkTheme=T;exports.lightTheme=H;exports.useTheme=E;exports.useThemeColors=F;
2
+ //# sourceMappingURL=cssVariables-BguyVeCi.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cssVariables-BguyVeCi.cjs","sources":["../src/design-system/themes/lightTheme.ts","../src/design-system/themes/darkTheme.ts","../src/design-system/themes/ThemeProvider.tsx","../src/design-system/themes/cssVariables.ts"],"sourcesContent":["/**\r\n * Brycks Design System - Light Theme\r\n *\r\n * A clean, calm light theme inspired by Apple's design language.\r\n * Subtle contrasts, soft shadows, and refined colors.\r\n */\r\n\r\nimport { neutrals, primary, accent, success, warning, error, info } from '../tokens/colors'\r\nimport type { Theme } from './types'\r\n\r\nexport const lightTheme: Theme = {\r\n name: 'light',\r\n colors: {\r\n background: {\r\n app: neutrals.white,\r\n subtle: neutrals.gray50,\r\n muted: neutrals.gray100,\r\n elevated: neutrals.white,\r\n overlay: 'rgba(0, 0, 0, 0.4)',\r\n inverse: neutrals.gray950,\r\n },\r\n\r\n foreground: {\r\n default: neutrals.gray950,\r\n muted: neutrals.gray600,\r\n subtle: neutrals.gray500,\r\n disabled: neutrals.gray400,\r\n inverse: neutrals.white,\r\n link: primary[600],\r\n },\r\n\r\n border: {\r\n default: neutrals.gray200,\r\n muted: neutrals.gray100,\r\n strong: neutrals.gray300,\r\n focus: primary[500],\r\n },\r\n\r\n primary: {\r\n default: primary[600],\r\n hover: primary[700],\r\n active: primary[800],\r\n muted: primary[50],\r\n softHover: primary[100],\r\n foreground: neutrals.white,\r\n },\r\n\r\n accent: {\r\n default: accent[500],\r\n hover: accent[600],\r\n active: accent[700],\r\n muted: accent[50],\r\n softHover: accent[100],\r\n foreground: neutrals.white,\r\n },\r\n\r\n success: {\r\n default: success[600],\r\n hover: success[700],\r\n muted: success[50],\r\n softHover: success[100],\r\n foreground: neutrals.white,\r\n },\r\n\r\n warning: {\r\n default: warning[500],\r\n hover: warning[600],\r\n muted: warning[50],\r\n softHover: warning[100],\r\n foreground: neutrals.gray950,\r\n },\r\n\r\n error: {\r\n default: error[600],\r\n hover: error[700],\r\n muted: error[50],\r\n softHover: error[100],\r\n foreground: neutrals.white,\r\n },\r\n\r\n info: {\r\n default: info[600],\r\n hover: info[700],\r\n muted: info[50],\r\n softHover: info[100],\r\n foreground: neutrals.white,\r\n },\r\n },\r\n}\r\n","/**\r\n * Brycks Design System - Dark Theme\r\n *\r\n * A sophisticated dark theme with deep blacks and vibrant accents.\r\n * Inspired by Apple's dark mode - true black with subtle depth.\r\n */\r\n\r\nimport { neutrals, primary, accent, success, warning, error, info } from '../tokens/colors'\r\nimport type { Theme } from './types'\r\n\r\nexport const darkTheme: Theme = {\r\n name: 'dark',\r\n colors: {\r\n background: {\r\n app: neutrals.black,\r\n subtle: neutrals.gray950,\r\n muted: neutrals.gray900,\r\n elevated: neutrals.gray800,\r\n overlay: 'rgba(0, 0, 0, 0.7)',\r\n inverse: neutrals.white,\r\n },\r\n\r\n foreground: {\r\n default: neutrals.gray100,\r\n muted: neutrals.gray400,\r\n subtle: neutrals.gray500,\r\n disabled: neutrals.gray600,\r\n inverse: neutrals.gray950,\r\n link: primary[400],\r\n },\r\n\r\n border: {\r\n default: neutrals.gray800,\r\n muted: neutrals.gray900,\r\n strong: neutrals.gray700,\r\n focus: primary[400],\r\n },\r\n\r\n primary: {\r\n default: primary[500],\r\n hover: primary[400],\r\n active: primary[300],\r\n muted: 'rgba(85, 120, 244, 0.15)',\r\n softHover: 'rgba(85, 120, 244, 0.25)',\r\n foreground: neutrals.white,\r\n },\r\n\r\n accent: {\r\n default: accent[400],\r\n hover: accent[300],\r\n active: accent[200],\r\n muted: 'rgba(248, 101, 69, 0.15)',\r\n softHover: 'rgba(248, 101, 69, 0.25)',\r\n foreground: neutrals.white,\r\n },\r\n\r\n success: {\r\n default: success[500],\r\n hover: success[400],\r\n muted: 'rgba(16, 185, 129, 0.15)',\r\n softHover: 'rgba(16, 185, 129, 0.25)',\r\n foreground: neutrals.white,\r\n },\r\n\r\n warning: {\r\n default: warning[400],\r\n hover: warning[300],\r\n muted: 'rgba(245, 158, 11, 0.15)',\r\n softHover: 'rgba(245, 158, 11, 0.25)',\r\n foreground: neutrals.gray950,\r\n },\r\n\r\n error: {\r\n default: error[500],\r\n hover: error[400],\r\n muted: 'rgba(239, 68, 68, 0.15)',\r\n softHover: 'rgba(239, 68, 68, 0.25)',\r\n foreground: neutrals.white,\r\n },\r\n\r\n info: {\r\n default: info[500],\r\n hover: info[400],\r\n muted: 'rgba(6, 182, 212, 0.15)',\r\n softHover: 'rgba(6, 182, 212, 0.25)',\r\n foreground: neutrals.white,\r\n },\r\n },\r\n}\r\n","/**\r\n * Brycks Design System - Theme Provider\r\n *\r\n * React context provider for theme management.\r\n * Handles light/dark mode switching and system preference detection.\r\n */\r\n\r\nimport {\r\n createContext,\r\n useCallback,\r\n useContext,\r\n useEffect,\r\n useMemo,\r\n useState,\r\n type ReactNode,\r\n} from 'react'\r\nimport { lightTheme } from './lightTheme'\r\nimport { darkTheme } from './darkTheme'\r\nimport type { Theme, ThemeContextValue, ThemeMode, ThemeConfig, ThemeColors } from './types'\r\n\r\nconst ThemeContext = createContext<ThemeContextValue | null>(null)\r\n\r\n/** Storage key for persisting theme preference */\r\nconst THEME_STORAGE_KEY = 'brycks-theme-mode'\r\n\r\n/** Deep merge theme colors */\r\nfunction mergeThemeColors(base: ThemeColors, overrides?: Partial<ThemeColors>): ThemeColors {\r\n if (!overrides) return base\r\n\r\n return Object.keys(base).reduce((acc, key) => {\r\n const baseValue = base[key as keyof ThemeColors]\r\n const overrideValue = overrides[key as keyof ThemeColors]\r\n\r\n if (typeof baseValue === 'object' && typeof overrideValue === 'object') {\r\n acc[key as keyof ThemeColors] = { ...baseValue, ...overrideValue } as never\r\n } else if (overrideValue !== undefined) {\r\n acc[key as keyof ThemeColors] = overrideValue as never\r\n } else {\r\n acc[key as keyof ThemeColors] = baseValue as never\r\n }\r\n\r\n return acc\r\n }, {} as ThemeColors)\r\n}\r\n\r\ninterface ThemeProviderProps {\r\n /** Child components */\r\n children: ReactNode\r\n /** Theme configuration for customization */\r\n config?: ThemeConfig\r\n /** Skip injecting CSS variables (for SSR or custom handling) */\r\n skipCSSVariables?: boolean\r\n}\r\n\r\nexport function ThemeProvider({\r\n children,\r\n config,\r\n skipCSSVariables = false,\r\n}: ThemeProviderProps) {\r\n const [mode, setModeState] = useState<ThemeMode>(() => {\r\n if (typeof window === 'undefined') return config?.defaultMode ?? 'system'\r\n\r\n const stored = localStorage.getItem(THEME_STORAGE_KEY) as ThemeMode | null\r\n return stored ?? config?.defaultMode ?? 'system'\r\n })\r\n\r\n const [systemMode, setSystemMode] = useState<'light' | 'dark'>(() => {\r\n if (typeof window === 'undefined') return 'light'\r\n return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light'\r\n })\r\n\r\n // Listen to system preference changes\r\n useEffect(() => {\r\n const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)')\r\n const handleChange = (e: MediaQueryListEvent) => {\r\n setSystemMode(e.matches ? 'dark' : 'light')\r\n }\r\n\r\n mediaQuery.addEventListener('change', handleChange)\r\n return () => mediaQuery.removeEventListener('change', handleChange)\r\n }, [])\r\n\r\n // Resolve actual mode (never 'system')\r\n const resolvedMode = mode === 'system' ? systemMode : mode\r\n\r\n // Build theme with any config overrides\r\n const theme = useMemo<Theme>(() => {\r\n const baseTheme = resolvedMode === 'dark' ? darkTheme : lightTheme\r\n const overrides = resolvedMode === 'dark' ? config?.dark : config?.light\r\n\r\n if (!overrides) return baseTheme\r\n\r\n return {\r\n name: baseTheme.name,\r\n colors: mergeThemeColors(baseTheme.colors, overrides),\r\n }\r\n }, [resolvedMode, config])\r\n\r\n // Persist mode to localStorage\r\n const setMode = useCallback((newMode: ThemeMode) => {\r\n setModeState(newMode)\r\n if (typeof window !== 'undefined') {\r\n localStorage.setItem(THEME_STORAGE_KEY, newMode)\r\n }\r\n }, [])\r\n\r\n const toggleMode = useCallback(() => {\r\n setMode(resolvedMode === 'dark' ? 'light' : 'dark')\r\n }, [resolvedMode, setMode])\r\n\r\n // Inject CSS variables\r\n useEffect(() => {\r\n if (skipCSSVariables || typeof document === 'undefined') return\r\n\r\n const root = document.documentElement\r\n\r\n // Set color scheme for native browser support\r\n root.style.colorScheme = resolvedMode\r\n\r\n // Set data attribute for CSS selectors\r\n root.dataset.theme = resolvedMode\r\n\r\n // 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","/**\r\n * Brycks Design System - CSS Variable Helpers\r\n *\r\n * Utilities for working with CSS variables in components.\r\n */\r\n\r\n/** CSS variable names mapped to theme paths */\r\nexport const cssVar = {\r\n // Background\r\n bgApp: 'var(--brycks-background-app)',\r\n bgSubtle: 'var(--brycks-background-subtle)',\r\n bgMuted: 'var(--brycks-background-muted)',\r\n bgElevated: 'var(--brycks-background-elevated)',\r\n bgOverlay: 'var(--brycks-background-overlay)',\r\n bgInverse: 'var(--brycks-background-inverse)',\r\n\r\n // Foreground\r\n fgDefault: 'var(--brycks-foreground-default)',\r\n fgMuted: 'var(--brycks-foreground-muted)',\r\n fgSubtle: 'var(--brycks-foreground-subtle)',\r\n fgDisabled: 'var(--brycks-foreground-disabled)',\r\n fgInverse: 'var(--brycks-foreground-inverse)',\r\n fgLink: 'var(--brycks-foreground-link)',\r\n\r\n // Border\r\n borderDefault: 'var(--brycks-border-default)',\r\n borderMuted: 'var(--brycks-border-muted)',\r\n borderStrong: 'var(--brycks-border-strong)',\r\n borderFocus: 'var(--brycks-border-focus)',\r\n\r\n // Primary\r\n primaryDefault: 'var(--brycks-primary-default)',\r\n primaryHover: 'var(--brycks-primary-hover)',\r\n primaryActive: 'var(--brycks-primary-active)',\r\n primaryMuted: 'var(--brycks-primary-muted)',\r\n primaryForeground: 'var(--brycks-primary-foreground)',\r\n\r\n // Accent\r\n accentDefault: 'var(--brycks-accent-default)',\r\n accentHover: 'var(--brycks-accent-hover)',\r\n accentActive: 'var(--brycks-accent-active)',\r\n accentMuted: 'var(--brycks-accent-muted)',\r\n accentForeground: 'var(--brycks-accent-foreground)',\r\n\r\n // Success\r\n successDefault: 'var(--brycks-success-default)',\r\n successHover: 'var(--brycks-success-hover)',\r\n successMuted: 'var(--brycks-success-muted)',\r\n successForeground: 'var(--brycks-success-foreground)',\r\n\r\n // Warning\r\n warningDefault: 'var(--brycks-warning-default)',\r\n warningHover: 'var(--brycks-warning-hover)',\r\n warningMuted: 'var(--brycks-warning-muted)',\r\n warningForeground: 'var(--brycks-warning-foreground)',\r\n\r\n // Error\r\n errorDefault: 'var(--brycks-error-default)',\r\n errorHover: 'var(--brycks-error-hover)',\r\n errorMuted: 'var(--brycks-error-muted)',\r\n errorForeground: 'var(--brycks-error-foreground)',\r\n\r\n // Info\r\n infoDefault: 'var(--brycks-info-default)',\r\n infoHover: 'var(--brycks-info-hover)',\r\n infoMuted: 'var(--brycks-info-muted)',\r\n infoForeground: 'var(--brycks-info-foreground)',\r\n} as const\r\n\r\nexport type CSSVar = keyof typeof cssVar\r\n"],"names":["lightTheme","neutrals","primary","accent","success","warning","error","info","darkTheme","ThemeContext","createContext","THEME_STORAGE_KEY","mergeThemeColors","base","overrides","acc","key","baseValue","overrideValue","ThemeProvider","children","config","skipCSSVariables","mode","setModeState","useState","systemMode","setSystemMode","useEffect","mediaQuery","handleChange","e","resolvedMode","theme","useMemo","baseTheme","setMode","useCallback","newMode","toggleMode","root","flattenColors","obj","prefix","value","varName","cssVars","contextValue","useTheme","context","useContext","useThemeColors","cssVar"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
- import { jsx as I } from "react/jsx-runtime";
2
- import { createContext as P, useState as D, useEffect as j, useMemo as S, useCallback as C, useContext as V } from "react";
1
+ import { jsx as A } from "react/jsx-runtime";
2
+ import { createContext as I, useState as D, useEffect as j, useMemo as S, useCallback as C, useContext as P } from "react";
3
3
  import { n as r, i as f, e as b, w as g, s as i, a as n, p as o } from "./colors-B_8a3coi.js";
4
- const L = {
4
+ const V = {
5
5
  name: "light",
6
6
  colors: {
7
7
  background: {
@@ -141,40 +141,40 @@ const L = {
141
141
  foreground: r.white
142
142
  }
143
143
  }
144
- }, x = P(null), F = "brycks-theme-mode";
145
- function _(a, e) {
146
- return e ? Object.keys(a).reduce((c, s) => {
147
- const l = a[s], v = e[s];
148
- return typeof l == "object" && typeof v == "object" ? c[s] = { ...l, ...v } : v !== void 0 ? c[s] = v : c[s] = l, c;
149
- }, {}) : a;
144
+ }, x = I(null), F = "brycks-theme-mode";
145
+ function _(s, e) {
146
+ return e ? Object.keys(s).reduce((c, d) => {
147
+ const l = s[d], v = e[d];
148
+ return typeof l == "object" && typeof v == "object" ? c[d] = { ...l, ...v } : v !== void 0 ? c[d] = v : c[d] = l, c;
149
+ }, {}) : s;
150
150
  }
151
151
  function R({
152
- children: a,
152
+ children: s,
153
153
  config: e,
154
154
  skipCSSVariables: c = !1
155
155
  }) {
156
- const [s, l] = D(() => typeof window > "u" ? (e == null ? void 0 : e.defaultMode) ?? "system" : localStorage.getItem(F) ?? (e == null ? void 0 : e.defaultMode) ?? "system"), [v, O] = D(() => typeof window > "u" ? "light" : window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light");
156
+ const [d, l] = D(() => typeof window > "u" ? (e == null ? void 0 : e.defaultMode) ?? "system" : localStorage.getItem(F) ?? (e == null ? void 0 : e.defaultMode) ?? "system"), [v, O] = D(() => typeof window > "u" ? "light" : window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light");
157
157
  j(() => {
158
158
  const t = window.matchMedia("(prefers-color-scheme: dark)"), u = (w) => {
159
159
  O(w.matches ? "dark" : "light");
160
160
  };
161
161
  return t.addEventListener("change", u), () => t.removeEventListener("change", u);
162
162
  }, []);
163
- const d = s === "system" ? v : s, m = S(() => {
164
- const t = d === "dark" ? $ : L, u = d === "dark" ? e == null ? void 0 : e.dark : e == null ? void 0 : e.light;
163
+ const a = d === "system" ? v : d, m = S(() => {
164
+ const t = a === "dark" ? $ : V, u = a === "dark" ? e == null ? void 0 : e.dark : e == null ? void 0 : e.light;
165
165
  return u ? {
166
166
  name: t.name,
167
167
  colors: _(t.colors, u)
168
168
  } : t;
169
- }, [d, e]), h = C((t) => {
169
+ }, [a, e]), h = C((t) => {
170
170
  l(t), typeof window < "u" && localStorage.setItem(F, t);
171
171
  }, []), H = C(() => {
172
- h(d === "dark" ? "light" : "dark");
173
- }, [d, h]);
172
+ h(a === "dark" ? "light" : "dark");
173
+ }, [a, h]);
174
174
  j(() => {
175
175
  if (c || typeof document > "u") return;
176
176
  const t = document.documentElement;
177
- t.style.colorScheme = d, t.dataset.theme = d;
177
+ t.style.colorScheme = a, t.dataset.theme = a, a === "dark" ? t.classList.add("dark") : t.classList.remove("dark");
178
178
  const u = (p, k = "") => Object.entries(p).reduce(
179
179
  (M, [T, y]) => {
180
180
  const E = k ? `${k}-${T}` : T;
@@ -185,28 +185,28 @@ function R({
185
185
  Object.entries(w).forEach(([p, k]) => {
186
186
  t.style.setProperty(p, k);
187
187
  });
188
- }, [m, d, c]);
189
- const A = S(
188
+ }, [m, a, c]);
189
+ const L = S(
190
190
  () => ({
191
191
  theme: m,
192
- mode: s,
193
- resolvedMode: d,
192
+ mode: d,
193
+ resolvedMode: a,
194
194
  setMode: h,
195
195
  toggleMode: H
196
196
  }),
197
- [m, s, d, h, H]
197
+ [m, d, a, h, H]
198
198
  );
199
- return /* @__PURE__ */ I(x.Provider, { value: A, children: a });
199
+ return /* @__PURE__ */ A(x.Provider, { value: L, children: s });
200
200
  }
201
201
  function G() {
202
- const a = V(x);
203
- if (!a)
202
+ const s = P(x);
203
+ if (!s)
204
204
  throw new Error("useTheme must be used within a ThemeProvider");
205
- return a;
205
+ return s;
206
206
  }
207
207
  function Y() {
208
- const { theme: a } = G();
209
- return a.colors;
208
+ const { theme: s } = G();
209
+ return s.colors;
210
210
  }
211
211
  const q = {
212
212
  // Background
@@ -267,7 +267,7 @@ export {
267
267
  x as b,
268
268
  q as c,
269
269
  $ as d,
270
- L as l,
270
+ V as l,
271
271
  G as u
272
272
  };
273
- //# sourceMappingURL=cssVariables-CU3jCd8f.js.map
273
+ //# sourceMappingURL=cssVariables-D9uw0uKO.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cssVariables-D9uw0uKO.js","sources":["../src/design-system/themes/lightTheme.ts","../src/design-system/themes/darkTheme.ts","../src/design-system/themes/ThemeProvider.tsx","../src/design-system/themes/cssVariables.ts"],"sourcesContent":["/**\r\n * Brycks Design System - Light Theme\r\n *\r\n * A clean, calm light theme inspired by Apple's design language.\r\n * Subtle contrasts, soft shadows, and refined colors.\r\n */\r\n\r\nimport { neutrals, primary, accent, success, warning, error, info } from '../tokens/colors'\r\nimport type { Theme } from './types'\r\n\r\nexport const lightTheme: Theme = {\r\n name: 'light',\r\n colors: {\r\n background: {\r\n app: neutrals.white,\r\n subtle: neutrals.gray50,\r\n muted: neutrals.gray100,\r\n elevated: neutrals.white,\r\n overlay: 'rgba(0, 0, 0, 0.4)',\r\n inverse: neutrals.gray950,\r\n },\r\n\r\n foreground: {\r\n default: neutrals.gray950,\r\n muted: neutrals.gray600,\r\n subtle: neutrals.gray500,\r\n disabled: neutrals.gray400,\r\n inverse: neutrals.white,\r\n link: primary[600],\r\n },\r\n\r\n border: {\r\n default: neutrals.gray200,\r\n muted: neutrals.gray100,\r\n strong: neutrals.gray300,\r\n focus: primary[500],\r\n },\r\n\r\n primary: {\r\n default: primary[600],\r\n hover: primary[700],\r\n active: primary[800],\r\n muted: primary[50],\r\n softHover: primary[100],\r\n foreground: neutrals.white,\r\n },\r\n\r\n accent: {\r\n default: accent[500],\r\n hover: accent[600],\r\n active: accent[700],\r\n muted: accent[50],\r\n softHover: accent[100],\r\n foreground: neutrals.white,\r\n },\r\n\r\n success: {\r\n default: success[600],\r\n hover: success[700],\r\n muted: success[50],\r\n softHover: success[100],\r\n foreground: neutrals.white,\r\n },\r\n\r\n warning: {\r\n default: warning[500],\r\n hover: warning[600],\r\n muted: warning[50],\r\n softHover: warning[100],\r\n foreground: neutrals.gray950,\r\n },\r\n\r\n error: {\r\n default: error[600],\r\n hover: error[700],\r\n muted: error[50],\r\n softHover: error[100],\r\n foreground: neutrals.white,\r\n },\r\n\r\n info: {\r\n default: info[600],\r\n hover: info[700],\r\n muted: info[50],\r\n softHover: info[100],\r\n foreground: neutrals.white,\r\n },\r\n },\r\n}\r\n","/**\r\n * Brycks Design System - Dark Theme\r\n *\r\n * A sophisticated dark theme with deep blacks and vibrant accents.\r\n * Inspired by Apple's dark mode - true black with subtle depth.\r\n */\r\n\r\nimport { neutrals, primary, accent, success, warning, error, info } from '../tokens/colors'\r\nimport type { Theme } from './types'\r\n\r\nexport const darkTheme: Theme = {\r\n name: 'dark',\r\n colors: {\r\n background: {\r\n app: neutrals.black,\r\n subtle: neutrals.gray950,\r\n muted: neutrals.gray900,\r\n elevated: neutrals.gray800,\r\n overlay: 'rgba(0, 0, 0, 0.7)',\r\n inverse: neutrals.white,\r\n },\r\n\r\n foreground: {\r\n default: neutrals.gray100,\r\n muted: neutrals.gray400,\r\n subtle: neutrals.gray500,\r\n disabled: neutrals.gray600,\r\n inverse: neutrals.gray950,\r\n link: primary[400],\r\n },\r\n\r\n border: {\r\n default: neutrals.gray800,\r\n muted: neutrals.gray900,\r\n strong: neutrals.gray700,\r\n focus: primary[400],\r\n },\r\n\r\n primary: {\r\n default: primary[500],\r\n hover: primary[400],\r\n active: primary[300],\r\n muted: 'rgba(85, 120, 244, 0.15)',\r\n softHover: 'rgba(85, 120, 244, 0.25)',\r\n foreground: neutrals.white,\r\n },\r\n\r\n accent: {\r\n default: accent[400],\r\n hover: accent[300],\r\n active: accent[200],\r\n muted: 'rgba(248, 101, 69, 0.15)',\r\n softHover: 'rgba(248, 101, 69, 0.25)',\r\n foreground: neutrals.white,\r\n },\r\n\r\n success: {\r\n default: success[500],\r\n hover: success[400],\r\n muted: 'rgba(16, 185, 129, 0.15)',\r\n softHover: 'rgba(16, 185, 129, 0.25)',\r\n foreground: neutrals.white,\r\n },\r\n\r\n warning: {\r\n default: warning[400],\r\n hover: warning[300],\r\n muted: 'rgba(245, 158, 11, 0.15)',\r\n softHover: 'rgba(245, 158, 11, 0.25)',\r\n foreground: neutrals.gray950,\r\n },\r\n\r\n error: {\r\n default: error[500],\r\n hover: error[400],\r\n muted: 'rgba(239, 68, 68, 0.15)',\r\n softHover: 'rgba(239, 68, 68, 0.25)',\r\n foreground: neutrals.white,\r\n },\r\n\r\n info: {\r\n default: info[500],\r\n hover: info[400],\r\n muted: 'rgba(6, 182, 212, 0.15)',\r\n softHover: 'rgba(6, 182, 212, 0.25)',\r\n foreground: neutrals.white,\r\n },\r\n },\r\n}\r\n","/**\r\n * Brycks Design System - Theme Provider\r\n *\r\n * React context provider for theme management.\r\n * Handles light/dark mode switching and system preference detection.\r\n */\r\n\r\nimport {\r\n createContext,\r\n useCallback,\r\n useContext,\r\n useEffect,\r\n useMemo,\r\n useState,\r\n type ReactNode,\r\n} from 'react'\r\nimport { lightTheme } from './lightTheme'\r\nimport { darkTheme } from './darkTheme'\r\nimport type { Theme, ThemeContextValue, ThemeMode, ThemeConfig, ThemeColors } from './types'\r\n\r\nconst ThemeContext = createContext<ThemeContextValue | null>(null)\r\n\r\n/** Storage key for persisting theme preference */\r\nconst THEME_STORAGE_KEY = 'brycks-theme-mode'\r\n\r\n/** Deep merge theme colors */\r\nfunction mergeThemeColors(base: ThemeColors, overrides?: Partial<ThemeColors>): ThemeColors {\r\n if (!overrides) return base\r\n\r\n return Object.keys(base).reduce((acc, key) => {\r\n const baseValue = base[key as keyof ThemeColors]\r\n const overrideValue = overrides[key as keyof ThemeColors]\r\n\r\n if (typeof baseValue === 'object' && typeof overrideValue === 'object') {\r\n acc[key as keyof ThemeColors] = { ...baseValue, ...overrideValue } as never\r\n } else if (overrideValue !== undefined) {\r\n acc[key as keyof ThemeColors] = overrideValue as never\r\n } else {\r\n acc[key as keyof ThemeColors] = baseValue as never\r\n }\r\n\r\n return acc\r\n }, {} as ThemeColors)\r\n}\r\n\r\ninterface ThemeProviderProps {\r\n /** Child components */\r\n children: ReactNode\r\n /** Theme configuration for customization */\r\n config?: ThemeConfig\r\n /** Skip injecting CSS variables (for SSR or custom handling) */\r\n skipCSSVariables?: boolean\r\n}\r\n\r\nexport function ThemeProvider({\r\n children,\r\n config,\r\n skipCSSVariables = false,\r\n}: ThemeProviderProps) {\r\n const [mode, setModeState] = useState<ThemeMode>(() => {\r\n if (typeof window === 'undefined') return config?.defaultMode ?? 'system'\r\n\r\n const stored = localStorage.getItem(THEME_STORAGE_KEY) as ThemeMode | null\r\n return stored ?? config?.defaultMode ?? 'system'\r\n })\r\n\r\n const [systemMode, setSystemMode] = useState<'light' | 'dark'>(() => {\r\n if (typeof window === 'undefined') return 'light'\r\n return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light'\r\n })\r\n\r\n // Listen to system preference changes\r\n useEffect(() => {\r\n const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)')\r\n const handleChange = (e: MediaQueryListEvent) => {\r\n setSystemMode(e.matches ? 'dark' : 'light')\r\n }\r\n\r\n mediaQuery.addEventListener('change', handleChange)\r\n return () => mediaQuery.removeEventListener('change', handleChange)\r\n }, [])\r\n\r\n // Resolve actual mode (never 'system')\r\n const resolvedMode = mode === 'system' ? systemMode : mode\r\n\r\n // Build theme with any config overrides\r\n const theme = useMemo<Theme>(() => {\r\n const baseTheme = resolvedMode === 'dark' ? darkTheme : lightTheme\r\n const overrides = resolvedMode === 'dark' ? config?.dark : config?.light\r\n\r\n if (!overrides) return baseTheme\r\n\r\n return {\r\n name: baseTheme.name,\r\n colors: mergeThemeColors(baseTheme.colors, overrides),\r\n }\r\n }, [resolvedMode, config])\r\n\r\n // Persist mode to localStorage\r\n const setMode = useCallback((newMode: ThemeMode) => {\r\n setModeState(newMode)\r\n if (typeof window !== 'undefined') {\r\n localStorage.setItem(THEME_STORAGE_KEY, newMode)\r\n }\r\n }, [])\r\n\r\n const toggleMode = useCallback(() => {\r\n setMode(resolvedMode === 'dark' ? 'light' : 'dark')\r\n }, [resolvedMode, setMode])\r\n\r\n // Inject CSS variables\r\n useEffect(() => {\r\n if (skipCSSVariables || typeof document === 'undefined') return\r\n\r\n const root = document.documentElement\r\n\r\n // Set color scheme for native browser support\r\n root.style.colorScheme = resolvedMode\r\n\r\n // Set data attribute for CSS selectors\r\n root.dataset.theme = resolvedMode\r\n\r\n // 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","/**\r\n * Brycks Design System - CSS Variable Helpers\r\n *\r\n * Utilities for working with CSS variables in components.\r\n */\r\n\r\n/** CSS variable names mapped to theme paths */\r\nexport const cssVar = {\r\n // Background\r\n bgApp: 'var(--brycks-background-app)',\r\n bgSubtle: 'var(--brycks-background-subtle)',\r\n bgMuted: 'var(--brycks-background-muted)',\r\n bgElevated: 'var(--brycks-background-elevated)',\r\n bgOverlay: 'var(--brycks-background-overlay)',\r\n bgInverse: 'var(--brycks-background-inverse)',\r\n\r\n // Foreground\r\n fgDefault: 'var(--brycks-foreground-default)',\r\n fgMuted: 'var(--brycks-foreground-muted)',\r\n fgSubtle: 'var(--brycks-foreground-subtle)',\r\n fgDisabled: 'var(--brycks-foreground-disabled)',\r\n fgInverse: 'var(--brycks-foreground-inverse)',\r\n fgLink: 'var(--brycks-foreground-link)',\r\n\r\n // Border\r\n borderDefault: 'var(--brycks-border-default)',\r\n borderMuted: 'var(--brycks-border-muted)',\r\n borderStrong: 'var(--brycks-border-strong)',\r\n borderFocus: 'var(--brycks-border-focus)',\r\n\r\n // Primary\r\n primaryDefault: 'var(--brycks-primary-default)',\r\n primaryHover: 'var(--brycks-primary-hover)',\r\n primaryActive: 'var(--brycks-primary-active)',\r\n primaryMuted: 'var(--brycks-primary-muted)',\r\n primaryForeground: 'var(--brycks-primary-foreground)',\r\n\r\n // Accent\r\n accentDefault: 'var(--brycks-accent-default)',\r\n accentHover: 'var(--brycks-accent-hover)',\r\n accentActive: 'var(--brycks-accent-active)',\r\n accentMuted: 'var(--brycks-accent-muted)',\r\n accentForeground: 'var(--brycks-accent-foreground)',\r\n\r\n // Success\r\n successDefault: 'var(--brycks-success-default)',\r\n successHover: 'var(--brycks-success-hover)',\r\n successMuted: 'var(--brycks-success-muted)',\r\n successForeground: 'var(--brycks-success-foreground)',\r\n\r\n // Warning\r\n warningDefault: 'var(--brycks-warning-default)',\r\n warningHover: 'var(--brycks-warning-hover)',\r\n warningMuted: 'var(--brycks-warning-muted)',\r\n warningForeground: 'var(--brycks-warning-foreground)',\r\n\r\n // Error\r\n errorDefault: 'var(--brycks-error-default)',\r\n errorHover: 'var(--brycks-error-hover)',\r\n errorMuted: 'var(--brycks-error-muted)',\r\n errorForeground: 'var(--brycks-error-foreground)',\r\n\r\n // Info\r\n infoDefault: 'var(--brycks-info-default)',\r\n infoHover: 'var(--brycks-info-hover)',\r\n infoMuted: 'var(--brycks-info-muted)',\r\n infoForeground: 'var(--brycks-info-foreground)',\r\n} as const\r\n\r\nexport type CSSVar = keyof typeof cssVar\r\n"],"names":["lightTheme","neutrals","primary","accent","success","warning","error","info","darkTheme","ThemeContext","createContext","THEME_STORAGE_KEY","mergeThemeColors","base","overrides","acc","key","baseValue","overrideValue","ThemeProvider","children","config","skipCSSVariables","mode","setModeState","useState","systemMode","setSystemMode","useEffect","mediaQuery","handleChange","e","resolvedMode","theme","useMemo","baseTheme","setMode","useCallback","newMode","toggleMode","root","flattenColors","obj","prefix","value","varName","cssVars","contextValue","useTheme","context","useContext","useThemeColors","cssVar"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ThemeProvider.d.ts","sourceRoot":"","sources":["../../../src/design-system/themes/ThemeProvider.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAOL,KAAK,SAAS,EACf,MAAM,OAAO,CAAA;AAGd,OAAO,KAAK,EAAS,iBAAiB,EAAa,WAAW,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAE5F,QAAA,MAAM,YAAY,mDAAgD,CAAA;AAyBlE,UAAU,kBAAkB;IAC1B,uBAAuB;IACvB,QAAQ,EAAE,SAAS,CAAA;IACnB,4CAA4C;IAC5C,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB,gEAAgE;IAChE,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAC3B;AAED,wBAAgB,aAAa,CAAC,EAC5B,QAAQ,EACR,MAAM,EACN,gBAAwB,GACzB,EAAE,kBAAkB,2CAsGpB;AAED,mCAAmC;AACnC,wBAAgB,QAAQ,IAAI,iBAAiB,CAQ5C;AAED,uCAAuC;AACvC,wBAAgB,cAAc,gBAG7B;AAED,OAAO,EAAE,YAAY,EAAE,CAAA"}
1
+ {"version":3,"file":"ThemeProvider.d.ts","sourceRoot":"","sources":["../../../src/design-system/themes/ThemeProvider.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAOL,KAAK,SAAS,EACf,MAAM,OAAO,CAAA;AAGd,OAAO,KAAK,EAAS,iBAAiB,EAAa,WAAW,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAE5F,QAAA,MAAM,YAAY,mDAAgD,CAAA;AAyBlE,UAAU,kBAAkB;IAC1B,uBAAuB;IACvB,QAAQ,EAAE,SAAS,CAAA;IACnB,4CAA4C;IAC5C,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB,gEAAgE;IAChE,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAC3B;AAED,wBAAgB,aAAa,CAAC,EAC5B,QAAQ,EACR,MAAM,EACN,gBAAwB,GACzB,EAAE,kBAAkB,2CA6GpB;AAED,mCAAmC;AACnC,wBAAgB,QAAQ,IAAI,iBAAiB,CAQ5C;AAED,uCAAuC;AACvC,wBAAgB,cAAc,gBAG7B;AAED,OAAO,EAAE,YAAY,EAAE,CAAA"}
@@ -5,4 +5,9 @@
5
5
  */
6
6
  export * from './useMediaQuery';
7
7
  export * from './useDisclosure';
8
+ export * from './useClickOutside';
9
+ export * from './useKeyboardNavigation';
10
+ export * from './useFocusTrap';
11
+ export * from './useId';
12
+ export * from './useControllable';
8
13
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iBAAiB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,mBAAmB,CAAA;AACjC,cAAc,yBAAyB,CAAA;AACvC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,SAAS,CAAA;AACvB,cAAc,mBAAmB,CAAA"}
@@ -0,0 +1,9 @@
1
+ import { RefObject } from 'react';
2
+ export interface UseClickOutsideOptions {
3
+ /** Whether the listener is active */
4
+ enabled?: boolean;
5
+ /** Event type to listen for */
6
+ eventType?: 'mousedown' | 'mouseup' | 'click';
7
+ }
8
+ export declare function useClickOutside<T extends HTMLElement = HTMLElement>(handler: (event: MouseEvent | TouchEvent) => void, options?: UseClickOutsideOptions): RefObject<T | null>;
9
+ //# sourceMappingURL=useClickOutside.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useClickOutside.d.ts","sourceRoot":"","sources":["../../src/hooks/useClickOutside.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAqB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAEzD,MAAM,WAAW,sBAAsB;IACrC,qCAAqC;IACrC,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,+BAA+B;IAC/B,SAAS,CAAC,EAAE,WAAW,GAAG,SAAS,GAAG,OAAO,CAAA;CAC9C;AAED,wBAAgB,eAAe,CAAC,CAAC,SAAS,WAAW,GAAG,WAAW,EACjE,OAAO,EAAE,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU,KAAK,IAAI,EACjD,OAAO,GAAE,sBAA2B,GACnC,SAAS,CAAC,CAAC,GAAG,IAAI,CAAC,CAyBrB"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * useControllable Hook
3
+ *
4
+ * Manages controlled vs uncontrolled state pattern.
5
+ * Allows components to work in both controlled and uncontrolled modes.
6
+ */
7
+ export interface UseControllableOptions<T> {
8
+ /** Controlled value (if provided, component is controlled) */
9
+ value?: T;
10
+ /** Default value for uncontrolled mode */
11
+ defaultValue: T;
12
+ /** Callback when value changes */
13
+ onChange?: (value: T) => void;
14
+ }
15
+ export interface UseControllableReturn<T> {
16
+ /** Current value */
17
+ value: T;
18
+ /** Set the value */
19
+ setValue: (value: T | ((prev: T) => T)) => void;
20
+ /** Whether the component is controlled */
21
+ isControlled: boolean;
22
+ }
23
+ export declare function useControllable<T>(options: UseControllableOptions<T>): UseControllableReturn<T>;
24
+ //# sourceMappingURL=useControllable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useControllable.d.ts","sourceRoot":"","sources":["../../src/hooks/useControllable.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,MAAM,WAAW,sBAAsB,CAAC,CAAC;IACvC,8DAA8D;IAC9D,KAAK,CAAC,EAAE,CAAC,CAAA;IACT,0CAA0C;IAC1C,YAAY,EAAE,CAAC,CAAA;IACf,kCAAkC;IAClC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAA;CAC9B;AAED,MAAM,WAAW,qBAAqB,CAAC,CAAC;IACtC,oBAAoB;IACpB,KAAK,EAAE,CAAC,CAAA;IACR,oBAAoB;IACpB,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,IAAI,CAAA;IAC/C,0CAA0C;IAC1C,YAAY,EAAE,OAAO,CAAA;CACtB;AAED,wBAAgB,eAAe,CAAC,CAAC,EAC/B,OAAO,EAAE,sBAAsB,CAAC,CAAC,CAAC,GACjC,qBAAqB,CAAC,CAAC,CAAC,CAyC1B"}
@@ -0,0 +1,21 @@
1
+ import { RefObject } from 'react';
2
+ export interface UseFocusTrapOptions {
3
+ /** Whether the focus trap is active */
4
+ enabled?: boolean;
5
+ /** Whether to auto-focus the first element */
6
+ autoFocus?: boolean;
7
+ /** Whether to restore focus on unmount */
8
+ restoreFocus?: boolean;
9
+ /** Initial element to focus (selector or element) */
10
+ initialFocus?: string | HTMLElement | null;
11
+ }
12
+ export interface UseFocusTrapReturn<T extends HTMLElement> {
13
+ /** Ref to attach to the container */
14
+ ref: RefObject<T | null>;
15
+ /** Manually focus the first focusable element */
16
+ focusFirst: () => void;
17
+ /** Manually focus the last focusable element */
18
+ focusLast: () => void;
19
+ }
20
+ export declare function useFocusTrap<T extends HTMLElement = HTMLDivElement>(options?: UseFocusTrapOptions): UseFocusTrapReturn<T>;
21
+ //# sourceMappingURL=useFocusTrap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFocusTrap.d.ts","sourceRoot":"","sources":["../../src/hooks/useFocusTrap.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAkC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAWtE,MAAM,WAAW,mBAAmB;IAClC,uCAAuC;IACvC,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,8CAA8C;IAC9C,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,0CAA0C;IAC1C,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,qDAAqD;IACrD,YAAY,CAAC,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAAA;CAC3C;AAED,MAAM,WAAW,kBAAkB,CAAC,CAAC,SAAS,WAAW;IACvD,qCAAqC;IACrC,GAAG,EAAE,SAAS,CAAC,CAAC,GAAG,IAAI,CAAC,CAAA;IACxB,iDAAiD;IACjD,UAAU,EAAE,MAAM,IAAI,CAAA;IACtB,gDAAgD;IAChD,SAAS,EAAE,MAAM,IAAI,CAAA;CACtB;AAED,wBAAgB,YAAY,CAAC,CAAC,SAAS,WAAW,GAAG,cAAc,EACjE,OAAO,GAAE,mBAAwB,GAChC,kBAAkB,CAAC,CAAC,CAAC,CAoGvB"}