@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
@@ -0,0 +1,176 @@
1
+ import { applyDesignTokens, registerBoxDarkDesignSystem, registerBoxDefaultDesignSystem, setActiveDesignSystem, } from "../tokens/index.js";
2
+ export const THEME_CHANGE_EVENT = "boe:theme-change";
3
+ export const DEFAULT_THEME_STORAGE_KEY = "boe-theme";
4
+ export const DARK_MODE_MEDIA_QUERY = "(prefers-color-scheme: dark)";
5
+ const isThemePreference = (value) => value === "light" || value === "dark" || value === "system";
6
+ const resolveDefaultRoot = () => typeof document === "undefined" ? null : document.documentElement;
7
+ const resolveDefaultStorage = () => {
8
+ try {
9
+ return typeof localStorage === "undefined" ? null : localStorage;
10
+ }
11
+ catch {
12
+ return null;
13
+ }
14
+ };
15
+ const resolveDefaultMediaQueryList = () => typeof matchMedia === "function" ? matchMedia(DARK_MODE_MEDIA_QUERY) : null;
16
+ const safeStoredPreference = (storage, storageKey) => {
17
+ if (!storage || !storageKey) {
18
+ return null;
19
+ }
20
+ try {
21
+ const value = storage.getItem(storageKey);
22
+ return isThemePreference(value) ? value : null;
23
+ }
24
+ catch {
25
+ return null;
26
+ }
27
+ };
28
+ const persistPreference = (storage, storageKey, preference) => {
29
+ if (!storage || !storageKey) {
30
+ return;
31
+ }
32
+ try {
33
+ storage.setItem(storageKey, preference);
34
+ }
35
+ catch {
36
+ // Storage may be unavailable in privacy-restricted or embedded contexts.
37
+ }
38
+ };
39
+ const escapeInlineScriptValue = (value) => JSON.stringify(value).replaceAll("<", "\\u003c");
40
+ export const createThemeInitializationScript = (options = {}) => {
41
+ const preference = options.preference ?? "system";
42
+ const storageKey = options.storageKey === undefined
43
+ ? DEFAULT_THEME_STORAGE_KEY
44
+ : options.storageKey;
45
+ const themeAttribute = options.themeAttribute === undefined
46
+ ? "data-theme"
47
+ : options.themeAttribute;
48
+ return `(() => {
49
+ const fallback = ${escapeInlineScriptValue(preference)};
50
+ let preference = fallback;
51
+ try {
52
+ const stored = ${storageKey ? `localStorage.getItem(${escapeInlineScriptValue(storageKey)})` : "null"};
53
+ if (stored === "light" || stored === "dark" || stored === "system") preference = stored;
54
+ } catch {}
55
+ const resolved = preference === "system"
56
+ ? (typeof matchMedia === "function" && matchMedia(${escapeInlineScriptValue(DARK_MODE_MEDIA_QUERY)}).matches ? "dark" : "light")
57
+ : preference;
58
+ ${themeAttribute ? `document.documentElement.setAttribute(${escapeInlineScriptValue(themeAttribute)}, resolved);` : ""}
59
+ document.documentElement.style.colorScheme = resolved;
60
+ })();`;
61
+ };
62
+ export const createThemeController = (options = {}) => {
63
+ const defaultPreference = options.preference ?? "system";
64
+ const storageKey = options.storageKey === undefined
65
+ ? DEFAULT_THEME_STORAGE_KEY
66
+ : options.storageKey;
67
+ const lightDesignSystem = options.lightDesignSystem ?? "box-default";
68
+ const darkDesignSystem = options.darkDesignSystem ?? "box-dark";
69
+ const themeAttribute = options.themeAttribute === undefined
70
+ ? "data-theme"
71
+ : options.themeAttribute;
72
+ const shouldApplyColorScheme = options.applyColorScheme ?? true;
73
+ let preference = defaultPreference;
74
+ let resolvedTheme = "light";
75
+ let root = options.root ?? null;
76
+ let storage = options.storage ?? null;
77
+ let mediaQueryList = options.mediaQueryList ?? null;
78
+ const shouldResolveDefaultStorage = options.storage === undefined;
79
+ const shouldResolveDefaultMediaQuery = options.mediaQueryList === undefined;
80
+ let started = false;
81
+ let appliedVariables = new Set();
82
+ const resolveTheme = () => preference === "system"
83
+ ? (mediaQueryList?.matches ? "dark" : "light")
84
+ : preference;
85
+ const emitThemeChange = (designSystemName) => {
86
+ if (!root || typeof CustomEvent === "undefined") {
87
+ return;
88
+ }
89
+ root.dispatchEvent(new CustomEvent(THEME_CHANGE_EVENT, {
90
+ bubbles: true,
91
+ composed: true,
92
+ detail: {
93
+ preference,
94
+ resolvedTheme,
95
+ designSystemName,
96
+ },
97
+ }));
98
+ };
99
+ const applyTheme = () => {
100
+ if (!root) {
101
+ throw new Error("ThemeController requires a root HTMLElement");
102
+ }
103
+ resolvedTheme = resolveTheme();
104
+ const designSystemName = resolvedTheme === "dark"
105
+ ? darkDesignSystem
106
+ : lightDesignSystem;
107
+ setActiveDesignSystem(designSystemName);
108
+ const nextVariables = new Set(applyDesignTokens(root, designSystemName));
109
+ for (const variable of appliedVariables) {
110
+ if (!nextVariables.has(variable)) {
111
+ root.style.removeProperty(variable);
112
+ }
113
+ }
114
+ appliedVariables = nextVariables;
115
+ if (themeAttribute) {
116
+ root.setAttribute(themeAttribute, resolvedTheme);
117
+ }
118
+ if (shouldApplyColorScheme) {
119
+ root.style.colorScheme = resolvedTheme;
120
+ }
121
+ emitThemeChange(designSystemName);
122
+ };
123
+ const handleSystemThemeChange = () => {
124
+ if (started && preference === "system") {
125
+ applyTheme();
126
+ }
127
+ };
128
+ const start = () => {
129
+ if (started) {
130
+ return;
131
+ }
132
+ root ??= resolveDefaultRoot();
133
+ if (shouldResolveDefaultStorage) {
134
+ storage = resolveDefaultStorage();
135
+ }
136
+ if (shouldResolveDefaultMediaQuery) {
137
+ mediaQueryList = resolveDefaultMediaQueryList();
138
+ }
139
+ if (!root) {
140
+ throw new Error("ThemeController cannot start without a document root");
141
+ }
142
+ if (options.registerBuiltIns ?? true) {
143
+ registerBoxDefaultDesignSystem();
144
+ registerBoxDarkDesignSystem();
145
+ }
146
+ preference = safeStoredPreference(storage, storageKey) ?? defaultPreference;
147
+ mediaQueryList?.addEventListener("change", handleSystemThemeChange);
148
+ started = true;
149
+ applyTheme();
150
+ };
151
+ const stop = () => {
152
+ if (!started) {
153
+ return;
154
+ }
155
+ mediaQueryList?.removeEventListener("change", handleSystemThemeChange);
156
+ started = false;
157
+ };
158
+ const setPreference = (nextPreference) => {
159
+ if (!isThemePreference(nextPreference)) {
160
+ throw new Error(`Unknown theme preference: ${String(nextPreference)}`);
161
+ }
162
+ preference = nextPreference;
163
+ persistPreference(storage, storageKey, preference);
164
+ if (started) {
165
+ applyTheme();
166
+ }
167
+ };
168
+ return {
169
+ start,
170
+ stop,
171
+ toggle: () => setPreference(resolvedTheme === "dark" ? "light" : "dark"),
172
+ setPreference,
173
+ getPreference: () => preference,
174
+ getResolvedTheme: () => resolvedTheme,
175
+ };
176
+ };
@@ -0,0 +1,2 @@
1
+ export { DARK_MODE_MEDIA_QUERY, DEFAULT_THEME_STORAGE_KEY, THEME_CHANGE_EVENT, createThemeController, createThemeInitializationScript, } from "./controller.js";
2
+ export type { ResolvedTheme, ThemeChangeDetail, ThemeController, ThemeControllerOptions, ThemeInitializationScriptOptions, ThemePreference, } from "./controller.js";
@@ -0,0 +1 @@
1
+ export { DARK_MODE_MEDIA_QUERY, DEFAULT_THEME_STORAGE_KEY, THEME_CHANGE_EVENT, createThemeController, createThemeInitializationScript, } from "./controller.js";
@@ -1,11 +1,11 @@
1
- import type { DesignSystemDefinition } from "./types.js";
1
+ import type { RegisteredDesignSystemDefinition } from "./types.js";
2
2
  /**
3
3
  * Box dark theme. Same token keys, icons, and illustrations as
4
4
  * `boxDefaultDesignSystem` — only the surface / text / stroke / status values
5
5
  * change, so every component that consumes `--boe-token-*` re-themes with no
6
6
  * markup change when this bundle is made active.
7
7
  */
