@allxsmith/bestax-bulma 5.56.0 → 5.57.1

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 (338) hide show
  1. package/README.md +2 -2
  2. package/dist/esm/columns/Column.js +1 -0
  3. package/dist/esm/columns/Column.js.map +1 -1
  4. package/dist/esm/columns/Columns.js +1 -0
  5. package/dist/esm/columns/Columns.js.map +1 -1
  6. package/dist/esm/components/Avatar.js +1 -0
  7. package/dist/esm/components/Avatar.js.map +1 -1
  8. package/dist/esm/components/Avatars.js +1 -0
  9. package/dist/esm/components/Avatars.js.map +1 -1
  10. package/dist/esm/components/Badge.js +1 -0
  11. package/dist/esm/components/Badge.js.map +1 -1
  12. package/dist/esm/components/Breadcrumb.js +1 -0
  13. package/dist/esm/components/Breadcrumb.js.map +1 -1
  14. package/dist/esm/components/Card.js +1 -0
  15. package/dist/esm/components/Card.js.map +1 -1
  16. package/dist/esm/components/Carousel.js +1 -0
  17. package/dist/esm/components/Carousel.js.map +1 -1
  18. package/dist/esm/components/Collapse.js +1 -0
  19. package/dist/esm/components/Collapse.js.map +1 -1
  20. package/dist/esm/components/Collapses.js +1 -0
  21. package/dist/esm/components/Collapses.js.map +1 -1
  22. package/dist/esm/components/Command.js +1 -0
  23. package/dist/esm/components/Command.js.map +1 -1
  24. package/dist/esm/components/ContextMenu.js +1 -0
  25. package/dist/esm/components/ContextMenu.js.map +1 -1
  26. package/dist/esm/components/DataTable.js +1 -0
  27. package/dist/esm/components/DataTable.js.map +1 -1
  28. package/dist/esm/components/Dialog.js +1 -0
  29. package/dist/esm/components/Dialog.js.map +1 -1
  30. package/dist/esm/components/Dropdown.js +5 -1
  31. package/dist/esm/components/Dropdown.js.map +1 -1
  32. package/dist/esm/components/EmptyState.js +1 -0
  33. package/dist/esm/components/EmptyState.js.map +1 -1
  34. package/dist/esm/components/HoverCard.js +1 -0
  35. package/dist/esm/components/HoverCard.js.map +1 -1
  36. package/dist/esm/components/Loading.js +1 -0
  37. package/dist/esm/components/Loading.js.map +1 -1
  38. package/dist/esm/components/Menu.js +1 -0
  39. package/dist/esm/components/Menu.js.map +1 -1
  40. package/dist/esm/components/Message.js +1 -0
  41. package/dist/esm/components/Message.js.map +1 -1
  42. package/dist/esm/components/Modal.js +1 -0
  43. package/dist/esm/components/Modal.js.map +1 -1
  44. package/dist/esm/components/Navbar.js +1 -0
  45. package/dist/esm/components/Navbar.js.map +1 -1
  46. package/dist/esm/components/Pagination.js +1 -0
  47. package/dist/esm/components/Pagination.js.map +1 -1
  48. package/dist/esm/components/Panel.js +1 -0
  49. package/dist/esm/components/Panel.js.map +1 -1
  50. package/dist/esm/components/Popover.js +1 -0
  51. package/dist/esm/components/Popover.js.map +1 -1
  52. package/dist/esm/components/Reveal.js +1 -0
  53. package/dist/esm/components/Reveal.js.map +1 -1
  54. package/dist/esm/components/ScrollArea.js +1 -0
  55. package/dist/esm/components/ScrollArea.js.map +1 -1
  56. package/dist/esm/components/SegmentedControl.js +1 -0
  57. package/dist/esm/components/SegmentedControl.js.map +1 -1
  58. package/dist/esm/components/Sidebar.js +1 -0
  59. package/dist/esm/components/Sidebar.js.map +1 -1
  60. package/dist/esm/components/Steps.js +1 -0
  61. package/dist/esm/components/Steps.js.map +1 -1
  62. package/dist/esm/components/Tabs.js +1 -0
  63. package/dist/esm/components/Tabs.js.map +1 -1
  64. package/dist/esm/components/Timeline.js +1 -0
  65. package/dist/esm/components/Timeline.js.map +1 -1
  66. package/dist/esm/components/Toast.js +1 -0
  67. package/dist/esm/components/Toast.js.map +1 -1
  68. package/dist/esm/components/Tooltip.js +1 -0
  69. package/dist/esm/components/Tooltip.js.map +1 -1
  70. package/dist/esm/components/TreeView.js +1 -0
  71. package/dist/esm/components/TreeView.js.map +1 -1
  72. package/dist/esm/components/collapsesContext.js +1 -0
  73. package/dist/esm/components/collapsesContext.js.map +1 -1
  74. package/dist/esm/components/useDataTable.js +1 -0
  75. package/dist/esm/components/useDataTable.js.map +1 -1
  76. package/dist/esm/elements/Block.js +1 -0
  77. package/dist/esm/elements/Block.js.map +1 -1
  78. package/dist/esm/elements/Box.js +1 -0
  79. package/dist/esm/elements/Box.js.map +1 -1
  80. package/dist/esm/elements/Button.js +1 -0
  81. package/dist/esm/elements/Button.js.map +1 -1
  82. package/dist/esm/elements/Buttons.js +1 -0
  83. package/dist/esm/elements/Buttons.js.map +1 -1
  84. package/dist/esm/elements/Code.js +1 -0
  85. package/dist/esm/elements/Code.js.map +1 -1
  86. package/dist/esm/elements/ColorSwatch.js +1 -0
  87. package/dist/esm/elements/ColorSwatch.js.map +1 -1
  88. package/dist/esm/elements/Content.js +1 -0
  89. package/dist/esm/elements/Content.js.map +1 -1
  90. package/dist/esm/elements/Delete.js +1 -0
  91. package/dist/esm/elements/Delete.js.map +1 -1
  92. package/dist/esm/elements/DescriptionList.js +1 -0
  93. package/dist/esm/elements/DescriptionList.js.map +1 -1
  94. package/dist/esm/elements/Divider.js +1 -0
  95. package/dist/esm/elements/Divider.js.map +1 -1
  96. package/dist/esm/elements/Emphasis.js +1 -0
  97. package/dist/esm/elements/Emphasis.js.map +1 -1
  98. package/dist/esm/elements/Figure.js +1 -0
  99. package/dist/esm/elements/Figure.js.map +1 -1
  100. package/dist/esm/elements/Icon.js +1 -0
  101. package/dist/esm/elements/Icon.js.map +1 -1
  102. package/dist/esm/elements/IconText.js +1 -0
  103. package/dist/esm/elements/IconText.js.map +1 -1
  104. package/dist/esm/elements/Image.js +1 -0
  105. package/dist/esm/elements/Image.js.map +1 -1
  106. package/dist/esm/elements/Kbd.js +1 -0
  107. package/dist/esm/elements/Kbd.js.map +1 -1
  108. package/dist/esm/elements/Link.js +1 -0
  109. package/dist/esm/elements/Link.js.map +1 -1
  110. package/dist/esm/elements/LinkButton.js +1 -0
  111. package/dist/esm/elements/LinkButton.js.map +1 -1
  112. package/dist/esm/elements/ListItem.js +1 -0
  113. package/dist/esm/elements/ListItem.js.map +1 -1
  114. package/dist/esm/elements/Loader.js +1 -0
  115. package/dist/esm/elements/Loader.js.map +1 -1
  116. package/dist/esm/elements/Notification.js +1 -0
  117. package/dist/esm/elements/Notification.js.map +1 -1
  118. package/dist/esm/elements/OrderedList.js +1 -0
  119. package/dist/esm/elements/OrderedList.js.map +1 -1
  120. package/dist/esm/elements/Paragraph.js +1 -0
  121. package/dist/esm/elements/Paragraph.js.map +1 -1
  122. package/dist/esm/elements/Pre.js +1 -0
  123. package/dist/esm/elements/Pre.js.map +1 -1
  124. package/dist/esm/elements/Progress.js +1 -0
  125. package/dist/esm/elements/Progress.js.map +1 -1
  126. package/dist/esm/elements/RingProgress.js +1 -0
  127. package/dist/esm/elements/RingProgress.js.map +1 -1
  128. package/dist/esm/elements/Skeleton.js +1 -0
  129. package/dist/esm/elements/Skeleton.js.map +1 -1
  130. package/dist/esm/elements/Span.js +1 -0
  131. package/dist/esm/elements/Span.js.map +1 -1
  132. package/dist/esm/elements/Strong.js +1 -0
  133. package/dist/esm/elements/Strong.js.map +1 -1
  134. package/dist/esm/elements/SubTitle.js +1 -0
  135. package/dist/esm/elements/SubTitle.js.map +1 -1
  136. package/dist/esm/elements/Table.js +1 -0
  137. package/dist/esm/elements/Table.js.map +1 -1
  138. package/dist/esm/elements/Tag.js +1 -0
  139. package/dist/esm/elements/Tag.js.map +1 -1
  140. package/dist/esm/elements/Tags.js +1 -0
  141. package/dist/esm/elements/Tags.js.map +1 -1
  142. package/dist/esm/elements/Tbody.js +1 -0
  143. package/dist/esm/elements/Tbody.js.map +1 -1
  144. package/dist/esm/elements/Td.js +1 -0
  145. package/dist/esm/elements/Td.js.map +1 -1
  146. package/dist/esm/elements/Tfoot.js +1 -0
  147. package/dist/esm/elements/Tfoot.js.map +1 -1
  148. package/dist/esm/elements/Th.js +1 -0
  149. package/dist/esm/elements/Th.js.map +1 -1
  150. package/dist/esm/elements/Thead.js +1 -0
  151. package/dist/esm/elements/Thead.js.map +1 -1
  152. package/dist/esm/elements/Title.js +1 -0
  153. package/dist/esm/elements/Title.js.map +1 -1
  154. package/dist/esm/elements/ToggleButton.js +1 -0
  155. package/dist/esm/elements/ToggleButton.js.map +1 -1
  156. package/dist/esm/elements/Tr.js +1 -0
  157. package/dist/esm/elements/Tr.js.map +1 -1
  158. package/dist/esm/elements/UnorderedList.js +1 -0
  159. package/dist/esm/elements/UnorderedList.js.map +1 -1
  160. package/dist/esm/elements/iconProps.js +1 -0
  161. package/dist/esm/elements/iconProps.js.map +1 -1
  162. package/dist/esm/form/Autocomplete.js +1 -0
  163. package/dist/esm/form/Autocomplete.js.map +1 -1
  164. package/dist/esm/form/Checkbox.js +1 -0
  165. package/dist/esm/form/Checkbox.js.map +1 -1
  166. package/dist/esm/form/CheckboxCard.js +1 -0
  167. package/dist/esm/form/CheckboxCard.js.map +1 -1
  168. package/dist/esm/form/Checkboxes.js +1 -0
  169. package/dist/esm/form/Checkboxes.js.map +1 -1
  170. package/dist/esm/form/ColorInput.js +1 -0
  171. package/dist/esm/form/ColorInput.js.map +1 -1
  172. package/dist/esm/form/ColorInputBase.js +1 -0
  173. package/dist/esm/form/ColorInputBase.js.map +1 -1
  174. package/dist/esm/form/ColorPicker.js +1 -0
  175. package/dist/esm/form/ColorPicker.js.map +1 -1
  176. package/dist/esm/form/Combobox.js +1 -0
  177. package/dist/esm/form/Combobox.js.map +1 -1
  178. package/dist/esm/form/Control.js +1 -0
  179. package/dist/esm/form/Control.js.map +1 -1
  180. package/dist/esm/form/DateInput.js +1 -0
  181. package/dist/esm/form/DateInput.js.map +1 -1
  182. package/dist/esm/form/DateInputBase.js +1 -0
  183. package/dist/esm/form/DateInputBase.js.map +1 -1
  184. package/dist/esm/form/DateRangeInput.js +1 -0
  185. package/dist/esm/form/DateRangeInput.js.map +1 -1
  186. package/dist/esm/form/DateRangeInputBase.js +1 -0
  187. package/dist/esm/form/DateRangeInputBase.js.map +1 -1
  188. package/dist/esm/form/DateTimeInput.js +1 -0
  189. package/dist/esm/form/DateTimeInput.js.map +1 -1
  190. package/dist/esm/form/DateTimeInputBase.js +1 -0
  191. package/dist/esm/form/DateTimeInputBase.js.map +1 -1
  192. package/dist/esm/form/Dropzone.js +1 -0
  193. package/dist/esm/form/Dropzone.js.map +1 -1
  194. package/dist/esm/form/Field.js +1 -0
  195. package/dist/esm/form/Field.js.map +1 -1
  196. package/dist/esm/form/Fieldset.js +1 -0
  197. package/dist/esm/form/Fieldset.js.map +1 -1
  198. package/dist/esm/form/File.js +1 -0
  199. package/dist/esm/form/File.js.map +1 -1
  200. package/dist/esm/form/FormContext.js +1 -0
  201. package/dist/esm/form/FormContext.js.map +1 -1
  202. package/dist/esm/form/Input.js +1 -0
  203. package/dist/esm/form/Input.js.map +1 -1
  204. package/dist/esm/form/InputBase.js +1 -0
  205. package/dist/esm/form/InputBase.js.map +1 -1
  206. package/dist/esm/form/Numberinput.js +1 -0
  207. package/dist/esm/form/Numberinput.js.map +1 -1
  208. package/dist/esm/form/PinInput.js +1 -0
  209. package/dist/esm/form/PinInput.js.map +1 -1
  210. package/dist/esm/form/Radio.js +1 -0
  211. package/dist/esm/form/Radio.js.map +1 -1
  212. package/dist/esm/form/RadioCard.js +1 -0
  213. package/dist/esm/form/RadioCard.js.map +1 -1
  214. package/dist/esm/form/Radios.js +1 -0
  215. package/dist/esm/form/Radios.js.map +1 -1
  216. package/dist/esm/form/Rate.js +1 -0
  217. package/dist/esm/form/Rate.js.map +1 -1
  218. package/dist/esm/form/Select.js +1 -0
  219. package/dist/esm/form/Select.js.map +1 -1
  220. package/dist/esm/form/SelectBase.js +1 -0
  221. package/dist/esm/form/SelectBase.js.map +1 -1
  222. package/dist/esm/form/Slider.js +1 -0
  223. package/dist/esm/form/Slider.js.map +1 -1
  224. package/dist/esm/form/Switch.js +1 -0
  225. package/dist/esm/form/Switch.js.map +1 -1
  226. package/dist/esm/form/Taginput.js +1 -0
  227. package/dist/esm/form/Taginput.js.map +1 -1
  228. package/dist/esm/form/TextArea.js +1 -0
  229. package/dist/esm/form/TextArea.js.map +1 -1
  230. package/dist/esm/form/TextAreaBase.js +1 -0
  231. package/dist/esm/form/TextAreaBase.js.map +1 -1
  232. package/dist/esm/form/TimeInput.js +1 -0
  233. package/dist/esm/form/TimeInput.js.map +1 -1
  234. package/dist/esm/form/TimeInputBase.js +1 -0
  235. package/dist/esm/form/TimeInputBase.js.map +1 -1
  236. package/dist/esm/form/_colorInternals/EyeDropperButton.js +1 -0
  237. package/dist/esm/form/_colorInternals/EyeDropperButton.js.map +1 -1
  238. package/dist/esm/form/_colorInternals/pickerState.js +1 -0
  239. package/dist/esm/form/_colorInternals/pickerState.js.map +1 -1
  240. package/dist/esm/form/_pickerInternals/Calendar.js +1 -0
  241. package/dist/esm/form/_pickerInternals/Calendar.js.map +1 -1
  242. package/dist/esm/form/_pickerInternals/PickerPopover.js +1 -0
  243. package/dist/esm/form/_pickerInternals/PickerPopover.js.map +1 -1
  244. package/dist/esm/form/_pickerInternals/TimeWheels.js +1 -0
  245. package/dist/esm/form/_pickerInternals/TimeWheels.js.map +1 -1
  246. package/dist/esm/form/_pickerInternals/useLocaleDefaults.js +1 -0
  247. package/dist/esm/form/_pickerInternals/useLocaleDefaults.js.map +1 -1
  248. package/dist/esm/form/_pickerInternals/useNativeMobilePicker.js +1 -0
  249. package/dist/esm/form/_pickerInternals/useNativeMobilePicker.js.map +1 -1
  250. package/dist/esm/form/_pickerInternals/useSegmentedEntry.js +1 -0
  251. package/dist/esm/form/_pickerInternals/useSegmentedEntry.js.map +1 -1
  252. package/dist/esm/form/controlLoading.js +1 -0
  253. package/dist/esm/form/controlLoading.js.map +1 -1
  254. package/dist/esm/form/groupFieldset.js +1 -0
  255. package/dist/esm/form/groupFieldset.js.map +1 -1
  256. package/dist/esm/form/useAutoLabelId.js +1 -0
  257. package/dist/esm/form/useAutoLabelId.js.map +1 -1
  258. package/dist/esm/grid/Cell.js +1 -0
  259. package/dist/esm/grid/Cell.js.map +1 -1
  260. package/dist/esm/grid/Grid.js +1 -0
  261. package/dist/esm/grid/Grid.js.map +1 -1
  262. package/dist/esm/helpers/ClientOnly.js +1 -0
  263. package/dist/esm/helpers/ClientOnly.js.map +1 -1
  264. package/dist/esm/helpers/Config.js +1 -0
  265. package/dist/esm/helpers/Config.js.map +1 -1
  266. package/dist/esm/helpers/LocaleProvider.js +1 -0
  267. package/dist/esm/helpers/LocaleProvider.js.map +1 -1
  268. package/dist/esm/helpers/Theme.js +1 -0
  269. package/dist/esm/helpers/Theme.js.map +1 -1
  270. package/dist/esm/helpers/flattenChildren.js +1 -0
  271. package/dist/esm/helpers/flattenChildren.js.map +1 -1
  272. package/dist/esm/helpers/inertProps.js +1 -0
  273. package/dist/esm/helpers/inertProps.js.map +1 -1
  274. package/dist/esm/helpers/localeFormat.js +1 -0
  275. package/dist/esm/helpers/localeFormat.js.map +1 -1
  276. package/dist/esm/helpers/overlayStack.js +1 -0
  277. package/dist/esm/helpers/overlayStack.js.map +1 -1
  278. package/dist/esm/helpers/portal.js +1 -0
  279. package/dist/esm/helpers/portal.js.map +1 -1
  280. package/dist/esm/helpers/scrollLock.js +1 -0
  281. package/dist/esm/helpers/scrollLock.js.map +1 -1
  282. package/dist/esm/helpers/statusRegion.js +1 -0
  283. package/dist/esm/helpers/statusRegion.js.map +1 -1
  284. package/dist/esm/helpers/typeahead.js +1 -0
  285. package/dist/esm/helpers/typeahead.js.map +1 -1
  286. package/dist/esm/helpers/useAnchoredPosition.js +1 -0
  287. package/dist/esm/helpers/useAnchoredPosition.js.map +1 -1
  288. package/dist/esm/helpers/useBulmaClasses.js +1 -0
  289. package/dist/esm/helpers/useBulmaClasses.js.map +1 -1
  290. package/dist/esm/helpers/useClientLayoutEffect.js +1 -0
  291. package/dist/esm/helpers/useClientLayoutEffect.js.map +1 -1
  292. package/dist/esm/helpers/useColorClasses.js +1 -0
  293. package/dist/esm/helpers/useColorClasses.js.map +1 -1
  294. package/dist/esm/helpers/useComboboxEngine.js +1 -0
  295. package/dist/esm/helpers/useComboboxEngine.js.map +1 -1
  296. package/dist/esm/helpers/useContextMenuTrigger.js +1 -0
  297. package/dist/esm/helpers/useContextMenuTrigger.js.map +1 -1
  298. package/dist/esm/helpers/useFlexboxClasses.js +1 -0
  299. package/dist/esm/helpers/useFlexboxClasses.js.map +1 -1
  300. package/dist/esm/helpers/useFocusTrap.js +1 -0
  301. package/dist/esm/helpers/useFocusTrap.js.map +1 -1
  302. package/dist/esm/helpers/useHoverOpen.js +1 -0
  303. package/dist/esm/helpers/useHoverOpen.js.map +1 -1
  304. package/dist/esm/helpers/useInertSiblings.js +1 -0
  305. package/dist/esm/helpers/useInertSiblings.js.map +1 -1
  306. package/dist/esm/helpers/useIsHydrated.js +1 -0
  307. package/dist/esm/helpers/useIsHydrated.js.map +1 -1
  308. package/dist/esm/helpers/useLatestRef.js +1 -0
  309. package/dist/esm/helpers/useLatestRef.js.map +1 -1
  310. package/dist/esm/helpers/useMenuKeys.js +1 -0
  311. package/dist/esm/helpers/useMenuKeys.js.map +1 -1
  312. package/dist/esm/helpers/useOtherClasses.js +1 -0
  313. package/dist/esm/helpers/useOtherClasses.js.map +1 -1
  314. package/dist/esm/helpers/useSpacingClasses.js +1 -0
  315. package/dist/esm/helpers/useSpacingClasses.js.map +1 -1
  316. package/dist/esm/helpers/useTreeView.js +1 -0
  317. package/dist/esm/helpers/useTreeView.js.map +1 -1
  318. package/dist/esm/helpers/useTypographyClasses.js +1 -0
  319. package/dist/esm/helpers/useTypographyClasses.js.map +1 -1
  320. package/dist/esm/helpers/useVisibilityClasses.js +1 -0
  321. package/dist/esm/helpers/useVisibilityClasses.js.map +1 -1
  322. package/dist/esm/layout/Container.js +1 -0
  323. package/dist/esm/layout/Container.js.map +1 -1
  324. package/dist/esm/layout/Footer.js +1 -0
  325. package/dist/esm/layout/Footer.js.map +1 -1
  326. package/dist/esm/layout/Hero.js +1 -0
  327. package/dist/esm/layout/Hero.js.map +1 -1
  328. package/dist/esm/layout/Level.js +1 -0
  329. package/dist/esm/layout/Level.js.map +1 -1
  330. package/dist/esm/layout/Media.js +1 -0
  331. package/dist/esm/layout/Media.js.map +1 -1
  332. package/dist/esm/layout/Section.js +1 -0
  333. package/dist/esm/layout/Section.js.map +1 -1
  334. package/dist/esm/layout/Splitter.js +1 -0
  335. package/dist/esm/layout/Splitter.js.map +1 -1
  336. package/dist/index.cjs +4 -1
  337. package/dist/index.cjs.map +1 -1
  338. package/package.json +28 -27
