@mortenbrudvik/waveui 0.4.0 → 0.7.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 (574) hide show
  1. package/README.md +1221 -173
  2. package/dist/_virtual/_rolldown/runtime.cjs +1 -0
  3. package/dist/components/button/Button.cjs +2 -0
  4. package/dist/components/button/Button.cjs.map +1 -0
  5. package/dist/components/button/Button.mjs +50 -0
  6. package/dist/components/button/Button.mjs.map +1 -0
  7. package/dist/components/button/Button.semantics.cjs +2 -0
  8. package/dist/components/button/Button.semantics.cjs.map +1 -0
  9. package/dist/components/button/Button.semantics.mjs +61 -0
  10. package/dist/components/button/Button.semantics.mjs.map +1 -0
  11. package/dist/components/button/Button.slots.cjs +2 -0
  12. package/dist/components/button/Button.slots.cjs.map +1 -0
  13. package/dist/components/button/Button.slots.mjs +47 -0
  14. package/dist/components/button/Button.slots.mjs.map +1 -0
  15. package/dist/components/button/CompoundButton.cjs +2 -0
  16. package/dist/components/button/CompoundButton.cjs.map +1 -0
  17. package/dist/components/button/CompoundButton.mjs +53 -0
  18. package/dist/components/button/CompoundButton.mjs.map +1 -0
  19. package/dist/components/button/Link.cjs +2 -0
  20. package/dist/components/button/Link.cjs.map +1 -0
  21. package/dist/components/button/Link.mjs +37 -0
  22. package/dist/components/button/Link.mjs.map +1 -0
  23. package/dist/components/button/MenuButton.cjs +2 -0
  24. package/dist/components/button/MenuButton.cjs.map +1 -0
  25. package/dist/components/button/MenuButton.mjs +45 -0
  26. package/dist/components/button/MenuButton.mjs.map +1 -0
  27. package/dist/components/button/SplitButton.cjs +2 -0
  28. package/dist/components/button/SplitButton.cjs.map +1 -0
  29. package/dist/components/button/SplitButton.mjs +66 -0
  30. package/dist/components/button/SplitButton.mjs.map +1 -0
  31. package/dist/components/button/ToggleButton.cjs +2 -0
  32. package/dist/components/button/ToggleButton.cjs.map +1 -0
  33. package/dist/components/button/ToggleButton.mjs +65 -0
  34. package/dist/components/button/ToggleButton.mjs.map +1 -0
  35. package/dist/components/button/Toolbar.cjs +2 -0
  36. package/dist/components/button/Toolbar.cjs.map +1 -0
  37. package/dist/components/button/Toolbar.context.cjs +2 -0
  38. package/dist/components/button/Toolbar.context.cjs.map +1 -0
  39. package/dist/components/button/Toolbar.context.mjs +31 -0
  40. package/dist/components/button/Toolbar.context.mjs.map +1 -0
  41. package/dist/components/button/Toolbar.mjs +63 -0
  42. package/dist/components/button/Toolbar.mjs.map +1 -0
  43. package/dist/components/button/Toolbar.parts.cjs +2 -0
  44. package/dist/components/button/Toolbar.parts.cjs.map +1 -0
  45. package/dist/components/button/Toolbar.parts.mjs +131 -0
  46. package/dist/components/button/Toolbar.parts.mjs.map +1 -0
  47. package/dist/components/button/buttonStyles.cjs +2 -0
  48. package/dist/components/button/buttonStyles.cjs.map +1 -0
  49. package/dist/components/button/buttonStyles.mjs +39 -0
  50. package/dist/components/button/buttonStyles.mjs.map +1 -0
  51. package/dist/components/data-display/Avatar.cjs +2 -0
  52. package/dist/components/data-display/Avatar.cjs.map +1 -0
  53. package/dist/components/data-display/Avatar.mjs +157 -0
  54. package/dist/components/data-display/Avatar.mjs.map +1 -0
  55. package/dist/components/data-display/AvatarGroup.cjs +2 -0
  56. package/dist/components/data-display/AvatarGroup.cjs.map +1 -0
  57. package/dist/components/data-display/AvatarGroup.mjs +134 -0
  58. package/dist/components/data-display/AvatarGroup.mjs.map +1 -0
  59. package/dist/components/data-display/Badge.cjs +2 -0
  60. package/dist/components/data-display/Badge.cjs.map +1 -0
  61. package/dist/components/data-display/Badge.colors.cjs +2 -0
  62. package/dist/components/data-display/Badge.colors.cjs.map +1 -0
  63. package/dist/components/data-display/Badge.colors.mjs +58 -0
  64. package/dist/components/data-display/Badge.colors.mjs.map +1 -0
  65. package/dist/components/data-display/Badge.mjs +32 -0
  66. package/dist/components/data-display/Badge.mjs.map +1 -0
  67. package/dist/components/data-display/CounterBadge.cjs +2 -0
  68. package/dist/components/data-display/CounterBadge.cjs.map +1 -0
  69. package/dist/components/data-display/CounterBadge.mjs +28 -0
  70. package/dist/components/data-display/CounterBadge.mjs.map +1 -0
  71. package/dist/components/data-display/Divider.cjs +2 -0
  72. package/dist/components/data-display/Divider.cjs.map +1 -0
  73. package/dist/components/data-display/Divider.mjs +52 -0
  74. package/dist/components/data-display/Divider.mjs.map +1 -0
  75. package/dist/components/data-display/Image.cjs +2 -0
  76. package/dist/components/data-display/Image.cjs.map +1 -0
  77. package/dist/components/data-display/Image.mjs +32 -0
  78. package/dist/components/data-display/Image.mjs.map +1 -0
  79. package/dist/components/data-display/InfoLabel.cjs +2 -0
  80. package/dist/components/data-display/InfoLabel.cjs.map +1 -0
  81. package/dist/components/data-display/InfoLabel.mjs +104 -0
  82. package/dist/components/data-display/InfoLabel.mjs.map +1 -0
  83. package/dist/components/data-display/List.cjs +2 -0
  84. package/dist/components/data-display/List.cjs.map +1 -0
  85. package/dist/components/data-display/List.mjs +381 -0
  86. package/dist/components/data-display/List.mjs.map +1 -0
  87. package/dist/components/data-display/List.registry.cjs +2 -0
  88. package/dist/components/data-display/List.registry.cjs.map +1 -0
  89. package/dist/components/data-display/List.registry.mjs +101 -0
  90. package/dist/components/data-display/List.registry.mjs.map +1 -0
  91. package/dist/components/data-display/Persona.cjs +2 -0
  92. package/dist/components/data-display/Persona.cjs.map +1 -0
  93. package/dist/components/data-display/Persona.mjs +48 -0
  94. package/dist/components/data-display/Persona.mjs.map +1 -0
  95. package/dist/components/data-display/PresenceBadge.cjs +2 -0
  96. package/dist/components/data-display/PresenceBadge.cjs.map +1 -0
  97. package/dist/components/data-display/PresenceBadge.mjs +71 -0
  98. package/dist/components/data-display/PresenceBadge.mjs.map +1 -0
  99. package/dist/components/data-display/Tag.cjs +2 -0
  100. package/dist/components/data-display/Tag.cjs.map +1 -0
  101. package/dist/components/data-display/Tag.mjs +147 -0
  102. package/dist/components/data-display/Tag.mjs.map +1 -0
  103. package/dist/components/feedback/MessageBar.cjs +2 -0
  104. package/dist/components/feedback/MessageBar.cjs.map +1 -0
  105. package/dist/components/feedback/MessageBar.mjs +144 -0
  106. package/dist/components/feedback/MessageBar.mjs.map +1 -0
  107. package/dist/components/feedback/MessageBar.status.cjs +2 -0
  108. package/dist/components/feedback/MessageBar.status.cjs.map +1 -0
  109. package/dist/components/feedback/MessageBar.status.mjs +45 -0
  110. package/dist/components/feedback/MessageBar.status.mjs.map +1 -0
  111. package/dist/components/feedback/ProgressBar.cjs +2 -0
  112. package/dist/components/feedback/ProgressBar.cjs.map +1 -0
  113. package/dist/components/feedback/ProgressBar.mjs +72 -0
  114. package/dist/components/feedback/ProgressBar.mjs.map +1 -0
  115. package/dist/components/feedback/Skeleton.cjs +2 -0
  116. package/dist/components/feedback/Skeleton.cjs.map +1 -0
  117. package/dist/components/feedback/Skeleton.mjs +47 -0
  118. package/dist/components/feedback/Skeleton.mjs.map +1 -0
  119. package/dist/components/feedback/Spinner.cjs +2 -0
  120. package/dist/components/feedback/Spinner.cjs.map +1 -0
  121. package/dist/components/feedback/Spinner.mjs +60 -0
  122. package/dist/components/feedback/Spinner.mjs.map +1 -0
  123. package/dist/components/feedback/Toast.cjs +2 -0
  124. package/dist/components/feedback/Toast.cjs.map +1 -0
  125. package/dist/components/feedback/Toast.mjs +347 -0
  126. package/dist/components/feedback/Toast.mjs.map +1 -0
  127. package/dist/components/input/Checkbox.cjs +2 -0
  128. package/dist/components/input/Checkbox.cjs.map +1 -0
  129. package/dist/components/input/Checkbox.mjs +96 -0
  130. package/dist/components/input/Checkbox.mjs.map +1 -0
  131. package/dist/components/input/ColorPicker.cjs +6 -0
  132. package/dist/components/input/ColorPicker.cjs.map +1 -0
  133. package/dist/components/input/ColorPicker.mjs +236 -0
  134. package/dist/components/input/ColorPicker.mjs.map +1 -0
  135. package/dist/components/input/Combobox.cjs +2 -0
  136. package/dist/components/input/Combobox.cjs.map +1 -0
  137. package/dist/components/input/Combobox.expand.cjs +2 -0
  138. package/dist/components/input/Combobox.expand.cjs.map +1 -0
  139. package/dist/components/input/Combobox.expand.mjs +38 -0
  140. package/dist/components/input/Combobox.expand.mjs.map +1 -0
  141. package/dist/components/input/Combobox.mjs +187 -0
  142. package/dist/components/input/Combobox.mjs.map +1 -0
  143. package/dist/components/input/DatePicker.cjs +2 -0
  144. package/dist/components/input/DatePicker.cjs.map +1 -0
  145. package/dist/components/input/DatePicker.mjs +340 -0
  146. package/dist/components/input/DatePicker.mjs.map +1 -0
  147. package/dist/components/input/Dropdown.cjs +2 -0
  148. package/dist/components/input/Dropdown.cjs.map +1 -0
  149. package/dist/components/input/Dropdown.mjs +128 -0
  150. package/dist/components/input/Dropdown.mjs.map +1 -0
  151. package/dist/components/input/Field.cjs +2 -0
  152. package/dist/components/input/Field.cjs.map +1 -0
  153. package/dist/components/input/Field.mjs +200 -0
  154. package/dist/components/input/Field.mjs.map +1 -0
  155. package/dist/components/input/Input.cjs +2 -0
  156. package/dist/components/input/Input.cjs.map +1 -0
  157. package/dist/components/input/Input.mjs +81 -0
  158. package/dist/components/input/Input.mjs.map +1 -0
  159. package/dist/components/input/Label.cjs +2 -0
  160. package/dist/components/input/Label.cjs.map +1 -0
  161. package/dist/components/input/Label.mjs +28 -0
  162. package/dist/components/input/Label.mjs.map +1 -0
  163. package/dist/components/input/Option.cjs +2 -0
  164. package/dist/components/input/Option.cjs.map +1 -0
  165. package/dist/components/input/Option.mjs +169 -0
  166. package/dist/components/input/Option.mjs.map +1 -0
  167. package/dist/components/input/RadioGroup.cjs +2 -0
  168. package/dist/components/input/RadioGroup.cjs.map +1 -0
  169. package/dist/components/input/RadioGroup.mjs +139 -0
  170. package/dist/components/input/RadioGroup.mjs.map +1 -0
  171. package/dist/components/input/Rating.cjs +2 -0
  172. package/dist/components/input/Rating.cjs.map +1 -0
  173. package/dist/components/input/Rating.mjs +196 -0
  174. package/dist/components/input/Rating.mjs.map +1 -0
  175. package/dist/components/input/SearchBox.cjs +2 -0
  176. package/dist/components/input/SearchBox.cjs.map +1 -0
  177. package/dist/components/input/SearchBox.mjs +205 -0
  178. package/dist/components/input/SearchBox.mjs.map +1 -0
  179. package/dist/components/input/Select.cjs +2 -0
  180. package/dist/components/input/Select.cjs.map +1 -0
  181. package/dist/components/input/Select.mjs +33 -0
  182. package/dist/components/input/Select.mjs.map +1 -0
  183. package/dist/components/input/Slider.cjs +2 -0
  184. package/dist/components/input/Slider.cjs.map +1 -0
  185. package/dist/components/input/Slider.mjs +79 -0
  186. package/dist/components/input/Slider.mjs.map +1 -0
  187. package/dist/components/input/SpinButton.cjs +2 -0
  188. package/dist/components/input/SpinButton.cjs.map +1 -0
  189. package/dist/components/input/SpinButton.mjs +157 -0
  190. package/dist/components/input/SpinButton.mjs.map +1 -0
  191. package/dist/components/input/SwatchPicker.cjs +2 -0
  192. package/dist/components/input/SwatchPicker.cjs.map +1 -0
  193. package/dist/components/input/SwatchPicker.mjs +113 -0
  194. package/dist/components/input/SwatchPicker.mjs.map +1 -0
  195. package/dist/components/input/Switch.cjs +2 -0
  196. package/dist/components/input/Switch.cjs.map +1 -0
  197. package/dist/components/input/Switch.mjs +92 -0
  198. package/dist/components/input/Switch.mjs.map +1 -0
  199. package/dist/components/input/TagPicker.cjs +2 -0
  200. package/dist/components/input/TagPicker.cjs.map +1 -0
  201. package/dist/components/input/TagPicker.mjs +249 -0
  202. package/dist/components/input/TagPicker.mjs.map +1 -0
  203. package/dist/components/input/Textarea.cjs +2 -0
  204. package/dist/components/input/Textarea.cjs.map +1 -0
  205. package/dist/components/input/Textarea.mjs +32 -0
  206. package/dist/components/input/Textarea.mjs.map +1 -0
  207. package/dist/components/input/TimePicker.cjs +2 -0
  208. package/dist/components/input/TimePicker.cjs.map +1 -0
  209. package/dist/components/input/TimePicker.mjs +292 -0
  210. package/dist/components/input/TimePicker.mjs.map +1 -0
  211. package/dist/components/input/colorUtils.cjs +2 -0
  212. package/dist/components/input/colorUtils.cjs.map +1 -0
  213. package/dist/components/input/colorUtils.mjs +96 -0
  214. package/dist/components/input/colorUtils.mjs.map +1 -0
  215. package/dist/components/input/dateUtils.cjs +2 -0
  216. package/dist/components/input/dateUtils.cjs.map +1 -0
  217. package/dist/components/input/dateUtils.mjs +250 -0
  218. package/dist/components/input/dateUtils.mjs.map +1 -0
  219. package/dist/components/input/pickerStyles.cjs +2 -0
  220. package/dist/components/input/pickerStyles.cjs.map +1 -0
  221. package/dist/components/input/pickerStyles.mjs +10 -0
  222. package/dist/components/input/pickerStyles.mjs.map +1 -0
  223. package/dist/components/internal/HiddenInput.cjs +2 -0
  224. package/dist/components/internal/HiddenInput.cjs.map +1 -0
  225. package/dist/components/internal/HiddenInput.mjs +88 -0
  226. package/dist/components/internal/HiddenInput.mjs.map +1 -0
  227. package/dist/components/layout/Accordion.cjs +2 -0
  228. package/dist/components/layout/Accordion.cjs.map +1 -0
  229. package/dist/components/layout/Accordion.mjs +236 -0
  230. package/dist/components/layout/Accordion.mjs.map +1 -0
  231. package/dist/components/layout/Card.cjs +2 -0
  232. package/dist/components/layout/Card.cjs.map +1 -0
  233. package/dist/components/layout/Card.mjs +121 -0
  234. package/dist/components/layout/Card.mjs.map +1 -0
  235. package/dist/components/layout/Carousel.cjs +2 -0
  236. package/dist/components/layout/Carousel.cjs.map +1 -0
  237. package/dist/components/layout/Carousel.mjs +205 -0
  238. package/dist/components/layout/Carousel.mjs.map +1 -0
  239. package/dist/components/layout/Flex.cjs +2 -0
  240. package/dist/components/layout/Flex.cjs.map +1 -0
  241. package/dist/components/layout/Flex.mjs +54 -0
  242. package/dist/components/layout/Flex.mjs.map +1 -0
  243. package/dist/components/layout/Grid.cjs +2 -0
  244. package/dist/components/layout/Grid.cjs.map +1 -0
  245. package/dist/components/layout/Grid.mjs +62 -0
  246. package/dist/components/layout/Grid.mjs.map +1 -0
  247. package/dist/components/layout/Overflow.cjs +2 -0
  248. package/dist/components/layout/Overflow.cjs.map +1 -0
  249. package/dist/components/layout/Overflow.mjs +269 -0
  250. package/dist/components/layout/Overflow.mjs.map +1 -0
  251. package/dist/components/layout/Stack.cjs +2 -0
  252. package/dist/components/layout/Stack.cjs.map +1 -0
  253. package/dist/components/layout/Stack.mjs +39 -0
  254. package/dist/components/layout/Stack.mjs.map +1 -0
  255. package/dist/components/layout/TabList.cjs +2 -0
  256. package/dist/components/layout/TabList.cjs.map +1 -0
  257. package/dist/components/layout/TabList.mjs +238 -0
  258. package/dist/components/layout/TabList.mjs.map +1 -0
  259. package/dist/components/layout/Tree.cjs +2 -0
  260. package/dist/components/layout/Tree.cjs.map +1 -0
  261. package/dist/components/layout/Tree.mjs +220 -0
  262. package/dist/components/layout/Tree.mjs.map +1 -0
  263. package/dist/components/layout/disclosureIds.cjs +2 -0
  264. package/dist/components/layout/disclosureIds.cjs.map +1 -0
  265. package/dist/components/layout/disclosureIds.mjs +12 -0
  266. package/dist/components/layout/disclosureIds.mjs.map +1 -0
  267. package/dist/components/motion/Presence.cjs +2 -0
  268. package/dist/components/motion/Presence.cjs.map +1 -0
  269. package/dist/components/motion/Presence.mjs +35 -0
  270. package/dist/components/motion/Presence.mjs.map +1 -0
  271. package/dist/components/navigation/Breadcrumb.cjs +2 -0
  272. package/dist/components/navigation/Breadcrumb.cjs.map +1 -0
  273. package/dist/components/navigation/Breadcrumb.mjs +144 -0
  274. package/dist/components/navigation/Breadcrumb.mjs.map +1 -0
  275. package/dist/components/navigation/Menu.cjs +2 -0
  276. package/dist/components/navigation/Menu.cjs.map +1 -0
  277. package/dist/components/navigation/Menu.context.cjs +2 -0
  278. package/dist/components/navigation/Menu.context.cjs.map +1 -0
  279. package/dist/components/navigation/Menu.context.mjs +82 -0
  280. package/dist/components/navigation/Menu.context.mjs.map +1 -0
  281. package/dist/components/navigation/Menu.group.cjs +2 -0
  282. package/dist/components/navigation/Menu.group.cjs.map +1 -0
  283. package/dist/components/navigation/Menu.group.mjs +58 -0
  284. package/dist/components/navigation/Menu.group.mjs.map +1 -0
  285. package/dist/components/navigation/Menu.items.cjs +2 -0
  286. package/dist/components/navigation/Menu.items.cjs.map +1 -0
  287. package/dist/components/navigation/Menu.items.mjs +127 -0
  288. package/dist/components/navigation/Menu.items.mjs.map +1 -0
  289. package/dist/components/navigation/Menu.link.cjs +2 -0
  290. package/dist/components/navigation/Menu.link.cjs.map +1 -0
  291. package/dist/components/navigation/Menu.link.mjs +41 -0
  292. package/dist/components/navigation/Menu.link.mjs.map +1 -0
  293. package/dist/components/navigation/Menu.mjs +27 -0
  294. package/dist/components/navigation/Menu.mjs.map +1 -0
  295. package/dist/components/navigation/Menu.popover.cjs +2 -0
  296. package/dist/components/navigation/Menu.popover.cjs.map +1 -0
  297. package/dist/components/navigation/Menu.popover.mjs +231 -0
  298. package/dist/components/navigation/Menu.popover.mjs.map +1 -0
  299. package/dist/components/navigation/Menu.root.cjs +2 -0
  300. package/dist/components/navigation/Menu.root.cjs.map +1 -0
  301. package/dist/components/navigation/Menu.root.mjs +308 -0
  302. package/dist/components/navigation/Menu.root.mjs.map +1 -0
  303. package/dist/components/navigation/Menu.selectable.cjs +2 -0
  304. package/dist/components/navigation/Menu.selectable.cjs.map +1 -0
  305. package/dist/components/navigation/Menu.selectable.mjs +89 -0
  306. package/dist/components/navigation/Menu.selectable.mjs.map +1 -0
  307. package/dist/components/navigation/Menu.shared.cjs +2 -0
  308. package/dist/components/navigation/Menu.shared.cjs.map +1 -0
  309. package/dist/components/navigation/Menu.shared.mjs +23 -0
  310. package/dist/components/navigation/Menu.shared.mjs.map +1 -0
  311. package/dist/components/navigation/Menu.splitGroup.cjs +2 -0
  312. package/dist/components/navigation/Menu.splitGroup.cjs.map +1 -0
  313. package/dist/components/navigation/Menu.splitGroup.mjs +51 -0
  314. package/dist/components/navigation/Menu.splitGroup.mjs.map +1 -0
  315. package/dist/components/navigation/Menu.trigger.cjs +2 -0
  316. package/dist/components/navigation/Menu.trigger.cjs.map +1 -0
  317. package/dist/components/navigation/Menu.trigger.mjs +79 -0
  318. package/dist/components/navigation/Menu.trigger.mjs.map +1 -0
  319. package/dist/components/navigation/Nav.cjs +2 -0
  320. package/dist/components/navigation/Nav.cjs.map +1 -0
  321. package/dist/components/navigation/Nav.mjs +276 -0
  322. package/dist/components/navigation/Nav.mjs.map +1 -0
  323. package/dist/components/navigation/Pagination.cjs +2 -0
  324. package/dist/components/navigation/Pagination.cjs.map +1 -0
  325. package/dist/components/navigation/Pagination.mjs +110 -0
  326. package/dist/components/navigation/Pagination.mjs.map +1 -0
  327. package/dist/components/navigation/Stepper.cjs +2 -0
  328. package/dist/components/navigation/Stepper.cjs.map +1 -0
  329. package/dist/components/navigation/Stepper.mjs +204 -0
  330. package/dist/components/navigation/Stepper.mjs.map +1 -0
  331. package/dist/components/overlays/Dialog.cjs +2 -0
  332. package/dist/components/overlays/Dialog.cjs.map +1 -0
  333. package/dist/components/overlays/Dialog.mjs +180 -0
  334. package/dist/components/overlays/Dialog.mjs.map +1 -0
  335. package/dist/components/overlays/Dialog.shared.cjs +2 -0
  336. package/dist/components/overlays/Dialog.shared.cjs.map +1 -0
  337. package/dist/components/overlays/Dialog.shared.mjs +227 -0
  338. package/dist/components/overlays/Dialog.shared.mjs.map +1 -0
  339. package/dist/components/overlays/Drawer.cjs +2 -0
  340. package/dist/components/overlays/Drawer.cjs.map +1 -0
  341. package/dist/components/overlays/Drawer.mjs +192 -0
  342. package/dist/components/overlays/Drawer.mjs.map +1 -0
  343. package/dist/components/overlays/Popover.cjs +2 -0
  344. package/dist/components/overlays/Popover.cjs.map +1 -0
  345. package/dist/components/overlays/Popover.mjs +365 -0
  346. package/dist/components/overlays/Popover.mjs.map +1 -0
  347. package/dist/components/overlays/Popover.shared.cjs +2 -0
  348. package/dist/components/overlays/Popover.shared.cjs.map +1 -0
  349. package/dist/components/overlays/Popover.shared.mjs +182 -0
  350. package/dist/components/overlays/Popover.shared.mjs.map +1 -0
  351. package/dist/components/overlays/TeachingPopover.cjs +2 -0
  352. package/dist/components/overlays/TeachingPopover.cjs.map +1 -0
  353. package/dist/components/overlays/TeachingPopover.mjs +181 -0
  354. package/dist/components/overlays/TeachingPopover.mjs.map +1 -0
  355. package/dist/components/overlays/Tooltip.cjs +2 -0
  356. package/dist/components/overlays/Tooltip.cjs.map +1 -0
  357. package/dist/components/overlays/Tooltip.mjs +160 -0
  358. package/dist/components/overlays/Tooltip.mjs.map +1 -0
  359. package/dist/components/portal/Portal.cjs +2 -0
  360. package/dist/components/portal/Portal.cjs.map +1 -0
  361. package/dist/components/portal/Portal.mjs +45 -0
  362. package/dist/components/portal/Portal.mjs.map +1 -0
  363. package/dist/components/provider/WaveProvider.cjs +2 -0
  364. package/dist/components/provider/WaveProvider.cjs.map +1 -0
  365. package/dist/components/provider/WaveProvider.mjs +51 -0
  366. package/dist/components/provider/WaveProvider.mjs.map +1 -0
  367. package/dist/components/table/DataGrid.cjs +2 -0
  368. package/dist/components/table/DataGrid.cjs.map +1 -0
  369. package/dist/components/table/DataGrid.mjs +489 -0
  370. package/dist/components/table/DataGrid.mjs.map +1 -0
  371. package/dist/components/table/Table.cjs +2 -0
  372. package/dist/components/table/Table.cjs.map +1 -0
  373. package/dist/components/table/Table.mjs +99 -0
  374. package/dist/components/table/Table.mjs.map +1 -0
  375. package/dist/components/table/useGridNavigation.cjs +2 -0
  376. package/dist/components/table/useGridNavigation.cjs.map +1 -0
  377. package/dist/components/table/useGridNavigation.mjs +336 -0
  378. package/dist/components/table/useGridNavigation.mjs.map +1 -0
  379. package/dist/components/typography/Text.cjs +2 -0
  380. package/dist/components/typography/Text.cjs.map +1 -0
  381. package/dist/components/typography/Text.mjs +38 -0
  382. package/dist/components/typography/Text.mjs.map +1 -0
  383. package/dist/hooks/useAnnounce.cjs +2 -0
  384. package/dist/hooks/useAnnounce.cjs.map +1 -0
  385. package/dist/hooks/useAnnounce.mjs +88 -0
  386. package/dist/hooks/useAnnounce.mjs.map +1 -0
  387. package/dist/hooks/useCheckedValues.cjs +2 -0
  388. package/dist/hooks/useCheckedValues.cjs.map +1 -0
  389. package/dist/hooks/useCheckedValues.mjs +102 -0
  390. package/dist/hooks/useCheckedValues.mjs.map +1 -0
  391. package/dist/hooks/useContextMenuAnchor.cjs +2 -0
  392. package/dist/hooks/useContextMenuAnchor.cjs.map +1 -0
  393. package/dist/hooks/useContextMenuAnchor.mjs +132 -0
  394. package/dist/hooks/useContextMenuAnchor.mjs.map +1 -0
  395. package/dist/hooks/useControllable.cjs +2 -0
  396. package/dist/hooks/useControllable.cjs.map +1 -0
  397. package/dist/hooks/useControllable.mjs +37 -0
  398. package/dist/hooks/useControllable.mjs.map +1 -0
  399. package/dist/hooks/useDirection.cjs +2 -0
  400. package/dist/hooks/useDirection.cjs.map +1 -0
  401. package/dist/hooks/useDirection.mjs +57 -0
  402. package/dist/hooks/useDirection.mjs.map +1 -0
  403. package/dist/hooks/useDismiss.cjs +2 -0
  404. package/dist/hooks/useDismiss.cjs.map +1 -0
  405. package/dist/hooks/useDismiss.mjs +57 -0
  406. package/dist/hooks/useDismiss.mjs.map +1 -0
  407. package/dist/hooks/useEventCallback.cjs +2 -0
  408. package/dist/hooks/useEventCallback.cjs.map +1 -0
  409. package/dist/hooks/useEventCallback.mjs +16 -0
  410. package/dist/hooks/useEventCallback.mjs.map +1 -0
  411. package/dist/hooks/useFieldControl.cjs +2 -0
  412. package/dist/hooks/useFieldControl.cjs.map +1 -0
  413. package/dist/hooks/useFieldControl.mjs +62 -0
  414. package/dist/hooks/useFieldControl.mjs.map +1 -0
  415. package/dist/hooks/useFocusTrap.cjs +2 -0
  416. package/dist/hooks/useFocusTrap.cjs.map +1 -0
  417. package/dist/hooks/useFocusTrap.mjs +266 -0
  418. package/dist/hooks/useFocusTrap.mjs.map +1 -0
  419. package/dist/hooks/useFormReset.cjs +2 -0
  420. package/dist/hooks/useFormReset.cjs.map +1 -0
  421. package/dist/hooks/useFormReset.mjs +33 -0
  422. package/dist/hooks/useFormReset.mjs.map +1 -0
  423. package/dist/hooks/useHoverIntent.cjs +2 -0
  424. package/dist/hooks/useHoverIntent.cjs.map +1 -0
  425. package/dist/hooks/useHoverIntent.mjs +201 -0
  426. package/dist/hooks/useHoverIntent.mjs.map +1 -0
  427. package/dist/hooks/useId.cjs +2 -0
  428. package/dist/hooks/useId.cjs.map +1 -0
  429. package/dist/hooks/useId.mjs +11 -0
  430. package/dist/hooks/useId.mjs.map +1 -0
  431. package/dist/hooks/useIsClient.cjs +2 -0
  432. package/dist/hooks/useIsClient.cjs.map +1 -0
  433. package/dist/hooks/useIsClient.mjs +19 -0
  434. package/dist/hooks/useIsClient.mjs.map +1 -0
  435. package/dist/hooks/useListbox.cjs +2 -0
  436. package/dist/hooks/useListbox.cjs.map +1 -0
  437. package/dist/hooks/useListbox.mjs +492 -0
  438. package/dist/hooks/useListbox.mjs.map +1 -0
  439. package/dist/hooks/useMergedRefs.cjs +2 -0
  440. package/dist/hooks/useMergedRefs.cjs.map +1 -0
  441. package/dist/hooks/useMergedRefs.mjs +57 -0
  442. package/dist/hooks/useMergedRefs.mjs.map +1 -0
  443. package/dist/hooks/useModalIsolation.cjs +2 -0
  444. package/dist/hooks/useModalIsolation.cjs.map +1 -0
  445. package/dist/hooks/useModalIsolation.mjs +87 -0
  446. package/dist/hooks/useModalIsolation.mjs.map +1 -0
  447. package/dist/hooks/useModalLayer.cjs +2 -0
  448. package/dist/hooks/useModalLayer.cjs.map +1 -0
  449. package/dist/hooks/useModalLayer.mjs +30 -0
  450. package/dist/hooks/useModalLayer.mjs.map +1 -0
  451. package/dist/hooks/usePopupPosition.cjs +2 -0
  452. package/dist/hooks/usePopupPosition.cjs.map +1 -0
  453. package/dist/hooks/usePopupPosition.mjs +117 -0
  454. package/dist/hooks/usePopupPosition.mjs.map +1 -0
  455. package/dist/hooks/usePrefersReducedMotion.cjs +2 -0
  456. package/dist/hooks/usePrefersReducedMotion.cjs.map +1 -0
  457. package/dist/hooks/usePrefersReducedMotion.mjs +24 -0
  458. package/dist/hooks/usePrefersReducedMotion.mjs.map +1 -0
  459. package/dist/hooks/usePresence.cjs +2 -0
  460. package/dist/hooks/usePresence.cjs.map +1 -0
  461. package/dist/hooks/usePresence.mjs +136 -0
  462. package/dist/hooks/usePresence.mjs.map +1 -0
  463. package/dist/hooks/usePreserveFocus.cjs +2 -0
  464. package/dist/hooks/usePreserveFocus.cjs.map +1 -0
  465. package/dist/hooks/usePreserveFocus.mjs +50 -0
  466. package/dist/hooks/usePreserveFocus.mjs.map +1 -0
  467. package/dist/hooks/useRestoreFocus.cjs +2 -0
  468. package/dist/hooks/useRestoreFocus.cjs.map +1 -0
  469. package/dist/hooks/useRestoreFocus.mjs +271 -0
  470. package/dist/hooks/useRestoreFocus.mjs.map +1 -0
  471. package/dist/hooks/useRovingTabIndex.cjs +2 -0
  472. package/dist/hooks/useRovingTabIndex.cjs.map +1 -0
  473. package/dist/hooks/useRovingTabIndex.mjs +389 -0
  474. package/dist/hooks/useRovingTabIndex.mjs.map +1 -0
  475. package/dist/hooks/useScrollLock.cjs +2 -0
  476. package/dist/hooks/useScrollLock.cjs.map +1 -0
  477. package/dist/hooks/useScrollLock.mjs +71 -0
  478. package/dist/hooks/useScrollLock.mjs.map +1 -0
  479. package/dist/hooks/useTriggerElement.cjs +2 -0
  480. package/dist/hooks/useTriggerElement.cjs.map +1 -0
  481. package/dist/hooks/useTriggerElement.mjs +126 -0
  482. package/dist/hooks/useTriggerElement.mjs.map +1 -0
  483. package/dist/hooks/useTypeahead.cjs +2 -0
  484. package/dist/hooks/useTypeahead.cjs.map +1 -0
  485. package/dist/hooks/useTypeahead.mjs +38 -0
  486. package/dist/hooks/useTypeahead.mjs.map +1 -0
  487. package/dist/index.cjs +1 -1
  488. package/dist/index.d.cts +9099 -0
  489. package/dist/index.d.ts +7688 -1027
  490. package/dist/index.mjs +91 -5695
  491. package/dist/lib/aria.cjs +2 -0
  492. package/dist/lib/aria.cjs.map +1 -0
  493. package/dist/lib/aria.mjs +29 -0
  494. package/dist/lib/aria.mjs.map +1 -0
  495. package/dist/lib/children.cjs +2 -0
  496. package/dist/lib/children.cjs.map +1 -0
  497. package/dist/lib/children.mjs +37 -0
  498. package/dist/lib/children.mjs.map +1 -0
  499. package/dist/lib/cn.cjs +2 -0
  500. package/dist/lib/cn.cjs.map +1 -0
  501. package/dist/lib/cn.mjs +64 -0
  502. package/dist/lib/cn.mjs.map +1 -0
  503. package/dist/lib/composeEventHandlers.cjs +2 -0
  504. package/dist/lib/composeEventHandlers.cjs.map +1 -0
  505. package/dist/lib/composeEventHandlers.mjs +11 -0
  506. package/dist/lib/composeEventHandlers.mjs.map +1 -0
  507. package/dist/lib/dev.cjs +2 -0
  508. package/dist/lib/dev.cjs.map +1 -0
  509. package/dist/lib/dev.mjs +42 -0
  510. package/dist/lib/dev.mjs.map +1 -0
  511. package/dist/lib/direction.cjs +2 -0
  512. package/dist/lib/direction.cjs.map +1 -0
  513. package/dist/lib/direction.mjs +35 -0
  514. package/dist/lib/direction.mjs.map +1 -0
  515. package/dist/lib/events.cjs +2 -0
  516. package/dist/lib/events.cjs.map +1 -0
  517. package/dist/lib/events.mjs +31 -0
  518. package/dist/lib/events.mjs.map +1 -0
  519. package/dist/lib/focus.cjs +2 -0
  520. package/dist/lib/focus.cjs.map +1 -0
  521. package/dist/lib/focus.mjs +119 -0
  522. package/dist/lib/focus.mjs.map +1 -0
  523. package/dist/lib/globalRegistry.cjs +2 -0
  524. package/dist/lib/globalRegistry.cjs.map +1 -0
  525. package/dist/lib/globalRegistry.mjs +13 -0
  526. package/dist/lib/globalRegistry.mjs.map +1 -0
  527. package/dist/lib/icons.cjs +2 -0
  528. package/dist/lib/icons.cjs.map +1 -0
  529. package/dist/lib/icons.mjs +254 -0
  530. package/dist/lib/icons.mjs.map +1 -0
  531. package/dist/lib/labelInName.cjs +2 -0
  532. package/dist/lib/labelInName.cjs.map +1 -0
  533. package/dist/lib/labelInName.mjs +54 -0
  534. package/dist/lib/labelInName.mjs.map +1 -0
  535. package/dist/lib/layers.cjs +2 -0
  536. package/dist/lib/layers.cjs.map +1 -0
  537. package/dist/lib/layers.mjs +224 -0
  538. package/dist/lib/layers.mjs.map +1 -0
  539. package/dist/lib/mergeProps.cjs +2 -0
  540. package/dist/lib/mergeProps.cjs.map +1 -0
  541. package/dist/lib/mergeProps.mjs +21 -0
  542. package/dist/lib/mergeProps.mjs.map +1 -0
  543. package/dist/lib/mergeRefs.cjs +2 -0
  544. package/dist/lib/mergeRefs.cjs.map +1 -0
  545. package/dist/lib/mergeRefs.mjs +29 -0
  546. package/dist/lib/mergeRefs.mjs.map +1 -0
  547. package/dist/lib/renderTrigger.cjs +2 -0
  548. package/dist/lib/renderTrigger.cjs.map +1 -0
  549. package/dist/lib/renderTrigger.mjs +29 -0
  550. package/dist/lib/renderTrigger.mjs.map +1 -0
  551. package/dist/lib/slot.cjs +2 -0
  552. package/dist/lib/slot.cjs.map +1 -0
  553. package/dist/lib/slot.mjs +122 -0
  554. package/dist/lib/slot.mjs.map +1 -0
  555. package/dist/lib/styles.cjs +2 -0
  556. package/dist/lib/styles.cjs.map +1 -0
  557. package/dist/lib/styles.mjs +16 -0
  558. package/dist/lib/styles.mjs.map +1 -0
  559. package/dist/lib/theme.cjs +2 -0
  560. package/dist/lib/theme.cjs.map +1 -0
  561. package/dist/lib/theme.mjs +16 -0
  562. package/dist/lib/theme.mjs.map +1 -0
  563. package/dist/preflight.css +2 -0
  564. package/dist/styles.css +2 -0
  565. package/package.json +149 -100
  566. package/src/styles/animations.css +7 -39
  567. package/src/styles/base.css +103 -0
  568. package/src/styles/globals.css +10 -22
  569. package/src/styles/legacy-tokens.css +184 -0
  570. package/src/styles/preflight.css +7 -0
  571. package/src/styles/styles.css +32 -0
  572. package/src/styles/tailwind.css +17 -0
  573. package/src/styles/tokens.css +561 -221
  574. package/src/styles/variants.css +29 -0
