@brightspot/ui 6.1.2-pr.275 → 6.3.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 (195) hide show
  1. package/dist/components/action-bar/ActionBar.d.ts +1 -0
  2. package/dist/components/action-bar/ActionBar.d.ts.map +1 -1
  3. package/dist/components/action-bar/ActionBar.js +6 -2
  4. package/dist/components/action-bar/ActionBar.js.map +1 -1
  5. package/dist/components/avatar/Avatar.d.ts +1 -0
  6. package/dist/components/avatar/Avatar.d.ts.map +1 -1
  7. package/dist/components/avatar/Avatar.js +6 -2
  8. package/dist/components/avatar/Avatar.js.map +1 -1
  9. package/dist/components/avatar/AvatarGroup.d.ts +1 -0
  10. package/dist/components/avatar/AvatarGroup.d.ts.map +1 -1
  11. package/dist/components/avatar/AvatarGroup.js +6 -2
  12. package/dist/components/avatar/AvatarGroup.js.map +1 -1
  13. package/dist/components/badge/Badge.d.ts +1 -0
  14. package/dist/components/badge/Badge.d.ts.map +1 -1
  15. package/dist/components/badge/Badge.js +6 -2
  16. package/dist/components/badge/Badge.js.map +1 -1
  17. package/dist/components/button-group/ButtonGroup.d.ts +1 -0
  18. package/dist/components/button-group/ButtonGroup.d.ts.map +1 -1
  19. package/dist/components/button-group/ButtonGroup.js +6 -2
  20. package/dist/components/button-group/ButtonGroup.js.map +1 -1
  21. package/dist/components/card/Card.d.ts.map +1 -1
  22. package/dist/components/card/Card.js +4 -2
  23. package/dist/components/card/Card.js.map +1 -1
  24. package/dist/components/checkbox/Checkbox.d.ts.map +1 -1
  25. package/dist/components/checkbox/Checkbox.js +4 -2
  26. package/dist/components/checkbox/Checkbox.js.map +1 -1
  27. package/dist/components/circular-progress/CircularProgress.d.ts +2 -0
  28. package/dist/components/circular-progress/CircularProgress.d.ts.map +1 -1
  29. package/dist/components/circular-progress/CircularProgress.js +9 -3
  30. package/dist/components/circular-progress/CircularProgress.js.map +1 -1
  31. package/dist/components/icon/Icon.d.ts +1 -0
  32. package/dist/components/icon/Icon.d.ts.map +1 -1
  33. package/dist/components/icon/Icon.js +6 -2
  34. package/dist/components/icon/Icon.js.map +1 -1
  35. package/dist/components/linear-progress/LinearProgress.d.ts +2 -0
  36. package/dist/components/linear-progress/LinearProgress.d.ts.map +1 -1
  37. package/dist/components/linear-progress/LinearProgress.js +9 -3
  38. package/dist/components/linear-progress/LinearProgress.js.map +1 -1
  39. package/dist/components/pagination/Pagination.d.ts +1 -0
  40. package/dist/components/pagination/Pagination.d.ts.map +1 -1
  41. package/dist/components/pagination/Pagination.js +6 -2
  42. package/dist/components/pagination/Pagination.js.map +1 -1
  43. package/dist/components/popover/Popover.d.ts +1 -0
  44. package/dist/components/popover/Popover.d.ts.map +1 -1
  45. package/dist/components/popover/Popover.js +6 -2
  46. package/dist/components/popover/Popover.js.map +1 -1
  47. package/dist/components/switch/Switch.d.ts.map +1 -1
  48. package/dist/components/switch/Switch.js +4 -2
  49. package/dist/components/switch/Switch.js.map +1 -1
  50. package/dist/components/tabs/Tab.d.ts +1 -0
  51. package/dist/components/tabs/Tab.d.ts.map +1 -1
  52. package/dist/components/tabs/Tab.js +6 -2
  53. package/dist/components/tabs/Tab.js.map +1 -1
  54. package/dist/components/tabs/Tabs.d.ts +1 -0
  55. package/dist/components/tabs/Tabs.d.ts.map +1 -1
  56. package/dist/components/tabs/Tabs.js +6 -2
  57. package/dist/components/tabs/Tabs.js.map +1 -1
  58. package/dist/custom-elements.json +90 -0
  59. package/dist/storybook/assets/{ActionBar.stories-Q_bdek_N.js → ActionBar.stories-CgkvHW27.js} +1 -1
  60. package/dist/storybook/assets/{ActionItem.stories-Ccyot7vj.js → ActionItem.stories-CyxwhrvR.js} +1 -1
  61. package/dist/storybook/assets/{AiSparkle.stories-Ccapqzcw.js → AiSparkle.stories-h2LSw10e.js} +1 -1
  62. package/dist/storybook/assets/{Avatar.stories-CPcQWZtG.js → Avatar.stories-CQ3eFTbI.js} +1 -1
  63. package/dist/storybook/assets/{AvatarGroup.stories-Bws-izJt.js → AvatarGroup.stories-CIyZOd7R.js} +1 -1
  64. package/dist/storybook/assets/{Badge.stories-xck9Ke5e.js → Badge.stories-CwPkYUuY.js} +1 -1
  65. package/dist/storybook/assets/{Banner.stories-D3ieqG7F.js → Banner.stories-B7AhWymc.js} +1 -1
  66. package/dist/storybook/assets/{Button-CQ2ZvHGM.js → Button-fLz-Mqji.js} +1 -1
  67. package/dist/storybook/assets/{Button.stories-BkGox6QF.js → Button.stories-Bj_cB5Tr.js} +1 -1
  68. package/dist/storybook/assets/{ButtonGroup.stories-BxDNL7ej.js → ButtonGroup.stories-DMAr8q3A.js} +1 -1
  69. package/dist/storybook/assets/{Card.stories-BrzAwQwE.js → Card.stories-CouVkvTr.js} +1 -1
  70. package/dist/storybook/assets/{Celebrate.stories-BFqqbYhp.js → Celebrate.stories-Cai7aITx.js} +1 -1
  71. package/dist/storybook/assets/{Checkbox.stories-yNb9DH9g.js → Checkbox.stories-BTzuHih7.js} +1 -1
  72. package/dist/storybook/assets/{CircularProgress.stories--KSA2X4d.js → CircularProgress.stories-DwiMDCrW.js} +1 -1
  73. package/dist/storybook/assets/{ClipboardMixin.stories-DT0symyW.js → ClipboardMixin.stories-BTzKKsAG.js} +1 -1
  74. package/dist/storybook/assets/{Color-6BZIO3FS-CEpjJcuB.js → Color-6BZIO3FS-z5x4axZs.js} +1 -1
  75. package/dist/storybook/assets/{Colors.stories-BEtjS3CS.js → Colors.stories-LjQN3QJP.js} +1 -1
  76. package/dist/storybook/assets/{CombinedEffects.stories-DZsO6E1c.js → CombinedEffects.stories-CcWkxBPD.js} +1 -1
  77. package/dist/storybook/assets/{ComponentStatesMixin-C-G6neuB.js → ComponentStatesMixin-6JmalSeW.js} +1 -1
  78. package/dist/storybook/assets/{ComponentStatesMixin.stories-D4B2eXzV.js → ComponentStatesMixin.stories-wr7wl9D5.js} +1 -1
  79. package/dist/storybook/assets/{CopyToClipboard.stories-C1wxRcNr.js → CopyToClipboard.stories-CBL_GlzJ.js} +1 -1
  80. package/dist/storybook/assets/{Debounce.stories-CEXdiU_4.js → Debounce.stories-DDW0347e.js} +1 -1
  81. package/dist/storybook/assets/{DocsRenderer-LL677BLK-iD6uwWm0.js → DocsRenderer-LL677BLK-LHrG4h5r.js} +3 -3
  82. package/dist/storybook/assets/{Dropdown.stories-DzgAKuev.js → Dropdown.stories-BixGKdVC.js} +1 -1
  83. package/dist/storybook/assets/{EmptyState.stories-8IezRmLe.js → EmptyState.stories-DYCizkT5.js} +1 -1
  84. package/dist/storybook/assets/{EscaAvatar.stories-CFRMImDC.js → EscaAvatar.stories-IV0FybUu.js} +1 -1
  85. package/dist/storybook/assets/{Events.stories-wc_WlNNX.js → Events.stories-9X1B5LFU.js} +1 -1
  86. package/dist/storybook/assets/{Heading.stories-CBopc-Ov.js → Heading.stories-BWFKyeYP.js} +1 -1
  87. package/dist/storybook/assets/{HueRipple.stories-B1BLaONM.js → HueRipple.stories-KJySD4yc.js} +1 -1
  88. package/dist/storybook/assets/{Icon.stories-Bul1n2nN.js → Icon.stories-n4-_RBwe.js} +1 -1
  89. package/dist/storybook/assets/{IconButton.stories-DDCBKBqw.js → IconButton.stories--cc9Az0q.js} +1 -1
  90. package/dist/storybook/assets/{LinearProgress.stories-DWroemrV.js → LinearProgress.stories-CXISMQqr.js} +1 -1
  91. package/dist/storybook/assets/{Message.stories-CfWo8uqR.js → Message.stories-DCgZ9H2r.js} +1 -1
  92. package/dist/storybook/assets/{OnFindMixin.stories-DRr67PU5.js → OnFindMixin.stories-DwYEl4q4.js} +1 -1
  93. package/dist/storybook/assets/{Pagination.stories-CJ0dmE6y.js → Pagination.stories-B8AqV3jI.js} +1 -1
  94. package/dist/storybook/assets/{Popover.stories-CFFe2utX.js → Popover.stories-Dj8TUysk.js} +1 -1
  95. package/dist/storybook/assets/{ReadyMixin-euHV5BrF.js → ReadyMixin-B1y8EBLz.js} +1 -1
  96. package/dist/storybook/assets/{RovingTabindexMixin.stories-CcKn8eYu.js → RovingTabindexMixin.stories-BTYV78Cy.js} +1 -1
  97. package/dist/storybook/assets/{Rtc.stories-B_26leBQ.js → Rtc.stories-CiQ4OgEf.js} +1 -1
  98. package/dist/storybook/assets/{ScrollShadow.stories-COcTqDYx.js → ScrollShadow.stories-BRpbl9WU.js} +1 -1
  99. package/dist/storybook/assets/{Switch.stories-fZAYVOXQ.js → Switch.stories-Dfw56-LB.js} +1 -1
  100. package/dist/storybook/assets/{Tab.stories-ChmYj35a.js → Tab.stories-DCIPSPwr.js} +1 -1
  101. package/dist/storybook/assets/{Tabs.stories-Bgb-44oF.js → Tabs.stories-DrT2D2oW.js} +1 -1
  102. package/dist/storybook/assets/{Throttle.stories-BP21CM6q.js → Throttle.stories-B5Y8K9s3.js} +1 -1
  103. package/dist/storybook/assets/{Tooltip.stories-Ck7XsJKW.js → Tooltip.stories-CUjm8cuW.js} +1 -1
  104. package/dist/storybook/assets/{Upload.stories-DMedgAwp.js → Upload.stories-Dt7V8qIe.js} +1 -1
  105. package/dist/storybook/assets/{UploadItem.stories-D1rV5quQ.js → UploadItem.stories-DSXxGs8M.js} +1 -1
  106. package/dist/storybook/assets/{Welcome.stories-DDEhWqOY.js → Welcome.stories-BDFQb8oF.js} +1 -1
  107. package/dist/storybook/assets/{Widget.stories-iTycJQkv.js → Widget.stories-CQnE1dST.js} +1 -1
  108. package/dist/storybook/assets/{WithTooltip-65CFNBJE-BDmGdT_q.js → WithTooltip-65CFNBJE-D1OYJPzp.js} +1 -1
  109. package/dist/storybook/assets/{blocks-45GMe9mP.js → blocks-Z0quNc1U.js} +5 -5
  110. package/dist/storybook/assets/{formatter-EIJCOSYU-Dvxzfjid.js → formatter-EIJCOSYU-DwWzDvJC.js} +1 -1
  111. package/dist/storybook/assets/if-defined-Dl8MuiCE.js +1 -0
  112. package/dist/storybook/assets/iframe-HDp5BmO_.css +1 -0
  113. package/dist/storybook/assets/{iframe-CemlMLl9.js → iframe-WTEmYHJj.js} +4 -4
  114. package/dist/storybook/assets/{index-Ei3bFG4y.js → index-BvPCa7_B.js} +1 -1
  115. package/dist/storybook/assets/{onFind-96dPwZGj.js → onFind-CqIRRMTv.js} +1 -1
  116. package/dist/storybook/assets/{onFind.stories-DwMmvzD8.js → onFind.stories-C4PPQTaQ.js} +1 -1
  117. package/dist/storybook/assets/{onRemove.stories-Bw8nC3q8.js → onRemove.stories-BGFCh6DN.js} +1 -1
  118. package/dist/storybook/assets/{onVisible.stories-BZyJ5si2.js → onVisible.stories-4ni7syfJ.js} +1 -1
  119. package/dist/storybook/assets/{style-map-BZ1BR1yx.js → style-map-BhvFBtuB.js} +1 -1
  120. package/dist/storybook/assets/{syntaxhighlighter-ED5Y7EFY-B4dajqNJ.js → syntaxhighlighter-ED5Y7EFY-D_cJwnoJ.js} +1 -1
  121. package/dist/storybook/iframe.html +2 -2
  122. package/dist/storybook/project.json +1 -1
  123. package/dist/tailwind-plugin-button.js +2 -0
  124. package/dist/tailwind-plugin-button.js.map +1 -1
  125. package/dist/tailwind-plugin-button.ts +2 -0
  126. package/package.json +4 -1
  127. package/src/legacy/tool-ui/src/Admin.css +2 -6
  128. package/src/legacy/tool-ui/src/CIGCluster.css +9 -1
  129. package/src/legacy/tool-ui/src/ChartCompat.ts +1 -1
  130. package/src/legacy/tool-ui/src/Compat.css +11 -0
  131. package/src/legacy/tool-ui/src/ContentEdit.css +19 -12
  132. package/src/legacy/tool-ui/src/ContentEditPanel.ts +26 -12
  133. package/src/legacy/tool-ui/src/ContentInputGroup.css +12 -10
  134. package/src/legacy/tool-ui/src/Conversation.css +19 -7
  135. package/src/legacy/tool-ui/src/DashboardWidget.css +4 -0
  136. package/src/legacy/tool-ui/src/Dialog.css +83 -26
  137. package/src/legacy/tool-ui/src/EmbeddedInputGroup/index.ts +20 -50
  138. package/src/legacy/tool-ui/src/Enhancement.css +3 -2
  139. package/src/legacy/tool-ui/src/Entry.ts +11 -0
  140. package/src/legacy/tool-ui/src/FileInput.css +1 -1
  141. package/src/legacy/tool-ui/src/Global.d.ts +3 -0
  142. package/src/legacy/tool-ui/src/Guide.css +5 -5
  143. package/src/legacy/tool-ui/src/ImageEditor.css +1 -1
  144. package/src/legacy/tool-ui/src/LinkTable.css +4 -0
  145. package/src/legacy/tool-ui/src/LiveBlog.css +2 -2
  146. package/src/legacy/tool-ui/src/MenuView.css +13 -7
  147. package/src/legacy/tool-ui/src/Message.css +4 -9
  148. package/src/legacy/tool-ui/src/Page.css +32 -9
  149. package/src/legacy/tool-ui/src/Popup.css +18 -1
  150. package/src/legacy/tool-ui/src/ProseMirror.css +1 -1
  151. package/src/legacy/tool-ui/src/RepeatableContentInputGroup.css +5 -5
  152. package/src/legacy/tool-ui/src/Revisions.css +8 -4
  153. package/src/legacy/tool-ui/src/SearchFields.css +2 -2
  154. package/src/legacy/tool-ui/src/SearchWidgetAdvanced.css +4 -13
  155. package/src/legacy/tool-ui/src/TabBar.css +2 -2
  156. package/src/legacy/tool-ui/src/Widget.css +29 -2
  157. package/src/legacy/tool-ui/src/dialog/index.ts +10 -18
  158. package/src/legacy/tool-ui/src/form/FormFilter/index.ts +2 -2
  159. package/src/legacy/tool-ui/src/main/webapp/dist/2111.5d43fec84fea624d6371.css +1 -0
  160. package/src/legacy/tool-ui/src/main/webapp/dist/5598.315afb3723a27880f87c.js +2 -0
  161. package/src/legacy/tool-ui/src/main/webapp/dist/6086.82620005e5673191c44f.js +1 -0
  162. package/src/legacy/tool-ui/src/main/webapp/dist/7718.5d43fec84fea624d6371.css +1 -0
  163. package/src/legacy/tool-ui/src/main/webapp/dist/{9360.41a5ba8d859d49f86811.js → 9360.22bc0127e04bc73d5261.js} +2 -2
  164. package/src/legacy/tool-ui/src/main/webapp/dist/{9360.41a5ba8d859d49f86811.js.LICENSE.txt → 9360.22bc0127e04bc73d5261.js.LICENSE.txt} +1 -1
  165. package/src/legacy/tool-ui/src/main/webapp/dist/ChartCompat.c7121ea8407d80ee5abe.js +1 -0
  166. package/src/legacy/tool-ui/src/main/webapp/dist/RTEProseMirror.1407c7815b605e9c9e5c.js +500 -0
  167. package/src/legacy/tool-ui/src/main/webapp/dist/{v4.1074f0affb38bd0dd492.js → v4.447a0e68294d13059714.js} +8 -8
  168. package/src/legacy/tool-ui/src/main/webapp/dist/v4.b1e9f6ac0449331711fc.css +3 -0
  169. package/src/legacy/tool-ui/src/main/webapp/dist/v5.4b881dc40345f5053736.js +92 -0
  170. package/src/legacy/tool-ui/src/main/webapp/dist/v5.c4249c5b01957c28ff92.css +5 -0
  171. package/src/legacy/tool-ui/src/main/webapp/v4/CIGCluster.less +9 -0
  172. package/src/legacy/tool-ui/src/main/webapp/v4/TabBar.less +4 -0
  173. package/src/legacy/tool-ui/src/theme/Theme.ts +28 -0
  174. package/src/legacy/tool-ui/src/v5.ts +61 -13
  175. package/dist/storybook/assets/if-defined-C-mi5lcR.js +0 -1
  176. package/dist/storybook/assets/iframe-abUCrGGI.css +0 -1
  177. package/src/legacy/tool-ui/src/main/webapp/dist/011a678e3efe41981754.png +0 -1
  178. package/src/legacy/tool-ui/src/main/webapp/dist/194137260531ee29a5f2.svg +0 -1
  179. package/src/legacy/tool-ui/src/main/webapp/dist/1e8408af1a34bdf61457.png +0 -1
  180. package/src/legacy/tool-ui/src/main/webapp/dist/2111.8f1e08a5cc223fd14542.css +0 -1
  181. package/src/legacy/tool-ui/src/main/webapp/dist/44b38a404dec4643c46b.png +0 -1
  182. package/src/legacy/tool-ui/src/main/webapp/dist/4a4ee777ddc0d4cedee4.png +0 -1
  183. package/src/legacy/tool-ui/src/main/webapp/dist/5598.d84773ca53126661bdca.js +0 -2
  184. package/src/legacy/tool-ui/src/main/webapp/dist/6086.7ca02b827506f29db590.js +0 -1
  185. package/src/legacy/tool-ui/src/main/webapp/dist/7718.8f1e08a5cc223fd14542.css +0 -1
  186. package/src/legacy/tool-ui/src/main/webapp/dist/ChartCompat.4dd096dd030942227ec6.js +0 -1
  187. package/src/legacy/tool-ui/src/main/webapp/dist/RTEProseMirror.55a2d6ccdce502c79815.js +0 -500
  188. package/src/legacy/tool-ui/src/main/webapp/dist/c6e9c007f41bd4d26c20.png +0 -1
  189. package/src/legacy/tool-ui/src/main/webapp/dist/v4.477ad1936f8c04d7b232.css +0 -3
  190. package/src/legacy/tool-ui/src/main/webapp/dist/v5.b49d2d7615d030b68f89.js +0 -92
  191. package/src/legacy/tool-ui/src/main/webapp/dist/v5.f9baf26a8d24e59e7af0.css +0 -5
  192. /package/src/legacy/tool-ui/src/main/webapp/dist/{5598.d84773ca53126661bdca.js.LICENSE.txt → 5598.315afb3723a27880f87c.js.LICENSE.txt} +0 -0
  193. /package/src/legacy/tool-ui/src/main/webapp/dist/{RTEProseMirror.55a2d6ccdce502c79815.js.LICENSE.txt → RTEProseMirror.1407c7815b605e9c9e5c.js.LICENSE.txt} +0 -0
  194. /package/src/legacy/tool-ui/src/main/webapp/dist/{v4.1074f0affb38bd0dd492.js.LICENSE.txt → v4.447a0e68294d13059714.js.LICENSE.txt} +0 -0
  195. /package/src/legacy/tool-ui/src/main/webapp/dist/{v5.b49d2d7615d030b68f89.js.LICENSE.txt → v5.4b881dc40345f5053736.js.LICENSE.txt} +0 -0
