@brightspot/ui 1.4.1 → 1.6.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/pagination/Pagination.d.ts +109 -0
  7. package/dist/components/pagination/Pagination.d.ts.map +1 -0
  8. package/dist/components/pagination/Pagination.js +351 -0
  9. package/dist/components/pagination/Pagination.js.map +1 -0
  10. package/dist/components/popover/Popover.d.ts +161 -0
  11. package/dist/components/popover/Popover.d.ts.map +1 -0
  12. package/dist/components/popover/Popover.js +436 -0
  13. package/dist/components/popover/Popover.js.map +1 -0
  14. package/dist/components/widget/Widget.css +104 -0
  15. package/dist/components/widget/Widget.d.ts +170 -0
  16. package/dist/components/widget/Widget.d.ts.map +1 -0
  17. package/dist/components/widget/Widget.js +434 -0
  18. package/dist/components/widget/Widget.js.map +1 -0
  19. package/dist/custom-elements.json +1151 -184
  20. package/dist/global.d.ts +5 -0
  21. package/dist/storybook/assets/{Avatar.stories-QxWs-YfX.js → Avatar.stories-CafEcy4T.js} +37 -32
  22. package/dist/storybook/assets/AvatarGroup.stories-BBkQuFKk.js +225 -0
  23. package/dist/storybook/assets/{Badge.stories-BpaApWbR.js → Badge.stories-mFZsls7i.js} +1 -1
  24. package/dist/storybook/assets/{Button.stories-C5h2usmd.js → Button.stories-CAWX17L1.js} +1 -1
  25. package/dist/storybook/assets/{CircularProgress.stories-DlPOiGja.js → CircularProgress.stories-DBVt4Cg2.js} +1 -1
  26. package/dist/storybook/assets/{ClipboardMixin.stories-Bb45-UOM.js → ClipboardMixin.stories-BH9E-OI6.js} +7 -7
  27. package/dist/storybook/assets/Color-6BZIO3FS-CVnTzq2p.js +1 -0
  28. package/dist/storybook/assets/{Colors.stories-DP2JKWUJ.js → Colors.stories-BFYmP0LL.js} +1 -1
  29. package/dist/storybook/assets/ComponentStatesMixin-Cu7YXkU8.js +1 -0
  30. package/dist/storybook/assets/{ComponentStatesMixin.stories-CyQ2aSTu.js → ComponentStatesMixin.stories-CAvyYt0H.js} +3 -3
  31. package/dist/storybook/assets/{CopyToClipboard.stories-DR7pckeV.js → CopyToClipboard.stories-DbJZsp_L.js} +1 -1
  32. package/dist/storybook/assets/{Debounce.stories-hkqyvqmg.js → Debounce.stories-BiFiH1K9.js} +1 -1
  33. package/dist/storybook/assets/{DocsRenderer-LL677BLK-Dtw9GMer.js → DocsRenderer-LL677BLK-Bq6G4eeC.js} +6 -6
  34. package/dist/storybook/assets/{Events.stories-BAgDzdyl.js → Events.stories-BsDBxh8_.js} +1 -1
  35. package/dist/storybook/assets/{Heading.stories-CN_fPsRf.js → Heading.stories-zGzWgHVO.js} +1 -1
  36. package/dist/storybook/assets/{Icon.stories-CSx_2K8V.js → Icon.stories-B4T6sSwf.js} +1 -1
  37. package/dist/storybook/assets/{LinearProgress.stories-In48DY2g.js → LinearProgress.stories-qzqmUUwY.js} +1 -1
  38. package/dist/storybook/assets/Pagination.stories-B6Q-7taJ.js +272 -0
  39. package/dist/storybook/assets/Popover.stories-CGkU0SGv.js +431 -0
  40. package/dist/storybook/assets/ReadyMixin-3YCzoG6W.js +1 -0
  41. package/dist/storybook/assets/{Rtc.stories-19d7WXe4.js → Rtc.stories-Y1MYTWAt.js} +1 -1
  42. package/dist/storybook/assets/{ScrollShadow.stories-BFjracVd.js → ScrollShadow.stories-B9kSpLT1.js} +1 -1
  43. package/dist/storybook/assets/{Throttle.stories-DD6ydiVq.js → Throttle.stories-BgvLDrS3.js} +1 -1
  44. package/dist/storybook/assets/Tooltip.stories-POo1M-ew.js +143 -0
  45. package/dist/storybook/assets/Widget.stories--JpqVyJe.js +233 -0
  46. package/dist/storybook/assets/{WithTooltip-65CFNBJE-Be1dKqOF.js → WithTooltip-65CFNBJE-DNbD9hAX.js} +2 -2
  47. package/dist/storybook/assets/custom-element-UsVr97OX.js +1 -0
  48. package/dist/storybook/assets/{formatter-EIJCOSYU-anC2P5HS.js → formatter-EIJCOSYU-Cy8KIxab.js} +1 -1
  49. package/dist/storybook/assets/if-defined-CngSGyRu.js +1 -0
  50. package/dist/storybook/assets/iframe-DiT9Iz2T.css +1 -0
  51. package/dist/storybook/assets/{iframe-Bl9oHz5c.js → iframe-Dz6CxatW.js} +95 -95
  52. package/dist/storybook/assets/{index-Cn5E5A3G.js → index-CebChkmF.js} +1 -1
  53. package/dist/storybook/assets/{onFind.stories-BMDLUk0l.js → onFind.stories-nHDImx0x.js} +1 -1
  54. package/dist/storybook/assets/{onRemove.stories-C3FcxtYh.js → onRemove.stories-CBxYVPwd.js} +1 -1
  55. package/dist/storybook/assets/{onVisible.stories-B8Zyu0Th.js → onVisible.stories-D4Qewc9Y.js} +1 -1
  56. package/dist/storybook/assets/style-map-BgW9piaW.js +1 -0
  57. package/dist/storybook/assets/{syntaxhighlighter-ED5Y7EFY-BfTKsIVL.js → syntaxhighlighter-ED5Y7EFY-CROW1475.js} +1 -1
  58. package/dist/storybook/iframe.html +2 -2
  59. package/dist/storybook/index.json +1 -1
  60. package/dist/storybook/project.json +1 -1
  61. package/dist/tailwind-plugin-pagination.d.ts +2 -0
  62. package/dist/tailwind-plugin-pagination.d.ts.map +1 -0
  63. package/dist/tailwind-plugin-pagination.js +164 -0
  64. package/dist/tailwind-plugin-pagination.js.map +1 -0
  65. package/dist/tailwind-plugin-pagination.ts +179 -0
  66. package/dist/tailwind-plugin-popover.d.ts +2 -0
  67. package/dist/tailwind-plugin-popover.d.ts.map +1 -0
  68. package/dist/tailwind-plugin-popover.js +177 -0
  69. package/dist/tailwind-plugin-popover.js.map +1 -0
  70. package/dist/tailwind-plugin-popover.ts +202 -0
  71. package/dist/tailwind-plugin-tooltip.d.ts +2 -0
  72. package/dist/tailwind-plugin-tooltip.d.ts.map +1 -0
  73. package/dist/tailwind-plugin-tooltip.js +184 -0
  74. package/dist/tailwind-plugin-tooltip.js.map +1 -0
  75. package/dist/tailwind-plugin-tooltip.ts +209 -0
  76. package/dist/tailwind.config.d.ts +1 -4
  77. package/dist/tailwind.config.d.ts.map +1 -1
  78. package/dist/tailwind.config.js +1 -0
  79. package/dist/tailwind.config.js.map +1 -1
  80. package/dist/tailwind.config.ts +1 -0
  81. package/dist/util/EventEmitterMixin.d.ts +20 -0
  82. package/dist/util/EventEmitterMixin.d.ts.map +1 -1
  83. package/dist/util/EventEmitterMixin.js +1 -1
  84. package/dist/util/EventEmitterMixin.js.map +1 -1
  85. package/dist/util/TooltipController.d.ts +37 -0
  86. package/dist/util/TooltipController.d.ts.map +1 -0
  87. package/dist/util/TooltipController.js +133 -0
  88. package/dist/util/TooltipController.js.map +1 -0
  89. package/dist/util/TooltipMixin.d.ts +42 -0
  90. package/dist/util/TooltipMixin.d.ts.map +1 -0
  91. package/dist/util/TooltipMixin.js +401 -0
  92. package/dist/util/TooltipMixin.js.map +1 -0
  93. package/dist/util/aria.d.ts.map +1 -1
  94. package/dist/util/aria.js +2 -1
  95. package/dist/util/aria.js.map +1 -1
  96. package/dist/util/i18n.d.ts +13 -0
  97. package/dist/util/i18n.d.ts.map +1 -0
  98. package/dist/util/i18n.js +21 -0
  99. package/dist/util/i18n.js.map +1 -0
  100. package/package.json +2 -2
  101. package/dist/storybook/assets/AvatarGroup.stories-Cy_Bvn7E.js +0 -211
  102. package/dist/storybook/assets/Color-6BZIO3FS-CcgGYVAo.js +0 -1
  103. package/dist/storybook/assets/ComponentStatesMixin-B7ci0thi.js +0 -1
  104. package/dist/storybook/assets/iframe-B4njXYq6.css +0 -1
