@allxsmith/bestax-bulma 5.27.0 → 5.27.2

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 (348) hide show
  1. package/dist/bestax.css +1 -1
  2. package/dist/bestax.css.map +1 -1
  3. package/dist/esm/columns/Column.js +48 -0
  4. package/dist/esm/columns/Column.js.map +1 -0
  5. package/dist/esm/columns/Columns.js +53 -0
  6. package/dist/esm/columns/Columns.js.map +1 -0
  7. package/dist/esm/components/Avatar.js +299 -0
  8. package/dist/esm/components/Avatar.js.map +1 -0
  9. package/dist/esm/components/Avatars.js +81 -0
  10. package/dist/esm/components/Avatars.js.map +1 -0
  11. package/dist/esm/components/Badge.js +105 -0
  12. package/dist/esm/components/Badge.js.map +1 -0
  13. package/dist/esm/components/Breadcrumb.js +36 -0
  14. package/dist/esm/components/Breadcrumb.js.map +1 -0
  15. package/dist/esm/components/Card.js +252 -0
  16. package/dist/esm/components/Card.js.map +1 -0
  17. package/dist/esm/components/Carousel.js +351 -0
  18. package/dist/esm/components/Carousel.js.map +1 -0
  19. package/dist/esm/components/Collapse.js +193 -0
  20. package/dist/esm/components/Collapse.js.map +1 -0
  21. package/dist/esm/components/Collapses.js +99 -0
  22. package/dist/esm/components/Collapses.js.map +1 -0
  23. package/dist/esm/components/Dialog.js +230 -0
  24. package/dist/esm/components/Dialog.js.map +1 -0
  25. package/dist/esm/components/Dropdown.js +362 -0
  26. package/dist/esm/components/Dropdown.js.map +1 -0
  27. package/dist/esm/components/Loading.js +87 -0
  28. package/dist/esm/components/Loading.js.map +1 -0
  29. package/dist/esm/components/Menu.js +117 -0
  30. package/dist/esm/components/Menu.js.map +1 -0
  31. package/dist/esm/components/Message.js +56 -0
  32. package/dist/esm/components/Message.js.map +1 -0
  33. package/dist/esm/components/Modal.js +354 -0
  34. package/dist/esm/components/Modal.js.map +1 -0
  35. package/dist/esm/components/Navbar.js +287 -0
  36. package/dist/esm/components/Navbar.js.map +1 -0
  37. package/dist/esm/components/Pagination.js +191 -0
  38. package/dist/esm/components/Pagination.js.map +1 -0
  39. package/dist/esm/components/Panel.js +100 -0
  40. package/dist/esm/components/Panel.js.map +1 -0
  41. package/dist/esm/components/Popover.js +298 -0
  42. package/dist/esm/components/Popover.js.map +1 -0
  43. package/dist/esm/components/Reveal.js +157 -0
  44. package/dist/esm/components/Reveal.js.map +1 -0
  45. package/dist/esm/components/Sidebar.js +209 -0
  46. package/dist/esm/components/Sidebar.js.map +1 -0
  47. package/dist/esm/components/Steps.js +128 -0
  48. package/dist/esm/components/Steps.js.map +1 -0
  49. package/dist/esm/components/Tabs.js +335 -0
  50. package/dist/esm/components/Tabs.js.map +1 -0
  51. package/dist/esm/components/Toast.js +322 -0
  52. package/dist/esm/components/Toast.js.map +1 -0
  53. package/dist/esm/components/Tooltip.js +202 -0
  54. package/dist/esm/components/Tooltip.js.map +1 -0
  55. package/dist/esm/components/collapsesContext.js +12 -0
  56. package/dist/esm/components/collapsesContext.js.map +1 -0
  57. package/dist/esm/elements/Block.js +29 -0
  58. package/dist/esm/elements/Block.js.map +1 -0
  59. package/dist/esm/elements/Box.js +32 -0
  60. package/dist/esm/elements/Box.js.map +1 -0
  61. package/dist/esm/elements/Button.js +139 -0
  62. package/dist/esm/elements/Button.js.map +1 -0
  63. package/dist/esm/elements/Buttons.js +42 -0
  64. package/dist/esm/elements/Buttons.js.map +1 -0
  65. package/dist/esm/elements/Code.js +25 -0
  66. package/dist/esm/elements/Code.js.map +1 -0
  67. package/dist/esm/elements/Content.js +33 -0
  68. package/dist/esm/elements/Content.js.map +1 -0
  69. package/dist/esm/elements/Delete.js +35 -0
  70. package/dist/esm/elements/Delete.js.map +1 -0
  71. package/dist/esm/elements/Divider.js +27 -0
  72. package/dist/esm/elements/Divider.js.map +1 -0
  73. package/dist/esm/elements/Emphasis.js +25 -0
  74. package/dist/esm/elements/Emphasis.js.map +1 -0
  75. package/dist/esm/elements/Figure.js +58 -0
  76. package/dist/esm/elements/Figure.js.map +1 -0
  77. package/dist/esm/elements/Icon.js +256 -0
  78. package/dist/esm/elements/Icon.js.map +1 -0
  79. package/dist/esm/elements/IconText.js +36 -0
  80. package/dist/esm/elements/IconText.js.map +1 -0
  81. package/dist/esm/elements/Image.js +46 -0
  82. package/dist/esm/elements/Image.js.map +1 -0
  83. package/dist/esm/elements/Link.js +36 -0
  84. package/dist/esm/elements/Link.js.map +1 -0
  85. package/dist/esm/elements/LinkButton.js +37 -0
  86. package/dist/esm/elements/LinkButton.js.map +1 -0
  87. package/dist/esm/elements/ListItem.js +28 -0
  88. package/dist/esm/elements/ListItem.js.map +1 -0
  89. package/dist/esm/elements/Loader.js +37 -0
  90. package/dist/esm/elements/Loader.js.map +1 -0
  91. package/dist/esm/elements/Notification.js +316 -0
  92. package/dist/esm/elements/Notification.js.map +1 -0
  93. package/dist/esm/elements/OrderedList.js +31 -0
  94. package/dist/esm/elements/OrderedList.js.map +1 -0
  95. package/dist/esm/elements/Paragraph.js +28 -0
  96. package/dist/esm/elements/Paragraph.js.map +1 -0
  97. package/dist/esm/elements/Pre.js +25 -0
  98. package/dist/esm/elements/Pre.js.map +1 -0
  99. package/dist/esm/elements/Progress.js +33 -0
  100. package/dist/esm/elements/Progress.js.map +1 -0
  101. package/dist/esm/elements/Skeleton.js +30 -0
  102. package/dist/esm/elements/Skeleton.js.map +1 -0
  103. package/dist/esm/elements/Span.js +28 -0
  104. package/dist/esm/elements/Span.js.map +1 -0
  105. package/dist/esm/elements/Strong.js +25 -0
  106. package/dist/esm/elements/Strong.js.map +1 -0
  107. package/dist/esm/elements/SubTitle.js +51 -0
  108. package/dist/esm/elements/SubTitle.js.map +1 -0
  109. package/dist/esm/elements/Table.js +51 -0
  110. package/dist/esm/elements/Table.js.map +1 -0
  111. package/dist/esm/elements/Tag.js +49 -0
  112. package/dist/esm/elements/Tag.js.map +1 -0
  113. package/dist/esm/elements/Tags.js +34 -0
  114. package/dist/esm/elements/Tags.js.map +1 -0
  115. package/dist/esm/elements/Tbody.js +26 -0
  116. package/dist/esm/elements/Tbody.js.map +1 -0
  117. package/dist/esm/elements/Td.js +61 -0
  118. package/dist/esm/elements/Td.js.map +1 -0
  119. package/dist/esm/elements/Tfoot.js +26 -0
  120. package/dist/esm/elements/Tfoot.js.map +1 -0
  121. package/dist/esm/elements/Th.js +34 -0
  122. package/dist/esm/elements/Th.js.map +1 -0
  123. package/dist/esm/elements/Thead.js +26 -0
  124. package/dist/esm/elements/Thead.js.map +1 -0
  125. package/dist/esm/elements/Title.js +44 -0
  126. package/dist/esm/elements/Title.js.map +1 -0
  127. package/dist/esm/elements/Tr.js +31 -0
  128. package/dist/esm/elements/Tr.js.map +1 -0
  129. package/dist/esm/elements/UnorderedList.js +31 -0
  130. package/dist/esm/elements/UnorderedList.js.map +1 -0
  131. package/dist/esm/elements/iconProps.js +49 -0
  132. package/dist/esm/elements/iconProps.js.map +1 -0
  133. package/dist/esm/form/Autocomplete.js +279 -0
  134. package/dist/esm/form/Autocomplete.js.map +1 -0
  135. package/dist/esm/form/Checkbox.js +111 -0
  136. package/dist/esm/form/Checkbox.js.map +1 -0
  137. package/dist/esm/form/Checkboxes.js +90 -0
  138. package/dist/esm/form/Checkboxes.js.map +1 -0
  139. package/dist/esm/form/Control.js +79 -0
  140. package/dist/esm/form/Control.js.map +1 -0
  141. package/dist/esm/form/DateInput.js +88 -0
  142. package/dist/esm/form/DateInput.js.map +1 -0
  143. package/dist/esm/form/DateInputBase.js +263 -0
  144. package/dist/esm/form/DateInputBase.js.map +1 -0
  145. package/dist/esm/form/DateRangeInput.js +77 -0
  146. package/dist/esm/form/DateRangeInput.js.map +1 -0
  147. package/dist/esm/form/DateRangeInputBase.js +301 -0
  148. package/dist/esm/form/DateRangeInputBase.js.map +1 -0
  149. package/dist/esm/form/DateTimeInput.js +88 -0
  150. package/dist/esm/form/DateTimeInput.js.map +1 -0
  151. package/dist/esm/form/DateTimeInputBase.js +333 -0
  152. package/dist/esm/form/DateTimeInputBase.js.map +1 -0
  153. package/dist/esm/form/Field.js +167 -0
  154. package/dist/esm/form/Field.js.map +1 -0
  155. package/dist/esm/form/File.js +112 -0
  156. package/dist/esm/form/File.js.map +1 -0
  157. package/dist/esm/form/FormContext.js +194 -0
  158. package/dist/esm/form/FormContext.js.map +1 -0
  159. package/dist/esm/form/Input.js +88 -0
  160. package/dist/esm/form/Input.js.map +1 -0
  161. package/dist/esm/form/InputBase.js +40 -0
  162. package/dist/esm/form/InputBase.js.map +1 -0
  163. package/dist/esm/form/Numberinput.js +201 -0
  164. package/dist/esm/form/Numberinput.js.map +1 -0
  165. package/dist/esm/form/Radio.js +108 -0
  166. package/dist/esm/form/Radio.js.map +1 -0
  167. package/dist/esm/form/Radios.js +92 -0
  168. package/dist/esm/form/Radios.js.map +1 -0
  169. package/dist/esm/form/Rate.js +280 -0
  170. package/dist/esm/form/Rate.js.map +1 -0
  171. package/dist/esm/form/Select.js +81 -0
  172. package/dist/esm/form/Select.js.map +1 -0
  173. package/dist/esm/form/SelectBase.js +54 -0
  174. package/dist/esm/form/SelectBase.js.map +1 -0
  175. package/dist/esm/form/Slider.js +461 -0
  176. package/dist/esm/form/Slider.js.map +1 -0
  177. package/dist/esm/form/Switch.js +96 -0
  178. package/dist/esm/form/Switch.js.map +1 -0
  179. package/dist/esm/form/Taginput.js +351 -0
  180. package/dist/esm/form/Taginput.js.map +1 -0
  181. package/dist/esm/form/TextArea.js +77 -0
  182. package/dist/esm/form/TextArea.js.map +1 -0
  183. package/dist/esm/form/TextAreaBase.js +45 -0
  184. package/dist/esm/form/TextAreaBase.js.map +1 -0
  185. package/dist/esm/form/TimeInput.js +84 -0
  186. package/dist/esm/form/TimeInput.js.map +1 -0
  187. package/dist/esm/form/TimeInputBase.js +246 -0
  188. package/dist/esm/form/TimeInputBase.js.map +1 -0
  189. package/dist/esm/form/_pickerInternals/Calendar.js +760 -0
  190. package/dist/esm/form/_pickerInternals/Calendar.js.map +1 -0
  191. package/dist/esm/form/_pickerInternals/PickerPopover.js +95 -0
  192. package/dist/esm/form/_pickerInternals/PickerPopover.js.map +1 -0
  193. package/dist/esm/form/_pickerInternals/TimeWheels.js +721 -0
  194. package/dist/esm/form/_pickerInternals/TimeWheels.js.map +1 -0
  195. package/dist/esm/form/_pickerInternals/audioTick.js +109 -0
  196. package/dist/esm/form/_pickerInternals/audioTick.js.map +1 -0
  197. package/dist/esm/form/_pickerInternals/dateUtils.js +267 -0
  198. package/dist/esm/form/_pickerInternals/dateUtils.js.map +1 -0
  199. package/dist/esm/form/_pickerInternals/formatters.js +322 -0
  200. package/dist/esm/form/_pickerInternals/formatters.js.map +1 -0
  201. package/dist/esm/form/_pickerInternals/haptics.js +38 -0
  202. package/dist/esm/form/_pickerInternals/haptics.js.map +1 -0
  203. package/dist/esm/form/_pickerInternals/nativeInputSupport.js +25 -0
  204. package/dist/esm/form/_pickerInternals/nativeInputSupport.js.map +1 -0
  205. package/dist/esm/form/_pickerInternals/pickerTypes.js +50 -0
  206. package/dist/esm/form/_pickerInternals/pickerTypes.js.map +1 -0
  207. package/dist/esm/form/_pickerInternals/segmentMap.js +315 -0
  208. package/dist/esm/form/_pickerInternals/segmentMap.js.map +1 -0
  209. package/dist/esm/form/_pickerInternals/useNativeMobilePicker.js +49 -0
  210. package/dist/esm/form/_pickerInternals/useNativeMobilePicker.js.map +1 -0
  211. package/dist/esm/form/_pickerInternals/useSegmentedEntry.js +427 -0
  212. package/dist/esm/form/_pickerInternals/useSegmentedEntry.js.map +1 -0
  213. package/dist/esm/form/controlLoading.js +18 -0
  214. package/dist/esm/form/controlLoading.js.map +1 -0
  215. package/dist/esm/form/useAutoLabelId.js +88 -0
  216. package/dist/esm/form/useAutoLabelId.js.map +1 -0
  217. package/dist/esm/grid/Cell.js +35 -0
  218. package/dist/esm/grid/Cell.js.map +1 -0
  219. package/dist/esm/grid/Grid.js +51 -0
  220. package/dist/esm/grid/Grid.js.map +1 -0
  221. package/dist/esm/helpers/ClientOnly.js +33 -0
  222. package/dist/esm/helpers/ClientOnly.js.map +1 -0
  223. package/dist/esm/helpers/Config.js +60 -0
  224. package/dist/esm/helpers/Config.js.map +1 -0
  225. package/dist/esm/helpers/Theme.js +947 -0
  226. package/dist/esm/helpers/Theme.js.map +1 -0
  227. package/dist/esm/helpers/anchorAttrs.js +72 -0
  228. package/dist/esm/helpers/anchorAttrs.js.map +1 -0
  229. package/dist/esm/helpers/bulmaClassHelpers.js +415 -0
  230. package/dist/esm/helpers/bulmaClassHelpers.js.map +1 -0
  231. package/dist/esm/helpers/buttonType.js +24 -0
  232. package/dist/esm/helpers/buttonType.js.map +1 -0
  233. package/dist/esm/helpers/classNames.js +137 -0
  234. package/dist/esm/helpers/classNames.js.map +1 -0
  235. package/dist/esm/helpers/colorDeprecations.js +50 -0
  236. package/dist/esm/helpers/colorDeprecations.js.map +1 -0
  237. package/dist/esm/helpers/devWarnings.js +27 -0
  238. package/dist/esm/helpers/devWarnings.js.map +1 -0
  239. package/dist/esm/helpers/inertProps.js +27 -0
  240. package/dist/esm/helpers/inertProps.js.map +1 -0
  241. package/dist/esm/helpers/mergeBulmaStyles.js +20 -0
  242. package/dist/esm/helpers/mergeBulmaStyles.js.map +1 -0
  243. package/dist/esm/helpers/polymorphic.js +18 -0
  244. package/dist/esm/helpers/polymorphic.js.map +1 -0
  245. package/dist/esm/helpers/portal.js +76 -0
  246. package/dist/esm/helpers/portal.js.map +1 -0
  247. package/dist/esm/helpers/positionStacks.js +45 -0
  248. package/dist/esm/helpers/positionStacks.js.map +1 -0
  249. package/dist/esm/helpers/scrollLock.js +38 -0
  250. package/dist/esm/helpers/scrollLock.js.map +1 -0
  251. package/dist/esm/helpers/shadowDom.js +71 -0
  252. package/dist/esm/helpers/shadowDom.js.map +1 -0
  253. package/dist/esm/helpers/statusRegion.js +282 -0
  254. package/dist/esm/helpers/statusRegion.js.map +1 -0
  255. package/dist/esm/helpers/useAnchoredPosition.js +86 -0
  256. package/dist/esm/helpers/useAnchoredPosition.js.map +1 -0
  257. package/dist/esm/helpers/useBulmaClasses.js +158 -0
  258. package/dist/esm/helpers/useBulmaClasses.js.map +1 -0
  259. package/dist/esm/helpers/useClientLayoutEffect.js +13 -0
  260. package/dist/esm/helpers/useClientLayoutEffect.js.map +1 -0
  261. package/dist/esm/helpers/useColorClasses.js +84 -0
  262. package/dist/esm/helpers/useColorClasses.js.map +1 -0
  263. package/dist/esm/helpers/useFlexboxClasses.js +92 -0
  264. package/dist/esm/helpers/useFlexboxClasses.js.map +1 -0
  265. package/dist/esm/helpers/useFocusTrap.js +470 -0
  266. package/dist/esm/helpers/useFocusTrap.js.map +1 -0
  267. package/dist/esm/helpers/useIsHydrated.js +31 -0
  268. package/dist/esm/helpers/useIsHydrated.js.map +1 -0
  269. package/dist/esm/helpers/useOtherClasses.js +115 -0
  270. package/dist/esm/helpers/useOtherClasses.js.map +1 -0
  271. package/dist/esm/helpers/useSpacingClasses.js +82 -0
  272. package/dist/esm/helpers/useSpacingClasses.js.map +1 -0
  273. package/dist/esm/helpers/useTypographyClasses.js +93 -0
  274. package/dist/esm/helpers/useTypographyClasses.js.map +1 -0
  275. package/dist/esm/helpers/useVisibilityClasses.js +134 -0
  276. package/dist/esm/helpers/useVisibilityClasses.js.map +1 -0
  277. package/dist/esm/helpers/withSubComponents.js +24 -0
  278. package/dist/esm/helpers/withSubComponents.js.map +1 -0
  279. package/dist/esm/layout/Container.js +48 -0
  280. package/dist/esm/layout/Container.js.map +1 -0
  281. package/dist/esm/layout/Footer.js +33 -0
  282. package/dist/esm/layout/Footer.js.map +1 -0
  283. package/dist/esm/layout/Hero.js +90 -0
  284. package/dist/esm/layout/Hero.js.map +1 -0
  285. package/dist/esm/layout/Level.js +110 -0
  286. package/dist/esm/layout/Level.js.map +1 -0
  287. package/dist/esm/layout/Media.js +86 -0
  288. package/dist/esm/layout/Media.js.map +1 -0
  289. package/dist/esm/layout/Section.js +30 -0
  290. package/dist/esm/layout/Section.js.map +1 -0
  291. package/dist/extras.css +1 -1
  292. package/dist/extras.css.map +1 -1
  293. package/dist/index.cjs +187 -57
  294. package/dist/index.cjs.map +1 -1
  295. package/dist/index.esm.js +115 -17516
  296. package/dist/index.esm.js.map +1 -1
  297. package/dist/types/elements/Icon.d.ts +10 -7
  298. package/dist/types/form/Autocomplete.d.ts +1 -1
  299. package/dist/types/form/Checkboxes.d.ts +1 -1
  300. package/dist/types/form/DateInput.d.ts +1 -1
  301. package/dist/types/form/DateInputBase.d.ts +3 -4
  302. package/dist/types/form/DateRangeInput.d.ts +1 -1
  303. package/dist/types/form/DateTimeInput.d.ts +1 -1
  304. package/dist/types/form/DateTimeInputBase.d.ts +3 -4
  305. package/dist/types/form/Field.d.ts +2 -2
  306. package/dist/types/form/File.d.ts +4 -4
  307. package/dist/types/form/FormContext.d.ts +24 -2
  308. package/dist/types/form/Numberinput.d.ts +1 -1
  309. package/dist/types/form/Radios.d.ts +1 -1
  310. package/dist/types/form/Rate.d.ts +1 -1
  311. package/dist/types/form/Slider.d.ts +1 -1
  312. package/dist/types/form/Taginput.d.ts +1 -1
  313. package/dist/types/form/TimeInput.d.ts +1 -1
  314. package/dist/types/form/useAutoLabelId.d.ts +25 -4
  315. package/dist/types/helpers/Config.d.ts +3 -4
  316. package/dist/types/helpers/Theme.d.ts +44 -40
  317. package/dist/types-cjs/elements/Icon.d.ts +10 -7
  318. package/dist/types-cjs/form/Autocomplete.d.ts +1 -1
  319. package/dist/types-cjs/form/Checkboxes.d.ts +1 -1
  320. package/dist/types-cjs/form/DateInput.d.ts +1 -1
  321. package/dist/types-cjs/form/DateInputBase.d.ts +3 -4
  322. package/dist/types-cjs/form/DateRangeInput.d.ts +1 -1
  323. package/dist/types-cjs/form/DateTimeInput.d.ts +1 -1
  324. package/dist/types-cjs/form/DateTimeInputBase.d.ts +3 -4
  325. package/dist/types-cjs/form/Field.d.ts +2 -2
  326. package/dist/types-cjs/form/File.d.ts +4 -4
  327. package/dist/types-cjs/form/FormContext.d.ts +24 -2
  328. package/dist/types-cjs/form/Numberinput.d.ts +1 -1
  329. package/dist/types-cjs/form/Radios.d.ts +1 -1
  330. package/dist/types-cjs/form/Rate.d.ts +1 -1
  331. package/dist/types-cjs/form/Slider.d.ts +1 -1
  332. package/dist/types-cjs/form/Taginput.d.ts +1 -1
  333. package/dist/types-cjs/form/TimeInput.d.ts +1 -1
  334. package/dist/types-cjs/form/useAutoLabelId.d.ts +25 -4
  335. package/dist/types-cjs/helpers/Config.d.ts +3 -4
  336. package/dist/types-cjs/helpers/Theme.d.ts +44 -40
  337. package/dist/versions/bestax-no-dark-mode.css +1 -1
  338. package/dist/versions/bestax-no-dark-mode.css.map +1 -1
  339. package/dist/versions/bestax-no-helpers-prefixed.css +1 -1
  340. package/dist/versions/bestax-no-helpers-prefixed.css.map +1 -1
  341. package/dist/versions/bestax-no-helpers.css +1 -1
  342. package/dist/versions/bestax-no-helpers.css.map +1 -1
  343. package/dist/versions/bestax-prefixed.css +1 -1
  344. package/dist/versions/bestax-prefixed.css.map +1 -1
  345. package/package.json +1 -1
  346. package/src/scss/form/_dateinput.scss +37 -6
  347. package/src/scss/form/_datetimeinput.scss +7 -2
  348. package/src/scss/form/_picker-popover.scss +1 -4
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Theme.js","sources":["../../../src/helpers/Theme.tsx"],"sourcesContent":["import React, {\n useEffect,\n useMemo,\n useState,\n ReactNode,\n CSSProperties,\n} from 'react';\nimport classNames from './classNames';\nimport { useBulmaClasses, BulmaClassesProps } from './useBulmaClasses';\nimport { validGaps, validRadii, type BulmaGapStep } from './bulmaClassHelpers';\nimport { warnOnce } from './devWarnings';\nimport { useClassPrefix } from './Config';\n\n// --- FULL Bulma v1 CSS variable keys (auto-generated from CSSVAR_KEYS) ---\nconst bulmaCssVars = [\n // scheme\n '--bulma-scheme-h',\n '--bulma-scheme-s',\n '--bulma-scheme-main',\n '--bulma-scheme-main-bis',\n '--bulma-scheme-main-ter',\n '--bulma-scheme-invert',\n '--bulma-scheme-invert-bis',\n '--bulma-scheme-invert-ter',\n '--bulma-light-l',\n '--bulma-light-invert-l',\n '--bulma-dark-l',\n '--bulma-dark-invert-l',\n '--bulma-soft-l',\n '--bulma-bold-l',\n '--bulma-soft-invert-l',\n '--bulma-bold-invert-l',\n '--bulma-hover-background-l-delta',\n '--bulma-active-background-l-delta',\n '--bulma-hover-border-l-delta',\n '--bulma-active-border-l-delta',\n '--bulma-hover-color-l-delta',\n '--bulma-active-color-l-delta',\n '--bulma-hover-shadow-a-delta',\n '--bulma-active-shadow-a-delta',\n // colors\n '--bulma-primary-h',\n '--bulma-primary-s',\n '--bulma-primary-l',\n '--bulma-link-h',\n '--bulma-link-s',\n '--bulma-link-l',\n '--bulma-info-h',\n '--bulma-info-s',\n '--bulma-info-l',\n '--bulma-success-h',\n '--bulma-success-s',\n '--bulma-success-l',\n '--bulma-warning-h',\n '--bulma-warning-s',\n '--bulma-warning-l',\n '--bulma-danger-h',\n '--bulma-danger-s',\n '--bulma-danger-l',\n // shadow (the upstream token .box/.card/.dropdown/.panel derive their own\n // shadow variables from; overriding it from an ancestor is the route that\n // cascades, since those selectors re-declare their derived var on\n // themselves)\n '--bulma-shadow-h',\n '--bulma-shadow-s',\n '--bulma-shadow-l',\n '--bulma-shadow',\n // typography\n '--bulma-family-primary',\n '--bulma-family-secondary',\n '--bulma-family-code',\n '--bulma-size-small',\n '--bulma-size-normal',\n '--bulma-size-medium',\n '--bulma-size-large',\n '--bulma-weight-light',\n '--bulma-weight-normal',\n '--bulma-weight-medium',\n '--bulma-weight-semibold',\n '--bulma-weight-bold',\n '--bulma-weight-extrabold',\n // other\n '--bulma-block-spacing',\n '--bulma-duration',\n '--bulma-easing',\n '--bulma-radius-small',\n '--bulma-radius',\n '--bulma-radius-medium',\n '--bulma-radius-large',\n '--bulma-radius-rounded',\n '--bulma-speed',\n '--bulma-arrow-color',\n '--bulma-loading-color',\n '--bulma-burger-h',\n '--bulma-burger-s',\n '--bulma-burger-l',\n '--bulma-burger-border-radius',\n '--bulma-burger-gap',\n '--bulma-burger-item-height',\n '--bulma-burger-item-width',\n // generic\n '--bulma-body-background-color',\n '--bulma-body-size',\n '--bulma-body-min-width',\n '--bulma-body-rendering',\n '--bulma-body-family',\n '--bulma-body-overflow-x',\n '--bulma-body-overflow-y',\n '--bulma-body-color',\n '--bulma-body-font-size',\n '--bulma-body-weight',\n '--bulma-body-line-height',\n '--bulma-code-family',\n '--bulma-code-padding',\n '--bulma-code-weight',\n '--bulma-code-size',\n '--bulma-small-font-size',\n '--bulma-hr-background-color',\n '--bulma-hr-height',\n '--bulma-hr-margin',\n '--bulma-strong-color',\n '--bulma-strong-weight',\n '--bulma-pre-font-size',\n '--bulma-pre-padding',\n '--bulma-pre-code-font-size',\n // skeleton\n '--bulma-skeleton-background',\n '--bulma-skeleton-radius',\n '--bulma-skeleton-block-min-height',\n '--bulma-skeleton-lines-gap',\n '--bulma-skeleton-line-height',\n // breadcrumb\n '--bulma-breadcrumb-item-color',\n '--bulma-breadcrumb-item-hover-color',\n '--bulma-breadcrumb-item-active-color',\n '--bulma-breadcrumb-item-padding-vertical',\n '--bulma-breadcrumb-item-padding-horizontal',\n '--bulma-breadcrumb-item-separator-color',\n // card\n '--bulma-card-color',\n '--bulma-card-background-color',\n '--bulma-card-shadow',\n '--bulma-card-radius',\n '--bulma-card-header-background-color',\n '--bulma-card-header-color',\n '--bulma-card-header-padding',\n '--bulma-card-header-shadow',\n '--bulma-card-header-weight',\n '--bulma-card-content-background-color',\n '--bulma-card-content-padding',\n '--bulma-card-footer-background-color',\n '--bulma-card-footer-border-top',\n '--bulma-card-footer-padding',\n '--bulma-card-media-margin',\n // dropdown\n '--bulma-dropdown-menu-min-width',\n '--bulma-dropdown-content-background-color',\n '--bulma-dropdown-content-offset',\n '--bulma-dropdown-content-padding-bottom',\n '--bulma-dropdown-content-padding-top',\n '--bulma-dropdown-content-radius',\n '--bulma-dropdown-content-shadow',\n '--bulma-dropdown-content-z',\n '--bulma-dropdown-item-h',\n '--bulma-dropdown-item-s',\n '--bulma-dropdown-item-l',\n '--bulma-dropdown-item-background-l',\n '--bulma-dropdown-item-background-l-delta',\n '--bulma-dropdown-item-hover-background-l-delta',\n '--bulma-dropdown-item-active-background-l-delta',\n '--bulma-dropdown-item-color-l',\n '--bulma-dropdown-item-selected-h',\n '--bulma-dropdown-item-selected-s',\n '--bulma-dropdown-item-selected-l',\n '--bulma-dropdown-item-selected-background-l',\n '--bulma-dropdown-item-selected-color-l',\n '--bulma-dropdown-divider-background-color',\n // menu\n '--bulma-menu-item-h',\n '--bulma-menu-item-s',\n '--bulma-menu-item-l',\n '--bulma-menu-item-background-l',\n '--bulma-menu-item-background-l-delta',\n '--bulma-menu-item-hover-background-l-delta',\n '--bulma-menu-item-active-background-l-delta',\n '--bulma-menu-item-color-l',\n '--bulma-menu-item-radius',\n '--bulma-menu-item-selected-h',\n '--bulma-menu-item-selected-s',\n '--bulma-menu-item-selected-l',\n '--bulma-menu-item-selected-background-l',\n '--bulma-menu-item-selected-color-l',\n '--bulma-menu-list-border-left',\n '--bulma-menu-list-line-height',\n '--bulma-menu-list-link-padding',\n '--bulma-menu-nested-list-margin',\n '--bulma-menu-nested-list-padding-left',\n '--bulma-menu-label-color',\n '--bulma-menu-label-font-size',\n '--bulma-menu-label-letter-spacing',\n '--bulma-menu-label-spacing',\n // message\n '--bulma-message-h',\n '--bulma-message-s',\n '--bulma-message-background-l',\n '--bulma-message-border-l',\n '--bulma-message-border-l-delta',\n '--bulma-message-border-style',\n '--bulma-message-border-width',\n '--bulma-message-color-l',\n '--bulma-message-radius',\n '--bulma-message-header-weight',\n '--bulma-message-header-padding',\n '--bulma-message-header-radius',\n '--bulma-message-header-body-border-width',\n '--bulma-message-header-background-l',\n '--bulma-message-header-color-l',\n '--bulma-message-body-border-width',\n '--bulma-message-body-color',\n '--bulma-message-body-padding',\n '--bulma-message-body-radius',\n '--bulma-message-body-pre-code-background-color',\n // modal\n '--bulma-modal-z',\n '--bulma-modal-background-background-color',\n '--bulma-modal-content-width',\n '--bulma-modal-content-margin-mobile',\n '--bulma-modal-content-spacing-mobile',\n '--bulma-modal-content-spacing-tablet',\n '--bulma-modal-close-dimensions',\n '--bulma-modal-close-right',\n '--bulma-modal-close-top',\n '--bulma-modal-card-spacing',\n '--bulma-modal-card-head-background-color',\n '--bulma-modal-card-head-padding',\n '--bulma-modal-card-head-radius',\n '--bulma-modal-card-title-color',\n '--bulma-modal-card-title-line-height',\n '--bulma-modal-card-title-size',\n '--bulma-modal-card-foot-background-color',\n '--bulma-modal-card-foot-radius',\n '--bulma-modal-card-body-background-color',\n '--bulma-modal-card-body-padding',\n // navbar\n '--bulma-navbar-h',\n '--bulma-navbar-s',\n '--bulma-navbar-l',\n '--bulma-navbar-background-color',\n '--bulma-navbar-box-shadow-size',\n '--bulma-navbar-box-shadow-color',\n '--bulma-navbar-padding-vertical',\n '--bulma-navbar-padding-horizontal',\n '--bulma-navbar-z',\n '--bulma-navbar-fixed-z',\n '--bulma-navbar-item-background-a',\n '--bulma-navbar-item-background-l',\n '--bulma-navbar-item-background-l-delta',\n '--bulma-navbar-item-hover-background-l-delta',\n '--bulma-navbar-item-active-background-l-delta',\n '--bulma-navbar-item-color-l',\n '--bulma-navbar-item-selected-h',\n '--bulma-navbar-item-selected-s',\n '--bulma-navbar-item-selected-l',\n '--bulma-navbar-item-selected-background-l',\n '--bulma-navbar-item-selected-color-l',\n '--bulma-navbar-item-img-max-height',\n '--bulma-navbar-burger-color',\n '--bulma-navbar-tab-hover-background-color',\n '--bulma-navbar-tab-hover-border-bottom-color',\n '--bulma-navbar-tab-active-color',\n '--bulma-navbar-tab-active-background-color',\n '--bulma-navbar-tab-active-border-bottom-color',\n '--bulma-navbar-tab-active-border-bottom-style',\n '--bulma-navbar-tab-active-border-bottom-width',\n '--bulma-navbar-dropdown-background-color',\n '--bulma-navbar-dropdown-border-l',\n '--bulma-navbar-dropdown-border-color',\n '--bulma-navbar-dropdown-border-style',\n '--bulma-navbar-dropdown-border-width',\n '--bulma-navbar-dropdown-offset',\n '--bulma-navbar-dropdown-arrow',\n '--bulma-navbar-dropdown-radius',\n '--bulma-navbar-dropdown-z',\n '--bulma-navbar-dropdown-boxed-radius',\n '--bulma-navbar-dropdown-boxed-shadow',\n '--bulma-navbar-dropdown-item-h',\n '--bulma-navbar-dropdown-item-s',\n '--bulma-navbar-dropdown-item-l',\n '--bulma-navbar-dropdown-item-background-l',\n '--bulma-navbar-dropdown-item-color-l',\n '--bulma-navbar-divider-background-l',\n '--bulma-navbar-divider-height',\n '--bulma-navbar-bottom-box-shadow-size',\n // pagination\n '--bulma-pagination-margin',\n '--bulma-pagination-min-width',\n '--bulma-pagination-item-h',\n '--bulma-pagination-item-s',\n '--bulma-pagination-item-l',\n '--bulma-pagination-item-background-l-delta',\n '--bulma-pagination-item-hover-background-l-delta',\n '--bulma-pagination-item-active-background-l-delta',\n '--bulma-pagination-item-border-style',\n '--bulma-pagination-item-border-width',\n '--bulma-pagination-item-border-l',\n '--bulma-pagination-item-border-l-delta',\n '--bulma-pagination-item-hover-border-l-delta',\n '--bulma-pagination-item-active-border-l-delta',\n '--bulma-pagination-item-focus-border-l-delta',\n '--bulma-pagination-item-color-l',\n '--bulma-pagination-item-font-size',\n '--bulma-pagination-item-margin',\n '--bulma-pagination-item-padding-left',\n '--bulma-pagination-item-padding-right',\n '--bulma-pagination-item-outer-shadow-h',\n '--bulma-pagination-item-outer-shadow-s',\n '--bulma-pagination-item-outer-shadow-l',\n '--bulma-pagination-item-outer-shadow-a',\n '--bulma-pagination-nav-padding-left',\n '--bulma-pagination-nav-padding-right',\n '--bulma-pagination-disabled-color',\n '--bulma-pagination-disabled-background-color',\n '--bulma-pagination-disabled-border-color',\n '--bulma-pagination-current-color',\n '--bulma-pagination-current-background-color',\n '--bulma-pagination-current-border-color',\n '--bulma-pagination-ellipsis-color',\n '--bulma-pagination-shadow-inset',\n '--bulma-pagination-selected-item-h',\n '--bulma-pagination-selected-item-s',\n '--bulma-pagination-selected-item-l',\n '--bulma-pagination-selected-item-background-l',\n '--bulma-pagination-selected-item-border-l',\n '--bulma-pagination-selected-item-color-l',\n // panel\n '--bulma-panel-margin',\n '--bulma-panel-item-border',\n '--bulma-panel-radius',\n '--bulma-panel-shadow',\n '--bulma-panel-heading-line-height',\n '--bulma-panel-heading-padding',\n '--bulma-panel-heading-radius',\n '--bulma-panel-heading-size',\n '--bulma-panel-heading-weight',\n '--bulma-panel-tabs-font-size',\n '--bulma-panel-tab-border-bottom-color',\n '--bulma-panel-tab-border-bottom-style',\n '--bulma-panel-tab-border-bottom-width',\n '--bulma-panel-tab-active-color',\n '--bulma-panel-list-item-color',\n '--bulma-panel-list-item-hover-color',\n '--bulma-panel-block-color',\n '--bulma-panel-block-hover-background-color',\n '--bulma-panel-block-active-border-left-color',\n '--bulma-panel-block-active-color',\n '--bulma-panel-block-active-icon-color',\n '--bulma-panel-icon-color',\n // tabs\n '--bulma-tabs-border-bottom-color',\n '--bulma-tabs-border-bottom-style',\n '--bulma-tabs-border-bottom-width',\n '--bulma-tabs-link-color',\n '--bulma-tabs-link-hover-border-bottom-color',\n '--bulma-tabs-link-hover-color',\n '--bulma-tabs-link-active-border-bottom-color',\n '--bulma-tabs-link-active-color',\n '--bulma-tabs-link-padding',\n '--bulma-tabs-boxed-link-radius',\n '--bulma-tabs-boxed-link-hover-background-color',\n '--bulma-tabs-boxed-link-hover-border-bottom-color',\n '--bulma-tabs-boxed-link-active-background-color',\n '--bulma-tabs-boxed-link-active-border-color',\n '--bulma-tabs-boxed-link-active-border-bottom-color',\n '--bulma-tabs-toggle-link-border-color',\n '--bulma-tabs-toggle-link-border-style',\n '--bulma-tabs-toggle-link-border-width',\n '--bulma-tabs-toggle-link-hover-background-color',\n '--bulma-tabs-toggle-link-hover-border-color',\n '--bulma-tabs-toggle-link-radius',\n '--bulma-tabs-toggle-link-active-background-color',\n '--bulma-tabs-toggle-link-active-border-color',\n '--bulma-tabs-toggle-link-active-color',\n // box\n '--bulma-box-background-color',\n '--bulma-box-color',\n '--bulma-box-radius',\n '--bulma-box-shadow',\n '--bulma-box-padding',\n '--bulma-box-link-hover-shadow',\n '--bulma-box-link-active-shadow',\n // content\n '--bulma-content-heading-color',\n '--bulma-content-heading-weight',\n '--bulma-content-heading-line-height',\n '--bulma-content-block-margin-bottom',\n '--bulma-content-blockquote-background-color',\n '--bulma-content-blockquote-border-left',\n '--bulma-content-blockquote-padding',\n '--bulma-content-pre-padding',\n '--bulma-content-table-cell-border',\n '--bulma-content-table-cell-border-width',\n '--bulma-content-table-cell-padding',\n '--bulma-content-table-cell-heading-color',\n '--bulma-content-table-head-cell-border-width',\n '--bulma-content-table-head-cell-color',\n '--bulma-content-table-body-last-row-cell-border-bottom-width',\n '--bulma-content-table-foot-cell-border-width',\n '--bulma-content-table-foot-cell-color',\n // delete\n '--bulma-delete-dimensions',\n '--bulma-delete-background-l',\n '--bulma-delete-background-alpha',\n '--bulma-delete-color',\n // icon\n '--bulma-icon-dimensions',\n '--bulma-icon-dimensions-small',\n '--bulma-icon-dimensions-medium',\n '--bulma-icon-dimensions-large',\n '--bulma-icon-text-spacing',\n // notification\n '--bulma-notification-h',\n '--bulma-notification-s',\n '--bulma-notification-background-l',\n '--bulma-notification-color-l',\n '--bulma-notification-code-background-color',\n '--bulma-notification-radius',\n '--bulma-notification-padding',\n // progress\n '--bulma-progress-border-radius',\n '--bulma-progress-bar-background-color',\n '--bulma-progress-value-background-color',\n '--bulma-progress-indeterminate-duration',\n // table\n '--bulma-table-color',\n '--bulma-table-background-color',\n '--bulma-table-cell-border-color',\n '--bulma-table-cell-border-style',\n '--bulma-table-cell-border-width',\n '--bulma-table-cell-padding',\n '--bulma-table-cell-heading-color',\n '--bulma-table-cell-text-align',\n '--bulma-table-head-cell-border-width',\n '--bulma-table-head-cell-color',\n '--bulma-table-foot-cell-border-width',\n '--bulma-table-foot-cell-color',\n '--bulma-table-head-background-color',\n '--bulma-table-body-background-color',\n '--bulma-table-foot-background-color',\n '--bulma-table-row-hover-background-color',\n '--bulma-table-row-active-background-color',\n '--bulma-table-row-active-color',\n '--bulma-table-striped-row-even-background-color',\n '--bulma-table-striped-row-even-hover-background-color',\n // tag\n '--bulma-tag-h',\n '--bulma-tag-s',\n '--bulma-tag-background-l',\n '--bulma-tag-background-l-delta',\n '--bulma-tag-hover-background-l-delta',\n '--bulma-tag-active-background-l-delta',\n '--bulma-tag-color-l',\n '--bulma-tag-radius',\n '--bulma-tag-delete-margin',\n // title\n '--bulma-title-color',\n '--bulma-title-family',\n '--bulma-title-size',\n '--bulma-title-weight',\n '--bulma-title-line-height',\n '--bulma-title-strong-color',\n '--bulma-title-strong-weight',\n '--bulma-title-sub-size',\n '--bulma-title-sup-size',\n '--bulma-subtitle-color',\n '--bulma-subtitle-family',\n '--bulma-subtitle-size',\n '--bulma-subtitle-weight',\n '--bulma-subtitle-line-height',\n '--bulma-subtitle-strong-color',\n '--bulma-subtitle-strong-weight',\n // control\n '--bulma-control-radius',\n '--bulma-control-radius-small',\n '--bulma-control-border-width',\n '--bulma-control-height',\n '--bulma-control-line-height',\n '--bulma-control-padding-vertical',\n '--bulma-control-padding-horizontal',\n '--bulma-control-size',\n '--bulma-control-focus-shadow-l',\n // file\n '--bulma-file-radius',\n '--bulma-file-name-border-color',\n '--bulma-file-name-border-style',\n '--bulma-file-name-border-width',\n '--bulma-file-name-max-width',\n '--bulma-file-h',\n '--bulma-file-s',\n '--bulma-file-background-l',\n '--bulma-file-background-l-delta',\n '--bulma-file-hover-background-l-delta',\n '--bulma-file-active-background-l-delta',\n '--bulma-file-border-l',\n '--bulma-file-border-l-delta',\n '--bulma-file-hover-border-l-delta',\n '--bulma-file-active-border-l-delta',\n '--bulma-file-cta-color-l',\n '--bulma-file-name-color-l',\n '--bulma-file-color-l-delta',\n '--bulma-file-hover-color-l-delta',\n '--bulma-file-active-color-l-delta',\n // input\n '--bulma-input-h',\n '--bulma-input-s',\n '--bulma-input-l',\n '--bulma-input-border-style',\n '--bulma-input-border-l',\n '--bulma-input-border-l-delta',\n '--bulma-input-hover-border-l-delta',\n '--bulma-input-active-border-l-delta',\n '--bulma-input-focus-h',\n '--bulma-input-focus-s',\n '--bulma-input-focus-l',\n '--bulma-input-focus-shadow-size',\n '--bulma-input-focus-shadow-alpha',\n '--bulma-input-color-l',\n '--bulma-input-background-l',\n '--bulma-input-background-l-delta',\n '--bulma-input-height',\n '--bulma-input-shadow',\n '--bulma-input-placeholder-color',\n '--bulma-input-disabled-color',\n '--bulma-input-disabled-background-color',\n '--bulma-input-disabled-border-color',\n '--bulma-input-disabled-placeholder-color',\n '--bulma-input-arrow',\n '--bulma-input-icon-color',\n '--bulma-input-icon-hover-color',\n '--bulma-input-icon-focus-color',\n '--bulma-input-radius',\n // columns\n '--bulma-column-gap',\n // grid\n '--bulma-grid-gap',\n '--bulma-grid-column-count',\n '--bulma-grid-column-min',\n '--bulma-grid-cell-column-span',\n '--bulma-grid-cell-column-start',\n // footer\n '--bulma-footer-background-color',\n '--bulma-footer-color',\n '--bulma-footer-padding',\n // hero\n '--bulma-hero-body-padding',\n '--bulma-hero-body-padding-tablet',\n '--bulma-hero-body-padding-small',\n '--bulma-hero-body-padding-medium',\n '--bulma-hero-body-padding-large',\n // media\n '--bulma-media-border-color',\n '--bulma-media-border-size',\n '--bulma-media-spacing',\n '--bulma-media-spacing-large',\n '--bulma-media-content-spacing',\n '--bulma-media-level-1-spacing',\n '--bulma-media-level-1-content-spacing',\n '--bulma-media-level-2-spacing',\n // section\n '--bulma-section-padding',\n '--bulma-section-padding-desktop',\n '--bulma-section-padding-medium',\n '--bulma-section-padding-large',\n] as const;\n\n/** A single Bulma CSS variable key from the `bulmaCssVars` tuple. */\ntype BulmaVarKey = (typeof bulmaCssVars)[number];\n/** A partial record mapping Bulma CSS variable keys to string values. */\ntype BulmaVars = Partial<Record<BulmaVarKey, string>>;\n\n/**\n * Convert a Bulma CSS variable name to a camelCase prop name.\n * @param {string} varName - CSS variable name (e.g., '--bulma-primary-h').\n * @returns {string} The camelCase prop name (e.g., 'primaryH').\n */\nfunction cssVarToProp(varName: string): string {\n return varName\n .replace(/^--bulma-/, '')\n .split('-')\n .map((part, i) =>\n i === 0 ? part : part.charAt(0).toUpperCase() + part.slice(1)\n )\n .join('');\n}\n\n/**\n * Prop names `cssVarToProp` would mint that are already helper props:\n * `--bulma-shadow` becomes `shadow`, `--bulma-radius` becomes `radius` and\n * `--bulma-column-gap` becomes `columnGap`. They stay out of\n * `bulmaVarPropMap`, so on Theme each is the helper prop it is on every other\n * component, and every one of those variables is still reachable through\n * `bulmaVars`.\n *\n * `radius` was missed here once and set `--bulma-radius` while typed as the\n * helper (#694). It still writes that variable, so what it did then keeps\n * working; see `themeRadiusVar`. `columnGap` joined when the gap helpers\n * became shared helper props, and keeps its old variable route the same way;\n * see `themeColumnGapVar`.\n */\nconst helperPropNames: readonly string[] = ['shadow', 'radius', 'columnGap'];\n\n/**\n * Mapping of camelCase prop names to their Bulma CSS variable counterparts,\n * minus the `helperPropNames` above.\n */\nconst bulmaVarPropMap = Object.fromEntries(\n bulmaCssVars\n .map(cssVar => [cssVarToProp(cssVar), cssVar])\n .filter(([prop]) => !helperPropNames.includes(prop))\n) as Record<string, string>;\n\n/**\n * What each helper value of `radius` writes to `--bulma-radius` on a Theme,\n * alongside its class.\n *\n * Before #694, `radius=\"radiusless\"` wrote `--bulma-radius: radiusless`. That\n * is not a length, and a declaration reading an invalid variable falls back\n * to its property's initial value, which for a border radius is 0. So\n * everything inside the Theme that takes its radius from that variable lost\n * it, and under `isRoot` so did everything on the page that does. Writing a\n * real 0 keeps what\n * people see and makes it valid CSS. Keyed by the helper values, so adding\n * one means saying what it writes.\n *\n * The sizes write nothing and only add their class. Their classes read the\n * radius variables, so `normal` would point `--bulma-radius` at itself, which\n * is invalid and computes to 0, and `rounded` would turn every control inside\n * the Theme into a pill.\n */\nconst radiusHelperVars: Record<\n (typeof validRadii)[number],\n string | undefined\n> = {\n radiusless: '0',\n small: undefined,\n normal: undefined,\n large: undefined,\n rounded: undefined,\n};\n\n/**\n * What `radius` writes to `--bulma-radius` on a Theme, or `undefined` when it\n * writes nothing.\n *\n * A helper value writes its `radiusHelperVars` entry. Any other non-empty\n * string is written as given: before #694 every `radius` on Theme set the\n * variable whatever its type said, and a JavaScript caller passing a length\n * got the radius it asked for. That keeps working so nothing breaks, but the\n * type rejects it, so it warns in development and points at `bulmaVars`.\n *\n * Only a string writes anything, because only a string ever set the variable\n * to something usable: an empty value or zero was dropped, and a boolean or\n * any other bare number is not a length. The helper ignores those too, the\n * way it does on every other component.\n */\nconst themeRadiusVar = (radius: unknown): string | undefined => {\n if (typeof radius !== 'string' || radius === '') {\n return undefined;\n }\n if ((validRadii as readonly string[]).includes(radius)) {\n return radiusHelperVars[radius as keyof typeof radiusHelperVars];\n }\n warnOnce(\n 'Theme:radius-variable',\n `[bestax-bulma] <Theme radius=\"${radius}\">: setting --bulma-radius ` +\n 'through the radius prop is deprecated and will stop working in a ' +\n 'future major version. On Theme, as on every other component, radius ' +\n `is the border radius helper (\"${validRadii.join('\", \"')}\"). Set the variable with ` +\n `bulmaVars={{ '--bulma-radius': '${radius}' }} instead.`\n );\n return radius;\n};\n\n/**\n * What `columnGap` writes to `--bulma-column-gap` on a Theme, or `undefined`\n * when it writes nothing.\n *\n * Until the gap helpers were shared helper props, `columnGap` on Theme was\n * the camelCase prop Theme mints for `--bulma-column-gap`. It was never in\n * `ThemeProps`, so only untyped code reached it, but that code got the\n * columns gutter it asked for. It is the column gap helper now, as on every\n * other component, so a gap step goes to the helper and writes nothing here.\n * Any other non-empty string is still written as given, so a length such as\n * `'1rem'` keeps working, with a development warning pointing at `bulmaVars`.\n *\n * Only a string writes anything, for the reason `themeRadiusVar` gives: a\n * number or a boolean was never a usable length.\n */\nconst themeColumnGapVar = (columnGap: unknown): string | undefined => {\n if (typeof columnGap !== 'string' || columnGap === '') {\n return undefined;\n }\n if ((validGaps as readonly string[]).includes(columnGap)) {\n return undefined;\n }\n warnOnce(\n 'Theme:column-gap-variable',\n `[bestax-bulma] <Theme columnGap=\"${columnGap}\">: setting ` +\n '--bulma-column-gap through the columnGap prop is deprecated and will ' +\n 'stop working in a future major version. On Theme, as on every other ' +\n 'component, columnGap is the column gap helper ' +\n `(\"${validGaps.join('\", \"')}\"). Set the variable with ` +\n `bulmaVars={{ '--bulma-column-gap': '${columnGap}' }} instead.`\n );\n return columnGap;\n};\n\n/** The one `<style>` element every `isRoot` Theme writes into. */\nconst ROOT_STYLE_ID = 'bestax-bulma-theme-vars';\n\n/**\n * The `:root` rules of every mounted `isRoot` Theme that has any, keyed by the\n * Theme's render order.\n *\n * Root Themes share one `<style>` element, so each keeps its rules here and\n * the element is rebuilt from all of them whenever one mounts, changes or\n * unmounts. Before this each Theme overwrote the element with only its own\n * rules, and the first to unmount removed it for all of them (#736).\n *\n * The key is a number each Theme takes when it first renders. React renders a\n * parent before its children and an earlier sibling before a later one, so an\n * inner or later-mounted root Theme sorts later, comes later in the\n * stylesheet, and wins a variable two of them set, as an inner scoped Theme\n * does. Effects would give the wrong answer for nesting: React runs a child's\n * effects before its parent's. Only the relative order matters, so a number\n * skipped by StrictMode calling the initializer twice, or by a render React\n * throws away, is harmless. The key never changes, so an update keeps its\n * place and re-rendering one Theme never changes which one wins.\n */\nconst rootThemeRules = new Map<number, string>();\nlet nextRootOrder = 0;\n\n/**\n * Write every registered root Theme's rules into the shared element, creating\n * it when needed and removing it once no Theme has any rules left.\n */\nconst renderRootThemeRules = (): void => {\n let element = document.getElementById(ROOT_STYLE_ID);\n if (rootThemeRules.size === 0) {\n element?.remove();\n return;\n }\n if (!element) {\n element = document.createElement('style');\n element.id = ROOT_STYLE_ID;\n document.head.appendChild(element);\n }\n element.textContent = [...rootThemeRules]\n .sort(([a], [b]) => a - b)\n .map(([, rules]) => rules)\n .join('\\n');\n};\n\n/**\n * Record one Theme's `:root` rules, where an empty string means it has none,\n * and rebuild the shared element if that changed anything. A Theme with no\n * rules never touches the element, which is what it did before the registry\n * too.\n */\nconst setRootThemeRules = (order: number, rules: string): void => {\n if ((rootThemeRules.get(order) ?? '') === rules) {\n return;\n }\n if (rules) {\n rootThemeRules.set(order, rules);\n } else {\n rootThemeRules.delete(order);\n }\n renderRootThemeRules();\n};\n\n/**\n * Props for the Theme component.\n */\nexport interface ThemeProps extends Omit<\n BulmaClassesProps,\n 'color' | 'backgroundColor'\n> {\n /** The content the theme applies to. */\n children: ReactNode;\n /**\n * Additional CSS classes for the wrapper div. A root Theme (`isRoot`) has no\n * wrapper, so there this does nothing, and says so in development.\n */\n className?: string;\n /**\n * Inject the variables globally at `:root` instead of scoping them to a\n * wrapper div. Default: false.\n *\n * A root Theme renders its children with no wrapper, so `className` and the\n * helper props, such as `m` or `shadow`, have no element to land on. They\n * do nothing, and say so in development. `radius` and `columnGap` describe\n * what each does at the root.\n *\n * Several root Themes can be mounted at once, and each contributes its own\n * variables. Where two set the same one, the inner or later-mounted Theme\n * wins, as with nested scoped Themes, and unmounting a Theme removes only\n * what it contributed. The variables are written from an effect, so a\n * server render does not include them.\n */\n isRoot?: boolean;\n /**\n * Set Bulma's light/dark scheme by writing its theme attribute on the\n * document root (`<html>`). This is always global, even on a scoped Theme.\n * `'system'` removes the attribute so Bulma follows the OS\n * `prefers-color-scheme`. Omit to leave the current setting untouched.\n *\n * The attribute is `data-theme`. A stylesheet built with a class prefix\n * reads Bulma's prefixed form instead (`data-bestax-theme` for the\n * `bestax-prefixed` builds), so under a `ConfigProvider` `classPrefix`\n * Theme writes both, and `'system'` or unmounting clears or restores both.\n * If the prefix cannot form an attribute name, `'light'` and `'dark'`\n * write only `data-theme` and warn in development.\n */\n colorMode?: 'light' | 'dark' | 'system';\n /**\n * Bulma CSS variables to set, by name, such as\n * `{ '--bulma-primary-h': '210' }`. Only Bulma's own variables, the keys\n * the `BulmaVars` type allows, are applied, and an empty value is skipped.\n * Where a variable prop, such as `primaryH`, sets the same variable, the\n * prop wins.\n */\n bulmaVars?: BulmaVars;\n /**\n * Border radius helper, as on every other component: `radiusless` adds\n * `is-radiusless` to the wrapper div. On a Theme it also sets\n * `--bulma-radius` to 0, so what is inside the Theme loses its radius too.\n * Under `isRoot` there is no wrapper for the class, and the variable is\n * written at `:root`, which squares everything on the page that takes its\n * radius from it.\n *\n * The sizes (`small`, `normal`, `large`, `rounded`) add their\n * `has-radius-<value>` class to the wrapper div and set no variable, so\n * they round the wrapper and leave what is inside it alone. Under `isRoot`\n * there is no wrapper, so they do nothing, and say so in development.\n *\n * To change the radius of what is inside, set the variable through `bulmaVars`\n * (`bulmaVars={{ '--bulma-radius': '6px' }}`). This prop used to write the\n * variable for every value, so any other non-empty string still does, but\n * that route is deprecated and logs a warning in development. A number or\n * a boolean never produced a usable radius that way, and is now ignored as\n * it is on every other component.\n */\n radius?: (typeof validRadii)[number];\n /**\n * Column gap helper, as on every other component: a gap step adds\n * `is-column-gap-<step>` to the wrapper div, which spaces the wrapper's own\n * children when it is a flex or grid container. Under `isRoot` there is no\n * wrapper, so it does nothing, and says so in development.\n *\n * It does not set `--bulma-column-gap`, the variable `Columns` reads for\n * its gutters; set that through `bulmaVars`\n * (`bulmaVars={{ '--bulma-column-gap': '1rem' }}`). Before `columnGap` was\n * a helper prop, untyped JavaScript could pass it to Theme as that\n * variable. A string that is not a gap step (`'1rem'`) still sets it, but\n * that route is deprecated and logs a warning in development. A gap step\n * does not: `columnGap=\"0\"` used to zero the gutters inside the Theme, and\n * now adds `is-column-gap-0` to the wrapper instead.\n */\n columnGap?: BulmaGapStep;\n // Bulma scheme variables\n /** Base hue for the color scheme, 0 to 360. Sets `--bulma-scheme-h`. */\n schemeH?: string;\n /** Base saturation for the color scheme, as a percentage. Sets `--bulma-scheme-s`. */\n schemeS?: string;\n /** Lightness for light backgrounds. Sets `--bulma-light-l`. */\n lightL?: string;\n /** Inverted lightness for light backgrounds. Sets `--bulma-light-invert-l`. */\n lightInvertL?: string;\n /** Lightness for dark backgrounds. Sets `--bulma-dark-l`. */\n darkL?: string;\n /** Inverted lightness for dark backgrounds. Sets `--bulma-dark-invert-l`. */\n darkInvertL?: string;\n /** Lightness for soft colors. Sets `--bulma-soft-l`. */\n softL?: string;\n /** Lightness for bold colors. Sets `--bulma-bold-l`. */\n boldL?: string;\n /** Inverted lightness for soft colors. Sets `--bulma-soft-invert-l`. */\n softInvertL?: string;\n /** Inverted lightness for bold colors. Sets `--bulma-bold-invert-l`. */\n boldInvertL?: string;\n /** Lightness change of a background on hover. Sets `--bulma-hover-background-l-delta`. */\n hoverBackgroundLDelta?: string;\n /** Lightness change of a background when active. Sets `--bulma-active-background-l-delta`. */\n activeBackgroundLDelta?: string;\n /** Lightness change of a border on hover. Sets `--bulma-hover-border-l-delta`. */\n hoverBorderLDelta?: string;\n /** Lightness change of a border when active. Sets `--bulma-active-border-l-delta`. */\n activeBorderLDelta?: string;\n /** Lightness change of text color on hover. Sets `--bulma-hover-color-l-delta`. */\n hoverColorLDelta?: string;\n /** Lightness change of text color when active. Sets `--bulma-active-color-l-delta`. */\n activeColorLDelta?: string;\n /** Alpha change of a shadow on hover. Sets `--bulma-hover-shadow-a-delta`. */\n hoverShadowADelta?: string;\n /** Alpha change of a shadow when active. Sets `--bulma-active-shadow-a-delta`. */\n activeShadowADelta?: string;\n // Bulma color variables\n /** Primary color hue, 0 to 360. Sets `--bulma-primary-h`. */\n primaryH?: string;\n /** Primary color saturation, as a percentage. Sets `--bulma-primary-s`. */\n primaryS?: string;\n /** Primary color lightness, as a percentage. Sets `--bulma-primary-l`. */\n primaryL?: string;\n /** Link color hue, 0 to 360. Sets `--bulma-link-h`. */\n linkH?: string;\n /** Link color saturation, as a percentage. Sets `--bulma-link-s`. */\n linkS?: string;\n /** Link color lightness, as a percentage. Sets `--bulma-link-l`. */\n linkL?: string;\n /** Info color hue, 0 to 360. Sets `--bulma-info-h`. */\n infoH?: string;\n /** Info color saturation, as a percentage. Sets `--bulma-info-s`. */\n infoS?: string;\n /** Info color lightness, as a percentage. Sets `--bulma-info-l`. */\n infoL?: string;\n /** Success color hue, 0 to 360. Sets `--bulma-success-h`. */\n successH?: string;\n /** Success color saturation, as a percentage. Sets `--bulma-success-s`. */\n successS?: string;\n /** Success color lightness, as a percentage. Sets `--bulma-success-l`. */\n successL?: string;\n /** Warning color hue, 0 to 360. Sets `--bulma-warning-h`. */\n warningH?: string;\n /** Warning color saturation, as a percentage. Sets `--bulma-warning-s`. */\n warningS?: string;\n /** Warning color lightness, as a percentage. Sets `--bulma-warning-l`. */\n warningL?: string;\n /** Danger color hue, 0 to 360. Sets `--bulma-danger-h`. */\n dangerH?: string;\n /** Danger color saturation, as a percentage. Sets `--bulma-danger-s`. */\n dangerS?: string;\n /** Danger color lightness, as a percentage. Sets `--bulma-danger-l`. */\n dangerL?: string;\n // Add other commonly used ones as needed\n}\n\n/**\n * Theme component that injects Bulma CSS variables either globally or locally.\n *\n * When `isRoot` is true, variables are injected at `:root`. Otherwise, a wrapping\n * `<div>` scopes the variables to its children.\n *\n * @function\n * @param {ThemeProps} props - Props for the Theme component.\n * @returns {JSX.Element} The theme wrapper or fragment.\n *\n * @example\n * // Local theme scope\n * <Theme primaryH=\"171\" primaryS=\"100%\" primaryL=\"41%\">\n * <Button color=\"primary\">Themed</Button>\n * </Theme>\n */\nexport const Theme: React.FC<ThemeProps> = ({\n bulmaVars = {},\n children,\n className,\n isRoot = false,\n colorMode,\n radius,\n columnGap,\n ...restProps\n}) => {\n const radiusVar = themeRadiusVar(radius);\n const columnGapVar = themeColumnGapVar(columnGap);\n const radiusHelper = (validRadii as readonly unknown[]).includes(radius)\n ? radius\n : undefined;\n\n // A radius size only adds its class, and a root Theme renders no wrapper to\n // carry one, so on `isRoot` it does nothing at all. Say so, as the other\n // radius routes that do not do what they look like do.\n if (isRoot && radiusHelper && radiusHelperVars[radiusHelper] === undefined) {\n warnOnce(\n 'Theme:root-radius-size',\n `[bestax-bulma] <Theme isRoot radius=\"${radiusHelper}\">: a root Theme ` +\n `has no wrapper element for has-radius-${radiusHelper}, and the ` +\n 'radius sizes set no variable, so this does nothing. To round one ' +\n `element, put radius=\"${radiusHelper}\" on it. To change the radius ` +\n \"across the page, set bulmaVars={{ '--bulma-radius': '…' }} instead.\"\n );\n }\n\n // The same for a gap step in `columnGap`, which reads like the columns\n // gutter it once set and, at the root, has no element for its class.\n const columnGapStep =\n typeof columnGap === 'number' ? String(columnGap) : columnGap;\n if (\n isRoot &&\n columnGapStep !== undefined &&\n (validGaps as readonly unknown[]).includes(columnGapStep)\n ) {\n warnOnce(\n 'Theme:root-column-gap',\n `[bestax-bulma] <Theme isRoot columnGap=\"${columnGapStep}\">: a root ` +\n `Theme has no wrapper element for is-column-gap-${columnGapStep}, ` +\n 'and a gap step sets no variable, so this does nothing. To change ' +\n 'the columns gutter across the page, set ' +\n \"bulmaVars={{ '--bulma-column-gap': '…' }} instead.\"\n );\n }\n\n // Extract Bulma variable props from restProps\n const { bulmaVarProps, otherProps } = useMemo(() => {\n const varProps: Record<string, string | undefined> = {};\n const otherPropsObj: Record<string, unknown> = {};\n\n for (const [key, value] of Object.entries(restProps)) {\n if (Object.prototype.hasOwnProperty.call(bulmaVarPropMap, key)) {\n varProps[key] = value as string;\n } else {\n otherPropsObj[key] = value;\n }\n }\n\n return { bulmaVarProps: varProps, otherProps: otherPropsObj };\n }, [restProps]);\n\n // Everything left in `otherProps` lands on the wrapper div, as a helper\n // class or an attribute, and so does `className`. A root Theme renders no\n // wrapper, so under `isRoot` all of it is dropped. `radius` and `columnGap`\n // are not in `otherProps`; the checks above cover them.\n if (isRoot) {\n const dropped = Object.entries(otherProps)\n .filter(\n ([, value]) => value !== undefined && value !== null && value !== false\n )\n .map(([key]) => key);\n if (className) {\n dropped.unshift('className');\n }\n if (dropped.length > 0) {\n warnOnce(\n 'Theme:root-dropped-props',\n `[bestax-bulma] <Theme isRoot>: a root Theme renders no wrapper ` +\n `element, so ${dropped.join(', ')} ` +\n `${dropped.length === 1 ? 'has' : 'have'} nothing to apply to. ` +\n 'Put helper props and classes on an element inside the Theme ' +\n 'instead.'\n );\n }\n }\n\n // Use Bulma classes for styling (only when not isRoot). Only a helper value\n // of `radius` reaches the helper; a legacy string went to the variable.\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n ...otherProps,\n radius: radiusHelper,\n columnGap,\n });\n\n // Merge bulmaVars and individual props, with props taking precedence\n const mergedVars: BulmaVars = useMemo(() => {\n const vars: BulmaVars = { ...bulmaVars };\n for (const [propName, cssVar] of Object.entries(bulmaVarPropMap)) {\n if (bulmaVarProps[propName] !== undefined) {\n vars[cssVar as BulmaVarKey] = bulmaVarProps[propName] as string;\n }\n }\n if (radiusVar !== undefined) {\n vars['--bulma-radius'] = radiusVar;\n }\n if (columnGapVar !== undefined) {\n vars['--bulma-column-gap'] = columnGapVar;\n }\n return vars;\n }, [bulmaVars, bulmaVarProps, radiusVar, columnGapVar]);\n\n // This Theme's place among root Themes; see `rootThemeRules`.\n const [rootOrder] = useState(() => nextRootOrder++);\n\n // The `:root` rules this Theme contributes, or '' when it contributes none.\n const rootRules = useMemo(() => {\n if (!isRoot) {\n return '';\n }\n const cssRules = Object.entries(mergedVars)\n .filter(\n ([key, value]) => bulmaCssVars.includes(key as BulmaVarKey) && value\n )\n .map(([key, value]) => `${key}: ${value};`)\n .join(' ');\n return cssRules ? `:root { ${cssRules} }` : '';\n }, [mergedVars, isRoot]);\n\n // Inject CSS variables globally at :root level, alongside any other root\n // Themes. Clearing `isRoot` or every variable passes '', which withdraws\n // this Theme's rules.\n useEffect(() => {\n setRootThemeRules(rootOrder, rootRules);\n }, [rootOrder, rootRules]);\n\n // Withdraw them on unmount. Kept apart from the effect above so a change\n // rewrites the shared element in place rather than removing and recreating\n // it between the cleanup and the next run.\n useEffect(() => () => setRootThemeRules(rootOrder, ''), [rootOrder]);\n\n // Bulma names its scheme attribute after the class prefix a stylesheet was\n // built with (`data-<prefix>theme`), so the prefixed builds read\n // `data-bestax-theme` and never `data-theme`.\n const classPrefix = useClassPrefix();\n\n // Toggle Bulma's light/dark scheme by writing the theme attribute on the\n // document root (<html>). This is always global, even on a scoped Theme.\n // Under a class prefix the prefixed attribute is written as well as\n // `data-theme`, so whichever build is loaded sees it; with no prefix only\n // `data-theme` is. `'system'` removes them so Bulma follows the OS\n // preference.\n useEffect(() => {\n if (colorMode === undefined) {\n return;\n }\n\n const root = document.documentElement;\n const names = classPrefix\n ? ['data-theme', `data-${classPrefix}theme`]\n : ['data-theme'];\n const previous = names.map(name => root.getAttribute(name));\n\n for (const name of names) {\n if (colorMode === 'system') {\n root.removeAttribute(name);\n continue;\n }\n try {\n root.setAttribute(name, colorMode);\n } catch {\n // A class prefix can hold characters an attribute name cannot.\n // `data-theme` is still written, as it was before the prefixed\n // attribute existed, but a sheet built with that prefix keeps its\n // scheme, so say so.\n warnOnce(\n 'Theme:color-mode-prefix',\n `[bestax-bulma] <Theme colorMode=\"${colorMode}\">: the class ` +\n `prefix \"${classPrefix}\" makes ${name} an invalid attribute ` +\n 'name, so only data-theme is written, and a stylesheet built ' +\n 'with that prefix keeps its scheme.'\n );\n }\n }\n\n // Restore the previous values when colorMode changes or the component unmounts.\n return () => {\n names.forEach((name, i) => {\n const value = previous[i];\n if (value === null) {\n root.removeAttribute(name);\n } else {\n root.setAttribute(name, value);\n }\n });\n };\n }, [colorMode, classPrefix]);\n\n // For local injection (when isRoot is false), prepare style object for CSS vars\n const style: CSSProperties = useMemo(() => {\n if (isRoot) {\n return {};\n }\n\n const styleObj: CSSProperties = {};\n for (const [key, value] of Object.entries(mergedVars)) {\n if (bulmaCssVars.includes(key as BulmaVarKey) && value) {\n (styleObj as Record<string, string>)[key] = value;\n }\n }\n return styleObj;\n }, [mergedVars, isRoot]);\n\n // Generate combined class names for the wrapper div\n const combinedClassName = useMemo(() => {\n if (isRoot) {\n return '';\n }\n return classNames(className, bulmaHelperClasses);\n }, [className, bulmaHelperClasses, isRoot]);\n\n return isRoot ? (\n <>{children}</>\n ) : (\n <div className={combinedClassName || undefined} style={style} {...rest}>\n {children}\n </div>\n );\n};\n"],"names":["_jsx","_Fragment"],"mappings":"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"}
@@ -0,0 +1,72 @@
1
+ /* @allxsmith/bestax-bulma — AI agents: see AGENTS.md in the package root, or https://bestax.io/llms.txt */
2
+ /**
3
+ * The runtime mirror of `AnchorOnlyAttributes`, keyed so the two cannot drift.
4
+ *
5
+ * `Record<keyof …, true>` is what links them: the day React adds an anchor
6
+ * attribute, every component deriving its props from `as` accepts it and this
7
+ * object stops compiling until it is named here. A plain array beside a derived
8
+ * type drifts in the one direction that matters — the type accepts the new
9
+ * attribute and the filter lets it leak onto a `<div>`.
10
+ */
11
+ const ANCHOR_ONLY_ATTRS = {
12
+ href: true,
13
+ target: true,
14
+ download: true,
15
+ hrefLang: true,
16
+ ping: true,
17
+ referrerPolicy: true,
18
+ media: true,
19
+ type: true,
20
+ };
21
+ /**
22
+ * `props` without the keys named in `strip`.
23
+ *
24
+ * The SET is per component and deliberately not shared, because the right
25
+ * answer differs and the differences are principled: how open the component's
26
+ * `as` is, and which of these attributes its own tags legitimately take. What
27
+ * IS shared is the derived source of truth above and this function. Each caller
28
+ * declares its delta next to the set it passes, which is the only place that
29
+ * stays true when a component's `as` changes.
30
+ */
31
+ function omitAttrs(props, strip) {
32
+ const out = {};
33
+ // `Reflect.ownKeys`, not `Object.entries`: the latter drops symbol-keyed props.
34
+ // React enumerates props with `for...in`, which never reports a symbol, so
35
+ // nothing renders differently either way. It is not the same change for all
36
+ // three callers: Menu filtered by rest-destructure and kept them already,
37
+ // while Dropdown and Level filtered through `Object.entries` and did not, so
38
+ // this restores one and widens two. Symbols are the only shape where those
39
+ // two disagreed, and keeping them is the side a spread is on.
40
+ for (const key of Reflect.ownKeys(props)) {
41
+ // Enumerability, for the same reason in the other direction: `Reflect.ownKeys`
42
+ // also reports NON-enumerable own props, which every filter this replaced left
43
+ // behind. Copying one out would both add a prop the old code dropped and make
44
+ // it enumerable on the way, so widening the key source must not widen this.
45
+ if (!Object.prototype.propertyIsEnumerable.call(props, key))
46
+ continue;
47
+ const value = props[key];
48
+ // `hasOwnProperty`, not `key in strip`: `in` walks the prototype chain, so a
49
+ // prop named `toString`, `valueOf`, `constructor` or `hasOwnProperty` was
50
+ // stripped although no caller named it — and anything written to
51
+ // `Object.prototype` would start deleting props that share its keys.
52
+ if (typeof key === 'symbol' ||
53
+ !Object.prototype.hasOwnProperty.call(strip, key)) {
54
+ // `defineProperty`, not `out[key] = value`: assignment consults the
55
+ // prototype chain for a setter, and `__proto__` has one. A prop named
56
+ // `__proto__` would be swallowed by it — dropped from the result AND
57
+ // replacing the result's prototype with its value. A spread and a rest
58
+ // destructure both DEFINE, which is what makes them immune, so this has
59
+ // to define too.
60
+ Object.defineProperty(out, key, {
61
+ value,
62
+ writable: true,
63
+ enumerable: true,
64
+ configurable: true,
65
+ });
66
+ }
67
+ }
68
+ return out;
69
+ }
70
+
71
+ export { ANCHOR_ONLY_ATTRS, omitAttrs };
72
+ //# sourceMappingURL=anchorAttrs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anchorAttrs.js","sources":["../../../src/helpers/anchorAttrs.ts"],"sourcesContent":["import type React from 'react';\n\n/**\n * Exactly what `<a>` adds over the attributes every element has: `href`,\n * `target`, `download`, `hrefLang`, `ping`, `referrerPolicy`, `media`, `type`.\n *\n * Subtracted from React's own types rather than listed. Listing them is how\n * `Level.Item` came to reject `download` at `as=\"a\"` — its list said `href`,\n * `target`, `rel` and stopped (#641). A list gains an entry when someone\n * notices; a subtraction gains it when React does.\n *\n * NOT `rel`: React declares it on `HTMLAttributes`, for every element, so the\n * subtraction removes it. A component that withholds `rel` from a non-anchor is\n * making a compatibility choice rather than stating a fact about anchors, and\n * says so where it makes it.\n */\nexport type AnchorOnlyAttributes = Omit<\n React.AnchorHTMLAttributes<HTMLAnchorElement>,\n keyof React.HTMLAttributes<HTMLAnchorElement>\n>;\n\n/**\n * The runtime mirror of `AnchorOnlyAttributes`, keyed so the two cannot drift.\n *\n * `Record<keyof …, true>` is what links them: the day React adds an anchor\n * attribute, every component deriving its props from `as` accepts it and this\n * object stops compiling until it is named here. A plain array beside a derived\n * type drifts in the one direction that matters — the type accepts the new\n * attribute and the filter lets it leak onto a `<div>`.\n */\nexport const ANCHOR_ONLY_ATTRS: Readonly<\n Record<keyof AnchorOnlyAttributes, true>\n> = {\n href: true,\n target: true,\n download: true,\n hrefLang: true,\n ping: true,\n referrerPolicy: true,\n media: true,\n type: true,\n};\n\n/**\n * `props` without the keys named in `strip`.\n *\n * The SET is per component and deliberately not shared, because the right\n * answer differs and the differences are principled: how open the component's\n * `as` is, and which of these attributes its own tags legitimately take. What\n * IS shared is the derived source of truth above and this function. Each caller\n * declares its delta next to the set it passes, which is the only place that\n * stays true when a component's `as` changes.\n */\nexport function omitAttrs<T extends object, K extends string>(\n props: T,\n strip: Readonly<Record<K, true>>\n): Omit<T, K> {\n const out: Record<string | symbol, unknown> = {};\n // `Reflect.ownKeys`, not `Object.entries`: the latter drops symbol-keyed props.\n // React enumerates props with `for...in`, which never reports a symbol, so\n // nothing renders differently either way. It is not the same change for all\n // three callers: Menu filtered by rest-destructure and kept them already,\n // while Dropdown and Level filtered through `Object.entries` and did not, so\n // this restores one and widens two. Symbols are the only shape where those\n // two disagreed, and keeping them is the side a spread is on.\n for (const key of Reflect.ownKeys(props)) {\n // Enumerability, for the same reason in the other direction: `Reflect.ownKeys`\n // also reports NON-enumerable own props, which every filter this replaced left\n // behind. Copying one out would both add a prop the old code dropped and make\n // it enumerable on the way, so widening the key source must not widen this.\n if (!Object.prototype.propertyIsEnumerable.call(props, key)) continue;\n const value = (props as Record<string | symbol, unknown>)[key];\n // `hasOwnProperty`, not `key in strip`: `in` walks the prototype chain, so a\n // prop named `toString`, `valueOf`, `constructor` or `hasOwnProperty` was\n // stripped although no caller named it — and anything written to\n // `Object.prototype` would start deleting props that share its keys.\n if (\n typeof key === 'symbol' ||\n !Object.prototype.hasOwnProperty.call(strip, key)\n ) {\n // `defineProperty`, not `out[key] = value`: assignment consults the\n // prototype chain for a setter, and `__proto__` has one. A prop named\n // `__proto__` would be swallowed by it — dropped from the result AND\n // replacing the result's prototype with its value. A spread and a rest\n // destructure both DEFINE, which is what makes them immune, so this has\n // to define too.\n Object.defineProperty(out, key, {\n value,\n writable: true,\n enumerable: true,\n configurable: true,\n });\n }\n }\n return out as Omit<T, K>;\n}\n"],"names":[],"mappings":";AAqBA;;;;;;;;AAQG;AACI,MAAM,iBAAiB,GAE1B;AACF,IAAA,IAAI,EAAE,IAAI;AACV,IAAA,MAAM,EAAE,IAAI;AACZ,IAAA,QAAQ,EAAE,IAAI;AACd,IAAA,QAAQ,EAAE,IAAI;AACd,IAAA,IAAI,EAAE,IAAI;AACV,IAAA,cAAc,EAAE,IAAI;AACpB,IAAA,KAAK,EAAE,IAAI;AACX,IAAA,IAAI,EAAE,IAAI;;AAGZ;;;;;;;;;AASG;AACG,SAAU,SAAS,CACvB,KAAQ,EACR,KAAgC,EAAA;IAEhC,MAAM,GAAG,GAAqC,EAAE;;;;;;;;IAQhD,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;;;;;AAKxC,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC;YAAE;AAC7D,QAAA,MAAM,KAAK,GAAI,KAA0C,CAAC,GAAG,CAAC;;;;;QAK9D,IACE,OAAO,GAAG,KAAK,QAAQ;AACvB,YAAA,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,EACjD;;;;;;;AAOA,YAAA,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE;gBAC9B,KAAK;AACL,gBAAA,QAAQ,EAAE,IAAI;AACd,gBAAA,UAAU,EAAE,IAAI;AAChB,gBAAA,YAAY,EAAE,IAAI;AACnB,aAAA,CAAC;QACJ;IACF;AACA,IAAA,OAAO,GAAiB;AAC1B;;"}
@@ -0,0 +1,415 @@
1
+ /* @allxsmith/bestax-bulma — AI agents: see AGENTS.md in the package root, or https://bestax.io/llms.txt */
2
+ /**
3
+ * Valid Bulma color classes.
4
+ * @example 'primary', 'link', 'info'
5
+ */
6
+ const validColors = [
7
+ 'primary',
8
+ 'link',
9
+ 'info',
10
+ 'success',
11
+ 'warning',
12
+ 'danger',
13
+ 'black',
14
+ 'black-bis',
15
+ 'black-ter',
16
+ 'grey-darker',
17
+ 'grey-dark',
18
+ 'grey',
19
+ 'grey-light',
20
+ 'grey-lighter',
21
+ 'white',
22
+ 'white-bis',
23
+ 'white-ter',
24
+ 'light',
25
+ 'dark',
26
+ ];
27
+ /**
28
+ * Valid Bulma color shade suffixes.
29
+ * @example '00', '05', 'invert', 'light', 'dark', 'soft', 'bold', 'on-scheme'
30
+ */
31
+ const validColorShades = [
32
+ '00',
33
+ '05',
34
+ '10',
35
+ '15',
36
+ '20',
37
+ '25',
38
+ '30',
39
+ '35',
40
+ '40',
41
+ '45',
42
+ '50',
43
+ '55',
44
+ '60',
45
+ '65',
46
+ '70',
47
+ '75',
48
+ '80',
49
+ '85',
50
+ '90',
51
+ '95',
52
+ 'invert',
53
+ 'light',
54
+ 'dark',
55
+ 'soft',
56
+ 'bold',
57
+ 'on-scheme',
58
+ ];
59
+ /**
60
+ * Valid Bulma scheme color names for scheme-aware backgrounds.
61
+ *
62
+ * Bulma ships no `has-background-scheme-*` helper classes, so these values
63
+ * never emit a class — components render them as a dark-mode-safe inline
64
+ * `background-color: var(--bulma-<value>)` style instead.
65
+ * @example 'scheme-main', 'scheme-main-bis', 'scheme-invert'
66
+ */
67
+ const validSchemeColors = [
68
+ 'scheme-main',
69
+ 'scheme-main-bis',
70
+ 'scheme-main-ter',
71
+ 'scheme-invert',
72
+ 'scheme-invert-bis',
73
+ 'scheme-invert-ter',
74
+ ];
75
+ /**
76
+ * Valid Bulma size classes for margins and paddings.
77
+ * @example '0', '1', 'auto'
78
+ */
79
+ const validSizes$1 = ['0', '1', '2', '3', '4', '5', '6', 'auto'];
80
+ /**
81
+ * Valid Bulma gap steps, taken by `gap`, `columnGap` and `rowGap`. Each whole
82
+ * step is 0.5rem, so `2` is 1rem and `8` is 4rem, and the half steps sit
83
+ * between them. They render `is-gap-<value>`, `is-column-gap-<value>` and
84
+ * `is-row-gap-<value>`.
85
+ *
86
+ * This is a different scale from `validSizes`: `gap="2"` is 1rem where
87
+ * `m="2"` is 0.5rem.
88
+ * @example '0', '0.5', '2', '8'
89
+ */
90
+ const validGaps = [
91
+ '0',
92
+ '0.5',
93
+ '1',
94
+ '1.5',
95
+ '2',
96
+ '2.5',
97
+ '3',
98
+ '3.5',
99
+ '4',
100
+ '4.5',
101
+ '5',
102
+ '5.5',
103
+ '6',
104
+ '6.5',
105
+ '7',
106
+ '7.5',
107
+ '8',
108
+ ];
109
+ /**
110
+ * Valid Bulma text size classes.
111
+ * @example '1', '2', '3'
112
+ */
113
+ const validTextSizes = ['1', '2', '3', '4', '5', '6', '7'];
114
+ /**
115
+ * Valid Bulma text alignment classes.
116
+ * @example 'centered', 'left', 'right'
117
+ */
118
+ const validAlignments$1 = [
119
+ 'centered',
120
+ 'justified',
121
+ 'left',
122
+ 'right',
123
+ ];
124
+ /**
125
+ * Valid Bulma text transformation classes.
126
+ * @example 'capitalized', 'uppercase', 'italic'
127
+ */
128
+ const validTextTransforms = [
129
+ 'capitalized',
130
+ 'lowercase',
131
+ 'uppercase',
132
+ 'italic',
133
+ ];
134
+ /**
135
+ * Valid Bulma text weight classes.
136
+ * @example 'light', 'normal', 'bold'
137
+ */
138
+ const validTextWeights = [
139
+ 'light',
140
+ 'normal',
141
+ 'medium',
142
+ 'semibold',
143
+ 'bold',
144
+ ];
145
+ /**
146
+ * Valid Bulma font family classes.
147
+ * @example 'sans-serif', 'monospace', 'code'
148
+ */
149
+ const validFontFamilies = [
150
+ 'sans-serif',
151
+ 'monospace',
152
+ 'primary',
153
+ 'secondary',
154
+ 'code',
155
+ ];
156
+ /**
157
+ * Valid Bulma display classes.
158
+ * @example 'block', 'flex', 'inline'
159
+ */
160
+ const validDisplays = [
161
+ 'block',
162
+ 'flex',
163
+ 'inline',
164
+ 'inline-block',
165
+ 'inline-flex',
166
+ 'grid',
167
+ ];
168
+ /**
169
+ * Valid Bulma visibility classes.
170
+ * These are all the valid visibility options available in Bulma.
171
+ * @example 'hidden', 'sr-only', 'invisible'
172
+ */
173
+ const validVisibilities = ['hidden', 'sr-only', 'invisible'];
174
+ /**
175
+ * Valid Bulma flex direction classes.
176
+ * @example 'row', 'column', 'row-reverse'
177
+ */
178
+ const validFlexDirections = [
179
+ 'row',
180
+ 'row-reverse',
181
+ 'column',
182
+ 'column-reverse',
183
+ ];
184
+ /**
185
+ * Valid Bulma flex wrap classes.
186
+ * @example 'nowrap', 'wrap', 'wrap-reverse'
187
+ */
188
+ const validFlexWraps = ['nowrap', 'wrap', 'wrap-reverse'];
189
+ /**
190
+ * Valid Bulma justify-content classes.
191
+ * @example 'flex-start', 'center', 'space-between'
192
+ */
193
+ const validJustifyContents = [
194
+ 'flex-start',
195
+ 'flex-end',
196
+ 'center',
197
+ 'space-between',
198
+ 'space-around',
199
+ 'space-evenly',
200
+ 'start',
201
+ 'end',
202
+ 'left',
203
+ 'right',
204
+ ];
205
+ /**
206
+ * Valid Bulma align-content classes.
207
+ * @example 'flex-start', 'center', 'stretch'
208
+ */
209
+ const validAlignContents = [
210
+ 'flex-start',
211
+ 'flex-end',
212
+ 'center',
213
+ 'space-between',
214
+ 'space-around',
215
+ 'space-evenly',
216
+ 'stretch',
217
+ ];
218
+ /**
219
+ * Valid Bulma align-items classes.
220
+ * @example 'stretch', 'flex-start', 'center'
221
+ */
222
+ const validAlignItems = [
223
+ 'stretch',
224
+ 'flex-start',
225
+ 'flex-end',
226
+ 'center',
227
+ 'baseline',
228
+ 'start',
229
+ 'end',
230
+ ];
231
+ /**
232
+ * Valid Bulma align-self classes.
233
+ * @example 'auto', 'flex-start', 'center'
234
+ */
235
+ const validAlignSelfs = [
236
+ 'auto',
237
+ 'flex-start',
238
+ 'flex-end',
239
+ 'center',
240
+ 'baseline',
241
+ 'stretch',
242
+ ];
243
+ /**
244
+ * Valid Bulma flex grow and shrink values.
245
+ * @example '0', '1', '2', '3', '4', '5'
246
+ */
247
+ const validFlexGrowShrink = ['0', '1', '2', '3', '4', '5'];
248
+ /**
249
+ * Valid Bulma viewport classes for responsive design.
250
+ * @example 'mobile', 'tablet', 'desktop'
251
+ */
252
+ const validViewports = [
253
+ 'mobile',
254
+ 'tablet',
255
+ 'tablet-only',
256
+ 'touch',
257
+ 'desktop',
258
+ 'desktop-only',
259
+ 'widescreen',
260
+ 'widescreen-only',
261
+ 'fullhd',
262
+ ];
263
+ /**
264
+ * Valid Bulma float classes.
265
+ * @example 'left', 'right'
266
+ */
267
+ const validFloats = ['left', 'right'];
268
+ /**
269
+ * Valid Bulma overflow values for one axis, taken by `overflowX` and
270
+ * `overflowY`. Each renders `is-overflow-x-<value>` or `is-overflow-y-<value>`.
271
+ * @example 'auto', 'hidden', 'scroll'
272
+ */
273
+ const validAxisOverflows = [
274
+ 'auto',
275
+ 'clip',
276
+ 'hidden',
277
+ 'scroll',
278
+ 'visible',
279
+ ];
280
+ /**
281
+ * Valid Bulma overflow values for `overflow`.
282
+ *
283
+ * `clipped` renders `is-clipped`, the helper `overflow` started with. Every
284
+ * other value renders `is-overflow-<value>`.
285
+ * @example 'clipped', 'auto', 'hidden'
286
+ */
287
+ const validOverflows = ['clipped', ...validAxisOverflows];
288
+ /**
289
+ * Valid Bulma position values, taken by `pos`. Each renders
290
+ * `is-position-<value>`.
291
+ * @example 'relative', 'absolute', 'sticky'
292
+ */
293
+ const validPositions = [
294
+ 'absolute',
295
+ 'fixed',
296
+ 'relative',
297
+ 'static',
298
+ 'sticky',
299
+ ];
300
+ /**
301
+ * Valid Bulma aspect ratios, taken by `aspectRatio`. Each renders
302
+ * `is-aspect-ratio-<value>`.
303
+ * @example '1by1', '4by3', '16by9'
304
+ */
305
+ const validAspectRatios = [
306
+ '1by1',
307
+ '5by4',
308
+ '4by3',
309
+ '3by2',
310
+ '5by3',
311
+ '16by9',
312
+ '2by1',
313
+ '3by1',
314
+ '4by5',
315
+ '3by4',
316
+ '2by3',
317
+ '3by5',
318
+ '9by16',
319
+ '1by2',
320
+ '1by3',
321
+ ];
322
+ /**
323
+ * Valid Bulma interaction classes.
324
+ * @example 'unselectable', 'clickable'
325
+ */
326
+ const validInteractions = ['unselectable', 'clickable'];
327
+ /**
328
+ * Valid Bulma cursor helper values.
329
+ *
330
+ * These share no class stem: `pointer` renders `is-clickable` and `help`
331
+ * renders `is-cursor-help`, so the class each one emits lives in
332
+ * `cursorClasses` rather than being built from the value.
333
+ * @example 'pointer', 'help'
334
+ */
335
+ const validCursors = ['pointer', 'help'];
336
+ /**
337
+ * Cursor helper value to the class it renders.
338
+ *
339
+ * A `Record` over `validCursors` on purpose: TypeScript then rejects a value
340
+ * added to the tuple with no class for it, and a class for a value the tuple
341
+ * does not carry, so the accepted set and the rendered classes cannot drift
342
+ * apart.
343
+ */
344
+ const cursorClasses = {
345
+ pointer: 'is-clickable',
346
+ help: 'is-cursor-help',
347
+ };
348
+ /**
349
+ * Valid Bulma border-radius helper values.
350
+ *
351
+ * `radiusless` renders `is-radiusless` and removes the radius. The sizes
352
+ * render `has-radius-<value>` and set one from Bulma's radius scale.
353
+ * @example 'radiusless', 'small', 'rounded'
354
+ */
355
+ const validRadii = [
356
+ 'radiusless',
357
+ 'small',
358
+ 'normal',
359
+ 'large',
360
+ 'rounded',
361
+ ];
362
+ /**
363
+ * Valid Bulma shadow helper classes.
364
+ * @example 'shadowless'
365
+ */
366
+ const validShadows = ['shadowless'];
367
+ /**
368
+ * Valid Bulma responsive helper classes.
369
+ * @example 'mobile', 'narrow'
370
+ */
371
+ const validResponsives = ['mobile', 'narrow'];
372
+ /**
373
+ * Creates the shared class-building helpers used by the Bulma helper hooks.
374
+ *
375
+ * Returns a mutable `classes` array along with the helper functions that push
376
+ * (optionally prefixed, optionally viewport-suffixed) class names onto it.
377
+ *
378
+ * @internal
379
+ * @param classPrefix - Optional prefix applied to all generated class names.
380
+ * @param viewport - Optional viewport modifier for viewport-aware classes.
381
+ */
382
+ const createBulmaClassHelpers = (classPrefix, viewport) => {
383
+ const classes = [];
384
+ // Helper function to add class with prefix support
385
+ const addPrefixedClass = (className) => {
386
+ classes.push(classPrefix ? `${classPrefix}${className}` : className);
387
+ };
388
+ // Helper to add class with optional viewport
389
+ //
390
+ // `supportedViewports` narrows which viewports may be suffixed onto this
391
+ // class. It defaults to every viewport, but a few Bulma helper families
392
+ // (notably `is-size-*`, which ships no `-only` bands) support only a subset,
393
+ // so passing the emitting set keeps us from producing dead classes.
394
+ const addClass = (prefix, value, validValues, supportsViewport = false, supportedViewports = validViewports) => {
395
+ if (value && validValues.includes(value)) {
396
+ const className = supportsViewport &&
397
+ viewport &&
398
+ validViewports.includes(viewport) &&
399
+ supportedViewports.includes(viewport)
400
+ ? `${prefix}-${value}-${viewport}`
401
+ : `${prefix}-${value}`;
402
+ addPrefixedClass(className);
403
+ }
404
+ };
405
+ // Helper specifically for classes that never support viewport modifiers
406
+ const addClassNoViewport = (prefix, value, validValues) => {
407
+ if (value && (!validValues.length || validValues.includes(value))) {
408
+ addPrefixedClass(`${prefix}-${value}`);
409
+ }
410
+ };
411
+ return { classes, addPrefixedClass, addClass, addClassNoViewport };
412
+ };
413
+
414
+ export { createBulmaClassHelpers, cursorClasses, validAlignContents, validAlignItems, validAlignSelfs, validAlignments$1 as validAlignments, validAspectRatios, validAxisOverflows, validColorShades, validColors, validCursors, validDisplays, validFlexDirections, validFlexGrowShrink, validFlexWraps, validFloats, validFontFamilies, validGaps, validInteractions, validJustifyContents, validOverflows, validPositions, validRadii, validResponsives, validSchemeColors, validShadows, validSizes$1 as validSizes, validTextSizes, validTextTransforms, validTextWeights, validViewports, validVisibilities };
415
+ //# sourceMappingURL=bulmaClassHelpers.js.map