@@ -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 { jsx } from 'react/jsx-runtime';
3
4
  import { usePrefixedClassNames, classNames } from '../helpers/classNames.js';
4
5
  import { useBulmaClasses } from '../helpers/useBulmaClasses.js';
@@ -1 +1 @@
1
- {"version":3,"file":"Span.js","sources":["../../../src/elements/Span.tsx"],"sourcesContent":["import React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport {\n useBulmaClasses,\n BulmaClassesProps,\n validColors,\n} from '../helpers/useBulmaClasses';\n\n/**\n * Props for the Span component.\n */\nexport interface SpanProps\n extends\n React.HTMLAttributes<HTMLSpanElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n /** Additional CSS classes to apply. */\n className?: string;\n /** Text color helper. */\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n /** Background color helper. */\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n /** Content to render inside the span. */\n children?: React.ReactNode;\n}\n\n/**\n * The `Span` component renders a styled inline `<span>` element with Bulma helper class integration.\n *\n * @function\n * @param {SpanProps} props - Props for the Span component.\n * @returns {JSX.Element} The rendered span element.\n */\nexport const Span: React.FC<SpanProps> = ({\n className,\n textColor,\n bgColor,\n children,\n ...props\n}) => {\n /**\n * Generates Bulma helper classes and separates out remaining props.\n */\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor,\n backgroundColor: bgColor,\n ...props,\n } as BulmaClassesProps & typeof props);\n\n const bulmaClasses = usePrefixedClassNames();\n const spanClasses = classNames(bulmaClasses, bulmaHelperClasses, className);\n\n return (\n <span className={spanClasses || undefined} {...rest}>\n {children}\n </span>\n );\n};\n"],"names":["_jsx"],"mappings":";;;;;AAyBA;;;;;;AAMG;AACI,MAAM,IAAI,GAAwB,CAAC,EACxC,SAAS,EACT,SAAS,EACT,OAAO,EACP,QAAQ,EACR,GAAG,KAAK,EACT,KAAI;AACH;;AAEG;AACH,IAAA,MAAM,EAAE,kBAAkB,EAAE,IAAI,EAAE,GAAG,eAAe,CAAC;AACnD,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,eAAe,EAAE,OAAO;AACxB,QAAA,GAAG,KAAK;AAC2B,KAAA,CAAC;AAEtC,IAAA,MAAM,YAAY,GAAG,qBAAqB,EAAE;IAC5C,MAAM,WAAW,GAAG,UAAU,CAAC,YAAY,EAAE,kBAAkB,EAAE,SAAS,CAAC;AAE3E,IAAA,QACEA,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAE,WAAW,IAAI,SAAS,EAAA,GAAM,IAAI,EAAA,QAAA,EAChD,QAAQ,EAAA,CACJ;AAEX;;"}
1
+ {"version":3,"file":"Span.js","sources":["../../../src/elements/Span.tsx"],"sourcesContent":["import React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport {\n useBulmaClasses,\n BulmaClassesProps,\n validColors,\n} from '../helpers/useBulmaClasses';\n\n/**\n * Props for the Span component.\n */\nexport interface SpanProps\n extends\n React.HTMLAttributes<HTMLSpanElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n /** Additional CSS classes to apply. */\n className?: string;\n /** Text color helper. */\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n /** Background color helper. */\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n /** Content to render inside the span. */\n children?: React.ReactNode;\n}\n\n/**\n * The `Span` component renders a styled inline `<span>` element with Bulma helper class integration.\n *\n * @function\n * @param {SpanProps} props - Props for the Span component.\n * @returns {JSX.Element} The rendered span element.\n */\nexport const Span: React.FC<SpanProps> = ({\n className,\n textColor,\n bgColor,\n children,\n ...props\n}) => {\n /**\n * Generates Bulma helper classes and separates out remaining props.\n */\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor,\n backgroundColor: bgColor,\n ...props,\n } as BulmaClassesProps & typeof props);\n\n const bulmaClasses = usePrefixedClassNames();\n const spanClasses = classNames(bulmaClasses, bulmaHelperClasses, className);\n\n return (\n <span className={spanClasses || undefined} {...rest}>\n {children}\n </span>\n );\n};\n"],"names":["_jsx"],"mappings":";;;;;;AAyBA;;;;;;AAMG;AACI,MAAM,IAAI,GAAwB,CAAC,EACxC,SAAS,EACT,SAAS,EACT,OAAO,EACP,QAAQ,EACR,GAAG,KAAK,EACT,KAAI;AACH;;AAEG;AACH,IAAA,MAAM,EAAE,kBAAkB,EAAE,IAAI,EAAE,GAAG,eAAe,CAAC;AACnD,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,eAAe,EAAE,OAAO;AACxB,QAAA,GAAG,KAAK;AAC2B,KAAA,CAAC;AAEtC,IAAA,MAAM,YAAY,GAAG,qBAAqB,EAAE;IAC5C,MAAM,WAAW,GAAG,UAAU,CAAC,YAAY,EAAE,kBAAkB,EAAE,SAAS,CAAC;AAE3E,IAAA,QACEA,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAE,WAAW,IAAI,SAAS,EAAA,GAAM,IAAI,EAAA,QAAA,EAChD,QAAQ,EAAA,CACJ;AAEX;;"}
@@ -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 { jsx } from 'react/jsx-runtime';
3
4
  import { usePrefixedClassNames, classNames } from '../helpers/classNames.js';
4
5
  import { useBulmaClasses } from '../helpers/useBulmaClasses.js';
@@ -1 +1 @@
1
- {"version":3,"file":"Strong.js","sources":["../../../src/elements/Strong.tsx"],"sourcesContent":["import React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport {\n useBulmaClasses,\n BulmaClassesProps,\n validColors,\n} from '../helpers/useBulmaClasses';\n\n/**\n * Props for the Strong component.\n */\nexport interface StrongProps\n extends\n React.HTMLAttributes<HTMLElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n /** Additional CSS classes to apply. */\n className?: string;\n /** Text color helper. */\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n /** Background color helper. */\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n /** Content to render inside the strong element. */\n children?: React.ReactNode;\n}\n\n/**\n * The `Strong` component renders a styled `<strong>` element with Bulma helper class integration.\n *\n * @function\n * @param {StrongProps} props - Props for the Strong component.\n * @returns {JSX.Element} The rendered strong element.\n */\nexport const Strong: React.FC<StrongProps> = ({\n className,\n textColor,\n bgColor,\n children,\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor,\n backgroundColor: bgColor,\n ...props,\n } as BulmaClassesProps & typeof props);\n\n const bulmaClasses = usePrefixedClassNames();\n const strongClasses = classNames(bulmaClasses, bulmaHelperClasses, className);\n\n return (\n <strong className={strongClasses || undefined} {...rest}>\n {children}\n </strong>\n );\n};\n"],"names":["_jsx"],"mappings":";;;;;AAyBA;;;;;;AAMG;AACI,MAAM,MAAM,GAA0B,CAAC,EAC5C,SAAS,EACT,SAAS,EACT,OAAO,EACP,QAAQ,EACR,GAAG,KAAK,EACT,KAAI;AACH,IAAA,MAAM,EAAE,kBAAkB,EAAE,IAAI,EAAE,GAAG,eAAe,CAAC;AACnD,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,eAAe,EAAE,OAAO;AACxB,QAAA,GAAG,KAAK;AAC2B,KAAA,CAAC;AAEtC,IAAA,MAAM,YAAY,GAAG,qBAAqB,EAAE;IAC5C,MAAM,aAAa,GAAG,UAAU,CAAC,YAAY,EAAE,kBAAkB,EAAE,SAAS,CAAC;AAE7E,IAAA,QACEA,GAAA,CAAA,QAAA,EAAA,EAAQ,SAAS,EAAE,aAAa,IAAI,SAAS,EAAA,GAAM,IAAI,EAAA,QAAA,EACpD,QAAQ,EAAA,CACF;AAEb;;"}
1
+ {"version":3,"file":"Strong.js","sources":["../../../src/elements/Strong.tsx"],"sourcesContent":["import React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport {\n useBulmaClasses,\n BulmaClassesProps,\n validColors,\n} from '../helpers/useBulmaClasses';\n\n/**\n * Props for the Strong component.\n */\nexport interface StrongProps\n extends\n React.HTMLAttributes<HTMLElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n /** Additional CSS classes to apply. */\n className?: string;\n /** Text color helper. */\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n /** Background color helper. */\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n /** Content to render inside the strong element. */\n children?: React.ReactNode;\n}\n\n/**\n * The `Strong` component renders a styled `<strong>` element with Bulma helper class integration.\n *\n * @function\n * @param {StrongProps} props - Props for the Strong component.\n * @returns {JSX.Element} The rendered strong element.\n */\nexport const Strong: React.FC<StrongProps> = ({\n className,\n textColor,\n bgColor,\n children,\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor,\n backgroundColor: bgColor,\n ...props,\n } as BulmaClassesProps & typeof props);\n\n const bulmaClasses = usePrefixedClassNames();\n const strongClasses = classNames(bulmaClasses, bulmaHelperClasses, className);\n\n return (\n <strong className={strongClasses || undefined} {...rest}>\n {children}\n </strong>\n );\n};\n"],"names":["_jsx"],"mappings":";;;;;;AAyBA;;;;;;AAMG;AACI,MAAM,MAAM,GAA0B,CAAC,EAC5C,SAAS,EACT,SAAS,EACT,OAAO,EACP,QAAQ,EACR,GAAG,KAAK,EACT,KAAI;AACH,IAAA,MAAM,EAAE,kBAAkB,EAAE,IAAI,EAAE,GAAG,eAAe,CAAC;AACnD,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,eAAe,EAAE,OAAO;AACxB,QAAA,GAAG,KAAK;AAC2B,KAAA,CAAC;AAEtC,IAAA,MAAM,YAAY,GAAG,qBAAqB,EAAE;IAC5C,MAAM,aAAa,GAAG,UAAU,CAAC,YAAY,EAAE,kBAAkB,EAAE,SAAS,CAAC;AAE7E,IAAA,QACEA,GAAA,CAAA,QAAA,EAAA,EAAQ,SAAS,EAAE,aAAa,IAAI,SAAS,EAAA,GAAM,IAAI,EAAA,QAAA,EACpD,QAAQ,EAAA,CACF;AAEb;;"}
@@ -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 { jsx } from 'react/jsx-runtime';
3
4
  import { usePrefixedClassNames, classNames } from '../helpers/classNames.js';
4
5
  import { useBulmaClasses } from '../helpers/useBulmaClasses.js';
@@ -1 +1 @@
1
- {"version":3,"file":"SubTitle.js","sources":["../../../src/elements/SubTitle.tsx"],"sourcesContent":["import React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport {\n useBulmaClasses,\n BulmaClassesProps,\n validColors,\n} from '../helpers/useBulmaClasses';\n\nconst validSubTitleSizes = ['1', '2', '3', '4', '5', '6'] as const;\n/**\n * Valid size values for the SubTitle component (Bulma subtitle sizes): `'1'`–`'6'` as a string or number (`3` and `'3'` are equivalent).\n */\nexport type SubTitleSize =\n '1' | '2' | '3' | '4' | '5' | '6' | 1 | 2 | 3 | 4 | 5 | 6;\n\nconst validSubTitleElements = [\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'p',\n] as const;\n/**\n * Valid HTML elements for the SubTitle component.\n */\nexport type SubTitleElement = (typeof validSubTitleElements)[number];\n\n/**\n * Props for the SubTitle component.\n * @extraProp {boolean} [skeleton] - Applies the `is-skeleton` class to the entire component.\n */\nexport interface SubTitleProps\n extends\n Omit<\n React.HTMLAttributes<HTMLHeadingElement | HTMLParagraphElement>,\n 'color'\n >,\n Omit<BulmaClassesProps, 'backgroundColor' | 'color'> {\n /** Additional CSS classes to apply. */\n className?: string;\n /**\n * Size of the subtitle (Bulma sizes `1`-`6`, as a string or number). It\n * also picks the heading level: unless `as` is `p`, `size=\"5\"` renders an\n * `<h5>`, whatever `as` says. For a heading whose level and size differ,\n * set the level with `as` and the size with the `textSize` helper.\n */\n size?: SubTitleSize;\n /**\n * HTML element to render as (`h1`-`h6` or `p`). With neither `as` nor\n * `size` set it's an `<h1>`, so a subtitle that isn't a heading of its own\n * takes `as=\"p\"`. A `size` overrides `as` unless it's `p`, so\n * `as=\"h3\" size=\"5\"` renders an `<h5>`. To keep the level `as` sets, size\n * the subtitle with the `textSize` helper instead.\n */\n as?: SubTitleElement;\n /** Applies the `has-skeleton` class to part of the content. */\n hasSkeleton?: boolean;\n /** Subtitle content. */\n children?: React.ReactNode;\n /** Text color helper. */\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n /** Background color helper. */\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n}\n\n/**\n * The `SubTitle` component renders a Bulma-styled subtitle (secondary heading), supporting sizes `1-6` and rendering as any heading or paragraph element (`h1-h6`, `p`).\n *\n * @function\n * @param {SubTitleProps} props - Props for the SubTitle component.\n * @returns {JSX.Element} The rendered subtitle element.\n * @see {@link https://bulma.io/documentation/elements/title/#subtitle | Bulma Subtitle documentation}\n */\nexport const SubTitle: React.FC<SubTitleProps> = ({\n className,\n size,\n as = 'h1',\n hasSkeleton,\n textColor,\n bgColor,\n children,\n ...props\n}) => {\n /**\n * Generates Bulma helper classes and separates out remaining props.\n */\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor,\n backgroundColor: bgColor,\n ...props,\n });\n\n // Validate 'as' prop at runtime\n const element = validSubTitleElements.includes(as) ? as : 'h1';\n\n // Validate 'size' prop at runtime (numeric sizes normalize to strings)\n const normalized = size == null ? undefined : String(size);\n const validSize =\n normalized && (validSubTitleSizes as readonly string[]).includes(normalized)\n ? (normalized as (typeof validSubTitleSizes)[number])\n : undefined;\n\n const bulmaClasses = usePrefixedClassNames('subtitle', {\n [`is-${validSize}`]: validSize,\n 'has-skeleton': hasSkeleton,\n });\n\n const subTitleClasses = classNames(\n bulmaClasses,\n bulmaHelperClasses,\n className\n );\n\n // Determine the tag based on 'element' and 'validSize'\n const Tag: React.ElementType =\n element === 'p' ? 'p' : validSize ? `h${validSize}` : element;\n\n return (\n <Tag className={subTitleClasses} {...rest}>\n {children}\n </Tag>\n );\n};\n\nexport default SubTitle;\n"],"names":["_jsx"],"mappings":";;;;;AAQA,MAAM,kBAAkB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAU;AAOlE,MAAM,qBAAqB,GAAG;IAC5B,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,GAAG;CACK;AA4CV;;;;;;;AAOG;AACI,MAAM,QAAQ,GAA4B,CAAC,EAChD,SAAS,EACT,IAAI,EACJ,EAAE,GAAG,IAAI,EACT,WAAW,EACX,SAAS,EACT,OAAO,EACP,QAAQ,EACR,GAAG,KAAK,EACT,KAAI;AACH;;AAEG;AACH,IAAA,MAAM,EAAE,kBAAkB,EAAE,IAAI,EAAE,GAAG,eAAe,CAAC;AACnD,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,eAAe,EAAE,OAAO;AACxB,QAAA,GAAG,KAAK;AACT,KAAA,CAAC;;AAGF,IAAA,MAAM,OAAO,GAAG,qBAAqB,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI;;AAG9D,IAAA,MAAM,UAAU,GAAG,IAAI,IAAI,IAAI,GAAG,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC;IAC1D,MAAM,SAAS,GACb,UAAU,IAAK,kBAAwC,CAAC,QAAQ,CAAC,UAAU;AACzE,UAAG;UACD,SAAS;AAEf,IAAA,MAAM,YAAY,GAAG,qBAAqB,CAAC,UAAU,EAAE;AACrD,QAAA,CAAC,CAAA,GAAA,EAAM,SAAS,CAAA,CAAE,GAAG,SAAS;AAC9B,QAAA,cAAc,EAAE,WAAW;AAC5B,KAAA,CAAC;IAEF,MAAM,eAAe,GAAG,UAAU,CAChC,YAAY,EACZ,kBAAkB,EAClB,SAAS,CACV;;IAGD,MAAM,GAAG,GACP,OAAO,KAAK,GAAG,GAAG,GAAG,GAAG,SAAS,GAAG,CAAA,CAAA,EAAI,SAAS,EAAE,GAAG,OAAO;AAE/D,IAAA,QACEA,GAAA,CAAC,GAAG,EAAA,EAAC,SAAS,EAAE,eAAe,EAAA,GAAM,IAAI,EAAA,QAAA,EACtC,QAAQ,EAAA,CACL;AAEV;;"}
1
+ {"version":3,"file":"SubTitle.js","sources":["../../../src/elements/SubTitle.tsx"],"sourcesContent":["import React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport {\n useBulmaClasses,\n BulmaClassesProps,\n validColors,\n} from '../helpers/useBulmaClasses';\n\nconst validSubTitleSizes = ['1', '2', '3', '4', '5', '6'] as const;\n/**\n * Valid size values for the SubTitle component (Bulma subtitle sizes): `'1'`–`'6'` as a string or number (`3` and `'3'` are equivalent).\n */\nexport type SubTitleSize =\n '1' | '2' | '3' | '4' | '5' | '6' | 1 | 2 | 3 | 4 | 5 | 6;\n\nconst validSubTitleElements = [\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'p',\n] as const;\n/**\n * Valid HTML elements for the SubTitle component.\n */\nexport type SubTitleElement = (typeof validSubTitleElements)[number];\n\n/**\n * Props for the SubTitle component.\n * @extraProp {boolean} [skeleton] - Applies the `is-skeleton` class to the entire component.\n */\nexport interface SubTitleProps\n extends\n Omit<\n React.HTMLAttributes<HTMLHeadingElement | HTMLParagraphElement>,\n 'color'\n >,\n Omit<BulmaClassesProps, 'backgroundColor' | 'color'> {\n /** Additional CSS classes to apply. */\n className?: string;\n /**\n * Size of the subtitle (Bulma sizes `1`-`6`, as a string or number). It\n * also picks the heading level: unless `as` is `p`, `size=\"5\"` renders an\n * `<h5>`, whatever `as` says. For a heading whose level and size differ,\n * set the level with `as` and the size with the `textSize` helper.\n */\n size?: SubTitleSize;\n /**\n * HTML element to render as (`h1`-`h6` or `p`). With neither `as` nor\n * `size` set it's an `<h1>`, so a subtitle that isn't a heading of its own\n * takes `as=\"p\"`. A `size` overrides `as` unless it's `p`, so\n * `as=\"h3\" size=\"5\"` renders an `<h5>`. To keep the level `as` sets, size\n * the subtitle with the `textSize` helper instead.\n */\n as?: SubTitleElement;\n /** Applies the `has-skeleton` class to part of the content. */\n hasSkeleton?: boolean;\n /** Subtitle content. */\n children?: React.ReactNode;\n /** Text color helper. */\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n /** Background color helper. */\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n}\n\n/**\n * The `SubTitle` component renders a Bulma-styled subtitle (secondary heading), supporting sizes `1-6` and rendering as any heading or paragraph element (`h1-h6`, `p`).\n *\n * @function\n * @param {SubTitleProps} props - Props for the SubTitle component.\n * @returns {JSX.Element} The rendered subtitle element.\n * @see {@link https://bulma.io/documentation/elements/title/#subtitle | Bulma Subtitle documentation}\n */\nexport const SubTitle: React.FC<SubTitleProps> = ({\n className,\n size,\n as = 'h1',\n hasSkeleton,\n textColor,\n bgColor,\n children,\n ...props\n}) => {\n /**\n * Generates Bulma helper classes and separates out remaining props.\n */\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor,\n backgroundColor: bgColor,\n ...props,\n });\n\n // Validate 'as' prop at runtime\n const element = validSubTitleElements.includes(as) ? as : 'h1';\n\n // Validate 'size' prop at runtime (numeric sizes normalize to strings)\n const normalized = size == null ? undefined : String(size);\n const validSize =\n normalized && (validSubTitleSizes as readonly string[]).includes(normalized)\n ? (normalized as (typeof validSubTitleSizes)[number])\n : undefined;\n\n const bulmaClasses = usePrefixedClassNames('subtitle', {\n [`is-${validSize}`]: validSize,\n 'has-skeleton': hasSkeleton,\n });\n\n const subTitleClasses = classNames(\n bulmaClasses,\n bulmaHelperClasses,\n className\n );\n\n // Determine the tag based on 'element' and 'validSize'\n const Tag: React.ElementType =\n element === 'p' ? 'p' : validSize ? `h${validSize}` : element;\n\n return (\n <Tag className={subTitleClasses} {...rest}>\n {children}\n </Tag>\n );\n};\n\nexport default SubTitle;\n"],"names":["_jsx"],"mappings":";;;;;;AAQA,MAAM,kBAAkB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAU;AAOlE,MAAM,qBAAqB,GAAG;IAC5B,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,GAAG;CACK;AA4CV;;;;;;;AAOG;AACI,MAAM,QAAQ,GAA4B,CAAC,EAChD,SAAS,EACT,IAAI,EACJ,EAAE,GAAG,IAAI,EACT,WAAW,EACX,SAAS,EACT,OAAO,EACP,QAAQ,EACR,GAAG,KAAK,EACT,KAAI;AACH;;AAEG;AACH,IAAA,MAAM,EAAE,kBAAkB,EAAE,IAAI,EAAE,GAAG,eAAe,CAAC;AACnD,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,eAAe,EAAE,OAAO;AACxB,QAAA,GAAG,KAAK;AACT,KAAA,CAAC;;AAGF,IAAA,MAAM,OAAO,GAAG,qBAAqB,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI;;AAG9D,IAAA,MAAM,UAAU,GAAG,IAAI,IAAI,IAAI,GAAG,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC;IAC1D,MAAM,SAAS,GACb,UAAU,IAAK,kBAAwC,CAAC,QAAQ,CAAC,UAAU;AACzE,UAAG;UACD,SAAS;AAEf,IAAA,MAAM,YAAY,GAAG,qBAAqB,CAAC,UAAU,EAAE;AACrD,QAAA,CAAC,CAAA,GAAA,EAAM,SAAS,CAAA,CAAE,GAAG,SAAS;AAC9B,QAAA,cAAc,EAAE,WAAW;AAC5B,KAAA,CAAC;IAEF,MAAM,eAAe,GAAG,UAAU,CAChC,YAAY,EACZ,kBAAkB,EAClB,SAAS,CACV;;IAGD,MAAM,GAAG,GACP,OAAO,KAAK,GAAG,GAAG,GAAG,GAAG,SAAS,GAAG,CAAA,CAAA,EAAI,SAAS,EAAE,GAAG,OAAO;AAE/D,IAAA,QACEA,GAAA,CAAC,GAAG,EAAA,EAAC,SAAS,EAAE,eAAe,EAAA,GAAM,IAAI,EAAA,QAAA,EACtC,QAAQ,EAAA,CACL;AAEV;;"}
@@ -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 { jsx } from 'react/jsx-runtime';
3
4
  import { usePrefixedClassNames, classNames } from '../helpers/classNames.js';