@@ -0,0 +1,401 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { LitElement } from 'lit';
8
+ import { property } from 'lit/decorators.js';
9
+ // Tailwind content scanning requires complete class names (no template literals).
10
+ const POSITION_CLASSES = {
11
+ top: 'btu-tooltip-top',
12
+ bottom: 'btu-tooltip-bottom',
13
+ left: 'btu-tooltip-left',
14
+ right: 'btu-tooltip-right',
15
+ };
16
+ const OFFSET_CLASSES = {
17
+ sm: 'btu-tooltip-offset-sm',
18
+ md: 'btu-tooltip-offset-md',
19
+ lg: 'btu-tooltip-offset-lg',
20
+ xl: 'btu-tooltip-offset-xl',
21
+ };
22
+ /**
23
+ * Mixin that adds declarative tooltip support to any LitElement component.
24
+ *
25
+ * Uses the native Popover API for top-layer rendering and CSS anchor positioning
26
+ * for viewport-aware placement. The tooltip element is appended as the last child
27
+ * of the host (safe from Lit re-render interference in Light DOM components).
28
+ *
29
+ * For click triggers (`popover="auto"`), the browser provides light dismiss
30
+ * (Escape key and click-outside). For hover/focus triggers (`popover="manual"`),
31
+ * show/hide is controlled by the mixin.
32
+ *
33
+ * @mixin
34
+ *
35
+ * @cssprop --tooltip-color-background - Background color (default: white)
36
+ * @cssprop --tooltip-color-text - Text color (default: oklch gray-900)
37
+ * @cssprop --tooltip-border-radius - Border radius (default: 0.5rem / lg)
38
+ *
39
+ * @example
40
+ * ```typescript
41
+ * class MyComponent extends TooltipMixin(EventEmitterMixin(ReadyMixin(LitElement))) {
42
+ * // Component now supports tooltip, tooltip-position, tooltip-delay attributes
43
+ * }
44
+ * ```
45
+ *
46
+ * ```html
47
+ * <my-component tooltip="Hello!" tooltip-position="bottom"></my-component>
48
+ * ```
49
+ */
50
+ export const TooltipMixin = (superClass) => {
51
+ class TooltipMixinClass extends superClass {
52
+ constructor() {
53
+ super(...arguments);
54
+ /**
55
+ * Tooltip text content. Set to empty string to remove the tooltip.
56
+ * @attr
57
+ */
58
+ this.tooltip = '';
59
+ /**
60
+ * Position relative to the host element. Auto-flips when constrained by the viewport.
61
+ * @attr
62
+ */
63
+ this.tooltipPosition = 'top';
64
+ /**
65
+ * Show delay in milliseconds (hover trigger only).
66
+ * @attr
67
+ */
68
+ this.tooltipDelay = 300;
69
+ /**
70
+ * Gap between host and tooltip (sm=4px, md=8px, lg=12px, xl=16px).
71
+ * @attr
72
+ */
73
+ this.tooltipOffset = null;
74
+ /**
75
+ * Hide the arrow pseudo-element.
76
+ * @attr
77
+ */
78
+ this.tooltipNoArrow = false;
79
+ /**
80
+ * Space-separated trigger types: 'hover', 'focus', 'click'.
81
+ * @attr
82
+ */
83
+ this.tooltipTrigger = 'hover focus';
84
+ /** @internal */
85
+ this._tooltipEl = null;
86
+ /** @internal */
87
+ this._tooltipId = `btu-tooltip-${crypto.randomUUID()}`;
88
+ /** @internal */
89
+ this._anchorName = `--btu-trigger-${crypto.randomUUID()}`;
90
+ /** @internal */
91
+ this._showTimer = null;
92
+ /** @internal */
93
+ this._isVisible = false;
94
+ /** @internal Parsed set of active triggers */
95
+ this._activeTriggers = new Set();
96
+ /** @internal bound listeners for cleanup */
97
+ this._onMouseEnter = this._handleMouseEnter.bind(this);
98
+ this._onMouseLeave = this._handleMouseLeave.bind(this);
99
+ this._onFocusIn = this._handleFocusIn.bind(this);
100
+ this._onFocusOut = this._handleFocusOut.bind(this);
101
+ this._onClick = this._handleClick.bind(this);
102
+ this._onNativeToggle = this._handleNativeToggle.bind(this);
103
+ this._onKeyDown = this._handleKeyDown.bind(this);
104
+ this._onDocumentClick = null;
105
+ }
106
+ connectedCallback() {
107
+ super.connectedCallback();
108
+ this._bindTriggerListeners();
109
+ }
110
+ disconnectedCallback() {
111
+ this._clearShowTimer();
112
+ this._removeDocumentClickListener();
113
+ this._unbindTriggerListeners();
114
+ if (this._tooltipEl) {
115
+ try {
116
+ this._tooltipEl.hidePopover();
117
+ }
118
+ catch (e) {
119
+ if (!(e instanceof DOMException && e.name === 'InvalidStateError')) {
120
+ console.warn('[btu-tooltip] Failed to hide tooltip during disconnect:', e);
121
+ }
122
+ }
123
+ this._tooltipEl.removeEventListener('toggle', this._onNativeToggle);
124
+ this._tooltipEl.remove();
125
+ this._tooltipEl = null;
126
+ }
127
+ this._removeAriaDescribedBy();
128
+ this.style.removeProperty('anchor-name');
129
+ this._isVisible = false;
130
+ super.disconnectedCallback();
131
+ }
132
+ updated(changedProperties) {
133
+ super.updated(changedProperties);
134
+ if (changedProperties.has('tooltipTrigger')) {
135
+ this._unbindTriggerListeners();
136
+ this._bindTriggerListeners();
137
+ // Update popover mode when trigger changes
138
+ if (this._tooltipEl) {
139
+ if (this._isVisible) {
140
+ this._hide();
141
+ }
142
+ this._tooltipEl.setAttribute('popover', this._getPopoverMode());
143
+ }
144
+ }
145
+ if (changedProperties.has('tooltip') ||
146
+ changedProperties.has('tooltipPosition') ||
147
+ changedProperties.has('tooltipDelay') ||
148
+ changedProperties.has('tooltipOffset') ||
149
+ changedProperties.has('tooltipNoArrow')) {
150
+ this._syncTooltipElement();
151
+ }
152
+ }
153
+ /** @internal
154
+ * Always manual — popovertarget (needed for popover="auto" click toggle)
155
+ * only works on <button>/<input>, not arbitrary custom element hosts.
156
+ */
157
+ _getPopoverMode() {
158
+ return 'manual';
159
+ }
160
+ /** @internal */
161
+ _syncTooltipElement() {
162
+ if (!this.tooltip) {
163
+ // Remove tooltip if text cleared
164
+ if (this._tooltipEl) {
165
+ this._hide();
166
+ this._tooltipEl.removeEventListener('toggle', this._onNativeToggle);
167
+ this._tooltipEl.remove();
168
+ this._tooltipEl = null;
169
+ this._removeAriaDescribedBy();
170
+ this.style.removeProperty('anchor-name');
171
+ document.removeEventListener('keydown', this._onKeyDown);
172
+ }
173
+ return;
174
+ }
175
+ // Set unique anchor name on host
176
+ this.style.setProperty('anchor-name', this._anchorName);
177
+ if (!this._tooltipEl) {
178
+ this._tooltipEl = this._createTooltipElement();
179
+ this.appendChild(this._tooltipEl);
180
+ this._appendAriaDescribedBy();
181
+ // Always manual mode — Escape not handled by browser, add only when tooltip exists
182
+ document.addEventListener('keydown', this._onKeyDown);
183
+ }
184
+ // Update text content
185
+ this._tooltipEl.textContent = this.tooltip;
186
+ // Update classes (includes offset)
187
+ this._tooltipEl.className = this._buildTooltipClasses();
188
+ }
189
+ /** @internal */
190
+ _createTooltipElement() {
191
+ const el = document.createElement('div');
192
+ el.id = this._tooltipId;
193
+ el.className = this._buildTooltipClasses();
194
+ el.setAttribute('role', 'tooltip');
195
+ el.setAttribute('data-tooltip-internal', '');
196
+ el.setAttribute('popover', this._getPopoverMode());
197
+ el.style.setProperty('position-anchor', this._anchorName);
198
+ el.textContent = this.tooltip;
199
+ // Listen for native toggle events — single source of truth for state
200
+ el.addEventListener('toggle', this._onNativeToggle);
201
+ return el;
202
+ }
203
+ /** @internal Builds the full class string for the tooltip element */
204
+ _buildTooltipClasses() {
205
+ const classes = ['btu-tooltip', POSITION_CLASSES[this.tooltipPosition]];
206
+ if (this.tooltipOffset && OFFSET_CLASSES[this.tooltipOffset])
207
+ classes.push(OFFSET_CLASSES[this.tooltipOffset]);
208
+ if (this.tooltipNoArrow)
209
+ classes.push('btu-tooltip-no-arrow');
210
+ return classes.join(' ');
211
+ }
212
+ /** @internal */
213
+ _hasTrigger(trigger) {
214
+ return this._activeTriggers.has(trigger);
215
+ }
216
+ /** @internal Parses trigger string and attaches relevant listeners */
217
+ _bindTriggerListeners() {
218
+ const VALID_TRIGGERS = new Set(['hover', 'focus', 'click']);
219
+ this._activeTriggers = new Set(this.tooltipTrigger.trim().split(/\s+/));
220
+ for (const trigger of this._activeTriggers) {
221
+ if (!VALID_TRIGGERS.has(trigger)) {
222
+ console.warn(`[btu-tooltip] Unrecognized tooltip-trigger value: "${trigger}". Valid values: hover, focus, click.`);
223
+ }
224
+ }
225
+ if (this._hasTrigger('hover')) {
226
+ this.addEventListener('mouseenter', this._onMouseEnter);
227
+ this.addEventListener('mouseleave', this._onMouseLeave);
228
+ }
229
+ if (this._hasTrigger('focus')) {
230
+ this.addEventListener('focusin', this._onFocusIn);
231
+ this.addEventListener('focusout', this._onFocusOut);
232
+ }
233
+ if (this._hasTrigger('click')) {
234
+ this.addEventListener('click', this._onClick);
235
+ }
236
+ // Keydown listener for Escape is added in _syncTooltipElement when tooltip is set
237
+ }
238
+ /** @internal Removes all trigger listeners */
239
+ _unbindTriggerListeners() {
240
+ this.removeEventListener('mouseenter', this._onMouseEnter);
241
+ this.removeEventListener('mouseleave', this._onMouseLeave);
242
+ this.removeEventListener('focusin', this._onFocusIn);
243
+ this.removeEventListener('focusout', this._onFocusOut);
244
+ this.removeEventListener('click', this._onClick);
245
+ document.removeEventListener('keydown', this._onKeyDown);
246
+ }
247
+ /** @internal */
248
+ _show() {
249
+ if (this._isVisible || !this._tooltipEl)
250
+ return;
251
+ try {
252
+ this._tooltipEl.showPopover();
253
+ }
254
+ catch (e) {
255
+ if (!(e instanceof DOMException && e.name === 'InvalidStateError')) {
256
+ console.warn('[btu-tooltip] Failed to show tooltip:', e);
257
+ }
258
+ }
259
+ // Click-outside dismiss for click-triggered tooltips
260
+ if (this._hasTrigger('click')) {
261
+ // Use next tick to avoid the opening click from immediately dismissing
262
+ setTimeout(() => {
263
+ this._removeDocumentClickListener();
264
+ this._onDocumentClick = (e) => {
265
+ const path = e.composedPath();
266
+ if (!path.includes(this) && (!this._tooltipEl || !path.includes(this._tooltipEl))) {
267
+ this._hide();
268
+ }
269
+ };
270
+ document.addEventListener('click', this._onDocumentClick);
271
+ }, 0);
272
+ }
273
+ }
274
+ /** @internal */
275
+ _hide() {
276
+ this._clearShowTimer();
277
+ this._removeDocumentClickListener();
278
+ if (!this._isVisible || !this._tooltipEl)
279
+ return;
280
+ try {
281
+ this._tooltipEl.hidePopover();
282
+ }
283
+ catch (e) {
284
+ if (!(e instanceof DOMException && e.name === 'InvalidStateError')) {
285
+ console.warn('[btu-tooltip] Failed to hide tooltip:', e);
286
+ }
287
+ }
288
+ }
289
+ /** @internal */
290
+ _removeDocumentClickListener() {
291
+ if (this._onDocumentClick) {
292
+ document.removeEventListener('click', this._onDocumentClick);
293
+ this._onDocumentClick = null;
294
+ }
295
+ }
296
+ /** @internal Native toggle event — single source of truth for state changes */
297
+ _handleNativeToggle(e) {
298
+ const { newState } = e;
299
+ this._isVisible = newState === 'open';
300
+ this.dispatchEvent(new CustomEvent(this._isVisible ? 'btu-tooltip-show' : 'btu-tooltip-hide', {
301
+ bubbles: true,
302
+ composed: true,
303
+ }));
304
+ }
305
+ /** @internal Escape dismisses for popover="manual" (hover/focus triggers) */
306
+ _handleKeyDown(e) {
307
+ if (e.key === 'Escape') {
308
+ this._clearShowTimer();
309
+ this._hide();
310
+ }
311
+ }
312
+ /** @internal */
313
+ _clearShowTimer() {
314
+ if (this._showTimer !== null) {
315
+ clearTimeout(this._showTimer);
316
+ this._showTimer = null;
317
+ }
318
+ }
319
+ /** @internal */
320
+ _handleMouseEnter() {
321
+ this._clearShowTimer();
322
+ this._showTimer = setTimeout(() => {
323
+ this._show();
324
+ }, this.tooltipDelay);
325
+ }
326
+ /** @internal */
327
+ _handleMouseLeave() {
328
+ this._clearShowTimer();
329
+ this._hide();
330
+ }
331
+ /** @internal */
332
+ _handleFocusIn() {
333
+ this._clearShowTimer();
334
+ this._show();
335
+ }
336
+ /** @internal */
337
+ _handleFocusOut() {
338
+ this._clearShowTimer();
339
+ this._hide();
340
+ }
341
+ /** @internal Click trigger toggles visibility */
342
+ _handleClick() {
343
+ this._clearShowTimer();
344
+ if (this._isVisible) {
345
+ this._hide();
346
+ }
347
+ else {
348
+ this._show();
349
+ }
350
+ }
351
+ /** @internal Appends tooltip id to existing aria-describedby */
352
+ _appendAriaDescribedBy() {
353
+ const existing = this.getAttribute('aria-describedby');
354
+ if (existing) {
355
+ if (!existing.includes(this._tooltipId)) {
356
+ this.setAttribute('aria-describedby', `${existing} ${this._tooltipId}`);
357
+ }
358
+ }
359
+ else {
360
+ this.setAttribute('aria-describedby', this._tooltipId);
361
+ }
362
+ }
363
+ /** @internal Removes tooltip id from aria-describedby */
364
+ _removeAriaDescribedBy() {
365
+ const existing = this.getAttribute('aria-describedby');
366
+ if (!existing)
367
+ return;
368
+ const ids = existing
369
+ .split(/\s+/)
370
+ .filter(id => id !== this._tooltipId)
371
+ .join(' ')
372
+ .trim();
373
+ if (ids) {
374
+ this.setAttribute('aria-describedby', ids);
375
+ }
376
+ else {
377
+ this.removeAttribute('aria-describedby');
378
+ }
379
+ }
380
+ }
381
+ __decorate([
382
+ property({ attribute: 'tooltip' })
383
+ ], TooltipMixinClass.prototype, "tooltip", void 0);
384
+ __decorate([
385
+ property({ attribute: 'tooltip-position' })
386
+ ], TooltipMixinClass.prototype, "tooltipPosition", void 0);
387
+ __decorate([
388
+ property({ attribute: 'tooltip-delay', type: Number })
389
+ ], TooltipMixinClass.prototype, "tooltipDelay", void 0);
390
+ __decorate([
391
+ property({ attribute: 'tooltip-offset' })
392
+ ], TooltipMixinClass.prototype, "tooltipOffset", void 0);
393
+ __decorate([
394
+ property({ attribute: 'tooltip-no-arrow', type: Boolean })
395
+ ], TooltipMixinClass.prototype, "tooltipNoArrow", void 0);
396
+ __decorate([
397
+ property({ attribute: 'tooltip-trigger' })
398
+ ], TooltipMixinClass.prototype, "tooltipTrigger", void 0);
399
+ return TooltipMixinClass;
400
+ };
401
+ //# sourceMappingURL=TooltipMixin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TooltipMixin.js","sourceRoot":"","sources":["../../src/util/TooltipMixin.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"aria.d.ts","sourceRoot":"","sources":["../../src/util/aria.ts"],"names":[],"mappings":"AAUA,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,UAQ/D;AAED,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,QA+BxD"}
1
+ {"version":3,"file":"aria.d.ts","sourceRoot":"","sources":["../../src/util/aria.ts"],"names":[],"mappings":"AAUA,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,UAG/D;AAED,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,QA+BxD"}
package/dist/util/aria.js CHANGED
@@ -9,7 +9,8 @@
9
9
  <- 'Today is Friday and the weather is sunny.'
