@ixfx/components 0.6.2 → 0.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 (152) hide show
  1. package/bundle/index.d.ts +1490 -615
  2. package/bundle/index.d.ts.map +1 -1
  3. package/bundle/index.js +20477 -15855
  4. package/bundle/index.js.map +1 -1
  5. package/bundle/style.css +1 -1
  6. package/dist/ac-text.js +3 -2
  7. package/dist/ac-text.js.map +1 -1
  8. package/dist/ac-token.js +3 -2
  9. package/dist/ac-token.js.map +1 -1
  10. package/dist/{button-Bn0BuLpO.js → button-Dat2yHAU.js} +4 -3
  11. package/dist/button-Dat2yHAU.js.map +1 -0
  12. package/dist/button.js +1 -1
  13. package/dist/checkbox.js +1 -1
  14. package/dist/{colour-picker-0stHB90J.js → colour-picker-BSDBL-QL.js} +4 -3
  15. package/dist/{colour-picker-0stHB90J.js.map → colour-picker-BSDBL-QL.js.map} +1 -1
  16. package/dist/colour-picker.js +1 -1
  17. package/dist/crumbs.js +4 -2
  18. package/dist/crumbs.js.map +1 -1
  19. package/dist/data-display.js +1 -1
  20. package/dist/data-grid.js +4 -2
  21. package/dist/data-grid.js.map +1 -1
  22. package/dist/{defaults-BCiDhZbF.js → defaults-BkWCPJFL.js} +3 -20
  23. package/dist/defaults-BkWCPJFL.js.map +1 -0
  24. package/dist/editable-label-rzXkjf1H.d.ts +75 -0
  25. package/dist/editable-label-rzXkjf1H.d.ts.map +1 -0
  26. package/dist/editable-label.d.ts +2 -75
  27. package/dist/editable-label.js +2 -1
  28. package/dist/editable-label.js.map +1 -1
  29. package/dist/{fallbacks-DEE1nCTt.js → fallbacks-DNI9xt0F.js} +2 -2
  30. package/dist/{fallbacks-DEE1nCTt.js.map → fallbacks-DNI9xt0F.js.map} +1 -1
  31. package/dist/{grouped-item-lister-_pMDwIo1.d.ts → grouped-item-lister-DnWB-eFT.d.ts} +2 -2
  32. package/dist/{grouped-item-lister-_pMDwIo1.d.ts.map → grouped-item-lister-DnWB-eFT.d.ts.map} +1 -1
  33. package/dist/grouped-item-lister.d.ts +1 -1
  34. package/dist/{icons-Bm2ByQ3s.js → icon-CvnPanhA.js} +3 -6
  35. package/dist/icon-CvnPanhA.js.map +1 -0
  36. package/dist/icons.js +8 -2
  37. package/dist/icons.js.map +1 -0
  38. package/dist/index-CG2vIgPv.d.ts +101 -0
  39. package/dist/index-CG2vIgPv.d.ts.map +1 -0
  40. package/dist/index.d.ts +655 -65
  41. package/dist/index.d.ts.map +1 -1
  42. package/dist/index.js +3682 -924
  43. package/dist/index.js.map +1 -1
  44. package/dist/interaction-D5XdKzbR.js +2 -0
  45. package/dist/labelled-radial-input.js +2 -1
  46. package/dist/labelled-radial-input.js.map +1 -1
  47. package/dist/labelled-slider-input-DzigjMwP.js +808 -0
  48. package/dist/labelled-slider-input-DzigjMwP.js.map +1 -0
  49. package/dist/labelled-slider-input.d.ts +2 -0
  50. package/dist/labelled-slider-input.js +2 -0
  51. package/dist/{types-DlVNJez_.d.ts → list-selection-types-DSuRNWpx.d.ts} +10 -2
  52. package/dist/list-selection-types-DSuRNWpx.d.ts.map +1 -0
  53. package/dist/menu-BjRvlgPy.js +825 -0
  54. package/dist/menu-BjRvlgPy.js.map +1 -0
  55. package/dist/menu-item-B-zYrTTi.js +797 -0
  56. package/dist/menu-item-B-zYrTTi.js.map +1 -0
  57. package/dist/menu.js +2 -1
  58. package/dist/miller.d.ts +1 -1
  59. package/dist/miller.js +3 -2
  60. package/dist/miller.js.map +1 -1
  61. package/dist/narrowed-text.js +4 -2
  62. package/dist/narrowed-text.js.map +1 -1
  63. package/dist/notifier.js +3 -2
  64. package/dist/notifier.js.map +1 -1
  65. package/dist/panel.d.ts +13 -13
  66. package/dist/panel.d.ts.map +1 -1
  67. package/dist/panel.js +37 -253
  68. package/dist/panel.js.map +1 -1
  69. package/dist/plots.js +1 -1
  70. package/dist/polar-pad.js +1 -1
  71. package/dist/{radial-input-Dk8Wydp5.js → radial-input-Dp5qz0ly.js} +2 -2
  72. package/dist/{radial-input-Dk8Wydp5.js.map → radial-input-Dp5qz0ly.js.map} +1 -1
  73. package/dist/radial-input.js +1 -1
  74. package/dist/range-input.js +1 -1
  75. package/dist/range.js +1 -1
  76. package/dist/registry-CkW7q09Q.js +21 -0
  77. package/dist/registry-CkW7q09Q.js.map +1 -0
  78. package/dist/select-horiz.js +3 -2
  79. package/dist/select-horiz.js.map +1 -1
  80. package/dist/{slider-input-XppH3vcy.d.ts → slider-input-BfRUW2ZB.d.ts} +16 -3
  81. package/dist/slider-input-BfRUW2ZB.d.ts.map +1 -0
  82. package/dist/{slider-input-CT4gcF-o.js → slider-input-De4eoT11.js} +382 -67
  83. package/dist/slider-input-De4eoT11.js.map +1 -0
  84. package/dist/slider-input.d.ts +1 -1
  85. package/dist/slider-input.js +1 -1
  86. package/dist/snackbar.js +1 -1
  87. package/dist/split-layout-BFSbUZQv.js +969 -0
  88. package/dist/split-layout-BFSbUZQv.js.map +1 -0
  89. package/dist/split-layout-JK3xWVX2.d.ts +179 -0
  90. package/dist/split-layout-JK3xWVX2.d.ts.map +1 -0
  91. package/dist/split-layout.d.ts +2 -60
  92. package/dist/split-layout.js +1 -617
  93. package/dist/style.css +1 -1
  94. package/dist/swipe.js +1 -1
  95. package/dist/{tab-list-D_1cYhB_.d.ts → tab-list-MPwq_1Jj.d.ts} +2 -1
  96. package/dist/tab-list-MPwq_1Jj.d.ts.map +1 -0
  97. package/dist/tabs.d.ts +1 -1
  98. package/dist/tabs.js +96 -14
  99. package/dist/tabs.js.map +1 -1
  100. package/dist/{tickled-controller-BtevrRLV.d.ts → tickled-controller-CRzdIEjJ.d.ts} +7 -1
  101. package/dist/tickled-controller-CRzdIEjJ.d.ts.map +1 -0
  102. package/dist/{tickled-controller-DkAU-0qL.js → tickled-controller-h9GmJ_bU.js} +8 -2
  103. package/dist/tickled-controller-h9GmJ_bU.js.map +1 -0
  104. package/dist/titlebar-DaCfpliv.d.ts +50 -0
  105. package/dist/titlebar-DaCfpliv.d.ts.map +1 -0
  106. package/dist/titlebar.d.ts +2 -0
  107. package/dist/titlebar.js +324 -0
  108. package/dist/titlebar.js.map +1 -0
  109. package/dist/{tree-BO6BXI2b.js → tree-Ch4W8qXQ.js} +4 -3
  110. package/dist/{tree-BO6BXI2b.js.map → tree-Ch4W8qXQ.js.map} +1 -1
  111. package/dist/tree.d.ts +1 -1
  112. package/dist/tree.js +1 -1
  113. package/dist/vertical-list-ClnqTkF3.js +814 -0
  114. package/dist/vertical-list-ClnqTkF3.js.map +1 -0
  115. package/dist/vertical-list.d.ts +8 -9
  116. package/dist/vertical-list.d.ts.map +1 -1
  117. package/dist/vertical-list.js +1 -736
  118. package/dist/{xy-axis-B6yMjckW.js → xy-axis-CxHC8z5E.js} +109 -3
  119. package/dist/xy-axis-CxHC8z5E.js.map +1 -0
  120. package/dist/xy-pad.js +1 -1
  121. package/docs-user/README.md +5 -0
  122. package/docs-user/detail-list.md +398 -0
  123. package/docs-user/dock.md +310 -0
  124. package/docs-user/index.json +27 -2
  125. package/docs-user/labelled-slider-input.md +198 -0
  126. package/docs-user/llms.txt +6 -1
  127. package/docs-user/panel.md +20 -1
  128. package/docs-user/slider-input.md +55 -15
  129. package/docs-user/split-layout.md +136 -170
  130. package/docs-user/tabs.md +34 -0
  131. package/docs-user/titlebar.md +102 -0
  132. package/docs-user/toolbar.md +95 -22
  133. package/docs-user/twosplit-layout.md +254 -0
  134. package/docs-user/user-catalog.md +8 -1
  135. package/llms.txt +6 -1
  136. package/package.json +1 -2
  137. package/dist/button-Bn0BuLpO.js.map +0 -1
  138. package/dist/defaults-BCiDhZbF.js.map +0 -1
  139. package/dist/editable-label.d.ts.map +0 -1
  140. package/dist/icons-Bm2ByQ3s.js.map +0 -1
  141. package/dist/menu-DIfU70AA.js +0 -1609
  142. package/dist/menu-DIfU70AA.js.map +0 -1
  143. package/dist/slider-input-CT4gcF-o.js.map +0 -1
  144. package/dist/slider-input-XppH3vcy.d.ts.map +0 -1
  145. package/dist/split-layout.d.ts.map +0 -1
  146. package/dist/split-layout.js.map +0 -1
  147. package/dist/tab-list-D_1cYhB_.d.ts.map +0 -1
  148. package/dist/tickled-controller-BtevrRLV.d.ts.map +0 -1
  149. package/dist/tickled-controller-DkAU-0qL.js.map +0 -1
  150. package/dist/types-DlVNJez_.d.ts.map +0 -1
  151. package/dist/vertical-list.js.map +0 -1
  152. package/dist/xy-axis-B6yMjckW.js.map +0 -1
