@brightspot/ui 1.4.0 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (104) hide show
  1. package/README.md +12 -0
  2. package/dist/components/avatar/Avatar.d.ts +1 -1
  3. package/dist/components/avatar/Avatar.d.ts.map +1 -1
  4. package/dist/components/avatar/Avatar.js +3 -1
  5. package/dist/components/avatar/Avatar.js.map +1 -1
  6. package/dist/components/popover/Popover.d.ts +161 -0
  7. package/dist/components/popover/Popover.d.ts.map +1 -0
  8. package/dist/components/popover/Popover.js +436 -0
  9. package/dist/components/popover/Popover.js.map +1 -0
  10. package/dist/components/widget/Widget.css +104 -0
  11. package/dist/components/widget/Widget.d.ts +170 -0
  12. package/dist/components/widget/Widget.d.ts.map +1 -0
  13. package/dist/components/widget/Widget.js +434 -0
  14. package/dist/components/widget/Widget.js.map +1 -0
  15. package/dist/custom-elements.json +604 -101
  16. package/dist/global.d.ts +5 -0
  17. package/dist/storybook/assets/{Avatar.stories-DrhezTR1.js → Avatar.stories-CPVNxsaA.js} +37 -32
  18. package/dist/storybook/assets/AvatarGroup.stories-Bl65NGHl.js +225 -0
  19. package/dist/storybook/assets/{Badge.stories-DtJcBfOR.js → Badge.stories-Bbnc6fRy.js} +1 -1
  20. package/dist/storybook/assets/{Button.stories-BKUfLgSY.js → Button.stories-CRJ5n2y4.js} +1 -1
  21. package/dist/storybook/assets/{CircularProgress.stories-dpmD-XJT.js → CircularProgress.stories-D9vBj3JJ.js} +1 -1
  22. package/dist/storybook/assets/{ClipboardMixin.stories-C0pnQ7BY.js → ClipboardMixin.stories-Dm-Jm4yb.js} +7 -7
  23. package/dist/storybook/assets/Color-6BZIO3FS-BcNIJY1U.js +1 -0
  24. package/dist/storybook/assets/{Colors.stories-bKK25qgF.js → Colors.stories-B9_090wL.js} +1 -1
  25. package/dist/storybook/assets/ComponentStatesMixin-ChiFBCuo.js +1 -0
  26. package/dist/storybook/assets/{ComponentStatesMixin.stories-9mRp2zuB.js → ComponentStatesMixin.stories-DHv9MHmE.js} +3 -3
  27. package/dist/storybook/assets/{CopyToClipboard.stories-BW3oaT1i.js → CopyToClipboard.stories-gtJlTP1l.js} +1 -1
  28. package/dist/storybook/assets/{Debounce.stories-BXx3CKvQ.js → Debounce.stories-BBNX7mJA.js} +3 -3
  29. package/dist/storybook/assets/DocsRenderer-LL677BLK-D-E99pXl.js +758 -0
  30. package/dist/storybook/assets/{Events.stories-PBeiuWQn.js → Events.stories-DDmydlh_.js} +1 -1
  31. package/dist/storybook/assets/{Heading.stories-Djkl0MoC.js → Heading.stories-BLGfko-i.js} +1 -1
  32. package/dist/storybook/assets/{Icon.stories-Cam1fyud.js → Icon.stories-BHnAGcFF.js} +1 -1
  33. package/dist/storybook/assets/{LinearProgress.stories-BDNoYIJu.js → LinearProgress.stories-Dx26a0P_.js} +1 -1
  34. package/dist/storybook/assets/Popover.stories-CbqpY6YR.js +431 -0
  35. package/dist/storybook/assets/ReadyMixin-BHiHoIbr.js +1 -0
  36. package/dist/storybook/assets/{Rtc.stories-BrTAIAi1.js → Rtc.stories-CAjDv_Ub.js} +3 -3
  37. package/dist/storybook/assets/{ScrollShadow.stories-DHcKhkag.js → ScrollShadow.stories-BSV4U-tq.js} +1 -1
  38. package/dist/storybook/assets/{Throttle.stories-cSYT_BXu.js → Throttle.stories-kaxXQ8RZ.js} +8 -8
  39. package/dist/storybook/assets/Tooltip.stories-CsxXkztr.js +143 -0
  40. package/dist/storybook/assets/Widget.stories-DqATHnSq.js +233 -0
  41. package/dist/storybook/assets/WithTooltip-65CFNBJE-BtbbFYSA.js +9 -0
  42. package/dist/storybook/assets/custom-element-UsVr97OX.js +1 -0
  43. package/dist/storybook/assets/formatter-EIJCOSYU-C87Csnpu.js +1 -0
  44. package/dist/storybook/assets/if-defined-COHr0XBn.js +1 -0
  45. package/dist/storybook/assets/{iframe-BMxUFmpF.css → iframe-BkDGeDre.css} +1 -1
  46. package/dist/storybook/assets/iframe-CcloOV09.js +1061 -0
  47. package/dist/storybook/assets/index-DP7vnJf7.js +1 -0
  48. package/dist/storybook/assets/onFind-DqriYjEB.js +1 -0
  49. package/dist/storybook/assets/onFind.stories-BxvoC-Z-.js +1069 -0
  50. package/dist/storybook/assets/{onRemove.stories-C7W9KyRr.js → onRemove.stories-Dwoixzb0.js} +3 -3
  51. package/dist/storybook/assets/{onVisible.stories-CIl6R0q4.js → onVisible.stories-CinmRF9w.js} +10 -10
  52. package/dist/storybook/assets/syntaxhighlighter-ED5Y7EFY-BHLkDkOn.js +6 -0
  53. package/dist/storybook/iframe.html +57 -39
  54. package/dist/storybook/index.html +11 -4
  55. package/dist/storybook/index.json +1 -1
  56. package/dist/storybook/project.json +1 -1
  57. package/dist/storybook/sb-addons/docs-1/manager-bundle.js +1 -1
  58. package/dist/storybook/sb-addons/storybook-core-server-presets-0/common-manager-bundle.js +112 -290
  59. package/dist/storybook/sb-addons/vitest-2/manager-bundle.js +3 -0
  60. package/dist/storybook/sb-manager/globals-runtime.js +60754 -66346
  61. package/dist/storybook/sb-manager/globals.js +2 -3
  62. package/dist/storybook/sb-manager/manager-stores.js +23 -0
  63. package/dist/storybook/sb-manager/runtime.js +12983 -11699
  64. package/dist/storybook/vite-inject-mocker-entry.js +2 -2
  65. package/dist/tailwind-plugin-popover.d.ts +2 -0
  66. package/dist/tailwind-plugin-popover.d.ts.map +1 -0
  67. package/dist/tailwind-plugin-popover.js +177 -0
  68. package/dist/tailwind-plugin-popover.js.map +1 -0
  69. package/dist/tailwind-plugin-popover.ts +202 -0
  70. package/dist/tailwind-plugin-tooltip.d.ts +2 -0
  71. package/dist/tailwind-plugin-tooltip.d.ts.map +1 -0
  72. package/dist/tailwind-plugin-tooltip.js +184 -0
  73. package/dist/tailwind-plugin-tooltip.js.map +1 -0
  74. package/dist/tailwind-plugin-tooltip.ts +209 -0
  75. package/dist/util/EventEmitterMixin.d.ts +11 -0
  76. package/dist/util/EventEmitterMixin.d.ts.map +1 -1
  77. package/dist/util/EventEmitterMixin.js +1 -1
  78. package/dist/util/EventEmitterMixin.js.map +1 -1
  79. package/dist/util/TooltipController.d.ts +37 -0
  80. package/dist/util/TooltipController.d.ts.map +1 -0
  81. package/dist/util/TooltipController.js +133 -0
  82. package/dist/util/TooltipController.js.map +1 -0
  83. package/dist/util/TooltipMixin.d.ts +42 -0
  84. package/dist/util/TooltipMixin.d.ts.map +1 -0
  85. package/dist/util/TooltipMixin.js +401 -0
  86. package/dist/util/TooltipMixin.js.map +1 -0
  87. package/dist/util/onFind.d.ts +1 -0
  88. package/dist/util/onFind.d.ts.map +1 -1
  89. package/dist/util/onFind.js +73 -48
  90. package/dist/util/onFind.js.map +1 -1
  91. package/dist/util/onVisible.d.ts.map +1 -1
  92. package/dist/util/onVisible.js +13 -2
  93. package/dist/util/onVisible.js.map +1 -1
  94. package/package.json +12 -5
  95. package/dist/storybook/assets/AvatarGroup.stories-DrlxT-mF.js +0 -211
  96. package/dist/storybook/assets/Color-64QXVMR3-Dnd9S2a1.js +0 -1
  97. package/dist/storybook/assets/ComponentStatesMixin-C2HZ9ZFb.js +0 -1
  98. package/dist/storybook/assets/WithTooltip-SK46ZJ2J-Df0E-KJO.js +0 -825
  99. package/dist/storybook/assets/formatter-OMEEQ6HG-DFa_WTfb.js +0 -1
  100. package/dist/storybook/assets/iframe-lTczLWsL.js +0 -1064
  101. package/dist/storybook/assets/index-yMswRDPh.js +0 -1
  102. package/dist/storybook/assets/onFind-C6olvKHR.js +0 -1
  103. package/dist/storybook/assets/onFind.stories-DfW54CDE.js +0 -284
  104. package/dist/storybook/assets/syntaxhighlighter-CAVLW7PM-DoI0ixeu.js +0 -6
