@allxsmith/bestax-bulma 5.56.0 → 5.57.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (335) hide show
  1. package/dist/esm/columns/Column.js +1 -0
  2. package/dist/esm/columns/Column.js.map +1 -1
  3. package/dist/esm/columns/Columns.js +1 -0
  4. package/dist/esm/columns/Columns.js.map +1 -1
  5. package/dist/esm/components/Avatar.js +1 -0
  6. package/dist/esm/components/Avatar.js.map +1 -1
  7. package/dist/esm/components/Avatars.js +1 -0
  8. package/dist/esm/components/Avatars.js.map +1 -1
  9. package/dist/esm/components/Badge.js +1 -0
  10. package/dist/esm/components/Badge.js.map +1 -1
  11. package/dist/esm/components/Breadcrumb.js +1 -0
  12. package/dist/esm/components/Breadcrumb.js.map +1 -1
  13. package/dist/esm/components/Card.js +1 -0
  14. package/dist/esm/components/Card.js.map +1 -1
  15. package/dist/esm/components/Carousel.js +1 -0
  16. package/dist/esm/components/Carousel.js.map +1 -1
  17. package/dist/esm/components/Collapse.js +1 -0
  18. package/dist/esm/components/Collapse.js.map +1 -1
  19. package/dist/esm/components/Collapses.js +1 -0
  20. package/dist/esm/components/Collapses.js.map +1 -1
  21. package/dist/esm/components/Command.js +1 -0
  22. package/dist/esm/components/Command.js.map +1 -1
  23. package/dist/esm/components/ContextMenu.js +1 -0
  24. package/dist/esm/components/ContextMenu.js.map +1 -1
  25. package/dist/esm/components/DataTable.js +1 -0
  26. package/dist/esm/components/DataTable.js.map +1 -1
  27. package/dist/esm/components/Dialog.js +1 -0
  28. package/dist/esm/components/Dialog.js.map +1 -1
  29. package/dist/esm/components/Dropdown.js +1 -0
  30. package/dist/esm/components/Dropdown.js.map +1 -1
  31. package/dist/esm/components/EmptyState.js +1 -0
  32. package/dist/esm/components/EmptyState.js.map +1 -1
  33. package/dist/esm/components/HoverCard.js +1 -0
  34. package/dist/esm/components/HoverCard.js.map +1 -1
  35. package/dist/esm/components/Loading.js +1 -0
  36. package/dist/esm/components/Loading.js.map +1 -1
  37. package/dist/esm/components/Menu.js +1 -0
  38. package/dist/esm/components/Menu.js.map +1 -1
  39. package/dist/esm/components/Message.js +1 -0
  40. package/dist/esm/components/Message.js.map +1 -1
  41. package/dist/esm/components/Modal.js +1 -0
  42. package/dist/esm/components/Modal.js.map +1 -1
  43. package/dist/esm/components/Navbar.js +1 -0
  44. package/dist/esm/components/Navbar.js.map +1 -1
  45. package/dist/esm/components/Pagination.js +1 -0
  46. package/dist/esm/components/Pagination.js.map +1 -1
  47. package/dist/esm/components/Panel.js +1 -0
  48. package/dist/esm/components/Panel.js.map +1 -1
  49. package/dist/esm/components/Popover.js +1 -0
  50. package/dist/esm/components/Popover.js.map +1 -1
  51. package/dist/esm/components/Reveal.js +1 -0
  52. package/dist/esm/components/Reveal.js.map +1 -1
  53. package/dist/esm/components/ScrollArea.js +1 -0
  54. package/dist/esm/components/ScrollArea.js.map +1 -1
  55. package/dist/esm/components/SegmentedControl.js +1 -0
  56. package/dist/esm/components/SegmentedControl.js.map +1 -1
  57. package/dist/esm/components/Sidebar.js +1 -0
  58. package/dist/esm/components/Sidebar.js.map +1 -1
  59. package/dist/esm/components/Steps.js +1 -0
  60. package/dist/esm/components/Steps.js.map +1 -1
  61. package/dist/esm/components/Tabs.js +1 -0
  62. package/dist/esm/components/Tabs.js.map +1 -1
  63. package/dist/esm/components/Timeline.js +1 -0
  64. package/dist/esm/components/Timeline.js.map +1 -1
  65. package/dist/esm/components/Toast.js +1 -0
  66. package/dist/esm/components/Toast.js.map +1 -1
  67. package/dist/esm/components/Tooltip.js +1 -0
  68. package/dist/esm/components/Tooltip.js.map +1 -1
  69. package/dist/esm/components/TreeView.js +1 -0
  70. package/dist/esm/components/TreeView.js.map +1 -1
  71. package/dist/esm/components/collapsesContext.js +1 -0
  72. package/dist/esm/components/collapsesContext.js.map +1 -1
  73. package/dist/esm/components/useDataTable.js +1 -0
  74. package/dist/esm/components/useDataTable.js.map +1 -1
  75. package/dist/esm/elements/Block.js +1 -0
  76. package/dist/esm/elements/Block.js.map +1 -1
  77. package/dist/esm/elements/Box.js +1 -0
  78. package/dist/esm/elements/Box.js.map +1 -1
  79. package/dist/esm/elements/Button.js +1 -0
  80. package/dist/esm/elements/Button.js.map +1 -1
  81. package/dist/esm/elements/Buttons.js +1 -0
  82. package/dist/esm/elements/Buttons.js.map +1 -1
  83. package/dist/esm/elements/Code.js +1 -0
  84. package/dist/esm/elements/Code.js.map +1 -1
  85. package/dist/esm/elements/ColorSwatch.js +1 -0
  86. package/dist/esm/elements/ColorSwatch.js.map +1 -1
  87. package/dist/esm/elements/Content.js +1 -0
  88. package/dist/esm/elements/Content.js.map +1 -1
  89. package/dist/esm/elements/Delete.js +1 -0
  90. package/dist/esm/elements/Delete.js.map +1 -1
  91. package/dist/esm/elements/DescriptionList.js +1 -0
  92. package/dist/esm/elements/DescriptionList.js.map +1 -1
  93. package/dist/esm/elements/Divider.js +1 -0
  94. package/dist/esm/elements/Divider.js.map +1 -1
  95. package/dist/esm/elements/Emphasis.js +1 -0
  96. package/dist/esm/elements/Emphasis.js.map +1 -1
  97. package/dist/esm/elements/Figure.js +1 -0
  98. package/dist/esm/elements/Figure.js.map +1 -1
  99. package/dist/esm/elements/Icon.js +1 -0
  100. package/dist/esm/elements/Icon.js.map +1 -1
  101. package/dist/esm/elements/IconText.js +1 -0
  102. package/dist/esm/elements/IconText.js.map +1 -1
  103. package/dist/esm/elements/Image.js +1 -0
  104. package/dist/esm/elements/Image.js.map +1 -1
  105. package/dist/esm/elements/Kbd.js +1 -0
  106. package/dist/esm/elements/Kbd.js.map +1 -1
  107. package/dist/esm/elements/Link.js +1 -0
  108. package/dist/esm/elements/Link.js.map +1 -1
  109. package/dist/esm/elements/LinkButton.js +1 -0
  110. package/dist/esm/elements/LinkButton.js.map +1 -1
  111. package/dist/esm/elements/ListItem.js +1 -0
  112. package/dist/esm/elements/ListItem.js.map +1 -1
  113. package/dist/esm/elements/Loader.js +1 -0
  114. package/dist/esm/elements/Loader.js.map +1 -1
  115. package/dist/esm/elements/Notification.js +1 -0
  116. package/dist/esm/elements/Notification.js.map +1 -1
  117. package/dist/esm/elements/OrderedList.js +1 -0
  118. package/dist/esm/elements/OrderedList.js.map +1 -1
  119. package/dist/esm/elements/Paragraph.js +1 -0
  120. package/dist/esm/elements/Paragraph.js.map +1 -1
  121. package/dist/esm/elements/Pre.js +1 -0
  122. package/dist/esm/elements/Pre.js.map +1 -1
  123. package/dist/esm/elements/Progress.js +1 -0
  124. package/dist/esm/elements/Progress.js.map +1 -1
  125. package/dist/esm/elements/RingProgress.js +1 -0
  126. package/dist/esm/elements/RingProgress.js.map +1 -1
  127. package/dist/esm/elements/Skeleton.js +1 -0
  128. package/dist/esm/elements/Skeleton.js.map +1 -1
  129. package/dist/esm/elements/Span.js +1 -0
  130. package/dist/esm/elements/Span.js.map +1 -1
  131. package/dist/esm/elements/Strong.js +1 -0
  132. package/dist/esm/elements/Strong.js.map +1 -1
  133. package/dist/esm/elements/SubTitle.js +1 -0
  134. package/dist/esm/elements/SubTitle.js.map +1 -1
  135. package/dist/esm/elements/Table.js +1 -0
  136. package/dist/esm/elements/Table.js.map +1 -1
  137. package/dist/esm/elements/Tag.js +1 -0
  138. package/dist/esm/elements/Tag.js.map +1 -1
  139. package/dist/esm/elements/Tags.js +1 -0
  140. package/dist/esm/elements/Tags.js.map +1 -1
  141. package/dist/esm/elements/Tbody.js +1 -0
  142. package/dist/esm/elements/Tbody.js.map +1 -1
  143. package/dist/esm/elements/Td.js +1 -0
  144. package/dist/esm/elements/Td.js.map +1 -1
  145. package/dist/esm/elements/Tfoot.js +1 -0
  146. package/dist/esm/elements/Tfoot.js.map +1 -1
  147. package/dist/esm/elements/Th.js +1 -0
  148. package/dist/esm/elements/Th.js.map +1 -1
  149. package/dist/esm/elements/Thead.js +1 -0
  150. package/dist/esm/elements/Thead.js.map +1 -1
  151. package/dist/esm/elements/Title.js +1 -0
  152. package/dist/esm/elements/Title.js.map +1 -1
  153. package/dist/esm/elements/ToggleButton.js +1 -0
  154. package/dist/esm/elements/ToggleButton.js.map +1 -1
  155. package/dist/esm/elements/Tr.js +1 -0
  156. package/dist/esm/elements/Tr.js.map +1 -1
  157. package/dist/esm/elements/UnorderedList.js +1 -0
  158. package/dist/esm/elements/UnorderedList.js.map +1 -1
  159. package/dist/esm/elements/iconProps.js +1 -0
  160. package/dist/esm/elements/iconProps.js.map +1 -1
  161. package/dist/esm/form/Autocomplete.js +1 -0
  162. package/dist/esm/form/Autocomplete.js.map +1 -1
  163. package/dist/esm/form/Checkbox.js +1 -0
  164. package/dist/esm/form/Checkbox.js.map +1 -1
  165. package/dist/esm/form/CheckboxCard.js +1 -0
  166. package/dist/esm/form/CheckboxCard.js.map +1 -1
  167. package/dist/esm/form/Checkboxes.js +1 -0
  168. package/dist/esm/form/Checkboxes.js.map +1 -1
  169. package/dist/esm/form/ColorInput.js +1 -0
  170. package/dist/esm/form/ColorInput.js.map +1 -1
  171. package/dist/esm/form/ColorInputBase.js +1 -0
  172. package/dist/esm/form/ColorInputBase.js.map +1 -1
  173. package/dist/esm/form/ColorPicker.js +1 -0
  174. package/dist/esm/form/ColorPicker.js.map +1 -1
  175. package/dist/esm/form/Combobox.js +1 -0
  176. package/dist/esm/form/Combobox.js.map +1 -1
  177. package/dist/esm/form/Control.js +1 -0
  178. package/dist/esm/form/Control.js.map +1 -1
  179. package/dist/esm/form/DateInput.js +1 -0
  180. package/dist/esm/form/DateInput.js.map +1 -1
  181. package/dist/esm/form/DateInputBase.js +1 -0
  182. package/dist/esm/form/DateInputBase.js.map +1 -1
  183. package/dist/esm/form/DateRangeInput.js +1 -0
  184. package/dist/esm/form/DateRangeInput.js.map +1 -1
  185. package/dist/esm/form/DateRangeInputBase.js +1 -0
  186. package/dist/esm/form/DateRangeInputBase.js.map +1 -1
  187. package/dist/esm/form/DateTimeInput.js +1 -0
  188. package/dist/esm/form/DateTimeInput.js.map +1 -1
  189. package/dist/esm/form/DateTimeInputBase.js +1 -0
  190. package/dist/esm/form/DateTimeInputBase.js.map +1 -1
  191. package/dist/esm/form/Dropzone.js +1 -0
  192. package/dist/esm/form/Dropzone.js.map +1 -1
  193. package/dist/esm/form/Field.js +1 -0
  194. package/dist/esm/form/Field.js.map +1 -1
  195. package/dist/esm/form/Fieldset.js +1 -0
  196. package/dist/esm/form/Fieldset.js.map +1 -1
  197. package/dist/esm/form/File.js +1 -0
  198. package/dist/esm/form/File.js.map +1 -1
  199. package/dist/esm/form/FormContext.js +1 -0
  200. package/dist/esm/form/FormContext.js.map +1 -1
  201. package/dist/esm/form/Input.js +1 -0
  202. package/dist/esm/form/Input.js.map +1 -1
  203. package/dist/esm/form/InputBase.js +1 -0
  204. package/dist/esm/form/InputBase.js.map +1 -1
  205. package/dist/esm/form/Numberinput.js +1 -0
  206. package/dist/esm/form/Numberinput.js.map +1 -1
  207. package/dist/esm/form/PinInput.js +1 -0
  208. package/dist/esm/form/PinInput.js.map +1 -1
  209. package/dist/esm/form/Radio.js +1 -0
  210. package/dist/esm/form/Radio.js.map +1 -1
  211. package/dist/esm/form/RadioCard.js +1 -0
  212. package/dist/esm/form/RadioCard.js.map +1 -1
  213. package/dist/esm/form/Radios.js +1 -0
  214. package/dist/esm/form/Radios.js.map +1 -1
  215. package/dist/esm/form/Rate.js +1 -0
  216. package/dist/esm/form/Rate.js.map +1 -1
  217. package/dist/esm/form/Select.js +1 -0
  218. package/dist/esm/form/Select.js.map +1 -1
  219. package/dist/esm/form/SelectBase.js +1 -0
  220. package/dist/esm/form/SelectBase.js.map +1 -1
  221. package/dist/esm/form/Slider.js +1 -0
  222. package/dist/esm/form/Slider.js.map +1 -1
  223. package/dist/esm/form/Switch.js +1 -0
  224. package/dist/esm/form/Switch.js.map +1 -1
  225. package/dist/esm/form/Taginput.js +1 -0
  226. package/dist/esm/form/Taginput.js.map +1 -1
  227. package/dist/esm/form/TextArea.js +1 -0
  228. package/dist/esm/form/TextArea.js.map +1 -1
  229. package/dist/esm/form/TextAreaBase.js +1 -0
  230. package/dist/esm/form/TextAreaBase.js.map +1 -1
  231. package/dist/esm/form/TimeInput.js +1 -0
  232. package/dist/esm/form/TimeInput.js.map +1 -1
  233. package/dist/esm/form/TimeInputBase.js +1 -0
  234. package/dist/esm/form/TimeInputBase.js.map +1 -1
  235. package/dist/esm/form/_colorInternals/EyeDropperButton.js +1 -0
  236. package/dist/esm/form/_colorInternals/EyeDropperButton.js.map +1 -1
  237. package/dist/esm/form/_colorInternals/pickerState.js +1 -0
  238. package/dist/esm/form/_colorInternals/pickerState.js.map +1 -1
  239. package/dist/esm/form/_pickerInternals/Calendar.js +1 -0
  240. package/dist/esm/form/_pickerInternals/Calendar.js.map +1 -1
  241. package/dist/esm/form/_pickerInternals/PickerPopover.js +1 -0
  242. package/dist/esm/form/_pickerInternals/PickerPopover.js.map +1 -1
  243. package/dist/esm/form/_pickerInternals/TimeWheels.js +1 -0
  244. package/dist/esm/form/_pickerInternals/TimeWheels.js.map +1 -1
  245. package/dist/esm/form/_pickerInternals/useLocaleDefaults.js +1 -0
  246. package/dist/esm/form/_pickerInternals/useLocaleDefaults.js.map +1 -1
  247. package/dist/esm/form/_pickerInternals/useNativeMobilePicker.js +1 -0
  248. package/dist/esm/form/_pickerInternals/useNativeMobilePicker.js.map +1 -1
  249. package/dist/esm/form/_pickerInternals/useSegmentedEntry.js +1 -0
  250. package/dist/esm/form/_pickerInternals/useSegmentedEntry.js.map +1 -1
  251. package/dist/esm/form/controlLoading.js +1 -0
  252. package/dist/esm/form/controlLoading.js.map +1 -1
  253. package/dist/esm/form/groupFieldset.js +1 -0
  254. package/dist/esm/form/groupFieldset.js.map +1 -1
  255. package/dist/esm/form/useAutoLabelId.js +1 -0
  256. package/dist/esm/form/useAutoLabelId.js.map +1 -1
  257. package/dist/esm/grid/Cell.js +1 -0
  258. package/dist/esm/grid/Cell.js.map +1 -1
  259. package/dist/esm/grid/Grid.js +1 -0
  260. package/dist/esm/grid/Grid.js.map +1 -1
  261. package/dist/esm/helpers/ClientOnly.js +1 -0
  262. package/dist/esm/helpers/ClientOnly.js.map +1 -1
  263. package/dist/esm/helpers/Config.js +1 -0
  264. package/dist/esm/helpers/Config.js.map +1 -1
  265. package/dist/esm/helpers/LocaleProvider.js +1 -0
  266. package/dist/esm/helpers/LocaleProvider.js.map +1 -1
  267. package/dist/esm/helpers/Theme.js +1 -0
  268. package/dist/esm/helpers/Theme.js.map +1 -1
  269. package/dist/esm/helpers/flattenChildren.js +1 -0
  270. package/dist/esm/helpers/flattenChildren.js.map +1 -1
  271. package/dist/esm/helpers/inertProps.js +1 -0
  272. package/dist/esm/helpers/inertProps.js.map +1 -1
  273. package/dist/esm/helpers/localeFormat.js +1 -0
  274. package/dist/esm/helpers/localeFormat.js.map +1 -1
  275. package/dist/esm/helpers/overlayStack.js +1 -0
  276. package/dist/esm/helpers/overlayStack.js.map +1 -1
  277. package/dist/esm/helpers/portal.js +1 -0
  278. package/dist/esm/helpers/portal.js.map +1 -1
  279. package/dist/esm/helpers/scrollLock.js +1 -0
  280. package/dist/esm/helpers/scrollLock.js.map +1 -1
  281. package/dist/esm/helpers/statusRegion.js +1 -0
  282. package/dist/esm/helpers/statusRegion.js.map +1 -1
  283. package/dist/esm/helpers/typeahead.js +1 -0
  284. package/dist/esm/helpers/typeahead.js.map +1 -1
  285. package/dist/esm/helpers/useAnchoredPosition.js +1 -0
  286. package/dist/esm/helpers/useAnchoredPosition.js.map +1 -1
  287. package/dist/esm/helpers/useBulmaClasses.js +1 -0
  288. package/dist/esm/helpers/useBulmaClasses.js.map +1 -1
  289. package/dist/esm/helpers/useClientLayoutEffect.js +1 -0
  290. package/dist/esm/helpers/useClientLayoutEffect.js.map +1 -1
  291. package/dist/esm/helpers/useColorClasses.js +1 -0
  292. package/dist/esm/helpers/useColorClasses.js.map +1 -1
  293. package/dist/esm/helpers/useComboboxEngine.js +1 -0
  294. package/dist/esm/helpers/useComboboxEngine.js.map +1 -1
  295. package/dist/esm/helpers/useContextMenuTrigger.js +1 -0
  296. package/dist/esm/helpers/useContextMenuTrigger.js.map +1 -1
  297. package/dist/esm/helpers/useFlexboxClasses.js +1 -0
  298. package/dist/esm/helpers/useFlexboxClasses.js.map +1 -1
  299. package/dist/esm/helpers/useFocusTrap.js +1 -0
  300. package/dist/esm/helpers/useFocusTrap.js.map +1 -1
  301. package/dist/esm/helpers/useHoverOpen.js +1 -0
  302. package/dist/esm/helpers/useHoverOpen.js.map +1 -1
  303. package/dist/esm/helpers/useInertSiblings.js +1 -0
  304. package/dist/esm/helpers/useInertSiblings.js.map +1 -1
  305. package/dist/esm/helpers/useIsHydrated.js +1 -0
  306. package/dist/esm/helpers/useIsHydrated.js.map +1 -1
  307. package/dist/esm/helpers/useLatestRef.js +1 -0
  308. package/dist/esm/helpers/useLatestRef.js.map +1 -1
  309. package/dist/esm/helpers/useMenuKeys.js +1 -0
  310. package/dist/esm/helpers/useMenuKeys.js.map +1 -1
  311. package/dist/esm/helpers/useOtherClasses.js +1 -0
  312. package/dist/esm/helpers/useOtherClasses.js.map +1 -1
  313. package/dist/esm/helpers/useSpacingClasses.js +1 -0
  314. package/dist/esm/helpers/useSpacingClasses.js.map +1 -1
  315. package/dist/esm/helpers/useTreeView.js +1 -0
  316. package/dist/esm/helpers/useTreeView.js.map +1 -1
  317. package/dist/esm/helpers/useTypographyClasses.js +1 -0
  318. package/dist/esm/helpers/useTypographyClasses.js.map +1 -1
  319. package/dist/esm/helpers/useVisibilityClasses.js +1 -0
  320. package/dist/esm/helpers/useVisibilityClasses.js.map +1 -1
  321. package/dist/esm/layout/Container.js +1 -0
  322. package/dist/esm/layout/Container.js.map +1 -1
  323. package/dist/esm/layout/Footer.js +1 -0
  324. package/dist/esm/layout/Footer.js.map +1 -1
  325. package/dist/esm/layout/Hero.js +1 -0
  326. package/dist/esm/layout/Hero.js.map +1 -1
  327. package/dist/esm/layout/Level.js +1 -0
  328. package/dist/esm/layout/Level.js.map +1 -1
  329. package/dist/esm/layout/Media.js +1 -0
  330. package/dist/esm/layout/Media.js.map +1 -1
  331. package/dist/esm/layout/Section.js +1 -0
  332. package/dist/esm/layout/Section.js.map +1 -1
  333. package/dist/esm/layout/Splitter.js +1 -0
  334. package/dist/esm/layout/Splitter.js.map +1 -1
  335. package/package.json +2 -1
