@unofficialbox/box-open-elements 0.3.0 → 0.5.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 (488) hide show
  1. package/README.md +37 -12
  2. package/dist/components/actions/button-group.d.ts +2 -2
  3. package/dist/components/actions/button-group.js +3 -9
  4. package/dist/components/actions/button.d.ts +2 -2
  5. package/dist/components/actions/button.js +3 -9
  6. package/dist/components/actions/icon-button.d.ts +2 -2
  7. package/dist/components/actions/icon-button.js +3 -9
  8. package/dist/components/actions/link-button.d.ts +11 -2
  9. package/dist/components/actions/link-button.js +58 -13
  10. package/dist/components/actions/menu-item.d.ts +2 -2
  11. package/dist/components/actions/menu-item.js +3 -9
  12. package/dist/components/actions/menu.d.ts +2 -2
  13. package/dist/components/actions/menu.js +3 -9
  14. package/dist/components/actions/segmented-control.d.ts +2 -2
  15. package/dist/components/actions/segmented-control.js +3 -9
  16. package/dist/components/collections/card.d.ts +2 -2
  17. package/dist/components/collections/card.js +3 -9
  18. package/dist/components/collections/carousel.d.ts +9 -2
  19. package/dist/components/collections/carousel.js +74 -13
  20. package/dist/components/collections/datalist-item.d.ts +8 -2
  21. package/dist/components/collections/datalist-item.js +42 -10
  22. package/dist/components/collections/draggable-list.d.ts +2 -2
  23. package/dist/components/collections/draggable-list.js +4 -10
  24. package/dist/components/collections/grid-view.d.ts +2 -2
  25. package/dist/components/collections/grid-view.js +10 -12
  26. package/dist/components/collections/pagination.d.ts +2 -2
  27. package/dist/components/collections/pagination.js +3 -9
  28. package/dist/components/collections/table.d.ts +2 -2
  29. package/dist/components/collections/table.js +3 -9
  30. package/dist/components/collections/thumbnail-card.d.ts +2 -2
  31. package/dist/components/collections/thumbnail-card.js +3 -9
  32. package/dist/components/collections/tree-grid.d.ts +2 -2
  33. package/dist/components/collections/tree-grid.js +3 -9
  34. package/dist/components/collections/tree.d.ts +2 -2
  35. package/dist/components/collections/tree.js +3 -9
  36. package/dist/components/feedback/alert.d.ts +4 -2
  37. package/dist/components/feedback/alert.js +33 -10
  38. package/dist/components/feedback/badge.d.ts +12 -2
  39. package/dist/components/feedback/badge.js +73 -13
  40. package/dist/components/feedback/badgeable.d.ts +2 -2
  41. package/dist/components/feedback/badgeable.js +3 -9
  42. package/dist/components/feedback/chip.d.ts +7 -2
  43. package/dist/components/feedback/chip.js +77 -11
  44. package/dist/components/feedback/empty-state.d.ts +2 -2
  45. package/dist/components/feedback/empty-state.js +3 -9
  46. package/dist/components/feedback/error-mask.d.ts +4 -2
  47. package/dist/components/feedback/error-mask.js +26 -9
  48. package/dist/components/feedback/help-text.d.ts +2 -2
  49. package/dist/components/feedback/help-text.js +10 -9
  50. package/dist/components/feedback/nudge.d.ts +2 -2
  51. package/dist/components/feedback/nudge.js +3 -9
  52. package/dist/components/feedback/progress-bar.d.ts +2 -2
  53. package/dist/components/feedback/progress-bar.js +3 -9
  54. package/dist/components/feedback/progress-ring.d.ts +2 -2
  55. package/dist/components/feedback/progress-ring.js +3 -9
  56. package/dist/components/feedback/progress-steps.d.ts +2 -2
  57. package/dist/components/feedback/progress-steps.js +3 -9
  58. package/dist/components/feedback/skeleton.d.ts +2 -2
  59. package/dist/components/feedback/skeleton.js +3 -9
  60. package/dist/components/feedback/spinner.d.ts +6 -2
  61. package/dist/components/feedback/spinner.js +33 -11
  62. package/dist/components/feedback/toast.d.ts +7 -2
  63. package/dist/components/feedback/toast.js +62 -20
  64. package/dist/components/files/drop-zone.d.ts +2 -2
  65. package/dist/components/files/drop-zone.js +3 -9
  66. package/dist/components/forms/calendar.d.ts +2 -2
  67. package/dist/components/forms/calendar.js +3 -9
  68. package/dist/components/forms/category-selector.d.ts +13 -2
  69. package/dist/components/forms/category-selector.js +214 -26
  70. package/dist/components/forms/checkbox-group.d.ts +2 -2
  71. package/dist/components/forms/checkbox-group.js +3 -9
  72. package/dist/components/forms/checkbox.d.ts +8 -2
  73. package/dist/components/forms/checkbox.js +61 -10
  74. package/dist/components/forms/color-picker.d.ts +2 -2
  75. package/dist/components/forms/color-picker.js +3 -9
  76. package/dist/components/forms/combobox.d.ts +32 -3
  77. package/dist/components/forms/combobox.js +351 -53
  78. package/dist/components/forms/date-field.d.ts +9 -2
  79. package/dist/components/forms/date-field.js +76 -10
  80. package/dist/components/forms/dropdown.d.ts +7 -2
  81. package/dist/components/forms/dropdown.js +35 -12
  82. package/dist/components/forms/dual-listbox.d.ts +2 -2
  83. package/dist/components/forms/dual-listbox.js +3 -9
  84. package/dist/components/forms/fieldset.d.ts +2 -2
  85. package/dist/components/forms/fieldset.js +3 -9
  86. package/dist/components/forms/multi-select.d.ts +2 -2
  87. package/dist/components/forms/multi-select.js +3 -9
  88. package/dist/components/forms/number-input.d.ts +2 -2
  89. package/dist/components/forms/number-input.js +3 -9
  90. package/dist/components/forms/pill-cloud.d.ts +2 -2
  91. package/dist/components/forms/pill-cloud.js +3 -9
  92. package/dist/components/forms/pill-selector-dropdown.d.ts +2 -2
  93. package/dist/components/forms/pill-selector-dropdown.js +3 -9
  94. package/dist/components/forms/radio-group.d.ts +11 -10
  95. package/dist/components/forms/radio-group.js +46 -15
  96. package/dist/components/forms/range-slider.d.ts +2 -2
  97. package/dist/components/forms/range-slider.js +3 -9
  98. package/dist/components/forms/rating.d.ts +2 -2
  99. package/dist/components/forms/rating.js +3 -9
  100. package/dist/components/forms/rich-text-input.d.ts +2 -2
  101. package/dist/components/forms/rich-text-input.js +3 -9
  102. package/dist/components/forms/search-field.d.ts +10 -2
  103. package/dist/components/forms/search-field.js +58 -22
  104. package/dist/components/forms/select.d.ts +20 -10
  105. package/dist/components/forms/select.js +107 -23
  106. package/dist/components/forms/slider.d.ts +2 -2
  107. package/dist/components/forms/slider.js +3 -9
  108. package/dist/components/forms/spin-button.d.ts +2 -2
  109. package/dist/components/forms/spin-button.js +3 -9
  110. package/dist/components/forms/switch.d.ts +2 -2
  111. package/dist/components/forms/switch.js +3 -9
  112. package/dist/components/forms/tag-input.d.ts +2 -2
  113. package/dist/components/forms/tag-input.js +3 -9
  114. package/dist/components/forms/text-area.d.ts +2 -2
  115. package/dist/components/forms/text-area.js +3 -9
  116. package/dist/components/forms/text-field.d.ts +15 -2
  117. package/dist/components/forms/text-field.js +139 -10
  118. package/dist/components/forms/time-field.d.ts +13 -2
  119. package/dist/components/forms/time-field.js +54 -9
  120. package/dist/components/identity/avatar.d.ts +6 -2
  121. package/dist/components/identity/avatar.js +68 -10
  122. package/dist/components/identity/contact-datalist-item.d.ts +10 -2
  123. package/dist/components/identity/contact-datalist-item.js +74 -11
  124. package/dist/components/identity/persona.d.ts +2 -2
  125. package/dist/components/identity/persona.js +3 -9
  126. package/dist/components/layout/app-shell.d.ts +2 -2
  127. package/dist/components/layout/app-shell.js +3 -9
  128. package/dist/components/layout/divider.d.ts +2 -2
  129. package/dist/components/layout/divider.js +3 -9
  130. package/dist/components/layout/nav-sidebar.d.ts +2 -2
  131. package/dist/components/layout/nav-sidebar.js +26 -9
  132. package/dist/components/layout/section.d.ts +2 -2
  133. package/dist/components/layout/section.js +3 -9
  134. package/dist/components/layout/sidebar-toggle-button.d.ts +5 -2
  135. package/dist/components/layout/sidebar-toggle-button.js +24 -11
  136. package/dist/components/layout/split-view.d.ts +2 -2
  137. package/dist/components/layout/split-view.js +3 -9
  138. package/dist/components/navigation/accordion.d.ts +5 -2
  139. package/dist/components/navigation/accordion.js +20 -11
  140. package/dist/components/navigation/breadcrumb.d.ts +2 -2
  141. package/dist/components/navigation/breadcrumb.js +3 -9
  142. package/dist/components/navigation/tabs.d.ts +2 -2
  143. package/dist/components/navigation/tabs.js +3 -9
  144. package/dist/components/overlays/context-menu.d.ts +2 -2
  145. package/dist/components/overlays/context-menu.js +3 -9
  146. package/dist/components/overlays/dialog.d.ts +2 -2
  147. package/dist/components/overlays/dialog.js +3 -9
  148. package/dist/components/overlays/drawer.d.ts +2 -2
  149. package/dist/components/overlays/drawer.js +3 -9
  150. package/dist/components/overlays/guide-tooltip.d.ts +51 -0
  151. package/dist/components/overlays/guide-tooltip.js +355 -0
  152. package/dist/components/overlays/popover.d.ts +2 -2
  153. package/dist/components/overlays/popover.js +3 -9
  154. package/dist/components/overlays/tooltip.d.ts +12 -2
  155. package/dist/components/overlays/tooltip.js +77 -20
  156. package/dist/components/visuals/illustration.d.ts +2 -2
  157. package/dist/components/visuals/illustration.js +3 -9
  158. package/dist/core/element.d.ts +5 -1
  159. package/dist/core/element.js +29 -1
  160. package/dist/entries/access-stats.d.ts +1 -0
  161. package/dist/entries/access-stats.js +1 -0
  162. package/dist/entries/accordion.d.ts +1 -0
  163. package/dist/entries/accordion.js +1 -0
  164. package/dist/entries/alert.d.ts +1 -0
  165. package/dist/entries/alert.js +1 -0
  166. package/dist/entries/annotation-inspector.d.ts +1 -0
  167. package/dist/entries/annotation-inspector.js +1 -0
  168. package/dist/entries/annotation-thread.d.ts +1 -0
  169. package/dist/entries/annotation-thread.js +1 -0
  170. package/dist/entries/annotation-toolbar.d.ts +1 -0
  171. package/dist/entries/annotation-toolbar.js +1 -0
  172. package/dist/entries/app-shell.d.ts +1 -0
  173. package/dist/entries/app-shell.js +1 -0
  174. package/dist/entries/avatar.d.ts +1 -0
  175. package/dist/entries/avatar.js +1 -0
  176. package/dist/entries/badge.d.ts +1 -0
  177. package/dist/entries/badge.js +1 -0
  178. package/dist/entries/badgeable.d.ts +1 -0
  179. package/dist/entries/badgeable.js +1 -0
  180. package/dist/entries/bar-chart.d.ts +1 -0
  181. package/dist/entries/bar-chart.js +1 -0
  182. package/dist/entries/breadcrumb.d.ts +1 -0
  183. package/dist/entries/breadcrumb.js +1 -0
  184. package/dist/entries/bulk-action-bar.d.ts +1 -0
  185. package/dist/entries/bulk-action-bar.js +1 -0
  186. package/dist/entries/button-group.d.ts +1 -0
  187. package/dist/entries/button-group.js +1 -0
  188. package/dist/entries/button.d.ts +1 -0
  189. package/dist/entries/button.js +1 -0
  190. package/dist/entries/calendar.d.ts +1 -0
  191. package/dist/entries/calendar.js +1 -0
  192. package/dist/entries/card.d.ts +1 -0
  193. package/dist/entries/card.js +1 -0
  194. package/dist/entries/carousel.d.ts +1 -0
  195. package/dist/entries/carousel.js +1 -0
  196. package/dist/entries/category-selector.d.ts +1 -0
  197. package/dist/entries/category-selector.js +1 -0
  198. package/dist/entries/chart-panel.d.ts +1 -0
  199. package/dist/entries/chart-panel.js +1 -0
  200. package/dist/entries/checkbox-group.d.ts +1 -0
  201. package/dist/entries/checkbox-group.js +1 -0
  202. package/dist/entries/checkbox.d.ts +1 -0
  203. package/dist/entries/checkbox.js +1 -0
  204. package/dist/entries/chip.d.ts +1 -0
  205. package/dist/entries/chip.js +1 -0
  206. package/dist/entries/collaborator-avatars.d.ts +1 -0
  207. package/dist/entries/collaborator-avatars.js +1 -0
  208. package/dist/entries/color-picker.d.ts +1 -0
  209. package/dist/entries/color-picker.js +1 -0
  210. package/dist/entries/combobox.d.ts +1 -0
  211. package/dist/entries/combobox.js +1 -0
  212. package/dist/entries/contact-datalist-item.d.ts +1 -0
  213. package/dist/entries/contact-datalist-item.js +1 -0
  214. package/dist/entries/content-explorer.d.ts +1 -0
  215. package/dist/entries/content-explorer.js +1 -0
  216. package/dist/entries/context-menu.d.ts +1 -0
  217. package/dist/entries/context-menu.js +1 -0
  218. package/dist/entries/datalist-item.d.ts +1 -0
  219. package/dist/entries/datalist-item.js +1 -0
  220. package/dist/entries/date-field.d.ts +1 -0
  221. package/dist/entries/date-field.js +1 -0
  222. package/dist/entries/dialog.d.ts +1 -0
  223. package/dist/entries/dialog.js +1 -0
  224. package/dist/entries/divider.d.ts +1 -0
  225. package/dist/entries/divider.js +1 -0
  226. package/dist/entries/donut-chart.d.ts +1 -0
  227. package/dist/entries/donut-chart.js +1 -0
  228. package/dist/entries/draggable-list.d.ts +1 -0
  229. package/dist/entries/draggable-list.js +1 -0
  230. package/dist/entries/drawer.d.ts +1 -0
  231. package/dist/entries/drawer.js +1 -0
  232. package/dist/entries/drop-zone.d.ts +1 -0
  233. package/dist/entries/drop-zone.js +1 -0
  234. package/dist/entries/dropdown.d.ts +1 -0
  235. package/dist/entries/dropdown.js +1 -0
  236. package/dist/entries/dual-listbox.d.ts +1 -0
  237. package/dist/entries/dual-listbox.js +1 -0
  238. package/dist/entries/empty-state.d.ts +1 -0
  239. package/dist/entries/empty-state.js +1 -0
  240. package/dist/entries/error-mask.d.ts +1 -0
  241. package/dist/entries/error-mask.js +1 -0
  242. package/dist/entries/explorer-action-menu.d.ts +1 -0
  243. package/dist/entries/explorer-action-menu.js +1 -0
  244. package/dist/entries/explorer-breadcrumbs.d.ts +1 -0
  245. package/dist/entries/explorer-breadcrumbs.js +1 -0
  246. package/dist/entries/explorer-items.d.ts +1 -0
  247. package/dist/entries/explorer-items.js +1 -0
  248. package/dist/entries/explorer-list.d.ts +1 -0
  249. package/dist/entries/explorer-list.js +1 -0
  250. package/dist/entries/explorer-table.d.ts +1 -0
  251. package/dist/entries/explorer-table.js +1 -0
  252. package/dist/entries/explorer-toolbar.d.ts +1 -0
  253. package/dist/entries/explorer-toolbar.js +1 -0
  254. package/dist/entries/fieldset.d.ts +1 -0
  255. package/dist/entries/fieldset.js +1 -0
  256. package/dist/entries/file-request-builder.d.ts +1 -0
  257. package/dist/entries/file-request-builder.js +1 -0
  258. package/dist/entries/filter-bar.d.ts +1 -0
  259. package/dist/entries/filter-bar.js +1 -0
  260. package/dist/entries/governance-panel.d.ts +1 -0
  261. package/dist/entries/governance-panel.js +1 -0
  262. package/dist/entries/grid-view.d.ts +1 -0
  263. package/dist/entries/grid-view.js +1 -0
  264. package/dist/entries/guide-tooltip.d.ts +1 -0
  265. package/dist/entries/guide-tooltip.js +1 -0
  266. package/dist/entries/help-text.d.ts +1 -0
  267. package/dist/entries/help-text.js +1 -0
  268. package/dist/entries/icon-button.d.ts +1 -0
  269. package/dist/entries/icon-button.js +1 -0
  270. package/dist/entries/illustration.d.ts +1 -0
  271. package/dist/entries/illustration.js +1 -0
  272. package/dist/entries/invite-collaborators-modal.d.ts +1 -0
  273. package/dist/entries/invite-collaborators-modal.js +1 -0
  274. package/dist/entries/item-details-panel.d.ts +1 -0
  275. package/dist/entries/item-details-panel.js +1 -0
  276. package/dist/entries/item-form.d.ts +1 -0
  277. package/dist/entries/item-form.js +1 -0
  278. package/dist/entries/line-chart.d.ts +1 -0
  279. package/dist/entries/line-chart.js +1 -0
  280. package/dist/entries/link-button.d.ts +1 -0
  281. package/dist/entries/link-button.js +1 -0
  282. package/dist/entries/menu-item.d.ts +1 -0
  283. package/dist/entries/menu-item.js +1 -0
  284. package/dist/entries/menu.d.ts +1 -0
  285. package/dist/entries/menu.js +1 -0
  286. package/dist/entries/metadata-filter-builder.d.ts +1 -0
  287. package/dist/entries/metadata-filter-builder.js +1 -0
  288. package/dist/entries/metadata-inspector.d.ts +1 -0
  289. package/dist/entries/metadata-inspector.js +1 -0
  290. package/dist/entries/metric-card.d.ts +1 -0
  291. package/dist/entries/metric-card.js +1 -0
  292. package/dist/entries/multi-select.d.ts +1 -0
  293. package/dist/entries/multi-select.js +1 -0
  294. package/dist/entries/nav-sidebar.d.ts +1 -0
  295. package/dist/entries/nav-sidebar.js +1 -0
  296. package/dist/entries/nudge.d.ts +1 -0
  297. package/dist/entries/nudge.js +1 -0
  298. package/dist/entries/number-input.d.ts +1 -0
  299. package/dist/entries/number-input.js +1 -0
  300. package/dist/entries/pagination.d.ts +1 -0
  301. package/dist/entries/pagination.js +1 -0
  302. package/dist/entries/permission-matrix.d.ts +1 -0
  303. package/dist/entries/permission-matrix.js +1 -0
  304. package/dist/entries/persona.d.ts +1 -0
  305. package/dist/entries/persona.js +1 -0
  306. package/dist/entries/pill-cloud.d.ts +1 -0
  307. package/dist/entries/pill-cloud.js +1 -0
  308. package/dist/entries/pill-selector-dropdown.d.ts +1 -0
  309. package/dist/entries/pill-selector-dropdown.js +1 -0
  310. package/dist/entries/popover.d.ts +1 -0
  311. package/dist/entries/popover.js +1 -0
  312. package/dist/entries/presence.d.ts +1 -0
  313. package/dist/entries/presence.js +1 -0
  314. package/dist/entries/preview-header.d.ts +1 -0
  315. package/dist/entries/preview-header.js +1 -0
  316. package/dist/entries/preview.d.ts +1 -0
  317. package/dist/entries/preview.js +1 -0
  318. package/dist/entries/progress-bar.d.ts +1 -0
  319. package/dist/entries/progress-bar.js +1 -0
  320. package/dist/entries/progress-ring.d.ts +1 -0
  321. package/dist/entries/progress-ring.js +1 -0
  322. package/dist/entries/progress-steps.d.ts +1 -0
  323. package/dist/entries/progress-steps.js +1 -0
  324. package/dist/entries/radio-group.d.ts +1 -0
  325. package/dist/entries/radio-group.js +1 -0
  326. package/dist/entries/range-slider.d.ts +1 -0
  327. package/dist/entries/range-slider.js +1 -0
  328. package/dist/entries/rating.d.ts +1 -0
  329. package/dist/entries/rating.js +1 -0
  330. package/dist/entries/review-queue-item.d.ts +1 -0
  331. package/dist/entries/review-queue-item.js +1 -0
  332. package/dist/entries/rich-text-input.d.ts +1 -0
  333. package/dist/entries/rich-text-input.js +1 -0
  334. package/dist/entries/saved-view-picker.d.ts +1 -0
  335. package/dist/entries/saved-view-picker.js +1 -0
  336. package/dist/entries/search-field.d.ts +1 -0
  337. package/dist/entries/search-field.js +1 -0
  338. package/dist/entries/search-results-header.d.ts +1 -0
  339. package/dist/entries/search-results-header.js +1 -0
  340. package/dist/entries/section.d.ts +1 -0
  341. package/dist/entries/section.js +1 -0
  342. package/dist/entries/segmented-control.d.ts +1 -0
  343. package/dist/entries/segmented-control.js +1 -0
  344. package/dist/entries/select.d.ts +1 -0
  345. package/dist/entries/select.js +1 -0
  346. package/dist/entries/share-panel.d.ts +1 -0
  347. package/dist/entries/share-panel.js +1 -0
  348. package/dist/entries/sidebar-toggle-button.d.ts +1 -0
  349. package/dist/entries/sidebar-toggle-button.js +1 -0
  350. package/dist/entries/skeleton.d.ts +1 -0
  351. package/dist/entries/skeleton.js +1 -0
  352. package/dist/entries/slider.d.ts +1 -0
  353. package/dist/entries/slider.js +1 -0
  354. package/dist/entries/spin-button.d.ts +1 -0
  355. package/dist/entries/spin-button.js +1 -0
  356. package/dist/entries/spinner.d.ts +1 -0
  357. package/dist/entries/spinner.js +1 -0
  358. package/dist/entries/split-view.d.ts +1 -0
  359. package/dist/entries/split-view.js +1 -0
  360. package/dist/entries/switch.d.ts +1 -0
  361. package/dist/entries/switch.js +1 -0
  362. package/dist/entries/table.d.ts +1 -0
  363. package/dist/entries/table.js +1 -0
  364. package/dist/entries/tabs.d.ts +1 -0
  365. package/dist/entries/tabs.js +1 -0
  366. package/dist/entries/tag-input.d.ts +1 -0
  367. package/dist/entries/tag-input.js +1 -0
  368. package/dist/entries/task-assignment-panel.d.ts +1 -0
  369. package/dist/entries/task-assignment-panel.js +1 -0
  370. package/dist/entries/text-area.d.ts +1 -0
  371. package/dist/entries/text-area.js +1 -0
  372. package/dist/entries/text-field.d.ts +1 -0
  373. package/dist/entries/text-field.js +1 -0
  374. package/dist/entries/thumbnail-card.d.ts +1 -0
  375. package/dist/entries/thumbnail-card.js +1 -0
  376. package/dist/entries/time-field.d.ts +1 -0
  377. package/dist/entries/time-field.js +1 -0
  378. package/dist/entries/toast.d.ts +1 -0
  379. package/dist/entries/toast.js +1 -0
  380. package/dist/entries/tooltip.d.ts +1 -0
  381. package/dist/entries/tooltip.js +1 -0
  382. package/dist/entries/tree-grid.d.ts +1 -0
  383. package/dist/entries/tree-grid.js +1 -0
  384. package/dist/entries/tree.d.ts +1 -0
  385. package/dist/entries/tree.js +1 -0
  386. package/dist/entries/unified-share-modal.d.ts +1 -0
  387. package/dist/entries/unified-share-modal.js +1 -0
  388. package/dist/foundations/geometry/tokens.d.ts +46 -45
  389. package/dist/foundations/geometry/tokens.js +46 -45
  390. package/dist/foundations/motion/tokens.d.ts +10 -10
  391. package/dist/foundations/motion/tokens.js +10 -10
  392. package/dist/foundations/overlay/positioning.js +5 -1
  393. package/dist/foundations/profiles/built-ins.d.ts +4 -0
  394. package/dist/foundations/profiles/built-ins.js +131 -0
  395. package/dist/foundations/profiles/controller.d.ts +4 -0
  396. package/dist/foundations/profiles/controller.js +107 -0
  397. package/dist/foundations/profiles/index.d.ts +4 -0
  398. package/dist/foundations/profiles/index.js +3 -0
  399. package/dist/foundations/profiles/registry.d.ts +72 -0
  400. package/dist/foundations/profiles/registry.js +119 -0
  401. package/dist/foundations/profiles/types.d.ts +94 -0
  402. package/dist/foundations/profiles/types.js +1 -0
  403. package/dist/foundations/theming/controller.d.ts +37 -0
  404. package/dist/foundations/theming/controller.js +176 -0
  405. package/dist/foundations/theming/index.d.ts +2 -0
  406. package/dist/foundations/theming/index.js +1 -0
  407. package/dist/foundations/tokens/box-dark.d.ts +3 -3
  408. package/dist/foundations/tokens/box-defaults.d.ts +3 -3
  409. package/dist/foundations/tokens/index.d.ts +2 -2
  410. package/dist/foundations/tokens/index.js +1 -1
  411. package/dist/foundations/tokens/registry.d.ts +37 -7
  412. package/dist/foundations/tokens/registry.js +55 -5
  413. package/dist/foundations/tokens/types.d.ts +38 -1
  414. package/dist/index.d.ts +7 -2
  415. package/dist/index.js +4 -1
  416. package/dist/patterns/content-explorer/adapters/action-menu.d.ts +2 -2
  417. package/dist/patterns/content-explorer/adapters/action-menu.js +3 -9
  418. package/dist/patterns/content-explorer/adapters/breadcrumbs.d.ts +2 -2
  419. package/dist/patterns/content-explorer/adapters/breadcrumbs.js +3 -9
  420. package/dist/patterns/content-explorer/adapters/items.d.ts +3 -3
  421. package/dist/patterns/content-explorer/adapters/items.js +4 -10
  422. package/dist/patterns/content-explorer/adapters/list.d.ts +2 -2
  423. package/dist/patterns/content-explorer/adapters/list.js +3 -9
  424. package/dist/patterns/content-explorer/adapters/table.d.ts +2 -2
  425. package/dist/patterns/content-explorer/adapters/table.js +3 -9
  426. package/dist/patterns/content-explorer/adapters/toolbar.d.ts +2 -2
  427. package/dist/patterns/content-explorer/adapters/toolbar.js +7 -13
  428. package/dist/patterns/content-explorer/content-explorer.d.ts +15 -15
  429. package/dist/patterns/content-explorer/content-explorer.js +5 -11
  430. package/dist/patterns/file-request/file-request-builder.d.ts +2 -2
  431. package/dist/patterns/file-request/file-request-builder.js +3 -9
  432. package/dist/patterns/governance/governance-panel.d.ts +2 -2
  433. package/dist/patterns/governance/governance-panel.js +3 -6
  434. package/dist/patterns/insights/bar-chart.d.ts +2 -2
  435. package/dist/patterns/insights/bar-chart.js +3 -6
  436. package/dist/patterns/insights/chart-panel.d.ts +2 -2
  437. package/dist/patterns/insights/chart-panel.js +3 -6
  438. package/dist/patterns/insights/donut-chart.d.ts +2 -2
  439. package/dist/patterns/insights/donut-chart.js +3 -6
  440. package/dist/patterns/insights/line-chart.d.ts +2 -2
  441. package/dist/patterns/insights/line-chart.js +3 -6
  442. package/dist/patterns/insights/metric-card.d.ts +2 -2
  443. package/dist/patterns/insights/metric-card.js +3 -6
  444. package/dist/patterns/item/bulk-action-bar.d.ts +2 -2
  445. package/dist/patterns/item/bulk-action-bar.js +3 -6
  446. package/dist/patterns/item/item-details-panel.d.ts +2 -2
  447. package/dist/patterns/item/item-details-panel.js +3 -9
  448. package/dist/patterns/item/item-form.d.ts +2 -2
  449. package/dist/patterns/item/item-form.js +3 -9
  450. package/dist/patterns/item/preview-header.d.ts +2 -2
  451. package/dist/patterns/item/preview-header.js +3 -9
  452. package/dist/patterns/metadata/metadata-filter-builder.d.ts +2 -2
  453. package/dist/patterns/metadata/metadata-filter-builder.js +3 -9
  454. package/dist/patterns/metadata/metadata-inspector.d.ts +2 -2
  455. package/dist/patterns/metadata/metadata-inspector.js +3 -9
  456. package/dist/patterns/preview/annotation-inspector.d.ts +2 -2
  457. package/dist/patterns/preview/annotation-inspector.js +3 -9
  458. package/dist/patterns/preview/annotation-thread.d.ts +2 -2
  459. package/dist/patterns/preview/annotation-thread.js +3 -9
  460. package/dist/patterns/preview/annotation-toolbar.d.ts +2 -2
  461. package/dist/patterns/preview/annotation-toolbar.js +3 -9
  462. package/dist/patterns/preview/preview-element.d.ts +2 -2
  463. package/dist/patterns/preview/preview-element.js +3 -9
  464. package/dist/patterns/search/filter-bar.d.ts +2 -2
  465. package/dist/patterns/search/filter-bar.js +3 -9
  466. package/dist/patterns/search/saved-view-picker.d.ts +2 -2
  467. package/dist/patterns/search/saved-view-picker.js +3 -9
  468. package/dist/patterns/search/search-results-header.d.ts +2 -2
  469. package/dist/patterns/search/search-results-header.js +3 -9
  470. package/dist/patterns/share/access-stats.d.ts +2 -2
  471. package/dist/patterns/share/access-stats.js +3 -9
  472. package/dist/patterns/share/collaborator-avatars.d.ts +2 -2
  473. package/dist/patterns/share/collaborator-avatars.js +3 -9
  474. package/dist/patterns/share/invite-collaborators-modal.d.ts +2 -2
  475. package/dist/patterns/share/invite-collaborators-modal.js +3 -9
  476. package/dist/patterns/share/permission-matrix.d.ts +2 -2
  477. package/dist/patterns/share/permission-matrix.js +3 -9
  478. package/dist/patterns/share/presence.d.ts +2 -2
  479. package/dist/patterns/share/presence.js +3 -9
  480. package/dist/patterns/share/share-panel.d.ts +2 -2
  481. package/dist/patterns/share/share-panel.js +3 -9
  482. package/dist/patterns/share/unified-share-modal.d.ts +2 -2
  483. package/dist/patterns/share/unified-share-modal.js +3 -9
  484. package/dist/patterns/task/review-queue-item.d.ts +2 -2
  485. package/dist/patterns/task/review-queue-item.js +3 -6
  486. package/dist/patterns/task/task-assignment-panel.d.ts +2 -2
  487. package/dist/patterns/task/task-assignment-panel.js +3 -6
  488. package/package.json +5 -1
