@wow-two-beta/ui 0.0.6 → 0.0.8

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 (307) hide show
  1. package/dist/actions/button/Button.variants.d.ts +2 -2
  2. package/dist/actions/buttonGroup/ButtonGroup.d.ts +14 -0
  3. package/dist/actions/buttonGroup/ButtonGroup.d.ts.map +1 -0
  4. package/dist/actions/buttonGroup/index.d.ts +2 -0
  5. package/dist/actions/buttonGroup/index.d.ts.map +1 -0
  6. package/dist/actions/copyButton/CopyButton.d.ts +20 -0
  7. package/dist/actions/copyButton/CopyButton.d.ts.map +1 -0
  8. package/dist/actions/copyButton/index.d.ts +2 -0
  9. package/dist/actions/copyButton/index.d.ts.map +1 -0
  10. package/dist/actions/disclosureButton/DisclosureButton.d.ts +20 -0
  11. package/dist/actions/disclosureButton/DisclosureButton.d.ts.map +1 -0
  12. package/dist/actions/disclosureButton/index.d.ts +2 -0
  13. package/dist/actions/disclosureButton/index.d.ts.map +1 -0
  14. package/dist/actions/fab/FAB.d.ts +13 -0
  15. package/dist/actions/fab/FAB.d.ts.map +1 -0
  16. package/dist/actions/fab/FAB.variants.d.ts +130 -0
  17. package/dist/actions/fab/FAB.variants.d.ts.map +1 -0
  18. package/dist/actions/fab/index.d.ts +3 -0
  19. package/dist/actions/fab/index.d.ts.map +1 -0
  20. package/dist/actions/iconButton/IconButton.variants.d.ts +2 -2
  21. package/dist/actions/index.d.ts +8 -0
  22. package/dist/actions/index.d.ts.map +1 -1
  23. package/dist/actions/index.js +4 -1
  24. package/dist/actions/link/Link.variants.d.ts +2 -2
  25. package/dist/actions/overlayButton/OverlayButton.d.ts +16 -0
  26. package/dist/actions/overlayButton/OverlayButton.d.ts.map +1 -0
  27. package/dist/actions/overlayButton/OverlayButton.variants.d.ts +123 -0
  28. package/dist/actions/overlayButton/OverlayButton.variants.d.ts.map +1 -0
  29. package/dist/actions/overlayButton/index.d.ts +3 -0
  30. package/dist/actions/overlayButton/index.d.ts.map +1 -0
  31. package/dist/actions/segmentedControl/SegmentedControl.d.ts +9 -0
  32. package/dist/actions/segmentedControl/SegmentedControl.d.ts.map +1 -0
  33. package/dist/actions/segmentedControl/index.d.ts +2 -0
  34. package/dist/actions/segmentedControl/index.d.ts.map +1 -0
  35. package/dist/actions/toggleButton/ToggleButton.d.ts +16 -0
  36. package/dist/actions/toggleButton/ToggleButton.d.ts.map +1 -0
  37. package/dist/actions/toggleButton/ToggleButton.variants.d.ts +81 -0
  38. package/dist/actions/toggleButton/ToggleButton.variants.d.ts.map +1 -0
  39. package/dist/actions/toggleButton/index.d.ts +3 -0
  40. package/dist/actions/toggleButton/index.d.ts.map +1 -0
  41. package/dist/actions/toggleButtonGroup/ToggleButtonGroup.d.ts +25 -0
  42. package/dist/actions/toggleButtonGroup/ToggleButtonGroup.d.ts.map +1 -0
  43. package/dist/actions/toggleButtonGroup/index.d.ts +2 -0
  44. package/dist/actions/toggleButtonGroup/index.d.ts.map +1 -0
  45. package/dist/{chunk-6NYTRHP7.js → chunk-4P2TFUVW.js} +39 -5
  46. package/dist/chunk-4P2TFUVW.js.map +1 -0
  47. package/dist/chunk-7SGLT2LM.js +774 -0
  48. package/dist/chunk-7SGLT2LM.js.map +1 -0
  49. package/dist/chunk-D5CHR6RX.js +423 -0
  50. package/dist/chunk-D5CHR6RX.js.map +1 -0
  51. package/dist/{chunk-77WSI427.js → chunk-KDXJQNB6.js} +9 -5
  52. package/dist/chunk-KDXJQNB6.js.map +1 -0
  53. package/dist/chunk-L32PXXQL.js +126 -0
  54. package/dist/chunk-L32PXXQL.js.map +1 -0
  55. package/dist/{chunk-SYG6ZE42.js → chunk-NKGNOOXJ.js} +116 -4
  56. package/dist/chunk-NKGNOOXJ.js.map +1 -0
  57. package/dist/chunk-RIW2V3N4.js +596 -0
  58. package/dist/chunk-RIW2V3N4.js.map +1 -0
  59. package/dist/{chunk-JCMV6IT4.js → chunk-SL5YJADS.js} +4 -4
  60. package/dist/{chunk-JCMV6IT4.js.map → chunk-SL5YJADS.js.map} +1 -1
  61. package/dist/{chunk-Q27NAHVB.js → chunk-WEM32VIJ.js} +3 -3
  62. package/dist/{chunk-Q27NAHVB.js.map → chunk-WEM32VIJ.js.map} +1 -1
  63. package/dist/chunk-X2LTOZ7F.js +1119 -0
  64. package/dist/chunk-X2LTOZ7F.js.map +1 -0
  65. package/dist/display/avatar/Avatar.variants.d.ts +2 -2
  66. package/dist/display/avatarGroup/AvatarGroup.d.ts +16 -0
  67. package/dist/display/avatarGroup/AvatarGroup.d.ts.map +1 -0
  68. package/dist/display/avatarGroup/index.d.ts +2 -0
  69. package/dist/display/avatarGroup/index.d.ts.map +1 -0
  70. package/dist/display/badgeOverlay/BadgeOverlay.d.ts +18 -0
  71. package/dist/display/badgeOverlay/BadgeOverlay.d.ts.map +1 -0
  72. package/dist/display/badgeOverlay/index.d.ts +2 -0
  73. package/dist/display/badgeOverlay/index.d.ts.map +1 -0
  74. package/dist/display/card/Card.d.ts +20 -0
  75. package/dist/display/card/Card.d.ts.map +1 -0
  76. package/dist/display/card/index.d.ts +2 -0
  77. package/dist/display/card/index.d.ts.map +1 -0
  78. package/dist/display/countBadge/CountBadge.d.ts +18 -0
  79. package/dist/display/countBadge/CountBadge.d.ts.map +1 -0
  80. package/dist/display/countBadge/index.d.ts +2 -0
  81. package/dist/display/countBadge/index.d.ts.map +1 -0
  82. package/dist/display/descriptionList/DescriptionList.d.ts +18 -0
  83. package/dist/display/descriptionList/DescriptionList.d.ts.map +1 -0
  84. package/dist/display/descriptionList/index.d.ts +2 -0
  85. package/dist/display/descriptionList/index.d.ts.map +1 -0
  86. package/dist/display/emptyState/EmptyState.d.ts +19 -0
  87. package/dist/display/emptyState/EmptyState.d.ts.map +1 -0
  88. package/dist/display/emptyState/index.d.ts +2 -0
  89. package/dist/display/emptyState/index.d.ts.map +1 -0
  90. package/dist/display/heading/Heading.variants.d.ts +2 -2
  91. package/dist/display/highlight/Highlight.d.ts +16 -0
  92. package/dist/display/highlight/Highlight.d.ts.map +1 -0
  93. package/dist/display/highlight/index.d.ts +2 -0
  94. package/dist/display/highlight/index.d.ts.map +1 -0
  95. package/dist/display/index.d.ts +15 -0
  96. package/dist/display/index.d.ts.map +1 -1
  97. package/dist/display/index.js +7 -2
  98. package/dist/display/infoRow/InfoRow.d.ts +16 -0
  99. package/dist/display/infoRow/InfoRow.d.ts.map +1 -0
  100. package/dist/display/infoRow/index.d.ts +2 -0
  101. package/dist/display/infoRow/index.d.ts.map +1 -0
  102. package/dist/display/keyboardShortcut/KeyboardShortcut.d.ts +13 -0
  103. package/dist/display/keyboardShortcut/KeyboardShortcut.d.ts.map +1 -0
  104. package/dist/display/keyboardShortcut/index.d.ts +2 -0
  105. package/dist/display/keyboardShortcut/index.d.ts.map +1 -0
  106. package/dist/display/notificationDot/NotificationDot.d.ts +15 -0
  107. package/dist/display/notificationDot/NotificationDot.d.ts.map +1 -0
  108. package/dist/display/notificationDot/index.d.ts +2 -0
  109. package/dist/display/notificationDot/index.d.ts.map +1 -0
  110. package/dist/display/sectionHeader/SectionHeader.d.ts +21 -0
  111. package/dist/display/sectionHeader/SectionHeader.d.ts.map +1 -0
  112. package/dist/display/sectionHeader/index.d.ts +2 -0
  113. package/dist/display/sectionHeader/index.d.ts.map +1 -0
  114. package/dist/display/snippet/Snippet.d.ts +15 -0
  115. package/dist/display/snippet/Snippet.d.ts.map +1 -0
  116. package/dist/display/snippet/index.d.ts +2 -0
  117. package/dist/display/snippet/index.d.ts.map +1 -0
  118. package/dist/display/stat/Stat.d.ts +22 -0
  119. package/dist/display/stat/Stat.d.ts.map +1 -0
  120. package/dist/display/stat/index.d.ts +2 -0
  121. package/dist/display/stat/index.d.ts.map +1 -0
  122. package/dist/display/status/Status.d.ts +14 -0
  123. package/dist/display/status/Status.d.ts.map +1 -0
  124. package/dist/display/status/index.d.ts +2 -0
  125. package/dist/display/status/index.d.ts.map +1 -0
  126. package/dist/display/tag/Tag.variants.d.ts +2 -2
  127. package/dist/display/tooltip/Tooltip.d.ts +25 -0
  128. package/dist/display/tooltip/Tooltip.d.ts.map +1 -0
  129. package/dist/display/tooltip/index.d.ts +2 -0
  130. package/dist/display/tooltip/index.d.ts.map +1 -0
  131. package/dist/feedback/alert/Alert.d.ts +22 -0
  132. package/dist/feedback/alert/Alert.d.ts.map +1 -0
  133. package/dist/feedback/alert/index.d.ts +2 -0
  134. package/dist/feedback/alert/index.d.ts.map +1 -0
  135. package/dist/feedback/banner/Banner.d.ts +16 -0
  136. package/dist/feedback/banner/Banner.d.ts.map +1 -0
  137. package/dist/feedback/banner/index.d.ts +2 -0
  138. package/dist/feedback/banner/index.d.ts.map +1 -0
  139. package/dist/feedback/callout/Callout.d.ts +13 -0
  140. package/dist/feedback/callout/Callout.d.ts.map +1 -0
  141. package/dist/feedback/callout/index.d.ts +2 -0
  142. package/dist/feedback/callout/index.d.ts.map +1 -0
  143. package/dist/feedback/index.d.ts +10 -0
  144. package/dist/feedback/index.d.ts.map +1 -1
  145. package/dist/feedback/index.js +2 -1
  146. package/dist/feedback/inlineSpinner/InlineSpinner.d.ts +14 -0
  147. package/dist/feedback/inlineSpinner/InlineSpinner.d.ts.map +1 -0
  148. package/dist/feedback/inlineSpinner/index.d.ts +2 -0
  149. package/dist/feedback/inlineSpinner/index.d.ts.map +1 -0
  150. package/dist/feedback/loadingState/LoadingState.d.ts +15 -0
  151. package/dist/feedback/loadingState/LoadingState.d.ts.map +1 -0
  152. package/dist/feedback/loadingState/index.d.ts +2 -0
  153. package/dist/feedback/loadingState/index.d.ts.map +1 -0
  154. package/dist/feedback/meterBar/MeterBar.d.ts +18 -0
  155. package/dist/feedback/meterBar/MeterBar.d.ts.map +1 -0
  156. package/dist/feedback/meterBar/index.d.ts +2 -0
  157. package/dist/feedback/meterBar/index.d.ts.map +1 -0
  158. package/dist/feedback/progressBar/ProgressBar.variants.d.ts +2 -2
  159. package/dist/feedback/progressSteps/ProgressSteps.d.ts +16 -0
  160. package/dist/feedback/progressSteps/ProgressSteps.d.ts.map +1 -0
  161. package/dist/feedback/progressSteps/index.d.ts +2 -0
  162. package/dist/feedback/progressSteps/index.d.ts.map +1 -0
  163. package/dist/feedback/skeleton/Skeleton.variants.d.ts +2 -2
  164. package/dist/feedback/statusIndicator/StatusIndicator.d.ts +17 -0
  165. package/dist/feedback/statusIndicator/StatusIndicator.d.ts.map +1 -0
  166. package/dist/feedback/statusIndicator/index.d.ts +2 -0
  167. package/dist/feedback/statusIndicator/index.d.ts.map +1 -0
  168. package/dist/feedback/toast/Toast.d.ts +16 -0
  169. package/dist/feedback/toast/Toast.d.ts.map +1 -0
  170. package/dist/feedback/toast/index.d.ts +2 -0
  171. package/dist/feedback/toast/index.d.ts.map +1 -0
  172. package/dist/feedback/toastSimple/ToastSimple.variants.d.ts +2 -2
  173. package/dist/feedback/trendIndicator/TrendIndicator.d.ts +18 -0
  174. package/dist/feedback/trendIndicator/TrendIndicator.d.ts.map +1 -0
  175. package/dist/feedback/trendIndicator/index.d.ts +2 -0
  176. package/dist/feedback/trendIndicator/index.d.ts.map +1 -0
  177. package/dist/forms/_styles.d.ts +2 -2
  178. package/dist/forms/characterCount/CharacterCount.d.ts +15 -0
  179. package/dist/forms/characterCount/CharacterCount.d.ts.map +1 -0
  180. package/dist/forms/characterCount/index.d.ts +2 -0
  181. package/dist/forms/characterCount/index.d.ts.map +1 -0
  182. package/dist/forms/checkboxField/CheckboxField.d.ts +16 -0
  183. package/dist/forms/checkboxField/CheckboxField.d.ts.map +1 -0
  184. package/dist/forms/checkboxField/index.d.ts +2 -0
  185. package/dist/forms/checkboxField/index.d.ts.map +1 -0
  186. package/dist/forms/checkboxGroup/CheckboxGroup.d.ts +24 -0
  187. package/dist/forms/checkboxGroup/CheckboxGroup.d.ts.map +1 -0
  188. package/dist/forms/checkboxGroup/index.d.ts +2 -0
  189. package/dist/forms/checkboxGroup/index.d.ts.map +1 -0
  190. package/dist/forms/choiceCard/ChoiceCard.d.ts +17 -0
  191. package/dist/forms/choiceCard/ChoiceCard.d.ts.map +1 -0
  192. package/dist/forms/choiceCard/index.d.ts +2 -0
  193. package/dist/forms/choiceCard/index.d.ts.map +1 -0
  194. package/dist/forms/currencyInput/CurrencyInput.d.ts +11 -0
  195. package/dist/forms/currencyInput/CurrencyInput.d.ts.map +1 -0
  196. package/dist/forms/currencyInput/index.d.ts +2 -0
  197. package/dist/forms/currencyInput/index.d.ts.map +1 -0
  198. package/dist/forms/filePicker/FilePicker.d.ts +18 -0
  199. package/dist/forms/filePicker/FilePicker.d.ts.map +1 -0
  200. package/dist/forms/filePicker/index.d.ts +2 -0
  201. package/dist/forms/filePicker/index.d.ts.map +1 -0
  202. package/dist/forms/formField/FormField.d.ts +24 -0
  203. package/dist/forms/formField/FormField.d.ts.map +1 -0
  204. package/dist/forms/formField/index.d.ts +2 -0
  205. package/dist/forms/formField/index.d.ts.map +1 -0
  206. package/dist/forms/index.d.ts +17 -0
  207. package/dist/forms/index.d.ts.map +1 -1
  208. package/dist/forms/index.js +5 -4
  209. package/dist/forms/inputAddon/InputAddon.d.ts +16 -0
  210. package/dist/forms/inputAddon/InputAddon.d.ts.map +1 -0
  211. package/dist/forms/inputAddon/index.d.ts +2 -0
  212. package/dist/forms/inputAddon/index.d.ts.map +1 -0
  213. package/dist/forms/inputGroup/InputGroup.d.ts +11 -0
  214. package/dist/forms/inputGroup/InputGroup.d.ts.map +1 -0
  215. package/dist/forms/inputGroup/index.d.ts +2 -0
  216. package/dist/forms/inputGroup/index.d.ts.map +1 -0
  217. package/dist/forms/labeledInput/LabeledInput.d.ts +17 -0
  218. package/dist/forms/labeledInput/LabeledInput.d.ts.map +1 -0
  219. package/dist/forms/labeledInput/index.d.ts +2 -0
  220. package/dist/forms/labeledInput/index.d.ts.map +1 -0
  221. package/dist/forms/maskedInput/MaskedInput.d.ts +17 -0
  222. package/dist/forms/maskedInput/MaskedInput.d.ts.map +1 -0
  223. package/dist/forms/maskedInput/index.d.ts +2 -0
  224. package/dist/forms/maskedInput/index.d.ts.map +1 -0
  225. package/dist/forms/passwordStrength/PasswordStrength.d.ts +15 -0
  226. package/dist/forms/passwordStrength/PasswordStrength.d.ts.map +1 -0
  227. package/dist/forms/passwordStrength/index.d.ts +2 -0
  228. package/dist/forms/passwordStrength/index.d.ts.map +1 -0
  229. package/dist/forms/percentInput/PercentInput.d.ts +8 -0
  230. package/dist/forms/percentInput/PercentInput.d.ts.map +1 -0
  231. package/dist/forms/percentInput/index.d.ts +2 -0
  232. package/dist/forms/percentInput/index.d.ts.map +1 -0
  233. package/dist/forms/pinInput/PinInput.d.ts +26 -0
  234. package/dist/forms/pinInput/PinInput.d.ts.map +1 -0
  235. package/dist/forms/pinInput/index.d.ts +2 -0
  236. package/dist/forms/pinInput/index.d.ts.map +1 -0
  237. package/dist/forms/radioField/RadioField.d.ts +12 -0
  238. package/dist/forms/radioField/RadioField.d.ts.map +1 -0
  239. package/dist/forms/radioField/index.d.ts +2 -0
  240. package/dist/forms/radioField/index.d.ts.map +1 -0
  241. package/dist/forms/radioGroup/RadioGroup.d.ts +19 -0
  242. package/dist/forms/radioGroup/RadioGroup.d.ts.map +1 -0
  243. package/dist/forms/radioGroup/index.d.ts +2 -0
  244. package/dist/forms/radioGroup/index.d.ts.map +1 -0
  245. package/dist/forms/switchField/SwitchField.d.ts +15 -0
  246. package/dist/forms/switchField/SwitchField.d.ts.map +1 -0
  247. package/dist/forms/switchField/index.d.ts +2 -0
  248. package/dist/forms/switchField/index.d.ts.map +1 -0
  249. package/dist/hooks/index.d.ts +1 -0
  250. package/dist/hooks/index.d.ts.map +1 -1
  251. package/dist/hooks/index.js +2 -3
  252. package/dist/hooks/useClipboard.d.ts +21 -0
  253. package/dist/hooks/useClipboard.d.ts.map +1 -0
  254. package/dist/index.css +112 -5
  255. package/dist/index.d.ts +1 -0
  256. package/dist/index.d.ts.map +1 -1
  257. package/dist/index.js +11 -11
  258. package/dist/layout/cluster/Cluster.d.ts +13 -0
  259. package/dist/layout/cluster/Cluster.d.ts.map +1 -0
  260. package/dist/layout/cluster/index.d.ts +2 -0
  261. package/dist/layout/cluster/index.d.ts.map +1 -0
  262. package/dist/layout/frame/Frame.d.ts +17 -0
  263. package/dist/layout/frame/Frame.d.ts.map +1 -0
  264. package/dist/layout/frame/index.d.ts +2 -0
  265. package/dist/layout/frame/index.d.ts.map +1 -0
  266. package/dist/layout/index.d.ts +4 -0
  267. package/dist/layout/index.d.ts.map +1 -1
  268. package/dist/layout/index.js +1 -1
  269. package/dist/layout/inline/Inline.d.ts +13 -0
  270. package/dist/layout/inline/Inline.d.ts.map +1 -0
  271. package/dist/layout/inline/index.d.ts +2 -0
  272. package/dist/layout/inline/index.d.ts.map +1 -0
  273. package/dist/layout/twoColumn/TwoColumn.d.ts +19 -0
  274. package/dist/layout/twoColumn/TwoColumn.d.ts.map +1 -0
  275. package/dist/layout/twoColumn/index.d.ts +2 -0
  276. package/dist/layout/twoColumn/index.d.ts.map +1 -0
  277. package/dist/nav/breadcrumb/Breadcrumb.d.ts +18 -0
  278. package/dist/nav/breadcrumb/Breadcrumb.d.ts.map +1 -0
  279. package/dist/nav/breadcrumb/index.d.ts +2 -0
  280. package/dist/nav/breadcrumb/index.d.ts.map +1 -0
  281. package/dist/nav/index.d.ts +4 -0
  282. package/dist/nav/index.d.ts.map +1 -0
  283. package/dist/nav/index.js +12 -0
  284. package/dist/nav/index.js.map +1 -0
  285. package/dist/nav/navItem/NavItem.d.ts +22 -0
  286. package/dist/nav/navItem/NavItem.d.ts.map +1 -0
  287. package/dist/nav/navItem/index.d.ts +2 -0
  288. package/dist/nav/navItem/index.d.ts.map +1 -0
  289. package/dist/nav/pagination/Pagination.d.ts +19 -0
  290. package/dist/nav/pagination/Pagination.d.ts.map +1 -0
  291. package/dist/nav/pagination/index.d.ts +2 -0
  292. package/dist/nav/pagination/index.d.ts.map +1 -0
  293. package/dist/primitives/index.js +3 -4
  294. package/package.json +5 -1
  295. package/dist/chunk-6NYTRHP7.js.map +0 -1
  296. package/dist/chunk-77WSI427.js.map +0 -1
  297. package/dist/chunk-JTJEI6MF.js +0 -11
  298. package/dist/chunk-JTJEI6MF.js.map +0 -1
  299. package/dist/chunk-L2RYQWZZ.js +0 -120
  300. package/dist/chunk-L2RYQWZZ.js.map +0 -1
  301. package/dist/chunk-MP4OTUFA.js +0 -318
  302. package/dist/chunk-MP4OTUFA.js.map +0 -1
  303. package/dist/chunk-NJZS7RIH.js +0 -604
  304. package/dist/chunk-NJZS7RIH.js.map +0 -1
  305. package/dist/chunk-SYG6ZE42.js.map +0 -1
  306. package/dist/chunk-YLN7VMYU.js +0 -275
  307. package/dist/chunk-YLN7VMYU.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/feedback/spinner/Spinner.variants.ts","../src/feedback/spinner/Spinner.tsx","../src/feedback/skeleton/Skeleton.variants.ts","../src/feedback/skeleton/Skeleton.tsx","../src/feedback/progressBar/ProgressBar.variants.ts","../src/feedback/progressBar/ProgressBar.tsx","../src/feedback/progressCircle/ProgressCircle.tsx","../src/feedback/alertSimple/AlertSimple.variants.ts","../src/feedback/alertSimple/AlertSimple.tsx","../src/feedback/bannerSimple/BannerSimple.variants.ts","../src/feedback/bannerSimple/BannerSimple.tsx","../src/feedback/toastSimple/ToastSimple.variants.ts","../src/feedback/toastSimple/ToastSimple.tsx","../src/feedback/alert/Alert.tsx","../src/feedback/banner/Banner.tsx","../src/feedback/toast/Toast.tsx","../src/feedback/callout/Callout.tsx","../src/feedback/inlineSpinner/InlineSpinner.tsx","../src/feedback/loadingState/LoadingState.tsx","../src/feedback/progressSteps/ProgressSteps.tsx","../src/feedback/statusIndicator/StatusIndicator.tsx","../src/feedback/meterBar/MeterBar.tsx","../src/feedback/trendIndicator/TrendIndicator.tsx"],"names":["forwardRef","jsx","jsxs","X"],"mappings":";;;;;;;;AAEO,IAAM,kBAAkB,EAAA,CAAG;AAAA,EAChC,IAAA,EAAM,4EAAA;AAAA,EACN,QAAA,EAAU;AAAA,IACR,IAAA,EAAM;AAAA,MACJ,EAAA,EAAI,gBAAA;AAAA,MACJ,EAAA,EAAI,kBAAA;AAAA,MACJ,EAAA,EAAI,kBAAA;AAAA,MACJ,EAAA,EAAI,kBAAA;AAAA,MACJ,EAAA,EAAI;AAAA,KACN;AAAA,IACA,IAAA,EAAM;AAAA,MACJ,OAAA,EAAS,uBAAA;AAAA,MACT,KAAA,EAAO,cAAA;AAAA,MACP,KAAA,EAAO,aAAA;AAAA,MACP,OAAA,EAAS;AAAA;AACX,GACF;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,IAAA,EAAM,IAAA;AAAA,IACN,IAAA,EAAM;AAAA;AAEV,CAAC;ACRM,IAAM,OAAA,GAAU,UAAA;AAAA,EACrB,CAAC,EAAE,SAAA,EAAW,MAAM,IAAA,EAAM,KAAA,GAAQ,WAAW,IAAA,GAAO,QAAA,EAAU,GAAG,KAAA,IAAS,GAAA,qBACxE,IAAA,CAAC,UAAK,GAAA,EAAU,IAAA,EAAa,GAAG,KAAA,EAC9B,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,EAAA,CAAG,eAAA,CAAgB,EAAE,MAAM,IAAA,EAAM,CAAA,EAAG,SAAS,CAAA,EAAG,CAAA;AAAA,oBACjE,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,SAAA,EAAW,QAAA,EAAA,KAAA,EAAM;AAAA,GAAA,EACnC;AAEJ;AACA,OAAA,CAAQ,WAAA,GAAc,SAAA;;;ACrBf,IAAM,mBAAmB,EAAA,CAAG;AAAA,EACjC,IAAA,EAAM,wBAAA;AAAA,EACN,QAAA,EAAU;AAAA,IACR,KAAA,EAAO;AAAA,MACL,IAAA,EAAM,YAAA;AAAA,MACN,IAAA,EAAM,gBAAA;AAAA,MACN,MAAA,EAAQ;AAAA;AACV,GACF;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,KAAA,EAAO;AAAA;AAEX,CAAC;ACJM,IAAM,QAAA,GAAWA,UAAAA;AAAA,EACtB,CAAC,EAAE,SAAA,EAAW,KAAA,EAAO,GAAG,KAAA,EAAM,EAAG,wBAC/BC,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,aAAA,EAAY,MAAA;AAAA,MACZ,WAAW,EAAA,CAAG,gBAAA,CAAiB,EAAE,KAAA,EAAO,GAAG,SAAS,CAAA;AAAA,MACnD,GAAG;AAAA;AAAA;AAGV;AACA,QAAA,CAAS,WAAA,GAAc,UAAA;;;AClBhB,IAAM,wBAAwB,EAAA,CAAG;AAAA,EACtC,IAAA,EAAM,kDAAA;AAAA,EACN,QAAA,EAAU;AAAA,IACR,IAAA,EAAM;AAAA,MACJ,EAAA,EAAI,KAAA;AAAA,MACJ,EAAA,EAAI,KAAA;AAAA,MACJ,EAAA,EAAI;AAAA;AACN,GACF;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,IAAA,EAAM;AAAA;AAEV,CAAC;AAEM,IAAM,uBAAuB,EAAA,CAAG;AAAA,EACrC,IAAA,EAAM,qDAAA;AAAA,EACN,QAAA,EAAU;AAAA,IACR,IAAA,EAAM;AAAA,MACJ,KAAA,EAAO,YAAA;AAAA,MACP,OAAA,EAAS,YAAA;AAAA,MACT,OAAA,EAAS,YAAA;AAAA,MACT,MAAA,EAAQ,gBAAA;AAAA,MACR,OAAA,EAAS;AAAA;AACX,GACF;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,IAAA,EAAM;AAAA;AAEV,CAAC;ACRM,IAAM,WAAA,GAAcD,UAAAA;AAAA,EACzB,CAAC,EAAE,KAAA,EAAO,GAAA,GAAM,GAAA,EAAK,IAAA,EAAM,IAAA,EAAM,KAAA,EAAO,SAAA,EAAW,GAAG,KAAA,EAAM,EAAG,GAAA,KAAQ;AACrE,IAAA,MAAM,WAAA,GAAc,OAAO,KAAA,KAAU,QAAA;AACrC,IAAA,MAAM,GAAA,GAAM,WAAA,GAAc,IAAA,CAAK,GAAA,CAAI,GAAA,EAAK,IAAA,CAAK,GAAA,CAAI,CAAA,EAAI,KAAA,GAAQ,GAAA,GAAO,GAAG,CAAC,CAAA,GAAI,MAAA;AAC5E,IAAA,uBACEC,GAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,IAAA,EAAK,aAAA;AAAA,QACL,YAAA,EAAY,KAAA;AAAA,QACZ,eAAA,EAAe,CAAA;AAAA,QACf,eAAA,EAAe,GAAA;AAAA,QACf,eAAA,EAAe,cAAc,KAAA,GAAQ,MAAA;AAAA,QACrC,WAAW,EAAA,CAAG,qBAAA,CAAsB,EAAE,IAAA,EAAM,GAAG,SAAS,CAAA;AAAA,QACvD,GAAG,KAAA;AAAA,QAEJ,QAAA,kBAAAA,GAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAW,EAAA;AAAA,cACT,oBAAA,CAAqB,EAAE,IAAA,EAAM,CAAA;AAAA,cAC7B,CAAC,WAAA,IAAe;AAAA,aAClB;AAAA,YACA,OAAO,WAAA,GAAc,EAAE,OAAO,CAAA,EAAG,GAAG,KAAI,GAAI;AAAA;AAAA;AAC9C;AAAA,KACF;AAAA,EAEJ;AACF;AACA,WAAA,CAAY,WAAA,GAAc,aAAA;ACnC1B,IAAM,UAAA,GAAuE;AAAA,EAC3E,KAAA,EAAO,cAAA;AAAA,EACP,OAAA,EAAS,cAAA;AAAA,EACT,OAAA,EAAS,cAAA;AAAA,EACT,MAAA,EAAQ,kBAAA;AAAA,EACR,OAAA,EAAS;AACX,CAAA;AAMO,IAAM,cAAA,GAAiBD,UAAAA;AAAA,EAC5B,CACE,EAAE,KAAA,EAAO,GAAA,GAAM,GAAA,EAAK,OAAO,EAAA,EAAI,SAAA,GAAY,CAAA,EAAG,IAAA,GAAO,SAAS,KAAA,EAAO,SAAA,EAAW,GAAG,KAAA,IACnF,GAAA,KACG;AACH,IAAA,MAAM,WAAA,GAAc,OAAO,KAAA,KAAU,QAAA;AACrC,IAAA,MAAM,MAAA,GAAA,CAAU,OAAO,SAAA,IAAa,CAAA;AACpC,IAAA,MAAM,aAAA,GAAgB,CAAA,GAAI,IAAA,CAAK,EAAA,GAAK,MAAA;AACpC,IAAA,MAAM,GAAA,GAAM,WAAA,GAAc,IAAA,CAAK,GAAA,CAAI,GAAA,EAAK,IAAA,CAAK,GAAA,CAAI,CAAA,EAAI,KAAA,GAAQ,GAAA,GAAO,GAAG,CAAC,CAAA,GAAI,EAAA;AAC5E,IAAA,MAAM,MAAA,GAAS,aAAA,GAAiB,GAAA,GAAM,GAAA,GAAO,aAAA;AAE7C,IAAA,uBACEC,GAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,IAAA,EAAK,aAAA;AAAA,QACL,YAAA,EAAY,KAAA;AAAA,QACZ,eAAA,EAAe,CAAA;AAAA,QACf,eAAA,EAAe,GAAA;AAAA,QACf,eAAA,EAAe,cAAc,KAAA,GAAQ,MAAA;AAAA,QACrC,SAAA,EAAW,GAAG,cAAA,EAAgB,CAAC,eAAe,cAAA,EAAgB,UAAA,CAAW,IAAI,CAAA,EAAG,SAAS,CAAA;AAAA,QACzF,KAAA,EAAO,EAAE,KAAA,EAAO,IAAA,EAAM,QAAQ,IAAA,EAAK;AAAA,QAClC,GAAG,KAAA;AAAA,QAEJ,QAAA,kBAAAC,IAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAM,OAAA,EAAS,CAAA,IAAA,EAAO,IAAI,CAAA,CAAA,EAAI,IAAI,CAAA,CAAA,EAC1D,QAAA,EAAA;AAAA,0BAAAD,GAAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACC,IAAI,IAAA,GAAO,CAAA;AAAA,cACX,IAAI,IAAA,GAAO,CAAA;AAAA,cACX,CAAA,EAAG,MAAA;AAAA,cACH,MAAA,EAAO,cAAA;AAAA,cACP,WAAA,EAAa,SAAA;AAAA,cACb,IAAA,EAAK,MAAA;AAAA,cACL,OAAA,EAAS;AAAA;AAAA,WACX;AAAA,0BACAA,GAAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACC,IAAI,IAAA,GAAO,CAAA;AAAA,cACX,IAAI,IAAA,GAAO,CAAA;AAAA,cACX,CAAA,EAAG,MAAA;AAAA,cACH,MAAA,EAAO,cAAA;AAAA,cACP,WAAA,EAAa,SAAA;AAAA,cACb,aAAA,EAAc,OAAA;AAAA,cACd,IAAA,EAAK,MAAA;AAAA,cACL,eAAA,EAAiB,aAAA;AAAA,cACjB,gBAAA,EAAkB,MAAA;AAAA,cAClB,WAAW,CAAA,WAAA,EAAc,IAAA,GAAO,CAAC,CAAA,CAAA,EAAI,OAAO,CAAC,CAAA,CAAA,CAAA;AAAA,cAC7C,KAAA,EAAO,EAAE,UAAA,EAAY,8BAAA;AAA+B;AAAA;AACtD,SAAA,EACF;AAAA;AAAA,KACF;AAAA,EAEJ;AACF;AACA,cAAA,CAAe,WAAA,GAAc,gBAAA;;;AC1EtB,IAAM,sBAAsB,EAAA,CAAG;AAAA,EACpC,IAAA,EAAM,qCAAA;AAAA,EACN,QAAA,EAAU;AAAA,IACR,QAAA,EAAU;AAAA,MACR,IAAA,EAAM,yDAAA;AAAA,MACN,OAAA,EAAS,kEAAA;AAAA,MACT,OAAA,EAAS,kEAAA;AAAA,MACT,MAAA,EAAQ,8EAAA;AAAA,MACR,OAAA,EAAS;AAAA;AACX,GACF;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,QAAA,EAAU;AAAA;AAEd,CAAC;ACDM,IAAM,WAAA,GAAcD,UAAAA;AAAA,EACzB,CAAC,EAAE,SAAA,EAAW,QAAA,EAAU,IAAA,GAAO,UAAU,GAAG,KAAA,EAAM,EAAG,GAAA,qBACnDC,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,IAAA;AAAA,MACA,WAAW,EAAA,CAAG,mBAAA,CAAoB,EAAE,QAAA,EAAU,GAAG,SAAS,CAAA;AAAA,MACzD,GAAG;AAAA;AAAA;AAGV;AACA,WAAA,CAAY,WAAA,GAAc,aAAA;;;ACvBnB,IAAM,uBAAuB,EAAA,CAAG;AAAA,EACrC,IAAA,EAAM,0BAAA;AAAA,EACN,QAAA,EAAU;AAAA,IACR,QAAA,EAAU;AAAA,MACR,IAAA,EAAM,8BAAA;AAAA,MACN,OAAA,EAAS,oCAAA;AAAA,MACT,OAAA,EAAS,oCAAA;AAAA,MACT,MAAA,EAAQ,4CAAA;AAAA,MACR,OAAA,EAAS;AAAA;AACX,GACF;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,QAAA,EAAU;AAAA;AAEd,CAAC;ACJM,IAAM,YAAA,GAAeD,UAAAA;AAAA,EAC1B,CAAC,EAAE,SAAA,EAAW,QAAA,EAAU,IAAA,GAAO,UAAU,GAAG,KAAA,EAAM,EAAG,GAAA,qBACnDC,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,IAAA;AAAA,MACA,WAAW,EAAA,CAAG,oBAAA,CAAqB,EAAE,QAAA,EAAU,GAAG,SAAS,CAAA;AAAA,MAC1D,GAAG;AAAA;AAAA;AAGV;AACA,YAAA,CAAa,WAAA,GAAc,cAAA;;;ACpBpB,IAAM,sBAAsB,EAAA,CAAG;AAAA,EACpC,IAAA,EAAM,sGAAA;AAAA,EACN,QAAA,EAAU;AAAA,IACR,QAAA,EAAU;AAAA,MACR,IAAA,EAAM,kBAAA;AAAA,MACN,OAAA,EAAS,qBAAA;AAAA,MACT,OAAA,EAAS,qBAAA;AAAA,MACT,MAAA,EAAQ,yBAAA;AAAA,MACR,OAAA,EAAS;AAAA;AACX,GACF;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,QAAA,EAAU;AAAA;AAEd,CAAC;ACFM,IAAM,WAAA,GAAcD,UAAAA;AAAA,EACzB,CAAC,EAAE,SAAA,EAAW,QAAA,EAAU,IAAA,GAAO,UAAU,GAAG,KAAA,EAAM,EAAG,GAAA,qBACnDC,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,IAAA;AAAA,MACA,WAAA,EAAU,QAAA;AAAA,MACV,WAAW,EAAA,CAAG,mBAAA,CAAoB,EAAE,QAAA,EAAU,GAAG,SAAS,CAAA;AAAA,MACzD,GAAG;AAAA;AAAA;AAGV;AACA,WAAA,CAAY,WAAA,GAAc,aAAA;ACGnB,IAAM,KAAA,GAAQD,UAAAA;AAAA,EACnB,CACE,EAAE,IAAA,EAAM,KAAA,EAAO,aAAa,OAAA,EAAS,OAAA,EAAS,UAAA,GAAa,SAAA,EAAW,UAAU,SAAA,EAAW,GAAG,KAAA,EAAM,EACpG,wBAEAE,IAAAA;AAAA,IAAC,WAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,QAAA;AAAA,MACA,SAAA,EAAW,EAAA,CAAG,wBAAA,EAA0B,SAAS,CAAA;AAAA,MAChD,GAAG,KAAA;AAAA,MAEH,QAAA,EAAA;AAAA,QAAA,IAAA,oBAAQD,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,mBAAmB,QAAA,EAAA,IAAA,EAAK,CAAA;AAAA,wBACjDC,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gBAAA,EACZ,QAAA,EAAA;AAAA,UAAA,KAAA,oBAASD,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,eAAe,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,UAC7C,WAAA,oBAAeA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,GAAG,SAAA,EAAW,KAAA,IAAS,mBAAmB,CAAA,EAAI,QAAA,EAAA,WAAA,EAAY,CAAA;AAAA,UACzF,2BAAWA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,0CAA0C,QAAA,EAAA,OAAA,EAAQ;AAAA,SAAA,EAC/E,CAAA;AAAA,QACC,2BACCA,GAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,QAAA;AAAA,YACL,YAAA,EAAY,UAAA;AAAA,YACZ,OAAA,EAAS,OAAA;AAAA,YACT,SAAA,EAAU,gMAAA;AAAA,YAEV,0BAAAA,GAAAA,CAAC,IAAA,EAAA,EAAK,IAAA,EAAM,CAAA,EAAG,MAAM,EAAA,EAAI;AAAA;AAAA;AAC3B;AAAA;AAAA;AAIR;AACA,KAAA,CAAM,WAAA,GAAc,OAAA;ACpCb,IAAM,MAAA,GAASD,UAAAA;AAAA,EACpB,CACE,EAAE,IAAA,EAAM,KAAA,EAAO,aAAa,OAAA,EAAS,OAAA,EAAS,UAAA,GAAa,SAAA,EAAW,UAAU,SAAA,EAAW,GAAG,KAAA,EAAM,EACpG,wBAEAE,IAAAA;AAAA,IAAC,YAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,QAAA;AAAA,MACA,SAAA,EAAW,EAAA,CAAG,yBAAA,EAA2B,SAAS,CAAA;AAAA,MACjD,GAAG,KAAA;AAAA,MAEH,QAAA,EAAA;AAAA,QAAA,IAAA,oBAAQD,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,YAAY,QAAA,EAAA,IAAA,EAAK,CAAA;AAAA,wBAC1CC,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,0CAAA,EACZ,QAAA,EAAA;AAAA,UAAA,KAAA,oBAASD,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,eAAe,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,UAC9C,+BAAeA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,cAAc,QAAA,EAAA,WAAA,EAAY;AAAA,SAAA,EAC5D,CAAA;AAAA,QACC,2BAAWA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,oCAAoC,QAAA,EAAA,OAAA,EAAQ,CAAA;AAAA,QACtE,2BACCA,GAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,QAAA;AAAA,YACL,YAAA,EAAY,UAAA;AAAA,YACZ,OAAA,EAAS,OAAA;AAAA,YACT,SAAA,EAAU,gMAAA;AAAA,YAEV,0BAAAA,GAAAA,CAAC,IAAA,EAAA,EAAK,IAAA,EAAME,CAAAA,EAAG,MAAM,EAAA,EAAI;AAAA;AAAA;AAC3B;AAAA;AAAA;AAIR;AACA,MAAA,CAAO,WAAA,GAAc,QAAA;AC9Bd,IAAM,KAAA,GAAQH,UAAAA;AAAA,EACnB,CACE,EAAE,IAAA,EAAM,KAAA,EAAO,aAAa,OAAA,EAAS,OAAA,EAAS,UAAA,GAAa,SAAA,EAAW,UAAU,SAAA,EAAW,GAAG,KAAA,EAAM,EACpG,wBAEAE,IAAAA;AAAA,IAAC,WAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,QAAA;AAAA,MACA,SAAA,EAAW,EAAA,CAAG,wBAAA,EAA0B,SAAS,CAAA;AAAA,MAChD,GAAG,KAAA;AAAA,MAEH,QAAA,EAAA;AAAA,QAAA,IAAA,oBAAQD,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,mBAAmB,QAAA,EAAA,IAAA,EAAK,CAAA;AAAA,wBACjDC,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gBAAA,EACZ,QAAA,EAAA;AAAA,UAAA,KAAA,oBAASD,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,eAAe,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,UAC7C,WAAA,oBACCA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,GAAG,SAAA,EAAW,KAAA,IAAS,8BAA8B,CAAA,EAAI,QAAA,EAAA,WAAA,EAAY,CAAA;AAAA,UAEtF,2BAAWA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,0CAA0C,QAAA,EAAA,OAAA,EAAQ;AAAA,SAAA,EAC/E,CAAA;AAAA,QACC,2BACCA,GAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,QAAA;AAAA,YACL,YAAA,EAAY,UAAA;AAAA,YACZ,OAAA,EAAS,OAAA;AAAA,YACT,SAAA,EAAU,6MAAA;AAAA,YAEV,0BAAAA,GAAAA,CAAC,IAAA,EAAA,EAAK,IAAA,EAAME,CAAAA,EAAG,MAAM,EAAA,EAAI;AAAA;AAAA;AAC3B;AAAA;AAAA;AAIR;AACA,KAAA,CAAM,WAAA,GAAc,OAAA;AC5CpB,IAAM,QAAA,GAAkE;AAAA,EACtE,IAAA,EAAM,+BAAA;AAAA,EACN,OAAA,EAAS,kCAAA;AAAA,EACT,OAAA,EAAS,kCAAA;AAAA,EACT,MAAA,EAAQ,sCAAA;AAAA,EACR,OAAA,EAAS;AACX,CAAA;AAMO,IAAM,OAAA,GAAUH,UAAAA;AAAA,EACrB,CAAC,EAAE,QAAA,GAAW,MAAA,EAAQ,IAAA,EAAM,KAAA,EAAO,QAAA,EAAU,SAAA,EAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAClEE,IAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACT,wEAAA;AAAA,QACA,SAAS,QAAQ,CAAA;AAAA,QACjB;AAAA,OACF;AAAA,MACC,GAAG,KAAA;AAAA,MAEH,QAAA,EAAA;AAAA,QAAA,IAAA,oBAAQD,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,mBAAmB,QAAA,EAAA,IAAA,EAAK,CAAA;AAAA,wBACjDC,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gBAAA,EACZ,QAAA,EAAA;AAAA,UAAA,KAAA,oBAASD,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,sBAAsB,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,UACpD;AAAA,SAAA,EACH;AAAA;AAAA;AAAA;AAGN;AACA,OAAA,CAAQ,WAAA,GAAc,SAAA;AC1Bf,IAAM,aAAA,GAAgBD,UAAAA;AAAA,EAC3B,CAAC,EAAE,QAAA,GAAW,eAAA,EAAY,IAAA,GAAO,IAAA,EAAM,IAAA,GAAO,SAAA,EAAW,SAAA,EAAW,GAAG,KAAA,EAAM,EAAG,wBAC9EE,IAAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAW,EAAA,CAAG,8DAAA,EAAgE,SAAS,CAAA;AAAA,MACtF,GAAG,KAAA;AAAA,MAEJ,QAAA,EAAA;AAAA,wBAAAD,GAAAA,CAAC,OAAA,EAAA,EAAQ,IAAA,EAAY,IAAA,EAAY,CAAA;AAAA,QAChC;AAAA;AAAA;AAAA;AAGP;AACA,aAAA,CAAc,WAAA,GAAc,eAAA;ACVrB,IAAM,YAAA,GAAeD,UAAAA;AAAA,EAC1B,CAAC,EAAE,KAAA,GAAQ,eAAA,EAAY,WAAA,EAAa,IAAA,GAAO,IAAA,EAAM,SAAA,EAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBACtEE,IAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,IAAA,EAAK,QAAA;AAAA,MACL,SAAA,EAAW,EAAA,CAAG,mEAAA,EAAqE,SAAS,CAAA;AAAA,MAC3F,GAAG,KAAA;AAAA,MAEJ,QAAA,EAAA;AAAA,wBAAAD,GAAAA,CAAC,OAAA,EAAA,EAAQ,IAAA,EAAY,IAAA,EAAK,OAAA,EAAQ,CAAA;AAAA,QACjC,yBAASA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,uCAAuC,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,QACrE,+BAAeA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,iCAAiC,QAAA,EAAA,WAAA,EAAY;AAAA;AAAA;AAAA;AAGlF;AACA,YAAA,CAAa,WAAA,GAAc,cAAA;ACZpB,IAAM,aAAA,GAAgBD,UAAAA;AAAA,EAC3B,CAAC,EAAE,KAAA,EAAO,OAAA,EAAS,WAAA,GAAc,YAAA,EAAc,SAAA,EAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBACpEC,GAAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACT,MAAA;AAAA,QACA,WAAA,KAAgB,eAAe,6BAAA,GAAgC,gBAAA;AAAA,QAC/D;AAAA,OACF;AAAA,MACC,GAAG,KAAA;AAAA,MAEH,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,KAAA,EAAO,CAAA,KAAM;AACvB,QAAA,MAAM,SAAS,CAAA,GAAI,OAAA,GAAU,UAAA,GAAa,CAAA,KAAM,UAAU,SAAA,GAAY,UAAA;AACtE,QAAA,uBACEC,IAAAA;AAAA,UAAC,IAAA;AAAA,UAAA;AAAA,YAEC,SAAA,EAAW,EAAA;AAAA,cACT,yBAAA;AAAA,cACA,WAAA,KAAgB,YAAA,IAAgB,CAAA,GAAI,KAAA,CAAM,SAAS,CAAA,IAAK;AAAA,aAC1D;AAAA,YAEA,QAAA,EAAA;AAAA,8BAAAD,GAAAA;AAAA,gBAAC,MAAA;AAAA,gBAAA;AAAA,kBACC,SAAA,EAAW,EAAA;AAAA,oBACT,kEAAA;AAAA,oBACA,WAAW,UAAA,IAAc,oCAAA;AAAA,oBACzB,WAAW,SAAA,IAAa,sCAAA;AAAA,oBACxB,WAAW,UAAA,IAAc;AAAA,mBAC3B;AAAA,kBACA,cAAA,EAAc,MAAA,KAAW,SAAA,GAAY,MAAA,GAAS,MAAA;AAAA,kBAE7C,QAAA,EAAA,MAAA,KAAW,UAAA,mBAAaA,GAAAA,CAAC,IAAA,EAAA,EAAK,MAAM,KAAA,EAAO,IAAA,EAAM,EAAA,EAAI,CAAA,GAAK,CAAA,GAAI;AAAA;AAAA,eACjE;AAAA,8BACAA,GAAAA;AAAA,gBAAC,MAAA;AAAA,gBAAA;AAAA,kBACC,SAAA,EAAW,EAAA;AAAA,oBACT,SAAA;AAAA,oBACA,MAAA,KAAW,aAAa,uBAAA,GAA0B;AAAA,mBACpD;AAAA,kBAEC,QAAA,EAAA;AAAA;AAAA,eACH;AAAA,cACC,gBAAgB,YAAA,IAAgB,CAAA,GAAI,KAAA,CAAM,MAAA,GAAS,qBAClDA,GAAAA;AAAA,gBAAC,MAAA;AAAA,gBAAA;AAAA,kBACC,SAAA,EAAW,EAAA;AAAA,oBACT,aAAA;AAAA,oBACA,CAAA,GAAI,UAAU,YAAA,GAAe;AAAA,mBAC/B;AAAA,kBACA,aAAA,EAAY;AAAA;AAAA;AACd;AAAA,WAAA;AAAA,UAhCG;AAAA,SAkCP;AAAA,MAEJ,CAAC;AAAA;AAAA;AAGP;AACA,aAAA,CAAc,WAAA,GAAc,eAAA;AC7D5B,IAAM,IAAA,GAAkE;AAAA,EACtE,OAAA,EAAS,YAAA;AAAA,EACT,OAAA,EAAS,YAAA;AAAA,EACT,WAAA,EAAa,gBAAA;AAAA,EACb,IAAA,EAAM,SAAA;AAAA,EACN,OAAA,EAAS;AACX,CAAA;AAOO,IAAM,eAAA,GAAkBD,UAAAA;AAAA,EAC7B,CAAC,EAAE,IAAA,GAAO,SAAA,EAAW,KAAA,EAAO,WAAA,EAAa,KAAA,EAAO,SAAA,EAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBACrEE,IAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAW,EAAA,CAAG,wBAAA,EAA0B,SAAS,CAAA;AAAA,MAChD,GAAG,KAAA;AAAA,MAEJ,QAAA,EAAA;AAAA,wBAAAA,IAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,2BAAA,EACd,QAAA,EAAA;AAAA,0BAAAD,GAAAA,CAAC,UAAK,SAAA,EAAW,EAAA,CAAG,yCAAyC,IAAA,CAAK,IAAI,CAAC,CAAA,EAAG,CAAA;AAAA,UACzE,yBACCA,GAAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAW,EAAA;AAAA,gBACT,oEAAA;AAAA,gBACA,KAAK,IAAI;AAAA;AACX;AAAA;AACF,SAAA,EAEJ,CAAA;AAAA,wBACAC,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gBAAA,EACb,QAAA,EAAA;AAAA,0BAAAD,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,qCAAA,EAAuC,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,UAC3D,+BAAeA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,iCAAiC,QAAA,EAAA,WAAA,EAAY;AAAA,SAAA,EAC9E;AAAA;AAAA;AAAA;AAGN;AACA,eAAA,CAAgB,WAAA,GAAc,iBAAA;ACpC9B,IAAM,IAAA,GAA2D;AAAA,EAC/D,EAAA,EAAI,KAAA;AAAA,EACJ,EAAA,EAAI,KAAA;AAAA,EACJ,EAAA,EAAI;AACN,CAAA;AAMO,IAAM,QAAA,GAAWD,UAAAA;AAAA,EACtB,CAAC,EAAE,KAAA,EAAO,GAAA,GAAM,GAAA,EAAK,UAAA,EAAY,IAAA,GAAO,IAAA,EAAM,KAAA,EAAO,SAAA,EAAW,GAAG,KAAA,IAAS,GAAA,KAAQ;AAClF,IAAA,MAAM,CAAC,MAAM,IAAI,CAAA,GAAI,cAAc,CAAC,GAAA,GAAM,GAAA,EAAK,GAAA,GAAM,GAAG,CAAA;AACxD,IAAA,MAAM,OACJ,KAAA,IAAS,IAAA,GAAO,YAAA,GAAe,KAAA,IAAS,OAAO,YAAA,GAAe,gBAAA;AAChE,IAAA,MAAM,GAAA,GAAM,IAAA,CAAK,GAAA,CAAI,GAAA,EAAK,IAAA,CAAK,IAAI,CAAA,EAAI,KAAA,GAAQ,GAAA,GAAO,GAAG,CAAC,CAAA;AAC1D,IAAA,uBACEC,GAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,IAAA,EAAK,OAAA;AAAA,QACL,YAAA,EAAY,KAAA;AAAA,QACZ,eAAA,EAAe,CAAA;AAAA,QACf,eAAA,EAAe,GAAA;AAAA,QACf,eAAA,EAAe,KAAA;AAAA,QACf,WAAW,EAAA,CAAG,8CAAA,EAAgD,IAAA,CAAK,IAAI,GAAG,SAAS,CAAA;AAAA,QAClF,GAAG,KAAA;AAAA,QAEJ,QAAA,kBAAAA,GAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAW,EAAA,CAAG,qDAAA,EAAuD,IAAI,CAAA;AAAA,YACzE,KAAA,EAAO,EAAE,KAAA,EAAO,CAAA,EAAG,GAAG,CAAA,CAAA,CAAA;AAAI;AAAA;AAC5B;AAAA,KACF;AAAA,EAEJ;AACF;AACA,QAAA,CAAS,WAAA,GAAc,UAAA;ACjCvB,IAAM,SAAA,GAAsE;AAAA,EAC1E,EAAA,EAAI,SAAA;AAAA,EACJ,EAAA,EAAI,SAAA;AAAA,EACJ,EAAA,EAAI;AACN,CAAA;AACA,IAAM,SAAA,GAAsE;AAAA,EAC1E,EAAA,EAAI,EAAA;AAAA,EACJ,EAAA,EAAI,EAAA;AAAA,EACJ,EAAA,EAAI;AACN,CAAA;AAMO,IAAM,cAAA,GAAiBD,UAAAA;AAAA,EAC5B,CAAC,EAAE,KAAA,EAAO,MAAA,EAAQ,OAAA,EAAS,KAAA,EAAO,IAAA,GAAO,IAAA,EAAM,SAAA,EAAW,GAAG,KAAA,EAAM,EAAG,GAAA,KAAQ;AAC5E,IAAA,MAAM,YAAY,KAAA,GAAQ,CAAA,GAAI,IAAA,GAAO,KAAA,GAAQ,IAAI,MAAA,GAAS,MAAA;AAC1D,IAAA,MAAM,WACJ,SAAA,KAAc,MAAA,GAAS,QAAS,SAAA,KAAc,IAAA,KAAU,QAAQ,OAAO,CAAA;AACzE,IAAA,MAAM,IAAA,GACJ,SAAA,KAAc,MAAA,GAAS,uBAAA,GAA0B,WAAW,cAAA,GAAiB,kBAAA;AAC/E,IAAA,MAAM,QAAQ,SAAA,KAAc,IAAA,GAAO,UAAA,GAAa,SAAA,KAAc,SAAS,YAAA,GAAe,KAAA;AACtF,IAAA,MAAM,OAAA,GAAU,MAAA,GAAS,MAAA,CAAO,KAAK,CAAA,GAAI,CAAA,EAAG,KAAA,GAAQ,CAAA,GAAI,GAAA,GAAM,EAAE,CAAA,EAAG,KAAK,CAAA,CAAA,CAAA;AACxE,IAAA,uBACEE,IAAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,WAAW,EAAA,CAAG,4CAAA,EAA8C,UAAU,IAAI,CAAA,EAAG,MAAM,SAAS,CAAA;AAAA,QAC3F,GAAG,KAAA;AAAA,QAEJ,QAAA,EAAA;AAAA,0BAAAD,IAAC,IAAA,EAAA,EAAK,IAAA,EAAM,OAAO,IAAA,EAAM,SAAA,CAAU,IAAI,CAAA,EAAG,CAAA;AAAA,UACzC,OAAA;AAAA,UACA,KAAA,oBAASC,IAAAA,CAAC,MAAA,EAAA,EAAK,WAAU,uBAAA,EAAwB,QAAA,EAAA;AAAA,YAAA,GAAA;AAAA,YAAE;AAAA,WAAA,EAAM;AAAA;AAAA;AAAA,KAC5D;AAAA,EAEJ;AACF;AACA,cAAA,CAAe,WAAA,GAAc,gBAAA","file":"chunk-RIW2V3N4.js","sourcesContent":["import { tv, type VariantProps } from '../../utils';\n\nexport const spinnerVariants = tv({\n base: 'inline-block animate-spin rounded-full border-current border-b-transparent',\n variants: {\n size: {\n xs: 'h-3 w-3 border',\n sm: 'h-4 w-4 border-2',\n md: 'h-5 w-5 border-2',\n lg: 'h-8 w-8 border-2',\n xl: 'h-12 w-12 border-[3px]',\n },\n tone: {\n default: 'text-muted-foreground',\n brand: 'text-primary',\n muted: 'text-border',\n current: '',\n },\n },\n defaultVariants: {\n size: 'md',\n tone: 'default',\n },\n});\n\nexport type SpinnerVariants = VariantProps<typeof spinnerVariants>;\n","import { forwardRef, type ComponentPropsWithoutRef } from 'react';\nimport { cn } from '../../utils';\nimport { spinnerVariants, type SpinnerVariants } from './Spinner.variants';\n\nexport interface SpinnerProps\n extends Omit<ComponentPropsWithoutRef<'span'>, 'children'>,\n SpinnerVariants {\n /** Accessible label. Default `\"Loading\"`. */\n label?: string;\n}\n\n/**\n * Indeterminate loading spinner. Renders a spinning circle and a visually\n * hidden text label for screen readers.\n */\nexport const Spinner = forwardRef<HTMLSpanElement, SpinnerProps>(\n ({ className, size, tone, label = 'Loading', role = 'status', ...props }, ref) => (\n <span ref={ref} role={role} {...props}>\n <span className={cn(spinnerVariants({ size, tone }), className)} />\n <span className=\"sr-only\">{label}</span>\n </span>\n ),\n);\nSpinner.displayName = 'Spinner';\n","import { tv, type VariantProps } from '../../utils';\n\nexport const skeletonVariants = tv({\n base: 'animate-pulse bg-muted',\n variants: {\n shape: {\n rect: 'rounded-md',\n text: 'h-4 rounded-sm',\n circle: 'rounded-full',\n },\n },\n defaultVariants: {\n shape: 'rect',\n },\n});\n\nexport type SkeletonVariants = VariantProps<typeof skeletonVariants>;\n","import { forwardRef, type ComponentPropsWithoutRef } from 'react';\nimport { cn } from '../../utils';\nimport { skeletonVariants, type SkeletonVariants } from './Skeleton.variants';\n\nexport interface SkeletonProps extends ComponentPropsWithoutRef<'div'>, SkeletonVariants {}\n\n/**\n * Loading placeholder. Use sized via `className` (e.g. `w-32 h-4`) for text\n * lines, or as a full block with `shape=\"rect\"`.\n */\nexport const Skeleton = forwardRef<HTMLDivElement, SkeletonProps>(\n ({ className, shape, ...props }, ref) => (\n <div\n ref={ref}\n aria-hidden=\"true\"\n className={cn(skeletonVariants({ shape }), className)}\n {...props}\n />\n ),\n);\nSkeleton.displayName = 'Skeleton';\n","import { tv, type VariantProps } from '../../utils';\n\nexport const progressTrackVariants = tv({\n base: 'h-2 w-full overflow-hidden rounded-full bg-muted',\n variants: {\n size: {\n sm: 'h-1',\n md: 'h-2',\n lg: 'h-3',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n});\n\nexport const progressFillVariants = tv({\n base: 'h-full rounded-full transition-[width] duration-300',\n variants: {\n tone: {\n brand: 'bg-primary',\n success: 'bg-success',\n warning: 'bg-warning',\n danger: 'bg-destructive',\n neutral: 'bg-muted-foreground',\n },\n },\n defaultVariants: {\n tone: 'brand',\n },\n});\n\nexport type ProgressBarVariants = VariantProps<typeof progressTrackVariants> &\n VariantProps<typeof progressFillVariants>;\n","import { forwardRef, type ComponentPropsWithoutRef } from 'react';\nimport { cn } from '../../utils';\nimport {\n progressFillVariants,\n progressTrackVariants,\n type ProgressBarVariants,\n} from './ProgressBar.variants';\n\nexport interface ProgressBarProps\n extends Omit<ComponentPropsWithoutRef<'div'>, 'children'>,\n ProgressBarVariants {\n /** Current value 0–100. Pass `undefined` for indeterminate. */\n value?: number;\n max?: number;\n /** Accessible label for the progress. */\n label?: string;\n}\n\n/**\n * Linear progress indicator. Set `value` (0–`max`) for determinate; omit\n * for indeterminate.\n */\nexport const ProgressBar = forwardRef<HTMLDivElement, ProgressBarProps>(\n ({ value, max = 100, size, tone, label, className, ...props }, ref) => {\n const determinate = typeof value === 'number';\n const pct = determinate ? Math.min(100, Math.max(0, (value / max) * 100)) : undefined;\n return (\n <div\n ref={ref}\n role=\"progressbar\"\n aria-label={label}\n aria-valuemin={0}\n aria-valuemax={max}\n aria-valuenow={determinate ? value : undefined}\n className={cn(progressTrackVariants({ size }), className)}\n {...props}\n >\n <div\n className={cn(\n progressFillVariants({ tone }),\n !determinate && 'w-1/3 animate-[indeterminate_1.4s_ease-in-out_infinite]',\n )}\n style={determinate ? { width: `${pct}%` } : undefined}\n />\n </div>\n );\n },\n);\nProgressBar.displayName = 'ProgressBar';\n","import { forwardRef, type ComponentPropsWithoutRef } from 'react';\nimport { cn } from '../../utils';\n\nexport interface ProgressCircleProps extends Omit<ComponentPropsWithoutRef<'div'>, 'children'> {\n /** 0–100. Omit for indeterminate. */\n value?: number;\n max?: number;\n size?: number;\n thickness?: number;\n tone?: 'brand' | 'success' | 'warning' | 'danger' | 'neutral';\n label?: string;\n}\n\nconst TONE_CLASS: Record<NonNullable<ProgressCircleProps['tone']>, string> = {\n brand: 'text-primary',\n success: 'text-success',\n warning: 'text-warning',\n danger: 'text-destructive',\n neutral: 'text-muted-foreground',\n};\n\n/**\n * Circular progress indicator (SVG). Determinate when `value` is set;\n * indeterminate (rotating) when omitted.\n */\nexport const ProgressCircle = forwardRef<HTMLDivElement, ProgressCircleProps>(\n (\n { value, max = 100, size = 40, thickness = 4, tone = 'brand', label, className, ...props },\n ref,\n ) => {\n const determinate = typeof value === 'number';\n const radius = (size - thickness) / 2;\n const circumference = 2 * Math.PI * radius;\n const pct = determinate ? Math.min(100, Math.max(0, (value / max) * 100)) : 25;\n const offset = circumference - (pct / 100) * circumference;\n\n return (\n <div\n ref={ref}\n role=\"progressbar\"\n aria-label={label}\n aria-valuemin={0}\n aria-valuemax={max}\n aria-valuenow={determinate ? value : undefined}\n className={cn('inline-block', !determinate && 'animate-spin', TONE_CLASS[tone], className)}\n style={{ width: size, height: size }}\n {...props}\n >\n <svg width={size} height={size} viewBox={`0 0 ${size} ${size}`}>\n <circle\n cx={size / 2}\n cy={size / 2}\n r={radius}\n stroke=\"currentColor\"\n strokeWidth={thickness}\n fill=\"none\"\n opacity={0.2}\n />\n <circle\n cx={size / 2}\n cy={size / 2}\n r={radius}\n stroke=\"currentColor\"\n strokeWidth={thickness}\n strokeLinecap=\"round\"\n fill=\"none\"\n strokeDasharray={circumference}\n strokeDashoffset={offset}\n transform={`rotate(-90 ${size / 2} ${size / 2})`}\n style={{ transition: 'stroke-dashoffset 300ms ease' }}\n />\n </svg>\n </div>\n );\n },\n);\nProgressCircle.displayName = 'ProgressCircle';\n","import { tv, type VariantProps } from '../../utils';\n\nexport const alertSimpleVariants = tv({\n base: 'rounded-md border px-4 py-3 text-sm',\n variants: {\n severity: {\n info: 'border-info-soft bg-info-soft text-info-soft-foreground',\n success: 'border-success-soft bg-success-soft text-success-soft-foreground',\n warning: 'border-warning-soft bg-warning-soft text-warning-soft-foreground',\n danger: 'border-destructive-soft bg-destructive-soft text-destructive-soft-foreground',\n neutral: 'border-border bg-muted text-foreground',\n },\n },\n defaultVariants: {\n severity: 'info',\n },\n});\n\nexport type AlertSimpleVariants = VariantProps<typeof alertSimpleVariants>;\n","import { forwardRef, type ComponentPropsWithoutRef } from 'react';\nimport { cn } from '../../utils';\nimport { alertSimpleVariants, type AlertSimpleVariants } from './AlertSimple.variants';\n\nexport interface AlertSimpleProps\n extends ComponentPropsWithoutRef<'div'>,\n AlertSimpleVariants {}\n\n/**\n * Atomic alert — a styled colored container that takes free-form `children`.\n * No internal slots; consumer composes title/description/actions inline.\n *\n * For the structured Icon + Title + Description + Actions composition use\n * the `Alert` molecule (L4).\n */\nexport const AlertSimple = forwardRef<HTMLDivElement, AlertSimpleProps>(\n ({ className, severity, role = 'status', ...props }, ref) => (\n <div\n ref={ref}\n role={role}\n className={cn(alertSimpleVariants({ severity }), className)}\n {...props}\n />\n ),\n);\nAlertSimple.displayName = 'AlertSimple';\n","import { tv, type VariantProps } from '../../utils';\n\nexport const bannerSimpleVariants = tv({\n base: 'w-full px-6 py-3 text-sm',\n variants: {\n severity: {\n info: 'bg-info text-info-foreground',\n success: 'bg-success text-success-foreground',\n warning: 'bg-warning text-warning-foreground',\n danger: 'bg-destructive text-destructive-foreground',\n neutral: 'bg-inverse text-inverse-foreground',\n },\n },\n defaultVariants: {\n severity: 'info',\n },\n});\n\nexport type BannerSimpleVariants = VariantProps<typeof bannerSimpleVariants>;\n","import { forwardRef, type ComponentPropsWithoutRef } from 'react';\nimport { cn } from '../../utils';\nimport { bannerSimpleVariants, type BannerSimpleVariants } from './BannerSimple.variants';\n\nexport interface BannerSimpleProps\n extends ComponentPropsWithoutRef<'div'>,\n BannerSimpleVariants {}\n\n/**\n * Full-width banner — typically pinned to the top of the app to broadcast\n * status. Atom; for structured slotted layout use `Banner` (L4).\n */\nexport const BannerSimple = forwardRef<HTMLDivElement, BannerSimpleProps>(\n ({ className, severity, role = 'status', ...props }, ref) => (\n <div\n ref={ref}\n role={role}\n className={cn(bannerSimpleVariants({ severity }), className)}\n {...props}\n />\n ),\n);\nBannerSimple.displayName = 'BannerSimple';\n","import { tv, type VariantProps } from '../../utils';\n\nexport const toastSimpleVariants = tv({\n base: 'pointer-events-auto rounded-md border bg-popover text-popover-foreground shadow-lg px-4 py-3 text-sm',\n variants: {\n severity: {\n info: 'border-info-soft',\n success: 'border-success-soft',\n warning: 'border-warning-soft',\n danger: 'border-destructive-soft',\n neutral: 'border-border',\n },\n },\n defaultVariants: {\n severity: 'neutral',\n },\n});\n\nexport type ToastSimpleVariants = VariantProps<typeof toastSimpleVariants>;\n","import { forwardRef, type ComponentPropsWithoutRef } from 'react';\nimport { cn } from '../../utils';\nimport { toastSimpleVariants, type ToastSimpleVariants } from './ToastSimple.variants';\n\nexport interface ToastSimpleProps\n extends ComponentPropsWithoutRef<'div'>,\n ToastSimpleVariants {}\n\n/**\n * Atomic toast — a single notification card with free-form `children`.\n * Visual only; the queue / portal manager (`Toaster`) lives at L5. For\n * the structured Icon + Title + Description + Action layout, use the\n * `Toast` molecule (L4).\n */\nexport const ToastSimple = forwardRef<HTMLDivElement, ToastSimpleProps>(\n ({ className, severity, role = 'status', ...props }, ref) => (\n <div\n ref={ref}\n role={role}\n aria-live=\"polite\"\n className={cn(toastSimpleVariants({ severity }), className)}\n {...props}\n />\n ),\n);\nToastSimple.displayName = 'ToastSimple';\n","import { forwardRef, type HTMLAttributes, type ReactNode } from 'react';\nimport { X } from 'lucide-react';\nimport { cn } from '../../utils';\nimport { Icon } from '../../icons';\nimport { AlertSimple } from '../alertSimple/AlertSimple';\nimport type { AlertSimpleVariants } from '../alertSimple/AlertSimple.variants';\n\nexport interface AlertProps\n extends Omit<HTMLAttributes<HTMLDivElement>, 'title'>,\n AlertSimpleVariants {\n /** Optional leading icon. */\n icon?: ReactNode;\n /** Bold heading line. */\n title?: ReactNode;\n /** Body text below the title. */\n description?: ReactNode;\n /** Right-side action slot (typically Button(s)). */\n actions?: ReactNode;\n /** When provided, renders a close button that calls this. */\n onClose?: () => void;\n /** Accessible label for the close button. Default `\"Dismiss\"`. */\n closeLabel?: string;\n}\n\n/**\n * Slotted Alert — Icon + Title + Description + Actions on top of `AlertSimple`.\n * Pair: `AlertSimple` (atom, free-form children) + `Alert` (this molecule).\n */\nexport const Alert = forwardRef<HTMLDivElement, AlertProps>(\n (\n { icon, title, description, actions, onClose, closeLabel = 'Dismiss', severity, className, ...props },\n ref,\n ) => (\n <AlertSimple\n ref={ref}\n severity={severity}\n className={cn('flex items-start gap-3', className)}\n {...props}\n >\n {icon && <span className=\"mt-0.5 shrink-0\">{icon}</span>}\n <div className=\"min-w-0 flex-1\">\n {title && <div className=\"font-medium\">{title}</div>}\n {description && <div className={cn('text-sm', title && 'mt-0.5 opacity-90')}>{description}</div>}\n {actions && <div className=\"mt-2 flex flex-wrap items-center gap-2\">{actions}</div>}\n </div>\n {onClose && (\n <button\n type=\"button\"\n aria-label={closeLabel}\n onClick={onClose}\n className=\"-mr-1 grid h-6 w-6 shrink-0 place-items-center rounded text-current opacity-60 transition-opacity hover:opacity-100 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-current\"\n >\n <Icon icon={X} size={14} />\n </button>\n )}\n </AlertSimple>\n ),\n);\nAlert.displayName = 'Alert';\n","import { forwardRef, type HTMLAttributes, type ReactNode } from 'react';\nimport { X } from 'lucide-react';\nimport { cn } from '../../utils';\nimport { Icon } from '../../icons';\nimport { BannerSimple } from '../bannerSimple/BannerSimple';\nimport type { BannerSimpleVariants } from '../bannerSimple/BannerSimple.variants';\n\nexport interface BannerProps\n extends Omit<HTMLAttributes<HTMLDivElement>, 'title'>,\n BannerSimpleVariants {\n icon?: ReactNode;\n title?: ReactNode;\n description?: ReactNode;\n actions?: ReactNode;\n onClose?: () => void;\n closeLabel?: string;\n}\n\n/**\n * Slotted full-width banner. Pair with `BannerSimple` (atomic, free-form\n * children) when you don't need the structured slots.\n */\nexport const Banner = forwardRef<HTMLDivElement, BannerProps>(\n (\n { icon, title, description, actions, onClose, closeLabel = 'Dismiss', severity, className, ...props },\n ref,\n ) => (\n <BannerSimple\n ref={ref}\n severity={severity}\n className={cn('flex items-center gap-4', className)}\n {...props}\n >\n {icon && <span className=\"shrink-0\">{icon}</span>}\n <div className=\"flex min-w-0 flex-1 items-baseline gap-3\">\n {title && <span className=\"font-medium\">{title}</span>}\n {description && <span className=\"opacity-90\">{description}</span>}\n </div>\n {actions && <div className=\"flex shrink-0 items-center gap-2\">{actions}</div>}\n {onClose && (\n <button\n type=\"button\"\n aria-label={closeLabel}\n onClick={onClose}\n className=\"-mr-2 grid h-7 w-7 shrink-0 place-items-center rounded text-current opacity-70 transition-opacity hover:opacity-100 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-current\"\n >\n <Icon icon={X} size={16} />\n </button>\n )}\n </BannerSimple>\n ),\n);\nBanner.displayName = 'Banner';\n","import { forwardRef, type HTMLAttributes, type ReactNode } from 'react';\nimport { X } from 'lucide-react';\nimport { cn } from '../../utils';\nimport { Icon } from '../../icons';\nimport { ToastSimple } from '../toastSimple/ToastSimple';\nimport type { ToastSimpleVariants } from '../toastSimple/ToastSimple.variants';\n\nexport interface ToastProps\n extends Omit<HTMLAttributes<HTMLDivElement>, 'title'>,\n ToastSimpleVariants {\n icon?: ReactNode;\n title?: ReactNode;\n description?: ReactNode;\n actions?: ReactNode;\n onClose?: () => void;\n closeLabel?: string;\n}\n\n/**\n * Slotted toast — visual only (no queue / portal / lifecycle, those land\n * with `Toaster` at L5). Pair: `ToastSimple` (atomic) + `Toast` (molecule).\n */\nexport const Toast = forwardRef<HTMLDivElement, ToastProps>(\n (\n { icon, title, description, actions, onClose, closeLabel = 'Dismiss', severity, className, ...props },\n ref,\n ) => (\n <ToastSimple\n ref={ref}\n severity={severity}\n className={cn('flex items-start gap-3', className)}\n {...props}\n >\n {icon && <span className=\"mt-0.5 shrink-0\">{icon}</span>}\n <div className=\"min-w-0 flex-1\">\n {title && <div className=\"font-medium\">{title}</div>}\n {description && (\n <div className={cn('text-sm', title && 'mt-0.5 text-muted-foreground')}>{description}</div>\n )}\n {actions && <div className=\"mt-2 flex flex-wrap items-center gap-2\">{actions}</div>}\n </div>\n {onClose && (\n <button\n type=\"button\"\n aria-label={closeLabel}\n onClick={onClose}\n className=\"-mr-1 grid h-6 w-6 shrink-0 place-items-center rounded text-muted-foreground transition-colors hover:bg-muted hover:text-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring\"\n >\n <Icon icon={X} size={14} />\n </button>\n )}\n </ToastSimple>\n ),\n);\nToast.displayName = 'Toast';\n","import { forwardRef, type HTMLAttributes, type ReactNode } from 'react';\nimport { cn } from '../../utils';\n\nexport interface CalloutProps extends Omit<HTMLAttributes<HTMLDivElement>, 'title'> {\n severity?: 'info' | 'success' | 'warning' | 'danger' | 'neutral';\n icon?: ReactNode;\n title?: ReactNode;\n children?: ReactNode;\n}\n\nconst SEVERITY: Record<NonNullable<CalloutProps['severity']>, string> = {\n info: 'border-l-info text-foreground',\n success: 'border-l-success text-foreground',\n warning: 'border-l-warning text-foreground',\n danger: 'border-l-destructive text-foreground',\n neutral: 'border-l-border text-foreground',\n};\n\n/**\n * Quieter cousin of `Alert` — colored left rule, no fill. Use for inline\n * doc-style notes, supplementary content (think MDX callouts).\n */\nexport const Callout = forwardRef<HTMLDivElement, CalloutProps>(\n ({ severity = 'info', icon, title, children, className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n 'flex items-start gap-3 rounded-md border-l-4 bg-card px-4 py-3 text-sm',\n SEVERITY[severity],\n className,\n )}\n {...props}\n >\n {icon && <span className=\"mt-0.5 shrink-0\">{icon}</span>}\n <div className=\"min-w-0 flex-1\">\n {title && <div className=\"mb-0.5 font-medium\">{title}</div>}\n {children}\n </div>\n </div>\n ),\n);\nCallout.displayName = 'Callout';\n","import { forwardRef, type ComponentPropsWithoutRef, type ReactNode } from 'react';\nimport { cn } from '../../utils';\nimport { Spinner, type SpinnerProps } from '../spinner/Spinner';\n\nexport interface InlineSpinnerProps extends Omit<ComponentPropsWithoutRef<'span'>, 'children'> {\n /** Label rendered next to the spinner. Default `\"Loading…\"`. */\n children?: ReactNode;\n size?: SpinnerProps['size'];\n tone?: SpinnerProps['tone'];\n}\n\n/**\n * Spinner + label inline. Drops cleanly into buttons, list rows, anywhere\n * a \"loading…\" affordance is needed mid-flow.\n */\nexport const InlineSpinner = forwardRef<HTMLSpanElement, InlineSpinnerProps>(\n ({ children = 'Loading…', size = 'sm', tone = 'default', className, ...props }, ref) => (\n <span\n ref={ref}\n className={cn('inline-flex items-center gap-2 text-sm text-muted-foreground', className)}\n {...props}\n >\n <Spinner size={size} tone={tone} />\n {children}\n </span>\n ),\n);\nInlineSpinner.displayName = 'InlineSpinner';\n","import { forwardRef, type ComponentPropsWithoutRef, type ReactNode } from 'react';\nimport { cn } from '../../utils';\nimport { Spinner } from '../spinner/Spinner';\n\nexport interface LoadingStateProps extends Omit<ComponentPropsWithoutRef<'div'>, 'title'> {\n /** Heading copy. Default `\"Loading…\"`. */\n title?: ReactNode;\n /** Body text below the title. */\n description?: ReactNode;\n /** Size of the spinner. Default `lg`. */\n size?: 'sm' | 'md' | 'lg' | 'xl';\n}\n\n/**\n * Centered loading affordance for full sections / pages — Spinner + title +\n * description stacked. Use inline `InlineSpinner` for in-row loading.\n */\nexport const LoadingState = forwardRef<HTMLDivElement, LoadingStateProps>(\n ({ title = 'Loading…', description, size = 'lg', className, ...props }, ref) => (\n <div\n ref={ref}\n role=\"status\"\n className={cn('flex flex-col items-center justify-center gap-3 py-12 text-center', className)}\n {...props}\n >\n <Spinner size={size} tone=\"brand\" />\n {title && <div className=\"text-sm font-medium text-foreground\">{title}</div>}\n {description && <div className=\"text-sm text-muted-foreground\">{description}</div>}\n </div>\n ),\n);\nLoadingState.displayName = 'LoadingState';\n","import { forwardRef, type ComponentPropsWithoutRef } from 'react';\nimport { Check } from 'lucide-react';\nimport { cn } from '../../utils';\nimport { Icon } from '../../icons';\n\nexport interface ProgressStepsProps extends ComponentPropsWithoutRef<'ol'> {\n /** Step labels in order. */\n steps: string[];\n /** Index of the active step (0-based). Steps before are marked complete. */\n current: number;\n /** Layout direction. Default `horizontal`. */\n orientation?: 'horizontal' | 'vertical';\n}\n\n/**\n * Visual N-of-M progress dots / pills with connectors. No state machine —\n * the consumer drives `current`. For full wizard-with-content semantics use\n * the L5 `Stepper` organism.\n */\nexport const ProgressSteps = forwardRef<HTMLOListElement, ProgressStepsProps>(\n ({ steps, current, orientation = 'horizontal', className, ...props }, ref) => (\n <ol\n ref={ref}\n className={cn(\n 'flex',\n orientation === 'horizontal' ? 'flex-row items-center gap-2' : 'flex-col gap-3',\n className,\n )}\n {...props}\n >\n {steps.map((label, i) => {\n const status = i < current ? 'complete' : i === current ? 'current' : 'upcoming';\n return (\n <li\n key={i}\n className={cn(\n 'flex items-center gap-2',\n orientation === 'horizontal' && i < steps.length - 1 && 'flex-1',\n )}\n >\n <span\n className={cn(\n 'grid h-7 w-7 place-items-center rounded-full text-xs font-medium',\n status === 'complete' && 'bg-primary text-primary-foreground',\n status === 'current' && 'border-2 border-primary text-primary',\n status === 'upcoming' && 'border border-border text-muted-foreground',\n )}\n aria-current={status === 'current' ? 'step' : undefined}\n >\n {status === 'complete' ? <Icon icon={Check} size={14} /> : i + 1}\n </span>\n <span\n className={cn(\n 'text-sm',\n status === 'upcoming' ? 'text-muted-foreground' : 'text-foreground',\n )}\n >\n {label}\n </span>\n {orientation === 'horizontal' && i < steps.length - 1 && (\n <span\n className={cn(\n 'h-px flex-1',\n i < current ? 'bg-primary' : 'bg-border',\n )}\n aria-hidden=\"true\"\n />\n )}\n </li>\n );\n })}\n </ol>\n ),\n);\nProgressSteps.displayName = 'ProgressSteps';\n","import { forwardRef, type ComponentPropsWithoutRef, type ReactNode } from 'react';\nimport { cn } from '../../utils';\n\nexport interface StatusIndicatorProps extends Omit<ComponentPropsWithoutRef<'div'>, 'title'> {\n tone?: 'success' | 'warning' | 'destructive' | 'info' | 'neutral';\n /** Bold first-line label (e.g. \"All systems normal\"). */\n label: ReactNode;\n /** Smaller secondary line (e.g. \"Updated 2m ago\"). */\n description?: ReactNode;\n /** Optional pulsing ring for \"live\" indication. */\n pulse?: boolean;\n}\n\nconst TONE: Record<NonNullable<StatusIndicatorProps['tone']>, string> = {\n success: 'bg-success',\n warning: 'bg-warning',\n destructive: 'bg-destructive',\n info: 'bg-info',\n neutral: 'bg-muted-foreground',\n};\n\n/**\n * Two-line status indicator — colored dot + bold label + smaller helper.\n * Use on monitoring / status pages. For an inline single-line indicator use\n * `display/Status`.\n */\nexport const StatusIndicator = forwardRef<HTMLDivElement, StatusIndicatorProps>(\n ({ tone = 'success', label, description, pulse, className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn('flex items-start gap-3', className)}\n {...props}\n >\n <span className=\"relative mt-1 inline-flex\">\n <span className={cn('inline-block h-2.5 w-2.5 rounded-full', TONE[tone])} />\n {pulse && (\n <span\n className={cn(\n 'absolute inset-0 inline-block rounded-full opacity-75 animate-ping',\n TONE[tone],\n )}\n />\n )}\n </span>\n <div className=\"min-w-0 flex-1\">\n <div className=\"text-sm font-medium text-foreground\">{label}</div>\n {description && <div className=\"text-xs text-muted-foreground\">{description}</div>}\n </div>\n </div>\n ),\n);\nStatusIndicator.displayName = 'StatusIndicator';\n","import { forwardRef, type ComponentPropsWithoutRef } from 'react';\nimport { cn } from '../../utils';\n\nexport interface MeterBarProps extends Omit<ComponentPropsWithoutRef<'div'>, 'children'> {\n /** Current value 0–`max`. */\n value: number;\n max?: number;\n /** Threshold values that change the fill tone. Pass `[good, warn]` —\n * `value <= good` → success, `<= warn` → warning, otherwise destructive.\n * Defaults: `[max * 0.7, max * 0.9]`. */\n thresholds?: [number, number];\n size?: 'sm' | 'md' | 'lg';\n label?: string;\n}\n\nconst SIZE: Record<NonNullable<MeterBarProps['size']>, string> = {\n sm: 'h-1',\n md: 'h-2',\n lg: 'h-3',\n};\n\n/**\n * Like `ProgressBar` but the fill color reflects threshold zones — green /\n * amber / red. Use for usage gauges, capacity, score meters.\n */\nexport const MeterBar = forwardRef<HTMLDivElement, MeterBarProps>(\n ({ value, max = 100, thresholds, size = 'md', label, className, ...props }, ref) => {\n const [good, warn] = thresholds ?? [max * 0.7, max * 0.9];\n const tone =\n value <= good ? 'bg-success' : value <= warn ? 'bg-warning' : 'bg-destructive';\n const pct = Math.min(100, Math.max(0, (value / max) * 100));\n return (\n <div\n ref={ref}\n role=\"meter\"\n aria-label={label}\n aria-valuemin={0}\n aria-valuemax={max}\n aria-valuenow={value}\n className={cn('w-full overflow-hidden rounded-full bg-muted', SIZE[size], className)}\n {...props}\n >\n <div\n className={cn('h-full rounded-full transition-[width] duration-300', tone)}\n style={{ width: `${pct}%` }}\n />\n </div>\n );\n },\n);\nMeterBar.displayName = 'MeterBar';\n","import { forwardRef, type ComponentPropsWithoutRef, type ReactNode } from 'react';\nimport { Minus, TrendingDown, TrendingUp } from 'lucide-react';\nimport { cn } from '../../utils';\nimport { Icon } from '../../icons';\n\nexport interface TrendIndicatorProps extends Omit<ComponentPropsWithoutRef<'span'>, 'children'> {\n /** Numeric delta — sign drives direction. */\n value: number;\n /** Optional formatter (default: `${sign}${value}%`). */\n format?: (value: number) => ReactNode;\n /** When `true`, an increase reads as bad (e.g. error rate, churn). */\n inverse?: boolean;\n /** Small trailing label, e.g. \"vs last week\". */\n label?: ReactNode;\n size?: 'xs' | 'sm' | 'md';\n}\n\nconst SIZE_TEXT: Record<NonNullable<TrendIndicatorProps['size']>, string> = {\n xs: 'text-xs',\n sm: 'text-sm',\n md: 'text-base',\n};\nconst SIZE_ICON: Record<NonNullable<TrendIndicatorProps['size']>, number> = {\n xs: 12,\n sm: 14,\n md: 16,\n};\n\n/**\n * Up / down / flat arrow + value + optional label. Used inside `Stat` and\n * dashboard tiles. Pass `inverse` for metrics where higher is worse.\n */\nexport const TrendIndicator = forwardRef<HTMLSpanElement, TrendIndicatorProps>(\n ({ value, format, inverse, label, size = 'sm', className, ...props }, ref) => {\n const direction = value > 0 ? 'up' : value < 0 ? 'down' : 'flat';\n const positive =\n direction === 'flat' ? false : (direction === 'up') !== Boolean(inverse);\n const tone =\n direction === 'flat' ? 'text-muted-foreground' : positive ? 'text-success' : 'text-destructive';\n const arrow = direction === 'up' ? TrendingUp : direction === 'down' ? TrendingDown : Minus;\n const display = format ? format(value) : `${value > 0 ? '+' : ''}${value}%`;\n return (\n <span\n ref={ref}\n className={cn('inline-flex items-center gap-1 font-medium', SIZE_TEXT[size], tone, className)}\n {...props}\n >\n <Icon icon={arrow} size={SIZE_ICON[size]} />\n {display}\n {label && <span className=\"text-muted-foreground\"> {label}</span>}\n </span>\n );\n },\n);\nTrendIndicator.displayName = 'TrendIndicator';\n"]}
