@brightspot/ui 6.3.5 → 6.4.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 (142) hide show
  1. package/README.md +2 -0
  2. package/dist/components/popover/Popover.d.ts +21 -0
  3. package/dist/components/popover/Popover.d.ts.map +1 -1
  4. package/dist/components/popover/Popover.js +85 -0
  5. package/dist/components/popover/Popover.js.map +1 -1
  6. package/dist/components/tabs/Tab.d.ts +1 -1
  7. package/dist/components/tabs/Tab.js +1 -1
  8. package/dist/custom-elements.json +14 -1
  9. package/dist/storybook/assets/{ActionBar.stories-CgkvHW27.js → ActionBar.stories-CyrWbZkU.js} +1 -1
  10. package/dist/storybook/assets/{ActionItem.stories-CyxwhrvR.js → ActionItem.stories-D289PqhK.js} +1 -1
  11. package/dist/storybook/assets/{AiSparkle.stories-h2LSw10e.js → AiSparkle.stories-Dej2Wktc.js} +1 -1
  12. package/dist/storybook/assets/{Avatar.stories-CQ3eFTbI.js → Avatar.stories-DGUhUkwq.js} +1 -1
  13. package/dist/storybook/assets/{AvatarGroup.stories-CIyZOd7R.js → AvatarGroup.stories-CPwRaMIK.js} +1 -1
  14. package/dist/storybook/assets/{Badge.stories-CwPkYUuY.js → Badge.stories-0KzitC2n.js} +1 -1
  15. package/dist/storybook/assets/{Banner.stories-B7AhWymc.js → Banner.stories-DNtqnXAp.js} +1 -1
  16. package/dist/storybook/assets/{Button-fLz-Mqji.js → Button-CWHtTXwM.js} +1 -1
  17. package/dist/storybook/assets/{Button.stories-Bj_cB5Tr.js → Button.stories-Bi-MajOM.js} +1 -1
  18. package/dist/storybook/assets/{ButtonGroup.stories-DMAr8q3A.js → ButtonGroup.stories-DRVCaM3T.js} +1 -1
  19. package/dist/storybook/assets/{Card.stories-CouVkvTr.js → Card.stories-Ca21MUf2.js} +1 -1
  20. package/dist/storybook/assets/{Celebrate.stories-Cai7aITx.js → Celebrate.stories-d4ouDVSf.js} +1 -1
  21. package/dist/storybook/assets/{Checkbox.stories-BTzuHih7.js → Checkbox.stories-DGYMCoPL.js} +1 -1
  22. package/dist/storybook/assets/{CircularProgress.stories-DwiMDCrW.js → CircularProgress.stories-TLUKn59S.js} +1 -1
  23. package/dist/storybook/assets/{ClipboardMixin.stories-BTzKKsAG.js → ClipboardMixin.stories-D4sLLX3A.js} +1 -1
  24. package/dist/storybook/assets/{Color-6BZIO3FS-z5x4axZs.js → Color-6BZIO3FS-DasxsVys.js} +1 -1
  25. package/dist/storybook/assets/{Colors.stories-LjQN3QJP.js → Colors.stories-BcaxhrWi.js} +1 -1
  26. package/dist/storybook/assets/{CombinedEffects.stories-CcWkxBPD.js → CombinedEffects.stories-Da1vPYog.js} +1 -1
  27. package/dist/storybook/assets/{ComponentStatesMixin-6JmalSeW.js → ComponentStatesMixin-C5-EArF-.js} +1 -1
  28. package/dist/storybook/assets/{ComponentStatesMixin.stories-wr7wl9D5.js → ComponentStatesMixin.stories-DPp1pnlh.js} +1 -1
  29. package/dist/storybook/assets/{CopyToClipboard.stories-CBL_GlzJ.js → CopyToClipboard.stories-CrYOAXIE.js} +1 -1
  30. package/dist/storybook/assets/{Debounce.stories-DDW0347e.js → Debounce.stories-OHpSSOWP.js} +1 -1
  31. package/dist/storybook/assets/{DocsRenderer-LL677BLK-LHrG4h5r.js → DocsRenderer-LL677BLK-BBjqnKJz.js} +3 -3
  32. package/dist/storybook/assets/{Dropdown.stories-BixGKdVC.js → Dropdown.stories-Ca_3OzYk.js} +1 -1
  33. package/dist/storybook/assets/{EmptyState.stories-DYCizkT5.js → EmptyState.stories-IJOBvkeQ.js} +1 -1
  34. package/dist/storybook/assets/{EscaAvatar.stories-IV0FybUu.js → EscaAvatar.stories-Ca5mrHK5.js} +1 -1
  35. package/dist/storybook/assets/{Events.stories-9X1B5LFU.js → Events.stories-mk3o4H-1.js} +1 -1
  36. package/dist/storybook/assets/{Heading.stories-BWFKyeYP.js → Heading.stories-BCmCdDGL.js} +1 -1
  37. package/dist/storybook/assets/{HueRipple.stories-KJySD4yc.js → HueRipple.stories-DFtimmD-.js} +1 -1
  38. package/dist/storybook/assets/{Icon.stories-n4-_RBwe.js → Icon.stories-CfsBM1vA.js} +1 -1
  39. package/dist/storybook/assets/{IconButton.stories--cc9Az0q.js → IconButton.stories-BqMbwr3s.js} +1 -1
  40. package/dist/storybook/assets/{LinearProgress.stories-CXISMQqr.js → LinearProgress.stories-BWdemzi0.js} +1 -1
  41. package/dist/storybook/assets/{Message.stories-DCgZ9H2r.js → Message.stories-Z_H9PmGg.js} +1 -1
  42. package/dist/storybook/assets/{OnFindMixin.stories-DwYEl4q4.js → OnFindMixin.stories-DmCtF_Py.js} +1 -1
  43. package/dist/storybook/assets/{Pagination.stories-B8AqV3jI.js → Pagination.stories-BbiH-XdZ.js} +1 -1
  44. package/dist/storybook/assets/{Popover.stories-Dj8TUysk.js → Popover.stories-bxWb2l8c.js} +97 -14
  45. package/dist/storybook/assets/{ReadyMixin-B1y8EBLz.js → ReadyMixin-DehOcbYB.js} +1 -1
  46. package/dist/storybook/assets/{RovingTabindexMixin.stories-BTYV78Cy.js → RovingTabindexMixin.stories-PDi3Gbmt.js} +1 -1
  47. package/dist/storybook/assets/{Rtc.stories-CiQ4OgEf.js → Rtc.stories-fVPUs7VO.js} +1 -1
  48. package/dist/storybook/assets/{ScrollShadow.stories-BRpbl9WU.js → ScrollShadow.stories-D7MTe49h.js} +1 -1
  49. package/dist/storybook/assets/{Switch.stories-Dfw56-LB.js → Switch.stories-_Xgp_9V4.js} +1 -1
  50. package/dist/storybook/assets/{Tab.stories-DCIPSPwr.js → Tab.stories-DgO_oZX0.js} +4 -4
  51. package/dist/storybook/assets/{Tabs.stories-DrT2D2oW.js → Tabs.stories-ChN1szFL.js} +1 -1
  52. package/dist/storybook/assets/{Throttle.stories-B5Y8K9s3.js → Throttle.stories-ClFkiAMe.js} +1 -1
  53. package/dist/storybook/assets/{Tooltip.stories-CUjm8cuW.js → Tooltip.stories-BHOdZEw2.js} +1 -1
  54. package/dist/storybook/assets/{Upload.stories-Dt7V8qIe.js → Upload.stories-BLs0X2F6.js} +1 -1
  55. package/dist/storybook/assets/{UploadItem.stories-DSXxGs8M.js → UploadItem.stories-CHCpPL7t.js} +1 -1
  56. package/dist/storybook/assets/{Welcome.stories-BDFQb8oF.js → Welcome.stories-DLoiQCnZ.js} +1 -1
  57. package/dist/storybook/assets/{Widget.stories-CQnE1dST.js → Widget.stories-Bk4jjx7Q.js} +1 -1
  58. package/dist/storybook/assets/{WithTooltip-65CFNBJE-D1OYJPzp.js → WithTooltip-65CFNBJE-Ckgk7wzk.js} +1 -1
  59. package/dist/storybook/assets/{blocks-Z0quNc1U.js → blocks-wSKOBuKH.js} +5 -5
  60. package/dist/storybook/assets/{formatter-EIJCOSYU-DwWzDvJC.js → formatter-EIJCOSYU-DEpJ5Gq0.js} +1 -1
  61. package/dist/storybook/assets/if-defined-DphVHb7j.js +1 -0
  62. package/dist/storybook/assets/{iframe-WTEmYHJj.js → iframe-BSHPpSig.js} +4 -4
  63. package/dist/storybook/assets/iframe-D7jBrFjV.css +1 -0
  64. package/dist/storybook/assets/{index-BvPCa7_B.js → index-Cn8vvE6a.js} +1 -1
  65. package/dist/storybook/assets/{onFind-CqIRRMTv.js → onFind-DJOHkvQ2.js} +1 -1
  66. package/dist/storybook/assets/{onFind.stories-C4PPQTaQ.js → onFind.stories-CTmXCV_g.js} +1 -1
  67. package/dist/storybook/assets/{onRemove.stories-BGFCh6DN.js → onRemove.stories-r7-2gQn3.js} +1 -1
  68. package/dist/storybook/assets/{onVisible.stories-4ni7syfJ.js → onVisible.stories-B_Lx-0SL.js} +1 -1
  69. package/dist/storybook/assets/{style-map-BhvFBtuB.js → style-map-uSz4USKK.js} +1 -1
  70. package/dist/storybook/assets/{syntaxhighlighter-ED5Y7EFY-D_cJwnoJ.js → syntaxhighlighter-ED5Y7EFY-D36nxrU2.js} +1 -1
  71. package/dist/storybook/iframe.html +2 -2
  72. package/dist/storybook/index.json +1 -1
  73. package/dist/storybook/project.json +1 -1
  74. package/dist/tailwind-plugin-badge.js +2 -2
  75. package/dist/tailwind-plugin-badge.ts +3 -3
  76. package/dist/tailwind-plugin-button-group.js +50 -27
  77. package/dist/tailwind-plugin-button-group.js.map +1 -1
  78. package/dist/tailwind-plugin-button-group.ts +61 -33
  79. package/dist/tailwind-plugin-button.js +15 -5
  80. package/dist/tailwind-plugin-button.js.map +1 -1
  81. package/dist/tailwind-plugin-button.ts +16 -5
  82. package/dist/tailwind-plugin-pagination.js +4 -1
  83. package/dist/tailwind-plugin-pagination.js.map +1 -1
  84. package/dist/tailwind-plugin-pagination.ts +4 -1
  85. package/dist/tailwind-plugin-popover.js +90 -23
  86. package/dist/tailwind-plugin-popover.js.map +1 -1
  87. package/dist/tailwind-plugin-popover.ts +95 -25
  88. package/dist/tailwind-plugin-tooltip.js +3 -0
  89. package/dist/tailwind-plugin-tooltip.js.map +1 -1
  90. package/dist/tailwind-plugin-tooltip.ts +3 -0
  91. package/docs/components/ActionBar.md +9 -8
  92. package/docs/components/Avatar.md +20 -19
  93. package/docs/components/AvatarGroup.md +5 -4
  94. package/docs/components/Badge.md +8 -7
  95. package/docs/components/ButtonGroup.md +12 -11
  96. package/docs/components/Icon.md +8 -7
  97. package/docs/components/Pagination.md +19 -18
  98. package/docs/components/Popover.md +21 -17
  99. package/docs/components/Tab.md +13 -12
  100. package/docs/components/Tabs.md +13 -12
  101. package/package.json +1 -1
  102. package/src/legacy/tool-ui/src/Admin.css +10 -1
  103. package/src/legacy/tool-ui/src/CodeMirror.css +4 -3
  104. package/src/legacy/tool-ui/src/ContentInputGroup.css +86 -62
  105. package/src/legacy/tool-ui/src/ContentInputGroup.ts +33 -0
  106. package/src/legacy/tool-ui/src/Conversation.ts +3 -0
  107. package/src/legacy/tool-ui/src/Entry.ts +1 -0
  108. package/src/legacy/tool-ui/src/Global.d.ts +3 -0
  109. package/src/legacy/tool-ui/src/LocationMap.css +106 -2
  110. package/src/legacy/tool-ui/src/MenuView.css +1 -2
  111. package/src/legacy/tool-ui/src/NewTabLinks.ts +25 -0
  112. package/src/legacy/tool-ui/src/Notification.css +20 -2
  113. package/src/legacy/tool-ui/src/Notifications.ts +5 -0
  114. package/src/legacy/tool-ui/src/RepeatableContentInputGroup.css +28 -21
  115. package/src/legacy/tool-ui/src/RepeatableContentSelector.css +50 -50
  116. package/src/legacy/tool-ui/src/SearchResult.css +5 -0
  117. package/src/legacy/tool-ui/src/Suggestions.css +1 -1
  118. package/src/legacy/tool-ui/src/form/CodeInput/CodeMirror.ts +0 -1
  119. package/src/legacy/tool-ui/src/main/webapp/dist/130.8cc1870de35c48fb16bc.js +1 -0
  120. package/src/legacy/tool-ui/src/main/webapp/dist/CodeMirror.deeefe0da1691332b8d9.js +1 -0
  121. package/src/legacy/tool-ui/src/main/webapp/dist/{RTEProseMirror.420477026fe7508c83cf.js → RTEProseMirror.3ab7e02ee7ea42af94e5.js} +6 -6
  122. package/src/legacy/tool-ui/src/main/webapp/dist/iframeResizer.contentWindow.min.ea954ff5c2278da22eb4.js +2 -0
  123. package/src/legacy/tool-ui/src/main/webapp/dist/iframeResizer.contentWindow.min.ea954ff5c2278da22eb4.js.LICENSE.txt +7 -0
  124. package/src/legacy/tool-ui/src/main/webapp/dist/lucide.a0ab0ebd23916ff7c28c.woff2 +0 -0
  125. package/src/legacy/tool-ui/src/main/webapp/dist/{v4.f3d988f6f7e664a8ac1f.js → v4.77773a9500063c0e2e37.js} +6 -6
  126. package/src/legacy/tool-ui/src/main/webapp/dist/v4.d48271241dbf3eecc14e.css +3 -0
  127. package/src/legacy/tool-ui/src/main/webapp/dist/v5.78c144a01e1cf543642b.css +5 -0
  128. package/src/legacy/tool-ui/src/main/webapp/dist/{v5.9aca525c9803b3173f73.js → v5.9f309b0ce98df4565933.js} +6 -6
  129. package/src/legacy/tool-ui/src/main/webapp/v4/ContentEdit.less +1 -0
  130. package/src/legacy/tool-ui/src/main/webapp/v4/Entry.less +7 -0
  131. package/src/legacy/tool-ui/src/main/webapp/v4/SearchResult.less +7 -0
  132. package/src/legacy/tool-ui/src/v5.css +9 -0
  133. package/src/legacy/tool-ui/src/v5.ts +13 -0
  134. package/dist/storybook/assets/if-defined-Dl8MuiCE.js +0 -1
  135. package/dist/storybook/assets/iframe-HDp5BmO_.css +0 -1
  136. package/src/legacy/tool-ui/src/main/webapp/dist/2825.c1342ac2662d11fd4125.js +0 -1
  137. package/src/legacy/tool-ui/src/main/webapp/dist/CodeMirror.5ddffe054374f883d6f8.js +0 -1
  138. package/src/legacy/tool-ui/src/main/webapp/dist/v4.05d6a78ae435b930dd53.css +0 -3
  139. package/src/legacy/tool-ui/src/main/webapp/dist/v5.95b7459d6c50c61b6480.css +0 -5
  140. /package/src/legacy/tool-ui/src/main/webapp/dist/{RTEProseMirror.420477026fe7508c83cf.js.LICENSE.txt → RTEProseMirror.3ab7e02ee7ea42af94e5.js.LICENSE.txt} +0 -0
  141. /package/src/legacy/tool-ui/src/main/webapp/dist/{v4.f3d988f6f7e664a8ac1f.js.LICENSE.txt → v4.77773a9500063c0e2e37.js.LICENSE.txt} +0 -0
  142. /package/src/legacy/tool-ui/src/main/webapp/dist/{v5.9aca525c9803b3173f73.js.LICENSE.txt → v5.9f309b0ce98df4565933.js.LICENSE.txt} +0 -0
