@brightspot/ui 1.6.0 → 1.7.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 (82) hide show
  1. package/dist/components/dropdown/Dropdown.d.ts +172 -0
  2. package/dist/components/dropdown/Dropdown.d.ts.map +1 -0
  3. package/dist/components/dropdown/Dropdown.js +407 -0
  4. package/dist/components/dropdown/Dropdown.js.map +1 -0
  5. package/dist/components/dropdown/DropdownItem.d.ts +108 -0
  6. package/dist/components/dropdown/DropdownItem.d.ts.map +1 -0
  7. package/dist/components/dropdown/DropdownItem.js +210 -0
  8. package/dist/components/dropdown/DropdownItem.js.map +1 -0
  9. package/dist/components/dropdown/DropdownMenu.d.ts +117 -0
  10. package/dist/components/dropdown/DropdownMenu.d.ts.map +1 -0
  11. package/dist/components/dropdown/DropdownMenu.js +295 -0
  12. package/dist/components/dropdown/DropdownMenu.js.map +1 -0
  13. package/dist/custom-elements.json +1097 -101
  14. package/dist/storybook/assets/Avatar.stories-BAaSlDF7.js +213 -0
  15. package/dist/storybook/assets/{AvatarGroup.stories-BBkQuFKk.js → AvatarGroup.stories-CgoDB4N4.js} +1 -1
  16. package/dist/storybook/assets/{Badge.stories-mFZsls7i.js → Badge.stories-uexxdmo6.js} +3 -3
  17. package/dist/storybook/assets/{Button.stories-CAWX17L1.js → Button.stories-T9UJUPHI.js} +1 -1
  18. package/dist/storybook/assets/{CircularProgress.stories-DBVt4Cg2.js → CircularProgress.stories-DW-VJA5j.js} +6 -6
  19. package/dist/storybook/assets/{ClipboardMixin.stories-BH9E-OI6.js → ClipboardMixin.stories-DzU4vxu5.js} +1 -1
  20. package/dist/storybook/assets/{Color-6BZIO3FS-CVnTzq2p.js → Color-6BZIO3FS-DRk2xjoN.js} +1 -1
  21. package/dist/storybook/assets/{Colors.stories-BFYmP0LL.js → Colors.stories-_UPdvuhY.js} +1 -1
  22. package/dist/storybook/assets/{ComponentStatesMixin-Cu7YXkU8.js → ComponentStatesMixin-BIu5SKeV.js} +1 -1
  23. package/dist/storybook/assets/{ComponentStatesMixin.stories-CAvyYt0H.js → ComponentStatesMixin.stories-C0FLaqLu.js} +1 -1
  24. package/dist/storybook/assets/{CopyToClipboard.stories-DbJZsp_L.js → CopyToClipboard.stories-D31zoUVI.js} +1 -1
  25. package/dist/storybook/assets/{Debounce.stories-BiFiH1K9.js → Debounce.stories-CgPPl5Ee.js} +1 -1
  26. package/dist/storybook/assets/{DocsRenderer-LL677BLK-Bq6G4eeC.js → DocsRenderer-LL677BLK-iwiwOzX9.js} +6 -6
  27. package/dist/storybook/assets/Dropdown.stories-CDcl6rmG.js +697 -0
  28. package/dist/storybook/assets/{Events.stories-BsDBxh8_.js → Events.stories-DS6UC9dZ.js} +1 -1
  29. package/dist/storybook/assets/{Heading.stories-zGzWgHVO.js → Heading.stories-CAQfEGE2.js} +1 -1
  30. package/dist/storybook/assets/{Icon.stories-B4T6sSwf.js → Icon.stories-C7msWlHs.js} +11 -11
  31. package/dist/storybook/assets/{LinearProgress.stories-qzqmUUwY.js → LinearProgress.stories-DBGJ5a2-.js} +7 -7
  32. package/dist/storybook/assets/{Pagination.stories-B6Q-7taJ.js → Pagination.stories-C58bGOdf.js} +1 -1
  33. package/dist/storybook/assets/{Popover.stories-CGkU0SGv.js → Popover.stories-C9zU0sEX.js} +5 -5
  34. package/dist/storybook/assets/{ReadyMixin-3YCzoG6W.js → ReadyMixin-qf8SAjMu.js} +1 -1
  35. package/dist/storybook/assets/{Rtc.stories-Y1MYTWAt.js → Rtc.stories-k9tKHNhD.js} +1 -1
  36. package/dist/storybook/assets/{ScrollShadow.stories-B9kSpLT1.js → ScrollShadow.stories-Bp42zyLH.js} +1 -1
  37. package/dist/storybook/assets/{Throttle.stories-BgvLDrS3.js → Throttle.stories-B5YU-Nms.js} +1 -1
  38. package/dist/storybook/assets/Tooltip.stories-COQcvOnL.js +143 -0
  39. package/dist/storybook/assets/{Widget.stories--JpqVyJe.js → Widget.stories-D3Sq5-_A.js} +13 -13
  40. package/dist/storybook/assets/{WithTooltip-65CFNBJE-DNbD9hAX.js → WithTooltip-65CFNBJE-Cox81aM_.js} +1 -1
  41. package/dist/storybook/assets/{formatter-EIJCOSYU-Cy8KIxab.js → formatter-EIJCOSYU-3ErcoV9q.js} +1 -1
  42. package/dist/storybook/assets/if-defined-Bv2_qPJg.js +1 -0
  43. package/dist/storybook/assets/{iframe-Dz6CxatW.js → iframe-CM6gBkqA.js} +152 -152
  44. package/dist/storybook/assets/{iframe-DiT9Iz2T.css → iframe-D3r2Ciu8.css} +1 -1
  45. package/dist/storybook/assets/{index-CebChkmF.js → index-iwfnMgqg.js} +1 -1
  46. package/dist/storybook/assets/{onFind.stories-nHDImx0x.js → onFind.stories-CDtoTN6S.js} +1 -1
  47. package/dist/storybook/assets/{onRemove.stories-CBxYVPwd.js → onRemove.stories-CSTeFCLU.js} +1 -1
  48. package/dist/storybook/assets/{onVisible.stories-D4Qewc9Y.js → onVisible.stories-C-yiw9n4.js} +1 -1
  49. package/dist/storybook/assets/{style-map-BgW9piaW.js → style-map-BJGdSb_D.js} +1 -1
  50. package/dist/storybook/assets/{syntaxhighlighter-ED5Y7EFY-CROW1475.js → syntaxhighlighter-ED5Y7EFY-BEudYlVi.js} +1 -1
  51. package/dist/storybook/iframe.html +2 -2
  52. package/dist/storybook/index.json +1 -1
  53. package/dist/storybook/project.json +1 -1
  54. package/dist/tailwind-plugin-button.js +10 -0
  55. package/dist/tailwind-plugin-button.js.map +1 -1
  56. package/dist/tailwind-plugin-button.ts +10 -0
  57. package/dist/tailwind-plugin-dropdown.d.ts +2 -0
  58. package/dist/tailwind-plugin-dropdown.d.ts.map +1 -0
  59. package/dist/tailwind-plugin-dropdown.js +223 -0
  60. package/dist/tailwind-plugin-dropdown.js.map +1 -0
  61. package/dist/tailwind-plugin-dropdown.ts +249 -0
  62. package/dist/util/EventEmitterMixin.d.ts +13 -0
  63. package/dist/util/EventEmitterMixin.d.ts.map +1 -1
  64. package/dist/util/EventEmitterMixin.js.map +1 -1
  65. package/docs/components/Avatar.md +62 -0
  66. package/docs/components/AvatarGroup.md +52 -0
  67. package/docs/components/Badge.md +58 -0
  68. package/docs/components/CircularProgress.md +55 -0
  69. package/docs/components/CopyToClipboard.md +54 -0
  70. package/docs/components/Dropdown.md +100 -0
  71. package/docs/components/DropdownItem.md +64 -0
  72. package/docs/components/DropdownMenu.md +81 -0
  73. package/docs/components/Icon.md +61 -0
  74. package/docs/components/LinearProgress.md +40 -0
  75. package/docs/components/Pagination.md +95 -0
  76. package/docs/components/Popover.md +71 -0
  77. package/docs/components/README.md +24 -0
  78. package/docs/components/Widget.md +79 -0
  79. package/package.json +3 -2
  80. package/dist/storybook/assets/Avatar.stories-CafEcy4T.js +0 -214
  81. package/dist/storybook/assets/Tooltip.stories-POo1M-ew.js +0 -143
  82. package/dist/storybook/assets/if-defined-CngSGyRu.js +0 -1
