@allxsmith/bestax-bulma 5.55.0 → 5.57.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 (369) hide show
  1. package/dist/bestax.css +1 -1
  2. package/dist/bestax.css.map +1 -1
  3. package/dist/esm/columns/Column.js +1 -0
  4. package/dist/esm/columns/Column.js.map +1 -1
  5. package/dist/esm/columns/Columns.js +1 -0
  6. package/dist/esm/columns/Columns.js.map +1 -1
  7. package/dist/esm/components/Avatar.js +1 -0
  8. package/dist/esm/components/Avatar.js.map +1 -1
  9. package/dist/esm/components/Avatars.js +1 -0
  10. package/dist/esm/components/Avatars.js.map +1 -1
  11. package/dist/esm/components/Badge.js +1 -0
  12. package/dist/esm/components/Badge.js.map +1 -1
  13. package/dist/esm/components/Breadcrumb.js +1 -0
  14. package/dist/esm/components/Breadcrumb.js.map +1 -1
  15. package/dist/esm/components/Card.js +1 -0
  16. package/dist/esm/components/Card.js.map +1 -1
  17. package/dist/esm/components/Carousel.js +1 -0
  18. package/dist/esm/components/Carousel.js.map +1 -1
  19. package/dist/esm/components/Collapse.js +1 -0
  20. package/dist/esm/components/Collapse.js.map +1 -1
  21. package/dist/esm/components/Collapses.js +1 -0
  22. package/dist/esm/components/Collapses.js.map +1 -1
  23. package/dist/esm/components/Command.js +1 -0
  24. package/dist/esm/components/Command.js.map +1 -1
  25. package/dist/esm/components/ContextMenu.js +1 -0
  26. package/dist/esm/components/ContextMenu.js.map +1 -1
  27. package/dist/esm/components/DataTable.js +1 -0
  28. package/dist/esm/components/DataTable.js.map +1 -1
  29. package/dist/esm/components/Dialog.js +1 -0
  30. package/dist/esm/components/Dialog.js.map +1 -1
  31. package/dist/esm/components/Dropdown.js +1 -0
  32. package/dist/esm/components/Dropdown.js.map +1 -1
  33. package/dist/esm/components/EmptyState.js +1 -0
  34. package/dist/esm/components/EmptyState.js.map +1 -1
  35. package/dist/esm/components/HoverCard.js +1 -0
  36. package/dist/esm/components/HoverCard.js.map +1 -1
  37. package/dist/esm/components/Loading.js +1 -0
  38. package/dist/esm/components/Loading.js.map +1 -1
  39. package/dist/esm/components/Menu.js +1 -0
  40. package/dist/esm/components/Menu.js.map +1 -1
  41. package/dist/esm/components/Message.js +1 -0
  42. package/dist/esm/components/Message.js.map +1 -1
  43. package/dist/esm/components/Modal.js +1 -0
  44. package/dist/esm/components/Modal.js.map +1 -1
  45. package/dist/esm/components/Navbar.js +1 -0
  46. package/dist/esm/components/Navbar.js.map +1 -1
  47. package/dist/esm/components/Pagination.js +1 -0
  48. package/dist/esm/components/Pagination.js.map +1 -1
  49. package/dist/esm/components/Panel.js +1 -0
  50. package/dist/esm/components/Panel.js.map +1 -1
  51. package/dist/esm/components/Popover.js +1 -0
  52. package/dist/esm/components/Popover.js.map +1 -1
  53. package/dist/esm/components/Reveal.js +1 -0
  54. package/dist/esm/components/Reveal.js.map +1 -1
  55. package/dist/esm/components/ScrollArea.js +1 -0
  56. package/dist/esm/components/ScrollArea.js.map +1 -1
  57. package/dist/esm/components/SegmentedControl.js +1 -0
  58. package/dist/esm/components/SegmentedControl.js.map +1 -1
  59. package/dist/esm/components/Sidebar.js +1 -0
  60. package/dist/esm/components/Sidebar.js.map +1 -1
  61. package/dist/esm/components/Steps.js +1 -0
  62. package/dist/esm/components/Steps.js.map +1 -1
  63. package/dist/esm/components/Tabs.js +1 -0
  64. package/dist/esm/components/Tabs.js.map +1 -1
  65. package/dist/esm/components/Timeline.js +1 -0
  66. package/dist/esm/components/Timeline.js.map +1 -1
  67. package/dist/esm/components/Toast.js +1 -0
  68. package/dist/esm/components/Toast.js.map +1 -1
  69. package/dist/esm/components/Tooltip.js +1 -0
  70. package/dist/esm/components/Tooltip.js.map +1 -1
  71. package/dist/esm/components/TreeView.js +1 -0
  72. package/dist/esm/components/TreeView.js.map +1 -1
  73. package/dist/esm/components/collapsesContext.js +1 -0
  74. package/dist/esm/components/collapsesContext.js.map +1 -1
  75. package/dist/esm/components/useDataTable.js +28 -0
  76. package/dist/esm/components/useDataTable.js.map +1 -1
  77. package/dist/esm/elements/Block.js +1 -0
  78. package/dist/esm/elements/Block.js.map +1 -1
  79. package/dist/esm/elements/Box.js +1 -0
  80. package/dist/esm/elements/Box.js.map +1 -1
  81. package/dist/esm/elements/Button.js +1 -0
  82. package/dist/esm/elements/Button.js.map +1 -1
  83. package/dist/esm/elements/Buttons.js +1 -0
  84. package/dist/esm/elements/Buttons.js.map +1 -1
  85. package/dist/esm/elements/Code.js +1 -0
  86. package/dist/esm/elements/Code.js.map +1 -1
  87. package/dist/esm/elements/ColorSwatch.js +1 -0
  88. package/dist/esm/elements/ColorSwatch.js.map +1 -1
  89. package/dist/esm/elements/Content.js +1 -0
  90. package/dist/esm/elements/Content.js.map +1 -1
  91. package/dist/esm/elements/Delete.js +1 -0
  92. package/dist/esm/elements/Delete.js.map +1 -1
  93. package/dist/esm/elements/DescriptionList.js +1 -0
  94. package/dist/esm/elements/DescriptionList.js.map +1 -1
  95. package/dist/esm/elements/Divider.js +1 -0
  96. package/dist/esm/elements/Divider.js.map +1 -1
  97. package/dist/esm/elements/Emphasis.js +1 -0
  98. package/dist/esm/elements/Emphasis.js.map +1 -1
  99. package/dist/esm/elements/Figure.js +1 -0
  100. package/dist/esm/elements/Figure.js.map +1 -1
  101. package/dist/esm/elements/Icon.js +1 -0
  102. package/dist/esm/elements/Icon.js.map +1 -1
  103. package/dist/esm/elements/IconText.js +1 -0
  104. package/dist/esm/elements/IconText.js.map +1 -1
  105. package/dist/esm/elements/Image.js +1 -0
  106. package/dist/esm/elements/Image.js.map +1 -1
  107. package/dist/esm/elements/Kbd.js +1 -0
  108. package/dist/esm/elements/Kbd.js.map +1 -1
  109. package/dist/esm/elements/Link.js +1 -0
  110. package/dist/esm/elements/Link.js.map +1 -1
  111. package/dist/esm/elements/LinkButton.js +1 -0
  112. package/dist/esm/elements/LinkButton.js.map +1 -1
  113. package/dist/esm/elements/ListItem.js +1 -0
  114. package/dist/esm/elements/ListItem.js.map +1 -1
  115. package/dist/esm/elements/Loader.js +1 -0
  116. package/dist/esm/elements/Loader.js.map +1 -1
  117. package/dist/esm/elements/Notification.js +1 -0
  118. package/dist/esm/elements/Notification.js.map +1 -1
  119. package/dist/esm/elements/OrderedList.js +1 -0
  120. package/dist/esm/elements/OrderedList.js.map +1 -1
  121. package/dist/esm/elements/Paragraph.js +1 -0
  122. package/dist/esm/elements/Paragraph.js.map +1 -1
  123. package/dist/esm/elements/Pre.js +1 -0
  124. package/dist/esm/elements/Pre.js.map +1 -1
  125. package/dist/esm/elements/Progress.js +1 -0
  126. package/dist/esm/elements/Progress.js.map +1 -1
  127. package/dist/esm/elements/RingProgress.js +1 -0
  128. package/dist/esm/elements/RingProgress.js.map +1 -1
  129. package/dist/esm/elements/Skeleton.js +1 -0
  130. package/dist/esm/elements/Skeleton.js.map +1 -1
  131. package/dist/esm/elements/Span.js +1 -0
  132. package/dist/esm/elements/Span.js.map +1 -1
  133. package/dist/esm/elements/Strong.js +1 -0
  134. package/dist/esm/elements/Strong.js.map +1 -1
  135. package/dist/esm/elements/SubTitle.js +1 -0
  136. package/dist/esm/elements/SubTitle.js.map +1 -1
  137. package/dist/esm/elements/Table.js +1 -0
  138. package/dist/esm/elements/Table.js.map +1 -1
  139. package/dist/esm/elements/Tag.js +1 -0
  140. package/dist/esm/elements/Tag.js.map +1 -1
  141. package/dist/esm/elements/Tags.js +1 -0
  142. package/dist/esm/elements/Tags.js.map +1 -1
  143. package/dist/esm/elements/Tbody.js +1 -0
  144. package/dist/esm/elements/Tbody.js.map +1 -1
  145. package/dist/esm/elements/Td.js +1 -0
  146. package/dist/esm/elements/Td.js.map +1 -1
  147. package/dist/esm/elements/Tfoot.js +1 -0
  148. package/dist/esm/elements/Tfoot.js.map +1 -1
  149. package/dist/esm/elements/Th.js +1 -0
  150. package/dist/esm/elements/Th.js.map +1 -1
  151. package/dist/esm/elements/Thead.js +1 -0
  152. package/dist/esm/elements/Thead.js.map +1 -1
  153. package/dist/esm/elements/Title.js +1 -0
  154. package/dist/esm/elements/Title.js.map +1 -1
  155. package/dist/esm/elements/ToggleButton.js +1 -0
  156. package/dist/esm/elements/ToggleButton.js.map +1 -1
  157. package/dist/esm/elements/Tr.js +1 -0
  158. package/dist/esm/elements/Tr.js.map +1 -1
  159. package/dist/esm/elements/UnorderedList.js +1 -0
  160. package/dist/esm/elements/UnorderedList.js.map +1 -1
  161. package/dist/esm/elements/iconProps.js +1 -0
  162. package/dist/esm/elements/iconProps.js.map +1 -1
  163. package/dist/esm/form/Autocomplete.js +1 -0
  164. package/dist/esm/form/Autocomplete.js.map +1 -1
  165. package/dist/esm/form/Checkbox.js +1 -0
  166. package/dist/esm/form/Checkbox.js.map +1 -1
  167. package/dist/esm/form/CheckboxCard.js +1 -0
  168. package/dist/esm/form/CheckboxCard.js.map +1 -1
  169. package/dist/esm/form/Checkboxes.js +1 -0
  170. package/dist/esm/form/Checkboxes.js.map +1 -1
  171. package/dist/esm/form/ColorInput.js +69 -0
  172. package/dist/esm/form/ColorInput.js.map +1 -0
  173. package/dist/esm/form/ColorInputBase.js +199 -0
  174. package/dist/esm/form/ColorInputBase.js.map +1 -0
  175. package/dist/esm/form/ColorPicker.js +5 -20
  176. package/dist/esm/form/ColorPicker.js.map +1 -1
  177. package/dist/esm/form/Combobox.js +1 -0
  178. package/dist/esm/form/Combobox.js.map +1 -1
  179. package/dist/esm/form/Control.js +1 -0
  180. package/dist/esm/form/Control.js.map +1 -1
  181. package/dist/esm/form/DateInput.js +1 -0
  182. package/dist/esm/form/DateInput.js.map +1 -1
  183. package/dist/esm/form/DateInputBase.js +1 -0
  184. package/dist/esm/form/DateInputBase.js.map +1 -1
  185. package/dist/esm/form/DateRangeInput.js +1 -0
  186. package/dist/esm/form/DateRangeInput.js.map +1 -1
  187. package/dist/esm/form/DateRangeInputBase.js +1 -0
  188. package/dist/esm/form/DateRangeInputBase.js.map +1 -1
  189. package/dist/esm/form/DateTimeInput.js +1 -0
  190. package/dist/esm/form/DateTimeInput.js.map +1 -1
  191. package/dist/esm/form/DateTimeInputBase.js +1 -0
  192. package/dist/esm/form/DateTimeInputBase.js.map +1 -1
  193. package/dist/esm/form/Dropzone.js +1 -0
  194. package/dist/esm/form/Dropzone.js.map +1 -1
  195. package/dist/esm/form/Field.js +1 -0
  196. package/dist/esm/form/Field.js.map +1 -1
  197. package/dist/esm/form/Fieldset.js +1 -0
  198. package/dist/esm/form/Fieldset.js.map +1 -1
  199. package/dist/esm/form/File.js +1 -0
  200. package/dist/esm/form/File.js.map +1 -1
  201. package/dist/esm/form/FormContext.js +1 -0
  202. package/dist/esm/form/FormContext.js.map +1 -1
  203. package/dist/esm/form/Input.js +1 -0
  204. package/dist/esm/form/Input.js.map +1 -1
  205. package/dist/esm/form/InputBase.js +1 -0
  206. package/dist/esm/form/InputBase.js.map +1 -1
  207. package/dist/esm/form/Numberinput.js +1 -0
  208. package/dist/esm/form/Numberinput.js.map +1 -1
  209. package/dist/esm/form/PinInput.js +1 -0
  210. package/dist/esm/form/PinInput.js.map +1 -1
  211. package/dist/esm/form/Radio.js +1 -0
  212. package/dist/esm/form/Radio.js.map +1 -1
  213. package/dist/esm/form/RadioCard.js +1 -0
  214. package/dist/esm/form/RadioCard.js.map +1 -1
  215. package/dist/esm/form/Radios.js +1 -0
  216. package/dist/esm/form/Radios.js.map +1 -1
  217. package/dist/esm/form/Rate.js +1 -0
  218. package/dist/esm/form/Rate.js.map +1 -1
  219. package/dist/esm/form/Select.js +1 -0
  220. package/dist/esm/form/Select.js.map +1 -1
  221. package/dist/esm/form/SelectBase.js +1 -0
  222. package/dist/esm/form/SelectBase.js.map +1 -1
  223. package/dist/esm/form/Slider.js +1 -0
  224. package/dist/esm/form/Slider.js.map +1 -1
  225. package/dist/esm/form/Switch.js +1 -0
  226. package/dist/esm/form/Switch.js.map +1 -1
  227. package/dist/esm/form/Taginput.js +1 -0
  228. package/dist/esm/form/Taginput.js.map +1 -1
  229. package/dist/esm/form/TextArea.js +1 -0
  230. package/dist/esm/form/TextArea.js.map +1 -1
  231. package/dist/esm/form/TextAreaBase.js +1 -0
  232. package/dist/esm/form/TextAreaBase.js.map +1 -1
  233. package/dist/esm/form/TimeInput.js +1 -0
  234. package/dist/esm/form/TimeInput.js.map +1 -1
  235. package/dist/esm/form/TimeInputBase.js +1 -0
  236. package/dist/esm/form/TimeInputBase.js.map +1 -1
  237. package/dist/esm/form/_colorInternals/EyeDropperButton.js +41 -0
  238. package/dist/esm/form/_colorInternals/EyeDropperButton.js.map +1 -0
  239. package/dist/esm/form/_colorInternals/pickerState.js +5 -4
  240. package/dist/esm/form/_colorInternals/pickerState.js.map +1 -1
  241. package/dist/esm/form/_pickerInternals/Calendar.js +1 -0
  242. package/dist/esm/form/_pickerInternals/Calendar.js.map +1 -1
  243. package/dist/esm/form/_pickerInternals/PickerPopover.js +1 -0
  244. package/dist/esm/form/_pickerInternals/PickerPopover.js.map +1 -1
  245. package/dist/esm/form/_pickerInternals/TimeWheels.js +1 -0
  246. package/dist/esm/form/_pickerInternals/TimeWheels.js.map +1 -1
  247. package/dist/esm/form/_pickerInternals/useLocaleDefaults.js +1 -0
  248. package/dist/esm/form/_pickerInternals/useLocaleDefaults.js.map +1 -1
  249. package/dist/esm/form/_pickerInternals/useNativeMobilePicker.js +1 -0
  250. package/dist/esm/form/_pickerInternals/useNativeMobilePicker.js.map +1 -1
  251. package/dist/esm/form/_pickerInternals/useSegmentedEntry.js +1 -0
  252. package/dist/esm/form/_pickerInternals/useSegmentedEntry.js.map +1 -1
  253. package/dist/esm/form/controlLoading.js +1 -0
  254. package/dist/esm/form/controlLoading.js.map +1 -1
  255. package/dist/esm/form/groupFieldset.js +1 -0
  256. package/dist/esm/form/groupFieldset.js.map +1 -1
  257. package/dist/esm/form/useAutoLabelId.js +1 -0
  258. package/dist/esm/form/useAutoLabelId.js.map +1 -1
  259. package/dist/esm/grid/Cell.js +1 -0
  260. package/dist/esm/grid/Cell.js.map +1 -1
  261. package/dist/esm/grid/Grid.js +1 -0
  262. package/dist/esm/grid/Grid.js.map +1 -1
  263. package/dist/esm/helpers/ClientOnly.js +1 -0
  264. package/dist/esm/helpers/ClientOnly.js.map +1 -1
  265. package/dist/esm/helpers/Config.js +1 -0
  266. package/dist/esm/helpers/Config.js.map +1 -1
  267. package/dist/esm/helpers/LocaleProvider.js +1 -0
  268. package/dist/esm/helpers/LocaleProvider.js.map +1 -1
  269. package/dist/esm/helpers/Theme.js +1 -0
  270. package/dist/esm/helpers/Theme.js.map +1 -1
  271. package/dist/esm/helpers/flattenChildren.js +1 -0
  272. package/dist/esm/helpers/flattenChildren.js.map +1 -1
  273. package/dist/esm/helpers/inertProps.js +1 -0
  274. package/dist/esm/helpers/inertProps.js.map +1 -1
  275. package/dist/esm/helpers/localeFormat.js +1 -0
  276. package/dist/esm/helpers/localeFormat.js.map +1 -1
  277. package/dist/esm/helpers/overlayStack.js +1 -0
  278. package/dist/esm/helpers/overlayStack.js.map +1 -1
  279. package/dist/esm/helpers/portal.js +1 -0
  280. package/dist/esm/helpers/portal.js.map +1 -1
  281. package/dist/esm/helpers/scrollLock.js +1 -0
  282. package/dist/esm/helpers/scrollLock.js.map +1 -1
  283. package/dist/esm/helpers/statusRegion.js +1 -0
  284. package/dist/esm/helpers/statusRegion.js.map +1 -1
  285. package/dist/esm/helpers/typeahead.js +1 -0
  286. package/dist/esm/helpers/typeahead.js.map +1 -1
  287. package/dist/esm/helpers/useAnchoredPosition.js +1 -0
  288. package/dist/esm/helpers/useAnchoredPosition.js.map +1 -1
  289. package/dist/esm/helpers/useBulmaClasses.js +1 -0
  290. package/dist/esm/helpers/useBulmaClasses.js.map +1 -1
  291. package/dist/esm/helpers/useClientLayoutEffect.js +1 -0
  292. package/dist/esm/helpers/useClientLayoutEffect.js.map +1 -1
  293. package/dist/esm/helpers/useColorClasses.js +1 -0
  294. package/dist/esm/helpers/useColorClasses.js.map +1 -1
  295. package/dist/esm/helpers/useComboboxEngine.js +1 -0
  296. package/dist/esm/helpers/useComboboxEngine.js.map +1 -1
  297. package/dist/esm/helpers/useContextMenuTrigger.js +1 -0
  298. package/dist/esm/helpers/useContextMenuTrigger.js.map +1 -1
  299. package/dist/esm/helpers/useFlexboxClasses.js +1 -0
  300. package/dist/esm/helpers/useFlexboxClasses.js.map +1 -1
  301. package/dist/esm/helpers/useFocusTrap.js +1 -0
  302. package/dist/esm/helpers/useFocusTrap.js.map +1 -1
  303. package/dist/esm/helpers/useHoverOpen.js +1 -0
  304. package/dist/esm/helpers/useHoverOpen.js.map +1 -1
  305. package/dist/esm/helpers/useInertSiblings.js +1 -0
  306. package/dist/esm/helpers/useInertSiblings.js.map +1 -1
  307. package/dist/esm/helpers/useIsHydrated.js +1 -0
  308. package/dist/esm/helpers/useIsHydrated.js.map +1 -1
  309. package/dist/esm/helpers/useLatestRef.js +1 -0
  310. package/dist/esm/helpers/useLatestRef.js.map +1 -1
  311. package/dist/esm/helpers/useMenuKeys.js +1 -0
  312. package/dist/esm/helpers/useMenuKeys.js.map +1 -1
  313. package/dist/esm/helpers/useOtherClasses.js +1 -0
  314. package/dist/esm/helpers/useOtherClasses.js.map +1 -1
  315. package/dist/esm/helpers/useSpacingClasses.js +1 -0
  316. package/dist/esm/helpers/useSpacingClasses.js.map +1 -1
  317. package/dist/esm/helpers/useTreeView.js +1 -0
  318. package/dist/esm/helpers/useTreeView.js.map +1 -1
  319. package/dist/esm/helpers/useTypographyClasses.js +1 -0
  320. package/dist/esm/helpers/useTypographyClasses.js.map +1 -1
  321. package/dist/esm/helpers/useVisibilityClasses.js +1 -0
  322. package/dist/esm/helpers/useVisibilityClasses.js.map +1 -1
  323. package/dist/esm/layout/Container.js +1 -0
  324. package/dist/esm/layout/Container.js.map +1 -1
  325. package/dist/esm/layout/Footer.js +1 -0
  326. package/dist/esm/layout/Footer.js.map +1 -1
  327. package/dist/esm/layout/Hero.js +1 -0
  328. package/dist/esm/layout/Hero.js.map +1 -1
  329. package/dist/esm/layout/Level.js +1 -0
  330. package/dist/esm/layout/Level.js.map +1 -1
  331. package/dist/esm/layout/Media.js +1 -0
  332. package/dist/esm/layout/Media.js.map +1 -1
  333. package/dist/esm/layout/Section.js +1 -0
  334. package/dist/esm/layout/Section.js.map +1 -1
  335. package/dist/esm/layout/Splitter.js +1 -0
  336. package/dist/esm/layout/Splitter.js.map +1 -1
  337. package/dist/extras.css +1 -1
  338. package/dist/extras.css.map +1 -1
  339. package/dist/index.cjs +300 -22
  340. package/dist/index.cjs.map +1 -1
  341. package/dist/index.esm.js +2 -0
  342. package/dist/index.esm.js.map +1 -1
  343. package/dist/types/components/DataTable.d.ts +1 -1
  344. package/dist/types/components/useDataTable.d.ts +36 -0
  345. package/dist/types/form/ColorInput.d.ts +76 -0
  346. package/dist/types/form/ColorInputBase.d.ts +108 -0
  347. package/dist/types/form/ColorPicker.d.ts +5 -0
  348. package/dist/types/form/_colorInternals/EyeDropperButton.d.ts +8 -0
  349. package/dist/types/form/_colorInternals/pickerState.d.ts +7 -1
  350. package/dist/types/index.d.ts +4 -0
  351. package/dist/types-cjs/components/DataTable.d.ts +1 -1
  352. package/dist/types-cjs/components/useDataTable.d.ts +36 -0
  353. package/dist/types-cjs/form/ColorInput.d.ts +76 -0
  354. package/dist/types-cjs/form/ColorInputBase.d.ts +108 -0
  355. package/dist/types-cjs/form/ColorPicker.d.ts +5 -0
  356. package/dist/types-cjs/form/_colorInternals/EyeDropperButton.d.ts +8 -0
  357. package/dist/types-cjs/form/_colorInternals/pickerState.d.ts +7 -1
  358. package/dist/types-cjs/index.d.ts +4 -0
  359. package/dist/versions/bestax-no-dark-mode.css +1 -1
  360. package/dist/versions/bestax-no-dark-mode.css.map +1 -1
  361. package/dist/versions/bestax-no-helpers-prefixed.css +1 -1
  362. package/dist/versions/bestax-no-helpers-prefixed.css.map +1 -1
  363. package/dist/versions/bestax-no-helpers.css +1 -1
  364. package/dist/versions/bestax-no-helpers.css.map +1 -1
  365. package/dist/versions/bestax-prefixed.css +1 -1
  366. package/dist/versions/bestax-prefixed.css.map +1 -1
  367. package/package.json +2 -1
  368. package/src/scss/form/_colorinput.scss +109 -0
  369. package/src/scss/form/_index.scss +1 -0