8
- export declare const boxDarkDesignSystem: DesignSystemDefinition;
8
+ export declare const boxDarkDesignSystem: RegisteredDesignSystemDefinition;
9
9
  export declare const registerBoxDarkDesignSystem: (options?: {
10
10
  setActive?: boolean;
11
- }) => DesignSystemDefinition;
11
+ }) => RegisteredDesignSystemDefinition;
@@ -1,5 +1,5 @@
1
- import type { DesignSystemDefinition } from "./types.js";
2
- export declare const boxDefaultDesignSystem: DesignSystemDefinition;
1
+ import type { RegisteredDesignSystemDefinition } from "./types.js";
2
+ export declare const boxDefaultDesignSystem: RegisteredDesignSystemDefinition;
3
3
  export declare const registerBoxDefaultDesignSystem: (options?: {
4
4
  setActive?: boolean;
5
- }) => DesignSystemDefinition;
5
+ }) => RegisteredDesignSystemDefinition;
@@ -1,5 +1,5 @@
1
- export { DESIGN_SYSTEM_CHANGE_EVENT, applyDesignTokens, createDesignTokenStyleText, getActiveDesignSystem, getDesignSystem, listDesignSystems, registerDesignSystem, resolveDesignIcon, resolveDesignIllustration, resolveDesignSystemTokens, setActiveDesignSystem, } from "./registry.js";
1
+ export { DESIGN_SYSTEM_CHANGE_EVENT, SEMANTIC_TOKEN_ALIASES, applyDesignTokens, createDesignTokenStyleText, getActiveDesignSystem, getDesignSystem, listDesignSystems, normalizeDesignTokens, registerDesignSystem, resolveDesignIcon, resolveDesignIllustration, resolveDesignSystemTokens, setActiveDesignSystem, } from "./registry.js";
2
2
  export { boxDefaultDesignSystem, registerBoxDefaultDesignSystem } from "./box-defaults.js";