4
5
  import { withSubComponents } from '../helpers/withSubComponents.js';
@@ -1 +1 @@
1
- {"version":3,"file":"Table.js","sources":["../../../src/elements/Table.tsx"],"sourcesContent":["/**\n * @group Table\n */\nimport React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport { withSubComponents } from '../helpers/withSubComponents';\nimport { useBulmaClasses, BulmaClassesProps } from '../helpers/useBulmaClasses';\nimport { Thead } from './Thead';\nimport { Tbody } from './Tbody';\nimport { Tfoot } from './Tfoot';\nimport { Tr } from './Tr';\nimport { Th } from './Th';\nimport { Td } from './Td';\n\n/**\n * Props for the Table component.\n */\nexport interface TableProps\n extends\n Omit<React.TableHTMLAttributes<HTMLTableElement>, 'color'>,\n Omit<BulmaClassesProps, 'backgroundColor'> {\n /** Additional CSS classes to apply. */\n className?: string;\n /** Adds borders to all cells. */\n isBordered?: boolean;\n /** Adds zebra-striping to rows. */\n isStriped?: boolean;\n /** Makes the table more compact by cutting cell padding in half. */\n isNarrow?: boolean;\n /** Adds a hover effect on rows. */\n isHoverable?: boolean;\n /** Makes the table span the full width of its parent. */\n isFullwidth?: boolean;\n /** Makes the table span the full width of its parent. @deprecated Use `isFullwidth` instead — `isFullwidth` wins if both are set. */\n isFullWidth?: boolean;\n /** Makes the table horizontally scrollable on small screens. */\n isResponsive?: boolean;\n /** Table content (should use subcomponents). */\n children?: React.ReactNode;\n}\n\n/**\n * The `Table` component and its subcomponents provide a highly composable, Bulma-styled table system for React.\n *\n * @function\n * @param {TableProps} props - Props for the Table component.\n * @returns {JSX.Element} The rendered table element.\n * @see {@link https://bulma.io/documentation/elements/table/ | Bulma Table documentation}\n */\nconst TableComponent: React.FC<TableProps> = ({\n className,\n isBordered,\n isStriped,\n isNarrow,\n isHoverable,\n isFullwidth,\n isFullWidth,\n isResponsive,\n children,\n ...props\n}) => {\n /**\n * Generates Bulma helper classes and separates out remaining props.\n */\n const { bulmaHelperClasses, rest } = useBulmaClasses({ ...props });\n\n const bulmaClasses = usePrefixedClassNames('table', {\n 'is-bordered': isBordered,\n 'is-striped': isStriped,\n 'is-narrow': isNarrow,\n 'is-hoverable': isHoverable,\n 'is-fullwidth': isFullwidth ?? isFullWidth,\n });\n\n const containerClass = usePrefixedClassNames('table-container');\n const tableClasses = classNames(bulmaClasses, bulmaHelperClasses, className);\n\n const tableElement = (\n <table className={tableClasses} {...rest}>\n {children}\n </table>\n );\n\n if (isResponsive) {\n return <div className={containerClass}>{tableElement}</div>;\n }\n\n return tableElement;\n};\n\nexport const Table = withSubComponents(\n TableComponent,\n {\n Thead,\n Tbody,\n Tfoot,\n Tr,\n Th,\n Td,\n },\n 'Table'\n);\n"],"names":["_jsx"],"mappings":";;;;;;;;;;;;AAyCA;;;;;;;AAOG;AACH,MAAM,cAAc,GAAyB,CAAC,EAC5C,SAAS,EACT,UAAU,EACV,SAAS,EACT,QAAQ,EACR,WAAW,EACX,WAAW,EACX,WAAW,EACX,YAAY,EACZ,QAAQ,EACR,GAAG,KAAK,EACT,KAAI;AACH;;AAEG;AACH,IAAA,MAAM,EAAE,kBAAkB,EAAE,IAAI,EAAE,GAAG,eAAe,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC;AAElE,IAAA,MAAM,YAAY,GAAG,qBAAqB,CAAC,OAAO,EAAE;AAClD,QAAA,aAAa,EAAE,UAAU;AACzB,QAAA,YAAY,EAAE,SAAS;AACvB,QAAA,WAAW,EAAE,QAAQ;AACrB,QAAA,cAAc,EAAE,WAAW;QAC3B,cAAc,EAAE,WAAW,IAAI,WAAW;AAC3C,KAAA,CAAC;AAEF,IAAA,MAAM,cAAc,GAAG,qBAAqB,CAAC,iBAAiB,CAAC;IAC/D,MAAM,YAAY,GAAG,UAAU,CAAC,YAAY,EAAE,kBAAkB,EAAE,SAAS,CAAC;AAE5E,IAAA,MAAM,YAAY,IAChBA,GAAA,CAAA,OAAA,EAAA,EAAO,SAAS,EAAE,YAAY,EAAA,GAAM,IAAI,EAAA,QAAA,EACrC,QAAQ,EAAA,CACH,CACT;IAED,IAAI,YAAY,EAAE;AAChB,QAAA,OAAOA,aAAK,SAAS,EAAE,cAAc,EAAA,QAAA,EAAG,YAAY,GAAO;IAC7D;AAEA,IAAA,OAAO,YAAY;AACrB,CAAC;AAEM,MAAM,KAAK,GAAG,iBAAiB,CACpC,cAAc,EACd;IACE,KAAK;IACL,KAAK;IACL,KAAK;IACL,EAAE;IACF,EAAE;IACF,EAAE;CACH,EACD,OAAO;;"}
1
+ {"version":3,"file":"Table.js","sources":["../../../src/elements/Table.tsx"],"sourcesContent":["/**\n * @group Table\n */\nimport React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport { withSubComponents } from '../helpers/withSubComponents';\nimport { useBulmaClasses, BulmaClassesProps } from '../helpers/useBulmaClasses';\nimport { Thead } from './Thead';\nimport { Tbody } from './Tbody';\nimport { Tfoot } from './Tfoot';\nimport { Tr } from './Tr';\nimport { Th } from './Th';\nimport { Td } from './Td';\n\n/**\n * Props for the Table component.\n */\nexport interface TableProps\n extends\n Omit<React.TableHTMLAttributes<HTMLTableElement>, 'color'>,\n Omit<BulmaClassesProps, 'backgroundColor'> {\n /** Additional CSS classes to apply. */\n className?: string;\n /** Adds borders to all cells. */\n isBordered?: boolean;\n /** Adds zebra-striping to rows. */\n isStriped?: boolean;\n /** Makes the table more compact by cutting cell padding in half. */\n isNarrow?: boolean;\n /** Adds a hover effect on rows. */\n isHoverable?: boolean;\n /** Makes the table span the full width of its parent. */\n isFullwidth?: boolean;\n /** Makes the table span the full width of its parent. @deprecated Use `isFullwidth` instead — `isFullwidth` wins if both are set. */\n isFullWidth?: boolean;\n /** Makes the table horizontally scrollable on small screens. */\n isResponsive?: boolean;\n /** Table content (should use subcomponents). */\n children?: React.ReactNode;\n}\n\n/**\n * The `Table` component and its subcomponents provide a highly composable, Bulma-styled table system for React.\n *\n * @function\n * @param {TableProps} props - Props for the Table component.\n * @returns {JSX.Element} The rendered table element.\n * @see {@link https://bulma.io/documentation/elements/table/ | Bulma Table documentation}\n */\nconst TableComponent: React.FC<TableProps> = ({\n className,\n isBordered,\n isStriped,\n isNarrow,\n isHoverable,\n isFullwidth,\n isFullWidth,\n isResponsive,\n children,\n ...props\n}) => {\n /**\n * Generates Bulma helper classes and separates out remaining props.\n */\n const { bulmaHelperClasses, rest } = useBulmaClasses({ ...props });\n\n const bulmaClasses = usePrefixedClassNames('table', {\n 'is-bordered': isBordered,\n 'is-striped': isStriped,\n 'is-narrow': isNarrow,\n 'is-hoverable': isHoverable,\n 'is-fullwidth': isFullwidth ?? isFullWidth,\n });\n\n const containerClass = usePrefixedClassNames('table-container');\n const tableClasses = classNames(bulmaClasses, bulmaHelperClasses, className);\n\n const tableElement = (\n <table className={tableClasses} {...rest}>\n {children}\n </table>\n );\n\n if (isResponsive) {\n return <div className={containerClass}>{tableElement}</div>;\n }\n\n return tableElement;\n};\n\nexport const Table = withSubComponents(\n TableComponent,\n {\n Thead,\n Tbody,\n Tfoot,\n Tr,\n Th,\n Td,\n },\n 'Table'\n);\n"],"names":["_jsx"],"mappings":";;;;;;;;;;;;;AAyCA;;;;;;;AAOG;AACH,MAAM,cAAc,GAAyB,CAAC,EAC5C,SAAS,EACT,UAAU,EACV,SAAS,EACT,QAAQ,EACR,WAAW,EACX,WAAW,EACX,WAAW,EACX,YAAY,EACZ,QAAQ,EACR,GAAG,KAAK,EACT,KAAI;AACH;;AAEG;AACH,IAAA,MAAM,EAAE,kBAAkB,EAAE,IAAI,EAAE,GAAG,eAAe,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC;AAElE,IAAA,MAAM,YAAY,GAAG,qBAAqB,CAAC,OAAO,EAAE;AAClD,QAAA,aAAa,EAAE,UAAU;AACzB,QAAA,YAAY,EAAE,SAAS;AACvB,QAAA,WAAW,EAAE,QAAQ;AACrB,QAAA,cAAc,EAAE,WAAW;QAC3B,cAAc,EAAE,WAAW,IAAI,WAAW;AAC3C,KAAA,CAAC;AAEF,IAAA,MAAM,cAAc,GAAG,qBAAqB,CAAC,iBAAiB,CAAC;IAC/D,MAAM,YAAY,GAAG,UAAU,CAAC,YAAY,EAAE,kBAAkB,EAAE,SAAS,CAAC;AAE5E,IAAA,MAAM,YAAY,IAChBA,GAAA,CAAA,OAAA,EAAA,EAAO,SAAS,EAAE,YAAY,EAAA,GAAM,IAAI,EAAA,QAAA,EACrC,QAAQ,EAAA,CACH,CACT;IAED,IAAI,YAAY,EAAE;AAChB,QAAA,OAAOA,aAAK,SAAS,EAAE,cAAc,EAAA,QAAA,EAAG,YAAY,GAAO;IAC7D;AAEA,IAAA,OAAO,YAAY;AACrB,CAAC;AAEM,MAAM,KAAK,GAAG,iBAAiB,CACpC,cAAc,EACd;IACE,KAAK;IACL,KAAK;IACL,KAAK;IACL,EAAE;IACF,EAAE;IACF,EAAE;CACH,EACD,OAAO;;"}
@@ -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 { jsx } from 'react/jsx-runtime';
3
4
  import { usePrefixedClassNames, classNames } from '../helpers/classNames.js';
4
5
  import { useBulmaClasses } from '../helpers/useBulmaClasses.js';