@@ -1,15 +1,16 @@
1
1
  /* @allxsmith/bestax-bulma — AI agents: see AGENTS.md in the package root, or https://bestax.io/llms.txt */
2
+ 'use client';
2
3
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
3
4
  import { forwardRef, useRef, useState, useMemo, useCallback, useEffect } from 'react';
4
5
  import { usePrefixedClassNames, classNames, prefixedClassNames } from '../helpers/classNames.js';
5
6
  import { useClassPrefix } from '../helpers/Config.js';
6
7
  import { useBulmaClasses } from '../helpers/useBulmaClasses.js';
7
- import { useIsHydrated } from '../helpers/useIsHydrated.js';
8
8
  import { useClientLayoutEffect } from '../helpers/useClientLayoutEffect.js';
9
9
  import { withSubComponents } from '../helpers/withSubComponents.js';
10
10
  import { ColorSwatch } from '../elements/ColorSwatch.js';
11
11
  import { parseColor, formatColor, sameColor, prefersDarkInk, hsvaToRgba } from './_colorInternals/colorMath.js';
12
- import { usePicker, standalone, useColorPicker, ColorPickerContext, keepingChannels, noop } from './_colorInternals/pickerState.js';
12
+ import { usePicker, standalone, useColorPicker, ColorPickerContext, keepingChannels } from './_colorInternals/pickerState.js';
13
+ import { EyeDropperButton } from './_colorInternals/EyeDropperButton.js';
13
14
  import { Field } from './Field.js';
14
15
  import { Control } from './Control.js';
15
16
  import { useFieldsetDisabled, useInsideField, useInsideControl, rendersOwnField, rendersOwnControl } from './FormContext.js';