3
3
  export { boxDarkDesignSystem, registerBoxDarkDesignSystem } from "./box-dark.js";
4
4
  export { boeBrandInteractiveStyles, boeFocusRingShadow, boeFocusVisibleStyles, boeNeutralInteractiveStyles, } from "./interaction.js";
5
- export type { ApplyDesignTokensOptions, DesignAssetRenderContext, DesignAssetRenderer, DesignSystemDefinition, DesignTokenMap, } from "./types.js";
5
+ export type { ApplyDesignTokensOptions, DesignAssetRenderContext, DesignAssetRenderer, DesignSystemDefinition, DesignTokenInput, DesignTokenMap, RegisteredDesignSystemDefinition, SemanticDesignTokenMap, } from "./types.js";
@@ -1,4 +1,4 @@
1
- export { DESIGN_SYSTEM_CHANGE_EVENT, applyDesignTokens, createDesignTokenStyleText, getActiveDesignSystem, getDesignSystem, listDesignSystems, registerDesignSystem, resolveDesignIcon, resolveDesignIllustration, resolveDesignSystemTokens, setActiveDesignSystem, } from "./registry.js";
1
+ export { DESIGN_SYSTEM_CHANGE_EVENT, SEMANTIC_TOKEN_ALIASES, applyDesignTokens, createDesignTokenStyleText, getActiveDesignSystem, getDesignSystem, listDesignSystems, normalizeDesignTokens, registerDesignSystem, resolveDesignIcon, resolveDesignIllustration, resolveDesignSystemTokens, setActiveDesignSystem, } from "./registry.js";
2
2
  export { boxDefaultDesignSystem, registerBoxDefaultDesignSystem } from "./box-defaults.js";
3
3
  export { boxDarkDesignSystem, registerBoxDarkDesignSystem } from "./box-dark.js";
4
4
  export { boeBrandInteractiveStyles, boeFocusRingShadow, boeFocusVisibleStyles, boeNeutralInteractiveStyles, } from "./interaction.js";
@@ -1,14 +1,44 @@
1
- import type { ApplyDesignTokensOptions, DesignSystemDefinition, DesignTokenMap } from "./types.js";
1
+ import type { ApplyDesignTokensOptions, DesignSystemDefinition, DesignTokenInput, DesignTokenMap, RegisteredDesignSystemDefinition } from "./types.js";
2
2
  export declare const DESIGN_SYSTEM_CHANGE_EVENT = "boe:design-system-change";
3
+ export declare const SEMANTIC_TOKEN_ALIASES: {
4
+ readonly fontFamilyBase: "FontFamilyBase";
5
+ readonly surfacePrimary: "SurfaceSurface";
6
+ readonly surfacePrimaryHover: "SurfaceSurfaceHover";
7
+ readonly surfaceSecondary: "SurfaceSurfaceSecondary";
8
+ readonly surfaceTertiary: "SurfaceSurfaceTertiary";
9
+ readonly surfaceQuaternary: "SurfaceSurfaceQuaternary";
10
+ readonly surfaceBrand: "SurfaceSurfaceBrand";
11
+ readonly surfaceBrandHover: "SurfaceSurfaceBrandHover";
12
+ readonly surfaceBrandPressed: "SurfaceSurfaceBrandPressed";
13
+ readonly surfaceSearch: "SurfaceSearchSurface";
14
+ readonly surfaceItemSelected: "SurfaceItemSurfaceSelected";
15
+ readonly surfaceItemHover: "SurfaceItemSurfaceHover";
16
+ readonly surfaceTooltip: "SurfaceTooltipSurface";
17
+ readonly surfaceStatusSuccess: "SurfaceStatusSurfaceSuccess";
18
+ readonly surfaceStatusError: "SurfaceStatusSurfaceError";
19
+ readonly surfaceStatusInProgress: "SurfaceStatusSurfaceInprogress";
20
+ readonly surfaceStatusAccent: "SurfaceStatusSurfaceAccent";
21
+ readonly surfaceIllustrationBoxNeutral: "SurfaceIllustrationSurfaceBoxNeutral";
22
+ readonly surfaceBadgeFolderShared: "SurfaceBadgeFoldersharedSurface";
23
+ readonly surfaceBadgePdf: "SurfaceBadgePdfSurface";
24
+ readonly textPrimary: "TextText";
25
+ readonly textSecondary: "TextTextSecondary";
26
+ readonly textPlaceholder: "TextTextPlaceholder";
27
+ readonly textOnBrand: "TextTextOnBrand";
28
+ readonly textDanger: "TextTextDanger";
29
+ readonly borderDefault: "StrokeStroke";
30
+ readonly borderHover: "StrokeStrokeHover";
31
+ };
32
+ export declare const normalizeDesignTokens: (tokens: DesignTokenInput) => DesignTokenMap;
3
33
  export declare const registerDesignSystem: (definition: DesignSystemDefinition, options?: {
4
34
  setActive?: boolean;
5
- }) => DesignSystemDefinition;
6
- export declare const getDesignSystem: (name: string | null | undefined) => DesignSystemDefinition | null;
35
+ }) => RegisteredDesignSystemDefinition;
36
+ export declare const getDesignSystem: (name: string | null | undefined) => RegisteredDesignSystemDefinition | null;
7
37
  export declare const setActiveDesignSystem: (name: string | null) => void;
