@brightspot/ui 1.10.0 → 1.11.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 (129) hide show
  1. package/dist/components/action-bar/ActionBar.d.ts +163 -0
  2. package/dist/components/action-bar/ActionBar.d.ts.map +1 -0
  3. package/dist/components/action-bar/ActionBar.js +479 -0
  4. package/dist/components/action-bar/ActionBar.js.map +1 -0
  5. package/dist/components/action-bar/ActionItem.d.ts +103 -0
  6. package/dist/components/action-bar/ActionItem.d.ts.map +1 -0
  7. package/dist/components/action-bar/ActionItem.js +237 -0
  8. package/dist/components/action-bar/ActionItem.js.map +1 -0
  9. package/dist/components/dropdown/Dropdown.d.ts +3 -1
  10. package/dist/components/dropdown/Dropdown.d.ts.map +1 -1
  11. package/dist/components/dropdown/Dropdown.js +22 -6
  12. package/dist/components/dropdown/Dropdown.js.map +1 -1
  13. package/dist/components/dropdown/DropdownItem.d.ts +14 -1
  14. package/dist/components/dropdown/DropdownItem.d.ts.map +1 -1
  15. package/dist/components/dropdown/DropdownItem.js +20 -1
  16. package/dist/components/dropdown/DropdownItem.js.map +1 -1
  17. package/dist/components/dropdown/DropdownMenu.d.ts +3 -5
  18. package/dist/components/dropdown/DropdownMenu.d.ts.map +1 -1
  19. package/dist/components/dropdown/DropdownMenu.js +17 -32
  20. package/dist/components/dropdown/DropdownMenu.js.map +1 -1
  21. package/dist/components/pagination/Pagination.d.ts +33 -4
  22. package/dist/components/pagination/Pagination.d.ts.map +1 -1
  23. package/dist/components/pagination/Pagination.js +80 -16
  24. package/dist/components/pagination/Pagination.js.map +1 -1
  25. package/dist/components/tabs/Tab.d.ts +108 -0
  26. package/dist/components/tabs/Tab.d.ts.map +1 -0
  27. package/dist/components/tabs/Tab.js +152 -0
  28. package/dist/components/tabs/Tab.js.map +1 -0
  29. package/dist/components/tabs/Tabs.d.ts +126 -0
  30. package/dist/components/tabs/Tabs.d.ts.map +1 -0
  31. package/dist/components/tabs/Tabs.js +390 -0
  32. package/dist/components/tabs/Tabs.js.map +1 -0
  33. package/dist/custom-elements.json +2635 -1591
  34. package/dist/storybook/assets/ActionBar.stories--nAeDC-G.js +408 -0
  35. package/dist/storybook/assets/ActionItem.stories-BHrGjk-P.js +203 -0
  36. package/dist/storybook/assets/{Avatar.stories-B26mRkkZ.js → Avatar.stories-Da-mRj6_.js} +1 -1
  37. package/dist/storybook/assets/{AvatarGroup.stories-J7lVGsMY.js → AvatarGroup.stories-BQlaC_yl.js} +1 -1
  38. package/dist/storybook/assets/{Badge.stories-BpTIV61M.js → Badge.stories-DnVnOrnF.js} +1 -1
  39. package/dist/storybook/assets/{Button-Dg-fIrzT.js → Button-CFLAI1H9.js} +1 -1
  40. package/dist/storybook/assets/{Button.stories-gPKRVbxk.js → Button.stories-DxaBOjwv.js} +1 -1
  41. package/dist/storybook/assets/{Celebrate.stories-DbY-sKEe.js → Celebrate.stories-CuMm15Nr.js} +1 -1
  42. package/dist/storybook/assets/{CircularProgress.stories-DeH5JYX_.js → CircularProgress.stories-DRN8Mtvj.js} +1 -1
  43. package/dist/storybook/assets/{ClipboardMixin.stories-C-lZ4uuw.js → ClipboardMixin.stories-DR7Ou2Av.js} +1 -1
  44. package/dist/storybook/assets/{Color-6BZIO3FS-Cu6zVIuG.js → Color-6BZIO3FS-Die62Y0Z.js} +1 -1
  45. package/dist/storybook/assets/{Colors.stories-D6XYMrTD.js → Colors.stories-bIq_ssbI.js} +1 -1
  46. package/dist/storybook/assets/{CombinedEffects.stories-jFekKTYg.js → CombinedEffects.stories-CtKzOUZn.js} +1 -1
  47. package/dist/storybook/assets/{ComponentStatesMixin-g50hRCPT.js → ComponentStatesMixin-DMLCk9fE.js} +1 -1
  48. package/dist/storybook/assets/{ComponentStatesMixin.stories-D3Q5pR38.js → ComponentStatesMixin.stories-D8UI9o-d.js} +1 -1
  49. package/dist/storybook/assets/{CopyToClipboard.stories-COZZ1VC2.js → CopyToClipboard.stories-ti6CpJNp.js} +1 -1
  50. package/dist/storybook/assets/{Debounce.stories-Dl10LAnx.js → Debounce.stories-DzZUSvbk.js} +1 -1
  51. package/dist/storybook/assets/{DocsRenderer-LL677BLK-CFLtMbUx.js → DocsRenderer-LL677BLK-CIRGv5IX.js} +3 -3
  52. package/dist/storybook/assets/{Dropdown.stories-Drwq-0Z2.js → Dropdown.stories-Lt4cY0Re.js} +41 -14
  53. package/dist/storybook/assets/{Events.stories-dODeR-g-.js → Events.stories-B1ddcgpT.js} +1 -1
  54. package/dist/storybook/assets/{Heading.stories-CH7_-_q3.js → Heading.stories-DI4w61cf.js} +1 -1
  55. package/dist/storybook/assets/{HueRipple.stories-CH1Y739k.js → HueRipple.stories-DjhoxxEw.js} +1 -1
  56. package/dist/storybook/assets/{Icon.stories-CPjM-jTU.js → Icon.stories-CpziAhae.js} +1 -1
  57. package/dist/storybook/assets/{IconButton.stories-DuzqvcnN.js → IconButton.stories-KjN28hfc.js} +1 -1
  58. package/dist/storybook/assets/{LinearProgress.stories-C7IdnJd3.js → LinearProgress.stories-DcIpdz6R.js} +1 -1
  59. package/dist/storybook/assets/Pagination.stories-BBkLEwoP.js +252 -0
  60. package/dist/storybook/assets/{Popover.stories-Ca1F-wrI.js → Popover.stories-DLv48c2h.js} +1 -1
  61. package/dist/storybook/assets/{ReadyMixin-DNZ5dCsZ.js → ReadyMixin-Cw2Dfbu2.js} +1 -1
  62. package/dist/storybook/assets/RovingTabindexMixin.stories-BWaFx9mu.js +192 -0
  63. package/dist/storybook/assets/{Rtc.stories-BVJc1vCA.js → Rtc.stories-Ve7Bwo_l.js} +1 -1
  64. package/dist/storybook/assets/ScrollShadow.stories-C6XmrRLm.js +17 -0
  65. package/dist/storybook/assets/{Switch.stories-BEEHP8mD.js → Switch.stories-Cf8WM1LG.js} +1 -1
  66. package/dist/storybook/assets/Tab.stories-CEtdEtOx.js +218 -0
  67. package/dist/storybook/assets/Tabs.stories-CIAO1bPO.js +211 -0
  68. package/dist/storybook/assets/{Throttle.stories-C4xsYeAb.js → Throttle.stories-BqxVIb-r.js} +1 -1
  69. package/dist/storybook/assets/{Tooltip.stories-Ccm4AnSv.js → Tooltip.stories-B6fw6875.js} +1 -1
  70. package/dist/storybook/assets/{Welcome.stories-Degjk-M0.js → Welcome.stories-CfJtSM19.js} +1 -1
  71. package/dist/storybook/assets/{Widget.stories-OKnZ9sDs.js → Widget.stories-CiOho7lO.js} +1 -1
  72. package/dist/storybook/assets/{WithTooltip-65CFNBJE-CXL3TyJ2.js → WithTooltip-65CFNBJE-PGcopp73.js} +2 -2
  73. package/dist/storybook/assets/{blocks-DLdUKG_W.js → blocks-dP2DwISI.js} +5 -5
  74. package/dist/storybook/assets/{formatter-EIJCOSYU-29NCxjfM.js → formatter-EIJCOSYU-CZSAC3tg.js} +1 -1
  75. package/dist/storybook/assets/if-defined-B1RdczOE.js +1 -0
  76. package/dist/storybook/assets/{iframe-BqvwP3or.js → iframe-DloIUNZz.js} +161 -161
  77. package/dist/storybook/assets/iframe-bJgLXZKK.css +1 -0
  78. package/dist/storybook/assets/{index-BIyTv1BF.js → index-DKF0ypu5.js} +1 -1
  79. package/dist/storybook/assets/onFind-C0l4Gew0.js +1 -0
  80. package/dist/storybook/assets/{onFind.stories-D64-QZqf.js → onFind.stories-DOTt9puO.js} +1 -1
  81. package/dist/storybook/assets/{onRemove.stories-BICsnIJL.js → onRemove.stories-CQ9ZC5dm.js} +1 -1
  82. package/dist/storybook/assets/{onVisible.stories-DpDZP9_5.js → onVisible.stories-Cbj5_Vz0.js} +1 -1
  83. package/dist/storybook/assets/style-map-DLXysq3r.js +1 -0
  84. package/dist/storybook/assets/{syntaxhighlighter-ED5Y7EFY-Bz_DuQj8.js → syntaxhighlighter-ED5Y7EFY-Bjjbl9ca.js} +1 -1
  85. package/dist/storybook/iframe.html +2 -2
  86. package/dist/storybook/index.json +1 -1
  87. package/dist/storybook/project.json +1 -1
  88. package/dist/tailwind-plugin-action-bar.d.ts +2 -0
  89. package/dist/tailwind-plugin-action-bar.d.ts.map +1 -0
  90. package/dist/tailwind-plugin-action-bar.js +120 -0
  91. package/dist/tailwind-plugin-action-bar.js.map +1 -0
  92. package/dist/tailwind-plugin-action-bar.ts +134 -0
  93. package/dist/tailwind-plugin-badge.js +4 -5
  94. package/dist/tailwind-plugin-badge.js.map +1 -1
  95. package/dist/tailwind-plugin-badge.ts +4 -5
  96. package/dist/tailwind-plugin-button.js +1 -0
  97. package/dist/tailwind-plugin-button.js.map +1 -1
  98. package/dist/tailwind-plugin-button.ts +1 -0
  99. package/dist/tailwind-plugin-pagination.js +13 -23
  100. package/dist/tailwind-plugin-pagination.js.map +1 -1
  101. package/dist/tailwind-plugin-pagination.ts +15 -25
  102. package/dist/tailwind-plugin-tabs.d.ts +2 -0
  103. package/dist/tailwind-plugin-tabs.d.ts.map +1 -0
  104. package/dist/tailwind-plugin-tabs.js +151 -0
  105. package/dist/tailwind-plugin-tabs.js.map +1 -0
  106. package/dist/tailwind-plugin-tabs.ts +162 -0
  107. package/dist/util/EventEmitterMixin.d.ts +16 -0
  108. package/dist/util/EventEmitterMixin.d.ts.map +1 -1
  109. package/dist/util/EventEmitterMixin.js.map +1 -1
  110. package/dist/util/RovingTabindexMixin.d.ts +38 -0
  111. package/dist/util/RovingTabindexMixin.d.ts.map +1 -0
  112. package/dist/util/RovingTabindexMixin.js +83 -0
  113. package/dist/util/RovingTabindexMixin.js.map +1 -0
  114. package/docs/components/ActionBar.md +71 -0
  115. package/docs/components/ActionItem.md +76 -0
  116. package/docs/components/Dropdown.md +7 -7
  117. package/docs/components/DropdownItem.md +9 -5
  118. package/docs/components/DropdownMenu.md +12 -12
  119. package/docs/components/Pagination.md +37 -34
  120. package/docs/components/README.md +4 -0
  121. package/docs/components/Tab.md +73 -0
  122. package/docs/components/Tabs.md +77 -0
  123. package/package.json +1 -1
  124. package/dist/storybook/assets/Pagination.stories-C4cLjS_9.js +0 -272
  125. package/dist/storybook/assets/ScrollShadow.stories-C3W5o9ZW.js +0 -17
  126. package/dist/storybook/assets/if-defined-BZFPaJjl.js +0 -1
  127. package/dist/storybook/assets/iframe-C5bIZMJ5.css +0 -1
  128. package/dist/storybook/assets/onFind-1l3EPW-I.js +0 -1
  129. package/dist/storybook/assets/style-map-CBrSnxRe.js +0 -1