@@ -406,7 +407,7 @@ const CheckIcon = ({ haloClass }) => (jsx("svg", { viewBox: "0 0 16 16", width:
406
407
  const ColorPickerInput = forwardRef(({ className, ...props }, ref) => {
407
408
  const picker = usePicker('Input');
408
409
  const live = picker ?? standalone;
409
- const { color, text, change, disabled, labels, eyeDropper } = live;
410
+ const { color, text, change, disabled, labels } = live;
410
411
  const { bulmaHelperClasses, rest } = useBulmaClasses(props);
411
412
  const rowClass = usePrefixedClassNames('color-picker-value');
412
413
  const previewClass = usePrefixedClassNames('color-picker-preview');
@@ -418,11 +419,6 @@ const ColorPickerInput = forwardRef(({ className, ...props }, ref) => {
418
419
  'is-small': true,
419
420
  'is-danger': invalid,
420
421
  });
421
- const buttonClass = usePrefixedClassNames('button', { 'is-small': true });
422
- const hydrated = useIsHydrated();
423
- const EyeDropper = hydrated
424
- ? window.EyeDropper
425
- : undefined;
426
422
  const commit = () => {
427
423
  if (draft === null)
428
424
  return;
@@ -448,22 +444,11 @@ const ColorPickerInput = forwardRef(({ className, ...props }, ref) => {
448
444
  setDraft(null);
449
445
  }
450
446
  };
451
- // Escape, or a click away, cancels it, which rejects.
452
- const pickFromScreen = (Dropper) => new Dropper().open().then(({ sRGBHex }) => {
453
- const parsed = parseColor(sRGBHex);
454
- // The screen gives a solid color as hex; the alpha stays as it was,
455
- // and a gray keeps the hue the picker had.
456
- if (parsed) {
457
- change(keepingChannels({ ...parsed, a: color.a }, color, sRGBHex), true);
458
- }
459
- }, noop);
460
447
  if (!picker)
461
448
  return null;
462
- return (jsxs("div", { ref: ref, className: classNames(rowClass, bulmaHelperClasses, className), ...rest, children: [jsx(ColorSwatch, { color: text, className: previewClass, "aria-hidden": "true" }), jsx("input", { type: "text", className: inputClass, value: draft ?? text, disabled: disabled, "aria-label": labels.value, "aria-invalid": invalid || undefined, spellCheck: false, autoComplete: "off", autoCapitalize: "off", onChange: event => setDraft(event.target.value), onKeyDown: onKeyDown, onBlur: commit }), eyeDropper && EyeDropper && (jsx("button", { type: "button", className: buttonClass, "aria-label": labels.eyeDropper, title: labels.eyeDropper, disabled: disabled, onClick: () => pickFromScreen(EyeDropper), children: jsx(EyeDropperIcon, {}) }))] }));
449
+ return (jsxs("div", { ref: ref, className: classNames(rowClass, bulmaHelperClasses, className), ...rest, children: [jsx(ColorSwatch, { color: text, className: previewClass, "aria-hidden": "true" }), jsx("input", { type: "text", className: inputClass, value: draft ?? text, disabled: disabled, "aria-label": labels.value, "aria-invalid": invalid || undefined, spellCheck: false, autoComplete: "off", autoCapitalize: "off", onChange: event => setDraft(event.target.value), onKeyDown: onKeyDown, onBlur: commit }), jsx(EyeDropperButton, {})] }));
463
450
  });
464
451
  ColorPickerInput.displayName = 'ColorPicker.Input';
465
- /** A pipette. */
466
- const EyeDropperIcon = () => (jsx("svg", { viewBox: "0 0 16 16", width: "1em", height: "1em", "aria-hidden": "true", children: jsx("path", { d: "M10.5 2.5l3 3M9 4l3 3-6.5 6.5H3v-3z", fill: "none", stroke: "currentColor", strokeWidth: "1.5", strokeLinejoin: "round" }) }));
467
452
  /**
468
453
  * The `ColorPicker` component is a panel for choosing a color: a saturation and brightness square, a hue slider, and the value as text, with alpha and swatches when asked for.
469
454
  *
@@ -1 +1 @@
1
- {"version":3,"file":"ColorPicker.js","sources":["../../../src/form/ColorPicker.tsx"],"sourcesContent":["import React, {\n forwardRef,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport {\n classNames,\n prefixedClassNames,\n usePrefixedClassNames,\n} from '../helpers/classNames';\nimport { useClassPrefix } from '../helpers/Config';\nimport { useBulmaClasses, BulmaClassesProps } from '../helpers/useBulmaClasses';\nimport { useIsHydrated } from '../helpers/useIsHydrated';\nimport { useClientLayoutEffect } from '../helpers/useClientLayoutEffect';\nimport { withSubComponents } from '../helpers/withSubComponents';\nimport { ColorSwatch } from '../elements/ColorSwatch';\nimport {\n ColorFormat,\n Hsva,\n formatColor,\n hsvaToRgba,\n parseColor,\n prefersDarkInk,\n sameColor,\n} from './_colorInternals/colorMath';\nimport {\n ColorPickerContext,\n keepingChannels,\n noop,\n standalone,\n useColorPicker,\n usePicker,\n} from './_colorInternals/pickerState';\nimport { Field } from './Field';\nimport { Control } from './Control';\nimport { FormFieldProps } from './fieldProps';\nimport {\n useInsideField,\n useInsideControl,\n rendersOwnField,\n rendersOwnControl,\n useFieldsetDisabled,\n} from './FormContext';\nimport { useAutoLabelledBy } from './useAutoLabelId';\n\nexport type { ColorFormat } from './_colorInternals/colorMath';\n\n/**\n * A preset color for a picker's swatches: a CSS color, or a CSS color with\n * a name. The name labels the swatch for a screen reader and shows as its\n * tooltip; without one, the color as written does.\n */\nexport type ColorPickerSwatch = string | { color: string; label?: string };\n\n/**\n * The strings a color picker says, each with an English default. A key\n * left out, or set to an empty string, keeps its default.\n */\nexport interface ColorPickerLabels {\n /**\n * Names the saturation and brightness square.\n * @defaultValue 'Saturation and brightness'\n */\n area?: string;\n /**\n * What a screen reader calls the square in place of \"slider\".\n * @defaultValue '2D slider'\n */\n areaRoleDescription?: string;\n /**\n * The square's horizontal channel, in its value text.\n * @defaultValue 'Saturation'\n */\n saturation?: string;\n /**\n * The square's vertical channel, in its value text.\n * @defaultValue 'Brightness'\n */\n brightness?: string;\n /**\n * Names the hue slider.\n * @defaultValue 'Hue'\n */\n hue?: string;\n /**\n * Names the alpha slider.\n * @defaultValue 'Alpha'\n */\n alpha?: string;\n /**\n * The unit after the hue's number in its value text, \"171 degrees\".\n * Inside a `LocaleProvider` with a `locale`, that locale writes the number\n * and its unit, and this isn't used.\n * @defaultValue 'degrees'\n */\n degrees?: string;\n /**\n * Names the field that shows the value as text.\n * @defaultValue 'Color value'\n */\n value?: string;\n /**\n * Names the group of swatches.\n * @defaultValue 'Swatches'\n */\n swatches?: string;\n /**\n * Names the eye dropper button.\n * @defaultValue 'Pick a color from the screen'\n */\n eyeDropper?: string;\n}\n\n// The theme colors `swatches=\"bulma\"` shows, read off the page.\nconst BULMA_SWATCHES: ReadonlyArray<{ color: string; label: string }> = [\n { color: 'var(--bulma-primary)', label: 'Primary' },\n { color: 'var(--bulma-link)', label: 'Link' },\n { color: 'var(--bulma-info)', label: 'Info' },\n { color: 'var(--bulma-success)', label: 'Success' },\n { color: 'var(--bulma-warning)', label: 'Warning' },\n { color: 'var(--bulma-danger)', label: 'Danger' },\n];\n\nconst clamp = (value: number, low: number, high: number) =>\n Math.min(Math.max(value, low), high);\n\n/** Whether the element is laid out right to left. */\nconst isRtl = (element: Element | null) =>\n !!element && getComputedStyle(element).direction === 'rtl';\n\n/** Where a pointer is across an element, from 0 to 1 each way. */\nconst pointIn = (element: HTMLElement, event: React.PointerEvent) => {\n const rect = element.getBoundingClientRect();\n const across =\n rect.width > 0 ? clamp((event.clientX - rect.left) / rect.width, 0, 1) : 0;\n const down =\n rect.height > 0 ? clamp((event.clientY - rect.top) / rect.height, 0, 1) : 0;\n return { x: isRtl(element) ? 1 - across : across, y: down };\n};\n\n/** The color's red, green and blue, rounded, as a CSS `rgb()` takes them. */\nconst rgbChannels = (color: Hsva) => {\n const { r, g, b } = hsvaToRgba(color);\n return `${Math.round(r)} ${Math.round(g)} ${Math.round(b)}`;\n};\n\n/** Whether a press should start a drag: any touch or pen, a mouse's main button. */\nconst startsDrag = (event: React.PointerEvent) =>\n event.pointerType !== 'mouse' || event.button === 0;\n\n/** Hands a node to a forwarded ref and to one of the part's own. */\nfunction setRefs<T>(\n node: T | null,\n own: React.MutableRefObject<T | null>,\n forwarded: React.ForwardedRef<T>\n) {\n own.current = node;\n if (typeof forwarded === 'function') forwarded(node);\n else if (forwarded) forwarded.current = node;\n}\n\n// ---------------------------------------------------------------------------\n// ColorPicker.Area\n// ---------------------------------------------------------------------------\n\n/**\n * Props for ColorPicker.Area. The helper props, the other attributes and the\n * `ref` land on the square's `<div>`.\n *\n * @extraProp {React.Ref<HTMLDivElement>} [ref] - Ref forwarded to the square's `<div>`.\n */\nexport interface ColorPickerAreaProps\n extends\n Omit<React.HTMLAttributes<HTMLDivElement>, 'color'>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n /** Additional CSS classes to apply. */\n className?: string;\n}\n\n/**\n * The saturation and brightness square, operated by pointer or by keyboard as one 2D slider.\n *\n * @function\n * @param {ColorPickerAreaProps} props - Props for ColorPicker.Area.\n * @param {React.Ref<HTMLDivElement>} ref - Forwarded ref to the square's `<div>`.\n * @returns {JSX.Element | null} The square, or nothing outside a ColorPicker.\n */\nexport const ColorPickerArea = forwardRef<HTMLDivElement, ColorPickerAreaProps>(\n ({ className, style, ...props }, ref) => {\n const picker = usePicker('Area');\n const live = picker ?? standalone;\n const { color, change, end, disabled, labels, touch, percent } = live;\n const { bulmaHelperClasses, rest } = useBulmaClasses(props);\n\n const rootRef = useRef<HTMLDivElement | null>(null);\n const xRef = useRef<HTMLInputElement>(null);\n const yRef = useRef<HTMLInputElement>(null);\n // The axis whose input holds the tab stop: the one focused or moved last.\n const [axis, setAxis] = useState<'x' | 'y'>('x');\n // Once a key has moved the square, both inputs are exposed until focus\n // leaves it, so the one that moved can be read.\n const [keyed, setKeyed] = useState(false);\n const draggingRef = useRef(false);\n\n const areaClass = usePrefixedClassNames('color-area', {\n 'is-disabled': disabled,\n });\n const thumbClass = usePrefixedClassNames('color-area-thumb');\n const inputClass = usePrefixedClassNames('color-area-input');\n\n const s = Math.round(color.s);\n const v = Math.round(color.v);\n const saturationText = `${labels.saturation} ${percent(s)}`;\n const brightnessText = `${labels.brightness} ${percent(v)}`;\n\n const focusAxis = (which: 'x' | 'y') =>\n (which === 'x' ? xRef : yRef).current?.focus({ preventScroll: true });\n // The axis a key moved to, focused once the render that shows its input\n // is on the page, so it's no longer aria-hidden as it takes focus.\n const focusNextRef = useRef<'x' | 'y' | null>(null);\n useClientLayoutEffect(() => {\n if (!focusNextRef.current) return;\n focusAxis(focusNextRef.current);\n focusNextRef.current = null;\n });\n\n const moveTo = (event: React.PointerEvent<HTMLDivElement>) => {\n const { x, y } = pointIn(event.currentTarget, event);\n change({ ...color, s: x * 100, v: (1 - y) * 100 });\n };\n\n const onPointerDown = (event: React.PointerEvent<HTMLDivElement>) => {\n if (disabled || !startsDrag(event)) return;\n // No text selection, and focus goes where the square puts it.\n event.preventDefault();\n event.currentTarget.setPointerCapture?.(event.pointerId);\n draggingRef.current = true;\n moveTo(event);\n focusAxis(axis);\n };\n const onPointerMove = (event: React.PointerEvent<HTMLDivElement>) => {\n if (draggingRef.current) moveTo(event);\n };\n const endDrag = (event: React.PointerEvent<HTMLDivElement>) => {\n if (!draggingRef.current) return;\n draggingRef.current = false;\n event.currentTarget.releasePointerCapture?.(event.pointerId);\n end();\n };\n\n const onKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n const by = event.shiftKey ? 10 : 1;\n // The horizontal arrows follow the screen: right to left, saturation\n // grows to the left.\n const right = isRtl(rootRef.current) ? -by : by;\n const moves: Record<string, [number, number]> = {\n ArrowRight: [right, 0],\n ArrowLeft: [-right, 0],\n ArrowUp: [0, by],\n ArrowDown: [0, -by],\n PageUp: [0, 10],\n PageDown: [0, -10],\n Home: [-10, 0],\n End: [10, 0],\n };\n const move = moves[event.key];\n if (!move) return;\n event.preventDefault();\n const [dx, dy] = move;\n change(\n {\n ...color,\n s: clamp(s + dx, 0, 100),\n v: clamp(v + dy, 0, 100),\n },\n true\n );\n const moved = dx !== 0 ? 'x' : 'y';\n setAxis(moved);\n setKeyed(true);\n if (moved !== axis) focusNextRef.current = moved;\n };\n\n // A touch screen reader, or a browser's own stepping, sets an input's\n // value without a key the square handled.\n const onInput =\n (which: 'x' | 'y') => (event: React.ChangeEvent<HTMLInputElement>) => {\n const value = Number(event.target.value);\n change(\n which === 'x' ? { ...color, s: value } : { ...color, v: value },\n true\n );\n };\n\n const onBlur = (event: React.FocusEvent<HTMLInputElement>) => {\n const next = event.relatedTarget;\n if (next !== xRef.current && next !== yRef.current) setKeyed(false);\n };\n\n // What both inputs share; each adds its axis, and the handlers.\n const shared = {\n type: 'range',\n className: inputClass,\n min: 0,\n max: 100,\n step: 1,\n disabled,\n 'aria-label': labels.area,\n 'aria-roledescription': labels.areaRoleDescription,\n } as const;\n // The one not holding the tab stop is hidden until a key moves the\n // square, so a screen reader lists one control; both show on touch.\n const tabIndexOf = (which: 'x' | 'y') => (touch || axis === which ? 0 : -1);\n const hiddenOf = (which: 'x' | 'y') =>\n touch || keyed || axis === which ? undefined : true;\n\n if (!picker) return null;\n\n return (\n <div\n ref={node => setRefs(node, rootRef, ref)}\n className={classNames(areaClass, bulmaHelperClasses, className)}\n style={\n {\n ...style,\n '--color-picker-hue': Math.round(color.h),\n '--color-picker-rgb': rgbChannels(color),\n '--color-area-x': `${color.s}%`,\n '--color-area-y': `${100 - color.v}%`,\n } as React.CSSProperties\n }\n onPointerDown={onPointerDown}\n onPointerMove={onPointerMove}\n onPointerUp={endDrag}\n onPointerCancel={endDrag}\n {...rest}\n >\n <div className={thumbClass} role=\"presentation\">\n <input\n ref={xRef}\n {...shared}\n value={s}\n aria-valuetext={`${saturationText}, ${brightnessText}`}\n aria-orientation=\"horizontal\"\n tabIndex={tabIndexOf('x')}\n aria-hidden={hiddenOf('x')}\n onChange={onInput('x')}\n onKeyDown={onKeyDown}\n onFocus={() => setAxis('x')}\n onBlur={onBlur}\n />\n <input\n ref={yRef}\n {...shared}\n value={v}\n aria-valuetext={`${brightnessText}, ${saturationText}`}\n aria-orientation=\"vertical\"\n tabIndex={tabIndexOf('y')}\n aria-hidden={hiddenOf('y')}\n onChange={onInput('y')}\n onKeyDown={onKeyDown}\n onFocus={() => setAxis('y')}\n onBlur={onBlur}\n />\n </div>\n </div>\n );\n }\n);\n\nColorPickerArea.displayName = 'ColorPicker.Area';\n\n// ---------------------------------------------------------------------------\n// ColorPicker.HueSlider and ColorPicker.AlphaSlider\n// ---------------------------------------------------------------------------\n\n/**\n * Props for ColorPicker.HueSlider and ColorPicker.AlphaSlider. The helper\n * props, the other attributes and the `ref` land on the slider's `<div>`.\n *\n * @extraProp {React.Ref<HTMLDivElement>} [ref] - Ref forwarded to the slider's `<div>`.\n */\nexport interface ColorPickerSliderProps\n extends\n Omit<React.HTMLAttributes<HTMLDivElement>, 'color'>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n /** Additional CSS classes to apply. */\n className?: string;\n}\n\ninterface ChannelSliderProps extends ColorPickerSliderProps {\n channel: 'hue' | 'alpha';\n}\n\n/** The hue or the alpha slider: a hidden native range under a drawn track. */\nconst ChannelSlider = forwardRef<HTMLDivElement, ChannelSliderProps>(\n ({ channel, className, style, ...props }, ref) => {\n const picker = usePicker(channel === 'hue' ? 'HueSlider' : 'AlphaSlider');\n const live = picker ?? standalone;\n const { color, change, end, disabled, labels, percent, degrees } = live;\n const { bulmaHelperClasses, rest } = useBulmaClasses(props);\n const rootRef = useRef<HTMLDivElement | null>(null);\n const draggingRef = useRef(false);\n\n const isHue = channel === 'hue';\n const max = isHue ? 360 : 100;\n const value = Math.round(isHue ? color.h : color.a * 100);\n const withValue = (next: number): Hsva =>\n isHue ? { ...color, h: next } : { ...color, a: next / 100 };\n\n const sliderClass = usePrefixedClassNames('color-slider', {\n 'is-hue': isHue,\n 'is-alpha': !isHue,\n 'is-disabled': disabled,\n });\n const trackClass = usePrefixedClassNames('color-slider-track');\n const thumbClass = usePrefixedClassNames('color-slider-thumb');\n const inputClass = usePrefixedClassNames('color-slider-input');\n\n const moveTo = (event: React.PointerEvent<HTMLDivElement>) => {\n const { x } = pointIn(event.currentTarget, event);\n change(withValue(x * max));\n };\n const onPointerDown = (event: React.PointerEvent<HTMLDivElement>) => {\n if (disabled || !startsDrag(event)) return;\n event.preventDefault();\n event.currentTarget.setPointerCapture?.(event.pointerId);\n draggingRef.current = true;\n moveTo(event);\n rootRef.current?.querySelector('input')?.focus({ preventScroll: true });\n };\n const onPointerMove = (event: React.PointerEvent<HTMLDivElement>) => {\n if (draggingRef.current) moveTo(event);\n };\n const endDrag = (event: React.PointerEvent<HTMLDivElement>) => {\n if (!draggingRef.current) return;\n draggingRef.current = false;\n event.currentTarget.releasePointerCapture?.(event.pointerId);\n end();\n };\n\n const onKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n const by = event.shiftKey ? 10 : 1;\n const right = isRtl(rootRef.current) ? -by : by;\n const steps: Record<string, number> = {\n ArrowRight: right,\n ArrowLeft: -right,\n ArrowUp: by,\n ArrowDown: -by,\n PageUp: 10,\n PageDown: -10,\n Home: -max,\n End: max,\n };\n const step = steps[event.key];\n if (step === undefined) return;\n event.preventDefault();\n change(withValue(clamp(value + step, 0, max)), true);\n };\n\n if (!picker) return null;\n\n return (\n <div\n ref={node => setRefs(node, rootRef, ref)}\n className={classNames(sliderClass, bulmaHelperClasses, className)}\n style={\n {\n ...style,\n '--color-picker-hue': Math.round(color.h),\n '--color-picker-rgb': rgbChannels(color),\n '--color-slider-position': `${(value / max) * 100}%`,\n } as React.CSSProperties\n }\n onPointerDown={onPointerDown}\n onPointerMove={onPointerMove}\n onPointerUp={endDrag}\n onPointerCancel={endDrag}\n {...rest}\n >\n <div className={trackClass} />\n <div className={thumbClass} role=\"presentation\">\n <input\n type=\"range\"\n className={inputClass}\n min={0}\n max={max}\n step={1}\n value={value}\n disabled={disabled}\n // Spelled out, as the square's is, so Safari's Tab reaches it\n // with its default settings, which skip a range input without\n // one.\n tabIndex={0}\n aria-label={isHue ? labels.hue : labels.alpha}\n aria-valuetext={isHue ? degrees(value) : percent(value)}\n onChange={event =>\n change(withValue(Number(event.target.value)), true)\n }\n onKeyDown={onKeyDown}\n />\n </div>\n </div>\n );\n }\n);\n\nChannelSlider.displayName = 'ChannelSlider';\n\n/**\n * The hue slider, from red round the spectrum and back to red.\n *\n * @function\n * @param {ColorPickerSliderProps} props - Props for ColorPicker.HueSlider.\n * @param {React.Ref<HTMLDivElement>} ref - Forwarded ref to the slider's `<div>`.\n * @returns {JSX.Element | null} The slider, or nothing outside a ColorPicker.\n */\nexport const ColorPickerHueSlider = forwardRef<\n HTMLDivElement,\n ColorPickerSliderProps\n>((props, ref) => <ChannelSlider ref={ref} {...props} channel=\"hue\" />);\n\nColorPickerHueSlider.displayName = 'ColorPicker.HueSlider';\n\n/**\n * The alpha slider, from see-through to solid.\n *\n * @function\n * @param {ColorPickerSliderProps} props - Props for ColorPicker.AlphaSlider.\n * @param {React.Ref<HTMLDivElement>} ref - Forwarded ref to the slider's `<div>`.\n * @returns {JSX.Element | null} The slider, or nothing outside a ColorPicker.\n */\nexport const ColorPickerAlphaSlider = forwardRef<\n HTMLDivElement,\n ColorPickerSliderProps\n>((props, ref) => <ChannelSlider ref={ref} {...props} channel=\"alpha\" />);\n\nColorPickerAlphaSlider.displayName = 'ColorPicker.AlphaSlider';\n\n// ---------------------------------------------------------------------------\n// ColorPicker.Swatches\n// ---------------------------------------------------------------------------\n\n/**\n * Props for ColorPicker.Swatches. The helper props, the other attributes and\n * the `ref` land on the group's `<div>`.\n *\n * @extraProp {React.Ref<HTMLDivElement>} [ref] - Ref forwarded to the group's `<div>`.\n */\nexport interface ColorPickerSwatchesProps\n extends\n Omit<React.HTMLAttributes<HTMLDivElement>, 'color'>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n /** Additional CSS classes to apply. */\n className?: string;\n /**\n * The colors to offer, in place of the picker's own `swatches`: a list,\n * or `\"bulma\"` for the page's theme colors.\n */\n swatches?: ColorPickerSwatch[] | 'bulma';\n}\n\n/** Arrow keys and how far they move along the swatches. */\nconst SWATCH_STEPS: Record<string, number> = {\n ArrowRight: 1,\n ArrowDown: 1,\n ArrowLeft: -1,\n ArrowUp: -1,\n};\n\n/**\n * The swatches, a radio group of preset colors that sets the picker's color.\n *\n * @function\n * @param {ColorPickerSwatchesProps} props - Props for ColorPicker.Swatches.\n * @param {React.Ref<HTMLDivElement>} ref - Forwarded ref to the group's `<div>`.\n * @returns {JSX.Element | null} The swatches, or nothing outside a ColorPicker or with none to show.\n */\nexport const ColorPickerSwatches = forwardRef<\n HTMLDivElement,\n ColorPickerSwatchesProps\n>(({ className, swatches: ownSwatches, ...props }, ref) => {\n const picker = usePicker('Swatches');\n const live = picker ?? standalone;\n const { color, change, disabled, labels, format, alpha } = live;\n const { bulmaHelperClasses, rest } = useBulmaClasses(props);\n const classPrefix = useClassPrefix();\n const groupClass = usePrefixedClassNames('color-picker-swatches');\n const rootRef = useRef<HTMLDivElement | null>(null);\n\n const given = ownSwatches ?? live.swatches;\n const list = useMemo(\n () =>\n (given === 'bulma' ? BULMA_SWATCHES : (given ?? [])).map(entry =>\n typeof entry === 'string' ? { color: entry } : entry\n ),\n [given]\n );\n\n // A color the picker can't read as written, such as a var(), is read off\n // the page, as the text the swatch's own custom property resolves to.\n const chipsRef = useRef<Array<HTMLSpanElement | null>>([]);\n const textOf = useCallback(\n (i: number): string => {\n const chip = chipsRef.current[i];\n if (parseColor(list[i].color) || !chip) return list[i].color;\n return getComputedStyle(chip)\n .getPropertyValue('--color-swatch-color')\n .trim();\n },\n [list]\n );\n // Those texts, read after every render rather than once: a Theme can\n // change the variables behind them while the picker is open, and the\n // chosen swatch has to follow. A read that changes nothing renders\n // nothing more.\n const [resolved, setResolved] = useState<string[]>([]);\n // eslint-disable-next-line react-hooks/exhaustive-deps -- after every render on purpose; the updater keeps the state when nothing changed, so it settles\n useEffect(() => {\n const next = list.map((_, i) => textOf(i));\n // eslint-disable-next-line react-hooks/set-state-in-effect -- a var() color can only be read off the page once its swatch is on it\n setResolved(previous =>\n previous.length === next.length &&\n previous.every((text, i) => text === next[i])\n ? previous\n : next\n );\n });\n\n const colorOf = (i: number) =>\n parseColor(list[i].color) ?? parseColor(resolved[i]);\n // The same color, as far as the picker's value can tell: the same 8-bit\n // color, or the same text, since an HSL value is rounded.\n const shownText = formatColor(color, format, alpha);\n const checked = list.findIndex((_, i) => {\n const swatch = colorOf(i);\n if (!swatch) return false;\n const solid = alpha ? swatch : { ...swatch, a: 1 };\n return (\n sameColor(solid, color) || formatColor(solid, format, alpha) === shownText\n );\n });\n const [focused, setFocused] = useState<number | null>(null);\n const tabStop = focused ?? (checked >= 0 ? checked : 0);\n\n // Read afresh, so a theme that changed since the last render counts.\n const pick = (i: number) => {\n const text = textOf(i);\n const swatch = parseColor(text);\n if (swatch) change(keepingChannels(swatch, color, text), true);\n };\n\n const onKeyDown = (i: number) => (event: React.KeyboardEvent) => {\n const buttons = Array.from(\n (rootRef.current as HTMLDivElement).querySelectorAll<HTMLButtonElement>(\n '[role=\"radio\"]'\n )\n );\n let next: number | undefined;\n if (event.key === 'Home') next = 0;\n else if (event.key === 'End') next = buttons.length - 1;\n else if (SWATCH_STEPS[event.key]) {\n // Left and Right follow the screen, so right to left they swap.\n const sideways = event.key === 'ArrowLeft' || event.key === 'ArrowRight';\n const flip = sideways && isRtl(rootRef.current) ? -1 : 1;\n next =\n (i + SWATCH_STEPS[event.key] * flip + buttons.length) % buttons.length;\n }\n if (next === undefined) return;\n event.preventDefault();\n buttons[next]?.focus();\n pick(next);\n };\n\n if (!picker || list.length === 0) return null;\n\n return (\n <div\n ref={node => setRefs(node, rootRef, ref)}\n className={classNames(groupClass, bulmaHelperClasses, className)}\n role=\"radiogroup\"\n aria-label={labels.swatches}\n aria-disabled={disabled || undefined}\n {...rest}\n >\n {list.map((entry, i) => {\n const swatch = colorOf(i);\n const isChecked = i === checked;\n // The check is drawn in black or white with a ring of the other, so\n // it shows on any color. On a see-through swatch the page shows\n // through, so it takes the scheme's text color and background,\n // which follow dark mode, in place of the swatch's own.\n const seeThrough = !!swatch && swatch.a < 1;\n return (\n <button\n key={`${entry.color}-${i}`}\n type=\"button\"\n role=\"radio\"\n aria-checked={isChecked}\n aria-label={entry.label || entry.color}\n title={entry.label}\n tabIndex={i === tabStop ? 0 : -1}\n disabled={disabled}\n className={prefixedClassNames(classPrefix, 'color-picker-swatch', {\n 'is-checked': isChecked,\n 'is-see-through': seeThrough,\n 'is-dark-ink': !!swatch && !seeThrough && prefersDarkInk(swatch),\n })}\n onClick={() => pick(i)}\n onKeyDown={onKeyDown(i)}\n onFocus={() => setFocused(i)}\n onBlur={() => setFocused(null)}\n >\n <ColorSwatch\n ref={node => {\n chipsRef.current[i] = node;\n }}\n color={entry.color}\n aria-hidden=\"true\"\n >\n {isChecked && (\n <CheckIcon\n haloClass={prefixedClassNames(\n classPrefix,\n 'color-picker-check-halo'\n )}\n />\n )}\n </ColorSwatch>\n </button>\n );\n })}\n </div>\n );\n});\n\nColorPickerSwatches.displayName = 'ColorPicker.Swatches';\n\n/**\n * The check on the chosen swatch: a ring in `haloClass`, and the check over\n * it in the current color.\n */\nconst CheckIcon = ({ haloClass }: { haloClass: string }) => (\n <svg viewBox=\"0 0 16 16\" width=\"1em\" height=\"1em\" aria-hidden=\"true\">\n {['halo', 'ink'].map(part => (\n <path\n key={part}\n className={part === 'halo' ? haloClass : undefined}\n d=\"M3.5 8.5l3 3 6-7\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={part === 'halo' ? 4.5 : 2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n ))}\n </svg>\n);\n\n// ---------------------------------------------------------------------------\n// ColorPicker.Input\n// ---------------------------------------------------------------------------\n\n/**\n * Props for ColorPicker.Input. The helper props, the other attributes and\n * the `ref` land on the row's `<div>`.\n *\n * @extraProp {React.Ref<HTMLDivElement>} [ref] - Ref forwarded to the row's `<div>`.\n */\nexport interface ColorPickerInputProps\n extends\n Omit<React.HTMLAttributes<HTMLDivElement>, 'color'>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n /** Additional CSS classes to apply. */\n className?: string;\n}\n\n/** The browser's eye dropper, where it has one. */\ninterface EyeDropperLike {\n open: () => Promise<{ sRGBHex: string }>;\n}\ntype EyeDropperConstructor = new () => EyeDropperLike;\n\n/**\n * The value as text you can type in, beside a preview swatch, with the eye dropper when the picker has `eyeDropper`.\n *\n * @function\n * @param {ColorPickerInputProps} props - Props for ColorPicker.Input.\n * @param {React.Ref<HTMLDivElement>} ref - Forwarded ref to the row's `<div>`.\n * @returns {JSX.Element | null} The row, or nothing outside a ColorPicker.\n */\nexport const ColorPickerInput = forwardRef<\n HTMLDivElement,\n ColorPickerInputProps\n>(({ className, ...props }, ref) => {\n const picker = usePicker('Input');\n const live = picker ?? standalone;\n const { color, text, change, disabled, labels, eyeDropper } = live;\n const { bulmaHelperClasses, rest } = useBulmaClasses(props);\n const rowClass = usePrefixedClassNames('color-picker-value');\n const previewClass = usePrefixedClassNames('color-picker-preview');\n // What's been typed and not yet committed, or null while the field\n // shows the value.\n const [draft, setDraft] = useState<string | null>(null);\n const invalid = draft !== null && !parseColor(draft);\n const inputClass = usePrefixedClassNames('input', {\n 'is-small': true,\n 'is-danger': invalid,\n });\n const buttonClass = usePrefixedClassNames('button', { 'is-small': true });\n const hydrated = useIsHydrated();\n const EyeDropper = hydrated\n ? (window as unknown as { EyeDropper?: EyeDropperConstructor }).EyeDropper\n : undefined;\n\n const commit = () => {\n if (draft === null) return;\n const parsed = parseColor(draft);\n setDraft(null);\n if (parsed) change(keepingChannels(parsed, color, draft), true);\n };\n\n const onKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (draft === null) return;\n if (event.key === 'Enter') {\n // Commits rather than submitting a form; an unreadable value stays\n // to be fixed.\n event.preventDefault();\n if (!invalid) commit();\n } else if (event.key === 'Escape') {\n // Puts the value back, and keeps the key from closing a popover too.\n event.preventDefault();\n event.stopPropagation();\n setDraft(null);\n }\n };\n\n // Escape, or a click away, cancels it, which rejects.\n const pickFromScreen = (Dropper: EyeDropperConstructor) =>\n new Dropper().open().then(({ sRGBHex }) => {\n const parsed = parseColor(sRGBHex);\n // The screen gives a solid color as hex; the alpha stays as it was,\n // and a gray keeps the hue the picker had.\n if (parsed) {\n change(\n keepingChannels({ ...parsed, a: color.a }, color, sRGBHex),\n true\n );\n }\n }, noop);\n\n if (!picker) return null;\n\n return (\n <div\n ref={ref}\n className={classNames(rowClass, bulmaHelperClasses, className)}\n {...rest}\n >\n <ColorSwatch color={text} className={previewClass} aria-hidden=\"true\" />\n <input\n type=\"text\"\n className={inputClass}\n value={draft ?? text}\n disabled={disabled}\n aria-label={labels.value}\n aria-invalid={invalid || undefined}\n spellCheck={false}\n autoComplete=\"off\"\n autoCapitalize=\"off\"\n onChange={event => setDraft(event.target.value)}\n onKeyDown={onKeyDown}\n onBlur={commit}\n />\n {eyeDropper && EyeDropper && (\n <button\n type=\"button\"\n className={buttonClass}\n aria-label={labels.eyeDropper}\n title={labels.eyeDropper}\n disabled={disabled}\n onClick={() => pickFromScreen(EyeDropper)}\n >\n <EyeDropperIcon />\n </button>\n )}\n </div>\n );\n});\n\nColorPickerInput.displayName = 'ColorPicker.Input';\n\n/** A pipette. */\nconst EyeDropperIcon = () => (\n <svg viewBox=\"0 0 16 16\" width=\"1em\" height=\"1em\" aria-hidden=\"true\">\n <path\n d=\"M10.5 2.5l3 3M9 4l3 3-6.5 6.5H3v-3z\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n\n// ---------------------------------------------------------------------------\n// ColorPicker (root)\n// ---------------------------------------------------------------------------\n\n/**\n * Props for the ColorPicker component. The helper props, the other\n * attributes and the `ref` land on the picker's `<div>`, inside the `Field`\n * and `Control` it renders when it isn't already in them.\n *\n * Inside an existing `Control` it renders no `Control` of its own. Inside an\n * outer `Field`, or a `Control` with no `Field` around it, it renders no\n * `Field` of its own either. The exception is `label`, `message`,\n * `horizontal` or `fieldClassName` in that bare `Control`: it keeps a\n * `Field` for them, nested in the `.control`, and warns in development.\n * Wrap the `Control` in a `Field` instead, and set the `label`, `horizontal`\n * and class name on that `Field`.\n *\n * @extraProp {React.Ref<HTMLDivElement>} [ref] - Ref forwarded to the picker's `<div>`.\n * @extraProp {string} [aria-label] - Names the picker's group when there's no `label`.\n */\nexport interface ColorPickerProps\n extends\n Omit<\n React.HTMLAttributes<HTMLDivElement>,\n 'onChange' | 'defaultValue' | 'color' | 'role'\n >,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'>,\n FormFieldProps {\n /** Additional CSS classes to apply. */\n className?: string;\n /** Field label naming the picker's group, through `aria-labelledby`. Dropped inside an outer `Field`, whose own label names it instead. An `aria-label` or `aria-labelledby` you set wins over either. */\n label?: React.ReactNode;\n /** Props for the label element. An explicit `id` here is used as the `aria-labelledby` target instead of a generated one; any `htmlFor` is ignored (a group label names the group, never a single control). */\n labelProps?: React.LabelHTMLAttributes<HTMLLabelElement> & {\n [key: string]: unknown;\n };\n /**\n * The color, controlled: any CSS color the picker reads (hex, `rgb()`,\n * `hsl()` or a color name), in any format, since `onChange` hands back\n * the `format` asked for. One it can't read leaves the picker showing the\n * last color it could. A value it gave you comes back without moving the\n * thumbs, and a gray or black keeps the hue and saturation the user had.\n */\n value?: string;\n /** The color to start with, uncontrolled. Black without one. */\n defaultValue?: string;\n /**\n * Called with the color, in `format`, as it changes: on every step of a\n * drag, and on a key, a swatch, a typed value or the eye dropper.\n */\n onChange?: (value: string) => void;\n /**\n * Called with the color, in `format`, once a change is done: when a drag\n * ends, and with `onChange` for a key, a swatch, a typed value or the eye\n * dropper. The place to save it.\n */\n onChangeEnd?: (value: string) => void;\n /**\n * How the value is written: `'hsl'` (`hsl(171, 100%, 41%)`), Bulma's own\n * color space and what `Theme`'s `primaryH`, `primaryS` and `primaryL`\n * take, `'hex'` (`#00d1b2`) or `'rgb'` (`rgb(0, 209, 178)`). With `alpha`,\n * `hsla()`, `#rrggbbaa` and `rgba()`.\n * @defaultValue 'hsl'\n */\n format?: ColorFormat;\n /**\n * Adds an alpha slider and writes the alpha into the value. Without it,\n * the value is always solid.\n */\n alpha?: boolean;\n /**\n * Preset colors shown as a radio group under the picker: a list of CSS\n * colors, each a string or `{ color, label }`, or `\"bulma\"` for the page's\n * primary, link, info, success, warning and danger, from Bulma's CSS\n * variables, so a themed app shows its own. A color the picker can't read\n * as written, such as a `var()`, is read off the page each time the picker\n * renders, so after a theme change the swatches show the new colors at\n * once and the chosen one is marked again on the picker's next render,\n * which a `Theme` around it causes. The `\"bulma\"` names are English; for\n * others, pass the list yourself, such as\n * `{ color: 'var(--bulma-primary)', label: 'Primär' }`.\n */\n swatches?: ColorPickerSwatch[] | 'bulma';\n /**\n * Adds a button that picks a color from anywhere on the screen, where the\n * browser has the EyeDropper API (desktop Chromium today). Elsewhere, and\n * until the page hydrates, it isn't shown.\n */\n eyeDropper?: boolean;\n /** Disables every part. A disabled `Fieldset` around it does too. */\n disabled?: boolean;\n /** Form field name. When set, a hidden input carries the value. */\n name?: string;\n /** The id of the form the hidden input belongs to. */\n form?: string;\n /** The strings it says, each with an English default. */\n labels?: ColorPickerLabels;\n /**\n * Parts for a layout of your own: `ColorPicker.Area`,\n * `ColorPicker.HueSlider`, `ColorPicker.AlphaSlider`,\n * `ColorPicker.Swatches` and `ColorPicker.Input`, with anything else\n * between them. Without children, the picker shows the square, the hue\n * slider, the alpha slider with `alpha`, the value, and the swatches when\n * there are some.\n */\n children?: React.ReactNode;\n}\n\n/**\n * The `ColorPicker` component is a panel for choosing a color: a saturation and brightness square, a hue slider, and the value as text, with alpha and swatches when asked for.\n *\n * Every part is operable by keyboard, and the square is two native range\n * inputs, one per axis, with one tab stop. The value is a CSS color string\n * in `format`, HSL by default.\n *\n * @function\n * @param {ColorPickerProps} props - Props for the ColorPicker component.\n * @param {React.Ref<HTMLDivElement>} ref - Forwarded ref to the picker's `<div>`.\n * @returns {JSX.Element} The rendered picker.\n *\n * @example\n * <ColorPicker label=\"Brand color\" defaultValue=\"#1e6b99\" swatches=\"bulma\" />\n */\nconst ColorPickerRoot = forwardRef<HTMLDivElement, ColorPickerProps>(\n (\n {\n className,\n label,\n labelSize,\n labelProps,\n horizontal,\n message,\n messageColor,\n fieldClassName,\n value,\n defaultValue,\n onChange,\n onChangeEnd,\n format = 'hsl',\n alpha = false,\n swatches,\n eyeDropper = false,\n disabled: disabledProp,\n name,\n form,\n labels,\n children,\n ...props\n },\n ref\n ) => {\n const disabled = useFieldsetDisabled(disabledProp);\n const insideField = useInsideField();\n const insideControl = useInsideControl();\n const ownField = rendersOwnField('ColorPicker', {\n insideField,\n insideControl,\n label,\n message,\n horizontal,\n fieldClassName,\n });\n const { ariaLabelledBy, fieldLabelProps } = useAutoLabelledBy({\n label,\n labelProps,\n rendersLabel: ownField,\n callerProps: props,\n });\n const { bulmaHelperClasses, rest } = useBulmaClasses(props);\n const pickerClass = usePrefixedClassNames('color-picker', {\n 'is-disabled': disabled,\n });\n const helpClass = usePrefixedClassNames('help', {\n [`is-${messageColor}`]: !!messageColor,\n });\n\n const context = useColorPicker({\n value,\n defaultValue,\n onChange,\n onChangeEnd,\n format,\n alpha,\n disabled,\n swatches,\n eyeDropper,\n labels,\n });\n\n const picker = (\n <div\n ref={ref}\n className={classNames(pickerClass, bulmaHelperClasses, className)}\n role=\"group\"\n aria-labelledby={ariaLabelledBy}\n {...rest}\n >\n <ColorPickerContext.Provider value={context}>\n {children ?? (\n <>\n <ColorPickerArea />\n <ColorPickerHueSlider />\n {alpha && <ColorPickerAlphaSlider />}\n <ColorPickerInput />\n {swatches && <ColorPickerSwatches />}\n </>\n )}\n </ColorPickerContext.Provider>\n {name && (\n <input\n type=\"hidden\"\n name={name}\n form={form}\n value={context.text}\n disabled={disabled}\n />\n )}\n </div>\n );\n\n let content: React.ReactNode = picker;\n if (rendersOwnControl('ColorPicker', { insideControl })) {\n content = <Control>{content}</Control>;\n }\n const messageEl = message ? <p className={helpClass}>{message}</p> : null;\n\n if (ownField) {\n return (\n <Field\n label={label}\n labelSize={labelSize}\n labelProps={fieldLabelProps}\n horizontal={horizontal}\n className={fieldClassName}\n >\n {content}\n {messageEl}\n </Field>\n );\n }\n return (\n <>\n {content}\n {messageEl}\n </>\n );\n }\n);\n\nColorPickerRoot.displayName = 'ColorPicker';\n\nexport const ColorPicker = withSubComponents(ColorPickerRoot, {\n Area: ColorPickerArea,\n HueSlider: ColorPickerHueSlider,\n AlphaSlider: ColorPickerAlphaSlider,\n Swatches: ColorPickerSwatches,\n Input: ColorPickerInput,\n});\n\nexport default ColorPicker;\n"],"names":["clamp","_jsx","_jsxs","_Fragment"],"mappings":"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"}
1
+ {"version":3,"file":"ColorPicker.js","sources":["../../../src/form/ColorPicker.tsx"],"sourcesContent":["import React, {\n forwardRef,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport {\n classNames,\n prefixedClassNames,\n usePrefixedClassNames,\n} from '../helpers/classNames';\nimport { useClassPrefix } from '../helpers/Config';\nimport { useBulmaClasses, BulmaClassesProps } from '../helpers/useBulmaClasses';\nimport { useClientLayoutEffect } from '../helpers/useClientLayoutEffect';\nimport { withSubComponents } from '../helpers/withSubComponents';\nimport { ColorSwatch } from '../elements/ColorSwatch';\nimport {\n ColorFormat,\n Hsva,\n formatColor,\n hsvaToRgba,\n parseColor,\n prefersDarkInk,\n sameColor,\n} from './_colorInternals/colorMath';\nimport {\n ColorPickerContext,\n keepingChannels,\n standalone,\n useColorPicker,\n usePicker,\n} from './_colorInternals/pickerState';\nimport { EyeDropperButton } from './_colorInternals/EyeDropperButton';\nimport { Field } from './Field';\nimport { Control } from './Control';\nimport { FormFieldProps } from './fieldProps';\nimport {\n useInsideField,\n useInsideControl,\n rendersOwnField,\n rendersOwnControl,\n useFieldsetDisabled,\n} from './FormContext';\nimport { useAutoLabelledBy } from './useAutoLabelId';\n\nexport type { ColorFormat } from './_colorInternals/colorMath';\n\n/**\n * A preset color for a picker's swatches: a CSS color, or a CSS color with\n * a name. The name labels the swatch for a screen reader and shows as its\n * tooltip; without one, the color as written does.\n */\nexport type ColorPickerSwatch = string | { color: string; label?: string };\n\n/**\n * The strings a color picker says, each with an English default. A key\n * left out, or set to an empty string, keeps its default.\n */\nexport interface ColorPickerLabels {\n /**\n * Names the saturation and brightness square.\n * @defaultValue 'Saturation and brightness'\n */\n area?: string;\n /**\n * What a screen reader calls the square in place of \"slider\".\n * @defaultValue '2D slider'\n */\n areaRoleDescription?: string;\n /**\n * The square's horizontal channel, in its value text.\n * @defaultValue 'Saturation'\n */\n saturation?: string;\n /**\n * The square's vertical channel, in its value text.\n * @defaultValue 'Brightness'\n */\n brightness?: string;\n /**\n * Names the hue slider.\n * @defaultValue 'Hue'\n */\n hue?: string;\n /**\n * Names the alpha slider.\n * @defaultValue 'Alpha'\n */\n alpha?: string;\n /**\n * The unit after the hue's number in its value text, \"171 degrees\".\n * Inside a `LocaleProvider` with a `locale`, that locale writes the number\n * and its unit, and this isn't used.\n * @defaultValue 'degrees'\n */\n degrees?: string;\n /**\n * Names the field that shows the value as text.\n * @defaultValue 'Color value'\n */\n value?: string;\n /**\n * Names the group of swatches.\n * @defaultValue 'Swatches'\n */\n swatches?: string;\n /**\n * Names the eye dropper button.\n * @defaultValue 'Pick a color from the screen'\n */\n eyeDropper?: string;\n /**\n * Names `ColorInput`'s launcher and the panel it opens.\n * @defaultValue 'Choose color'\n */\n chooseColor?: string;\n}\n\n// The theme colors `swatches=\"bulma\"` shows, read off the page.\nconst BULMA_SWATCHES: ReadonlyArray<{ color: string; label: string }> = [\n { color: 'var(--bulma-primary)', label: 'Primary' },\n { color: 'var(--bulma-link)', label: 'Link' },\n { color: 'var(--bulma-info)', label: 'Info' },\n { color: 'var(--bulma-success)', label: 'Success' },\n { color: 'var(--bulma-warning)', label: 'Warning' },\n { color: 'var(--bulma-danger)', label: 'Danger' },\n];\n\nconst clamp = (value: number, low: number, high: number) =>\n Math.min(Math.max(value, low), high);\n\n/** Whether the element is laid out right to left. */\nconst isRtl = (element: Element | null) =>\n !!element && getComputedStyle(element).direction === 'rtl';\n\n/** Where a pointer is across an element, from 0 to 1 each way. */\nconst pointIn = (element: HTMLElement, event: React.PointerEvent) => {\n const rect = element.getBoundingClientRect();\n const across =\n rect.width > 0 ? clamp((event.clientX - rect.left) / rect.width, 0, 1) : 0;\n const down =\n rect.height > 0 ? clamp((event.clientY - rect.top) / rect.height, 0, 1) : 0;\n return { x: isRtl(element) ? 1 - across : across, y: down };\n};\n\n/** The color's red, green and blue, rounded, as a CSS `rgb()` takes them. */\nconst rgbChannels = (color: Hsva) => {\n const { r, g, b } = hsvaToRgba(color);\n return `${Math.round(r)} ${Math.round(g)} ${Math.round(b)}`;\n};\n\n/** Whether a press should start a drag: any touch or pen, a mouse's main button. */\nconst startsDrag = (event: React.PointerEvent) =>\n event.pointerType !== 'mouse' || event.button === 0;\n\n/** Hands a node to a forwarded ref and to one of the part's own. */\nfunction setRefs<T>(\n node: T | null,\n own: React.MutableRefObject<T | null>,\n forwarded: React.ForwardedRef<T>\n) {\n own.current = node;\n if (typeof forwarded === 'function') forwarded(node);\n else if (forwarded) forwarded.current = node;\n}\n\n// ---------------------------------------------------------------------------\n// ColorPicker.Area\n// ---------------------------------------------------------------------------\n\n/**\n * Props for ColorPicker.Area. The helper props, the other attributes and the\n * `ref` land on the square's `<div>`.\n *\n * @extraProp {React.Ref<HTMLDivElement>} [ref] - Ref forwarded to the square's `<div>`.\n */\nexport interface ColorPickerAreaProps\n extends\n Omit<React.HTMLAttributes<HTMLDivElement>, 'color'>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n /** Additional CSS classes to apply. */\n className?: string;\n}\n\n/**\n * The saturation and brightness square, operated by pointer or by keyboard as one 2D slider.\n *\n * @function\n * @param {ColorPickerAreaProps} props - Props for ColorPicker.Area.\n * @param {React.Ref<HTMLDivElement>} ref - Forwarded ref to the square's `<div>`.\n * @returns {JSX.Element | null} The square, or nothing outside a ColorPicker.\n */\nexport const ColorPickerArea = forwardRef<HTMLDivElement, ColorPickerAreaProps>(\n ({ className, style, ...props }, ref) => {\n const picker = usePicker('Area');\n const live = picker ?? standalone;\n const { color, change, end, disabled, labels, touch, percent } = live;\n const { bulmaHelperClasses, rest } = useBulmaClasses(props);\n\n const rootRef = useRef<HTMLDivElement | null>(null);\n const xRef = useRef<HTMLInputElement>(null);\n const yRef = useRef<HTMLInputElement>(null);\n // The axis whose input holds the tab stop: the one focused or moved last.\n const [axis, setAxis] = useState<'x' | 'y'>('x');\n // Once a key has moved the square, both inputs are exposed until focus\n // leaves it, so the one that moved can be read.\n const [keyed, setKeyed] = useState(false);\n const draggingRef = useRef(false);\n\n const areaClass = usePrefixedClassNames('color-area', {\n 'is-disabled': disabled,\n });\n const thumbClass = usePrefixedClassNames('color-area-thumb');\n const inputClass = usePrefixedClassNames('color-area-input');\n\n const s = Math.round(color.s);\n const v = Math.round(color.v);\n const saturationText = `${labels.saturation} ${percent(s)}`;\n const brightnessText = `${labels.brightness} ${percent(v)}`;\n\n const focusAxis = (which: 'x' | 'y') =>\n (which === 'x' ? xRef : yRef).current?.focus({ preventScroll: true });\n // The axis a key moved to, focused once the render that shows its input\n // is on the page, so it's no longer aria-hidden as it takes focus.\n const focusNextRef = useRef<'x' | 'y' | null>(null);\n useClientLayoutEffect(() => {\n if (!focusNextRef.current) return;\n focusAxis(focusNextRef.current);\n focusNextRef.current = null;\n });\n\n const moveTo = (event: React.PointerEvent<HTMLDivElement>) => {\n const { x, y } = pointIn(event.currentTarget, event);\n change({ ...color, s: x * 100, v: (1 - y) * 100 });\n };\n\n const onPointerDown = (event: React.PointerEvent<HTMLDivElement>) => {\n if (disabled || !startsDrag(event)) return;\n // No text selection, and focus goes where the square puts it.\n event.preventDefault();\n event.currentTarget.setPointerCapture?.(event.pointerId);\n draggingRef.current = true;\n moveTo(event);\n focusAxis(axis);\n };\n const onPointerMove = (event: React.PointerEvent<HTMLDivElement>) => {\n if (draggingRef.current) moveTo(event);\n };\n const endDrag = (event: React.PointerEvent<HTMLDivElement>) => {\n if (!draggingRef.current) return;\n draggingRef.current = false;\n event.currentTarget.releasePointerCapture?.(event.pointerId);\n end();\n };\n\n const onKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n const by = event.shiftKey ? 10 : 1;\n // The horizontal arrows follow the screen: right to left, saturation\n // grows to the left.\n const right = isRtl(rootRef.current) ? -by : by;\n const moves: Record<string, [number, number]> = {\n ArrowRight: [right, 0],\n ArrowLeft: [-right, 0],\n ArrowUp: [0, by],\n ArrowDown: [0, -by],\n PageUp: [0, 10],\n PageDown: [0, -10],\n Home: [-10, 0],\n End: [10, 0],\n };\n const move = moves[event.key];\n if (!move) return;\n event.preventDefault();\n const [dx, dy] = move;\n change(\n {\n ...color,\n s: clamp(s + dx, 0, 100),\n v: clamp(v + dy, 0, 100),\n },\n true\n );\n const moved = dx !== 0 ? 'x' : 'y';\n setAxis(moved);\n setKeyed(true);\n if (moved !== axis) focusNextRef.current = moved;\n };\n\n // A touch screen reader, or a browser's own stepping, sets an input's\n // value without a key the square handled.\n const onInput =\n (which: 'x' | 'y') => (event: React.ChangeEvent<HTMLInputElement>) => {\n const value = Number(event.target.value);\n change(\n which === 'x' ? { ...color, s: value } : { ...color, v: value },\n true\n );\n };\n\n const onBlur = (event: React.FocusEvent<HTMLInputElement>) => {\n const next = event.relatedTarget;\n if (next !== xRef.current && next !== yRef.current) setKeyed(false);\n };\n\n // What both inputs share; each adds its axis, and the handlers.\n const shared = {\n type: 'range',\n className: inputClass,\n min: 0,\n max: 100,\n step: 1,\n disabled,\n 'aria-label': labels.area,\n 'aria-roledescription': labels.areaRoleDescription,\n } as const;\n // The one not holding the tab stop is hidden until a key moves the\n // square, so a screen reader lists one control; both show on touch.\n const tabIndexOf = (which: 'x' | 'y') => (touch || axis === which ? 0 : -1);\n const hiddenOf = (which: 'x' | 'y') =>\n touch || keyed || axis === which ? undefined : true;\n\n if (!picker) return null;\n\n return (\n <div\n ref={node => setRefs(node, rootRef, ref)}\n className={classNames(areaClass, bulmaHelperClasses, className)}\n style={\n {\n ...style,\n '--color-picker-hue': Math.round(color.h),\n '--color-picker-rgb': rgbChannels(color),\n '--color-area-x': `${color.s}%`,\n '--color-area-y': `${100 - color.v}%`,\n } as React.CSSProperties\n }\n onPointerDown={onPointerDown}\n onPointerMove={onPointerMove}\n onPointerUp={endDrag}\n onPointerCancel={endDrag}\n {...rest}\n >\n <div className={thumbClass} role=\"presentation\">\n <input\n ref={xRef}\n {...shared}\n value={s}\n aria-valuetext={`${saturationText}, ${brightnessText}`}\n aria-orientation=\"horizontal\"\n tabIndex={tabIndexOf('x')}\n aria-hidden={hiddenOf('x')}\n onChange={onInput('x')}\n onKeyDown={onKeyDown}\n onFocus={() => setAxis('x')}\n onBlur={onBlur}\n />\n <input\n ref={yRef}\n {...shared}\n value={v}\n aria-valuetext={`${brightnessText}, ${saturationText}`}\n aria-orientation=\"vertical\"\n tabIndex={tabIndexOf('y')}\n aria-hidden={hiddenOf('y')}\n onChange={onInput('y')}\n onKeyDown={onKeyDown}\n onFocus={() => setAxis('y')}\n onBlur={onBlur}\n />\n </div>\n </div>\n );\n }\n);\n\nColorPickerArea.displayName = 'ColorPicker.Area';\n\n// ---------------------------------------------------------------------------\n// ColorPicker.HueSlider and ColorPicker.AlphaSlider\n// ---------------------------------------------------------------------------\n\n/**\n * Props for ColorPicker.HueSlider and ColorPicker.AlphaSlider. The helper\n * props, the other attributes and the `ref` land on the slider's `<div>`.\n *\n * @extraProp {React.Ref<HTMLDivElement>} [ref] - Ref forwarded to the slider's `<div>`.\n */\nexport interface ColorPickerSliderProps\n extends\n Omit<React.HTMLAttributes<HTMLDivElement>, 'color'>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n /** Additional CSS classes to apply. */\n className?: string;\n}\n\ninterface ChannelSliderProps extends ColorPickerSliderProps {\n channel: 'hue' | 'alpha';\n}\n\n/** The hue or the alpha slider: a hidden native range under a drawn track. */\nconst ChannelSlider = forwardRef<HTMLDivElement, ChannelSliderProps>(\n ({ channel, className, style, ...props }, ref) => {\n const picker = usePicker(channel === 'hue' ? 'HueSlider' : 'AlphaSlider');\n const live = picker ?? standalone;\n const { color, change, end, disabled, labels, percent, degrees } = live;\n const { bulmaHelperClasses, rest } = useBulmaClasses(props);\n const rootRef = useRef<HTMLDivElement | null>(null);\n const draggingRef = useRef(false);\n\n const isHue = channel === 'hue';\n const max = isHue ? 360 : 100;\n const value = Math.round(isHue ? color.h : color.a * 100);\n const withValue = (next: number): Hsva =>\n isHue ? { ...color, h: next } : { ...color, a: next / 100 };\n\n const sliderClass = usePrefixedClassNames('color-slider', {\n 'is-hue': isHue,\n 'is-alpha': !isHue,\n 'is-disabled': disabled,\n });\n const trackClass = usePrefixedClassNames('color-slider-track');\n const thumbClass = usePrefixedClassNames('color-slider-thumb');\n const inputClass = usePrefixedClassNames('color-slider-input');\n\n const moveTo = (event: React.PointerEvent<HTMLDivElement>) => {\n const { x } = pointIn(event.currentTarget, event);\n change(withValue(x * max));\n };\n const onPointerDown = (event: React.PointerEvent<HTMLDivElement>) => {\n if (disabled || !startsDrag(event)) return;\n event.preventDefault();\n event.currentTarget.setPointerCapture?.(event.pointerId);\n draggingRef.current = true;\n moveTo(event);\n rootRef.current?.querySelector('input')?.focus({ preventScroll: true });\n };\n const onPointerMove = (event: React.PointerEvent<HTMLDivElement>) => {\n if (draggingRef.current) moveTo(event);\n };\n const endDrag = (event: React.PointerEvent<HTMLDivElement>) => {\n if (!draggingRef.current) return;\n draggingRef.current = false;\n event.currentTarget.releasePointerCapture?.(event.pointerId);\n end();\n };\n\n const onKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n const by = event.shiftKey ? 10 : 1;\n const right = isRtl(rootRef.current) ? -by : by;\n const steps: Record<string, number> = {\n ArrowRight: right,\n ArrowLeft: -right,\n ArrowUp: by,\n ArrowDown: -by,\n PageUp: 10,\n PageDown: -10,\n Home: -max,\n End: max,\n };\n const step = steps[event.key];\n if (step === undefined) return;\n event.preventDefault();\n change(withValue(clamp(value + step, 0, max)), true);\n };\n\n if (!picker) return null;\n\n return (\n <div\n ref={node => setRefs(node, rootRef, ref)}\n className={classNames(sliderClass, bulmaHelperClasses, className)}\n style={\n {\n ...style,\n '--color-picker-hue': Math.round(color.h),\n '--color-picker-rgb': rgbChannels(color),\n '--color-slider-position': `${(value / max) * 100}%`,\n } as React.CSSProperties\n }\n onPointerDown={onPointerDown}\n onPointerMove={onPointerMove}\n onPointerUp={endDrag}\n onPointerCancel={endDrag}\n {...rest}\n >\n <div className={trackClass} />\n <div className={thumbClass} role=\"presentation\">\n <input\n type=\"range\"\n className={inputClass}\n min={0}\n max={max}\n step={1}\n value={value}\n disabled={disabled}\n // Spelled out, as the square's is, so Safari's Tab reaches it\n // with its default settings, which skip a range input without\n // one.\n tabIndex={0}\n aria-label={isHue ? labels.hue : labels.alpha}\n aria-valuetext={isHue ? degrees(value) : percent(value)}\n onChange={event =>\n change(withValue(Number(event.target.value)), true)\n }\n onKeyDown={onKeyDown}\n />\n </div>\n </div>\n );\n }\n);\n\nChannelSlider.displayName = 'ChannelSlider';\n\n/**\n * The hue slider, from red round the spectrum and back to red.\n *\n * @function\n * @param {ColorPickerSliderProps} props - Props for ColorPicker.HueSlider.\n * @param {React.Ref<HTMLDivElement>} ref - Forwarded ref to the slider's `<div>`.\n * @returns {JSX.Element | null} The slider, or nothing outside a ColorPicker.\n */\nexport const ColorPickerHueSlider = forwardRef<\n HTMLDivElement,\n ColorPickerSliderProps\n>((props, ref) => <ChannelSlider ref={ref} {...props} channel=\"hue\" />);\n\nColorPickerHueSlider.displayName = 'ColorPicker.HueSlider';\n\n/**\n * The alpha slider, from see-through to solid.\n *\n * @function\n * @param {ColorPickerSliderProps} props - Props for ColorPicker.AlphaSlider.\n * @param {React.Ref<HTMLDivElement>} ref - Forwarded ref to the slider's `<div>`.\n * @returns {JSX.Element | null} The slider, or nothing outside a ColorPicker.\n */\nexport const ColorPickerAlphaSlider = forwardRef<\n HTMLDivElement,\n ColorPickerSliderProps\n>((props, ref) => <ChannelSlider ref={ref} {...props} channel=\"alpha\" />);\n\nColorPickerAlphaSlider.displayName = 'ColorPicker.AlphaSlider';\n\n// ---------------------------------------------------------------------------\n// ColorPicker.Swatches\n// ---------------------------------------------------------------------------\n\n/**\n * Props for ColorPicker.Swatches. The helper props, the other attributes and\n * the `ref` land on the group's `<div>`.\n *\n * @extraProp {React.Ref<HTMLDivElement>} [ref] - Ref forwarded to the group's `<div>`.\n */\nexport interface ColorPickerSwatchesProps\n extends\n Omit<React.HTMLAttributes<HTMLDivElement>, 'color'>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n /** Additional CSS classes to apply. */\n className?: string;\n /**\n * The colors to offer, in place of the picker's own `swatches`: a list,\n * or `\"bulma\"` for the page's theme colors.\n */\n swatches?: ColorPickerSwatch[] | 'bulma';\n}\n\n/** Arrow keys and how far they move along the swatches. */\nconst SWATCH_STEPS: Record<string, number> = {\n ArrowRight: 1,\n ArrowDown: 1,\n ArrowLeft: -1,\n ArrowUp: -1,\n};\n\n/**\n * The swatches, a radio group of preset colors that sets the picker's color.\n *\n * @function\n * @param {ColorPickerSwatchesProps} props - Props for ColorPicker.Swatches.\n * @param {React.Ref<HTMLDivElement>} ref - Forwarded ref to the group's `<div>`.\n * @returns {JSX.Element | null} The swatches, or nothing outside a ColorPicker or with none to show.\n */\nexport const ColorPickerSwatches = forwardRef<\n HTMLDivElement,\n ColorPickerSwatchesProps\n>(({ className, swatches: ownSwatches, ...props }, ref) => {\n const picker = usePicker('Swatches');\n const live = picker ?? standalone;\n const { color, change, disabled, labels, format, alpha } = live;\n const { bulmaHelperClasses, rest } = useBulmaClasses(props);\n const classPrefix = useClassPrefix();\n const groupClass = usePrefixedClassNames('color-picker-swatches');\n const rootRef = useRef<HTMLDivElement | null>(null);\n\n const given = ownSwatches ?? live.swatches;\n const list = useMemo(\n () =>\n (given === 'bulma' ? BULMA_SWATCHES : (given ?? [])).map(entry =>\n typeof entry === 'string' ? { color: entry } : entry\n ),\n [given]\n );\n\n // A color the picker can't read as written, such as a var(), is read off\n // the page, as the text the swatch's own custom property resolves to.\n const chipsRef = useRef<Array<HTMLSpanElement | null>>([]);\n const textOf = useCallback(\n (i: number): string => {\n const chip = chipsRef.current[i];\n if (parseColor(list[i].color) || !chip) return list[i].color;\n return getComputedStyle(chip)\n .getPropertyValue('--color-swatch-color')\n .trim();\n },\n [list]\n );\n // Those texts, read after every render rather than once: a Theme can\n // change the variables behind them while the picker is open, and the\n // chosen swatch has to follow. A read that changes nothing renders\n // nothing more.\n const [resolved, setResolved] = useState<string[]>([]);\n // eslint-disable-next-line react-hooks/exhaustive-deps -- after every render on purpose; the updater keeps the state when nothing changed, so it settles\n useEffect(() => {\n const next = list.map((_, i) => textOf(i));\n // eslint-disable-next-line react-hooks/set-state-in-effect -- a var() color can only be read off the page once its swatch is on it\n setResolved(previous =>\n previous.length === next.length &&\n previous.every((text, i) => text === next[i])\n ? previous\n : next\n );\n });\n\n const colorOf = (i: number) =>\n parseColor(list[i].color) ?? parseColor(resolved[i]);\n // The same color, as far as the picker's value can tell: the same 8-bit\n // color, or the same text, since an HSL value is rounded.\n const shownText = formatColor(color, format, alpha);\n const checked = list.findIndex((_, i) => {\n const swatch = colorOf(i);\n if (!swatch) return false;\n const solid = alpha ? swatch : { ...swatch, a: 1 };\n return (\n sameColor(solid, color) || formatColor(solid, format, alpha) === shownText\n );\n });\n const [focused, setFocused] = useState<number | null>(null);\n const tabStop = focused ?? (checked >= 0 ? checked : 0);\n\n // Read afresh, so a theme that changed since the last render counts.\n const pick = (i: number) => {\n const text = textOf(i);\n const swatch = parseColor(text);\n if (swatch) change(keepingChannels(swatch, color, text), true);\n };\n\n const onKeyDown = (i: number) => (event: React.KeyboardEvent) => {\n const buttons = Array.from(\n (rootRef.current as HTMLDivElement).querySelectorAll<HTMLButtonElement>(\n '[role=\"radio\"]'\n )\n );\n let next: number | undefined;\n if (event.key === 'Home') next = 0;\n else if (event.key === 'End') next = buttons.length - 1;\n else if (SWATCH_STEPS[event.key]) {\n // Left and Right follow the screen, so right to left they swap.\n const sideways = event.key === 'ArrowLeft' || event.key === 'ArrowRight';\n const flip = sideways && isRtl(rootRef.current) ? -1 : 1;\n next =\n (i + SWATCH_STEPS[event.key] * flip + buttons.length) % buttons.length;\n }\n if (next === undefined) return;\n event.preventDefault();\n buttons[next]?.focus();\n pick(next);\n };\n\n if (!picker || list.length === 0) return null;\n\n return (\n <div\n ref={node => setRefs(node, rootRef, ref)}\n className={classNames(groupClass, bulmaHelperClasses, className)}\n role=\"radiogroup\"\n aria-label={labels.swatches}\n aria-disabled={disabled || undefined}\n {...rest}\n >\n {list.map((entry, i) => {\n const swatch = colorOf(i);\n const isChecked = i === checked;\n // The check is drawn in black or white with a ring of the other, so\n // it shows on any color. On a see-through swatch the page shows\n // through, so it takes the scheme's text color and background,\n // which follow dark mode, in place of the swatch's own.\n const seeThrough = !!swatch && swatch.a < 1;\n return (\n <button\n key={`${entry.color}-${i}`}\n type=\"button\"\n role=\"radio\"\n aria-checked={isChecked}\n aria-label={entry.label || entry.color}\n title={entry.label}\n tabIndex={i === tabStop ? 0 : -1}\n disabled={disabled}\n className={prefixedClassNames(classPrefix, 'color-picker-swatch', {\n 'is-checked': isChecked,\n 'is-see-through': seeThrough,\n 'is-dark-ink': !!swatch && !seeThrough && prefersDarkInk(swatch),\n })}\n onClick={() => pick(i)}\n onKeyDown={onKeyDown(i)}\n onFocus={() => setFocused(i)}\n onBlur={() => setFocused(null)}\n >\n <ColorSwatch\n ref={node => {\n chipsRef.current[i] = node;\n }}\n color={entry.color}\n aria-hidden=\"true\"\n >\n {isChecked && (\n <CheckIcon\n haloClass={prefixedClassNames(\n classPrefix,\n 'color-picker-check-halo'\n )}\n />\n )}\n </ColorSwatch>\n </button>\n );\n })}\n </div>\n );\n});\n\nColorPickerSwatches.displayName = 'ColorPicker.Swatches';\n\n/**\n * The check on the chosen swatch: a ring in `haloClass`, and the check over\n * it in the current color.\n */\nconst CheckIcon = ({ haloClass }: { haloClass: string }) => (\n <svg viewBox=\"0 0 16 16\" width=\"1em\" height=\"1em\" aria-hidden=\"true\">\n {['halo', 'ink'].map(part => (\n <path\n key={part}\n className={part === 'halo' ? haloClass : undefined}\n d=\"M3.5 8.5l3 3 6-7\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={part === 'halo' ? 4.5 : 2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n ))}\n </svg>\n);\n\n// ---------------------------------------------------------------------------\n// ColorPicker.Input\n// ---------------------------------------------------------------------------\n\n/**\n * Props for ColorPicker.Input. The helper props, the other attributes and\n * the `ref` land on the row's `<div>`.\n *\n * @extraProp {React.Ref<HTMLDivElement>} [ref] - Ref forwarded to the row's `<div>`.\n */\nexport interface ColorPickerInputProps\n extends\n Omit<React.HTMLAttributes<HTMLDivElement>, 'color'>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n /** Additional CSS classes to apply. */\n className?: string;\n}\n\n/**\n * The value as text you can type in, beside a preview swatch, with the eye dropper when the picker has `eyeDropper`.\n *\n * @function\n * @param {ColorPickerInputProps} props - Props for ColorPicker.Input.\n * @param {React.Ref<HTMLDivElement>} ref - Forwarded ref to the row's `<div>`.\n * @returns {JSX.Element | null} The row, or nothing outside a ColorPicker.\n */\nexport const ColorPickerInput = forwardRef<\n HTMLDivElement,\n ColorPickerInputProps\n>(({ className, ...props }, ref) => {\n const picker = usePicker('Input');\n const live = picker ?? standalone;\n const { color, text, change, disabled, labels } = live;\n const { bulmaHelperClasses, rest } = useBulmaClasses(props);\n const rowClass = usePrefixedClassNames('color-picker-value');\n const previewClass = usePrefixedClassNames('color-picker-preview');\n // What's been typed and not yet committed, or null while the field\n // shows the value.\n const [draft, setDraft] = useState<string | null>(null);\n const invalid = draft !== null && !parseColor(draft);\n const inputClass = usePrefixedClassNames('input', {\n 'is-small': true,\n 'is-danger': invalid,\n });\n\n const commit = () => {\n if (draft === null) return;\n const parsed = parseColor(draft);\n setDraft(null);\n if (parsed) change(keepingChannels(parsed, color, draft), true);\n };\n\n const onKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (draft === null) return;\n if (event.key === 'Enter') {\n // Commits rather than submitting a form; an unreadable value stays\n // to be fixed.\n event.preventDefault();\n if (!invalid) commit();\n } else if (event.key === 'Escape') {\n // Puts the value back, and keeps the key from closing a popover too.\n event.preventDefault();\n event.stopPropagation();\n setDraft(null);\n }\n };\n\n if (!picker) return null;\n\n return (\n <div\n ref={ref}\n className={classNames(rowClass, bulmaHelperClasses, className)}\n {...rest}\n >\n <ColorSwatch color={text} className={previewClass} aria-hidden=\"true\" />\n <input\n type=\"text\"\n className={inputClass}\n value={draft ?? text}\n disabled={disabled}\n aria-label={labels.value}\n aria-invalid={invalid || undefined}\n spellCheck={false}\n autoComplete=\"off\"\n autoCapitalize=\"off\"\n onChange={event => setDraft(event.target.value)}\n onKeyDown={onKeyDown}\n onBlur={commit}\n />\n <EyeDropperButton />\n </div>\n );\n});\n\nColorPickerInput.displayName = 'ColorPicker.Input';\n\n// ---------------------------------------------------------------------------\n// ColorPicker (root)\n// ---------------------------------------------------------------------------\n\n/**\n * Props for the ColorPicker component. The helper props, the other\n * attributes and the `ref` land on the picker's `<div>`, inside the `Field`\n * and `Control` it renders when it isn't already in them.\n *\n * Inside an existing `Control` it renders no `Control` of its own. Inside an\n * outer `Field`, or a `Control` with no `Field` around it, it renders no\n * `Field` of its own either. The exception is `label`, `message`,\n * `horizontal` or `fieldClassName` in that bare `Control`: it keeps a\n * `Field` for them, nested in the `.control`, and warns in development.\n * Wrap the `Control` in a `Field` instead, and set the `label`, `horizontal`\n * and class name on that `Field`.\n *\n * @extraProp {React.Ref<HTMLDivElement>} [ref] - Ref forwarded to the picker's `<div>`.\n * @extraProp {string} [aria-label] - Names the picker's group when there's no `label`.\n */\nexport interface ColorPickerProps\n extends\n Omit<\n React.HTMLAttributes<HTMLDivElement>,\n 'onChange' | 'defaultValue' | 'color' | 'role'\n >,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'>,\n FormFieldProps {\n /** Additional CSS classes to apply. */\n className?: string;\n /** Field label naming the picker's group, through `aria-labelledby`. Dropped inside an outer `Field`, whose own label names it instead. An `aria-label` or `aria-labelledby` you set wins over either. */\n label?: React.ReactNode;\n /** Props for the label element. An explicit `id` here is used as the `aria-labelledby` target instead of a generated one; any `htmlFor` is ignored (a group label names the group, never a single control). */\n labelProps?: React.LabelHTMLAttributes<HTMLLabelElement> & {\n [key: string]: unknown;\n };\n /**\n * The color, controlled: any CSS color the picker reads (hex, `rgb()`,\n * `hsl()` or a color name), in any format, since `onChange` hands back\n * the `format` asked for. One it can't read leaves the picker showing the\n * last color it could. A value it gave you comes back without moving the\n * thumbs, and a gray or black keeps the hue and saturation the user had.\n */\n value?: string;\n /** The color to start with, uncontrolled. Black without one. */\n defaultValue?: string;\n /**\n * Called with the color, in `format`, as it changes: on every step of a\n * drag, and on a key, a swatch, a typed value or the eye dropper.\n */\n onChange?: (value: string) => void;\n /**\n * Called with the color, in `format`, once a change is done: when a drag\n * ends, and with `onChange` for a key, a swatch, a typed value or the eye\n * dropper. The place to save it.\n */\n onChangeEnd?: (value: string) => void;\n /**\n * How the value is written: `'hsl'` (`hsl(171, 100%, 41%)`), Bulma's own\n * color space and what `Theme`'s `primaryH`, `primaryS` and `primaryL`\n * take, `'hex'` (`#00d1b2`) or `'rgb'` (`rgb(0, 209, 178)`). With `alpha`,\n * `hsla()`, `#rrggbbaa` and `rgba()`.\n * @defaultValue 'hsl'\n */\n format?: ColorFormat;\n /**\n * Adds an alpha slider and writes the alpha into the value. Without it,\n * the value is always solid.\n */\n alpha?: boolean;\n /**\n * Preset colors shown as a radio group under the picker: a list of CSS\n * colors, each a string or `{ color, label }`, or `\"bulma\"` for the page's\n * primary, link, info, success, warning and danger, from Bulma's CSS\n * variables, so a themed app shows its own. A color the picker can't read\n * as written, such as a `var()`, is read off the page each time the picker\n * renders, so after a theme change the swatches show the new colors at\n * once and the chosen one is marked again on the picker's next render,\n * which a `Theme` around it causes. The `\"bulma\"` names are English; for\n * others, pass the list yourself, such as\n * `{ color: 'var(--bulma-primary)', label: 'Primär' }`.\n */\n swatches?: ColorPickerSwatch[] | 'bulma';\n /**\n * Adds a button that picks a color from anywhere on the screen, where the\n * browser has the EyeDropper API (desktop Chromium today). Elsewhere, and\n * until the page hydrates, it isn't shown.\n */\n eyeDropper?: boolean;\n /** Disables every part. A disabled `Fieldset` around it does too. */\n disabled?: boolean;\n /** Form field name. When set, a hidden input carries the value. */\n name?: string;\n /** The id of the form the hidden input belongs to. */\n form?: string;\n /** The strings it says, each with an English default. */\n labels?: ColorPickerLabels;\n /**\n * Parts for a layout of your own: `ColorPicker.Area`,\n * `ColorPicker.HueSlider`, `ColorPicker.AlphaSlider`,\n * `ColorPicker.Swatches` and `ColorPicker.Input`, with anything else\n * between them. Without children, the picker shows the square, the hue\n * slider, the alpha slider with `alpha`, the value, and the swatches when\n * there are some.\n */\n children?: React.ReactNode;\n}\n\n/**\n * The `ColorPicker` component is a panel for choosing a color: a saturation and brightness square, a hue slider, and the value as text, with alpha and swatches when asked for.\n *\n * Every part is operable by keyboard, and the square is two native range\n * inputs, one per axis, with one tab stop. The value is a CSS color string\n * in `format`, HSL by default.\n *\n * @function\n * @param {ColorPickerProps} props - Props for the ColorPicker component.\n * @param {React.Ref<HTMLDivElement>} ref - Forwarded ref to the picker's `<div>`.\n * @returns {JSX.Element} The rendered picker.\n *\n * @example\n * <ColorPicker label=\"Brand color\" defaultValue=\"#1e6b99\" swatches=\"bulma\" />\n */\nconst ColorPickerRoot = forwardRef<HTMLDivElement, ColorPickerProps>(\n (\n {\n className,\n label,\n labelSize,\n labelProps,\n horizontal,\n message,\n messageColor,\n fieldClassName,\n value,\n defaultValue,\n onChange,\n onChangeEnd,\n format = 'hsl',\n alpha = false,\n swatches,\n eyeDropper = false,\n disabled: disabledProp,\n name,\n form,\n labels,\n children,\n ...props\n },\n ref\n ) => {\n const disabled = useFieldsetDisabled(disabledProp);\n const insideField = useInsideField();\n const insideControl = useInsideControl();\n const ownField = rendersOwnField('ColorPicker', {\n insideField,\n insideControl,\n label,\n message,\n horizontal,\n fieldClassName,\n });\n const { ariaLabelledBy, fieldLabelProps } = useAutoLabelledBy({\n label,\n labelProps,\n rendersLabel: ownField,\n callerProps: props,\n });\n const { bulmaHelperClasses, rest } = useBulmaClasses(props);\n const pickerClass = usePrefixedClassNames('color-picker', {\n 'is-disabled': disabled,\n });\n const helpClass = usePrefixedClassNames('help', {\n [`is-${messageColor}`]: !!messageColor,\n });\n\n const context = useColorPicker({\n value,\n defaultValue,\n onChange,\n onChangeEnd,\n format,\n alpha,\n disabled,\n swatches,\n eyeDropper,\n labels,\n });\n\n const picker = (\n <div\n ref={ref}\n className={classNames(pickerClass, bulmaHelperClasses, className)}\n role=\"group\"\n aria-labelledby={ariaLabelledBy}\n {...rest}\n >\n <ColorPickerContext.Provider value={context}>\n {children ?? (\n <>\n <ColorPickerArea />\n <ColorPickerHueSlider />\n {alpha && <ColorPickerAlphaSlider />}\n <ColorPickerInput />\n {swatches && <ColorPickerSwatches />}\n </>\n )}\n </ColorPickerContext.Provider>\n {name && (\n <input\n type=\"hidden\"\n name={name}\n form={form}\n value={context.text}\n disabled={disabled}\n />\n )}\n </div>\n );\n\n let content: React.ReactNode = picker;\n if (rendersOwnControl('ColorPicker', { insideControl })) {\n content = <Control>{content}</Control>;\n }\n const messageEl = message ? <p className={helpClass}>{message}</p> : null;\n\n if (ownField) {\n return (\n <Field\n label={label}\n labelSize={labelSize}\n labelProps={fieldLabelProps}\n horizontal={horizontal}\n className={fieldClassName}\n >\n {content}\n {messageEl}\n </Field>\n );\n }\n return (\n <>\n {content}\n {messageEl}\n </>\n );\n }\n);\n\nColorPickerRoot.displayName = 'ColorPicker';\n\nexport const ColorPicker = withSubComponents(ColorPickerRoot, {\n Area: ColorPickerArea,\n HueSlider: ColorPickerHueSlider,\n AlphaSlider: ColorPickerAlphaSlider,\n Swatches: ColorPickerSwatches,\n Input: ColorPickerInput,\n});\n\nexport default ColorPicker;\n"],"names":["clamp","_jsx","_jsxs","_Fragment"],"mappings":";;;;;;;;;;;;;;;;;;AAwHA;AACA,MAAM,cAAc,GAAoD;AACtE,IAAA,EAAE,KAAK,EAAE,sBAAsB,EAAE,KAAK,EAAE,SAAS,EAAE;AACnD,IAAA,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,MAAM,EAAE;AAC7C,IAAA,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,MAAM,EAAE;AAC7C,IAAA,EAAE,KAAK,EAAE,sBAAsB,EAAE,KAAK,EAAE,SAAS,EAAE;AACnD,IAAA,EAAE,KAAK,EAAE,sBAAsB,EAAE,KAAK,EAAE,SAAS,EAAE;AACnD,IAAA,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,QAAQ,EAAE;CAClD;AAED,MAAMA,OAAK,GAAG,CAAC,KAAa,EAAE,GAAW,EAAE,IAAY,KACrD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC;AAEtC;AACA,MAAM,KAAK,GAAG,CAAC,OAAuB,KACpC,CAAC,CAAC,OAAO,IAAI,gBAAgB,CAAC,OAAO,CAAC,CAAC,SAAS,KAAK,KAAK;AAE5D;AACA,MAAM,OAAO,GAAG,CAAC,OAAoB,EAAE,KAAyB,KAAI;AAClE,IAAA,MAAM,IAAI,GAAG,OAAO,CAAC,qBAAqB,EAAE;AAC5C,IAAA,MAAM,MAAM,GACV,IAAI,CAAC,KAAK,GAAG,CAAC,GAAGA,OAAK,CAAC,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC;AAC5E,IAAA,MAAM,IAAI,GACR,IAAI,CAAC,MAAM,GAAG,CAAC,GAAGA,OAAK,CAAC,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC;IAC7E,OAAO,EAAE,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE;AAC7D,CAAC;AAED;AACA,MAAM,WAAW,GAAG,CAAC,KAAW,KAAI;AAClC,IAAA,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,UAAU,CAAC,KAAK,CAAC;IACrC,OAAO,CAAA,EAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA,CAAA,EAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA,CAAE;AAC7D,CAAC;AAED;AACA,MAAM,UAAU,GAAG,CAAC,KAAyB,KAC3C,KAAK,CAAC,WAAW,KAAK,OAAO,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;AAErD;AACA,SAAS,OAAO,CACd,IAAc,EACd,GAAqC,EACrC,SAAgC,EAAA;AAEhC,IAAA,GAAG,CAAC,OAAO,GAAG,IAAI;IAClB,IAAI,OAAO,SAAS,KAAK,UAAU;QAAE,SAAS,CAAC,IAAI,CAAC;AAC/C,SAAA,IAAI,SAAS;AAAE,QAAA,SAAS,CAAC,OAAO,GAAG,IAAI;AAC9C;AAoBA;;;;;;;AAOG;AACI,MAAM,eAAe,GAAG,UAAU,CACvC,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,KAAI;AACtC,IAAA,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;AAChC,IAAA,MAAM,IAAI,GAAG,MAAM,IAAI,UAAU;AACjC,IAAA,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,IAAI;IACrE,MAAM,EAAE,kBAAkB,EAAE,IAAI,EAAE,GAAG,eAAe,CAAC,KAAK,CAAC;AAE3D,IAAA,MAAM,OAAO,GAAG,MAAM,CAAwB,IAAI,CAAC;AACnD,IAAA,MAAM,IAAI,GAAG,MAAM,CAAmB,IAAI,CAAC;AAC3C,IAAA,MAAM,IAAI,GAAG,MAAM,CAAmB,IAAI,CAAC;;IAE3C,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAY,GAAG,CAAC;;;IAGhD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC;AACzC,IAAA,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC;AAEjC,IAAA,MAAM,SAAS,GAAG,qBAAqB,CAAC,YAAY,EAAE;AACpD,QAAA,aAAa,EAAE,QAAQ;AACxB,KAAA,CAAC;AACF,IAAA,MAAM,UAAU,GAAG,qBAAqB,CAAC,kBAAkB,CAAC;AAC5D,IAAA,MAAM,UAAU,GAAG,qBAAqB,CAAC,kBAAkB,CAAC;IAE5D,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IAC7B,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AAC7B,IAAA,MAAM,cAAc,GAAG,CAAA,EAAG,MAAM,CAAC,UAAU,CAAA,CAAA,EAAI,OAAO,CAAC,CAAC,CAAC,CAAA,CAAE;AAC3D,IAAA,MAAM,cAAc,GAAG,CAAA,EAAG,MAAM,CAAC,UAAU,CAAA,CAAA,EAAI,OAAO,CAAC,CAAC,CAAC,CAAA,CAAE;AAE3D,IAAA,MAAM,SAAS,GAAG,CAAC,KAAgB,KACjC,CAAC,KAAK,KAAK,GAAG,GAAG,IAAI,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;;;AAGvE,IAAA,MAAM,YAAY,GAAG,MAAM,CAAmB,IAAI,CAAC;IACnD,qBAAqB,CAAC,MAAK;QACzB,IAAI,CAAC,YAAY,CAAC,OAAO;YAAE;AAC3B,QAAA,SAAS,CAAC,YAAY,CAAC,OAAO,CAAC;AAC/B,QAAA,YAAY,CAAC,OAAO,GAAG,IAAI;AAC7B,IAAA,CAAC,CAAC;AAEF,IAAA,MAAM,MAAM,GAAG,CAAC,KAAyC,KAAI;AAC3D,QAAA,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC;QACpD,MAAM,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC;AACpD,IAAA,CAAC;AAED,IAAA,MAAM,aAAa,GAAG,CAAC,KAAyC,KAAI;AAClE,QAAA,IAAI,QAAQ,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;YAAE;;QAEpC,KAAK,CAAC,cAAc,EAAE;QACtB,KAAK,CAAC,aAAa,CAAC,iBAAiB,GAAG,KAAK,CAAC,SAAS,CAAC;AACxD,QAAA,WAAW,CAAC,OAAO,GAAG,IAAI;QAC1B,MAAM,CAAC,KAAK,CAAC;QACb,SAAS,CAAC,IAAI,CAAC;AACjB,IAAA,CAAC;AACD,IAAA,MAAM,aAAa,GAAG,CAAC,KAAyC,KAAI;QAClE,IAAI,WAAW,CAAC,OAAO;YAAE,MAAM,CAAC,KAAK,CAAC;AACxC,IAAA,CAAC;AACD,IAAA,MAAM,OAAO,GAAG,CAAC,KAAyC,KAAI;QAC5D,IAAI,CAAC,WAAW,CAAC,OAAO;YAAE;AAC1B,QAAA,WAAW,CAAC,OAAO,GAAG,KAAK;QAC3B,KAAK,CAAC,aAAa,CAAC,qBAAqB,GAAG,KAAK,CAAC,SAAS,CAAC;AAC5D,QAAA,GAAG,EAAE;AACP,IAAA,CAAC;AAED,IAAA,MAAM,SAAS,GAAG,CAAC,KAA4C,KAAI;AACjE,QAAA,MAAM,EAAE,GAAG,KAAK,CAAC,QAAQ,GAAG,EAAE,GAAG,CAAC;;;AAGlC,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE;AAC/C,QAAA,MAAM,KAAK,GAAqC;AAC9C,YAAA,UAAU,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AACtB,YAAA,SAAS,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;AACtB,YAAA,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;AAChB,YAAA,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;AACnB,YAAA,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;AACf,YAAA,QAAQ,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC;AAClB,YAAA,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACd,YAAA,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;SACb;QACD,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;AAC7B,QAAA,IAAI,CAAC,IAAI;YAAE;QACX,KAAK,CAAC,cAAc,EAAE;AACtB,QAAA,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI;AACrB,QAAA,MAAM,CACJ;AACE,YAAA,GAAG,KAAK;YACR,CAAC,EAAEA,OAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC;YACxB,CAAC,EAAEA,OAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC;SACzB,EACD,IAAI,CACL;AACD,QAAA,MAAM,KAAK,GAAG,EAAE,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG;QAClC,OAAO,CAAC,KAAK,CAAC;QACd,QAAQ,CAAC,IAAI,CAAC;QACd,IAAI,KAAK,KAAK,IAAI;AAAE,YAAA,YAAY,CAAC,OAAO,GAAG,KAAK;AAClD,IAAA,CAAC;;;IAID,MAAM,OAAO,GACX,CAAC,KAAgB,KAAK,CAAC,KAA0C,KAAI;QACnE,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;AACxC,QAAA,MAAM,CACJ,KAAK,KAAK,GAAG,GAAG,EAAE,GAAG,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,EAC/D,IAAI,CACL;AACH,IAAA,CAAC;AAEH,IAAA,MAAM,MAAM,GAAG,CAAC,KAAyC,KAAI;AAC3D,QAAA,MAAM,IAAI,GAAG,KAAK,CAAC,aAAa;QAChC,IAAI,IAAI,KAAK,IAAI,CAAC,OAAO,IAAI,IAAI,KAAK,IAAI,CAAC,OAAO;YAAE,QAAQ,CAAC,KAAK,CAAC;AACrE,IAAA,CAAC;;AAGD,IAAA,MAAM,MAAM,GAAG;AACb,QAAA,IAAI,EAAE,OAAO;AACb,QAAA,SAAS,EAAE,UAAU;AACrB,QAAA,GAAG,EAAE,CAAC;AACN,QAAA,GAAG,EAAE,GAAG;AACR,QAAA,IAAI,EAAE,CAAC;QACP,QAAQ;QACR,YAAY,EAAE,MAAM,CAAC,IAAI;QACzB,sBAAsB,EAAE,MAAM,CAAC,mBAAmB;KAC1C;;;IAGV,MAAM,UAAU,GAAG,CAAC,KAAgB,MAAM,KAAK,IAAI,IAAI,KAAK,KAAK,GAAG,CAAC,GAAG,EAAE,CAAC;IAC3E,MAAM,QAAQ,GAAG,CAAC,KAAgB,KAChC,KAAK,IAAI,KAAK,IAAI,IAAI,KAAK,KAAK,GAAG,SAAS,GAAG,IAAI;AAErD,IAAA,IAAI,CAAC,MAAM;AAAE,QAAA,OAAO,IAAI;AAExB,IAAA,QACEC,GAAA,CAAA,KAAA,EAAA,EACE,GAAG,EAAE,IAAI,IAAI,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,EACxC,SAAS,EAAE,UAAU,CAAC,SAAS,EAAE,kBAAkB,EAAE,SAAS,CAAC,EAC/D,KAAK,EACH;AACE,YAAA,GAAG,KAAK;YACR,oBAAoB,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AACzC,YAAA,oBAAoB,EAAE,WAAW,CAAC,KAAK,CAAC;AACxC,YAAA,gBAAgB,EAAE,CAAA,EAAG,KAAK,CAAC,CAAC,CAAA,CAAA,CAAG;AAC/B,YAAA,gBAAgB,EAAE,CAAA,EAAG,GAAG,GAAG,KAAK,CAAC,CAAC,CAAA,CAAA,CAAG;AACf,SAAA,EAE1B,aAAa,EAAE,aAAa,EAC5B,aAAa,EAAE,aAAa,EAC5B,WAAW,EAAE,OAAO,EACpB,eAAe,EAAE,OAAO,EAAA,GACpB,IAAI,EAAA,QAAA,EAERC,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,UAAU,EAAE,IAAI,EAAC,cAAc,EAAA,QAAA,EAAA,CAC7CD,GAAA,CAAA,OAAA,EAAA,EACE,GAAG,EAAE,IAAI,KACL,MAAM,EACV,KAAK,EAAE,CAAC,EAAA,gBAAA,EACQ,CAAA,EAAG,cAAc,KAAK,cAAc,CAAA,CAAE,EAAA,kBAAA,EACrC,YAAY,EAC7B,QAAQ,EAAE,UAAU,CAAC,GAAG,CAAC,EAAA,aAAA,EACZ,QAAQ,CAAC,GAAG,CAAC,EAC1B,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,EACtB,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,EAC3B,MAAM,EAAE,MAAM,EAAA,CACd,EACFA,GAAA,CAAA,OAAA,EAAA,EACE,GAAG,EAAE,IAAI,EAAA,GACL,MAAM,EACV,KAAK,EAAE,CAAC,EAAA,gBAAA,EACQ,GAAG,cAAc,CAAA,EAAA,EAAK,cAAc,CAAA,CAAE,sBACrC,UAAU,EAC3B,QAAQ,EAAE,UAAU,CAAC,GAAG,CAAC,EAAA,aAAA,EACZ,QAAQ,CAAC,GAAG,CAAC,EAC1B,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,EACtB,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,EAC3B,MAAM,EAAE,MAAM,EAAA,CACd,CAAA,EAAA,CACE,EAAA,CACF;AAEV,CAAC;AAGH,eAAe,CAAC,WAAW,GAAG,kBAAkB;AAwBhD;AACA,MAAM,aAAa,GAAG,UAAU,CAC9B,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,KAAI;AAC/C,IAAA,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,KAAK,KAAK,GAAG,WAAW,GAAG,aAAa,CAAC;AACzE,IAAA,MAAM,IAAI,GAAG,MAAM,IAAI,UAAU;AACjC,IAAA,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,IAAI;IACvE,MAAM,EAAE,kBAAkB,EAAE,IAAI,EAAE,GAAG,eAAe,CAAC,KAAK,CAAC;AAC3D,IAAA,MAAM,OAAO,GAAG,MAAM,CAAwB,IAAI,CAAC;AACnD,IAAA,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC;AAEjC,IAAA,MAAM,KAAK,GAAG,OAAO,KAAK,KAAK;IAC/B,MAAM,GAAG,GAAG,KAAK,GAAG,GAAG,GAAG,GAAG;IAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;AACzD,IAAA,MAAM,SAAS,GAAG,CAAC,IAAY,KAC7B,KAAK,GAAG,EAAE,GAAG,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,KAAK,EAAE,CAAC,EAAE,IAAI,GAAG,GAAG,EAAE;AAE7D,IAAA,MAAM,WAAW,GAAG,qBAAqB,CAAC,cAAc,EAAE;AACxD,QAAA,QAAQ,EAAE,KAAK;QACf,UAAU,EAAE,CAAC,KAAK;AAClB,QAAA,aAAa,EAAE,QAAQ;AACxB,KAAA,CAAC;AACF,IAAA,MAAM,UAAU,GAAG,qBAAqB,CAAC,oBAAoB,CAAC;AAC9D,IAAA,MAAM,UAAU,GAAG,qBAAqB,CAAC,oBAAoB,CAAC;AAC9D,IAAA,MAAM,UAAU,GAAG,qBAAqB,CAAC,oBAAoB,CAAC;AAE9D,IAAA,MAAM,MAAM,GAAG,CAAC,KAAyC,KAAI;AAC3D,QAAA,MAAM,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC;QACjD,MAAM,CAAC,SAAS,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;AAC5B,IAAA,CAAC;AACD,IAAA,MAAM,aAAa,GAAG,CAAC,KAAyC,KAAI;AAClE,QAAA,IAAI,QAAQ,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;YAAE;QACpC,KAAK,CAAC,cAAc,EAAE;QACtB,KAAK,CAAC,aAAa,CAAC,iBAAiB,GAAG,KAAK,CAAC,SAAS,CAAC;AACxD,QAAA,WAAW,CAAC,OAAO,GAAG,IAAI;QAC1B,MAAM,CAAC,KAAK,CAAC;AACb,QAAA,OAAO,CAAC,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;AACzE,IAAA,CAAC;AACD,IAAA,MAAM,aAAa,GAAG,CAAC,KAAyC,KAAI;QAClE,IAAI,WAAW,CAAC,OAAO;YAAE,MAAM,CAAC,KAAK,CAAC;AACxC,IAAA,CAAC;AACD,IAAA,MAAM,OAAO,GAAG,CAAC,KAAyC,KAAI;QAC5D,IAAI,CAAC,WAAW,CAAC,OAAO;YAAE;AAC1B,QAAA,WAAW,CAAC,OAAO,GAAG,KAAK;QAC3B,KAAK,CAAC,aAAa,CAAC,qBAAqB,GAAG,KAAK,CAAC,SAAS,CAAC;AAC5D,QAAA,GAAG,EAAE;AACP,IAAA,CAAC;AAED,IAAA,MAAM,SAAS,GAAG,CAAC,KAA4C,KAAI;AACjE,QAAA,MAAM,EAAE,GAAG,KAAK,CAAC,QAAQ,GAAG,EAAE,GAAG,CAAC;AAClC,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE;AAC/C,QAAA,MAAM,KAAK,GAA2B;AACpC,YAAA,UAAU,EAAE,KAAK;YACjB,SAAS,EAAE,CAAC,KAAK;AACjB,YAAA,OAAO,EAAE,EAAE;YACX,SAAS,EAAE,CAAC,EAAE;AACd,YAAA,MAAM,EAAE,EAAE;YACV,QAAQ,EAAE,GAAG;YACb,IAAI,EAAE,CAAC,GAAG;AACV,YAAA,GAAG,EAAE,GAAG;SACT;QACD,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;QAC7B,IAAI,IAAI,KAAK,SAAS;YAAE;QACxB,KAAK,CAAC,cAAc,EAAE;AACtB,QAAA,MAAM,CAAC,SAAS,CAACD,OAAK,CAAC,KAAK,GAAG,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC;AACtD,IAAA,CAAC;AAED,IAAA,IAAI,CAAC,MAAM;AAAE,QAAA,OAAO,IAAI;AAExB,IAAA,QACEE,IAAA,CAAA,KAAA,EAAA,EACE,GAAG,EAAE,IAAI,IAAI,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,EACxC,SAAS,EAAE,UAAU,CAAC,WAAW,EAAE,kBAAkB,EAAE,SAAS,CAAC,EACjE,KAAK,EACH;AACE,YAAA,GAAG,KAAK;YACR,oBAAoB,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AACzC,YAAA,oBAAoB,EAAE,WAAW,CAAC,KAAK,CAAC;YACxC,yBAAyB,EAAE,GAAG,CAAC,KAAK,GAAG,GAAG,IAAI,GAAG,CAAA,CAAA,CAAG;AAC9B,SAAA,EAE1B,aAAa,EAAE,aAAa,EAC5B,aAAa,EAAE,aAAa,EAC5B,WAAW,EAAE,OAAO,EACpB,eAAe,EAAE,OAAO,EAAA,GACpB,IAAI,EAAA,QAAA,EAAA,CAERD,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,UAAU,EAAA,CAAI,EAC9BA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,UAAU,EAAE,IAAI,EAAC,cAAc,EAAA,QAAA,EAC7CA,GAAA,CAAA,OAAA,EAAA,EACE,IAAI,EAAC,OAAO,EACZ,SAAS,EAAE,UAAU,EACrB,GAAG,EAAE,CAAC,EACN,GAAG,EAAE,GAAG,EACR,IAAI,EAAE,CAAC,EACP,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,QAAQ;;;;AAIlB,oBAAA,QAAQ,EAAE,CAAC,EAAA,YAAA,EACC,KAAK,GAAG,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,KAAK,EAAA,gBAAA,EAC7B,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,EACvD,QAAQ,EAAE,KAAK,IACb,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,EAErD,SAAS,EAAE,SAAS,EAAA,CACpB,EAAA,CACE,CAAA,EAAA,CACF;AAEV,CAAC,CACF;AAED,aAAa,CAAC,WAAW,GAAG,eAAe;AAE3C;;;;;;;AAOG;AACI,MAAM,oBAAoB,GAAG,UAAU,CAG5C,CAAC,KAAK,EAAE,GAAG,KAAKA,GAAA,CAAC,aAAa,EAAA,EAAC,GAAG,EAAE,GAAG,EAAA,GAAM,KAAK,EAAE,OAAO,EAAC,KAAK,EAAA,CAAG;AAEtE,oBAAoB,CAAC,WAAW,GAAG,uBAAuB;AAE1D;;;;;;;AAOG;AACI,MAAM,sBAAsB,GAAG,UAAU,CAG9C,CAAC,KAAK,EAAE,GAAG,KAAKA,GAAA,CAAC,aAAa,EAAA,EAAC,GAAG,EAAE,GAAG,EAAA,GAAM,KAAK,EAAE,OAAO,EAAC,OAAO,EAAA,CAAG;AAExE,sBAAsB,CAAC,WAAW,GAAG,yBAAyB;AAyB9D;AACA,MAAM,YAAY,GAA2B;AAC3C,IAAA,UAAU,EAAE,CAAC;AACb,IAAA,SAAS,EAAE,CAAC;IACZ,SAAS,EAAE,EAAE;IACb,OAAO,EAAE,EAAE;CACZ;AAED;;;;;;;AAOG;MACU,mBAAmB,GAAG,UAAU,CAG3C,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,KAAI;AACxD,IAAA,MAAM,MAAM,GAAG,SAAS,CAAC,UAAU,CAAC;AACpC,IAAA,MAAM,IAAI,GAAG,MAAM,IAAI,UAAU;AACjC,IAAA,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI;IAC/D,MAAM,EAAE,kBAAkB,EAAE,IAAI,EAAE,GAAG,eAAe,CAAC,KAAK,CAAC;AAC3D,IAAA,MAAM,WAAW,GAAG,cAAc,EAAE;AACpC,IAAA,MAAM,UAAU,GAAG,qBAAqB,CAAC,uBAAuB,CAAC;AACjE,IAAA,MAAM,OAAO,GAAG,MAAM,CAAwB,IAAI,CAAC;AAEnD,IAAA,MAAM,KAAK,GAAG,WAAW,IAAI,IAAI,CAAC,QAAQ;IAC1C,MAAM,IAAI,GAAG,OAAO,CAClB,MACE,CAAC,KAAK,KAAK,OAAO,GAAG,cAAc,IAAI,KAAK,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,KAAK,IAC5D,OAAO,KAAK,KAAK,QAAQ,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,KAAK,CACrD,EACH,CAAC,KAAK,CAAC,CACR;;;AAID,IAAA,MAAM,QAAQ,GAAG,MAAM,CAAgC,EAAE,CAAC;AAC1D,IAAA,MAAM,MAAM,GAAG,WAAW,CACxB,CAAC,CAAS,KAAY;QACpB,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;QAChC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI;AAAE,YAAA,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK;QAC5D,OAAO,gBAAgB,CAAC,IAAI;aACzB,gBAAgB,CAAC,sBAAsB;AACvC,aAAA,IAAI,EAAE;AACX,IAAA,CAAC,EACD,CAAC,IAAI,CAAC,CACP;;;;;IAKD,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAW,EAAE,CAAC;;IAEtD,SAAS,CAAC,MAAK;AACb,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC;;QAE1C,WAAW,CAAC,QAAQ,IAClB,QAAQ,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM;AAC/B,YAAA,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC;AAC1C,cAAE;cACA,IAAI,CACT;AACH,IAAA,CAAC,CAAC;IAEF,MAAM,OAAO,GAAG,CAAC,CAAS,KACxB,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;;;IAGtD,MAAM,SAAS,GAAG,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC;IACnD,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;AACtC,QAAA,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;AACzB,QAAA,IAAI,CAAC,MAAM;AAAE,YAAA,OAAO,KAAK;AACzB,QAAA,MAAM,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE;AAClD,QAAA,QACE,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,KAAK,SAAS;AAE9E,IAAA,CAAC,CAAC;IACF,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC;AAC3D,IAAA,MAAM,OAAO,GAAG,OAAO,KAAK,OAAO,IAAI,CAAC,GAAG,OAAO,GAAG,CAAC,CAAC;;AAGvD,IAAA,MAAM,IAAI,GAAG,CAAC,CAAS,KAAI;AACzB,QAAA,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC;AACtB,QAAA,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC;AAC/B,QAAA,IAAI,MAAM;AAAE,YAAA,MAAM,CAAC,eAAe,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC;AAChE,IAAA,CAAC;IAED,MAAM,SAAS,GAAG,CAAC,CAAS,KAAK,CAAC,KAA0B,KAAI;AAC9D,QAAA,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CACvB,OAAO,CAAC,OAA0B,CAAC,gBAAgB,CAClD,gBAAgB,CACjB,CACF;AACD,QAAA,IAAI,IAAwB;AAC5B,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,MAAM;YAAE,IAAI,GAAG,CAAC;AAC7B,aAAA,IAAI,KAAK,CAAC,GAAG,KAAK,KAAK;AAAE,YAAA,IAAI,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC;AAClD,aAAA,IAAI,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;;AAEhC,YAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,KAAK,WAAW,IAAI,KAAK,CAAC,GAAG,KAAK,YAAY;AACxE,YAAA,MAAM,IAAI,GAAG,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC;YACxD,IAAI;AACF,gBAAA,CAAC,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM;QAC1E;QACA,IAAI,IAAI,KAAK,SAAS;YAAE;QACxB,KAAK,CAAC,cAAc,EAAE;AACtB,QAAA,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE;QACtB,IAAI,CAAC,IAAI,CAAC;AACZ,IAAA,CAAC;AAED,IAAA,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;AAAE,QAAA,OAAO,IAAI;IAE7C,QACEA,aACE,GAAG,EAAE,IAAI,IAAI,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,EACxC,SAAS,EAAE,UAAU,CAAC,UAAU,EAAE,kBAAkB,EAAE,SAAS,CAAC,EAChE,IAAI,EAAC,YAAY,EAAA,YAAA,EACL,MAAM,CAAC,QAAQ,EAAA,eAAA,EACZ,QAAQ,IAAI,SAAS,KAChC,IAAI,EAAA,QAAA,EAEP,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,KAAI;AACrB,YAAA,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;AACzB,YAAA,MAAM,SAAS,GAAG,CAAC,KAAK,OAAO;;;;;YAK/B,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC,CAAC,GAAG,CAAC;YAC3C,QACEA,GAAA,CAAA,QAAA,EAAA,EAEE,IAAI,EAAC,QAAQ,EACb,IAAI,EAAC,OAAO,EAAA,cAAA,EACE,SAAS,EAAA,YAAA,EACX,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EACtC,KAAK,EAAE,KAAK,CAAC,KAAK,EAClB,QAAQ,EAAE,CAAC,KAAK,OAAO,GAAG,CAAC,GAAG,EAAE,EAChC,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,kBAAkB,CAAC,WAAW,EAAE,qBAAqB,EAAE;AAChE,oBAAA,YAAY,EAAE,SAAS;AACvB,oBAAA,gBAAgB,EAAE,UAAU;oBAC5B,aAAa,EAAE,CAAC,CAAC,MAAM,IAAI,CAAC,UAAU,IAAI,cAAc,CAAC,MAAM,CAAC;iBACjE,CAAC,EACF,OAAO,EAAE,MAAM,IAAI,CAAC,CAAC,CAAC,EACtB,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,EACvB,OAAO,EAAE,MAAM,UAAU,CAAC,CAAC,CAAC,EAC5B,MAAM,EAAE,MAAM,UAAU,CAAC,IAAI,CAAC,YAE9BA,GAAA,CAAC,WAAW,IACV,GAAG,EAAE,IAAI,IAAG;AACV,wBAAA,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI;AAC5B,oBAAA,CAAC,EACD,KAAK,EAAE,KAAK,CAAC,KAAK,EAAA,aAAA,EACN,MAAM,EAAA,QAAA,EAEjB,SAAS,KACRA,GAAA,CAAC,SAAS,EAAA,EACR,SAAS,EAAE,kBAAkB,CAC3B,WAAW,EACX,yBAAyB,CAC1B,EAAA,CACD,CACH,GACW,EAAA,EAjCT,CAAA,EAAG,KAAK,CAAC,KAAK,CAAA,CAAA,EAAI,CAAC,CAAA,CAAE,CAkCnB;QAEb,CAAC,CAAC,EAAA,CACE;AAEV,CAAC;AAED,mBAAmB,CAAC,WAAW,GAAG,sBAAsB;AAExD;;;AAGG;AACH,MAAM,SAAS,GAAG,CAAC,EAAE,SAAS,EAAyB,MACrDA,aAAK,OAAO,EAAC,WAAW,EAAC,KAAK,EAAC,KAAK,EAAC,MAAM,EAAC,KAAK,iBAAa,MAAM,EAAA,QAAA,EACjE,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,KACvBA,GAAA,CAAA,MAAA,EAAA,EAEE,SAAS,EAAE,IAAI,KAAK,MAAM,GAAG,SAAS,GAAG,SAAS,EAClD,CAAC,EAAC,kBAAkB,EACpB,IAAI,EAAC,MAAM,EACX,MAAM,EAAC,cAAc,EACrB,WAAW,EAAE,IAAI,KAAK,MAAM,GAAG,GAAG,GAAG,CAAC,EACtC,aAAa,EAAC,OAAO,EACrB,cAAc,EAAC,OAAO,EAAA,EAPjB,IAAI,CAQT,CACH,CAAC,EAAA,CACE,CACP;AAoBD;;;;;;;AAOG;AACI,MAAM,gBAAgB,GAAG,UAAU,CAGxC,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,KAAI;AACjC,IAAA,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC;AACjC,IAAA,MAAM,IAAI,GAAG,MAAM,IAAI,UAAU;AACjC,IAAA,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI;IACtD,MAAM,EAAE,kBAAkB,EAAE,IAAI,EAAE,GAAG,eAAe,CAAC,KAAK,CAAC;AAC3D,IAAA,MAAM,QAAQ,GAAG,qBAAqB,CAAC,oBAAoB,CAAC;AAC5D,IAAA,MAAM,YAAY,GAAG,qBAAqB,CAAC,sBAAsB,CAAC;;;IAGlE,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC;IACvD,MAAM,OAAO,GAAG,KAAK,KAAK,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;AACpD,IAAA,MAAM,UAAU,GAAG,qBAAqB,CAAC,OAAO,EAAE;AAChD,QAAA,UAAU,EAAE,IAAI;AAChB,QAAA,WAAW,EAAE,OAAO;AACrB,KAAA,CAAC;IAEF,MAAM,MAAM,GAAG,MAAK;QAClB,IAAI,KAAK,KAAK,IAAI;YAAE;AACpB,QAAA,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC;QAChC,QAAQ,CAAC,IAAI,CAAC;AACd,QAAA,IAAI,MAAM;AAAE,YAAA,MAAM,CAAC,eAAe,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,IAAI,CAAC;AACjE,IAAA,CAAC;AAED,IAAA,MAAM,SAAS,GAAG,CAAC,KAA4C,KAAI;QACjE,IAAI,KAAK,KAAK,IAAI;YAAE;AACpB,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,EAAE;;;YAGzB,KAAK,CAAC,cAAc,EAAE;AACtB,YAAA,IAAI,CAAC,OAAO;AAAE,gBAAA,MAAM,EAAE;QACxB;AAAO,aAAA,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE;;YAEjC,KAAK,CAAC,cAAc,EAAE;YACtB,KAAK,CAAC,eAAe,EAAE;YACvB,QAAQ,CAAC,IAAI,CAAC;QAChB;AACF,IAAA,CAAC;AAED,IAAA,IAAI,CAAC,MAAM;AAAE,QAAA,OAAO,IAAI;IAExB,QACEC,cACE,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,UAAU,CAAC,QAAQ,EAAE,kBAAkB,EAAE,SAAS,CAAC,EAAA,GAC1D,IAAI,EAAA,QAAA,EAAA,CAERD,GAAA,CAAC,WAAW,EAAA,EAAC,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,EAAA,aAAA,EAAc,MAAM,EAAA,CAAG,EACxEA,GAAA,CAAA,OAAA,EAAA,EACE,IAAI,EAAC,MAAM,EACX,SAAS,EAAE,UAAU,EACrB,KAAK,EAAE,KAAK,IAAI,IAAI,EACpB,QAAQ,EAAE,QAAQ,EAAA,YAAA,EACN,MAAM,CAAC,KAAK,EAAA,cAAA,EACV,OAAO,IAAI,SAAS,EAClC,UAAU,EAAE,KAAK,EACjB,YAAY,EAAC,KAAK,EAClB,cAAc,EAAC,KAAK,EACpB,QAAQ,EAAE,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAC/C,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,MAAM,EAAA,CACd,EACFA,IAAC,gBAAgB,EAAA,EAAA,CAAG,CAAA,EAAA,CAChB;AAEV,CAAC;AAED,gBAAgB,CAAC,WAAW,GAAG,mBAAmB;AA8GlD;;;;;;;;;;;;;;AAcG;AACH,MAAM,eAAe,GAAG,UAAU,CAChC,CACE,EACE,SAAS,EACT,KAAK,EACL,SAAS,EACT,UAAU,EACV,UAAU,EACV,OAAO,EACP,YAAY,EACZ,cAAc,EACd,KAAK,EACL,YAAY,EACZ,QAAQ,EACR,WAAW,EACX,MAAM,GAAG,KAAK,EACd,KAAK,GAAG,KAAK,EACb,QAAQ,EACR,UAAU,GAAG,KAAK,EAClB,QAAQ,EAAE,YAAY,EACtB,IAAI,EACJ,IAAI,EACJ,MAAM,EACN,QAAQ,EACR,GAAG,KAAK,EACT,EACD,GAAG,KACD;AACF,IAAA,MAAM,QAAQ,GAAG,mBAAmB,CAAC,YAAY,CAAC;AAClD,IAAA,MAAM,WAAW,GAAG,cAAc,EAAE;AACpC,IAAA,MAAM,aAAa,GAAG,gBAAgB,EAAE;AACxC,IAAA,MAAM,QAAQ,GAAG,eAAe,CAAC,aAAa,EAAE;QAC9C,WAAW;QACX,aAAa;QACb,KAAK;QACL,OAAO;QACP,UAAU;QACV,cAAc;AACf,KAAA,CAAC;AACF,IAAA,MAAM,EAAE,cAAc,EAAE,eAAe,EAAE,GAAG,iBAAiB,CAAC;QAC5D,KAAK;QACL,UAAU;AACV,QAAA,YAAY,EAAE,QAAQ;AACtB,QAAA,WAAW,EAAE,KAAK;AACnB,KAAA,CAAC;IACF,MAAM,EAAE,kBAAkB,EAAE,IAAI,EAAE,GAAG,eAAe,CAAC,KAAK,CAAC;AAC3D,IAAA,MAAM,WAAW,GAAG,qBAAqB,CAAC,cAAc,EAAE;AACxD,QAAA,aAAa,EAAE,QAAQ;AACxB,KAAA,CAAC;AACF,IAAA,MAAM,SAAS,GAAG,qBAAqB,CAAC,MAAM,EAAE;AAC9C,QAAA,CAAC,MAAM,YAAY,CAAA,CAAE,GAAG,CAAC,CAAC,YAAY;AACvC,KAAA,CAAC;IAEF,MAAM,OAAO,GAAG,cAAc,CAAC;QAC7B,KAAK;QACL,YAAY;QACZ,QAAQ;QACR,WAAW;QACX,MAAM;QACN,KAAK;QACL,QAAQ;QACR,QAAQ;QACR,UAAU;QACV,MAAM;AACP,KAAA,CAAC;IAEF,MAAM,MAAM,IACVC,IAAA,CAAA,KAAA,EAAA,EACE,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,UAAU,CAAC,WAAW,EAAE,kBAAkB,EAAE,SAAS,CAAC,EACjE,IAAI,EAAC,OAAO,EAAA,iBAAA,EACK,cAAc,EAAA,GAC3B,IAAI,aAERD,GAAA,CAAC,kBAAkB,CAAC,QAAQ,EAAA,EAAC,KAAK,EAAE,OAAO,YACxC,QAAQ,KACPC,IAAA,CAAAC,QAAA,EAAA,EAAA,QAAA,EAAA,CACEF,GAAA,CAAC,eAAe,EAAA,EAAA,CAAG,EACnBA,GAAA,CAAC,oBAAoB,EAAA,EAAA,CAAG,EACvB,KAAK,IAAIA,GAAA,CAAC,sBAAsB,EAAA,EAAA,CAAG,EACpCA,IAAC,gBAAgB,EAAA,EAAA,CAAG,EACnB,QAAQ,IAAIA,IAAC,mBAAmB,EAAA,EAAA,CAAG,IACnC,CACJ,EAAA,CAC2B,EAC7B,IAAI,KACHA,GAAA,CAAA,OAAA,EAAA,EACE,IAAI,EAAC,QAAQ,EACb,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,OAAO,CAAC,IAAI,EACnB,QAAQ,EAAE,QAAQ,EAAA,CAClB,CACH,CAAA,EAAA,CACG,CACP;IAED,IAAI,OAAO,GAAoB,MAAM;IACrC,IAAI,iBAAiB,CAAC,aAAa,EAAE,EAAE,aAAa,EAAE,CAAC,EAAE;AACvD,QAAA,OAAO,GAAGA,GAAA,CAAC,OAAO,EAAA,EAAA,QAAA,EAAE,OAAO,GAAW;IACxC;AACA,IAAA,MAAM,SAAS,GAAG,OAAO,GAAGA,GAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAE,SAAS,YAAG,OAAO,EAAA,CAAK,GAAG,IAAI;IAEzE,IAAI,QAAQ,EAAE;AACZ,QAAA,QACEC,IAAA,CAAC,KAAK,EAAA,EACJ,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,eAAe,EAC3B,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,cAAc,EAAA,QAAA,EAAA,CAExB,OAAO,EACP,SAAS,CAAA,EAAA,CACJ;IAEZ;AACA,IAAA,QACEA,IAAA,CAAAC,QAAA,EAAA,EAAA,QAAA,EAAA,CACG,OAAO,EACP,SAAS,CAAA,EAAA,CACT;AAEP,CAAC,CACF;AAED,eAAe,CAAC,WAAW,GAAG,aAAa;AAEpC,MAAM,WAAW,GAAG,iBAAiB,CAAC,eAAe,EAAE;AAC5D,IAAA,IAAI,EAAE,eAAe;AACrB,IAAA,SAAS,EAAE,oBAAoB;AAC/B,IAAA,WAAW,EAAE,sBAAsB;AACnC,IAAA,QAAQ,EAAE,mBAAmB;AAC7B,IAAA,KAAK,EAAE,gBAAgB;AACxB,CAAA;;"}
@@ -1,4 +1,5 @@
1
1
  /* @allxsmith/bestax-bulma — AI agents: see AGENTS.md in the package root, or https://bestax.io/llms.txt */
2
+ 'use client';
2
3
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
3
4
  import { createContext, forwardRef, useState, useRef, useCallback, useId, useContext } from 'react';
4
5
  import { usePrefixedClassNames, classNames } from '../helpers/classNames.js';