@brightspot/ui 5.0.3 → 5.1.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 (119) hide show
  1. package/dist/components/button-group/ButtonGroup.d.ts +7 -2
  2. package/dist/components/button-group/ButtonGroup.d.ts.map +1 -1
  3. package/dist/components/button-group/ButtonGroup.js +23 -16
  4. package/dist/components/button-group/ButtonGroup.js.map +1 -1
  5. package/dist/components/card/Card.css +7 -0
  6. package/dist/components/card/Card.d.ts +244 -0
  7. package/dist/components/card/Card.d.ts.map +1 -0
  8. package/dist/components/card/Card.js +512 -0
  9. package/dist/components/card/Card.js.map +1 -0
  10. package/dist/components/empty-state/EmptyState.d.ts +11 -2
  11. package/dist/components/empty-state/EmptyState.d.ts.map +1 -1
  12. package/dist/components/empty-state/EmptyState.js +19 -8
  13. package/dist/components/empty-state/EmptyState.js.map +1 -1
  14. package/dist/components/widget/Widget.d.ts +11 -2
  15. package/dist/components/widget/Widget.d.ts.map +1 -1
  16. package/dist/components/widget/Widget.js +21 -10
  17. package/dist/components/widget/Widget.js.map +1 -1
  18. package/dist/custom-elements.json +484 -0
  19. package/dist/storybook/assets/{ActionBar.stories-cyX9vc6C.js → ActionBar.stories-D9ok2eVg.js} +1 -1
  20. package/dist/storybook/assets/{ActionItem.stories-Bs-Kxp5J.js → ActionItem.stories-DjPfYpgA.js} +1 -1
  21. package/dist/storybook/assets/{Avatar.stories-B1Uee53f.js → Avatar.stories-Di3s5wxK.js} +1 -1
  22. package/dist/storybook/assets/{AvatarGroup.stories-W2EtKQBu.js → AvatarGroup.stories-CT7lYX_U.js} +1 -1
  23. package/dist/storybook/assets/{Badge.stories-BotNIO18.js → Badge.stories-9unZqfhH.js} +1 -1
  24. package/dist/storybook/assets/{Button-YTBnP55L.js → Button-DuuAvVjP.js} +1 -1
  25. package/dist/storybook/assets/{Button.stories-B-X7_d_i.js → Button.stories-KDBmJ9xt.js} +1 -1
  26. package/dist/storybook/assets/{ButtonGroup.stories-BM-pxfK2.js → ButtonGroup.stories-BeWYMkDy.js} +1 -1
  27. package/dist/storybook/assets/Card.stories-BNMJ-H5I.js +556 -0
  28. package/dist/storybook/assets/{Celebrate.stories-D9EJwzxo.js → Celebrate.stories-Cue8O4hb.js} +1 -1
  29. package/dist/storybook/assets/{Checkbox.stories-f5VLVSw5.js → Checkbox.stories-DLe4npId.js} +1 -1
  30. package/dist/storybook/assets/{CircularProgress.stories-BI9e372u.js → CircularProgress.stories-BHB2K82M.js} +1 -1
  31. package/dist/storybook/assets/{ClipboardMixin.stories-CsyJDNxc.js → ClipboardMixin.stories-mU-JGoHp.js} +1 -1
  32. package/dist/storybook/assets/{Color-6BZIO3FS-ClVOLIJG.js → Color-6BZIO3FS-D3GAvUXG.js} +1 -1
  33. package/dist/storybook/assets/{Colors.stories-hUYBvymM.js → Colors.stories-a83X2cLQ.js} +1 -1
  34. package/dist/storybook/assets/{CombinedEffects.stories-DkokyKCS.js → CombinedEffects.stories-sLTopxBQ.js} +1 -1
  35. package/dist/storybook/assets/{ComponentStatesMixin-C4I_rtgt.js → ComponentStatesMixin-CJ9pmXHc.js} +1 -1
  36. package/dist/storybook/assets/{ComponentStatesMixin.stories-BeLCYevK.js → ComponentStatesMixin.stories-DSkFzAxR.js} +1 -1
  37. package/dist/storybook/assets/{CopyToClipboard.stories-DN9oagz-.js → CopyToClipboard.stories-DqMxtd4b.js} +1 -1
  38. package/dist/storybook/assets/{Debounce.stories-CtNQAJxO.js → Debounce.stories-DV30whKw.js} +1 -1
  39. package/dist/storybook/assets/{DocsRenderer-LL677BLK-Bx1Fds2q.js → DocsRenderer-LL677BLK-DmVtYsJx.js} +3 -3
  40. package/dist/storybook/assets/{Dropdown.stories-B862-mco.js → Dropdown.stories-sCz8_Hkw.js} +1 -1
  41. package/dist/storybook/assets/{EmptyState.stories-Im3Vr4ZL.js → EmptyState.stories-kBKfr87C.js} +1 -1
  42. package/dist/storybook/assets/{Events.stories-B0tluV0t.js → Events.stories-BXdHEFJR.js} +1 -1
  43. package/dist/storybook/assets/{Heading.stories-6CzGqAAc.js → Heading.stories-B2XJMBD8.js} +1 -1
  44. package/dist/storybook/assets/{HueRipple.stories-DaQiDn9K.js → HueRipple.stories-BfzsAQYM.js} +1 -1
  45. package/dist/storybook/assets/{Icon.stories-CFkYO_7w.js → Icon.stories--pcHe1x-.js} +1 -1
  46. package/dist/storybook/assets/{IconButton.stories-DwBTqvTi.js → IconButton.stories-dbXfrgH3.js} +1 -1
  47. package/dist/storybook/assets/{LinearProgress.stories-Coxmgjmo.js → LinearProgress.stories-CApOBX0x.js} +1 -1
  48. package/dist/storybook/assets/OnFindMixin.stories-df6ckqw3.js +300 -0
  49. package/dist/storybook/assets/{Pagination.stories-CYrKX5iI.js → Pagination.stories-_MiDRipW.js} +1 -1
  50. package/dist/storybook/assets/{Popover.stories-BkGiUOfu.js → Popover.stories-9hVZFeMx.js} +1 -1
  51. package/dist/storybook/assets/{ReadyMixin-CP6tQ4FB.js → ReadyMixin-HHwtCrVi.js} +1 -1
  52. package/dist/storybook/assets/{RovingTabindexMixin.stories-CzkPw8Nl.js → RovingTabindexMixin.stories-B6MPGbVh.js} +1 -1
  53. package/dist/storybook/assets/{Rtc.stories-CVch488H.js → Rtc.stories-D3tZOSkM.js} +1 -1
  54. package/dist/storybook/assets/{ScrollShadow.stories-BGh-Irt7.js → ScrollShadow.stories-B1dTcJR4.js} +1 -1
  55. package/dist/storybook/assets/{Switch.stories-DPfP0QVK.js → Switch.stories-Bp-Guy3z.js} +1 -1
  56. package/dist/storybook/assets/{Tab.stories-CBcuRcDB.js → Tab.stories-Caxi7G_1.js} +1 -1
  57. package/dist/storybook/assets/{Tabs.stories-CDOBjYbs.js → Tabs.stories-g5Nb7YDi.js} +1 -1
  58. package/dist/storybook/assets/{Throttle.stories-Bqyul0aW.js → Throttle.stories-BzWv-mzN.js} +1 -1
  59. package/dist/storybook/assets/{Tooltip.stories-B9dohX1h.js → Tooltip.stories-BlaTc14X.js} +1 -1
  60. package/dist/storybook/assets/{Upload.stories-C7dq2Wdk.js → Upload.stories-a9edmUmW.js} +1 -1
  61. package/dist/storybook/assets/{UploadItem.stories-35zsIKTv.js → UploadItem.stories-BOIu5j_i.js} +1 -1
  62. package/dist/storybook/assets/{Welcome.stories-BuD3fpke.js → Welcome.stories-D33npbIl.js} +1 -1
  63. package/dist/storybook/assets/{Widget.stories-D2UYzfyE.js → Widget.stories-D0vHPAyP.js} +1 -1
  64. package/dist/storybook/assets/{WithTooltip-65CFNBJE-DGiY8cz9.js → WithTooltip-65CFNBJE-WOhnQufs.js} +1 -1
  65. package/dist/storybook/assets/{blocks-YjKl5E55.js → blocks-B17JEOI8.js} +5 -5
  66. package/dist/storybook/assets/{formatter-EIJCOSYU-XYAiuXAN.js → formatter-EIJCOSYU-QKmiwKu7.js} +1 -1
  67. package/dist/storybook/assets/if-defined-0srVwUDm.js +1 -0
  68. package/dist/storybook/assets/{iframe-CufEXQ5F.js → iframe-BqpRijx3.js} +225 -225
  69. package/dist/storybook/assets/iframe-DfU9RLLj.css +1 -0
  70. package/dist/storybook/assets/{index-DbEDIsEB.js → index-CpksO7cK.js} +1 -1
  71. package/dist/storybook/assets/onFind-C_VPLxg8.js +1 -0
  72. package/dist/storybook/assets/{onFind.stories-UpwJxFqR.js → onFind.stories-BuZMC3tk.js} +15 -15
  73. package/dist/storybook/assets/{onRemove.stories-BMwQGBCl.js → onRemove.stories-HDkMhdmO.js} +1 -1
  74. package/dist/storybook/assets/{onVisible.stories-axSo0Zv3.js → onVisible.stories-CRCllRfN.js} +1 -1
  75. package/dist/storybook/assets/{style-map-BkaK9546.js → style-map-DukvFNCc.js} +1 -1
  76. package/dist/storybook/assets/{syntaxhighlighter-ED5Y7EFY-CDDZTVRn.js → syntaxhighlighter-ED5Y7EFY-BUo_WYvV.js} +1 -1
  77. package/dist/storybook/iframe.html +48 -2
  78. package/dist/storybook/index.json +1 -1
  79. package/dist/storybook/project.json +1 -1
  80. package/dist/tailwind-plugin-card.d.ts +2 -0
  81. package/dist/tailwind-plugin-card.d.ts.map +1 -0
  82. package/dist/tailwind-plugin-card.js +438 -0
  83. package/dist/tailwind-plugin-card.js.map +1 -0
  84. package/dist/tailwind-plugin-card.ts +515 -0
  85. package/dist/tailwind.config.d.ts.map +1 -1
  86. package/dist/tailwind.config.js +2 -0
  87. package/dist/tailwind.config.js.map +1 -1
  88. package/dist/tailwind.config.ts +2 -0
  89. package/dist/util/EventEmitterMixin.d.ts +1 -0
  90. package/dist/util/EventEmitterMixin.d.ts.map +1 -1
  91. package/dist/util/EventEmitterMixin.js.map +1 -1
  92. package/dist/util/OnFindMixin.d.ts +55 -0
  93. package/dist/util/OnFindMixin.d.ts.map +1 -0
  94. package/dist/util/OnFindMixin.js +70 -0
  95. package/dist/util/OnFindMixin.js.map +1 -0
  96. package/dist/util/onFind.d.ts +4 -2
  97. package/dist/util/onFind.d.ts.map +1 -1
  98. package/dist/util/onFind.js +12 -0
  99. package/dist/util/onFind.js.map +1 -1
  100. package/docs/components/ButtonGroup.md +7 -3
  101. package/docs/components/Card.md +83 -0
  102. package/docs/components/EmptyState.md +10 -6
  103. package/docs/components/README.md +1 -0
  104. package/docs/components/Widget.md +18 -14
  105. package/package.json +1 -1
  106. package/src/legacy/tool-ui/src/AIInline.css +1 -1
  107. package/src/legacy/tool-ui/src/SearchWidget.ts +10 -1
  108. package/src/legacy/tool-ui/src/main/webapp/dist/{RTEProseMirror.945bd28778b1a3e937c7.js → RTEProseMirror.e8344eaeea387c600257.js} +12 -12
  109. package/src/legacy/tool-ui/src/main/webapp/dist/{v4.c5bcef50efdfa2d2e35f.js → v4.b892feb8ec199202fd18.js} +4 -4
  110. package/src/legacy/tool-ui/src/main/webapp/dist/{v5.86effb9bf858ae7b0640.js → v5.493c3ddf65c4fa599ff0.js} +4 -4
  111. package/src/legacy/tool-ui/src/main/webapp/dist/v5.d49a759cb0b7cffd76e4.css +5 -0
  112. package/src/legacy/tool-ui/src/v5.ts +3 -1
  113. package/dist/storybook/assets/if-defined-f_e-RnGa.js +0 -1
  114. package/dist/storybook/assets/iframe-PeGbyIdX.css +0 -1
  115. package/dist/storybook/assets/onFind-C7Wi8jr6.js +0 -1
  116. package/src/legacy/tool-ui/src/main/webapp/dist/v5.f60c05ef0c9b89aae888.css +0 -5
  117. /package/src/legacy/tool-ui/src/main/webapp/dist/{RTEProseMirror.945bd28778b1a3e937c7.js.LICENSE.txt → RTEProseMirror.e8344eaeea387c600257.js.LICENSE.txt} +0 -0
  118. /package/src/legacy/tool-ui/src/main/webapp/dist/{v4.c5bcef50efdfa2d2e35f.js.LICENSE.txt → v4.b892feb8ec199202fd18.js.LICENSE.txt} +0 -0
  119. /package/src/legacy/tool-ui/src/main/webapp/dist/{v5.86effb9bf858ae7b0640.js.LICENSE.txt → v5.493c3ddf65c4fa599ff0.js.LICENSE.txt} +0 -0
