@fpkit/acss 0.5.13 → 0.6.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 (280) hide show
  1. package/libs/{chunk-PQ2K3BM6.cjs → chunk-2NRIP6RB.cjs} +3 -3
  2. package/libs/chunk-33PNJ4LO.cjs +15 -0
  3. package/libs/chunk-33PNJ4LO.cjs.map +1 -0
  4. package/libs/chunk-4BZKFPEC.cjs +17 -0
  5. package/libs/chunk-4BZKFPEC.cjs.map +1 -0
  6. package/libs/{chunk-772NRB75.js → chunk-5QD3DWFI.js} +2 -2
  7. package/libs/chunk-6SAHIYCZ.js +7 -0
  8. package/libs/chunk-6SAHIYCZ.js.map +1 -0
  9. package/libs/{chunk-3MKLDCKQ.cjs → chunk-6WTC4JXH.cjs} +3 -3
  10. package/libs/chunk-75QHTLFO.js +7 -0
  11. package/libs/chunk-75QHTLFO.js.map +1 -0
  12. package/libs/{chunk-ZANSFMTD.js → chunk-7XPFW7CB.js} +3 -3
  13. package/libs/chunk-BFK62VX5.js +5 -0
  14. package/libs/chunk-BFK62VX5.js.map +1 -0
  15. package/libs/{chunk-ROZI23GS.cjs → chunk-DKTHCQ5P.cjs} +4 -4
  16. package/libs/chunk-E2AJURUW.cjs +13 -0
  17. package/libs/chunk-E2AJURUW.cjs.map +1 -0
  18. package/libs/{chunk-L75OQKEI.cjs → chunk-ENTCUJ3A.cjs} +3 -3
  19. package/libs/chunk-ENTCUJ3A.cjs.map +1 -0
  20. package/libs/chunk-F5EYMVQM.js +10 -0
  21. package/libs/chunk-F5EYMVQM.js.map +1 -0
  22. package/libs/chunk-FVROL3V5.js +9 -0
  23. package/libs/chunk-FVROL3V5.js.map +1 -0
  24. package/libs/chunk-GT77BX4L.cjs +17 -0
  25. package/libs/chunk-GT77BX4L.cjs.map +1 -0
  26. package/libs/chunk-GUJSMQ3V.cjs +16 -0
  27. package/libs/chunk-GUJSMQ3V.cjs.map +1 -0
  28. package/libs/chunk-HHLNOC5T.js +7 -0
  29. package/libs/chunk-HHLNOC5T.js.map +1 -0
  30. package/libs/chunk-HRRHPLER.js +8 -0
  31. package/libs/chunk-HRRHPLER.js.map +1 -0
  32. package/libs/chunk-IEB64SWY.js +8 -0
  33. package/libs/chunk-IEB64SWY.js.map +1 -0
  34. package/libs/{chunk-NGTJDDFO.js → chunk-IQ76HGVP.js} +2 -2
  35. package/libs/chunk-IRLFZ3OL.js +9 -0
  36. package/libs/chunk-IRLFZ3OL.js.map +1 -0
  37. package/libs/{chunk-JJ43O4Y5.js → chunk-KK47SYZI.js} +2 -2
  38. package/libs/chunk-O3JIHC5M.cjs +15 -0
  39. package/libs/chunk-O3JIHC5M.cjs.map +1 -0
  40. package/libs/chunk-O5XAJ7BY.cjs +18 -0
  41. package/libs/chunk-O5XAJ7BY.cjs.map +1 -0
  42. package/libs/chunk-OVWLQYMK.js +10 -0
  43. package/libs/chunk-OVWLQYMK.js.map +1 -0
  44. package/libs/chunk-PNWIRCG3.cjs +7 -0
  45. package/libs/chunk-PNWIRCG3.cjs.map +1 -0
  46. package/libs/{chunk-D4YLRWAO.cjs → chunk-QVW6W76L.cjs} +6 -6
  47. package/libs/chunk-T4T6GWYQ.cjs +17 -0
  48. package/libs/chunk-T4T6GWYQ.cjs.map +1 -0
  49. package/libs/chunk-TON2YGMD.cjs +9 -0
  50. package/libs/chunk-TON2YGMD.cjs.map +1 -0
  51. package/libs/chunk-UEPAWMDF.js +8 -0
  52. package/libs/chunk-UEPAWMDF.js.map +1 -0
  53. package/libs/{chunk-LT5KZ2QW.cjs → chunk-US2I5GI7.cjs} +3 -3
  54. package/libs/{chunk-B7F5FS6D.cjs → chunk-W2UIN7EV.cjs} +3 -3
  55. package/libs/{chunk-P2DC76ZZ.cjs → chunk-W5TKWBFC.cjs} +3 -3
  56. package/libs/chunk-WXBFBWYF.cjs +16 -0
  57. package/libs/chunk-WXBFBWYF.cjs.map +1 -0
  58. package/libs/{chunk-VUH3FXGJ.js → chunk-X3JCTEPD.js} +5 -5
  59. package/libs/chunk-X5LGFCWG.js +9 -0
  60. package/libs/chunk-X5LGFCWG.js.map +1 -0
  61. package/libs/{chunk-5M57K4SW.js → chunk-Y2PFDELK.js} +2 -2
  62. package/libs/{chunk-ETFLFC2S.js → chunk-ZFJ4U45S.js} +2 -2
  63. package/libs/{component-props-a8a2f97e.d.ts → component-props-67d978a2.d.ts} +4 -4
  64. package/libs/components/alert/alert.css +1 -1
  65. package/libs/components/alert/alert.css.map +1 -1
  66. package/libs/components/alert/alert.min.css +2 -2
  67. package/libs/components/breadcrumbs/breadcrumb.cjs +6 -6
  68. package/libs/components/breadcrumbs/breadcrumb.d.cts +11 -11
  69. package/libs/components/breadcrumbs/breadcrumb.d.ts +11 -11
  70. package/libs/components/breadcrumbs/breadcrumb.js +3 -3
  71. package/libs/components/button.cjs +6 -4
  72. package/libs/components/button.d.cts +97 -4
  73. package/libs/components/button.d.ts +97 -4
  74. package/libs/components/button.js +4 -2
  75. package/libs/components/card.cjs +7 -7
  76. package/libs/components/card.d.cts +14 -14
  77. package/libs/components/card.d.ts +14 -14
  78. package/libs/components/card.js +2 -2
  79. package/libs/components/dialog/dialog.cjs +9 -7
  80. package/libs/components/dialog/dialog.d.cts +3 -3
  81. package/libs/components/dialog/dialog.d.ts +3 -3
  82. package/libs/components/dialog/dialog.js +7 -5
  83. package/libs/components/form/fields.cjs +4 -4
  84. package/libs/components/form/fields.d.cts +16 -7
  85. package/libs/components/form/fields.d.ts +16 -7
  86. package/libs/components/form/fields.js +2 -2
  87. package/libs/components/form/inputs.cjs +6 -4
  88. package/libs/components/form/inputs.d.cts +50 -2
  89. package/libs/components/form/inputs.d.ts +50 -2
  90. package/libs/components/form/inputs.js +4 -2
  91. package/libs/components/form/textarea.cjs +5 -4
  92. package/libs/components/form/textarea.d.cts +32 -23
  93. package/libs/components/form/textarea.d.ts +32 -23
  94. package/libs/components/form/textarea.js +3 -2
  95. package/libs/components/heading/heading.cjs +3 -3
  96. package/libs/components/heading/heading.d.cts +2 -2
  97. package/libs/components/heading/heading.d.ts +2 -2
  98. package/libs/components/heading/heading.js +2 -2
  99. package/libs/components/icons/icon.cjs +4 -4
  100. package/libs/components/icons/icon.d.cts +38 -38
  101. package/libs/components/icons/icon.d.ts +38 -38
  102. package/libs/components/icons/icon.js +2 -2
  103. package/libs/components/link/link.cjs +4 -4
  104. package/libs/components/link/link.css +1 -1
  105. package/libs/components/link/link.css.map +1 -1
  106. package/libs/components/link/link.d.cts +3 -19
  107. package/libs/components/link/link.d.ts +3 -19
  108. package/libs/components/link/link.js +2 -2
  109. package/libs/components/link/link.min.css +2 -2
  110. package/libs/components/list/list.cjs +5 -5
  111. package/libs/components/list/list.css +1 -0
  112. package/libs/components/list/list.css.map +1 -0
  113. package/libs/components/list/list.d.cts +120 -33
  114. package/libs/components/list/list.d.ts +120 -33
  115. package/libs/components/list/list.js +2 -2
  116. package/libs/components/list/list.min.css +3 -0
  117. package/libs/components/modal.cjs +6 -4
  118. package/libs/components/modal.d.cts +8 -8
  119. package/libs/components/modal.d.ts +8 -8
  120. package/libs/components/modal.js +5 -3
  121. package/libs/components/nav/nav.cjs +7 -7
  122. package/libs/components/nav/nav.css +1 -1
  123. package/libs/components/nav/nav.css.map +1 -1
  124. package/libs/components/nav/nav.d.cts +550 -34
  125. package/libs/components/nav/nav.d.ts +550 -34
  126. package/libs/components/nav/nav.js +3 -3
  127. package/libs/components/nav/nav.min.css +2 -2
  128. package/libs/components/popover/popover.d.cts +5 -5
  129. package/libs/components/popover/popover.d.ts +5 -5
  130. package/libs/components/tables/table.cjs +5 -5
  131. package/libs/components/tables/table.d.cts +8 -8
  132. package/libs/components/tables/table.d.ts +8 -8
  133. package/libs/components/tables/table.js +2 -2
  134. package/libs/components/tag/tag.css +1 -1
  135. package/libs/components/tag/tag.css.map +1 -1
  136. package/libs/components/tag/tag.min.css +2 -2
  137. package/libs/components/text/text.cjs +5 -5
  138. package/libs/components/text/text.d.cts +5 -5
  139. package/libs/components/text/text.d.ts +5 -5
  140. package/libs/components/text/text.js +2 -2
  141. package/libs/form.types-d25ebfac.d.ts +233 -0
  142. package/libs/{heading-3648c538.d.ts → heading-7446cb46.d.ts} +8 -8
  143. package/libs/hooks.cjs +9 -4
  144. package/libs/hooks.d.cts +137 -3
  145. package/libs/hooks.d.ts +137 -3
  146. package/libs/hooks.js +4 -3
  147. package/libs/icons.cjs +3 -3
  148. package/libs/icons.d.cts +2 -2
  149. package/libs/icons.d.ts +2 -2
  150. package/libs/icons.js +2 -2
  151. package/libs/index.cjs +53 -51
  152. package/libs/index.cjs.map +1 -1
  153. package/libs/index.css +1 -1
  154. package/libs/index.css.map +1 -1
  155. package/libs/index.d.cts +338 -49
  156. package/libs/index.d.ts +338 -49
  157. package/libs/index.js +24 -22
  158. package/libs/index.js.map +1 -1
  159. package/libs/link-5192f411.d.ts +323 -0
  160. package/libs/list.types-d26de310.d.ts +245 -0
  161. package/libs/{ui-645f95b5.d.ts → ui-d01b50d4.d.ts} +16 -12
  162. package/package.json +4 -6
  163. package/src/components/alert/alert.scss +1 -4
  164. package/src/components/breadcrumbs/breadcrumb.tsx +4 -1
  165. package/src/components/buttons/README.mdx +102 -1
  166. package/src/components/buttons/button.stories.tsx +106 -0
  167. package/src/components/buttons/button.tsx +82 -52
  168. package/src/components/dialog/dialog-a11y-review.md +653 -0
  169. package/src/components/form/README.mdx +725 -43
  170. package/src/components/form/WCAG-REVIEW.md +654 -0
  171. package/src/components/form/fields.tsx +10 -1
  172. package/src/components/form/form.stories.tsx +604 -23
  173. package/src/components/form/form.tsx +204 -63
  174. package/src/components/form/form.types.ts +378 -0
  175. package/src/components/form/input.stories.tsx +71 -3
  176. package/src/components/form/inputs.tsx +159 -67
  177. package/src/components/form/select.tsx +122 -66
  178. package/src/components/form/textarea.tsx +120 -73
  179. package/src/components/fp.tsx +86 -11
  180. package/src/components/link/README.mdx +923 -0
  181. package/src/components/link/link.scss +79 -26
  182. package/src/components/link/link.stories.tsx +383 -30
  183. package/src/components/link/link.test.tsx +677 -0
  184. package/src/components/link/link.tsx +163 -57
  185. package/src/components/link/link.types.ts +261 -0
  186. package/src/components/list/README.mdx +764 -0
  187. package/src/components/list/list.scss +285 -0
  188. package/src/components/list/list.stories.tsx +514 -27
  189. package/src/components/list/list.test.tsx +554 -0
  190. package/src/components/list/list.tsx +153 -51
  191. package/src/components/list/list.types.ts +255 -0
  192. package/src/components/nav/ACCESSIBILITY.md +649 -0
  193. package/src/components/nav/README.mdx +782 -0
  194. package/src/components/nav/nav.scss +32 -1
  195. package/src/components/nav/nav.stories.tsx +44 -6
  196. package/src/components/nav/nav.tsx +302 -51
  197. package/src/components/nav/nav.types.ts +308 -0
  198. package/src/components/tag/README.mdx +426 -0
  199. package/src/components/tag/tag.scss +101 -27
  200. package/src/components/tag/tag.stories.tsx +384 -10
  201. package/src/components/tag/tag.test.tsx +210 -0
  202. package/src/components/tag/tag.tsx +106 -9
  203. package/src/components/tag/tag.types.ts +107 -0
  204. package/src/components/ui.tsx +8 -3
  205. package/src/hooks/use-disabled-state.test.tsx +536 -0
  206. package/src/hooks/use-disabled-state.ts +246 -0
  207. package/src/hooks/useDisabledState.md +393 -0
  208. package/src/hooks.ts +6 -0
  209. package/src/index.scss +2 -0
  210. package/src/index.ts +2 -1
  211. package/src/sass/_globals.scss +2 -7
  212. package/src/styles/alert/alert.css +1 -3
  213. package/src/styles/alert/alert.css.map +1 -1
  214. package/src/styles/index.css +450 -76
  215. package/src/styles/index.css.map +1 -1
  216. package/src/styles/link/link.css +45 -28
  217. package/src/styles/link/link.css.map +1 -1
  218. package/src/styles/list/list.css +214 -0
  219. package/src/styles/list/list.css.map +1 -0
  220. package/src/styles/nav/nav.css +21 -1
  221. package/src/styles/nav/nav.css.map +1 -1
  222. package/src/styles/tag/tag.css +113 -35
  223. package/src/styles/tag/tag.css.map +1 -1
  224. package/src/styles/utilities/_disabled.scss +58 -0
  225. package/src/types/shared.ts +43 -6
  226. package/src/utils/accessibility.ts +109 -0
  227. package/libs/chunk-2LTJ7HHX.cjs +0 -18
  228. package/libs/chunk-2LTJ7HHX.cjs.map +0 -1
  229. package/libs/chunk-2Y7W75TT.js +0 -9
  230. package/libs/chunk-2Y7W75TT.js.map +0 -1
  231. package/libs/chunk-5S4ORA4C.cjs +0 -15
  232. package/libs/chunk-5S4ORA4C.cjs.map +0 -1
  233. package/libs/chunk-AHDJGCG5.cjs +0 -15
  234. package/libs/chunk-AHDJGCG5.cjs.map +0 -1
  235. package/libs/chunk-BHRQBJRY.js +0 -8
  236. package/libs/chunk-BHRQBJRY.js.map +0 -1
  237. package/libs/chunk-GZ4QFPRY.js +0 -9
  238. package/libs/chunk-GZ4QFPRY.js.map +0 -1
  239. package/libs/chunk-IYUN2EW3.cjs +0 -15
  240. package/libs/chunk-IYUN2EW3.cjs.map +0 -1
  241. package/libs/chunk-J32EZPYD.cjs +0 -15
  242. package/libs/chunk-J32EZPYD.cjs.map +0 -1
  243. package/libs/chunk-KUKIVRC2.js +0 -7
  244. package/libs/chunk-KUKIVRC2.js.map +0 -1
  245. package/libs/chunk-L75OQKEI.cjs.map +0 -1
  246. package/libs/chunk-M5RRNTVX.cjs +0 -15
  247. package/libs/chunk-M5RRNTVX.cjs.map +0 -1
  248. package/libs/chunk-OK5QEIMD.cjs +0 -17
  249. package/libs/chunk-OK5QEIMD.cjs.map +0 -1
  250. package/libs/chunk-P7TTEYCD.js +0 -7
  251. package/libs/chunk-P7TTEYCD.js.map +0 -1
  252. package/libs/chunk-QLZWHAMK.js +0 -8
  253. package/libs/chunk-QLZWHAMK.js.map +0 -1
  254. package/libs/chunk-RIVUMPOG.js +0 -8
  255. package/libs/chunk-RIVUMPOG.js.map +0 -1
  256. package/libs/chunk-S7BABR7Z.cjs +0 -13
  257. package/libs/chunk-S7BABR7Z.cjs.map +0 -1
  258. package/libs/chunk-SMYRLO3E.js +0 -8
  259. package/libs/chunk-SMYRLO3E.js.map +0 -1
  260. package/libs/chunk-TYRCEX2L.js +0 -8
  261. package/libs/chunk-TYRCEX2L.js.map +0 -1
  262. package/libs/chunk-XBA562WW.js +0 -8
  263. package/libs/chunk-XBA562WW.js.map +0 -1
  264. package/libs/chunk-XTQKWY7W.cjs +0 -32
  265. package/libs/chunk-XTQKWY7W.cjs.map +0 -1
  266. package/libs/inputs-f3a216db.d.ts +0 -45
  267. /package/libs/{chunk-PQ2K3BM6.cjs.map → chunk-2NRIP6RB.cjs.map} +0 -0
  268. /package/libs/{chunk-772NRB75.js.map → chunk-5QD3DWFI.js.map} +0 -0
  269. /package/libs/{chunk-3MKLDCKQ.cjs.map → chunk-6WTC4JXH.cjs.map} +0 -0
  270. /package/libs/{chunk-ZANSFMTD.js.map → chunk-7XPFW7CB.js.map} +0 -0
  271. /package/libs/{chunk-ROZI23GS.cjs.map → chunk-DKTHCQ5P.cjs.map} +0 -0
  272. /package/libs/{chunk-NGTJDDFO.js.map → chunk-IQ76HGVP.js.map} +0 -0
  273. /package/libs/{chunk-JJ43O4Y5.js.map → chunk-KK47SYZI.js.map} +0 -0
  274. /package/libs/{chunk-D4YLRWAO.cjs.map → chunk-QVW6W76L.cjs.map} +0 -0
  275. /package/libs/{chunk-LT5KZ2QW.cjs.map → chunk-US2I5GI7.cjs.map} +0 -0
  276. /package/libs/{chunk-B7F5FS6D.cjs.map → chunk-W2UIN7EV.cjs.map} +0 -0
  277. /package/libs/{chunk-P2DC76ZZ.cjs.map → chunk-W5TKWBFC.cjs.map} +0 -0
  278. /package/libs/{chunk-VUH3FXGJ.js.map → chunk-X3JCTEPD.js.map} +0 -0
  279. /package/libs/{chunk-5M57K4SW.js.map → chunk-Y2PFDELK.js.map} +0 -0
  280. /package/libs/{chunk-ETFLFC2S.js.map → chunk-ZFJ4U45S.js.map} +0 -0