@@ -1 +1 @@
1
- {"version":3,"file":"Tag.js","sources":["../../../src/elements/Tag.tsx"],"sourcesContent":["import React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport { useBulmaClasses, BulmaClassesProps } from '../helpers/useBulmaClasses';\nimport { buttonType } from '../helpers/buttonType';\n\nconst validTagColors = [\n 'primary',\n 'link',\n 'info',\n 'success',\n 'warning',\n 'danger',\n 'black',\n 'dark',\n 'light',\n 'white',\n] as const;\n\n/**\n * Valid color values for the Tag component (Bulma tag colors).\n */\nexport type TagColor = (typeof validTagColors)[number];\n\nconst validTagSizes = ['normal', 'medium', 'large'] as const;\n/**\n * Valid size values for the Tag component (Bulma tag sizes).\n */\nexport type TagSize = (typeof validTagSizes)[number];\n\n/**\n * Props for the Tag component.\n */\nexport interface TagProps\n extends\n Omit<React.HTMLAttributes<HTMLSpanElement>, 'color'>,\n Omit<BulmaClassesProps, 'color'> {\n /** Additional CSS classes to apply. */\n className?: string;\n /** Bulma color modifier for the tag. */\n color?: TagColor;\n /** Tag size. */\n size?: TagSize;\n /** Use the light color variant. */\n isLight?: boolean;\n /** Renders a rounded tag. */\n isRounded?: boolean;\n /**\n * Renders a delete-style tag (delete button). The button renders\n * `type=\"button\"`, so it does not submit a form around it, and is named\n * \"Delete tag\" unless you pass an `aria-label`. An empty one, or a spread\n * carrying `'aria-label': undefined`, keeps that name rather than leaving\n * the button unnamed.\n */\n isDelete?: boolean;\n /** Adds hover effect to the tag. */\n isHoverable?: boolean;\n /** Callback for delete tag/button. */\n onDelete?: () => void;\n /** Tag content. */\n children?: React.ReactNode;\n}\n\n/**\n * The `Tag` component renders a Bulma-styled label or badge.\n *\n * @function\n * @param {TagProps} props - Props for the Tag component.\n * @returns {JSX.Element} The rendered tag element.\n * @see {@link https://bulma.io/documentation/elements/tag/ | Bulma Tag documentation}\n */\nexport const Tag: React.FC<TagProps> = ({\n className,\n color,\n size,\n isLight,\n isRounded,\n isDelete,\n isHoverable,\n onDelete,\n children,\n ...props\n}) => {\n /**\n * Generates Bulma helper classes and separates out remaining props.\n */\n const { bulmaHelperClasses, rest } = useBulmaClasses({ ...props });\n\n const bulmaClasses = usePrefixedClassNames('tag', {\n [`is-${color}`]: color && validTagColors.includes(color),\n [`is-${size}`]: size && size !== 'normal' && validTagSizes.includes(size),\n 'is-light': isLight,\n 'is-rounded': isRounded,\n 'is-delete': isDelete,\n 'is-hoverable': isHoverable,\n });\n\n const tagClasses = classNames(bulmaClasses, bulmaHelperClasses, className);\n\n if (isDelete) {\n return (\n <button\n className={tagClasses}\n onClick={onDelete}\n {...rest}\n // After the spread, reading through it: a key the spread carries with\n // no value would otherwise erase the default, leaving a nameless\n // button that submits the form around it. An empty label falls back\n // too: the button is drawn as an icon, so `''` would leave it unnamed.\n // A caller's own value still wins; `buttonType` says more.\n aria-label={rest['aria-label'] || 'Delete tag'}\n type={buttonType((rest as { type?: unknown }).type)}\n />\n );\n }\n\n return (\n <span className={tagClasses} {...rest}>\n {children}\n </span>\n );\n};\n"],"names":["_jsx"],"mappings":";;;;;;AAKA,MAAM,cAAc,GAAG;IACrB,SAAS;IACT,MAAM;IACN,MAAM;IACN,SAAS;IACT,SAAS;IACT,QAAQ;IACR,OAAO;IACP,MAAM;IACN,OAAO;IACP,OAAO;CACC;AAOV,MAAM,aAAa,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAU;AAuC5D;;;;;;;AAOG;AACI,MAAM,GAAG,GAAuB,CAAC,EACtC,SAAS,EACT,KAAK,EACL,IAAI,EACJ,OAAO,EACP,SAAS,EACT,QAAQ,EACR,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,GAAG,KAAK,EACT,KAAI;AACH;;AAEG;AACH,IAAA,MAAM,EAAE,kBAAkB,EAAE,IAAI,EAAE,GAAG,eAAe,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC;AAElE,IAAA,MAAM,YAAY,GAAG,qBAAqB,CAAC,KAAK,EAAE;AAChD,QAAA,CAAC,CAAA,GAAA,EAAM,KAAK,CAAA,CAAE,GAAG,KAAK,IAAI,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC;AACxD,QAAA,CAAC,MAAM,IAAI,CAAA,CAAE,GAAG,IAAI,IAAI,IAAI,KAAK,QAAQ,IAAI,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC;AACzE,QAAA,UAAU,EAAE,OAAO;AACnB,QAAA,YAAY,EAAE,SAAS;AACvB,QAAA,WAAW,EAAE,QAAQ;AACrB,QAAA,cAAc,EAAE,WAAW;AAC5B,KAAA,CAAC;IAEF,MAAM,UAAU,GAAG,UAAU,CAAC,YAAY,EAAE,kBAAkB,EAAE,SAAS,CAAC;IAE1E,IAAI,QAAQ,EAAE;AACZ,QAAA,QACEA,GAAA,CAAA,QAAA,EAAA,EACE,SAAS,EAAE,UAAU,EACrB,OAAO,EAAE,QAAQ,EAAA,GACb,IAAI,EAAA,YAAA,EAMI,IAAI,CAAC,YAAY,CAAC,IAAI,YAAY,EAC9C,IAAI,EAAE,UAAU,CAAE,IAA2B,CAAC,IAAI,CAAC,EAAA,CACnD;IAEN;IAEA,QACEA,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAE,UAAU,EAAA,GAAM,IAAI,EAAA,QAAA,EAClC,QAAQ,EAAA,CACJ;AAEX;;"}
1
+ {"version":3,"file":"Tag.js","sources":["../../../src/elements/Tag.tsx"],"sourcesContent":["import React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport { useBulmaClasses, BulmaClassesProps } from '../helpers/useBulmaClasses';\nimport { buttonType } from '../helpers/buttonType';\n\nconst validTagColors = [\n 'primary',\n 'link',\n 'info',\n 'success',\n 'warning',\n 'danger',\n 'black',\n 'dark',\n 'light',\n 'white',\n] as const;\n\n/**\n * Valid color values for the Tag component (Bulma tag colors).\n */\nexport type TagColor = (typeof validTagColors)[number];\n\nconst validTagSizes = ['normal', 'medium', 'large'] as const;\n/**\n * Valid size values for the Tag component (Bulma tag sizes).\n */\nexport type TagSize = (typeof validTagSizes)[number];\n\n/**\n * Props for the Tag component.\n */\nexport interface TagProps\n extends\n Omit<React.HTMLAttributes<HTMLSpanElement>, 'color'>,\n Omit<BulmaClassesProps, 'color'> {\n /** Additional CSS classes to apply. */\n className?: string;\n /** Bulma color modifier for the tag. */\n color?: TagColor;\n /** Tag size. */\n size?: TagSize;\n /** Use the light color variant. */\n isLight?: boolean;\n /** Renders a rounded tag. */\n isRounded?: boolean;\n /**\n * Renders a delete-style tag (delete button). The button renders\n * `type=\"button\"`, so it does not submit a form around it, and is named\n * \"Delete tag\" unless you pass an `aria-label`. An empty one, or a spread\n * carrying `'aria-label': undefined`, keeps that name rather than leaving\n * the button unnamed.\n */\n isDelete?: boolean;\n /** Adds hover effect to the tag. */\n isHoverable?: boolean;\n /** Callback for delete tag/button. */\n onDelete?: () => void;\n /** Tag content. */\n children?: React.ReactNode;\n}\n\n/**\n * The `Tag` component renders a Bulma-styled label or badge.\n *\n * @function\n * @param {TagProps} props - Props for the Tag component.\n * @returns {JSX.Element} The rendered tag element.\n * @see {@link https://bulma.io/documentation/elements/tag/ | Bulma Tag documentation}\n */\nexport const Tag: React.FC<TagProps> = ({\n className,\n color,\n size,\n isLight,\n isRounded,\n isDelete,\n isHoverable,\n onDelete,\n children,\n ...props\n}) => {\n /**\n * Generates Bulma helper classes and separates out remaining props.\n */\n const { bulmaHelperClasses, rest } = useBulmaClasses({ ...props });\n\n const bulmaClasses = usePrefixedClassNames('tag', {\n [`is-${color}`]: color && validTagColors.includes(color),\n [`is-${size}`]: size && size !== 'normal' && validTagSizes.includes(size),\n 'is-light': isLight,\n 'is-rounded': isRounded,\n 'is-delete': isDelete,\n 'is-hoverable': isHoverable,\n });\n\n const tagClasses = classNames(bulmaClasses, bulmaHelperClasses, className);\n\n if (isDelete) {\n return (\n <button\n className={tagClasses}\n onClick={onDelete}\n {...rest}\n // After the spread, reading through it: a key the spread carries with\n // no value would otherwise erase the default, leaving a nameless\n // button that submits the form around it. An empty label falls back\n // too: the button is drawn as an icon, so `''` would leave it unnamed.\n // A caller's own value still wins; `buttonType` says more.\n aria-label={rest['aria-label'] || 'Delete tag'}\n type={buttonType((rest as { type?: unknown }).type)}\n />\n );\n }\n\n return (\n <span className={tagClasses} {...rest}>\n {children}\n </span>\n );\n};\n"],"names":["_jsx"],"mappings":";;;;;;;AAKA,MAAM,cAAc,GAAG;IACrB,SAAS;IACT,MAAM;IACN,MAAM;IACN,SAAS;IACT,SAAS;IACT,QAAQ;IACR,OAAO;IACP,MAAM;IACN,OAAO;IACP,OAAO;CACC;AAOV,MAAM,aAAa,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAU;AAuC5D;;;;;;;AAOG;AACI,MAAM,GAAG,GAAuB,CAAC,EACtC,SAAS,EACT,KAAK,EACL,IAAI,EACJ,OAAO,EACP,SAAS,EACT,QAAQ,EACR,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,GAAG,KAAK,EACT,KAAI;AACH;;AAEG;AACH,IAAA,MAAM,EAAE,kBAAkB,EAAE,IAAI,EAAE,GAAG,eAAe,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC;AAElE,IAAA,MAAM,YAAY,GAAG,qBAAqB,CAAC,KAAK,EAAE;AAChD,QAAA,CAAC,CAAA,GAAA,EAAM,KAAK,CAAA,CAAE,GAAG,KAAK,IAAI,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC;AACxD,QAAA,CAAC,MAAM,IAAI,CAAA,CAAE,GAAG,IAAI,IAAI,IAAI,KAAK,QAAQ,IAAI,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC;AACzE,QAAA,UAAU,EAAE,OAAO;AACnB,QAAA,YAAY,EAAE,SAAS;AACvB,QAAA,WAAW,EAAE,QAAQ;AACrB,QAAA,cAAc,EAAE,WAAW;AAC5B,KAAA,CAAC;IAEF,MAAM,UAAU,GAAG,UAAU,CAAC,YAAY,EAAE,kBAAkB,EAAE,SAAS,CAAC;IAE1E,IAAI,QAAQ,EAAE;AACZ,QAAA,QACEA,GAAA,CAAA,QAAA,EAAA,EACE,SAAS,EAAE,UAAU,EACrB,OAAO,EAAE,QAAQ,EAAA,GACb,IAAI,EAAA,YAAA,EAMI,IAAI,CAAC,YAAY,CAAC,IAAI,YAAY,EAC9C,IAAI,EAAE,UAAU,CAAE,IAA2B,CAAC,IAAI,CAAC,EAAA,CACnD;IAEN;IAEA,QACEA,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAE,UAAU,EAAA,GAAM,IAAI,EAAA,QAAA,EAClC,QAAQ,EAAA,CACJ;AAEX;;"}
@@ -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 { jsx } from 'react/jsx-runtime';
3
4
  import { usePrefixedClassNames, classNames } from '../helpers/classNames.js';
4
5
  import { withSubComponents } from '../helpers/withSubComponents.js';
@@ -1 +1 @@
1
- {"version":3,"file":"Tags.js","sources":["../../../src/elements/Tags.tsx"],"sourcesContent":["import React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport { withSubComponents } from '../helpers/withSubComponents';\nimport { useBulmaClasses, BulmaClassesProps } from '../helpers/useBulmaClasses';\nimport { Tag } from './Tag';\n\nconst validTagsSizes = ['medium', 'large'] as const;\n/**\n * Valid size values for the Tags component (Bulma tag group sizes).\n */\nexport type TagsSize = (typeof validTagsSizes)[number];\n\n/**\n * Props for the Tags component.\n */\nexport interface TagsProps\n extends\n Omit<React.HTMLAttributes<HTMLDivElement>, 'color'>,\n Omit<BulmaClassesProps, 'backgroundColor' | 'color' | 'size'> {\n /** Additional CSS classes to apply. */\n className?: string;\n /** Group tags together as add-ons (no spacing). */\n hasAddons?: boolean;\n /**\n * No-op retained for backwards compatibility.\n *\n * @deprecated Bulma's `.tags` wraps by default (no shipped `are-multiline`\n * CSS exists for it) — this prop has never had a visual effect and will be\n * removed in the next major version.\n */\n isMultiline?: boolean;\n /** Size of every tag in the group. */\n size?: TagsSize;\n /** Tag elements to render inside the container. */\n children?: React.ReactNode;\n}\n\n/**\n * The `Tags` component groups multiple `Tag` components together in a Bulma-styled container that wraps onto multiple lines by default.\n *\n * @function\n * @param {TagsProps} props - Props for the Tags component.\n * @returns {JSX.Element} The rendered tags container.\n * @see {@link https://bulma.io/documentation/elements/tag/#list-of-tags | Bulma Tags documentation}\n */\nconst TagsComponent: React.FC<TagsProps> = ({\n className,\n hasAddons,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars -- accepted for backwards compatibility, deprecated no-op (no `are-multiline` CSS ships)\n isMultiline,\n size,\n children,\n ...props\n}) => {\n /**\n * Generates Bulma helper classes and separates out remaining props.\n */\n const { bulmaHelperClasses, rest } = useBulmaClasses({ ...props });\n\n const bulmaClasses = usePrefixedClassNames('tags', {\n 'has-addons': hasAddons,\n [`are-${size}`]: size && validTagsSizes.includes(size),\n });\n\n const tagsClasses = classNames(bulmaClasses, bulmaHelperClasses, className);\n\n return (\n <div className={tagsClasses} {...rest}>\n {children}\n </div>\n );\n};\n\nexport const Tags = withSubComponents(TagsComponent, { Tag }, 'Tags');\n"],"names":["_jsx"],"mappings":";;;;;;;AAMA,MAAM,cAAc,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAU;AA+BnD;;;;;;;AAOG;AACH,MAAM,aAAa,GAAwB,CAAC,EAC1C,SAAS,EACT,SAAS;AACT;AACA,WAAW,EACX,IAAI,EACJ,QAAQ,EACR,GAAG,KAAK,EACT,KAAI;AACH;;AAEG;AACH,IAAA,MAAM,EAAE,kBAAkB,EAAE,IAAI,EAAE,GAAG,eAAe,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC;AAElE,IAAA,MAAM,YAAY,GAAG,qBAAqB,CAAC,MAAM,EAAE;AACjD,QAAA,YAAY,EAAE,SAAS;AACvB,QAAA,CAAC,CAAA,IAAA,EAAO,IAAI,CAAA,CAAE,GAAG,IAAI,IAAI,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC;AACvD,KAAA,CAAC;IAEF,MAAM,WAAW,GAAG,UAAU,CAAC,YAAY,EAAE,kBAAkB,EAAE,SAAS,CAAC;IAE3E,QACEA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,WAAW,EAAA,GAAM,IAAI,EAAA,QAAA,EAClC,QAAQ,EAAA,CACL;AAEV,CAAC;AAEM,MAAM,IAAI,GAAG,iBAAiB,CAAC,aAAa,EAAE,EAAE,GAAG,EAAE,EAAE,MAAM;;"}
1
+ {"version":3,"file":"Tags.js","sources":["../../../src/elements/Tags.tsx"],"sourcesContent":["import React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport { withSubComponents } from '../helpers/withSubComponents';\nimport { useBulmaClasses, BulmaClassesProps } from '../helpers/useBulmaClasses';\nimport { Tag } from './Tag';\n\nconst validTagsSizes = ['medium', 'large'] as const;\n/**\n * Valid size values for the Tags component (Bulma tag group sizes).\n */\nexport type TagsSize = (typeof validTagsSizes)[number];\n\n/**\n * Props for the Tags component.\n */\nexport interface TagsProps\n extends\n Omit<React.HTMLAttributes<HTMLDivElement>, 'color'>,\n Omit<BulmaClassesProps, 'backgroundColor' | 'color' | 'size'> {\n /** Additional CSS classes to apply. */\n className?: string;\n /** Group tags together as add-ons (no spacing). */\n hasAddons?: boolean;\n /**\n * No-op retained for backwards compatibility.\n *\n * @deprecated Bulma's `.tags` wraps by default (no shipped `are-multiline`\n * CSS exists for it) — this prop has never had a visual effect and will be\n * removed in the next major version.\n */\n isMultiline?: boolean;\n /** Size of every tag in the group. */\n size?: TagsSize;\n /** Tag elements to render inside the container. */\n children?: React.ReactNode;\n}\n\n/**\n * The `Tags` component groups multiple `Tag` components together in a Bulma-styled container that wraps onto multiple lines by default.\n *\n * @function\n * @param {TagsProps} props - Props for the Tags component.\n * @returns {JSX.Element} The rendered tags container.\n * @see {@link https://bulma.io/documentation/elements/tag/#list-of-tags | Bulma Tags documentation}\n */\nconst TagsComponent: React.FC<TagsProps> = ({\n className,\n hasAddons,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars -- accepted for backwards compatibility, deprecated no-op (no `are-multiline` CSS ships)\n isMultiline,\n size,\n children,\n ...props\n}) => {\n /**\n * Generates Bulma helper classes and separates out remaining props.\n */\n const { bulmaHelperClasses, rest } = useBulmaClasses({ ...props });\n\n const bulmaClasses = usePrefixedClassNames('tags', {\n 'has-addons': hasAddons,\n [`are-${size}`]: size && validTagsSizes.includes(size),\n });\n\n const tagsClasses = classNames(bulmaClasses, bulmaHelperClasses, className);\n\n return (\n <div className={tagsClasses} {...rest}>\n {children}\n </div>\n );\n};\n\nexport const Tags = withSubComponents(TagsComponent, { Tag }, 'Tags');\n"],"names":["_jsx"],"mappings":";;;;;;;;AAMA,MAAM,cAAc,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAU;AA+BnD;;;;;;;AAOG;AACH,MAAM,aAAa,GAAwB,CAAC,EAC1C,SAAS,EACT,SAAS;AACT;AACA,WAAW,EACX,IAAI,EACJ,QAAQ,EACR,GAAG,KAAK,EACT,KAAI;AACH;;AAEG;AACH,IAAA,MAAM,EAAE,kBAAkB,EAAE,IAAI,EAAE,GAAG,eAAe,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC;AAElE,IAAA,MAAM,YAAY,GAAG,qBAAqB,CAAC,MAAM,EAAE;AACjD,QAAA,YAAY,EAAE,SAAS;AACvB,QAAA,CAAC,CAAA,IAAA,EAAO,IAAI,CAAA,CAAE,GAAG,IAAI,IAAI,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC;AACvD,KAAA,CAAC;IAEF,MAAM,WAAW,GAAG,UAAU,CAAC,YAAY,EAAE,kBAAkB,EAAE,SAAS,CAAC;IAE3E,QACEA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,WAAW,EAAA,GAAM,IAAI,EAAA,QAAA,EAClC,QAAQ,EAAA,CACL;AAEV,CAAC;AAEM,MAAM,IAAI,GAAG,iBAAiB,CAAC,aAAa,EAAE,EAAE,GAAG,EAAE,EAAE,MAAM;;"}
@@ -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 { jsx } from 'react/jsx-runtime';
3
4
  import { classNames } from '../helpers/classNames.js';
4
5
  import { useBulmaClasses } from '../helpers/useBulmaClasses.js';
@@ -1 +1 @@
1
- {"version":3,"file":"Tbody.js","sources":["../../../src/elements/Tbody.tsx"],"sourcesContent":["/**\n * @group Table\n */\nimport React from 'react';\nimport classNames from '../helpers/classNames';\nimport { useBulmaClasses, BulmaClassesProps } from '../helpers/useBulmaClasses';\n\n/**\n * Props for the Tbody component.\n */\nexport interface TbodyProps\n extends\n Omit<React.HTMLAttributes<HTMLTableSectionElement>, 'color'>,\n Omit<BulmaClassesProps, 'backgroundColor'> {\n /** Additional CSS classes to apply. */\n className?: string;\n /** Table body content (rows). */\n children?: React.ReactNode;\n}\n\n/**\n * Tbody component for rendering a styled Bulma table body.\n *\n * Supports Bulma helper classes for additional styling.\n *\n * @function\n * @param {TbodyProps} props - Props for the Tbody component.\n * @returns {JSX.Element} The rendered table body element.\n * @see {@link https://bulma.io/documentation/elements/table/#table-body | Bulma Table documentation}\n */\nexport const Tbody: React.FC<TbodyProps> = ({\n className,\n children,\n ...props\n}) => {\n /**\n * Generates Bulma helper classes and separates out remaining props.\n */\n const { bulmaHelperClasses, rest } = useBulmaClasses({ ...props });\n\n const tbodyClasses = classNames(className, bulmaHelperClasses);\n\n return (\n <tbody className={tbodyClasses || undefined} {...rest}>\n {children}\n </tbody>\n );\n};\n"],"names":["_jsx"],"mappings":";;;;;AAoBA;;;;;;;;;AASG;AACI,MAAM,KAAK,GAAyB,CAAC,EAC1C,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,KAAI;AACH;;AAEG;AACH,IAAA,MAAM,EAAE,kBAAkB,EAAE,IAAI,EAAE,GAAG,eAAe,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC;IAElE,MAAM,YAAY,GAAG,UAAU,CAAC,SAAS,EAAE,kBAAkB,CAAC;AAE9D,IAAA,QACEA,GAAA,CAAA,OAAA,EAAA,EAAO,SAAS,EAAE,YAAY,IAAI,SAAS,EAAA,GAAM,IAAI,EAAA,QAAA,EAClD,QAAQ,EAAA,CACH;AAEZ;;"}
1
+ {"version":3,"file":"Tbody.js","sources":["../../../src/elements/Tbody.tsx"],"sourcesContent":["/**\n * @group Table\n */\nimport React from 'react';\nimport classNames from '../helpers/classNames';\nimport { useBulmaClasses, BulmaClassesProps } from '../helpers/useBulmaClasses';\n\n/**\n * Props for the Tbody component.\n */\nexport interface TbodyProps\n extends\n Omit<React.HTMLAttributes<HTMLTableSectionElement>, 'color'>,\n Omit<BulmaClassesProps, 'backgroundColor'> {\n /** Additional CSS classes to apply. */\n className?: string;\n /** Table body content (rows). */\n children?: React.ReactNode;\n}\n\n/**\n * Tbody component for rendering a styled Bulma table body.\n *\n * Supports Bulma helper classes for additional styling.\n *\n * @function\n * @param {TbodyProps} props - Props for the Tbody component.\n * @returns {JSX.Element} The rendered table body element.\n * @see {@link https://bulma.io/documentation/elements/table/#table-body | Bulma Table documentation}\n */\nexport const Tbody: React.FC<TbodyProps> = ({\n className,\n children,\n ...props\n}) => {\n /**\n * Generates Bulma helper classes and separates out remaining props.\n */\n const { bulmaHelperClasses, rest } = useBulmaClasses({ ...props });\n\n const tbodyClasses = classNames(className, bulmaHelperClasses);\n\n return (\n <tbody className={tbodyClasses || undefined} {...rest}>\n {children}\n </tbody>\n );\n};\n"],"names":["_jsx"],"mappings":";;;;;;AAoBA;;;;;;;;;AASG;AACI,MAAM,KAAK,GAAyB,CAAC,EAC1C,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,KAAI;AACH;;AAEG;AACH,IAAA,MAAM,EAAE,kBAAkB,EAAE,IAAI,EAAE,GAAG,eAAe,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC;IAElE,MAAM,YAAY,GAAG,UAAU,CAAC,SAAS,EAAE,kBAAkB,CAAC;AAE9D,IAAA,QACEA,GAAA,CAAA,OAAA,EAAA,EAAO,SAAS,EAAE,YAAY,IAAI,SAAS,EAAA,GAAM,IAAI,EAAA,QAAA,EAClD,QAAQ,EAAA,CACH;AAEZ;;"}
@@ -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 { jsx } from 'react/jsx-runtime';
3
4
  import { usePrefixedClassNames, classNames } from '../helpers/classNames.js';
4
5
  import { useBulmaClasses } from '../helpers/useBulmaClasses.js';