@@ -0,0 +1,324 @@
1
+ import { t as themeFallbacks } from "./fallbacks-DNI9xt0F.js";
2
+ import { n as safeCustomElement, t as __decorate } from "./decorate-VRK8rslU.js";
3
+ import "./icon-CvnPanhA.js";
4
+ import { LitElement, css, html, nothing } from "lit";
5
+ import { property } from "lit/decorators.js";
6
+ //#region src/titlebar/titlebar.ts
7
+ let TitlebarElement = class TitlebarElement extends LitElement {
8
+ constructor(..._args) {
9
+ super(..._args);
10
+ this.title = ``;
11
+ this.iconName = ``;
12
+ this.orientation = `horizontal`;
13
+ this.variant = `titlebar`;
14
+ this.closable = false;
15
+ this.collapsible = false;
16
+ this.collapsed = false;
17
+ this.toggleInteraction = `implicit`;
18
+ }
19
+ _onToggleClick() {
20
+ if (!this.collapsible) return;
21
+ this.collapsed = !this.collapsed;
22
+ this.dispatchEvent(new CustomEvent(`toggle`, {
23
+ detail: { collapsed: this.collapsed },
24
+ bubbles: true,
25
+ composed: true
26
+ }));
27
+ }
28
+ _onCloseClick() {
29
+ this.dispatchEvent(new CustomEvent(`close`, {
30
+ bubbles: true,
31
+ composed: true
32
+ }));
33
+ }
34
+ _getCaretIcon() {
35
+ return `chevron-down`;
36
+ }
37
+ render() {
38
+ const caretIcon = this._getCaretIcon();
39
+ const isVertical = this.orientation === `vertical`;
40
+ const showCaret = this.collapsible && this.toggleInteraction !== `disabled`;
41
+ const implicitToggle = this.collapsible && this.toggleInteraction === `implicit`;
42
+ const caretRotation = isVertical ? this.collapsed ? `` : `-90deg` : this.collapsed ? `-90deg` : ``;
43
+ return html`
44
+ <div
45
+ class="bar"
46
+ role="toolbar"
47
+ @click=${implicitToggle ? this._onToggleClick : nothing}
48
+ >
49
+ <div class="title-text-wrapper">
50
+ ${this.iconName ? html`<ixfx-icon class="title-icon" name=${this.iconName}></ixfx-icon>` : nothing}
51
+ <span class="title-text">${this.title}</span>
52
+ </div>
53
+
54
+ <div class="toolbar" @click=${(e) => e.stopPropagation()}>
55
+ <slot name="toolbar"></slot>
56
+ ${this.closable ? html`
57
+ <button
58
+ class="close-btn"
59
+ type="button"
60
+ aria-label="Close panel"
61
+ @click=${this._onCloseClick}
62
+ >
63
+ <ixfx-icon name="close"></ixfx-icon>
64
+ </button>
65
+ ` : nothing}
66
+ ${showCaret ? html`
67
+ <button
68
+ class="caret-btn"
69
+ type="button"
70
+ aria-label=${this.collapsed ? `Expand panel` : `Collapse panel`}
71
+ @click=${this._onToggleClick}
72
+ >
73
+ <ixfx-icon name=${caretIcon} prominence .rotate=${caretRotation.length > 0 ? caretRotation : nothing}></ixfx-icon>
74
+ </button>
75
+ ` : nothing}
76
+ </div>
77
+ </div>
78
+ `;
79
+ }
80
+ static {
81
+ this.styles = [themeFallbacks, css`
82
+ :host {
83
+ display: block;
84
+ box-sizing: border-box;
85
+ }
86
+
87
+ .bar {
88
+ display: flex;
89
+ flex-direction: row;
90
+ align-items: center;
91
+ padding: var(--space-s) var(--space-m);
92
+ background: var(--surface-4);
93
+ color: var(--surface-3-text);
94
+ min-height: 2em;
95
+ height: 100%;
96
+ flex-shrink: 0;
97
+ box-sizing: border-box;
98
+ }
99
+
100
+ :host([orientation="vertical"]) .bar {
101
+ flex-direction: row;
102
+ min-width: 2em;
103
+ writing-mode: vertical-rl;
104
+ text-orientation: mixed;
105
+ }
106
+
107
+ .caret-btn,
108
+ .close-btn {
109
+ display: inline-flex;
110
+ align-items: center;
111
+ justify-content: center;
112
+ background: none;
113
+ border: none;
114
+ padding: var(--space-xs);
115
+ margin: 0;
116
+ cursor: pointer;
117
+ color: inherit;
118
+ border-radius: var(--radius-s);
119
+ transition: background var(--transition);
120
+ opacity: var(--prominence-idle-opacity);
121
+ }
122
+
123
+ .caret-btn:hover,
124
+ .close-btn:hover {
125
+ background: var(--surface-5);
126
+ opacity: var(--prominence-tickled-opacity);
127
+ }
128
+
129
+ .caret-btn:focus-visible,
130
+ .close-btn:focus-visible {
131
+ outline: 2px solid var(--accent);
132
+ outline-offset: 1px;
133
+ }
134
+
135
+ ixfx-icon {
136
+ width: 1.25em;
137
+ height: 1.25em;
138
+ transition: transform var(--transition);
139
+ }
140
+
141
+ .title-icon {
142
+ flex-shrink: 0;
143
+ }
144
+
145
+ .title-text {
146
+ flex: 1;
147
+ padding-left: 1ch;
148
+ font-family: var(--font-family);
149
+ font-size: var(--text-m);
150
+ font-weight: var(--font-weight-bold, 600);
151
+ white-space: nowrap;
152
+ overflow: hidden;
153
+ align-self: center;
154
+ text-overflow: ellipsis;
155
+ user-select: none;
156
+ -webkit-user-select: none;
157
+ }
158
+
159
+ :host([collapsible][toggle-interaction="implicit"]) .bar {
160
+ cursor: pointer;
161
+ }
162
+
163
+ :host([orientation="vertical"]) .title-text {
164
+ writing-mode: vertical-rl;
165
+ padding-left: 0;
166
+ padding-bottom: 1ch;
167
+ text-orientation: mixed;
168
+ transform: rotate(180deg);
169
+ }
170
+
171
+ .toolbar {
172
+ display: flex;
173
+ align-items: center;
174
+ gap: var(--space-xs);
175
+ margin-left: auto;
176
+ }
177
+
178
+ :host([orientation="vertical"]) .toolbar {
179
+ flex-direction: column;
180
+ margin-left: 0;
181
+ margin-top: auto;
182
+ writing-mode: horizontal-tb;
183
+ }
184
+
185
+ slot[name="toolbar"] {
186
+ display: contents;
187
+ }
188
+
189
+ ::slotted(slot[name="toolbar"]) {
190
+ display: contents;
191
+ }
192
+
193
+ .title-text-wrapper {
194
+ display: flex;
195
+ padding: 0 var(--space-s);
196
+ }
197
+
198
+ /* === Midline variant === */
199
+
200
+ :host([variant="midline"]) .bar {
201
+ background: transparent;
202
+ padding: var(--space-xs) var(--space-m);
203
+ min-height: unset;
204
+ position: relative;
205
+ }
206
+
207
+ :host([variant="midline"][orientation="vertical"]) .bar {
208
+ padding: var(--space-m) var(--space-xs);
209
+ min-width: unset;
210
+ }
211
+
212
+ :host([variant="midline"]) .title-text-wrapper {
213
+ position: relative;
214
+ z-index: 1;
215
+ display: flex;
216
+ align-items: center;
217
+ gap: var(--space-s);
218
+ background: var(--surface-3);
219
+ }
220
+
221
+ :host([variant="midline"]) .title-text {
222
+ font-weight: normal;
223
+ color: var(--surface-3-text);
224
+ padding: 0 0.5ch 0 0.5ch;
225
+ background: transparent;
226
+ box-shadow: none;
227
+ flex: unset;
228
+ width: auto;
229
+ white-space: nowrap;
230
+ }
231
+
232
+ :host([variant="midline"]) .title-icon {
233
+ background: transparent;
234
+ flex-shrink: 0;
235
+ }
236
+
237
+ :host([variant="midline"]) .caret-btn {
238
+ position: relative;
239
+ z-index: 1;
240
+ background: var(--surface-3);
241
+ opacity: 1;
242
+ }
243
+
244
+ :host([variant="midline"][orientation="vertical"]) .title-text {
245
+ transform: rotate(180deg);
246
+ padding: 0.5ch 0 0.5ch 0ch;
247
+ }
248
+
249
+ :host([variant="midline"]) .toolbar {
250
+ position: relative;
251
+ z-index: 2;
252
+ background: var(--surface-3);
253
+ margin-left: 0;
254
+ }
255
+
256
+ :host([variant="midline"][orientation="horizontal"]) .toolbar {
257
+ margin-left: auto;
258
+ }
259
+
260
+ /* Debossed line runs from after title-text to before toolbar */
261
+ :host([variant="midline"]) .bar::after {
262
+ content: '';
263
+ position: absolute;
264
+ top: 50%;
265
+ left: 0;
266
+ right: 0;
267
+ height: 1px;
268
+ transform: translateY(-50%);
269
+ background: var(--surface-2);
270
+ box-shadow:
271
+ 0 -1px 0 var(--surface-5),
272
+ 0 1px 0 var(--surface-1);
273
+ z-index: 0;
274
+ }
275
+
276
+ /* For vertical midline, line runs vertically */
277
+ :host([variant="midline"][orientation="vertical"]) .bar::after {
278
+ top: 0;
279
+ bottom: 0;
280
+ left: 50%;
281
+ right: unset;
282
+ width: 1px;
283
+ height: 100%;
284
+ transform: translateX(-50%);
285
+ box-shadow:
286
+ -1px 0 0 var(--surface-5),
287
+ 1px 0 0 var(--surface-1);
288
+ }
289
+ `];
290
+ }
291
+ };
292
+ __decorate([property({ type: String })], TitlebarElement.prototype, "title", void 0);
293
+ __decorate([property({
294
+ type: String,
295
+ attribute: `icon-name`
296
+ })], TitlebarElement.prototype, "iconName", void 0);
297
+ __decorate([property({
298
+ type: String,
299
+ attribute: `orientation`,
300
+ reflect: true
301
+ })], TitlebarElement.prototype, "orientation", void 0);
302
+ __decorate([property({
303
+ type: String,
304
+ attribute: `variant`,
305
+ reflect: true
306
+ })], TitlebarElement.prototype, "variant", void 0);
307
+ __decorate([property({ type: Boolean })], TitlebarElement.prototype, "closable", void 0);
308
+ __decorate([property({
309
+ type: Boolean,
310
+ reflect: true
311
+ })], TitlebarElement.prototype, "collapsible", void 0);
312
+ __decorate([property({
313
+ type: Boolean,
314
+ reflect: true
315
+ })], TitlebarElement.prototype, "collapsed", void 0);
316
+ __decorate([property({
317
+ type: String,
318
+ attribute: `toggle-interaction`
319
+ })], TitlebarElement.prototype, "toggleInteraction", void 0);
320
+ TitlebarElement = __decorate([safeCustomElement(`ixfx-titlebar`)], TitlebarElement);
321
+ //#endregion
322
+ export { TitlebarElement };
323
+
324
+ //# sourceMappingURL=titlebar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"titlebar.js","names":["customElement"],"sources":["../src/titlebar/titlebar.ts"],"sourcesContent":["/* eslint-disable ts/no-unsafe-declaration-merging */\nimport { css, html, LitElement, nothing } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { themeFallbacks } from '../styles/fallbacks.js';\nimport { safeCustomElement as customElement } from '../util/custom-elements.js';\nimport '../icons/icon.js';\n\nexport type TitlebarOrientation = `horizontal` | `vertical`;\nexport type TitlebarVariant = `titlebar` | `midline`;\nexport type TitlebarToggleInteraction = `implicit` | `explicit` | `disabled`;\n\nexport interface TitlebarToggleDetail {\n readonly collapsed: boolean;\n}\n\nexport type TitlebarToggleEvent = CustomEvent<TitlebarToggleDetail>;\nexport type TitlebarCloseEvent = CustomEvent<void>;\n\nexport interface TitlebarElementEventMap {\n toggle: TitlebarToggleEvent;\n close: TitlebarCloseEvent;\n}\n\n/**\n * Standalone titlebar chrome: title, icon, toolbar slot, close button and\n * optional collapse/expand caret. Extracted from `ixfx-panel`.\n *\n * Collapsing is opt-in via `collapsible`. When absent, no caret is shown and\n * `toggle-interaction` is inert. `close` is fired without removing the\n * element — the host decides what closing means.\n */\n@customElement(`ixfx-titlebar`)\nexport class TitlebarElement extends LitElement {\n @property({ type: String }) title = ``;\n @property({ type: String, attribute: `icon-name` }) iconName = ``;\n @property({ type: String, attribute: `orientation`, reflect: true }) orientation: TitlebarOrientation = `horizontal`;\n @property({ type: String, attribute: `variant`, reflect: true }) variant: TitlebarVariant = `titlebar`;\n @property({ type: Boolean }) closable = false;\n /** Show the collapse/expand caret and enable toggle behaviour. */\n @property({ type: Boolean, reflect: true }) collapsible = false;\n @property({ type: Boolean, reflect: true }) collapsed = false;\n @property({ type: String, attribute: `toggle-interaction` }) toggleInteraction: TitlebarToggleInteraction = `implicit`;\n\n private _onToggleClick() {\n if (!this.collapsible)\n return;\n this.collapsed = !this.collapsed;\n this.dispatchEvent(\n new CustomEvent<TitlebarToggleDetail>(`toggle`, {\n detail: { collapsed: this.collapsed },\n bubbles: true,\n composed: true,\n }),\n );\n }\n\n private _onCloseClick() {\n this.dispatchEvent(\n new CustomEvent<void>(`close`, {\n bubbles: true,\n composed: true,\n }),\n );\n }\n\n private _getCaretIcon(): string {\n return `chevron-down`;\n }\n\n protected override render() {\n const caretIcon = this._getCaretIcon();\n const isVertical = this.orientation === `vertical`;\n const showCaret = this.collapsible && this.toggleInteraction !== `disabled`;\n const implicitToggle = this.collapsible && this.toggleInteraction === `implicit`;\n\n const caretRotation = isVertical\n ? (this.collapsed ? `` : `-90deg`)\n : (this.collapsed ? `-90deg` : ``);\n\n return html`\n <div\n class=\"bar\"\n role=\"toolbar\"\n @click=${implicitToggle ? this._onToggleClick : nothing}\n >\n <div class=\"title-text-wrapper\">\n ${this.iconName ? html`<ixfx-icon class=\"title-icon\" name=${this.iconName}></ixfx-icon>` : nothing}\n <span class=\"title-text\">${this.title}</span>\n </div>\n\n <div class=\"toolbar\" @click=${(e: Event) => e.stopPropagation()}>\n <slot name=\"toolbar\"></slot>\n ${this.closable\n ? html`\n <button\n class=\"close-btn\"\n type=\"button\"\n aria-label=\"Close panel\"\n @click=${this._onCloseClick}\n >\n <ixfx-icon name=\"close\"></ixfx-icon>\n </button>\n `\n : nothing}\n ${showCaret\n ? html`\n <button\n class=\"caret-btn\"\n type=\"button\"\n aria-label=${this.collapsed ? `Expand panel` : `Collapse panel`}\n @click=${this._onToggleClick}\n >\n <ixfx-icon name=${caretIcon} prominence .rotate=${caretRotation.length > 0 ? caretRotation : nothing}></ixfx-icon>\n </button>\n `\n : nothing}\n </div>\n </div>\n `;\n }\n\n static override styles = [themeFallbacks, css`\n :host {\n display: block;\n box-sizing: border-box;\n }\n\n .bar {\n display: flex;\n flex-direction: row;\n align-items: center;\n padding: var(--space-s) var(--space-m);\n background: var(--surface-4);\n color: var(--surface-3-text);\n min-height: 2em;\n height: 100%;\n flex-shrink: 0;\n box-sizing: border-box;\n }\n\n :host([orientation=\"vertical\"]) .bar {\n flex-direction: row;\n min-width: 2em;\n writing-mode: vertical-rl;\n text-orientation: mixed;\n }\n\n .caret-btn,\n .close-btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n background: none;\n border: none;\n padding: var(--space-xs);\n margin: 0;\n cursor: pointer;\n color: inherit;\n border-radius: var(--radius-s);\n transition: background var(--transition);\n opacity: var(--prominence-idle-opacity);\n }\n\n .caret-btn:hover,\n .close-btn:hover {\n background: var(--surface-5);\n opacity: var(--prominence-tickled-opacity);\n }\n\n .caret-btn:focus-visible,\n .close-btn:focus-visible {\n outline: 2px solid var(--accent);\n outline-offset: 1px;\n }\n\n ixfx-icon {\n width: 1.25em;\n height: 1.25em;\n transition: transform var(--transition);\n }\n\n .title-icon {\n flex-shrink: 0;\n }\n\n .title-text {\n flex: 1;\n padding-left: 1ch;\n font-family: var(--font-family);\n font-size: var(--text-m);\n font-weight: var(--font-weight-bold, 600);\n white-space: nowrap;\n overflow: hidden;\n align-self: center;\n text-overflow: ellipsis;\n user-select: none;\n -webkit-user-select: none;\n }\n\n :host([collapsible][toggle-interaction=\"implicit\"]) .bar {\n cursor: pointer;\n }\n\n :host([orientation=\"vertical\"]) .title-text {\n writing-mode: vertical-rl;\n padding-left: 0;\n padding-bottom: 1ch;\n text-orientation: mixed;\n transform: rotate(180deg);\n }\n\n .toolbar {\n display: flex;\n align-items: center;\n gap: var(--space-xs);\n margin-left: auto;\n }\n\n :host([orientation=\"vertical\"]) .toolbar {\n flex-direction: column;\n margin-left: 0;\n margin-top: auto;\n writing-mode: horizontal-tb;\n }\n\n slot[name=\"toolbar\"] {\n display: contents;\n }\n\n ::slotted(slot[name=\"toolbar\"]) {\n display: contents;\n }\n\n .title-text-wrapper {\n display: flex;\n padding: 0 var(--space-s);\n }\n\n /* === Midline variant === */\n\n :host([variant=\"midline\"]) .bar {\n background: transparent;\n padding: var(--space-xs) var(--space-m);\n min-height: unset;\n position: relative;\n }\n\n :host([variant=\"midline\"][orientation=\"vertical\"]) .bar {\n padding: var(--space-m) var(--space-xs);\n min-width: unset;\n }\n\n :host([variant=\"midline\"]) .title-text-wrapper {\n position: relative;\n z-index: 1;\n display: flex;\n align-items: center;\n gap: var(--space-s);\n background: var(--surface-3);\n }\n\n :host([variant=\"midline\"]) .title-text {\n font-weight: normal;\n color: var(--surface-3-text);\n padding: 0 0.5ch 0 0.5ch;\n background: transparent;\n box-shadow: none;\n flex: unset;\n width: auto;\n white-space: nowrap;\n }\n\n :host([variant=\"midline\"]) .title-icon {\n background: transparent;\n flex-shrink: 0;\n }\n\n :host([variant=\"midline\"]) .caret-btn {\n position: relative;\n z-index: 1;\n background: var(--surface-3);\n opacity: 1;\n }\n\n :host([variant=\"midline\"][orientation=\"vertical\"]) .title-text {\n transform: rotate(180deg);\n padding: 0.5ch 0 0.5ch 0ch;\n }\n\n :host([variant=\"midline\"]) .toolbar {\n position: relative;\n z-index: 2;\n background: var(--surface-3);\n margin-left: 0;\n }\n\n :host([variant=\"midline\"][orientation=\"horizontal\"]) .toolbar {\n margin-left: auto;\n }\n\n /* Debossed line runs from after title-text to before toolbar */\n :host([variant=\"midline\"]) .bar::after {\n content: '';\n position: absolute;\n top: 50%;\n left: 0;\n right: 0;\n height: 1px;\n transform: translateY(-50%);\n background: var(--surface-2);\n box-shadow:\n 0 -1px 0 var(--surface-5),\n 0 1px 0 var(--surface-1);\n z-index: 0;\n }\n\n /* For vertical midline, line runs vertically */\n :host([variant=\"midline\"][orientation=\"vertical\"]) .bar::after {\n top: 0;\n bottom: 0;\n left: 50%;\n right: unset;\n width: 1px;\n height: 100%;\n transform: translateX(-50%);\n box-shadow:\n -1px 0 0 var(--surface-5),\n 1px 0 0 var(--surface-1);\n }\n `];\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ixfx-titlebar': TitlebarElement;\n }\n}\n\nexport interface TitlebarElement {\n addEventListener: (<K extends keyof TitlebarElementEventMap>(\n type: K,\n listener: (this: TitlebarElement, event: TitlebarElementEventMap[K]) => void,\n options?: boolean | AddEventListenerOptions,\n ) => void) & ((\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions,\n ) => void);\n}\n"],"mappings":";;;;;;AAgCO,IAAM,kBAAN,MAAM,wBAAwB,WAAW;;;EACV,KAAA,QAAA;EAC2B,KAAA,WAAA;EACyC,KAAA,cAAA;EACZ,KAAA,UAAA;EACpD,KAAA,WAAA;EAEkB,KAAA,cAAA;EACF,KAAA,YAAA;EACoD,KAAA,oBAAA;;CAE5G,iBAAyB;EACvB,IAAI,CAAC,KAAK,aACR;EACF,KAAK,YAAY,CAAC,KAAK;EACvB,KAAK,cACH,IAAI,YAAkC,UAAU;GAC9C,QAAQ,EAAE,WAAW,KAAK,UAAU;GACpC,SAAS;GACT,UAAU;EACZ,CAAC,CACH;CACF;CAEA,gBAAwB;EACtB,KAAK,cACH,IAAI,YAAkB,SAAS;GAC7B,SAAS;GACT,UAAU;EACZ,CAAC,CACH;CACF;CAEA,gBAAgC;EAC9B,OAAO;CACT;CAEA,SAA4B;EAC1B,MAAM,YAAY,KAAK,cAAc;EACrC,MAAM,aAAa,KAAK,gBAAgB;EACxC,MAAM,YAAY,KAAK,eAAe,KAAK,sBAAsB;EACjE,MAAM,iBAAiB,KAAK,eAAe,KAAK,sBAAsB;EAEtE,MAAM,gBAAgB,aACjB,KAAK,YAAY,KAAK,WACtB,KAAK,YAAY,WAAW;EAEjC,OAAO,IAAI;;;;iBAIE,iBAAiB,KAAK,iBAAiB,QAAQ;;;YAGpD,KAAK,WAAW,IAAI,sCAAsC,KAAK,SAAS,iBAAiB,QAAQ;qCACxE,KAAK,MAAM;;;uCAGT,MAAa,EAAE,gBAAgB,EAAE;;YAE5D,KAAK,WACH,IAAI;;;;;uBAKK,KAAK,cAAc;;;;cAK5B,QAAQ;YACV,YACE,IAAI;;;;yBAIO,KAAK,YAAY,iBAAiB,iBAAiB;qBACvD,KAAK,eAAe;;8BAEX,UAAU,sBAAsB,cAAc,SAAS,IAAI,gBAAgB,QAAQ;;cAGnG,QAAQ;;;;CAIpB;;EAEyB,KAAA,SAAA,CAAC,gBAAgB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgN5C;;AACH;AAzSG,WAAA,CAAA,SAAS,EAAE,MAAM,OAAO,CAAC,CAAA,GAAA,gBAAA,WAAA,SAAA,KAAA,CAAA;AACzB,WAAA,CAAA,SAAS;CAAE,MAAM;CAAQ,WAAW;AAAY,CAAC,CAAA,GAAA,gBAAA,WAAA,YAAA,KAAA,CAAA;AACjD,WAAA,CAAA,SAAS;CAAE,MAAM;CAAQ,WAAW;CAAe,SAAS;AAAK,CAAC,CAAA,GAAA,gBAAA,WAAA,eAAA,KAAA,CAAA;AAClE,WAAA,CAAA,SAAS;CAAE,MAAM;CAAQ,WAAW;CAAW,SAAS;AAAK,CAAC,CAAA,GAAA,gBAAA,WAAA,WAAA,KAAA,CAAA;AAC9D,WAAA,CAAA,SAAS,EAAE,MAAM,QAAQ,CAAC,CAAA,GAAA,gBAAA,WAAA,YAAA,KAAA,CAAA;AAE1B,WAAA,CAAA,SAAS;CAAE,MAAM;CAAS,SAAS;AAAK,CAAC,CAAA,GAAA,gBAAA,WAAA,eAAA,KAAA,CAAA;AACzC,WAAA,CAAA,SAAS;CAAE,MAAM;CAAS,SAAS;AAAK,CAAC,CAAA,GAAA,gBAAA,WAAA,aAAA,KAAA,CAAA;AACzC,WAAA,CAAA,SAAS;CAAE,MAAM;CAAQ,WAAW;AAAqB,CAAC,CAAA,GAAA,gBAAA,WAAA,qBAAA,KAAA,CAAA;AAV5DA,kBAAAA,WAAAA,CAAAA,kBAAc,eAAe,CAAA,GAAA,eAAA"}
@@ -1,7 +1,8 @@
1
- import { t as TickledController } from "./tickled-controller-DkAU-0qL.js";
1
+ import { t as TickledController } from "./tickled-controller-h9GmJ_bU.js";
2
2
  import { n as tickledStyles, t as tickledItemStyles } from "./tickled-styles-BrAHEj1q.js";
3
- import { t as themeFallbacks } from "./fallbacks-DEE1nCTt.js";
3
+ import { t as themeFallbacks } from "./fallbacks-DNI9xt0F.js";
4
4
  import { n as safeCustomElement, t as __decorate } from "./decorate-VRK8rslU.js";
5
+ import "./interaction-D5XdKzbR.js";
5
6
  import { t as collectDataResult } from "./data-provider-35TyWclX.js";
6
7
  import { LitElement, css, html, nothing } from "lit";
7
8
  import { property, state } from "lit/decorators.js";
@@ -1418,4 +1419,4 @@ var TreeController = class {
1418
1419
  //#endregion
1419
1420
  export { TreeDataModel as i, TreeListElement as n, TreeBaseElement as r, TreeController as t };
1420
1421
 
1421
- //# sourceMappingURL=tree-BO6BXI2b.js.map
1422
+ //# sourceMappingURL=tree-Ch4W8qXQ.js.map