8
- export declare const getActiveDesignSystem: () => DesignSystemDefinition | null;
9
- export declare const listDesignSystems: () => DesignSystemDefinition[];
38
+ export declare const getActiveDesignSystem: () => RegisteredDesignSystemDefinition | null;
39
+ export declare const listDesignSystems: () => RegisteredDesignSystemDefinition[];
10
40
  export declare const resolveDesignSystemTokens: (name?: string | null) => DesignTokenMap;
11
- export declare const applyDesignTokens: (target: HTMLElement, tokensOrSystemName?: DesignTokenMap | string | null, options?: ApplyDesignTokensOptions) => string[];
12
- export declare const createDesignTokenStyleText: (tokensOrSystemName?: DesignTokenMap | string | null, options?: ApplyDesignTokensOptions) => string;
41
+ export declare const applyDesignTokens: (target: HTMLElement, tokensOrSystemName?: DesignTokenInput | string | null, options?: ApplyDesignTokensOptions) => string[];
42
+ export declare const createDesignTokenStyleText: (tokensOrSystemName?: DesignTokenInput | string | null, options?: ApplyDesignTokensOptions) => string;
13
43
  export declare const resolveDesignIcon: (iconName: string, systemName?: string | null) => string | null;
14
44
  export declare const resolveDesignIllustration: (illustrationName: string, systemName?: string | null) => string | null;
@@ -2,6 +2,50 @@ export const DESIGN_SYSTEM_CHANGE_EVENT = "boe:design-system-change";
2
2
  const DEFAULT_TOKEN_PREFIX = "--boe-token-";
3
3
  const designSystems = new Map();
4
4
  let activeDesignSystemName = null;
5
+ export const SEMANTIC_TOKEN_ALIASES = {
6
+ fontFamilyBase: "FontFamilyBase",
7
+ surfacePrimary: "SurfaceSurface",
8
+ surfacePrimaryHover: "SurfaceSurfaceHover",
9
+ surfaceSecondary: "SurfaceSurfaceSecondary",
10
+ surfaceTertiary: "SurfaceSurfaceTertiary",
11
+ surfaceQuaternary: "SurfaceSurfaceQuaternary",
12
+ surfaceBrand: "SurfaceSurfaceBrand",
13
+ surfaceBrandHover: "SurfaceSurfaceBrandHover",
14
+ surfaceBrandPressed: "SurfaceSurfaceBrandPressed",
15
+ surfaceSearch: "SurfaceSearchSurface",
16
+ surfaceItemSelected: "SurfaceItemSurfaceSelected",
17
+ surfaceItemHover: "SurfaceItemSurfaceHover",
18
+ surfaceTooltip: "SurfaceTooltipSurface",
19
+ surfaceStatusSuccess: "SurfaceStatusSurfaceSuccess",
20
+ surfaceStatusError: "SurfaceStatusSurfaceError",
21
+ surfaceStatusInProgress: "SurfaceStatusSurfaceInprogress",
22
+ surfaceStatusAccent: "SurfaceStatusSurfaceAccent",
23
+ surfaceIllustrationBoxNeutral: "SurfaceIllustrationSurfaceBoxNeutral",
24
+ surfaceBadgeFolderShared: "SurfaceBadgeFoldersharedSurface",
25
+ surfaceBadgePdf: "SurfaceBadgePdfSurface",
26
+ textPrimary: "TextText",
27
+ textSecondary: "TextTextSecondary",
28
+ textPlaceholder: "TextTextPlaceholder",
29
+ textOnBrand: "TextTextOnBrand",
30
+ textDanger: "TextTextDanger",
31
+ borderDefault: "StrokeStroke",
32
+ borderHover: "StrokeStrokeHover",
33
+ };
34
+ export const normalizeDesignTokens = (tokens) => {
35
+ const normalized = {};
36
+ const sourceNames = new Map();
37
+ for (const [tokenName, tokenValue] of Object.entries(tokens)) {
38
+ const canonicalName = SEMANTIC_TOKEN_ALIASES[tokenName] ??
39
+ tokenName;
40
+ const existingSourceName = sourceNames.get(canonicalName);
41
+ if (existingSourceName && existingSourceName !== tokenName) {
42
+ throw new Error(`Design token "${canonicalName}" was provided as both "${existingSourceName}" and "${tokenName}"`);
43
+ }
44
+ normalized[canonicalName] = tokenValue;
45
+ sourceNames.set(canonicalName, tokenName);
46
+ }
47
+ return normalized;
48
+ };
5
49
  const toKebabCase = (value) => value