@@ -1 +1 @@
1
- {"version":3,"file":"Td.js","sources":["../../../src/elements/Td.tsx"],"sourcesContent":["/**\n * @group Table\n */\nimport React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport { useBulmaClasses, BulmaClassesProps } from '../helpers/useBulmaClasses';\nimport { TableAlignment, validTableAlignments } from './tableAlignment';\n\n/**\n * The values the table `color` prop accepts, as a readonly tuple.\n *\n * `TableColor` is typed from it, and `Tr`, `Th` and `Td` all take a\n * `TableColor`, so the tuple and those props list the same values. Map over\n * it to build a color picker, or check a value that arrives at runtime before\n * passing it in: the components add no color class for a value outside the\n * tuple.\n *\n * @example\n * import { Tr, Td, validTableColors } from '@allxsmith/bestax-bulma';\n *\n * <Tr>\n * {validTableColors.map(color => (\n * <Td key={color} color={color}>\n * {color}\n * </Td>\n * ))}\n * </Tr>;\n */\nexport const validTableColors = [\n 'primary',\n 'link',\n 'info',\n 'success',\n 'warning',\n 'danger',\n 'black',\n 'dark',\n 'light',\n 'white',\n] as const;\n\n/**\n * The color values `Tr`, `Th` and `Td` accept, typed from `validTableColors`.\n */\nexport type TableColor = (typeof validTableColors)[number];\n\n/**\n * Props for the Td component.\n */\nexport interface TdProps\n extends\n Omit<React.TdHTMLAttributes<HTMLTableCellElement>, 'color'>,\n Omit<BulmaClassesProps, 'backgroundColor' | 'color'> {\n /** Additional CSS classes to apply. */\n className?: string;\n /** Text alignment for the table cell ('left', 'right', 'centered'). */\n isAligned?: TableAlignment;\n /**\n * Shrinks the cell to its content and keeps that on one line (Bulma's\n * `is-narrow`), as for a column of checkboxes or actions. Not the table's\n * own `isNarrow`, which tightens every cell's padding.\n */\n isNarrow?: boolean;\n /** Centers the content vertically (Bulma's `is-vcentered`). Cells sit at the top otherwise. */\n isVcentered?: boolean;\n /** Bulma color modifier for the table cell. */\n color?: TableColor;\n /** Table cell content. */\n children?: React.ReactNode;\n}\n\n/**\n * Td component for rendering a styled Bulma table cell.\n *\n * Supports alignment, narrow and vertically centered cells, Bulma color modifiers, and helper classes for additional styling.\n *\n * @function\n * @param {TdProps} props - Props for the Td component.\n * @returns {JSX.Element} The rendered table cell element.\n * @see {@link https://bulma.io/documentation/elements/table/#table-body | Bulma Table documentation}\n */\nexport const Td: React.FC<TdProps> = ({\n className,\n isAligned,\n isNarrow,\n isVcentered,\n color,\n children,\n ...props\n}) => {\n const bulmaClasses = usePrefixedClassNames('', {\n [`has-text-${isAligned}`]:\n isAligned && validTableAlignments.includes(isAligned),\n [`is-${color}`]: color && validTableColors.includes(color),\n 'is-narrow': isNarrow,\n 'is-vcentered': isVcentered,\n });\n\n /**\n * Generates Bulma helper classes and separates out remaining props.\n */\n const { bulmaHelperClasses, rest } = useBulmaClasses({ ...props });\n\n const tdClasses = classNames(bulmaClasses, className, bulmaHelperClasses);\n\n return (\n <td className={tdClasses || undefined} {...rest}>\n {children}\n </td>\n );\n};\n"],"names":["_jsx"],"mappings":";;;;;;AAQA;;;;;;;;;;;;;;;;;;;AAmBG;AACI,MAAM,gBAAgB,GAAG;IAC9B,SAAS;IACT,MAAM;IACN,MAAM;IACN,SAAS;IACT,SAAS;IACT,QAAQ;IACR,OAAO;IACP,MAAM;IACN,OAAO;IACP,OAAO;;AAiCT;;;;;;;;;AASG;MACU,EAAE,GAAsB,CAAC,EACpC,SAAS,EACT,SAAS,EACT,QAAQ,EACR,WAAW,EACX,KAAK,EACL,QAAQ,EACR,GAAG,KAAK,EACT,KAAI;AACH,IAAA,MAAM,YAAY,GAAG,qBAAqB,CAAC,EAAE,EAAE;AAC7C,QAAA,CAAC,CAAA,SAAA,EAAY,SAAS,CAAA,CAAE,GACtB,SAAS,IAAI,oBAAoB,CAAC,QAAQ,CAAC,SAAS,CAAC;AACvD,QAAA,CAAC,CAAA,GAAA,EAAM,KAAK,CAAA,CAAE,GAAG,KAAK,IAAI,gBAAgB,CAAC,QAAQ,CAAC,KAAK,CAAC;AAC1D,QAAA,WAAW,EAAE,QAAQ;AACrB,QAAA,cAAc,EAAE,WAAW;AAC5B,KAAA,CAAC;AAEF;;AAEG;AACH,IAAA,MAAM,EAAE,kBAAkB,EAAE,IAAI,EAAE,GAAG,eAAe,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC;IAElE,MAAM,SAAS,GAAG,UAAU,CAAC,YAAY,EAAE,SAAS,EAAE,kBAAkB,CAAC;AAEzE,IAAA,QACEA,GAAA,CAAA,IAAA,EAAA,EAAI,SAAS,EAAE,SAAS,IAAI,SAAS,EAAA,GAAM,IAAI,EAAA,QAAA,EAC5C,QAAQ,EAAA,CACN;AAET;;"}
1
+ {"version":3,"file":"Td.js","sources":["../../../src/elements/Td.tsx"],"sourcesContent":["/**\n * @group Table\n */\nimport React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport { useBulmaClasses, BulmaClassesProps } from '../helpers/useBulmaClasses';\nimport { TableAlignment, validTableAlignments } from './tableAlignment';\n\n/**\n * The values the table `color` prop accepts, as a readonly tuple.\n *\n * `TableColor` is typed from it, and `Tr`, `Th` and `Td` all take a\n * `TableColor`, so the tuple and those props list the same values. Map over\n * it to build a color picker, or check a value that arrives at runtime before\n * passing it in: the components add no color class for a value outside the\n * tuple.\n *\n * @example\n * import { Tr, Td, validTableColors } from '@allxsmith/bestax-bulma';\n *\n * <Tr>\n * {validTableColors.map(color => (\n * <Td key={color} color={color}>\n * {color}\n * </Td>\n * ))}\n * </Tr>;\n */\nexport const validTableColors = [\n 'primary',\n 'link',\n 'info',\n 'success',\n 'warning',\n 'danger',\n 'black',\n 'dark',\n 'light',\n 'white',\n] as const;\n\n/**\n * The color values `Tr`, `Th` and `Td` accept, typed from `validTableColors`.\n */\nexport type TableColor = (typeof validTableColors)[number];\n\n/**\n * Props for the Td component.\n */\nexport interface TdProps\n extends\n Omit<React.TdHTMLAttributes<HTMLTableCellElement>, 'color'>,\n Omit<BulmaClassesProps, 'backgroundColor' | 'color'> {\n /** Additional CSS classes to apply. */\n className?: string;\n /** Text alignment for the table cell ('left', 'right', 'centered'). */\n isAligned?: TableAlignment;\n /**\n * Shrinks the cell to its content and keeps that on one line (Bulma's\n * `is-narrow`), as for a column of checkboxes or actions. Not the table's\n * own `isNarrow`, which tightens every cell's padding.\n */\n isNarrow?: boolean;\n /** Centers the content vertically (Bulma's `is-vcentered`). Cells sit at the top otherwise. */\n isVcentered?: boolean;\n /** Bulma color modifier for the table cell. */\n color?: TableColor;\n /** Table cell content. */\n children?: React.ReactNode;\n}\n\n/**\n * Td component for rendering a styled Bulma table cell.\n *\n * Supports alignment, narrow and vertically centered cells, Bulma color modifiers, and helper classes for additional styling.\n *\n * @function\n * @param {TdProps} props - Props for the Td component.\n * @returns {JSX.Element} The rendered table cell element.\n * @see {@link https://bulma.io/documentation/elements/table/#table-body | Bulma Table documentation}\n */\nexport const Td: React.FC<TdProps> = ({\n className,\n isAligned,\n isNarrow,\n isVcentered,\n color,\n children,\n ...props\n}) => {\n const bulmaClasses = usePrefixedClassNames('', {\n [`has-text-${isAligned}`]:\n isAligned && validTableAlignments.includes(isAligned),\n [`is-${color}`]: color && validTableColors.includes(color),\n 'is-narrow': isNarrow,\n 'is-vcentered': isVcentered,\n });\n\n /**\n * Generates Bulma helper classes and separates out remaining props.\n */\n const { bulmaHelperClasses, rest } = useBulmaClasses({ ...props });\n\n const tdClasses = classNames(bulmaClasses, className, bulmaHelperClasses);\n\n return (\n <td className={tdClasses || undefined} {...rest}>\n {children}\n </td>\n );\n};\n"],"names":["_jsx"],"mappings":";;;;;;;AAQA;;;;;;;;;;;;;;;;;;;AAmBG;AACI,MAAM,gBAAgB,GAAG;IAC9B,SAAS;IACT,MAAM;IACN,MAAM;IACN,SAAS;IACT,SAAS;IACT,QAAQ;IACR,OAAO;IACP,MAAM;IACN,OAAO;IACP,OAAO;;AAiCT;;;;;;;;;AASG;MACU,EAAE,GAAsB,CAAC,EACpC,SAAS,EACT,SAAS,EACT,QAAQ,EACR,WAAW,EACX,KAAK,EACL,QAAQ,EACR,GAAG,KAAK,EACT,KAAI;AACH,IAAA,MAAM,YAAY,GAAG,qBAAqB,CAAC,EAAE,EAAE;AAC7C,QAAA,CAAC,CAAA,SAAA,EAAY,SAAS,CAAA,CAAE,GACtB,SAAS,IAAI,oBAAoB,CAAC,QAAQ,CAAC,SAAS,CAAC;AACvD,QAAA,CAAC,CAAA,GAAA,EAAM,KAAK,CAAA,CAAE,GAAG,KAAK,IAAI,gBAAgB,CAAC,QAAQ,CAAC,KAAK,CAAC;AAC1D,QAAA,WAAW,EAAE,QAAQ;AACrB,QAAA,cAAc,EAAE,WAAW;AAC5B,KAAA,CAAC;AAEF;;AAEG;AACH,IAAA,MAAM,EAAE,kBAAkB,EAAE,IAAI,EAAE,GAAG,eAAe,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC;IAElE,MAAM,SAAS,GAAG,UAAU,CAAC,YAAY,EAAE,SAAS,EAAE,kBAAkB,CAAC;AAEzE,IAAA,QACEA,GAAA,CAAA,IAAA,EAAA,EAAI,SAAS,EAAE,SAAS,IAAI,SAAS,EAAA,GAAM,IAAI,EAAA,QAAA,EAC5C,QAAQ,EAAA,CACN;AAET;;"}
@@ -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 { jsx } from 'react/jsx-runtime';
3
4
  import { classNames } from '../helpers/classNames.js';
4
5
  import { useBulmaClasses } from '../helpers/useBulmaClasses.js';
@@ -1 +1 @@
1
- {"version":3,"file":"Tfoot.js","sources":["../../../src/elements/Tfoot.tsx"],"sourcesContent":["/**\n * @group Table\n */\nimport React from 'react';\nimport classNames from '../helpers/classNames';\nimport { useBulmaClasses, BulmaClassesProps } from '../helpers/useBulmaClasses';\n\n/**\n * Props for the Tfoot component.\n */\nexport interface TfootProps\n extends\n Omit<React.HTMLAttributes<HTMLTableSectionElement>, 'color'>,\n Omit<BulmaClassesProps, 'backgroundColor'> {\n /** Additional CSS classes to apply. */\n className?: string;\n /** Table footer content (rows). */\n children?: React.ReactNode;\n}\n\n/**\n * Tfoot component for rendering a styled Bulma table footer.\n *\n * Supports Bulma helper classes for additional styling.\n *\n * @function\n * @param {TfootProps} props - Props for the Tfoot component.\n * @returns {JSX.Element} The rendered table footer element.\n * @see {@link https://bulma.io/documentation/elements/table/#table-footer | Bulma Table documentation}\n */\nexport const Tfoot: React.FC<TfootProps> = ({\n className,\n children,\n ...props\n}) => {\n /**\n * Generates Bulma helper classes and separates out remaining props.\n */\n const { bulmaHelperClasses, rest } = useBulmaClasses({ ...props });\n\n const tfootClasses = classNames(className, bulmaHelperClasses);\n\n return (\n <tfoot className={tfootClasses || undefined} {...rest}>\n {children}\n </tfoot>\n );\n};\n"],"names":["_jsx"],"mappings":";;;;;AAoBA;;;;;;;;;AASG;AACI,MAAM,KAAK,GAAyB,CAAC,EAC1C,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,KAAI;AACH;;AAEG;AACH,IAAA,MAAM,EAAE,kBAAkB,EAAE,IAAI,EAAE,GAAG,eAAe,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC;IAElE,MAAM,YAAY,GAAG,UAAU,CAAC,SAAS,EAAE,kBAAkB,CAAC;AAE9D,IAAA,QACEA,GAAA,CAAA,OAAA,EAAA,EAAO,SAAS,EAAE,YAAY,IAAI,SAAS,EAAA,GAAM,IAAI,EAAA,QAAA,EAClD,QAAQ,EAAA,CACH;AAEZ;;"}
1
+ {"version":3,"file":"Tfoot.js","sources":["../../../src/elements/Tfoot.tsx"],"sourcesContent":["/**\n * @group Table\n */\nimport React from 'react';\nimport classNames from '../helpers/classNames';\nimport { useBulmaClasses, BulmaClassesProps } from '../helpers/useBulmaClasses';\n\n/**\n * Props for the Tfoot component.\n */\nexport interface TfootProps\n extends\n Omit<React.HTMLAttributes<HTMLTableSectionElement>, 'color'>,\n Omit<BulmaClassesProps, 'backgroundColor'> {\n /** Additional CSS classes to apply. */\n className?: string;\n /** Table footer content (rows). */\n children?: React.ReactNode;\n}\n\n/**\n * Tfoot component for rendering a styled Bulma table footer.\n *\n * Supports Bulma helper classes for additional styling.\n *\n * @function\n * @param {TfootProps} props - Props for the Tfoot component.\n * @returns {JSX.Element} The rendered table footer element.\n * @see {@link https://bulma.io/documentation/elements/table/#table-footer | Bulma Table documentation}\n */\nexport const Tfoot: React.FC<TfootProps> = ({\n className,\n children,\n ...props\n}) => {\n /**\n * Generates Bulma helper classes and separates out remaining props.\n */\n const { bulmaHelperClasses, rest } = useBulmaClasses({ ...props });\n\n const tfootClasses = classNames(className, bulmaHelperClasses);\n\n return (\n <tfoot className={tfootClasses || undefined} {...rest}>\n {children}\n </tfoot>\n );\n};\n"],"names":["_jsx"],"mappings":";;;;;;AAoBA;;;;;;;;;AASG;AACI,MAAM,KAAK,GAAyB,CAAC,EAC1C,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,KAAI;AACH;;AAEG;AACH,IAAA,MAAM,EAAE,kBAAkB,EAAE,IAAI,EAAE,GAAG,eAAe,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC;IAElE,MAAM,YAAY,GAAG,UAAU,CAAC,SAAS,EAAE,kBAAkB,CAAC;AAE9D,IAAA,QACEA,GAAA,CAAA,OAAA,EAAA,EAAO,SAAS,EAAE,YAAY,IAAI,SAAS,EAAA,GAAM,IAAI,EAAA,QAAA,EAClD,QAAQ,EAAA,CACH;AAEZ;;"}
@@ -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 { jsx } from 'react/jsx-runtime';
3
4
  import { usePrefixedClassNames, classNames } from '../helpers/classNames.js';
4
5
  import { useBulmaClasses } from '../helpers/useBulmaClasses.js';
@@ -1 +1 @@
1
- {"version":3,"file":"Th.js","sources":["../../../src/elements/Th.tsx"],"sourcesContent":["/**\n * @group Table\n */\nimport React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport { useBulmaClasses, BulmaClassesProps } from '../helpers/useBulmaClasses';\nimport { TableColor, validTableColors } from './Td';\nimport { TableAlignment, validTableAlignments } from './tableAlignment';\n\n/**\n * Props for the Th component.\n */\nexport interface ThProps\n extends\n Omit<React.ThHTMLAttributes<HTMLTableCellElement>, 'color'>,\n Omit<BulmaClassesProps, 'backgroundColor' | 'color'> {\n /** Additional CSS classes to apply. */\n className?: string;\n /** Text alignment for the header cell ('left', 'right', 'centered'). */\n isAligned?: TableAlignment;\n /**\n * Shrinks the cell to its content and keeps that on one line (Bulma's\n * `is-narrow`), as for a column of checkboxes or actions. Not the table's\n * own `isNarrow`, which tightens every cell's padding.\n */\n isNarrow?: boolean;\n /** Centers the content vertically (Bulma's `is-vcentered`). Cells sit at the top otherwise. */\n isVcentered?: boolean;\n /**\n * Width of the header cell (e.g., '100px' or 100), written into its\n * `style`. A `style` passed as well keeps it, and a `width` that `style`\n * sets wins.\n */\n width?: string | number;\n /** Bulma color modifier for the header cell. */\n color?: TableColor;\n /** Table header cell content. */\n children?: React.ReactNode;\n}\n\n/**\n * Th component for rendering a styled Bulma table header cell.\n *\n * Supports alignment, width, narrow and vertically centered cells, and color modifiers.\n *\n * @function\n * @param {ThProps} props - Props for the Th component.\n * @returns {JSX.Element} The rendered table header cell element.\n * @see {@link https://bulma.io/documentation/elements/table/#table-head | Bulma Table documentation}\n */\nexport const Th: React.FC<ThProps> = ({\n className,\n isAligned,\n isNarrow,\n isVcentered,\n width,\n color,\n style,\n children,\n ...props\n}) => {\n const bulmaClasses = usePrefixedClassNames('', {\n [`has-text-${isAligned}`]:\n isAligned && validTableAlignments.includes(isAligned),\n [`is-${color}`]: color && validTableColors.includes(color),\n 'is-narrow': isNarrow,\n 'is-vcentered': isVcentered,\n });\n\n /**\n * Generates Bulma helper classes and separates out remaining props.\n */\n const { bulmaHelperClasses, rest } = useBulmaClasses({ ...props });\n\n const thClasses = classNames(bulmaClasses, className, bulmaHelperClasses);\n\n return (\n <th\n className={thClasses || undefined}\n style={\n // A `width` key the style leaves undefined isn't a width, so the\n // prop's stays.\n width && style?.width === undefined\n ? {\n ...style,\n width: typeof width === 'number' ? `${width}px` : width,\n }\n : style\n }\n {...rest}\n >\n {children}\n </th>\n );\n};\n"],"names":["_jsx"],"mappings":";;;;;;;AAwCA;;;;;;;;;AASG;AACI,MAAM,EAAE,GAAsB,CAAC,EACpC,SAAS,EACT,SAAS,EACT,QAAQ,EACR,WAAW,EACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,QAAQ,EACR,GAAG,KAAK,EACT,KAAI;AACH,IAAA,MAAM,YAAY,GAAG,qBAAqB,CAAC,EAAE,EAAE;AAC7C,QAAA,CAAC,CAAA,SAAA,EAAY,SAAS,CAAA,CAAE,GACtB,SAAS,IAAI,oBAAoB,CAAC,QAAQ,CAAC,SAAS,CAAC;AACvD,QAAA,CAAC,CAAA,GAAA,EAAM,KAAK,CAAA,CAAE,GAAG,KAAK,IAAI,gBAAgB,CAAC,QAAQ,CAAC,KAAK,CAAC;AAC1D,QAAA,WAAW,EAAE,QAAQ;AACrB,QAAA,cAAc,EAAE,WAAW;AAC5B,KAAA,CAAC;AAEF;;AAEG;AACH,IAAA,MAAM,EAAE,kBAAkB,EAAE,IAAI,EAAE,GAAG,eAAe,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC;IAElE,MAAM,SAAS,GAAG,UAAU,CAAC,YAAY,EAAE,SAAS,EAAE,kBAAkB,CAAC;IAEzE,QACEA,YACE,SAAS,EAAE,SAAS,IAAI,SAAS,EACjC,KAAK;;;AAGH,QAAA,KAAK,IAAI,KAAK,EAAE,KAAK,KAAK;AACxB,cAAE;AACE,gBAAA,GAAG,KAAK;AACR,gBAAA,KAAK,EAAE,OAAO,KAAK,KAAK,QAAQ,GAAG,CAAA,EAAG,KAAK,CAAA,EAAA,CAAI,GAAG,KAAK;AACxD;cACD,KAAK,EAAA,GAEP,IAAI,YAEP,QAAQ,EAAA,CACN;AAET;;"}
1
+ {"version":3,"file":"Th.js","sources":["../../../src/elements/Th.tsx"],"sourcesContent":["/**\n * @group Table\n */\nimport React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport { useBulmaClasses, BulmaClassesProps } from '../helpers/useBulmaClasses';\nimport { TableColor, validTableColors } from './Td';\nimport { TableAlignment, validTableAlignments } from './tableAlignment';\n\n/**\n * Props for the Th component.\n */\nexport interface ThProps\n extends\n Omit<React.ThHTMLAttributes<HTMLTableCellElement>, 'color'>,\n Omit<BulmaClassesProps, 'backgroundColor' | 'color'> {\n /** Additional CSS classes to apply. */\n className?: string;\n /** Text alignment for the header cell ('left', 'right', 'centered'). */\n isAligned?: TableAlignment;\n /**\n * Shrinks the cell to its content and keeps that on one line (Bulma's\n * `is-narrow`), as for a column of checkboxes or actions. Not the table's\n * own `isNarrow`, which tightens every cell's padding.\n */\n isNarrow?: boolean;\n /** Centers the content vertically (Bulma's `is-vcentered`). Cells sit at the top otherwise. */\n isVcentered?: boolean;\n /**\n * Width of the header cell (e.g., '100px' or 100), written into its\n * `style`. A `style` passed as well keeps it, and a `width` that `style`\n * sets wins.\n */\n width?: string | number;\n /** Bulma color modifier for the header cell. */\n color?: TableColor;\n /** Table header cell content. */\n children?: React.ReactNode;\n}\n\n/**\n * Th component for rendering a styled Bulma table header cell.\n *\n * Supports alignment, width, narrow and vertically centered cells, and color modifiers.\n *\n * @function\n * @param {ThProps} props - Props for the Th component.\n * @returns {JSX.Element} The rendered table header cell element.\n * @see {@link https://bulma.io/documentation/elements/table/#table-head | Bulma Table documentation}\n */\nexport const Th: React.FC<ThProps> = ({\n className,\n isAligned,\n isNarrow,\n isVcentered,\n width,\n color,\n style,\n children,\n ...props\n}) => {\n const bulmaClasses = usePrefixedClassNames('', {\n [`has-text-${isAligned}`]:\n isAligned && validTableAlignments.includes(isAligned),\n [`is-${color}`]: color && validTableColors.includes(color),\n 'is-narrow': isNarrow,\n 'is-vcentered': isVcentered,\n });\n\n /**\n * Generates Bulma helper classes and separates out remaining props.\n */\n const { bulmaHelperClasses, rest } = useBulmaClasses({ ...props });\n\n const thClasses = classNames(bulmaClasses, className, bulmaHelperClasses);\n\n return (\n <th\n className={thClasses || undefined}\n style={\n // A `width` key the style leaves undefined isn't a width, so the\n // prop's stays.\n width && style?.width === undefined\n ? {\n ...style,\n width: typeof width === 'number' ? `${width}px` : width,\n }\n : style\n }\n {...rest}\n >\n {children}\n </th>\n );\n};\n"],"names":["_jsx"],"mappings":";;;;;;;;AAwCA;;;;;;;;;AASG;AACI,MAAM,EAAE,GAAsB,CAAC,EACpC,SAAS,EACT,SAAS,EACT,QAAQ,EACR,WAAW,EACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,QAAQ,EACR,GAAG,KAAK,EACT,KAAI;AACH,IAAA,MAAM,YAAY,GAAG,qBAAqB,CAAC,EAAE,EAAE;AAC7C,QAAA,CAAC,CAAA,SAAA,EAAY,SAAS,CAAA,CAAE,GACtB,SAAS,IAAI,oBAAoB,CAAC,QAAQ,CAAC,SAAS,CAAC;AACvD,QAAA,CAAC,CAAA,GAAA,EAAM,KAAK,CAAA,CAAE,GAAG,KAAK,IAAI,gBAAgB,CAAC,QAAQ,CAAC,KAAK,CAAC;AAC1D,QAAA,WAAW,EAAE,QAAQ;AACrB,QAAA,cAAc,EAAE,WAAW;AAC5B,KAAA,CAAC;AAEF;;AAEG;AACH,IAAA,MAAM,EAAE,kBAAkB,EAAE,IAAI,EAAE,GAAG,eAAe,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC;IAElE,MAAM,SAAS,GAAG,UAAU,CAAC,YAAY,EAAE,SAAS,EAAE,kBAAkB,CAAC;IAEzE,QACEA,YACE,SAAS,EAAE,SAAS,IAAI,SAAS,EACjC,KAAK;;;AAGH,QAAA,KAAK,IAAI,KAAK,EAAE,KAAK,KAAK;AACxB,cAAE;AACE,gBAAA,GAAG,KAAK;AACR,gBAAA,KAAK,EAAE,OAAO,KAAK,KAAK,QAAQ,GAAG,CAAA,EAAG,KAAK,CAAA,EAAA,CAAI,GAAG,KAAK;AACxD;cACD,KAAK,EAAA,GAEP,IAAI,YAEP,QAAQ,EAAA,CACN;AAET;;"}
@@ -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 { jsx } from 'react/jsx-runtime';
3
4
  import { classNames } from '../helpers/classNames.js';