@@ -1,5 +1,26 @@
1
1
  import log from 'loglevel';
2
- let calledIndex = 0;
2
+ const KEY = Symbol.for('brightspot.onFind');
3
+ let _state;
4
+ function getState() {
5
+ if (_state)
6
+ return _state;
7
+ _state = globalThis[KEY];
8
+ if (!_state) {
9
+ _state = {
10
+ calledIndex: 0,
11
+ callbacks: [],
12
+ blacklist: [],
13
+ triggerPaused: false,
14
+ triggerOnResume: false,
15
+ triggerAll: false,
16
+ triggerElements: [],
17
+ triggerFrame: 0,
18
+ initialized: false,
19
+ };
20
+ globalThis[KEY] = _state;
21
+ }
22
+ return _state;
23
+ }
3
24
  class Callback {
4
25
  #root;
5
26
  #called;
@@ -8,7 +29,7 @@ class Callback {
8
29
  #matches;
9
30
  constructor(root, selectors, fn) {
10
31
  this.#root = root;
11
- this.#called = `data-ofc${calledIndex++}`;
32
+ this.#called = `data-ofc${getState().calledIndex++}`;
12
33
  if (!Array.isArray(selectors)) {
13
34
  selectors = [selectors];
14
35
  }
@@ -63,34 +84,18 @@ class Callback {
63
84
  }
64
85
  }
65
86
  }
66
- let triggerPaused = false;
67
- let triggerOnResume = false;
68
- let triggerAll = false;
69
- let triggerElements = [];
70
- let triggerFrame;
71
- const callbacks = [];
72
87
  function inBlacklist(node) {
73
88
  if (!(node instanceof Element))
74
89
  return false;
75
- return (node.closest('.CIG-wordCount') !== null ||
76
- node.closest('.ContentEdit-previewDisplay') !== null ||
77
- node.closest('.ContentLabel') !== null ||
78
- node.closest('.PreviewFrame-typeDisplay') !== null ||
79
- node.closest('.ProseMirrorToolbar') !== null ||
80
- node.closest('.ProseMirror') !== null ||
81
- node.closest('.ProseMirrorContainer') !== null ||
82
- node.closest('.ProseMirror-fullscreen-container') !== null ||
83
- node.closest('.ProseMirror-comments') !== null ||
84
- node.closest('.RichTextEditor') !== null ||
85
- node.closest('.WorkInProgressSaveStatus') !== null ||
86
- node.closest('#aria-live-container') !== null ||
87
- node.closest('.widget-urlsAutomatic') !== null);
90
+ const { blacklist } = getState();
91
+ return blacklist.length > 0 && blacklist.some(s => node.closest(s) !== null);
88
92
  }
89
93
  const every = Array.prototype.every;
90
94
  const isText = (node) => node.nodeType === Node.TEXT_NODE;
91
95
  function triggerCallbacks(mutations) {
92
- if (triggerPaused) {
93
- triggerOnResume = true;
96
+ const state = getState();
97
+ if (state.triggerPaused) {
98
+ state.triggerOnResume = true;
94
99
  return;
95
100
  }
96
101
  const checkMutations = Array.isArray(mutations);
@@ -119,40 +124,39 @@ function triggerCallbacks(mutations) {
119
124
  }
120
125
  }
121
126
  if (validMutations.length > 500) {
122
- triggerAll = true;
127
+ state.triggerAll = true;
123
128
  }
124
- if (!triggerAll) {
129
+ if (!state.triggerAll) {
125
130
  if (checkMutations) {
126
131
  for (const mutation of validMutations) {
127
132
  const element = mutation.target;
128
133
  switch (mutation.type) {
129
134
  case 'attributes':
130
- triggerElements.push(element);
135
+ state.triggerElements.push(element);
131
136
  break;
132
137
  case 'childList':
133
- for (const callback of callbacks) {
134
- callback.addTriggerElements(triggerElements, element);
138
+ for (const callback of state.callbacks) {
139
+ callback.addTriggerElements(state.triggerElements, element);
135
140
  }
136
141
  break;
137
142
  }
138
143
  }
139
144
  }
140
145
  else {
141
- triggerAll = true;
146
+ state.triggerAll = true;
142
147
  }
143
148
  }
144
- if ((triggerAll || triggerElements.length > 0) && !triggerFrame) {
145
- triggerFrame = window.requestAnimationFrame(() => {
146
- const elements = triggerAll ? undefined : triggerElements;
147
- triggerAll = false;
148
- triggerElements = [];
149
- triggerFrame = 0;
150
- callbacks.forEach(callback => callback.trigger(elements));
149
+ if ((state.triggerAll || state.triggerElements.length > 0) && !state.triggerFrame) {
150
+ state.triggerFrame = window.requestAnimationFrame(() => {
151
+ const elements = state.triggerAll ? undefined : state.triggerElements;
152
+ state.triggerAll = false;
153
+ state.triggerElements = [];
154
+ state.triggerFrame = 0;
155
+ state.callbacks.forEach(callback => callback.trigger(elements));
151
156
  });
152
157
  }
153
158
  }
154
159
  function initialize() {
155
- document.documentElement.hidden = false;
156
160
  triggerCallbacks();
157
161
  new MutationObserver(triggerCallbacks).observe(document, {
158
162
  attributes: true,
@@ -172,14 +176,20 @@ function initialize() {
172
176
  subtree: true,
173
177
  });
174
178
  }
175
- document.documentElement.hidden = true;
176
- if (document.readyState === 'loading') {
177
- document.addEventListener('DOMContentLoaded', initialize);
178
- }
179
- else {
180
- initialize();
179
+ function ensureInitialized() {
180
+ const state = getState();
181
+ if (state.initialized)
182
+ return;
183
+ state.initialized = true;
184
+ if (document.readyState === 'loading') {
185
+ document.addEventListener('DOMContentLoaded', initialize);
186
+ }
187
+ else {
188
+ initialize();
189
+ }
181
190
  }
182
191
  function onFind(rootOrSelectors, selectorsOrFn, fn) {
192
+ ensureInitialized();
183
193
  let root;
184
194
  let selectors;
185
195
  if (typeof fn !== 'undefined') {
@@ -193,18 +203,33 @@ function onFind(rootOrSelectors, selectorsOrFn, fn) {
193
203
  }
194
204
  const callback = new Callback(root, selectors, fn);
195
205
  callback.trigger();
196
- callbacks.push(callback);
206
+ getState().callbacks.push(callback);
197
207
  }
198
208
  onFind.triggerCallbacks = triggerCallbacks;
199
209
  onFind.pause = () => {
200
- triggerPaused = true;
210
+ getState().triggerPaused = true;
201
211
  };
202
212
  onFind.resume = () => {
203
- triggerPaused = false;
204
- if (triggerOnResume) {
205
- triggerOnResume = false;
213
+ const state = getState();
214
+ state.triggerPaused = false;
215
+ if (state.triggerOnResume) {
216
+ state.triggerOnResume = false;
206
217
  setTimeout(triggerCallbacks, 100);
207
218
  }
208
219
  };
220
+ onFind.ignore = (...selectors) => {
221
+ const { blacklist } = getState();
222
+ for (const s of selectors) {
223
+ try {
224
+ document.querySelector(s);
225
+ }
226
+ catch {
227
+ continue;
228
+ }
229
+ if (!blacklist.includes(s)) {
230
+ blacklist.push(s);
231
+ }
232
+ }
233
+ };
209
234
  export default onFind;
210
235
  //# sourceMappingURL=onFind.js.map
@@ -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":"AAAA,OAAO,GAAG,MAAM,UAAU,CAAA;AAK1B,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAA;AAc3C,IAAI,MAA+B,CAAA;AAEnC,SAAS,QAAQ;IACf,IAAI,MAAM;QAAE,OAAO,MAAM,CAAA;IAEzB,MAAM,GAAI,UAAkB,CAAC,GAAG,CAA4B,CAAA;IAE5D,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,GAAG;YACP,WAAW,EAAE,CAAC;YACd,SAAS,EAAE,EAAE;YACb,SAAS,EAAE,EAAE;YACb,aAAa,EAAE,KAAK;YACpB,eAAe,EAAE,KAAK;YACtB,UAAU,EAAE,KAAK;YACjB,eAAe,EAAE,EAAE;YACnB,YAAY,EAAE,CAAC;YACf,WAAW,EAAE,KAAK;SACnB,CACA;QAAC,UAAkB,CAAC,GAAG,CAAC,GAAG,MAAM,CAAA;IACpC,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC;AAED,MAAM,QAAQ;IACZ,KAAK,CAAA;IACL,OAAO,CAAA;IACP,UAAU,CAAA;IACV,GAAG,CAAA;IACH,QAAQ,CAAA;IAER,YAAY,IAAgB,EAAE,SAAoB,EAAE,EAAuB;QACzE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAA;QACjB,IAAI,CAAC,OAAO,GAAG,WAAW,QAAQ,EAAE,CAAC,WAAW,EAAE,EAAE,CAAA;QAEpD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;YAC9B,SAAS,GAAG,CAAC,SAAS,CAAC,CAAA;QACzB,CAAC;QAED,IAAI,CAAC,UAAU,GAAG,SAAS;aACxB,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,IAAI,CAAC,OAAO,IAAI,CAAC;aAC3F,IAAI,CAAC,GAAG,CAAC,CAAA;QAEZ,IAAI,CAAC,GAAG,GAAG,EAAE,CAAA;QAEb,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;QAElG,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,MAAM,EAAE,CAAC;YACxC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAA;QACzB,CAAC;IACH,CAAC;IAED,kBAAkB,CAAC,eAA0B,EAAE,OAAgB;QAC7D,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YACjC,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;gBACrC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YAC/B,CAAC;YAED,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC1D,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACzB,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,CAAC,QAAc;QACpB,IAAI,QAAQ,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YACtC,OAAM;QACR,CAAC;QAED,IAAI,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7C,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;gBAC/B,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBAChD,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;gBAC7B,CAAC;YACH,CAAC;QACH,CAAC;aAAM,CAAC;YACN,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAI,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;gBACtE,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;YAC7B,CAAC;QACH,CAAC;IACH,CAAC;IAED,aAAa,CAAC,OAAU;QACtB,IAAI,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC;YACzB,OAAM;QACR,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YACxC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,CAAA;YAEtC,IAAI,CAAC;gBACH,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;YACnB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,GAAG,CAAC,KAAK,CAAC,kBAAkB,EAAE,OAAO,EAAE,KAAK,CAAC,CAAA;YAC/C,CAAC;QACH,CAAC;IACH,CAAC;CACF;AAED,SAAS,WAAW,CAAC,IAAU;IAC7B,IAAI,CAAC,CAAC,IAAI,YAAY,OAAO,CAAC;QAAE,OAAO,KAAK,CAAA;IAC5C,MAAM,EAAE,SAAS,EAAE,GAAG,QAAQ,EAAE,CAAA;IAChC,OAAO,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAA;AAC9E,CAAC;AAED,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAA;AACnC,MAAM,MAAM,GAAG,CAAC,IAAU,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,SAAS,CAAA;AAE/D,SAAS,gBAAgB,CAAC,SAA4B;IACpD,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAA;IAExB,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;QACxB,KAAK,CAAC,eAAe,GAAG,IAAI,CAAA;QAC5B,OAAM;IACR,CAAC;IAED,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;IAC/C,MAAM,cAAc,GAAG,EAAE,CAAA;IAEzB,IAAI,cAAc,EAAE,CAAC;QACnB,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAA;YAE9B,IAAI,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;gBACxB,SAAQ;YACV,CAAC;YAED,QAAQ,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACtB,KAAK,YAAY;oBACf,IAAI,QAAQ,CAAC,QAAQ,KAAM,MAAkB,CAAC,YAAY,CAAC,QAAQ,CAAC,aAAuB,CAAC,EAAE,CAAC;wBAC7F,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;oBAC/B,CAAC;oBACD,MAAK;gBACP,KAAK,WAAW;oBACd,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,EAAE,CAAC;wBAC3F,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;oBAC/B,CAAC;oBACD,MAAK;YACT,CAAC;QACH,CAAC;QAED,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAChC,OAAM;QACR,CAAC;IACH,CAAC;IAED,IAAI,cAAc,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;QAChC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAA;IACzB,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;QACtB,IAAI,cAAc,EAAE,CAAC;YACnB,KAAK,MAAM,QAAQ,IAAI,cAAc,EAAE,CAAC;gBACtC,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAiB,CAAA;gBAE1C,QAAQ,QAAQ,CAAC,IAAI,EAAE,CAAC;oBACtB,KAAK,YAAY;wBACf,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;wBACnC,MAAK;oBACP,KAAK,WAAW;wBACd,KAAK,MAAM,QAAQ,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;4BACvC,QAAQ,CAAC,kBAAkB,CAAC,KAAK,CAAC,eAAe,EAAE,OAAO,CAAC,CAAA;wBAC7D,CAAC;wBACD,MAAK;gBACT,CAAC;YACH,CAAC;QACH,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,UAAU,GAAG,IAAI,CAAA;QACzB,CAAC;IACH,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;QAClF,KAAK,CAAC,YAAY,GAAG,MAAM,CAAC,qBAAqB,CAAC,GAAG,EAAE;YACrD,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,eAAe,CAAA;YACrE,KAAK,CAAC,UAAU,GAAG,KAAK,CAAA;YACxB,KAAK,CAAC,eAAe,GAAG,EAAE,CAAA;YAC1B,KAAK,CAAC,YAAY,GAAG,CAAC,CAAA;YAEtB,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAA;QACjE,CAAC,CAAC,CAAA;IACJ,CAAC;AACH,CAAC;AAED,SAAS,UAAU;IACjB,gBAAgB,EAAE,CAAA;IAElB,IAAI,gBAAgB,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE;QACvD,UAAU,EAAE,IAAI;QAChB,eAAe,EAAE;YACf,OAAO;YACP,qBAAqB;YACrB,iBAAiB;YACjB,gBAAgB;YAChB,oBAAoB;YACpB,UAAU;YACV,MAAM;YACN,KAAK;YACL,QAAQ;SACT;QACD,iBAAiB,EAAE,IAAI;QACvB,SAAS,EAAE,IAAI;QACf,OAAO,EAAE,IAAI;KACd,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,iBAAiB;IACxB,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAA;IACxB,IAAI,KAAK,CAAC,WAAW;QAAE,OAAM;IAC7B,KAAK,CAAC,WAAW,GAAG,IAAI,CAAA;IAExB,IAAI,QAAQ,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QACtC,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,UAAU,CAAC,CAAA;IAC3D,CAAC;SAAM,CAAC;QACN,UAAU,EAAE,CAAA;IACd,CAAC;AACH,CAAC;AAMD,SAAS,MAAM,CACb,eAAuC,EACvC,aAA8C,EAC9C,EAAwB;IAExB,iBAAiB,EAAE,CAAA;IAEnB,IAAI,IAAgB,CAAA;IACpB,IAAI,SAAoB,CAAA;IAExB,IAAI,OAAO,EAAE,KAAK,WAAW,EAAE,CAAC;QAC9B,IAAI,GAAG,eAA0B,CAAA;QACjC,SAAS,GAAG,aAA0B,CAAA;IACxC,CAAC;SAAM,CAAC;QACN,IAAI,GAAG,QAAQ,CAAA;QACf,SAAS,GAAG,eAA4B,CAAA;QACxC,EAAE,GAAG,aAAoC,CAAA;IAC3C,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC,CAAA;IAClD,QAAQ,CAAC,OAAO,EAAE,CAAA;IAClB,QAAQ,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,QAA6B,CAAC,CAAA;AAC1D,CAAC;AAED,MAAM,CAAC,gBAAgB,GAAG,gBAAgB,CAAA;AAE1C,MAAM,CAAC,KAAK,GAAG,GAAG,EAAE;IAClB,QAAQ,EAAE,CAAC,aAAa,GAAG,IAAI,CAAA;AACjC,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,GAAG,GAAG,EAAE;IACnB,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAA;IACxB,KAAK,CAAC,aAAa,GAAG,KAAK,CAAA;IAE3B,IAAI,KAAK,CAAC,eAAe,EAAE,CAAC;QAC1B,KAAK,CAAC,eAAe,GAAG,KAAK,CAAA;QAC7B,UAAU,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAA;IACnC,CAAC;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,SAAmB,EAAE,EAAE;IACzC,MAAM,EAAE,SAAS,EAAE,GAAG,QAAQ,EAAE,CAAA;IAChC,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;QAC1B,IAAI,CAAC;YACH,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CAAA;QAC3B,CAAC;QAAC,MAAM,CAAC;YACP,SAAQ;QACV,CAAC;QACD,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3B,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACnB,CAAC;IACH,CAAC;AACH,CAAC,CAAA;AAED,eAAe,MAAM,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"onVisible.d.ts","sourceRoot":"","sources":["../../src/util/onVisible.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAK9D,wBAAgB,SAAS,CAAC,CAAC,SAAS,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC,CAAC,QAqB/F"}
1
+ {"version":3,"file":"onVisible.d.ts","sourceRoot":"","sources":["../../src/util/onVisible.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAwB9D,wBAAgB,SAAS,CAAC,CAAC,SAAS,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC,CAAC,QAqB/F"}
@@ -1,7 +1,18 @@
1
1
  import onFind from './onFind.js';
2
- let calledIndex = 0;
2
+ const KEY = Symbol.for('brightspot.onVisible');
3
+ let _state;
4
+ function getState() {
5
+ if (_state)
6
+ return _state;
7
+ _state = globalThis[KEY];
8
+ if (!_state) {
9
+ _state = { calledIndex: 0 };
10
+ globalThis[KEY] = _state;
11
+ }
12
+ return _state;
13
+ }
3
14
  export function onVisible(selectors, callback) {
4
- const calledId = `_ovc${calledIndex++}`;
15
+ const calledId = `_ovc${getState().calledIndex++}`;
5
16
  const observer = new IntersectionObserver(changes => {
6
17
  for (const change of changes) {
7
18
  if (change.isIntersecting) {
@@ -1 +1 @@
1
- {"version":3,"file":"onVisible.js","sourceRoot":"","sources":["../../src/util/onVisible.ts"],"names":[],"mappings":"AACA,OAAO,MAAM,MAAM,aAAa,CAAA;AAEhC,IAAI,WAAW,GAAG,CAAC,CAAA;AAEnB,MAAM,UAAU,SAAS,CAAoB,SAAoB,EAAE,QAA6B;IAC9F,MAAM,QAAQ,GAAG,OAAO,WAAW,EAAE,EAAE,CAAA;IAEvC,MAAM,QAAQ,GAAG,IAAI,oBAAoB,CAAC,OAAO,CAAC,EAAE;QAClD,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;gBAC1B,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAA;gBAC7B,MAAM,cAAc,GAAG,OAAO,CAAC,SAAS,CAAA;gBAExC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACvC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;oBAC5B,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;oBAC3B,QAAQ,CAAC,OAAY,CAAC,CAAA;gBACxB,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE;QAC1B,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;IAC3B,CAAC,CAAC,CAAA;AACJ,CAAC"}
1
+ {"version":3,"file":"onVisible.js","sourceRoot":"","sources":["../../src/util/onVisible.ts"],"names":[],"mappings":"AACA,OAAO,MAAM,MAAM,aAAa,CAAA;AAEhC,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAA;AAM9C,IAAI,MAAkC,CAAA;AAEtC,SAAS,QAAQ;IACf,IAAI,MAAM;QAAE,OAAO,MAAM,CAAA;IAEzB,MAAM,GAAI,UAAkB,CAAC,GAAG,CAA+B,CAAA;IAE/D,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,GAAG,EAAE,WAAW,EAAE,CAAC,EAAE,CAC1B;QAAC,UAAkB,CAAC,GAAG,CAAC,GAAG,MAAM,CAAA;IACpC,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC;AAED,MAAM,UAAU,SAAS,CAAoB,SAAoB,EAAE,QAA6B;IAC9F,MAAM,QAAQ,GAAG,OAAO,QAAQ,EAAE,CAAC,WAAW,EAAE,EAAE,CAAA;IAElD,MAAM,QAAQ,GAAG,IAAI,oBAAoB,CAAC,OAAO,CAAC,EAAE;QAClD,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;gBAC1B,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAA;gBAC7B,MAAM,cAAc,GAAG,OAAO,CAAC,SAAS,CAAA;gBAExC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACvC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;oBAC5B,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;oBAC3B,QAAQ,CAAC,OAAY,CAAC,CAAA;gBACxB,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE;QAC1B,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;IAC3B,CAAC,CAAC,CAAA;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@brightspot/ui",
3
- "version": "1.4.0",
3
+ "version": "1.5.0",
4
4
  "type": "module",
5
5
  "license": "UNLICENSED",
6
6
  "description": "A UI library for building Brightspot CMS components.",
@@ -8,6 +8,8 @@
8
8
  "customElements": "dist/custom-elements.json",
9
9
  "exports": {
10
10
  ".": "./dist/tailwind.config.js",
11
+ "./components/*": "./dist/components/*",
12
+ "./util/*": "./dist/util/*",
11
13
  "./dist/*": "./dist/*",
12
14
  "./custom-elements.json": "./dist/custom-elements.json"
13
15
  },
@@ -21,6 +23,7 @@
21
23
  "prepack": "yarn build && yarn build-storybook",
22
24
  "storybook": "yarn cem && storybook dev -p 6006",
23
25
  "build-storybook": "yarn cem && storybook build -o ./dist/storybook",
26
+ "test:storybook": "vitest --project=storybook",
24
27
  "prepare": "husky"
25
28
  },
26
29
  "devDependencies": {
@@ -29,13 +32,15 @@
29
32
  "@custom-elements-manifest/analyzer": "^0.11.0",
30
33
  "@custom-elements-manifest/to-markdown": "^0.1.0",
31
34
  "@eslint/js": "^9.23.0",
32
- "@storybook/addon-docs": "^10.0.6",
33
- "@storybook/addon-themes": "^10.0.6",
34
- "@storybook/web-components-vite": "^10.0.6",
35
+ "@storybook/addon-docs": "10.2.12",
36
+ "@storybook/addon-themes": "10.2.12",
37
+ "@storybook/addon-vitest": "10.2.12",
38
+ "@storybook/web-components-vite": "10.2.12",
35
39
  "@tailwindcss/container-queries": "^0.1.1",
36
40
  "@types/node": "^24.10.0",
37
41
  "@types/postcss-import": "^14.0.3",
38
42
  "@types/uuid": "^8.3.0",
43
+ "@vitest/browser-playwright": "^4.0.18",
39
44
  "@wc-toolkit/storybook-helpers": "^10.0.0",
40
45
  "autoprefixer": "10.4.21",
41
46
  "css-loader": "^6.7.1",
@@ -49,18 +54,20 @@
49
54
  "lit": "^3.3.0",
50
55
  "loglevel": "^1.8.0",
51
56
  "mini-css-extract-plugin": "^2.6.1",
57
+ "playwright": "^1.58.2",
52
58
  "postcss-import": "^16.0.0",
53
59
  "postcss-loader": "^8.0.0",
54
60
  "prettier": "^3.2.5",
55
61
  "prettier-plugin-organize-imports": "^4.3.0",
56
62
  "prettier-plugin-tailwindcss": "^0.6.8",
57
63
  "shx": "^0.4.0",
58
- "storybook": "^10.0.6",
64
+ "storybook": "10.2.12",
59
65
  "style-loader": "^3.3.1",
60
66
  "ts-node": "^10.8.1",
61
67
  "typescript": "^5.9.3",
62
68
  "typescript-eslint": "^8.29.0",
63
69
  "vite": "^7.1.7",
70
+ "vitest": "^4.0.18",
64
71
  "webpack": "^5.73.0",
65
72
  "webpack-cli": "^4.10.0",
66
73
  "webpack-merge": "^5.8.0"
@@ -1,211 +0,0 @@
1
- import{g as w,x as s}from"./iframe-lTczLWsL.js";import"./preload-helper-PPVm8Dsz.js";const{events:m,args:x,argTypes:b}=w("btu-avatar-group"),d=["purple","primary","teal","rose","error","warning","success"],h=t=>{let a=5381;for(let n=0;n<t.length;n++)a=a*33^t.charCodeAt(n);return a>>>0},e=t=>{const a=h(t)%d.length;return`oklch(var(--btu-theme-${d[a]}-600))`},P="data:image/jpeg;base64,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",i=[{initials:"AC",name:"Ashley",color:e("AC")},{initials:"DG",name:"Dylan",color:e("DG"),image:P},{initials:"JP",name:"Pencola",color:e("JP")},{initials:"JR",name:"John R.",color:e("JR")},{initials:"KW",name:"Kat(e)",color:e("KW")},{initials:"KL",name:"hotpink",color:e("KL")},{initials:"ML",name:"Lunsford",color:e("ML")},{initials:"MW",name:"Wardian",color:e("MW")},{initials:"PS",name:"Praneetha",color:e("PS")},{initials:"TN",name:"Tom",color:e("TN")}],H={title:"Components/AvatarGroup",component:"btu-avatar-group",tags:["autodocs"],parameters:{docs:{subtitle:"Group multiple avatars with overflow handling",description:{component:`
2
- <h3>When to use:</h3>
3
- <ul>
4
- <li>To display multiple Avatars in a compact layout</li>
5
- <li>In RTC-driven interfaces that involve live editing with multiple users</li>
6
- <li>When you need to show a list of participants with overflow handling</li>
7
- </ul>
8
-
9
- <h3>When not to use:</h3>
10
- <ul>
11
- <li>For a single avatar (use Avatar instead)</li>
12
- </ul>
13
- `}},actions:{handles:m},controls:{expanded:!0}},args:{...x},argTypes:{...b,max:{control:{type:"number"},description:'Maximum number of visible avatars. Remaining avatars shown as "+N"'},size:{...b.size,control:{type:"select"},description:"Size variant for all child avatars (unless individually overridden)"}},render:t=>s`
14
- <btu-avatar-group size=${t.size} max=${t.max}>
15
- ${i.slice(0,5).map(a=>s`<btu-avatar
16
- src="${a.image||""}"
17
- fallback="${a.initials}"
18
- alt="${a.name}"
19
- style="--avatar-bg-color: ${a.color}"
20
- ></btu-avatar>`)}
21
- </btu-avatar-group>
22
- `},u={args:{},parameters:{docs:{description:{story:"A basic avatar group showing multiple users. Child avatars manage their own colors and styling."}}}},v={render:()=>s`<div class="flex flex-col gap-4">
23
- <btu-avatar-group max="5" size="md">
24
- ${i.map(t=>s`<btu-avatar
25
- src="${t.image||""}"
26
- fallback="${t.initials}"
27
- alt="${t.name}"
28
- style="--avatar-bg-color: ${t.color}"
29
- ></btu-avatar>`)}
30
- </btu-avatar-group>
31
- </div>`,parameters:{docs:{description:{story:'Use the `max` property to limit visible avatars. Remaining avatars are shown as a "+N" indicator.'}}}},f={render:()=>{let t=i.slice(0,3),a;const n=()=>{if(!a)return;a.querySelectorAll("btu-avatar-group").forEach(A=>{Array.from(A.children).forEach(o=>{o.classList.contains("btu-avatar-group-overflow")||o.remove()}),t.forEach(o=>{const l=document.createElement("btu-avatar");l.src=o.image||"",l.setAttribute("fallback",o.initials),l.setAttribute("alt",o.name),l.style.setProperty("--avatar-bg-color",o.color),A.appendChild(l)}),A.processAvatars()});const c=a.querySelector(".user-count");c&&(c.textContent=`${t.length} users`)},p=()=>{const r=i.filter(c=>!t.find(A=>A.initials===c.initials));r.length>0&&(t=[...t,r[0]],n())},g=()=>{t.length>0&&(t=t.slice(0,-1),n())};return setTimeout(()=>{a=document.querySelector("#dynamic-avatar-container"),a&&(a.querySelector(".add-btn")?.addEventListener("click",p),a.querySelector(".remove-btn")?.addEventListener("click",g))},0),s`
32
- <div id="dynamic-avatar-container" class="flex flex-col gap-6">
33
- <div class="flex items-center gap-2">
34
- <button
35
- class="add-btn btu-button btu-button-success btu-button-md btu-button-fill-none btu-button-outline px-4 py-2"
36
- type="button"
37
- >
38
- Add User
39
- </button>
40
- <button
41
- class="remove-btn btu-button btu-button-error btu-button-md btu-button-fill-none btu-button-outline px-4 py-2"
42
- type="button"
43
- >
44
- Remove User
45
- </button>
46
- <span class="user-count text-xs text-gray-600 dark:text-gray-400">3 users</span>
47
- </div>
48
-
49
- <div class="flex flex-col gap-6">
50
- <div>
51
- <div class="mb-2 text-xs text-gray-600">With max="5"</div>
52
- <btu-avatar-group max="5" size="md">
53
- ${i.slice(0,3).map(r=>s`<btu-avatar
54
- src="${r.image||""}"
55
- fallback="${r.initials}"
56
- alt="${r.name}"
57
- style="--avatar-bg-color: ${r.color}"
58
- ></btu-avatar>`)}
59
- </btu-avatar-group>
60
- </div>
61
-
62
- <div>
63
- <div class="mb-2 text-xs text-gray-600">Without max limit</div>
64
- <btu-avatar-group size="md">
65
- ${i.slice(0,3).map(r=>s`<btu-avatar
66
- src="${r.image||""}"
67
- fallback="${r.initials}"
68
- alt="${r.name}"
69
- style="--avatar-bg-color: ${r.color}"
70
- ></btu-avatar>`)}
71
- </btu-avatar-group>
72
- </div>
73
- </div>
74
- </div>
75
- `},parameters:{docs:{description:{story:'Add or remove users dynamically to see how the overflow logic works. The top group has a max of 5 avatars and will show a "+N" indicator when exceeded. The bottom group has no limit. Each avatar gets a consistent color based on its initials using a hash function.'}}}};u.parameters={...u.parameters,docs:{...u.parameters?.docs,source:{originalSource:`{
76
- args: {},
77
- parameters: {
78
- docs: {
79
- description: {
80
- story: 'A basic avatar group showing multiple users. Child avatars manage their own colors and styling.'
81
- }
82
- }
83
- }
84
- }`,...u.parameters?.docs?.source}}};v.parameters={...v.parameters,docs:{...v.parameters?.docs,source:{originalSource:`{
85
- render: () => html\`<div class="flex flex-col gap-4">
86
- <btu-avatar-group max="5" size="md">
87
- \${AVATAR_USERS.map(user => html\`<btu-avatar
88
- src="\${user.image || ''}"
89
- fallback="\${user.initials}"
90
- alt="\${user.name}"
91
- style="--avatar-bg-color: \${user.color}"
92
- ></btu-avatar>\`)}
93
- </btu-avatar-group>
94
- </div>\`,
95
- parameters: {
96
- docs: {
97
- description: {
98
- story: 'Use the \`max\` property to limit visible avatars. Remaining avatars are shown as a "+N" indicator.'
99
- }
100
- }
101
- }
102
- }`,...v.parameters?.docs?.source}}};f.parameters={...f.parameters,docs:{...f.parameters?.docs,source:{originalSource:`{
103
- render: () => {
104
- let currentUsers = AVATAR_USERS.slice(0, 3);
105
- let container: HTMLElement;
106
- const updateGroups = () => {
107
- if (!container) return;
108
- const groups = container.querySelectorAll('btu-avatar-group');
109
- groups.forEach(group => {
110
- // Remove existing avatars (but not overflow avatar)
111
- Array.from(group.children).forEach(child => {
112
- if (!child.classList.contains('btu-avatar-group-overflow')) {
113
- child.remove();
114
- }
115
- });
116
-
117
- // Add current avatars
118
- currentUsers.forEach(user => {
119
- const avatar = document.createElement('btu-avatar');
120
- avatar.src = user.image || '';
121
- avatar.setAttribute('fallback', user.initials);
122
- avatar.setAttribute('alt', user.name);
123
- avatar.style.setProperty('--avatar-bg-color', user.color);
124
- group.appendChild(avatar);
125
- })
126
-
127
- // Trigger component to reprocess avatars
128
- ;
129
- (group as any).processAvatars();
130
- });
131
-
132
- // Update counter
133
- const counter = container.querySelector('.user-count');
134
- if (counter) {
135
- counter.textContent = \`\${currentUsers.length} users\`;
136
- }
137
- };
138
- const addUser = () => {
139
- const availableToAdd = AVATAR_USERS.filter(u => !currentUsers.find(c => c.initials === u.initials));
140
- if (availableToAdd.length > 0) {
141
- currentUsers = [...currentUsers, availableToAdd[0]];
142
- updateGroups();
143
- }
144
- };
145
- const removeUser = () => {
146
- if (currentUsers.length > 0) {
147
- currentUsers = currentUsers.slice(0, -1);
148
- updateGroups();
149
- }
150
- };
151
- setTimeout(() => {
152
- container = document.querySelector('#dynamic-avatar-container') as HTMLElement;
153
- if (container) {
154
- container.querySelector('.add-btn')?.addEventListener('click', addUser);
155
- container.querySelector('.remove-btn')?.addEventListener('click', removeUser);
156
- }
157
- }, 0);
158
- return html\`
159
- <div id="dynamic-avatar-container" class="flex flex-col gap-6">
160
- <div class="flex items-center gap-2">
161
- <button
162
- class="add-btn btu-button btu-button-success btu-button-md btu-button-fill-none btu-button-outline px-4 py-2"
163
- type="button"
164
- >
165
- Add User
166
- </button>
167
- <button
168
- class="remove-btn btu-button btu-button-error btu-button-md btu-button-fill-none btu-button-outline px-4 py-2"
169
- type="button"
170
- >
171
- Remove User
172
- </button>
173
- <span class="user-count text-xs text-gray-600 dark:text-gray-400">3 users</span>
174
- </div>
175
-
176
- <div class="flex flex-col gap-6">
177
- <div>
178
- <div class="mb-2 text-xs text-gray-600">With max="5"</div>
179
- <btu-avatar-group max="5" size="md">
180
- \${AVATAR_USERS.slice(0, 3).map(user => html\`<btu-avatar
181
- src="\${user.image || ''}"
182
- fallback="\${user.initials}"
183
- alt="\${user.name}"
184
- style="--avatar-bg-color: \${user.color}"
185
- ></btu-avatar>\`)}
186
- </btu-avatar-group>
187
- </div>
188
-
189
- <div>
190
- <div class="mb-2 text-xs text-gray-600">Without max limit</div>
191
- <btu-avatar-group size="md">
192
- \${AVATAR_USERS.slice(0, 3).map(user => html\`<btu-avatar
193
- src="\${user.image || ''}"
194
- fallback="\${user.initials}"
195
- alt="\${user.name}"
196
- style="--avatar-bg-color: \${user.color}"
197
- ></btu-avatar>\`)}
198
- </btu-avatar-group>
199
- </div>
200
- </div>
201
- </div>
202
- \`;
203
- },
204
- parameters: {
205
- docs: {
206
- description: {
207
- story: 'Add or remove users dynamically to see how the overflow logic works. The top group has a max of 5 avatars and will show a "+N" indicator when exceeded. The bottom group has no limit. Each avatar gets a consistent color based on its initials using a hash function.'
208
- }
209
- }
210
- }
211
- }`,...f.parameters?.docs?.source}}};const y=["Default","WithMaxLimit","DynamicAvatars"];export{u as Default,f as DynamicAvatars,v as WithMaxLimit,y as __namedExportsOrder,H as default};