@@ -0,0 +1,55 @@
1
+ import { LitElement } from 'lit';
2
+ import { type Selectors } from './onFind.js';
3
+ type Constructor<T = object> = new (...args: any[]) => T;
4
+ export interface OnFindRegistration {
5
+ /** Selector(s) passed to onFind, scoped to this element as the root. */
6
+ selectors: Selectors;
7
+ /** Invoked for each matching element onFind discovers. Must be idempotent. */
8
+ callback: (el: Element) => void;
9
+ }
10
+ export declare class OnFindMixinInterface {
11
+ /**
12
+ * Return this component's onFind registration(s), or null to skip registering
13
+ * (e.g. required containers aren't present yet). Return an array to register
14
+ * several independent sweeps; each is disposed together on disconnect.
15
+ * Re-invoked on every (re)registration — query containers HERE rather than
16
+ * capturing them once, so a reattach re-binds against the current DOM.
17
+ */
18
+ onFindRegistration(): OnFindRegistration | OnFindRegistration[] | null;
19
+ }
20
+ /**
21
+ * @mixin
22
+ * Registers an {@link onFind} child-redistribution callback and tears it down on
23
+ * disconnect, so a detached component is garbage-collectable and stops being
24
+ * visited on every document mutation. Handles the detach/reattach dance: the
25
+ * onFind registration only lives while connected, and is re-armed on reattach
26
+ * (Lit's `firstUpdated` fires only once).
27
+ *
28
+ * Subclasses declare what to register via {@link onFindRegistration} and MUST
29
+ * call `super.firstUpdated()` so the initial registration runs. Return a single
30
+ * registration, or an array for several independent sweeps (all disposed
31
+ * together on disconnect).
32
+ *
33
+ * @example
34
+ * ```typescript
35
+ * class Card extends OnFindMixin(LitElement) {
36
+ * firstUpdated(changed) {
37
+ * super.firstUpdated(changed) // arms onFind
38
+ * }
39
+ * onFindRegistration() {
40
+ * return { selectors: ':scope > [slot]', callback: el => this.place(el) }
41
+ * }
42
+ * }
43
+ *
44
+ * // Or several independent sweeps:
45
+ * onFindRegistration() {
46
+ * return [
47
+ * { selectors: ':scope > [slot]', callback: el => this.place(el) },
48
+ * { selectors: '.btu-deep-thing', callback: el => this.enhance(el) },
49
+ * ]
50
+ * }
51
+ * ```
52
+ */
53
+ export declare const OnFindMixin: <T extends Constructor<LitElement>>(superClass: T) => Constructor<OnFindMixinInterface> & T;
54
+ export {};
55
+ //# sourceMappingURL=OnFindMixin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OnFindMixin.d.ts","sourceRoot":"","sources":["../../src/util/OnFindMixin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,KAAK,CAAA;AAChC,OAAe,EAAE,KAAK,SAAS,EAAE,MAAM,aAAa,CAAA;AAEpD,KAAK,WAAW,CAAC,CAAC,GAAG,MAAM,IAAI,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAA;AAExD,MAAM,WAAW,kBAAkB;IACjC,wEAAwE;IACxE,SAAS,EAAE,SAAS,CAAA;IACpB,8EAA8E;IAC9E,QAAQ,EAAE,CAAC,EAAE,EAAE,OAAO,KAAK,IAAI,CAAA;CAChC;AAED,MAAM,CAAC,OAAO,OAAO,oBAAoB;IACvC;;;;;;OAMG;IACH,kBAAkB,IAAI,kBAAkB,GAAG,kBAAkB,EAAE,GAAG,IAAI;CACvE;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS,WAAW,CAAC,UAAU,CAAC,EAAE,YAAY,CAAC,KAkC/C,WAAW,CAAC,oBAAoB,CAAC,GAAG,CAChE,CAAA"}
@@ -0,0 +1,70 @@
1
+ import { LitElement } from 'lit';
2
+ import onFind, {} from './onFind.js';
3
+ /**
4
+ * @mixin
5
+ * Registers an {@link onFind} child-redistribution callback and tears it down on
6
+ * disconnect, so a detached component is garbage-collectable and stops being
7
+ * visited on every document mutation. Handles the detach/reattach dance: the
8
+ * onFind registration only lives while connected, and is re-armed on reattach
9
+ * (Lit's `firstUpdated` fires only once).
10
+ *
11
+ * Subclasses declare what to register via {@link onFindRegistration} and MUST
12
+ * call `super.firstUpdated()` so the initial registration runs. Return a single
13
+ * registration, or an array for several independent sweeps (all disposed
14
+ * together on disconnect).
15
+ *
16
+ * @example
17
+ * ```typescript
18
+ * class Card extends OnFindMixin(LitElement) {
19
+ * firstUpdated(changed) {
20
+ * super.firstUpdated(changed) // arms onFind
21
+ * }
22
+ * onFindRegistration() {
23
+ * return { selectors: ':scope > [slot]', callback: el => this.place(el) }
24
+ * }
25
+ * }
26
+ *
27
+ * // Or several independent sweeps:
28
+ * onFindRegistration() {
29
+ * return [
30
+ * { selectors: ':scope > [slot]', callback: el => this.place(el) },
31
+ * { selectors: '.btu-deep-thing', callback: el => this.enhance(el) },
32
+ * ]
33
+ * }
34
+ * ```
35
+ */
36
+ export const OnFindMixin = (superClass) => {
37
+ class OnFindMixinClass extends superClass {
38
+ #stopFns = [];
39
+ onFindRegistration() {
40
+ return null;
41
+ }
42
+ #armFind() {
43
+ if (this.#stopFns.length)
44
+ return; // idempotent — already registered
45
+ const reg = this.onFindRegistration();
46
+ if (!reg)
47
+ return;
48
+ const regs = Array.isArray(reg) ? reg : [reg];
49
+ this.#stopFns = regs.map(r => onFind(this, r.selectors, r.callback));
50
+ }
51
+ connectedCallback() {
52
+ super.connectedCallback();
53
+ // Re-arm on reattach only. On first connect the render root doesn't exist
54
+ // yet, so firstUpdated does the initial registration.
55
+ if (this.hasUpdated)
56
+ this.#armFind();
57
+ }
58
+ firstUpdated(changedProperties) {
59
+ super.firstUpdated(changedProperties);
60
+ this.#armFind();
61
+ }
62
+ disconnectedCallback() {
63
+ super.disconnectedCallback();
64
+ this.#stopFns.forEach(stop => stop());
65
+ this.#stopFns = [];
66
+ }
67
+ }
68
+ return OnFindMixinClass;
69
+ };
70
+ //# sourceMappingURL=OnFindMixin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OnFindMixin.js","sourceRoot":"","sources":["../../src/util/OnFindMixin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,KAAK,CAAA;AAChC,OAAO,MAAM,EAAE,EAAkB,MAAM,aAAa,CAAA;AAsBpD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAoC,UAAa,EAAE,EAAE;IAC9E,MAAM,gBAAiB,SAAQ,UAAU;QACvC,QAAQ,GAAsB,EAAE,CAAA;QAEhC,kBAAkB;YAChB,OAAO,IAAI,CAAA;QACb,CAAC;QAED,QAAQ;YACN,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM;gBAAE,OAAM,CAAC,kCAAkC;YACnE,MAAM,GAAG,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAA;YACrC,IAAI,CAAC,GAAG;gBAAE,OAAM;YAChB,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;YAC7C,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAU,IAAI,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAA;QAC/E,CAAC;QAED,iBAAiB;YACf,KAAK,CAAC,iBAAiB,EAAE,CAAA;YACzB,0EAA0E;YAC1E,sDAAsD;YACtD,IAAI,IAAI,CAAC,UAAU;gBAAE,IAAI,CAAC,QAAQ,EAAE,CAAA;QACtC,CAAC;QAED,YAAY,CAAC,iBAAyD;YACpE,KAAK,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAA;YACrC,IAAI,CAAC,QAAQ,EAAE,CAAA;QACjB,CAAC;QAED,oBAAoB;YAClB,KAAK,CAAC,oBAAoB,EAAE,CAAA;YAC5B,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAA;YACrC,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAA;QACpB,CAAC;KACF;IACD,OAAO,gBAAyD,CAAA;AAClE,CAAC,CAAA"}
@@ -1,7 +1,9 @@
1
1
  export type CallbackFunction<E extends Element> = (element: E) => void;