4
5
  import { useBulmaClasses } from '../helpers/useBulmaClasses.js';
@@ -1 +1 @@
1
- {"version":3,"file":"Thead.js","sources":["../../../src/elements/Thead.tsx"],"sourcesContent":["/**\n * @group Table\n */\nimport React from 'react';\nimport classNames from '../helpers/classNames';\nimport { useBulmaClasses, BulmaClassesProps } from '../helpers/useBulmaClasses';\n\n/**\n * Props for the Thead component.\n */\nexport interface TheadProps\n extends\n Omit<React.HTMLAttributes<HTMLTableSectionElement>, 'color'>,\n Omit<BulmaClassesProps, 'backgroundColor'> {\n /** Additional CSS classes to apply. */\n className?: string;\n /** Table header content (rows). */\n children?: React.ReactNode;\n}\n\n/**\n * Thead component for rendering a styled Bulma table header.\n *\n * Supports Bulma helper classes for additional styling.\n *\n * @function\n * @param {TheadProps} props - Props for the Thead component.\n * @returns {JSX.Element} The rendered table header element.\n * @see {@link https://bulma.io/documentation/elements/table/#table-head | Bulma Table documentation}\n */\nexport const Thead: React.FC<TheadProps> = ({\n className,\n children,\n ...props\n}) => {\n /**\n * Generates Bulma helper classes and separates out remaining props.\n */\n const { bulmaHelperClasses, rest } = useBulmaClasses({ ...props });\n\n const theadClasses = classNames(className, bulmaHelperClasses);\n\n return (\n <thead className={theadClasses || undefined} {...rest}>\n {children}\n </thead>\n );\n};\n"],"names":["_jsx"],"mappings":";;;;;AAoBA;;;;;;;;;AASG;AACI,MAAM,KAAK,GAAyB,CAAC,EAC1C,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,KAAI;AACH;;AAEG;AACH,IAAA,MAAM,EAAE,kBAAkB,EAAE,IAAI,EAAE,GAAG,eAAe,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC;IAElE,MAAM,YAAY,GAAG,UAAU,CAAC,SAAS,EAAE,kBAAkB,CAAC;AAE9D,IAAA,QACEA,GAAA,CAAA,OAAA,EAAA,EAAO,SAAS,EAAE,YAAY,IAAI,SAAS,EAAA,GAAM,IAAI,EAAA,QAAA,EAClD,QAAQ,EAAA,CACH;AAEZ;;"}
1
+ {"version":3,"file":"Thead.js","sources":["../../../src/elements/Thead.tsx"],"sourcesContent":["/**\n * @group Table\n */\nimport React from 'react';\nimport classNames from '../helpers/classNames';\nimport { useBulmaClasses, BulmaClassesProps } from '../helpers/useBulmaClasses';\n\n/**\n * Props for the Thead component.\n */\nexport interface TheadProps\n extends\n Omit<React.HTMLAttributes<HTMLTableSectionElement>, 'color'>,\n Omit<BulmaClassesProps, 'backgroundColor'> {\n /** Additional CSS classes to apply. */\n className?: string;\n /** Table header content (rows). */\n children?: React.ReactNode;\n}\n\n/**\n * Thead component for rendering a styled Bulma table header.\n *\n * Supports Bulma helper classes for additional styling.\n *\n * @function\n * @param {TheadProps} props - Props for the Thead component.\n * @returns {JSX.Element} The rendered table header element.\n * @see {@link https://bulma.io/documentation/elements/table/#table-head | Bulma Table documentation}\n */\nexport const Thead: React.FC<TheadProps> = ({\n className,\n children,\n ...props\n}) => {\n /**\n * Generates Bulma helper classes and separates out remaining props.\n */\n const { bulmaHelperClasses, rest } = useBulmaClasses({ ...props });\n\n const theadClasses = classNames(className, bulmaHelperClasses);\n\n return (\n <thead className={theadClasses || undefined} {...rest}>\n {children}\n </thead>\n );\n};\n"],"names":["_jsx"],"mappings":";;;;;;AAoBA;;;;;;;;;AASG;AACI,MAAM,KAAK,GAAyB,CAAC,EAC1C,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,KAAI;AACH;;AAEG;AACH,IAAA,MAAM,EAAE,kBAAkB,EAAE,IAAI,EAAE,GAAG,eAAe,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC;IAElE,MAAM,YAAY,GAAG,UAAU,CAAC,SAAS,EAAE,kBAAkB,CAAC;AAE9D,IAAA,QACEA,GAAA,CAAA,OAAA,EAAA,EAAO,SAAS,EAAE,YAAY,IAAI,SAAS,EAAA,GAAM,IAAI,EAAA,QAAA,EAClD,QAAQ,EAAA,CACH;AAEZ;;"}
@@ -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 { jsx } from 'react/jsx-runtime';
3
4
  import { usePrefixedClassNames, classNames } from '../helpers/classNames.js';
4
5
  import { useBulmaClasses } from '../helpers/useBulmaClasses.js';
@@ -1 +1 @@
1
- {"version":3,"file":"Title.js","sources":["../../../src/elements/Title.tsx"],"sourcesContent":["import React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport {\n useBulmaClasses,\n BulmaClassesProps,\n validColors,\n} from '../helpers/useBulmaClasses';\n\nconst validTitleSizes = ['1', '2', '3', '4', '5', '6'] as const;\n/**\n * Valid size values for the Title component (Bulma title sizes): `'1'`–`'6'` as a string or number (`3` and `'3'` are equivalent).\n */\nexport type TitleSize =\n '1' | '2' | '3' | '4' | '5' | '6' | 1 | 2 | 3 | 4 | 5 | 6;\n\nconst validTitleElements = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'p'] as const;\n/**\n * Valid HTML elements for the Title component.\n */\nexport type TitleElement = (typeof validTitleElements)[number];\n\n/**\n * Props for the Title component.\n * @extraProp {boolean} [skeleton] - Applies the `is-skeleton` class to the entire component.\n */\nexport interface TitleProps\n extends\n Omit<\n React.HTMLAttributes<HTMLHeadingElement | HTMLParagraphElement>,\n 'color'\n >,\n Omit<BulmaClassesProps, 'backgroundColor' | 'color'> {\n /** Additional CSS classes to apply. */\n className?: string;\n /**\n * Size of the title (Bulma sizes `1`-`6`, as a string or number). It also\n * picks the heading level: unless `as` is `p`, `size=\"4\"` renders an\n * `<h4>`, whatever `as` says. For a heading whose level and size differ,\n * set the level with `as` and the size with the `textSize` helper.\n */\n size?: TitleSize;\n /** Adds margin below the title. */\n isSpaced?: boolean;\n /**\n * HTML element to render as (`h1`-`h6` or `p`). A `size` overrides it\n * unless it's `p`, so `as=\"h2\" size=\"4\"` renders an `<h4>`. To keep the\n * level `as` sets, size the title with the `textSize` helper instead.\n */\n as?: TitleElement;\n /** Applies the `has-skeleton` class to part of the content. */\n hasSkeleton?: boolean;\n /** Title content. */\n children?: React.ReactNode;\n /** Text color helper. */\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n /** Background color helper. */\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n}\n\n/**\n * The `Title` component renders a Bulma-styled title (heading), supporting sizes `1`-`6`, spacing, and rendering as any heading or paragraph element (`h1`-`h6`, `p`).\n *\n * @function\n * @param {TitleProps} props - Props for the Title component.\n * @returns {JSX.Element} The rendered title element.\n * @see {@link https://bulma.io/documentation/elements/title/ | Bulma Title documentation}\n */\nexport const Title: React.FC<TitleProps> = ({\n className,\n size,\n isSpaced,\n as = 'h1',\n hasSkeleton,\n textColor,\n bgColor,\n children,\n ...props\n}) => {\n /**\n * Generates Bulma helper classes and separates out remaining props.\n */\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor,\n backgroundColor: bgColor,\n ...props,\n });\n\n // Validate 'as' prop at runtime\n const element = validTitleElements.includes(as) ? as : 'h1';\n\n // Validate 'size' prop at runtime (numeric sizes normalize to strings)\n const normalized = size == null ? undefined : String(size);\n const validSize =\n normalized && (validTitleSizes as readonly string[]).includes(normalized)\n ? (normalized as (typeof validTitleSizes)[number])\n : undefined;\n\n const bulmaClasses = usePrefixedClassNames('title', {\n [`is-${validSize}`]: validSize,\n 'is-spaced': isSpaced,\n 'has-skeleton': hasSkeleton,\n });\n\n const titleClasses = classNames(bulmaClasses, bulmaHelperClasses, className);\n\n // Determine the tag based on 'element' and 'validSize'\n const Tag: React.ElementType =\n element === 'p' ? 'p' : validSize ? `h${validSize}` : element;\n\n return (\n <Tag className={titleClasses} {...rest}>\n {children}\n </Tag>\n );\n};\n\nexport default Title;\n"],"names":["_jsx"],"mappings":";;;;;AAQA,MAAM,eAAe,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAU;AAO/D,MAAM,kBAAkB,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAU;AA4C7E;;;;;;;AAOG;AACI,MAAM,KAAK,GAAyB,CAAC,EAC1C,SAAS,EACT,IAAI,EACJ,QAAQ,EACR,EAAE,GAAG,IAAI,EACT,WAAW,EACX,SAAS,EACT,OAAO,EACP,QAAQ,EACR,GAAG,KAAK,EACT,KAAI;AACH;;AAEG;AACH,IAAA,MAAM,EAAE,kBAAkB,EAAE,IAAI,EAAE,GAAG,eAAe,CAAC;AACnD,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,eAAe,EAAE,OAAO;AACxB,QAAA,GAAG,KAAK;AACT,KAAA,CAAC;;AAGF,IAAA,MAAM,OAAO,GAAG,kBAAkB,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI;;AAG3D,IAAA,MAAM,UAAU,GAAG,IAAI,IAAI,IAAI,GAAG,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC;IAC1D,MAAM,SAAS,GACb,UAAU,IAAK,eAAqC,CAAC,QAAQ,CAAC,UAAU;AACtE,UAAG;UACD,SAAS;AAEf,IAAA,MAAM,YAAY,GAAG,qBAAqB,CAAC,OAAO,EAAE;AAClD,QAAA,CAAC,CAAA,GAAA,EAAM,SAAS,CAAA,CAAE,GAAG,SAAS;AAC9B,QAAA,WAAW,EAAE,QAAQ;AACrB,QAAA,cAAc,EAAE,WAAW;AAC5B,KAAA,CAAC;IAEF,MAAM,YAAY,GAAG,UAAU,CAAC,YAAY,EAAE,kBAAkB,EAAE,SAAS,CAAC;;IAG5E,MAAM,GAAG,GACP,OAAO,KAAK,GAAG,GAAG,GAAG,GAAG,SAAS,GAAG,CAAA,CAAA,EAAI,SAAS,EAAE,GAAG,OAAO;AAE/D,IAAA,QACEA,GAAA,CAAC,GAAG,EAAA,EAAC,SAAS,EAAE,YAAY,EAAA,GAAM,IAAI,EAAA,QAAA,EACnC,QAAQ,EAAA,CACL;AAEV;;"}
1
+ {"version":3,"file":"Title.js","sources":["../../../src/elements/Title.tsx"],"sourcesContent":["import React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport {\n useBulmaClasses,\n BulmaClassesProps,\n validColors,\n} from '../helpers/useBulmaClasses';\n\nconst validTitleSizes = ['1', '2', '3', '4', '5', '6'] as const;\n/**\n * Valid size values for the Title component (Bulma title sizes): `'1'`–`'6'` as a string or number (`3` and `'3'` are equivalent).\n */\nexport type TitleSize =\n '1' | '2' | '3' | '4' | '5' | '6' | 1 | 2 | 3 | 4 | 5 | 6;\n\nconst validTitleElements = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'p'] as const;\n/**\n * Valid HTML elements for the Title component.\n */\nexport type TitleElement = (typeof validTitleElements)[number];\n\n/**\n * Props for the Title component.\n * @extraProp {boolean} [skeleton] - Applies the `is-skeleton` class to the entire component.\n */\nexport interface TitleProps\n extends\n Omit<\n React.HTMLAttributes<HTMLHeadingElement | HTMLParagraphElement>,\n 'color'\n >,\n Omit<BulmaClassesProps, 'backgroundColor' | 'color'> {\n /** Additional CSS classes to apply. */\n className?: string;\n /**\n * Size of the title (Bulma sizes `1`-`6`, as a string or number). It also\n * picks the heading level: unless `as` is `p`, `size=\"4\"` renders an\n * `<h4>`, whatever `as` says. For a heading whose level and size differ,\n * set the level with `as` and the size with the `textSize` helper.\n */\n size?: TitleSize;\n /** Adds margin below the title. */\n isSpaced?: boolean;\n /**\n * HTML element to render as (`h1`-`h6` or `p`). A `size` overrides it\n * unless it's `p`, so `as=\"h2\" size=\"4\"` renders an `<h4>`. To keep the\n * level `as` sets, size the title with the `textSize` helper instead.\n */\n as?: TitleElement;\n /** Applies the `has-skeleton` class to part of the content. */\n hasSkeleton?: boolean;\n /** Title content. */\n children?: React.ReactNode;\n /** Text color helper. */\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n /** Background color helper. */\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n}\n\n/**\n * The `Title` component renders a Bulma-styled title (heading), supporting sizes `1`-`6`, spacing, and rendering as any heading or paragraph element (`h1`-`h6`, `p`).\n *\n * @function\n * @param {TitleProps} props - Props for the Title component.\n * @returns {JSX.Element} The rendered title element.\n * @see {@link https://bulma.io/documentation/elements/title/ | Bulma Title documentation}\n */\nexport const Title: React.FC<TitleProps> = ({\n className,\n size,\n isSpaced,\n as = 'h1',\n hasSkeleton,\n textColor,\n bgColor,\n children,\n ...props\n}) => {\n /**\n * Generates Bulma helper classes and separates out remaining props.\n */\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor,\n backgroundColor: bgColor,\n ...props,\n });\n\n // Validate 'as' prop at runtime\n const element = validTitleElements.includes(as) ? as : 'h1';\n\n // Validate 'size' prop at runtime (numeric sizes normalize to strings)\n const normalized = size == null ? undefined : String(size);\n const validSize =\n normalized && (validTitleSizes as readonly string[]).includes(normalized)\n ? (normalized as (typeof validTitleSizes)[number])\n : undefined;\n\n const bulmaClasses = usePrefixedClassNames('title', {\n [`is-${validSize}`]: validSize,\n 'is-spaced': isSpaced,\n 'has-skeleton': hasSkeleton,\n });\n\n const titleClasses = classNames(bulmaClasses, bulmaHelperClasses, className);\n\n // Determine the tag based on 'element' and 'validSize'\n const Tag: React.ElementType =\n element === 'p' ? 'p' : validSize ? `h${validSize}` : element;\n\n return (\n <Tag className={titleClasses} {...rest}>\n {children}\n </Tag>\n );\n};\n\nexport default Title;\n"],"names":["_jsx"],"mappings":";;;;;;AAQA,MAAM,eAAe,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAU;AAO/D,MAAM,kBAAkB,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAU;AA4C7E;;;;;;;AAOG;AACI,MAAM,KAAK,GAAyB,CAAC,EAC1C,SAAS,EACT,IAAI,EACJ,QAAQ,EACR,EAAE,GAAG,IAAI,EACT,WAAW,EACX,SAAS,EACT,OAAO,EACP,QAAQ,EACR,GAAG,KAAK,EACT,KAAI;AACH;;AAEG;AACH,IAAA,MAAM,EAAE,kBAAkB,EAAE,IAAI,EAAE,GAAG,eAAe,CAAC;AACnD,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,eAAe,EAAE,OAAO;AACxB,QAAA,GAAG,KAAK;AACT,KAAA,CAAC;;AAGF,IAAA,MAAM,OAAO,GAAG,kBAAkB,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI;;AAG3D,IAAA,MAAM,UAAU,GAAG,IAAI,IAAI,IAAI,GAAG,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC;IAC1D,MAAM,SAAS,GACb,UAAU,IAAK,eAAqC,CAAC,QAAQ,CAAC,UAAU;AACtE,UAAG;UACD,SAAS;AAEf,IAAA,MAAM,YAAY,GAAG,qBAAqB,CAAC,OAAO,EAAE;AAClD,QAAA,CAAC,CAAA,GAAA,EAAM,SAAS,CAAA,CAAE,GAAG,SAAS;AAC9B,QAAA,WAAW,EAAE,QAAQ;AACrB,QAAA,cAAc,EAAE,WAAW;AAC5B,KAAA,CAAC;IAEF,MAAM,YAAY,GAAG,UAAU,CAAC,YAAY,EAAE,kBAAkB,EAAE,SAAS,CAAC;;IAG5E,MAAM,GAAG,GACP,OAAO,KAAK,GAAG,GAAG,GAAG,GAAG,SAAS,GAAG,CAAA,CAAA,EAAI,SAAS,EAAE,GAAG,OAAO;AAE/D,IAAA,QACEA,GAAA,CAAC,GAAG,EAAA,EAAC,SAAS,EAAE,YAAY,EAAA,GAAM,IAAI,EAAA,QAAA,EACnC,QAAQ,EAAA,CACL;AAEV;;"}
@@ -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 { jsx } from 'react/jsx-runtime';
3
4
  import { forwardRef, useState } from 'react';