@@ -1 +1 @@
1
- {"version":3,"file":"Level.js","sources":["../../../src/layout/Level.tsx"],"sourcesContent":["import React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport { withSubComponents } from '../helpers/withSubComponents';\nimport {\n type AnchorOnlyAttributes,\n ANCHOR_ONLY_ATTRS,\n omitAttrs,\n} from '../helpers/anchorAttrs';\nimport {\n useBulmaClasses,\n BulmaClassesProps,\n validColors,\n} from '../helpers/useBulmaClasses';\n\n/**\n * Props for the Level component.\n */\nexport interface LevelProps\n extends\n React.HTMLAttributes<HTMLElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n /** Keeps the level horizontal on mobile (Bulma `is-mobile`). Without it\n * the level stacks vertically below tablet. */\n isMobile?: boolean;\n /** Bulma color modifier for the level. */\n color?: (typeof validColors)[number] | 'inherit' | 'current';\n /** Bulma background color helper. */\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n /** Bulma text color helper. */\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n /** Additional CSS classes. */\n className?: string;\n /** Level content (`Level.Left`, `Level.Right`, `Level.Item`). */\n children?: React.ReactNode;\n}\n\n/**\n * The `Level` component provides a flexible horizontal layout for your Bulma React UI, perfect for aligning items on the left and right, distributing items evenly, or centering statistics and controls.\n *\n * @function\n * @param {LevelProps} props - Props for the Level component.\n * @returns {JSX.Element} The rendered level.\n * @see {@link https://bulma.io/documentation/layout/level/ | Bulma Level documentation}\n */\nconst LevelComponent: React.FC<LevelProps> = ({\n isMobile,\n className,\n children,\n color,\n bgColor,\n textColor,\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor ?? color,\n backgroundColor: bgColor,\n ...props,\n });\n const mainClass = usePrefixedClassNames('level', {\n 'is-mobile': isMobile,\n });\n const levelClasses = classNames(mainClass, bulmaHelperClasses, className);\n return (\n <nav className={levelClasses} {...rest}>\n {children}\n </nav>\n );\n};\n\n/**\n * Props for the LevelLeft component.\n */\nexport interface LevelLeftProps\n extends\n React.HTMLAttributes<HTMLDivElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n /** Bulma color modifier. */\n color?: (typeof validColors)[number] | 'inherit' | 'current';\n /** Background color. */\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n /** Text color. */\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n /** Additional CSS classes. */\n className?: string;\n /** Content. */\n children?: React.ReactNode;\n}\n\n/**\n * Left-aligned content.\n *\n * @function\n * @param {LevelLeftProps} props - Props for the LevelLeft component.\n * @returns {JSX.Element} The rendered level left section.\n */\nexport const LevelLeft: React.FC<LevelLeftProps> = ({\n className,\n children,\n color,\n bgColor,\n textColor,\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor ?? color,\n backgroundColor: bgColor,\n ...props,\n });\n const mainClass = usePrefixedClassNames('level-left');\n const levelLeftClasses = classNames(mainClass, bulmaHelperClasses, className);\n return (\n <div className={levelLeftClasses} {...rest}>\n {children}\n </div>\n );\n};\n\n/**\n * Props for the LevelRight component.\n */\nexport interface LevelRightProps\n extends\n React.HTMLAttributes<HTMLDivElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n /** Bulma color modifier. */\n color?: (typeof validColors)[number] | 'inherit' | 'current';\n /** Background color. */\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n /** Text color. */\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n /** Additional CSS classes. */\n className?: string;\n /** Content. */\n children?: React.ReactNode;\n}\n\n/**\n * Right-aligned content.\n *\n * @function\n * @param {LevelRightProps} props - Props for the LevelRight component.\n * @returns {JSX.Element} The rendered level right section.\n */\nexport const LevelRight: React.FC<LevelRightProps> = ({\n className,\n children,\n color,\n bgColor,\n textColor,\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor ?? color,\n backgroundColor: bgColor,\n ...props,\n });\n const mainClass = usePrefixedClassNames('level-right');\n const levelRightClasses = classNames(\n mainClass,\n bulmaHelperClasses,\n className\n );\n return (\n <div className={levelRightClasses} {...rest}>\n {children}\n </div>\n );\n};\n\n/**\n * The derived set plus `rel`.\n *\n * `rel` is not an anchor-only attribute — React declares it on every element, so\n * `AnchorOnlyAttributes` excludes it — but this component has always withheld it\n * from a non-anchor, so it is named separately rather than folded into the shared\n * set. That separation is what says which names come from where.\n *\n * The annotation is load-bearing: without it a typo adds a key nobody strips, and\n * widening the key type to `string` also erases `omitAttrs`'s return type.\n */\nconst STRIP_FROM_NON_ANCHOR: Readonly<\n Record<keyof AnchorOnlyAttributes | 'rel', true>\n> = { ...ANCHOR_ONLY_ATTRS, rel: true };\n\n/**\n * Props for the LevelItem component.\n *\n * The anchor attributes arrive through `AnchorOnlyAttributes`, at every `as`, and\n * are forwarded only when the tag is an `<a>` — so `<Level.Item as=\"p\" download>` compiles and\n * renders a `<p>` without it. That asymmetry is deliberate for now: deriving\n * them from `as` instead is what makes the dead pair a type error, and it also\n * stops `const p: LevelItemProps = { href }` compiling for consumers who write\n * it today. #672 carries that half, labelled `next-major`.\n *\n * What that set must NOT become is a hand-written list. Enumerating only `href`,\n * `target` and `rel` made every other anchor attribute a type error even at\n * `as=\"a\"`, which is what #641 reported; `helpers/anchorAttrs.ts` derives it from\n * React instead, and `ANCHOR_ONLY_ATTRS` there is the guard to protect.\n */\nexport interface LevelItemProps\n extends\n AnchorOnlyAttributes,\n React.HTMLAttributes<\n HTMLDivElement | HTMLParagraphElement | HTMLAnchorElement\n >,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n /** Element type to render. */\n as?: 'div' | 'p' | 'a';\n /** Center the text in the item. */\n hasTextCentered?: boolean;\n /** Bulma color modifier. */\n color?: (typeof validColors)[number] | 'inherit' | 'current';\n /** Background color. */\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n /** Text color. */\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n /** Additional CSS classes. */\n className?: string;\n /** Content. */\n children?: React.ReactNode;\n}\n\n/**\n * Individual item, can be rendered as `div`, `p`, or `a`.\n *\n * @function\n * @param {LevelItemProps} props - Props for the LevelItem component.\n * @returns {JSX.Element} The rendered level item.\n */\nexport const LevelItem: React.FC<LevelItemProps> = ({\n as = 'div',\n hasTextCentered,\n className,\n children,\n color,\n bgColor,\n textColor,\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor ?? color,\n backgroundColor: bgColor,\n ...props,\n });\n const Tag = as;\n\n const mainClass = usePrefixedClassNames('level-item', {\n 'has-text-centered': hasTextCentered,\n });\n const levelItemClasses = classNames(mainClass, bulmaHelperClasses, className);\n\n // The anchor's own attributes reach an `<a>` and nothing else. The type\n // declares them at every `as` — narrowing that is source-breaking (#672) — so\n // the runtime is what keeps `<Level.Item as=\"p\" download>` from rendering a\n // dead attribute.\n // `STRIP_FROM_NON_ANCHOR` above names the set and why `rel` is in it.\n\n if (Tag === 'a') {\n return (\n <a className={levelItemClasses} {...rest}>\n {children}\n </a>\n );\n }\n\n const withoutAnchorAttrs = omitAttrs(rest, STRIP_FROM_NON_ANCHOR);\n\n return (\n <Tag className={levelItemClasses} {...withoutAnchorAttrs}>\n {children}\n </Tag>\n );\n};\n\nexport const Level = withSubComponents(\n LevelComponent,\n {\n Left: LevelLeft,\n Right: LevelRight,\n Item: LevelItem,\n },\n 'Level'\n);\n\nexport default Level;\n"],"names":["_jsx"],"mappings":"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"}
1
+ {"version":3,"file":"Level.js","sources":["../../../src/layout/Level.tsx"],"sourcesContent":["import React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport { withSubComponents } from '../helpers/withSubComponents';\nimport {\n type AnchorOnlyAttributes,\n ANCHOR_ONLY_ATTRS,\n omitAttrs,\n} from '../helpers/anchorAttrs';\nimport {\n useBulmaClasses,\n BulmaClassesProps,\n validColors,\n} from '../helpers/useBulmaClasses';\n\n/**\n * Props for the Level component.\n */\nexport interface LevelProps\n extends\n React.HTMLAttributes<HTMLElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n /** Keeps the level horizontal on mobile (Bulma `is-mobile`). Without it\n * the level stacks vertically below tablet. */\n isMobile?: boolean;\n /** Bulma color modifier for the level. */\n color?: (typeof validColors)[number] | 'inherit' | 'current';\n /** Bulma background color helper. */\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n /** Bulma text color helper. */\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n /** Additional CSS classes. */\n className?: string;\n /** Level content (`Level.Left`, `Level.Right`, `Level.Item`). */\n children?: React.ReactNode;\n}\n\n/**\n * The `Level` component provides a flexible horizontal layout for your Bulma React UI, perfect for aligning items on the left and right, distributing items evenly, or centering statistics and controls.\n *\n * @function\n * @param {LevelProps} props - Props for the Level component.\n * @returns {JSX.Element} The rendered level.\n * @see {@link https://bulma.io/documentation/layout/level/ | Bulma Level documentation}\n */\nconst LevelComponent: React.FC<LevelProps> = ({\n isMobile,\n className,\n children,\n color,\n bgColor,\n textColor,\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor ?? color,\n backgroundColor: bgColor,\n ...props,\n });\n const mainClass = usePrefixedClassNames('level', {\n 'is-mobile': isMobile,\n });\n const levelClasses = classNames(mainClass, bulmaHelperClasses, className);\n return (\n <nav className={levelClasses} {...rest}>\n {children}\n </nav>\n );\n};\n\n/**\n * Props for the LevelLeft component.\n */\nexport interface LevelLeftProps\n extends\n React.HTMLAttributes<HTMLDivElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n /** Bulma color modifier. */\n color?: (typeof validColors)[number] | 'inherit' | 'current';\n /** Background color. */\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n /** Text color. */\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n /** Additional CSS classes. */\n className?: string;\n /** Content. */\n children?: React.ReactNode;\n}\n\n/**\n * Left-aligned content.\n *\n * @function\n * @param {LevelLeftProps} props - Props for the LevelLeft component.\n * @returns {JSX.Element} The rendered level left section.\n */\nexport const LevelLeft: React.FC<LevelLeftProps> = ({\n className,\n children,\n color,\n bgColor,\n textColor,\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor ?? color,\n backgroundColor: bgColor,\n ...props,\n });\n const mainClass = usePrefixedClassNames('level-left');\n const levelLeftClasses = classNames(mainClass, bulmaHelperClasses, className);\n return (\n <div className={levelLeftClasses} {...rest}>\n {children}\n </div>\n );\n};\n\n/**\n * Props for the LevelRight component.\n */\nexport interface LevelRightProps\n extends\n React.HTMLAttributes<HTMLDivElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n /** Bulma color modifier. */\n color?: (typeof validColors)[number] | 'inherit' | 'current';\n /** Background color. */\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n /** Text color. */\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n /** Additional CSS classes. */\n className?: string;\n /** Content. */\n children?: React.ReactNode;\n}\n\n/**\n * Right-aligned content.\n *\n * @function\n * @param {LevelRightProps} props - Props for the LevelRight component.\n * @returns {JSX.Element} The rendered level right section.\n */\nexport const LevelRight: React.FC<LevelRightProps> = ({\n className,\n children,\n color,\n bgColor,\n textColor,\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor ?? color,\n backgroundColor: bgColor,\n ...props,\n });\n const mainClass = usePrefixedClassNames('level-right');\n const levelRightClasses = classNames(\n mainClass,\n bulmaHelperClasses,\n className\n );\n return (\n <div className={levelRightClasses} {...rest}>\n {children}\n </div>\n );\n};\n\n/**\n * The derived set plus `rel`.\n *\n * `rel` is not an anchor-only attribute — React declares it on every element, so\n * `AnchorOnlyAttributes` excludes it — but this component has always withheld it\n * from a non-anchor, so it is named separately rather than folded into the shared\n * set. That separation is what says which names come from where.\n *\n * The annotation is load-bearing: without it a typo adds a key nobody strips, and\n * widening the key type to `string` also erases `omitAttrs`'s return type.\n */\nconst STRIP_FROM_NON_ANCHOR: Readonly<\n Record<keyof AnchorOnlyAttributes | 'rel', true>\n> = { ...ANCHOR_ONLY_ATTRS, rel: true };\n\n/**\n * Props for the LevelItem component.\n *\n * The anchor attributes arrive through `AnchorOnlyAttributes`, at every `as`, and\n * are forwarded only when the tag is an `<a>` — so `<Level.Item as=\"p\" download>` compiles and\n * renders a `<p>` without it. That asymmetry is deliberate for now: deriving\n * them from `as` instead is what makes the dead pair a type error, and it also\n * stops `const p: LevelItemProps = { href }` compiling for consumers who write\n * it today. #672 carries that half, labelled `next-major`.\n *\n * What that set must NOT become is a hand-written list. Enumerating only `href`,\n * `target` and `rel` made every other anchor attribute a type error even at\n * `as=\"a\"`, which is what #641 reported; `helpers/anchorAttrs.ts` derives it from\n * React instead, and `ANCHOR_ONLY_ATTRS` there is the guard to protect.\n */\nexport interface LevelItemProps\n extends\n AnchorOnlyAttributes,\n React.HTMLAttributes<\n HTMLDivElement | HTMLParagraphElement | HTMLAnchorElement\n >,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n /** Element type to render. */\n as?: 'div' | 'p' | 'a';\n /** Center the text in the item. */\n hasTextCentered?: boolean;\n /** Bulma color modifier. */\n color?: (typeof validColors)[number] | 'inherit' | 'current';\n /** Background color. */\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n /** Text color. */\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n /** Additional CSS classes. */\n className?: string;\n /** Content. */\n children?: React.ReactNode;\n}\n\n/**\n * Individual item, can be rendered as `div`, `p`, or `a`.\n *\n * @function\n * @param {LevelItemProps} props - Props for the LevelItem component.\n * @returns {JSX.Element} The rendered level item.\n */\nexport const LevelItem: React.FC<LevelItemProps> = ({\n as = 'div',\n hasTextCentered,\n className,\n children,\n color,\n bgColor,\n textColor,\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor ?? color,\n backgroundColor: bgColor,\n ...props,\n });\n const Tag = as;\n\n const mainClass = usePrefixedClassNames('level-item', {\n 'has-text-centered': hasTextCentered,\n });\n const levelItemClasses = classNames(mainClass, bulmaHelperClasses, className);\n\n // The anchor's own attributes reach an `<a>` and nothing else. The type\n // declares them at every `as` — narrowing that is source-breaking (#672) — so\n // the runtime is what keeps `<Level.Item as=\"p\" download>` from rendering a\n // dead attribute.\n // `STRIP_FROM_NON_ANCHOR` above names the set and why `rel` is in it.\n\n if (Tag === 'a') {\n return (\n <a className={levelItemClasses} {...rest}>\n {children}\n </a>\n );\n }\n\n const withoutAnchorAttrs = omitAttrs(rest, STRIP_FROM_NON_ANCHOR);\n\n return (\n <Tag className={levelItemClasses} {...withoutAnchorAttrs}>\n {children}\n </Tag>\n );\n};\n\nexport const Level = withSubComponents(\n LevelComponent,\n {\n Left: LevelLeft,\n Right: LevelRight,\n Item: LevelItem,\n },\n 'Level'\n);\n\nexport default Level;\n"],"names":["_jsx"],"mappings":"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"}
@@ -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":"Media.js","sources":["../../../src/layout/Media.tsx"],"sourcesContent":["import React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport { withSubComponents } from '../helpers/withSubComponents';\nimport {\n useBulmaClasses,\n BulmaClassesProps,\n validColors,\n} from '../helpers/useBulmaClasses';\n\n/**\n * Props for the Media component.\n */\nexport interface MediaProps\n extends\n React.HTMLAttributes<HTMLElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n /** Element type for the root Media container. */\n as?: 'article' | 'div';\n /** Bulma color modifier. */\n color?: (typeof validColors)[number] | 'inherit' | 'current';\n /** Bulma background color helper. */\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n /** Bulma text color helper. */\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n /** Additional CSS classes. */\n className?: string;\n /** Content inside the media container. */\n children?: React.ReactNode;\n}\n\n/**\n * The `Media` component implements Bulma’s powerful media object layout for React.\n *\n * @function\n * @param {MediaProps} props - Props for the Media component.\n * @returns {JSX.Element} The rendered media container.\n * @see {@link https://bulma.io/documentation/layout/media-object/ | Bulma Media documentation}\n */\nconst MediaComponent: React.FC<MediaProps> = ({\n as = 'article',\n className,\n children,\n color,\n bgColor,\n textColor,\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor ?? color,\n backgroundColor: bgColor,\n ...props,\n });\n const Tag = as;\n const mainClass = usePrefixedClassNames('media');\n const mediaClasses = classNames(mainClass, bulmaHelperClasses, className);\n return (\n <Tag className={mediaClasses} {...rest}>\n {children}\n </Tag>\n );\n};\n\n/**\n * Props for the MediaLeft component.\n */\nexport interface MediaLeftProps\n extends\n React.HTMLAttributes<HTMLElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n /** Element type to render. */\n as?: 'figure' | 'div';\n /** Bulma color modifier. */\n color?: (typeof validColors)[number] | 'inherit' | 'current';\n /** Background color. */\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n /** Text color. */\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n /** Additional CSS classes. */\n className?: string;\n /** Content. */\n children?: React.ReactNode;\n}\n\n/**\n * For avatars, thumbnails, icons (renders as `figure` or `div`)\n *\n * @function\n * @param {MediaLeftProps} props - Props for the MediaLeft component.\n * @returns {JSX.Element} The rendered media left section.\n */\nexport const MediaLeft: React.FC<MediaLeftProps> = ({\n as = 'figure',\n className,\n children,\n color,\n bgColor,\n textColor,\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor ?? color,\n backgroundColor: bgColor,\n ...props,\n });\n const Tag = as;\n const mainClass = usePrefixedClassNames('media-left');\n const mediaLeftClasses = classNames(mainClass, bulmaHelperClasses, className);\n return (\n <Tag className={mediaLeftClasses} {...rest}>\n {children}\n </Tag>\n );\n};\n\n/**\n * Props for the MediaContent component.\n */\nexport interface MediaContentProps\n extends\n React.HTMLAttributes<HTMLDivElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n /** Bulma color modifier. */\n color?: (typeof validColors)[number] | 'inherit' | 'current';\n /** Background color. */\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n /** Text color. */\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n /** Additional CSS classes. */\n className?: string;\n /** Content. */\n children?: React.ReactNode;\n}\n\n/**\n * Main content (renders as `div`)\n *\n * @function\n * @param {MediaContentProps} props - Props for the MediaContent component.\n * @returns {JSX.Element} The rendered media content section.\n */\nexport const MediaContent: React.FC<MediaContentProps> = ({\n className,\n children,\n color,\n bgColor,\n textColor,\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor ?? color,\n backgroundColor: bgColor,\n ...props,\n });\n const mainClass = usePrefixedClassNames('media-content');\n const mediaContentClasses = classNames(\n mainClass,\n bulmaHelperClasses,\n className\n );\n return (\n <div className={mediaContentClasses} {...rest}>\n {children}\n </div>\n );\n};\n\n/**\n * Props for the MediaRight component.\n */\nexport interface MediaRightProps\n extends\n React.HTMLAttributes<HTMLDivElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n /** Bulma color modifier. */\n color?: (typeof validColors)[number] | 'inherit' | 'current';\n /** Background color. */\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n /** Text color. */\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n /** Additional CSS classes. */\n className?: string;\n /** Content. */\n children?: React.ReactNode;\n}\n\n/**\n * Actions or controls (renders as `div`)\n *\n * @function\n * @param {MediaRightProps} props - Props for the MediaRight component.\n * @returns {JSX.Element} The rendered media right section.\n */\nexport const MediaRight: React.FC<MediaRightProps> = ({\n className,\n children,\n color,\n bgColor,\n textColor,\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor ?? color,\n backgroundColor: bgColor,\n ...props,\n });\n const mainClass = usePrefixedClassNames('media-right');\n const mediaRightClasses = classNames(\n mainClass,\n bulmaHelperClasses,\n className\n );\n return (\n <div className={mediaRightClasses} {...rest}>\n {children}\n </div>\n );\n};\n\n/** Media component with Left, Content, and Right sub-components. */\nexport const Media = withSubComponents(\n MediaComponent,\n {\n Left: MediaLeft,\n Content: MediaContent,\n Right: MediaRight,\n },\n 'Media'\n);\n\nexport default Media;\n"],"names":["_jsx"],"mappings":"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"}
1
+ {"version":3,"file":"Media.js","sources":["../../../src/layout/Media.tsx"],"sourcesContent":["import React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport { withSubComponents } from '../helpers/withSubComponents';\nimport {\n useBulmaClasses,\n BulmaClassesProps,\n validColors,\n} from '../helpers/useBulmaClasses';\n\n/**\n * Props for the Media component.\n */\nexport interface MediaProps\n extends\n React.HTMLAttributes<HTMLElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n /** Element type for the root Media container. */\n as?: 'article' | 'div';\n /** Bulma color modifier. */\n color?: (typeof validColors)[number] | 'inherit' | 'current';\n /** Bulma background color helper. */\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n /** Bulma text color helper. */\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n /** Additional CSS classes. */\n className?: string;\n /** Content inside the media container. */\n children?: React.ReactNode;\n}\n\n/**\n * The `Media` component implements Bulma’s powerful media object layout for React.\n *\n * @function\n * @param {MediaProps} props - Props for the Media component.\n * @returns {JSX.Element} The rendered media container.\n * @see {@link https://bulma.io/documentation/layout/media-object/ | Bulma Media documentation}\n */\nconst MediaComponent: React.FC<MediaProps> = ({\n as = 'article',\n className,\n children,\n color,\n bgColor,\n textColor,\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor ?? color,\n backgroundColor: bgColor,\n ...props,\n });\n const Tag = as;\n const mainClass = usePrefixedClassNames('media');\n const mediaClasses = classNames(mainClass, bulmaHelperClasses, className);\n return (\n <Tag className={mediaClasses} {...rest}>\n {children}\n </Tag>\n );\n};\n\n/**\n * Props for the MediaLeft component.\n */\nexport interface MediaLeftProps\n extends\n React.HTMLAttributes<HTMLElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n /** Element type to render. */\n as?: 'figure' | 'div';\n /** Bulma color modifier. */\n color?: (typeof validColors)[number] | 'inherit' | 'current';\n /** Background color. */\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n /** Text color. */\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n /** Additional CSS classes. */\n className?: string;\n /** Content. */\n children?: React.ReactNode;\n}\n\n/**\n * For avatars, thumbnails, icons (renders as `figure` or `div`)\n *\n * @function\n * @param {MediaLeftProps} props - Props for the MediaLeft component.\n * @returns {JSX.Element} The rendered media left section.\n */\nexport const MediaLeft: React.FC<MediaLeftProps> = ({\n as = 'figure',\n className,\n children,\n color,\n bgColor,\n textColor,\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor ?? color,\n backgroundColor: bgColor,\n ...props,\n });\n const Tag = as;\n const mainClass = usePrefixedClassNames('media-left');\n const mediaLeftClasses = classNames(mainClass, bulmaHelperClasses, className);\n return (\n <Tag className={mediaLeftClasses} {...rest}>\n {children}\n </Tag>\n );\n};\n\n/**\n * Props for the MediaContent component.\n */\nexport interface MediaContentProps\n extends\n React.HTMLAttributes<HTMLDivElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n /** Bulma color modifier. */\n color?: (typeof validColors)[number] | 'inherit' | 'current';\n /** Background color. */\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n /** Text color. */\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n /** Additional CSS classes. */\n className?: string;\n /** Content. */\n children?: React.ReactNode;\n}\n\n/**\n * Main content (renders as `div`)\n *\n * @function\n * @param {MediaContentProps} props - Props for the MediaContent component.\n * @returns {JSX.Element} The rendered media content section.\n */\nexport const MediaContent: React.FC<MediaContentProps> = ({\n className,\n children,\n color,\n bgColor,\n textColor,\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor ?? color,\n backgroundColor: bgColor,\n ...props,\n });\n const mainClass = usePrefixedClassNames('media-content');\n const mediaContentClasses = classNames(\n mainClass,\n bulmaHelperClasses,\n className\n );\n return (\n <div className={mediaContentClasses} {...rest}>\n {children}\n </div>\n );\n};\n\n/**\n * Props for the MediaRight component.\n */\nexport interface MediaRightProps\n extends\n React.HTMLAttributes<HTMLDivElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n /** Bulma color modifier. */\n color?: (typeof validColors)[number] | 'inherit' | 'current';\n /** Background color. */\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n /** Text color. */\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n /** Additional CSS classes. */\n className?: string;\n /** Content. */\n children?: React.ReactNode;\n}\n\n/**\n * Actions or controls (renders as `div`)\n *\n * @function\n * @param {MediaRightProps} props - Props for the MediaRight component.\n * @returns {JSX.Element} The rendered media right section.\n */\nexport const MediaRight: React.FC<MediaRightProps> = ({\n className,\n children,\n color,\n bgColor,\n textColor,\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor ?? color,\n backgroundColor: bgColor,\n ...props,\n });\n const mainClass = usePrefixedClassNames('media-right');\n const mediaRightClasses = classNames(\n mainClass,\n bulmaHelperClasses,\n className\n );\n return (\n <div className={mediaRightClasses} {...rest}>\n {children}\n </div>\n );\n};\n\n/** Media component with Left, Content, and Right sub-components. */\nexport const Media = withSubComponents(\n MediaComponent,\n {\n Left: MediaLeft,\n Content: MediaContent,\n Right: MediaRight,\n },\n 'Media'\n);\n\nexport default Media;\n"],"names":["_jsx"],"mappings":"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"}
@@ -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":"Section.js","sources":["../../../src/layout/Section.tsx"],"sourcesContent":["import React from 'react';\nimport classNames, { usePrefixedClassNames } from '../helpers/classNames';\nimport {\n useBulmaClasses,\n BulmaClassesProps,\n validColors,\n validSchemeColors,\n} from '../helpers/useBulmaClasses';\nimport { mergeBulmaStyles } from '../helpers/mergeBulmaStyles';\n\n/**\n * Section size values for Bulma.\n */\ntype SectionSize = 'medium' | 'large';\n\n/**\n * Props for the Section component.\n */\nexport interface SectionProps\n extends\n React.HTMLAttributes<HTMLElement>,\n Omit<BulmaClassesProps, 'backgroundColor' | 'color'> {\n /** Bulma color modifier for text. */\n color?: (typeof validColors)[number] | 'inherit' | 'current';\n /**\n * Bulma background color helper. `scheme-*` values render as a\n * dark-mode-safe inline `background-color: var(--bulma-scheme-*)` instead\n * of a class. The `scheme-invert*` values do not change text color — pair\n * them with a contrasting foreground.\n */\n bgColor?:\n | (typeof validColors)[number]\n | (typeof validSchemeColors)[number]\n | 'inherit'\n | 'current';\n /** Bulma text color helper. */\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n /** Section size for extra vertical spacing. */\n size?: SectionSize;\n /** Additional CSS classes. */\n className?: string;\n /** Section content. */\n children?: React.ReactNode;\n}\n\n/**\n * The `Section` component provides vertical spacing and visual separation for your Bulma React UI.\n *\n * @function\n * @param {SectionProps} props - Props for the Section component.\n * @returns {JSX.Element} The rendered section.\n * @see {@link https://bulma.io/documentation/layout/section/ | Bulma Section documentation}\n */\nexport const Section: React.FC<SectionProps> = ({\n size,\n className,\n children,\n color,\n bgColor,\n textColor,\n style,\n ...props\n}) => {\n const { bulmaHelperClasses, bulmaHelperStyles, rest } = useBulmaClasses({\n color: textColor ?? color,\n backgroundColor: bgColor,\n ...props,\n });\n\n const mainClass = usePrefixedClassNames('section');\n const sectionModifiers = usePrefixedClassNames('', {\n [`is-${size}`]: size,\n });\n const sectionClasses = classNames(\n mainClass,\n sectionModifiers,\n className,\n bulmaHelperClasses\n );\n\n return (\n <section\n className={sectionClasses}\n style={mergeBulmaStyles(bulmaHelperStyles, style)}\n {...rest}\n >\n {children}\n </section>\n );\n};\n"],"names":["_jsx"],"mappings":";;;;;;AA6CA;;;;;;;AAOG;AACI,MAAM,OAAO,GAA2B,CAAC,EAC9C,IAAI,EACJ,SAAS,EACT,QAAQ,EACR,KAAK,EACL,OAAO,EACP,SAAS,EACT,KAAK,EACL,GAAG,KAAK,EACT,KAAI;IACH,MAAM,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,IAAI,EAAE,GAAG,eAAe,CAAC;QACtE,KAAK,EAAE,SAAS,IAAI,KAAK;AACzB,QAAA,eAAe,EAAE,OAAO;AACxB,QAAA,GAAG,KAAK;AACT,KAAA,CAAC;AAEF,IAAA,MAAM,SAAS,GAAG,qBAAqB,CAAC,SAAS,CAAC;AAClD,IAAA,MAAM,gBAAgB,GAAG,qBAAqB,CAAC,EAAE,EAAE;AACjD,QAAA,CAAC,CAAA,GAAA,EAAM,IAAI,CAAA,CAAE,GAAG,IAAI;AACrB,KAAA,CAAC;AACF,IAAA,MAAM,cAAc,GAAG,UAAU,CAC/B,SAAS,EACT,gBAAgB,EAChB,SAAS,EACT,kBAAkB,CACnB;IAED,QACEA,iBACE,SAAS,EAAE,cAAc,EACzB,KAAK,EAAE,gBAAgB,CAAC,iBAAiB,EAAE,KAAK,CAAC,EAAA,GAC7C,IAAI,YAEP,QAAQ,EAAA,CACD;AAEd;;"}
1
+ {"version":3,"file":"Section.js","sources":["../../../src/layout/Section.tsx"],"sourcesContent":["import React from 'react';\nimport classNames, { usePrefixedClassNames } from '../helpers/classNames';\nimport {\n useBulmaClasses,\n BulmaClassesProps,\n validColors,\n validSchemeColors,\n} from '../helpers/useBulmaClasses';\nimport { mergeBulmaStyles } from '../helpers/mergeBulmaStyles';\n\n/**\n * Section size values for Bulma.\n */\ntype SectionSize = 'medium' | 'large';\n\n/**\n * Props for the Section component.\n */\nexport interface SectionProps\n extends\n React.HTMLAttributes<HTMLElement>,\n Omit<BulmaClassesProps, 'backgroundColor' | 'color'> {\n /** Bulma color modifier for text. */\n color?: (typeof validColors)[number] | 'inherit' | 'current';\n /**\n * Bulma background color helper. `scheme-*` values render as a\n * dark-mode-safe inline `background-color: var(--bulma-scheme-*)` instead\n * of a class. The `scheme-invert*` values do not change text color — pair\n * them with a contrasting foreground.\n */\n bgColor?:\n | (typeof validColors)[number]\n | (typeof validSchemeColors)[number]\n | 'inherit'\n | 'current';\n /** Bulma text color helper. */\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n /** Section size for extra vertical spacing. */\n size?: SectionSize;\n /** Additional CSS classes. */\n className?: string;\n /** Section content. */\n children?: React.ReactNode;\n}\n\n/**\n * The `Section` component provides vertical spacing and visual separation for your Bulma React UI.\n *\n * @function\n * @param {SectionProps} props - Props for the Section component.\n * @returns {JSX.Element} The rendered section.\n * @see {@link https://bulma.io/documentation/layout/section/ | Bulma Section documentation}\n */\nexport const Section: React.FC<SectionProps> = ({\n size,\n className,\n children,\n color,\n bgColor,\n textColor,\n style,\n ...props\n}) => {\n const { bulmaHelperClasses, bulmaHelperStyles, rest } = useBulmaClasses({\n color: textColor ?? color,\n backgroundColor: bgColor,\n ...props,\n });\n\n const mainClass = usePrefixedClassNames('section');\n const sectionModifiers = usePrefixedClassNames('', {\n [`is-${size}`]: size,\n });\n const sectionClasses = classNames(\n mainClass,\n sectionModifiers,\n className,\n bulmaHelperClasses\n );\n\n return (\n <section\n className={sectionClasses}\n style={mergeBulmaStyles(bulmaHelperStyles, style)}\n {...rest}\n >\n {children}\n </section>\n );\n};\n"],"names":["_jsx"],"mappings":";;;;;;;AA6CA;;;;;;;AAOG;AACI,MAAM,OAAO,GAA2B,CAAC,EAC9C,IAAI,EACJ,SAAS,EACT,QAAQ,EACR,KAAK,EACL,OAAO,EACP,SAAS,EACT,KAAK,EACL,GAAG,KAAK,EACT,KAAI;IACH,MAAM,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,IAAI,EAAE,GAAG,eAAe,CAAC;QACtE,KAAK,EAAE,SAAS,IAAI,KAAK;AACzB,QAAA,eAAe,EAAE,OAAO;AACxB,QAAA,GAAG,KAAK;AACT,KAAA,CAAC;AAEF,IAAA,MAAM,SAAS,GAAG,qBAAqB,CAAC,SAAS,CAAC;AAClD,IAAA,MAAM,gBAAgB,GAAG,qBAAqB,CAAC,EAAE,EAAE;AACjD,QAAA,CAAC,CAAA,GAAA,EAAM,IAAI,CAAA,CAAE,GAAG,IAAI;AACrB,KAAA,CAAC;AACF,IAAA,MAAM,cAAc,GAAG,UAAU,CAC/B,SAAS,EACT,gBAAgB,EAChB,SAAS,EACT,kBAAkB,CACnB;IAED,QACEA,iBACE,SAAS,EAAE,cAAc,EACzB,KAAK,EAAE,gBAAgB,CAAC,iBAAiB,EAAE,KAAK,CAAC,EAAA,GAC7C,IAAI,YAEP,QAAQ,EAAA,CACD;AAEd;;"}
@@ -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 React, { createContext, forwardRef, useContext, useId, useState, useRef, useCallback, useEffect } from 'react';
4
5
  import { usePrefixedClassNames, classNames } from '../helpers/classNames.js';
