@mortenbrudvik/waveui 0.7.0 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (408) hide show
  1. package/README.md +395 -132
  2. package/dist/components/button/Button.cjs +1 -1
  3. package/dist/components/button/Button.cjs.map +1 -1
  4. package/dist/components/button/Button.mjs +36 -35
  5. package/dist/components/button/Button.mjs.map +1 -1
  6. package/dist/components/button/Button.slots.cjs +1 -1
  7. package/dist/components/button/Button.slots.cjs.map +1 -1
  8. package/dist/components/button/Button.slots.mjs +31 -21
  9. package/dist/components/button/Button.slots.mjs.map +1 -1
  10. package/dist/components/button/CompoundButton.cjs +1 -1
  11. package/dist/components/button/CompoundButton.cjs.map +1 -1
  12. package/dist/components/button/CompoundButton.mjs +31 -29
  13. package/dist/components/button/CompoundButton.mjs.map +1 -1
  14. package/dist/components/button/Link.cjs +1 -1
  15. package/dist/components/button/Link.cjs.map +1 -1
  16. package/dist/components/button/Link.mjs +24 -23
  17. package/dist/components/button/Link.mjs.map +1 -1
  18. package/dist/components/button/MenuButton.cjs +1 -1
  19. package/dist/components/button/MenuButton.cjs.map +1 -1
  20. package/dist/components/button/MenuButton.mjs +29 -28
  21. package/dist/components/button/MenuButton.mjs.map +1 -1
  22. package/dist/components/button/SplitButton.cjs +1 -1
  23. package/dist/components/button/SplitButton.cjs.map +1 -1
  24. package/dist/components/button/SplitButton.mjs +46 -45
  25. package/dist/components/button/SplitButton.mjs.map +1 -1
  26. package/dist/components/button/ToggleButton.cjs +1 -1
  27. package/dist/components/button/ToggleButton.cjs.map +1 -1
  28. package/dist/components/button/ToggleButton.mjs +38 -35
  29. package/dist/components/button/ToggleButton.mjs.map +1 -1
  30. package/dist/components/button/Toolbar.cjs +1 -1
  31. package/dist/components/button/Toolbar.cjs.map +1 -1
  32. package/dist/components/button/Toolbar.mjs +43 -42
  33. package/dist/components/button/Toolbar.mjs.map +1 -1
  34. package/dist/components/button/Toolbar.parts.cjs +1 -1
  35. package/dist/components/button/Toolbar.parts.cjs.map +1 -1
  36. package/dist/components/button/Toolbar.parts.mjs +76 -81
  37. package/dist/components/button/Toolbar.parts.mjs.map +1 -1
  38. package/dist/components/data-display/Avatar.cjs +1 -1
  39. package/dist/components/data-display/Avatar.cjs.map +1 -1
  40. package/dist/components/data-display/Avatar.mjs +72 -67
  41. package/dist/components/data-display/Avatar.mjs.map +1 -1
  42. package/dist/components/data-display/AvatarGroup.cjs +1 -1
  43. package/dist/components/data-display/AvatarGroup.cjs.map +1 -1
  44. package/dist/components/data-display/AvatarGroup.mjs +89 -88
  45. package/dist/components/data-display/AvatarGroup.mjs.map +1 -1
  46. package/dist/components/data-display/Badge.cjs +1 -1
  47. package/dist/components/data-display/Badge.cjs.map +1 -1
  48. package/dist/components/data-display/Badge.mjs +17 -16
  49. package/dist/components/data-display/Badge.mjs.map +1 -1
  50. package/dist/components/data-display/CounterBadge.cjs +1 -1
  51. package/dist/components/data-display/CounterBadge.cjs.map +1 -1
  52. package/dist/components/data-display/CounterBadge.mjs +18 -17
  53. package/dist/components/data-display/CounterBadge.mjs.map +1 -1
  54. package/dist/components/data-display/Divider.cjs +1 -1
  55. package/dist/components/data-display/Divider.cjs.map +1 -1
  56. package/dist/components/data-display/Divider.mjs +31 -30
  57. package/dist/components/data-display/Divider.mjs.map +1 -1
  58. package/dist/components/data-display/Image.cjs +1 -1
  59. package/dist/components/data-display/Image.cjs.map +1 -1
  60. package/dist/components/data-display/Image.mjs +16 -15
  61. package/dist/components/data-display/Image.mjs.map +1 -1
  62. package/dist/components/data-display/InfoLabel.cjs +1 -1
  63. package/dist/components/data-display/InfoLabel.cjs.map +1 -1
  64. package/dist/components/data-display/InfoLabel.mjs +74 -73
  65. package/dist/components/data-display/InfoLabel.mjs.map +1 -1
  66. package/dist/components/data-display/List.cjs +1 -1
  67. package/dist/components/data-display/List.cjs.map +1 -1
  68. package/dist/components/data-display/List.mjs +175 -174
  69. package/dist/components/data-display/List.mjs.map +1 -1
  70. package/dist/components/data-display/Persona.cjs +1 -1
  71. package/dist/components/data-display/Persona.cjs.map +1 -1
  72. package/dist/components/data-display/Persona.mjs +31 -29
  73. package/dist/components/data-display/Persona.mjs.map +1 -1
  74. package/dist/components/data-display/PresenceBadge.cjs +1 -1
  75. package/dist/components/data-display/PresenceBadge.cjs.map +1 -1
  76. package/dist/components/data-display/PresenceBadge.mjs +25 -24
  77. package/dist/components/data-display/PresenceBadge.mjs.map +1 -1
  78. package/dist/components/data-display/Tag.cjs +1 -1
  79. package/dist/components/data-display/Tag.cjs.map +1 -1
  80. package/dist/components/data-display/Tag.mjs +87 -82
  81. package/dist/components/data-display/Tag.mjs.map +1 -1
  82. package/dist/components/feedback/MessageBar.cjs +1 -1
  83. package/dist/components/feedback/MessageBar.cjs.map +1 -1
  84. package/dist/components/feedback/MessageBar.mjs +129 -71
  85. package/dist/components/feedback/MessageBar.mjs.map +1 -1
  86. package/dist/components/feedback/MessageBar.parts.cjs +2 -0
  87. package/dist/components/feedback/MessageBar.parts.cjs.map +1 -0
  88. package/dist/components/feedback/MessageBar.parts.mjs +84 -0
  89. package/dist/components/feedback/MessageBar.parts.mjs.map +1 -0
  90. package/dist/components/feedback/MessageBar.reflow.cjs +2 -0
  91. package/dist/components/feedback/MessageBar.reflow.cjs.map +1 -0
  92. package/dist/components/feedback/MessageBar.reflow.mjs +74 -0
  93. package/dist/components/feedback/MessageBar.reflow.mjs.map +1 -0
  94. package/dist/components/feedback/MessageBar.status.cjs +1 -1
  95. package/dist/components/feedback/MessageBar.status.cjs.map +1 -1
  96. package/dist/components/feedback/MessageBar.status.mjs +2 -1
  97. package/dist/components/feedback/MessageBar.status.mjs.map +1 -1
  98. package/dist/components/feedback/ProgressBar.cjs +1 -1
  99. package/dist/components/feedback/ProgressBar.cjs.map +1 -1
  100. package/dist/components/feedback/ProgressBar.mjs +44 -43
  101. package/dist/components/feedback/ProgressBar.mjs.map +1 -1
  102. package/dist/components/feedback/Skeleton.cjs +1 -1
  103. package/dist/components/feedback/Skeleton.cjs.map +1 -1
  104. package/dist/components/feedback/Skeleton.mjs +26 -24
  105. package/dist/components/feedback/Skeleton.mjs.map +1 -1
  106. package/dist/components/feedback/Spinner.cjs +1 -1
  107. package/dist/components/feedback/Spinner.cjs.map +1 -1
  108. package/dist/components/feedback/Spinner.mjs +32 -31
  109. package/dist/components/feedback/Spinner.mjs.map +1 -1
  110. package/dist/components/feedback/Toast.cjs +1 -1
  111. package/dist/components/feedback/Toast.cjs.map +1 -1
  112. package/dist/components/feedback/Toast.context.cjs +2 -0
  113. package/dist/components/feedback/Toast.context.cjs.map +1 -0
  114. package/dist/components/feedback/Toast.context.mjs +23 -0
  115. package/dist/components/feedback/Toast.context.mjs.map +1 -0
  116. package/dist/components/feedback/Toast.mjs +10 -342
  117. package/dist/components/feedback/Toast.mjs.map +1 -1
  118. package/dist/components/feedback/Toast.parts.cjs +2 -0
  119. package/dist/components/feedback/Toast.parts.cjs.map +1 -0
  120. package/dist/components/feedback/Toast.parts.mjs +98 -0
  121. package/dist/components/feedback/Toast.parts.mjs.map +1 -0
  122. package/dist/components/feedback/Toast.root.cjs +2 -0
  123. package/dist/components/feedback/Toast.root.cjs.map +1 -0
  124. package/dist/components/feedback/Toast.root.mjs +109 -0
  125. package/dist/components/feedback/Toast.root.mjs.map +1 -0
  126. package/dist/components/feedback/Toaster.cjs +2 -0
  127. package/dist/components/feedback/Toaster.cjs.map +1 -0
  128. package/dist/components/feedback/Toaster.mjs +564 -0
  129. package/dist/components/feedback/Toaster.mjs.map +1 -0
  130. package/dist/components/input/AlphaSlider.cjs +2 -0
  131. package/dist/components/input/AlphaSlider.cjs.map +1 -0
  132. package/dist/components/input/AlphaSlider.mjs +115 -0
  133. package/dist/components/input/AlphaSlider.mjs.map +1 -0
  134. package/dist/components/input/Checkbox.cjs +1 -1
  135. package/dist/components/input/Checkbox.cjs.map +1 -1
  136. package/dist/components/input/Checkbox.mjs +47 -46
  137. package/dist/components/input/Checkbox.mjs.map +1 -1
  138. package/dist/components/input/ColorArea.cjs +2 -0
  139. package/dist/components/input/ColorArea.cjs.map +1 -0
  140. package/dist/components/input/ColorArea.mjs +204 -0
  141. package/dist/components/input/ColorArea.mjs.map +1 -0
  142. package/dist/components/input/ColorPicker.cjs +5 -5
  143. package/dist/components/input/ColorPicker.cjs.map +1 -1
  144. package/dist/components/input/ColorPicker.mjs +142 -165
  145. package/dist/components/input/ColorPicker.mjs.map +1 -1
  146. package/dist/components/input/ColorPicker.parts.cjs +2 -0
  147. package/dist/components/input/ColorPicker.parts.cjs.map +1 -0
  148. package/dist/components/input/ColorPicker.parts.mjs +192 -0
  149. package/dist/components/input/ColorPicker.parts.mjs.map +1 -0
  150. package/dist/components/input/ColorSlider.cjs +2 -0
  151. package/dist/components/input/ColorSlider.cjs.map +1 -0
  152. package/dist/components/input/ColorSlider.mjs +138 -0
  153. package/dist/components/input/ColorSlider.mjs.map +1 -0
  154. package/dist/components/input/Combobox.cjs +1 -1
  155. package/dist/components/input/Combobox.cjs.map +1 -1
  156. package/dist/components/input/Combobox.expand.cjs +1 -1
  157. package/dist/components/input/Combobox.expand.cjs.map +1 -1
  158. package/dist/components/input/Combobox.expand.mjs +9 -9
  159. package/dist/components/input/Combobox.expand.mjs.map +1 -1
  160. package/dist/components/input/Combobox.mjs +90 -85
  161. package/dist/components/input/Combobox.mjs.map +1 -1
  162. package/dist/components/input/DatePicker.cjs +1 -1
  163. package/dist/components/input/DatePicker.cjs.map +1 -1
  164. package/dist/components/input/DatePicker.mjs +186 -185
  165. package/dist/components/input/DatePicker.mjs.map +1 -1
  166. package/dist/components/input/Dropdown.cjs +1 -1
  167. package/dist/components/input/Dropdown.cjs.map +1 -1
  168. package/dist/components/input/Dropdown.mjs +71 -68
  169. package/dist/components/input/Dropdown.mjs.map +1 -1
  170. package/dist/components/input/Field.cjs +1 -1
  171. package/dist/components/input/Field.cjs.map +1 -1
  172. package/dist/components/input/Field.mjs +113 -112
  173. package/dist/components/input/Field.mjs.map +1 -1
  174. package/dist/components/input/Input.cjs +1 -1
  175. package/dist/components/input/Input.cjs.map +1 -1
  176. package/dist/components/input/Input.mjs +55 -54
  177. package/dist/components/input/Input.mjs.map +1 -1
  178. package/dist/components/input/Label.cjs +1 -1
  179. package/dist/components/input/Label.cjs.map +1 -1
  180. package/dist/components/input/Label.mjs +12 -11
  181. package/dist/components/input/Label.mjs.map +1 -1
  182. package/dist/components/input/Option.cjs +1 -1
  183. package/dist/components/input/Option.cjs.map +1 -1
  184. package/dist/components/input/Option.mjs +100 -98
  185. package/dist/components/input/Option.mjs.map +1 -1
  186. package/dist/components/input/RadioGroup.cjs +1 -1
  187. package/dist/components/input/RadioGroup.cjs.map +1 -1
  188. package/dist/components/input/RadioGroup.mjs +89 -88
  189. package/dist/components/input/RadioGroup.mjs.map +1 -1
  190. package/dist/components/input/Rating.cjs +1 -1
  191. package/dist/components/input/Rating.cjs.map +1 -1
  192. package/dist/components/input/Rating.mjs +110 -109
  193. package/dist/components/input/Rating.mjs.map +1 -1
  194. package/dist/components/input/SearchBox.cjs +1 -1
  195. package/dist/components/input/SearchBox.cjs.map +1 -1
  196. package/dist/components/input/SearchBox.mjs +118 -119
  197. package/dist/components/input/SearchBox.mjs.map +1 -1
  198. package/dist/components/input/Select.cjs +1 -1
  199. package/dist/components/input/Select.cjs.map +1 -1
  200. package/dist/components/input/Select.mjs +25 -24
  201. package/dist/components/input/Select.mjs.map +1 -1
  202. package/dist/components/input/Slider.cjs +1 -1
  203. package/dist/components/input/Slider.cjs.map +1 -1
  204. package/dist/components/input/Slider.mjs +47 -46
  205. package/dist/components/input/Slider.mjs.map +1 -1
  206. package/dist/components/input/SpinButton.cjs +1 -1
  207. package/dist/components/input/SpinButton.cjs.map +1 -1
  208. package/dist/components/input/SpinButton.mjs +76 -75
  209. package/dist/components/input/SpinButton.mjs.map +1 -1
  210. package/dist/components/input/SwatchPicker.cjs +1 -1
  211. package/dist/components/input/SwatchPicker.cjs.map +1 -1
  212. package/dist/components/input/SwatchPicker.mjs +38 -37
  213. package/dist/components/input/SwatchPicker.mjs.map +1 -1
  214. package/dist/components/input/Switch.cjs +1 -1
  215. package/dist/components/input/Switch.cjs.map +1 -1
  216. package/dist/components/input/Switch.mjs +65 -64
  217. package/dist/components/input/Switch.mjs.map +1 -1
  218. package/dist/components/input/TagPicker.cjs +1 -1
  219. package/dist/components/input/TagPicker.cjs.map +1 -1
  220. package/dist/components/input/TagPicker.mjs +161 -157
  221. package/dist/components/input/TagPicker.mjs.map +1 -1
  222. package/dist/components/input/Textarea.cjs +1 -1
  223. package/dist/components/input/Textarea.cjs.map +1 -1
  224. package/dist/components/input/Textarea.mjs +24 -23
  225. package/dist/components/input/Textarea.mjs.map +1 -1
  226. package/dist/components/input/TimePicker.cjs +1 -1
  227. package/dist/components/input/TimePicker.cjs.map +1 -1
  228. package/dist/components/input/TimePicker.mjs +202 -199
  229. package/dist/components/input/TimePicker.mjs.map +1 -1
  230. package/dist/components/input/colorName.cjs +2 -0
  231. package/dist/components/input/colorName.cjs.map +1 -0
  232. package/dist/components/input/colorName.mjs +30 -0
  233. package/dist/components/input/colorName.mjs.map +1 -0
  234. package/dist/components/input/colorUtils.cjs +1 -1
  235. package/dist/components/input/colorUtils.cjs.map +1 -1
  236. package/dist/components/input/colorUtils.mjs +154 -56
  237. package/dist/components/input/colorUtils.mjs.map +1 -1
  238. package/dist/components/layout/Accordion.cjs +1 -1
  239. package/dist/components/layout/Accordion.cjs.map +1 -1
  240. package/dist/components/layout/Accordion.mjs +130 -129
  241. package/dist/components/layout/Accordion.mjs.map +1 -1
  242. package/dist/components/layout/Card.cjs +1 -1
  243. package/dist/components/layout/Card.cjs.map +1 -1
  244. package/dist/components/layout/Card.mjs +78 -77
  245. package/dist/components/layout/Card.mjs.map +1 -1
  246. package/dist/components/layout/Carousel.cjs +1 -1
  247. package/dist/components/layout/Carousel.cjs.map +1 -1
  248. package/dist/components/layout/Carousel.mjs +111 -110
  249. package/dist/components/layout/Carousel.mjs.map +1 -1
  250. package/dist/components/layout/Flex.cjs +1 -1
  251. package/dist/components/layout/Flex.cjs.map +1 -1
  252. package/dist/components/layout/Flex.mjs +22 -21
  253. package/dist/components/layout/Flex.mjs.map +1 -1
  254. package/dist/components/layout/Grid.cjs +1 -1
  255. package/dist/components/layout/Grid.cjs.map +1 -1
  256. package/dist/components/layout/Grid.mjs +19 -18
  257. package/dist/components/layout/Grid.mjs.map +1 -1
  258. package/dist/components/layout/Overflow.cjs +1 -1
  259. package/dist/components/layout/Overflow.cjs.map +1 -1
  260. package/dist/components/layout/Overflow.mjs +92 -91
  261. package/dist/components/layout/Overflow.mjs.map +1 -1
  262. package/dist/components/layout/Stack.cjs +1 -1
  263. package/dist/components/layout/Stack.cjs.map +1 -1
  264. package/dist/components/layout/Stack.mjs +14 -13
  265. package/dist/components/layout/Stack.mjs.map +1 -1
  266. package/dist/components/layout/TabList.cjs +1 -1
  267. package/dist/components/layout/TabList.cjs.map +1 -1
  268. package/dist/components/layout/TabList.mjs +118 -117
  269. package/dist/components/layout/TabList.mjs.map +1 -1
  270. package/dist/components/layout/Tree.cjs +1 -1
  271. package/dist/components/layout/Tree.cjs.map +1 -1
  272. package/dist/components/layout/Tree.context.cjs +2 -0
  273. package/dist/components/layout/Tree.context.cjs.map +1 -0
  274. package/dist/components/layout/Tree.context.mjs +33 -0
  275. package/dist/components/layout/Tree.context.mjs.map +1 -0
  276. package/dist/components/layout/Tree.core.cjs +2 -0
  277. package/dist/components/layout/Tree.core.cjs.map +1 -0
  278. package/dist/components/layout/Tree.core.mjs +416 -0
  279. package/dist/components/layout/Tree.core.mjs.map +1 -0
  280. package/dist/components/layout/Tree.itemPersonaLayout.cjs +2 -0
  281. package/dist/components/layout/Tree.itemPersonaLayout.cjs.map +1 -0
  282. package/dist/components/layout/Tree.itemPersonaLayout.mjs +46 -0
  283. package/dist/components/layout/Tree.itemPersonaLayout.mjs.map +1 -0
  284. package/dist/components/layout/Tree.mjs +7 -215
  285. package/dist/components/layout/Tree.mjs.map +1 -1
  286. package/dist/components/layout/Tree.selection.cjs +2 -0
  287. package/dist/components/layout/Tree.selection.cjs.map +1 -0
  288. package/dist/components/layout/Tree.selection.mjs +73 -0
  289. package/dist/components/layout/Tree.selection.mjs.map +1 -0
  290. package/dist/components/navigation/Breadcrumb.cjs +1 -1
  291. package/dist/components/navigation/Breadcrumb.cjs.map +1 -1
  292. package/dist/components/navigation/Breadcrumb.mjs +76 -75
  293. package/dist/components/navigation/Breadcrumb.mjs.map +1 -1
  294. package/dist/components/navigation/Menu.group.cjs +1 -1
  295. package/dist/components/navigation/Menu.group.cjs.map +1 -1
  296. package/dist/components/navigation/Menu.group.mjs +39 -37
  297. package/dist/components/navigation/Menu.group.mjs.map +1 -1
  298. package/dist/components/navigation/Menu.items.cjs +1 -1
  299. package/dist/components/navigation/Menu.items.cjs.map +1 -1
  300. package/dist/components/navigation/Menu.items.mjs +67 -61
  301. package/dist/components/navigation/Menu.items.mjs.map +1 -1
  302. package/dist/components/navigation/Menu.link.cjs +1 -1
  303. package/dist/components/navigation/Menu.link.cjs.map +1 -1
  304. package/dist/components/navigation/Menu.link.mjs +34 -28
  305. package/dist/components/navigation/Menu.link.mjs.map +1 -1
  306. package/dist/components/navigation/Menu.popover.cjs +1 -1
  307. package/dist/components/navigation/Menu.popover.cjs.map +1 -1
  308. package/dist/components/navigation/Menu.popover.mjs +110 -109
  309. package/dist/components/navigation/Menu.popover.mjs.map +1 -1
  310. package/dist/components/navigation/Menu.root.cjs +1 -1
  311. package/dist/components/navigation/Menu.root.cjs.map +1 -1
  312. package/dist/components/navigation/Menu.root.mjs +171 -170
  313. package/dist/components/navigation/Menu.root.mjs.map +1 -1
  314. package/dist/components/navigation/Menu.selectable.cjs +1 -1
  315. package/dist/components/navigation/Menu.selectable.cjs.map +1 -1
  316. package/dist/components/navigation/Menu.selectable.mjs +85 -63
  317. package/dist/components/navigation/Menu.selectable.mjs.map +1 -1
  318. package/dist/components/navigation/Menu.splitGroup.cjs +1 -1
  319. package/dist/components/navigation/Menu.splitGroup.cjs.map +1 -1
  320. package/dist/components/navigation/Menu.splitGroup.mjs +27 -26
  321. package/dist/components/navigation/Menu.splitGroup.mjs.map +1 -1
  322. package/dist/components/navigation/Menu.trigger.cjs +1 -1
  323. package/dist/components/navigation/Menu.trigger.cjs.map +1 -1
  324. package/dist/components/navigation/Menu.trigger.mjs +6 -6
  325. package/dist/components/navigation/Nav.cjs +1 -1
  326. package/dist/components/navigation/Nav.cjs.map +1 -1
  327. package/dist/components/navigation/Nav.mjs +170 -155
  328. package/dist/components/navigation/Nav.mjs.map +1 -1
  329. package/dist/components/navigation/Pagination.cjs +1 -1
  330. package/dist/components/navigation/Pagination.cjs.map +1 -1
  331. package/dist/components/navigation/Pagination.mjs +73 -65
  332. package/dist/components/navigation/Pagination.mjs.map +1 -1
  333. package/dist/components/navigation/Stepper.cjs +1 -1
  334. package/dist/components/navigation/Stepper.cjs.map +1 -1
  335. package/dist/components/navigation/Stepper.mjs +110 -109
  336. package/dist/components/navigation/Stepper.mjs.map +1 -1
  337. package/dist/components/overlays/Dialog.cjs +1 -1
  338. package/dist/components/overlays/Dialog.cjs.map +1 -1
  339. package/dist/components/overlays/Dialog.mjs +109 -108
  340. package/dist/components/overlays/Dialog.mjs.map +1 -1
  341. package/dist/components/overlays/Drawer.cjs +1 -1
  342. package/dist/components/overlays/Drawer.cjs.map +1 -1
  343. package/dist/components/overlays/Drawer.mjs +110 -109
  344. package/dist/components/overlays/Drawer.mjs.map +1 -1
  345. package/dist/components/overlays/Popover.cjs +1 -1
  346. package/dist/components/overlays/Popover.cjs.map +1 -1
  347. package/dist/components/overlays/Popover.mjs +229 -227
  348. package/dist/components/overlays/Popover.mjs.map +1 -1
  349. package/dist/components/overlays/TeachingPopover.cjs +1 -1
  350. package/dist/components/overlays/TeachingPopover.cjs.map +1 -1
  351. package/dist/components/overlays/TeachingPopover.mjs +41 -37
  352. package/dist/components/overlays/TeachingPopover.mjs.map +1 -1
  353. package/dist/components/overlays/Tooltip.cjs +1 -1
  354. package/dist/components/overlays/Tooltip.cjs.map +1 -1
  355. package/dist/components/overlays/Tooltip.mjs +87 -86
  356. package/dist/components/overlays/Tooltip.mjs.map +1 -1
  357. package/dist/components/portal/Portal.cjs +1 -1
  358. package/dist/components/portal/Portal.cjs.map +1 -1
  359. package/dist/components/portal/Portal.mjs +33 -32
  360. package/dist/components/portal/Portal.mjs.map +1 -1
  361. package/dist/components/provider/WaveProvider.cjs +1 -1
  362. package/dist/components/provider/WaveProvider.cjs.map +1 -1
  363. package/dist/components/provider/WaveProvider.mjs +31 -30
  364. package/dist/components/provider/WaveProvider.mjs.map +1 -1
  365. package/dist/components/table/DataGrid.cjs +1 -1
  366. package/dist/components/table/DataGrid.cjs.map +1 -1
  367. package/dist/components/table/DataGrid.mjs +228 -227
  368. package/dist/components/table/DataGrid.mjs.map +1 -1
  369. package/dist/components/table/Table.cjs +1 -1
  370. package/dist/components/table/Table.cjs.map +1 -1
  371. package/dist/components/table/Table.mjs +60 -59
  372. package/dist/components/table/Table.mjs.map +1 -1
  373. package/dist/components/typography/Text.cjs +1 -1
  374. package/dist/components/typography/Text.cjs.map +1 -1
  375. package/dist/components/typography/Text.mjs +12 -11
  376. package/dist/components/typography/Text.mjs.map +1 -1
  377. package/dist/hooks/useMediaQuery.cjs +2 -0
  378. package/dist/hooks/useMediaQuery.cjs.map +1 -0
  379. package/dist/hooks/useMediaQuery.mjs +20 -0
  380. package/dist/hooks/useMediaQuery.mjs.map +1 -0
  381. package/dist/hooks/usePrefersReducedMotion.cjs +1 -1
  382. package/dist/hooks/usePrefersReducedMotion.cjs.map +1 -1
  383. package/dist/hooks/usePrefersReducedMotion.mjs +4 -18
  384. package/dist/hooks/usePrefersReducedMotion.mjs.map +1 -1
  385. package/dist/hooks/useRovingTabIndex.cjs +1 -1
  386. package/dist/hooks/useRovingTabIndex.cjs.map +1 -1
  387. package/dist/hooks/useRovingTabIndex.mjs +3 -3
  388. package/dist/hooks/useRovingTabIndex.mjs.map +1 -1
  389. package/dist/index.cjs +1 -1
  390. package/dist/index.d.cts +2089 -102
  391. package/dist/index.d.ts +2089 -102
  392. package/dist/index.mjs +99 -87
  393. package/dist/lib/classNames.cjs +2 -0
  394. package/dist/lib/classNames.cjs.map +1 -0
  395. package/dist/lib/classNames.mjs +415 -0
  396. package/dist/lib/classNames.mjs.map +1 -0
  397. package/dist/lib/color.cjs +2 -0
  398. package/dist/lib/color.cjs.map +1 -0
  399. package/dist/lib/color.mjs +86 -0
  400. package/dist/lib/color.mjs.map +1 -0
  401. package/dist/lib/globalRegistry.cjs.map +1 -1
  402. package/dist/lib/globalRegistry.mjs.map +1 -1
  403. package/dist/lib/toaster.cjs +2 -0
  404. package/dist/lib/toaster.cjs.map +1 -0
  405. package/dist/lib/toaster.mjs +77 -0
  406. package/dist/lib/toaster.mjs.map +1 -0
  407. package/dist/styles.css +1 -1
  408. package/package.json +1 -1