@@ -18,25 +18,26 @@
18
18
 
19
19
  ### Fields
20
20
 
21
- | Name | Privacy | Type | Default | Description | Inherited From |
22
- | ------------------ | ------- | ----------------------------------------------- | --------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------- |
23
- | `src` | | `string` | `''` | Image source URL | |
24
- | `alt` | | `string` | `''` | Alt text for the image | |
25
- | `fallback` | | `string` | `''` | Fallback text (typically user initials) | |
26
- | `size` | | `'xs' \| 'sm' \| 'md' \| 'lg' \| 'xl' \| 'xxl'` | `'md'` | Size variant.
- 'xs': Extra small (1.5rem)
- 'sm': Small (2.25rem)
- 'md': Medium (2.5rem) - default
- 'lg': Large (3rem)
- 'xl': Extra large (3.5rem)
- 'xxl': Extra extra large (4rem) | |
27
- | `tooltip` | | `string` | `''` | Tooltip text content. Set to empty string to remove the tooltip. | TooltipMixin |
28
- | `tooltipPosition` | | `'top' \| 'bottom' \| 'left' \| 'right'` | `'top'` | Position relative to the host element. Auto-flips when constrained by the viewport. | TooltipMixin |
29
- | `tooltipDelay` | | `number` | `300` | Show delay in milliseconds (hover trigger only). | TooltipMixin |
30
- | `tooltipOffset` | | `TooltipOffset \| null` | `null` | Gap between host and tooltip (sm=4px, md=8px, lg=12px, xl=16px). | TooltipMixin |
31
- | `tooltipNoArrow` | | `boolean` | `false` | Hide the arrow pseudo-element. | TooltipMixin |
32
- | `tooltipTrigger` | | `string` | `'hover focus'` | Space-separated trigger types: 'hover', 'focus', 'click'. | TooltipMixin |
33
- | `_onMouseLeave` | private | | | | TooltipMixin |
34
- | `_onFocusIn` | private | | | | TooltipMixin |
35
- | `_onFocusOut` | private | | | | TooltipMixin |
36
- | `_onClick` | private | | | | TooltipMixin |
37
- | `_onNativeToggle` | private | | | | TooltipMixin |
38
- | `_onKeyDown` | private | | | | TooltipMixin |
39
- | `_onDocumentClick` | private | `((e: MouseEvent) => void) \| null` | `null` | | TooltipMixin |
21
+ | Name | Privacy | Type | Default | Description | Inherited From |
22
+ | ------------------------- | ------- | ----------------------------------------------- | --------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------- |
23
+ | `src` | | `string` | `''` | Image source URL | |
24
+ | `alt` | | `string` | `''` | Alt text for the image | |
25
+ | `fallback` | | `string` | `''` | Fallback text (typically user initials) | |
26
+ | `size` | | `'xs' \| 'sm' \| 'md' \| 'lg' \| 'xl' \| 'xxl'` | `'md'` | Size variant.
- 'xs': Extra small (1.5rem)
- 'sm': Small (2.25rem)
- 'md': Medium (2.5rem) - default
- 'lg': Large (3rem)
- 'xl': Extra large (3.5rem)
- 'xxl': Extra extra large (4rem) | |
27
+ | `_initialClassesCaptured` | private | `boolean` | `false` | | |
28
+ | `tooltip` | | `string` | `''` | Tooltip text content. Set to empty string to remove the tooltip. | TooltipMixin |
29
+ | `tooltipPosition` | | `'top' \| 'bottom' \| 'left' \| 'right'` | `'top'` | Position relative to the host element. Auto-flips when constrained by the viewport. | TooltipMixin |
30
+ | `tooltipDelay` | | `number` | `300` | Show delay in milliseconds (hover trigger only). | TooltipMixin |
31
+ | `tooltipOffset` | | `TooltipOffset \| null` | `null` | Gap between host and tooltip (sm=4px, md=8px, lg=12px, xl=16px). | TooltipMixin |
32
+ | `tooltipNoArrow` | | `boolean` | `false` | Hide the arrow pseudo-element. | TooltipMixin |
33
+ | `tooltipTrigger` | | `string` | `'hover focus'` | Space-separated trigger types: 'hover', 'focus', 'click'. | TooltipMixin |
34
+ | `_onMouseLeave` | private | | | | TooltipMixin |
35
+ | `_onFocusIn` | private | | | | TooltipMixin |
36
+ | `_onFocusOut` | private | | | | TooltipMixin |
37
+ | `_onClick` | private | | | | TooltipMixin |
38
+ | `_onNativeToggle` | private | | | | TooltipMixin |
39
+ | `_onKeyDown` | private | | | | TooltipMixin |
40
+ | `_onDocumentClick` | private | `((e: MouseEvent) => void) \| null` | `null` | | TooltipMixin |
40
41
 