@@ -1,6 +1,6 @@
1
- import { useFormControl, FormControlProvider } from './chunk-Q27NAHVB.js';
2
- import { useScrollLock } from './chunk-77WSI427.js';
1
+ import { useFormControl, FormControlProvider } from './chunk-WEM32VIJ.js';
3
2
  import { Slot } from './chunk-33IOXQYO.js';
3
+ import { useScrollLock } from './chunk-KDXJQNB6.js';
4
4
  import { composeRefs } from './chunk-DN7WBRIV.js';
5
5
  import { cn } from './chunk-KZ4VFY2T.js';
6
6
  import { __export } from './chunk-PZ5AY32C.js';
@@ -264,5 +264,5 @@ function ScrollLockProvider({ enabled = true, children }) {
264
264
  }
265
265
 
266
266
  export { AccessibleIcon, AnchoredPositioner, DirectionProvider, DismissableLayer, FocusScope, Portal, Presence, RovingFocusGroup, ScrollLockProvider, VisuallyHidden, createCollection, primitives_exports, useDirection, useRovingFocusItem };
267
- //# sourceMappingURL=chunk-JCMV6IT4.js.map
268
- //# sourceMappingURL=chunk-JCMV6IT4.js.map
267
+ //# sourceMappingURL=chunk-SL5YJADS.js.map
268
+ //# sourceMappingURL=chunk-SL5YJADS.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/primitives/index.ts","../src/primitives/portal/Portal.tsx","../src/primitives/visuallyHidden/VisuallyHidden.tsx","../src/primitives/presence/Presence.tsx","../src/primitives/directionProvider/DirectionProvider.tsx","../src/primitives/accessibleIcon/AccessibleIcon.tsx","../src/primitives/focusScope/FocusScope.tsx","../src/primitives/dismissableLayer/DismissableLayer.tsx","../src/primitives/anchoredPositioner/AnchoredPositioner.tsx","../src/primitives/rovingFocusGroup/RovingFocusGroup.tsx","../src/primitives/collection/Collection.tsx","../src/primitives/scrollLockProvider/ScrollLockProvider.tsx"],"names":["jsx","isValidElement","cloneElement","RadixFocusScope","forwardRef","useRef","useEffect","offset","offsetMiddleware","createContext","useState","useContext","useCallback","useMemo","Fragment"],"mappings":";;;;;;;;;;;;;AAAA,IAAA,kBAAA,GAAA;AAAA,QAAA,CAAA,kBAAA,EAAA;AAAA,EAAA,cAAA,EAAA,MAAA,cAAA;AAAA,EAAA,kBAAA,EAAA,MAAA,kBAAA;AAAA,EAAA,iBAAA,EAAA,MAAA,iBAAA;AAAA,EAAA,gBAAA,EAAA,MAAA,gBAAA;AAAA,EAAA,UAAA,EAAA,MAAA,UAAA;AAAA,EAAA,mBAAA,EAAA,MAAA,mBAAA;AAAA,EAAA,MAAA,EAAA,MAAA,MAAA;AAAA,EAAA,QAAA,EAAA,MAAA,QAAA;AAAA,EAAA,gBAAA,EAAA,MAAA,gBAAA;AAAA,EAAA,kBAAA,EAAA,MAAA,kBAAA;AAAA,EAAA,IAAA,EAAA,MAAA,IAAA;AAAA,EAAA,cAAA,EAAA,MAAA,cAAA;AAAA,EAAA,gBAAA,EAAA,MAAA,gBAAA;AAAA,EAAA,YAAA,EAAA,MAAA,YAAA;AAAA,EAAA,cAAA,EAAA,MAAA,cAAA;AAAA,EAAA,kBAAA,EAAA,MAAA;AAAA,CAAA,CAAA;ACeO,SAAS,MAAA,CAAO,EAAE,QAAA,EAAU,SAAA,EAAW,MAAK,EAA2B;AAC5E,EAAA,MAAM,MAAA,GAAS,aAAa,QAAA,CAAS,IAAA;AACrC,EAAA,OAAO,6BAAa,GAAA,CAAC,KAAA,EAAA,EAAI,oBAAkB,IAAA,EAAO,QAAA,EAAS,GAAQ,MAAM,CAAA;AAC3E;ACRO,IAAM,cAAA,GAAiB,UAAA;AAAA,EAC5B,CAAC,EAAE,SAAA,EAAW,GAAG,KAAA,EAAM,EAAG,wBACxBA,GAAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACT,mEAAA;AAAA,QACA,sDAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA;AAGV;AACA,cAAA,CAAe,WAAA,GAAc,gBAAA;ACAtB,SAAS,QAAA,CAAS,EAAE,OAAA,EAAS,QAAA,EAAS,EAAuC;AAClF,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAI,SAAS,OAAO,CAAA;AAChD,EAAA,MAAM,GAAA,GAAM,OAA2B,IAAI,CAAA;AAE3C,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,OAAA,EAAS;AACX,MAAA,WAAA,CAAY,IAAI,CAAA;AAChB,MAAA;AAAA,IACF;AACA,IAAA,MAAM,OAAO,GAAA,CAAI,OAAA;AACjB,IAAA,IAAI,CAAC,IAAA,EAAM;AACT,MAAA,WAAA,CAAY,KAAK,CAAA;AACjB,MAAA;AAAA,IACF;AACA,IAAA,MAAM,EAAA,GAAK,iBAAiB,IAAI,CAAA;AAChC,IAAA,MAAM,OAAA,GAAU,EAAA,CAAG,aAAA,KAAkB,MAAA,IAAU,GAAG,iBAAA,KAAsB,IAAA;AACxE,IAAA,MAAM,QAAA,GAAW,GAAG,kBAAA,KAAuB,IAAA;AAC3C,IAAA,IAAI,CAAC,OAAA,IAAW,CAAC,QAAA,EAAU;AACzB,MAAA,WAAA,CAAY,KAAK,CAAA;AACjB,MAAA;AAAA,IACF;AACA,IAAA,MAAM,KAAA,GAAQ,MAAM,WAAA,CAAY,KAAK,CAAA;AACrC,IAAA,IAAA,CAAK,gBAAA,CAAiB,gBAAgB,KAAK,CAAA;AAC3C,IAAA,IAAA,CAAK,gBAAA,CAAiB,iBAAiB,KAAK,CAAA;AAC5C,IAAA,OAAO,MAAM;AACX,MAAA,IAAA,CAAK,mBAAA,CAAoB,gBAAgB,KAAK,CAAA;AAC9C,MAAA,IAAA,CAAK,mBAAA,CAAoB,iBAAiB,KAAK,CAAA;AAAA,IACjD,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,OAAO,CAAC,CAAA;AAEZ,EAAA,IAAI,CAAC,QAAA,IAAY,CAAC,cAAA,CAAe,QAAQ,GAAG,OAAO,IAAA;AACnD,EAAA,MAAM,KAAA,GAAQ,QAAA;AACd,EAAA,OAAO,aAAa,KAAA,EAAO;AAAA,IACzB,GAAA,EAAK,WAAA,CAAY,GAAA,EAAK,KAAA,CAAM,GAAG,CAAA;AAAA,IAC/B,YAAA,EAAc,UAAU,MAAA,GAAS;AAAA,GACH,CAAA;AAClC;ACvDA,IAAM,gBAAA,GAAmB,cAAyB,KAAK,CAAA;AAWhD,SAAS,iBAAA,CAAkB,EAAE,GAAA,EAAK,QAAA,EAAS,EAA2B;AAC3E,EAAA,uBAAOA,GAAAA,CAAC,gBAAA,CAAiB,UAAjB,EAA0B,KAAA,EAAO,KAAM,QAAA,EAAS,CAAA;AAC1D;AAEO,SAAS,YAAA,GAA0B;AACxC,EAAA,OAAO,WAAW,gBAAgB,CAAA;AACpC;ACPO,SAAS,cAAA,CAAe,EAAE,KAAA,EAAO,QAAA,EAAS,EAAwB;AACvE,EAAA,MAAM,IAAA,GAAOC,cAAAA,CAAe,QAAQ,CAAA,GAChCC,aAAa,QAAA,EAAoF;AAAA,IAC/F,aAAA,EAAe,MAAA;AAAA,IACf,SAAA,EAAW;AAAA,GACZ,CAAA,GACD,QAAA;AACJ,EAAA,uBACE,IAAA,CAAA,QAAA,EAAA,EACG,QAAA,EAAA;AAAA,IAAA,IAAA;AAAA,oBACDF,GAAAA,CAAC,cAAA,EAAA,EAAgB,QAAA,EAAA,KAAA,EAAM;AAAA,GAAA,EACzB,CAAA;AAEJ;AChBO,IAAM,UAAA,GAAaG;ACG1B,IAAM,aAA2B,EAAC;AAkB3B,IAAM,gBAAA,GAAmBC,UAAAA;AAAA,EAC9B,CACE,EAAE,QAAA,EAAU,oBAAA,EAAsB,eAAe,mBAAA,EAAqB,GAAG,KAAA,EAAM,EAC/E,YAAA,KACG;AACH,IAAA,MAAM,GAAA,GAAMC,OAA8B,IAAI,CAAA;AAE9C,IAAAC,UAAU,MAAM;AACd,MAAA,MAAM,OAAO,GAAA,CAAI,OAAA;AACjB,MAAA,IAAI,CAAC,IAAA,EAAM;AACX,MAAA,MAAM,KAAA,GAAoB,EAAE,IAAA,EAAM,QAAA,EAAU,oBAAA,EAAqB;AACjE,MAAA,UAAA,CAAW,KAAK,KAAK,CAAA;AACrB,MAAA,OAAO,MAAM;AACX,QAAA,MAAM,GAAA,GAAM,UAAA,CAAW,OAAA,CAAQ,KAAK,CAAA;AACpC,QAAA,IAAI,GAAA,IAAO,CAAA,EAAG,UAAA,CAAW,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,MACxC,CAAA;AAAA,IACF,CAAA,EAAG,CAAC,QAAA,EAAU,oBAAoB,CAAC,CAAA;AAEnC,IAAAA,UAAU,MAAM;AACd,MAAA,IAAI,aAAA,EAAe;AACnB,MAAA,MAAM,SAAA,GAAY,CAAC,CAAA,KAAqB;AACtC,QAAA,IAAI,CAAA,CAAE,QAAQ,QAAA,EAAU;AACxB,QAAA,MAAM,GAAA,GAAM,UAAA,CAAW,UAAA,CAAW,MAAA,GAAS,CAAC,CAAA;AAC5C,QAAA,IAAI,OAAO,GAAA,CAAI,IAAA,KAAS,IAAI,OAAA,EAAS,GAAA,CAAI,WAAW,CAAC,CAAA;AAAA,MACvD,CAAA;AACA,MAAA,QAAA,CAAS,gBAAA,CAAiB,WAAW,SAAS,CAAA;AAC9C,MAAA,OAAO,MAAM,QAAA,CAAS,mBAAA,CAAoB,SAAA,EAAW,SAAS,CAAA;AAAA,IAChE,CAAA,EAAG,CAAC,aAAa,CAAC,CAAA;AAElB,IAAAA,UAAU,MAAM;AACd,MAAA,IAAI,mBAAA,EAAqB;AACzB,MAAA,MAAM,SAAA,GAAY,CAAC,CAAA,KAAoB;AACrC,QAAA,MAAM,GAAA,GAAM,UAAA,CAAW,UAAA,CAAW,MAAA,GAAS,CAAC,CAAA;AAC5C,QAAA,IAAI,CAAC,GAAA,IAAO,GAAA,CAAI,IAAA,KAAS,IAAI,OAAA,EAAS;AACtC,QAAA,MAAM,SAAS,CAAA,CAAE,MAAA;AACjB,QAAA,IAAI,CAAC,MAAA,IAAU,GAAA,CAAI,OAAA,EAAS,QAAA,CAAS,MAAM,CAAA,EAAG;AAC9C,QAAA,GAAA,CAAI,uBAAuB,CAAC,CAAA;AAAA,MAC9B,CAAA;AACA,MAAA,QAAA,CAAS,gBAAA,CAAiB,aAAA,EAAe,SAAA,EAAW,IAAI,CAAA;AACxD,MAAA,OAAO,MAAM,QAAA,CAAS,mBAAA,CAAoB,aAAA,EAAe,WAAW,IAAI,CAAA;AAAA,IAC1E,CAAA,EAAG,CAAC,mBAAmB,CAAC,CAAA;AAExB,IAAA,uBAAON,IAAC,KAAA,EAAA,EAAI,GAAA,EAAK,YAAY,YAAA,EAAc,GAAG,CAAA,EAAI,GAAG,KAAA,EAAO,CAAA;AAAA,EAC9D;AACF;AACA,gBAAA,CAAiB,WAAA,GAAc,kBAAA;ACjDxB,IAAM,kBAAA,GAAqBI,UAAAA;AAAA,EAChC,CACE,EAAE,MAAA,EAAQ,SAAA,GAAY,kBAAUG,QAAA,GAAS,CAAA,EAAG,IAAA,GAAO,IAAA,EAAM,QAAA,EAAU,KAAA,EAAO,GAAG,KAAA,IAC7E,YAAA,KACG;AACH,IAAA,MAAM,EAAE,IAAA,EAAM,cAAA,EAAe,GAAI,WAAA,CAAY;AAAA,MAC3C,IAAA;AAAA,MACA,SAAA;AAAA,MACA,UAAA,EAAY,CAACC,MAAA,CAAiBD,QAAM,CAAA,EAAG,IAAA,EAAK,EAAG,KAAA,CAAM,EAAE,OAAA,EAAS,CAAA,EAAG,CAAC,CAAA;AAAA,MACpE,oBAAA,EAAsB,UAAA;AAAA,MACtB,QAAA,EAAU,EAAE,SAAA,EAAW,MAAA;AAAO,KAC/B,CAAA;AAED,IAAA,IAAI,CAAC,MAAM,OAAO,IAAA;AAElB,IAAA,uBACEP,GAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA,EAAK,WAAA,CAAY,YAAA,EAAc,IAAA,CAAK,WAAW,CAAA;AAAA,QAC/C,KAAA,EAAO,EAAE,GAAG,cAAA,EAAgB,GAAG,KAAA,EAAM;AAAA,QACpC,GAAG,KAAA;AAAA,QAEH;AAAA;AAAA,KACH;AAAA,EAEJ;AACF;AACA,kBAAA,CAAmB,WAAA,GAAc,oBAAA;AC9BjC,IAAM,kBAAA,GAAqBS,cAA8C,IAAI,CAAA;AAatE,SAAS,gBAAA,CAAiB;AAAA,EAC/B,WAAA,GAAc,YAAA;AAAA,EACd,IAAA,GAAO,IAAA;AAAA,EACP,QAAA;AAAA,EACA,GAAG;AACL,CAAA,EAA0B;AACxB,EAAA,MAAM,KAAA,GAAQJ,MAAAA,CAAiB,EAAE,CAAA;AACjC,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIK,SAAwB,IAAI,CAAA;AAE9D,EAAA,MAAM,QAAA,GAAW,WAAA,CAAY,CAAC,EAAA,KAAe;AAC3C,IAAA,IAAI,CAAC,MAAM,OAAA,CAAQ,QAAA,CAAS,EAAE,CAAA,EAAG,KAAA,CAAM,OAAA,CAAQ,IAAA,CAAK,EAAE,CAAA;AACtD,IAAA,YAAA,CAAa,CAAC,OAAA,KAAY,OAAA,IAAW,EAAE,CAAA;AAAA,EACzC,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,UAAA,GAAa,WAAA,CAAY,CAAC,EAAA,KAAe;AAC7C,IAAA,KAAA,CAAM,UAAU,KAAA,CAAM,OAAA,CAAQ,OAAO,CAAC,CAAA,KAAM,MAAM,EAAE,CAAA;AAAA,EACtD,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,aAAA,GAAgB,WAAA;AAAA,IACpB,CAAC,OAAsB,EAAA,KAAe;AACpC,MAAA,MAAM,OAAO,KAAA,CAAM,OAAA;AACnB,MAAA,MAAM,GAAA,GAAM,IAAA,CAAK,OAAA,CAAQ,EAAE,CAAA;AAC3B,MAAA,IAAI,QAAQ,EAAA,EAAI;AAChB,MAAA,MAAM,MAAA,GAAS,WAAA,KAAgB,UAAA,IAAc,WAAA,KAAgB,MAAA;AAC7D,MAAA,MAAM,OAAA,GAAU,WAAA,KAAgB,YAAA,IAAgB,WAAA,KAAgB,MAAA;AAChE,MAAA,IAAI,IAAA,GAAO,GAAA;AACX,MAAA,IAAK,MAAM,GAAA,KAAQ,YAAA,IAAgB,WAAa,KAAA,CAAM,GAAA,KAAQ,eAAe,MAAA,EAAS;AACpF,QAAA,IAAA,GAAO,GAAA,GAAM,CAAA;AACb,QAAA,IAAI,QAAQ,IAAA,CAAK,MAAA,SAAe,IAAA,GAAO,CAAA,GAAI,KAAK,MAAA,GAAS,CAAA;AAAA,MAC3D,CAAA,MAAA,IAAY,MAAM,GAAA,KAAQ,WAAA,IAAe,WAAa,KAAA,CAAM,GAAA,KAAQ,aAAa,MAAA,EAAS;AACxF,QAAA,IAAA,GAAO,GAAA,GAAM,CAAA;AACb,QAAA,IAAI,OAAO,CAAA,EAAG,IAAA,GAAO,IAAA,GAAO,IAAA,CAAK,SAAS,CAAA,GAAI,CAAA;AAAA,MAChD,CAAA,MAAA,IAAW,KAAA,CAAM,GAAA,KAAQ,MAAA,EAAQ;AAC/B,QAAA,IAAA,GAAO,CAAA;AAAA,MACT,CAAA,MAAA,IAAW,KAAA,CAAM,GAAA,KAAQ,KAAA,EAAO;AAC9B,QAAA,IAAA,GAAO,KAAK,MAAA,GAAS,CAAA;AAAA,MACvB,CAAA,MAAO;AACL,QAAA;AAAA,MACF;AACA,MAAA,KAAA,CAAM,cAAA,EAAe;AACrB,MAAA,MAAM,GAAA,GAAM,KAAK,IAAI,CAAA;AACrB,MAAA,IAAI,GAAA,eAAkB,GAAG,CAAA;AAAA,IAC3B,CAAA;AAAA,IACA,CAAC,aAAa,IAAI;AAAA,GACpB;AAEA,EAAA,MAAM,KAAA,GAAQ,OAAA;AAAA,IACZ,OAAO,EAAE,QAAA,EAAU,UAAA,EAAY,SAAA,EAAW,cAAc,aAAA,EAAc,CAAA;AAAA,IACtE,CAAC,QAAA,EAAU,UAAA,EAAY,SAAA,EAAW,aAAa;AAAA,GACjD;AAEA,EAAA,uBACEV,GAAAA,CAAC,kBAAA,CAAmB,QAAA,EAAnB,EAA4B,KAAA,EAC3B,QAAA,kBAAAA,GAAAA,CAAC,KAAA,EAAA,EAAI,IAAA,EAAK,OAAA,EAAS,GAAG,KAAA,EACnB,UACH,CAAA,EACF,CAAA;AAEJ;AAcO,SAAS,kBAAA,GAA+C;AAC7D,EAAA,MAAM,OAAA,GAAUW,WAAW,kBAAkB,CAAA;AAC7C,EAAA,MAAM,KAAK,KAAA,EAAM;AACjB,EAAA,MAAM,GAAA,GAAMN,OAA2B,IAAI,CAAA;AAE3C,EAAAC,UAAU,MAAM;AACd,IAAA,OAAA,EAAS,SAAS,EAAE,CAAA;AACpB,IAAA,OAAO,MAAM,OAAA,EAAS,UAAA,CAAW,EAAE,CAAA;AAAA,EACrC,CAAA,EAAG,CAAC,OAAA,EAAS,EAAE,CAAC,CAAA;AAEhB,EAAAA,UAAU,MAAM;AACd,IAAA,IAAI,OAAA,EAAS,cAAc,EAAA,IAAM,GAAA,CAAI,WAAW,QAAA,CAAS,aAAA,KAAkB,IAAI,OAAA,EAAS;AACtF,MAAA,GAAA,CAAI,QAAQ,KAAA,EAAM;AAAA,IACpB;AAAA,EACF,CAAA,EAAG,CAAC,OAAA,EAAS,SAAA,EAAW,EAAE,CAAC,CAAA;AAE3B,EAAA,OAAO;AAAA,IACL,GAAA,EAAK,CAAC,IAAA,KAAS;AACb,MAAA,GAAA,CAAI,OAAA,GAAU,IAAA;AAAA,IAChB,CAAA;AAAA,IACA,UAAU,CAAC,OAAA,IAAW,OAAA,CAAQ,SAAA,KAAc,KAAK,CAAA,GAAI,EAAA;AAAA,IACrD,WAAW,CAAC,CAAA,KAAM,OAAA,EAAS,aAAA,CAAc,GAAG,EAAE,CAAA;AAAA,IAC9C,OAAA,EAAS,MAAM,OAAA,EAAS,YAAA,CAAa,EAAE,CAAA;AAAA,IACvC,wBAAA,EAA0B;AAAA,GAC5B;AACF;ACjHO,SAAS,gBAAA,GAId;AACA,EAAA,MAAM,iBAAA,GAAoBG,cAAgD,IAAI,CAAA;AAE9E,EAAA,SAAS,QAAA,CAAS,EAAE,QAAA,EAAS,EAA4B;AACvD,IAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIC,QAAAA,CAAc,EAAE,CAAA;AAC1C,IAAA,MAAM,QAAA,GAAWE,WAAAA,CAAY,CAAC,IAAA,KAAY;AACxC,MAAA,QAAA,CAAS,CAAC,IAAA,KAAU,IAAA,CAAK,QAAA,CAAS,IAAI,CAAA,GAAI,IAAA,GAAO,CAAC,GAAG,IAAA,EAAM,IAAI,CAAE,CAAA;AAAA,IACnE,CAAA,EAAG,EAAE,CAAA;AACL,IAAA,MAAM,UAAA,GAAaA,WAAAA,CAAY,CAAC,IAAA,KAAY;AAC1C,MAAA,QAAA,CAAS,CAAC,SAAS,IAAA,CAAK,MAAA,CAAO,CAAC,CAAA,KAAM,CAAA,KAAM,IAAI,CAAC,CAAA;AAAA,IACnD,CAAA,EAAG,EAAE,CAAA;AACL,IAAA,MAAM,KAAA,GAAQC,OAAAA,CAAQ,OAAO,EAAE,KAAA,EAAO,QAAA,EAAU,UAAA,EAAW,CAAA,EAAI,CAAC,KAAA,EAAO,QAAA,EAAU,UAAU,CAAC,CAAA;AAC5F,IAAA,uBAAOb,GAAAA,CAAC,iBAAA,CAAkB,QAAA,EAAlB,EAA2B,OAAe,QAAA,EAAS,CAAA;AAAA,EAC7D;AAEA,EAAA,SAAS,aAAA,GAA2C;AAClD,IAAA,MAAM,GAAA,GAAMW,WAAW,iBAAiB,CAAA;AACxC,IAAA,IAAI,CAAC,GAAA,EAAK;AACR,MAAA,MAAM,IAAI,MAAM,gDAAgD,CAAA;AAAA,IAClE;AACA,IAAA,OAAO,GAAA;AAAA,EACT;AAEA,EAAA,OAAO,EAAE,QAAA,EAAU,aAAA,EAAe,OAAA,EAAS,iBAAA,EAAkB;AAC/D;ACpCO,SAAS,kBAAA,CAAmB,EAAE,OAAA,GAAU,IAAA,EAAM,UAAS,EAA4B;AACxF,EAAA,aAAA,CAAc,OAAO,CAAA;AACrB,EAAA,uBAAOX,GAAAA,CAAAc,QAAAA,EAAA,EAAG,QAAA,EAAS,CAAA;AACrB","file":"chunk-JCMV6IT4.js","sourcesContent":["// L2 — headless primitives. Behavior + a11y, no visual styling beyond layout.\n// Foundation layer; cannot import upward (enforced by ESLint boundaries).\n\nexport * from './slot';\nexport * from './portal';\nexport * from './visuallyHidden';\nexport * from './presence';\nexport * from './directionProvider';\nexport * from './accessibleIcon';\nexport * from './focusScope';\nexport * from './dismissableLayer';\nexport * from './anchoredPositioner';\nexport * from './rovingFocusGroup';\nexport * from './collection';\nexport * from './formControlContext';\nexport * from './scrollLockProvider';\n","import { type ReactNode } from 'react';\nimport { createPortal } from 'react-dom';\n\nexport interface PortalProps {\n children: ReactNode;\n /** Container to render into. Default: `document.body`. */\n container?: HTMLElement | null;\n /** Optional named layer — sets `data-portal-name` on the wrapper. */\n name?: string;\n}\n\n/**\n * Render children into a different DOM node (default `document.body`).\n * Client-only — package targets pure CSR consumers.\n */\nexport function Portal({ children, container, name }: PortalProps): ReactNode {\n const target = container ?? document.body;\n return createPortal(<div data-portal-name={name}>{children}</div>, target);\n}\n","import { forwardRef, type HTMLAttributes } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport type VisuallyHiddenProps = HTMLAttributes<HTMLSpanElement>;\n\n/**\n * Visually hidden span — content removed from the visual layout but still\n * announced to screen readers. Use for accessible labels on icon-only\n * affordances and live-region announcements.\n */\nexport const VisuallyHidden = forwardRef<HTMLSpanElement, VisuallyHiddenProps>(\n ({ className, ...props }, ref) => (\n <span\n ref={ref}\n className={cn(\n 'absolute h-px w-px overflow-hidden whitespace-nowrap border-0 p-0',\n 'm-[-1px] [clip:rect(0_0_0_0)] [clip-path:inset(50%)]',\n className,\n )}\n {...props}\n />\n ),\n);\nVisuallyHidden.displayName = 'VisuallyHidden';\n","import {\n cloneElement,\n isValidElement,\n useEffect,\n useRef,\n useState,\n type ReactElement,\n type Ref,\n} from 'react';\nimport { composeRefs } from '../../utils/composeRefs';\n\nexport interface PresenceProps {\n /** Whether the content should be present. Toggle false to trigger exit. */\n present: boolean;\n /** Single React element child — receives `ref` and `data-state` (\"open\" | \"closed\"). */\n children: ReactElement;\n}\n\n/**\n * Defer unmount until the child's exit animation/transition finishes.\n * Pass `present={false}` to start the exit; the child stays mounted with\n * `data-state=\"closed\"` until `animationend`/`transitionend` fires.\n */\nexport function Presence({ present, children }: PresenceProps): ReactElement | null {\n const [rendered, setRendered] = useState(present);\n const ref = useRef<HTMLElement | null>(null);\n\n useEffect(() => {\n if (present) {\n setRendered(true);\n return;\n }\n const node = ref.current;\n if (!node) {\n setRendered(false);\n return;\n }\n const cs = getComputedStyle(node);\n const hasAnim = cs.animationName !== 'none' && cs.animationDuration !== '0s';\n const hasTrans = cs.transitionDuration !== '0s';\n if (!hasAnim && !hasTrans) {\n setRendered(false);\n return;\n }\n const onEnd = () => setRendered(false);\n node.addEventListener('animationend', onEnd);\n node.addEventListener('transitionend', onEnd);\n return () => {\n node.removeEventListener('animationend', onEnd);\n node.removeEventListener('transitionend', onEnd);\n };\n }, [present]);\n\n if (!rendered || !isValidElement(children)) return null;\n const child = children as ReactElement<{ ref?: Ref<HTMLElement> }> & { ref?: Ref<HTMLElement> };\n return cloneElement(child, {\n ref: composeRefs(ref, child.ref),\n 'data-state': present ? 'open' : 'closed',\n } as Partial<typeof child.props>);\n}\n","import { createContext, useContext, type ReactNode } from 'react';\n\nexport type Direction = 'ltr' | 'rtl';\n\nconst DirectionContext = createContext<Direction>('ltr');\n\nexport interface DirectionProviderProps {\n dir: Direction;\n children: ReactNode;\n}\n\n/**\n * Provide reading direction to descendants. Components that mirror in RTL\n * (Tabs arrow keys, Slider, Carousel, etc.) read this via `useDirection()`.\n */\nexport function DirectionProvider({ dir, children }: DirectionProviderProps) {\n return <DirectionContext.Provider value={dir}>{children}</DirectionContext.Provider>;\n}\n\nexport function useDirection(): Direction {\n return useContext(DirectionContext);\n}\n","import { cloneElement, isValidElement, type ReactElement } from 'react';\nimport { VisuallyHidden } from '../visuallyHidden/VisuallyHidden';\n\nexport interface AccessibleIconProps {\n /** Required accessible label for the icon. */\n label: string;\n /** Single icon element — will receive `aria-hidden` so SR reads only the label. */\n children: ReactElement;\n}\n\n/**\n * Wrap an icon-only element with an accessible label. The icon is hidden\n * from assistive tech and a `VisuallyHidden` sibling provides the label.\n */\nexport function AccessibleIcon({ label, children }: AccessibleIconProps) {\n const icon = isValidElement(children)\n ? cloneElement(children as ReactElement<{ 'aria-hidden'?: boolean | string; focusable?: string }>, {\n 'aria-hidden': 'true',\n focusable: 'false',\n })\n : children;\n return (\n <>\n {icon}\n <VisuallyHidden>{label}</VisuallyHidden>\n </>\n );\n}\n","import { FocusScope as RadixFocusScope } from '@radix-ui/react-focus-scope';\n\nexport type FocusScopeProps = React.ComponentProps<typeof RadixFocusScope>;\n\n/**\n * Trap focus within children. On unmount, returns focus to the previously\n * focused element. Pass `loop` to wrap Tab navigation; `trapped` to enable\n * the trap (default true while mounted).\n *\n * Wraps `@radix-ui/react-focus-scope` — battle-tested implementation.\n */\nexport const FocusScope = RadixFocusScope;\n","import {\n forwardRef,\n useEffect,\n useRef,\n type HTMLAttributes,\n} from 'react';\nimport { composeRefs } from '../../utils/composeRefs';\n\ninterface LayerEntry {\n node: HTMLElement;\n onEscape?: (event: KeyboardEvent) => void;\n onOutsidePointerDown?: (event: PointerEvent) => void;\n}\n\nconst layerStack: LayerEntry[] = [];\n\nexport interface DismissableLayerProps extends HTMLAttributes<HTMLDivElement> {\n /** Called when Escape is pressed and this is the topmost layer. */\n onEscape?: (event: KeyboardEvent) => void;\n /** Called when a pointerdown lands outside this layer's DOM and this is topmost. */\n onOutsidePointerDown?: (event: PointerEvent) => void;\n /** Disable the Escape listener for this layer. */\n disableEscape?: boolean;\n /** Disable the outside-pointer-down listener for this layer. */\n disableOutsideClick?: boolean;\n}\n\n/**\n * Stack-aware dismissal layer. Multiple layers may stack (modal > popover);\n * only the topmost reacts to Escape / outside click. Used as the base of\n * Modal, Drawer, Popover, Menu, HoverCard, ContextMenu.\n */\nexport const DismissableLayer = forwardRef<HTMLDivElement, DismissableLayerProps>(\n (\n { onEscape, onOutsidePointerDown, disableEscape, disableOutsideClick, ...props },\n forwardedRef,\n ) => {\n const ref = useRef<HTMLDivElement | null>(null);\n\n useEffect(() => {\n const node = ref.current;\n if (!node) return;\n const entry: LayerEntry = { node, onEscape, onOutsidePointerDown };\n layerStack.push(entry);\n return () => {\n const idx = layerStack.indexOf(entry);\n if (idx >= 0) layerStack.splice(idx, 1);\n };\n }, [onEscape, onOutsidePointerDown]);\n\n useEffect(() => {\n if (disableEscape) return;\n const onKeyDown = (e: KeyboardEvent) => {\n if (e.key !== 'Escape') return;\n const top = layerStack[layerStack.length - 1];\n if (top && top.node === ref.current) top.onEscape?.(e);\n };\n document.addEventListener('keydown', onKeyDown);\n return () => document.removeEventListener('keydown', onKeyDown);\n }, [disableEscape]);\n\n useEffect(() => {\n if (disableOutsideClick) return;\n const onPointer = (e: PointerEvent) => {\n const top = layerStack[layerStack.length - 1];\n if (!top || top.node !== ref.current) return;\n const target = e.target as Node | null;\n if (!target || ref.current?.contains(target)) return;\n top.onOutsidePointerDown?.(e);\n };\n document.addEventListener('pointerdown', onPointer, true);\n return () => document.removeEventListener('pointerdown', onPointer, true);\n }, [disableOutsideClick]);\n\n return <div ref={composeRefs(forwardedRef, ref)} {...props} />;\n },\n);\nDismissableLayer.displayName = 'DismissableLayer';\n","import {\n autoUpdate,\n flip,\n offset as offsetMiddleware,\n shift,\n useFloating,\n type Placement,\n} from '@floating-ui/react';\nimport { forwardRef, type HTMLAttributes, type ReactNode } from 'react';\nimport { composeRefs } from '../../utils/composeRefs';\n\nexport interface AnchoredPositionerProps extends HTMLAttributes<HTMLDivElement> {\n /** The element the floating layer should be anchored to. */\n anchor: HTMLElement | null;\n /** Floating UI placement. Default `bottom`. */\n placement?: Placement;\n /** Distance between anchor and floating element in px. Default 8. */\n offset?: number;\n /** Render the floating element only when open. */\n open?: boolean;\n children: ReactNode;\n}\n\n/**\n * Position children relative to an anchor element using Floating UI.\n * Auto-flips and shifts to stay in viewport. Use as the positioning surface\n * for Tooltip, Popover, Menu, HoverCard.\n */\nexport const AnchoredPositioner = forwardRef<HTMLDivElement, AnchoredPositionerProps>(\n (\n { anchor, placement = 'bottom', offset = 8, open = true, children, style, ...props },\n forwardedRef,\n ) => {\n const { refs, floatingStyles } = useFloating({\n open,\n placement,\n middleware: [offsetMiddleware(offset), flip(), shift({ padding: 8 })],\n whileElementsMounted: autoUpdate,\n elements: { reference: anchor },\n });\n\n if (!open) return null;\n\n return (\n <div\n ref={composeRefs(forwardedRef, refs.setFloating)}\n style={{ ...floatingStyles, ...style }}\n {...props}\n >\n {children}\n </div>\n );\n },\n);\nAnchoredPositioner.displayName = 'AnchoredPositioner';\n","import {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n type HTMLAttributes,\n type KeyboardEvent,\n type ReactNode,\n} from 'react';\n\nexport type Orientation = 'horizontal' | 'vertical' | 'both';\n\ninterface RovingFocusContextValue {\n register: (id: string) => void;\n unregister: (id: string) => void;\n focusedId: string | null;\n setFocusedId: (id: string) => void;\n onItemKeyDown: (event: KeyboardEvent, id: string) => void;\n}\n\nconst RovingFocusContext = createContext<RovingFocusContextValue | null>(null);\n\nexport interface RovingFocusGroupProps extends HTMLAttributes<HTMLDivElement> {\n orientation?: Orientation;\n loop?: boolean;\n children: ReactNode;\n}\n\n/**\n * Provide arrow-key navigation for a group of focusable children. Children\n * call `useRovingFocusItem()` to register and receive `tabIndex` / event\n * handlers. Used by Tabs, ToggleGroup, RadioGroup, Menu.\n */\nexport function RovingFocusGroup({\n orientation = 'horizontal',\n loop = true,\n children,\n ...props\n}: RovingFocusGroupProps) {\n const items = useRef<string[]>([]);\n const [focusedId, setFocusedId] = useState<string | null>(null);\n\n const register = useCallback((id: string) => {\n if (!items.current.includes(id)) items.current.push(id);\n setFocusedId((current) => current ?? id);\n }, []);\n\n const unregister = useCallback((id: string) => {\n items.current = items.current.filter((i) => i !== id);\n }, []);\n\n const onItemKeyDown = useCallback(\n (event: KeyboardEvent, id: string) => {\n const list = items.current;\n const idx = list.indexOf(id);\n if (idx === -1) return;\n const isVert = orientation === 'vertical' || orientation === 'both';\n const isHoriz = orientation === 'horizontal' || orientation === 'both';\n let next = idx;\n if ((event.key === 'ArrowRight' && isHoriz) || (event.key === 'ArrowDown' && isVert)) {\n next = idx + 1;\n if (next >= list.length) next = loop ? 0 : list.length - 1;\n } else if ((event.key === 'ArrowLeft' && isHoriz) || (event.key === 'ArrowUp' && isVert)) {\n next = idx - 1;\n if (next < 0) next = loop ? list.length - 1 : 0;\n } else if (event.key === 'Home') {\n next = 0;\n } else if (event.key === 'End') {\n next = list.length - 1;\n } else {\n return;\n }\n event.preventDefault();\n const id2 = list[next];\n if (id2) setFocusedId(id2);\n },\n [orientation, loop],\n );\n\n const value = useMemo(\n () => ({ register, unregister, focusedId, setFocusedId, onItemKeyDown }),\n [register, unregister, focusedId, onItemKeyDown],\n );\n\n return (\n <RovingFocusContext.Provider value={value}>\n <div role=\"group\" {...props}>\n {children}\n </div>\n </RovingFocusContext.Provider>\n );\n}\n\nexport interface UseRovingFocusItemReturn {\n ref: (node: HTMLElement | null) => void;\n tabIndex: 0 | -1;\n onKeyDown: (event: KeyboardEvent) => void;\n onFocus: () => void;\n 'data-roving-focus-item': boolean;\n}\n\n/**\n * Inside a `RovingFocusGroup`, returns props to spread onto a focusable item.\n * Outside, returns inert props (tabIndex 0).\n */\nexport function useRovingFocusItem(): UseRovingFocusItemReturn {\n const context = useContext(RovingFocusContext);\n const id = useId();\n const ref = useRef<HTMLElement | null>(null);\n\n useEffect(() => {\n context?.register(id);\n return () => context?.unregister(id);\n }, [context, id]);\n\n useEffect(() => {\n if (context?.focusedId === id && ref.current && document.activeElement !== ref.current) {\n ref.current.focus();\n }\n }, [context?.focusedId, id]);\n\n return {\n ref: (node) => {\n ref.current = node;\n },\n tabIndex: !context || context.focusedId === id ? 0 : -1,\n onKeyDown: (e) => context?.onItemKeyDown(e, id),\n onFocus: () => context?.setFocusedId(id),\n 'data-roving-focus-item': true,\n };\n}\n","import {\n createContext,\n useCallback,\n useContext,\n useMemo,\n useState,\n type Context,\n type ReactNode,\n} from 'react';\n\nexport interface CollectionContextValue<T> {\n items: T[];\n register: (item: T) => void;\n unregister: (item: T) => void;\n}\n\n/**\n * Factory for a typed children-registry context. Compound components\n * (Menu, Tabs, Listbox) use this so the parent can iterate ordered children\n * without prop-drilling.\n */\nexport function createCollection<T>(): {\n Provider: (props: { children: ReactNode }) => ReactNode;\n useCollection: () => CollectionContextValue<T>;\n Context: Context<CollectionContextValue<T> | null>;\n} {\n const CollectionContext = createContext<CollectionContextValue<T> | null>(null);\n\n function Provider({ children }: { children: ReactNode }) {\n const [items, setItems] = useState<T[]>([]);\n const register = useCallback((item: T) => {\n setItems((prev) => (prev.includes(item) ? prev : [...prev, item]));\n }, []);\n const unregister = useCallback((item: T) => {\n setItems((prev) => prev.filter((i) => i !== item));\n }, []);\n const value = useMemo(() => ({ items, register, unregister }), [items, register, unregister]);\n return <CollectionContext.Provider value={value}>{children}</CollectionContext.Provider>;\n }\n\n function useCollection(): CollectionContextValue<T> {\n const ctx = useContext(CollectionContext);\n if (!ctx) {\n throw new Error('useCollection must be used inside its Provider');\n }\n return ctx;\n }\n\n return { Provider, useCollection, Context: CollectionContext };\n}\n","import { type ReactNode } from 'react';\nimport { useScrollLock } from '../../hooks/useScrollLock';\n\nexport interface ScrollLockProviderProps {\n enabled?: boolean;\n children: ReactNode;\n}\n\n/**\n * Component wrapper around `useScrollLock` — handy when scroll lock should\n * follow a child's mount lifecycle (e.g. inside a Modal's portal).\n * Multiple wrappers stack; lock releases when the count reaches zero.\n */\nexport function ScrollLockProvider({ enabled = true, children }: ScrollLockProviderProps) {\n useScrollLock(enabled);\n return <>{children}</>;\n}\n"]}
1
+ {"version":3,"sources":["../src/primitives/index.ts","../src/primitives/portal/Portal.tsx","../src/primitives/visuallyHidden/VisuallyHidden.tsx","../src/primitives/presence/Presence.tsx","../src/primitives/directionProvider/DirectionProvider.tsx","../src/primitives/accessibleIcon/AccessibleIcon.tsx","../src/primitives/focusScope/FocusScope.tsx","../src/primitives/dismissableLayer/DismissableLayer.tsx","../src/primitives/anchoredPositioner/AnchoredPositioner.tsx","../src/primitives/rovingFocusGroup/RovingFocusGroup.tsx","../src/primitives/collection/Collection.tsx","../src/primitives/scrollLockProvider/ScrollLockProvider.tsx"],"names":["jsx","isValidElement","cloneElement","RadixFocusScope","forwardRef","useRef","useEffect","offset","offsetMiddleware","createContext","useState","useContext","useCallback","useMemo","Fragment"],"mappings":"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","file":"chunk-SL5YJADS.js","sourcesContent":["// L2 — headless primitives. Behavior + a11y, no visual styling beyond layout.\n// Foundation layer; cannot import upward (enforced by ESLint boundaries).\n\nexport * from './slot';\nexport * from './portal';\nexport * from './visuallyHidden';\nexport * from './presence';\nexport * from './directionProvider';\nexport * from './accessibleIcon';\nexport * from './focusScope';\nexport * from './dismissableLayer';\nexport * from './anchoredPositioner';\nexport * from './rovingFocusGroup';\nexport * from './collection';\nexport * from './formControlContext';\nexport * from './scrollLockProvider';\n","import { type ReactNode } from 'react';\nimport { createPortal } from 'react-dom';\n\nexport interface PortalProps {\n children: ReactNode;\n /** Container to render into. Default: `document.body`. */\n container?: HTMLElement | null;\n /** Optional named layer — sets `data-portal-name` on the wrapper. */\n name?: string;\n}\n\n/**\n * Render children into a different DOM node (default `document.body`).\n * Client-only — package targets pure CSR consumers.\n */\nexport function Portal({ children, container, name }: PortalProps): ReactNode {\n const target = container ?? document.body;\n return createPortal(<div data-portal-name={name}>{children}</div>, target);\n}\n","import { forwardRef, type HTMLAttributes } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport type VisuallyHiddenProps = HTMLAttributes<HTMLSpanElement>;\n\n/**\n * Visually hidden span — content removed from the visual layout but still\n * announced to screen readers. Use for accessible labels on icon-only\n * affordances and live-region announcements.\n */\nexport const VisuallyHidden = forwardRef<HTMLSpanElement, VisuallyHiddenProps>(\n ({ className, ...props }, ref) => (\n <span\n ref={ref}\n className={cn(\n 'absolute h-px w-px overflow-hidden whitespace-nowrap border-0 p-0',\n 'm-[-1px] [clip:rect(0_0_0_0)] [clip-path:inset(50%)]',\n className,\n )}\n {...props}\n />\n ),\n);\nVisuallyHidden.displayName = 'VisuallyHidden';\n","import {\n cloneElement,\n isValidElement,\n useEffect,\n useRef,\n useState,\n type ReactElement,\n type Ref,\n} from 'react';\nimport { composeRefs } from '../../utils/composeRefs';\n\nexport interface PresenceProps {\n /** Whether the content should be present. Toggle false to trigger exit. */\n present: boolean;\n /** Single React element child — receives `ref` and `data-state` (\"open\" | \"closed\"). */\n children: ReactElement;\n}\n\n/**\n * Defer unmount until the child's exit animation/transition finishes.\n * Pass `present={false}` to start the exit; the child stays mounted with\n * `data-state=\"closed\"` until `animationend`/`transitionend` fires.\n */\nexport function Presence({ present, children }: PresenceProps): ReactElement | null {\n const [rendered, setRendered] = useState(present);\n const ref = useRef<HTMLElement | null>(null);\n\n useEffect(() => {\n if (present) {\n setRendered(true);\n return;\n }\n const node = ref.current;\n if (!node) {\n setRendered(false);\n return;\n }\n const cs = getComputedStyle(node);\n const hasAnim = cs.animationName !== 'none' && cs.animationDuration !== '0s';\n const hasTrans = cs.transitionDuration !== '0s';\n if (!hasAnim && !hasTrans) {\n setRendered(false);\n return;\n }\n const onEnd = () => setRendered(false);\n node.addEventListener('animationend', onEnd);\n node.addEventListener('transitionend', onEnd);\n return () => {\n node.removeEventListener('animationend', onEnd);\n node.removeEventListener('transitionend', onEnd);\n };\n }, [present]);\n\n if (!rendered || !isValidElement(children)) return null;\n const child = children as ReactElement<{ ref?: Ref<HTMLElement> }> & { ref?: Ref<HTMLElement> };\n return cloneElement(child, {\n ref: composeRefs(ref, child.ref),\n 'data-state': present ? 'open' : 'closed',\n } as Partial<typeof child.props>);\n}\n","import { createContext, useContext, type ReactNode } from 'react';\n\nexport type Direction = 'ltr' | 'rtl';\n\nconst DirectionContext = createContext<Direction>('ltr');\n\nexport interface DirectionProviderProps {\n dir: Direction;\n children: ReactNode;\n}\n\n/**\n * Provide reading direction to descendants. Components that mirror in RTL\n * (Tabs arrow keys, Slider, Carousel, etc.) read this via `useDirection()`.\n */\nexport function DirectionProvider({ dir, children }: DirectionProviderProps) {\n return <DirectionContext.Provider value={dir}>{children}</DirectionContext.Provider>;\n}\n\nexport function useDirection(): Direction {\n return useContext(DirectionContext);\n}\n","import { cloneElement, isValidElement, type ReactElement } from 'react';\nimport { VisuallyHidden } from '../visuallyHidden/VisuallyHidden';\n\nexport interface AccessibleIconProps {\n /** Required accessible label for the icon. */\n label: string;\n /** Single icon element — will receive `aria-hidden` so SR reads only the label. */\n children: ReactElement;\n}\n\n/**\n * Wrap an icon-only element with an accessible label. The icon is hidden\n * from assistive tech and a `VisuallyHidden` sibling provides the label.\n */\nexport function AccessibleIcon({ label, children }: AccessibleIconProps) {\n const icon = isValidElement(children)\n ? cloneElement(children as ReactElement<{ 'aria-hidden'?: boolean | string; focusable?: string }>, {\n 'aria-hidden': 'true',\n focusable: 'false',\n })\n : children;\n return (\n <>\n {icon}\n <VisuallyHidden>{label}</VisuallyHidden>\n </>\n );\n}\n","import { FocusScope as RadixFocusScope } from '@radix-ui/react-focus-scope';\n\nexport type FocusScopeProps = React.ComponentProps<typeof RadixFocusScope>;\n\n/**\n * Trap focus within children. On unmount, returns focus to the previously\n * focused element. Pass `loop` to wrap Tab navigation; `trapped` to enable\n * the trap (default true while mounted).\n *\n * Wraps `@radix-ui/react-focus-scope` — battle-tested implementation.\n */\nexport const FocusScope = RadixFocusScope;\n","import {\n forwardRef,\n useEffect,\n useRef,\n type HTMLAttributes,\n} from 'react';\nimport { composeRefs } from '../../utils/composeRefs';\n\ninterface LayerEntry {\n node: HTMLElement;\n onEscape?: (event: KeyboardEvent) => void;\n onOutsidePointerDown?: (event: PointerEvent) => void;\n}\n\nconst layerStack: LayerEntry[] = [];\n\nexport interface DismissableLayerProps extends HTMLAttributes<HTMLDivElement> {\n /** Called when Escape is pressed and this is the topmost layer. */\n onEscape?: (event: KeyboardEvent) => void;\n /** Called when a pointerdown lands outside this layer's DOM and this is topmost. */\n onOutsidePointerDown?: (event: PointerEvent) => void;\n /** Disable the Escape listener for this layer. */\n disableEscape?: boolean;\n /** Disable the outside-pointer-down listener for this layer. */\n disableOutsideClick?: boolean;\n}\n\n/**\n * Stack-aware dismissal layer. Multiple layers may stack (modal > popover);\n * only the topmost reacts to Escape / outside click. Used as the base of\n * Modal, Drawer, Popover, Menu, HoverCard, ContextMenu.\n */\nexport const DismissableLayer = forwardRef<HTMLDivElement, DismissableLayerProps>(\n (\n { onEscape, onOutsidePointerDown, disableEscape, disableOutsideClick, ...props },\n forwardedRef,\n ) => {\n const ref = useRef<HTMLDivElement | null>(null);\n\n useEffect(() => {\n const node = ref.current;\n if (!node) return;\n const entry: LayerEntry = { node, onEscape, onOutsidePointerDown };\n layerStack.push(entry);\n return () => {\n const idx = layerStack.indexOf(entry);\n if (idx >= 0) layerStack.splice(idx, 1);\n };\n }, [onEscape, onOutsidePointerDown]);\n\n useEffect(() => {\n if (disableEscape) return;\n const onKeyDown = (e: KeyboardEvent) => {\n if (e.key !== 'Escape') return;\n const top = layerStack[layerStack.length - 1];\n if (top && top.node === ref.current) top.onEscape?.(e);\n };\n document.addEventListener('keydown', onKeyDown);\n return () => document.removeEventListener('keydown', onKeyDown);\n }, [disableEscape]);\n\n useEffect(() => {\n if (disableOutsideClick) return;\n const onPointer = (e: PointerEvent) => {\n const top = layerStack[layerStack.length - 1];\n if (!top || top.node !== ref.current) return;\n const target = e.target as Node | null;\n if (!target || ref.current?.contains(target)) return;\n top.onOutsidePointerDown?.(e);\n };\n document.addEventListener('pointerdown', onPointer, true);\n return () => document.removeEventListener('pointerdown', onPointer, true);\n }, [disableOutsideClick]);\n\n return <div ref={composeRefs(forwardedRef, ref)} {...props} />;\n },\n);\nDismissableLayer.displayName = 'DismissableLayer';\n","import {\n autoUpdate,\n flip,\n offset as offsetMiddleware,\n shift,\n useFloating,\n type Placement,\n} from '@floating-ui/react';\nimport { forwardRef, type HTMLAttributes, type ReactNode } from 'react';\nimport { composeRefs } from '../../utils/composeRefs';\n\nexport interface AnchoredPositionerProps extends HTMLAttributes<HTMLDivElement> {\n /** The element the floating layer should be anchored to. */\n anchor: HTMLElement | null;\n /** Floating UI placement. Default `bottom`. */\n placement?: Placement;\n /** Distance between anchor and floating element in px. Default 8. */\n offset?: number;\n /** Render the floating element only when open. */\n open?: boolean;\n children: ReactNode;\n}\n\n/**\n * Position children relative to an anchor element using Floating UI.\n * Auto-flips and shifts to stay in viewport. Use as the positioning surface\n * for Tooltip, Popover, Menu, HoverCard.\n */\nexport const AnchoredPositioner = forwardRef<HTMLDivElement, AnchoredPositionerProps>(\n (\n { anchor, placement = 'bottom', offset = 8, open = true, children, style, ...props },\n forwardedRef,\n ) => {\n const { refs, floatingStyles } = useFloating({\n open,\n placement,\n middleware: [offsetMiddleware(offset), flip(), shift({ padding: 8 })],\n whileElementsMounted: autoUpdate,\n elements: { reference: anchor },\n });\n\n if (!open) return null;\n\n return (\n <div\n ref={composeRefs(forwardedRef, refs.setFloating)}\n style={{ ...floatingStyles, ...style }}\n {...props}\n >\n {children}\n </div>\n );\n },\n);\nAnchoredPositioner.displayName = 'AnchoredPositioner';\n","import {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n type HTMLAttributes,\n type KeyboardEvent,\n type ReactNode,\n} from 'react';\n\nexport type Orientation = 'horizontal' | 'vertical' | 'both';\n\ninterface RovingFocusContextValue {\n register: (id: string) => void;\n unregister: (id: string) => void;\n focusedId: string | null;\n setFocusedId: (id: string) => void;\n onItemKeyDown: (event: KeyboardEvent, id: string) => void;\n}\n\nconst RovingFocusContext = createContext<RovingFocusContextValue | null>(null);\n\nexport interface RovingFocusGroupProps extends HTMLAttributes<HTMLDivElement> {\n orientation?: Orientation;\n loop?: boolean;\n children: ReactNode;\n}\n\n/**\n * Provide arrow-key navigation for a group of focusable children. Children\n * call `useRovingFocusItem()` to register and receive `tabIndex` / event\n * handlers. Used by Tabs, ToggleGroup, RadioGroup, Menu.\n */\nexport function RovingFocusGroup({\n orientation = 'horizontal',\n loop = true,\n children,\n ...props\n}: RovingFocusGroupProps) {\n const items = useRef<string[]>([]);\n const [focusedId, setFocusedId] = useState<string | null>(null);\n\n const register = useCallback((id: string) => {\n if (!items.current.includes(id)) items.current.push(id);\n setFocusedId((current) => current ?? id);\n }, []);\n\n const unregister = useCallback((id: string) => {\n items.current = items.current.filter((i) => i !== id);\n }, []);\n\n const onItemKeyDown = useCallback(\n (event: KeyboardEvent, id: string) => {\n const list = items.current;\n const idx = list.indexOf(id);\n if (idx === -1) return;\n const isVert = orientation === 'vertical' || orientation === 'both';\n const isHoriz = orientation === 'horizontal' || orientation === 'both';\n let next = idx;\n if ((event.key === 'ArrowRight' && isHoriz) || (event.key === 'ArrowDown' && isVert)) {\n next = idx + 1;\n if (next >= list.length) next = loop ? 0 : list.length - 1;\n } else if ((event.key === 'ArrowLeft' && isHoriz) || (event.key === 'ArrowUp' && isVert)) {\n next = idx - 1;\n if (next < 0) next = loop ? list.length - 1 : 0;\n } else if (event.key === 'Home') {\n next = 0;\n } else if (event.key === 'End') {\n next = list.length - 1;\n } else {\n return;\n }\n event.preventDefault();\n const id2 = list[next];\n if (id2) setFocusedId(id2);\n },\n [orientation, loop],\n );\n\n const value = useMemo(\n () => ({ register, unregister, focusedId, setFocusedId, onItemKeyDown }),\n [register, unregister, focusedId, onItemKeyDown],\n );\n\n return (\n <RovingFocusContext.Provider value={value}>\n <div role=\"group\" {...props}>\n {children}\n </div>\n </RovingFocusContext.Provider>\n );\n}\n\nexport interface UseRovingFocusItemReturn {\n ref: (node: HTMLElement | null) => void;\n tabIndex: 0 | -1;\n onKeyDown: (event: KeyboardEvent) => void;\n onFocus: () => void;\n 'data-roving-focus-item': boolean;\n}\n\n/**\n * Inside a `RovingFocusGroup`, returns props to spread onto a focusable item.\n * Outside, returns inert props (tabIndex 0).\n */\nexport function useRovingFocusItem(): UseRovingFocusItemReturn {\n const context = useContext(RovingFocusContext);\n const id = useId();\n const ref = useRef<HTMLElement | null>(null);\n\n useEffect(() => {\n context?.register(id);\n return () => context?.unregister(id);\n }, [context, id]);\n\n useEffect(() => {\n if (context?.focusedId === id && ref.current && document.activeElement !== ref.current) {\n ref.current.focus();\n }\n }, [context?.focusedId, id]);\n\n return {\n ref: (node) => {\n ref.current = node;\n },\n tabIndex: !context || context.focusedId === id ? 0 : -1,\n onKeyDown: (e) => context?.onItemKeyDown(e, id),\n onFocus: () => context?.setFocusedId(id),\n 'data-roving-focus-item': true,\n };\n}\n","import {\n createContext,\n useCallback,\n useContext,\n useMemo,\n useState,\n type Context,\n type ReactNode,\n} from 'react';\n\nexport interface CollectionContextValue<T> {\n items: T[];\n register: (item: T) => void;\n unregister: (item: T) => void;\n}\n\n/**\n * Factory for a typed children-registry context. Compound components\n * (Menu, Tabs, Listbox) use this so the parent can iterate ordered children\n * without prop-drilling.\n */\nexport function createCollection<T>(): {\n Provider: (props: { children: ReactNode }) => ReactNode;\n useCollection: () => CollectionContextValue<T>;\n Context: Context<CollectionContextValue<T> | null>;\n} {\n const CollectionContext = createContext<CollectionContextValue<T> | null>(null);\n\n function Provider({ children }: { children: ReactNode }) {\n const [items, setItems] = useState<T[]>([]);\n const register = useCallback((item: T) => {\n setItems((prev) => (prev.includes(item) ? prev : [...prev, item]));\n }, []);\n const unregister = useCallback((item: T) => {\n setItems((prev) => prev.filter((i) => i !== item));\n }, []);\n const value = useMemo(() => ({ items, register, unregister }), [items, register, unregister]);\n return <CollectionContext.Provider value={value}>{children}</CollectionContext.Provider>;\n }\n\n function useCollection(): CollectionContextValue<T> {\n const ctx = useContext(CollectionContext);\n if (!ctx) {\n throw new Error('useCollection must be used inside its Provider');\n }\n return ctx;\n }\n\n return { Provider, useCollection, Context: CollectionContext };\n}\n","import { type ReactNode } from 'react';\nimport { useScrollLock } from '../../hooks/useScrollLock';\n\nexport interface ScrollLockProviderProps {\n enabled?: boolean;\n children: ReactNode;\n}\n\n/**\n * Component wrapper around `useScrollLock` — handy when scroll lock should\n * follow a child's mount lifecycle (e.g. inside a Modal's portal).\n * Multiple wrappers stack; lock releases when the count reaches zero.\n */\nexport function ScrollLockProvider({ enabled = true, children }: ScrollLockProviderProps) {\n useScrollLock(enabled);\n return <>{children}</>;\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { useId } from './chunk-JTJEI6MF.js';
1
+ import { useId } from './chunk-KDXJQNB6.js';
2
2
  import { createContext, useContext } from 'react';
3
3
  import { jsx } from 'react/jsx-runtime';
4
4
 
@@ -30,5 +30,5 @@ function useFormControl() {
30
30
  }
31
31
 
32
32
  export { FormControlProvider, useFormControl };
33
- //# sourceMappingURL=chunk-Q27NAHVB.js.map
34
- //# sourceMappingURL=chunk-Q27NAHVB.js.map
33
+ //# sourceMappingURL=chunk-WEM32VIJ.js.map
34
+ //# sourceMappingURL=chunk-WEM32VIJ.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/primitives/formControlContext/FormControlContext.tsx"],"names":[],"mappings":";;;;AAcA,IAAM,OAAA,GAAU,cAA8C,IAAI,CAAA;AAiB3D,SAAS,mBAAA,CAAoB;AAAA,EAClC,EAAA,EAAI,UAAA;AAAA,EACJ,SAAA,GAAY,KAAA;AAAA,EACZ,UAAA,GAAa,KAAA;AAAA,EACb,UAAA,GAAa,KAAA;AAAA,EACb,UAAA,GAAa,KAAA;AAAA,EACb;AACF,CAAA,EAA6B;AAC3B,EAAA,MAAM,cAAc,KAAA,EAAM;AAC1B,EAAA,MAAM,KAAK,UAAA,IAAc,WAAA;AACzB,EAAA,MAAM,KAAA,GAAiC;AAAA,IACrC,EAAA;AAAA,IACA,OAAA,EAAS,GAAG,EAAE,CAAA,MAAA,CAAA;AAAA,IACd,QAAA,EAAU,GAAG,EAAE,CAAA,OAAA,CAAA;AAAA,IACf,OAAA,EAAS,GAAG,EAAE,CAAA,MAAA,CAAA;AAAA,IACd,SAAA;AAAA,IACA,UAAA;AAAA,IACA,UAAA;AAAA,IACA;AAAA,GACF;AACA,EAAA,uBAAO,GAAA,CAAC,OAAA,CAAQ,QAAA,EAAR,EAAiB,OAAe,QAAA,EAAS,CAAA;AACnD;AAMO,SAAS,cAAA,GAAiD;AAC/D,EAAA,OAAO,WAAW,OAAO,CAAA;AAC3B","file":"chunk-Q27NAHVB.js","sourcesContent":["import { createContext, useContext, type ReactNode } from 'react';\nimport { useId } from '../../hooks/useId';\n\nexport interface FormControlContextValue {\n id: string;\n labelId: string;\n helperId: string;\n errorId: string;\n isInvalid: boolean;\n isDisabled: boolean;\n isRequired: boolean;\n isReadOnly: boolean;\n}\n\nconst Context = createContext<FormControlContextValue | null>(null);\n\nexport interface FormControlProviderProps {\n /** Override the auto-generated id (also used as control's `id`). */\n id?: string;\n isInvalid?: boolean;\n isDisabled?: boolean;\n isRequired?: boolean;\n isReadOnly?: boolean;\n children: ReactNode;\n}\n\n/**\n * Wires Label ↔ control ↔ HelperText/ErrorMessage via stable IDs and shared\n * state flags. Used by `FormField` (L4) — atoms (Input, Label, etc.) read\n * via `useFormControl()` to get the right `id`/`htmlFor`/`aria-describedby`.\n */\nexport function FormControlProvider({\n id: providedId,\n isInvalid = false,\n isDisabled = false,\n isRequired = false,\n isReadOnly = false,\n children,\n}: FormControlProviderProps) {\n const generatedId = useId();\n const id = providedId ?? generatedId;\n const value: FormControlContextValue = {\n id,\n labelId: `${id}-label`,\n helperId: `${id}-helper`,\n errorId: `${id}-error`,\n isInvalid,\n isDisabled,\n isRequired,\n isReadOnly,\n };\n return <Context.Provider value={value}>{children}</Context.Provider>;\n}\n\n/**\n * Read the surrounding form-control context. Returns `null` when used\n * outside a provider — atoms gracefully degrade to standalone mode.\n */\nexport function useFormControl(): FormControlContextValue | null {\n return useContext(Context);\n}\n"]}
1
+ {"version":3,"sources":["../src/primitives/formControlContext/FormControlContext.tsx"],"names":[],"mappings":";;;;AAcA,IAAM,OAAA,GAAU,cAA8C,IAAI,CAAA;AAiB3D,SAAS,mBAAA,CAAoB;AAAA,EAClC,EAAA,EAAI,UAAA;AAAA,EACJ,SAAA,GAAY,KAAA;AAAA,EACZ,UAAA,GAAa,KAAA;AAAA,EACb,UAAA,GAAa,KAAA;AAAA,EACb,UAAA,GAAa,KAAA;AAAA,EACb;AACF,CAAA,EAA6B;AAC3B,EAAA,MAAM,cAAc,KAAA,EAAM;AAC1B,EAAA,MAAM,KAAK,UAAA,IAAc,WAAA;AACzB,EAAA,MAAM,KAAA,GAAiC;AAAA,IACrC,EAAA;AAAA,IACA,OAAA,EAAS,GAAG,EAAE,CAAA,MAAA,CAAA;AAAA,IACd,QAAA,EAAU,GAAG,EAAE,CAAA,OAAA,CAAA;AAAA,IACf,OAAA,EAAS,GAAG,EAAE,CAAA,MAAA,CAAA;AAAA,IACd,SAAA;AAAA,IACA,UAAA;AAAA,IACA,UAAA;AAAA,IACA;AAAA,GACF;AACA,EAAA,uBAAO,GAAA,CAAC,OAAA,CAAQ,QAAA,EAAR,EAAiB,OAAe,QAAA,EAAS,CAAA;AACnD;AAMO,SAAS,cAAA,GAAiD;AAC/D,EAAA,OAAO,WAAW,OAAO,CAAA;AAC3B","file":"chunk-WEM32VIJ.js","sourcesContent":["import { createContext, useContext, type ReactNode } from 'react';\nimport { useId } from '../../hooks/useId';\n\nexport interface FormControlContextValue {\n id: string;\n labelId: string;\n helperId: string;\n errorId: string;\n isInvalid: boolean;\n isDisabled: boolean;\n isRequired: boolean;\n isReadOnly: boolean;\n}\n\nconst Context = createContext<FormControlContextValue | null>(null);\n\nexport interface FormControlProviderProps {\n /** Override the auto-generated id (also used as control's `id`). */\n id?: string;\n isInvalid?: boolean;\n isDisabled?: boolean;\n isRequired?: boolean;\n isReadOnly?: boolean;\n children: ReactNode;\n}\n\n/**\n * Wires Label ↔ control ↔ HelperText/ErrorMessage via stable IDs and shared\n * state flags. Used by `FormField` (L4) — atoms (Input, Label, etc.) read\n * via `useFormControl()` to get the right `id`/`htmlFor`/`aria-describedby`.\n */\nexport function FormControlProvider({\n id: providedId,\n isInvalid = false,\n isDisabled = false,\n isRequired = false,\n isReadOnly = false,\n children,\n}: FormControlProviderProps) {\n const generatedId = useId();\n const id = providedId ?? generatedId;\n const value: FormControlContextValue = {\n id,\n labelId: `${id}-label`,\n helperId: `${id}-helper`,\n errorId: `${id}-error`,\n isInvalid,\n isDisabled,\n isRequired,\n isReadOnly,\n };\n return <Context.Provider value={value}>{children}</Context.Provider>;\n}\n\n/**\n * Read the surrounding form-control context. Returns `null` when used\n * outside a provider — atoms gracefully degrade to standalone mode.\n */\nexport function useFormControl(): FormControlContextValue | null {\n return useContext(Context);\n}\n"]}