@@ -4,7 +4,8 @@ type BoxDropdownItem = {
4
4
  id: string;
5
5
  label: string;
6
6
  };
7
- export declare class BoxDropdownElement extends FormAssociatedElement {
7
+ export declare class Dropdown extends FormAssociatedElement {
8
+ static readonly tagName: string;
8
9
  static get observedAttributes(): string[];
9
10
  private open;
10
11
  private valueInternal;
@@ -12,12 +13,16 @@ export declare class BoxDropdownElement extends FormAssociatedElement {
12
13
  private triggerEl;
13
14
  private errorEl;
14
15
  private menuEl;
16
+ private positionCleanup;
15
17
  private readonly focusRestore;
16
18
  private readonly onDocumentPointerDown;
17
19
  get disabled(): boolean;
18
20
  set disabled(value: boolean);
19
21
  get label(): string;
20
22
  set label(value: string);
23
+ get placement(): string;
24
+ set placement(value: string);
25
+ private resolvedPlacement;
21
26
  get items(): BoxDropdownItem[];
22
27
  set items(value: BoxDropdownItem[]);
23
28
  get value(): string;
@@ -33,6 +38,6 @@ export declare class BoxDropdownElement extends FormAssociatedElement {
33
38
  protected renderTemplate(): void;
34
39
  protected setupListeners(): void;
35
40
  protected update(): void;
41
+ private stopTracking;
36
42
  }
37
- export declare const defineBoxDropdownElement: (tagName?: string) => typeof BoxDropdownElement;
38
43
  export {};
@@ -3,6 +3,7 @@ import { boeControl, boeOverlay, boeRadius, boeSpace } from "../../foundations/g
3
3
  import { FocusRestore, applyRovingTabindex, focusRovingItem, nextRovingIndex, } from "../../foundations/a11y/index.js";
4
4
  import { boeFocusVisibleStyles, boeNeutralInteractiveStyles, } from "../../foundations/tokens/index.js";
5
5
  import { boeMotionDuration, boeMotionEasing } from "../../foundations/motion/index.js";
6
+ import { parsePlacement, trackAnchor, } from "../../foundations/overlay/index.js";
6
7
  const DEFAULT_TAG_NAME = "box-dropdown";
7
8
  const escapeHtml = (value) => value
8
9
  .replaceAll("&", "&")
@@ -70,12 +71,14 @@ const dropdownStyles = `
70
71
  box-shadow: none;
71
72
  }
72
73
 
74
+ /* Positioned by JS (foundations/overlay) as position: fixed, so the menu
75
+ escapes ancestor overflow and flips/shifts to stay in the viewport. */
73
76
  [part="menu"] {
74
- position: absolute;
75
- inset-block-start: calc(100% + ${boeSpace[1]});
77
+ position: fixed;
78
+ inset-block-start: 0;
76
79
  inset-inline-start: 0;
77
80
  z-index: 20;
78
- min-inline-size: max(100%, 200px);
81
+ min-inline-size: 200px;
79
82
  display: grid;
80
83
  gap: 0;
81
84
  padding: ${boeOverlay.padding};
@@ -132,13 +135,15 @@ const dropdownStyles = `
132
135
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--boe-token-surface-status-surface-error, #ed3757) 22%, transparent);
133
136
  }
134
137
  `;
135
- export class BoxDropdownElement extends FormAssociatedElement {
138
+ export class Dropdown extends FormAssociatedElement {
139
+ static tagName = DEFAULT_TAG_NAME;
136
140
  static get observedAttributes() {
137
141
  return [
138
142
  ...FormAssociatedElement.formObservedAttributes,
139
143
  "disabled",
140
144
  "items",
141
145
  "label",
146
+ "placement",
142
147
  "value",
143
148
  ];
144
149
  }
@@ -148,6 +153,7 @@ export class BoxDropdownElement extends FormAssociatedElement {
148
153
  triggerEl;
149
154
  errorEl;
150
155
  menuEl = null;
156
+ positionCleanup = null;
151
157
  focusRestore = new FocusRestore();
152
158
  onDocumentPointerDown = (event) => {
153
159
  const path = event.composedPath();
@@ -173,6 +179,15 @@ export class BoxDropdownElement extends FormAssociatedElement {
173
179
  set label(value) {
174
180
  this.setAttribute("label", value);
175
181
  }
182
+ get placement() {
183
+ return this.getAttribute("placement") ?? "bottom-start";
184
+ }
185
+ set placement(value) {
186
+ this.setAttribute("placement", value);
187
+ }
188
+ resolvedPlacement() {
189
+ return parsePlacement(this.getAttribute("placement")) ?? { side: "bottom", align: "start" };
190
+ }
176
191
  get items() {
177
192
  const raw = this.getAttribute("items");
178
193
  if (!raw) {
@@ -220,6 +235,7 @@ export class BoxDropdownElement extends FormAssociatedElement {
220
235
  }
221
236
  disconnectedCallback() {
222
237
  document.removeEventListener("pointerdown", this.onDocumentPointerDown);
238
+ this.stopTracking();
223
239
  super.disconnectedCallback();
224
240
  }
225
241
  openMenu() {
@@ -387,19 +403,26 @@ export class BoxDropdownElement extends FormAssociatedElement {
387
403
  const items = this.menuItems();
388
404
  const selectedIndex = Math.max(0, items.findIndex(button => button.getAttribute("data-item-id") === this.valueInternal));
389
405
  applyRovingTabindex(items, selectedIndex);
406
+ // Match the trigger width, then position as a fixed overlay. Track once
407
+ // per open so repeated updates (e.g. value change) don't stack listeners.
408
+ this.menuEl.style.minInlineSize = `${Math.max(this.triggerEl.offsetWidth, 200)}px`;
409
+ if (!this.positionCleanup) {
410
+ this.positionCleanup = trackAnchor(this.triggerEl, this.menuEl, {
411
+ placement: this.resolvedPlacement(),
412
+ offset: 4,
413
+ });
414
+ }
390
415
  }
391
416
  else if (this.menuEl) {
417
+ this.stopTracking();
392
418
  this.menuEl.remove();
393
419
  this.menuEl = null;
394
420
  }
395
421
  this.applyInvalidState(this.triggerEl, this.errorEl);
396
422
  }
397
- }
398
- export const defineBoxDropdownElement = (tagName = DEFAULT_TAG_NAME) => {
399
- const existingElement = customElements.get(tagName);
400
- if (existingElement) {
401
- return existingElement;
423
+ stopTracking() {
424
+ this.positionCleanup?.();
425
+ this.positionCleanup = null;
402
426
  }
403
- customElements.define(tagName, BoxDropdownElement);
404
- return BoxDropdownElement;
405
- };
427
+ }
428
+ Dropdown.register();
@@ -5,7 +5,8 @@ type DualListboxOption = {
5
5
  label: string;
6
6
  value: string;
7
7
  };
8
- export declare class BoxDualListboxElement extends FormAssociatedElement {
8
+ export declare class DualListbox extends FormAssociatedElement {
9
+ static readonly tagName: string;
9
10
  static get observedAttributes(): string[];
10
11
  private availableSelection;
11
12
  private chosenSelection;
@@ -40,5 +41,4 @@ export declare class BoxDualListboxElement extends FormAssociatedElement {
40
41
  private syncListRoving;
41
42
  protected update(): void;
42
43
  }
43
- export declare const defineBoxDualListboxElement: (tagName?: string) => typeof BoxDualListboxElement;
44
44
  export {};
@@ -176,7 +176,8 @@ const dualListboxStyles = `
176
176
 
177
177
  ${boeFormFieldErrorStyles}
178
178
  `;
179
- export class BoxDualListboxElement extends FormAssociatedElement {
179
+ export class DualListbox extends FormAssociatedElement {
180
+ static tagName = DEFAULT_TAG_NAME;
180
181
  static get observedAttributes() {
181
182
  return [
182
183
  ...FormAssociatedElement.formObservedAttributes,
@@ -474,11 +475,4 @@ export class BoxDualListboxElement extends FormAssociatedElement {
474
475
  this.applyInvalidStateToControls(focusableControls, this.errorEl);
475
476
  }
476
477
  }
477
- export const defineBoxDualListboxElement = (tagName = DEFAULT_TAG_NAME) => {
478
- const existingElement = customElements.get(tagName);
479
- if (existingElement) {
480
- return existingElement;
481
- }
482
- customElements.define(tagName, BoxDualListboxElement);
483
- return BoxDualListboxElement;
484
- };
478
+ DualListbox.register();
@@ -6,7 +6,8 @@ import { BaseElement } from "../../core/index.js";
6
6
  * `disabled` is mirrored onto the light-DOM controls directly. Groups arbitrary
7
7
  * fields; use `box-checkbox-group`/`box-radio-group` for option lists.
8
8
  */
9
- export declare class BoxFieldsetElement extends BaseElement {
9
+ export declare class Fieldset extends BaseElement {
10
+ static readonly tagName: string;
10
11
  static get observedAttributes(): string[];
11
12
  private fieldsetEl;
12
13
  private bodyEl;
@@ -29,4 +30,3 @@ export declare class BoxFieldsetElement extends BaseElement {
29
30
  protected renderTemplate(): void;
30
31
  protected update(): void;
31
32
  }
32
- export declare const defineBoxFieldsetElement: (tagName?: string) => typeof BoxFieldsetElement;
@@ -47,7 +47,8 @@ const fieldsetStyles = `
47
47
  * `disabled` is mirrored onto the light-DOM controls directly. Groups arbitrary
48
48
  * fields; use `box-checkbox-group`/`box-radio-group` for option lists.
49
49
  */
50
- export class BoxFieldsetElement extends BaseElement {
50
+ export class Fieldset extends BaseElement {
51
+ static tagName = DEFAULT_TAG_NAME;
51
52
  static get observedAttributes() {
52
53
  return ["description", "disabled", "label"];
53
54
  }
@@ -158,11 +159,4 @@ export class BoxFieldsetElement extends BaseElement {
158
159
  this.syncDisabledControls();
159
160
  }
160
161
  }
161
- export const defineBoxFieldsetElement = (tagName = DEFAULT_TAG_NAME) => {
162
- const existingElement = customElements.get(tagName);
163
- if (existingElement) {
164
- return existingElement;
165
- }
166
- customElements.define(tagName, BoxFieldsetElement);
167
- return BoxFieldsetElement;
168
- };
162
+ Fieldset.register();
@@ -5,7 +5,8 @@ type MultiSelectOption = {
5
5
  label: string;
6
6
  value: string;
7
7
  };
8
- export declare class BoxMultiSelectElement extends FormAssociatedElement {
8
+ export declare class MultiSelect extends FormAssociatedElement {
9
+ static readonly tagName: string;
9
10
  static get observedAttributes(): string[];
10
11
  private valueInternal;
11
12
  private lastOptionsJson;
@@ -26,5 +27,4 @@ export declare class BoxMultiSelectElement extends FormAssociatedElement {
26
27
  protected setupListeners(): void;
27
28
  protected update(): void;
28
29
  }
29
- export declare const defineBoxMultiSelectElement: (tagName?: string) => typeof BoxMultiSelectElement;
30
30
  export {};
@@ -113,7 +113,8 @@ const multiSelectStyles = `
113
113
 
114
114
  ${boeFormFieldErrorStyles}
115
115
  `;
116
- export class BoxMultiSelectElement extends FormAssociatedElement {
116
+ export class MultiSelect extends FormAssociatedElement {
117
+ static tagName = DEFAULT_TAG_NAME;
117
118
  static get observedAttributes() {
118
119
  return [
119
120
  ...FormAssociatedElement.formObservedAttributes,
@@ -254,11 +255,4 @@ export class BoxMultiSelectElement extends FormAssociatedElement {
254
255
  this.applyInvalidStateToControls(Array.from(this.optionsContainerEl.querySelectorAll('[part="input"]')), this.errorEl);
255
256
  }
256
257
  }
257
- export const defineBoxMultiSelectElement = (tagName = DEFAULT_TAG_NAME) => {
258
- const existingElement = customElements.get(tagName);
259
- if (existingElement) {
260
- return existingElement;
261
- }
262
- customElements.define(tagName, BoxMultiSelectElement);
263
- return BoxMultiSelectElement;
264
- };
258
+ MultiSelect.register();
@@ -1,6 +1,7 @@
1
1
  import { FormAssociatedElement } from "../../core/index.js";
2
2
  import type { FormValue } from "../../core/index.js";
3
- export declare class BoxNumberInputElement extends FormAssociatedElement {
3
+ export declare class NumberInput extends FormAssociatedElement {
4
+ static readonly tagName: string;
4
5
  static get observedAttributes(): string[];
5
6
  private valueInternal;
6
7
  private inputEl;
@@ -29,4 +30,3 @@ export declare class BoxNumberInputElement extends FormAssociatedElement {
29
30
  protected setupListeners(): void;
30
31
  protected update(): void;
31
32
  }
32
- export declare const defineBoxNumberInputElement: (tagName?: string) => typeof BoxNumberInputElement;
@@ -55,7 +55,8 @@ const numberInputStyles = `
55
55
 
56
56
  ${boeFormFieldErrorStyles}
57
57
  `;
58
- export class BoxNumberInputElement extends FormAssociatedElement {
58
+ export class NumberInput extends FormAssociatedElement {
59
+ static tagName = DEFAULT_TAG_NAME;
59
60
  static get observedAttributes() {
60
61
  return [
61
62
  ...FormAssociatedElement.formObservedAttributes,
@@ -235,11 +236,4 @@ export class BoxNumberInputElement extends FormAssociatedElement {
235
236
  this.applyInvalidState(this.inputEl, this.errorEl);
236
237
  }
237
238
  }
238
- export const defineBoxNumberInputElement = (tagName = DEFAULT_TAG_NAME) => {
239
- const existingElement = customElements.get(tagName);
240
- if (existingElement) {
241
- return existingElement;
242
- }
243
- customElements.define(tagName, BoxNumberInputElement);
244
- return BoxNumberInputElement;
245
- };
239
+ NumberInput.register();
@@ -11,7 +11,8 @@ type PillCloudOption = {
11
11
  * announced with `value-changed`. Each pill is a toggle button with
12
12
  * `aria-pressed`; the group is a labelled `role="group"`.
13
13
  */
14
- export declare class BoxPillCloudElement extends FormAssociatedElement {
14
+ export declare class PillCloud extends FormAssociatedElement {
15
+ static readonly tagName: string;
15
16
  static get observedAttributes(): string[];
16
17
  private valueInternal;
17
18
  private lastOptionsJson;
@@ -31,5 +32,4 @@ export declare class BoxPillCloudElement extends FormAssociatedElement {
31
32
  protected setupListeners(): void;
32
33
  protected update(): void;
33
34
  }
34
- export declare const defineBoxPillCloudElement: (tagName?: string) => typeof BoxPillCloudElement;
35
35
  export {};
@@ -68,7 +68,8 @@ const pillCloudStyles = `
68
68
  * announced with `value-changed`. Each pill is a toggle button with
69
69
  * `aria-pressed`; the group is a labelled `role="group"`.
70
70
  */
71
- export class BoxPillCloudElement extends FormAssociatedElement {
71
+ export class PillCloud extends FormAssociatedElement {
72
+ static tagName = DEFAULT_TAG_NAME;
72
73
  static get observedAttributes() {
73
74
  return [
74
75
  ...FormAssociatedElement.formObservedAttributes,
@@ -220,11 +221,4 @@ export class BoxPillCloudElement extends FormAssociatedElement {
220
221
  this.applyInvalidStateToControls(Array.from(this.rootEl.querySelectorAll('[part~="pill"]')), this.errorEl);
221
222
  }
222
223
  }
223
- export const defineBoxPillCloudElement = (tagName = DEFAULT_TAG_NAME) => {
224
- const existingElement = customElements.get(tagName);
225
- if (existingElement) {
226
- return existingElement;
227
- }
228
- customElements.define(tagName, BoxPillCloudElement);
229
- return BoxPillCloudElement;
230
- };
224
+ PillCloud.register();
@@ -12,7 +12,8 @@ type PillOption = {
12
12
  * opening focuses the first item; ArrowUp/Down/Home/End move focus, Escape (or
13
13
  * moving focus outside) closes and returns focus to the trigger.
14
14
  */
15
- export declare class BoxPillSelectorDropdownElement extends FormAssociatedElement {
15
+ export declare class PillSelectorDropdown extends FormAssociatedElement {
16
+ static readonly tagName: string;
16
17
  static get observedAttributes(): string[];
17
18
  private valueInternal;
18
19
  private open;
@@ -62,5 +63,4 @@ export declare class BoxPillSelectorDropdownElement extends FormAssociatedElemen
62
63
  protected setupListeners(): void;
63
64
  protected update(): void;
64
65
  }
65
- export declare const defineBoxPillSelectorDropdownElement: (tagName?: string) => typeof BoxPillSelectorDropdownElement;
66
66
  export {};
@@ -169,7 +169,8 @@ const pillSelectorStyles = `
169
169
  * opening focuses the first item; ArrowUp/Down/Home/End move focus, Escape (or
170
170
  * moving focus outside) closes and returns focus to the trigger.
171
171
  */
172
- export class BoxPillSelectorDropdownElement extends FormAssociatedElement {
172
+ export class PillSelectorDropdown extends FormAssociatedElement {
173
+ static tagName = DEFAULT_TAG_NAME;
173
174
  static get observedAttributes() {
174
175
  return [
175
176
  ...FormAssociatedElement.formObservedAttributes,
@@ -616,11 +617,4 @@ export class BoxPillSelectorDropdownElement extends FormAssociatedElement {
616
617
  this.applyPendingFocus();
617
618
  }
618
619
  }
619
- export const defineBoxPillSelectorDropdownElement = (tagName = DEFAULT_TAG_NAME) => {
620
- const existingElement = customElements.get(tagName);
621
- if (existingElement) {
622
- return existingElement;
623
- }
624
- customElements.define(tagName, BoxPillSelectorDropdownElement);
625
- return BoxPillSelectorDropdownElement;
626
- };
620
+ PillSelectorDropdown.register();
@@ -1,6 +1,13 @@
1
1
  import { FormAssociatedElement } from "../../core/index.js";
2
2
  import type { FormValue } from "../../core/index.js";
3
- export declare class BoxRadioGroupElement extends FormAssociatedElement {
3
+ type RadioOption = {
4
+ label: string;
5
+ value: string;
6
+ description?: string;
7
+ disabled?: boolean;
8
+ };
9
+ export declare class RadioGroup extends FormAssociatedElement {
10
+ static readonly tagName: string;
4
11
  static get observedAttributes(): string[];
5
12
  private valueInternal;
6
13
  private groupName;
@@ -14,14 +21,8 @@ export declare class BoxRadioGroupElement extends FormAssociatedElement {
14
21
  set disabled(value: boolean);
15
22
  get label(): string;
16
23
  set label(value: string);
17
- get options(): Array<{
18
- label: string;
19
- value: string;
20
- }>;
21
- set options(value: Array<{
22
- label: string;
23
- value: string;
24
- }>);
24
+ get options(): RadioOption[];
25
+ set options(value: RadioOption[]);
25
26
  attributeChangedCallback(name: string, oldValue: string | null, newValue: string | null): void;
26
27
  protected getFormValue(): FormValue;
27
28
  protected restoreFormValue(value: FormValue): void;
@@ -29,4 +30,4 @@ export declare class BoxRadioGroupElement extends FormAssociatedElement {
29
30
  protected renderTemplate(): void;
30
31
  protected update(): void;
31
32
  }
32
- export declare const defineBoxRadioGroupElement: (tagName?: string) => typeof BoxRadioGroupElement;
33
+ export {};
@@ -100,14 +100,38 @@ const radioGroupStyles = `
100
100
 
101
101
  ${boeFocusVisibleStyles('[part="input"]')}
102
102
 
103
+ [part="option-text"] {
104
+ display: flex;
105
+ flex-direction: column;
106
+ gap: 1px;
107
+ min-inline-size: 0;
108
+ }
109
+
103
110
  [part="option-label"] {
104
111
  font-weight: 500;
105
112
  color: var(--boe-token-text-text, #222222);
106
113
  }
107
114
 
115
+ /* Per-option supporting text below the label. */
116
+ [part="option-description"] {
117
+ font-size: 0.78rem;
118
+ font-weight: 400;
119
+ line-height: 1.4;
120
+ color: var(--boe-token-text-text-secondary, #6f6f6f);
121
+ }
122
+
123
+ [part~="option"][data-has-description="true"] {
124
+ align-items: start;
125
+ }
126
+
127
+ [part~="option"][data-has-description="true"] [part="input"] {
128
+ margin-block-start: 2px;
129
+ }
130
+
108
131
  ${boeFormFieldErrorStyles}
109
132
  `;
110
- export class BoxRadioGroupElement extends FormAssociatedElement {
133
+ export class RadioGroup extends FormAssociatedElement {
134
+ static tagName = DEFAULT_TAG_NAME;
111
135
  static get observedAttributes() {
112
136
  return [
113
137
  ...FormAssociatedElement.formObservedAttributes,
@@ -209,12 +233,22 @@ export class BoxRadioGroupElement extends FormAssociatedElement {
209
233
  const radioGroupName = this.getRadioGroupName();
210
234
  if (currentOptionsJson !== this.lastOptionsJson) {
211
235
  this.optionsContainerEl.innerHTML = this.options
212
- .map(option => `
213
- <label part="option" data-value="${escapeHtml(option.value)}">
214
- <input type="radio" part="input" name="${escapeHtml(radioGroupName)}" value="${escapeHtml(option.value)}" />
215
- <span part="option-label">${escapeHtml(option.label)}</span>
236
+ .map(option => {
237
+ const description = option.description
238
+ ? `<span part="option-description">${escapeHtml(option.description)}</span>`
239
+ : "";
240
+ const hasDescription = option.description ? "true" : "false";
241
+ const disabledAttr = option.disabled ? " disabled" : "";
242
+ return `
243
+ <label part="option" data-value="${escapeHtml(option.value)}" data-has-description="${hasDescription}">
244
+ <input type="radio" part="input" name="${escapeHtml(radioGroupName)}" value="${escapeHtml(option.value)}"${disabledAttr} />
245
+ <span part="option-text">
246
+ <span part="option-label">${escapeHtml(option.label)}</span>
247
+ ${description}
248
+ </span>
216
249
  </label>
217
- `)
250
+ `;
251
+ })
218
252
  .join("");
219
253
  this.lastOptionsJson = currentOptionsJson;
220
254
  this.optionsContainerEl.querySelectorAll('[part="input"]').forEach(node => {
@@ -242,16 +276,20 @@ export class BoxRadioGroupElement extends FormAssociatedElement {
242
276
  }
243
277
  });
244
278
  }
279
+ const disabledByValue = new Map(this.options.map(option => [option.value, Boolean(option.disabled)]));
245
280
  this.optionsContainerEl.querySelectorAll('[part~="option"]').forEach(labelNode => {
246
281
  const label = labelNode;
247
282
  const val = label.dataset.value;
248
283
  const isSelected = val === this.valueInternal;
249
284
  label.dataset.selected = String(isSelected);
285
+ // part= is overwritten to toggle the selected token; data-has-description
286
+ // is a separate attribute and survives.
250
287
  label.setAttribute("part", `option${isSelected ? " option-selected" : ""}`);
251
288
  const input = label.querySelector('[part="input"]');
252
289
  if (input) {
253
290
  input.checked = isSelected;
254
- if (this.disabled) {
291
+ // Disabled if the whole group is disabled or this option is disabled.
292
+ if (this.disabled || disabledByValue.get(val ?? "")) {
255
293
  input.setAttribute("disabled", "");
256
294
  }
257
295
  else {
@@ -275,11 +313,4 @@ export class BoxRadioGroupElement extends FormAssociatedElement {
275
313
  this.syncFormAssociation();
276
314
  }
277
315
  }
278
- export const defineBoxRadioGroupElement = (tagName = DEFAULT_TAG_NAME) => {
279
- const existingElement = customElements.get(tagName);
280
- if (existingElement) {
281
- return existingElement;
282
- }
283
- customElements.define(tagName, BoxRadioGroupElement);
284
- return BoxRadioGroupElement;
285
- };
316
+ RadioGroup.register();
@@ -1,6 +1,7 @@
1
1
  import { FormAssociatedElement } from "../../core/index.js";
2
2
  import type { FormValue } from "../../core/index.js";
3
- export declare class BoxRangeSliderElement extends FormAssociatedElement {
3
+ export declare class RangeSlider extends FormAssociatedElement {
4
+ static readonly tagName: string;
4
5
  static get observedAttributes(): string[];
5
6
  private startInternal;
6
7
  private endInternal;
@@ -33,4 +34,3 @@ export declare class BoxRangeSliderElement extends FormAssociatedElement {
33
34
  protected setupListeners(): void;
34
35
  protected update(): void;
35
36
  }
36
- export declare const defineBoxRangeSliderElement: (tagName?: string) => typeof BoxRangeSliderElement;
@@ -78,7 +78,8 @@ const rangeSliderStyles = `
78
78
  accent-color: var(--boe-token-surface-status-surface-error, #ed3757);
79
79
  }
80
80
  `;
81
- export class BoxRangeSliderElement extends FormAssociatedElement {
81
+ export class RangeSlider extends FormAssociatedElement {
82
+ static tagName = DEFAULT_TAG_NAME;
82
83
  static get observedAttributes() {
83
84
  return [
84
85
  ...FormAssociatedElement.formObservedAttributes,
@@ -284,11 +285,4 @@ export class BoxRangeSliderElement extends FormAssociatedElement {
284
285
  this.applyInvalidStateToControls([this.startInputEl, this.endInputEl], this.errorEl);
285
286
  }
286
287
  }
287
- export const defineBoxRangeSliderElement = (tagName = DEFAULT_TAG_NAME) => {
288
- const existingElement = customElements.get(tagName);
289
- if (existingElement) {
290
- return existingElement;
291
- }
292
- customElements.define(tagName, BoxRangeSliderElement);
293
- return BoxRangeSliderElement;
294
- };
288
+ RangeSlider.register();
@@ -1,6 +1,7 @@
1
1
  import { FormAssociatedElement } from "../../core/index.js";
2
2
  import type { FormValue } from "../../core/index.js";
3
- export declare class BoxRatingElement extends FormAssociatedElement {
3
+ export declare class Rating extends FormAssociatedElement {
4
+ static readonly tagName: string;
4
5
  static get observedAttributes(): string[];
5
6
  private valueInternal;
6
7
  private lastMax;
@@ -28,4 +29,3 @@ export declare class BoxRatingElement extends FormAssociatedElement {
28
29
  protected setupListeners(): void;
29
30
  protected update(): void;
30
31
  }
31
- export declare const defineBoxRatingElement: (tagName?: string) => typeof BoxRatingElement;
@@ -81,7 +81,8 @@ const ratingStyles = `
81
81
 
82
82
  ${boeFormFieldErrorStyles}
83
83
  `;
84
- export class BoxRatingElement extends FormAssociatedElement {
84
+ export class Rating extends FormAssociatedElement {
85
+ static tagName = DEFAULT_TAG_NAME;
85
86
  static get observedAttributes() {
86
87
  return [
87
88
  ...FormAssociatedElement.formObservedAttributes,
@@ -292,11 +293,4 @@ export class BoxRatingElement extends FormAssociatedElement {
292
293
  this.applyInvalidState(this.controlEl, this.errorEl);
293
294
  }
294
295
  }
295
- export const defineBoxRatingElement = (tagName = DEFAULT_TAG_NAME) => {
296
- const existingElement = customElements.get(tagName);
297
- if (existingElement) {
298
- return existingElement;
299
- }
300
- customElements.define(tagName, BoxRatingElement);
301
- return BoxRatingElement;
302
- };
296
+ Rating.register();
@@ -1,6 +1,7 @@
1
1
  import { FormAssociatedElement } from "../../core/index.js";
2
2
  import type { FormValue } from "../../core/index.js";
3
- export declare class BoxRichTextInputElement extends FormAssociatedElement {
3
+ export declare class RichTextInput extends FormAssociatedElement {
4
+ static readonly tagName: string;
4
5
  static get observedAttributes(): string[];
5
6
  private editor;
6
7
  private labelElement;
@@ -29,4 +30,3 @@ export declare class BoxRichTextInputElement extends FormAssociatedElement {
29
30
  protected setupListeners(): void;
30
31
  protected update(): void;
31
32
  }
32
- export declare const defineBoxRichTextInputElement: (tagName?: string) => typeof BoxRichTextInputElement;
@@ -193,7 +193,8 @@ const richTextStyles = `
193
193
 
194
194
  ${boeFormFieldErrorStyles}
195
195
  `;
196
- export class BoxRichTextInputElement extends FormAssociatedElement {
196
+ export class RichTextInput extends FormAssociatedElement {
197
+ static tagName = DEFAULT_TAG_NAME;
197
198
  static get observedAttributes() {
198
199
  return [
199
200
  ...FormAssociatedElement.formObservedAttributes,
@@ -393,11 +394,4 @@ export class BoxRichTextInputElement extends FormAssociatedElement {
393
394
  this.applyInvalidState(this.editor, this.errorEl);
394
395
  }
395
396
  }
396
- export const defineBoxRichTextInputElement = (tagName = DEFAULT_TAG_NAME) => {
397
- const existingElement = customElements.get(tagName);
398
- if (existingElement) {
399
- return existingElement;
400
- }
401
- customElements.define(tagName, BoxRichTextInputElement);
402
- return BoxRichTextInputElement;
403
- };
397
+ RichTextInput.register();
@@ -1,7 +1,11 @@
1
1
  import { FormAssociatedElement } from "../../core/index.js";
2
2
  import type { FormValue } from "../../core/index.js";
3
- export declare class BoxSearchFieldElement extends FormAssociatedElement {
3
+ export declare class SearchField extends FormAssociatedElement {
4
+ static readonly tagName: string;
4
5
  static get observedAttributes(): string[];
6
+ /** Shows a spinner in the submit button while a search runs asynchronously. */
7
+ get loading(): boolean;
8
+ set loading(value: boolean);
5
9
  private valueInternal;
6
10
  private inputEl;
7
11
  private labelEl;
@@ -23,6 +27,10 @@ export declare class BoxSearchFieldElement extends FormAssociatedElement {
23
27
  protected restoreFormValue(value: FormValue): void;
24
28
  protected renderTemplate(): void;
25
29
  protected setupListeners(): void;
30
+ /**
31
+ * Emit `search` and, when placed inside a form, request its submission — so a
32
+ * search field behaves like a native search input on Enter / submit-click.
33
+ */
34
+ private submitSearch;
26
35
  protected update(): void;
27
36
  }
28
- export declare const defineBoxSearchFieldElement: (tagName?: string) => typeof BoxSearchFieldElement;