@@ -0,0 +1,119 @@
1
+ //#region src/lib/focus.ts
2
+ var e = [
3
+ "a[href]",
4
+ "area[href]",
5
+ "button",
6
+ "input",
7
+ "select",
8
+ "textarea",
9
+ "iframe",
10
+ "audio[controls]",
11
+ "video[controls]",
12
+ "summary",
13
+ "[contenteditable]:not([contenteditable=\"false\"])"
14
+ ].join(", "), t = `${e}, [tabindex]`;
15
+ function n(e) {
16
+ let t = e.getAttribute("tabindex");
17
+ if (t === null) return null;
18
+ let n = Number.parseInt(t, 10);
19
+ return Number.isNaN(n) ? null : n;
20
+ }
21
+ function r(t) {
22
+ return t.matches(e);
23
+ }
24
+ function i(e) {
25
+ let t = n(e);
26
+ return t === null ? r(e) ? 0 : -1 : t;
27
+ }
28
+ function a(e) {
29
+ try {
30
+ return e.matches(":disabled");
31
+ } catch {
32
+ return e.disabled === !0;
33
+ }
34
+ }
35
+ function o(e) {
36
+ return e.localName === "input" && e.type === "hidden";
37
+ }
38
+ function s(e) {
39
+ let t = e.parentElement;
40
+ return !t || t.localName !== "details" ? !1 : Array.from(t.children).find((e) => e.localName === "summary") === e;
41
+ }
42
+ function c(e) {
43
+ let t = e.ownerDocument.defaultView;
44
+ return t ? t.getComputedStyle(e) : null;
45
+ }
46
+ function l(e, t) {
47
+ let n = t?.get(e);
48
+ if (n !== void 0) return n;
49
+ let r = !1;
50
+ if (e.hasAttribute("hidden") || c(e)?.display === "none") r = !0;
51
+ else {
52
+ let n = e.parentElement;
53
+ n && (r = n.localName === "details" && !n.hasAttribute("open") && e !== Array.from(n.children).find((e) => e.localName === "summary") || l(n, t));
54
+ }
55
+ return t?.set(e, r), r;
56
+ }
57
+ function u(e, t) {
58
+ if (e.closest("[inert]") || l(e, t)) return !0;
59
+ let n = c(e)?.visibility;
60
+ return n === "hidden" || n === "collapse";
61
+ }
62
+ function d(e, t) {
63
+ return !r(e) && n(e) === null || a(e) || o(e) || e.localName === "summary" && !s(e) && n(e) === null ? !1 : !u(e, t);
64
+ }
65
+ function f(e) {
66
+ let t = e.form;
67
+ return (t ? Array.from(t.elements) : Array.from(e.getRootNode().querySelectorAll("input[type=\"radio\"]"))).filter((n) => n.localName === "input" && n.type === "radio" && n.name === e.name && n.form === t);
68
+ }
69
+ function p(e) {
70
+ return e.getRootNode().activeElement ?? null;
71
+ }
72
+ function m(e) {
73
+ if (e.localName !== "input") return !0;
74
+ let t = e;
75
+ if (t.type !== "radio" || !t.name) return !0;
76
+ let n = f(t), r = p(t);
77
+ if (r && n.includes(r)) return r === t;
78
+ let i = n.find((e) => e.checked);
79
+ return !i || i === t;
80
+ }
81
+ function h(e, t) {
82
+ return d(e, t) && i(e) >= 0 && m(e);
83
+ }
84
+ function g(e) {
85
+ return d(e);
86
+ }
87
+ function _(e, n) {
88
+ let r = /* @__PURE__ */ new Map(), a = Array.from(e.querySelectorAll(t));
89
+ n?.includeContainer && e.matches(t) && a.unshift(e);
90
+ let o = a.filter((e) => h(e, r)), s = o.map((e, t) => ({
91
+ el: e,
92
+ index: t,
93
+ tabIndex: i(e)
94
+ })).filter((e) => e.tabIndex > 0).sort((e, t) => e.tabIndex - t.tabIndex || e.index - t.index).map((e) => e.el), c = o.filter((e) => i(e) === 0);
95
+ return [...s, ...c];
96
+ }
97
+ function v(e, t) {
98
+ return _(e, t)[0] ?? null;
99
+ }
100
+ function y(e, t) {
101
+ let n = _(e, t);
102
+ return n[n.length - 1] ?? null;
103
+ }
104
+ function b(e) {
105
+ return !!e && e.isConnected && g(e);
106
+ }
107
+ function x(e, t) {
108
+ if (!e || !b(e)) return !1;
109
+ try {
110
+ e.focus(t);
111
+ } catch {
112
+ return !1;
113
+ }
114
+ return e.ownerDocument.activeElement === e;
115
+ }
116
+ //#endregion
117
+ export { t as FOCUSABLE_SELECTOR, x as focusElement, v as getFirstTabbable, y as getLastTabbable, _ as getTabbableElements, b as isConnectedAndFocusable, g as isFocusable, o as isHiddenInput };
118
+
119
+ //# sourceMappingURL=focus.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"focus.mjs","names":["NATIVELY_FOCUSABLE_SELECTOR","FOCUSABLE_SELECTOR","parseTabIndexAttribute","value","el","parsed","isNativelyFocusable","getTabIndex","attribute","isDisabled","isHiddenInput","isDetailsSummary","parent","summary","child","getComputed","view","isRemovedFromLayout","cached","cache","hidden","isHidden","visibility","isFocusableInternal","getRadioGroup","form","radio","getActiveElementFor","isRadioTabStop","group","active","checked","member","isTabbableInternal","isFocusable","getTabbableElements","candidates","container","options","tabbable","positive","entry","a","b","natural","getFirstTabbable","getLastTabbable","isConnectedAndFocusable","focusElement"],"sources":["../../src/lib/focus.ts"],"sourcesContent":["/**\n * Focus utilities that work in browsers and in jsdom (no layout APIs such as `offsetParent` or\n * `getClientRects`; visibility comes from attributes and computed style).\n */\n\nconst NATIVELY_FOCUSABLE_SELECTOR = [\n 'a[href]',\n 'area[href]',\n 'button',\n 'input',\n 'select',\n 'textarea',\n 'iframe',\n 'audio[controls]',\n 'video[controls]',\n 'summary',\n '[contenteditable]:not([contenteditable=\"false\"])',\n].join(', ');\n\n/**\n * Selector for every element that may be able to receive focus. Candidates are filtered further by\n * {@link isFocusable} (disabled, hidden, inert, …) and {@link isTabbable}.\n */\nexport const FOCUSABLE_SELECTOR = `${NATIVELY_FOCUSABLE_SELECTOR}, [tabindex]`;\n\ntype HiddenCache = Map<Element, boolean>;\n\nfunction parseTabIndexAttribute(el: Element): number | null {\n const value = el.getAttribute('tabindex');\n if (value === null) return null;\n const parsed = Number.parseInt(value, 10);\n return Number.isNaN(parsed) ? null : parsed;\n}\n\nfunction isNativelyFocusable(el: Element): boolean {\n return el.matches(NATIVELY_FOCUSABLE_SELECTOR);\n}\n\n/** The tab index browsers use (jsdom reports -1 for contenteditable and 0 for `<a>` without href). */\nfunction getTabIndex(el: Element): number {\n const attribute = parseTabIndexAttribute(el);\n if (attribute !== null) return attribute;\n return isNativelyFocusable(el) ? 0 : -1;\n}\n\nfunction isDisabled(el: Element): boolean {\n try {\n return el.matches(':disabled');\n } catch {\n return (el as { disabled?: unknown }).disabled === true;\n }\n}\n\n/** Whether `el` is an `<input type=\"hidden\">` (a form value, never focusable). */\nexport function isHiddenInput(el: Element): boolean {\n return el.localName === 'input' && (el as HTMLInputElement).type === 'hidden';\n}\n\n/** `<summary>` is focusable only as the first summary child of a `<details>`. */\nfunction isDetailsSummary(summary: Element): boolean {\n const parent = summary.parentElement;\n if (!parent || parent.localName !== 'details') return false;\n return Array.from(parent.children).find((child) => child.localName === 'summary') === summary;\n}\n\nfunction getComputed(el: Element): CSSStyleDeclaration | null {\n const view = el.ownerDocument.defaultView;\n return view ? view.getComputedStyle(el) : null;\n}\n\n/** Hidden by `hidden`, `display: none` on itself or an ancestor, or a closed `<details>`. */\nfunction isRemovedFromLayout(el: Element, cache?: HiddenCache): boolean {\n const cached = cache?.get(el);\n if (cached !== undefined) return cached;\n\n let hidden = false;\n if (el.hasAttribute('hidden') || getComputed(el)?.display === 'none') {\n hidden = true;\n } else {\n const parent = el.parentElement;\n if (parent) {\n if (parent.localName === 'details' && !parent.hasAttribute('open')) {\n // Only the first <summary> of a closed <details> is rendered.\n const summary = Array.from(parent.children).find((child) => child.localName === 'summary');\n hidden = el !== summary || isRemovedFromLayout(parent, cache);\n } else {\n hidden = isRemovedFromLayout(parent, cache);\n }\n }\n }\n\n cache?.set(el, hidden);\n return hidden;\n}\n\nfunction isHidden(el: Element, cache?: HiddenCache): boolean {\n if (el.closest('[inert]')) return true;\n if (isRemovedFromLayout(el, cache)) return true;\n const visibility = getComputed(el)?.visibility;\n return visibility === 'hidden' || visibility === 'collapse';\n}\n\nfunction isFocusableInternal(el: Element, cache?: HiddenCache): boolean {\n if (!isNativelyFocusable(el) && parseTabIndexAttribute(el) === null) return false;\n if (isDisabled(el) || isHiddenInput(el)) return false;\n if (el.localName === 'summary' && !isDetailsSummary(el) && parseTabIndexAttribute(el) === null) {\n return false;\n }\n return !isHidden(el, cache);\n}\n\nfunction getRadioGroup(radio: HTMLInputElement): HTMLInputElement[] {\n const form = radio.form;\n const candidates: Element[] = form\n ? Array.from(form.elements)\n : Array.from(\n (radio.getRootNode() as Document | ShadowRoot).querySelectorAll('input[type=\"radio\"]'),\n );\n return candidates.filter(\n (el): el is HTMLInputElement =>\n el.localName === 'input' &&\n (el as HTMLInputElement).type === 'radio' &&\n (el as HTMLInputElement).name === radio.name &&\n (el as HTMLInputElement).form === form,\n );\n}\n\n/**\n * The focused element of `el`'s document or shadow root (`null` when `el` is disconnected). Duck\n * typed rather than `instanceof`, so elements of another realm (iframes) work too.\n */\nfunction getActiveElementFor(el: Element): Element | null {\n const root = el.getRootNode() as Node & { activeElement?: Element | null };\n return root.activeElement ?? null;\n}\n\n/**\n * A named radio group is one tab stop, following browsers (Chromium's\n * `RadioInputType::IsKeyboardFocusable`, the `tabbable` library):\n * - while focus is on a member of the group, only that member (Tab and Shift+Tab leave the group);\n * - otherwise the checked radio (the whole group is skipped when it cannot take focus);\n * - otherwise, with no checked radio, every member: Tab enters at the first one, Shift+Tab at the\n * last one, so both `getFirstTabbable` and `getLastTabbable` return the browser's entry radio.\n * Members that are not focusable (disabled, hidden) are filtered out before this check.\n */\nfunction isRadioTabStop(el: Element): boolean {\n if (el.localName !== 'input') return true;\n const radio = el as HTMLInputElement;\n if (radio.type !== 'radio' || !radio.name) return true;\n const group = getRadioGroup(radio);\n const active = getActiveElementFor(radio);\n if (active && (group as Element[]).includes(active)) return active === radio;\n const checked = group.find((member) => member.checked);\n return checked ? checked === radio : true;\n}\n\nfunction isTabbableInternal(el: Element, cache?: HiddenCache): boolean {\n return isFocusableInternal(el, cache) && getTabIndex(el) >= 0 && isRadioTabStop(el);\n}\n\n/**\n * Whether `el` can receive focus (programmatically or by pointer): a natively focusable element or\n * one with a valid `tabindex`, that is not disabled (including via a disabled `<fieldset>`), not\n * `input[type=hidden]`, and not inside `[inert]`, `[hidden]`, `display: none`, `visibility:\n * hidden` or a closed `<details>` (except its summary).\n */\nexport function isFocusable(el: Element): boolean {\n return isFocusableInternal(el);\n}\n\n/**\n * Whether `el` is reached by Tab: focusable, `tabIndex >= 0`, and — for a radio in a named group —\n * the group's tab stop: the focused member while focus is in the group, else the checked radio,\n * else (nothing checked) every focusable member, as browsers enter such a group at its first radio\n * going forward and at its last radio going backward.\n */\nexport function isTabbable(el: Element): boolean {\n return isTabbableInternal(el);\n}\n\n/**\n * The tabbable elements inside `container` in sequential focus order: positive `tabindex` first\n * (ascending), then `tabindex=0` / natively tabbable elements in document order. Named radio\n * groups follow {@link isTabbable}, so the result depends on where focus currently is: when focus\n * is on a radio, the rest of its group is left out, which makes the focused radio the last entry\n * when its group ends the container (the element a focus trap wraps from).\n *\n * @param options.includeContainer Also consider `container` itself.\n */\nexport function getTabbableElements(\n container: Element,\n options?: { includeContainer?: boolean },\n): HTMLElement[] {\n const cache: HiddenCache = new Map();\n const candidates = Array.from(container.querySelectorAll<HTMLElement>(FOCUSABLE_SELECTOR));\n if (options?.includeContainer && container.matches(FOCUSABLE_SELECTOR)) {\n candidates.unshift(container as HTMLElement);\n }\n const tabbable = candidates.filter((el) => isTabbableInternal(el, cache));\n const positive = tabbable\n .map((el, index) => ({ el, index, tabIndex: getTabIndex(el) }))\n .filter((entry) => entry.tabIndex > 0)\n .sort((a, b) => a.tabIndex - b.tabIndex || a.index - b.index)\n .map((entry) => entry.el);\n const natural = tabbable.filter((el) => getTabIndex(el) === 0);\n return [...positive, ...natural];\n}\n\n/** The first tabbable element inside `container`, or `null`. */\nexport function getFirstTabbable(\n container: Element,\n options?: { includeContainer?: boolean },\n): HTMLElement | null {\n return getTabbableElements(container, options)[0] ?? null;\n}\n\n/** The last tabbable element inside `container`, or `null`. */\nexport function getLastTabbable(\n container: Element,\n options?: { includeContainer?: boolean },\n): HTMLElement | null {\n const tabbable = getTabbableElements(container, options);\n return tabbable[tabbable.length - 1] ?? null;\n}\n\n/** Whether `el` exists, is attached to a document and {@link isFocusable}. */\nexport function isConnectedAndFocusable(el: Element | null | undefined): boolean {\n return !!el && el.isConnected && isFocusable(el);\n}\n\n/**\n * Focuses `el` when it is connected and focusable. Returns `true` when focus actually moved to it.\n */\nexport function focusElement(\n el: HTMLElement | SVGElement | null | undefined,\n options?: FocusOptions,\n): boolean {\n if (!el || !isConnectedAndFocusable(el)) return false;\n try {\n el.focus(options);\n } catch {\n return false;\n }\n return el.ownerDocument.activeElement === el;\n}\n\n/** Whether the focused element of `container`'s document is `container` or inside it. */\nexport function containsFocus(container: Element | null | undefined): boolean {\n if (!container) return false;\n const active = container.ownerDocument.activeElement;\n return !!active && container.contains(active);\n}\n"],"mappings":";AAKA,IAAMA,IAA8B;CAClC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF,CAAC,CAAC,KAAK,IAAI,GAMEC,IAAqB,GAAGD,EAA4B;AAIjE,SAASE,EAAuB,GAA4B;CAC1D,IAAMC,IAAQC,EAAG,aAAa,UAAU;CACxC,IAAID,MAAU,MAAM,OAAO;CAC3B,IAAME,IAAS,OAAO,SAASF,GAAO,EAAE;CACxC,OAAO,OAAO,MAAME,CAAM,IAAI,OAAOA;AACvC;AAEA,SAASC,EAAoB,GAAsB;CACjD,OAAOF,EAAG,QAAQJ,CAA2B;AAC/C;AAGA,SAASO,EAAY,GAAqB;CACxC,IAAMC,IAAYN,EAAuBE,CAAE;CAE3C,OADII,MAAc,OACXF,EAAoBF,CAAE,IAAI,IAAI,KADNI;AAEjC;AAEA,SAASC,EAAW,GAAsB;CACxC,IAAI;EACF,OAAOL,EAAG,QAAQ,WAAW;CAC/B,QAAQ;EACN,OAAQA,EAA8B,aAAa;CACrD;AACF;AAGA,SAAgBM,EAAc,GAAsB;CAClD,OAAON,EAAG,cAAc,WAAYA,EAAwB,SAAS;AACvE;AAGA,SAASO,EAAiB,GAA2B;CACnD,IAAMC,IAASC,EAAQ;CAEvB,OADI,CAACD,KAAUA,EAAO,cAAc,YAAkB,KAC/C,MAAM,KAAKA,EAAO,QAAQ,CAAC,CAAC,MAAM,MAAUE,EAAM,cAAc,SAAS,MAAMD;AACxF;AAEA,SAASE,EAAY,GAAyC;CAC5D,IAAMC,IAAOZ,EAAG,cAAc;CAC9B,OAAOY,IAAOA,EAAK,iBAAiBZ,CAAE,IAAI;AAC5C;AAGA,SAASa,EAAoB,GAAa,GAA8B;CACtE,IAAMC,IAASC,GAAO,IAAIf,CAAE;CAC5B,IAAIc,MAAW,KAAA,GAAW,OAAOA;CAEjC,IAAIE,IAAS;CACb,IAAIhB,EAAG,aAAa,QAAQ,KAAKW,EAAYX,CAAE,CAAC,EAAE,YAAY,QAC5D,IAAS;MACJ;EACL,IAAMQ,IAASR,EAAG;EAClB,AAAIQ,MACF,AAKEQ,IALER,EAAO,cAAc,aAAa,CAACA,EAAO,aAAa,MAAM,KAGtDR,MADO,MAAM,KAAKQ,EAAO,QAAQ,CAAC,CAAC,MAAM,MAAUE,EAAM,cAAc,SAChE,KAEPG,EAAoBL,GAAQO,CAAK;CAGhD;CAGA,OADAA,GAAO,IAAIf,GAAIgB,CAAM,GACdA;AACT;AAEA,SAASC,EAAS,GAAa,GAA8B;CAE3D,IADIjB,EAAG,QAAQ,SAAS,KACpBa,EAAoBb,GAAIe,CAAK,GAAG,OAAO;CAC3C,IAAMG,IAAaP,EAAYX,CAAE,CAAC,EAAE;CACpC,OAAOkB,MAAe,YAAYA,MAAe;AACnD;AAEA,SAASC,EAAoB,GAAa,GAA8B;CAMtE,OALI,CAACjB,EAAoBF,CAAE,KAAKF,EAAuBE,CAAE,MAAM,QAC3DK,EAAWL,CAAE,KAAKM,EAAcN,CAAE,KAClCA,EAAG,cAAc,aAAa,CAACO,EAAiBP,CAAE,KAAKF,EAAuBE,CAAE,MAAM,OACjF,KAEF,CAACiB,EAASjB,GAAIe,CAAK;AAC5B;AAEA,SAASK,EAAc,GAA6C;CAClE,IAAMC,IAAOC,EAAM;CAMnB,QAL8BD,IAC1B,MAAM,KAAKA,EAAK,QAAQ,IACxB,MAAM,KACHC,EAAM,YAAY,CAAC,CAA2B,iBAAiB,uBAAqB,CACvF,EAAA,CACc,QACf,MACCtB,EAAG,cAAc,WAChBA,EAAwB,SAAS,WACjCA,EAAwB,SAASsB,EAAM,QACvCtB,EAAwB,SAASqB,CACtC;AACF;AAMA,SAASE,EAAoB,GAA6B;CAExD,OADavB,EAAG,YACT,CAAA,CAAK,iBAAiB;AAC/B;AAWA,SAASwB,EAAe,GAAsB;CAC5C,IAAIxB,EAAG,cAAc,SAAS,OAAO;CACrC,IAAMsB,IAAQtB;CACd,IAAIsB,EAAM,SAAS,WAAW,CAACA,EAAM,MAAM,OAAO;CAClD,IAAMG,IAAQL,EAAcE,CAAK,GAC3BI,IAASH,EAAoBD,CAAK;CACxC,IAAII,KAAWD,EAAoB,SAASC,CAAM,GAAG,OAAOA,MAAWJ;CACvE,IAAMK,IAAUF,EAAM,MAAM,MAAWG,EAAO,OAAO;CACrD,OAAO,MAAUD,MAAYL;AAC/B;AAEA,SAASO,EAAmB,GAAa,GAA8B;CACrE,OAAOV,EAAoBnB,GAAIe,CAAK,KAAKZ,EAAYH,CAAE,KAAK,KAAKwB,EAAexB,CAAE;AACpF;AAQA,SAAgB8B,EAAY,GAAsB;CAChD,OAAOX,EAAoBnB,CAAE;AAC/B;AAqBA,SAAgB+B,EACd,GACA,GACe;CACf,IAAMhB,oBAAqB,IAAI,IAAI,GAC7BiB,IAAa,MAAM,KAAKC,EAAU,iBAA8BpC,CAAkB,CAAC;CACzF,AAAIqC,GAAS,oBAAoBD,EAAU,QAAQpC,CAAkB,KACnEmC,EAAW,QAAQC,CAAwB;CAE7C,IAAME,IAAWH,EAAW,QAAQ,MAAOH,EAAmB7B,GAAIe,CAAK,CAAC,GAClEqB,IAAWD,EACd,KAAK,GAAI,OAAW;EAAE;EAAI;EAAO,UAAUhC,EAAYH,CAAE;CAAE,EAAE,CAAC,CAC9D,QAAQ,MAAUqC,EAAM,WAAW,CAAC,CAAC,CACrC,MAAM,GAAG,MAAMC,EAAE,WAAWC,EAAE,YAAYD,EAAE,QAAQC,EAAE,KAAK,CAAC,CAC5D,KAAK,MAAUF,EAAM,EAAE,GACpBG,IAAUL,EAAS,QAAQ,MAAOhC,EAAYH,CAAE,MAAM,CAAC;CAC7D,OAAO,CAAC,GAAGoC,GAAU,GAAGI,CAAO;AACjC;AAGA,SAAgBC,EACd,GACA,GACoB;CACpB,OAAOV,EAAoBE,GAAWC,CAAO,CAAC,CAAC,MAAM;AACvD;AAGA,SAAgBQ,EACd,GACA,GACoB;CACpB,IAAMP,IAAWJ,EAAoBE,GAAWC,CAAO;CACvD,OAAOC,EAASA,EAAS,SAAS,MAAM;AAC1C;AAGA,SAAgBQ,EAAwB,GAAyC;CAC/E,OAAO,CAAC,CAAC3C,KAAMA,EAAG,eAAe8B,EAAY9B,CAAE;AACjD;AAKA,SAAgB4C,EACd,GACA,GACS;CACT,IAAI,CAAC5C,KAAM,CAAC2C,EAAwB3C,CAAE,GAAG,OAAO;CAChD,IAAI;EACF,EAAG,MAAMkC,CAAO;CAClB,QAAQ;EACN,OAAO;CACT;CACA,OAAOlC,EAAG,cAAc,kBAAkBA;AAC5C"}
@@ -0,0 +1,2 @@
1
+ function e(e,t){let n=Symbol.for(`@mortenbrudvik/waveui/`+e),r=globalThis;return Object.prototype.hasOwnProperty.call(r,n)||Object.defineProperty(r,n,{value:t(),configurable:!0,enumerable:!1,writable:!0}),r[n]}exports.getGlobalRegistry=e;
2
+ //# sourceMappingURL=globalRegistry.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"globalRegistry.cjs","names":["getGlobalRegistry","symbol","key","store","create"],"sources":["../../src/lib/globalRegistry.ts"],"sourcesContent":["const NAMESPACE = '@mortenbrudvik/waveui/';\n\ntype GlobalStore = Record<symbol, unknown>;\n\n/**\n * Returns the module singleton registered under `key`, creating it with `create` on first use.\n *\n * The value is stored on `globalThis[Symbol.for('@mortenbrudvik/waveui/' + key)]` (non-enumerable),\n * so an app that evaluates the library twice — the ESM and the CJS build side by side (Next.js\n * server CJS + client ESM, or a dependency that `require`s the package) — still shares one state\n * per key. A change to the value shape stored under a key must stay compatible with the other copy.\n *\n * Keys and their users:\n * - `'layers'` — the dismiss-layer stack (`layers.ts`);\n * - `'traps'` — the focus-trap stack (`useFocusTrap`);\n * - `'scrollLock'` — the scroll-lock counter (`useScrollLock`);\n * - `'inert'` — the elements made inert behind a modal (`useModalIsolation`);\n * - `'restoreFocusTracker'` — the pointer/focus tracker of `useRestoreFocus`;\n * - `'announcer'` — the live-region announcer (`useAnnounce`);\n * - `'orderedSurfaces'` — the open surfaces whose keyboard order `usePopoverTabOrder` manages\n * (`Popover.shared.tsx`);\n * - `'warnings'` and `'missing-context'` — the warn-once keys and the logged missing-context\n * texts (`dev.ts`).\n *\n * @param key Registry name, e.g. `'warnings'` or `'layers'`.\n * @param create Factory for the initial value; called at most once per realm.\n */\nexport function getGlobalRegistry<T>(key: string, create: () => T): T {\n const symbol = Symbol.for(NAMESPACE + key);\n const store = globalThis as unknown as GlobalStore;\n if (!Object.prototype.hasOwnProperty.call(store, symbol)) {\n Object.defineProperty(store, symbol, {\n value: create(),\n configurable: true,\n enumerable: false,\n writable: true,\n });\n }\n return store[symbol] as T;\n}\n"],"mappings":"AA2BA,SAAgBA,EAAqB,EAAa,EAAoB,CACpE,IAAMC,EAAS,OAAO,IAAI,yBAAYC,CAAG,EACnCC,EAAQ,WASd,OARK,OAAO,UAAU,eAAe,KAAKA,EAAOF,CAAM,GACrD,OAAO,eAAeE,EAAOF,EAAQ,CACnC,MAAOG,EAAO,EACd,aAAc,GACd,WAAY,GACZ,SAAU,EACZ,CAAC,EAEID,EAAMF,EACf"}
@@ -0,0 +1,13 @@
1
+ function e(e, t) {
2
+ let n = Symbol.for("@mortenbrudvik/waveui/" + e), r = globalThis;
3
+ return Object.prototype.hasOwnProperty.call(r, n) || Object.defineProperty(r, n, {
4
+ value: t(),
5
+ configurable: !0,
6
+ enumerable: !1,
7
+ writable: !0
8
+ }), r[n];
9
+ }
10
+ //#endregion
11
+ export { e as getGlobalRegistry };
12
+
13
+ //# sourceMappingURL=globalRegistry.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"globalRegistry.mjs","names":["getGlobalRegistry","symbol","key","store","create"],"sources":["../../src/lib/globalRegistry.ts"],"sourcesContent":["const NAMESPACE = '@mortenbrudvik/waveui/';\n\ntype GlobalStore = Record<symbol, unknown>;\n\n/**\n * Returns the module singleton registered under `key`, creating it with `create` on first use.\n *\n * The value is stored on `globalThis[Symbol.for('@mortenbrudvik/waveui/' + key)]` (non-enumerable),\n * so an app that evaluates the library twice — the ESM and the CJS build side by side (Next.js\n * server CJS + client ESM, or a dependency that `require`s the package) — still shares one state\n * per key. A change to the value shape stored under a key must stay compatible with the other copy.\n *\n * Keys and their users:\n * - `'layers'` — the dismiss-layer stack (`layers.ts`);\n * - `'traps'` — the focus-trap stack (`useFocusTrap`);\n * - `'scrollLock'` — the scroll-lock counter (`useScrollLock`);\n * - `'inert'` — the elements made inert behind a modal (`useModalIsolation`);\n * - `'restoreFocusTracker'` — the pointer/focus tracker of `useRestoreFocus`;\n * - `'announcer'` — the live-region announcer (`useAnnounce`);\n * - `'orderedSurfaces'` — the open surfaces whose keyboard order `usePopoverTabOrder` manages\n * (`Popover.shared.tsx`);\n * - `'warnings'` and `'missing-context'` — the warn-once keys and the logged missing-context\n * texts (`dev.ts`).\n *\n * @param key Registry name, e.g. `'warnings'` or `'layers'`.\n * @param create Factory for the initial value; called at most once per realm.\n */\nexport function getGlobalRegistry<T>(key: string, create: () => T): T {\n const symbol = Symbol.for(NAMESPACE + key);\n const store = globalThis as unknown as GlobalStore;\n if (!Object.prototype.hasOwnProperty.call(store, symbol)) {\n Object.defineProperty(store, symbol, {\n value: create(),\n configurable: true,\n enumerable: false,\n writable: true,\n });\n }\n return store[symbol] as T;\n}\n"],"mappings":"AA2BA,SAAgBA,EAAqB,GAAa,GAAoB;CACpE,IAAMC,IAAS,OAAO,IAAI,2BAAYC,CAAG,GACnCC,IAAQ;CASd,OARK,OAAO,UAAU,eAAe,KAAKA,GAAOF,CAAM,KACrD,OAAO,eAAeE,GAAOF,GAAQ;EACnC,OAAOG,EAAO;EACd,cAAc;EACd,YAAY;EACZ,UAAU;CACZ,CAAC,GAEID,EAAMF;AACf"}
@@ -0,0 +1,2 @@
1
+ const e=require("../_virtual/_rolldown/runtime.cjs");let t=require("react");t=e.__toESM(t,1);let n=require("react/jsx-runtime");function r({name:e,displayName:t,viewBox:r,defaultSize:i,paint:a,strokeWidth:o,content:s}){let c=a===`fill`?{fill:`currentColor`}:{fill:`none`,stroke:`currentColor`,strokeWidth:o,strokeLinecap:`round`,strokeLinejoin:`round`},l=({size:t=i,title:a,children:o,...l})=>{let u=a?{role:`img`}:{"aria-hidden":!0,focusable:`false`};return(0,n.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:t,height:t,viewBox:r,"data-wave-icon":e,...c,...u,...l,children:[a?(0,n.jsx)(`title`,{children:a}):null,s,o]})};return l.displayName=t,l}var i=`M2.22 4.47a.75.75 0 0 1 1.06 0L6 7.19l2.72-2.72a.75.75 0 1 1 1.06 1.06L6.53 8.78a.75.75 0 0 1-1.06 0L2.22 5.53a.75.75 0 0 1 0-1.06Z`,a=`M4.47 2.22a.75.75 0 0 0 0 1.06L7.19 6 4.47 8.72a.75.75 0 1 0 1.06 1.06l3.25-3.25a.75.75 0 0 0 0-1.06L5.53 2.22a.75.75 0 0 0-1.06 0Z`,o=`M7.53 2.22a.75.75 0 0 1 0 1.06L4.81 6l2.72 2.72a.75.75 0 1 1-1.06 1.06L3.22 6.53a.75.75 0 0 1 0-1.06l3.25-3.25a.75.75 0 0 1 1.06 0Z`,s=r({name:`dismiss`,displayName:`DismissIcon`,viewBox:`0 0 20 20`,defaultSize:16,paint:`fill`,content:(0,n.jsx)(`path`,{d:`M6.28 5.22a.75.75 0 0 0-1.06 1.06L8.94 10l-3.72 3.72a.75.75 0 1 0 1.06 1.06L10 11.06l3.72 3.72a.75.75 0 1 0 1.06-1.06L11.06 10l3.72-3.72a.75.75 0 0 0-1.06-1.06L10 8.94 6.28 5.22Z`})}),c=r({name:`chevron-down`,displayName:`ChevronDownIcon`,viewBox:`0 0 12 12`,defaultSize:12,paint:`fill`,content:(0,n.jsx)(`path`,{d:i})}),l=r({name:`chevron-left`,displayName:`ChevronLeftIcon`,viewBox:`0 0 12 12`,defaultSize:12,paint:`fill`,content:(0,n.jsx)(`path`,{d:o})}),u=r({name:`chevron-right`,displayName:`ChevronRightIcon`,viewBox:`0 0 12 12`,defaultSize:12,paint:`fill`,content:(0,n.jsx)(`path`,{d:a})}),d=r({name:`chevron-double-left`,displayName:`ChevronDoubleLeftIcon`,viewBox:`0 0 12 12`,defaultSize:12,paint:`fill`,content:(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(`path`,{d:o,transform:`translate(-1.4 0)`}),(0,n.jsx)(`path`,{d:o,transform:`translate(2.6 0)`})]})}),f=r({name:`chevron-double-right`,displayName:`ChevronDoubleRightIcon`,viewBox:`0 0 12 12`,defaultSize:12,paint:`fill`,content:(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(`path`,{d:a,transform:`translate(-2.6 0)`}),(0,n.jsx)(`path`,{d:a,transform:`translate(1.4 0)`})]})}),p=r({name:`calendar`,displayName:`CalendarIcon`,viewBox:`0 0 20 20`,defaultSize:16,paint:`fill`,content:(0,n.jsx)(`path`,{fillRule:`evenodd`,clipRule:`evenodd`,d:`M5.75 2a.75.75 0 0 1 .75.75V4h7V2.75a.75.75 0 0 1 1.5 0V4h.25A2.75 2.75 0 0 1 18 6.75v8.5A2.75 2.75 0 0 1 15.25 18H4.75A2.75 2.75 0 0 1 2 15.25v-8.5A2.75 2.75 0 0 1 4.75 4H5V2.75A.75.75 0 0 1 5.75 2Zm-1 5.5c-.69 0-1.25.56-1.25 1.25v6.5c0 .69.56 1.25 1.25 1.25h10.5c.69 0 1.25-.56 1.25-1.25v-6.5c0-.69-.56-1.25-1.25-1.25H4.75Z`})}),m=r({name:`check`,displayName:`CheckIcon`,viewBox:`0 0 12 12`,defaultSize:16,paint:`stroke`,strokeWidth:2,content:(0,n.jsx)(`path`,{d:`M2.5 6l2.5 2.5L9.5 3`})}),h=r({name:`subtract`,displayName:`SubtractIcon`,viewBox:`0 0 12 12`,defaultSize:16,paint:`stroke`,strokeWidth:2,content:(0,n.jsx)(`path`,{d:`M2.5 6h7`})}),g=r({name:`search`,displayName:`SearchIcon`,viewBox:`0 0 20 20`,defaultSize:16,paint:`fill`,content:(0,n.jsx)(`path`,{fillRule:`evenodd`,clipRule:`evenodd`,d:`M9 3.5a5.5 5.5 0 1 0 0 11 5.5 5.5 0 0 0 0-11ZM2 9a7 7 0 1 1 12.45 4.38l3.09 3.08a.75.75 0 1 1-1.06 1.06l-3.09-3.08A7 7 0 0 1 2 9Z`})}),_=r({name:`info`,displayName:`InfoIcon`,viewBox:`0 0 20 20`,defaultSize:16,paint:`fill`,content:(0,n.jsx)(`path`,{fillRule:`evenodd`,d:`M10 2a8 8 0 1 0 0 16 8 8 0 0 0 0-16Zm.5 5v1h-1V7h1Zm0 3v4h-1v-4h1Z`})}),v=r({name:`success`,displayName:`SuccessIcon`,viewBox:`0 0 20 20`,defaultSize:16,paint:`fill`,content:(0,n.jsx)(`path`,{fillRule:`evenodd`,d:`M10 2a8 8 0 1 0 0 16 8 8 0 0 0 0-16Zm3.36 5.65-4 5a.5.5 0 0 1-.72.05l-2-2a.5.5 0 0 1 .72-.7l1.77 1.76 3.6-4.5a.5.5 0 0 1 .78.62l-.15.17Z`})}),y=r({name:`warning`,displayName:`WarningIcon`,viewBox:`0 0 20 20`,defaultSize:16,paint:`fill`,content:(0,n.jsx)(`path`,{fillRule:`evenodd`,d:`M9.15 3.45a1 1 0 0 1 1.7 0l6.86 11.44A1 1 0 0 1 16.86 17H3.14a1 1 0 0 1-.85-1.53L9.15 3.45ZM10.5 13v1h-1v-1h1Zm0-5v4h-1V8h1Z`})}),b=r({name:`error`,displayName:`ErrorIcon`,viewBox:`0 0 20 20`,defaultSize:16,paint:`fill`,content:(0,n.jsx)(`path`,{fillRule:`evenodd`,d:`M10 2a8 8 0 1 0 0 16 8 8 0 0 0 0-16Zm.5 5v4h-1V7h1Zm0 6v1h-1v-1h1Z`})}),x=r({name:`star`,displayName:`StarIcon`,viewBox:`0 0 20 20`,defaultSize:16,paint:`fill`,content:(0,n.jsx)(`path`,{d:`M10 1.5l2.47 5.01 5.53.8-4 3.9.94 5.49L10 13.88l-4.94 2.82.94-5.49-4-3.9 5.53-.8L10 1.5Z`})}),S=r({name:`add`,displayName:`AddIcon`,viewBox:`0 0 12 12`,defaultSize:16,paint:`stroke`,strokeWidth:2,content:(0,n.jsx)(`path`,{d:`M6 2.5v7M2.5 6h7`})}),C=r({name:`person`,displayName:`PersonIcon`,viewBox:`0 0 20 20`,defaultSize:16,paint:`fill`,content:(0,n.jsx)(`path`,{d:`M10 2a4 4 0 1 1 0 8 4 4 0 0 1 0-8Zm-5.5 10h11A2.5 2.5 0 0 1 18 14.5v.5c0 2.4-2.9 4-8 4s-8-1.6-8-4v-.5A2.5 2.5 0 0 1 4.5 12Z`})}),w=r({name:`presence-available`,displayName:`PresenceAvailableIcon`,viewBox:`0 0 16 16`,defaultSize:16,paint:`stroke`,content:(0,n.jsx)(`path`,{d:`M4.6 8.3l2.2 2.2 4.6-4.8`,strokeWidth:2})}),T=r({name:`presence-busy`,displayName:`PresenceBusyIcon`,viewBox:`0 0 16 16`,defaultSize:16,paint:`fill`,content:(0,n.jsx)(`path`,{d:`M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0Z`})}),E=r({name:`presence-away`,displayName:`PresenceAwayIcon`,viewBox:`0 0 16 16`,defaultSize:16,paint:`stroke`,content:(0,n.jsx)(`path`,{d:`M8 4.4V8l2.6 1.8`,strokeWidth:1.8})}),D=r({name:`presence-offline`,displayName:`PresenceOfflineIcon`,viewBox:`0 0 16 16`,defaultSize:16,paint:`stroke`,content:(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(`circle`,{cx:8,cy:8,r:6.5,strokeWidth:2.5}),(0,n.jsx)(`path`,{d:`M6 6l4 4m0-4l-4 4`,strokeWidth:1.6})]})}),O=r({name:`presence-dnd`,displayName:`PresenceDndIcon`,viewBox:`0 0 16 16`,defaultSize:16,paint:`stroke`,content:(0,n.jsx)(`path`,{d:`M4.5 8h7`,strokeWidth:2.2})}),k=r({name:`presence-oof`,displayName:`PresenceOofIcon`,viewBox:`0 0 16 16`,defaultSize:16,paint:`stroke`,content:(0,n.jsx)(`path`,{d:`M11.4 8H4.8m2.9-3L4.7 8l3 3`,strokeWidth:1.8})});exports.AddIcon=S,exports.CalendarIcon=p,exports.CheckIcon=m,exports.ChevronDoubleLeftIcon=d,exports.ChevronDoubleRightIcon=f,exports.ChevronDownIcon=c,exports.ChevronLeftIcon=l,exports.ChevronRightIcon=u,exports.DismissIcon=s,exports.ErrorIcon=b,exports.InfoIcon=_,exports.PersonIcon=C,exports.PresenceAvailableIcon=w,exports.PresenceAwayIcon=E,exports.PresenceBusyIcon=T,exports.PresenceDndIcon=O,exports.PresenceOfflineIcon=D,exports.PresenceOofIcon=k,exports.SearchIcon=g,exports.StarIcon=x,exports.SubtractIcon=h,exports.SuccessIcon=v,exports.WarningIcon=y;
2
+ //# sourceMappingURL=icons.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"icons.cjs","names":["_Fragment","require_runtime","react","react_jsx_runtime","createIcon","paintProps","paint","Icon","defaultSize","rest","a11yProps","title","size","name","content","children","displayName","CHEVRON_DOWN","CHEVRON_RIGHT","CHEVRON_LEFT","DismissIcon","ChevronDownIcon","ChevronLeftIcon","ChevronRightIcon","ChevronDoubleLeftIcon","ChevronDoubleRightIcon","CalendarIcon","CheckIcon","SubtractIcon","SearchIcon","InfoIcon","SuccessIcon","WarningIcon","ErrorIcon","StarIcon","AddIcon","PersonIcon","PresenceAvailableIcon","PresenceBusyIcon","PresenceAwayIcon","PresenceOfflineIcon","PresenceDndIcon","PresenceOofIcon"],"sources":["../../src/lib/icons.tsx"],"sourcesContent":["import * as React from 'react';\n\n/**\n * Props of the shared internal icons. Every other SVG attribute is forwarded to the `<svg>`.\n *\n * Icons are decorative by default (`aria-hidden=\"true\"`, `focusable=\"false\"`): the control that\n * contains them provides the accessible name. Pass `title` for a standalone meaningful icon; it\n * then renders `role=\"img\"` with a `<title>`.\n */\nexport interface IconProps extends React.SVGProps<SVGSVGElement> {\n /** Width and height (number = px, or any CSS length). Default 16 (chevrons 12). */\n size?: number | string;\n /** Accessible name; makes the icon a named image instead of a decorative one. */\n title?: string;\n}\n\n/** An internal icon component. */\nexport interface IconComponent {\n (props: IconProps): React.JSX.Element;\n displayName: string;\n}\n\ninterface IconDefinition {\n /** Value of `data-wave-icon`. */\n name: string;\n displayName: string;\n viewBox: string;\n defaultSize: number;\n /** Stroked glyphs paint with `stroke`, filled glyphs with `fill`. */\n paint: 'fill' | 'stroke';\n strokeWidth?: number;\n content: React.ReactNode;\n}\n\n/**\n * Builds an icon component. Side-effect free: every call site carries a `@__PURE__` annotation\n * comment so bundlers drop the icons a consumer does not use (a test bundles a one-icon entry with\n * Vite's production build). Keep that annotation on new icons.\n */\nfunction createIcon({\n name,\n displayName,\n viewBox,\n defaultSize,\n paint,\n strokeWidth,\n content,\n}: IconDefinition): IconComponent {\n const paintProps: React.SVGProps<SVGSVGElement> =\n paint === 'fill'\n ? { fill: 'currentColor' }\n : {\n fill: 'none',\n stroke: 'currentColor',\n strokeWidth,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n };\n\n const Icon = ({ size = defaultSize, title, children, ...rest }: IconProps) => {\n const a11yProps: React.SVGProps<SVGSVGElement> = title\n ? { role: 'img' }\n : { 'aria-hidden': true, focusable: 'false' };\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={size}\n height={size}\n viewBox={viewBox}\n data-wave-icon={name}\n {...paintProps}\n {...a11yProps}\n {...rest}\n >\n {title ? <title>{title}</title> : null}\n {content}\n {children}\n </svg>\n );\n };\n Icon.displayName = displayName;\n return Icon;\n}\n\nconst CHEVRON_DOWN =\n 'M2.22 4.47a.75.75 0 0 1 1.06 0L6 7.19l2.72-2.72a.75.75 0 1 1 1.06 1.06L6.53 8.78a.75.75 0 0 1-1.06 0L2.22 5.53a.75.75 0 0 1 0-1.06Z';\nconst CHEVRON_UP =\n 'M2.22 7.53a.75.75 0 0 0 1.06 0L6 4.81l2.72 2.72a.75.75 0 1 0 1.06-1.06L6.53 3.22a.75.75 0 0 0-1.06 0L2.22 6.47a.75.75 0 0 0 0 1.06Z';\nconst CHEVRON_RIGHT =\n 'M4.47 2.22a.75.75 0 0 0 0 1.06L7.19 6 4.47 8.72a.75.75 0 1 0 1.06 1.06l3.25-3.25a.75.75 0 0 0 0-1.06L5.53 2.22a.75.75 0 0 0-1.06 0Z';\nconst CHEVRON_LEFT =\n 'M7.53 2.22a.75.75 0 0 1 0 1.06L4.81 6l2.72 2.72a.75.75 0 1 1-1.06 1.06L3.22 6.53a.75.75 0 0 1 0-1.06l3.25-3.25a.75.75 0 0 1 1.06 0Z';\n\n/** Close / clear / dismiss glyph (Dialog, Drawer, MessageBar, Toast, Tag, SearchBox, pickers). */\nexport const DismissIcon = /* @__PURE__ */ createIcon({\n name: 'dismiss',\n displayName: 'DismissIcon',\n viewBox: '0 0 20 20',\n defaultSize: 16,\n paint: 'fill',\n content: (\n <path d=\"M6.28 5.22a.75.75 0 0 0-1.06 1.06L8.94 10l-3.72 3.72a.75.75 0 1 0 1.06 1.06L10 11.06l3.72 3.72a.75.75 0 1 0 1.06-1.06L11.06 10l3.72-3.72a.75.75 0 0 0-1.06-1.06L10 8.94 6.28 5.22Z\" />\n ),\n});\n\n/** Disclosure chevron pointing down (MenuButton, SplitButton, Dropdown, Accordion). */\nexport const ChevronDownIcon = /* @__PURE__ */ createIcon({\n name: 'chevron-down',\n displayName: 'ChevronDownIcon',\n viewBox: '0 0 12 12',\n defaultSize: 12,\n paint: 'fill',\n content: <path d={CHEVRON_DOWN} />,\n});\n\n/** Chevron pointing up. */\nexport const ChevronUpIcon = /* @__PURE__ */ createIcon({\n name: 'chevron-up',\n displayName: 'ChevronUpIcon',\n viewBox: '0 0 12 12',\n defaultSize: 12,\n paint: 'fill',\n content: <path d={CHEVRON_UP} />,\n});\n\n/** Chevron pointing left (physical). Mirror directional uses with `wave-rtl:-scale-x-100`. */\nexport const ChevronLeftIcon = /* @__PURE__ */ createIcon({\n name: 'chevron-left',\n displayName: 'ChevronLeftIcon',\n viewBox: '0 0 12 12',\n defaultSize: 12,\n paint: 'fill',\n content: <path d={CHEVRON_LEFT} />,\n});\n\n/** Chevron pointing right (physical). Mirror directional uses with `wave-rtl:-scale-x-100`. */\nexport const ChevronRightIcon = /* @__PURE__ */ createIcon({\n name: 'chevron-right',\n displayName: 'ChevronRightIcon',\n viewBox: '0 0 12 12',\n defaultSize: 12,\n paint: 'fill',\n content: <path d={CHEVRON_RIGHT} />,\n});\n\n/** Double chevron pointing left (Pagination \"first\"). */\nexport const ChevronDoubleLeftIcon = /* @__PURE__ */ createIcon({\n name: 'chevron-double-left',\n displayName: 'ChevronDoubleLeftIcon',\n viewBox: '0 0 12 12',\n defaultSize: 12,\n paint: 'fill',\n content: (\n <>\n <path d={CHEVRON_LEFT} transform=\"translate(-1.4 0)\" />\n <path d={CHEVRON_LEFT} transform=\"translate(2.6 0)\" />\n </>\n ),\n});\n\n/** Double chevron pointing right (Pagination \"last\"). */\nexport const ChevronDoubleRightIcon = /* @__PURE__ */ createIcon({\n name: 'chevron-double-right',\n displayName: 'ChevronDoubleRightIcon',\n viewBox: '0 0 12 12',\n defaultSize: 12,\n paint: 'fill',\n content: (\n <>\n <path d={CHEVRON_RIGHT} transform=\"translate(-2.6 0)\" />\n <path d={CHEVRON_RIGHT} transform=\"translate(1.4 0)\" />\n </>\n ),\n});\n\n/** Calendar glyph (DatePicker toggle). */\nexport const CalendarIcon = /* @__PURE__ */ createIcon({\n name: 'calendar',\n displayName: 'CalendarIcon',\n viewBox: '0 0 20 20',\n defaultSize: 16,\n paint: 'fill',\n content: (\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M5.75 2a.75.75 0 0 1 .75.75V4h7V2.75a.75.75 0 0 1 1.5 0V4h.25A2.75 2.75 0 0 1 18 6.75v8.5A2.75 2.75 0 0 1 15.25 18H4.75A2.75 2.75 0 0 1 2 15.25v-8.5A2.75 2.75 0 0 1 4.75 4H5V2.75A.75.75 0 0 1 5.75 2Zm-1 5.5c-.69 0-1.25.56-1.25 1.25v6.5c0 .69.56 1.25 1.25 1.25h10.5c.69 0 1.25-.56 1.25-1.25v-6.5c0-.69-.56-1.25-1.25-1.25H4.75Z\"\n />\n ),\n});\n\n/** Clock glyph (TimePicker). */\nexport const ClockIcon = /* @__PURE__ */ createIcon({\n name: 'clock',\n displayName: 'ClockIcon',\n viewBox: '0 0 20 20',\n defaultSize: 16,\n paint: 'fill',\n content: (\n <path d=\"M10 2a8 8 0 1 1 0 16 8 8 0 0 1 0-16Zm0 1.5a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13Zm-.75 2.25a.75.75 0 0 1 1.5 0v3.94l2.28 2.28a.75.75 0 1 1-1.06 1.06l-2.5-2.5a.75.75 0 0 1-.22-.53V5.75Z\" />\n ),\n});\n\n/** Check mark (Checkbox, selected options). */\nexport const CheckIcon = /* @__PURE__ */ createIcon({\n name: 'check',\n displayName: 'CheckIcon',\n viewBox: '0 0 12 12',\n defaultSize: 16,\n paint: 'stroke',\n strokeWidth: 2,\n content: <path d=\"M2.5 6l2.5 2.5L9.5 3\" />,\n});\n\n/** Horizontal bar (indeterminate Checkbox). */\nexport const SubtractIcon = /* @__PURE__ */ createIcon({\n name: 'subtract',\n displayName: 'SubtractIcon',\n viewBox: '0 0 12 12',\n defaultSize: 16,\n paint: 'stroke',\n strokeWidth: 2,\n content: <path d=\"M2.5 6h7\" />,\n});\n\n/** Magnifier (SearchBox). */\nexport const SearchIcon = /* @__PURE__ */ createIcon({\n name: 'search',\n displayName: 'SearchIcon',\n viewBox: '0 0 20 20',\n defaultSize: 16,\n paint: 'fill',\n content: (\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M9 3.5a5.5 5.5 0 1 0 0 11 5.5 5.5 0 0 0 0-11ZM2 9a7 7 0 1 1 12.45 4.38l3.09 3.08a.75.75 0 1 1-1.06 1.06l-3.09-3.08A7 7 0 0 1 2 9Z\"\n />\n ),\n});\n\n/** Information glyph (InfoLabel, informational MessageBar/Toast). */\nexport const InfoIcon = /* @__PURE__ */ createIcon({\n name: 'info',\n displayName: 'InfoIcon',\n viewBox: '0 0 20 20',\n defaultSize: 16,\n paint: 'fill',\n content: (\n <path\n fillRule=\"evenodd\"\n d=\"M10 2a8 8 0 1 0 0 16 8 8 0 0 0 0-16Zm.5 5v1h-1V7h1Zm0 3v4h-1v-4h1Z\"\n />\n ),\n});\n\n/** Success status glyph (MessageBar, Toast). */\nexport const SuccessIcon = /* @__PURE__ */ createIcon({\n name: 'success',\n displayName: 'SuccessIcon',\n viewBox: '0 0 20 20',\n defaultSize: 16,\n paint: 'fill',\n content: (\n <path\n fillRule=\"evenodd\"\n d=\"M10 2a8 8 0 1 0 0 16 8 8 0 0 0 0-16Zm3.36 5.65-4 5a.5.5 0 0 1-.72.05l-2-2a.5.5 0 0 1 .72-.7l1.77 1.76 3.6-4.5a.5.5 0 0 1 .78.62l-.15.17Z\"\n />\n ),\n});\n\n/** Warning status glyph (MessageBar, Toast). */\nexport const WarningIcon = /* @__PURE__ */ createIcon({\n name: 'warning',\n displayName: 'WarningIcon',\n viewBox: '0 0 20 20',\n defaultSize: 16,\n paint: 'fill',\n content: (\n <path\n fillRule=\"evenodd\"\n d=\"M9.15 3.45a1 1 0 0 1 1.7 0l6.86 11.44A1 1 0 0 1 16.86 17H3.14a1 1 0 0 1-.85-1.53L9.15 3.45ZM10.5 13v1h-1v-1h1Zm0-5v4h-1V8h1Z\"\n />\n ),\n});\n\n/** Error status glyph (MessageBar, Toast). */\nexport const ErrorIcon = /* @__PURE__ */ createIcon({\n name: 'error',\n displayName: 'ErrorIcon',\n viewBox: '0 0 20 20',\n defaultSize: 16,\n paint: 'fill',\n content: (\n <path\n fillRule=\"evenodd\"\n d=\"M10 2a8 8 0 1 0 0 16 8 8 0 0 0 0-16Zm.5 5v4h-1V7h1Zm0 6v1h-1v-1h1Z\"\n />\n ),\n});\n\n/** Star (Rating). */\nexport const StarIcon = /* @__PURE__ */ createIcon({\n name: 'star',\n displayName: 'StarIcon',\n viewBox: '0 0 20 20',\n defaultSize: 16,\n paint: 'fill',\n content: (\n <path d=\"M10 1.5l2.47 5.01 5.53.8-4 3.9.94 5.49L10 13.88l-4.94 2.82.94-5.49-4-3.9 5.53-.8L10 1.5Z\" />\n ),\n});\n\n/** Plus (SpinButton increment); the {@link SubtractIcon} bar plus a vertical bar. */\nexport const AddIcon = /* @__PURE__ */ createIcon({\n name: 'add',\n displayName: 'AddIcon',\n viewBox: '0 0 12 12',\n defaultSize: 16,\n paint: 'stroke',\n strokeWidth: 2,\n content: <path d=\"M6 2.5v7M2.5 6h7\" />,\n});\n\n/**\n * Generic person (Avatar fallback when there is no image, icon or name). Accepts a relative size\n * such as `size=\"60%\"` to scale with its container.\n */\nexport const PersonIcon = /* @__PURE__ */ createIcon({\n name: 'person',\n displayName: 'PersonIcon',\n viewBox: '0 0 20 20',\n defaultSize: 16,\n paint: 'fill',\n content: (\n <path d=\"M10 2a4 4 0 1 1 0 8 4 4 0 0 1 0-8Zm-5.5 10h11A2.5 2.5 0 0 1 18 14.5v.5c0 2.4-2.9 4-8 4s-8-1.6-8-4v-.5A2.5 2.5 0 0 1 4.5 12Z\" />\n ),\n});\n\n/*\n * Presence glyphs (PresenceBadge). Drawn in a 16x16 box that the badge circle fills, with stroke\n * weights tuned for the 8-20px badge sizes; render them with `className=\"size-full\"`. They differ\n * from CheckIcon/ClockIcon/DismissIcon in geometry, so every status keeps a distinct shape at\n * badge size. Mirror the out-of-office arrow in right-to-left layouts (`wave-rtl:-scale-x-100`).\n */\n\n/** Presence \"available\": a check mark. */\nexport const PresenceAvailableIcon = /* @__PURE__ */ createIcon({\n name: 'presence-available',\n displayName: 'PresenceAvailableIcon',\n viewBox: '0 0 16 16',\n defaultSize: 16,\n paint: 'stroke',\n content: <path d=\"M4.6 8.3l2.2 2.2 4.6-4.8\" strokeWidth={2} />,\n});\n\n/**\n * Presence \"busy\": a full disc in `currentColor`. Forced-colors mode replaces the badge background\n * with Canvas but forces `color` to CanvasText, so busy stays a solid dot instead of an empty ring.\n */\nexport const PresenceBusyIcon = /* @__PURE__ */ createIcon({\n name: 'presence-busy',\n displayName: 'PresenceBusyIcon',\n viewBox: '0 0 16 16',\n defaultSize: 16,\n paint: 'fill',\n content: <path d=\"M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0Z\" />,\n});\n\n/** Presence \"away\": clock hands. */\nexport const PresenceAwayIcon = /* @__PURE__ */ createIcon({\n name: 'presence-away',\n displayName: 'PresenceAwayIcon',\n viewBox: '0 0 16 16',\n defaultSize: 16,\n paint: 'stroke',\n content: <path d=\"M8 4.4V8l2.6 1.8\" strokeWidth={1.8} />,\n});\n\n/** Presence \"offline\": a hollow ring with an X. */\nexport const PresenceOfflineIcon = /* @__PURE__ */ createIcon({\n name: 'presence-offline',\n displayName: 'PresenceOfflineIcon',\n viewBox: '0 0 16 16',\n defaultSize: 16,\n paint: 'stroke',\n content: (\n <>\n <circle cx={8} cy={8} r={6.5} strokeWidth={2.5} />\n <path d=\"M6 6l4 4m0-4l-4 4\" strokeWidth={1.6} />\n </>\n ),\n});\n\n/** Presence \"do not disturb\": a horizontal bar. */\nexport const PresenceDndIcon = /* @__PURE__ */ createIcon({\n name: 'presence-dnd',\n displayName: 'PresenceDndIcon',\n viewBox: '0 0 16 16',\n defaultSize: 16,\n paint: 'stroke',\n content: <path d=\"M4.5 8h7\" strokeWidth={2.2} />,\n});\n\n/** Presence \"out of office\": an arrow pointing left (physical; mirror it in RTL). */\nexport const PresenceOofIcon = /* @__PURE__ */ createIcon({\n name: 'presence-oof',\n displayName: 'PresenceOofIcon',\n viewBox: '0 0 16 16',\n defaultSize: 16,\n paint: 'stroke',\n content: <path d=\"M11.4 8H4.8m2.9-3L4.7 8l3 3\" strokeWidth={1.8} />,\n});\n"],"mappings":"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"}
@@ -0,0 +1,254 @@
1
+ import "react";
2
+ import { Fragment as e, jsx as t, jsxs as n } from "react/jsx-runtime";
3
+ //#region src/lib/icons.tsx
4
+ function r({ name: e, displayName: r, viewBox: i, defaultSize: a, paint: o, strokeWidth: s, content: c }) {
5
+ let l = o === "fill" ? { fill: "currentColor" } : {
6
+ fill: "none",
7
+ stroke: "currentColor",
8
+ strokeWidth: s,
9
+ strokeLinecap: "round",
10
+ strokeLinejoin: "round"
11
+ }, u = ({ size: r = a, title: o, children: s, ...u }) => {
12
+ let d = o ? { role: "img" } : {
13
+ "aria-hidden": !0,
14
+ focusable: "false"
15
+ };
16
+ return /* @__PURE__ */ n("svg", {
17
+ xmlns: "http://www.w3.org/2000/svg",
18
+ width: r,
19
+ height: r,
20
+ viewBox: i,
21
+ "data-wave-icon": e,
22
+ ...l,
23
+ ...d,
24
+ ...u,
25
+ children: [
26
+ o ? /* @__PURE__ */ t("title", { children: o }) : null,
27
+ c,
28
+ s
29
+ ]
30
+ });
31
+ };
32
+ return u.displayName = r, u;
33
+ }
34
+ var i = "M2.22 4.47a.75.75 0 0 1 1.06 0L6 7.19l2.72-2.72a.75.75 0 1 1 1.06 1.06L6.53 8.78a.75.75 0 0 1-1.06 0L2.22 5.53a.75.75 0 0 1 0-1.06Z", a = "M4.47 2.22a.75.75 0 0 0 0 1.06L7.19 6 4.47 8.72a.75.75 0 1 0 1.06 1.06l3.25-3.25a.75.75 0 0 0 0-1.06L5.53 2.22a.75.75 0 0 0-1.06 0Z", o = "M7.53 2.22a.75.75 0 0 1 0 1.06L4.81 6l2.72 2.72a.75.75 0 1 1-1.06 1.06L3.22 6.53a.75.75 0 0 1 0-1.06l3.25-3.25a.75.75 0 0 1 1.06 0Z", s = /* @__PURE__ */ r({
35
+ name: "dismiss",
36
+ displayName: "DismissIcon",
37
+ viewBox: "0 0 20 20",
38
+ defaultSize: 16,
39
+ paint: "fill",
40
+ content: /* @__PURE__ */ t("path", { d: "M6.28 5.22a.75.75 0 0 0-1.06 1.06L8.94 10l-3.72 3.72a.75.75 0 1 0 1.06 1.06L10 11.06l3.72 3.72a.75.75 0 1 0 1.06-1.06L11.06 10l3.72-3.72a.75.75 0 0 0-1.06-1.06L10 8.94 6.28 5.22Z" })
41
+ }), c = /* @__PURE__ */ r({
42
+ name: "chevron-down",
43
+ displayName: "ChevronDownIcon",
44
+ viewBox: "0 0 12 12",
45
+ defaultSize: 12,
46
+ paint: "fill",
47
+ content: /* @__PURE__ */ t("path", { d: i })
48
+ }), l = /* @__PURE__ */ r({
49
+ name: "chevron-left",
50
+ displayName: "ChevronLeftIcon",
51
+ viewBox: "0 0 12 12",
52
+ defaultSize: 12,
53
+ paint: "fill",
54
+ content: /* @__PURE__ */ t("path", { d: o })
55
+ }), u = /* @__PURE__ */ r({
56
+ name: "chevron-right",
57
+ displayName: "ChevronRightIcon",
58
+ viewBox: "0 0 12 12",
59
+ defaultSize: 12,
60
+ paint: "fill",
61
+ content: /* @__PURE__ */ t("path", { d: a })
62
+ }), d = /* @__PURE__ */ r({
63
+ name: "chevron-double-left",
64
+ displayName: "ChevronDoubleLeftIcon",
65
+ viewBox: "0 0 12 12",
66
+ defaultSize: 12,
67
+ paint: "fill",
68
+ content: /* @__PURE__ */ n(e, { children: [/* @__PURE__ */ t("path", {
69
+ d: o,
70
+ transform: "translate(-1.4 0)"
71
+ }), /* @__PURE__ */ t("path", {
72
+ d: o,
73
+ transform: "translate(2.6 0)"
74
+ })] })
75
+ }), f = /* @__PURE__ */ r({
76
+ name: "chevron-double-right",
77
+ displayName: "ChevronDoubleRightIcon",
78
+ viewBox: "0 0 12 12",
79
+ defaultSize: 12,
80
+ paint: "fill",
81
+ content: /* @__PURE__ */ n(e, { children: [/* @__PURE__ */ t("path", {
82
+ d: a,
83
+ transform: "translate(-2.6 0)"
84
+ }), /* @__PURE__ */ t("path", {
85
+ d: a,
86
+ transform: "translate(1.4 0)"
87
+ })] })
88
+ }), p = /* @__PURE__ */ r({
89
+ name: "calendar",
90
+ displayName: "CalendarIcon",
91
+ viewBox: "0 0 20 20",
92
+ defaultSize: 16,
93
+ paint: "fill",
94
+ content: /* @__PURE__ */ t("path", {
95
+ fillRule: "evenodd",
96
+ clipRule: "evenodd",
97
+ d: "M5.75 2a.75.75 0 0 1 .75.75V4h7V2.75a.75.75 0 0 1 1.5 0V4h.25A2.75 2.75 0 0 1 18 6.75v8.5A2.75 2.75 0 0 1 15.25 18H4.75A2.75 2.75 0 0 1 2 15.25v-8.5A2.75 2.75 0 0 1 4.75 4H5V2.75A.75.75 0 0 1 5.75 2Zm-1 5.5c-.69 0-1.25.56-1.25 1.25v6.5c0 .69.56 1.25 1.25 1.25h10.5c.69 0 1.25-.56 1.25-1.25v-6.5c0-.69-.56-1.25-1.25-1.25H4.75Z"
98
+ })
99
+ }), m = /* @__PURE__ */ r({
100
+ name: "check",
101
+ displayName: "CheckIcon",
102
+ viewBox: "0 0 12 12",
103
+ defaultSize: 16,
104
+ paint: "stroke",
105
+ strokeWidth: 2,
106
+ content: /* @__PURE__ */ t("path", { d: "M2.5 6l2.5 2.5L9.5 3" })
107
+ }), h = /* @__PURE__ */ r({
108
+ name: "subtract",
109
+ displayName: "SubtractIcon",
110
+ viewBox: "0 0 12 12",
111
+ defaultSize: 16,
112
+ paint: "stroke",
113
+ strokeWidth: 2,
114
+ content: /* @__PURE__ */ t("path", { d: "M2.5 6h7" })
115
+ }), g = /* @__PURE__ */ r({
116
+ name: "search",
117
+ displayName: "SearchIcon",
118
+ viewBox: "0 0 20 20",
119
+ defaultSize: 16,
120
+ paint: "fill",
121
+ content: /* @__PURE__ */ t("path", {
122
+ fillRule: "evenodd",
123
+ clipRule: "evenodd",
124
+ d: "M9 3.5a5.5 5.5 0 1 0 0 11 5.5 5.5 0 0 0 0-11ZM2 9a7 7 0 1 1 12.45 4.38l3.09 3.08a.75.75 0 1 1-1.06 1.06l-3.09-3.08A7 7 0 0 1 2 9Z"
125
+ })
126
+ }), _ = /* @__PURE__ */ r({
127
+ name: "info",
128
+ displayName: "InfoIcon",
129
+ viewBox: "0 0 20 20",
130
+ defaultSize: 16,
131
+ paint: "fill",
132
+ content: /* @__PURE__ */ t("path", {
133
+ fillRule: "evenodd",
134
+ d: "M10 2a8 8 0 1 0 0 16 8 8 0 0 0 0-16Zm.5 5v1h-1V7h1Zm0 3v4h-1v-4h1Z"
135
+ })
136
+ }), v = /* @__PURE__ */ r({
137
+ name: "success",
138
+ displayName: "SuccessIcon",
139
+ viewBox: "0 0 20 20",
140
+ defaultSize: 16,
141
+ paint: "fill",
142
+ content: /* @__PURE__ */ t("path", {
143
+ fillRule: "evenodd",
144
+ d: "M10 2a8 8 0 1 0 0 16 8 8 0 0 0 0-16Zm3.36 5.65-4 5a.5.5 0 0 1-.72.05l-2-2a.5.5 0 0 1 .72-.7l1.77 1.76 3.6-4.5a.5.5 0 0 1 .78.62l-.15.17Z"
145
+ })
146
+ }), y = /* @__PURE__ */ r({
147
+ name: "warning",
148
+ displayName: "WarningIcon",
149
+ viewBox: "0 0 20 20",
150
+ defaultSize: 16,
151
+ paint: "fill",
152
+ content: /* @__PURE__ */ t("path", {
153
+ fillRule: "evenodd",
154
+ d: "M9.15 3.45a1 1 0 0 1 1.7 0l6.86 11.44A1 1 0 0 1 16.86 17H3.14a1 1 0 0 1-.85-1.53L9.15 3.45ZM10.5 13v1h-1v-1h1Zm0-5v4h-1V8h1Z"
155
+ })
156
+ }), b = /* @__PURE__ */ r({
157
+ name: "error",
158
+ displayName: "ErrorIcon",
159
+ viewBox: "0 0 20 20",
160
+ defaultSize: 16,
161
+ paint: "fill",
162
+ content: /* @__PURE__ */ t("path", {
163
+ fillRule: "evenodd",
164
+ d: "M10 2a8 8 0 1 0 0 16 8 8 0 0 0 0-16Zm.5 5v4h-1V7h1Zm0 6v1h-1v-1h1Z"
165
+ })
166
+ }), x = /* @__PURE__ */ r({
167
+ name: "star",
168
+ displayName: "StarIcon",
169
+ viewBox: "0 0 20 20",
170
+ defaultSize: 16,
171
+ paint: "fill",
172
+ content: /* @__PURE__ */ t("path", { d: "M10 1.5l2.47 5.01 5.53.8-4 3.9.94 5.49L10 13.88l-4.94 2.82.94-5.49-4-3.9 5.53-.8L10 1.5Z" })
173
+ }), S = /* @__PURE__ */ r({
174
+ name: "add",
175
+ displayName: "AddIcon",
176
+ viewBox: "0 0 12 12",
177
+ defaultSize: 16,
178
+ paint: "stroke",
179
+ strokeWidth: 2,
180
+ content: /* @__PURE__ */ t("path", { d: "M6 2.5v7M2.5 6h7" })
181
+ }), C = /* @__PURE__ */ r({
182
+ name: "person",
183
+ displayName: "PersonIcon",
184
+ viewBox: "0 0 20 20",
185
+ defaultSize: 16,
186
+ paint: "fill",
187
+ content: /* @__PURE__ */ t("path", { d: "M10 2a4 4 0 1 1 0 8 4 4 0 0 1 0-8Zm-5.5 10h11A2.5 2.5 0 0 1 18 14.5v.5c0 2.4-2.9 4-8 4s-8-1.6-8-4v-.5A2.5 2.5 0 0 1 4.5 12Z" })
188
+ }), w = /* @__PURE__ */ r({
189
+ name: "presence-available",
190
+ displayName: "PresenceAvailableIcon",
191
+ viewBox: "0 0 16 16",
192
+ defaultSize: 16,
193
+ paint: "stroke",
194
+ content: /* @__PURE__ */ t("path", {
195
+ d: "M4.6 8.3l2.2 2.2 4.6-4.8",
196
+ strokeWidth: 2
197
+ })
198
+ }), T = /* @__PURE__ */ r({
199
+ name: "presence-busy",
200
+ displayName: "PresenceBusyIcon",
201
+ viewBox: "0 0 16 16",
202
+ defaultSize: 16,
203
+ paint: "fill",
204
+ content: /* @__PURE__ */ t("path", { d: "M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0Z" })
205
+ }), E = /* @__PURE__ */ r({
206
+ name: "presence-away",
207
+ displayName: "PresenceAwayIcon",
208
+ viewBox: "0 0 16 16",
209
+ defaultSize: 16,
210
+ paint: "stroke",
211
+ content: /* @__PURE__ */ t("path", {
212
+ d: "M8 4.4V8l2.6 1.8",
213
+ strokeWidth: 1.8
214
+ })
215
+ }), D = /* @__PURE__ */ r({
216
+ name: "presence-offline",
217
+ displayName: "PresenceOfflineIcon",
218
+ viewBox: "0 0 16 16",
219
+ defaultSize: 16,
220
+ paint: "stroke",
221
+ content: /* @__PURE__ */ n(e, { children: [/* @__PURE__ */ t("circle", {
222
+ cx: 8,
223
+ cy: 8,
224
+ r: 6.5,
225
+ strokeWidth: 2.5
226
+ }), /* @__PURE__ */ t("path", {
227
+ d: "M6 6l4 4m0-4l-4 4",
228
+ strokeWidth: 1.6
229
+ })] })
230
+ }), O = /* @__PURE__ */ r({
231
+ name: "presence-dnd",
232
+ displayName: "PresenceDndIcon",
233
+ viewBox: "0 0 16 16",
234
+ defaultSize: 16,
235
+ paint: "stroke",
236
+ content: /* @__PURE__ */ t("path", {
237
+ d: "M4.5 8h7",
238
+ strokeWidth: 2.2
239
+ })
240
+ }), k = /* @__PURE__ */ r({
241
+ name: "presence-oof",
242
+ displayName: "PresenceOofIcon",
243
+ viewBox: "0 0 16 16",
244
+ defaultSize: 16,
245
+ paint: "stroke",
246
+ content: /* @__PURE__ */ t("path", {
247
+ d: "M11.4 8H4.8m2.9-3L4.7 8l3 3",
248
+ strokeWidth: 1.8
249
+ })
250
+ });
251
+ //#endregion
252
+ export { S as AddIcon, p as CalendarIcon, m as CheckIcon, d as ChevronDoubleLeftIcon, f as ChevronDoubleRightIcon, c as ChevronDownIcon, l as ChevronLeftIcon, u as ChevronRightIcon, s as DismissIcon, b as ErrorIcon, _ as InfoIcon, C as PersonIcon, w as PresenceAvailableIcon, E as PresenceAwayIcon, T as PresenceBusyIcon, O as PresenceDndIcon, D as PresenceOfflineIcon, k as PresenceOofIcon, g as SearchIcon, x as StarIcon, h as SubtractIcon, v as SuccessIcon, y as WarningIcon };
253
+
254
+ //# sourceMappingURL=icons.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"icons.mjs","names":["_Fragment","createIcon","paintProps","paint","Icon","defaultSize","rest","a11yProps","title","size","name","content","children","displayName","CHEVRON_DOWN","CHEVRON_RIGHT","CHEVRON_LEFT","DismissIcon","ChevronDownIcon","ChevronLeftIcon","ChevronRightIcon","ChevronDoubleLeftIcon","Fragment","ChevronDoubleRightIcon","CalendarIcon","CheckIcon","SubtractIcon","SearchIcon","InfoIcon","SuccessIcon","WarningIcon","ErrorIcon","StarIcon","AddIcon","PersonIcon","PresenceAvailableIcon","PresenceBusyIcon","PresenceAwayIcon","PresenceOfflineIcon","PresenceDndIcon","PresenceOofIcon"],"sources":["../../src/lib/icons.tsx"],"sourcesContent":["import * as React from 'react';\n\n/**\n * Props of the shared internal icons. Every other SVG attribute is forwarded to the `<svg>`.\n *\n * Icons are decorative by default (`aria-hidden=\"true\"`, `focusable=\"false\"`): the control that\n * contains them provides the accessible name. Pass `title` for a standalone meaningful icon; it\n * then renders `role=\"img\"` with a `<title>`.\n */\nexport interface IconProps extends React.SVGProps<SVGSVGElement> {\n /** Width and height (number = px, or any CSS length). Default 16 (chevrons 12). */\n size?: number | string;\n /** Accessible name; makes the icon a named image instead of a decorative one. */\n title?: string;\n}\n\n/** An internal icon component. */\nexport interface IconComponent {\n (props: IconProps): React.JSX.Element;\n displayName: string;\n}\n\ninterface IconDefinition {\n /** Value of `data-wave-icon`. */\n name: string;\n displayName: string;\n viewBox: string;\n defaultSize: number;\n /** Stroked glyphs paint with `stroke`, filled glyphs with `fill`. */\n paint: 'fill' | 'stroke';\n strokeWidth?: number;\n content: React.ReactNode;\n}\n\n/**\n * Builds an icon component. Side-effect free: every call site carries a `@__PURE__` annotation\n * comment so bundlers drop the icons a consumer does not use (a test bundles a one-icon entry with\n * Vite's production build). Keep that annotation on new icons.\n */\nfunction createIcon({\n name,\n displayName,\n viewBox,\n defaultSize,\n paint,\n strokeWidth,\n content,\n}: IconDefinition): IconComponent {\n const paintProps: React.SVGProps<SVGSVGElement> =\n paint === 'fill'\n ? { fill: 'currentColor' }\n : {\n fill: 'none',\n stroke: 'currentColor',\n strokeWidth,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n };\n\n const Icon = ({ size = defaultSize, title, children, ...rest }: IconProps) => {\n const a11yProps: React.SVGProps<SVGSVGElement> = title\n ? { role: 'img' }\n : { 'aria-hidden': true, focusable: 'false' };\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={size}\n height={size}\n viewBox={viewBox}\n data-wave-icon={name}\n {...paintProps}\n {...a11yProps}\n {...rest}\n >\n {title ? <title>{title}</title> : null}\n {content}\n {children}\n </svg>\n );\n };\n Icon.displayName = displayName;\n return Icon;\n}\n\nconst CHEVRON_DOWN =\n 'M2.22 4.47a.75.75 0 0 1 1.06 0L6 7.19l2.72-2.72a.75.75 0 1 1 1.06 1.06L6.53 8.78a.75.75 0 0 1-1.06 0L2.22 5.53a.75.75 0 0 1 0-1.06Z';\nconst CHEVRON_UP =\n 'M2.22 7.53a.75.75 0 0 0 1.06 0L6 4.81l2.72 2.72a.75.75 0 1 0 1.06-1.06L6.53 3.22a.75.75 0 0 0-1.06 0L2.22 6.47a.75.75 0 0 0 0 1.06Z';\nconst CHEVRON_RIGHT =\n 'M4.47 2.22a.75.75 0 0 0 0 1.06L7.19 6 4.47 8.72a.75.75 0 1 0 1.06 1.06l3.25-3.25a.75.75 0 0 0 0-1.06L5.53 2.22a.75.75 0 0 0-1.06 0Z';\nconst CHEVRON_LEFT =\n 'M7.53 2.22a.75.75 0 0 1 0 1.06L4.81 6l2.72 2.72a.75.75 0 1 1-1.06 1.06L3.22 6.53a.75.75 0 0 1 0-1.06l3.25-3.25a.75.75 0 0 1 1.06 0Z';\n\n/** Close / clear / dismiss glyph (Dialog, Drawer, MessageBar, Toast, Tag, SearchBox, pickers). */\nexport const DismissIcon = /* @__PURE__ */ createIcon({\n name: 'dismiss',\n displayName: 'DismissIcon',\n viewBox: '0 0 20 20',\n defaultSize: 16,\n paint: 'fill',\n content: (\n <path d=\"M6.28 5.22a.75.75 0 0 0-1.06 1.06L8.94 10l-3.72 3.72a.75.75 0 1 0 1.06 1.06L10 11.06l3.72 3.72a.75.75 0 1 0 1.06-1.06L11.06 10l3.72-3.72a.75.75 0 0 0-1.06-1.06L10 8.94 6.28 5.22Z\" />\n ),\n});\n\n/** Disclosure chevron pointing down (MenuButton, SplitButton, Dropdown, Accordion). */\nexport const ChevronDownIcon = /* @__PURE__ */ createIcon({\n name: 'chevron-down',\n displayName: 'ChevronDownIcon',\n viewBox: '0 0 12 12',\n defaultSize: 12,\n paint: 'fill',\n content: <path d={CHEVRON_DOWN} />,\n});\n\n/** Chevron pointing up. */\nexport const ChevronUpIcon = /* @__PURE__ */ createIcon({\n name: 'chevron-up',\n displayName: 'ChevronUpIcon',\n viewBox: '0 0 12 12',\n defaultSize: 12,\n paint: 'fill',\n content: <path d={CHEVRON_UP} />,\n});\n\n/** Chevron pointing left (physical). Mirror directional uses with `wave-rtl:-scale-x-100`. */\nexport const ChevronLeftIcon = /* @__PURE__ */ createIcon({\n name: 'chevron-left',\n displayName: 'ChevronLeftIcon',\n viewBox: '0 0 12 12',\n defaultSize: 12,\n paint: 'fill',\n content: <path d={CHEVRON_LEFT} />,\n});\n\n/** Chevron pointing right (physical). Mirror directional uses with `wave-rtl:-scale-x-100`. */\nexport const ChevronRightIcon = /* @__PURE__ */ createIcon({\n name: 'chevron-right',\n displayName: 'ChevronRightIcon',\n viewBox: '0 0 12 12',\n defaultSize: 12,\n paint: 'fill',\n content: <path d={CHEVRON_RIGHT} />,\n});\n\n/** Double chevron pointing left (Pagination \"first\"). */\nexport const ChevronDoubleLeftIcon = /* @__PURE__ */ createIcon({\n name: 'chevron-double-left',\n displayName: 'ChevronDoubleLeftIcon',\n viewBox: '0 0 12 12',\n defaultSize: 12,\n paint: 'fill',\n content: (\n <>\n <path d={CHEVRON_LEFT} transform=\"translate(-1.4 0)\" />\n <path d={CHEVRON_LEFT} transform=\"translate(2.6 0)\" />\n </>\n ),\n});\n\n/** Double chevron pointing right (Pagination \"last\"). */\nexport const ChevronDoubleRightIcon = /* @__PURE__ */ createIcon({\n name: 'chevron-double-right',\n displayName: 'ChevronDoubleRightIcon',\n viewBox: '0 0 12 12',\n defaultSize: 12,\n paint: 'fill',\n content: (\n <>\n <path d={CHEVRON_RIGHT} transform=\"translate(-2.6 0)\" />\n <path d={CHEVRON_RIGHT} transform=\"translate(1.4 0)\" />\n </>\n ),\n});\n\n/** Calendar glyph (DatePicker toggle). */\nexport const CalendarIcon = /* @__PURE__ */ createIcon({\n name: 'calendar',\n displayName: 'CalendarIcon',\n viewBox: '0 0 20 20',\n defaultSize: 16,\n paint: 'fill',\n content: (\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M5.75 2a.75.75 0 0 1 .75.75V4h7V2.75a.75.75 0 0 1 1.5 0V4h.25A2.75 2.75 0 0 1 18 6.75v8.5A2.75 2.75 0 0 1 15.25 18H4.75A2.75 2.75 0 0 1 2 15.25v-8.5A2.75 2.75 0 0 1 4.75 4H5V2.75A.75.75 0 0 1 5.75 2Zm-1 5.5c-.69 0-1.25.56-1.25 1.25v6.5c0 .69.56 1.25 1.25 1.25h10.5c.69 0 1.25-.56 1.25-1.25v-6.5c0-.69-.56-1.25-1.25-1.25H4.75Z\"\n />\n ),\n});\n\n/** Clock glyph (TimePicker). */\nexport const ClockIcon = /* @__PURE__ */ createIcon({\n name: 'clock',\n displayName: 'ClockIcon',\n viewBox: '0 0 20 20',\n defaultSize: 16,\n paint: 'fill',\n content: (\n <path d=\"M10 2a8 8 0 1 1 0 16 8 8 0 0 1 0-16Zm0 1.5a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13Zm-.75 2.25a.75.75 0 0 1 1.5 0v3.94l2.28 2.28a.75.75 0 1 1-1.06 1.06l-2.5-2.5a.75.75 0 0 1-.22-.53V5.75Z\" />\n ),\n});\n\n/** Check mark (Checkbox, selected options). */\nexport const CheckIcon = /* @__PURE__ */ createIcon({\n name: 'check',\n displayName: 'CheckIcon',\n viewBox: '0 0 12 12',\n defaultSize: 16,\n paint: 'stroke',\n strokeWidth: 2,\n content: <path d=\"M2.5 6l2.5 2.5L9.5 3\" />,\n});\n\n/** Horizontal bar (indeterminate Checkbox). */\nexport const SubtractIcon = /* @__PURE__ */ createIcon({\n name: 'subtract',\n displayName: 'SubtractIcon',\n viewBox: '0 0 12 12',\n defaultSize: 16,\n paint: 'stroke',\n strokeWidth: 2,\n content: <path d=\"M2.5 6h7\" />,\n});\n\n/** Magnifier (SearchBox). */\nexport const SearchIcon = /* @__PURE__ */ createIcon({\n name: 'search',\n displayName: 'SearchIcon',\n viewBox: '0 0 20 20',\n defaultSize: 16,\n paint: 'fill',\n content: (\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M9 3.5a5.5 5.5 0 1 0 0 11 5.5 5.5 0 0 0 0-11ZM2 9a7 7 0 1 1 12.45 4.38l3.09 3.08a.75.75 0 1 1-1.06 1.06l-3.09-3.08A7 7 0 0 1 2 9Z\"\n />\n ),\n});\n\n/** Information glyph (InfoLabel, informational MessageBar/Toast). */\nexport const InfoIcon = /* @__PURE__ */ createIcon({\n name: 'info',\n displayName: 'InfoIcon',\n viewBox: '0 0 20 20',\n defaultSize: 16,\n paint: 'fill',\n content: (\n <path\n fillRule=\"evenodd\"\n d=\"M10 2a8 8 0 1 0 0 16 8 8 0 0 0 0-16Zm.5 5v1h-1V7h1Zm0 3v4h-1v-4h1Z\"\n />\n ),\n});\n\n/** Success status glyph (MessageBar, Toast). */\nexport const SuccessIcon = /* @__PURE__ */ createIcon({\n name: 'success',\n displayName: 'SuccessIcon',\n viewBox: '0 0 20 20',\n defaultSize: 16,\n paint: 'fill',\n content: (\n <path\n fillRule=\"evenodd\"\n d=\"M10 2a8 8 0 1 0 0 16 8 8 0 0 0 0-16Zm3.36 5.65-4 5a.5.5 0 0 1-.72.05l-2-2a.5.5 0 0 1 .72-.7l1.77 1.76 3.6-4.5a.5.5 0 0 1 .78.62l-.15.17Z\"\n />\n ),\n});\n\n/** Warning status glyph (MessageBar, Toast). */\nexport const WarningIcon = /* @__PURE__ */ createIcon({\n name: 'warning',\n displayName: 'WarningIcon',\n viewBox: '0 0 20 20',\n defaultSize: 16,\n paint: 'fill',\n content: (\n <path\n fillRule=\"evenodd\"\n d=\"M9.15 3.45a1 1 0 0 1 1.7 0l6.86 11.44A1 1 0 0 1 16.86 17H3.14a1 1 0 0 1-.85-1.53L9.15 3.45ZM10.5 13v1h-1v-1h1Zm0-5v4h-1V8h1Z\"\n />\n ),\n});\n\n/** Error status glyph (MessageBar, Toast). */\nexport const ErrorIcon = /* @__PURE__ */ createIcon({\n name: 'error',\n displayName: 'ErrorIcon',\n viewBox: '0 0 20 20',\n defaultSize: 16,\n paint: 'fill',\n content: (\n <path\n fillRule=\"evenodd\"\n d=\"M10 2a8 8 0 1 0 0 16 8 8 0 0 0 0-16Zm.5 5v4h-1V7h1Zm0 6v1h-1v-1h1Z\"\n />\n ),\n});\n\n/** Star (Rating). */\nexport const StarIcon = /* @__PURE__ */ createIcon({\n name: 'star',\n displayName: 'StarIcon',\n viewBox: '0 0 20 20',\n defaultSize: 16,\n paint: 'fill',\n content: (\n <path d=\"M10 1.5l2.47 5.01 5.53.8-4 3.9.94 5.49L10 13.88l-4.94 2.82.94-5.49-4-3.9 5.53-.8L10 1.5Z\" />\n ),\n});\n\n/** Plus (SpinButton increment); the {@link SubtractIcon} bar plus a vertical bar. */\nexport const AddIcon = /* @__PURE__ */ createIcon({\n name: 'add',\n displayName: 'AddIcon',\n viewBox: '0 0 12 12',\n defaultSize: 16,\n paint: 'stroke',\n strokeWidth: 2,\n content: <path d=\"M6 2.5v7M2.5 6h7\" />,\n});\n\n/**\n * Generic person (Avatar fallback when there is no image, icon or name). Accepts a relative size\n * such as `size=\"60%\"` to scale with its container.\n */\nexport const PersonIcon = /* @__PURE__ */ createIcon({\n name: 'person',\n displayName: 'PersonIcon',\n viewBox: '0 0 20 20',\n defaultSize: 16,\n paint: 'fill',\n content: (\n <path d=\"M10 2a4 4 0 1 1 0 8 4 4 0 0 1 0-8Zm-5.5 10h11A2.5 2.5 0 0 1 18 14.5v.5c0 2.4-2.9 4-8 4s-8-1.6-8-4v-.5A2.5 2.5 0 0 1 4.5 12Z\" />\n ),\n});\n\n/*\n * Presence glyphs (PresenceBadge). Drawn in a 16x16 box that the badge circle fills, with stroke\n * weights tuned for the 8-20px badge sizes; render them with `className=\"size-full\"`. They differ\n * from CheckIcon/ClockIcon/DismissIcon in geometry, so every status keeps a distinct shape at\n * badge size. Mirror the out-of-office arrow in right-to-left layouts (`wave-rtl:-scale-x-100`).\n */\n\n/** Presence \"available\": a check mark. */\nexport const PresenceAvailableIcon = /* @__PURE__ */ createIcon({\n name: 'presence-available',\n displayName: 'PresenceAvailableIcon',\n viewBox: '0 0 16 16',\n defaultSize: 16,\n paint: 'stroke',\n content: <path d=\"M4.6 8.3l2.2 2.2 4.6-4.8\" strokeWidth={2} />,\n});\n\n/**\n * Presence \"busy\": a full disc in `currentColor`. Forced-colors mode replaces the badge background\n * with Canvas but forces `color` to CanvasText, so busy stays a solid dot instead of an empty ring.\n */\nexport const PresenceBusyIcon = /* @__PURE__ */ createIcon({\n name: 'presence-busy',\n displayName: 'PresenceBusyIcon',\n viewBox: '0 0 16 16',\n defaultSize: 16,\n paint: 'fill',\n content: <path d=\"M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0Z\" />,\n});\n\n/** Presence \"away\": clock hands. */\nexport const PresenceAwayIcon = /* @__PURE__ */ createIcon({\n name: 'presence-away',\n displayName: 'PresenceAwayIcon',\n viewBox: '0 0 16 16',\n defaultSize: 16,\n paint: 'stroke',\n content: <path d=\"M8 4.4V8l2.6 1.8\" strokeWidth={1.8} />,\n});\n\n/** Presence \"offline\": a hollow ring with an X. */\nexport const PresenceOfflineIcon = /* @__PURE__ */ createIcon({\n name: 'presence-offline',\n displayName: 'PresenceOfflineIcon',\n viewBox: '0 0 16 16',\n defaultSize: 16,\n paint: 'stroke',\n content: (\n <>\n <circle cx={8} cy={8} r={6.5} strokeWidth={2.5} />\n <path d=\"M6 6l4 4m0-4l-4 4\" strokeWidth={1.6} />\n </>\n ),\n});\n\n/** Presence \"do not disturb\": a horizontal bar. */\nexport const PresenceDndIcon = /* @__PURE__ */ createIcon({\n name: 'presence-dnd',\n displayName: 'PresenceDndIcon',\n viewBox: '0 0 16 16',\n defaultSize: 16,\n paint: 'stroke',\n content: <path d=\"M4.5 8h7\" strokeWidth={2.2} />,\n});\n\n/** Presence \"out of office\": an arrow pointing left (physical; mirror it in RTL). */\nexport const PresenceOofIcon = /* @__PURE__ */ createIcon({\n name: 'presence-oof',\n displayName: 'PresenceOofIcon',\n viewBox: '0 0 16 16',\n defaultSize: 16,\n paint: 'stroke',\n content: <path d=\"M11.4 8H4.8m2.9-3L4.7 8l3 3\" strokeWidth={1.8} />,\n});\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ const e=require("../_virtual/_rolldown/runtime.cjs");let t=require("react");t=e.__toESM(t,1);var n=/[\p{L}\p{N}]/gu,r=2,i=new Set([`title`,`desc`,`style`,`script`,`template`]);function a(e){return e.match(n)?.length??0}function o(e){if(typeof e==`string`)return a(e);if(typeof e==`number`||typeof e==`bigint`)return a(String(e));if(typeof e!=`object`||!e)return 0;if(t.isValidElement(e)){let{props:t}=e,n=t[`aria-hidden`];return n===!0||n===`true`||t.hidden||typeof e.type==`string`&&i.has(e.type)?0:o(t.children)}if(!(Symbol.iterator in e))return 0;let n=e;if(!Array.isArray(n)&&n[Symbol.iterator]()===n)return 0;let s=0;for(let e of n)if(s+=o(e),s>=r)break;return s}function s(e){return o(e)>=r}function c(e){let t=e.ownerDocument.createTreeWalker(e,NodeFilter.SHOW_ELEMENT|NodeFilter.SHOW_TEXT,{acceptNode(e){if(e.nodeType===Node.TEXT_NODE)return NodeFilter.FILTER_ACCEPT;let t=e;return t.getAttribute(`aria-hidden`)===`true`||t.hasAttribute(`hidden`)||i.has(t.localName)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_SKIP}}),n=0;for(;t.nextNode();)if(n+=a(t.currentNode.nodeValue??``),n>=r)return!0;return!1}var l={childList:!0,subtree:!0,characterData:!0,attributes:!0,attributeFilter:[`aria-hidden`,`hidden`]};function u(e,t){let n=new MutationObserver(()=>t());return n.observe(e,l),()=>n.disconnect()}exports.hasRenderedTextLabel=c,exports.hasTextLabel=s,exports.observeTextLabel=u;
2
+ //# sourceMappingURL=labelInName.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"labelInName.cjs","names":["React","require_runtime","react","LABEL_CHARACTER","MIN_LABEL_CHARACTERS","NON_LABEL_ELEMENTS","countLabelCharacters","text","countLiteralLabelCharacters","node","ariaHidden","props","iterable","count","item","hasTextLabel","hasRenderedTextLabel","walker","element","child","LABEL_MUTATIONS","observeTextLabel","observer","onChange"],"sources":["../../src/lib/labelInName.ts"],"sourcesContent":["import * as React from 'react';\n\n/**\n * The C-SLOTS naming predicate (spec §1, WCAG 2.5.3 Label in Name): whether the content of a wired\n * dismiss/clear button (MessageBar `dismiss`, SearchBox `dismiss`, Tag `dismissIcon`) has a\n * **text label**, so the text names the button instead of the default name.\n *\n * A text label is text with **at least two letters or digits** (`\\p{L}`/`\\p{N}`) in total, outside\n * `aria-hidden=\"true\"`/`hidden` subtrees and outside SVG `<title>`/`<desc>`, `<script>`, `<style>`\n * and `<template>`. A lone character (`X`, `x`, `×`, `+`) is a symbolic glyph and keeps the\n * default name, as an icon does.\n *\n * Consumers keep the React glue: the literal check for the server render and the first client\n * render (so hydration matches), then the rendered DOM after mount, re-checked on every change:\n *\n * ```ts\n * const literal = hasTextLabel(children);\n * const [target, setTarget] = React.useState<HTMLElement | null>(null); // callback ref (C-HOOKS)\n * const subscribe = React.useCallback(\n * (onChange: () => void) => (target ? observeTextLabel(target, onChange) : noop),\n * [target],\n * );\n * const textLabel = React.useSyncExternalStore(\n * subscribe,\n * () => (target ? hasRenderedTextLabel(target) : literal),\n * () => literal,\n * );\n * ```\n *\n * Text hidden only by CSS (a responsive `hidden sm:inline` label) is not detected and counts as a\n * label, because a computed-style check would not follow media queries: document an explicit\n * `aria-label` for such buttons on the consuming prop.\n */\n\n/** A letter or a digit. */\nconst LABEL_CHARACTER = /[\\p{L}\\p{N}]/gu;\n\n/** Letters and digits a text label needs: a lone character (`X`, `×`, `+`) is a symbol. */\nconst MIN_LABEL_CHARACTERS = 2;\n\n/** Elements whose text is never a visible label (SVG `<title>`/`<desc>`, scripts, styles). */\nconst NON_LABEL_ELEMENTS: ReadonlySet<string> = new Set([\n 'title',\n 'desc',\n 'style',\n 'script',\n 'template',\n]);\n\ntype UnknownProps = Record<string, unknown>;\n\nfunction countLabelCharacters(text: string): number {\n return text.match(LABEL_CHARACTER)?.length ?? 0;\n}\n\n/**\n * Letters and digits in the literal strings and numbers of `node`, outside `aria-hidden`/`hidden`\n * elements (counting stops at {@link MIN_LABEL_CHARACTERS}). Text rendered by components, and\n * one-shot iterators (which reading would consume), are found by the DOM check after mount.\n */\nfunction countLiteralLabelCharacters(node: unknown): number {\n if (typeof node === 'string') return countLabelCharacters(node);\n if (typeof node === 'number' || typeof node === 'bigint') {\n return countLabelCharacters(String(node));\n }\n if (typeof node !== 'object' || node === null) return 0;\n if (React.isValidElement<UnknownProps>(node)) {\n const { props } = node;\n const ariaHidden = props['aria-hidden'];\n if (ariaHidden === true || ariaHidden === 'true' || props.hidden) return 0;\n if (typeof node.type === 'string' && NON_LABEL_ELEMENTS.has(node.type)) return 0;\n return countLiteralLabelCharacters(props.children);\n }\n if (!(Symbol.iterator in node)) return 0;\n const iterable = node as Iterable<unknown>;\n // A one-shot iterator (a generator) returns itself: reading it would consume it.\n if (!Array.isArray(iterable) && (iterable[Symbol.iterator]() as unknown) === iterable) return 0;\n let count = 0;\n for (const item of iterable) {\n count += countLiteralLabelCharacters(item);\n if (count >= MIN_LABEL_CHARACTERS) break;\n }\n return count;\n}\n\n/**\n * Whether the literal `node` has a text label: strings, numbers, elements (skipping\n * `aria-hidden`/`hidden` elements and SVG `<title>`/`<desc>`, `<script>`, `<style>`,\n * `<template>`), arrays and re-iterable collections such as a `Set`. A one-shot iterator (a\n * generator) is never read, and text rendered by a component is not seen: both are found by\n * {@link hasRenderedTextLabel} after mount.\n *\n * Takes a `React.ReactNode`, typed `unknown` because a slot's `children` prop is `unknown` at the\n * call sites; anything that is not a React node has no text label.\n */\nexport function hasTextLabel(node: unknown): boolean {\n return countLiteralLabelCharacters(node) >= MIN_LABEL_CHARACTERS;\n}\n\n/**\n * Whether the rendered `element` contains a text label: at least two letters or digits in text\n * outside `aria-hidden` and `hidden` subtrees and outside SVG `<title>`/`<desc>`, `<script>`,\n * `<style>` and `<template>` (visually hidden text included, since it names the button too).\n * Walks the descendants of `element` with a `TreeWalker` and stops as soon as two characters are\n * found. Text hidden only by CSS is not detected and counts as a label.\n */\nexport function hasRenderedTextLabel(element: Element): boolean {\n const walker = element.ownerDocument.createTreeWalker(\n element,\n NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_TEXT,\n {\n acceptNode(node) {\n if (node.nodeType === Node.TEXT_NODE) return NodeFilter.FILTER_ACCEPT;\n const child = node as Element;\n return child.getAttribute('aria-hidden') === 'true' ||\n child.hasAttribute('hidden') ||\n NON_LABEL_ELEMENTS.has(child.localName)\n ? NodeFilter.FILTER_REJECT\n : NodeFilter.FILTER_SKIP;\n },\n },\n );\n let count = 0;\n while (walker.nextNode()) {\n count += countLabelCharacters(walker.currentNode.nodeValue ?? '');\n if (count >= MIN_LABEL_CHARACTERS) return true;\n }\n return false;\n}\n\n/** Re-checks the name whenever the content changes (e.g. a translation loads). */\nconst LABEL_MUTATIONS: MutationObserverInit = {\n childList: true,\n subtree: true,\n characterData: true,\n attributes: true,\n attributeFilter: ['aria-hidden', 'hidden'],\n};\n\n/**\n * Calls `onChange` whenever the text label of `element` may have changed: text edits, added or\n * removed nodes at any depth, and `aria-hidden`/`hidden` changes. Returns the disconnect, so it\n * can be the `subscribe` of `useSyncExternalStore` directly.\n */\nexport function observeTextLabel(element: Element, onChange: () => void): () => void {\n const observer = new MutationObserver(() => onChange());\n observer.observe(element, LABEL_MUTATIONS);\n return () => observer.disconnect();\n}\n"],"mappings":"6FAmCA,IAAMG,EAAkB,iBAGlBC,EAAuB,EAGvBC,EAA0C,IAAI,IAAI,CACtD,QACA,OACA,QACA,SACA,UACF,CAAC,EAID,SAASC,EAAqB,EAAsB,CAClD,OAAOC,EAAK,MAAMJ,CAAe,CAAC,EAAE,QAAU,CAChD,CAOA,SAASK,EAA4B,EAAuB,CAC1D,GAAI,OAAOC,GAAS,SAAU,OAAOH,EAAqBG,CAAI,EAC9D,GAAI,OAAOA,GAAS,UAAY,OAAOA,GAAS,SAC9C,OAAOH,EAAqB,OAAOG,CAAI,CAAC,EAE1C,GAAI,OAAOA,GAAS,WAAYA,EAAe,MAAO,GACtD,GAAIT,EAAM,eAA6BS,CAAI,EAAG,CAC5C,GAAM,CAAE,SAAUA,EACZC,EAAaC,EAAM,eAGzB,OAFID,IAAe,IAAQA,IAAe,QAAUC,EAAM,QACtD,OAAOF,EAAK,MAAS,UAAYJ,EAAmB,IAAII,EAAK,IAAI,EAAU,EACxED,EAA4BG,EAAM,QAAQ,CACnD,CACA,GAAI,EAAE,OAAO,YAAYF,GAAO,MAAO,GACvC,IAAMG,EAAWH,EAEjB,GAAI,CAAC,MAAM,QAAQG,CAAQ,GAAMA,EAAS,OAAO,SAAS,CAAC,IAAkBA,EAAU,MAAO,GAC9F,IAAIC,EAAQ,EACZ,IAAK,IAAMC,KAAQF,EAEjB,GADA,GAASJ,EAA4BM,CAAI,EACrCD,GAAST,EAAsB,MAErC,OAAOS,CACT,CAYA,SAAgBE,EAAa,EAAwB,CACnD,OAAOP,EAA4BC,CAAI,GAAKL,CAC9C,CASA,SAAgBY,EAAqB,EAA2B,CAC9D,IAAMC,EAASC,EAAQ,cAAc,iBACnCA,EACA,WAAW,aAAe,WAAW,UACrC,CACE,WAAW,EAAM,CACf,GAAIT,EAAK,WAAa,KAAK,UAAW,OAAO,WAAW,cACxD,IAAMU,EAAQV,EACd,OAAOU,EAAM,aAAa,aAAa,IAAM,QAC3CA,EAAM,aAAa,QAAQ,GAC3Bd,EAAmB,IAAIc,EAAM,SAAS,EACpC,WAAW,cACX,WAAW,WACjB,CACF,CACF,EACIN,EAAQ,EACZ,KAAOI,EAAO,SAAS,GAErB,GADA,GAASX,EAAqBW,EAAO,YAAY,WAAa,EAAE,EAC5DJ,GAAST,EAAsB,MAAO,GAE5C,MAAO,EACT,CAGA,IAAMgB,EAAwC,CAC5C,UAAW,GACX,QAAS,GACT,cAAe,GACf,WAAY,GACZ,gBAAiB,CAAC,cAAe,QAAQ,CAC3C,EAOA,SAAgBC,EAAiB,EAAkB,EAAkC,CACnF,IAAMC,EAAW,IAAI,qBAAuBC,EAAS,CAAC,EAEtD,OADAD,EAAS,QAAQJ,EAASE,CAAe,MAC5BE,EAAS,WAAW,CACnC"}
@@ -0,0 +1,54 @@
1
+ import * as e from "react";
2
+ //#region src/lib/labelInName.ts
3
+ var t = /[\p{L}\p{N}]/gu, n = 2, r = /* @__PURE__ */ new Set([
4
+ "title",
5
+ "desc",
6
+ "style",
7
+ "script",
8
+ "template"
9
+ ]);
10
+ function i(e) {
11
+ return e.match(t)?.length ?? 0;
12
+ }
13
+ function a(t) {
14
+ if (typeof t == "string") return i(t);
15
+ if (typeof t == "number" || typeof t == "bigint") return i(String(t));
16
+ if (typeof t != "object" || !t) return 0;
17
+ if (e.isValidElement(t)) {
18
+ let { props: e } = t, n = e["aria-hidden"];
19
+ return n === !0 || n === "true" || e.hidden || typeof t.type == "string" && r.has(t.type) ? 0 : a(e.children);
20
+ }
21
+ if (!(Symbol.iterator in t)) return 0;
22
+ let o = t;
23
+ if (!Array.isArray(o) && o[Symbol.iterator]() === o) return 0;
24
+ let s = 0;
25
+ for (let e of o) if (s += a(e), s >= n) break;
26
+ return s;
27
+ }
28
+ function o(e) {
29
+ return a(e) >= n;
30
+ }
31
+ function s(e) {
32
+ let t = e.ownerDocument.createTreeWalker(e, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_TEXT, { acceptNode(e) {
33
+ if (e.nodeType === Node.TEXT_NODE) return NodeFilter.FILTER_ACCEPT;
34
+ let t = e;
35
+ return t.getAttribute("aria-hidden") === "true" || t.hasAttribute("hidden") || r.has(t.localName) ? NodeFilter.FILTER_REJECT : NodeFilter.FILTER_SKIP;
36
+ } }), a = 0;
37
+ for (; t.nextNode();) if (a += i(t.currentNode.nodeValue ?? ""), a >= n) return !0;
38
+ return !1;
39
+ }
40
+ var c = {
41
+ childList: !0,
42
+ subtree: !0,
43
+ characterData: !0,
44
+ attributes: !0,
45
+ attributeFilter: ["aria-hidden", "hidden"]
46
+ };
47
+ function l(e, t) {
48
+ let n = new MutationObserver(() => t());
49
+ return n.observe(e, c), () => n.disconnect();
50
+ }
51
+ //#endregion
52
+ export { s as hasRenderedTextLabel, o as hasTextLabel, l as observeTextLabel };
53
+
54
+ //# sourceMappingURL=labelInName.mjs.map