10
10
  */
11
11
  export function replaceWithEach(template, data) {
12
- return template.replace(/_{3}/g, (i => (_) => data[i++])(0));
12
+ let i = 0;
13
+ return template.replace(/_{3}/g, () => (i < data.length ? data[i++] : '___'));
13
14
  }
14
15
  export function announce(message, data) {
15
16
  let container = document.getElementById('aria-live-container');
@@ -1 +1 @@
1
- {"version":3,"file":"aria.js","sourceRoot":"","sources":["../../src/util/aria.ts"],"names":[],"mappings":"AAAA;;;;;;;;;EASE;AACF,MAAM,UAAU,eAAe,CAAC,QAAgB,EAAE,IAAc;IAC9D,OAAO,QAAQ,CAAC,OAAO,CACrB,OAAO,EACP,CACE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAS,EAAE,EAAE,CACjB,IAAI,CAAC,CAAC,EAAE,CAAC,CACZ,CAAC,CAAC,CAAC,CACL,CAAA;AACH,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,OAAe,EAAE,IAAe;IACvD,IAAI,SAAS,GAAG,QAAQ,CAAC,cAAc,CAAC,qBAAqB,CAAC,CAAA;IAC9D,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;QACzC,SAAS,CAAC,YAAY,CAAC,IAAI,EAAE,qBAAqB,CAAC,CAAA;QACnD,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAA;IACtC,CAAC;IACD,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;IAC5C,MAAM,EAAE,GAAG,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;IAChC,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;IAC7B,MAAM,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAA;IAC1C,MAAM,CAAC,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAA;IAC1C,MAAM,CAAC,KAAK,CAAC,OAAO;QAClB,wJAAwJ,CAAA;IAC1J,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QACxB,OAAO,GAAG,eAAe,CAAC,GAAG,OAAO,EAAE,EAAE,IAAI,CAAC,CAAA;IAC/C,CAAC;IACD,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;IAE7B,UAAU,CAAC,GAAG,EAAE;QACd,MAAM,UAAU,GAAG,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,CAAA;QAC9C,IAAI,UAAU;YAAE,UAAU,CAAC,SAAS,GAAG,OAAO,CAAA;IAChD,CAAC,EAAE,GAAG,CAAC,CAAA;IAEP,IAAI,MAAM,CAAC,UAAU,EAAE,SAAS,KAAK,IAAI,EAAE,CAAC;QAC1C,OAAO,CAAC,GAAG,CAAC,oBAAoB,OAAO,GAAG,CAAC,CAAA;IAC7C,CAAC;IAED,UAAU,CAAC,GAAG,EAAE;QACd,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,CAAA;IACvC,CAAC,EAAE,IAAI,CAAC,CAAA;AACV,CAAC"}
1
+ {"version":3,"file":"aria.js","sourceRoot":"","sources":["../../src/util/aria.ts"],"names":[],"mappings":"AAAA;;;;;;;;;EASE;AACF,MAAM,UAAU,eAAe,CAAC,QAAgB,EAAE,IAAc;IAC9D,IAAI,CAAC,GAAG,CAAC,CAAA;IACT,OAAO,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAA;AAC/E,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,OAAe,EAAE,IAAe;IACvD,IAAI,SAAS,GAAG,QAAQ,CAAC,cAAc,CAAC,qBAAqB,CAAC,CAAA;IAC9D,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;QACzC,SAAS,CAAC,YAAY,CAAC,IAAI,EAAE,qBAAqB,CAAC,CAAA;QACnD,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAA;IACtC,CAAC;IACD,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;IAC5C,MAAM,EAAE,GAAG,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;IAChC,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;IAC7B,MAAM,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAA;IAC1C,MAAM,CAAC,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAA;IAC1C,MAAM,CAAC,KAAK,CAAC,OAAO;QAClB,wJAAwJ,CAAA;IAC1J,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QACxB,OAAO,GAAG,eAAe,CAAC,GAAG,OAAO,EAAE,EAAE,IAAI,CAAC,CAAA;IAC/C,CAAC;IACD,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;IAE7B,UAAU,CAAC,GAAG,EAAE;QACd,MAAM,UAAU,GAAG,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,CAAA;QAC9C,IAAI,UAAU;YAAE,UAAU,CAAC,SAAS,GAAG,OAAO,CAAA;IAChD,CAAC,EAAE,GAAG,CAAC,CAAA;IAEP,IAAI,MAAM,CAAC,UAAU,EAAE,SAAS,KAAK,IAAI,EAAE,CAAC;QAC1C,OAAO,CAAC,GAAG,CAAC,oBAAoB,OAAO,GAAG,CAAC,CAAA;IAC7C,CAAC;IAED,UAAU,CAAC,GAAG,EAAE;QACd,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,CAAA;IACvC,CAAC,EAAE,IAAI,CAAC,CAAA;AACV,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Look up a localized string from window.BRIGHTSPOT.ui[namespace][key],
3
+ * falling back to the provided English default.
4
+ *
5
+ * @param namespace - Component namespace (e.g., 'pagination')
6
+ * @param key - String key within the namespace
7
+ * @param fallback - English default when no global override exists
8
+ * @param replacements - Positional values to substitute for sequential `___`
9
+ * (triple-underscore) placeholders in the resolved string.
10
+ * E.g., `l10n('ns', 'k', '___-___ of ___', [1, 10, 200])` → `"1-10 of 200"`
11
+ */
12
+ export declare function l10n(namespace: string, key: string, fallback: string, replacements?: (string | number)[]): string;
13
+ //# sourceMappingURL=i18n.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../../src/util/i18n.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;GAUG;AACH,wBAAgB,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GAAG,MAAM,CAOjH"}
@@ -0,0 +1,21 @@
1
+ import { replaceWithEach } from './aria.js';
2
+ /**
3
+ * Look up a localized string from window.BRIGHTSPOT.ui[namespace][key],
4
+ * falling back to the provided English default.
5
+ *
6
+ * @param namespace - Component namespace (e.g., 'pagination')
7
+ * @param key - String key within the namespace
8
+ * @param fallback - English default when no global override exists
9
+ * @param replacements - Positional values to substitute for sequential `___`
10
+ * (triple-underscore) placeholders in the resolved string.
11
+ * E.g., `l10n('ns', 'k', '___-___ of ___', [1, 10, 200])` → `"1-10 of 200"`
12
+ */
13
+ export function l10n(namespace, key, fallback, replacements) {
14
+ const ui = window.BRIGHTSPOT?.ui;
15
+ const value = ui?.[namespace]?.[key] ?? fallback;
16
+ if (replacements?.length) {
17
+ return replaceWithEach(value, replacements.map(String));
18
+ }
19
+ return value;
20
+ }
21
+ //# sourceMappingURL=i18n.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"i18n.js","sourceRoot":"","sources":["../../src/util/i18n.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAE3C;;;;;;;;;;GAUG;AACH,MAAM,UAAU,IAAI,CAAC,SAAiB,EAAE,GAAW,EAAE,QAAgB,EAAE,YAAkC;IACvG,MAAM,EAAE,GAAG,MAAM,CAAC,UAAU,EAAE,EAAwD,CAAA;IACtF,MAAM,KAAK,GAAG,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAA;IAChD,IAAI,YAAY,EAAE,MAAM,EAAE,CAAC;QACzB,OAAO,eAAe,CAAC,KAAK,EAAE,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAA;IACzD,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@brightspot/ui",
3
- "version": "1.4.1",
3
+ "version": "1.6.0",
4
4
  "type": "module",
5
5
  "license": "UNLICENSED",
6
6
  "description": "A UI library for building Brightspot CMS components.",
@@ -52,7 +52,6 @@
52
52
  "husky": "^9.1.7",
53
53
  "lint-staged": "^16.2.6",
54
54
  "lit": "^3.3.0",
55
- "loglevel": "^1.8.0",
56
55
  "mini-css-extract-plugin": "^2.6.1",
57
56
  "playwright": "^1.58.2",
58
57
  "postcss-import": "^16.0.0",
@@ -74,6 +73,7 @@
74
73
  },
75
74
  "dependencies": {
76
75
  "broadcast-channel": "^4.13.0",
76
+ "loglevel": "^1.8.0",
77
77
  "lucide-static": "0.508.0",
78
78
  "tabbable": "6.2.0",
79
79
  "tailwindcss": "^3.4.13",