@@ -0,0 +1,295 @@
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, html, nothing } from 'lit';
8
+ import { property } from 'lit/decorators.js';
9
+ import { EventEmitterMixin } from '../../util/EventEmitterMixin.js';
10
+ import { ReadyMixin } from '../../util/ReadyMixin.js';
11
+ /**
12
+ * A menu container component that provides keyboard navigation and ARIA menu semantics.
13
+ *
14
+ * Contains `btu-dropdown-item` children and manages roving tabindex, typeahead search,
15
+ * and keyboard navigation following the WAI-ARIA Menu Button Pattern.
16
+ *
17
+ * @element btu-dropdown-menu
18
+ *
19
+ * @fires {CustomEvent} btu-dropdown-menu-ready - Fired after first render
20
+ *
21
+ * @slot - Menu items (`btu-dropdown-item` elements)
22
+ *
23
+ * @cssprop --dropdown-empty-color - Empty state text color (default: gray-400)
24
+ *
25
+ * @example
26
+ * ```html
27
+ * <btu-dropdown-menu name="Sort By" header checkbox>
28
+ * <btu-dropdown-item label="Name" selected></btu-dropdown-item>
29
+ * <btu-dropdown-item label="Date"></btu-dropdown-item>
30
+ * <btu-dropdown-item label="Size"></btu-dropdown-item>
31
+ * </btu-dropdown-menu>
32
+ * ```
33
+ */
34
+ export default class DropdownMenu extends EventEmitterMixin(ReadyMixin(LitElement)) {
35
+ constructor() {
36
+ super(...arguments);
37
+ /**
38
+ * Accessible name for the menu, displayed in header when header is true.
39
+ * @attr
40
+ */
41
+ this.name = '';
42
+ /**
43
+ * Show header bar with menu name.
44
+ * @attr
45
+ */
46
+ this.header = false;
47
+ /**
48
+ * Enable checkbox mode for items (menuitemcheckbox role).
49
+ * @attr
50
+ */
51
+ this.checkbox = false;
52
+ /**
53
+ * Show icons before each item.
54
+ * @attr
55
+ */
56
+ this.icon = false;
57
+ /**
58
+ * Fallback Lucide icon symbol for items without their own.
59
+ * @attr icon-symbol
60
+ */
61
+ this.iconSymbol = '';
62
+ /**
63
+ * Show favorite toggle on each item.
64
+ * @attr
65
+ */
66
+ this.favorites = false;
67
+ /**
68
+ * Show keyboard shortcut text on each item.
69
+ * @attr
70
+ */
71
+ this.shortcuts = false;
72
+ /**
73
+ * Message displayed when the menu has no focusable items.
74
+ * @attr empty-message
75
+ */
76
+ this.emptyMessage = 'No items available';
77
+ /** @internal */
78
+ this._typeaheadBuffer = '';
79
+ /** @internal */
80
+ this._typeaheadTimeout = null;
81
+ /** @internal */
82
+ this._handleKeydown = (e) => {
83
+ const focusable = this._getFocusableItems();
84
+ if (focusable.length === 0)
85
+ return;
86
+ const currentIndex = this._getCurrentFocusIndex(focusable);
87
+ switch (e.key) {
88
+ case 'ArrowDown': {
89
+ e.preventDefault();
90
+ const next = this._findNextIndex(focusable, currentIndex, 1);
91
+ this.focusItem(focusable[next]);
92
+ break;
93
+ }
94
+ case 'ArrowUp': {
95
+ e.preventDefault();
96
+ const prev = this._findNextIndex(focusable, currentIndex, -1);
97
+ this.focusItem(focusable[prev]);
98
+ break;
99
+ }
100
+ case 'Home': {
101
+ e.preventDefault();
102
+ this.focusItem(focusable[0]);
103
+ break;
104
+ }
105
+ case 'End': {
106
+ e.preventDefault();
107
+ this.focusItem(focusable[focusable.length - 1]);
108
+ break;
109
+ }
110
+ case 'Enter': {
111
+ e.preventDefault();
112
+ if (currentIndex >= 0) {
113
+ focusable[currentIndex].activate();
114
+ }
115
+ break;
116
+ }
117
+ case ' ': {
118
+ e.preventDefault();
119
+ if (currentIndex >= 0) {
120
+ focusable[currentIndex].activate();
121
+ }
122
+ break;
123
+ }
124
+ case 'Escape': {
125
+ // Bubble up to Dropdown to handle close
126
+ break;
127
+ }
128
+ case 'Tab': {
129
+ // Bubble up to Dropdown to handle close + focus restore
130
+ break;
131
+ }
132
+ default: {
133
+ // Typeahead: printable characters
134
+ if (e.key.length === 1 && !e.ctrlKey && !e.metaKey && !e.altKey) {
135
+ this._handleTypeahead(e.key, focusable);
136
+ }
137
+ break;
138
+ }
139
+ }
140
+ };
141
+ }
142
+ createRenderRoot() {
143
+ this.renderOptions.renderBefore ??= this.firstChild;
144
+ return this;
145
+ }
146
+ connectedCallback() {
147
+ super.connectedCallback();
148
+ this.setAttribute('role', 'menu');
149
+ if (this.name) {
150
+ this.setAttribute('aria-label', this.name);
151
+ }
152
+ this.addEventListener('keydown', this._handleKeydown);
153
+ }
154
+ disconnectedCallback() {
155
+ super.disconnectedCallback();
156
+ this.removeEventListener('keydown', this._handleKeydown);
157
+ if (this._typeaheadTimeout) {
158
+ clearTimeout(this._typeaheadTimeout);
159
+ }
160
+ }
161
+ firstUpdated() {
162
+ this._configureItems();
163
+ this.emit('btu-dropdown-menu-ready');
164
+ }
165
+ updated() {
166
+ this._configureItems();
167
+ if (this.name) {
168
+ this.setAttribute('aria-label', this.name);
169
+ }
170
+ else {
171
+ this.removeAttribute('aria-label');
172
+ }
173
+ }
174
+ /** Configure all child items with menu-level settings */
175
+ _configureItems() {
176
+ const items = this._getAllItems();
177
+ items.forEach(item => {
178
+ item._configure({
179
+ checkbox: this.checkbox,
180
+ icon: this.icon,
181
+ iconSymbol: this.iconSymbol,
182
+ favorites: this.favorites,
183
+ shortcuts: this.shortcuts,
184
+ });
185
+ });
186
+ }
187
+ /** Get all btu-dropdown-item children */
188
+ _getAllItems() {
189
+ return Array.from(this.querySelectorAll('btu-dropdown-item'));
190
+ }
191
+ /** Get only focusable items (default type, skip dividers/subheads) */
192
+ _getFocusableItems() {
193
+ return this._getAllItems().filter(item => item.focusable);
194
+ }
195
+ /** @internal Focus a specific item by updating tabindex */
196
+ focusItem(item) {
197
+ const focusable = this._getFocusableItems();
198
+ focusable.forEach(i => {
199
+ const el = i.querySelector('[role="menuitem"], [role="menuitemcheckbox"]');
200
+ if (el)
201
+ el.setAttribute('tabindex', '-1');
202
+ });
203
+ const target = item.querySelector('[role="menuitem"], [role="menuitemcheckbox"]');
204
+ if (target) {
205
+ target.setAttribute('tabindex', '0');
206
+ target.focus();
207
+ }
208
+ }
209
+ /** @internal Focus the first non-disabled focusable item (or first checked in checkbox mode) */
210
+ focusFirst() {
211
+ const items = this._getFocusableItems();
212
+ if (this.checkbox) {
213
+ const checked = items.find(i => i.selected && !i.disabled);
214
+ if (checked) {
215
+ this.focusItem(checked);
216
+ return;
217
+ }
218
+ }
219
+ const first = items.find(i => !i.disabled) || items[0];
220
+ if (first)
221
+ this.focusItem(first);
222
+ }
223
+ /** @internal Focus the last non-disabled focusable item */
224
+ focusLast() {
225
+ const items = this._getFocusableItems();
226
+ const last = [...items].reverse().find(i => !i.disabled) || items[items.length - 1];
227
+ if (last)
228
+ this.focusItem(last);
229
+ }
230
+ /** Find the current focused item index */
231
+ _getCurrentFocusIndex(focusable) {
232
+ const active = document.activeElement;
233
+ return focusable.findIndex(item => item.contains(active));
234
+ }
235
+ /** Find next index wrapping around, moving in direction (+1 or -1) */
236
+ _findNextIndex(focusable, current, direction) {
237
+ const len = focusable.length;
238
+ if (current < 0)
239
+ return direction === 1 ? 0 : len - 1;
240
+ const next = (current + direction + len) % len;
241
+ return next;
242
+ }
243
+ /** Typeahead character matching with 500ms accumulation */
244
+ _handleTypeahead(char, focusable) {
245
+ this._typeaheadBuffer += char.toLowerCase();
246
+ if (this._typeaheadTimeout) {
247
+ clearTimeout(this._typeaheadTimeout);
248
+ }
249
+ this._typeaheadTimeout = setTimeout(() => {
250
+ this._typeaheadBuffer = '';
251
+ }, 500);
252
+ const match = focusable.find(item => item.label.toLowerCase().startsWith(this._typeaheadBuffer));
253
+ if (match) {
254
+ this.focusItem(match);
255
+ }
256
+ }
257
+ /** Check whether the menu has zero focusable items */
258
+ get _isEmpty() {
259
+ return this._getFocusableItems().length === 0;
260
+ }
261
+ render() {
262
+ return html `${this.header && this.name ? html `<div class="btu-dropdown-header">${this.name}</div>` : nothing}${this
263
+ ._isEmpty
264
+ ? html `<div class="btu-dropdown-empty" role="status">${this.emptyMessage}</div>`
265
+ : nothing}`;
266
+ }
267
+ }
268
+ __decorate([
269
+ property({ type: String })
270
+ ], DropdownMenu.prototype, "name", void 0);
271
+ __decorate([
272
+ property({ type: Boolean })
273
+ ], DropdownMenu.prototype, "header", void 0);
274
+ __decorate([
275
+ property({ type: Boolean })
276
+ ], DropdownMenu.prototype, "checkbox", void 0);
277
+ __decorate([
278
+ property({ type: Boolean })
279
+ ], DropdownMenu.prototype, "icon", void 0);
280
+ __decorate([
281
+ property({ type: String, attribute: 'icon-symbol' })
282
+ ], DropdownMenu.prototype, "iconSymbol", void 0);
283
+ __decorate([
284
+ property({ type: Boolean })
285
+ ], DropdownMenu.prototype, "favorites", void 0);
286
+ __decorate([
287
+ property({ type: Boolean })
288
+ ], DropdownMenu.prototype, "shortcuts", void 0);
289
+ __decorate([
290
+ property({ type: String, attribute: 'empty-message' })
291
+ ], DropdownMenu.prototype, "emptyMessage", void 0);
292
+ if (!customElements.get('btu-dropdown-menu')) {
293
+ customElements.define('btu-dropdown-menu', DropdownMenu);
294
+ }
295
+ //# sourceMappingURL=DropdownMenu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DropdownMenu.js","sourceRoot":"","sources":["../../../src/components/dropdown/DropdownMenu.ts"],"names":[],"mappings":"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"}