@@ -10,7 +10,7 @@ html::view-transition-group(prosemirror-enhancement) {
10
10
  }
11
11
 
12
12
  &.block.readOnly {
13
- @apply grid grid-cols-[1fr_auto] gap-2 rounded-lg border p-2 [grid-template-areas:'label_menu''preview_preview'] hover:border-gray-300 hover:bg-gray-50;
13
+ @apply grid h-auto grid-cols-[1fr_auto] gap-2 rounded-lg border p-2 [grid-template-areas:'label_menu''preview_preview'] hover:border-gray-300 hover:bg-gray-50;
14
14
  }
15
15
 
16
16
  &:where(.readOnly.ProseMirror-selectednode) {
@@ -28,7 +28,8 @@ html::view-transition-group(prosemirror-enhancement) {
28
28
  @apply flex gap-2 py-1 text-sm font-medium text-gray-900;
29
29
  }
30
30
 
31
- .Enhancement-preview {
31
+ .Enhancement-preview,
32
+ .Enhancement-initialBody {
32
33
  @apply [grid-area:preview];
33
34
  }
34
35
 
@@ -920,6 +920,17 @@ onFind('.ProfileDropdown-items', (items: HTMLElement) => {
920
920
  items.closest('.Widget')?.classList.add('has-profileDropdown')
921
921
  })
922
922
 
923
+ // Lets Widget.css row out buttons with no ActionBar collecting them, without a :has() on the form.
924
+ onFind(
925
+ ['.Widget > form > .Button', '.Widget > form > .fixedScrollable > .Button'],
926
+ (button: HTMLElement) => {
927
+ const form = button.parentElement
928
+ if (form && !form.querySelector(':scope > .ActionBar')) {
929
+ form.classList.add('has-looseButtons')
930
+ }
931
+ },
932
+ )
933
+
923
934
  onFind('.Widget-controls', (controls: HTMLElement) => {
924
935
  const widget = controls.closest<HTMLElement>('.Widget')
925
936
  if (!widget) return
@@ -1,5 +1,5 @@
1
1
  .FileInput {
2
- @apply relative flex cursor-pointer flex-col items-center gap-3 rounded-lg border border-gray-300 px-6 py-4 before:btu-icon before:btu-icon-upload before:rounded-full before:bg-gray-100 before:p-2 before:text-primary-700 after:text-sm after:font-semibold after:text-primary-700 after:[content:attr(data-choose)] hover:border-gray-300 hover:bg-gray-100 hover:before:bg-gray-200 hover:before:text-gray-700 hover:after:underline hover:after:[content:attr(data-choose)];
2
+ @apply relative flex max-w-[540px] cursor-pointer flex-col items-center gap-3 rounded-lg border border-gray-300 px-6 py-4 before:btu-icon before:btu-icon-upload before:rounded-full before:bg-gray-100 before:p-2 before:text-primary-700 after:text-sm after:font-semibold after:text-primary-700 after:[content:attr(data-choose)] hover:border-gray-300 hover:bg-gray-100 hover:before:bg-gray-200 hover:before:text-gray-700 hover:after:underline hover:after:[content:attr(data-choose)];
3
3
 
4
4
  input[type='file'] {
5
5
  @apply absolute bottom-0 left-0 right-0 top-0 cursor-pointer border-0 p-0 opacity-0;
@@ -87,10 +87,13 @@ declare global {
87
87
  imageHeight: string
88
88
  imageHeightOpen: string
89
89
  imageHeightClose: string
90
+ chartNoData: string
90
91
  fieldSelect: string
91
92
  fieldHide: string
92
93
  filtersHide: string
93
94
  filtersShow: string
95
+ formFilterNoResults: string
96
+ formFilterPlaceholder: string
94
97
  focusTrapHint: string
95
98
  fullScreen: string
96
99
  fullScreenSearch: string
@@ -18,11 +18,11 @@
18
18
  --guide-title-h: calc(var(--guide-edit-icon-size) + theme(padding.6));
19
19
  --guide-controls-w: calc(2 * var(--guide-edit-icon-size) + theme(padding.8));
20
20
 
21
- @apply btu-heading-4 relative h-[var(--guide-title-h)] truncate border-b border-b-gray-200 bg-gray-50 py-3.5 pl-4 pr-[var(--guide-controls-w)] text-gray-900;
21
+ @apply btu-heading-4 relative h-[var(--guide-title-h)] truncate border-b border-b-gray-200 bg-gray-50 py-3.5 ps-4 pe-[var(--guide-controls-w)] text-gray-900;
22
22
  }
23
23
 
24
24
  .Guide-controls {
25
- @apply absolute right-4 top-3 flex items-center gap-2;
25
+ @apply absolute end-4 top-3 flex items-center gap-2;
26
26
  }
27
27
 
28
28
  .Guide-edit {
@@ -104,15 +104,15 @@
104
104
  }
105
105
 
106
106
  .Guide-embedded {
107
- @apply relative ml-2.5 pl-2.5 shadow-[-1px_0_0_theme(colors.gray.300)];
107
+ @apply relative ms-2.5 ps-2.5 shadow-[-1px_0_0_theme(colors.gray.300)] rtl:shadow-[1px_0_0_theme(colors.gray.300)];
108
108
 
109
109
  > .Guide-edit {
110
- @apply absolute right-0 top-[calc(0px-var(--guide-edit-icon-size)-0.5rem-1px)];
110
+ @apply absolute end-0 top-[calc(0px-var(--guide-edit-icon-size)-0.5rem-1px)];
111
111
  }
112
112
 
113
113
  .Guide-field,
114
114
  .Guide-description {
115
- @apply pl-1 pr-0;
115
+ @apply ps-1 pe-0;
116
116
  }
117
117
 
118
118
  .Guide-tabCluster {
@@ -79,7 +79,7 @@
79
79
  .is-imagePreview {
80
80
  --icon-button-w: 37px;
81
81
 
82
- @apply relative grid max-w-[calc(360px-theme(spacing.8))] items-center overflow-hidden [grid-template-areas:'preview_preview_preview''groups_open_edit''message_message_message'] [grid-template-columns:calc(100%-var(--icon-button-w)*2)_auto_auto] before:relative before:h-full before:rounded-t-lg before:border before:border-b-0 before:border-gray-300 before:[grid-area:preview];
82
+ @apply relative w-fit grid items-center overflow-hidden [grid-template-areas:'preview_preview_preview''groups_open_edit''message_message_message'] [grid-template-columns:calc(100%-var(--icon-button-w)*2)_auto_auto] before:relative before:h-full before:rounded-t-lg before:border before:border-b-0 before:border-gray-300 before:[grid-area:preview];
83
83
  }
84
84
 
85
85
  .ImageEditor-editToggle,
@@ -27,6 +27,10 @@
27
27
  --link-h-min: calc(theme(lineHeight.4) + theme(spacing.2));
28
28
 
29
29
  @apply flex max-h-[--link-h-max] min-h-[--link-h-min] items-center rounded-lg;
30
+
31
+ &:not(:first-child) {
32
+ @apply mt-2;
33
+ }
30
34
  }
31
35
 
32
36
  > li.Message {
@@ -1,5 +1,5 @@
1
1
  .objectId-edit-heading {
2
- @apply btu-button btu-button-fill-none btu-button-primary blokk truncate rounded-none border-b border-solid border-b-primary-200 bg-primary-25 p-4 text-sm font-normal [grid-area:back] focus-visible:ring-primary-100 before:btu-icon before:btu-icon-arrow-left before:me-2 focus:rounded-none focus-visible:ring-4 focus-visible:ring-inset;
2
+ @apply btu-button btu-button-fill-none btu-button-primary blokk truncate rounded-none border-b border-solid border-b-primary-200 bg-primary-25 p-4 text-sm font-normal [grid-area:back] focus-visible:ring-primary-100 before:btu-icon before:btu-icon-arrow-left rtl:before:btu-icon-arrow-right before:me-2 focus:rounded-none focus-visible:ring-4 focus-visible:ring-inset;
3
3
  }
4
4
 
5
5
  .Grid:has(.LiveBlogGrid),
@@ -15,7 +15,7 @@
15
15
  }
16
16
 
17
17
  .LiveBlogPostList-open {
18
- @apply btu-button btu-button-text-hidden btu-button-fill-none btu-button-gray absolute top-[calc(var(--page-broadcast-h)+var(--page-broadcastAlert-h)_+_52px_+_theme(spacing.2))] z-[1] before:btu-icon before:btu-icon-chevron-left md:hidden;
18
+ @apply btu-button btu-button-text-hidden btu-button-fill-none btu-button-gray absolute top-[calc(var(--page-broadcast-h)+var(--page-broadcastAlert-h)_+_52px_+_theme(spacing.2))] z-[1] before:btu-icon before:btu-icon-chevron-left rtl:before:btu-icon-chevron-right md:hidden;
19
19
  }
20
20
 
21
21
  .LiveBlogGrid:not(.is-visible) .LiveBlogPostList-open {
@@ -20,7 +20,7 @@
20
20
  > ul {
21
21
  --ProseMirror-toolbar-h: calc(theme(spacing.4) + theme(lineHeight.6));
22
22
 
23
- @apply relative inline-flex h-[var(--ProseMirror-toolbar-h)] w-full flex-wrap items-center gap-y-3 overflow-clip py-2 pr-[calc(var(--ProseMirrorToolbar-rightControls)+var(--ProseMirror-wordCount)+var(--iconSize-xs))] ps-3;
23
+ @apply relative inline-flex h-[var(--ProseMirror-toolbar-h)] w-full flex-wrap items-center gap-y-3 overflow-clip py-2 pe-[calc(var(--ProseMirrorToolbar-rightControls)+var(--ProseMirror-wordCount)+var(--iconSize-xs))] ps-3;
24
24
 
25
25
  .rte2-toolbar-submenu-2,
26
26
  .rte2-toolbar-separator,
@@ -44,12 +44,17 @@
44
44
 
45
45
  /* SUBMENUS */
46
46
  .rte2-toolbar-submenu-2 {
47
- &:not(
48
- [data-rte-toolbar-submenu='Format'],
49
- [data-rte-toolbar-submenu='Embed'],
50
- [data-rte-toolbar-submenu='Substitutions']
47
+ /* Only these render an icon (or a bare chevron) instead of their name, so only these
48
+ can afford to collapse the label. Every other submenu name reaches the DOM verbatim
49
+ from @RichTextElement.Tag(menu = ...) and has no icon, so hiding it leaves nothing.
50
+ :is() rather than :where() to keep the specificity the sibling rule below assumes. */
51
+ &:is(
52
+ [data-rte-toolbar-submenu='Style'],
53
+ [data-rte-toolbar-submenu='Align'],
54
+ [data-rte-toolbar-submenu='Enhancements']
51
55
  )
52
- > button {
56
+ > button,
57
+ &.rte-overflow-btn > button {
53
58
  @apply btu-button-text-hidden;
54
59
  }
55
60
 
@@ -119,7 +124,8 @@
119
124
  }
120
125
 
121
126
  .CIG-wordCount {
122
- @apply absolute end-3 top-1.5 z-10 opacity-100;
127
+ /* pointer-events-none keeps the status box from swallowing clicks meant for the overflow button beneath it */
128
+ @apply pointer-events-none absolute end-3 top-1.5 z-10 opacity-100;
123
129
 
124
130
  /* Override inline styles from JS */
125
131
  @apply [--ProseMirror-wordCountSpacingWithOneIcon:52px] [--ProseMirror-wordCountSpacingWithThreeIcons:120px] [--ProseMirror-wordCountSpacingWithTwoIcons:85px];
@@ -34,16 +34,11 @@
34
34
  }
35
35
 
36
36
  a {
37
- @apply order-3 ms-auto font-semibold text-[--link-color] decoration-solid decoration-auto max-md:ms-0;
37
+ @apply order-3 font-semibold text-[--link-color] decoration-solid decoration-auto;
38
38
  }
39
39
 
40
- /* The Message-icon is always JS-appended last (see Message.js), so a leading anchor means the
41
- message is just an icon + a bare link (e.g. Book Outline's link, ToolUser's password reset
42
- link) - it should hug the icon now that the bar is full width, not drift to the far end.
43
- Messages with real content before the link (e.g. a heading + a "view results" link) are
44
- unaffected and keep the link pinned to the end. */
45
- > a:first-child {
46
- @apply ms-0;
40
+ .ContentEdit-revisionActions, .WorkInProgressRestoredMessage-actions a, .Message-returnToDashboard {
41
+ @apply ms-auto max-md:ms-0;
47
42
  }
48
43
 
49
44
  .is-emphasis {
@@ -174,7 +169,7 @@
174
169
  }
175
170
 
176
171
  a {
177
- @apply order-[0] ms-0;
172
+ @apply order-[0];
178
173
  }
179
174
 
180
175
  .ComboInput {
@@ -67,7 +67,7 @@
67
67
  }
68
68
 
69
69
  .Page-broadcastAlert {
70
- @apply flex max-h-[--page-broadcastAlert-h] border-b border-b-error-200 bg-error-25 p-4 text-sm leading-4 text-error-600 before:btu-icon before:btu-icon-triangle-alert before:me-4 before:text-[--link-color] more-contrast:text-error-700 more-contrast:[--link-color:theme(colors.error.800)] md:col-span-full;
70
+ @apply flex items-center h-[--page-broadcastAlert-h] border-b border-b-error-200 bg-error-25 px-4 text-sm leading-4 text-error-600 before:btu-icon before:btu-icon-triangle-alert before:me-4 before:text-[--link-color] more-contrast:text-error-700 more-contrast:[--link-color:theme(colors.error.800)] md:col-span-full;
71
71
  }
72
72
 
73
73
  .Page-broadcastAlert a {
@@ -75,7 +75,7 @@
75
75
  }
76
76
 
77
77
  .Page-broadcastAlert-messages {
78
- @apply me-auto overflow-y-hidden overflow-x-scroll;
78
+ @apply me-auto h-full py-4 overflow-y-hidden overflow-x-auto [scrollbar-width:thin];
79
79
  }
80
80
 
81
81
  .Page-broadcastAlert .pagination {
@@ -101,7 +101,7 @@
101
101
  }
102
102
 
103
103
  .Page-broadcast {
104
- @apply max-h-[--page-broadcast-h] overflow-y-hidden overflow-x-scroll border-b border-b-warning-200 bg-warning-25 p-4 text-sm leading-4 text-warning-700 [--link-color:theme(colors.warning.800)] before:btu-icon before:btu-icon-triangle-alert before:me-4 before:text-[--link-color] more-contrast:text-warning-800 md:col-span-full;
104
+ @apply max-h-[--page-broadcast-h] overflow-y-hidden overflow-x-auto [scrollbar-width:thin] border-b border-b-warning-200 bg-warning-25 p-4 text-sm leading-4 text-warning-700 [--link-color:theme(colors.warning.800)] before:btu-icon before:btu-icon-triangle-alert before:me-4 before:text-[--link-color] more-contrast:text-warning-800 md:col-span-full;
105
105
 
106
106
  /*
107
107
  Submitting a form inside a broadcast (Ex: Stop scheduling)
@@ -161,11 +161,12 @@
161
161
 
162
162
  > a {
163
163
  @apply grid auto-cols-[0px] grid-flow-col grid-cols-[max-content] items-center justify-center rounded-lg text-[0] @[80px]:grid-cols-[max-content_minmax(0,1fr)_max-content] max-md:grow;
164
+ }
164
165
 
165
- /* Displays site name if site switcher is missing (e.g. user has access to only 1 site) */
166
- .Page-siteName {
167
- @apply hidden @[80px]:col-[2/3] @[80px]:line-clamp-1 @[80px]:blokk @[80px]:truncate @[80px]:px-2 @[80px]:text-sm;
168
- }
166
+ /* Displays site name when no site switcher is present; at .Page-title level (not nested under
167
+ > a) because v5.ts moves .toolUserSite into .Page-title as a sibling of > a */
168
+ .Page-siteName {
169
+ @apply hidden @[80px]:col-[2/3] @[80px]:line-clamp-1 @[80px]:blokk @[80px]:truncate @[80px]:px-2 @[80px]:text-sm;
169
170
  }
170
171
 
171
172
  > a:hover a[target='siteSwitch'] {
@@ -232,8 +233,30 @@
232
233
  }
233
234
 
234
235
  .Page-header {
235
- @apply flex w-full items-center justify-end overflow-hidden border-b bg-white p-4 text-gray-700 max-md:gap-4 md:h-[var(--page-header-h)] md:flex-nowrap md:@container/page-header;
236
+ @apply flex w-full items-center justify-end overflow-hidden border-b p-4 text-[var(--Page-header-fg,theme(colors.gray.700))] max-md:gap-4 md:h-[var(--page-header-h)] md:flex-nowrap md:@container/page-header;
236
237
  grid-area: header;
238
+ /* Defaults to the original `bg-white` token; overridden by the V5 custom header color. */
239
+ background-color: var(--Page-header-bg, var(--btu-theme-white));
240
+ /*
241
+ srgb-linear (not oklch) so r/g/b are linear-light and 0.2126r+0.7152g+0.0722b is true WCAG
242
+ luminance — the black/white flip is then correct at any saturation. 0.198 is the white↔#171717
243
+ (≈linear 0.0086) crossover; *100000 makes the clamp a hard step. Unset --Page-header-bg makes
244
+ this invalid on purpose, so .Page-header falls back to gray-700. Needs relative-color syntax:
245
+ Chrome 119 / Safari 16.4 / Firefox 128.
246
+ */
247
+ --Page-header-fg: color(from var(--Page-header-bg) srgb-linear
248
+ clamp(0.0086, (0.198 - (0.2126 * r + 0.7152 * g + 0.0722 * b)) * 100000, 1)
249
+ clamp(0.0086, (0.198 - (0.2126 * r + 0.7152 * g + 0.0722 * b)) * 100000, 1)
250
+ clamp(0.0086, (0.198 - (0.2126 * r + 0.7152 * g + 0.0722 * b)) * 100000, 1));
251
+ }
252
+
253
+ /*
254
+ currentColor so the icons follow the header's derived fg (gray-700 by default). Kept a low-
255
+ specificity element selector on purpose: the button component's per-state hover/pressed tokens
256
+ must still win over this rest-state override.
257
+ */
258
+ .Page-header button {
259
+ --button-fill-none-text-color: currentColor;
237
260
  }
238
261
 
239
262
  .Page-header > * {
@@ -901,7 +924,7 @@
901
924
  }
902
925
 
903
926
  .Page-create .ComboInput-label {
904
- --button-border-radius: 50%;
927
+ --button-border-radius: .5rem;
905
928
  @apply btu-button btu-button-text-hidden btu-button-fill-none btu-button-gray before:btu-icon before:btu-icon-plus;
906
929
  }
907
930
 
@@ -335,10 +335,27 @@
335
335
  }
336
336
 
337
337
  .Popup[name^='conversation-'],
338
- .Popup[name='toolUserSaveSearch'] {
338
+ .Popup[name='toolUserSaveSearch'],
339
+ .Popup[name='contentReportingStatus'],
340
+ .Popup.is-contentReportingStatus {
339
341
  @apply [--popup-h:auto];
340
342
  }
341
343
 
344
+ /* Report status download bar and form fields sit directly in the frame
345
+ (outside a Widget grid), so they need their own inset. The is-* class covers
346
+ the same page opened through the Past Report Results view popup, which uses
347
+ a generic objectId-edit frame (marked by ContentReporting.js). */
348
+ .Popup[name='contentReportingStatus'] .frame,
349
+ .Popup.is-contentReportingStatus .frame {
350
+ > .ContentReporting-status {
351
+ @apply pt-6;
352
+ }
353
+
354
+ > .CIG {
355
+ @apply px-6 pb-6;
356
+ }
357
+ }
358
+
342
359
  /* Available schedules popup */
343
360
  .frame[name='scheduleList'] {
344
361
  ul {
@@ -1,7 +1,7 @@
1
1
  .ProseMirror {
2
2
  --ProseMirror-numLines: 10;
3
3
 
4
- @apply min-h-[calc(var(--ProseMirror-numLines)*theme(lineHeight.4))] whitespace-pre-wrap rounded-b-lg px-4 py-[var(--lineHeight-m)] focus:[box-shadow:none];
4
+ @apply min-h-[calc(var(--ProseMirror-numLines)*theme(lineHeight.4))] whitespace-pre-wrap rounded-b-lg px-4 py-[var(--lineHeight-m)] leading-[normal] focus:[box-shadow:none];
5
5
  }
6
6
 
7
7
  :where(.ProseMirror-fullscreen-container) {
@@ -61,7 +61,7 @@
61
61
  }
62
62
 
63
63
  .RCIG-item > & {
64
- @apply after:btu-icon after:btu-icon-chevron-up after:absolute after:right-2 after:top-2 after:ms-auto after:size-7 after:shrink-0 after:items-center after:justify-center after:rounded-lg after:bg-white;
64
+ @apply after:btu-icon after:btu-icon-chevron-up after:absolute after:end-2 after:top-2 after:ms-auto after:size-7 after:shrink-0 after:items-center after:justify-center after:rounded-lg after:bg-white;
65
65
  }
66
66
 
67
67
  .RCIG-item.is-collapsed > &,
@@ -316,11 +316,11 @@
316
316
 
317
317
  > .ContentSelector-edit,
318
318
  > .ContentSummary-info {
319
- @apply overflow-visible after:absolute after:-left-1 after:-top-[5px] after:h-9 after:w-px after:bg-gray-200 touch-device:after:-bottom-0 touch-device:after:top-0 touch-device:after:h-[unset] more-contrast:bg-gray-400;
319
+ @apply overflow-visible after:absolute after:-start-1 after:-top-[5px] after:h-9 after:w-px after:bg-gray-200 touch-device:after:-bottom-0 touch-device:after:top-0 touch-device:after:h-[unset] more-contrast:bg-gray-400;
320
320
  }
321
321
 
322
322
  > .ContentSelector-search {
323
- @apply col-start-2 before:right-0 before:top-0 touch-device:before:right-auto touch-device:before:top-auto;
323
+ @apply col-start-2 before:end-0 before:top-0 touch-device:before:end-auto touch-device:before:top-auto;
324
324
 
325
325
  > span {
326
326
  @apply hidden;
@@ -362,7 +362,7 @@
362
362
  }
363
363
 
364
364
  .ContentSelector-search {
365
- @apply row-start-1 before:absolute before:right-[calc(theme(size.9)*2_+_theme(spacing.1))] before:top-[calc(144px_+_theme(spacing.1))];
365
+ @apply row-start-1 before:absolute before:end-[calc(theme(size.9)*2_+_theme(spacing.1))] before:top-[calc(144px_+_theme(spacing.1))];
366
366
  }
367
367
 
368
368
  .ContentSelector-search figure {
@@ -380,7 +380,7 @@
380
380
  [data-preview='']
381
381
  )
382
382
  + .ContentSelector-search {
383
- @apply h-[calc(9rem+1px)] w-full max-w-none overflow-visible rounded-none border-b border-solid border-b-gray-300 bg-gray-50 no-underline before:btu-button before:btu-button-text-hidden before:btu-button-fill-none before:btu-button-gray before:btu-button-xs before:btu-icon touch-device:btu-button-sm before:absolute before:right-1 before:top-full before:mt-[5px];
383
+ @apply h-[calc(9rem+1px)] w-full max-w-none overflow-visible rounded-none border-b border-solid border-b-gray-300 bg-gray-50 no-underline before:btu-button before:btu-button-text-hidden before:btu-button-fill-none before:btu-button-gray before:btu-button-xs before:btu-icon touch-device:btu-button-sm before:absolute before:end-1 before:top-full before:mt-[5px];
384
384
 
385
385
  + .ContentSelector-edit {
386
386
  @apply hidden;
@@ -102,7 +102,7 @@
102
102
  }
103
103
 
104
104
  .Revisions-compare {
105
- @apply btu-button-text-hidden before:btu-icon before:btu-icon-arrow-right;
105
+ @apply btu-button-text-hidden before:btu-icon before:btu-icon-arrow-right rtl:before:btu-icon-arrow-left;
106
106
  }
107
107
 
108
108
  .Revisions-listItem.is-parentRevision {
@@ -239,11 +239,15 @@
239
239
  }
240
240
 
241
241
  .Revisions-workflowTransition .Revisions-userLabel {
242
- @apply text-xs font-medium text-gray-500;
242
+ @apply inline;
243
+ }
244
+
245
+ .Revisions-workflowTransition .Revisions-userLabel::before {
246
+ @apply content-['_'];
243
247
  }
244
248
 
245
249
  .Revisions-workflowTransition .Revisions-userLabel > span {
246
- @apply me-0.5 min-w-max;
250
+ @apply me-0.5;
247
251
  }
248
252
 
249
253
  .Revisions-workflowComment {
@@ -255,7 +259,7 @@
255
259
  }
256
260
 
257
261
  .Revisions-workflowStateIcon {
258
- @apply grid cursor-auto place-items-center before:btu-icon before:btu-icon-arrow-right before:font-semibold before:text-gray-500 before:btu-icon-xs;
262
+ @apply grid cursor-auto place-items-center before:btu-icon before:btu-icon-arrow-right rtl:before:btu-icon-arrow-left before:font-semibold before:text-gray-500 before:btu-icon-xs;
259
263
  }
260
264
 
261
265
  /* Adjustments to Guide styles within a Popup (ie, Sites history) */
@@ -88,13 +88,13 @@
88
88
 
89
89
  /* Override input styles so they appear as arrow buttons */
90
90
  .SearchFields-sort-item-label input.SearchFields-input {
91
- @apply btu-button btu-button-text-hidden !btu-button-fill-none btu-button-gray btu-button-xs shrink-0 border-none before:btu-icon before:btu-icon-circle-arrow-right touch-device:btu-button-sm after:hidden;
91
+ @apply btu-button btu-button-text-hidden !btu-button-fill-none btu-button-gray btu-button-xs shrink-0 border-none before:btu-icon before:btu-icon-circle-arrow-right rtl:before:btu-icon-circle-arrow-left touch-device:btu-button-sm after:hidden;
92
92
  }
93
93
 
94
94
  .SearchFields-displayContainer
95
95
  .SearchFields-sort-item-label
96
96
  input.SearchFields-input {
97
- @apply before:btu-icon-circle-arrow-left;
97
+ @apply before:btu-icon-circle-arrow-left rtl:before:btu-icon-circle-arrow-right;
98
98
  }
99
99
 
100
100
  .SearchFields-sort-item-span {
@@ -1,17 +1,8 @@
1
- /*
2
- * Dialog.css assigns grid-template-rows: subgrid to all .has-ActionBarContent elements
3
- * via a deeply-nested selector at specificity (0,4,1). The Advanced Query Builder form
4
- * needs its own 4-row grid (header | scrollpane | 1fr spacer | ActionBar), so !important
5
- * is the only way to override it from outside Dialog.css.
6
- */
7
- .SearchWidgetAdvanced > form.has-ActionBarContent {
8
- grid-template-rows: min-content min-content 1fr min-content !important;
9
- align-items: stretch;
10
- height: 100%;
11
- }
12
-
13
1
  .SearchWidgetAdvanced > form {
14
- @apply pt-6;
2
+ /* 4-row grid: header | scrollpane | 1fr spacer | ActionBar. Columns come
3
+ from the Widget grid; Dialog.css exempts this widget from its popup
4
+ column layout so the grid here stays in charge. */
5
+ @apply col-[fullbleed-start/fullbleed-end] grid h-full grid-cols-subgrid items-stretch pt-6 [grid-template-rows:min-content_min-content_1fr_min-content];
15
6
 
16
7
  /* Explicit row assignments for the 4-row grid above.
17
8
  * Row 1: header (ComboInput + add button side by side)
@@ -152,10 +152,10 @@
152
152
  }
153
153
 
154
154
  .TabBar-item.is-error a {
155
- --tabitem-padding-right: calc(
155
+ --tabitem-padding-end: calc(
156
156
  theme(gap.2) + theme(iconSize.md) + theme(padding[1.5])
157
157
  );
158
- @apply -mr-[--tabitem-padding-right] pr-[--tabitem-padding-right];
158
+ @apply -me-[--tabitem-padding-end] pe-[--tabitem-padding-end];
159
159
  }
160
160
 
161
161
  /* Account for different structure of dashboard tabs */
@@ -168,7 +168,7 @@
168
168
  &:has(> .TC, > .CIG, > .SearchInput, > .ActionBar) {
169
169
  @apply grid grid-cols-subgrid [grid-column:fullbleed-start_/_fullbleed-end];
170
170
 
171
- & > :not(.ActionBar, .Widget-controls, .Message) {
171
+ & > :not(.ActionBar, .Widget-controls, .Message, .Button) {
172
172
  @apply px-0 [grid-column:content-start_/_content-end];
173
173
  }
174
174
  }
@@ -178,6 +178,25 @@
178
178
  }
179
179
  }
180
180
 
181
+ /* Keeps loose buttons at intrinsic width in the content column; inert once the form is flex. */
182
+ .Widget > form > .Button,
183
+ .Widget > form > .fixedScrollable > .Button {
184
+ @apply justify-self-start [grid-column:content-start_/_content-end];
185
+ }
186
+
187
+ /* Grid gives each child its own row; flex lets loose buttons flow. content-start keeps wrap lines
188
+ together when the widget is taller than its content. Class is stamped in Entry.ts — a :has()
189
+ would nest in the grid block above, which is re-emitted per `@apply Widget` consumer. The class
190
+ is doubled to outrank that block. */
191
+ .Widget > form.has-looseButtons.has-looseButtons,
192
+ .Widget > form > .fixedScrollable.has-looseButtons.has-looseButtons {
193
+ @apply flex flex-wrap content-start items-center gap-2 px-[--space] pb-[--space];
194
+
195
+ > :not(.Button) {
196
+ @apply basis-full;
197
+ }
198
+ }
199
+
181
200
  /* Provide a matching gap at the bottom of scrollable widgets with a CIG at the end */
182
201
  .Widget > .StandardForm .CIG:not(+ .ActionBar),
183
202
  .Widget > form > .fixedScrollable > .CIG:last-child {
@@ -433,7 +452,7 @@ btu-widget.SearchWidget-create {
433
452
  }
434
453
 
435
454
  .fixedScrollable .CIG-row {
436
- @apply after:left-[calc(1px_-_var(--CIG-padding))];
455
+ @apply after:start-[calc(1px_-_var(--CIG-padding))];
437
456
  }
438
457
 
439
458
  /* ContentEditDrawer Widget (The Shelf) */
@@ -448,6 +467,14 @@ btu-widget.SearchWidget-create {
448
467
  @apply bg-gray-50;
449
468
  }
450
469
 
470
+ .Widget[data-internal-name='com.psddev.cms.tool.content.ReferencesWidget'] {
471
+ > p {
472
+ > a.icon-action-search {
473
+ @apply my-4 w-full btu-button btu-button-outline btu-button-sm btu-button-gray btu-button-fill-none before:btu-icon before:btu-icon-search;
474
+ }
475
+ }
476
+ }
477
+
451
478
  /* Translations Widget */
452
479
  .Widget[data-internal-name='com.psddev.translation.page.TranslationTab'] > * {
453
480
  @apply col-span-full;
@@ -308,14 +308,23 @@ export default class Dialog extends ComponentStatesMixin(
308
308
 
309
309
  popupContent.classList.add('has-ActionBar')
310
310
 
311
- // Mark ancestors of ActionBars that have substantive content
312
311
  actionBars.forEach((actionBar) => {
312
+ // Mark ancestors of ActionBars that have substantive content
313
313
  const hasContent = actionBar.querySelector(
314
314
  ':scope > *:not(.ImageEditor-closeButton)',
315
315
  )
316
316
  if (hasContent) {
317
317
  this._markAncestors(actionBar, 'has-ActionBarContent', popupContent)
318
318
  }
319
+
320
+ // Mark the element immediately before an ActionBar
321
+ const previous = actionBar.previousElementSibling
322
+ const isPrePublishScrollable =
323
+ previous?.classList.contains('fixedScrollable') &&
324
+ previous.closest('.Widget.PrePublish')
325
+ if (previous && !isPrePublishScrollable) {
326
+ previous.classList.add('before-ActionBar')
327
+ }
319
328
  })
320
329
 
321
330
  // Mark ancestors of status messages
@@ -326,23 +335,6 @@ export default class Dialog extends ComponentStatesMixin(
326
335
  messages.forEach((message) => {
327
336
  this._markAncestors(message, 'has-StatusMessage', dialog)
328
337
  })
329
-
330
- // Mark elements that appear immediately before an ActionBar
331
- const candidates = this._findInScope(
332
- scope,
333
- 'form, .TC, .AIChat-wrapper, .fixedScrollable',
334
- )
335
- candidates.forEach((element) => {
336
- const isBeforeActionBar =
337
- element.nextElementSibling?.classList.contains('ActionBar')
338
- const isPrePublishScrollable =
339
- element.classList.contains('fixedScrollable') &&
340
- element.closest('.Widget.PrePublish')
341
-
342
- if (isBeforeActionBar && !isPrePublishScrollable) {
343
- element.classList.add('before-ActionBar')
344
- }
345
- })
346
338
  }
347
339
 
348
340
  private async _handleClose(e?: Event): Promise<void> {
@@ -17,10 +17,10 @@ export default class FormFilter extends LitElement {
17
17
  static noFilterTypes = new Set(['option', 'textarea'])
18
18
 
19
19
  @property()
20
- noMatches = 'No Results!'
20
+ noMatches = window.BRIGHTSPOT?.ui?.tooltips?.formFilterNoResults ?? 'No Results!'
21
21
 
22
22
  @property()
23
- placeholder = 'Find in form'
23
+ placeholder = window.BRIGHTSPOT?.ui?.tooltips?.formFilterPlaceholder ?? 'Find in form'
24
24
 
25
25
  @property()
26
26
  selector = 'form > .CIG'
@@ -0,0 +1 @@
1
+ .ProseMirror{--ProseMirror-numLines:10;min-height:calc(var(--ProseMirror-numLines) * 1.25rem);white-space:pre-wrap;line-height:normal}[dir] .ProseMirror{padding-top:var(--lineHeight-m);padding-bottom:var(--lineHeight-m)}[dir=ltr] .ProseMirror,[dir=rtl] .ProseMirror{border-bottom-right-radius:.5rem;border-bottom-left-radius:.5rem;padding-left:1rem;padding-right:1rem}[dir] .ProseMirror:focus{box-shadow:none}:where(.ProseMirror-fullscreen-container){height:.25rem;overflow:hidden}.ProseMirror .rte2-style-bold{font-weight:700}.ProseMirror .rte2-style-italic{font-style:italic}.ProseMirror .rte2-style-underline{text-decoration-line:underline}.ProseMirror .rte2-style-strikethrough{text-decoration-line:line-through}[dir=ltr] .ProseMirror .cms-textAlign-left{text-align:left}[dir=rtl] .ProseMirror .cms-textAlign-left{text-align:right}[dir] .ProseMirror :where(.cms-textAlign-center,[dir] .rte2-style-align-center){text-align:center}[dir=ltr] .ProseMirror :where(.cms-textAlign-right,[dir=ltr] .rte2-style-align-right){text-align:right}[dir=rtl] .ProseMirror :where(.cms-textAlign-right,[dir=rtl] .rte2-style-align-right){text-align:left}.ProseMirror .rte2-style-subscript{bottom:-.25rem}.ProseMirror .rte2-style-subscript,.ProseMirror .rte2-style-superscript{position:relative;vertical-align:baseline;font-size:75%;line-height:0}.ProseMirror .rte2-style-superscript{top:-.5rem}.ProseMirror .rte2-style-brightspot-core-rte-heading-HeadingThree{font-size:1.125rem;line-height:1.75rem;font-weight:600}.ProseMirror .rte2-style-brightspot-core-rte-heading-HeadingTwo{font-size:1.5rem;line-height:2rem;font-weight:600}.ProseMirror :is(bsp-line,bsp-break){display:block}.ProseMirror :is(bsp-line,bsp-break):has(>.ProseMirror-trailingBreak){line-height:var(--lineHeight-m)}[dir] .ProseMirror :where(ul,[dir] ol):not(.Dropdown,[dir] .ProseMirror-tableSubmenuList){margin-top:1.25rem;margin-bottom:1.25rem}[dir=ltr] .ProseMirror :where(ul,[dir=ltr] ol):not(.Dropdown,[dir=ltr] .ProseMirror-tableSubmenuList){margin-left:2rem}[dir=rtl] .ProseMirror :where(ul,[dir=rtl] ol):not(.Dropdown,[dir=rtl] .ProseMirror-tableSubmenuList){margin-right:2rem}.ProseMirror ul{list-style-type:disc}.ProseMirror ul ul{list-style-type:circle}.ProseMirror ul ul ul{list-style-type:square}.ProseMirror ol{list-style-type:decimal}.ProseMirror ol ol{list-style-type:lower-alpha}.ProseMirror li{position:relative}.ProseMirror:has(+.ProseMirror-moveEnhancementOverlay){caret-color:transparent;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color)}[dir] .ProseMirror:has(+.ProseMirror-moveEnhancementOverlay){border-color:transparent;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 transparent)}.ProseMirror:has(+.ProseMirror-moveEnhancementOverlay)>:not(.Enhancement.readOnly.ProseMirror-selectednode){opacity:.6}.ProseMirror:has(+.ProseMirror-moveEnhancementOverlay) .Enhancement.readOnly.ProseMirror-selectednode{--tw-border-opacity:1}[dir] .ProseMirror:has(+.ProseMirror-moveEnhancementOverlay) .Enhancement.readOnly.ProseMirror-selectednode{border-color:oklch(var(--btu-theme-primary-700)/var(--tw-border-opacity))}.ProseMirror:has(+.ProseMirror-moveEnhancementOverlay) .Enhancement.readOnly.ProseMirror-selectednode>*{opacity:.6}.ProseMirror .rte2-style-comment{gap:.5rem;--tw-bg-opacity:1;--tw-text-opacity:1;color:oklch(var(--btu-theme-primary-800)/var(--tw-text-opacity))}[dir] .ProseMirror .rte2-style-comment{border-radius:.25rem;background-color:oklch(var(--btu-theme-primary-50)/var(--tw-bg-opacity))}[dir=ltr] .ProseMirror .rte2-style-comment,[dir=rtl] .ProseMirror .rte2-style-comment{margin-left:.25rem;margin-right:.25rem;padding-left:.25rem;padding-right:.25rem}.ProseMirror .rte2-style-comment:before{font-family:lucide;display:inline-flex;font-feature-settings:"liga" 0;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-size:var(--icon-size);font-style:normal;font-weight:400;letter-spacing:normal;line-height:var(--icon-size);text-transform:none;white-space:nowrap;word-wrap:normal;vertical-align:top;--tw-content:"\e116";padding-inline-end:.25rem;content:var(--tw-content);--icon-size:1.25rem}[dir=ltr] .ProseMirror .rte2-style-comment:before{direction:ltr}[dir=rtl] .ProseMirror .rte2-style-comment:before{direction:rtl}.ProseMirror .rte2-style-comment[data-collapse=true]:before{content:var(--tw-content);padding-inline-end:0}.ProseMirror .rte2-style-comment .collapsed{display:none}.is-locked .ProseMirror .rte2-style-comment{opacity:.6}.ProseMirror-comments{display:none}.rte2-style-ins-insert{--tw-bg-opacity:1;--tw-text-opacity:1;color:oklch(var(--btu-theme-success-900)/var(--tw-text-opacity));text-decoration-line:none}[dir] .rte2-style-ins-insert{background-color:oklch(var(--btu-theme-success-200)/var(--tw-bg-opacity))}.rte2-style-ins-insert .Enhancement{--tw-bg-opacity:1}[dir] .rte2-style-ins-insert .Enhancement{background-color:oklch(var(--btu-theme-success-50)/var(--tw-bg-opacity))}.rte2-style-ins-delete{--tw-bg-opacity:1;--tw-text-opacity:1;color:oklch(var(--btu-theme-error-900)/var(--tw-text-opacity))}[dir] .rte2-style-ins-delete{background-color:oklch(var(--btu-theme-error-200)/var(--tw-bg-opacity))}.rte2-style-ins-delete .Enhancement{--tw-bg-opacity:1;--tw-text-opacity:1;color:oklch(var(--btu-theme-error-600)/var(--tw-text-opacity))}[dir] .rte2-style-ins-delete .Enhancement{background-color:oklch(var(--btu-theme-error-50)/var(--tw-bg-opacity))}.rte2-style-ins-delete .ProsemirrorEnhancementMenu{display:none}[dir] .ProseMirror-previewMode .rte2-style-ins-insert,[dir] .ProseMirror-previewMode .rte2-style-ins-insert .Enhancement{background-color:transparent}.ProseMirror-previewMode .rte2-style-ins-delete{display:none}.ProseMirror-aiPreviewMode .rte2-style-ins-ai{--tw-bg-opacity:1;--tw-text-opacity:1;color:oklch(var(--btu-theme-purple-900)/var(--tw-text-opacity))}[dir] .ProseMirror-aiPreviewMode .rte2-style-ins-ai{background-color:oklch(var(--btu-theme-purple-100)/var(--tw-bg-opacity))}.ProseMirror-aiInlinePreviewMode .rte2-style-ai-inline-highlight{--tw-bg-opacity:1}[dir] .ProseMirror-aiInlinePreviewMode .rte2-style-ai-inline-highlight{background-color:oklch(var(--btu-theme-primary-50)/var(--tw-bg-opacity))}.ProseMirror-aiInlinePreviewMode .rte2-style-ai-inline-ins{--tw-bg-opacity:1;--tw-text-opacity:1;color:oklch(var(--btu-theme-primary-900)/var(--tw-text-opacity));text-decoration-line:none}[dir] .ProseMirror-aiInlinePreviewMode .rte2-style-ai-inline-ins{background-color:oklch(var(--btu-theme-primary-50)/var(--tw-bg-opacity))}.ProseMirror-aiInlinePreviewMode .rte2-style-ai-inline-del{--tw-bg-opacity:1;text-decoration-line:line-through}[dir] .ProseMirror-aiInlinePreviewMode .rte2-style-ai-inline-del{background-color:oklch(var(--btu-theme-gray-50)/var(--tw-bg-opacity))}.CIG-row:only-child.is-unlabeled[data-field=richText]{width:100%}