4
5
  import { Button } from './Button.js';
@@ -1 +1 @@
1
- {"version":3,"file":"ToggleButton.js","sources":["../../../src/elements/ToggleButton.tsx"],"sourcesContent":["import React, { forwardRef, useState } from 'react';\nimport { Button, type ButtonOwnProps } from './Button';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\n\n// Spelled out rather than as an `Exclude` of Button's colors so the API page\n// can list the values. The tests hold it to that `Exclude`, so a color Button\n// gains fails there until it's added here or left out on purpose.\n/**\n * The fills a pressed `ToggleButton` takes: `Button`'s colors, minus `text`\n * and `ghost`, which don't fill, and `white`, `light`, `dark` and `black`.\n * Bulma's color modifier fills the button and drops its border, and those four\n * fill it with about the lightness a plain button already has in one theme or\n * the other, so pressed would look like off without its border.\n */\nexport type ToggleButtonColor =\n 'primary' | 'link' | 'info' | 'success' | 'warning' | 'danger';\n\n/**\n * Props for the ToggleButton component. The helper props, the other button\n * attributes and the `ref` all land on the `<button>`.\n *\n * Some of `Button`'s props are left out on purpose. `as`, since only a button\n * can be pressed, and `type`, which is always `button`. `isActive`, which is\n * `pressed` here, and `isStatic`, a toggle you couldn't press. And the props\n * that change the fill (`isLight`, `isOutlined`, `isInverted`, `textColor`,\n * `bgColor` and their shades), since each would color the button in both\n * states or turn \"on\" into a faint tint. `color` takes only the fills that\n * stand out from a plain button: see `ToggleButtonColor`.\n *\n * @extraProp {React.Ref<HTMLButtonElement>} [ref] - Ref forwarded to the `<button>`.\n */\nexport interface ToggleButtonProps\n extends\n Omit<\n ButtonOwnProps,\n | 'color'\n | 'isActive'\n | 'isStatic'\n | 'isLight'\n | 'isOutlined'\n | 'isInverted'\n | 'textColor'\n | 'bgColor'\n | 'colorShade'\n | 'backgroundColorShade'\n >,\n Omit<\n React.ButtonHTMLAttributes<HTMLButtonElement>,\n keyof ButtonOwnProps | 'type' | 'aria-pressed'\n > {\n /**\n * Whether it's pressed, when you hold the state. Setting it makes the toggle\n * controlled: a click only calls `onPressedChange`, and nothing changes until\n * you pass the new value. Pick this or `defaultPressed` for the button's\n * lifetime.\n */\n pressed?: boolean;\n /** Whether it starts pressed, when it holds its own state. */\n defaultPressed?: boolean;\n /**\n * Called with the new state each time it's toggled, whether or not\n * `pressed` is set. An `onClick` that calls `preventDefault()` stops the\n * toggle, and this doesn't fire.\n */\n onPressedChange?: (pressed: boolean) => void;\n /**\n * The fill while it's pressed. Not pressed, it's a plain button, so the fill\n * is the difference people see. `white`, `light`, `dark` and `black` aren't\n * offered, since in one theme or the other each fills about as light or dark\n * as a plain button already is. Of the rest, a pale one such as `warning`\n * changes less than the default `link`.\n */\n color?: ToggleButtonColor;\n /**\n * The label, which stays the same in both states: a screen reader announces\n * whether it's pressed, so \"Mute\" stays \"Mute\". An icon can swap, but an\n * icon-only toggle needs an `aria-label` that doesn't. A label that changes\n * (\"Play\", then \"Pause\") belongs on a plain `Button`.\n */\n children?: React.ReactNode;\n /**\n * Shows Bulma's spinner in place of its content and holds the toggle where\n * it is: a click, Enter or Space does nothing, so neither `onClick` nor\n * `onPressedChange` fires, until it's cleared. Set it while a change is\n * saving. The button carries `aria-busy` and `aria-disabled` meanwhile, and\n * stays focusable, so focus isn't lost mid-save. Everything inside it is\n * hidden behind the spinner, in forced colors (Windows' contrast themes)\n * too, and under `prefers-reduced-motion: reduce` the spinner stops and\n * stays drawn. Bulma alone hides only the label, so the rest needs bestax's\n * CSS loaded.\n */\n isLoading?: boolean;\n /**\n * Not accepted: `aria-pressed` follows the state. Declared because JSX lets a\n * hyphenated attribute through when the props don't name it, so leaving it\n * out of the type alone would not reject `aria-pressed=\"mixed\"`.\n * @internal\n */\n 'aria-pressed'?: never;\n}\n\n/**\n * The `ToggleButton` component renders a button that stays pressed until it's pressed again, and says whether it's on through `aria-pressed`.\n *\n * It's always a `<button type=\"button\">`, so it never submits a form and\n * carries no form value: a setting saved with a form is a `Checkbox` or a\n * `Switch`. A set of toggles that each turn on and off on their own goes in\n * `Buttons hasAddons` with `role=\"group\"` and an `aria-label`. A set where only\n * one can be on is a radio group rather than a row of these: use\n * `SegmentedControl`, or `Radios` for a choice that's sent with a form.\n *\n * @function\n * @param {ToggleButtonProps} props - Props for the ToggleButton component.\n * @param {React.Ref<HTMLButtonElement>} ref - Forwarded ref to the `<button>`.\n * @returns {JSX.Element} The rendered toggle button.\n * @see {@link https://www.w3.org/WAI/ARIA/apg/patterns/button/ | APG button pattern}\n *\n * @example\n * <ToggleButton onPressedChange={setMuted}>Mute</ToggleButton>\n *\n * @example\n * <Buttons hasAddons role=\"group\" aria-label=\"Text style\">\n * <ToggleButton aria-label=\"Bold\" pressed={bold} onPressedChange={setBold}>\n * <Icon name=\"bold\" />\n * </ToggleButton>\n * </Buttons>\n */\nexport const ToggleButton = forwardRef<HTMLButtonElement, ToggleButtonProps>(\n function ToggleButton(\n {\n pressed: controlledPressed,\n defaultPressed = false,\n onPressedChange,\n color = 'link',\n isLoading,\n 'aria-busy': ariaBusy,\n 'aria-disabled': ariaDisabled,\n className,\n onClick,\n ...props\n },\n ref\n ) {\n const isControlled = controlledPressed !== undefined;\n const [internalPressed, setInternalPressed] = useState(defaultPressed);\n const pressed = controlledPressed ?? internalPressed;\n\n // Prefixed like Button's own classes, which a hand-written\n // `className=\"is-selected\"` could not be under ConfigProvider classPrefix.\n // Bulma lifts `is-selected` above its neighbours in `.buttons.has-addons`.\n const selectedClass = usePrefixedClassNames({ 'is-selected': pressed });\n\n // The caller's onClick runs first, so a `preventDefault()` there vetoes\n // the toggle, as it does in Radix, MUI and Zag. Enter and Space reach here\n // through the button's own click, and a disabled button gets no click.\n //\n // A loading one gets the click but drops it. Bulma's spinner only stops a\n // pointer, so without this a key flipped a toggle the mouse couldn't.\n // `disabled` would stop both, but it takes focus away mid-save.\n const handleClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n if (isLoading) return;\n onClick?.(event);\n if (event.defaultPrevented) return;\n const next = !pressed;\n onPressedChange?.(next);\n if (!isControlled) setInternalPressed(next);\n };\n\n // The props are spread first, so what a toggle depends on wins over\n // anything a JavaScript caller or a spread object passes along: it stays\n // a button, never submits, reports the state it's in, and says it's busy\n // and won't respond while it's loading. A caller's own `aria-busy` or\n // `aria-disabled` stays when it isn't loading.\n return (\n <Button\n {...props}\n ref={ref}\n as=\"button\"\n type=\"button\"\n isLoading={isLoading}\n aria-busy={isLoading || ariaBusy}\n aria-disabled={isLoading || ariaDisabled}\n aria-pressed={pressed}\n color={pressed ? color : undefined}\n className={classNames(selectedClass, className)}\n onClick={handleClick}\n />\n );\n }\n);\n\nToggleButton.displayName = 'ToggleButton';\n\nexport default ToggleButton;\n"],"names":["_jsx"],"mappings":";;;;;;AAqGA;;;;;;;;;;;;;;;;;;;;;;;;;AAyBG;AACI,MAAM,YAAY,GAAG,UAAU,CACpC,SAAS,YAAY,CACnB,EACE,OAAO,EAAE,iBAAiB,EAC1B,cAAc,GAAG,KAAK,EACtB,eAAe,EACf,KAAK,GAAG,MAAM,EACd,SAAS,EACT,WAAW,EAAE,QAAQ,EACrB,eAAe,EAAE,YAAY,EAC7B,SAAS,EACT,OAAO,EACP,GAAG,KAAK,EACT,EACD,GAAG,EAAA;AAEH,IAAA,MAAM,YAAY,GAAG,iBAAiB,KAAK,SAAS;IACpD,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,QAAQ,CAAC,cAAc,CAAC;AACtE,IAAA,MAAM,OAAO,GAAG,iBAAiB,IAAI,eAAe;;;;IAKpD,MAAM,aAAa,GAAG,qBAAqB,CAAC,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC;;;;;;;;AASvE,IAAA,MAAM,WAAW,GAAG,CAAC,KAA0C,KAAI;AACjE,QAAA,IAAI,SAAS;YAAE;AACf,QAAA,OAAO,GAAG,KAAK,CAAC;QAChB,IAAI,KAAK,CAAC,gBAAgB;YAAE;AAC5B,QAAA,MAAM,IAAI,GAAG,CAAC,OAAO;AACrB,QAAA,eAAe,GAAG,IAAI,CAAC;AACvB,QAAA,IAAI,CAAC,YAAY;YAAE,kBAAkB,CAAC,IAAI,CAAC;AAC7C,IAAA,CAAC;;;;;;IAOD,QACEA,GAAA,CAAC,MAAM,EAAA,EAAA,GACD,KAAK,EACT,GAAG,EAAE,GAAG,EACR,EAAE,EAAC,QAAQ,EACX,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,SAAS,EAAA,WAAA,EACT,SAAS,IAAI,QAAQ,EAAA,eAAA,EACjB,SAAS,IAAI,YAAY,kBAC1B,OAAO,EACrB,KAAK,EAAE,OAAO,GAAG,KAAK,GAAG,SAAS,EAClC,SAAS,EAAE,UAAU,CAAC,aAAa,EAAE,SAAS,CAAC,EAC/C,OAAO,EAAE,WAAW,EAAA,CACpB;AAEN,CAAC;AAGH,YAAY,CAAC,WAAW,GAAG,cAAc;;"}
1
+ {"version":3,"file":"ToggleButton.js","sources":["../../../src/elements/ToggleButton.tsx"],"sourcesContent":["import React, { forwardRef, useState } from 'react';\nimport { Button, type ButtonOwnProps } from './Button';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\n\n// Spelled out rather than as an `Exclude` of Button's colors so the API page\n// can list the values. The tests hold it to that `Exclude`, so a color Button\n// gains fails there until it's added here or left out on purpose.\n/**\n * The fills a pressed `ToggleButton` takes: `Button`'s colors, minus `text`\n * and `ghost`, which don't fill, and `white`, `light`, `dark` and `black`.\n * Bulma's color modifier fills the button and drops its border, and those four\n * fill it with about the lightness a plain button already has in one theme or\n * the other, so pressed would look like off without its border.\n */\nexport type ToggleButtonColor =\n 'primary' | 'link' | 'info' | 'success' | 'warning' | 'danger';\n\n/**\n * Props for the ToggleButton component. The helper props, the other button\n * attributes and the `ref` all land on the `<button>`.\n *\n * Some of `Button`'s props are left out on purpose. `as`, since only a button\n * can be pressed, and `type`, which is always `button`. `isActive`, which is\n * `pressed` here, and `isStatic`, a toggle you couldn't press. And the props\n * that change the fill (`isLight`, `isOutlined`, `isInverted`, `textColor`,\n * `bgColor` and their shades), since each would color the button in both\n * states or turn \"on\" into a faint tint. `color` takes only the fills that\n * stand out from a plain button: see `ToggleButtonColor`.\n *\n * @extraProp {React.Ref<HTMLButtonElement>} [ref] - Ref forwarded to the `<button>`.\n */\nexport interface ToggleButtonProps\n extends\n Omit<\n ButtonOwnProps,\n | 'color'\n | 'isActive'\n | 'isStatic'\n | 'isLight'\n | 'isOutlined'\n | 'isInverted'\n | 'textColor'\n | 'bgColor'\n | 'colorShade'\n | 'backgroundColorShade'\n >,\n Omit<\n React.ButtonHTMLAttributes<HTMLButtonElement>,\n keyof ButtonOwnProps | 'type' | 'aria-pressed'\n > {\n /**\n * Whether it's pressed, when you hold the state. Setting it makes the toggle\n * controlled: a click only calls `onPressedChange`, and nothing changes until\n * you pass the new value. Pick this or `defaultPressed` for the button's\n * lifetime.\n */\n pressed?: boolean;\n /** Whether it starts pressed, when it holds its own state. */\n defaultPressed?: boolean;\n /**\n * Called with the new state each time it's toggled, whether or not\n * `pressed` is set. An `onClick` that calls `preventDefault()` stops the\n * toggle, and this doesn't fire.\n */\n onPressedChange?: (pressed: boolean) => void;\n /**\n * The fill while it's pressed. Not pressed, it's a plain button, so the fill\n * is the difference people see. `white`, `light`, `dark` and `black` aren't\n * offered, since in one theme or the other each fills about as light or dark\n * as a plain button already is. Of the rest, a pale one such as `warning`\n * changes less than the default `link`.\n */\n color?: ToggleButtonColor;\n /**\n * The label, which stays the same in both states: a screen reader announces\n * whether it's pressed, so \"Mute\" stays \"Mute\". An icon can swap, but an\n * icon-only toggle needs an `aria-label` that doesn't. A label that changes\n * (\"Play\", then \"Pause\") belongs on a plain `Button`.\n */\n children?: React.ReactNode;\n /**\n * Shows Bulma's spinner in place of its content and holds the toggle where\n * it is: a click, Enter or Space does nothing, so neither `onClick` nor\n * `onPressedChange` fires, until it's cleared. Set it while a change is\n * saving. The button carries `aria-busy` and `aria-disabled` meanwhile, and\n * stays focusable, so focus isn't lost mid-save. Everything inside it is\n * hidden behind the spinner, in forced colors (Windows' contrast themes)\n * too, and under `prefers-reduced-motion: reduce` the spinner stops and\n * stays drawn. Bulma alone hides only the label, so the rest needs bestax's\n * CSS loaded.\n */\n isLoading?: boolean;\n /**\n * Not accepted: `aria-pressed` follows the state. Declared because JSX lets a\n * hyphenated attribute through when the props don't name it, so leaving it\n * out of the type alone would not reject `aria-pressed=\"mixed\"`.\n * @internal\n */\n 'aria-pressed'?: never;\n}\n\n/**\n * The `ToggleButton` component renders a button that stays pressed until it's pressed again, and says whether it's on through `aria-pressed`.\n *\n * It's always a `<button type=\"button\">`, so it never submits a form and\n * carries no form value: a setting saved with a form is a `Checkbox` or a\n * `Switch`. A set of toggles that each turn on and off on their own goes in\n * `Buttons hasAddons` with `role=\"group\"` and an `aria-label`. A set where only\n * one can be on is a radio group rather than a row of these: use\n * `SegmentedControl`, or `Radios` for a choice that's sent with a form.\n *\n * @function\n * @param {ToggleButtonProps} props - Props for the ToggleButton component.\n * @param {React.Ref<HTMLButtonElement>} ref - Forwarded ref to the `<button>`.\n * @returns {JSX.Element} The rendered toggle button.\n * @see {@link https://www.w3.org/WAI/ARIA/apg/patterns/button/ | APG button pattern}\n *\n * @example\n * <ToggleButton onPressedChange={setMuted}>Mute</ToggleButton>\n *\n * @example\n * <Buttons hasAddons role=\"group\" aria-label=\"Text style\">\n * <ToggleButton aria-label=\"Bold\" pressed={bold} onPressedChange={setBold}>\n * <Icon name=\"bold\" />\n * </ToggleButton>\n * </Buttons>\n */\nexport const ToggleButton = forwardRef<HTMLButtonElement, ToggleButtonProps>(\n function ToggleButton(\n {\n pressed: controlledPressed,\n defaultPressed = false,\n onPressedChange,\n color = 'link',\n isLoading,\n 'aria-busy': ariaBusy,\n 'aria-disabled': ariaDisabled,\n className,\n onClick,\n ...props\n },\n ref\n ) {\n const isControlled = controlledPressed !== undefined;\n const [internalPressed, setInternalPressed] = useState(defaultPressed);\n const pressed = controlledPressed ?? internalPressed;\n\n // Prefixed like Button's own classes, which a hand-written\n // `className=\"is-selected\"` could not be under ConfigProvider classPrefix.\n // Bulma lifts `is-selected` above its neighbours in `.buttons.has-addons`.\n const selectedClass = usePrefixedClassNames({ 'is-selected': pressed });\n\n // The caller's onClick runs first, so a `preventDefault()` there vetoes\n // the toggle, as it does in Radix, MUI and Zag. Enter and Space reach here\n // through the button's own click, and a disabled button gets no click.\n //\n // A loading one gets the click but drops it. Bulma's spinner only stops a\n // pointer, so without this a key flipped a toggle the mouse couldn't.\n // `disabled` would stop both, but it takes focus away mid-save.\n const handleClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n if (isLoading) return;\n onClick?.(event);\n if (event.defaultPrevented) return;\n const next = !pressed;\n onPressedChange?.(next);\n if (!isControlled) setInternalPressed(next);\n };\n\n // The props are spread first, so what a toggle depends on wins over\n // anything a JavaScript caller or a spread object passes along: it stays\n // a button, never submits, reports the state it's in, and says it's busy\n // and won't respond while it's loading. A caller's own `aria-busy` or\n // `aria-disabled` stays when it isn't loading.\n return (\n <Button\n {...props}\n ref={ref}\n as=\"button\"\n type=\"button\"\n isLoading={isLoading}\n aria-busy={isLoading || ariaBusy}\n aria-disabled={isLoading || ariaDisabled}\n aria-pressed={pressed}\n color={pressed ? color : undefined}\n className={classNames(selectedClass, className)}\n onClick={handleClick}\n />\n );\n }\n);\n\nToggleButton.displayName = 'ToggleButton';\n\nexport default ToggleButton;\n"],"names":["_jsx"],"mappings":";;;;;;;AAqGA;;;;;;;;;;;;;;;;;;;;;;;;;AAyBG;AACI,MAAM,YAAY,GAAG,UAAU,CACpC,SAAS,YAAY,CACnB,EACE,OAAO,EAAE,iBAAiB,EAC1B,cAAc,GAAG,KAAK,EACtB,eAAe,EACf,KAAK,GAAG,MAAM,EACd,SAAS,EACT,WAAW,EAAE,QAAQ,EACrB,eAAe,EAAE,YAAY,EAC7B,SAAS,EACT,OAAO,EACP,GAAG,KAAK,EACT,EACD,GAAG,EAAA;AAEH,IAAA,MAAM,YAAY,GAAG,iBAAiB,KAAK,SAAS;IACpD,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,QAAQ,CAAC,cAAc,CAAC;AACtE,IAAA,MAAM,OAAO,GAAG,iBAAiB,IAAI,eAAe;;;;IAKpD,MAAM,aAAa,GAAG,qBAAqB,CAAC,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC;;;;;;;;AASvE,IAAA,MAAM,WAAW,GAAG,CAAC,KAA0C,KAAI;AACjE,QAAA,IAAI,SAAS;YAAE;AACf,QAAA,OAAO,GAAG,KAAK,CAAC;QAChB,IAAI,KAAK,CAAC,gBAAgB;YAAE;AAC5B,QAAA,MAAM,IAAI,GAAG,CAAC,OAAO;AACrB,QAAA,eAAe,GAAG,IAAI,CAAC;AACvB,QAAA,IAAI,CAAC,YAAY;YAAE,kBAAkB,CAAC,IAAI,CAAC;AAC7C,IAAA,CAAC;;;;;;IAOD,QACEA,GAAA,CAAC,MAAM,EAAA,EAAA,GACD,KAAK,EACT,GAAG,EAAE,GAAG,EACR,EAAE,EAAC,QAAQ,EACX,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,SAAS,EAAA,WAAA,EACT,SAAS,IAAI,QAAQ,EAAA,eAAA,EACjB,SAAS,IAAI,YAAY,kBAC1B,OAAO,EACrB,KAAK,EAAE,OAAO,GAAG,KAAK,GAAG,SAAS,EAClC,SAAS,EAAE,UAAU,CAAC,aAAa,EAAE,SAAS,CAAC,EAC/C,OAAO,EAAE,WAAW,EAAA,CACpB;AAEN,CAAC;AAGH,YAAY,CAAC,WAAW,GAAG,cAAc;;"}
@@ -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 { jsx } from 'react/jsx-runtime';
3
4
  import { usePrefixedClassNames, classNames } from '../helpers/classNames.js';