@@ -0,0 +1,163 @@
1
+ import { LitElement } from 'lit';
2
+ import '../dropdown/Dropdown.js';
3
+ import '../dropdown/DropdownItem.js';
4
+ import '../dropdown/DropdownMenu.js';
5
+ import './ActionItem.js';
6
+ type Position = 'top' | 'bottom';
7
+ type Alignment = 'default' | 'start' | 'center' | 'end';
8
+ declare const ActionBar_base: (new (...args: any[]) => import("../../util/RovingTabindexMixin.js").RovingTabindexInterface) & (new (...args: any[]) => import("../../util/EventEmitterMixin.js").EventEmitterMixinInterface) & (new (...args: any[]) => import("../../util/ReadyMixin.js").ReadyMixinInterface) & typeof LitElement;
9
+ /**
10
+ * A persistent container for primary, secondary, tertiary, and destructive actions
11
+ * within an interface, typically anchored to the bottom of a view.
12
+ *
13
+ * Uses a two-zone layout: destructive actions on the left (start zone),
14
+ * main actions on the right (end zone). Both zones maintain their position
15
+ * even when the other zone is empty (BSP-18087).
16
+ *
17
+ * **Positioning:** Uses `margin-top: auto` to push to bottom of flex/grid parents.
18
+ * In block layout parents, the bar sits after content (a console warning is emitted).
19
+ *
20
+ * **Overflow:** When items don't fit, the least important overflow into a "More" dropdown.
21
+ * Items are auto-sorted by variant priority (tertiary → secondary → primary).
22
+ * With `compact`, compactable items progressively hide labels one-by-one before overflowing.
23
+ *
24
+ * @element btu-action-bar
25
+ *
26
+ * @fires {CustomEvent} btu-action-bar-ready - Fired after first render and initialization
27
+ * @fires {CustomEvent<{label: string}>} btu-action-item-click - Fired when an action item is clicked (bubbles from btu-action-item)
28
+ *
29
+ * @slot - One or more `btu-action-item` elements
30
+ *
31
+ * @cssprop --action-bar-gap - Gap between items (default: 0.75rem)
32
+ * @cssprop --action-bar-padding - Bar padding (default: 1.5rem)
33
+ * @cssprop --action-bar-background - Background color (default: white)
34
+ * @cssprop --action-bar-border-color - Border color (default: gray-200)
35
+ * @cssprop --action-bar-z-index - Z-index (default: 100)
36
+ *
37
+ * @example
38
+ * ```html
39
+ * <!-- Basic: destructive left, actions right -->
40
+ * <btu-action-bar label="Content actions">
41
+ * <btu-action-item zone="start" variant="destructive" label="Delete" icon-name="trash-2"></btu-action-item>
42
+ * <btu-action-item zone="end" variant="secondary" label="Cancel"></btu-action-item>
43
+ * <btu-action-item zone="end" variant="primary" label="Save Changes"></btu-action-item>
44
+ * </btu-action-bar>
45
+ * ```
46
+ *
47
+ * @example
48
+ * ```html
49
+ * <!-- Parent must be flex/grid for bottom-anchoring -->
50
+ * <div style="display: flex; flex-direction: column; min-height: 100vh;">
51
+ * <main>Content here</main>
52
+ * <btu-action-bar label="Page actions">
53
+ * <btu-action-item variant="primary" label="Save"></btu-action-item>
54
+ * </btu-action-bar>
55
+ * </div>
56
+ * ```
57
+ */
58
+ export default class ActionBar extends ActionBar_base {
59
+ /**
60
+ * Bar position: 'top' or 'bottom' (default).
61
+ * @attr
62
+ */
63
+ position: Position;
64
+ /**
65
+ * Enables CSS sticky positioning. When combined with position='top',
66
+ * the bar sticks to the top of the scroll container. With position='bottom'
67
+ * (default), it sticks to the bottom.
68
+ * @attr
69
+ */
70
+ sticky: boolean;
71
+ /**
72
+ * Content alignment: 'default' (two-zone), 'start', 'center', 'end'.
73
+ * Non-default alignments disable two-zone layout.
74
+ * @attr item-alignment
75
+ */
76
+ alignment: Alignment;
77
+ /**
78
+ * Adds a box-shadow to the bar.
79
+ * @attr
80
+ */
81
+ shadow: boolean;
82
+ /**
83
+ * Accessible label for the toolbar region.
84
+ * @attr
85
+ */
86
+ label: string;
87
+ /**
88
+ * Enables progressive label compacting. When space shrinks, items marked
89
+ * `compactable` (with icons) have their labels hidden one-by-one
90
+ * from least to most important before items overflow into "More".
91
+ * @attr
92
+ */
93
+ compact: boolean;
94
+ /** @internal */
95
+ private initialClasses;
96
+ /** @internal */
97
+ private _items;
98
+ /** @internal */
99
+ private _startZone;
100
+ /** @internal */
101
+ private _endZone;
102
+ /** @internal */
103
+ private _moreDropdown;
104
+ /** @internal */
105
+ private _ro;
106
+ /** @internal */
107
+ private _rafId;
108
+ /** @internal - Cached expanded widths per item */
109
+ private _expandedWidths;
110
+ /** @internal - Cached compacted widths per item */
111
+ private _compactedWidths;
112
+ /** @internal */
113
+ private _hasOverflow;
114
+ /** @internal - Tracks which individual items are currently compacted */
115
+ private _compactedItems;
116
+ /** @internal */
117
+ private _boundKeydown;
118
+ createRenderRoot(): this;
119
+ /** @internal Override: return visible item buttons + More dropdown button in visual order */
120
+ _getRovingTargets(): HTMLElement[];
121
+ connectedCallback(): void;
122
+ willUpdate(): void;
123
+ firstUpdated(): void;
124
+ disconnectedCallback(): void;
125
+ /** @internal Determine which zone an item belongs to */
126
+ private _getItemZone;
127
+ /** @internal Get all visible (non-overflow) items in order */
128
+ private _getVisibleItems;
129
+ /** @internal Get end-zone items only */
130
+ private _getEndZoneItems;
131
+ /** @internal Sort end-zone items by variant importance */
132
+ private _sortEndZoneItems;
133
+ /** @internal Cache item widths, optionally in compacted (icon-only) state */
134
+ private _cacheWidths;
135
+ /** @internal Sum widths of visible items using per-item compact state */
136
+ private _calcTotalWidth;
137
+ /** @internal Set up ResizeObserver for overflow detection */
138
+ private _setupOverflowDetection;
139
+ /** @internal rAF-debounced recalculation */
140
+ private _scheduleRecalc;
141
+ /** @internal Recalculate which items overflow */
142
+ private _recalculateOverflow;
143
+ /** @internal Create the overflow "More" dropdown */
144
+ private _createOverflowDropdown;
145
+ /** @internal Populate overflow dropdown menu */
146
+ private _updateOverflowDropdown;
147
+ /** @internal Handle click on overflow dropdown item */
148
+ private _handleOverflowSelect;
149
+ /** @internal Update roving tabindex and configure compact state on visible items */
150
+ private _updateTabindex;
151
+ /** @internal Reactive recalculation when properties change */
152
+ updated(changedProperties: Map<string, unknown>): void;
153
+ /** @internal Keyboard handler for toolbar navigation */
154
+ private _handleKeydown;
155
+ render(): import("lit-html").TemplateResult<1>;
156
+ }
157
+ declare global {
158
+ interface HTMLElementTagNameMap {
159
+ 'btu-action-bar': ActionBar;
160
+ }
161
+ }
162
+ export {};
163
+ //# sourceMappingURL=ActionBar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActionBar.d.ts","sourceRoot":"","sources":["../../../src/components/action-bar/ActionBar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAQ,MAAM,KAAK,CAAA;AAKtC,OAAO,yBAAyB,CAAA;AAChC,OAAO,6BAA6B,CAAA;AACpC,OAAO,6BAA6B,CAAA;AACpC,OAAO,iBAAiB,CAAA;AAGxB,KAAK,QAAQ,GAAG,KAAK,GAAG,QAAQ,CAAA;AAChC,KAAK,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAA;;AAUvD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AACH,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,cAA8D;IACnG;;;OAGG;IAEH,QAAQ,EAAE,QAAQ,CAAW;IAE7B;;;;;OAKG;IAEH,MAAM,UAAQ;IAEd;;;;OAIG;IAEH,SAAS,EAAE,SAAS,CAAY;IAEhC;;;OAGG;IAEH,MAAM,UAAQ;IAEd;;;OAGG;IAEH,KAAK,SAAK;IAEV;;;;;OAKG;IAEH,OAAO,UAAQ;IAEf,gBAAgB;IAChB,OAAO,CAAC,cAAc,CAAe;IAErC,gBAAgB;IAChB,OAAO,CAAC,MAAM,CAAmB;IAEjC,gBAAgB;IAChB,OAAO,CAAC,UAAU,CAA2B;IAE7C,gBAAgB;IAChB,OAAO,CAAC,QAAQ,CAA2B;IAE3C,gBAAgB;IAChB,OAAO,CAAC,aAAa,CAA2B;IAEhD,gBAAgB;IAChB,OAAO,CAAC,GAAG,CAA8B;IAEzC,gBAAgB;IAChB,OAAO,CAAC,MAAM,CAAsB;IAEpC,kDAAkD;IAClD,OAAO,CAAC,eAAe,CAAgC;IAEvD,mDAAmD;IACnD,OAAO,CAAC,gBAAgB,CAAgC;IAExD,gBAAgB;IAChB,OAAO,CAAC,YAAY,CAAQ;IAE5B,wEAAwE;IACxE,OAAO,CAAC,eAAe,CAAwB;IAE/C,gBAAgB;IAChB,OAAO,CAAC,aAAa,CAAiC;IAEtD,gBAAgB;IAIhB,6FAA6F;IAC7F,iBAAiB,IAAI,WAAW,EAAE;IA8BlC,iBAAiB,IAAI,IAAI;IAmBzB,UAAU,IAAI,IAAI;IAWlB,YAAY,IAAI,IAAI;IA+BpB,oBAAoB,IAAI,IAAI;IAa5B,wDAAwD;IACxD,OAAO,CAAC,YAAY;IAMpB,8DAA8D;IAC9D,OAAO,CAAC,gBAAgB;IAWxB,wCAAwC;IACxC,OAAO,CAAC,gBAAgB;IAKxB,0DAA0D;IAC1D,OAAO,CAAC,iBAAiB;IAczB,6EAA6E;IAC7E,OAAO,CAAC,YAAY;IAWpB,yEAAyE;IACzE,OAAO,CAAC,eAAe;IAavB,6DAA6D;IAC7D,OAAO,CAAC,uBAAuB;IAK/B,4CAA4C;IAC5C,OAAO,CAAC,eAAe;IAQvB,iDAAiD;IACjD,OAAO,CAAC,oBAAoB;IA4D5B,oDAAoD;IACpD,OAAO,CAAC,uBAAuB;IAoB/B,gDAAgD;IAChD,OAAO,CAAC,uBAAuB;IA0B/B,uDAAuD;IACvD,OAAO,CAAC,qBAAqB;IAS7B,oFAAoF;IACpF,OAAO,CAAC,eAAe;IAevB,8DAA8D;IAC9D,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAMtD,wDAAwD;IACxD,OAAO,CAAC,cAAc;IAyBtB,MAAM;CAMP;AAMD,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,gBAAgB,EAAE,SAAS,CAAA;KAC5B;CACF"}
@@ -0,0 +1,479 @@
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 } from 'lit';
8
+ import { property } from 'lit/decorators.js';
9
+ import { EventEmitterMixin } from '../../util/EventEmitterMixin.js';
10
+ import { ReadyMixin } from '../../util/ReadyMixin.js';
11
+ import { RovingTabindexMixin } from '../../util/RovingTabindexMixin.js';
12
+ import '../dropdown/Dropdown.js';
13
+ import '../dropdown/DropdownItem.js';
14
+ import '../dropdown/DropdownMenu.js';
15
+ import './ActionItem.js';
16
+ /** @internal Variant priority for sort and overflow ordering */
17
+ const VARIANT_PRIORITY = {
18
+ tertiary: 0,
19
+ secondary: 1,
20
+ primary: 2,
21
+ destructive: 0,
22
+ };
23
+ /**
24
+ * A persistent container for primary, secondary, tertiary, and destructive actions
25
+ * within an interface, typically anchored to the bottom of a view.
26
+ *
27
+ * Uses a two-zone layout: destructive actions on the left (start zone),
28
+ * main actions on the right (end zone). Both zones maintain their position
29
+ * even when the other zone is empty (BSP-18087).
30
+ *
31
+ * **Positioning:** Uses `margin-top: auto` to push to bottom of flex/grid parents.
32
+ * In block layout parents, the bar sits after content (a console warning is emitted).
33
+ *
34
+ * **Overflow:** When items don't fit, the least important overflow into a "More" dropdown.
35
+ * Items are auto-sorted by variant priority (tertiary → secondary → primary).
36
+ * With `compact`, compactable items progressively hide labels one-by-one before overflowing.
37
+ *
38
+ * @element btu-action-bar
39
+ *
40
+ * @fires {CustomEvent} btu-action-bar-ready - Fired after first render and initialization
41
+ * @fires {CustomEvent<{label: string}>} btu-action-item-click - Fired when an action item is clicked (bubbles from btu-action-item)
42
+ *
43
+ * @slot - One or more `btu-action-item` elements
44
+ *
45
+ * @cssprop --action-bar-gap - Gap between items (default: 0.75rem)
46
+ * @cssprop --action-bar-padding - Bar padding (default: 1.5rem)
47
+ * @cssprop --action-bar-background - Background color (default: white)
48
+ * @cssprop --action-bar-border-color - Border color (default: gray-200)
49
+ * @cssprop --action-bar-z-index - Z-index (default: 100)
50
+ *
51
+ * @example
52
+ * ```html
53
+ * <!-- Basic: destructive left, actions right -->
54
+ * <btu-action-bar label="Content actions">
55
+ * <btu-action-item zone="start" variant="destructive" label="Delete" icon-name="trash-2"></btu-action-item>
56
+ * <btu-action-item zone="end" variant="secondary" label="Cancel"></btu-action-item>
57
+ * <btu-action-item zone="end" variant="primary" label="Save Changes"></btu-action-item>
58
+ * </btu-action-bar>
59
+ * ```
60
+ *
61
+ * @example
62
+ * ```html
63
+ * <!-- Parent must be flex/grid for bottom-anchoring -->
64
+ * <div style="display: flex; flex-direction: column; min-height: 100vh;">
65
+ * <main>Content here</main>
66
+ * <btu-action-bar label="Page actions">
67
+ * <btu-action-item variant="primary" label="Save"></btu-action-item>
68
+ * </btu-action-bar>
69
+ * </div>
70
+ * ```
71
+ */
72
+ export default class ActionBar extends RovingTabindexMixin(EventEmitterMixin(ReadyMixin(LitElement))) {
73
+ constructor() {
74
+ super(...arguments);
75
+ /**
76
+ * Bar position: 'top' or 'bottom' (default).
77
+ * @attr
78
+ */
79
+ this.position = 'bottom';
80
+ /**
81
+ * Enables CSS sticky positioning. When combined with position='top',
82
+ * the bar sticks to the top of the scroll container. With position='bottom'
83
+ * (default), it sticks to the bottom.
84
+ * @attr
85
+ */
86
+ this.sticky = false;
87
+ /**
88
+ * Content alignment: 'default' (two-zone), 'start', 'center', 'end'.
89
+ * Non-default alignments disable two-zone layout.
90
+ * @attr item-alignment
91
+ */
92
+ this.alignment = 'default';
93
+ /**
94
+ * Adds a box-shadow to the bar.
95
+ * @attr
96
+ */
97
+ this.shadow = false;
98
+ /**
99
+ * Accessible label for the toolbar region.
100
+ * @attr
101
+ */
102
+ this.label = '';
103
+ /**
104
+ * Enables progressive label compacting. When space shrinks, items marked
105
+ * `compactable` (with icons) have their labels hidden one-by-one
106
+ * from least to most important before items overflow into "More".
107
+ * @attr
108
+ */
109
+ this.compact = false;
110
+ /** @internal */
111
+ this.initialClasses = [];
112
+ /** @internal */
113
+ this._items = [];
114
+ /** @internal */
115
+ this._startZone = null;
116
+ /** @internal */
117
+ this._endZone = null;
118
+ /** @internal */
119
+ this._moreDropdown = null;
120
+ /** @internal */
121
+ this._ro = null;
122
+ /** @internal */
123
+ this._rafId = null;
124
+ /** @internal - Cached expanded widths per item */
125
+ this._expandedWidths = new Map();
126
+ /** @internal - Cached compacted widths per item */
127
+ this._compactedWidths = new Map();
128
+ /** @internal */
129
+ this._hasOverflow = false;
130
+ /** @internal - Tracks which individual items are currently compacted */
131
+ this._compactedItems = new Set();
132
+ /** @internal */
133
+ this._boundKeydown = this._handleKeydown.bind(this);
134
+ }
135
+ createRenderRoot() {
136
+ return this;
137
+ }
138
+ /** @internal Override: return visible item buttons + More dropdown button in visual order */
139
+ _getRovingTargets() {
140
+ const targets = [];
141
+ // Start-zone items
142
+ if (this._startZone) {
143
+ for (const item of this._startZone.querySelectorAll('btu-action-item')) {
144
+ if (item.style.display !== 'none') {
145
+ const button = item.querySelector('button');
146
+ if (button)
147
+ targets.push(button);
148
+ }
149
+ }
150
+ }
151
+ // More button (DOM-first in end zone, visually left of action items)
152
+ if (this._moreDropdown && this._moreDropdown.style.display !== 'none') {
153
+ const moreButton = this._moreDropdown.querySelector('button');
154
+ if (moreButton)
155
+ targets.push(moreButton);
156
+ }
157
+ // End-zone items
158
+ for (const item of this._getEndZoneItems()) {
159
+ if (item.style.display !== 'none') {
160
+ const button = item.querySelector('button');
161
+ if (button)
162
+ targets.push(button);
163
+ }
164
+ }
165
+ return targets;
166
+ }
167
+ connectedCallback() {
168
+ // Capture initial classes from backend HTML
169
+ if (this.className) {
170
+ this.initialClasses = this.className.split(' ').filter(c => c.trim());
171
+ }
172
+ // Capture action-item children before Lit renders
173
+ this._items = Array.from(this.querySelectorAll('btu-action-item'));
174
+ this._items.forEach(item => item.remove());
175
+ // Host element IS the toolbar — no wrapper div
176
+ this.setAttribute('role', 'toolbar');
177
+ this.setAttribute('aria-orientation', 'horizontal');
178
+ super.connectedCallback();
179
+ this.addEventListener('keydown', this._boundKeydown);
180
+ }
181
+ willUpdate() {
182
+ const classes = [...this.initialClasses, 'btu-action-bar'];
183
+ this.className = classes.filter(Boolean).join(' ');
184
+ if (this.label) {
185
+ this.setAttribute('aria-label', this.label);
186
+ }
187
+ else {
188
+ this.removeAttribute('aria-label');
189
+ }
190
+ }
191
+ firstUpdated() {
192
+ this._startZone = this.querySelector('.btu-action-bar-start');
193
+ this._endZone = this.querySelector('.btu-action-bar-end');
194
+ if (!this._startZone || !this._endZone)
195
+ return;
196
+ // Distribute items into zones
197
+ for (const item of this._items) {
198
+ const zone = this._getItemZone(item);
199
+ (zone === 'start' ? this._startZone : this._endZone).appendChild(item);
200
+ }
201
+ // Sort end-zone items by variant importance
202
+ this._sortEndZoneItems();
203
+ // Create overflow dropdown (after sort so it's appended last)
204
+ this._createOverflowDropdown(this._endZone);
205
+ // Cache widths (always cache both maps)
206
+ this._cacheWidths(this._expandedWidths, false);
207
+ this._cacheWidths(this._compactedWidths, true);
208
+ // Setup overflow detection
209
+ this._setupOverflowDetection();
210
+ // Initial tabindex
211
+ this._updateTabindex(0);
212
+ this.emit('btu-action-bar-ready');
213
+ }
214
+ disconnectedCallback() {
215
+ super.disconnectedCallback();
216
+ this.removeEventListener('keydown', this._boundKeydown);
217
+ if (this._ro) {
218
+ this._ro.disconnect();
219
+ this._ro = null;
220
+ }
221
+ if (this._rafId) {
222
+ cancelAnimationFrame(this._rafId);
223
+ this._rafId = null;
224
+ }
225
+ }
226
+ /** @internal Determine which zone an item belongs to */
227
+ _getItemZone(item) {
228
+ if (item.zone === 'start' || item.zone === 'end')
229
+ return item.zone;
230
+ // Fallback: destructive → start, others → end
231
+ return item.variant === 'destructive' ? 'start' : 'end';
232
+ }
233
+ /** @internal Get all visible (non-overflow) items in order */
234
+ _getVisibleItems() {
235
+ const items = [];
236
+ if (this._startZone) {
237
+ items.push(...Array.from(this._startZone.querySelectorAll('btu-action-item')));
238
+ }
239
+ if (this._endZone) {
240
+ items.push(...Array.from(this._endZone.querySelectorAll(':scope > btu-action-item')));
241
+ }
242
+ return items.filter(item => item.style.display !== 'none');
243
+ }
244
+ /** @internal Get end-zone items only */
245
+ _getEndZoneItems() {
246
+ if (!this._endZone)
247
+ return [];
248
+ return Array.from(this._endZone.querySelectorAll(':scope > btu-action-item'));
249
+ }
250
+ /** @internal Sort end-zone items by variant importance */
251
+ _sortEndZoneItems() {
252
+ if (!this._endZone)
253
+ return;
254
+ const endItems = this._getEndZoneItems();
255
+ const descending = this.alignment === 'start';
256
+ endItems.sort((a, b) => {
257
+ const pa = VARIANT_PRIORITY[a.variant] ?? 0;
258
+ const pb = VARIANT_PRIORITY[b.variant] ?? 0;
259
+ return descending ? pb - pa : pa - pb;
260
+ });
261
+ for (const item of endItems) {
262
+ this._endZone.appendChild(item);
263
+ }
264
+ }
265
+ /** @internal Cache item widths, optionally in compacted (icon-only) state */
266
+ _cacheWidths(target, compacted) {
267
+ target.clear();
268
+ for (const item of this._getEndZoneItems()) {
269
+ const canCompact = compacted && item.compactable && item.iconName && !item.iconOnly;
270
+ const button = canCompact ? item.querySelector('button') : null;
271
+ if (button)
272
+ button.classList.add('btu-button-text-hidden');
273
+ target.set(item, item.getBoundingClientRect().width);
274
+ if (button)
275
+ button.classList.remove('btu-button-text-hidden');
276
+ }
277
+ }
278
+ /** @internal Sum widths of visible items using per-item compact state */
279
+ _calcTotalWidth(items) {
280
+ const gap = parseFloat(getComputedStyle(this._endZone).gap) || 12;
281
+ let total = 0;
282
+ for (const item of items) {
283
+ if (item.style.display === 'none')
284
+ continue;
285
+ const map = this._compactedItems.has(item) ? this._compactedWidths : this._expandedWidths;
286
+ const w = map.get(item) || item.getBoundingClientRect().width;
287
+ if (total > 0)
288
+ total += gap;
289
+ total += w;
290
+ }
291
+ return total;
292
+ }
293
+ /** @internal Set up ResizeObserver for overflow detection */
294
+ _setupOverflowDetection() {
295
+ this._ro = new ResizeObserver(() => this._scheduleRecalc());
296
+ this._ro.observe(this);
297
+ }
298
+ /** @internal rAF-debounced recalculation */
299
+ _scheduleRecalc() {
300
+ if (this._rafId)
301
+ return;
302
+ this._rafId = requestAnimationFrame(() => {
303
+ this._rafId = null;
304
+ this._recalculateOverflow();
305
+ });
306
+ }
307
+ /** @internal Recalculate which items overflow */
308
+ _recalculateOverflow() {
309
+ if (!this._endZone)
310
+ return;
311
+ const endItems = this._getEndZoneItems();
312
+ const containerWidth = this._endZone.clientWidth;
313
+ const moreWidth = 40; // approximate "More" button width
314
+ const gap = parseFloat(getComputedStyle(this._endZone).gap) || 12;
315
+ // Phase 0: Reset — show all items, clear compact states
316
+ endItems.forEach(item => (item.style.display = ''));
317
+ this._compactedItems.clear();
318
+ // Phase 1: Check if everything fits expanded
319
+ if (this._calcTotalWidth(endItems) <= containerWidth) {
320
+ this._hasOverflow = false;
321
+ this._updateOverflowDropdown([]);
322
+ this._updateTabindex(Math.min(this._rovingIndex, this._getVisibleItems().length - 1));
323
+ return;
324
+ }
325
+ // Build priority-sorted list: least important first (stable sort)
326
+ const byPriority = [...endItems].sort((a, b) => (VARIANT_PRIORITY[a.variant] ?? 0) - (VARIANT_PRIORITY[b.variant] ?? 0));
327
+ // Phase 2: Progressive compacting (if enabled)
328
+ if (this.compact) {
329
+ for (const item of byPriority) {
330
+ if (!item.compactable || !item.iconName || item.iconOnly)
331
+ continue;
332
+ this._compactedItems.add(item);
333
+ if (this._calcTotalWidth(endItems) <= containerWidth) {
334
+ this._hasOverflow = false;
335
+ this._updateOverflowDropdown([]);
336
+ this._updateTabindex(Math.min(this._rovingIndex, this._getVisibleItems().length - 1));
337
+ return;
338
+ }
339
+ }
340
+ }
341
+ // Phase 3: Overflow least-important-first
342
+ const overflow = [];
343
+ for (const item of byPriority) {
344
+ const visible = endItems.filter(i => !overflow.includes(i));
345
+ const visibleWidth = this._calcTotalWidth(visible);
346
+ if (visibleWidth + moreWidth + gap <= containerWidth) {
347
+ break;
348
+ }
349
+ overflow.push(item);
350
+ item.style.display = 'none';
351
+ }
352
+ this._hasOverflow = overflow.length > 0;
353
+ this._updateOverflowDropdown(overflow);
354
+ this._updateTabindex(Math.min(this._rovingIndex, Math.max(0, this._getVisibleItems().length - 1)));
355
+ }
356
+ /** @internal Create the overflow "More" dropdown */
357
+ _createOverflowDropdown(endZone) {
358
+ this._moreDropdown = document.createElement('btu-dropdown');
359
+ this._moreDropdown.setAttribute('icon-symbol', 'ellipsis');
360
+ this._moreDropdown.setAttribute('icon-only', '');
361
+ this._moreDropdown.setAttribute('variant', 'tertiary');
362
+ this._moreDropdown.setAttribute('size', 'small');
363
+ this._moreDropdown.setAttribute('no-chevron', '');
364
+ this._moreDropdown.setAttribute('aria-label', 'More actions');
365
+ this._moreDropdown.style.display = 'none';
366
+ const menu = document.createElement('btu-dropdown-menu');
367
+ this._moreDropdown.appendChild(menu);
368
+ endZone.prepend(this._moreDropdown);
369
+ this._moreDropdown.addEventListener('btu-dropdown-item-select', this._handleOverflowSelect.bind(this));
370
+ }
371
+ /** @internal Populate overflow dropdown menu */
372
+ _updateOverflowDropdown(overflowItems) {
373
+ if (!this._moreDropdown)
374
+ return;
375
+ const menu = this._moreDropdown.querySelector('btu-dropdown-menu');
376
+ if (!menu)
377
+ return;
378
+ if (overflowItems.length === 0) {
379
+ this._moreDropdown.style.display = 'none';
380
+ menu.innerHTML = '';
381
+ return;
382
+ }
383
+ this._moreDropdown.style.display = '';
384
+ menu.innerHTML = '';
385
+ // Reverse: most important overflowed items at top of dropdown
386
+ const menuItems = [...overflowItems].reverse();
387
+ for (const item of menuItems) {
388
+ const menuItem = document.createElement('btu-dropdown-item');
389
+ menuItem.setAttribute('label', item.label);
390
+ menuItem.dataset.itemIndex = String(this._items.indexOf(item));
391
+ if (item.iconName)
392
+ menuItem.setAttribute('icon-symbol', item.iconName);
393
+ if (item.disabled)
394
+ menuItem.setAttribute('disabled', '');
395
+ menu.appendChild(menuItem);
396
+ }
397
+ }
398
+ /** @internal Handle click on overflow dropdown item */
399
+ _handleOverflowSelect(e) {
400
+ const menuItem = e.target;
401
+ const index = parseInt(menuItem.dataset.itemIndex || '-1', 10);
402
+ const original = this._items[index];
403
+ if (original && !original.disabled && !original.loading) {
404
+ original.emit('btu-action-item-click', { label: original.label });
405
+ }
406
+ }
407
+ /** @internal Update roving tabindex and configure compact state on visible items */
408
+ _updateTabindex(activeIndex) {
409
+ this._rovingFocus(activeIndex, false);
410
+ const targets = this._getRovingTargets();
411
+ const activeTarget = targets[this._rovingIndex];
412
+ const visible = this._getVisibleItems();
413
+ visible.forEach(item => {
414
+ const button = item.querySelector('button');
415
+ item._configure({
416
+ tabindex: button === activeTarget ? 0 : -1,
417
+ collapsed: this._compactedItems.has(item),
418
+ });
419
+ });
420
+ }
421
+ /** @internal Reactive recalculation when properties change */
422
+ updated(changedProperties) {
423
+ if (changedProperties.has('compact') || changedProperties.has('alignment')) {
424
+ this._scheduleRecalc();
425
+ }
426
+ }
427
+ /** @internal Keyboard handler for toolbar navigation */
428
+ _handleKeydown(e) {
429
+ const isRtl = getComputedStyle(this).direction === 'rtl';
430
+ const nextKey = isRtl ? 'ArrowLeft' : 'ArrowRight';
431
+ const prevKey = isRtl ? 'ArrowRight' : 'ArrowLeft';
432
+ switch (e.key) {
433
+ case nextKey:
434
+ e.preventDefault();
435
+ this._rovingNext();
436
+ break;
437
+ case prevKey:
438
+ e.preventDefault();
439
+ this._rovingPrev();
440
+ break;
441
+ case 'Home':
442
+ e.preventDefault();
443
+ this._rovingFirst();
444
+ break;
445
+ case 'End':
446
+ e.preventDefault();
447
+ this._rovingLast();
448
+ break;
449
+ }
450
+ }
451
+ render() {
452
+ return html `
453
+ <div class="btu-action-bar-start"></div>
454
+ <div class="btu-action-bar-end"></div>
455
+ `;
456
+ }
457
+ }
458
+ __decorate([
459
+ property({ type: String, reflect: true })
460
+ ], ActionBar.prototype, "position", void 0);
461
+ __decorate([
462
+ property({ type: Boolean, reflect: true })
463
+ ], ActionBar.prototype, "sticky", void 0);
464
+ __decorate([
465
+ property({ type: String, reflect: true, attribute: 'item-alignment' })
466
+ ], ActionBar.prototype, "alignment", void 0);
467
+ __decorate([
468
+ property({ type: Boolean, reflect: true })
469
+ ], ActionBar.prototype, "shadow", void 0);
470
+ __decorate([
471
+ property({ type: String })
472
+ ], ActionBar.prototype, "label", void 0);
473
+ __decorate([
474
+ property({ type: Boolean, reflect: true })
475
+ ], ActionBar.prototype, "compact", void 0);
476
+ if (!customElements.get('btu-action-bar')) {
477
+ customElements.define('btu-action-bar', ActionBar);
478
+ }
479
+ //# sourceMappingURL=ActionBar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActionBar.js","sourceRoot":"","sources":["../../../src/components/action-bar/ActionBar.ts"],"names":[],"mappings":"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"}