package/libs/hooks.d.cts CHANGED
@@ -1,7 +1,7 @@
1
1
  export { useBreadcrumbSegments } from './components/breadcrumbs/breadcrumb.cjs';
2
2
  import 'react';
3
- import './ui-645f95b5.js';
4
- import './components/link/link.cjs';
3
+ import './ui-d01b50d4.js';
4
+ import './link-5192f411.js';
5
5
 
6
6
  type Position = {
7
7
  /**
@@ -34,4 +34,138 @@ declare const usePopover: (elementRef: React.RefObject<HTMLElement | HTMLDivElem
34
34
  handlePointerLeave: () => void;
35
35
  };
36
36
 
37
- export { usePopover };
37
+ /**
38
+ * Event handler mapping type for disabled state management.
39
+ * Maps event names to their handler functions for any HTML element.
40
+ *
41
+ * @template T - The HTML element type (e.g., HTMLButtonElement, HTMLInputElement)
42
+ */
43
+ type DisabledEventHandlers<T extends HTMLElement> = {
44
+ onClick?: (event: React.MouseEvent<T>) => void;
45
+ onChange?: (event: React.ChangeEvent<T>) => void;
46
+ onBlur?: (event: React.FocusEvent<T>) => void;
47
+ onFocus?: (event: React.FocusEvent<T>) => void;
48
+ onPointerDown?: (event: React.PointerEvent<T>) => void;
49
+ onKeyDown?: (event: React.KeyboardEvent<T>) => void;
50
+ onKeyUp?: (event: React.KeyboardEvent<T>) => void;
51
+ onMouseDown?: (event: React.MouseEvent<T>) => void;
52
+ onMouseUp?: (event: React.MouseEvent<T>) => void;
53
+ onTouchStart?: (event: React.TouchEvent<T>) => void;
54
+ onTouchEnd?: (event: React.TouchEvent<T>) => void;
55
+ };
56
+ /**
57
+ * Props returned by the useDisabledState hook containing ARIA attributes and styling.
58
+ */
59
+ interface DisabledProps {
60
+ /** ARIA attribute indicating disabled state */
61
+ 'aria-disabled': boolean;
62
+ /** CSS class name for disabled state styling */
63
+ className: string;
64
+ /** Optional tabIndex to remove element from tab order when disabled */
65
+ tabIndex?: -1;
66
+ }
67
+ /**
68
+ * Configuration options for useDisabledState hook.
69
+ *
70
+ * @template T - The HTML element type
71
+ */
72
+ interface UseDisabledStateOptions<T extends HTMLElement> {
73
+ /** Event handlers to wrap with disabled logic */
74
+ handlers?: Partial<DisabledEventHandlers<T>>;
75
+ /** Existing className to merge with disabled class */
76
+ className?: string;
77
+ /** Custom disabled className (default: 'is-disabled') */
78
+ disabledClassName?: string;
79
+ /** Whether to call preventDefault on disabled events (default: true) */
80
+ preventDefault?: boolean;
81
+ /** Whether to call stopPropagation on disabled events (default: true) */
82
+ stopPropagation?: boolean;
83
+ /** Make element non-focusable when disabled via tabIndex=-1 (default: false for a11y) */
84
+ removeFromTabOrder?: boolean;
85
+ }
86
+ /**
87
+ * Return type for the useDisabledState hook.
88
+ *
89
+ * @template T - The HTML element type
90
+ */
91
+ interface UseDisabledStateReturn<T extends HTMLElement> {
92
+ /** Props to spread on the element for disabled state */
93
+ disabledProps: DisabledProps;
94
+ /** Wrapped event handlers that respect disabled state */
95
+ handlers: Partial<DisabledEventHandlers<T>>;
96
+ }
97
+ /**
98
+ * Manages accessible disabled state for form elements using aria-disabled pattern.
99
+ *
100
+ * This hook implements WCAG 2.1 Level AA compliant disabled state management by:
101
+ * - Using `aria-disabled` instead of native `disabled` attribute (keeps elements focusable)
102
+ * - Preventing all interaction events when disabled
103
+ * - Applying accessible styling via `.is-disabled` class
104
+ * - Maintaining keyboard focusability for screen reader discovery
105
+ *
106
+ * **Why aria-disabled instead of disabled attribute?**
107
+ * - Elements remain in keyboard tab order (WCAG 2.1.1 - Keyboard)
108
+ * - Screen readers can discover and announce disabled state
109
+ * - Enables tooltips and contextual help on disabled elements
110
+ * - Better visual styling control for WCAG contrast compliance
111
+ *
112
+ * **Performance Optimizations:**
113
+ * - Single memoization pass for all handlers and props
114
+ * - Stable handler references using refs (only recreate on disabled state change)
115
+ * - Automatic className merging to reduce consumer boilerplate
116
+ *
117
+ * @template T - The HTML element type (e.g., HTMLButtonElement, HTMLInputElement)
118
+ *
119
+ * @param {boolean | undefined} disabled - Whether the element should be disabled. Undefined treated as false.
120
+ * @param {Partial<DisabledEventHandlers<T>> | UseDisabledStateOptions<T>} handlersOrOptions -
121
+ * Event handlers to wrap OR configuration options object (for backward compatibility)
122
+ *
123
+ * @returns {UseDisabledStateReturn<T>} Object containing disabledProps and wrapped handlers
124
+ *
125
+ * @example
126
+ * // Basic button usage (legacy API - still supported)
127
+ * const MyButton = ({ disabled, onClick, children }) => {
128
+ * const { disabledProps, handlers } = useDisabledState(disabled, { onClick });
129
+ * return <button {...disabledProps} {...handlers}>{children}</button>;
130
+ * };
131
+ *
132
+ * @example
133
+ * // Enhanced API with className merging
134
+ * const MyButton = ({ disabled, onClick, className, children }) => {
135
+ * const { disabledProps, handlers } = useDisabledState(disabled, {
136
+ * handlers: { onClick },
137
+ * className,
138
+ * });
139
+ * return <button {...disabledProps} {...handlers}>{children}</button>;
140
+ * };
141
+ *
142
+ * @example
143
+ * // Custom configuration
144
+ * const MyInput = ({ disabled, onChange, className }) => {
145
+ * const { disabledProps, handlers } = useDisabledState(disabled, {
146
+ * handlers: { onChange },
147
+ * className,
148
+ * disabledClassName: 'custom-disabled',
149
+ * preventDefault: true,
150
+ * stopPropagation: false,
151
+ * });
152
+ * return <input {...disabledProps} {...handlers} />;
153
+ * };
154
+ *
155
+ * @example
156
+ * // Remove from tab order when disabled
157
+ * const MyButton = ({ disabled, onClick }) => {
158
+ * const { disabledProps, handlers } = useDisabledState(disabled, {
159
+ * handlers: { onClick },
160
+ * removeFromTabOrder: true, // Adds tabIndex=-1 when disabled
161
+ * });
162
+ * return <button {...disabledProps} {...handlers}>Click me</button>;
163
+ * };
164
+ *
165
+ * @see {@link https://www.w3.org/WAI/WCAG21/Understanding/keyboard WCAG 2.1.1 - Keyboard}
166
+ * @see {@link https://www.w3.org/WAI/WCAG21/Understanding/name-role-value WCAG 4.1.2 - Name, Role, Value}
167
+ * @see {@link https://www.w3.org/WAI/WCAG21/Understanding/contrast-minimum WCAG 1.4.3 - Contrast (Minimum)}
168
+ */
169
+ declare function useDisabledState<T extends HTMLElement = HTMLElement>(disabled: boolean | undefined, handlersOrOptions?: Partial<DisabledEventHandlers<T>> | UseDisabledStateOptions<T>): UseDisabledStateReturn<T>;
170
+
171
+ export { DisabledEventHandlers, DisabledProps, UseDisabledStateReturn, useDisabledState, usePopover };
package/libs/hooks.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  export { useBreadcrumbSegments } from './components/breadcrumbs/breadcrumb.js';
2
2
  import 'react';
3
- import './ui-645f95b5.js';
4
- import './components/link/link.js';
3
+ import './ui-d01b50d4.js';
4
+ import './link-5192f411.js';
5
5
 
6
6
  type Position = {
7
7
  /**
@@ -34,4 +34,138 @@ declare const usePopover: (elementRef: React.RefObject<HTMLElement | HTMLDivElem
34
34
  handlePointerLeave: () => void;
35
35
  };
36
36
 
37
- export { usePopover };
37
+ /**
38
+ * Event handler mapping type for disabled state management.
39
+ * Maps event names to their handler functions for any HTML element.
40
+ *
41
+ * @template T - The HTML element type (e.g., HTMLButtonElement, HTMLInputElement)
42
+ */
43
+ type DisabledEventHandlers<T extends HTMLElement> = {
44
+ onClick?: (event: React.MouseEvent<T>) => void;
45
+ onChange?: (event: React.ChangeEvent<T>) => void;
46
+ onBlur?: (event: React.FocusEvent<T>) => void;
47
+ onFocus?: (event: React.FocusEvent<T>) => void;
48
+ onPointerDown?: (event: React.PointerEvent<T>) => void;
49
+ onKeyDown?: (event: React.KeyboardEvent<T>) => void;
50
+ onKeyUp?: (event: React.KeyboardEvent<T>) => void;
51
+ onMouseDown?: (event: React.MouseEvent<T>) => void;
52
+ onMouseUp?: (event: React.MouseEvent<T>) => void;
53
+ onTouchStart?: (event: React.TouchEvent<T>) => void;
54
+ onTouchEnd?: (event: React.TouchEvent<T>) => void;
55
+ };
56
+ /**
57
+ * Props returned by the useDisabledState hook containing ARIA attributes and styling.
58
+ */
59
+ interface DisabledProps {
60
+ /** ARIA attribute indicating disabled state */
61
+ 'aria-disabled': boolean;
62
+ /** CSS class name for disabled state styling */
63
+ className: string;
64
+ /** Optional tabIndex to remove element from tab order when disabled */
65
+ tabIndex?: -1;
66
+ }
67
+ /**
68
+ * Configuration options for useDisabledState hook.
69
+ *
70
+ * @template T - The HTML element type
71
+ */
72
+ interface UseDisabledStateOptions<T extends HTMLElement> {
73
+ /** Event handlers to wrap with disabled logic */
74
+ handlers?: Partial<DisabledEventHandlers<T>>;
75
+ /** Existing className to merge with disabled class */
76
+ className?: string;
77
+ /** Custom disabled className (default: 'is-disabled') */
78
+ disabledClassName?: string;
79
+ /** Whether to call preventDefault on disabled events (default: true) */
80
+ preventDefault?: boolean;
81
+ /** Whether to call stopPropagation on disabled events (default: true) */
82
+ stopPropagation?: boolean;
83
+ /** Make element non-focusable when disabled via tabIndex=-1 (default: false for a11y) */
84
+ removeFromTabOrder?: boolean;
85
+ }
86
+ /**
87
+ * Return type for the useDisabledState hook.
88
+ *
89
+ * @template T - The HTML element type
90
+ */
91
+ interface UseDisabledStateReturn<T extends HTMLElement> {
92
+ /** Props to spread on the element for disabled state */
93
+ disabledProps: DisabledProps;
94
+ /** Wrapped event handlers that respect disabled state */
95
+ handlers: Partial<DisabledEventHandlers<T>>;
96
+ }
97
+ /**
98
+ * Manages accessible disabled state for form elements using aria-disabled pattern.
99
+ *
100
+ * This hook implements WCAG 2.1 Level AA compliant disabled state management by:
101
+ * - Using `aria-disabled` instead of native `disabled` attribute (keeps elements focusable)
102
+ * - Preventing all interaction events when disabled
103
+ * - Applying accessible styling via `.is-disabled` class
104
+ * - Maintaining keyboard focusability for screen reader discovery
105
+ *
106
+ * **Why aria-disabled instead of disabled attribute?**
107
+ * - Elements remain in keyboard tab order (WCAG 2.1.1 - Keyboard)
108
+ * - Screen readers can discover and announce disabled state
109
+ * - Enables tooltips and contextual help on disabled elements
110
+ * - Better visual styling control for WCAG contrast compliance
111
+ *
112
+ * **Performance Optimizations:**
113
+ * - Single memoization pass for all handlers and props
114
+ * - Stable handler references using refs (only recreate on disabled state change)
115
+ * - Automatic className merging to reduce consumer boilerplate
116
+ *
117
+ * @template T - The HTML element type (e.g., HTMLButtonElement, HTMLInputElement)
118
+ *
119
+ * @param {boolean | undefined} disabled - Whether the element should be disabled. Undefined treated as false.
120
+ * @param {Partial<DisabledEventHandlers<T>> | UseDisabledStateOptions<T>} handlersOrOptions -
121
+ * Event handlers to wrap OR configuration options object (for backward compatibility)
122
+ *
123
+ * @returns {UseDisabledStateReturn<T>} Object containing disabledProps and wrapped handlers
124
+ *
125
+ * @example
126
+ * // Basic button usage (legacy API - still supported)
127
+ * const MyButton = ({ disabled, onClick, children }) => {
128
+ * const { disabledProps, handlers } = useDisabledState(disabled, { onClick });
129
+ * return <button {...disabledProps} {...handlers}>{children}</button>;
130
+ * };
131
+ *
132
+ * @example
133
+ * // Enhanced API with className merging
134
+ * const MyButton = ({ disabled, onClick, className, children }) => {
135
+ * const { disabledProps, handlers } = useDisabledState(disabled, {
136
+ * handlers: { onClick },
137
+ * className,
138
+ * });
139
+ * return <button {...disabledProps} {...handlers}>{children}</button>;
140
+ * };
141
+ *
142
+ * @example
143
+ * // Custom configuration
144
+ * const MyInput = ({ disabled, onChange, className }) => {
145
+ * const { disabledProps, handlers } = useDisabledState(disabled, {
146
+ * handlers: { onChange },
147
+ * className,
148
+ * disabledClassName: 'custom-disabled',
149
+ * preventDefault: true,
150
+ * stopPropagation: false,
151
+ * });
152
+ * return <input {...disabledProps} {...handlers} />;
153
+ * };
154
+ *
155
+ * @example
156
+ * // Remove from tab order when disabled
157
+ * const MyButton = ({ disabled, onClick }) => {
158
+ * const { disabledProps, handlers } = useDisabledState(disabled, {
159
+ * handlers: { onClick },
160
+ * removeFromTabOrder: true, // Adds tabIndex=-1 when disabled
161
+ * });
162
+ * return <button {...disabledProps} {...handlers}>Click me</button>;
163
+ * };
164
+ *
165
+ * @see {@link https://www.w3.org/WAI/WCAG21/Understanding/keyboard WCAG 2.1.1 - Keyboard}
166
+ * @see {@link https://www.w3.org/WAI/WCAG21/Understanding/name-role-value WCAG 4.1.2 - Name, Role, Value}
167
+ * @see {@link https://www.w3.org/WAI/WCAG21/Understanding/contrast-minimum WCAG 1.4.3 - Contrast (Minimum)}
168
+ */
169
+ declare function useDisabledState<T extends HTMLElement = HTMLElement>(disabled: boolean | undefined, handlersOrOptions?: Partial<DisabledEventHandlers<T>> | UseDisabledStateOptions<T>): UseDisabledStateReturn<T>;
170
+
171
+ export { DisabledEventHandlers, DisabledProps, UseDisabledStateReturn, useDisabledState, usePopover };
package/libs/hooks.js CHANGED
@@ -1,6 +1,7 @@
1
- export { a as useBreadcrumbSegments } from './chunk-GZ4QFPRY.js';
1
+ export { a as useBreadcrumbSegments } from './chunk-X5LGFCWG.js';
2
2
  export { a as usePopover } from './chunk-GCGKYLDG.js';
3
- import './chunk-TYRCEX2L.js';
4
- import './chunk-KUKIVRC2.js';
3
+ export { a as useDisabledState } from './chunk-75QHTLFO.js';
4
+ import './chunk-UEPAWMDF.js';
5
+ import './chunk-HHLNOC5T.js';
5
6
  //# sourceMappingURL=out.js.map
6
7
  //# sourceMappingURL=hooks.js.map
package/libs/icons.cjs CHANGED
@@ -1,13 +1,13 @@
1
1
  'use strict';
2
2
 
3
- var chunk3MKLDCKQ_cjs = require('./chunk-3MKLDCKQ.cjs');
4
- require('./chunk-L75OQKEI.cjs');
3
+ var chunk6WTC4JXH_cjs = require('./chunk-6WTC4JXH.cjs');
4
+ require('./chunk-ENTCUJ3A.cjs');
5
5
 
6
6
 
7
7
 
8
8
  Object.defineProperty(exports, 'Icon', {
9
9
  enumerable: true,
10
- get: function () { return chunk3MKLDCKQ_cjs.a; }
10
+ get: function () { return chunk6WTC4JXH_cjs.a; }
11
11
  });
12
12
  //# sourceMappingURL=out.js.map
13
13
  //# sourceMappingURL=icons.cjs.map
package/libs/icons.d.cts CHANGED
@@ -1,4 +1,4 @@
1
1
  export { default as Icon, IconProps } from './components/icons/icon.cjs';
2
- import './component-props-a8a2f97e.js';
2
+ import './component-props-67d978a2.js';
3
3
  import 'react';
4
- import './ui-645f95b5.js';
4
+ import './ui-d01b50d4.js';
package/libs/icons.d.ts CHANGED
@@ -1,4 +1,4 @@
1
1
  export { default as Icon, IconProps } from './components/icons/icon.js';
2
- import './component-props-a8a2f97e.js';
2
+ import './component-props-67d978a2.js';
3
3
  import 'react';
4
- import './ui-645f95b5.js';
4
+ import './ui-d01b50d4.js';
package/libs/icons.js CHANGED
@@ -1,4 +1,4 @@
1
- export { a as Icon } from './chunk-772NRB75.js';
2
- import './chunk-KUKIVRC2.js';
1
+ export { a as Icon } from './chunk-5QD3DWFI.js';
2
+ import './chunk-HHLNOC5T.js';
3
3
  //# sourceMappingURL=out.js.map
4
4
  //# sourceMappingURL=icons.js.map
package/libs/index.cjs CHANGED
@@ -1,31 +1,33 @@
1
1
  'use strict';
2
2
 
3
- var chunkM5RRNTVX_cjs = require('./chunk-M5RRNTVX.cjs');
4
- var chunkAHDJGCG5_cjs = require('./chunk-AHDJGCG5.cjs');
5
- var chunkLT5KZ2QW_cjs = require('./chunk-LT5KZ2QW.cjs');
6
- var chunkD4YLRWAO_cjs = require('./chunk-D4YLRWAO.cjs');
7
- var chunk2LTJ7HHX_cjs = require('./chunk-2LTJ7HHX.cjs');
8
- var chunkXTQKWY7W_cjs = require('./chunk-XTQKWY7W.cjs');
3
+ var chunkWXBFBWYF_cjs = require('./chunk-WXBFBWYF.cjs');
4
+ var chunkO3JIHC5M_cjs = require('./chunk-O3JIHC5M.cjs');
5
+ var chunkUS2I5GI7_cjs = require('./chunk-US2I5GI7.cjs');
6
+ var chunkQVW6W76L_cjs = require('./chunk-QVW6W76L.cjs');
7
+ var chunkO5XAJ7BY_cjs = require('./chunk-O5XAJ7BY.cjs');
8
+ var chunkGUJSMQ3V_cjs = require('./chunk-GUJSMQ3V.cjs');
9
9
  var chunkG55UJ53G_cjs = require('./chunk-G55UJ53G.cjs');
10
- var chunkB7F5FS6D_cjs = require('./chunk-B7F5FS6D.cjs');
11
- var chunkPQ2K3BM6_cjs = require('./chunk-PQ2K3BM6.cjs');
12
- var chunkOK5QEIMD_cjs = require('./chunk-OK5QEIMD.cjs');
10
+ var chunkW2UIN7EV_cjs = require('./chunk-W2UIN7EV.cjs');
11
+ var chunk2NRIP6RB_cjs = require('./chunk-2NRIP6RB.cjs');
12
+ var chunkT4T6GWYQ_cjs = require('./chunk-T4T6GWYQ.cjs');
13
13
  require('./chunk-PDD4N5P5.cjs');
14
- var chunk3MKLDCKQ_cjs = require('./chunk-3MKLDCKQ.cjs');
15
- var chunkP2DC76ZZ_cjs = require('./chunk-P2DC76ZZ.cjs');
16
- var chunkROZI23GS_cjs = require('./chunk-ROZI23GS.cjs');
17
- var chunkJ32EZPYD_cjs = require('./chunk-J32EZPYD.cjs');
18
- var chunkIYUN2EW3_cjs = require('./chunk-IYUN2EW3.cjs');
19
- var chunkS7BABR7Z_cjs = require('./chunk-S7BABR7Z.cjs');
20
- var chunk5S4ORA4C_cjs = require('./chunk-5S4ORA4C.cjs');
21
- var chunkL75OQKEI_cjs = require('./chunk-L75OQKEI.cjs');
14
+ var chunk6WTC4JXH_cjs = require('./chunk-6WTC4JXH.cjs');
15
+ var chunkW5TKWBFC_cjs = require('./chunk-W5TKWBFC.cjs');
16
+ var chunkDKTHCQ5P_cjs = require('./chunk-DKTHCQ5P.cjs');
17
+ var chunkGT77BX4L_cjs = require('./chunk-GT77BX4L.cjs');
18
+ var chunk4BZKFPEC_cjs = require('./chunk-4BZKFPEC.cjs');
19
+ var chunkE2AJURUW_cjs = require('./chunk-E2AJURUW.cjs');
20
+ require('./chunk-PNWIRCG3.cjs');
21
+ require('./chunk-TON2YGMD.cjs');
22
+ var chunk33PNJ4LO_cjs = require('./chunk-33PNJ4LO.cjs');
23
+ var chunkENTCUJ3A_cjs = require('./chunk-ENTCUJ3A.cjs');
22
24
  var u = require('react');
23
25
 
24
26
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
25
27
 
26
28
  var u__default = /*#__PURE__*/_interopDefault(u);
27
29
 
28
- var M=({src:e="//",alt:t,width:s=480,height:n,styles:r,loading:l="lazy",placeholder:m,fetchpriority:c="low",decoding:d="auto",srcSet:T,sizes:x,onError:y,onLoad:P,...C})=>{let h=u.useMemo(()=>{let o=typeof s=="number"?s:480,p=typeof n=="number"?n:Math.round(o*.75),i=`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 ${o} ${p}">
30
+ var V=({src:e="//",alt:s,width:t=480,height:n,styles:r,loading:i="lazy",placeholder:c,fetchpriority:m="low",decoding:d="auto",srcSet:T,sizes:x,onError:y,onLoad:P,...C})=>{let h=u.useMemo(()=>{let o=typeof t=="number"?t:480,p=typeof n=="number"?n:Math.round(o*.75),l=`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 ${o} ${p}">
29
31
  <defs>
30
32
  <linearGradient id="grad-${o}-${p}" x1="0%" y1="0%" x2="100%" y2="100%">
31
33
  <stop offset="0%" style="stop-color:#6366f1;stop-opacity:1" />
@@ -37,63 +39,63 @@ var M=({src:e="//",alt:t,width:s=480,height:n,styles:r,loading:l="lazy",placehol
37
39
  <circle cx="${o*.15}" cy="${p*.2}" r="${Math.min(o,p)*.08}" fill="rgba(255,255,255,0.2)"/>
38
40
  <path d="M0,${p*.75} Q${o*.25},${p*.65} ${o*.5},${p*.75} T${o},${p*.75} L${o},${p} L0,${p} Z" fill="rgba(0,0,0,0.15)"/>
39
41
  <text x="50%" y="50%" dominant-baseline="middle" text-anchor="middle" font-family="system-ui,-apple-system,sans-serif" font-size="${Math.max(16,Math.min(o,p)*.05)}" font-weight="500" fill="rgba(255,255,255,0.9)">${o}\xD7${p}</text>
40
- </svg>`;return `data:image/svg+xml,${encodeURIComponent(i)}`},[s,n]),w=m??h;return u__default.default.createElement(chunkL75OQKEI_cjs.a,{as:"img",src:e,alt:t,width:s,height:n||"auto",loading:l,style:r,srcSet:T,sizes:x,onError:o=>{y&&y(o),o.defaultPrevented||o.currentTarget.src!==w&&(o.currentTarget.src=w);},onLoad:o=>{P?.(o);},decoding:d,...C,...c&&{fetchpriority:c}})};M.displayName="Img";var V=e=>{let[t,s]=u.useState([]),[n,r]=u.useState(e),[l,m]=u.useState(!1),[c,d]=u.useState(!1),[T,x]=u.useState(null);return u.useEffect(()=>{let f=()=>{let o=window.speechSynthesis.getVoices();s(o);let p=o.find(i=>i.name==="Google US English");if(p)r(p);else {let i=o.find($=>$.lang.startsWith("en-"));i&&r(i);}};return f(),window.speechSynthesis.onvoiceschanged=f,()=>{window.speechSynthesis.onvoiceschanged=null;}},[]),{speak:(f,o={},p)=>{let i=new SpeechSynthesisUtterance(f);i.lang=o.lang??"en-US",i.pitch=o.pitch??1,i.rate=o.rate??1,i.voice=n??o.voice??null,i.onend=()=>{m(!1),d(!1),p&&p();},"speechSynthesis"in window?(window.speechSynthesis.speak(i),x(i),m(!0),d(!1)):console.error("Speech synthesis not supported");},pause:()=>{l&&!c&&(window.speechSynthesis.pause(),d(!0));},resume:()=>{l&&c&&(window.speechSynthesis.resume(),d(!1));},cancel:()=>{l&&(window.speechSynthesis.cancel(),m(!1),d(!1));},isSpeaking:l,isPaused:c,availableVoices:t,changeVoice:f=>{r(f);},currentVoice:n,getAvailableLanguages:()=>[...new Set(t.map(f=>f.lang))]}};var pe=({children:e,onClick:t})=>u__default.default.createElement(chunkL75OQKEI_cjs.a,{as:"button",type:"button",className:"tts-border","data-btn":"sm text pill",onClick:t},e),U=u__default.default.memo(pe),L=({label:e,isSpeaking:t,isPaused:s,onSpeak:n,onPause:r,onResume:l,onCancel:m})=>u__default.default.createElement(chunkL75OQKEI_cjs.a,{as:"div","data-tts":!0},e&&u__default.default.createElement("p",null,e),!t&&u__default.default.createElement(U,{"aria-label":"Speak",onClick:n},u__default.default.createElement(chunk3MKLDCKQ_cjs.b.PlaySolid,{size:16})),t&&!s&&u__default.default.createElement(U,{"aria-label":"Pause",onClick:r},u__default.default.createElement(chunk3MKLDCKQ_cjs.b.PauseSolid,{size:16})),s&&u__default.default.createElement(U,{"aria-label":"Resume",onClick:l},u__default.default.createElement(chunk3MKLDCKQ_cjs.b.ResumeSolid,{size:16})),u__default.default.createElement(U,{"aria-label":"Stop",onClick:m},u__default.default.createElement(chunk3MKLDCKQ_cjs.b.StopSolid,{size:16})));L.displayName="TextToSpeechControls";L.TTSButton=U;var H=L;var z=({initialText:e="",showTextInput:t=!1,voice:s,pitch:n=1,rate:r=1,language:l,label:m,onEnd:c})=>{let{speak:d,pause:T,resume:x,cancel:y,isSpeaking:P,isPaused:C,getAvailableLanguages:h,availableVoices:w}=V(),[I,f]=u.useState(e);console.log(h()),u.useEffect(()=>{f(e);},[e]);let o=()=>{I.trim()!==""&&d(I,{voice:s,pitch:n,rate:r},i);},p=$=>{f($.target.value);},i=()=>{c&&c();};return u__default.default.createElement(u__default.default.Fragment,null,t&&u__default.default.createElement(chunkM5RRNTVX_cjs.b,{value:I,onChange:p}),u__default.default.createElement(H,{label:m,isSpeaking:P,isPaused:C,onSpeak:o,onPause:T,onResume:x,onCancel:y}))};z.displayName="TextToSpeechComponent";var S=e=>u__default.default.createElement(u__default.default.Fragment,null,e),ce=({id:e,children:t,headerBackground:s,styles:n,classes:r,...l})=>u__default.default.createElement(chunkL75OQKEI_cjs.a,{as:"header",id:e,styles:n,className:r,...l},s,u__default.default.createElement(chunkL75OQKEI_cjs.a,{as:"section"},t)),me=({id:e,children:t,styles:s,classes:n,...r})=>u__default.default.createElement(chunkL75OQKEI_cjs.a,{as:"main",id:e,styles:s,...r,className:n},t),de=({id:e,classes:t,children:s,styles:n={},...r})=>u__default.default.createElement(chunkL75OQKEI_cjs.a,{as:"footer",id:e,className:t,styles:n,...r},u__default.default.createElement(chunkL75OQKEI_cjs.a,{as:"section"},s||"Copyright \xA9 2022")),fe=({id:e,children:t,styles:s={},classes:n,...r})=>u__default.default.createElement(chunkL75OQKEI_cjs.a,{as:"aside",id:e,styles:s,className:n,...r},u__default.default.createElement(chunkL75OQKEI_cjs.a,{as:"section"},t)),ue=({id:e,children:t,styles:s,classes:n,...r})=>u__default.default.createElement(chunkL75OQKEI_cjs.a,{as:"section",id:e,styles:s,className:n,...r},t),ge=({id:e,children:t,styles:s,classes:n,...r})=>u__default.default.createElement(chunkL75OQKEI_cjs.a,{as:"article",id:e,styles:s,className:n,...r},t);S.displayName="Landmarks";S.Header=ce;S.Main=me;S.Footer=de;S.Aside=fe;S.Section=ue;S.Article=ge;var A=({id:e,styles:t,classes:s,children:n,variant:r,...l})=>u__default.default.createElement(chunkL75OQKEI_cjs.a,{as:"sup",id:e,styles:t,className:s,"data-badge":r||void 0,role:"status",...l},u__default.default.createElement(chunkL75OQKEI_cjs.a,{as:"span"},n));A.displayName="Badge";var xe=({elm:e="span",role:t="note",children:s,styles:n,...r})=>u__default.default.createElement(chunkL75OQKEI_cjs.a,{as:e,role:t,styles:n,...r},s);xe.displayName="Tag";var ye=u__default.default.forwardRef(({summary:e,icon:t,styles:s,classes:n,ariaLabel:r,name:l,open:m,onPointerDown:c,onToggle:d,children:T,...x},y)=>{let P=u.useCallback(h=>{c?.(h);},[c]),C=u.useCallback(h=>{d?.(h);},[d]);return u__default.default.createElement(chunkL75OQKEI_cjs.a,{as:"details",styles:s,classes:n,onToggle:C,ref:y,open:m,"aria-label":r,name:l,...x},u__default.default.createElement(chunkL75OQKEI_cjs.a,{as:"summary",onPointerDown:P},t,e),u__default.default.createElement(chunkL75OQKEI_cjs.a,{as:"section"},T))});ye.displayName="Details";
42
+ </svg>`;return `data:image/svg+xml,${encodeURIComponent(l)}`},[t,n]),w=c??h;return u__default.default.createElement(chunkENTCUJ3A_cjs.a,{as:"img",src:e,alt:s,width:t,height:n||"auto",loading:i,style:r,srcSet:T,sizes:x,onError:o=>{y&&y(o),o.defaultPrevented||o.currentTarget.src!==w&&(o.currentTarget.src=w);},onLoad:o=>{P?.(o);},decoding:d,...C,...m&&{fetchpriority:m}})};V.displayName="Img";var M=e=>{let[s,t]=u.useState([]),[n,r]=u.useState(e),[i,c]=u.useState(!1),[m,d]=u.useState(!1),[T,x]=u.useState(null);return u.useEffect(()=>{let f=()=>{let o=window.speechSynthesis.getVoices();t(o);let p=o.find(l=>l.name==="Google US English");if(p)r(p);else {let l=o.find($=>$.lang.startsWith("en-"));l&&r(l);}};return f(),window.speechSynthesis.onvoiceschanged=f,()=>{window.speechSynthesis.onvoiceschanged=null;}},[]),{speak:(f,o={},p)=>{let l=new SpeechSynthesisUtterance(f);l.lang=o.lang??"en-US",l.pitch=o.pitch??1,l.rate=o.rate??1,l.voice=n??o.voice??null,l.onend=()=>{c(!1),d(!1),p&&p();},"speechSynthesis"in window?(window.speechSynthesis.speak(l),x(l),c(!0),d(!1)):console.error("Speech synthesis not supported");},pause:()=>{i&&!m&&(window.speechSynthesis.pause(),d(!0));},resume:()=>{i&&m&&(window.speechSynthesis.resume(),d(!1));},cancel:()=>{i&&(window.speechSynthesis.cancel(),c(!1),d(!1));},isSpeaking:i,isPaused:m,availableVoices:s,changeVoice:f=>{r(f);},currentVoice:n,getAvailableLanguages:()=>[...new Set(s.map(f=>f.lang))]}};var pe=({children:e,onClick:s})=>u__default.default.createElement(chunkENTCUJ3A_cjs.a,{as:"button",type:"button",className:"tts-border","data-btn":"sm text pill",onClick:s},e),U=u__default.default.memo(pe),L=({label:e,isSpeaking:s,isPaused:t,onSpeak:n,onPause:r,onResume:i,onCancel:c})=>u__default.default.createElement(chunkENTCUJ3A_cjs.a,{as:"div","data-tts":!0},e&&u__default.default.createElement("p",null,e),!s&&u__default.default.createElement(U,{"aria-label":"Speak",onClick:n},u__default.default.createElement(chunk6WTC4JXH_cjs.b.PlaySolid,{size:16})),s&&!t&&u__default.default.createElement(U,{"aria-label":"Pause",onClick:r},u__default.default.createElement(chunk6WTC4JXH_cjs.b.PauseSolid,{size:16})),t&&u__default.default.createElement(U,{"aria-label":"Resume",onClick:i},u__default.default.createElement(chunk6WTC4JXH_cjs.b.ResumeSolid,{size:16})),u__default.default.createElement(U,{"aria-label":"Stop",onClick:c},u__default.default.createElement(chunk6WTC4JXH_cjs.b.StopSolid,{size:16})));L.displayName="TextToSpeechControls";L.TTSButton=U;var H=L;var z=({initialText:e="",showTextInput:s=!1,voice:t,pitch:n=1,rate:r=1,language:i,label:c,onEnd:m})=>{let{speak:d,pause:T,resume:x,cancel:y,isSpeaking:P,isPaused:C,getAvailableLanguages:h,availableVoices:w}=M(),[I,f]=u.useState(e);console.log(h()),u.useEffect(()=>{f(e);},[e]);let o=()=>{I.trim()!==""&&d(I,{voice:t,pitch:n,rate:r},l);},p=$=>{f($.target.value);},l=()=>{m&&m();};return u__default.default.createElement(u__default.default.Fragment,null,s&&u__default.default.createElement(chunkWXBFBWYF_cjs.b,{value:I,onChange:p}),u__default.default.createElement(H,{label:c,isSpeaking:P,isPaused:C,onSpeak:o,onPause:T,onResume:x,onCancel:y}))};z.displayName="TextToSpeechComponent";var S=e=>u__default.default.createElement(u__default.default.Fragment,null,e),ce=({id:e,children:s,headerBackground:t,styles:n,classes:r,...i})=>u__default.default.createElement(chunkENTCUJ3A_cjs.a,{as:"header",id:e,styles:n,className:r,...i},t,u__default.default.createElement(chunkENTCUJ3A_cjs.a,{as:"section"},s)),me=({id:e,children:s,styles:t,classes:n,...r})=>u__default.default.createElement(chunkENTCUJ3A_cjs.a,{as:"main",id:e,styles:t,...r,className:n},s),de=({id:e,classes:s,children:t,styles:n={},...r})=>u__default.default.createElement(chunkENTCUJ3A_cjs.a,{as:"footer",id:e,className:s,styles:n,...r},u__default.default.createElement(chunkENTCUJ3A_cjs.a,{as:"section"},t||"Copyright \xA9 2022")),fe=({id:e,children:s,styles:t={},classes:n,...r})=>u__default.default.createElement(chunkENTCUJ3A_cjs.a,{as:"aside",id:e,styles:t,className:n,...r},u__default.default.createElement(chunkENTCUJ3A_cjs.a,{as:"section"},s)),ue=({id:e,children:s,styles:t,classes:n,...r})=>u__default.default.createElement(chunkENTCUJ3A_cjs.a,{as:"section",id:e,styles:t,className:n,...r},s),ge=({id:e,children:s,styles:t,classes:n,...r})=>u__default.default.createElement(chunkENTCUJ3A_cjs.a,{as:"article",id:e,styles:t,className:n,...r},s);S.displayName="Landmarks";S.Header=ce;S.Main=me;S.Footer=de;S.Aside=fe;S.Section=ue;S.Article=ge;var A=({id:e,styles:s,classes:t,children:n,variant:r,...i})=>u__default.default.createElement(chunkENTCUJ3A_cjs.a,{as:"sup",id:e,styles:s,className:t,"data-badge":r||void 0,role:"status",...i},u__default.default.createElement(chunkENTCUJ3A_cjs.a,{as:"span"},n));A.displayName="Badge";var xe=({elm:e="span",role:s="note",variant:t,children:n,styles:r,...i})=>u__default.default.createElement(chunkENTCUJ3A_cjs.a,{as:e,role:s,"data-tag":t||void 0,styles:r,...i},n);xe.displayName="Tag";var ye=u__default.default.forwardRef(({summary:e,icon:s,styles:t,classes:n,ariaLabel:r,name:i,open:c,onPointerDown:m,onToggle:d,children:T,...x},y)=>{let P=u.useCallback(h=>{m?.(h);},[m]),C=u.useCallback(h=>{d?.(h);},[d]);return u__default.default.createElement(chunkENTCUJ3A_cjs.a,{as:"details",styles:t,classes:n,onToggle:C,ref:y,open:c,"aria-label":r,name:i,...x},u__default.default.createElement(chunkENTCUJ3A_cjs.a,{as:"summary",onPointerDown:P},s,e),u__default.default.createElement(chunkENTCUJ3A_cjs.a,{as:"section"},T))});ye.displayName="Details";
41
43
 
42
44
  Object.defineProperty(exports, 'Textarea', {
43
45
  enumerable: true,
44
- get: function () { return chunkM5RRNTVX_cjs.a; }
46
+ get: function () { return chunkWXBFBWYF_cjs.a; }
45
47
  });
46
48
  Object.defineProperty(exports, 'Field', {
47
49
  enumerable: true,
48
- get: function () { return chunkAHDJGCG5_cjs.a; }
50
+ get: function () { return chunkO3JIHC5M_cjs.a; }
49
51
  });
50
52
  Object.defineProperty(exports, 'Caption', {
51
53
  enumerable: true,
52
- get: function () { return chunkLT5KZ2QW_cjs.a; }
54
+ get: function () { return chunkUS2I5GI7_cjs.a; }
53
55
  });
54
56
  Object.defineProperty(exports, 'TBL', {
55
57
  enumerable: true,
56
- get: function () { return chunkLT5KZ2QW_cjs.i; }
58
+ get: function () { return chunkUS2I5GI7_cjs.i; }
57
59
  });
58
60
  Object.defineProperty(exports, 'Table', {
59
61
  enumerable: true,
60
- get: function () { return chunkLT5KZ2QW_cjs.f; }
62
+ get: function () { return chunkUS2I5GI7_cjs.f; }
61
63
  });
62
64
  Object.defineProperty(exports, 'Tbody', {
63
65
  enumerable: true,
64
- get: function () { return chunkLT5KZ2QW_cjs.c; }
66
+ get: function () { return chunkUS2I5GI7_cjs.c; }
65
67
  });
66
68
  Object.defineProperty(exports, 'Td', {
67
69
  enumerable: true,
68
- get: function () { return chunkLT5KZ2QW_cjs.e; }
70
+ get: function () { return chunkUS2I5GI7_cjs.e; }
69
71
  });
70
72
  Object.defineProperty(exports, 'Thead', {
71
73
  enumerable: true,
72
- get: function () { return chunkLT5KZ2QW_cjs.b; }
74
+ get: function () { return chunkUS2I5GI7_cjs.b; }
73
75
  });
74
76
  Object.defineProperty(exports, 'Tr', {
75
77
  enumerable: true,
76
- get: function () { return chunkLT5KZ2QW_cjs.d; }
78
+ get: function () { return chunkUS2I5GI7_cjs.d; }
77
79
  });
78
80
  Object.defineProperty(exports, 'Dialog', {
79
81
  enumerable: true,
80
- get: function () { return chunkD4YLRWAO_cjs.a; }
82
+ get: function () { return chunkQVW6W76L_cjs.a; }
81
83
  });
82
84
  Object.defineProperty(exports, 'Nav', {
83
85
  enumerable: true,
84
- get: function () { return chunk2LTJ7HHX_cjs.c; }
86
+ get: function () { return chunkO5XAJ7BY_cjs.c; }
85
87
  });
86
88
  Object.defineProperty(exports, 'NavItem', {
87
89
  enumerable: true,
88
- get: function () { return chunk2LTJ7HHX_cjs.b; }
90
+ get: function () { return chunkO5XAJ7BY_cjs.b; }
89
91
  });
90
92
  Object.defineProperty(exports, 'NavList', {
91
93
  enumerable: true,
92
- get: function () { return chunk2LTJ7HHX_cjs.a; }
94
+ get: function () { return chunkO5XAJ7BY_cjs.a; }
93
95
  });
94
96
  Object.defineProperty(exports, 'List', {
95
97
  enumerable: true,
96
- get: function () { return chunkXTQKWY7W_cjs.b; }
98
+ get: function () { return chunkGUJSMQ3V_cjs.b; }
97
99
  });
98
100
  Object.defineProperty(exports, 'Popover', {
99
101
  enumerable: true,
@@ -101,71 +103,71 @@ Object.defineProperty(exports, 'Popover', {
101
103
  });
102
104
  Object.defineProperty(exports, 'Text', {
103
105
  enumerable: true,
104
- get: function () { return chunkB7F5FS6D_cjs.a; }
106
+ get: function () { return chunkW2UIN7EV_cjs.a; }
105
107
  });
106
108
  Object.defineProperty(exports, 'Heading', {
107
109
  enumerable: true,
108
- get: function () { return chunkPQ2K3BM6_cjs.b; }
110
+ get: function () { return chunk2NRIP6RB_cjs.b; }
109
111
  });
110
112
  Object.defineProperty(exports, 'Title', {
111
113
  enumerable: true,
112
- get: function () { return chunkPQ2K3BM6_cjs.a; }
114
+ get: function () { return chunk2NRIP6RB_cjs.a; }
113
115
  });
114
116
  Object.defineProperty(exports, 'Breadcrumb', {
115
117
  enumerable: true,
116
- get: function () { return chunkOK5QEIMD_cjs.b; }
118
+ get: function () { return chunkT4T6GWYQ_cjs.b; }
117
119
  });
118
120
  Object.defineProperty(exports, 'useBreadcrumbSegments', {
119
121
  enumerable: true,
120
- get: function () { return chunkOK5QEIMD_cjs.a; }
122
+ get: function () { return chunkT4T6GWYQ_cjs.a; }
121
123
  });
122
124
  Object.defineProperty(exports, 'Icon', {
123
125
  enumerable: true,
124
- get: function () { return chunk3MKLDCKQ_cjs.a; }
126
+ get: function () { return chunk6WTC4JXH_cjs.a; }
125
127
  });
126
128
  Object.defineProperty(exports, 'Card', {
127
129
  enumerable: true,
128
- get: function () { return chunkP2DC76ZZ_cjs.d; }
130
+ get: function () { return chunkW5TKWBFC_cjs.d; }
129
131
  });
130
132
  Object.defineProperty(exports, 'CardContent', {
131
133
  enumerable: true,
132
- get: function () { return chunkP2DC76ZZ_cjs.b; }
134
+ get: function () { return chunkW5TKWBFC_cjs.b; }
133
135
  });
134
136
  Object.defineProperty(exports, 'CardFooter', {
135
137
  enumerable: true,
136
- get: function () { return chunkP2DC76ZZ_cjs.c; }
138
+ get: function () { return chunkW5TKWBFC_cjs.c; }
137
139
  });
138
140
  Object.defineProperty(exports, 'CardTitle', {
139
141
  enumerable: true,
140
- get: function () { return chunkP2DC76ZZ_cjs.a; }
142
+ get: function () { return chunkW5TKWBFC_cjs.a; }
141
143
  });
142
144
  Object.defineProperty(exports, 'Modal', {
143
145
  enumerable: true,
144
- get: function () { return chunkROZI23GS_cjs.a; }
146
+ get: function () { return chunkDKTHCQ5P_cjs.a; }
145
147
  });
146
148
  Object.defineProperty(exports, 'Button', {
147
149
  enumerable: true,
148
- get: function () { return chunkJ32EZPYD_cjs.a; }
150
+ get: function () { return chunkGT77BX4L_cjs.a; }
149
151
  });
150
152
  Object.defineProperty(exports, 'Input', {
151
153
  enumerable: true,
152
- get: function () { return chunkIYUN2EW3_cjs.a; }
154
+ get: function () { return chunk4BZKFPEC_cjs.a; }
153
155
  });
154
156
  Object.defineProperty(exports, 'Box', {
155
157
  enumerable: true,
156
- get: function () { return chunkS7BABR7Z_cjs.a; }
158
+ get: function () { return chunkE2AJURUW_cjs.a; }
157
159
  });
158
160
  Object.defineProperty(exports, 'FP', {
159
161
  enumerable: true,
160
- get: function () { return chunkS7BABR7Z_cjs.a; }
162
+ get: function () { return chunkE2AJURUW_cjs.a; }
161
163
  });
162
164
  Object.defineProperty(exports, 'Link', {
163
165
  enumerable: true,
164
- get: function () { return chunk5S4ORA4C_cjs.a; }
166
+ get: function () { return chunk33PNJ4LO_cjs.a; }
165
167
  });
166
168
  Object.defineProperty(exports, 'To', {
167
169
  enumerable: true,
168
- get: function () { return chunk5S4ORA4C_cjs.b; }
170
+ get: function () { return chunk33PNJ4LO_cjs.b; }
169
171
  });
170
172
  exports.Article = ge;
171
173
  exports.Aside = fe;
@@ -173,7 +175,7 @@ exports.Badge = A;
173
175
  exports.Details = ye;
174
176
  exports.Footer = de;
175
177
  exports.Header = ce;
176
- exports.Img = M;
178
+ exports.Img = V;
177
179
  exports.Landmarks = S;
178
180
  exports.Main = me;
179
181
  exports.Section = ue;