@@ -1 +1 @@
1
- {"version":3,"file":"Splitter.js","sources":["../../../src/layout/Splitter.tsx"],"sourcesContent":["import React, {\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useEffect,\n useId,\n useRef,\n useState,\n} from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport {\n useBulmaClasses,\n BulmaClassesProps,\n validColors,\n} from '../helpers/useBulmaClasses';\nimport { flattenChildren } from '../helpers/flattenChildren';\nimport { withSubComponents } from '../helpers/withSubComponents';\nimport { useClientLayoutEffect } from '../helpers/useClientLayoutEffect';\nimport { warnOnce } from '../helpers/devWarnings';\nimport {\n defaultSizes,\n fitSizes,\n limitToPercent,\n PaneBounds,\n primaryOf,\n primaryRange,\n resizePair,\n sameSizes,\n SplitterLimit,\n} from '../helpers/splitterLayout';\n\n/** The way the panes run: side by side, or one above the other. */\nexport type SplitterOrientation = 'horizontal' | 'vertical';\n\n/**\n * Props for Splitter.Pane, one of the panes. The helper props, the other\n * attributes and the `ref` land on its `<div>`.\n *\n * @extraProp {React.Ref<HTMLDivElement>} [ref] - Ref forwarded to the pane's `<div>`.\n * @extraProp {string} [id] - The pane's id, which its handle's `aria-controls` points at. The splitter makes one when there's none.\n */\nexport interface SplitterPaneProps\n extends\n Omit<React.HTMLAttributes<HTMLDivElement>, 'color'>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n /** Additional CSS classes to apply. */\n className?: string;\n /**\n * What the pane is, such as \"Files\". It names the handle that speaks for\n * this pane, which is announced as \"Files, separator, 25\". That's the\n * handle after it, or the one before it when only this pane, of the two\n * beside that handle, can collapse. A development build warns when a\n * handle's pane has none.\n */\n label?: string;\n /**\n * Its starting size, in percent of the room the panes share. Panes without\n * one share what's left equally, and a total over 100 is scaled down.\n */\n defaultSize?: number;\n /**\n * The smallest it can be dragged: a percentage, or a CSS length in `px` or\n * `rem` such as `\"12rem\"`. A length applies once the splitter has measured\n * itself in the browser, so the server renders the default size.\n */\n minSize?: SplitterLimit;\n /** The largest it can be dragged, in the same units as `minSize`. */\n maxSize?: SplitterLimit;\n /**\n * Lets it collapse: dragging it below half its `minSize` shuts it, and\n * Enter on its handle shuts it and brings it back at the size it had. It\n * collapses only when the pane across its handle can take its room within\n * that pane's `maxSize`, since a handle moves only the two panes beside it.\n * A collapsed pane stays mounted, hidden, so it keeps its state.\n */\n collapsible?: boolean;\n /**\n * Whether it's collapsed, for a `collapsible` pane. With it, the state is\n * yours: a drag, a key or a double-click that would collapse it or bring\n * it back calls `onCollapsedChange` and leaves it as it is, and it changes\n * when `collapsed` does.\n */\n collapsed?: boolean;\n /** Whether a `collapsible` pane starts collapsed. */\n defaultCollapsed?: boolean;\n /**\n * Called when a drag, a key or a double-click collapses it or brings it\n * back, or, with `collapsed`, would. Not called for a change you made with\n * `collapsed`.\n */\n onCollapsedChange?: (collapsed: boolean) => void;\n /** What's in it. Content that scrolls belongs in a `ScrollArea`, so a keyboard can reach it. */\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 * Props for the Splitter component. The helper props, the other attributes\n * and the `ref` land on the root `<div>`.\n *\n * @extraProp {React.Ref<HTMLDivElement>} [ref] - Ref forwarded to the root `<div>`.\n */\nexport interface SplitterProps\n extends\n Omit<React.HTMLAttributes<HTMLDivElement>, 'color'>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n /** Additional CSS classes to apply. */\n className?: string;\n /**\n * `Splitter.Pane`s, two or more, each a direct child, with Fragments\n * opened up. A handle goes between each pair. Changing which panes there\n * are puts every pane back to its default size.\n */\n children?: React.ReactNode;\n /**\n * The way the panes run: side by side (`horizontal`) or one above the\n * other (`vertical`).\n */\n orientation?: SplitterOrientation;\n /**\n * The splitter's height. A number is pixels, and a string any CSS length.\n * A vertical splitter needs a height to split.\n */\n height?: number | string;\n /**\n * Each pane's size, in percent, in order, adding up to 100. With it, the\n * sizes are yours: update them from `onSizesChange`. Without it, each\n * pane starts at its `defaultSize`.\n */\n sizes?: number[];\n /**\n * Called with every pane's size, in percent, whenever they change: on\n * each step of a drag or a key, on a collapse and on a reset.\n */\n onSizesChange?: (sizes: number[]) => void;\n /**\n * How far an arrow key moves a handle, in percent. Shift moves ten times\n * as far.\n */\n step?: number;\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/** What the splitter tells each pane it renders. */\ninterface PaneState {\n id: string;\n size: number;\n collapsed: boolean;\n}\n\nconst PaneContext = createContext<PaneState | null>(null);\n\n/**\n * One pane of a Splitter, sized by the splitter around it.\n *\n * @function\n * @param {SplitterPaneProps} props - Props for Splitter.Pane.\n * @param {React.Ref<HTMLDivElement>} ref - Forwarded ref to the pane's `<div>`.\n * @returns {JSX.Element} The rendered pane.\n */\nexport const SplitterPane = forwardRef<HTMLDivElement, SplitterPaneProps>(\n (\n {\n className,\n textColor,\n bgColor,\n label: _label,\n defaultSize: _defaultSize,\n minSize: _minSize,\n maxSize: _maxSize,\n collapsible: _collapsible,\n collapsed: _collapsed,\n defaultCollapsed: _defaultCollapsed,\n onCollapsedChange: _onCollapsedChange,\n style,\n children,\n ...props\n },\n ref\n ) => {\n const state = useContext(PaneContext);\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor,\n backgroundColor: bgColor,\n ...props,\n });\n const paneClass = usePrefixedClassNames('splitter-pane', {\n 'is-collapsed': !!state?.collapsed,\n });\n return (\n <div\n ref={ref}\n className={classNames(paneClass, bulmaHelperClasses, className)}\n {...rest}\n id={state?.id ?? rest.id}\n // A percentage over a zero basis, so the server and the client lay\n // it out the same, with no measuring.\n style={state ? { ...style, flex: `${state.size} 1 0px` } : style}\n hidden={state?.collapsed || rest.hidden}\n >\n {children}\n </div>\n );\n }\n);\n\nSplitterPane.displayName = 'Splitter.Pane';\n\n/** A pane's props as the splitter reads them off its child. */\ntype PaneElement = React.ReactElement<SplitterPaneProps>;\n\nconst isPane = (child: React.ReactNode): child is PaneElement =>\n React.isValidElement(child) && child.type === SplitterPane;\n\n/** The bounds with pane `i`'s changed, for a move that mustn't snap it shut. */\nconst withBound = (\n bounds: PaneBounds[],\n i: number,\n change: Partial<PaneBounds>\n) => bounds.map((bound, j) => (j === i ? { ...bound, ...change } : bound));\n\n/** The bounds with neither pane beside handle `h` able to shut. */\nconst opened = (bounds: PaneBounds[], h: number) =>\n withBound(withBound(bounds, h, { collapsible: false }), h + 1, {\n collapsible: false,\n });\n\n/**\n * The handle a pane's collapse goes through: the one that speaks for it. A\n * collapsible pane that isn't last always has the handle after it, so the\n * one left without is a last pane whose neighbour can collapse too, and it\n * goes through the handle before it.\n */\nconst handleFor = (pane: number, bounds: PaneBounds[]) =>\n pane < bounds.length - 1 && primaryOf(pane, bounds) === pane\n ? pane\n : pane - 1;\n\n/**\n * The `Splitter` component lays out two or more panes side by side or one above the other, with a handle between each pair to drag or move by keyboard.\n *\n * Each handle is a focusable `separator`, named by the `label` of the pane\n * it speaks for. Sizes are percentages, so the server renders the layout\n * the browser does, and `minSize` and `maxSize` also take `px` and `rem`. A\n * `collapsible` pane shuts when dragged below half its minimum, and Enter on\n * its handle shuts it and brings it back. It doesn't store sizes itself:\n * keep them with `sizes` and `onSizesChange`.\n *\n * @function\n * @param {SplitterProps} props - Props for the Splitter component.\n * @param {React.Ref<HTMLDivElement>} ref - Forwarded ref to the root `<div>`.\n * @returns {JSX.Element} The rendered splitter.\n *\n * @example\n * <Splitter height={480}>\n * <Splitter.Pane label=\"Files\" defaultSize={25} minSize=\"12rem\">…</Splitter.Pane>\n * <Splitter.Pane label=\"Editor\">…</Splitter.Pane>\n * </Splitter>\n */\nconst SplitterRoot = forwardRef<HTMLDivElement, SplitterProps>(\n (\n {\n className,\n style,\n textColor,\n bgColor,\n orientation = 'horizontal',\n height,\n sizes: sizesProp,\n onSizesChange,\n step = 1,\n children,\n ...props\n },\n ref\n ) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor,\n backgroundColor: bgColor,\n ...props,\n });\n const vertical = orientation === 'vertical';\n const rootClass = usePrefixedClassNames('splitter', {\n 'is-vertical': vertical,\n });\n const handleClass = usePrefixedClassNames('splitter-handle');\n const activeClass = usePrefixedClassNames('is-active');\n\n const panes = flattenChildren(children).filter(isPane);\n const baseId = useId();\n const ids = panes.map((pane, i) => pane.props.id ?? `${baseId}-pane-${i}`);\n\n // The room the panes share, in pixels, and a rem, both measured in the\n // browser. Until then, only percentage limits apply.\n const [length, setLength] = useState<number | null>(null);\n const [remPx, setRemPx] = useState(16);\n const bounds: PaneBounds[] = panes.map(({ props: pane }) => ({\n min: Math.max(0, limitToPercent(pane.minSize, length, remPx) ?? 0),\n max: Math.min(100, limitToPercent(pane.maxSize, length, remPx) ?? 100),\n collapsible: !!pane.collapsible,\n }));\n const boundsKey = JSON.stringify(bounds);\n\n // Shuts pane `i`, giving its room to the pane across the handle that\n // speaks for it, when that pane can take it within its maximum, as a\n // drag would. A lone pane has no handle and nowhere to give its room.\n const collapseIn = (current: number[], i: number) => {\n if (current.length < 2) return current;\n const h = handleFor(i, bounds);\n const across = h === i ? i + 1 : h;\n if (current[across] + current[i] > bounds[across].max + 1e-6) {\n return current;\n }\n const next = [...current];\n next[across] += next[i];\n next[i] = 0;\n return next;\n };\n\n const startSizes = () => {\n const base = defaultSizes(panes.map(pane => pane.props.defaultSize));\n let next = fitSizes(base, bounds);\n panes.forEach(({ props: pane }, i) => {\n if (pane.collapsible && (pane.collapsed ?? pane.defaultCollapsed)) {\n next = collapseIn(next, i);\n }\n });\n return next;\n };\n\n const paneKey = ids.join('|');\n const [state, setState] = useState(() => ({\n key: paneKey,\n sizes: startSizes(),\n }));\n // A different set of panes starts over from the defaults.\n let uncontrolled = state.sizes;\n if (state.key !== paneKey) {\n uncontrolled = startSizes();\n setState({ key: paneKey, sizes: uncontrolled });\n }\n const sizes =\n sizesProp && sizesProp.length === panes.length ? sizesProp : uncontrolled;\n\n // The size each pane comes back at after it's shut: the last size it had\n // open, or its default.\n const restoreRef = useRef<number[]>([]);\n const defaults = defaultSizes(panes.map(pane => pane.props.defaultSize));\n sizes.forEach((size, i) => {\n if (size > 0) restoreRef.current[i] = size;\n else restoreRef.current[i] ??= defaults[i];\n });\n\n const collapsedAt = (layout: number[]) =>\n layout.map((size, i) => bounds[i].collapsible && size <= 1e-6);\n\n // Moves the layout on, telling the app and each pane whose collapse\n // changed, unless the change came from its own `collapsed`. A move that\n // would collapse or open a pane whose `collapsed` the app holds only\n // asks: the app's answer comes back through `collapsed`.\n const sizesRef = useRef(sizes);\n sizesRef.current = sizes;\n const panesRef = useRef(panes);\n panesRef.current = panes;\n const commit = (next: number[], fromProp = false) => {\n const previous = sizesRef.current;\n if (sameSizes(previous, next)) return;\n const before = collapsedAt(previous);\n const after = collapsedAt(next);\n const flipped = after.flatMap((shut, i) =>\n shut !== before[i] ? [i] : []\n );\n if (\n !fromProp &&\n flipped.some(i => panesRef.current[i].props.collapsed !== undefined)\n ) {\n flipped.forEach(i =>\n panesRef.current[i].props.onCollapsedChange?.(after[i])\n );\n return;\n }\n sizesRef.current = next;\n if (!sizesProp) setState(current => ({ ...current, sizes: next }));\n onSizesChange?.(next);\n if (!fromProp) {\n flipped.forEach(i =>\n panesRef.current[i].props.onCollapsedChange?.(after[i])\n );\n }\n };\n\n // Brings pane `i` back at its restore size, taken from across the handle\n // that speaks for it.\n // A lone pane never shuts, so there's always a handle here.\n const expand = (current: number[], i: number) => {\n const h = handleFor(i, bounds);\n const target = restoreRef.current[i];\n const total = current[h] + current[h + 1];\n return resizePair(\n current,\n h,\n h === i ? target : total - target,\n // Opening one pane snaps neither shut: it stops at the limits.\n opened(bounds, h)\n );\n };\n\n // A pane's own `collapsed` moving: shut it or bring it back, before the\n // browser paints.\n const collapsedProps = panes.map(pane =>\n pane.props.collapsible ? pane.props.collapsed : undefined\n );\n const collapsedKey = JSON.stringify(collapsedProps);\n useClientLayoutEffect(() => {\n const current = sizesRef.current;\n const shut = collapsedAt(current);\n let next = current;\n collapsedProps.forEach((wanted, i) => {\n if (wanted === undefined || wanted === shut[i]) return;\n next = wanted ? collapseIn(next, i) : expand(next, i);\n });\n commit(next, true);\n // collapsedKey stands for collapsedProps.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [collapsedKey]);\n\n // Measuring: the room the panes share, so `px` and `rem` limits can turn\n // into percentages, then the layout fitted to them.\n const rootRef = useRef<HTMLDivElement | null>(null);\n const setRefs = useCallback(\n (node: HTMLDivElement | null) => {\n rootRef.current = node;\n if (typeof ref === 'function') return ref(node);\n if (ref) ref.current = node;\n },\n [ref]\n );\n // The room the panes share: the root's length less its handles'.\n const roomOf = useCallback(() => {\n const root = rootRef.current;\n /* istanbul ignore next: measuring only runs while it's mounted */\n if (!root) return null;\n const along = (el: Element) => {\n const rect = el.getBoundingClientRect();\n return vertical ? rect.height : rect.width;\n };\n const handles = Array.from(root.children).filter(child =>\n child.matches('[role=\"separator\"]')\n );\n const room =\n along(root) - handles.reduce((sum, handle) => sum + along(handle), 0);\n return room > 0 ? room : null;\n }, [vertical]);\n const measure = useCallback(() => {\n setLength(roomOf());\n setRemPx(\n parseFloat(getComputedStyle(document.documentElement).fontSize) || 16\n );\n }, [roomOf]);\n useClientLayoutEffect(() => {\n measure();\n const root = rootRef.current;\n if (!root || typeof ResizeObserver === 'undefined') return;\n const resizes = new ResizeObserver(measure);\n resizes.observe(root);\n return () => resizes.disconnect();\n }, [measure]);\n // Limits that changed, from measuring or from props: fit the layout.\n useClientLayoutEffect(() => {\n commit(fitSizes(sizesRef.current, bounds));\n // boundsKey stands for bounds.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [boundsKey]);\n\n const rtl = () =>\n !vertical &&\n !!rootRef.current &&\n getComputedStyle(rootRef.current).direction === 'rtl';\n\n // ---- Dragging ----\n const [dragging, setDragging] = useState<number | null>(null);\n const dragRef = useRef<{\n handle: number;\n start: number;\n startSizes: number[];\n pixels: number;\n flip: boolean;\n } | null>(null);\n const onPointerDown =\n (h: number) => (event: React.PointerEvent<HTMLDivElement>) => {\n if (event.button !== 0) return;\n const pixels = roomOf();\n if (!pixels) return;\n event.currentTarget.setPointerCapture?.(event.pointerId);\n dragRef.current = {\n handle: h,\n start: vertical ? event.clientY : event.clientX,\n startSizes: sizesRef.current,\n pixels,\n flip: rtl(),\n };\n setDragging(h);\n };\n const onPointerMove = (event: React.PointerEvent<HTMLDivElement>) => {\n const drag = dragRef.current;\n if (!drag) return;\n const moved = (vertical ? event.clientY : event.clientX) - drag.start;\n const delta = ((drag.flip ? -moved : moved) / drag.pixels) * 100;\n commit(\n resizePair(\n sizesRef.current,\n drag.handle,\n drag.startSizes[drag.handle] + delta,\n bounds\n )\n );\n };\n const endDrag = (event: React.PointerEvent<HTMLDivElement>) => {\n if (!dragRef.current) return;\n dragRef.current = null;\n event.currentTarget.releasePointerCapture?.(event.pointerId);\n setDragging(null);\n };\n // While dragging, the resize cursor shows wherever the pointer goes.\n useEffect(() => {\n if (dragging === null) return;\n const body = document.body.style;\n const { cursor, userSelect } = body;\n body.cursor = vertical ? 'row-resize' : 'col-resize';\n body.userSelect = 'none';\n return () => {\n body.cursor = cursor;\n body.userSelect = userSelect;\n };\n }, [dragging, vertical]);\n\n // Double-click: the two panes back to their default share of the room.\n const onDoubleClick = (h: number) => () => {\n const current = sizesRef.current;\n const total = current[h] + current[h + 1];\n const pair = defaults[h] + defaults[h + 1];\n const target = pair > 0 ? (defaults[h] / pair) * total : total / 2;\n const next = [...current];\n next[h] = target;\n next[h + 1] = total - target;\n commit(fitSizes(next, bounds));\n };\n\n // ---- Keys ----\n const onKeyDown =\n (h: number) => (event: React.KeyboardEvent<HTMLDivElement>) => {\n const current = sizesRef.current;\n const primary = primaryOf(h, bounds);\n const by = event.shiftKey ? step * 10 : step;\n const back = vertical ? 'ArrowUp' : 'ArrowLeft';\n const forward = vertical ? 'ArrowDown' : 'ArrowRight';\n // The line moves the way the key points, so right to left, moving\n // right shrinks the pane before, which sits on the right.\n const sign = rtl() ? -1 : 1;\n // Keys move within the limits; Enter is what shuts a pane.\n const open = opened(bounds, h);\n let next: number[] | null = null;\n if (event.key === back || event.key === forward) {\n const direction = (event.key === forward ? 1 : -1) * sign;\n next = resizePair(current, h, current[h] + direction * by, open);\n } else if (event.key === 'Home' || event.key === 'End') {\n const range = primaryRange(current, h, primary, open);\n const size = event.key === 'Home' ? range.min : range.max;\n const total = current[h] + current[h + 1];\n next = resizePair(\n current,\n h,\n primary === h ? size : total - size,\n open\n );\n } else if (event.key === 'Enter' && bounds[primary].collapsible) {\n next =\n current[primary] > 1e-6\n ? collapseIn(current, primary)\n : expand(current, primary);\n }\n if (!next) return;\n event.preventDefault();\n commit(next);\n };\n\n // A handle names its pane, so a pane without a label leaves it nameless.\n const unnamed = panes\n .slice(0, -1)\n .some((_, h) => !panes[primaryOf(h, bounds)].props.label);\n useEffect(() => {\n if (unnamed) {\n warnOnce(\n 'Splitter:unlabelled',\n '[bestax-bulma] <Splitter> has a handle whose pane has no label. ' +\n 'Give each Splitter.Pane a label, so a screen reader can say ' +\n 'which pane a handle resizes.'\n );\n }\n }, [unnamed]);\n\n const collapsed = collapsedAt(sizes);\n const items: React.ReactNode[] = [];\n panes.forEach((pane, i) => {\n items.push(\n <PaneContext.Provider\n // Children.toArray, under flattenChildren, keys every child.\n key={`pane-${String(pane.key)}`}\n value={{ id: ids[i], size: sizes[i], collapsed: collapsed[i] }}\n >\n {pane}\n </PaneContext.Provider>\n );\n if (i === panes.length - 1) return;\n const primary = primaryOf(i, bounds);\n const range = primaryRange(sizes, i, primary, bounds);\n items.push(\n <div\n key={`handle-${i}`}\n className={classNames(handleClass, dragging === i && activeClass)}\n role=\"separator\"\n tabIndex={0}\n aria-orientation={vertical ? 'horizontal' : 'vertical'}\n aria-valuenow={Math.round(range.now)}\n aria-valuemin={Math.round(range.min)}\n aria-valuemax={Math.round(range.max)}\n aria-controls={ids[primary]}\n aria-label={panes[primary].props.label}\n onPointerDown={onPointerDown(i)}\n onPointerMove={onPointerMove}\n onPointerUp={endDrag}\n onPointerCancel={endDrag}\n onDoubleClick={onDoubleClick(i)}\n onKeyDown={onKeyDown(i)}\n />\n );\n });\n\n return (\n <div\n ref={setRefs}\n className={classNames(rootClass, bulmaHelperClasses, className)}\n style={height !== undefined ? { ...style, height } : style}\n {...rest}\n >\n {items}\n </div>\n );\n }\n);\n\nSplitterRoot.displayName = 'Splitter';\n\nexport const Splitter = withSubComponents(SplitterRoot, {\n Pane: SplitterPane,\n});\n\nexport default Splitter;\n"],"names":["_jsx"],"mappings":"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"}
1
+ {"version":3,"file":"Splitter.js","sources":["../../../src/layout/Splitter.tsx"],"sourcesContent":["import React, {\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useEffect,\n useId,\n useRef,\n useState,\n} from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport {\n useBulmaClasses,\n BulmaClassesProps,\n validColors,\n} from '../helpers/useBulmaClasses';\nimport { flattenChildren } from '../helpers/flattenChildren';\nimport { withSubComponents } from '../helpers/withSubComponents';\nimport { useClientLayoutEffect } from '../helpers/useClientLayoutEffect';\nimport { warnOnce } from '../helpers/devWarnings';\nimport {\n defaultSizes,\n fitSizes,\n limitToPercent,\n PaneBounds,\n primaryOf,\n primaryRange,\n resizePair,\n sameSizes,\n SplitterLimit,\n} from '../helpers/splitterLayout';\n\n/** The way the panes run: side by side, or one above the other. */\nexport type SplitterOrientation = 'horizontal' | 'vertical';\n\n/**\n * Props for Splitter.Pane, one of the panes. The helper props, the other\n * attributes and the `ref` land on its `<div>`.\n *\n * @extraProp {React.Ref<HTMLDivElement>} [ref] - Ref forwarded to the pane's `<div>`.\n * @extraProp {string} [id] - The pane's id, which its handle's `aria-controls` points at. The splitter makes one when there's none.\n */\nexport interface SplitterPaneProps\n extends\n Omit<React.HTMLAttributes<HTMLDivElement>, 'color'>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n /** Additional CSS classes to apply. */\n className?: string;\n /**\n * What the pane is, such as \"Files\". It names the handle that speaks for\n * this pane, which is announced as \"Files, separator, 25\". That's the\n * handle after it, or the one before it when only this pane, of the two\n * beside that handle, can collapse. A development build warns when a\n * handle's pane has none.\n */\n label?: string;\n /**\n * Its starting size, in percent of the room the panes share. Panes without\n * one share what's left equally, and a total over 100 is scaled down.\n */\n defaultSize?: number;\n /**\n * The smallest it can be dragged: a percentage, or a CSS length in `px` or\n * `rem` such as `\"12rem\"`. A length applies once the splitter has measured\n * itself in the browser, so the server renders the default size.\n */\n minSize?: SplitterLimit;\n /** The largest it can be dragged, in the same units as `minSize`. */\n maxSize?: SplitterLimit;\n /**\n * Lets it collapse: dragging it below half its `minSize` shuts it, and\n * Enter on its handle shuts it and brings it back at the size it had. It\n * collapses only when the pane across its handle can take its room within\n * that pane's `maxSize`, since a handle moves only the two panes beside it.\n * A collapsed pane stays mounted, hidden, so it keeps its state.\n */\n collapsible?: boolean;\n /**\n * Whether it's collapsed, for a `collapsible` pane. With it, the state is\n * yours: a drag, a key or a double-click that would collapse it or bring\n * it back calls `onCollapsedChange` and leaves it as it is, and it changes\n * when `collapsed` does.\n */\n collapsed?: boolean;\n /** Whether a `collapsible` pane starts collapsed. */\n defaultCollapsed?: boolean;\n /**\n * Called when a drag, a key or a double-click collapses it or brings it\n * back, or, with `collapsed`, would. Not called for a change you made with\n * `collapsed`.\n */\n onCollapsedChange?: (collapsed: boolean) => void;\n /** What's in it. Content that scrolls belongs in a `ScrollArea`, so a keyboard can reach it. */\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 * Props for the Splitter component. The helper props, the other attributes\n * and the `ref` land on the root `<div>`.\n *\n * @extraProp {React.Ref<HTMLDivElement>} [ref] - Ref forwarded to the root `<div>`.\n */\nexport interface SplitterProps\n extends\n Omit<React.HTMLAttributes<HTMLDivElement>, 'color'>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n /** Additional CSS classes to apply. */\n className?: string;\n /**\n * `Splitter.Pane`s, two or more, each a direct child, with Fragments\n * opened up. A handle goes between each pair. Changing which panes there\n * are puts every pane back to its default size.\n */\n children?: React.ReactNode;\n /**\n * The way the panes run: side by side (`horizontal`) or one above the\n * other (`vertical`).\n */\n orientation?: SplitterOrientation;\n /**\n * The splitter's height. A number is pixels, and a string any CSS length.\n * A vertical splitter needs a height to split.\n */\n height?: number | string;\n /**\n * Each pane's size, in percent, in order, adding up to 100. With it, the\n * sizes are yours: update them from `onSizesChange`. Without it, each\n * pane starts at its `defaultSize`.\n */\n sizes?: number[];\n /**\n * Called with every pane's size, in percent, whenever they change: on\n * each step of a drag or a key, on a collapse and on a reset.\n */\n onSizesChange?: (sizes: number[]) => void;\n /**\n * How far an arrow key moves a handle, in percent. Shift moves ten times\n * as far.\n */\n step?: number;\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/** What the splitter tells each pane it renders. */\ninterface PaneState {\n id: string;\n size: number;\n collapsed: boolean;\n}\n\nconst PaneContext = createContext<PaneState | null>(null);\n\n/**\n * One pane of a Splitter, sized by the splitter around it.\n *\n * @function\n * @param {SplitterPaneProps} props - Props for Splitter.Pane.\n * @param {React.Ref<HTMLDivElement>} ref - Forwarded ref to the pane's `<div>`.\n * @returns {JSX.Element} The rendered pane.\n */\nexport const SplitterPane = forwardRef<HTMLDivElement, SplitterPaneProps>(\n (\n {\n className,\n textColor,\n bgColor,\n label: _label,\n defaultSize: _defaultSize,\n minSize: _minSize,\n maxSize: _maxSize,\n collapsible: _collapsible,\n collapsed: _collapsed,\n defaultCollapsed: _defaultCollapsed,\n onCollapsedChange: _onCollapsedChange,\n style,\n children,\n ...props\n },\n ref\n ) => {\n const state = useContext(PaneContext);\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor,\n backgroundColor: bgColor,\n ...props,\n });\n const paneClass = usePrefixedClassNames('splitter-pane', {\n 'is-collapsed': !!state?.collapsed,\n });\n return (\n <div\n ref={ref}\n className={classNames(paneClass, bulmaHelperClasses, className)}\n {...rest}\n id={state?.id ?? rest.id}\n // A percentage over a zero basis, so the server and the client lay\n // it out the same, with no measuring.\n style={state ? { ...style, flex: `${state.size} 1 0px` } : style}\n hidden={state?.collapsed || rest.hidden}\n >\n {children}\n </div>\n );\n }\n);\n\nSplitterPane.displayName = 'Splitter.Pane';\n\n/** A pane's props as the splitter reads them off its child. */\ntype PaneElement = React.ReactElement<SplitterPaneProps>;\n\nconst isPane = (child: React.ReactNode): child is PaneElement =>\n React.isValidElement(child) && child.type === SplitterPane;\n\n/** The bounds with pane `i`'s changed, for a move that mustn't snap it shut. */\nconst withBound = (\n bounds: PaneBounds[],\n i: number,\n change: Partial<PaneBounds>\n) => bounds.map((bound, j) => (j === i ? { ...bound, ...change } : bound));\n\n/** The bounds with neither pane beside handle `h` able to shut. */\nconst opened = (bounds: PaneBounds[], h: number) =>\n withBound(withBound(bounds, h, { collapsible: false }), h + 1, {\n collapsible: false,\n });\n\n/**\n * The handle a pane's collapse goes through: the one that speaks for it. A\n * collapsible pane that isn't last always has the handle after it, so the\n * one left without is a last pane whose neighbour can collapse too, and it\n * goes through the handle before it.\n */\nconst handleFor = (pane: number, bounds: PaneBounds[]) =>\n pane < bounds.length - 1 && primaryOf(pane, bounds) === pane\n ? pane\n : pane - 1;\n\n/**\n * The `Splitter` component lays out two or more panes side by side or one above the other, with a handle between each pair to drag or move by keyboard.\n *\n * Each handle is a focusable `separator`, named by the `label` of the pane\n * it speaks for. Sizes are percentages, so the server renders the layout\n * the browser does, and `minSize` and `maxSize` also take `px` and `rem`. A\n * `collapsible` pane shuts when dragged below half its minimum, and Enter on\n * its handle shuts it and brings it back. It doesn't store sizes itself:\n * keep them with `sizes` and `onSizesChange`.\n *\n * @function\n * @param {SplitterProps} props - Props for the Splitter component.\n * @param {React.Ref<HTMLDivElement>} ref - Forwarded ref to the root `<div>`.\n * @returns {JSX.Element} The rendered splitter.\n *\n * @example\n * <Splitter height={480}>\n * <Splitter.Pane label=\"Files\" defaultSize={25} minSize=\"12rem\">…</Splitter.Pane>\n * <Splitter.Pane label=\"Editor\">…</Splitter.Pane>\n * </Splitter>\n */\nconst SplitterRoot = forwardRef<HTMLDivElement, SplitterProps>(\n (\n {\n className,\n style,\n textColor,\n bgColor,\n orientation = 'horizontal',\n height,\n sizes: sizesProp,\n onSizesChange,\n step = 1,\n children,\n ...props\n },\n ref\n ) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor,\n backgroundColor: bgColor,\n ...props,\n });\n const vertical = orientation === 'vertical';\n const rootClass = usePrefixedClassNames('splitter', {\n 'is-vertical': vertical,\n });\n const handleClass = usePrefixedClassNames('splitter-handle');\n const activeClass = usePrefixedClassNames('is-active');\n\n const panes = flattenChildren(children).filter(isPane);\n const baseId = useId();\n const ids = panes.map((pane, i) => pane.props.id ?? `${baseId}-pane-${i}`);\n\n // The room the panes share, in pixels, and a rem, both measured in the\n // browser. Until then, only percentage limits apply.\n const [length, setLength] = useState<number | null>(null);\n const [remPx, setRemPx] = useState(16);\n const bounds: PaneBounds[] = panes.map(({ props: pane }) => ({\n min: Math.max(0, limitToPercent(pane.minSize, length, remPx) ?? 0),\n max: Math.min(100, limitToPercent(pane.maxSize, length, remPx) ?? 100),\n collapsible: !!pane.collapsible,\n }));\n const boundsKey = JSON.stringify(bounds);\n\n // Shuts pane `i`, giving its room to the pane across the handle that\n // speaks for it, when that pane can take it within its maximum, as a\n // drag would. A lone pane has no handle and nowhere to give its room.\n const collapseIn = (current: number[], i: number) => {\n if (current.length < 2) return current;\n const h = handleFor(i, bounds);\n const across = h === i ? i + 1 : h;\n if (current[across] + current[i] > bounds[across].max + 1e-6) {\n return current;\n }\n const next = [...current];\n next[across] += next[i];\n next[i] = 0;\n return next;\n };\n\n const startSizes = () => {\n const base = defaultSizes(panes.map(pane => pane.props.defaultSize));\n let next = fitSizes(base, bounds);\n panes.forEach(({ props: pane }, i) => {\n if (pane.collapsible && (pane.collapsed ?? pane.defaultCollapsed)) {\n next = collapseIn(next, i);\n }\n });\n return next;\n };\n\n const paneKey = ids.join('|');\n const [state, setState] = useState(() => ({\n key: paneKey,\n sizes: startSizes(),\n }));\n // A different set of panes starts over from the defaults.\n let uncontrolled = state.sizes;\n if (state.key !== paneKey) {\n uncontrolled = startSizes();\n setState({ key: paneKey, sizes: uncontrolled });\n }\n const sizes =\n sizesProp && sizesProp.length === panes.length ? sizesProp : uncontrolled;\n\n // The size each pane comes back at after it's shut: the last size it had\n // open, or its default.\n const restoreRef = useRef<number[]>([]);\n const defaults = defaultSizes(panes.map(pane => pane.props.defaultSize));\n sizes.forEach((size, i) => {\n if (size > 0) restoreRef.current[i] = size;\n else restoreRef.current[i] ??= defaults[i];\n });\n\n const collapsedAt = (layout: number[]) =>\n layout.map((size, i) => bounds[i].collapsible && size <= 1e-6);\n\n // Moves the layout on, telling the app and each pane whose collapse\n // changed, unless the change came from its own `collapsed`. A move that\n // would collapse or open a pane whose `collapsed` the app holds only\n // asks: the app's answer comes back through `collapsed`.\n const sizesRef = useRef(sizes);\n sizesRef.current = sizes;\n const panesRef = useRef(panes);\n panesRef.current = panes;\n const commit = (next: number[], fromProp = false) => {\n const previous = sizesRef.current;\n if (sameSizes(previous, next)) return;\n const before = collapsedAt(previous);\n const after = collapsedAt(next);\n const flipped = after.flatMap((shut, i) =>\n shut !== before[i] ? [i] : []\n );\n if (\n !fromProp &&\n flipped.some(i => panesRef.current[i].props.collapsed !== undefined)\n ) {\n flipped.forEach(i =>\n panesRef.current[i].props.onCollapsedChange?.(after[i])\n );\n return;\n }\n sizesRef.current = next;\n if (!sizesProp) setState(current => ({ ...current, sizes: next }));\n onSizesChange?.(next);\n if (!fromProp) {\n flipped.forEach(i =>\n panesRef.current[i].props.onCollapsedChange?.(after[i])\n );\n }\n };\n\n // Brings pane `i` back at its restore size, taken from across the handle\n // that speaks for it.\n // A lone pane never shuts, so there's always a handle here.\n const expand = (current: number[], i: number) => {\n const h = handleFor(i, bounds);\n const target = restoreRef.current[i];\n const total = current[h] + current[h + 1];\n return resizePair(\n current,\n h,\n h === i ? target : total - target,\n // Opening one pane snaps neither shut: it stops at the limits.\n opened(bounds, h)\n );\n };\n\n // A pane's own `collapsed` moving: shut it or bring it back, before the\n // browser paints.\n const collapsedProps = panes.map(pane =>\n pane.props.collapsible ? pane.props.collapsed : undefined\n );\n const collapsedKey = JSON.stringify(collapsedProps);\n useClientLayoutEffect(() => {\n const current = sizesRef.current;\n const shut = collapsedAt(current);\n let next = current;\n collapsedProps.forEach((wanted, i) => {\n if (wanted === undefined || wanted === shut[i]) return;\n next = wanted ? collapseIn(next, i) : expand(next, i);\n });\n commit(next, true);\n // collapsedKey stands for collapsedProps.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [collapsedKey]);\n\n // Measuring: the room the panes share, so `px` and `rem` limits can turn\n // into percentages, then the layout fitted to them.\n const rootRef = useRef<HTMLDivElement | null>(null);\n const setRefs = useCallback(\n (node: HTMLDivElement | null) => {\n rootRef.current = node;\n if (typeof ref === 'function') return ref(node);\n if (ref) ref.current = node;\n },\n [ref]\n );\n // The room the panes share: the root's length less its handles'.\n const roomOf = useCallback(() => {\n const root = rootRef.current;\n /* istanbul ignore next: measuring only runs while it's mounted */\n if (!root) return null;\n const along = (el: Element) => {\n const rect = el.getBoundingClientRect();\n return vertical ? rect.height : rect.width;\n };\n const handles = Array.from(root.children).filter(child =>\n child.matches('[role=\"separator\"]')\n );\n const room =\n along(root) - handles.reduce((sum, handle) => sum + along(handle), 0);\n return room > 0 ? room : null;\n }, [vertical]);\n const measure = useCallback(() => {\n setLength(roomOf());\n setRemPx(\n parseFloat(getComputedStyle(document.documentElement).fontSize) || 16\n );\n }, [roomOf]);\n useClientLayoutEffect(() => {\n measure();\n const root = rootRef.current;\n if (!root || typeof ResizeObserver === 'undefined') return;\n const resizes = new ResizeObserver(measure);\n resizes.observe(root);\n return () => resizes.disconnect();\n }, [measure]);\n // Limits that changed, from measuring or from props: fit the layout.\n useClientLayoutEffect(() => {\n commit(fitSizes(sizesRef.current, bounds));\n // boundsKey stands for bounds.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [boundsKey]);\n\n const rtl = () =>\n !vertical &&\n !!rootRef.current &&\n getComputedStyle(rootRef.current).direction === 'rtl';\n\n // ---- Dragging ----\n const [dragging, setDragging] = useState<number | null>(null);\n const dragRef = useRef<{\n handle: number;\n start: number;\n startSizes: number[];\n pixels: number;\n flip: boolean;\n } | null>(null);\n const onPointerDown =\n (h: number) => (event: React.PointerEvent<HTMLDivElement>) => {\n if (event.button !== 0) return;\n const pixels = roomOf();\n if (!pixels) return;\n event.currentTarget.setPointerCapture?.(event.pointerId);\n dragRef.current = {\n handle: h,\n start: vertical ? event.clientY : event.clientX,\n startSizes: sizesRef.current,\n pixels,\n flip: rtl(),\n };\n setDragging(h);\n };\n const onPointerMove = (event: React.PointerEvent<HTMLDivElement>) => {\n const drag = dragRef.current;\n if (!drag) return;\n const moved = (vertical ? event.clientY : event.clientX) - drag.start;\n const delta = ((drag.flip ? -moved : moved) / drag.pixels) * 100;\n commit(\n resizePair(\n sizesRef.current,\n drag.handle,\n drag.startSizes[drag.handle] + delta,\n bounds\n )\n );\n };\n const endDrag = (event: React.PointerEvent<HTMLDivElement>) => {\n if (!dragRef.current) return;\n dragRef.current = null;\n event.currentTarget.releasePointerCapture?.(event.pointerId);\n setDragging(null);\n };\n // While dragging, the resize cursor shows wherever the pointer goes.\n useEffect(() => {\n if (dragging === null) return;\n const body = document.body.style;\n const { cursor, userSelect } = body;\n body.cursor = vertical ? 'row-resize' : 'col-resize';\n body.userSelect = 'none';\n return () => {\n body.cursor = cursor;\n body.userSelect = userSelect;\n };\n }, [dragging, vertical]);\n\n // Double-click: the two panes back to their default share of the room.\n const onDoubleClick = (h: number) => () => {\n const current = sizesRef.current;\n const total = current[h] + current[h + 1];\n const pair = defaults[h] + defaults[h + 1];\n const target = pair > 0 ? (defaults[h] / pair) * total : total / 2;\n const next = [...current];\n next[h] = target;\n next[h + 1] = total - target;\n commit(fitSizes(next, bounds));\n };\n\n // ---- Keys ----\n const onKeyDown =\n (h: number) => (event: React.KeyboardEvent<HTMLDivElement>) => {\n const current = sizesRef.current;\n const primary = primaryOf(h, bounds);\n const by = event.shiftKey ? step * 10 : step;\n const back = vertical ? 'ArrowUp' : 'ArrowLeft';\n const forward = vertical ? 'ArrowDown' : 'ArrowRight';\n // The line moves the way the key points, so right to left, moving\n // right shrinks the pane before, which sits on the right.\n const sign = rtl() ? -1 : 1;\n // Keys move within the limits; Enter is what shuts a pane.\n const open = opened(bounds, h);\n let next: number[] | null = null;\n if (event.key === back || event.key === forward) {\n const direction = (event.key === forward ? 1 : -1) * sign;\n next = resizePair(current, h, current[h] + direction * by, open);\n } else if (event.key === 'Home' || event.key === 'End') {\n const range = primaryRange(current, h, primary, open);\n const size = event.key === 'Home' ? range.min : range.max;\n const total = current[h] + current[h + 1];\n next = resizePair(\n current,\n h,\n primary === h ? size : total - size,\n open\n );\n } else if (event.key === 'Enter' && bounds[primary].collapsible) {\n next =\n current[primary] > 1e-6\n ? collapseIn(current, primary)\n : expand(current, primary);\n }\n if (!next) return;\n event.preventDefault();\n commit(next);\n };\n\n // A handle names its pane, so a pane without a label leaves it nameless.\n const unnamed = panes\n .slice(0, -1)\n .some((_, h) => !panes[primaryOf(h, bounds)].props.label);\n useEffect(() => {\n if (unnamed) {\n warnOnce(\n 'Splitter:unlabelled',\n '[bestax-bulma] <Splitter> has a handle whose pane has no label. ' +\n 'Give each Splitter.Pane a label, so a screen reader can say ' +\n 'which pane a handle resizes.'\n );\n }\n }, [unnamed]);\n\n const collapsed = collapsedAt(sizes);\n const items: React.ReactNode[] = [];\n panes.forEach((pane, i) => {\n items.push(\n <PaneContext.Provider\n // Children.toArray, under flattenChildren, keys every child.\n key={`pane-${String(pane.key)}`}\n value={{ id: ids[i], size: sizes[i], collapsed: collapsed[i] }}\n >\n {pane}\n </PaneContext.Provider>\n );\n if (i === panes.length - 1) return;\n const primary = primaryOf(i, bounds);\n const range = primaryRange(sizes, i, primary, bounds);\n items.push(\n <div\n key={`handle-${i}`}\n className={classNames(handleClass, dragging === i && activeClass)}\n role=\"separator\"\n tabIndex={0}\n aria-orientation={vertical ? 'horizontal' : 'vertical'}\n aria-valuenow={Math.round(range.now)}\n aria-valuemin={Math.round(range.min)}\n aria-valuemax={Math.round(range.max)}\n aria-controls={ids[primary]}\n aria-label={panes[primary].props.label}\n onPointerDown={onPointerDown(i)}\n onPointerMove={onPointerMove}\n onPointerUp={endDrag}\n onPointerCancel={endDrag}\n onDoubleClick={onDoubleClick(i)}\n onKeyDown={onKeyDown(i)}\n />\n );\n });\n\n return (\n <div\n ref={setRefs}\n className={classNames(rootClass, bulmaHelperClasses, className)}\n style={height !== undefined ? { ...style, height } : style}\n {...rest}\n >\n {items}\n </div>\n );\n }\n);\n\nSplitterRoot.displayName = 'Splitter';\n\nexport const Splitter = withSubComponents(SplitterRoot, {\n Pane: SplitterPane,\n});\n\nexport default Splitter;\n"],"names":["_jsx"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@allxsmith/bestax-bulma",
3
- "version": "5.56.0",
3
+ "version": "5.57.0",
4
4
  "description": "Component library based on React, Bulma, with Agent Skills and MCP",
5
5
  "main": "dist/index.cjs",
6
6
  "module": "dist/index.esm.js",
@@ -56,6 +56,7 @@
56
56
  "rollup-plugin-scss": "^4.0.1",
57
57
  "rollup-plugin-visualizer": "^7.1.1",
58
58
  "sass": "^1.105.2",
59
+ "sass-embedded": "^1.105.2",
59
60
  "storybook": "^10.6.2",
60
61
  "ts-jest": "^29.4.15",
61
62
  "tslib": "^2.8.0",