@@ -2,98 +2,99 @@
2
2
  import { cn as e } from "../../lib/cn.mjs";
3
3
  import { flattenChildren as t, isElementOfType as n } from "../../lib/children.mjs";
4
4
  import { warnDeprecated as r, warnOnce as i } from "../../lib/dev.mjs";
5
- import { useId as a } from "../../hooks/useId.mjs";
6
- import { useMergedRefs as o } from "../../hooks/useMergedRefs.mjs";
5
+ import { tableBodyClassNames as a, tableCellClassNames as o, tableClassNames as s, tableHeaderCellClassNames as c, tableHeaderClassNames as l, tableRowClassNames as u } from "../../lib/classNames.mjs";
6
+ import { useId as d } from "../../hooks/useId.mjs";
7
+ import { useMergedRefs as f } from "../../hooks/useMergedRefs.mjs";
7
8
  import "../../lib/styles.mjs";
8
- import * as s from "react";
9
- import { jsx as c } from "react/jsx-runtime";
9
+ import * as p from "react";
10
+ import { jsx as m } from "react/jsx-runtime";
10
11
  //#region src/components/table/Table.tsx
11
- var l = () => () => {};
12
- function u(e) {
13
- let t = s.useCallback((t) => {
12
+ var h = () => () => {};
13
+ function g(e) {
14
+ let t = p.useCallback((t) => {
14
15
  if (!e || typeof ResizeObserver > "u") return () => {};
15
16
  let n = new ResizeObserver(t);
16
17
  n.observe(e);
17
18
  for (let t of Array.from(e.children)) n.observe(t);
18
19
  return () => n.disconnect();
19
- }, [e]), n = s.useCallback(() => e ? e.scrollWidth > e.clientWidth : !1, [e]);
20
- return s.useSyncExternalStore(e ? t : l, n, () => !1);
20
+ }, [e]), n = p.useCallback(() => e ? e.scrollWidth > e.clientWidth : !1, [e]);
21
+ return p.useSyncExternalStore(e ? t : h, n, () => !1);
21
22
  }
22
- function d(e) {
23
+ function _(e) {
23
24
  return n(e, "caption");
24
25
  }
25
- var f = ({ striped: n = !1, containerProps: r, children: l, className: f, ref: p, ...m }) => {
26
- let { className: h, ref: g, "aria-label": _, "aria-labelledby": v, ...y } = r ?? {}, [b, x] = s.useState(null), S = o(g, x), C = u(b), w = a("wave-table-caption"), T = t(l), E = T.findIndex(({ node: e }) => d(e)), D = E >= 0 ? T[E].node : null, O = D ? D.props.id ?? w : void 0, k = D && D.props.id === void 0 ? T.map(({ key: e, node: t }, n) => /* @__PURE__ */ c(s.Fragment, { children: n === E ? s.cloneElement(D, { id: w }) : t }, e)) : l, A = _ ? void 0 : v ?? O, j = !!(_ || A), M = C && j, N = y.role;
27
- return s.useEffect(() => {
28
- C && !j && i("Table:unnamed-scroll-region", "Table: the table scrolls horizontally but its scroll region has no name. Add a <caption> or containerProps[\"aria-label\"].");
29
- }, [C, j]), /* @__PURE__ */ c("div", {
30
- ...y,
31
- ref: S,
32
- role: M ? "region" : N,
33
- tabIndex: C ? 0 : y.tabIndex,
34
- "aria-label": C || N !== void 0 ? _ : void 0,
35
- "aria-labelledby": M ? A : N === void 0 ? void 0 : v,
36
- className: e("overflow-x-auto rounded-md border border-border", C && "focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ring", h),
37
- children: /* @__PURE__ */ c("table", {
38
- ref: p,
26
+ var v = ({ striped: n = !1, containerProps: r, children: a, className: o, ref: c, ...l }) => {
27
+ let { className: u, ref: h, "aria-label": v, "aria-labelledby": y, ...b } = r ?? {}, [x, S] = p.useState(null), C = f(h, S), w = g(x), T = d("wave-table-caption"), E = t(a), D = E.findIndex(({ node: e }) => _(e)), O = D >= 0 ? E[D].node : null, k = O ? O.props.id ?? T : void 0, A = O && O.props.id === void 0 ? E.map(({ key: e, node: t }, n) => /* @__PURE__ */ m(p.Fragment, { children: n === D ? p.cloneElement(O, { id: T }) : t }, e)) : a, j = v ? void 0 : y ?? k, M = !!(v || j), N = w && M, P = b.role;
28
+ return p.useEffect(() => {
29
+ w && !M && i("Table:unnamed-scroll-region", "Table: the table scrolls horizontally but its scroll region has no name. Add a <caption> or containerProps[\"aria-label\"].");
30
+ }, [w, M]), /* @__PURE__ */ m("div", {
31
+ ...b,
32
+ ref: C,
33
+ role: N ? "region" : P,
34
+ tabIndex: w ? 0 : b.tabIndex,
35
+ "aria-label": w || P !== void 0 ? v : void 0,
36
+ "aria-labelledby": N ? j : P === void 0 ? void 0 : y,
37
+ className: e(s.container, "overflow-x-auto rounded-md border border-border", w && "focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ring", u),
38
+ children: /* @__PURE__ */ m("table", {
39
+ ref: c,
39
40
  "data-striped": n ? "" : void 0,
40
- className: e("w-full border-separate border-spacing-0", n && "[:where(&>tbody>tr:nth-child(odd))]:bg-card", f),
41
- ...m,
42
- children: k
41
+ className: e(s.root, "w-full border-separate border-spacing-0", n && "[:where(&>tbody>tr:nth-child(odd))]:bg-card", o),
42
+ ...l,
43
+ children: A
43
44
  })
44
45
  });
45
46
  };
46
- f.displayName = "Table";
47
- var p = ({ children: t, className: n, ref: r, ...i }) => /* @__PURE__ */ c("thead", {
47
+ v.displayName = "Table";
48
+ var y = ({ children: t, className: n, ref: r, ...i }) => /* @__PURE__ */ m("thead", {
48
49
  ref: r,
49
50
  ...i,
50
- className: e("bg-card", n),
51
+ className: e(l.root, "bg-card", n),
51
52
  children: t
52
53
  });
53
- p.displayName = "TableHeader";
54
- var m = ({ children: t, className: n, ref: r, ...i }) => /* @__PURE__ */ c("th", {
54
+ y.displayName = "TableHeader";
55
+ var b = ({ children: t, className: n, ref: r, ...i }) => /* @__PURE__ */ m("th", {
55
56
  ref: r,
56
57
  scope: "col",
57
- className: e("px-4 py-3 text-start font-semibold text-caption-1 uppercase tracking-wider border-b border-border", n),
58
+ className: e(c.root, "px-4 py-3 text-start font-semibold text-caption-1 uppercase tracking-wider border-b border-border", n),
58
59
  ...i,
59
60
  children: t
60
61
  });
61
- m.displayName = "TableHeaderCell";
62
- var h = (e) => (r("Table", "Table.Head", "Table.Header"), /* @__PURE__ */ c(p, { ...e }));
63
- h.displayName = "TableHead";
64
- var g = (e) => (r("Table", "Table.HeadCell", "Table.HeaderCell"), /* @__PURE__ */ c(m, { ...e }));
65
- g.displayName = "TableHeadCell";
66
- var _ = ({ children: e, className: t, ref: n, ...r }) => /* @__PURE__ */ c("tbody", {
67
- ref: n,
68
- ...r,
69
- className: t,
70
- children: e
62
+ b.displayName = "TableHeaderCell";
63
+ var x = (e) => (r("Table", "Table.Head", "Table.Header"), /* @__PURE__ */ m(y, { ...e }));
64
+ x.displayName = "TableHead";
65
+ var S = (e) => (r("Table", "Table.HeadCell", "Table.HeaderCell"), /* @__PURE__ */ m(b, { ...e }));
66
+ S.displayName = "TableHeadCell";
67
+ var C = ({ children: t, className: n, ref: r, ...i }) => /* @__PURE__ */ m("tbody", {
68
+ ref: r,
69
+ ...i,
70
+ className: e(a.root, n),
71
+ children: t
71
72
  });
72
- _.displayName = "TableBody";
73
- var v = ({ children: t, className: n, ref: r, ...i }) => /* @__PURE__ */ c("tr", {
73
+ C.displayName = "TableBody";
74
+ var w = ({ children: t, className: n, ref: r, ...i }) => /* @__PURE__ */ m("tr", {
74
75
  ref: r,
75
- className: e("hover:bg-subtle-hover transition-colors motion-reduce:transition-none", n),
76
+ className: e(u.root, "hover:bg-subtle-hover transition-colors motion-reduce:transition-none", n),
76
77
  ...i,
77
78
  children: t
78
79
  });
79
- v.displayName = "TableRow";
80
- var y = ({ children: t, className: n, ref: r, ...i }) => /* @__PURE__ */ c("td", {
80
+ w.displayName = "TableRow";
81
+ var T = ({ children: t, className: n, ref: r, ...i }) => /* @__PURE__ */ m("td", {
81
82
  ref: r,
82
- className: e("px-4 py-3 text-body-1 border-b border-border", n),
83
+ className: e(o.root, "px-4 py-3 text-body-1 border-b border-border", n),
83
84
  ...i,
84
85
  children: t
85
86
  });
86
- y.displayName = "TableCell";
87
- var b = /* @__PURE__ */ Object.assign(f, {
88
- Header: p,
89
- HeaderCell: m,
90
- Head: h,
91
- HeadCell: g,
92
- Body: _,
93
- Row: v,
94
- Cell: y
87
+ T.displayName = "TableCell";
88
+ var E = /* @__PURE__ */ Object.assign(v, {
89
+ Header: y,
90
+ HeaderCell: b,
91
+ Head: x,
92
+ HeadCell: S,
93
+ Body: C,
94
+ Row: w,
95
+ Cell: T
95
96
  });
96
97
  //#endregion
97
- export { b as Table, _ as TableBody, y as TableCell, h as TableHead, g as TableHeadCell, p as TableHeader, m as TableHeaderCell, v as TableRow };
98
+ export { E as Table, C as TableBody, T as TableCell, x as TableHead, S as TableHeadCell, y as TableHeader, b as TableHeaderCell, w as TableRow };
98
99
 
99
100
  //# sourceMappingURL=Table.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Table.mjs","names":["useId","useId$1","React","noopSubscribe","useHorizontalOverflow","subscribe","wrapper","observer","onChange","child","getSnapshot","isCaption","isElementOfType","node","TableRoot","props","containerClassName","containerRef","containerLabel","containerLabelledBy","containerRest","containerProps","setWrapper","wrapperRef","useMergedRefs","scrollable","generatedCaptionId","flatChildren","flattenChildren","children","captionIndex","caption","captionId","content","index","key","regionLabelledBy","named","isRegion","consumerRole","warnOnce","cn","striped","className","TableHeader","rest","TableHeaderCell","TableHead","warnDeprecated","TableHeadCell","TableBody","TableRow","TableCell","Table"],"sources":["../../../src/components/table/Table.tsx"],"sourcesContent":["import * as React from 'react';\nimport { flattenChildren, isElementOfType } from '../../lib/children';\nimport { cn } from '../../lib/cn';\nimport { warnDeprecated, warnOnce } from '../../lib/dev';\nimport { focusRing } from '../../lib/styles';\nimport { useId } from '../../hooks/useId';\nimport { useMergedRefs } from '../../hooks/useMergedRefs';\n\n/** Properties for the Table component. */\nexport interface TableProps extends React.HTMLAttributes<HTMLTableElement> {\n /**\n * Whether to apply alternating row background colors (odd body rows). The stripe has zero\n * specificity, so a row's own background class (`<Table.Row className=\"bg-selected\">`) and its\n * hover color win over it.\n * @default false\n */\n striped?: boolean;\n /**\n * Props for the wrapper `<div>` around the `<table>`: a horizontally scrollable container\n * (`overflow-x-auto`). Use it for its className, style, ref or `aria-label`. While the table\n * scrolls horizontally, the wrapper is a keyboard-focusable `role=\"region\"` named by\n * `containerProps['aria-label']`/`['aria-labelledby']`, else by the table's `<caption>`. While\n * it does not scroll, the wrapper has no role and its `aria-label`/`aria-labelledby` are left\n * off, unless you also pass a `role` in `containerProps` (then they are always applied).\n */\n containerProps?: Omit<React.ComponentPropsWithRef<'div'>, 'children'>;\n /** Table caption, header, body and row elements. */\n children: React.ReactNode;\n /** Ref to the `<table>` element. */\n ref?: React.Ref<HTMLTableElement>;\n}\n\n/** Properties for the TableHeader sub-component. */\nexport interface TableHeaderProps extends React.HTMLAttributes<HTMLTableSectionElement> {\n /** Table header row elements. */\n children: React.ReactNode;\n /** Ref to the `<thead>` element. */\n ref?: React.Ref<HTMLTableSectionElement>;\n}\n\n/** Properties for the TableHeaderCell sub-component. */\nexport interface TableHeaderCellProps extends React.ThHTMLAttributes<HTMLTableCellElement> {\n /** Header cell content. */\n children: React.ReactNode;\n /** Ref to the `<th>` element. */\n ref?: React.Ref<HTMLTableCellElement>;\n}\n\n/** @deprecated Use `TableHeaderProps` (`Table.Header`). */\nexport type TableHeadProps = TableHeaderProps;\n\n/** @deprecated Use `TableHeaderCellProps` (`Table.HeaderCell`). */\nexport type TableHeadCellProps = TableHeaderCellProps;\n\n/** Properties for the TableBody sub-component. */\nexport interface TableBodyProps extends React.HTMLAttributes<HTMLTableSectionElement> {\n /** Table row elements. */\n children: React.ReactNode;\n /** Ref to the `<tbody>` element. */\n ref?: React.Ref<HTMLTableSectionElement>;\n}\n\n/** Properties for the TableRow sub-component. */\nexport interface TableRowProps extends React.HTMLAttributes<HTMLTableRowElement> {\n /** Table cell elements. */\n children: React.ReactNode;\n /** Ref to the `<tr>` element. */\n ref?: React.Ref<HTMLTableRowElement>;\n}\n\n/** Properties for the TableCell sub-component. */\nexport interface TableCellProps extends React.TdHTMLAttributes<HTMLTableCellElement> {\n /** Cell content. */\n children: React.ReactNode;\n /** Ref to the `<td>` element. */\n ref?: React.Ref<HTMLTableCellElement>;\n}\n\nconst noopSubscribe = () => () => {};\n\n/**\n * Whether `wrapper` scrolls horizontally, as an external store: a `ResizeObserver` on the wrapper\n * and the table re-checks `scrollWidth > clientWidth`. Without `ResizeObserver` (server, old\n * browsers, jsdom) the value is read on each render.\n */\nfunction useHorizontalOverflow(wrapper: HTMLDivElement | null): boolean {\n const subscribe = React.useCallback(\n (onChange: () => void) => {\n if (!wrapper || typeof ResizeObserver === 'undefined') return () => {};\n const observer = new ResizeObserver(onChange);\n observer.observe(wrapper);\n for (const child of Array.from(wrapper.children)) observer.observe(child);\n return () => observer.disconnect();\n },\n [wrapper],\n );\n const getSnapshot = React.useCallback(\n () => (wrapper ? wrapper.scrollWidth > wrapper.clientWidth : false),\n [wrapper],\n );\n return React.useSyncExternalStore(wrapper ? subscribe : noopSubscribe, getSnapshot, () => false);\n}\n\nfunction isCaption(node: React.ReactNode): node is React.ReactElement<{ id?: string }> {\n return isElementOfType(node, 'caption');\n}\n\n// The component-level JSDoc sits on the exported `Table` below.\nconst TableRoot = ({\n striped = false,\n containerProps,\n children,\n className,\n ref,\n ...props\n}: TableProps) => {\n const {\n className: containerClassName,\n ref: containerRef,\n 'aria-label': containerLabel,\n 'aria-labelledby': containerLabelledBy,\n ...containerRest\n } = containerProps ?? {};\n\n const [wrapper, setWrapper] = React.useState<HTMLDivElement | null>(null);\n const wrapperRef = useMergedRefs<HTMLDivElement>(containerRef, setWrapper);\n const scrollable = useHorizontalOverflow(wrapper);\n\n // Name the scroll region after the caption (also one inside a Fragment): keep its id, or give it\n // one. The flattened children are then rendered under their flattened keys.\n const generatedCaptionId = useId('wave-table-caption');\n const flatChildren = flattenChildren(children);\n const captionIndex = flatChildren.findIndex(({ node }) => isCaption(node));\n const caption =\n captionIndex >= 0\n ? (flatChildren[captionIndex].node as React.ReactElement<{ id?: string }>)\n : null;\n const captionId = caption ? (caption.props.id ?? generatedCaptionId) : undefined;\n const content =\n caption && caption.props.id === undefined\n ? flatChildren.map(({ key, node }, index) => (\n <React.Fragment key={key}>\n {index === captionIndex\n ? React.cloneElement(caption, { id: generatedCaptionId })\n : node}\n </React.Fragment>\n ))\n : children;\n\n const regionLabelledBy = containerLabel ? undefined : (containerLabelledBy ?? captionId);\n const named = Boolean(containerLabel || regionLabelledBy);\n const isRegion = scrollable && named;\n /** A role the consumer gave the wrapper: their name goes with it even while nothing scrolls. */\n const consumerRole = containerRest.role;\n\n React.useEffect(() => {\n if (scrollable && !named) {\n warnOnce(\n 'Table:unnamed-scroll-region',\n 'Table: the table scrolls horizontally but its scroll region has no name. Add a <caption> or containerProps[\"aria-label\"].',\n );\n }\n }, [scrollable, named]);\n\n return (\n <div\n {...containerRest}\n ref={wrapperRef}\n role={isRegion ? 'region' : consumerRole}\n tabIndex={scrollable ? 0 : containerRest.tabIndex}\n aria-label={scrollable || consumerRole !== undefined ? containerLabel : undefined}\n aria-labelledby={\n isRegion ? regionLabelledBy : consumerRole !== undefined ? containerLabelledBy : undefined\n }\n className={cn(\n 'overflow-x-auto rounded-md border border-border',\n scrollable && focusRing,\n containerClassName,\n )}\n >\n <table\n ref={ref}\n data-striped={striped ? '' : undefined}\n className={cn(\n 'w-full border-separate border-spacing-0',\n // `:where()` keeps the stripe at specificity 0, so any row class wins (C-CLASS).\n striped && '[:where(&>tbody>tr:nth-child(odd))]:bg-card',\n className,\n )}\n {...props}\n >\n {content}\n </table>\n </div>\n );\n};\nTableRoot.displayName = 'Table';\n\n/** The table's `<thead>`. */\nconst TableHeader = ({ children, className, ref, ...rest }: TableHeaderProps) => (\n <thead ref={ref} {...rest} className={cn('bg-card', className)}>\n {children}\n </thead>\n);\nTableHeader.displayName = 'TableHeader';\n\n/** A column header cell (`<th scope=\"col\">`). */\nconst TableHeaderCell = ({ children, className, ref, ...props }: TableHeaderCellProps) => (\n <th\n ref={ref}\n scope=\"col\"\n className={cn(\n 'px-4 py-3 text-start font-semibold text-caption-1 uppercase tracking-wider border-b border-border',\n className,\n )}\n {...props}\n >\n {children}\n </th>\n);\nTableHeaderCell.displayName = 'TableHeaderCell';\n\n/** @deprecated Use `Table.Header` (`TableHeader`). */\nconst TableHead = (props: TableHeadProps) => {\n warnDeprecated('Table', 'Table.Head', 'Table.Header');\n return <TableHeader {...props} />;\n};\nTableHead.displayName = 'TableHead';\n\n/** @deprecated Use `Table.HeaderCell` (`TableHeaderCell`). */\nconst TableHeadCell = (props: TableHeadCellProps) => {\n warnDeprecated('Table', 'Table.HeadCell', 'Table.HeaderCell');\n return <TableHeaderCell {...props} />;\n};\nTableHeadCell.displayName = 'TableHeadCell';\n\n/** The table's `<tbody>`. */\nconst TableBody = ({ children, className, ref, ...rest }: TableBodyProps) => (\n <tbody ref={ref} {...rest} className={className}>\n {children}\n </tbody>\n);\nTableBody.displayName = 'TableBody';\n\n/** A table row. Striping comes from the table (`striped`), so rows need no context. */\nconst TableRow = ({ children, className, ref, ...props }: TableRowProps) => (\n <tr\n ref={ref}\n className={cn(\n 'hover:bg-subtle-hover transition-colors motion-reduce:transition-none',\n className,\n )}\n {...props}\n >\n {children}\n </tr>\n);\nTableRow.displayName = 'TableRow';\n\n/** A data cell (`<td>`). */\nconst TableCell = ({ children, className, ref, ...props }: TableCellProps) => (\n <td\n ref={ref}\n className={cn('px-4 py-3 text-body-1 border-b border-border', className)}\n {...props}\n >\n {children}\n </td>\n);\nTableCell.displayName = 'TableCell';\n\nexport { TableHeader, TableHeaderCell, TableHead, TableHeadCell, TableBody, TableRow, TableCell };\n\n/**\n * A non-interactive data table with an optional striped body. The table sits in a horizontally\n * scrollable wrapper; while it scrolls, the wrapper is a focusable region (named by\n * `containerProps` or the `<caption>`) so keyboard users can scroll it.\n *\n * Sub-components are available as `Table.Header`, `Table.HeaderCell`, `Table.Body`, `Table.Row`\n * and `Table.Cell` in client components, and as the flat exports `TableHeader`,\n * `TableHeaderCell`, `TableBody`, `TableRow` and `TableCell` (the form React Server Components\n * can import). `Table.Head`/`Table.HeadCell` (`TableHead`/`TableHeadCell`) are deprecated aliases.\n */\nexport const Table = /* @__PURE__ */ Object.assign(TableRoot, {\n Header: TableHeader,\n HeaderCell: TableHeaderCell,\n /** @deprecated Use `Table.Header`. */\n Head: TableHead,\n /** @deprecated Use `Table.HeaderCell`. */\n HeadCell: TableHeadCell,\n Body: TableBody,\n Row: TableRow,\n Cell: TableCell,\n});\n"],"mappings":"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"}
1
+ {"version":3,"file":"Table.mjs","names":["useId","useId$1","React","noopSubscribe","useHorizontalOverflow","subscribe","wrapper","observer","onChange","child","getSnapshot","isCaption","isElementOfType","node","TableRoot","props","containerClassName","containerRef","containerLabel","containerLabelledBy","containerRest","containerProps","setWrapper","wrapperRef","useMergedRefs","scrollable","generatedCaptionId","flatChildren","flattenChildren","children","captionIndex","caption","captionId","content","index","key","regionLabelledBy","named","isRegion","consumerRole","warnOnce","cn","tableClassNames","striped","className","TableHeader","rest","tableHeaderClassNames","TableHeaderCell","tableHeaderCellClassNames","TableHead","warnDeprecated","TableHeadCell","TableBody","tableBodyClassNames","TableRow","tableRowClassNames","TableCell","tableCellClassNames","Table"],"sources":["../../../src/components/table/Table.tsx"],"sourcesContent":["import * as React from 'react';\nimport { flattenChildren, isElementOfType } from '../../lib/children';\nimport { cn } from '../../lib/cn';\nimport {\n tableBodyClassNames,\n tableCellClassNames,\n tableClassNames,\n tableHeaderCellClassNames,\n tableHeaderClassNames,\n tableRowClassNames,\n} from '../../lib/classNames';\nimport { warnDeprecated, warnOnce } from '../../lib/dev';\nimport { focusRing } from '../../lib/styles';\nimport { useId } from '../../hooks/useId';\nimport { useMergedRefs } from '../../hooks/useMergedRefs';\n\n/** Properties for the Table component. */\nexport interface TableProps extends React.HTMLAttributes<HTMLTableElement> {\n /**\n * Whether to apply alternating row background colors (odd body rows). The stripe has zero\n * specificity, so a row's own background class (`<Table.Row className=\"bg-selected\">`) and its\n * hover color win over it.\n * @default false\n */\n striped?: boolean;\n /**\n * Props for the wrapper `<div>` around the `<table>`: a horizontally scrollable container\n * (`overflow-x-auto`). Use it for its className, style, ref or `aria-label`. While the table\n * scrolls horizontally, the wrapper is a keyboard-focusable `role=\"region\"` named by\n * `containerProps['aria-label']`/`['aria-labelledby']`, else by the table's `<caption>`. While\n * it does not scroll, the wrapper has no role and its `aria-label`/`aria-labelledby` are left\n * off, unless you also pass a `role` in `containerProps` (then they are always applied).\n */\n containerProps?: Omit<React.ComponentPropsWithRef<'div'>, 'children'>;\n /** Table caption, header, body and row elements. */\n children: React.ReactNode;\n /** Ref to the `<table>` element. */\n ref?: React.Ref<HTMLTableElement>;\n}\n\n/** Properties for the TableHeader sub-component. */\nexport interface TableHeaderProps extends React.HTMLAttributes<HTMLTableSectionElement> {\n /** Table header row elements. */\n children: React.ReactNode;\n /** Ref to the `<thead>` element. */\n ref?: React.Ref<HTMLTableSectionElement>;\n}\n\n/** Properties for the TableHeaderCell sub-component. */\nexport interface TableHeaderCellProps extends React.ThHTMLAttributes<HTMLTableCellElement> {\n /** Header cell content. */\n children: React.ReactNode;\n /** Ref to the `<th>` element. */\n ref?: React.Ref<HTMLTableCellElement>;\n}\n\n/** @deprecated Use `TableHeaderProps` (`Table.Header`). */\nexport type TableHeadProps = TableHeaderProps;\n\n/** @deprecated Use `TableHeaderCellProps` (`Table.HeaderCell`). */\nexport type TableHeadCellProps = TableHeaderCellProps;\n\n/** Properties for the TableBody sub-component. */\nexport interface TableBodyProps extends React.HTMLAttributes<HTMLTableSectionElement> {\n /** Table row elements. */\n children: React.ReactNode;\n /** Ref to the `<tbody>` element. */\n ref?: React.Ref<HTMLTableSectionElement>;\n}\n\n/** Properties for the TableRow sub-component. */\nexport interface TableRowProps extends React.HTMLAttributes<HTMLTableRowElement> {\n /** Table cell elements. */\n children: React.ReactNode;\n /** Ref to the `<tr>` element. */\n ref?: React.Ref<HTMLTableRowElement>;\n}\n\n/** Properties for the TableCell sub-component. */\nexport interface TableCellProps extends React.TdHTMLAttributes<HTMLTableCellElement> {\n /** Cell content. */\n children: React.ReactNode;\n /** Ref to the `<td>` element. */\n ref?: React.Ref<HTMLTableCellElement>;\n}\n\nconst noopSubscribe = () => () => {};\n\n/**\n * Whether `wrapper` scrolls horizontally, as an external store: a `ResizeObserver` on the wrapper\n * and the table re-checks `scrollWidth > clientWidth`. Without `ResizeObserver` (server, old\n * browsers, jsdom) the value is read on each render.\n */\nfunction useHorizontalOverflow(wrapper: HTMLDivElement | null): boolean {\n const subscribe = React.useCallback(\n (onChange: () => void) => {\n if (!wrapper || typeof ResizeObserver === 'undefined') return () => {};\n const observer = new ResizeObserver(onChange);\n observer.observe(wrapper);\n for (const child of Array.from(wrapper.children)) observer.observe(child);\n return () => observer.disconnect();\n },\n [wrapper],\n );\n const getSnapshot = React.useCallback(\n () => (wrapper ? wrapper.scrollWidth > wrapper.clientWidth : false),\n [wrapper],\n );\n return React.useSyncExternalStore(wrapper ? subscribe : noopSubscribe, getSnapshot, () => false);\n}\n\nfunction isCaption(node: React.ReactNode): node is React.ReactElement<{ id?: string }> {\n return isElementOfType(node, 'caption');\n}\n\n// The component-level JSDoc sits on the exported `Table` below.\nconst TableRoot = ({\n striped = false,\n containerProps,\n children,\n className,\n ref,\n ...props\n}: TableProps) => {\n const {\n className: containerClassName,\n ref: containerRef,\n 'aria-label': containerLabel,\n 'aria-labelledby': containerLabelledBy,\n ...containerRest\n } = containerProps ?? {};\n\n const [wrapper, setWrapper] = React.useState<HTMLDivElement | null>(null);\n const wrapperRef = useMergedRefs<HTMLDivElement>(containerRef, setWrapper);\n const scrollable = useHorizontalOverflow(wrapper);\n\n // Name the scroll region after the caption (also one inside a Fragment): keep its id, or give it\n // one. The flattened children are then rendered under their flattened keys.\n const generatedCaptionId = useId('wave-table-caption');\n const flatChildren = flattenChildren(children);\n const captionIndex = flatChildren.findIndex(({ node }) => isCaption(node));\n const caption =\n captionIndex >= 0\n ? (flatChildren[captionIndex].node as React.ReactElement<{ id?: string }>)\n : null;\n const captionId = caption ? (caption.props.id ?? generatedCaptionId) : undefined;\n const content =\n caption && caption.props.id === undefined\n ? flatChildren.map(({ key, node }, index) => (\n <React.Fragment key={key}>\n {index === captionIndex\n ? React.cloneElement(caption, { id: generatedCaptionId })\n : node}\n </React.Fragment>\n ))\n : children;\n\n const regionLabelledBy = containerLabel ? undefined : (containerLabelledBy ?? captionId);\n const named = Boolean(containerLabel || regionLabelledBy);\n const isRegion = scrollable && named;\n /** A role the consumer gave the wrapper: their name goes with it even while nothing scrolls. */\n const consumerRole = containerRest.role;\n\n React.useEffect(() => {\n if (scrollable && !named) {\n warnOnce(\n 'Table:unnamed-scroll-region',\n 'Table: the table scrolls horizontally but its scroll region has no name. Add a <caption> or containerProps[\"aria-label\"].',\n );\n }\n }, [scrollable, named]);\n\n return (\n <div\n {...containerRest}\n ref={wrapperRef}\n role={isRegion ? 'region' : consumerRole}\n tabIndex={scrollable ? 0 : containerRest.tabIndex}\n aria-label={scrollable || consumerRole !== undefined ? containerLabel : undefined}\n aria-labelledby={\n isRegion ? regionLabelledBy : consumerRole !== undefined ? containerLabelledBy : undefined\n }\n className={cn(\n tableClassNames.container,\n 'overflow-x-auto rounded-md border border-border',\n scrollable && focusRing,\n containerClassName,\n )}\n >\n <table\n ref={ref}\n data-striped={striped ? '' : undefined}\n className={cn(\n tableClassNames.root,\n 'w-full border-separate border-spacing-0',\n // `:where()` keeps the stripe at specificity 0, so any row class wins (C-CLASS).\n striped && '[:where(&>tbody>tr:nth-child(odd))]:bg-card',\n className,\n )}\n {...props}\n >\n {content}\n </table>\n </div>\n );\n};\nTableRoot.displayName = 'Table';\n\n/** The table's `<thead>`. */\nconst TableHeader = ({ children, className, ref, ...rest }: TableHeaderProps) => (\n <thead ref={ref} {...rest} className={cn(tableHeaderClassNames.root, 'bg-card', className)}>\n {children}\n </thead>\n);\nTableHeader.displayName = 'TableHeader';\n\n/** A column header cell (`<th scope=\"col\">`). */\nconst TableHeaderCell = ({ children, className, ref, ...props }: TableHeaderCellProps) => (\n <th\n ref={ref}\n scope=\"col\"\n className={cn(\n tableHeaderCellClassNames.root,\n 'px-4 py-3 text-start font-semibold text-caption-1 uppercase tracking-wider border-b border-border',\n className,\n )}\n {...props}\n >\n {children}\n </th>\n);\nTableHeaderCell.displayName = 'TableHeaderCell';\n\n/** @deprecated Use `Table.Header` (`TableHeader`). */\nconst TableHead = (props: TableHeadProps) => {\n warnDeprecated('Table', 'Table.Head', 'Table.Header');\n return <TableHeader {...props} />;\n};\nTableHead.displayName = 'TableHead';\n\n/** @deprecated Use `Table.HeaderCell` (`TableHeaderCell`). */\nconst TableHeadCell = (props: TableHeadCellProps) => {\n warnDeprecated('Table', 'Table.HeadCell', 'Table.HeaderCell');\n return <TableHeaderCell {...props} />;\n};\nTableHeadCell.displayName = 'TableHeadCell';\n\n/** The table's `<tbody>`. */\nconst TableBody = ({ children, className, ref, ...rest }: TableBodyProps) => (\n <tbody ref={ref} {...rest} className={cn(tableBodyClassNames.root, className)}>\n {children}\n </tbody>\n);\nTableBody.displayName = 'TableBody';\n\n/** A table row. Striping comes from the table (`striped`), so rows need no context. */\nconst TableRow = ({ children, className, ref, ...props }: TableRowProps) => (\n <tr\n ref={ref}\n className={cn(\n tableRowClassNames.root,\n 'hover:bg-subtle-hover transition-colors motion-reduce:transition-none',\n className,\n )}\n {...props}\n >\n {children}\n </tr>\n);\nTableRow.displayName = 'TableRow';\n\n/** A data cell (`<td>`). */\nconst TableCell = ({ children, className, ref, ...props }: TableCellProps) => (\n <td\n ref={ref}\n className={cn(\n tableCellClassNames.root,\n 'px-4 py-3 text-body-1 border-b border-border',\n className,\n )}\n {...props}\n >\n {children}\n </td>\n);\nTableCell.displayName = 'TableCell';\n\nexport { TableHeader, TableHeaderCell, TableHead, TableHeadCell, TableBody, TableRow, TableCell };\n\n/**\n * A non-interactive data table with an optional striped body. The table sits in a horizontally\n * scrollable wrapper; while it scrolls, the wrapper is a focusable region (named by\n * `containerProps` or the `<caption>`) so keyboard users can scroll it.\n *\n * Sub-components are available as `Table.Header`, `Table.HeaderCell`, `Table.Body`, `Table.Row`\n * and `Table.Cell` in client components, and as the flat exports `TableHeader`,\n * `TableHeaderCell`, `TableBody`, `TableRow` and `TableCell` (the form React Server Components\n * can import). `Table.Head`/`Table.HeadCell` (`TableHead`/`TableHeadCell`) are deprecated aliases.\n */\nexport const Table = /* @__PURE__ */ Object.assign(TableRoot, {\n Header: TableHeader,\n HeaderCell: TableHeaderCell,\n /** @deprecated Use `Table.Header`. */\n Head: TableHead,\n /** @deprecated Use `Table.HeaderCell`. */\n HeadCell: TableHeadCell,\n Body: TableBody,\n Row: TableRow,\n Cell: TableCell,\n});\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use client";const e=require("../../_virtual/_rolldown/runtime.cjs"),t=require("../../lib/cn.cjs"),n=require("../../lib/dev.cjs");let r=require("react");r=e.__toESM(r,1);let i=require("react/jsx-runtime");var a={"caption-2":`text-caption-2`,"caption-1":`text-caption-1`,"body-1":`text-body-1`,"body-2":`text-body-2`,"subtitle-2":`text-subtitle-2`,"subtitle-1":`text-subtitle-1`,"title-3":`text-title-3`,"title-2":`text-title-2`,"title-1":`text-title-1`,"large-title":`text-large-title`,display:`text-display`},o={regular:`font-normal`,semibold:`font-semibold`,bold:`font-bold`},s={400:`regular`,600:`semibold`,700:`bold`},c=e=>{let{as:r,variant:c=`body-1`,weight:l,className:u,...d}=e,f;return typeof l==`number`?(f=Object.hasOwn(s,l)?s[l]:void 0,f&&n.warnDeprecated(`Text`,`weight={${l}}`,`weight="${f}"`)):l!==void 0&&Object.hasOwn(o,l)&&(f=l),(0,i.jsx)(r??`span`,{...d,className:t.cn(a[c],f&&o[f],u)})};c.displayName=`Text`,exports.Text=c;
1
+ "use client";const e=require("../../_virtual/_rolldown/runtime.cjs"),t=require("../../lib/cn.cjs"),n=require("../../lib/dev.cjs"),r=require("../../lib/classNames.cjs");let i=require("react");i=e.__toESM(i,1);let a=require("react/jsx-runtime");var o={"caption-2":`text-caption-2`,"caption-1":`text-caption-1`,"body-1":`text-body-1`,"body-2":`text-body-2`,"subtitle-2":`text-subtitle-2`,"subtitle-1":`text-subtitle-1`,"title-3":`text-title-3`,"title-2":`text-title-2`,"title-1":`text-title-1`,"large-title":`text-large-title`,display:`text-display`},s={regular:`font-normal`,semibold:`font-semibold`,bold:`font-bold`},c={400:`regular`,600:`semibold`,700:`bold`},l=e=>{let{as:i,variant:l=`body-1`,weight:u,className:d,...f}=e,p;return typeof u==`number`?(p=Object.hasOwn(c,u)?c[u]:void 0,p&&n.warnDeprecated(`Text`,`weight={${u}}`,`weight="${p}"`)):u!==void 0&&Object.hasOwn(s,u)&&(p=u),(0,a.jsx)(i??`span`,{...f,className:t.cn(r.textClassNames.root,o[l],p&&s[p],d)})};l.displayName=`Text`,exports.Text=l;
2
2
  //# sourceMappingURL=Text.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Text.cjs","names":["cn","require_runtime","require_cn","require_dev","react","react_jsx_runtime","variantClasses","weightClasses","numericWeights","Text","rest","props","resolvedWeight","weight","as","variant","className"],"sources":["../../../src/components/typography/Text.tsx"],"sourcesContent":["import * as React from 'react';\nimport { cn } from '../../lib/cn';\nimport { warnDeprecated } from '../../lib/dev';\nimport type { PolymorphicComponent, PolymorphicProps } from '../../lib/polymorphic';\nimport type { TextWeight, TypographyVariant } from '../../lib/types';\n\n/**\n * The Text's own props (the XOwnProps rule of `PolymorphicProps`: component-specific props only).\n * Every other prop comes from the rendered element (`as`, default `'span'`).\n */\nexport interface TextOwnProps {\n /** Typography variant controlling font size and line height (the Wave type ramp).\n * @default 'body-1'\n */\n variant?: TypographyVariant;\n /**\n * Font weight: `'regular'`, `'semibold'` or `'bold'`. Unset, the variant's own weight applies:\n * semibold for `'subtitle-2'` and every larger variant (`'subtitle-1'`, the titles,\n * `'large-title'`, `'display'`), inherited for the caption and body variants. Pass `'regular'`\n * for a title at regular weight. The numeric 0.4 values `400`, `600` and `700` still work but\n * are deprecated.\n */\n weight?: TextWeight | 400 | 600 | 700;\n}\n\n/**\n * The 0.4 numeric weights, kept as deprecated aliases of {@link TextWeight} (written out in\n * {@link TextOwnProps}, not a public name).\n */\ntype DeprecatedNumericWeight = Exclude<NonNullable<TextOwnProps['weight']>, TextWeight>;\n\n/**\n * Props of {@link Text} rendered as `C` (default `'span'`). `TextProps` without a type argument\n * is the 0.4 name: the props of a Text rendered as a `<span>`, including `ref`.\n */\nexport type TextProps<C extends React.ElementType = 'span'> = PolymorphicProps<C, TextOwnProps>;\n\n/** The props the implementation reads, for any `as`. */\ntype TextImplProps = TextOwnProps & {\n as?: React.ElementType;\n className?: string;\n};\n\nconst variantClasses: Record<TypographyVariant, string> = {\n 'caption-2': 'text-caption-2',\n 'caption-1': 'text-caption-1',\n 'body-1': 'text-body-1',\n 'body-2': 'text-body-2',\n 'subtitle-2': 'text-subtitle-2',\n 'subtitle-1': 'text-subtitle-1',\n 'title-3': 'text-title-3',\n 'title-2': 'text-title-2',\n 'title-1': 'text-title-1',\n 'large-title': 'text-large-title',\n display: 'text-display',\n};\n\nconst weightClasses: Record<TextWeight, string> = {\n regular: 'font-normal',\n semibold: 'font-semibold',\n bold: 'font-bold',\n};\n\nconst numericWeights: Record<DeprecatedNumericWeight, TextWeight> = {\n 400: 'regular',\n 600: 'semibold',\n 700: 'bold',\n};\n\n/**\n * Text in the Wave type ramp. Renders a `<span>` by default; `as` renders any element with\n * correctly typed props (`<Text as=\"h1\" variant=\"title-1\">`, `<Text as=\"label\" htmlFor=\"…\">`).\n *\n * Text sets no color: it inherits the surrounding color (the provider's foreground by default),\n * so it follows the theme. Add a color with `className` (`text-muted-foreground`); the variant\n * stays applied.\n *\n * @example\n * <Text as=\"h2\" variant=\"title-2\">Settings</Text>\n * <Text variant=\"body-1\" weight=\"semibold\">Unsaved changes</Text>\n * <Text variant=\"caption-1\" className=\"text-muted-foreground\">Last saved 2 minutes ago</Text>\n */\nexport const Text: PolymorphicComponent<'span', TextOwnProps> = (props) => {\n const { as, variant = 'body-1', weight, className, ...rest } = props as TextImplProps;\n\n let resolvedWeight: TextWeight | undefined;\n if (typeof weight === 'number') {\n resolvedWeight = Object.hasOwn(numericWeights, weight) ? numericWeights[weight] : undefined;\n // Warn-once during render is the sanctioned alias pattern (C-DEV).\n if (resolvedWeight) warnDeprecated('Text', `weight={${weight}}`, `weight=\"${resolvedWeight}\"`);\n } else if (weight !== undefined && Object.hasOwn(weightClasses, weight)) {\n resolvedWeight = weight;\n }\n\n const Component: React.ElementType = as ?? 'span';\n return (\n <Component\n {...rest}\n className={cn(\n variantClasses[variant],\n resolvedWeight && weightClasses[resolvedWeight],\n className,\n )}\n />\n );\n};\n\nText.displayName = 'Text';\n"],"mappings":"6MA2CA,IAAMM,EAAoD,CACxD,YAAa,iBACb,YAAa,iBACb,SAAU,cACV,SAAU,cACV,aAAc,kBACd,aAAc,kBACd,UAAW,eACX,UAAW,eACX,UAAW,eACX,cAAe,mBACf,QAAS,cACX,EAEMC,EAA4C,CAChD,QAAS,cACT,SAAU,gBACV,KAAM,WACR,EAEMC,EAA8D,CAClE,IAAK,UACL,IAAK,WACL,IAAK,MACP,EAeaC,EAAoD,GAAU,CACzE,GAAM,CAAE,KAAI,UAAU,SAAU,SAAQ,YAAW,GAAGC,GAASC,EAE3DC,EAUJ,OATI,OAAOC,GAAW,UACpB,EAAiB,OAAO,OAAOL,EAAgBK,CAAM,EAAIL,EAAeK,GAAU,IAAA,GAE9ED,GAAgBT,EAAA,eAAe,OAAQ,WAAWU,EAAO,GAAI,WAAWD,EAAe,EAAE,GACpFC,IAAW,IAAA,IAAa,OAAO,OAAON,EAAeM,CAAM,IACpE,EAAiBA,IAKjB,EAAAR,EAAA,IAAA,CAFmCS,GAAM,OAEzC,CACE,GAAIJ,EACJ,UAAWV,EAAAA,GACTM,EAAeS,GACfH,GAAkBL,EAAcK,GAChCI,CACF,CACD,CAAA,CAEL,EAEA,EAAK,YAAc"}
1
+ {"version":3,"file":"Text.cjs","names":["cn","textClassNames","require_runtime","require_cn","require_dev","require_classNames","react","react_jsx_runtime","variantClasses","weightClasses","numericWeights","Text","rest","props","resolvedWeight","weight","as","variant","className"],"sources":["../../../src/components/typography/Text.tsx"],"sourcesContent":["import * as React from 'react';\nimport { cn } from '../../lib/cn';\nimport { warnDeprecated } from '../../lib/dev';\nimport { textClassNames } from '../../lib/classNames';\nimport type { PolymorphicComponent, PolymorphicProps } from '../../lib/polymorphic';\nimport type { TextWeight, TypographyVariant } from '../../lib/types';\n\n/**\n * The Text's own props (the XOwnProps rule of `PolymorphicProps`: component-specific props only).\n * Every other prop comes from the rendered element (`as`, default `'span'`).\n */\nexport interface TextOwnProps {\n /** Typography variant controlling font size and line height (the Wave type ramp).\n * @default 'body-1'\n */\n variant?: TypographyVariant;\n /**\n * Font weight: `'regular'`, `'semibold'` or `'bold'`. Unset, the variant's own weight applies:\n * semibold for `'subtitle-2'` and every larger variant (`'subtitle-1'`, the titles,\n * `'large-title'`, `'display'`), inherited for the caption and body variants. Pass `'regular'`\n * for a title at regular weight. The numeric 0.4 values `400`, `600` and `700` still work but\n * are deprecated.\n */\n weight?: TextWeight | 400 | 600 | 700;\n}\n\n/**\n * The 0.4 numeric weights, kept as deprecated aliases of {@link TextWeight} (written out in\n * {@link TextOwnProps}, not a public name).\n */\ntype DeprecatedNumericWeight = Exclude<NonNullable<TextOwnProps['weight']>, TextWeight>;\n\n/**\n * Props of {@link Text} rendered as `C` (default `'span'`). `TextProps` without a type argument\n * is the 0.4 name: the props of a Text rendered as a `<span>`, including `ref`.\n */\nexport type TextProps<C extends React.ElementType = 'span'> = PolymorphicProps<C, TextOwnProps>;\n\n/** The props the implementation reads, for any `as`. */\ntype TextImplProps = TextOwnProps & {\n as?: React.ElementType;\n className?: string;\n};\n\nconst variantClasses: Record<TypographyVariant, string> = {\n 'caption-2': 'text-caption-2',\n 'caption-1': 'text-caption-1',\n 'body-1': 'text-body-1',\n 'body-2': 'text-body-2',\n 'subtitle-2': 'text-subtitle-2',\n 'subtitle-1': 'text-subtitle-1',\n 'title-3': 'text-title-3',\n 'title-2': 'text-title-2',\n 'title-1': 'text-title-1',\n 'large-title': 'text-large-title',\n display: 'text-display',\n};\n\nconst weightClasses: Record<TextWeight, string> = {\n regular: 'font-normal',\n semibold: 'font-semibold',\n bold: 'font-bold',\n};\n\nconst numericWeights: Record<DeprecatedNumericWeight, TextWeight> = {\n 400: 'regular',\n 600: 'semibold',\n 700: 'bold',\n};\n\n/**\n * Text in the Wave type ramp. Renders a `<span>` by default; `as` renders any element with\n * correctly typed props (`<Text as=\"h1\" variant=\"title-1\">`, `<Text as=\"label\" htmlFor=\"…\">`).\n *\n * Text sets no color: it inherits the surrounding color (the provider's foreground by default),\n * so it follows the theme. Add a color with `className` (`text-muted-foreground`); the variant\n * stays applied.\n *\n * @example\n * <Text as=\"h2\" variant=\"title-2\">Settings</Text>\n * <Text variant=\"body-1\" weight=\"semibold\">Unsaved changes</Text>\n * <Text variant=\"caption-1\" className=\"text-muted-foreground\">Last saved 2 minutes ago</Text>\n */\nexport const Text: PolymorphicComponent<'span', TextOwnProps> = (props) => {\n const { as, variant = 'body-1', weight, className, ...rest } = props as TextImplProps;\n\n let resolvedWeight: TextWeight | undefined;\n if (typeof weight === 'number') {\n resolvedWeight = Object.hasOwn(numericWeights, weight) ? numericWeights[weight] : undefined;\n // Warn-once during render is the sanctioned alias pattern (C-DEV).\n if (resolvedWeight) warnDeprecated('Text', `weight={${weight}}`, `weight=\"${resolvedWeight}\"`);\n } else if (weight !== undefined && Object.hasOwn(weightClasses, weight)) {\n resolvedWeight = weight;\n }\n\n const Component: React.ElementType = as ?? 'span';\n return (\n <Component\n {...rest}\n className={cn(\n textClassNames.root,\n variantClasses[variant],\n resolvedWeight && weightClasses[resolvedWeight],\n className,\n )}\n />\n );\n};\n\nText.displayName = 'Text';\n"],"mappings":"mPA4CA,IAAMQ,EAAoD,CACxD,YAAa,iBACb,YAAa,iBACb,SAAU,cACV,SAAU,cACV,aAAc,kBACd,aAAc,kBACd,UAAW,eACX,UAAW,eACX,UAAW,eACX,cAAe,mBACf,QAAS,cACX,EAEMC,EAA4C,CAChD,QAAS,cACT,SAAU,gBACV,KAAM,WACR,EAEMC,EAA8D,CAClE,IAAK,UACL,IAAK,WACL,IAAK,MACP,EAeaC,EAAoD,GAAU,CACzE,GAAM,CAAE,KAAI,UAAU,SAAU,SAAQ,YAAW,GAAGC,GAASC,EAE3DC,EAUJ,OATI,OAAOC,GAAW,UACpB,EAAiB,OAAO,OAAOL,EAAgBK,CAAM,EAAIL,EAAeK,GAAU,IAAA,GAE9ED,GAAgBV,EAAA,eAAe,OAAQ,WAAWW,EAAO,GAAI,WAAWD,EAAe,EAAE,GACpFC,IAAW,IAAA,IAAa,OAAO,OAAON,EAAeM,CAAM,IACpE,EAAiBA,IAKjB,EAAAR,EAAA,IAAA,CAFmCS,GAAM,OAEzC,CACE,GAAIJ,EACJ,UAAWZ,EAAAA,GACTC,EAAAA,eAAe,KACfO,EAAeS,GACfH,GAAkBL,EAAcK,GAChCI,CACF,CACD,CAAA,CAEL,EAEA,EAAK,YAAc"}
@@ -1,10 +1,11 @@
1
1
  "use client";
2
2
  import { cn as e } from "../../lib/cn.mjs";
3
3
  import { warnDeprecated as t } from "../../lib/dev.mjs";
4
+ import { textClassNames as n } from "../../lib/classNames.mjs";
4
5
  import "react";
5
- import { jsx as n } from "react/jsx-runtime";
6
+ import { jsx as r } from "react/jsx-runtime";
6
7
  //#region src/components/typography/Text.tsx
7
- var r = {
8
+ var i = {
8
9
  "caption-2": "text-caption-2",
9
10
  "caption-1": "text-caption-1",
10
11
  "body-1": "text-body-1",
@@ -16,23 +17,23 @@ var r = {
16
17
  "title-1": "text-title-1",
17
18
  "large-title": "text-large-title",
18
19
  display: "text-display"
19
- }, i = {
20
+ }, a = {
20
21
  regular: "font-normal",
21
22
  semibold: "font-semibold",
22
23
  bold: "font-bold"
23
- }, a = {
24
+ }, o = {
24
25
  400: "regular",
25
26
  600: "semibold",
26
27
  700: "bold"
27
- }, o = (o) => {
28
- let { as: s, variant: c = "body-1", weight: l, className: u, ...d } = o, f;
29
- return typeof l == "number" ? (f = Object.hasOwn(a, l) ? a[l] : void 0, f && t("Text", `weight={${l}}`, `weight="${f}"`)) : l !== void 0 && Object.hasOwn(i, l) && (f = l), /* @__PURE__ */ n(s ?? "span", {
30
- ...d,
31
- className: e(r[c], f && i[f], u)
28
+ }, s = (s) => {
29
+ let { as: c, variant: l = "body-1", weight: u, className: d, ...f } = s, p;
30
+ return typeof u == "number" ? (p = Object.hasOwn(o, u) ? o[u] : void 0, p && t("Text", `weight={${u}}`, `weight="${p}"`)) : u !== void 0 && Object.hasOwn(a, u) && (p = u), /* @__PURE__ */ r(c ?? "span", {
31
+ ...f,
32
+ className: e(n.root, i[l], p && a[p], d)
32
33
  });
33
34
  };
34
- o.displayName = "Text";
35
+ s.displayName = "Text";
35
36
  //#endregion
36
- export { o as Text };
37
+ export { s as Text };
37
38
 
38
39
  //# sourceMappingURL=Text.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Text.mjs","names":["variantClasses","weightClasses","numericWeights","Text","rest","props","resolvedWeight","weight","warnDeprecated","as","cn","variant","className"],"sources":["../../../src/components/typography/Text.tsx"],"sourcesContent":["import * as React from 'react';\nimport { cn } from '../../lib/cn';\nimport { warnDeprecated } from '../../lib/dev';\nimport type { PolymorphicComponent, PolymorphicProps } from '../../lib/polymorphic';\nimport type { TextWeight, TypographyVariant } from '../../lib/types';\n\n/**\n * The Text's own props (the XOwnProps rule of `PolymorphicProps`: component-specific props only).\n * Every other prop comes from the rendered element (`as`, default `'span'`).\n */\nexport interface TextOwnProps {\n /** Typography variant controlling font size and line height (the Wave type ramp).\n * @default 'body-1'\n */\n variant?: TypographyVariant;\n /**\n * Font weight: `'regular'`, `'semibold'` or `'bold'`. Unset, the variant's own weight applies:\n * semibold for `'subtitle-2'` and every larger variant (`'subtitle-1'`, the titles,\n * `'large-title'`, `'display'`), inherited for the caption and body variants. Pass `'regular'`\n * for a title at regular weight. The numeric 0.4 values `400`, `600` and `700` still work but\n * are deprecated.\n */\n weight?: TextWeight | 400 | 600 | 700;\n}\n\n/**\n * The 0.4 numeric weights, kept as deprecated aliases of {@link TextWeight} (written out in\n * {@link TextOwnProps}, not a public name).\n */\ntype DeprecatedNumericWeight = Exclude<NonNullable<TextOwnProps['weight']>, TextWeight>;\n\n/**\n * Props of {@link Text} rendered as `C` (default `'span'`). `TextProps` without a type argument\n * is the 0.4 name: the props of a Text rendered as a `<span>`, including `ref`.\n */\nexport type TextProps<C extends React.ElementType = 'span'> = PolymorphicProps<C, TextOwnProps>;\n\n/** The props the implementation reads, for any `as`. */\ntype TextImplProps = TextOwnProps & {\n as?: React.ElementType;\n className?: string;\n};\n\nconst variantClasses: Record<TypographyVariant, string> = {\n 'caption-2': 'text-caption-2',\n 'caption-1': 'text-caption-1',\n 'body-1': 'text-body-1',\n 'body-2': 'text-body-2',\n 'subtitle-2': 'text-subtitle-2',\n 'subtitle-1': 'text-subtitle-1',\n 'title-3': 'text-title-3',\n 'title-2': 'text-title-2',\n 'title-1': 'text-title-1',\n 'large-title': 'text-large-title',\n display: 'text-display',\n};\n\nconst weightClasses: Record<TextWeight, string> = {\n regular: 'font-normal',\n semibold: 'font-semibold',\n bold: 'font-bold',\n};\n\nconst numericWeights: Record<DeprecatedNumericWeight, TextWeight> = {\n 400: 'regular',\n 600: 'semibold',\n 700: 'bold',\n};\n\n/**\n * Text in the Wave type ramp. Renders a `<span>` by default; `as` renders any element with\n * correctly typed props (`<Text as=\"h1\" variant=\"title-1\">`, `<Text as=\"label\" htmlFor=\"…\">`).\n *\n * Text sets no color: it inherits the surrounding color (the provider's foreground by default),\n * so it follows the theme. Add a color with `className` (`text-muted-foreground`); the variant\n * stays applied.\n *\n * @example\n * <Text as=\"h2\" variant=\"title-2\">Settings</Text>\n * <Text variant=\"body-1\" weight=\"semibold\">Unsaved changes</Text>\n * <Text variant=\"caption-1\" className=\"text-muted-foreground\">Last saved 2 minutes ago</Text>\n */\nexport const Text: PolymorphicComponent<'span', TextOwnProps> = (props) => {\n const { as, variant = 'body-1', weight, className, ...rest } = props as TextImplProps;\n\n let resolvedWeight: TextWeight | undefined;\n if (typeof weight === 'number') {\n resolvedWeight = Object.hasOwn(numericWeights, weight) ? numericWeights[weight] : undefined;\n // Warn-once during render is the sanctioned alias pattern (C-DEV).\n if (resolvedWeight) warnDeprecated('Text', `weight={${weight}}`, `weight=\"${resolvedWeight}\"`);\n } else if (weight !== undefined && Object.hasOwn(weightClasses, weight)) {\n resolvedWeight = weight;\n }\n\n const Component: React.ElementType = as ?? 'span';\n return (\n <Component\n {...rest}\n className={cn(\n variantClasses[variant],\n resolvedWeight && weightClasses[resolvedWeight],\n className,\n )}\n />\n );\n};\n\nText.displayName = 'Text';\n"],"mappings":";;;;;;AA2CA,IAAMA,IAAoD;CACxD,aAAa;CACb,aAAa;CACb,UAAU;CACV,UAAU;CACV,cAAc;CACd,cAAc;CACd,WAAW;CACX,WAAW;CACX,WAAW;CACX,eAAe;CACf,SAAS;AACX,GAEMC,IAA4C;CAChD,SAAS;CACT,UAAU;CACV,MAAM;AACR,GAEMC,IAA8D;CAClE,KAAK;CACL,KAAK;CACL,KAAK;AACP,GAeaC,KAAoD,MAAU;CACzE,IAAM,EAAE,OAAI,aAAU,UAAU,WAAQ,cAAW,GAAGC,MAASC,GAE3DC;CAUJ,OATI,OAAOC,KAAW,YACpB,IAAiB,OAAO,OAAOL,GAAgBK,CAAM,IAAIL,EAAeK,KAAU,KAAA,GAE9ED,KAAgBE,EAAe,QAAQ,WAAWD,EAAO,IAAI,WAAWD,EAAe,EAAE,KACpFC,MAAW,KAAA,KAAa,OAAO,OAAON,GAAeM,CAAM,MACpE,IAAiBA,IAKjB,kBAFmCE,KAAM,QAEzC;EACE,GAAIL;EACJ,WAAWM,EACTV,EAAeW,IACfL,KAAkBL,EAAcK,IAChCM,CACF;CACD,CAAA;AAEL;AAEA,EAAK,cAAc"}
1
+ {"version":3,"file":"Text.mjs","names":["variantClasses","weightClasses","numericWeights","Text","rest","props","resolvedWeight","weight","warnDeprecated","as","cn","textClassNames","variant","className"],"sources":["../../../src/components/typography/Text.tsx"],"sourcesContent":["import * as React from 'react';\nimport { cn } from '../../lib/cn';\nimport { warnDeprecated } from '../../lib/dev';\nimport { textClassNames } from '../../lib/classNames';\nimport type { PolymorphicComponent, PolymorphicProps } from '../../lib/polymorphic';\nimport type { TextWeight, TypographyVariant } from '../../lib/types';\n\n/**\n * The Text's own props (the XOwnProps rule of `PolymorphicProps`: component-specific props only).\n * Every other prop comes from the rendered element (`as`, default `'span'`).\n */\nexport interface TextOwnProps {\n /** Typography variant controlling font size and line height (the Wave type ramp).\n * @default 'body-1'\n */\n variant?: TypographyVariant;\n /**\n * Font weight: `'regular'`, `'semibold'` or `'bold'`. Unset, the variant's own weight applies:\n * semibold for `'subtitle-2'` and every larger variant (`'subtitle-1'`, the titles,\n * `'large-title'`, `'display'`), inherited for the caption and body variants. Pass `'regular'`\n * for a title at regular weight. The numeric 0.4 values `400`, `600` and `700` still work but\n * are deprecated.\n */\n weight?: TextWeight | 400 | 600 | 700;\n}\n\n/**\n * The 0.4 numeric weights, kept as deprecated aliases of {@link TextWeight} (written out in\n * {@link TextOwnProps}, not a public name).\n */\ntype DeprecatedNumericWeight = Exclude<NonNullable<TextOwnProps['weight']>, TextWeight>;\n\n/**\n * Props of {@link Text} rendered as `C` (default `'span'`). `TextProps` without a type argument\n * is the 0.4 name: the props of a Text rendered as a `<span>`, including `ref`.\n */\nexport type TextProps<C extends React.ElementType = 'span'> = PolymorphicProps<C, TextOwnProps>;\n\n/** The props the implementation reads, for any `as`. */\ntype TextImplProps = TextOwnProps & {\n as?: React.ElementType;\n className?: string;\n};\n\nconst variantClasses: Record<TypographyVariant, string> = {\n 'caption-2': 'text-caption-2',\n 'caption-1': 'text-caption-1',\n 'body-1': 'text-body-1',\n 'body-2': 'text-body-2',\n 'subtitle-2': 'text-subtitle-2',\n 'subtitle-1': 'text-subtitle-1',\n 'title-3': 'text-title-3',\n 'title-2': 'text-title-2',\n 'title-1': 'text-title-1',\n 'large-title': 'text-large-title',\n display: 'text-display',\n};\n\nconst weightClasses: Record<TextWeight, string> = {\n regular: 'font-normal',\n semibold: 'font-semibold',\n bold: 'font-bold',\n};\n\nconst numericWeights: Record<DeprecatedNumericWeight, TextWeight> = {\n 400: 'regular',\n 600: 'semibold',\n 700: 'bold',\n};\n\n/**\n * Text in the Wave type ramp. Renders a `<span>` by default; `as` renders any element with\n * correctly typed props (`<Text as=\"h1\" variant=\"title-1\">`, `<Text as=\"label\" htmlFor=\"…\">`).\n *\n * Text sets no color: it inherits the surrounding color (the provider's foreground by default),\n * so it follows the theme. Add a color with `className` (`text-muted-foreground`); the variant\n * stays applied.\n *\n * @example\n * <Text as=\"h2\" variant=\"title-2\">Settings</Text>\n * <Text variant=\"body-1\" weight=\"semibold\">Unsaved changes</Text>\n * <Text variant=\"caption-1\" className=\"text-muted-foreground\">Last saved 2 minutes ago</Text>\n */\nexport const Text: PolymorphicComponent<'span', TextOwnProps> = (props) => {\n const { as, variant = 'body-1', weight, className, ...rest } = props as TextImplProps;\n\n let resolvedWeight: TextWeight | undefined;\n if (typeof weight === 'number') {\n resolvedWeight = Object.hasOwn(numericWeights, weight) ? numericWeights[weight] : undefined;\n // Warn-once during render is the sanctioned alias pattern (C-DEV).\n if (resolvedWeight) warnDeprecated('Text', `weight={${weight}}`, `weight=\"${resolvedWeight}\"`);\n } else if (weight !== undefined && Object.hasOwn(weightClasses, weight)) {\n resolvedWeight = weight;\n }\n\n const Component: React.ElementType = as ?? 'span';\n return (\n <Component\n {...rest}\n className={cn(\n textClassNames.root,\n variantClasses[variant],\n resolvedWeight && weightClasses[resolvedWeight],\n className,\n )}\n />\n );\n};\n\nText.displayName = 'Text';\n"],"mappings":";;;;;;;AA4CA,IAAMA,IAAoD;CACxD,aAAa;CACb,aAAa;CACb,UAAU;CACV,UAAU;CACV,cAAc;CACd,cAAc;CACd,WAAW;CACX,WAAW;CACX,WAAW;CACX,eAAe;CACf,SAAS;AACX,GAEMC,IAA4C;CAChD,SAAS;CACT,UAAU;CACV,MAAM;AACR,GAEMC,IAA8D;CAClE,KAAK;CACL,KAAK;CACL,KAAK;AACP,GAeaC,KAAoD,MAAU;CACzE,IAAM,EAAE,OAAI,aAAU,UAAU,WAAQ,cAAW,GAAGC,MAASC,GAE3DC;CAUJ,OATI,OAAOC,KAAW,YACpB,IAAiB,OAAO,OAAOL,GAAgBK,CAAM,IAAIL,EAAeK,KAAU,KAAA,GAE9ED,KAAgBE,EAAe,QAAQ,WAAWD,EAAO,IAAI,WAAWD,EAAe,EAAE,KACpFC,MAAW,KAAA,KAAa,OAAO,OAAON,GAAeM,CAAM,MACpE,IAAiBA,IAKjB,kBAFmCE,KAAM,QAEzC;EACE,GAAIL;EACJ,WAAWM,EACTC,EAAe,MACfX,EAAeY,IACfN,KAAkBL,EAAcK,IAChCO,CACF;CACD,CAAA;AAEL;AAEA,EAAK,cAAc"}
@@ -0,0 +1,2 @@
1
+ "use client";let e=require("react");function t(e){return typeof window>`u`||typeof window.matchMedia!=`function`?null:window.matchMedia(e)}function n(){return!1}function r(r){let i=(0,e.useCallback)(e=>{let n=t(r);return n?typeof n.addEventListener==`function`?(n.addEventListener(`change`,e),()=>n.removeEventListener(`change`,e)):(n.addListener(e),()=>n.removeListener(e)):()=>{}},[r]),a=(0,e.useCallback)(()=>t(r)?.matches??!1,[r]);return(0,e.useSyncExternalStore)(i,a,n)}exports.useMediaQuery=r;
2
+ //# sourceMappingURL=useMediaQuery.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useMediaQuery.cjs","names":["useCallback","useSyncExternalStore","react","getMediaQueryList","query","getServerSnapshot","useMediaQuery","subscribe","mql","notify","getSnapshot"],"sources":["../../src/hooks/useMediaQuery.ts"],"sourcesContent":["import { useCallback, useSyncExternalStore } from 'react';\n\nfunction getMediaQueryList(query: string): MediaQueryList | null {\n if (typeof window === 'undefined' || typeof window.matchMedia !== 'function') return null;\n return window.matchMedia(query);\n}\n\nfunction getServerSnapshot(): boolean {\n return false;\n}\n\n/**\n * `true` while `query` matches, updated when the answer changes. `false` on the server and where\n * `matchMedia` is unavailable. Internal: shared `useSyncExternalStore` plumbing for hooks and\n * components that need one media query, so they never duplicate it (`usePrefersReducedMotion`,\n * ColorArea's coarse-primary-pointer check).\n */\nexport function useMediaQuery(query: string): boolean {\n const subscribe = useCallback(\n (notify: () => void): (() => void) => {\n const mql = getMediaQueryList(query);\n if (!mql) return () => {};\n if (typeof mql.addEventListener === 'function') {\n mql.addEventListener('change', notify);\n return () => mql.removeEventListener('change', notify);\n }\n // Safari < 14\n mql.addListener(notify);\n return () => mql.removeListener(notify);\n },\n [query],\n );\n const getSnapshot = useCallback(() => getMediaQueryList(query)?.matches ?? false, [query]);\n return useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n}\n"],"mappings":"oCAEA,SAASG,EAAkB,EAAsC,CAE/D,OADI,OAAO,OAAW,KAAe,OAAO,OAAO,YAAe,WAAmB,KAC9E,OAAO,WAAWC,CAAK,CAChC,CAEA,SAASC,GAA6B,CACpC,MAAO,EACT,CAQA,SAAgBC,EAAc,EAAwB,CACpD,IAAMC,GAAA,EAAYP,EAAAA,YAAAA,CACf,GAAqC,CACpC,IAAMQ,EAAML,EAAkBC,CAAK,EAQnC,OAPKI,EACD,OAAOA,EAAI,kBAAqB,YAClCA,EAAI,iBAAiB,SAAUC,CAAM,MACxBD,EAAI,oBAAoB,SAAUC,CAAM,IAGvDD,EAAI,YAAYC,CAAM,MACTD,EAAI,eAAeC,CAAM,OAPf,CAAC,CAQ1B,EACA,CAACL,CAAK,CACR,EACMM,GAAA,EAAcV,EAAAA,YAAAA,KAAkBG,EAAkBC,CAAK,CAAC,EAAE,SAAW,GAAO,CAACA,CAAK,CAAC,EACzF,OAAA,EAAOH,EAAAA,qBAAAA,CAAqBM,EAAWG,EAAaL,CAAiB,CACvE"}
@@ -0,0 +1,20 @@
1
+ "use client";
2
+ import { useCallback as e, useSyncExternalStore as t } from "react";
3
+ //#region src/hooks/useMediaQuery.ts
4
+ function n(e) {
5
+ return typeof window > "u" || typeof window.matchMedia != "function" ? null : window.matchMedia(e);
6
+ }
7
+ function r() {
8
+ return !1;
9
+ }
10
+ function i(i) {
11
+ let a = e((e) => {
12
+ let t = n(i);
13
+ return t ? typeof t.addEventListener == "function" ? (t.addEventListener("change", e), () => t.removeEventListener("change", e)) : (t.addListener(e), () => t.removeListener(e)) : () => {};
14
+ }, [i]), o = e(() => n(i)?.matches ?? !1, [i]);
15
+ return t(a, o, r);
16
+ }
17
+ //#endregion
18
+ export { i as useMediaQuery };
19
+
20
+ //# sourceMappingURL=useMediaQuery.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useMediaQuery.mjs","names":["getMediaQueryList","query","getServerSnapshot","useMediaQuery","subscribe","useCallback","mql","notify","getSnapshot","useSyncExternalStore"],"sources":["../../src/hooks/useMediaQuery.ts"],"sourcesContent":["import { useCallback, useSyncExternalStore } from 'react';\n\nfunction getMediaQueryList(query: string): MediaQueryList | null {\n if (typeof window === 'undefined' || typeof window.matchMedia !== 'function') return null;\n return window.matchMedia(query);\n}\n\nfunction getServerSnapshot(): boolean {\n return false;\n}\n\n/**\n * `true` while `query` matches, updated when the answer changes. `false` on the server and where\n * `matchMedia` is unavailable. Internal: shared `useSyncExternalStore` plumbing for hooks and\n * components that need one media query, so they never duplicate it (`usePrefersReducedMotion`,\n * ColorArea's coarse-primary-pointer check).\n */\nexport function useMediaQuery(query: string): boolean {\n const subscribe = useCallback(\n (notify: () => void): (() => void) => {\n const mql = getMediaQueryList(query);\n if (!mql) return () => {};\n if (typeof mql.addEventListener === 'function') {\n mql.addEventListener('change', notify);\n return () => mql.removeEventListener('change', notify);\n }\n // Safari < 14\n mql.addListener(notify);\n return () => mql.removeListener(notify);\n },\n [query],\n );\n const getSnapshot = useCallback(() => getMediaQueryList(query)?.matches ?? false, [query]);\n return useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n}\n"],"mappings":";;;AAEA,SAASA,EAAkB,GAAsC;CAE/D,OADI,OAAO,SAAW,OAAe,OAAO,OAAO,cAAe,aAAmB,OAC9E,OAAO,WAAWC,CAAK;AAChC;AAEA,SAASC,IAA6B;CACpC,OAAO;AACT;AAQA,SAAgBC,EAAc,GAAwB;CACpD,IAAMC,IAAYC,GACf,MAAqC;EACpC,IAAMC,IAAMN,EAAkBC,CAAK;EAQnC,OAPKK,IACD,OAAOA,EAAI,oBAAqB,cAClCA,EAAI,iBAAiB,UAAUC,CAAM,SACxBD,EAAI,oBAAoB,UAAUC,CAAM,MAGvDD,EAAI,YAAYC,CAAM,SACTD,EAAI,eAAeC,CAAM,WAPf,CAAC;CAQ1B,GACA,CAACN,CAAK,CACR,GACMO,IAAcH,QAAkBL,EAAkBC,CAAK,CAAC,EAAE,WAAW,IAAO,CAACA,CAAK,CAAC;CACzF,OAAOQ,EAAqBL,GAAWI,GAAaN,CAAiB;AACvE"}
@@ -1,2 +1,2 @@
1
- "use client";let e=require("react");var t=`(prefers-reduced-motion: reduce)`;function n(){return typeof window>`u`||typeof window.matchMedia!=`function`?null:window.matchMedia(t)}function r(e){let t=n();return t?typeof t.addEventListener==`function`?(t.addEventListener(`change`,e),()=>t.removeEventListener(`change`,e)):(t.addListener(e),()=>t.removeListener(e)):()=>{}}function i(){return n()?.matches??!1}function a(){return!1}function o(){return(0,e.useSyncExternalStore)(r,i,a)}exports.usePrefersReducedMotion=o;
1
+ "use client";const e=require("./useMediaQuery.cjs");function t(){return e.useMediaQuery(`(prefers-reduced-motion: reduce)`)}exports.usePrefersReducedMotion=t;
2
2
  //# sourceMappingURL=usePrefersReducedMotion.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"usePrefersReducedMotion.cjs","names":["useSyncExternalStore","react","QUERY","getMediaQueryList","subscribe","mql","notify","getSnapshot","getServerSnapshot","usePrefersReducedMotion"],"sources":["../../src/hooks/usePrefersReducedMotion.ts"],"sourcesContent":["import { useSyncExternalStore } from 'react';\n\nconst QUERY = '(prefers-reduced-motion: reduce)';\n\nfunction getMediaQueryList(): MediaQueryList | null {\n if (typeof window === 'undefined' || typeof window.matchMedia !== 'function') return null;\n return window.matchMedia(QUERY);\n}\n\nfunction subscribe(notify: () => void): () => void {\n const mql = getMediaQueryList();\n if (!mql) return () => {};\n if (typeof mql.addEventListener === 'function') {\n mql.addEventListener('change', notify);\n return () => mql.removeEventListener('change', notify);\n }\n // Safari < 14\n mql.addListener(notify);\n return () => mql.removeListener(notify);\n}\n\nfunction getSnapshot(): boolean {\n return getMediaQueryList()?.matches ?? false;\n}\n\nfunction getServerSnapshot(): boolean {\n return false;\n}\n\n/**\n * `true` while the user asks for reduced motion (`prefers-reduced-motion: reduce`), updated when\n * the preference changes. `false` on the server and where `matchMedia` is unavailable.\n *\n * Use it for behaviour that CSS `motion-reduce:` variants cannot express, e.g. starting a carousel\n * paused.\n */\nexport function usePrefersReducedMotion(): boolean {\n return useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n}\n"],"mappings":"oCAEA,IAAME,EAAQ,mCAEd,SAASC,GAA2C,CAElD,OADI,OAAO,OAAW,KAAe,OAAO,OAAO,YAAe,WAAmB,KAC9E,OAAO,WAAWD,CAAK,CAChC,CAEA,SAASE,EAAU,EAAgC,CACjD,IAAMC,EAAMF,EAAkB,EAQ9B,OAPKE,EACD,OAAOA,EAAI,kBAAqB,YAClCA,EAAI,iBAAiB,SAAUC,CAAM,MACxBD,EAAI,oBAAoB,SAAUC,CAAM,IAGvDD,EAAI,YAAYC,CAAM,MACTD,EAAI,eAAeC,CAAM,OAPf,CAAC,CAQ1B,CAEA,SAASC,GAAuB,CAC9B,OAAOJ,EAAkB,CAAC,EAAE,SAAW,EACzC,CAEA,SAASK,GAA6B,CACpC,MAAO,EACT,CASA,SAAgBC,GAAmC,CACjD,OAAA,EAAOT,EAAAA,qBAAAA,CAAqBI,EAAWG,EAAaC,CAAiB,CACvE"}
1
+ {"version":3,"file":"usePrefersReducedMotion.cjs","names":["useMediaQuery","require_useMediaQuery","usePrefersReducedMotion"],"sources":["../../src/hooks/usePrefersReducedMotion.ts"],"sourcesContent":["import { useMediaQuery } from './useMediaQuery';\n\n/**\n * `true` while the user asks for reduced motion (`prefers-reduced-motion: reduce`), updated when\n * the preference changes. `false` on the server and where `matchMedia` is unavailable.\n *\n * Use it for behaviour that CSS `motion-reduce:` variants cannot express, e.g. starting a carousel\n * paused.\n */\nexport function usePrefersReducedMotion(): boolean {\n return useMediaQuery('(prefers-reduced-motion: reduce)');\n}\n"],"mappings":"oDASA,SAAgBE,GAAmC,CACjD,OAAOF,EAAAA,cAAc,kCAAkC,CACzD"}
@@ -1,24 +1,10 @@
1
1
  "use client";
2
- import { useSyncExternalStore as e } from "react";
2
+ import { useMediaQuery as e } from "./useMediaQuery.mjs";
3
3
  //#region src/hooks/usePrefersReducedMotion.ts
4
- var t = "(prefers-reduced-motion: reduce)";
5
- function n() {
6
- return typeof window > "u" || typeof window.matchMedia != "function" ? null : window.matchMedia(t);
7
- }
8
- function r(e) {
9
- let t = n();
10
- return t ? typeof t.addEventListener == "function" ? (t.addEventListener("change", e), () => t.removeEventListener("change", e)) : (t.addListener(e), () => t.removeListener(e)) : () => {};
11
- }
12
- function i() {
13
- return n()?.matches ?? !1;
14
- }
15
- function a() {
16
- return !1;
17
- }
18
- function o() {
19
- return e(r, i, a);
4
+ function t() {
5
+ return e("(prefers-reduced-motion: reduce)");
20
6
  }
21
7
  //#endregion
22
- export { o as usePrefersReducedMotion };
8
+ export { t as usePrefersReducedMotion };
23
9
 
24
10
  //# sourceMappingURL=usePrefersReducedMotion.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"usePrefersReducedMotion.mjs","names":["QUERY","getMediaQueryList","subscribe","mql","notify","getSnapshot","getServerSnapshot","usePrefersReducedMotion","useSyncExternalStore"],"sources":["../../src/hooks/usePrefersReducedMotion.ts"],"sourcesContent":["import { useSyncExternalStore } from 'react';\n\nconst QUERY = '(prefers-reduced-motion: reduce)';\n\nfunction getMediaQueryList(): MediaQueryList | null {\n if (typeof window === 'undefined' || typeof window.matchMedia !== 'function') return null;\n return window.matchMedia(QUERY);\n}\n\nfunction subscribe(notify: () => void): () => void {\n const mql = getMediaQueryList();\n if (!mql) return () => {};\n if (typeof mql.addEventListener === 'function') {\n mql.addEventListener('change', notify);\n return () => mql.removeEventListener('change', notify);\n }\n // Safari < 14\n mql.addListener(notify);\n return () => mql.removeListener(notify);\n}\n\nfunction getSnapshot(): boolean {\n return getMediaQueryList()?.matches ?? false;\n}\n\nfunction getServerSnapshot(): boolean {\n return false;\n}\n\n/**\n * `true` while the user asks for reduced motion (`prefers-reduced-motion: reduce`), updated when\n * the preference changes. `false` on the server and where `matchMedia` is unavailable.\n *\n * Use it for behaviour that CSS `motion-reduce:` variants cannot express, e.g. starting a carousel\n * paused.\n */\nexport function usePrefersReducedMotion(): boolean {\n return useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n}\n"],"mappings":";;;AAEA,IAAMA,IAAQ;AAEd,SAASC,IAA2C;CAElD,OADI,OAAO,SAAW,OAAe,OAAO,OAAO,cAAe,aAAmB,OAC9E,OAAO,WAAWD,CAAK;AAChC;AAEA,SAASE,EAAU,GAAgC;CACjD,IAAMC,IAAMF,EAAkB;CAQ9B,OAPKE,IACD,OAAOA,EAAI,oBAAqB,cAClCA,EAAI,iBAAiB,UAAUC,CAAM,SACxBD,EAAI,oBAAoB,UAAUC,CAAM,MAGvDD,EAAI,YAAYC,CAAM,SACTD,EAAI,eAAeC,CAAM,WAPf,CAAC;AAQ1B;AAEA,SAASC,IAAuB;CAC9B,OAAOJ,EAAkB,CAAC,EAAE,WAAW;AACzC;AAEA,SAASK,IAA6B;CACpC,OAAO;AACT;AASA,SAAgBC,IAAmC;CACjD,OAAOC,EAAqBN,GAAWG,GAAaC,CAAiB;AACvE"}
1
+ {"version":3,"file":"usePrefersReducedMotion.mjs","names":["usePrefersReducedMotion","useMediaQuery"],"sources":["../../src/hooks/usePrefersReducedMotion.ts"],"sourcesContent":["import { useMediaQuery } from './useMediaQuery';\n\n/**\n * `true` while the user asks for reduced motion (`prefers-reduced-motion: reduce`), updated when\n * the preference changes. `false` on the server and where `matchMedia` is unavailable.\n *\n * Use it for behaviour that CSS `motion-reduce:` variants cannot express, e.g. starting a carousel\n * paused.\n */\nexport function usePrefersReducedMotion(): boolean {\n return useMediaQuery('(prefers-reduced-motion: reduce)');\n}\n"],"mappings":";;;AASA,SAAgBA,IAAmC;CACjD,OAAOC,EAAc,kCAAkC;AACzD"}
@@ -1,2 +1,2 @@
1
- "use client";const e=require("../_virtual/_rolldown/runtime.cjs"),t=require("../lib/dev.cjs"),n=require("../lib/mergeRefs.cjs"),r=require("./useEventCallback.cjs"),i=require("../lib/direction.cjs"),a=require("../lib/focus.cjs"),o=require("./useTypeahead.cjs");let s=require("react");s=e.__toESM(s,1);var c=`[data-roving-value]`,l=new Set([`radiogroup`,`listbox`,`grid`,`treegrid`,`tablist`,`menu`,`menubar`,`tree`,`spinbutton`]),u=new Set([`slider`,`spinbutton`,`textbox`,`searchbox`]),d=new Set([`button`,`checkbox`,`color`,`file`,`hidden`,`image`,`radio`,`reset`,`submit`]),f=[`disabled`,`aria-disabled`,`data-disabled-focusable`,`data-roving-disabled`,`data-roving-value`,`data-roving-container`,`data-roving-transparent`,`tabindex`,`hidden`,`inert`,`role`,`type`,`contenteditable`];function p(e,t){if(e.hasAttribute(`data-roving-container`))return!0;if(!t||e.hasAttribute(`data-roving-transparent`))return!1;let n=e.getAttribute(`role`);return n!==null&&l.has(n)}function m(e,t,n){for(let r=e;r&&r!==t;r=r.parentElement)if(p(r,n))return!0;return!1}function h(e){return e.tabIndex>=0&&!e.hasAttribute(`disabled`)}function g(e){let{element:t}=e;if(!e.nested||h(t))return t;let n=t.querySelector(`[tabindex="0"]`);if(n)return n;let r=a.getFirstTabbable(t);return r instanceof HTMLElement?r:null}function _(e){let t=e.getAttribute(`data-roving-disabled`);return t!==null&&t!==`false`||v(e)?!0:!e.hasAttribute(`data-disabled-focusable`)&&e.getAttribute(`aria-disabled`)===`true`}function v(e){if(e.disabled===!0)return!0;try{return e.matches(`:disabled`)}catch{return!1}}function y(e){if(!e||e.nodeType!==1)return!1;let t=e,n=t.getAttribute(`role`);if(n!==null&&u.has(n))return!0;let r=t.localName;if(r===`textarea`||r===`select`)return!0;if(r===`input`)return!d.has(t.type);let i=t.closest(`[contenteditable]`);return i!==null&&i.getAttribute(`contenteditable`)!==`false`}function b(e){return!e.nested&&!y(e.element)}function x(e,t,n){let r=e.ownerDocument.defaultView;if(!r)return!1;for(let i=e;i&&i!==t;i=i.parentElement){let e=n.get(i);if(e===void 0){let t=i.parentElement;e=r.getComputedStyle(i).display===`none`||t!==null&&t.localName===`details`&&!t.hasAttribute(`open`)&&Array.from(t.children).find(e=>e.localName===`summary`)!==i,n.set(i,e)}if(e)return!0}let{visibility:i}=r.getComputedStyle(e);return i!==`hidden`&&i!==`collapse`?!1:r.getComputedStyle(t).visibility===`visible`}function S(e){let t=e.getRootNode().activeElement;return!!t&&e.contains(t)}function C(e){try{return document.createDocumentFragment().querySelector(e),!0}catch{return!1}}function w(e){return[e.value,e.disabled?0:b(e)?1:2]}function T(e,t,n,r){let i=e.some(([,e])=>e===1)?1:2,a=e.filter(([,e])=>e===i).map(([e])=>e);return n===`last-focused`&&r!==null&&a.includes(r)?r:t!==null&&t!==``&&a.includes(t)?t:a[0]??null}function E(e,t){if(!t)return e;let n=new Map(e.map(e=>[e.value,e])),r=[];for(let e of t){let t=n.get(e);t&&r.push(t)}return r}var ee=class{container=null;lastFocused=null;options={itemSelector:c,manageTabIndex:!1,items:void 0,activeValue:null,tabStop:`active`,roleComposites:!0};stamped=new WeakMap;autoValues=new WeakMap;autoCounter=0;notify=null;observer=null;dirty=!0;snapshot=``;subscribe=e=>(this.notify=e,this.observe(),()=>{this.notify=null,this.disconnect()});getSnapshot=()=>this.container?(this.dirty&&(this.dirty=!1,this.snapshot=JSON.stringify(this.resolveOwn().map(w))),this.snapshot):``;getServerSnapshot=()=>``;setContainer(e){e!==this.container&&(this.disconnect(),this.container=e,this.dirty=!0,this.notify&&(this.observe(),this.notify()))}recordFocus(e){b(e)&&(this.lastFocused=e.value)}setOptions(e){let t=this.options;this.options=e,(t.itemSelector!==e.itemSelector||t.manageTabIndex!==e.manageTabIndex||t.roleComposites!==e.roleComposites)&&(this.dirty=!0,this.notify?.())}resolve(e=this.container){return E(this.resolveOwn(e),this.options.items)}resolveOwn(e=this.container){if(!e)return[];let{itemSelector:t,manageTabIndex:n,roleComposites:r}=this.options,i;try{i=Array.from(e.querySelectorAll(t))}catch{return[]}let o=[],s=new Set,c=new Map;for(let t of i){let i=null,l=!1;for(let n=t;n&&n!==e;n=n.parentElement)p(n,r)&&(i=n),(n.hidden||n.hasAttribute(`inert`))&&(l=!0);if(l)continue;let u=i??t;if(s.has(u))continue;let d=i!==null;if(!d&&n&&(t.getAttribute(`tabindex`)===`-1`&&!this.stamped.has(t)||a.isHiddenInput(t)))continue;s.add(u);let f={value:this.valueOf(u,d),element:u,nested:d,disabled:_(u)};d&&!f.disabled&&!g(f)&&(f.disabled=!0),n&&!f.disabled&&x(u,e,c)&&(f.disabled=!0),o.push(f)}return o}stamp(){if(!this.options.manageTabIndex||!this.container)return;this.release(this.container);let e=this.resolve(),t=T(e.map(w),this.options.activeValue,this.options.tabStop,this.lastFocused);for(let n of e){if(n.nested)continue;let{element:e}=n,r=this.stamped.get(e);r||(r={tabIndex:e.getAttribute(`tabindex`),addedValue:!e.hasAttribute(`data-roving-value`)},this.stamped.set(e,r));let i=n.value===t?`0`:`-1`;e.getAttribute(`tabindex`)!==i&&e.setAttribute(`tabindex`,i),e.hasAttribute(`data-roving-value`)||e.setAttribute(`data-roving-value`,n.value)}}release(e){let t;try{t=Array.from(e.querySelectorAll(this.options.itemSelector))}catch{return}for(let n of t){let t=this.stamped.get(n);t&&m(n,e,this.options.roleComposites)&&(this.stamped.delete(n),t.tabIndex===null?n.removeAttribute(`tabindex`):n.setAttribute(`tabindex`,t.tabIndex),t.addedValue&&n.removeAttribute(`data-roving-value`))}}valueOf(e,t){let n=t?null:e.getAttribute(`data-roving-value`);if(n!==null)return n;let r=this.autoValues.get(e);return r===void 0&&(this.autoCounter+=1,r=`auto-${this.autoCounter}`,this.autoValues.set(e,r)),r}observe(){this.container&&!this.observer&&typeof MutationObserver<`u`&&(this.observer=new MutationObserver(()=>{this.stamp(),this.dirty=!0,this.notify?.()}),this.observer.observe(this.container,{subtree:!0,childList:!0,attributes:!0,attributeFilter:f}),this.dirty=!0)}disconnect(){this.observer?.disconnect(),this.observer=null}};function D(e){if(e===``)return null;try{return JSON.parse(e)}catch{return null}}function O(e){return e.getAttribute(`data-roving-text`)??e.textContent??``}function k(e,t){return!t||typeof t.nodeType!=`number`?!1:t===e||e.contains(t)}function A(e,t,n){if(e.length===0||!t||typeof t.nodeType!=`number`)return null;let r=new Map(e.map(e=>[e.element,e]));for(let e=t;e&&e!==n;e=e.parentNode){let t=r.get(e);if(t)return t}return null}function j(e,t,n){return e?t===g(e):t===n}function M(e,a){let l=a===void 0?void 0:e,{activeValue:u=null,items:d,orientation:f=`horizontal`,loop:p=!0,dir:m,itemSelector:h=c,typeahead:_=!1,homeEndKeys:v=!0,tabStop:x=`active`,manageTabIndex:w=!1,onFocusMove:E}=a??e,[M]=s.useState(()=>new ee),N=s.useSyncExternalStore(M.subscribe,M.getSnapshot,M.getServerSnapshot),[P,F]=s.useState(null),[I,L]=s.useState(null),R=l===void 0&&d===void 0;s.useLayoutEffect(()=>{M.setOptions({itemSelector:h,manageTabIndex:w,items:d,activeValue:u,tabStop:x,roleComposites:R}),l&&M.setContainer(l.current),M.stamp()}),s.useEffect(()=>{t.isDev&&!C(h)&&t.warnOnce(`useRovingTabIndex:itemSelector:${h}`,`useRovingTabIndex: itemSelector "${h}" is not a valid CSS selector in this browser; no item is navigable or tabbable.`)},[h]);let z=s.useMemo(()=>D(N),[N]),B=s.useMemo(()=>{if(!d)return z;if(z){let e=new Map(z),t=d.flatMap(t=>{let n=e.get(t);return n===void 0?[]:[[t,n]]});if(t.length>0)return t}return d.map(e=>[e,1])},[d,z]),V=B?T(B,u,x,I):u||null,H=s.useCallback(e=>e===V?0:-1,[V]),U=s.useCallback(e=>{M.setContainer(e),l&&n.setRef(l,e)},[M,l]),W=s.useRef([]),G=s.useRef([]),{onTypeahead:K,isSearching:q}=o.useTypeahead({getItems:()=>W.current,onMatch:(e,t)=>{G.current=t}}),J=e=>{if(!e||e.disabled)return!1;let t=g(e);return!t||(t.focus(),!S(t))?!1:(M.recordFocus(e),!0)},Y=e=>{for(let t of e)if(J(t))return},X=r.useEventCallback((e,t)=>{let n=e.metaKey||(e.altKey||e.ctrlKey)&&!o.isAltGraphCharacter(e);if(e.defaultPrevented||n||y(e.target))return;let r=M.container??e.currentTarget;if(!k(r,e.target))return;let a=M.resolve(r),s=a.filter(e=>!e.disabled);if(s.length===0)return;let c=A(a,e.target,r),l=!1,u=[],d=t?null:i.getArrowIntent(e.key,{orientation:f,dir:m??i.getDirection(e.currentTarget)});if(d){if(l=!0,!c)u=d===`next`?s:[...s].reverse();else{let e=d===`next`?1:-1,t=a.length,n=a.indexOf(c);for(let r=1;r<t;r++){if(n+=e,n<0||n>=t){if(!p)break;n=(n+t)%t}a[n].disabled||u.push(a[n])}}}else!t&&v&&(e.key===`Home`||e.key===`End`)?(l=!0,u=e.key===`Home`?s:[...s].reverse()):_&&j(c,e.target,r)&&(W.current=a.map(e=>({value:e.value,text:O(e.element),disabled:e.disabled})),G.current=[],K(e,c?.value??null)&&(l=!0,u=G.current.flatMap(e=>s.filter(t=>t.value===e))));if(l){e.preventDefault();for(let t of u){if(t===c)return;if(J(t)){E?.(t.value,e);return}}}}),Z=r.useEventCallback(e=>X(e,!1)),Q=r.useEventCallback(e=>{_&&e.key===` `&&q()&&X(e,!0)}),$=r.useEventCallback(e=>{let t=M.container??e.currentTarget;if(!k(t,e.target))return;let n=A(M.resolve(t),e.target,t);n&&(M.recordFocus(n),F(n.value),b(n)&&L(n.value),M.stamp())}),te=r.useEventCallback(e=>{J(M.resolve().find(t=>t.value===e))}),ne=r.useEventCallback(()=>{Y(M.resolve().filter(e=>!e.disabled))}),re=r.useEventCallback(()=>{Y(M.resolve().filter(e=>!e.disabled).reverse())});return{containerProps:s.useMemo(()=>({ref:U,"data-roving-container":``,onKeyDown:Z,onKeyDownCapture:Q,onFocus:$}),[U,Z,Q,$]),handleKeyDown:Z,handleKeyDownCapture:Q,handleFocus:$,getTabIndex:H,focusedValue:P,focusValue:te,focusFirst:ne,focusLast:re}}exports.useRovingTabIndex=M;
1
+ "use client";const e=require("../_virtual/_rolldown/runtime.cjs"),t=require("../lib/dev.cjs"),n=require("../lib/mergeRefs.cjs"),r=require("./useEventCallback.cjs"),i=require("../lib/direction.cjs"),a=require("../lib/focus.cjs"),o=require("./useTypeahead.cjs");let s=require("react");s=e.__toESM(s,1);var c=`[data-roving-value]`,l=new Set([`radiogroup`,`listbox`,`grid`,`treegrid`,`tablist`,`menu`,`menubar`,`tree`,`spinbutton`]),u=new Set([`slider`,`spinbutton`,`textbox`,`searchbox`]),d=new Set([`button`,`checkbox`,`color`,`file`,`hidden`,`image`,`radio`,`reset`,`submit`]),f=[`disabled`,`aria-disabled`,`data-disabled-focusable`,`data-roving-disabled`,`data-roving-value`,`data-roving-container`,`data-roving-transparent`,`tabindex`,`hidden`,`inert`,`role`,`type`,`contenteditable`];function p(e,t){if(e.hasAttribute(`data-roving-container`))return!0;if(!t||e.hasAttribute(`data-roving-transparent`))return!1;let n=e.getAttribute(`role`);return n!==null&&l.has(n)}function m(e,t,n){for(let r=e;r&&r!==t;r=r.parentElement)if(p(r,n))return!0;return!1}function h(e){return e.tabIndex>=0&&!e.hasAttribute(`disabled`)}function g(e){let{element:t}=e;if(!e.nested||h(t))return t;let n=t.querySelector(`[tabindex="0"]`);if(n)return n;let r=a.getFirstTabbable(t);return r instanceof HTMLElement?r:null}function _(e){let t=e.getAttribute(`data-roving-disabled`);return t!==null&&t!==`false`||v(e)?!0:!e.hasAttribute(`data-disabled-focusable`)&&e.getAttribute(`aria-disabled`)===`true`}function v(e){if(e.disabled===!0)return!0;try{return e.matches(`:disabled`)}catch{return!1}}function y(e){if(!e||e.nodeType!==1)return!1;let t=e,n=t.getAttribute(`role`);if(n!==null&&u.has(n))return!0;let r=t.localName;if(r===`textarea`||r===`select`)return!0;if(r===`input`)return!d.has(t.type);let i=t.closest(`[contenteditable]`);return i!==null&&i.getAttribute(`contenteditable`)!==`false`}function b(e){return!e.nested&&!y(e.element)}function x(e,t,n){let r=e.ownerDocument.defaultView;if(!r)return!1;for(let i=e;i&&i!==t;i=i.parentElement){let e=n.get(i);if(e===void 0){let t=i.parentElement;e=r.getComputedStyle(i).display===`none`||t!==null&&t.localName===`details`&&!t.hasAttribute(`open`)&&Array.from(t.children).find(e=>e.localName===`summary`)!==i,n.set(i,e)}if(e)return!0}let{visibility:i}=r.getComputedStyle(e);return i!==`hidden`&&i!==`collapse`?!1:r.getComputedStyle(t).visibility===`visible`}function S(e){let t=e.getRootNode().activeElement;return!!t&&e.contains(t)}function C(e){try{return document.createDocumentFragment().querySelector(e),!0}catch{return!1}}function w(e){return[e.value,e.disabled?0:b(e)?1:2]}function T(e,t,n,r){let i=e.some(([,e])=>e===1)?1:2,a=e.filter(([,e])=>e===i).map(([e])=>e);return n===`last-focused`&&r!==null&&a.includes(r)?r:t!==null&&t!==``&&a.includes(t)?t:a[0]??null}function E(e,t){if(!t)return e;let n=new Map(e.map(e=>[e.value,e])),r=[];for(let e of t){let t=n.get(e);t&&r.push(t)}return r}var D=class{container=null;lastFocused=null;options={itemSelector:c,manageTabIndex:!1,items:void 0,activeValue:null,tabStop:`active`,roleComposites:!0};stamped=new WeakMap;autoValues=new WeakMap;autoCounter=0;notify=null;observer=null;dirty=!0;snapshot=``;subscribe=e=>(this.notify=e,this.observe(),()=>{this.notify=null,this.disconnect()});getSnapshot=()=>this.container?(this.dirty&&(this.dirty=!1,this.snapshot=JSON.stringify(this.resolveOwn().map(w))),this.snapshot):``;getServerSnapshot=()=>``;setContainer(e){e!==this.container&&(this.disconnect(),this.container=e,this.dirty=!0,this.notify&&(this.observe(),this.notify()))}recordFocus(e){b(e)&&(this.lastFocused=e.value)}setOptions(e){let t=this.options;this.options=e,(t.itemSelector!==e.itemSelector||t.manageTabIndex!==e.manageTabIndex||t.roleComposites!==e.roleComposites)&&(this.dirty=!0,this.notify?.())}resolve(e=this.container){return E(this.resolveOwn(e),this.options.items)}resolveOwn(e=this.container){if(!e)return[];let{itemSelector:t,manageTabIndex:n,roleComposites:r}=this.options,i;try{i=Array.from(e.querySelectorAll(t))}catch{return[]}let o=[],s=new Set,c=new Map;for(let t of i){let i=null,l=!1;for(let n=t;n&&n!==e;n=n.parentElement)p(n,r)&&(i=n),(n.hidden||n.hasAttribute(`inert`))&&(l=!0);if(l)continue;let u=i??t;if(s.has(u))continue;let d=i!==null;if(!d&&n&&(t.getAttribute(`tabindex`)===`-1`&&!this.stamped.has(t)||a.isHiddenInput(t)))continue;s.add(u);let f={value:this.valueOf(u,d),element:u,nested:d,disabled:_(u)};d&&!f.disabled&&!g(f)&&(f.disabled=!0),n&&!f.disabled&&x(u,e,c)&&(f.disabled=!0),o.push(f)}return o}stamp(){if(!this.options.manageTabIndex||!this.container)return;this.release(this.container);let e=this.resolve(),t=this.options.tabStop===`none`?null:T(e.map(w),this.options.activeValue,this.options.tabStop,this.lastFocused);for(let n of e){if(n.nested)continue;let{element:e}=n,r=this.stamped.get(e);r||(r={tabIndex:e.getAttribute(`tabindex`),addedValue:!e.hasAttribute(`data-roving-value`)},this.stamped.set(e,r));let i=n.value===t?`0`:`-1`;e.getAttribute(`tabindex`)!==i&&e.setAttribute(`tabindex`,i),e.hasAttribute(`data-roving-value`)||e.setAttribute(`data-roving-value`,n.value)}}release(e){let t;try{t=Array.from(e.querySelectorAll(this.options.itemSelector))}catch{return}for(let n of t){let t=this.stamped.get(n);t&&m(n,e,this.options.roleComposites)&&(this.stamped.delete(n),t.tabIndex===null?n.removeAttribute(`tabindex`):n.setAttribute(`tabindex`,t.tabIndex),t.addedValue&&n.removeAttribute(`data-roving-value`))}}valueOf(e,t){let n=t?null:e.getAttribute(`data-roving-value`);if(n!==null)return n;let r=this.autoValues.get(e);return r===void 0&&(this.autoCounter+=1,r=`auto-${this.autoCounter}`,this.autoValues.set(e,r)),r}observe(){this.container&&!this.observer&&typeof MutationObserver<`u`&&(this.observer=new MutationObserver(()=>{this.stamp(),this.dirty=!0,this.notify?.()}),this.observer.observe(this.container,{subtree:!0,childList:!0,attributes:!0,attributeFilter:f}),this.dirty=!0)}disconnect(){this.observer?.disconnect(),this.observer=null}};function ee(e){if(e===``)return null;try{return JSON.parse(e)}catch{return null}}function O(e){return e.getAttribute(`data-roving-text`)??e.textContent??``}function k(e,t){return!t||typeof t.nodeType!=`number`?!1:t===e||e.contains(t)}function A(e,t,n){if(e.length===0||!t||typeof t.nodeType!=`number`)return null;let r=new Map(e.map(e=>[e.element,e]));for(let e=t;e&&e!==n;e=e.parentNode){let t=r.get(e);if(t)return t}return null}function j(e,t,n){return e?t===g(e):t===n}function M(e,a){let l=a===void 0?void 0:e,{activeValue:u=null,items:d,orientation:f=`horizontal`,loop:p=!0,dir:m,itemSelector:h=c,typeahead:_=!1,homeEndKeys:v=!0,tabStop:x=`active`,manageTabIndex:w=!1,onFocusMove:E}=a??e,[M]=s.useState(()=>new D),N=s.useSyncExternalStore(M.subscribe,M.getSnapshot,M.getServerSnapshot),[P,F]=s.useState(null),[I,L]=s.useState(null),R=l===void 0&&d===void 0;s.useLayoutEffect(()=>{M.setOptions({itemSelector:h,manageTabIndex:w,items:d,activeValue:u,tabStop:x,roleComposites:R}),l&&M.setContainer(l.current),M.stamp()}),s.useEffect(()=>{t.isDev&&!C(h)&&t.warnOnce(`useRovingTabIndex:itemSelector:${h}`,`useRovingTabIndex: itemSelector "${h}" is not a valid CSS selector in this browser; no item is navigable or tabbable.`)},[h]);let z=s.useMemo(()=>ee(N),[N]),B=s.useMemo(()=>{if(!d)return z;if(z){let e=new Map(z),t=d.flatMap(t=>{let n=e.get(t);return n===void 0?[]:[[t,n]]});if(t.length>0)return t}return d.map(e=>[e,1])},[d,z]),V=x===`none`?null:B?T(B,u,x,I):u||null,H=s.useCallback(e=>e===V?0:-1,[V]),U=s.useCallback(e=>{M.setContainer(e),l&&n.setRef(l,e)},[M,l]),W=s.useRef([]),G=s.useRef([]),{onTypeahead:K,isSearching:q}=o.useTypeahead({getItems:()=>W.current,onMatch:(e,t)=>{G.current=t}}),J=e=>{if(!e||e.disabled)return!1;let t=g(e);return!t||(t.focus(),!S(t))?!1:(M.recordFocus(e),!0)},Y=e=>{for(let t of e)if(J(t))return},X=r.useEventCallback((e,t)=>{let n=e.metaKey||(e.altKey||e.ctrlKey)&&!o.isAltGraphCharacter(e);if(e.defaultPrevented||n||y(e.target))return;let r=M.container??e.currentTarget;if(!k(r,e.target))return;let a=M.resolve(r),s=a.filter(e=>!e.disabled);if(s.length===0)return;let c=A(a,e.target,r),l=!1,u=[],d=t?null:i.getArrowIntent(e.key,{orientation:f,dir:m??i.getDirection(e.currentTarget)});if(d){if(l=!0,!c)u=d===`next`?s:[...s].reverse();else{let e=d===`next`?1:-1,t=a.length,n=a.indexOf(c);for(let r=1;r<t;r++){if(n+=e,n<0||n>=t){if(!p)break;n=(n+t)%t}a[n].disabled||u.push(a[n])}}}else!t&&v&&(e.key===`Home`||e.key===`End`)?(l=!0,u=e.key===`Home`?s:[...s].reverse()):_&&j(c,e.target,r)&&(W.current=a.map(e=>({value:e.value,text:O(e.element),disabled:e.disabled})),G.current=[],K(e,c?.value??null)&&(l=!0,u=G.current.flatMap(e=>s.filter(t=>t.value===e))));if(l){e.preventDefault();for(let t of u){if(t===c)return;if(J(t)){E?.(t.value,e);return}}}}),Z=r.useEventCallback(e=>X(e,!1)),Q=r.useEventCallback(e=>{_&&e.key===` `&&q()&&X(e,!0)}),$=r.useEventCallback(e=>{let t=M.container??e.currentTarget;if(!k(t,e.target))return;let n=A(M.resolve(t),e.target,t);n&&(M.recordFocus(n),F(n.value),b(n)&&L(n.value),M.stamp())}),te=r.useEventCallback(e=>{J(M.resolve().find(t=>t.value===e))}),ne=r.useEventCallback(()=>{Y(M.resolve().filter(e=>!e.disabled))}),re=r.useEventCallback(()=>{Y(M.resolve().filter(e=>!e.disabled).reverse())});return{containerProps:s.useMemo(()=>({ref:U,"data-roving-container":``,onKeyDown:Z,onKeyDownCapture:Q,onFocus:$}),[U,Z,Q,$]),handleKeyDown:Z,handleKeyDownCapture:Q,handleFocus:$,getTabIndex:H,focusedValue:P,focusValue:te,focusFirst:ne,focusLast:re}}exports.isHiddenByCss=x,exports.useRovingTabIndex=M;
2
2
  //# sourceMappingURL=useRovingTabIndex.cjs.map