41
42
  ### Methods
42
43
 
@@ -17,10 +17,11 @@
17
17
 
18
18
  ### Fields
19
19
 
20
- | Name | Privacy | Type | Default | Description | Inherited From |
21
- | ------ | ------- | ---------------------- | ------- | ------------------------------------------------------------------- | -------------- |
22
- | `max` | | `number \| undefined` | | Maximum number of visible avatars. Remaining avatars shown as "+N" | |
23
- | `size` | | `'xs' \| 'sm' \| 'md'` | `'md'` | Size variant for all child avatars (unless individually overridden) | |
20
+ | Name | Privacy | Type | Default | Description | Inherited From |
21
+ | ------------------------- | ------- | ---------------------- | ------- | ------------------------------------------------------------------- | -------------- |
22
+ | `max` | | `number \| undefined` | | Maximum number of visible avatars. Remaining avatars shown as "+N" | |
23
+ | `size` | | `'xs' \| 'sm' \| 'md'` | `'md'` | Size variant for all child avatars (unless individually overridden) | |
24
+ | `_initialClassesCaptured` | private | `boolean` | `false` | | |
24
25
 
25
26
  ### Methods
26
27
 
@@ -17,13 +17,14 @@
17
17
 
18
18
  ### Fields
19
19
 
20
- | Name | Privacy | Type | Default | Description | Inherited From |
21
- | ---------- | ------- | ---------------------------------------------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------- |
22
- | `variant` | | `'info' \| 'primary' \| 'error' \| 'success' \| 'warning'` | `'info'` | Style of the badge.
- 'info': Informational (default)
- 'primary': Primary action or emphasis
- 'error': Error or danger state
- 'success': Success or completion state
- 'warning': Warning or caution state | |
23
- | `dot` | | `boolean` | `false` | Should a dot be displayed before the label? | |
24
- | `size` | | `'sm' \| 'md' \| 'lg'` | `'sm'` | Size variant.
- 'sm': Small (default)
- 'md': Medium
- 'lg': Large | |
25
- | `activity` | | `'busy' \| 'live' \| undefined` | | Attention state that draws the eye to the badge. Names the \*intent\*; the
component owns the visual treatment (so it can change without callers).
- 'busy': an in-progress state — a glint shimmers across the label text
- 'live': a live/active state — a ring ripples out from the leading dot
 (implies \`dot\`) | |
26
- | `fill` | | `'soft' \| 'solid'` | `'soft'` | Fill style.
- 'soft': pale background with strong text (default)
- 'solid': swaps the shades for a filled pill | |
20
+ | Name | Privacy | Type | Default | Description | Inherited From |
21
+ | ------------------------- | ------- | ---------------------------------------------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------- |
22
+ | `variant` | | `'info' \| 'primary' \| 'error' \| 'success' \| 'warning'` | `'info'` | Style of the badge.
- 'info': Informational (default)
- 'primary': Primary action or emphasis
- 'error': Error or danger state
- 'success': Success or completion state
- 'warning': Warning or caution state | |
23
+ | `dot` | | `boolean` | `false` | Should a dot be displayed before the label? | |
24
+ | `size` | | `'sm' \| 'md' \| 'lg'` | `'sm'` | Size variant.
- 'sm': Small (default)
- 'md': Medium
- 'lg': Large | |
25
+ | `activity` | | `'busy' \| 'live' \| undefined` | | Attention state that draws the eye to the badge. Names the \*intent\*; the
component owns the visual treatment (so it can change without callers).
- 'busy': an in-progress state — a glint shimmers across the label text
- 'live': a live/active state — a ring ripples out from the leading dot
 (implies \`dot\`) | |
26
+ | `fill` | | `'soft' \| 'solid'` | `'soft'` | Fill style.
- 'soft': pale background with strong text (default)
- 'solid': swaps the shades for a filled pill | |
27
+ | `_initialClassesCaptured` | private | `boolean` | `false` | | |
27
28
 
28
29
  ### Methods
29
30
 
@@ -26,17 +26,18 @@
26
26
 
27
27
  ### Fields
28
28
 
29
- | Name | Privacy | Type | Default | Description | Inherited From |
30
- | ------------- | ------- | ---------------------------------- | -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------- |
31
- | `label` | | `string` | `''` | Accessible name for the group, announced by assistive devices via aria-label. | |
32
- | `orientation` | | `'horizontal' \| 'vertical'` | `'horizontal'` | Layout direction of the buttons. | |
33
- | `variant` | | `'connected' \| 'spaced'` | `'connected'` | \`connected\` collapses shared borders for a joined appearance.
\`spaced\` renders buttons with a gap. | |
34
- | `size` | | `'sm' \| 'md' \| 'lg'` | `'md'` | Propagates a uniform size to all child buttons. | |
35
- | `disabled` | | `boolean` | `false` | When true, disables all child buttons as a group. | |
36
- | `selection` | | `'none' \| 'single' \| 'multiple'` | `'none'` | Enables toggle/selection behavior.
\`single\` allows one active button; \`multiple\` allows many. | |
37
- | `value` | | `string` | `''` | Reflects the currently selected button value(s).
For \`single\`, the value of the active button.
For \`multiple\`, a comma-delimited list of active values. | |
38
- | `name` | | `string` | `''` | When set, creates hidden input(s) for native form participation. | |
39
- | `#stopFns` | private | `Array<() => void>` | `[]` | | OnFindMixin |
29
+ | Name | Privacy | Type | Default | Description | Inherited From |
30
+ | ------------------------- | ------- | ---------------------------------- | -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------- |
31
+ | `label` | | `string` | `''` | Accessible name for the group, announced by assistive devices via aria-label. | |
32
+ | `orientation` | | `'horizontal' \| 'vertical'` | `'horizontal'` | Layout direction of the buttons. | |
33
+ | `variant` | | `'connected' \| 'spaced'` | `'connected'` | \`connected\` collapses shared borders for a joined appearance.&#xA;\`spaced\` renders buttons with a gap. | |
34
+ | `size` | | `'sm' \| 'md' \| 'lg'` | `'md'` | Propagates a uniform size to all child buttons. | |
35
+ | `disabled` | | `boolean` | `false` | When true, disables all child buttons as a group. | |
36
+ | `selection` | | `'none' \| 'single' \| 'multiple'` | `'none'` | Enables toggle/selection behavior.&#xA;\`single\` allows one active button; \`multiple\` allows many. | |
37
+ | `value` | | `string` | `''` | Reflects the currently selected button value(s).&#xA;For \`single\`, the value of the active button.&#xA;For \`multiple\`, a comma-delimited list of active values. | |
38
+ | `name` | | `string` | `''` | When set, creates hidden input(s) for native form participation. | |
39
+ | `_initialClassesCaptured` | private | `boolean` | `false` | | |
40
+ | `#stopFns` | private | `Array<() => void>` | `[]` | | OnFindMixin |
40
41
 
41
42
  ### Methods
42
43
 
@@ -23,13 +23,14 @@
23
23
 
24
24
  ### Fields
25
25
 
26
- | Name | Privacy | Type | Default | Description | Inherited From |
27
- | ----------- | ------- | -------------------------------------- | ----------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------- |
28
- | `size` | | `'xs' \| 'sm' \| 'md' \| 'lg' \| 'xl'` | `'md'` | Size of the icon.&#xA;- 'xs': Extra small (0.75rem)&#xA;- 'sm': Small (1rem)&#xA;- 'md': Medium (1.25rem, default)&#xA;- 'lg': Large (1.5rem)&#xA;- 'xl': Extra large (1.75rem) | |
29
- | `symbol` | | `string` | `'circle-dashed'` | Lucide icon name to display.&#xA;See https\://lucide.dev/icons/ for available icons.&#xA;Lucide v1 removed all brand logos - legacy facebook/instagram/slack/twitter&#xA;swap to the vendored brand marks at runtime, any other brand name falls&#xA;back to circle-dashed. | |
30
- | `brand` | | `string \| undefined` | | Vendored brand mark to display instead of a Lucide icon (names in&#xA;src/brand-icons.ts); takes precedence over \`symbol\`. | |
31
- | `gradient` | | `IconGradientColor \| undefined` | | Theme color to use for gradient fill.&#xA;When set, icon displays with gradient. When undefined, icon inherits parent text color. | |
32
- | `emphasize` | | `boolean \| 'pulse' \| undefined` | | Emphasize mode — renders a tonal circle with ring behind the icon.&#xA;Colors are derived from \`currentColor\` via oklch relative color syntax.&#xA;Defaults to primary; override with Tailwind \`text-\*\` classes or \`style="color: ..."\`.&#xA;Set as a boolean for the static circle, or \`"pulse"\` for a one-shot ring animation.&#xA;Not intended for use with \`gradient\` — the two features target&#xA;conflicting rendering modes. | |
26
+ | Name | Privacy | Type | Default | Description | Inherited From |
27
+ | ------------------------- | ------- | -------------------------------------- | ----------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------- |
28
+ | `size` | | `'xs' \| 'sm' \| 'md' \| 'lg' \| 'xl'` | `'md'` | Size of the icon.&#xA;- 'xs': Extra small (0.75rem)&#xA;- 'sm': Small (1rem)&#xA;- 'md': Medium (1.25rem, default)&#xA;- 'lg': Large (1.5rem)&#xA;- 'xl': Extra large (1.75rem) | |
29
+ | `symbol` | | `string` | `'circle-dashed'` | Lucide icon name to display.&#xA;See https\://lucide.dev/icons/ for available icons.&#xA;Lucide v1 removed all brand logos - legacy facebook/instagram/slack/twitter&#xA;swap to the vendored brand marks at runtime, any other brand name falls&#xA;back to circle-dashed. | |
30
+ | `brand` | | `string \| undefined` | | Vendored brand mark to display instead of a Lucide icon (names in&#xA;src/brand-icons.ts); takes precedence over \`symbol\`. | |
31
+ | `gradient` | | `IconGradientColor \| undefined` | | Theme color to use for gradient fill.&#xA;When set, icon displays with gradient. When undefined, icon inherits parent text color. | |
32
+ | `emphasize` | | `boolean \| 'pulse' \| undefined` | | Emphasize mode — renders a tonal circle with ring behind the icon.&#xA;Colors are derived from \`currentColor\` via oklch relative color syntax.&#xA;Defaults to primary; override with Tailwind \`text-\*\` classes or \`style="color: ..."\`.&#xA;Set as a boolean for the static circle, or \`"pulse"\` for a one-shot ring animation.&#xA;Not intended for use with \`gradient\` — the two features target&#xA;conflicting rendering modes. | |
33
+ | `_initialClassesCaptured` | private | `boolean` | `false` | | |
33
34
 
34
35
  ### Methods
35
36
 
@@ -17,24 +17,25 @@
17
17
 
18
18
  ### Fields
19
19
 
20
- | Name | Privacy | Type | Default | Description | Inherited From |
21
- | ------------------------ | ------- | --------------------- | -------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------- |
22
- | `page` | | `number` | `1` | Current page number (1-based) | |
23
- | `pageSize` | | `number` | `0` | Number of items per page | |
24
- | `disabled` | | `boolean` | `false` | Disables all pagination controls | |
25
- | `loading` | | `boolean` | `false` | Shows loading spinner and dims controls | |
26
- | `hideOnSinglePage` | | `boolean` | `true` | Hide controls when there is only one page | |
27
- | `pageSizeChanger` | | `boolean` | `true` | Show the page size dropdown | |
28
- | `pageSizeOptions` | | `string` | `'10, 20, 50'` | Comma-separated page size options | |
29
- | `totalItems` | | `number` | `0` | Total number of items across all pages | |
30
- | `boundaryButtons` | | `boolean` | `true` | Show first and last page buttons | |
31
- | `hideTotalCount` | | `boolean` | `false` | Hide the item count display (e.g., "1-10 of 200") | |
32
- | `pageJumper` | | `boolean` | `false` | Show the page jumper dropdown. Intended for moderate page counts (under \~100 pages).&#xA;For large datasets, use a custom \`slot="jumper"\` with a virtualized or input-based control. | |
33
- | `label` | | `string \| undefined` | | Accessible label for the pagination nav landmark | |
34
- | `_parsedPageSizeOptions` | private | `number[]` | | | |
35
- | `_totalPages` | private | `number` | | | |
36
- | `_startItem` | private | `number` | | | |
37
- | `_endItem` | private | `number` | | | |
20
+ | Name | Privacy | Type | Default | Description | Inherited From |
21
+ | ------------------------- | ------- | --------------------- | -------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------- |
22
+ | `page` | | `number` | `1` | Current page number (1-based) | |
23
+ | `pageSize` | | `number` | `0` | Number of items per page | |
24
+ | `disabled` | | `boolean` | `false` | Disables all pagination controls | |
25
+ | `loading` | | `boolean` | `false` | Shows loading spinner and dims controls | |
26
+ | `hideOnSinglePage` | | `boolean` | `true` | Hide controls when there is only one page | |
27
+ | `pageSizeChanger` | | `boolean` | `true` | Show the page size dropdown | |
28
+ | `pageSizeOptions` | | `string` | `'10, 20, 50'` | Comma-separated page size options | |
29
+ | `totalItems` | | `number` | `0` | Total number of items across all pages | |
30
+ | `boundaryButtons` | | `boolean` | `true` | Show first and last page buttons | |
31
+ | `hideTotalCount` | | `boolean` | `false` | Hide the item count display (e.g., "1-10 of 200") | |
32
+ | `pageJumper` | | `boolean` | `false` | Show the page jumper dropdown. Intended for moderate page counts (under \~100 pages).&#xA;For large datasets, use a custom \`slot="jumper"\` with a virtualized or input-based control. | |
33
+ | `label` | | `string \| undefined` | | Accessible label for the pagination nav landmark | |
34
+ | `_initialClassesCaptured` | private | `boolean` | `false` | | |
35
+ | `_parsedPageSizeOptions` | private | `number[]` | | | |
36
+ | `_totalPages` | private | `number` | | | |
37
+ | `_startItem` | private | `number` | | | |
38
+ | `_endItem` | private | `number` | | | |
38
39
 
39
40
  ### Methods
40
41
 
@@ -17,23 +17,25 @@
17
17
 
18
18
  ### Fields
19
19
 
20
- | Name | Privacy | Type | Default | Description | Inherited From |
21
- | ---------------------- | ------- | ---------------------------------------- | ---------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------- |
22
- | `position` | | `'top' \| 'bottom' \| 'left' \| 'right'` | `'bottom'` | Position relative to the trigger element.&#xA;Auto-flips when constrained by the viewport. | |
23
- | `trigger` | | `'click' \| 'hover' \| 'focus'` | `'click'` | How the popover is activated.&#xA;- 'click': Toggle on click with light dismiss&#xA;- 'hover': Show on mouseenter with delay&#xA;- 'focus': Show on focusin | |
24
- | `delay` | | `number` | `300` | Show delay in milliseconds (hover trigger only). | |
25
- | `offset` | | `PopoverOffset \| null` | `null` | Gap between trigger and popover (sm=4px, md=8px, lg=12px, xl=16px). | |
26
- | `noArrow` | | `boolean` | `false` | Hide the arrow pseudo-element. | |
27
- | `inverted` | | `boolean` | `false` | Invert the panel surface (dark on light pages, light on dark pages).&#xA;Opt-in, since the panel holds arbitrary rich content. | |
28
- | `open` | | `boolean` | `false` | Programmatic open/close state (reflected). | |
29
- | `panelLabel` | | `string` | `''` | Accessible label for the popover panel (applied as aria-label on the dialog). | |
30
- | `_onTriggerMouseLeave` | private | | | | |
31
- | `_onTriggerFocusIn` | private | | | | |
32
- | `_onTriggerFocusOut` | private | | | | |
33
- | `_onPanelMouseEnter` | private | | | | |
34
- | `_onPanelMouseLeave` | private | | | | |
35
- | `_onNativeToggle` | private | | | | |
36
- | `_onKeyDown` | private | | | | |
20
+ | Name | Privacy | Type | Default | Description | Inherited From |
21
+ | ------------------------- | ------- | ---------------------------------------- | ---------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------- |
22
+ | `position` | | `'top' \| 'bottom' \| 'left' \| 'right'` | `'bottom'` | Position relative to the trigger element.&#xA;Auto-flips when constrained by the viewport. | |
23
+ | `trigger` | | `'click' \| 'hover' \| 'focus'` | `'click'` | How the popover is activated.&#xA;- 'click': Toggle on click with light dismiss&#xA;- 'hover': Show on mouseenter with delay&#xA;- 'focus': Show on focusin | |
24
+ | `delay` | | `number` | `300` | Show delay in milliseconds (hover trigger only). | |
25
+ | `offset` | | `PopoverOffset \| null` | `null` | Gap between trigger and popover (sm=4px, md=8px, lg=12px, xl=16px). | |
26
+ | `noArrow` | | `boolean` | `false` | Hide the arrow pseudo-element. | |
27
+ | `inverted` | | `boolean` | `false` | Invert the panel surface (dark on light pages, light on dark pages).&#xA;Opt-in, since the panel holds arbitrary rich content. | |
28
+ | `open` | | `boolean` | `false` | Programmatic open/close state (reflected). | |
29
+ | `panelLabel` | | `string` | `''` | Accessible label for the popover panel (applied as aria-label on the dialog). | |
30
+ | `_initialClassesCaptured` | private | `boolean` | `false` | | |
31
+ | `_onTriggerMouseLeave` | private | | | | |
32
+ | `_onTriggerFocusIn` | private | | | | |
33
+ | `_onTriggerFocusOut` | private | | | | |
34
+ | `_onPanelMouseEnter` | private | | | | |
35
+ | `_onPanelMouseLeave` | private | | | | |
36
+ | `_onNativeToggle` | private | | | | |
37
+ | `_onKeyDown` | private | | | | |
38
+ | `_onViewportChange` | private | | | | |
37
39
 
38
40
  ### Methods
39
41
 
@@ -69,6 +71,8 @@
69
71
  | `--popover-color-background` | | Panel background color (default: var(--btu-theme-white); inverted: var(--btu-theme-black)) |
70
72
  | `--popover-color-content` | | Panel text color (default: oklch(var(--btu-theme-gray-900)); inverted: var(--btu-theme-white)) |
71
73
  | `--popover-border-radius` | | Panel corner radius (default: theme borderRadius.lg) |
74
+ | `--popover-border-width` | | Edge width, panel and arrow (default: 1px; 0 removes it) |
75
+ | `--popover-border-color` | | Edge color, panel and arrow (default: oklch(var(--btu-theme-gray-200))) |
72
76
  | `--popover-offset` | | Gap between trigger and panel (default: 8px; see btu-popover-offset-{sm\|md\|lg\|xl}) |
73
77
  | `--popover-arrow-size` | | Width/height of the pointer arrow (default: 8px) |
74
78
 
@@ -23,17 +23,18 @@
23
23
 
24
24
  ### Fields
25
25
 
26
- | Name | Privacy | Type | Default | Description | Inherited From |
27
- | -------------- | ------- | ------------------------- | ----------- | ----------------------------------------------------------------------------------------------------- | -------------- |
28
- | `name` | | `string \| undefined` | | Value that identifies this tab and links it to panel elements that share the same \`name\` attribute. | |
29
- | `label` | | `string \| undefined` | | Text displayed in the tab. | |
30
- | `description` | | `string \| undefined` | | Accessibility description for screen readers. | |
31
- | `disabled` | | `boolean` | `false` | Whether the tab is disabled and non-interactive. | |
32
- | `symbol` | | `string \| undefined` | | Lucide icon symbol to display. | |
33
- | `iconPosition` | | `'leading' \| 'trailing'` | `'leading'` | Placement of the icon relative to the label. | |
34
- | `iconOnly` | | `boolean` | `false` | When true, hides the label visually while maintaining accessibility. | |
35
- | `error` | | `boolean` | `false` | When true, displays an error badge on the tab. | |
36
- | `badge` | | `string \| undefined` | | Displays a badge with the given value alongside the label. | |
26
+ | Name | Privacy | Type | Default | Description | Inherited From |
27
+ | ------------------------- | ------- | ------------------------- | ----------- | ----------------------------------------------------------------------------------------------------- | -------------- |
28
+ | `name` | | `string \| undefined` | | Value that identifies this tab and links it to panel elements that share the same \`name\` attribute. | |
29
+ | `label` | | `string \| undefined` | | Text displayed in the tab. | |
30
+ | `description` | | `string \| undefined` | | Accessibility description for screen readers. | |
31
+ | `disabled` | | `boolean` | `false` | Whether the tab is disabled and non-interactive. | |
32
+ | `symbol` | | `string \| undefined` | | Lucide icon symbol to display. | |
33
+ | `iconPosition` | | `'leading' \| 'trailing'` | `'leading'` | Placement of the icon relative to the label. | |
34
+ | `iconOnly` | | `boolean` | `false` | When true, hides the label visually while maintaining accessibility. | |
35
+ | `error` | | `boolean` | `false` | When true, displays an error badge on the tab. | |
36
+ | `badge` | | `string \| undefined` | | Displays a badge with the given value alongside the label. | |
37
+ | `_initialClassesCaptured` | private | `boolean` | `false` | | |
37
38
 
38
39
  ### Methods
39
40
 
@@ -67,7 +68,7 @@
67
68
  | Name | Default | Description |
68
69
  | -------------------------- | ------- | ---------------------------------------------------------------- |
69
70
  | `--badge-color-background` | | Background color of the count indicator badge (default: gray-50) |
70
- | `--badge-color-foreground` | | Text color of the count indicator badge (default: gray-700) |
71
+ | `--badge-color-foreground` | | Text color of the count indicator badge (default: gray-800) |
71
72
 
72
73
  <hr/>
73
74
 
@@ -24,18 +24,19 @@
24
24
 
25
25
  ### Fields
26
26
 
27
- | Name | Privacy | Type | Default | Description | Inherited From |
28
- | ---------------- | ------- | ------------------------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------- |
29
- | `size` | | `'xs' \| 'sm' \| 'md' \| 'lg'` | `'md'` | Size variant applied to all child tabs. | |
30
- | `activeTab` | | `string \| undefined` | | The \`name\` value of the currently active tab. | |
31
- | `variant` | | `'full' \| 'menu'` | `'full'` | Layout variant.&#xA;- 'full': tabs scroll horizontally when they overflow (default)&#xA;- 'menu': all tabs are hidden; the active tab label and a chevron dropdown are shown instead | |
32
- | `menuWrapper` | private | `HTMLElement \| null` | `null` | | |
33
- | `menuDropdown` | private | `Dropdown \| null` | `null` | | |
34
- | `menuLabel` | private | `HTMLSpanElement \| null` | `null` | | |
35
- | `menuIcon` | private | `HTMLElement \| null` | `null` | | |
36
- | `menuErrorBadge` | private | `HTMLElement \| null` | `null` | | |
37
- | `_dropdownSize` | private | `'sm' \| 'md' \| 'lg'` | | | |
38
- | `_menuIconSize` | private | `'sm' \| 'md'` | | | |
27
+ | Name | Privacy | Type | Default | Description | Inherited From |
28
+ | ------------------------- | ------- | ------------------------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------- |
29
+ | `size` | | `'xs' \| 'sm' \| 'md' \| 'lg'` | `'md'` | Size variant applied to all child tabs. | |
30
+ | `activeTab` | | `string \| undefined` | | The \`name\` value of the currently active tab. | |
31
+ | `variant` | | `'full' \| 'menu'` | `'full'` | Layout variant.&#xA;- 'full': tabs scroll horizontally when they overflow (default)&#xA;- 'menu': all tabs are hidden; the active tab label and a chevron dropdown are shown instead | |
32
+ | `_initialClassesCaptured` | private | `boolean` | `false` | | |
33
+ | `menuWrapper` | private | `HTMLElement \| null` | `null` | | |
34
+ | `menuDropdown` | private | `Dropdown \| null` | `null` | | |
35
+ | `menuLabel` | private | `HTMLSpanElement \| null` | `null` | | |
36
+ | `menuIcon` | private | `HTMLElement \| null` | `null` | | |
37
+ | `menuErrorBadge` | private | `HTMLElement \| null` | `null` | | |
38
+ | `_dropdownSize` | private | `'sm' \| 'md' \| 'lg'` | | | |
39
+ | `_menuIconSize` | private | `'sm' \| 'md'` | | | |
39
40
 
40
41
  ### Methods
41
42
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@brightspot/ui",
3
- "version": "6.3.5",
3
+ "version": "6.4.0",
4
4
  "type": "module",
5
5
  "license": "UNLICENSED",
6
6
  "description": "A UI library for building Brightspot CMS components.",
@@ -180,7 +180,16 @@
180
180
  @media (min-width: 577px) {
181
181
  .Admin {
182
182
  --Admin-navWidth: 240px;
183
- @apply relative grid h-full w-full [grid-template:_'nav_main'_/_var(--Admin-navWidth)_1fr];
183
+ @apply relative h-full w-full;
184
+ }
185
+
186
+ /* The two-column shell only exists when there is a nav to put in it. Ungated, a page
187
+ using the admin layout without a nav grew a phantom 240px gutter, so consumers could
188
+ not apply .Admin at all and re-expanded its utilities by hand instead. Pages that do
189
+ have a nav are unaffected. The class is set in v5.ts — a :has() here would re-evaluate
190
+ on every change under .Admin, which is most of the page. */
191
+ .Admin.has-adminNav {
192
+ @apply grid [grid-template:_'nav_main'_/_var(--Admin-navWidth)_1fr];
184
193
  }
185
194
 
186
195
  .Admin-nav {
@@ -1,11 +1,12 @@
1
1
  .CodeMirror {
2
- @apply h-auto rounded-lg border border-gray-300 !bg-white !text-gray-900 transition hover:!bg-gray-100;
2
+ @apply rounded-lg border border-gray-300 !bg-white !text-gray-900 transition hover:!bg-gray-100;
3
3
 
4
4
  /*
5
5
  Bound :has() invalidation. CM mutates inner DOM per keystroke; without
6
6
  containment, every mutation re-evaluates every :has() rule whose
7
- subject is on CM's ancestor chain. `size` is the load-bearing keyword
8
- (CM has explicit height, so it's free).
7
+ subject is on CM's ancestor chain. `size` is the load-bearing keyword, and
8
+ it needs the height codemirror.css sets — anything setting `height: auto`
9
+ must drop `size` too, or the editor lays out as empty and collapses.
9
10
  */
10
11
  contain: layout style paint size !important;
11
12
  }