6
50
  .replace(/^--/, "")
7
51
  .replace(/([a-z0-9])([A-Z])/g, "$1-$2")
@@ -29,12 +73,18 @@ const renderAsset = (asset, context) => {
29
73
  return typeof asset === "function" ? asset(context) : asset;
30
74
  };
31
75
  export const registerDesignSystem = (definition, options = {}) => {
32
- designSystems.set(definition.name, definition);
76
+ const normalizedDefinition = {
77
+ ...definition,
78
+ tokens: definition.tokens
79
+ ? normalizeDesignTokens(definition.tokens)
80
+ : undefined,
81
+ };
82
+ designSystems.set(definition.name, normalizedDefinition);
33
83
  if (options.setActive) {
34
84
  activeDesignSystemName = definition.name;
35
85
  emitDesignSystemChange();
36
86
  }
37
- return definition;
87
+ return normalizedDefinition;
38
88
  };
39
89
  export const getDesignSystem = (name) => {
40
90
  if (!name) {
@@ -53,13 +103,13 @@ export const getActiveDesignSystem = () => activeDesignSystemName ? getDesignSys
53
103
  export const listDesignSystems = () => Array.from(designSystems.values());
54
104
  export const resolveDesignSystemTokens = (name) => {
55
105
  const system = name === undefined ? getActiveDesignSystem() : getDesignSystem(name);
56
- return system?.tokens ?? {};
106
+ return system?.tokens ? normalizeDesignTokens(system.tokens) : {};
57
107
  };
58
108
  export const applyDesignTokens = (target, tokensOrSystemName, options = {}) => {
59
109
  const prefix = options.prefix ?? DEFAULT_TOKEN_PREFIX;
60
110
  const tokens = typeof tokensOrSystemName === "string" || tokensOrSystemName == null
61
111
  ? resolveDesignSystemTokens(tokensOrSystemName)
62
- : tokensOrSystemName;
112
+ : normalizeDesignTokens(tokensOrSystemName);
63
113
  const appliedVariables = [];
64
114
  for (const [tokenName, tokenValue] of Object.entries(tokens)) {
65
115
  const variableName = resolveTokenVariableName(tokenName, prefix);
@@ -73,7 +123,7 @@ export const createDesignTokenStyleText = (tokensOrSystemName, options = {}) =>
73
123
  const selector = options.selector ?? ":root";
74
124
  const tokens = typeof tokensOrSystemName === "string" || tokensOrSystemName == null
75
125
  ? resolveDesignSystemTokens(tokensOrSystemName)
76
- : tokensOrSystemName;
126
+ : normalizeDesignTokens(tokensOrSystemName);
77
127
  const declarations = Object.entries(tokens)
78
128
  .map(([tokenName, tokenValue]) => ` ${resolveTokenVariableName(tokenName, prefix)}: ${tokenValue};`)
79
129
  .join("\n");
@@ -1,4 +1,38 @@
1
1
  export type DesignTokenMap = Record<string, string>;
2
+ /**
3
+ * Preferred authoring names for the semantic tokens consumed by the component
4
+ * catalog. The registry translates these names to Box-compatible token keys.
5
+ */
6
+ export interface SemanticDesignTokenMap {
7
+ fontFamilyBase?: string;
8
+ surfacePrimary?: string;
9
+ surfacePrimaryHover?: string;
10
+ surfaceSecondary?: string;
11
+ surfaceTertiary?: string;
12
+ surfaceQuaternary?: string;
13
+ surfaceBrand?: string;
14
+ surfaceBrandHover?: string;
15
+ surfaceBrandPressed?: string;
16
+ surfaceSearch?: string;
17
+ surfaceItemSelected?: string;
18
+ surfaceItemHover?: string;
19
+ surfaceTooltip?: string;
20
+ surfaceStatusSuccess?: string;
21
+ surfaceStatusError?: string;
22
+ surfaceStatusInProgress?: string;
23
+ surfaceStatusAccent?: string;
24
+ surfaceIllustrationBoxNeutral?: string;
25
+ surfaceBadgeFolderShared?: string;
26
+ surfaceBadgePdf?: string;
27
+ textPrimary?: string;
28
+ textSecondary?: string;
29
+ textPlaceholder?: string;
30
+ textOnBrand?: string;
31
+ textDanger?: string;
32
+ borderDefault?: string;
33
+ borderHover?: string;
34
+ }
35
+ export type DesignTokenInput = DesignTokenMap | SemanticDesignTokenMap;
2
36
  export interface DesignAssetRenderContext {
3
37
  kind: "icon" | "illustration";
4
38
  name: string;
@@ -6,10 +40,13 @@ export interface DesignAssetRenderContext {
6
40
  export type DesignAssetRenderer = string | ((context: DesignAssetRenderContext) => string);
7
41
  export interface DesignSystemDefinition {
8
42
  name: string;
9
- tokens?: DesignTokenMap;
43
+ tokens?: DesignTokenInput;
10
44
  icons?: Record<string, DesignAssetRenderer>;
11
45
  illustrations?: Record<string, DesignAssetRenderer>;
12
46
  }
47
+ export interface RegisteredDesignSystemDefinition extends Omit<DesignSystemDefinition, "tokens"> {
48
+ tokens?: DesignTokenMap;
49
+ }
13
50
  export interface ApplyDesignTokensOptions {
14
51
  prefix?: string;
15
52
  selector?: string;
package/dist/index.d.ts CHANGED
@@ -1,8 +1,12 @@
1
1
  export { Controller, TypedEventEmitter } from "./core/index.js";
2
2
  export type { EventMap, Unsubscribe } from "./core/index.js";
3
3
  export type { JsonSchema } from "./core/json-schema.js";
4
- export { DESIGN_SYSTEM_CHANGE_EVENT, applyDesignTokens, boxDarkDesignSystem, boxDefaultDesignSystem, createDesignTokenStyleText, getActiveDesignSystem, getDesignSystem, listDesignSystems, registerBoxDarkDesignSystem, registerBoxDefaultDesignSystem, registerDesignSystem, resolveDesignIcon, resolveDesignIllustration, resolveDesignSystemTokens, setActiveDesignSystem, } from "./foundations/tokens/index.js";
5
- export type { ApplyDesignTokensOptions, DesignAssetRenderContext, DesignAssetRenderer, DesignSystemDefinition, DesignTokenMap, } from "./foundations/tokens/index.js";
4
+ export { DESIGN_SYSTEM_CHANGE_EVENT, SEMANTIC_TOKEN_ALIASES, applyDesignTokens, boxDarkDesignSystem, boxDefaultDesignSystem, createDesignTokenStyleText, getActiveDesignSystem, getDesignSystem, listDesignSystems, normalizeDesignTokens, registerBoxDarkDesignSystem, registerBoxDefaultDesignSystem, registerDesignSystem, resolveDesignIcon, resolveDesignIllustration, resolveDesignSystemTokens, setActiveDesignSystem, } from "./foundations/tokens/index.js";
5
+ export type { ApplyDesignTokensOptions, DesignAssetRenderContext, DesignAssetRenderer, DesignSystemDefinition, DesignTokenInput, DesignTokenMap, RegisteredDesignSystemDefinition, SemanticDesignTokenMap, } from "./foundations/tokens/index.js";
6
+ export { DARK_MODE_MEDIA_QUERY, DEFAULT_THEME_STORAGE_KEY, THEME_CHANGE_EVENT, createThemeController, createThemeInitializationScript, } from "./foundations/theming/index.js";
7
+ export type { ResolvedTheme, ThemeChangeDetail, ThemeController, ThemeControllerOptions, ThemeInitializationScriptOptions, ThemePreference, } from "./foundations/theming/index.js";
8
+ export { DESIGN_PROFILE_CHANGE_EVENT, DESIGN_PROFILE_VARIABLES, DEFAULT_DESIGN_PROFILE_STORAGE_KEY, applyDesignProfile, boxDefaultDesignProfile, compactNeutralDesignProfile, createDesignProfileController, createDesignProfileStyleText, getDesignProfile, listDesignProfiles, registerBuiltInDesignProfiles, registerDesignProfile, resolveDesignProfileProperties, } from "./foundations/profiles/index.js";
9
+ export type { ApplyDesignProfileOptions, DesignProfileChangeDetail, DesignProfileController, DesignProfileControllerOptions, DesignProfileDefinition, DesignProfileDensity, DesignProfileElevation, DesignProfileMotion, DesignProfileRadius, DesignProfileSpacing, DesignProfileTypography, } from "./foundations/profiles/index.js";
6
10
  export { boxIconography, boxIconographyAliases } from "./foundations/icons/index.js";
7
11
  export { anchorFloating, parsePlacement, resolvePosition, trackAnchor, } from "./foundations/overlay/index.js";
8
12
  export type { OverlayAlign, OverlayPlacement, OverlaySide, PositionOptions, PositionResult, } from "./foundations/overlay/index.js";
@@ -80,6 +84,7 @@ export * from "./components/layout/split-view.js";
80
84
  export * from "./components/overlays/context-menu.js";
81
85
  export * from "./components/overlays/dialog.js";
82
86
  export * from "./components/overlays/drawer.js";
87
+ export * from "./components/overlays/guide-tooltip.js";
83
88
  export * from "./components/overlays/popover.js";
84
89
  export * from "./components/overlays/tooltip.js";
85
90
  export * from "./patterns/content-explorer/index.js";
package/dist/index.js CHANGED
@@ -1,7 +1,9 @@
1
1
  // Core runtime
2
2
  export { Controller, TypedEventEmitter } from "./core/index.js";
3
3
  // Foundations
4
- export { DESIGN_SYSTEM_CHANGE_EVENT, applyDesignTokens, boxDarkDesignSystem, boxDefaultDesignSystem, createDesignTokenStyleText, getActiveDesignSystem, getDesignSystem, listDesignSystems, registerBoxDarkDesignSystem, registerBoxDefaultDesignSystem, registerDesignSystem, resolveDesignIcon, resolveDesignIllustration, resolveDesignSystemTokens, setActiveDesignSystem, } from "./foundations/tokens/index.js";
4
+ export { DESIGN_SYSTEM_CHANGE_EVENT, SEMANTIC_TOKEN_ALIASES, applyDesignTokens, boxDarkDesignSystem, boxDefaultDesignSystem, createDesignTokenStyleText, getActiveDesignSystem, getDesignSystem, listDesignSystems, normalizeDesignTokens, registerBoxDarkDesignSystem, registerBoxDefaultDesignSystem, registerDesignSystem, resolveDesignIcon, resolveDesignIllustration, resolveDesignSystemTokens, setActiveDesignSystem, } from "./foundations/tokens/index.js";
5
+ export { DARK_MODE_MEDIA_QUERY, DEFAULT_THEME_STORAGE_KEY, THEME_CHANGE_EVENT, createThemeController, createThemeInitializationScript, } from "./foundations/theming/index.js";
6
+ export { DESIGN_PROFILE_CHANGE_EVENT, DESIGN_PROFILE_VARIABLES, DEFAULT_DESIGN_PROFILE_STORAGE_KEY, applyDesignProfile, boxDefaultDesignProfile, compactNeutralDesignProfile, createDesignProfileController, createDesignProfileStyleText, getDesignProfile, listDesignProfiles, registerBuiltInDesignProfiles, registerDesignProfile, resolveDesignProfileProperties, } from "./foundations/profiles/index.js";
5
7
  export { boxIconography, boxIconographyAliases } from "./foundations/icons/index.js";
6
8
  // Foundations: viewport-aware overlay positioning (for building custom overlays)
7
9
  export { anchorFloating, parsePlacement, resolvePosition, trackAnchor, } from "./foundations/overlay/index.js";
@@ -89,6 +91,7 @@ export * from "./components/layout/split-view.js";
89
91
  export * from "./components/overlays/context-menu.js";
90
92
  export * from "./components/overlays/dialog.js";
91
93
  export * from "./components/overlays/drawer.js";
94
+ export * from "./components/overlays/guide-tooltip.js";
92
95
  export * from "./components/overlays/popover.js";
93
96
  export * from "./components/overlays/tooltip.js";
94
97
  // Patterns: content explorer (headless blocks, contracts, transport, adapters)
@@ -1,6 +1,7 @@
1
1
  import { ContentExplorerController } from "../controller.js";
2
2
  import { BaseElement } from "../../../core/index.js";
3
- export declare class BoxExplorerActionMenuElement extends BaseElement {
3
+ export declare class ExplorerActionMenu extends BaseElement {
4
+ static readonly tagName: string;
4
5
  private controllerValue;
5
6
  private itemIdValue;
6
7
  private open;
@@ -21,4 +22,3 @@ export declare class BoxExplorerActionMenuElement extends BaseElement {
21
22
  protected setupListeners(): void;
22
23
  protected update(): void;
23
24
  }
24
- export declare const defineBoxExplorerActionMenuElement: (tagName?: string) => typeof BoxExplorerActionMenuElement;
@@ -114,7 +114,8 @@ const elementStyles = `
114
114
 
115
115
  ${boeNeutralInteractiveStyles('[part="menu-item"]')}
116
116
  `;
117
- export class BoxExplorerActionMenuElement extends BaseElement {
117
+ export class ExplorerActionMenu extends BaseElement {
118
+ static tagName = DEFAULT_TAG_NAME;
118
119
  controllerValue = null;
119
120
  itemIdValue = null;
120
121
  open = false;
@@ -302,11 +303,4 @@ export class BoxExplorerActionMenuElement extends BaseElement {
302
303
  }
303
304
  }
304
305
  }
305
- export const defineBoxExplorerActionMenuElement = (tagName = DEFAULT_TAG_NAME) => {
306
- const existingElement = customElements.get(tagName);
307
- if (existingElement) {
308
- return existingElement;
309
- }
310
- customElements.define(tagName, BoxExplorerActionMenuElement);
311
- return BoxExplorerActionMenuElement;
312
- };
306
+ ExplorerActionMenu.register();
@@ -1,6 +1,7 @@
1
1
  import { ContentExplorerController } from "../controller.js";
2
2
  import { BaseElement } from "../../../core/index.js";
3
- export declare class BoxExplorerBreadcrumbsElement extends BaseElement {
3
+ export declare class ExplorerBreadcrumbs extends BaseElement {
4
+ static readonly tagName: string;
4
5
  private controllerValue;
5
6
  private unsubscribeFns;
6
7
  get controller(): ContentExplorerController | null;
@@ -12,4 +13,3 @@ export declare class BoxExplorerBreadcrumbsElement extends BaseElement {
12
13
  protected renderTemplate(): void;
13
14
  protected update(): void;
14
15
  }
15
- export declare const defineBoxExplorerBreadcrumbsElement: (tagName?: string) => typeof BoxExplorerBreadcrumbsElement;
@@ -72,7 +72,8 @@ const elementStyles = `
72
72
  font-size: 0.9rem;
73
73
  }
74
74
  `;
75
- export class BoxExplorerBreadcrumbsElement extends BaseElement {
75
+ export class ExplorerBreadcrumbs extends BaseElement {
76
+ static tagName = DEFAULT_TAG_NAME;
76
77
  controllerValue = null;
77
78
  unsubscribeFns = [];
78
79
  get controller() {
@@ -151,11 +152,4 @@ export class BoxExplorerBreadcrumbsElement extends BaseElement {
151
152
  });
152
153
  }
153
154
  }
154
- export const defineBoxExplorerBreadcrumbsElement = (tagName = DEFAULT_TAG_NAME) => {
155
- const existingElement = customElements.get(tagName);
156
- if (existingElement) {
157
- return existingElement;
158
- }
159
- customElements.define(tagName, BoxExplorerBreadcrumbsElement);
160
- return BoxExplorerBreadcrumbsElement;
161
- };
155
+ ExplorerBreadcrumbs.register();
@@ -1,4 +1,4 @@
1
- import { BoxExplorerListElement } from "./list.js";
2
- export declare class BoxExplorerItemsElement extends BoxExplorerListElement {
1
+ import { ExplorerList } from "./list.js";
2
+ export declare class ExplorerItems extends ExplorerList {
3
+ static readonly tagName: string;
3
4
  }
4
- export declare const defineBoxExplorerItemsElement: (tagName?: string) => typeof BoxExplorerItemsElement;
@@ -1,12 +1,6 @@
1
- import { BoxExplorerListElement } from "./list.js";
1
+ import { ExplorerList } from "./list.js";
2
2
  const DEFAULT_TAG_NAME = "box-explorer-items";
3
- export class BoxExplorerItemsElement extends BoxExplorerListElement {
3
+ export class ExplorerItems extends ExplorerList {
4
+ static tagName = DEFAULT_TAG_NAME;
4
5
  }
5
- export const defineBoxExplorerItemsElement = (tagName = DEFAULT_TAG_NAME) => {
6
- const existingElement = customElements.get(tagName);
7
- if (existingElement) {
8
- return existingElement;
9
- }
10
- customElements.define(tagName, BoxExplorerItemsElement);
11
- return BoxExplorerItemsElement;
12
- };
6
+ ExplorerItems.register();
@@ -1,7 +1,8 @@
1
1
  import { ContentExplorerController } from "../controller.js";
2
2
  import { resolveExplorerItemGesture } from "../types.js";
3
3
  import { BaseElement } from "../../../core/index.js";
4
- export declare class BoxExplorerListElement extends BaseElement {
4
+ export declare class ExplorerList extends BaseElement {
5
+ static readonly tagName: string;
5
6
  static get observedAttributes(): string[];
6
7
  private controllerValue;
7
8
  private focusItemId;
@@ -25,4 +26,3 @@ export declare class BoxExplorerListElement extends BaseElement {
25
26
  private patchFocusAndSelection;
26
27
  protected update(): void;
27
28
  }
28
- export declare const defineBoxExplorerListElement: (tagName?: string) => typeof BoxExplorerListElement;
@@ -191,7 +191,8 @@ const elementStyles = `
191
191
 
192
192
  ${boeNeutralInteractiveStyles('[part="load-more"]')}
193
193
  `;
194
- export class BoxExplorerListElement extends BaseElement {
194
+ export class ExplorerList extends BaseElement {
195
+ static tagName = DEFAULT_TAG_NAME;
195
196
  static get observedAttributes() {
196
197
  return ["item-gesture"];
197
198
  }
@@ -517,11 +518,4 @@ export class BoxExplorerListElement extends BaseElement {
517
518
  this.patchFocusAndSelection();
518
519
  }
519
520
  }
520
- export const defineBoxExplorerListElement = (tagName = DEFAULT_TAG_NAME) => {
521
- const existingElement = customElements.get(tagName);
522
- if (existingElement) {
523
- return existingElement;
524
- }
525
- customElements.define(tagName, BoxExplorerListElement);
526
- return BoxExplorerListElement;
527
- };
521
+ ExplorerList.register();
@@ -1,7 +1,8 @@
1
1
  import { ContentExplorerController } from "../controller.js";
2
2
  import { resolveExplorerItemGesture } from "../types.js";
3
3
  import { BaseElement } from "../../../core/index.js";
4
- export declare class BoxExplorerTableElement extends BaseElement {
4
+ export declare class ExplorerTable extends BaseElement {
5
+ static readonly tagName: string;
5
6
  static get observedAttributes(): string[];
6
7
  private controllerValue;
7
8
  private unsubscribeFns;
@@ -20,4 +21,3 @@ export declare class BoxExplorerTableElement extends BaseElement {
20
21
  private patchSelection;
21
22
  protected update(): void;
22
23
  }
23
- export declare const defineBoxExplorerTableElement: (tagName?: string) => typeof BoxExplorerTableElement;