2
2
  export type Selectors = string | string[];
3
- declare function onFind<E extends Element>(root: ParentNode, selectors: Selectors, fn: CallbackFunction<E>): void;
4
- declare function onFind<E extends Element>(selectors: Selectors, fn: CallbackFunction<E>): void;
3
+ /** Unregisters a callback registered via {@link onFind}. Safe to call more than once. */
4
+ export type Unregister = () => void;
5
+ declare function onFind<E extends Element>(root: ParentNode, selectors: Selectors, fn: CallbackFunction<E>): Unregister;
6
+ declare function onFind<E extends Element>(selectors: Selectors, fn: CallbackFunction<E>): Unregister;
5
7
  declare namespace onFind {
6
8
  var triggerCallbacks: (mutations?: MutationRecord[]) => void;
7
9
  var pause: () => void;
@@ -1 +1 @@
1
- {"version":3,"file":"onFind.d.ts","sourceRoot":"","sources":["../../src/util/onFind.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,IAAI,CAAA;AACtE,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,MAAM,EAAE,CAAA;AA0OzC,iBAAS,MAAM,CAAC,CAAC,SAAS,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAA;AAEzG,iBAAS,MAAM,CAAC,CAAC,SAAS,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAA;kBAA9E,MAAM;uCA/GuB,cAAc,EAAE;;;+BAyJvB,MAAM,EAAE;;AAcvC,eAAe,MAAM,CAAA"}
1
+ {"version":3,"file":"onFind.d.ts","sourceRoot":"","sources":["../../src/util/onFind.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,IAAI,CAAA;AACtE,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,MAAM,EAAE,CAAA;AA0OzC,yFAAyF;AACzF,MAAM,MAAM,UAAU,GAAG,MAAM,IAAI,CAAA;AAEnC,iBAAS,MAAM,CAAC,CAAC,SAAS,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,UAAU,CAAA;AAE/G,iBAAS,MAAM,CAAC,CAAC,SAAS,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,UAAU,CAAA;kBAApF,MAAM;uCAlHuB,cAAc,EAAE;;;+BAwKvB,MAAM,EAAE;;AAcvC,eAAe,MAAM,CAAA"}
@@ -204,6 +204,18 @@ function onFind(rootOrSelectors, selectorsOrFn, fn) {
204
204
  const callback = new Callback(root, selectors, fn);
205
205
  callback.trigger();
206
206
  getState().callbacks.push(callback);
207
+ // Returns a disposer so callers with a lifecycle (e.g. web components) can
208
+ // remove their callback on teardown — otherwise it lives for the page and
209
+ // keeps `root` reachable. Re-reads state and guards the index so it is safe
210
+ // to call multiple times. The disposer only ever runs from a caller's own
211
+ // teardown (synchronous), never while `triggerCallbacks` is iterating the
212
+ // array (async via the observer / rAF), so the splice cannot corrupt a loop.
213
+ return () => {
214
+ const { callbacks } = getState();
215
+ const i = callbacks.indexOf(callback);
216
+ if (i !== -1)
217
+ callbacks.splice(i, 1);
218
+ };
207
219
  }
208
220
  onFind.triggerCallbacks = triggerCallbacks;
209
221
  onFind.pause = () => {
@@ -1 +1 @@
1
- {"version":3,"file":"onFind.js","sourceRoot":"","sources":["../../src/util/onFind.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"onFind.js","sourceRoot":"","sources":["../../src/util/onFind.ts"],"names":[],"mappings":"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"}
@@ -15,6 +15,7 @@
15
15
  | `RovingTabindexMixin` | /src/util/RovingTabindexMixin.js | |
16
16
  | `ComponentStatesMixin` | /src/util/ComponentStatesMixin.js | |
17
17
  | `EventEmitterMixin` | /src/util/EventEmitterMixin.js | |
18
+ | `OnFindMixin` | /src/util/OnFindMixin.js | |
18
19
  | `ReadyMixin` | /src/util/ReadyMixin.js | |
19
20
 
20
21
  ### Static Fields
@@ -35,12 +36,15 @@
35
36
  | `selection` | | `'none' \| 'single' \| 'multiple'` | `'none'` | Enables toggle/selection behavior.&#xA;\`single\` allows one active button; \`multiple\` allows many. | |
36
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. | |
37
38
  | `name` | | `string` | `''` | When set, creates hidden input(s) for native form participation. | |
39
+ | `#stopFns` | private | `Array<() => void>` | `[]` | | OnFindMixin |
38
40
 
39
41
  ### Methods
40
42
 
41
- | Name | Privacy | Description | Parameters | Return | Inherited From |
42
- | ------ | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------- | --------- | ----------------- |
43
- | `emit` | | Dispatches a type-safe CustomEvent with standardized configuration.&#xA;&#xA;All events are configured with:&#xA;- bubbles: true (event propagates up the DOM tree)&#xA;- cancelable: false (event cannot be cancelled)&#xA;- composed: true (event crosses shadow DOM boundaries) | `type: K, detail: UnpackCustomEvent<CustomEventMap[K]>` | `boolean` | EventEmitterMixin |
43
+ | Name | Privacy | Description | Parameters | Return | Inherited From |
44
+ | -------------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------- | ---------------------------------------------------- | ----------------- |
45
+ | `emit` | | Dispatches a type-safe CustomEvent with standardized configuration.&#xA;&#xA;All events are configured with:&#xA;- bubbles: true (event propagates up the DOM tree)&#xA;- cancelable: false (event cannot be cancelled)&#xA;- composed: true (event crosses shadow DOM boundaries) | `type: K, detail: UnpackCustomEvent<CustomEventMap[K]>` | `boolean` | EventEmitterMixin |
46
+ | `onFindRegistration` | | | | `OnFindRegistration \| OnFindRegistration[] \| null` | OnFindMixin |
47
+ | `#armFind` | private | | | | OnFindMixin |
44
48
 
45
49
  ### Events
46
50
 
@@ -0,0 +1,83 @@
1
+ # `src/components/card/Card.ts`:
2
+
3
+ ## class: `Card`, `btu-card`
4
+
5
+ ### Superclass
6
+
7
+ | Name | Module | Package |
8
+ | ------------ | ------ | ------- |
9
+ | `LitElement` | | lit |
10
+
11
+ ### Mixins
12
+
13
+ | Name | Module | Package |
14
+ | ------------------- | ------------------------------ | ------- |
15
+ | `EventEmitterMixin` | /src/util/EventEmitterMixin.js | |
16
+ | `OnFindMixin` | /src/util/OnFindMixin.js | |
17
+ | `ReadyMixin` | /src/util/ReadyMixin.js | |
18
+
19
+ ### Fields
20
+
21
+ | Name | Privacy | Type | Default | Description | Inherited From |
22
+ | -------------- | ------- | --------------------- | ------- | --------------------------------------------------------------------------------------------------------------------------------------------------- | -------------- |
23
+ | `heading` | | `string` | `''` | Heading text displayed on the card. | |
24
+ | `headingLevel` | | `number` | `2` | Heading level (1-6) for the card heading element. Drives the semantic h1–h6 tag.&#xA;Invalid values log a warning and fall back to the default (2). | |
25
+ | `description` | | `string \| undefined` | | Supporting body text. Truncated to 3 lines via CSS. | |
26
+ | `compact` | | `boolean` | `false` | Renders the card as a compact quick-start tile.&#xA;Badge, image, fields, and secondary-action children are ignored in this case. | |
27
+ | `disabled` | | `boolean` | `false` | Whether the card is disabled. | |
28
+ | `href` | | `string \| undefined` | | Navigation URL for the entire card surface.&#xA;When set, the card renders as a link. | |
29
+ | `#stopFns` | private | `Array<() => void>` | `[]` | | OnFindMixin |
30
+
31
+ ### Methods
32
+
33
+ | Name | Privacy | Description | Parameters | Return | Inherited From |
34
+ | -------------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------- | ---------------------------------------------------- | ----------------- |
35
+ | `emit` | | Dispatches a type-safe CustomEvent with standardized configuration.&#xA;&#xA;All events are configured with:&#xA;- bubbles: true (event propagates up the DOM tree)&#xA;- cancelable: false (event cannot be cancelled)&#xA;- composed: true (event crosses shadow DOM boundaries) | `type: K, detail: UnpackCustomEvent<CustomEventMap[K]>` | `boolean` | EventEmitterMixin |
36
+ | `onFindRegistration` | | | | `OnFindRegistration \| OnFindRegistration[] \| null` | OnFindMixin |
37
+ | `#armFind` | private | | | | OnFindMixin |
38
+
39
+ ### Events
40
+
41
+ | Name | Type | Description | Inherited From |
42
+ | ---------------- | ------------- | ------------------------------------------- | -------------- |
43
+ | `btu-card-ready` | `CustomEvent` | Fired after first render and initialization | |
44
+
45
+ ### Attributes
46
+
47
+ | Name | Field | Inherited From |
48
+ | --------------- | ------------ | -------------- |
49
+ | `heading` | heading | |
50
+ | `heading-level` | headingLevel | |
51
+ | `description` | description | |
52
+ | `compact` | compact | |
53
+ | `disabled` | disabled | |
54
+ | `href` | href | |
55
+
56
+ ### CSS Properties
57
+
58
+ | Name | Default | Description |
59
+ | ------------------------ | ------- | ----------------------------------------------------------------------------------------------------- |
60
+ | `--card-min-width` | | Minimum width of the card (default: 160px) |
61
+ | `--card-background` | | Background color (default: var(--btu-theme-white)) |
62
+ | `--card-border` | | Border style (default: 1px solid gray-200) |
63
+ | `--card-radius` | | Corner rounding (default: 8px) |
64
+ | `--card-img-ratio` | | Fixed aspect ratio for the thumbnail when an \`\<img>\` child is present (default: 16 / 9) |
65
+ | `--card-img-fit` | | Object-fit mode for the \`\<img>\` child thumbnail (default: contain) |
66
+ | `--card-icon-background` | | Background color behind the composed icon (compact card and media-image fallback) (default: gray-100) |
67
+
68
+ ### Slots
69
+
70
+ | Name | Description |
71
+ | ------------------ | ------------------------------------------------------------------------------- |
72
+ | `action` | Intended for a single action in the top-right corner of the card. |
73
+ | `secondary-action` | Intended for a single action next to the title. |
74
+ | `fields` | Intended for additional metadata fields displayed below the title & description |
75
+
76
+ <hr/>
77
+
78
+ ## Exports
79
+
80
+ | Kind | Name | Declaration | Module | Package |
81
+ | --------------------------- | ---------- | ----------- | --------------------------- | ------- |
82
+ | `js` | `default` | Card | src/components/card/Card.ts | |
83
+ | `custom-element-definition` | `btu-card` | Card | src/components/card/Card.ts | |
@@ -13,6 +13,7 @@
13
13
  | Name | Module | Package |
14
14
  | ------------------- | ------------------------------ | ------- |
15
15
  | `EventEmitterMixin` | /src/util/EventEmitterMixin.js | |
16
+ | `OnFindMixin` | /src/util/OnFindMixin.js | |
16
17
  | `ReadyMixin` | /src/util/ReadyMixin.js | |
17
18
 
18
19
  ### Fields
@@ -24,15 +25,18 @@
24
25
  | `size` | | `'sm' \| 'md' \| 'lg'` | `'md'` | Size variant of the empty state. Affects spacing, description text, graphic size,&#xA;and — when \`heading-level\` is unset — the default heading level (sm→5, md→4, lg→3). | |
25
26
  | `headingLevel` | | `number \| undefined` | | Heading level (1-6). When set to a valid integer 1-6, overrides the size-based&#xA;default and drives both the semantic h1-h6 tag and the visual heading size&#xA;(btu-heading-1 through btu-heading-6). Invalid values log a warning and fall&#xA;back to the size-based default. | |
26
27
  | `initialClasses` | private | `string[]` | `[]` | | |
28
+ | `#stopFns` | private | `Array<() => void>` | `[]` | | OnFindMixin |
27
29
 
28
30
  ### Methods
29
31
 
30
- | Name | Privacy | Description | Parameters | Return | Inherited From |
31
- | --------------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------- | -------------------------- | ----------------- |
32
- | `syncGraphicIconSize` | private | | | `void` | |
33
- | `resolveHeadingLevel` | private | | | `HeadingLevel` | |
34
- | `renderHeading` | private | | `level: HeadingLevel, className: string` | `TemplateResult \| string` | |
35
- | `emit` | | Dispatches a type-safe CustomEvent with standardized configuration.&#xA;&#xA;All events are configured with:&#xA;- bubbles: true (event propagates up the DOM tree)&#xA;- cancelable: false (event cannot be cancelled)&#xA;- composed: true (event crosses shadow DOM boundaries) | `type: K, detail: UnpackCustomEvent<CustomEventMap[K]>` | `boolean` | EventEmitterMixin |
32
+ | Name | Privacy | Description | Parameters | Return | Inherited From |
33
+ | --------------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------- | ---------------------------------------------------- | ----------------- |
34
+ | `syncGraphicIconSize` | private | | | `void` | |
35
+ | `resolveHeadingLevel` | private | | | `HeadingLevel` | |
36
+ | `renderHeading` | private | | `level: HeadingLevel, className: string` | `TemplateResult \| string` | |
37
+ | `emit` | | Dispatches a type-safe CustomEvent with standardized configuration.&#xA;&#xA;All events are configured with:&#xA;- bubbles: true (event propagates up the DOM tree)&#xA;- cancelable: false (event cannot be cancelled)&#xA;- composed: true (event crosses shadow DOM boundaries) | `type: K, detail: UnpackCustomEvent<CustomEventMap[K]>` | `boolean` | EventEmitterMixin |
38
+ | `onFindRegistration` | | | | `OnFindRegistration \| OnFindRegistration[] \| null` | OnFindMixin |
39
+ | `#armFind` | private | | | | OnFindMixin |
36
40
 
37
41
  ### Events
38
42
 
@@ -10,6 +10,7 @@ This directory contains auto-generated API documentation for all Brightspot UI w
10
10
  - [`<btu-avatar-group>` - AvatarGroup](AvatarGroup.md)
11
11
  - [`<btu-badge>` - Badge](Badge.md)
12
12
  - [`<btu-button-group>` - ButtonGroup](ButtonGroup.md)
13
+ - [`<btu-card>` - Card](Card.md)
13
14
  - [`<btu-checkbox>` - Checkbox](Checkbox.md)
14
15
  - [`<btu-circular-progress>` - CircularProgress](CircularProgress.md)
15
16
  - [`<btu-copy-to-clipboard>` - CopyToClipboard](CopyToClipboard.md)
@@ -13,6 +13,7 @@
13
13
  | Name | Module | Package |
14
14
  | ------------------- | ------------------------------ | ------- |
15
15
  | `EventEmitterMixin` | /src/util/EventEmitterMixin.js | |
16
+ | `OnFindMixin` | /src/util/OnFindMixin.js | |
16
17
  | `ReadyMixin` | /src/util/ReadyMixin.js | |
17
18
 
18
19
  ### Static Fields
@@ -23,23 +24,26 @@
23
24
 
24
25
  ### Fields
25
26
 
26
- | Name | Privacy | Type | Default | Description | Inherited From |
27
- | -------------------- | ------- | --------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ | -------------- |
28
- | `_internals` | private | | | | |
29
- | `heading` | | `string` | `''` | Heading text displayed in the header. | |
30
- | `collapsible` | | `boolean` | `false` | Whether the widget can be collapsed/expanded.&#xA;When true, a chevron toggle button appears in the header. | |
31
- | `collapsed` | | `boolean` | `false` | Whether the widget is currently collapsed.&#xA;When true, body and footer are hidden. Implies collapsible. | |
32
- | `fullscreenable` | | `boolean` | `false` | Whether the widget can enter fullscreen mode.&#xA;When true, a fullscreen toggle button appears in the header. | |
33
- | `_isFullscreen` | private | `boolean` | `false` | | |
34
- | `_collapseTooltip` | private | | `new TooltipController(this, { target: 'button[data-tooltip="collapse"]', text: () => (this.collapsed ? 'Expand' : 'Collapse'), position: 'bottom', noArrow: true, offset: 'sm', })` | | |
35
- | `_fullscreenTooltip` | private | | `new TooltipController(this, { target: 'button[data-tooltip="fullscreen"]', text: () => (this._isFullscreen ? 'Exit fullscreen' : 'Enter fullscreen'), position: 'bottom', noArrow: true, offset: 'sm', })` | | |
36
- | `isFullscreen` | | `boolean` | | Whether the widget is currently in fullscreen mode (read-only).&#xA;Use \`btu-widget-fullscreen-changed\` event to react to changes. | |
27
+ | Name | Privacy | Type | Default | Description | Inherited From |
28
+ | -------------------- | ------- | ------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ | -------------- |
29
+ | `_internals` | private | | | | |
30
+ | `heading` | | `string` | `''` | Heading text displayed in the header. | |
31
+ | `collapsible` | | `boolean` | `false` | Whether the widget can be collapsed/expanded.&#xA;When true, a chevron toggle button appears in the header. | |
32
+ | `collapsed` | | `boolean` | `false` | Whether the widget is currently collapsed.&#xA;When true, body and footer are hidden. Implies collapsible. | |
33
+ | `fullscreenable` | | `boolean` | `false` | Whether the widget can enter fullscreen mode.&#xA;When true, a fullscreen toggle button appears in the header. | |
34
+ | `_isFullscreen` | private | `boolean` | `false` | | |
35
+ | `_collapseTooltip` | private | | `new TooltipController(this, { target: 'button[data-tooltip="collapse"]', text: () => (this.collapsed ? 'Expand' : 'Collapse'), position: 'bottom', noArrow: true, offset: 'sm', })` | | |
36
+ | `_fullscreenTooltip` | private | | `new TooltipController(this, { target: 'button[data-tooltip="fullscreen"]', text: () => (this._isFullscreen ? 'Exit fullscreen' : 'Enter fullscreen'), position: 'bottom', noArrow: true, offset: 'sm', })` | | |
37
+ | `isFullscreen` | | `boolean` | | Whether the widget is currently in fullscreen mode (read-only).&#xA;Use \`btu-widget-fullscreen-changed\` event to react to changes. | |
38
+ | `#stopFns` | private | `Array<() => void>` | `[]` | | OnFindMixin |
37
39
 
38
40
  ### Methods
39
41
 
40
- | Name | Privacy | Description | Parameters | Return | Inherited From |
41
- | ------ | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------- | --------- | ----------------- |
42
- | `emit` | | Dispatches a type-safe CustomEvent with standardized configuration.&#xA;&#xA;All events are configured with:&#xA;- bubbles: true (event propagates up the DOM tree)&#xA;- cancelable: false (event cannot be cancelled)&#xA;- composed: true (event crosses shadow DOM boundaries) | `type: K, detail: UnpackCustomEvent<CustomEventMap[K]>` | `boolean` | EventEmitterMixin |
42
+ | Name | Privacy | Description | Parameters | Return | Inherited From |
43
+ | -------------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------- | ---------------------------------------------------- | ----------------- |
44
+ | `emit` | | Dispatches a type-safe CustomEvent with standardized configuration.&#xA;&#xA;All events are configured with:&#xA;- bubbles: true (event propagates up the DOM tree)&#xA;- cancelable: false (event cannot be cancelled)&#xA;- composed: true (event crosses shadow DOM boundaries) | `type: K, detail: UnpackCustomEvent<CustomEventMap[K]>` | `boolean` | EventEmitterMixin |
45
+ | `onFindRegistration` | | | | `OnFindRegistration \| OnFindRegistration[] \| null` | OnFindMixin |
46
+ | `#armFind` | private | | | | OnFindMixin |
43
47
 
44
48
  ### Events
45
49
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@brightspot/ui",
3
- "version": "5.0.3",
3
+ "version": "5.1.0",
4
4
  "type": "module",
5
5
  "license": "UNLICENSED",
6
6
  "description": "A UI library for building Brightspot CMS components.",
@@ -43,7 +43,7 @@
43
43
  @apply m-0 p-0;
44
44
 
45
45
  > button {
46
- @apply flex w-full cursor-pointer items-center gap-1 rounded px-3 py-2 text-start text-sm text-gray-900 hover:bg-gray-100;
46
+ @apply flex w-full cursor-pointer items-center gap-1 px-3 py-2 text-start text-sm text-gray-900 hover:bg-gray-100;
47
47
  }
48
48
  }
49
49
  }
@@ -148,7 +148,16 @@ onFind('.searchFiltersType', (element) => {
148
148
  ? document.querySelector('.Page-search input[name="q"]')
149
149
  : element.nextElementSibling?.querySelector('input[name="q"]')
150
150
 
151
- if (targetQuery && targetQuery instanceof HTMLInputElement) {
151
+ // Only seed the sticky value into an empty, unfocused field so we never
152
+ // overwrite text the user has typed. This re-fires on every search frame
153
+ // reload; without the guard a reload overwrites the field with the saved
154
+ // (possibly empty) query and discards what the user just typed.
155
+ if (
156
+ targetQuery &&
157
+ targetQuery instanceof HTMLInputElement &&
158
+ !targetQuery.value &&
159
+ document.activeElement !== targetQuery
160
+ ) {
152
161
  targetQuery.value = sourceQuery.value
153
162
  }
154
163
  })