4
5
  import { useBulmaClasses } from '../helpers/useBulmaClasses.js';
@@ -1 +1 @@
1
- {"version":3,"file":"Tr.js","sources":["../../../src/elements/Tr.tsx"],"sourcesContent":["/**\n * @group Table\n */\nimport React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport { useBulmaClasses, BulmaClassesProps } from '../helpers/useBulmaClasses';\nimport { TableColor, validTableColors } from './Td'; // Import TableColor from Td\n\n/**\n * Props for the Tr component.\n */\nexport interface TrProps\n extends\n Omit<React.HTMLAttributes<HTMLTableRowElement>, 'color'>,\n Omit<BulmaClassesProps, 'backgroundColor' | 'color'> {\n /** Additional CSS classes to apply. */\n className?: string;\n /**\n * Whether the row is selected (adds Bulma's is-selected class). It's a look\n * only: it says nothing to assistive tech, so pair it with a checkbox named\n * for the row when the selection matters. A bestax `Checkbox` placed\n * straight in one of the row's cells takes the row's text color, so a\n * checked box shows on the row's fill. One in a menu or a table nested in a\n * cell, or in a cell with a `color` of its own, keeps its own colors, since\n * it sits on that surface instead, and so does every one in a row with a\n * `color`, whose cells paint that color over the fill.\n */\n isSelected?: boolean;\n /** Bulma color modifier for the table row. */\n color?: TableColor;\n /** Table row content (cells). */\n children?: React.ReactNode;\n}\n\n/**\n * Tr component for rendering a styled Bulma table row.\n *\n * Supports the is-selected modifier and color modifiers.\n *\n * @function\n * @param {TrProps} props - Props for the Tr component.\n * @returns {JSX.Element} The rendered table row element.\n * @see {@link https://bulma.io/documentation/elements/table/#table-row | Bulma Table documentation}\n */\nexport const Tr: React.FC<TrProps> = ({\n className,\n isSelected,\n color,\n children,\n ...props\n}) => {\n const bulmaClasses = usePrefixedClassNames('', {\n 'is-selected': isSelected,\n [`is-${color}`]: color && validTableColors.includes(color),\n });\n\n /**\n * Generates Bulma helper classes and separates out remaining props.\n */\n const { bulmaHelperClasses, rest } = useBulmaClasses({ ...props });\n\n const trClasses = classNames(bulmaClasses, className, bulmaHelperClasses);\n\n return (\n <tr className={trClasses || undefined} {...rest}>\n {children}\n </tr>\n );\n};\n"],"names":["_jsx"],"mappings":";;;;;;AAkCA;;;;;;;;;AASG;AACI,MAAM,EAAE,GAAsB,CAAC,EACpC,SAAS,EACT,UAAU,EACV,KAAK,EACL,QAAQ,EACR,GAAG,KAAK,EACT,KAAI;AACH,IAAA,MAAM,YAAY,GAAG,qBAAqB,CAAC,EAAE,EAAE;AAC7C,QAAA,aAAa,EAAE,UAAU;AACzB,QAAA,CAAC,CAAA,GAAA,EAAM,KAAK,CAAA,CAAE,GAAG,KAAK,IAAI,gBAAgB,CAAC,QAAQ,CAAC,KAAK,CAAC;AAC3D,KAAA,CAAC;AAEF;;AAEG;AACH,IAAA,MAAM,EAAE,kBAAkB,EAAE,IAAI,EAAE,GAAG,eAAe,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC;IAElE,MAAM,SAAS,GAAG,UAAU,CAAC,YAAY,EAAE,SAAS,EAAE,kBAAkB,CAAC;AAEzE,IAAA,QACEA,GAAA,CAAA,IAAA,EAAA,EAAI,SAAS,EAAE,SAAS,IAAI,SAAS,EAAA,GAAM,IAAI,EAAA,QAAA,EAC5C,QAAQ,EAAA,CACN;AAET;;"}
1
+ {"version":3,"file":"Tr.js","sources":["../../../src/elements/Tr.tsx"],"sourcesContent":["/**\n * @group Table\n */\nimport React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport { useBulmaClasses, BulmaClassesProps } from '../helpers/useBulmaClasses';\nimport { TableColor, validTableColors } from './Td'; // Import TableColor from Td\n\n/**\n * Props for the Tr component.\n */\nexport interface TrProps\n extends\n Omit<React.HTMLAttributes<HTMLTableRowElement>, 'color'>,\n Omit<BulmaClassesProps, 'backgroundColor' | 'color'> {\n /** Additional CSS classes to apply. */\n className?: string;\n /**\n * Whether the row is selected (adds Bulma's is-selected class). It's a look\n * only: it says nothing to assistive tech, so pair it with a checkbox named\n * for the row when the selection matters. A bestax `Checkbox` placed\n * straight in one of the row's cells takes the row's text color, so a\n * checked box shows on the row's fill. One in a menu or a table nested in a\n * cell, or in a cell with a `color` of its own, keeps its own colors, since\n * it sits on that surface instead, and so does every one in a row with a\n * `color`, whose cells paint that color over the fill.\n */\n isSelected?: boolean;\n /** Bulma color modifier for the table row. */\n color?: TableColor;\n /** Table row content (cells). */\n children?: React.ReactNode;\n}\n\n/**\n * Tr component for rendering a styled Bulma table row.\n *\n * Supports the is-selected modifier and color modifiers.\n *\n * @function\n * @param {TrProps} props - Props for the Tr component.\n * @returns {JSX.Element} The rendered table row element.\n * @see {@link https://bulma.io/documentation/elements/table/#table-row | Bulma Table documentation}\n */\nexport const Tr: React.FC<TrProps> = ({\n className,\n isSelected,\n color,\n children,\n ...props\n}) => {\n const bulmaClasses = usePrefixedClassNames('', {\n 'is-selected': isSelected,\n [`is-${color}`]: color && validTableColors.includes(color),\n });\n\n /**\n * Generates Bulma helper classes and separates out remaining props.\n */\n const { bulmaHelperClasses, rest } = useBulmaClasses({ ...props });\n\n const trClasses = classNames(bulmaClasses, className, bulmaHelperClasses);\n\n return (\n <tr className={trClasses || undefined} {...rest}>\n {children}\n </tr>\n );\n};\n"],"names":["_jsx"],"mappings":";;;;;;;AAkCA;;;;;;;;;AASG;AACI,MAAM,EAAE,GAAsB,CAAC,EACpC,SAAS,EACT,UAAU,EACV,KAAK,EACL,QAAQ,EACR,GAAG,KAAK,EACT,KAAI;AACH,IAAA,MAAM,YAAY,GAAG,qBAAqB,CAAC,EAAE,EAAE;AAC7C,QAAA,aAAa,EAAE,UAAU;AACzB,QAAA,CAAC,CAAA,GAAA,EAAM,KAAK,CAAA,CAAE,GAAG,KAAK,IAAI,gBAAgB,CAAC,QAAQ,CAAC,KAAK,CAAC;AAC3D,KAAA,CAAC;AAEF;;AAEG;AACH,IAAA,MAAM,EAAE,kBAAkB,EAAE,IAAI,EAAE,GAAG,eAAe,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC;IAElE,MAAM,SAAS,GAAG,UAAU,CAAC,YAAY,EAAE,SAAS,EAAE,kBAAkB,CAAC;AAEzE,IAAA,QACEA,GAAA,CAAA,IAAA,EAAA,EAAI,SAAS,EAAE,SAAS,IAAI,SAAS,EAAA,GAAM,IAAI,EAAA,QAAA,EAC5C,QAAQ,EAAA,CACN;AAET;;"}
@@ -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 { jsx } from 'react/jsx-runtime';
3
4
  import { usePrefixedClassNames, classNames } from '../helpers/classNames.js';
4
5
  import { withSubComponents } from '../helpers/withSubComponents.js';
@@ -1 +1 @@
1
- {"version":3,"file":"UnorderedList.js","sources":["../../../src/elements/UnorderedList.tsx"],"sourcesContent":["import React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport { withSubComponents } from '../helpers/withSubComponents';\nimport { ListItem } from './ListItem';\nimport {\n useBulmaClasses,\n BulmaClassesProps,\n validColors,\n} from '../helpers/useBulmaClasses';\n\n/**\n * Props for the UnorderedList component.\n */\nexport interface UnorderedListProps\n extends\n React.HTMLAttributes<HTMLUListElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n /** Additional CSS classes to apply. */\n className?: string;\n /** Text color helper. */\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n /** Background color helper. */\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n /** List items to render inside the list. */\n children?: React.ReactNode;\n}\n\n/**\n * The `UnorderedList` component renders a styled unordered list (`<ul>`) element with Bulma helper class integration.\n *\n * @function\n * @param {UnorderedListProps} props - Props for the UnorderedList component.\n * @returns {JSX.Element} The rendered ul element.\n */\nconst UnorderedListComponent: React.FC<UnorderedListProps> = ({\n className,\n textColor,\n bgColor,\n children,\n ...props\n}) => {\n /**\n * Generates Bulma helper classes and separates out remaining props.\n */\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor,\n backgroundColor: bgColor,\n ...props,\n } as BulmaClassesProps & typeof props);\n\n const bulmaClasses = usePrefixedClassNames();\n const listClasses = classNames(bulmaClasses, bulmaHelperClasses, className);\n\n return (\n <ul className={listClasses || undefined} {...rest}>\n {children}\n </ul>\n );\n};\n\nexport const UnorderedList = withSubComponents(\n UnorderedListComponent,\n { Item: ListItem },\n 'UnorderedList'\n);\n"],"names":["_jsx"],"mappings":";;;;;;;AA2BA;;;;;;AAMG;AACH,MAAM,sBAAsB,GAAiC,CAAC,EAC5D,SAAS,EACT,SAAS,EACT,OAAO,EACP,QAAQ,EACR,GAAG,KAAK,EACT,KAAI;AACH;;AAEG;AACH,IAAA,MAAM,EAAE,kBAAkB,EAAE,IAAI,EAAE,GAAG,eAAe,CAAC;AACnD,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,eAAe,EAAE,OAAO;AACxB,QAAA,GAAG,KAAK;AAC2B,KAAA,CAAC;AAEtC,IAAA,MAAM,YAAY,GAAG,qBAAqB,EAAE;IAC5C,MAAM,WAAW,GAAG,UAAU,CAAC,YAAY,EAAE,kBAAkB,EAAE,SAAS,CAAC;AAE3E,IAAA,QACEA,GAAA,CAAA,IAAA,EAAA,EAAI,SAAS,EAAE,WAAW,IAAI,SAAS,EAAA,GAAM,IAAI,EAAA,QAAA,EAC9C,QAAQ,EAAA,CACN;AAET,CAAC;AAEM,MAAM,aAAa,GAAG,iBAAiB,CAC5C,sBAAsB,EACtB,EAAE,IAAI,EAAE,QAAQ,EAAE,EAClB,eAAe;;"}
1
+ {"version":3,"file":"UnorderedList.js","sources":["../../../src/elements/UnorderedList.tsx"],"sourcesContent":["import React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport { withSubComponents } from '../helpers/withSubComponents';\nimport { ListItem } from './ListItem';\nimport {\n useBulmaClasses,\n BulmaClassesProps,\n validColors,\n} from '../helpers/useBulmaClasses';\n\n/**\n * Props for the UnorderedList component.\n */\nexport interface UnorderedListProps\n extends\n React.HTMLAttributes<HTMLUListElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n /** Additional CSS classes to apply. */\n className?: string;\n /** Text color helper. */\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n /** Background color helper. */\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n /** List items to render inside the list. */\n children?: React.ReactNode;\n}\n\n/**\n * The `UnorderedList` component renders a styled unordered list (`<ul>`) element with Bulma helper class integration.\n *\n * @function\n * @param {UnorderedListProps} props - Props for the UnorderedList component.\n * @returns {JSX.Element} The rendered ul element.\n */\nconst UnorderedListComponent: React.FC<UnorderedListProps> = ({\n className,\n textColor,\n bgColor,\n children,\n ...props\n}) => {\n /**\n * Generates Bulma helper classes and separates out remaining props.\n */\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor,\n backgroundColor: bgColor,\n ...props,\n } as BulmaClassesProps & typeof props);\n\n const bulmaClasses = usePrefixedClassNames();\n const listClasses = classNames(bulmaClasses, bulmaHelperClasses, className);\n\n return (\n <ul className={listClasses || undefined} {...rest}>\n {children}\n </ul>\n );\n};\n\nexport const UnorderedList = withSubComponents(\n UnorderedListComponent,\n { Item: ListItem },\n 'UnorderedList'\n);\n"],"names":["_jsx"],"mappings":";;;;;;;;AA2BA;;;;;;AAMG;AACH,MAAM,sBAAsB,GAAiC,CAAC,EAC5D,SAAS,EACT,SAAS,EACT,OAAO,EACP,QAAQ,EACR,GAAG,KAAK,EACT,KAAI;AACH;;AAEG;AACH,IAAA,MAAM,EAAE,kBAAkB,EAAE,IAAI,EAAE,GAAG,eAAe,CAAC;AACnD,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,eAAe,EAAE,OAAO;AACxB,QAAA,GAAG,KAAK;AAC2B,KAAA,CAAC;AAEtC,IAAA,MAAM,YAAY,GAAG,qBAAqB,EAAE;IAC5C,MAAM,WAAW,GAAG,UAAU,CAAC,YAAY,EAAE,kBAAkB,EAAE,SAAS,CAAC;AAE3E,IAAA,QACEA,GAAA,CAAA,IAAA,EAAA,EAAI,SAAS,EAAE,WAAW,IAAI,SAAS,EAAA,GAAM,IAAI,EAAA,QAAA,EAC9C,QAAQ,EAAA,CACN;AAET,CAAC;AAEM,MAAM,aAAa,GAAG,iBAAiB,CAC5C,sBAAsB,EACtB,EAAE,IAAI,EAAE,QAAQ,EAAE,EAClB,eAAe;;"}
@@ -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 React from 'react';
3
4
 
4
5
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"iconProps.js","sources":["../../../src/elements/iconProps.ts"],"sourcesContent":["import React from 'react';\nimport type { IconProps } from './Icon';\n\n/**\n * Distinguishes an `IconProps` object from a plain custom node (an inline SVG, a\n * `react-icons` component, …) in a slot that accepts either — `Control`'s\n * `iconLeft`/`iconRight`, `IconText`'s `iconProps`.\n *\n * One copy, imported by both consumers: two hand-maintained copies, one per\n * consumer, is how the deprecated `icon` path came to crash both (#663).\n *\n * Its own module rather than `Icon.tsx` because `src/index.ts` wildcard-exports\n * that file, and everything published there is public forever. `polymorphic.ts`\n * makes the same call for `isCustomElement`: an internal discriminator is not\n * something to support for the life of the package.\n *\n * It tests each member's VALUE, not merely its key, and only after everything\n * React owns is out of the way. `'icon' in value` was enough\n * to claim a Font Awesome `IconDefinition` — `{ prefix, iconName, icon: [w, h, …,\n * path] }` — whose `icon` is a path array rather than a class string. That object\n * is not a renderable node either, so the honest outcome is the one this slot has\n * always had for it: the node branch, and React's own \"Objects are not valid as a\n * React child\". Claiming it here instead rendered a blank container that still\n * reserved layout.\n *\n * A member added to `IconProps` needs a line here, and a missed one is a crash\n * rather than a fallthrough. That is the cost of a slot taking either a props\n * object or a node; keeping the guard in one place is what keeps the cost to a\n * single line.\n */\nexport function isIconProps(\n value: IconProps | React.ReactNode\n): value is IconProps {\n if (typeof value !== 'object' || value === null) return false;\n // Anything React owns. `isValidElement` covers elements only; a PORTAL is a\n // valid `ReactNode` that fails it and carries a `children` key, so the member\n // test below claimed it and `Control` spread it into `<Icon>` as props —\n // rendering the portal's child locally instead of in its container. Every\n // React internal carries `$$typeof`, so testing for it covers lazy, context\n // and whatever React adds next, rather than portals alone.\n if (React.isValidElement(value) || '$$typeof' in value) return false;\n const candidate = value as {\n name?: unknown;\n icon?: unknown;\n children?: unknown;\n };\n return (\n typeof candidate.name === 'string' ||\n typeof candidate.icon === 'string' ||\n 'children' in candidate\n );\n}\n"],"names":[],"mappings":";;;AAGA;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BG;AACG,SAAU,WAAW,CACzB,KAAkC,EAAA;AAElC,IAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;AAAE,QAAA,OAAO,KAAK;;;;;;;IAO7D,IAAI,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,UAAU,IAAI,KAAK;AAAE,QAAA,OAAO,KAAK;IACpE,MAAM,SAAS,GAAG,KAIjB;AACD,IAAA,QACE,OAAO,SAAS,CAAC,IAAI,KAAK,QAAQ;AAClC,QAAA,OAAO,SAAS,CAAC,IAAI,KAAK,QAAQ;QAClC,UAAU,IAAI,SAAS;AAE3B;;"}
1
+ {"version":3,"file":"iconProps.js","sources":["../../../src/elements/iconProps.ts"],"sourcesContent":["import React from 'react';\nimport type { IconProps } from './Icon';\n\n/**\n * Distinguishes an `IconProps` object from a plain custom node (an inline SVG, a\n * `react-icons` component, …) in a slot that accepts either — `Control`'s\n * `iconLeft`/`iconRight`, `IconText`'s `iconProps`.\n *\n * One copy, imported by both consumers: two hand-maintained copies, one per\n * consumer, is how the deprecated `icon` path came to crash both (#663).\n *\n * Its own module rather than `Icon.tsx` because `src/index.ts` wildcard-exports\n * that file, and everything published there is public forever. `polymorphic.ts`\n * makes the same call for `isCustomElement`: an internal discriminator is not\n * something to support for the life of the package.\n *\n * It tests each member's VALUE, not merely its key, and only after everything\n * React owns is out of the way. `'icon' in value` was enough\n * to claim a Font Awesome `IconDefinition` — `{ prefix, iconName, icon: [w, h, …,\n * path] }` — whose `icon` is a path array rather than a class string. That object\n * is not a renderable node either, so the honest outcome is the one this slot has\n * always had for it: the node branch, and React's own \"Objects are not valid as a\n * React child\". Claiming it here instead rendered a blank container that still\n * reserved layout.\n *\n * A member added to `IconProps` needs a line here, and a missed one is a crash\n * rather than a fallthrough. That is the cost of a slot taking either a props\n * object or a node; keeping the guard in one place is what keeps the cost to a\n * single line.\n */\nexport function isIconProps(\n value: IconProps | React.ReactNode\n): value is IconProps {\n if (typeof value !== 'object' || value === null) return false;\n // Anything React owns. `isValidElement` covers elements only; a PORTAL is a\n // valid `ReactNode` that fails it and carries a `children` key, so the member\n // test below claimed it and `Control` spread it into `<Icon>` as props —\n // rendering the portal's child locally instead of in its container. Every\n // React internal carries `$$typeof`, so testing for it covers lazy, context\n // and whatever React adds next, rather than portals alone.\n if (React.isValidElement(value) || '$$typeof' in value) return false;\n const candidate = value as {\n name?: unknown;\n icon?: unknown;\n children?: unknown;\n };\n return (\n typeof candidate.name === 'string' ||\n typeof candidate.icon === 'string' ||\n 'children' in candidate\n );\n}\n"],"names":[],"mappings":";;;;AAGA;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BG;AACG,SAAU,WAAW,CACzB,KAAkC,EAAA;AAElC,IAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;AAAE,QAAA,OAAO,KAAK;;;;;;;IAO7D,IAAI,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,UAAU,IAAI,KAAK;AAAE,QAAA,OAAO,KAAK;IACpE,MAAM,SAAS,GAAG,KAIjB;AACD,IAAA,QACE,OAAO,SAAS,CAAC,IAAI,KAAK,QAAQ;AAClC,QAAA,OAAO,SAAS,CAAC,IAAI,KAAK,QAAQ;QAClC,UAAU,IAAI,SAAS;AAE3B;;"}
@@ -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 { jsx, jsxs, Fragment } from 'react/jsx-runtime';
3
4
  import { forwardRef, useRef, useState, useId, useCallback, useEffect } from 'react';
4
5
  import { usePrefixedClassNames, classNames, prefixedClassNames } from '../helpers/classNames.js';