@odx/foundation 1.0.0-beta.2 → 1.0.0-beta.20

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 (85) hide show
  1. package/dist/{lib/facade → cdk/control}/checkbox-form-control.d.ts +2 -2
  2. package/dist/{lib/facade → cdk/control}/checkbox-group-form-control.d.ts +2 -2
  3. package/dist/cdk/control/listbox-form-control.d.ts +22 -0
  4. package/dist/cdk/control/option-control.d.ts +24 -0
  5. package/dist/{lib/facade → cdk/control}/radio-group-form-control.d.ts +2 -2
  6. package/dist/cdk/drag-drop/drag.controller.d.ts +1 -0
  7. package/dist/{components/button/base-button.d.ts → cdk/interactive/interactive-element.d.ts} +9 -8
  8. package/dist/cdk/interactive/interactive-link.d.ts +15 -0
  9. package/dist/cdk/main.d.ts +7 -0
  10. package/dist/cdk/popover/popover-host.d.ts +12 -6
  11. package/dist/cdk/popover/popover.models.d.ts +1 -1
  12. package/dist/cdk.js +721 -127
  13. package/dist/components/accordion/accordion-header.d.ts +1 -2
  14. package/dist/components/accordion/accordion-panel.d.ts +1 -0
  15. package/dist/components/accordion/accordion.d.ts +4 -4
  16. package/dist/components/button/button.d.ts +4 -6
  17. package/dist/components/button/button.models.d.ts +12 -0
  18. package/dist/components/button/index.d.ts +0 -1
  19. package/dist/components/button-group/button-group.d.ts +0 -8
  20. package/dist/components/checkbox/checkbox.d.ts +2 -2
  21. package/dist/components/checkbox-group/checkbox-group.d.ts +1 -1
  22. package/dist/components/chip/chip.d.ts +2 -2
  23. package/dist/components/combobox/combobox.d.ts +20 -0
  24. package/dist/components/combobox/index.d.ts +2 -0
  25. package/dist/components/dropdown/dropdown.d.ts +8 -4
  26. package/dist/components/highlight/highlight.d.ts +3 -0
  27. package/dist/components/input/input.d.ts +3 -0
  28. package/dist/components/link/base-link.d.ts +2 -2
  29. package/dist/components/list/list-item.d.ts +6 -6
  30. package/dist/components/list/list.d.ts +2 -0
  31. package/dist/components/main.d.ts +1 -0
  32. package/dist/components/menu/menu.d.ts +1 -4
  33. package/dist/components/menu-item/menu-item.d.ts +3 -4
  34. package/dist/components/navigation-item/navigation-item.d.ts +2 -2
  35. package/dist/components/option/option.d.ts +1 -2
  36. package/dist/components/radio-button/radio-button.d.ts +1 -1
  37. package/dist/components/radio-group/radio-group.d.ts +1 -1
  38. package/dist/components/select/select.d.ts +9 -5
  39. package/dist/components/stack/stack.d.ts +3 -3
  40. package/dist/components/stack/stack.models.d.ts +1 -1
  41. package/dist/components/switch/switch.d.ts +1 -1
  42. package/dist/components/table/table-header.d.ts +1 -1
  43. package/dist/components/table/table-row.d.ts +1 -1
  44. package/dist/components/text/text.models.d.ts +1 -1
  45. package/dist/components/toggle-button/toggle-button.d.ts +1 -1
  46. package/dist/components/toggle-content/toggle-content.d.ts +2 -3
  47. package/dist/components/tooltip/tooltip.d.ts +1 -4
  48. package/dist/components.js +705 -649
  49. package/dist/i18n/lib/config.d.ts +4 -3
  50. package/dist/i18n.js +14 -10
  51. package/dist/lib/controllers/active-desendants-controller.d.ts +25 -0
  52. package/dist/lib/controllers/expandable-controller.d.ts +17 -0
  53. package/dist/lib/controllers/focus-trap.controller.d.ts +1 -0
  54. package/dist/lib/custom-element.d.ts +1 -1
  55. package/dist/lib/main.d.ts +9 -12
  56. package/dist/lib/mixins/can-be-disabled.d.ts +1 -1
  57. package/dist/lib/mixins/can-be-expanded.d.ts +2 -4
  58. package/dist/lib/mixins/can-be-highlighted.d.ts +8 -0
  59. package/dist/lib/mixins/can-be-readonly.d.ts +1 -1
  60. package/dist/lib/mixins/can-be-required.d.ts +1 -1
  61. package/dist/lib/mixins/can-be-selected.d.ts +2 -2
  62. package/dist/lib/mixins/can-be-validated.d.ts +1 -1
  63. package/dist/lib/mixins/form-control.d.ts +2 -2
  64. package/dist/lib/mixins/number-control.d.ts +1 -1
  65. package/dist/lib/mixins/with-loading-state.d.ts +1 -1
  66. package/dist/lib/{utils → types}/a11y.d.ts +0 -6
  67. package/dist/lib/utils/dom.d.ts +0 -2
  68. package/dist/lib/{directives/slot-fallback.d.ts → utils/empty-slot-fallback-fix.d.ts} +1 -1
  69. package/dist/lib/utils/lit.d.ts +5 -0
  70. package/dist/lib/utils/query-assigned-element.d.ts +16 -0
  71. package/dist/lib/utils/search-text-content.d.ts +1 -0
  72. package/dist/lib/utils/transformers.d.ts +5 -0
  73. package/dist/main.js +366 -626
  74. package/dist/styles.css +1 -1
  75. package/dist/vendor-dJxQG085.js +138 -0
  76. package/package.json +8 -8
  77. package/dist/lib/decorators/request-update-on-aria-change.d.ts +0 -4
  78. package/dist/lib/directives/optional-attr.d.ts +0 -2
  79. package/dist/lib/directives/optional-slot.d.ts +0 -3
  80. package/dist/lib/facade/option-control.d.ts +0 -16
  81. package/dist/lib/facade/select-form-control.d.ts +0 -19
  82. package/dist/lib/utils/object.d.ts +0 -2
  83. package/dist/vendor-C_WVAD3D.js +0 -3680
  84. package/dist/vite.config.d.ts +0 -3
  85. /package/dist/lib/{mixins → utils}/dedupe-mixin.d.ts +0 -0
@@ -1,18 +1,15 @@
1
- import { CanBeExpanded, CustomElement, getUniqueId, toAriaBooleanAttribute, customElement, requestUpdateOnAriaChange, fromAriaBooleanAttribute, getKeyboardEventInfo, CanBeDisabled, SharedResizeObserver, optionalAttr, createIntersectionObserver, createMutationObserver, getElementFromEvent, DisabledContextProvider, WithLoadingState, getAssignedElements, optionalSlot, CheckboxGroupFormControl, CheckboxFormControl, toggleAttribute, parseDate, searchTextContent, waitForAnimations, FormControl, forwardEvent, CanBeSelected, FocusTrapController, OptionControl, toPx, RadioGroupFormControl, SelectFormControl, emptySlotFallbackFix, NumberControl } from '@odx/foundation';
2
- import { html, isServer, unsafeCSS, nothing, css } from 'lit';
3
- import { queryAssignedElements, property, query, queryAll, state } from 'lit/decorators.js';
1
+ import { CanBeExpanded, CustomElement, fromToggleEventState, getUniqueId, toAriaBooleanAttribute, customElement, requestUpdateOnAriaChange, ExpandableItemManager, CanBeDisabled, SharedResizeObserver, optionalAttr, createIntersectionObserver, createMutationObserver, getElementFromEvent, optionalSlot, toggleAttribute, getKeyboardEventInfo, queryAssignedElement, parseDate, searchTextContent, waitForAnimations, FormControl, forwardEvent, CanBeSelected, WithLoadingState, FocusTrapController, toPx, getAssignedElements, emptySlotFallbackFix, NumberControl } from '@odx/foundation';
2
+ import { html, isServer, css, nothing } from 'lit';
3
+ import { property, queryAssignedElements, query, queryAll, state } from 'lit/decorators.js';
4
4
  import { signal, computed, effect, SignalWatcher } from '@lit-labs/preact-signals';
5
5
  import { repeat } from 'lit/directives/repeat.js';
6
6
  import { when } from 'lit/directives/when.js';
7
- import { ifDefined } from 'lit/directives/if-defined.js';
8
- import { classMap } from 'lit/directives/class-map.js';
9
- import { PopoverPlacement, PopoverHost, PopoverPlacementOptions, IsDraggable, IS_DRAG_ACTIVE_ATTRIBUTE, DragController } from '@odx/foundation/cdk';
7
+ import { InteractiveElement, CheckboxGroupFormControl, CheckboxFormControl, PopoverPlacement, PopoverHost, PopoverPlacementOptions, ListboxFormControl, OptionControl, RadioGroupFormControl, IsDraggable, IS_DRAG_ACTIVE_ATTRIBUTE, DragController } from '@odx/foundation/cdk';
10
8
  import { IsLocalized, setTranslation } from '@odx/foundation/i18n';
11
- import { g as clamp, R as RovingTabindexController, r as round, i as debounce, m as minBy, j as maxBy } from './vendor-C_WVAD3D.js';
12
- import { styleMap } from 'lit/directives/style-map.js';
9
+ import { R as RovingTabindexController, r as round, d as debounce } from './vendor-dJxQG085.js';
13
10
  import { createContext, consume, provide } from '@lit/context';
14
11
 
15
- const styles$1b = ":host{display:block}";
12
+ const styles$1b = "@layer base{:host{display:block;odx-list-item{margin-block:var(--odx-size-37)}odx-list-item::part(separator){display:none}}}";
16
13
 
17
14
  var __defProp$1m = Object.defineProperty;
18
15
  var __getOwnPropDesc$1m = Object.getOwnPropertyDescriptor;
@@ -28,26 +25,29 @@ var __decorateClass$1m = (decorators, target, key, kind) => {
28
25
  return result;
29
26
  };
30
27
  var __accessCheck$w = (obj, member, msg) => member.has(obj) || __typeError$w("Cannot " + msg);
28
+ var __privateGet$r = (obj, member, getter) => (__accessCheck$w(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
31
29
  var __privateAdd$w = (obj, member, value) => member.has(obj) ? __typeError$w("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
32
- var __privateMethod$h = (obj, member, method) => (__accessCheck$w(obj, member, "access private method"), method);
33
- var _OdxAccordionHeader_instances, handleExpandedChange_fn;
30
+ var __privateMethod$j = (obj, member, method) => (__accessCheck$w(obj, member, "access private method"), method);
31
+ var _handleToggle$1, _OdxAccordionHeader_instances, updateAriaAttributes_fn$3;
34
32
  let OdxAccordionHeader = class extends CanBeExpanded(CustomElement) {
35
33
  constructor() {
36
34
  super(...arguments);
37
35
  __privateAdd$w(this, _OdxAccordionHeader_instances);
36
+ __privateAdd$w(this, _handleToggle$1, (event) => {
37
+ this.expanded = fromToggleEventState(event.newState);
38
+ });
38
39
  }
39
40
  get panel() {
40
41
  return this.nextElementSibling;
41
42
  }
42
43
  connectedCallback() {
43
- this.tabIndex = 0;
44
44
  super.connectedCallback();
45
45
  this.id ||= getUniqueId(this.localName);
46
46
  this.role ||= "button";
47
47
  }
48
48
  render() {
49
49
  return html`
50
- <odx-list-item role="presentation" part="base" compact ?disabled=${this.disabled} with-expanded-indicator>
50
+ <odx-list-item part="base" exportparts="expand-control" compact ?disabled=${this.disabled} ?expanded=${this.expanded} @toggle=${__privateGet$r(this, _handleToggle$1)} with-expand-indicator role="presentation">
51
51
  <slot name="prefix" slot="prefix"></slot>
52
52
  <odx-text class="content" ?emphasized=${this.expanded}>
53
53
  <slot></slot>
@@ -56,30 +56,27 @@ let OdxAccordionHeader = class extends CanBeExpanded(CustomElement) {
56
56
  </odx-list-item>
57
57
  `;
58
58
  }
59
- willUpdate(props) {
60
- super.willUpdate?.(props);
59
+ updated(props) {
60
+ super.updated?.(props);
61
61
  if (props.has("disabled") || props.has("expanded")) {
62
- __privateMethod$h(this, _OdxAccordionHeader_instances, handleExpandedChange_fn).call(this);
62
+ __privateMethod$j(this, _OdxAccordionHeader_instances, updateAriaAttributes_fn$3).call(this);
63
63
  }
64
64
  }
65
65
  };
66
+ _handleToggle$1 = new WeakMap();
66
67
  _OdxAccordionHeader_instances = new WeakSet();
67
- handleExpandedChange_fn = function() {
68
+ updateAriaAttributes_fn$3 = function() {
68
69
  if (!this.panel) return;
69
70
  this.ariaExpanded = toAriaBooleanAttribute(this.expanded);
70
71
  this.setAttribute("aria-controls", this.panel.id);
71
- this.panel.ariaHidden = toAriaBooleanAttribute(this.disabled || !this.expanded);
72
+ this.panel.hidden = this.disabled || !this.expanded;
72
73
  this.panel.setAttribute("aria-labelledby", this.id);
73
74
  };
74
- OdxAccordionHeader.shadowRootOptions = {
75
- ...CustomElement.shadowRootOptions,
76
- delegatesFocus: true
77
- };
78
75
  OdxAccordionHeader = __decorateClass$1m([
79
76
  customElement("odx-accordion-header", [styles$1b])
80
77
  ], OdxAccordionHeader);
81
78
 
82
- const styles$1a = "@layer base{:host{display:block}odx-separator{margin:0}.content{padding:var(--odx-size-50);padding-block-start:var(--odx-size-12)}:host(:last-of-type) odx-separator{display:none}::slotted(odx-accordion){margin-block:calc(-1 * var(--odx-size-37));margin-inline-end:calc(-1 * var(--odx-size-50))}}";
79
+ const styles$1a = "@layer base{:host{display:block}odx-separator{--margin-block: 0}.content{padding:var(--odx-size-50);padding-block-start:var(--odx-size-12)}:host(:last-of-type) odx-separator{display:none}::slotted(odx-accordion){margin-block:calc(-1 * var(--odx-size-37));margin-inline-end:calc(-1 * var(--odx-size-50))}}";
83
80
 
84
81
  var __defProp$1l = Object.defineProperty;
85
82
  var __getOwnPropDesc$1l = Object.getOwnPropertyDescriptor;
@@ -92,6 +89,10 @@ var __decorateClass$1l = (decorators, target, key, kind) => {
92
89
  return result;
93
90
  };
94
91
  let OdxAccordionPanel = class extends CustomElement {
92
+ constructor() {
93
+ super(...arguments);
94
+ this.hidden = false;
95
+ }
95
96
  connectedCallback() {
96
97
  super.connectedCallback();
97
98
  this.id ||= getUniqueId(this.localName);
@@ -99,7 +100,7 @@ let OdxAccordionPanel = class extends CustomElement {
99
100
  }
100
101
  render() {
101
102
  return html`
102
- <odx-toggle-content ?expanded=${!fromAriaBooleanAttribute(this.ariaHidden)}>
103
+ <odx-toggle-content ?hidden=${this.hidden}>
103
104
  <div class="content">
104
105
  <slot></slot>
105
106
  </div>
@@ -108,6 +109,9 @@ let OdxAccordionPanel = class extends CustomElement {
108
109
  `;
109
110
  }
110
111
  };
112
+ __decorateClass$1l([
113
+ property({ type: Boolean, reflect: true })
114
+ ], OdxAccordionPanel.prototype, "hidden", 2);
111
115
  OdxAccordionPanel = __decorateClass$1l([
112
116
  requestUpdateOnAriaChange(["ariaHidden"]),
113
117
  customElement("odx-accordion-panel", [styles$1a])
@@ -117,9 +121,6 @@ const styles$19 = ":host{display:block}";
117
121
 
118
122
  var __defProp$1k = Object.defineProperty;
119
123
  var __getOwnPropDesc$1k = Object.getOwnPropertyDescriptor;
120
- var __typeError$v = (msg) => {
121
- throw TypeError(msg);
122
- };
123
124
  var __decorateClass$1k = (decorators, target, key, kind) => {
124
125
  var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$1k(target, key) : target;
125
126
  for (var i = decorators.length - 1, decorator; i >= 0; i--)
@@ -128,65 +129,24 @@ var __decorateClass$1k = (decorators, target, key, kind) => {
128
129
  if (kind && result) __defProp$1k(target, key, result);
129
130
  return result;
130
131
  };
131
- var __accessCheck$v = (obj, member, msg) => member.has(obj) || __typeError$v("Cannot " + msg);
132
- var __privateGet$q = (obj, member, getter) => (__accessCheck$v(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
133
- var __privateAdd$v = (obj, member, value) => member.has(obj) ? __typeError$v("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
134
- var _handleClick$7, _handleExpand, _handleCollapse, _handleKeyDownEvent;
135
132
  let OdxAccordion = class extends CustomElement {
136
133
  constructor() {
137
134
  super();
138
135
  this.multiple = false;
139
- __privateAdd$v(this, _handleClick$7, ({ target }) => {
140
- if (!this.controls.includes(target)) return;
141
- target.toggle(void 0, true);
142
- });
143
- __privateAdd$v(this, _handleExpand, ({ target }) => {
144
- if (this.multiple || !this.controls.includes(target)) return;
145
- for (const control of this.controls) {
146
- if (!control.expanded || control === target) continue;
147
- control.toggle(false);
148
- }
149
- });
150
- __privateAdd$v(this, _handleCollapse, ({ target }) => {
151
- if (!this.controls.includes(target)) return;
152
- const expandedNestedControls = target.panel?.querySelectorAll(OdxAccordionHeader.selector) ?? [];
153
- for (const control of Array.from(expandedNestedControls)) {
154
- if (!control.expanded) continue;
155
- control.toggle(false);
156
- }
157
- });
158
- __privateAdd$v(this, _handleKeyDownEvent, (event) => {
159
- if (!this.controls.includes(event.target)) return;
160
- const { actions } = getKeyboardEventInfo(event);
161
- if (!(actions.enter || actions.space)) return;
162
- event.preventDefault();
163
- event.target.toggle(void 0, true);
164
- });
165
- if (!isServer) {
166
- this.addEventListener("click", __privateGet$q(this, _handleClick$7));
167
- this.addEventListener("expand", __privateGet$q(this, _handleExpand));
168
- this.addEventListener("collapse", __privateGet$q(this, _handleCollapse));
169
- this.addEventListener("keydown", __privateGet$q(this, _handleKeyDownEvent));
170
- }
136
+ new ExpandableItemManager(this, { getItems: () => this.items });
171
137
  }
172
- updated(props) {
173
- super.updated(props);
174
- if (props.has("multiple") && !this.multiple) {
175
- const firstExpandedControl = this.controls.find((control) => control.expanded);
176
- for (const control of this.controls) {
177
- if (!control.expanded || control === firstExpandedControl) continue;
178
- control.toggle(false);
179
- }
138
+ toggleAll(force, emitEvent = false) {
139
+ for (const item of this.items) {
140
+ item.toggle(force, emitEvent);
180
141
  }
181
142
  }
182
143
  };
183
- _handleClick$7 = new WeakMap();
184
- _handleExpand = new WeakMap();
185
- _handleCollapse = new WeakMap();
186
- _handleKeyDownEvent = new WeakMap();
187
144
  __decorateClass$1k([
188
145
  queryAssignedElements({ selector: OdxAccordionHeader.selector, flatten: true })
189
- ], OdxAccordion.prototype, "controls", 2);
146
+ ], OdxAccordion.prototype, "items", 2);
147
+ __decorateClass$1k([
148
+ property({ reflect: true, attribute: "control-position" })
149
+ ], OdxAccordion.prototype, "controlPosition", 2);
190
150
  __decorateClass$1k([
191
151
  property({ type: Boolean })
192
152
  ], OdxAccordion.prototype, "multiple", 2);
@@ -198,7 +158,7 @@ const styles$18 = "@layer base{:host{display:flex;justify-content:flex-end;overf
198
158
 
199
159
  var __defProp$1j = Object.defineProperty;
200
160
  var __getOwnPropDesc$1j = Object.getOwnPropertyDescriptor;
201
- var __typeError$u = (msg) => {
161
+ var __typeError$v = (msg) => {
202
162
  throw TypeError(msg);
203
163
  };
204
164
  var __decorateClass$1j = (decorators, target, key, kind) => {
@@ -209,27 +169,27 @@ var __decorateClass$1j = (decorators, target, key, kind) => {
209
169
  if (kind && result) __defProp$1j(target, key, result);
210
170
  return result;
211
171
  };
212
- var __accessCheck$u = (obj, member, msg) => member.has(obj) || __typeError$u("Cannot " + msg);
213
- var __privateGet$p = (obj, member, getter) => (__accessCheck$u(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
214
- var __privateAdd$u = (obj, member, value) => member.has(obj) ? __typeError$u("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
215
- var __privateMethod$g = (obj, member, method) => (__accessCheck$u(obj, member, "access private method"), method);
216
- var _breakpoints, _position, _currentBreakpoint, _OdxActionGroup_instances, captureSize_fn, _handleSlotChange$7;
172
+ var __accessCheck$v = (obj, member, msg) => member.has(obj) || __typeError$v("Cannot " + msg);
173
+ var __privateGet$q = (obj, member, getter) => (__accessCheck$v(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
174
+ var __privateAdd$v = (obj, member, value) => member.has(obj) ? __typeError$v("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
175
+ var __privateMethod$i = (obj, member, method) => (__accessCheck$v(obj, member, "access private method"), method);
176
+ var _breakpoints, _position, _currentBreakpoint, _OdxActionGroup_instances, captureSize_fn, _handleSlotChange$9;
217
177
  let OdxActionGroup = class extends CanBeDisabled(CustomElement) {
218
178
  constructor() {
219
179
  super(...arguments);
220
- __privateAdd$u(this, _OdxActionGroup_instances);
221
- __privateAdd$u(this, _breakpoints, signal([]));
222
- __privateAdd$u(this, _position, signal(0));
223
- __privateAdd$u(this, _currentBreakpoint, computed(() => {
224
- const position = __privateGet$p(this, _position).value;
225
- const breakpoints = __privateGet$p(this, _breakpoints).value;
180
+ __privateAdd$v(this, _OdxActionGroup_instances);
181
+ __privateAdd$v(this, _breakpoints, signal([]));
182
+ __privateAdd$v(this, _position, signal(0));
183
+ __privateAdd$v(this, _currentBreakpoint, computed(() => {
184
+ const position = __privateGet$q(this, _position).value;
185
+ const breakpoints = __privateGet$q(this, _breakpoints).value;
226
186
  return this.assignedElements.findLast((_, index) => {
227
187
  return breakpoints[index] && position > breakpoints[index];
228
188
  });
229
189
  }));
230
190
  this.connected = false;
231
- __privateAdd$u(this, _handleSlotChange$7, () => {
232
- __privateMethod$g(this, _OdxActionGroup_instances, captureSize_fn).call(this);
191
+ __privateAdd$v(this, _handleSlotChange$9, () => {
192
+ __privateMethod$i(this, _OdxActionGroup_instances, captureSize_fn).call(this);
233
193
  });
234
194
  }
235
195
  connectedCallback() {
@@ -238,25 +198,23 @@ let OdxActionGroup = class extends CanBeDisabled(CustomElement) {
238
198
  this,
239
199
  () => {
240
200
  const baseRect = this.base.getBoundingClientRect();
241
- __privateGet$p(this, _position).value = baseRect.left;
201
+ __privateGet$q(this, _position).value = baseRect.left;
242
202
  },
243
203
  { fpsLimit: 5 }
244
204
  );
245
205
  effect(() => {
246
- __privateGet$p(this, _currentBreakpoint).value;
206
+ __privateGet$q(this, _currentBreakpoint).value;
247
207
  });
248
208
  }
249
209
  render() {
250
210
  return html`
251
211
  <div class="base">
252
- <odx-button-group ?connected=${this.connected} ?disabled=${this.disabled} size=${optionalAttr(this.size)} variant=${optionalAttr(this.variant)} class="container">
253
- <slot @slotchange=${__privateGet$p(this, _handleSlotChange$7)}></slot>
212
+ <odx-stack class="container" horizontal>
213
+ <slot @slotchange=${__privateGet$q(this, _handleSlotChange$9)}></slot>
254
214
  <odx-icon-button id="action-menu" icon="core::chevron-down"></odx-icon-button>
255
- </odx-button-group>
215
+ </odx-stack>
256
216
  <odx-menu anchor="action-menu" placement="bottom-end">
257
- <odx-button-group variant="ghost">
258
- <slot name="_fallback"></slot>
259
- </odx-button-group>
217
+ <slot name="_fallback"></slot>
260
218
  </odx-menu>
261
219
  </div>
262
220
  `;
@@ -264,7 +222,7 @@ let OdxActionGroup = class extends CanBeDisabled(CustomElement) {
264
222
  updated(props) {
265
223
  super.updated?.(props);
266
224
  if (props.has("connected") || props.has("size")) {
267
- __privateMethod$g(this, _OdxActionGroup_instances, captureSize_fn).call(this);
225
+ __privateMethod$i(this, _OdxActionGroup_instances, captureSize_fn).call(this);
268
226
  }
269
227
  }
270
228
  };
@@ -278,12 +236,12 @@ captureSize_fn = async function() {
278
236
  element.slot = "";
279
237
  }
280
238
  await 0;
281
- __privateGet$p(this, _breakpoints).value = this.assignedElements.map((element) => {
239
+ __privateGet$q(this, _breakpoints).value = this.assignedElements.map((element) => {
282
240
  return element.getBoundingClientRect().left;
283
241
  });
284
242
  this.container.classList.remove("measuring");
285
243
  };
286
- _handleSlotChange$7 = new WeakMap();
244
+ _handleSlotChange$9 = new WeakMap();
287
245
  __decorateClass$1j([
288
246
  queryAssignedElements({ flatten: true })
289
247
  ], OdxActionGroup.prototype, "assignedElements", 2);
@@ -335,21 +293,20 @@ class BaseLink extends CanBeDisabled(CustomElement) {
335
293
  delegatesFocus: true
336
294
  };
337
295
  }
338
- render(role) {
296
+ render() {
339
297
  const { ariaLabel, ariaHasPopup, ariaExpanded, ariaCurrent, ariaHidden } = this;
340
298
  return html`<a
341
- class="base"
342
- part="anchor"
299
+ part="base"
343
300
  aria-label="${optionalAttr(ariaLabel)}"
344
301
  aria-haspopup="${optionalAttr(ariaHasPopup)}"
345
302
  aria-expanded="${optionalAttr(ariaExpanded)}"
346
303
  aria-current="${optionalAttr(ariaCurrent)}"
347
304
  aria-hidden="${optionalAttr(ariaHidden)}"
348
305
  href=${optionalAttr(this.href)}
349
- target=${optionalAttr(this.target)}
350
- download=${ifDefined(this.download)}
351
- rel=${optionalAttr(this.rel)}
352
- role=${optionalAttr(role)}
306
+ target=${optionalAttr(this.href && this.target)}
307
+ download=${optionalAttr(this.href && this.download)}
308
+ rel=${optionalAttr(this.href && this.rel)}
309
+ role="button"
353
310
  >
354
311
  ${this.renderContent()}
355
312
  </a>`;
@@ -374,7 +331,7 @@ __decorateClass$1i([
374
331
  property()
375
332
  ], BaseLink.prototype, "download", 2);
376
333
 
377
- const styles$17 = ":host{--_color-foreground: var(--odx-palette-blue-50);--_outline-offset: 0;display:inline;text-decoration:underline}:host(:focus-visible){outline:none}.base{padding-inline:calc(1 / 24 * 1rem);transition:var(--odx-transition-reduced);color:var(--_color-foreground);text-decoration:inherit;outline:var(--odx-focus-ring-outline);outline-offset:var(--_outline-offset);border-radius:var(--odx-border-radius-controls);&:focus-visible{outline-color:var(--odx-focus-ring-color)}}:host(:hover){--_color-foreground: var(--odx-palette-blue-80)}:host([emphasized]){--_color-foreground: var(--odx-color-foreground-base);font-weight:var(--odx-typography-font-weight-medium)}:host([aria-disabled=\"true\"]),:host([subtle]:not(:hover)){text-decoration:none}:host([aria-disabled=\"true\"]){--_color-foreground: var(--odx-palette-coolgray-40);.anchor{cursor:default}}";
334
+ const styles$17 = ":host{--_color-foreground: var(--odx-palette-blue-50);--_outline-offset: 0;display:inline;text-decoration:underline}:host(:focus-visible){outline:none}[part~=base]{padding-inline:calc(1 / 24 * 1rem);transition:var(--odx-transition-reduced);color:var(--_color-foreground);text-decoration:inherit;outline:var(--odx-focus-ring-outline);outline-offset:var(--_outline-offset);border-radius:var(--odx-border-radius-controls);&:focus-visible{outline-color:var(--odx-focus-ring-color)}}:host(:hover){--_color-foreground: var(--odx-palette-blue-80)}:host([emphasized]){--_color-foreground: var(--odx-color-foreground-base);font-weight:var(--odx-typography-font-weight-medium)}:host([aria-disabled=\"true\"]),:host([subtle]:not(:hover)){text-decoration:none}:host([aria-disabled=\"true\"]){--_color-foreground: var(--odx-palette-coolgray-40);[part~=base]{cursor:default}}";
378
335
 
379
336
  var __defProp$1h = Object.defineProperty;
380
337
  var __getOwnPropDesc$1h = Object.getOwnPropertyDescriptor;
@@ -455,7 +412,7 @@ class AnchorObserver {
455
412
 
456
413
  var __defProp$1g = Object.defineProperty;
457
414
  var __getOwnPropDesc$1g = Object.getOwnPropertyDescriptor;
458
- var __typeError$t = (msg) => {
415
+ var __typeError$u = (msg) => {
459
416
  throw TypeError(msg);
460
417
  };
461
418
  var __decorateClass$1g = (decorators, target, key, kind) => {
@@ -466,32 +423,32 @@ var __decorateClass$1g = (decorators, target, key, kind) => {
466
423
  if (kind && result) __defProp$1g(target, key, result);
467
424
  return result;
468
425
  };
469
- var __accessCheck$t = (obj, member, msg) => member.has(obj) || __typeError$t("Cannot " + msg);
470
- var __privateGet$o = (obj, member, getter) => (__accessCheck$t(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
471
- var __privateAdd$t = (obj, member, value) => member.has(obj) ? __typeError$t("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
472
- var __privateSet$5 = (obj, member, value, setter) => (__accessCheck$t(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
473
- var __privateMethod$f = (obj, member, method) => (__accessCheck$t(obj, member, "access private method"), method);
474
- var _anchorObserver, _OdxAnchorNavigation_instances, handleContainerChange_fn, _handleClick$6;
426
+ var __accessCheck$u = (obj, member, msg) => member.has(obj) || __typeError$u("Cannot " + msg);
427
+ var __privateGet$p = (obj, member, getter) => (__accessCheck$u(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
428
+ var __privateAdd$u = (obj, member, value) => member.has(obj) ? __typeError$u("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
429
+ var __privateSet$5 = (obj, member, value, setter) => (__accessCheck$u(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
430
+ var __privateMethod$h = (obj, member, method) => (__accessCheck$u(obj, member, "access private method"), method);
431
+ var _anchorObserver, _OdxAnchorNavigation_instances, handleContainerChange_fn, _handleClick$7;
475
432
  let OdxAnchorNavigation = class extends SignalWatcher(CustomElement) {
476
433
  constructor() {
477
434
  super();
478
- __privateAdd$t(this, _OdxAnchorNavigation_instances);
479
- __privateAdd$t(this, _anchorObserver);
435
+ __privateAdd$u(this, _OdxAnchorNavigation_instances);
436
+ __privateAdd$u(this, _anchorObserver);
480
437
  this.vertical = false;
481
- __privateAdd$t(this, _handleClick$6, (event) => {
438
+ __privateAdd$u(this, _handleClick$7, (event) => {
482
439
  const target = getElementFromEvent(event, (node) => node instanceof OdxLink);
483
440
  if (!target) return;
484
441
  event.preventDefault();
485
442
  document.querySelector(target.href)?.scrollIntoView();
486
443
  });
487
- this.addEventListener("click", __privateGet$o(this, _handleClick$6));
444
+ this.addEventListener("click", __privateGet$p(this, _handleClick$7));
488
445
  }
489
446
  connectedCallback() {
490
447
  super.connectedCallback();
491
- __privateMethod$f(this, _OdxAnchorNavigation_instances, handleContainerChange_fn).call(this);
448
+ __privateMethod$h(this, _OdxAnchorNavigation_instances, handleContainerChange_fn).call(this);
492
449
  }
493
450
  disconnectedCallback() {
494
- __privateGet$o(this, _anchorObserver)?.disconnect();
451
+ __privateGet$p(this, _anchorObserver)?.disconnect();
495
452
  super.disconnectedCallback();
496
453
  }
497
454
  renderAnchorLink(anchor, isActive = false) {
@@ -506,8 +463,8 @@ let OdxAnchorNavigation = class extends SignalWatcher(CustomElement) {
506
463
  );
507
464
  }
508
465
  render() {
509
- const anchors = __privateGet$o(this, _anchorObserver)?.anchors.value ?? [];
510
- const visibleAnchors = __privateGet$o(this, _anchorObserver)?.visibleAnchors.value;
466
+ const anchors = __privateGet$p(this, _anchorObserver)?.anchors.value ?? [];
467
+ const visibleAnchors = __privateGet$p(this, _anchorObserver)?.visibleAnchors.value;
511
468
  return repeat(
512
469
  anchors,
513
470
  (anchor) => anchor.id,
@@ -516,7 +473,7 @@ let OdxAnchorNavigation = class extends SignalWatcher(CustomElement) {
516
473
  }
517
474
  updated(props) {
518
475
  if (props.has("container")) {
519
- __privateMethod$f(this, _OdxAnchorNavigation_instances, handleContainerChange_fn).call(this);
476
+ __privateMethod$h(this, _OdxAnchorNavigation_instances, handleContainerChange_fn).call(this);
520
477
  }
521
478
  }
522
479
  };
@@ -524,12 +481,12 @@ _anchorObserver = new WeakMap();
524
481
  _OdxAnchorNavigation_instances = new WeakSet();
525
482
  handleContainerChange_fn = function() {
526
483
  const root = this.container ? document.querySelector(this.container) : null;
527
- if (root === __privateGet$o(this, _anchorObserver)?.root) return;
528
- __privateGet$o(this, _anchorObserver)?.disconnect();
484
+ if (root === __privateGet$p(this, _anchorObserver)?.root) return;
485
+ __privateGet$p(this, _anchorObserver)?.disconnect();
529
486
  __privateSet$5(this, _anchorObserver, new AnchorObserver(root));
530
- __privateGet$o(this, _anchorObserver)?.observe();
487
+ __privateGet$p(this, _anchorObserver)?.observe();
531
488
  };
532
- _handleClick$6 = new WeakMap();
489
+ _handleClick$7 = new WeakMap();
533
490
  __decorateClass$1g([
534
491
  property()
535
492
  ], OdxAnchorNavigation.prototype, "container", 2);
@@ -756,7 +713,7 @@ const styles$10 = ":host{--_gap: var(--odx-size-37);display:flex;column-gap:var(
756
713
 
757
714
  var __defProp$1a = Object.defineProperty;
758
715
  var __getOwnPropDesc$1a = Object.getOwnPropertyDescriptor;
759
- var __typeError$s = (msg) => {
716
+ var __typeError$t = (msg) => {
760
717
  throw TypeError(msg);
761
718
  };
762
719
  var __decorateClass$1a = (decorators, target, key, kind) => {
@@ -767,14 +724,14 @@ var __decorateClass$1a = (decorators, target, key, kind) => {
767
724
  if (kind && result) __defProp$1a(target, key, result);
768
725
  return result;
769
726
  };
770
- var __accessCheck$s = (obj, member, msg) => member.has(obj) || __typeError$s("Cannot " + msg);
771
- var __privateAdd$s = (obj, member, value) => member.has(obj) ? __typeError$s("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
772
- var __privateMethod$e = (obj, member, method) => (__accessCheck$s(obj, member, "access private method"), method);
727
+ var __accessCheck$t = (obj, member, msg) => member.has(obj) || __typeError$t("Cannot " + msg);
728
+ var __privateAdd$t = (obj, member, value) => member.has(obj) ? __typeError$t("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
729
+ var __privateMethod$g = (obj, member, method) => (__accessCheck$t(obj, member, "access private method"), method);
773
730
  var _OdxBreadcrumbs_instances, isItemVisible_fn, renderItems_fn, updateContext_fn;
774
731
  let OdxBreadcrumbs = class extends CustomElement {
775
732
  constructor() {
776
733
  super(...arguments);
777
- __privateAdd$s(this, _OdxBreadcrumbs_instances);
734
+ __privateAdd$t(this, _OdxBreadcrumbs_instances);
778
735
  this.max = 4;
779
736
  }
780
737
  firstUpdated(props) {
@@ -784,14 +741,14 @@ let OdxBreadcrumbs = class extends CustomElement {
784
741
  }
785
742
  render() {
786
743
  if (Array.isArray(this.items)) {
787
- return __privateMethod$e(this, _OdxBreadcrumbs_instances, renderItems_fn).call(this, this.items);
744
+ return __privateMethod$g(this, _OdxBreadcrumbs_instances, renderItems_fn).call(this, this.items);
788
745
  }
789
- return html`<slot @slotchange=${__privateMethod$e(this, _OdxBreadcrumbs_instances, updateContext_fn)}></slot>`;
746
+ return html`<slot @slotchange=${__privateMethod$g(this, _OdxBreadcrumbs_instances, updateContext_fn)}></slot>`;
790
747
  }
791
748
  updated(props) {
792
749
  super.updated(props);
793
750
  if (props.has("max")) {
794
- __privateMethod$e(this, _OdxBreadcrumbs_instances, updateContext_fn).call(this);
751
+ __privateMethod$g(this, _OdxBreadcrumbs_instances, updateContext_fn).call(this);
795
752
  }
796
753
  }
797
754
  };
@@ -802,7 +759,7 @@ isItemVisible_fn = function(_, index, items) {
802
759
  renderItems_fn = function(items) {
803
760
  return html`
804
761
  ${repeat(
805
- items.filter(__privateMethod$e(this, _OdxBreadcrumbs_instances, isItemVisible_fn).bind(this)),
762
+ items.filter(__privateMethod$g(this, _OdxBreadcrumbs_instances, isItemVisible_fn).bind(this)),
806
763
  (item) => item.href,
807
764
  ({ label, href }) => html`
808
765
  <odx-breadcrumbs-item><odx-link href=${href}>${label}</odx-link></odx-breadcrumbs-item>
@@ -812,7 +769,7 @@ renderItems_fn = function(items) {
812
769
  };
813
770
  updateContext_fn = function() {
814
771
  for (const [index, item] of this.itemElements.entries()) {
815
- item.ariaHidden = toAriaBooleanAttribute(!__privateMethod$e(this, _OdxBreadcrumbs_instances, isItemVisible_fn).call(this, item, index, this.itemElements));
772
+ item.ariaHidden = toAriaBooleanAttribute(!__privateMethod$g(this, _OdxBreadcrumbs_instances, isItemVisible_fn).call(this, item, index, this.itemElements));
816
773
  }
817
774
  for (const [, item] of Array.from(this.renderedItemElements).entries()) {
818
775
  item.requestUpdate();
@@ -834,7 +791,7 @@ OdxBreadcrumbs = __decorateClass$1a([
834
791
  customElement("odx-breadcrumbs", [styles$10])
835
792
  ], OdxBreadcrumbs);
836
793
 
837
- const styles$$ = ":host{--_gap: var(--odx-size-75);--_direction: row;display:inline-flex;align-items:center;flex-direction:var(--_direction);gap:var(--_gap)}::slotted(:is(odx-button,odx-icon-button,odx-toggle-button)){margin:0}:host([block]){display:flex;::slotted(:is(odx-button,odx-icon-button,odx-toggle-button)){width:100%}}:host([connected]){--_gap: var(--odx-size-px);::slotted(:is(odx-button,odx-icon-button,odx-toggle-button):not(:first-child):not(:last-child)){border-radius:0}::slotted(:is(odx-button,odx-icon-button,odx-toggle-button):is(:hover,:focus-within)){z-index:1}}:host([vertical]){--_direction: column;::slotted(:is(odx-button,odx-icon-button,odx-toggle-button)){margin-block:0}}:host([connected]:not([vertical])){::slotted(:is(odx-button,odx-icon-button,odx-toggle-button):first-child:not(:last-child)){border-start-end-radius:0;border-end-end-radius:0}::slotted(:is(odx-button,odx-icon-button,odx-toggle-button):last-child:not(:first-child)){border-start-start-radius:0;border-end-start-radius:0}}:host([connected][vertical]){::slotted(:is(odx-button,odx-icon-button,odx-toggle-button):first-child){border-end-start-radius:0;border-end-end-radius:0}::slotted(:is(odx-button,odx-icon-button,odx-toggle-button):last-child){border-start-start-radius:0;border-start-end-radius:0}}";
794
+ const styles$$ = "@layer base{:host{display:inline-flex;align-items:center;gap:var(--odx-size-px)}::slotted(:is(odx-button,odx-icon-button,odx-toggle-button):not(:first-child):not(:last-child)){border-radius:0}::slotted(:is(odx-button,odx-icon-button,odx-toggle-button):is(:hover,:focus-within)){z-index:1}}@layer variant{:host([block]){display:flex;::slotted(:is(odx-button,odx-icon-button,odx-toggle-button)){width:100%}}:host(:not([vertical])){::slotted(:is(odx-button,odx-icon-button,odx-toggle-button):first-child:not(:last-child)){border-start-end-radius:0;border-end-end-radius:0}::slotted(*){margin-inline:0}::slotted(:is(odx-button,odx-icon-button,odx-toggle-button):last-child:not(:first-child)){border-start-start-radius:0;border-end-start-radius:0}}:host([vertical]){flex-direction:column;::slotted(*){margin-block:0}::slotted(:is(odx-button,odx-icon-button,odx-toggle-button):first-child){border-end-start-radius:0;border-end-end-radius:0}::slotted(:is(odx-button,odx-icon-button,odx-toggle-button):last-child){border-start-start-radius:0;border-start-end-radius:0}}}";
838
795
 
839
796
  var __defProp$19 = Object.defineProperty;
840
797
  var __getOwnPropDesc$19 = Object.getOwnPropertyDescriptor;
@@ -846,51 +803,32 @@ var __decorateClass$19 = (decorators, target, key, kind) => {
846
803
  if (kind && result) __defProp$19(target, key, result);
847
804
  return result;
848
805
  };
849
- const buttonSelector = ":is(odx-button, odx-icon-button)";
850
806
  let OdxButtonGroup = class extends CanBeDisabled(CustomElement) {
851
807
  constructor() {
852
- super();
808
+ super(...arguments);
853
809
  this.block = false;
854
- this.connected = false;
855
810
  this.vertical = false;
856
- new DisabledContextProvider(this);
857
- }
858
- updated(props) {
859
- super.updated?.(props);
860
- if (props.has("size") || props.has("variant")) {
861
- for (const button of this.buttons) {
862
- button.size = this.size;
863
- button.variant = this.variant;
864
- }
865
- }
866
811
  }
867
812
  };
868
- __decorateClass$19([
869
- queryAssignedElements({ selector: buttonSelector, flatten: true })
870
- ], OdxButtonGroup.prototype, "buttons", 2);
871
813
  __decorateClass$19([
872
814
  property({ type: Boolean, reflect: true })
873
815
  ], OdxButtonGroup.prototype, "block", 2);
874
- __decorateClass$19([
875
- property({ type: Boolean, reflect: true })
876
- ], OdxButtonGroup.prototype, "connected", 2);
877
816
  __decorateClass$19([
878
817
  property({ type: Boolean, reflect: true })
879
818
  ], OdxButtonGroup.prototype, "vertical", 2);
880
- __decorateClass$19([
881
- property({ reflect: true })
882
- ], OdxButtonGroup.prototype, "size", 2);
883
- __decorateClass$19([
884
- property({ reflect: true })
885
- ], OdxButtonGroup.prototype, "variant", 2);
886
819
  OdxButtonGroup = __decorateClass$19([
887
820
  customElement("odx-button-group", [styles$$])
888
821
  ], OdxButtonGroup);
889
822
 
890
- const styles$_ = "@layer base{:host{--_color-background: var(--odx-color-transparent);--_color-background-hover: var(--odx-color-transparent-hover);--_color-background-pressed: var(--odx-color-transparent-pressed);--_color-foreground: var(--odx-color-foreground-base);--_color-foreground-hover: var(--odx-color-foreground-base);--_color-foreground-pressed: var(--odx-color-foreground-base);--_color-stroke: transparent;--_color-stroke-hover: transparent;--_color-stroke-pressed: transparent;--_block-size: var(--odx-size-225);--_font-size: var(--odx-typography-font-size-3);--_icon-size: var(--odx-typography-font-size-6);--_padding-block: var(--odx-size-37);--_padding-inline: var(--odx-size-75);--_margin-block: 0;--_margin-icon: calc(-.5 * (var(--_icon-size) - var(--_padding-inline)) - var(--odx-size-px));block-size:var(--_block-size);cursor:pointer;position:relative;user-select:none;vertical-align:top;border-radius:var(--odx-border-radius-controls);margin-block:var(--_margin-block);max-inline-size:100%;-webkit-tap-highlight-color:transparent}:host(:focus-visible){outline:none}:host,.base{display:inline-flex;place-items:center;place-content:center}.base{overflow:clip;border-radius:inherit;cursor:inherit;-webkit-appearance:none;vertical-align:middle;text-decoration:none;font:inherit;block-size:100%;inline-size:100%;padding:0;gap:inherit;text-transform:inherit;padding-block:var(--_padding-block);padding-inline:var(--_padding-inline);border:var(--odx-border-width-thin) solid var(--_color-stroke);transition:var(--odx-transition-reduced);transition-property:background-color,border-color,color,opacity,outline-color,transform,block-size;background-color:var(--_color-background, transparent);color:var(--_color-foreground);font-size:var(--_font-size);gap:var(--_padding-inline);font-weight:var(--odx-typography-font-weight-normal);outline:var(--odx-focus-ring-outline);outline-offset:var(--odx-focus-ring-offset);line-height:min(calc(var(--_block-size) / 2 - var(--odx-size-25)),1em);&:focus-visible{outline-color:var(--odx-focus-ring-color)}}.base::-moz-focus-inner{padding:0;border:0}.spinner{--_size: var(--_icon-size);color:var(--_color-foreground);margin-inline:var(--_margin-icon);&.overlay{position:absolute;margin:auto;inset:0}}.content{margin-block:calc(-1 * var(--_padding-block));margin-inline:calc(-1 * var(--_padding-inline));padding-block:var(--_padding-block);padding-inline:var(--_padding-inline)}.overlay~.base{color:var(--odx-color-transparent)}odx-icon,::slotted(odx-icon){--size: var(--_icon-size);margin-inline:var(--_margin-icon)}::slotted([slot=\"badge\"]){--_badge-margin: var(--odx-size-12);position:absolute;inset-block-start:var(--_badge-margin);inset-inline-end:var(--_badge-margin);pointer-events:none;translate:var(--odx-size-37) -50%}}@layer state{:host(:not([aria-busy=\"true\"])) .base:hover{--_color-background: var(--_color-background-hover);--_color-stroke: var(--_color-stroke-hover)}:host(:not([aria-busy=\"true\"])) .base:active{--_color-background: var(--_color-background-pressed);--_color-stroke: var(--_color-stroke-pressed)}:host([aria-busy=\"true\"]){cursor:default}:host([aria-disabled=\"true\"]){--_color-background: var(--odx-color-disabled-fill);--_color-background-hover: var(--odx-color-disabled-fill);--_color-background-pressed: var(--odx-color-disabled-fill);--_color-foreground: var(--odx-color-disabled-foreground);--_color-stroke: var(--odx-color-disabled-stroke);cursor:not-allowed}:host(:is([align-badge=\"end\"],[align-badge=\"center\"])) ::slotted([slot=\"badge\"]){inset-block-start:unset;inset-block-end:0}:host([align-badge=\"end\"]) ::slotted([slot=\"badge\"]){translate:var(--odx-size-37) 50%}:host([align-badge=\"center\"]) ::slotted([slot=\"badge\"]){inset-inline:auto;translate:0 calc(50% + var(--_badge-margin))}}";
823
+ const BaseButtonStyles = "@layer base{:host{--_color-background: var(--odx-color-transparent);--_color-background-hover: var(--odx-color-transparent-hover);--_color-background-pressed: var(--odx-color-transparent-pressed);--_color-foreground: var(--odx-color-foreground-base);--_color-foreground-hover: var(--odx-color-foreground-base);--_color-foreground-pressed: var(--odx-color-foreground-base);--_color-stroke: transparent;--_color-stroke-hover: transparent;--_color-stroke-pressed: transparent;--_block-size: var(--odx-size-225);--_min-inline-size: var(--odx-size-500);--_font-size: var(--odx-typography-font-size-3);--_icon-size: var(--odx-typography-font-size-6);--_padding-block: var(--odx-size-37);--_padding-inline: var(--odx-size-75);--_margin-block: 0;--_margin-icon: calc(-.5 * (var(--_icon-size) - var(--_padding-inline)) - var(--odx-size-px));block-size:var(--_block-size);cursor:pointer;position:relative;user-select:none;vertical-align:top;border-radius:var(--odx-border-radius-controls);margin-block:var(--_margin-block);min-inline-size:max(var(--_min-inline-size),min-content);max-inline-size:100%;-webkit-tap-highlight-color:transparent}:host(:focus-visible){outline:none}:host,[part=base]{display:inline-flex;place-items:center;place-content:center}[part=base]{overflow:clip;border-radius:inherit;cursor:inherit;-webkit-appearance:none;vertical-align:middle;text-decoration:none;font:inherit;block-size:100%;inline-size:100%;padding:0;gap:inherit;text-transform:inherit;padding-block:var(--_padding-block);padding-inline:var(--_padding-inline);border:var(--odx-border-width-thin) solid var(--_color-stroke);transition:var(--odx-transition-reduced);transition-property:background-color,border-color,color,opacity,outline-color,transform,block-size;background-color:var(--_color-background, transparent);color:var(--_color-foreground);font-size:var(--_font-size);gap:var(--_padding-inline);font-weight:var(--odx-typography-font-weight-normal);outline:var(--odx-focus-ring-outline);outline-offset:var(--odx-focus-ring-offset);line-height:min(calc(var(--_block-size) / 2 - var(--odx-size-25)),1em);&:focus-visible{outline-color:var(--odx-focus-ring-color)}}[part=base]::-moz-focus-inner{padding:0;border:0}[part=loader]{--_size: calc(var(--_icon-size) - var(--odx-size-25));color:var(--_color-foreground);margin-inline:calc(var(--_margin-icon) + var(--odx-size-25))}[part=label]{margin-block:calc(-1 * var(--_padding-block));margin-inline:calc(-1 * var(--_padding-inline));padding-block:var(--_padding-block);padding-inline:var(--_padding-inline)}:is(odx-icon),::slotted(:is(odx-avatar,odx-icon)){--size: var(--_icon-size);margin-inline:var(--_margin-icon)}::slotted([slot=\"badge\"]){--_badge-margin: var(--odx-size-12);position:absolute;inset-block-start:var(--_badge-margin);inset-inline-end:var(--_badge-margin);pointer-events:none;translate:var(--odx-size-37) -50%}::slotted(odx-avatar){--_color-background: var(--odx-color-transparent-pressed);--_size: var(--odx-size-200);--_font-size: var(--odx-typography-font-size-2);--_spacing: calc(var(--odx-size-75) - var(--odx-size-px));margin:0 calc(-1 * var(--_spacing))}}@layer state{:host(:not([aria-busy=\"true\"])) [part=base]:hover{--_color-background: var(--_color-background-hover);--_color-stroke: var(--_color-stroke-hover)}:host(:not([aria-busy=\"true\"])) [part=base]:active{--_color-background: var(--_color-background-pressed);--_color-stroke: var(--_color-stroke-pressed)}:host([aria-busy=\"true\"]){cursor:default}:host([aria-disabled=\"true\"]){--_color-background: var(--odx-color-disabled-fill);--_color-background-hover: var(--odx-color-disabled-fill);--_color-background-pressed: var(--odx-color-disabled-fill);--_color-foreground: var(--odx-color-disabled-foreground);--_color-stroke: var(--odx-color-disabled-stroke);cursor:not-allowed}:host(:is([align-badge=\"end\"],[align-badge=\"center\"])) ::slotted([slot=\"badge\"]){inset-block-start:unset;inset-block-end:0}:host([align-badge=\"end\"]) ::slotted([slot=\"badge\"]){translate:var(--odx-size-37) 50%}:host([align-badge=\"center\"]) ::slotted([slot=\"badge\"]){inset-inline:auto;translate:0 calc(50% + var(--_badge-margin))}}";
824
+
825
+ const styles$_ = "@layer base{[part~=base]{font-weight:var(--odx-typography-font-weight-medium)}}@layer variant{:host([block]){display:flex}:host([size=\"xs\"]){--odx-focus-ring-offset: 0;--_block-size: var(--odx-size-150);--_padding-inline: var(--odx-size-50);--_margin-block: 0;--_font-size: var(--odx-typography-font-size-1);--_icon-size: var(--odx-typography-font-size-4);::slotted(odx-avatar){--_size: var(--odx-size-125);--_font-size: var(--odx-typography-font-size-1);--_spacing: calc(var(--odx-size-37) + var(--odx-size-px))}}:host([size=\"sm\"]){--odx-focus-ring-offset: 0;--_block-size: var(--odx-size-200);--_margin-icon: calc(-1 * var(--odx-size-25) + var(--odx-size-px));--_padding-inline: var(--odx-size-37);--_font-size: var(--odx-typography-font-size-2);--_icon-size: var(--odx-size-150)}:host([size=\"lg\"]){--_block-size: var(--odx-size-300);--_padding-inline: var(--odx-size-100);--_font-size: var(--odx-typography-font-size-4);--_icon-size: var(--odx-typography-font-size-6);--_margin-block: 0;::slotted(odx-avatar){--_size: var(--odx-size-250);--_font-size: var(--odx-typography-font-size-3);--_spacing: calc(var(--odx-size-75) + var(--odx-size-px))}}:host([variant=\"primary\"]){--_color-background: var(--odx-color-primary-rest);--_color-background-hover: var(--odx-color-primary-hover);--_color-background-pressed: var(--odx-color-primary-pressed);--_color-foreground: var(--odx-color-foreground-inverse)}:host([variant=\"highlight\"]){--_color-background: var(--odx-color-highlight-rest);--_color-background-hover: var(--odx-color-highlight-hover);--_color-background-pressed: var(--odx-color-highlight-pressed);--_color-foreground: var(--odx-color-foreground-inverse)}:host,:host([variant=\"secondary\"]){--_color-background: var(--odx-experience-color-secondary-rest);--_color-background-hover: var(--odx-experience-color-secondary-hover);--_color-background-pressed: var(--odx-experience-color-secondary-pressed);--_color-foreground: var(--odx-experience-color-secondary-foreground)}:host([variant=\"ghost\"]){--_color-background: var(--odx-color-transparent);--_color-foreground: var(--odx-color-foreground-base);--_color-background-hover: var(--odx-color-transparent-hover);--_color-background-pressed: var(--odx-color-transparent-pressed)}:host([variant=\"danger\"]){--_color-background: var(--odx-color-danger-rest);--_color-background-hover: var(--odx-color-danger-hover);--_color-background-pressed: var(--odx-color-danger-pressed);--_color-foreground: var(--odx-color-foreground-light)}}";
891
826
 
892
827
  var __defProp$18 = Object.defineProperty;
893
828
  var __getOwnPropDesc$18 = Object.getOwnPropertyDescriptor;
829
+ var __typeError$s = (msg) => {
830
+ throw TypeError(msg);
831
+ };
894
832
  var __decorateClass$18 = (decorators, target, key, kind) => {
895
833
  var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$18(target, key) : target;
896
834
  for (var i = decorators.length - 1, decorator; i >= 0; i--)
@@ -899,97 +837,20 @@ var __decorateClass$18 = (decorators, target, key, kind) => {
899
837
  if (kind && result) __defProp$18(target, key, result);
900
838
  return result;
901
839
  };
902
- class BaseButton extends WithLoadingState(BaseLink) {
903
- constructor() {
904
- super(...arguments);
905
- this.lineClamp = 2;
906
- }
907
- static {
908
- this.styles = unsafeCSS(styles$_);
909
- }
910
- render() {
911
- return html`${when(
912
- this.href,
913
- () => super.render(),
914
- () => this.renderButton()
915
- )}`;
916
- }
917
- renderContent(withSpinner = true) {
918
- return html`
919
- ${this.renderSlot("prefix", !withSpinner)}
920
- <odx-line-clamp class="content" .max=${this.lineClamp}>
921
- <slot></slot>
922
- </odx-line-clamp>
923
- ${this.renderSlot("suffix", !withSpinner)}
924
- `;
925
- }
926
- renderButton() {
927
- const { ariaLabel, ariaHasPopup, ariaExpanded } = this;
928
- const type = "type" in this ? this.type : "button";
929
- return html`
930
- ${this.renderOverlay()}
931
- <button
932
- class="base"
933
- part="anchor button"
934
- aria-label="${optionalAttr(ariaLabel)}"
935
- aria-haspopup="${optionalAttr(ariaHasPopup)}"
936
- aria-expanded="${optionalAttr(ariaExpanded)}"
937
- type=${type}
938
- ?disabled=${this.disabled || this.loading}
939
- >
940
- ${this.renderContent()}
941
- </button>
942
- `;
943
- }
944
- renderSlot(name, force) {
945
- if (!force && this.loading && getAssignedElements(this, name).length > 0) {
946
- return this.renderSpinner();
947
- }
948
- return html`<slot name=${name}></slot>`;
949
- }
950
- renderOverlay() {
951
- if (this.loading && getAssignedElements(this, "prefix", "suffix").length === 0) {
952
- return this.renderSpinner(true);
953
- }
954
- return nothing;
955
- }
956
- renderSpinner(overlay = false) {
957
- return html`<odx-loading-spinner class=${classMap({ spinner: true, overlay })}></odx-loading-spinner>`;
958
- }
959
- }
960
- __decorateClass$18([
961
- property({ type: Number, attribute: "line-clamp" })
962
- ], BaseButton.prototype, "lineClamp", 2);
963
-
964
- const styles$Z = "@layer base{.base{font-weight:var(--odx-typography-font-weight-medium)}}@layer variant{:host([block]){display:flex}:host([size=\"sm\"]){--_block-size: var(--odx-size-150);--_padding-inline: var(--odx-size-50);--_font-size: var(--odx-typography-font-size-1);--_icon-size: var(--odx-typography-font-size-4);--_margin-block: 0}:host([size=\"lg\"]){--_block-size: var(--odx-size-300);--_padding-inline: var(--odx-size-100);--_font-size: var(--odx-typography-font-size-4);--_icon-size: var(--odx-typography-font-size-6);--_margin-block: 0}:host([variant=\"primary\"]){--_color-background: var(--odx-color-primary-rest);--_color-background-hover: var(--odx-color-primary-hover);--_color-background-pressed: var(--odx-color-primary-pressed);--_color-foreground: var(--odx-color-foreground-inverse)}:host([variant=\"highlight\"]){--_color-background: var(--odx-color-highlight-rest);--_color-background-hover: var(--odx-color-highlight-hover);--_color-background-pressed: var(--odx-color-highlight-pressed);--_color-foreground: var(--odx-color-foreground-inverse)}:host,:host([variant=\"secondary\"]){--_color-background: var(--odx-experience-color-secondary-rest);--_color-background-hover: var(--odx-experience-color-secondary-hover);--_color-background-pressed: var(--odx-experience-color-secondary-pressed);--_color-foreground: var(--odx-experience-color-secondary-foreground)}:host([variant=\"ghost\"]){--_color-background: var(--odx-color-transparent);--_color-foreground: var(--odx-color-foreground-base);--_color-background-hover: var(--odx-color-transparent-hover);--_color-background-pressed: var(--odx-color-transparent-pressed)}:host([variant=\"danger\"]){--_color-background: var(--odx-color-danger-rest);--_color-background-hover: var(--odx-color-danger-hover);--_color-background-pressed: var(--odx-color-danger-pressed);--_color-foreground: var(--odx-color-foreground-light)}}";
965
-
966
- var __defProp$17 = Object.defineProperty;
967
- var __getOwnPropDesc$17 = Object.getOwnPropertyDescriptor;
968
- var __typeError$r = (msg) => {
969
- throw TypeError(msg);
970
- };
971
- var __decorateClass$17 = (decorators, target, key, kind) => {
972
- var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$17(target, key) : target;
973
- for (var i = decorators.length - 1, decorator; i >= 0; i--)
974
- if (decorator = decorators[i])
975
- result = (kind ? decorator(target, key, result) : decorator(result)) || result;
976
- if (kind && result) __defProp$17(target, key, result);
977
- return result;
978
- };
979
- var __accessCheck$r = (obj, member, msg) => member.has(obj) || __typeError$r("Cannot " + msg);
980
- var __privateGet$n = (obj, member, getter) => (__accessCheck$r(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
981
- var __privateAdd$r = (obj, member, value) => member.has(obj) ? __typeError$r("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
982
- var __privateMethod$d = (obj, member, method) => (__accessCheck$r(obj, member, "access private method"), method);
840
+ var __accessCheck$s = (obj, member, msg) => member.has(obj) || __typeError$s("Cannot " + msg);
841
+ var __privateGet$o = (obj, member, getter) => (__accessCheck$s(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
842
+ var __privateAdd$s = (obj, member, value) => member.has(obj) ? __typeError$s("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
843
+ var __privateMethod$f = (obj, member, method) => (__accessCheck$s(obj, member, "access private method"), method);
983
844
  var _internals, _OdxButton_instances, handleClick_fn;
984
- let OdxButton = class extends WithLoadingState(BaseButton) {
845
+ let OdxButton = class extends InteractiveElement {
985
846
  constructor() {
986
847
  super();
987
- __privateAdd$r(this, _OdxButton_instances);
988
- __privateAdd$r(this, _internals, this.attachInternals());
848
+ __privateAdd$s(this, _OdxButton_instances);
849
+ __privateAdd$s(this, _internals, this.attachInternals());
989
850
  this.block = false;
990
851
  this.type = "button";
991
852
  if (!isServer) {
992
- this.addEventListener("click", __privateMethod$d(this, _OdxButton_instances, handleClick_fn));
853
+ this.addEventListener("click", __privateMethod$f(this, _OdxButton_instances, handleClick_fn));
993
854
  }
994
855
  }
995
856
  render() {
@@ -1003,35 +864,36 @@ _internals = new WeakMap();
1003
864
  _OdxButton_instances = new WeakSet();
1004
865
  handleClick_fn = function(_event) {
1005
866
  if (this.type === "submit") {
1006
- __privateGet$n(this, _internals).form?.requestSubmit();
867
+ __privateGet$o(this, _internals).form?.requestSubmit();
1007
868
  return;
1008
869
  }
1009
870
  if (this.type === "reset") {
1010
- __privateGet$n(this, _internals).form?.reset();
871
+ __privateGet$o(this, _internals).form?.reset();
1011
872
  return;
1012
873
  }
1013
874
  };
1014
875
  OdxButton.formAssociated = true;
1015
- __decorateClass$17([
876
+ __decorateClass$18([
1016
877
  property({ reflect: true, attribute: "align-badge" })
1017
878
  ], OdxButton.prototype, "alignBadge", 2);
1018
- __decorateClass$17([
879
+ __decorateClass$18([
1019
880
  property({ type: Boolean, reflect: true })
1020
881
  ], OdxButton.prototype, "block", 2);
1021
- __decorateClass$17([
882
+ __decorateClass$18([
1022
883
  property()
1023
884
  ], OdxButton.prototype, "type", 2);
1024
- __decorateClass$17([
885
+ __decorateClass$18([
1025
886
  property({ reflect: true })
1026
887
  ], OdxButton.prototype, "size", 2);
1027
- __decorateClass$17([
888
+ __decorateClass$18([
1028
889
  property({ reflect: true })
1029
890
  ], OdxButton.prototype, "variant", 2);
1030
- OdxButton = __decorateClass$17([
1031
- customElement("odx-button", [BaseButton.styles, styles$Z])
891
+ OdxButton = __decorateClass$18([
892
+ customElement("odx-button", [BaseButtonStyles, styles$_])
1032
893
  ], OdxButton);
1033
894
 
1034
895
  const ButtonSize = {
896
+ XS: "xs",
1035
897
  SM: "sm",
1036
898
  MD: "md",
1037
899
  LG: "lg"
@@ -1045,17 +907,26 @@ const ButtonVariant = {
1045
907
  // SUCCESS: 'success',
1046
908
  // CONFIRMATION: 'confirmation',
1047
909
  };
910
+ const ButtonLoaderSlot = {
911
+ PREFIX: "prefix",
912
+ SUFFIX: "suffix"
913
+ };
914
+ const ButtonBadgeAlign = {
915
+ START: "start",
916
+ CENTER: "center",
917
+ END: "end"
918
+ };
1048
919
 
1049
- const styles$Y = ":host{--_card-padding: var(--odx-size-150);display:grid;place-content:flex-start;background-color:var(--odx-color-background-main);grid-template-columns:1fr auto;border-radius:var(--odx-border-radius-md);padding:var(--_card-padding);overflow:clip;max-width:100%;grid-template-areas:\"image image\" \"avatar avatar\" \"title header-actions\" \"content content\" \"footer footer\"}.header,.title{display:flex;place-items:center;overflow:hidden;min-block-size:var(--odx-size-225);margin-block-end:var(--odx-size-50)}.title{grid-area:title}.header{grid-area:header-actions}.avatar{display:flex;place-items:flex-end;grid-area:avatar;margin-block-start:calc(-1 * var(--odx-size-50))}.image{grid-area:image;margin:calc(-1 * var(--_card-padding));margin-block-end:var(--odx-size-150);position:relative}.image:after{content:\"\";position:absolute;inset:0;background-color:var(--odx-color-transparent-hover);opacity:0;pointer-events:none;transition:var(--odx-transition-default);backdrop-filter:blur(var(--odx-elevation-blur))}:host::part(content){grid-area:content}:host::part(footer){grid-area:footer}[part=image-container]+[part=avatar-container]{block-size:0}slot[name=image]::slotted(*){max-inline-size:100%;max-block-size:100%;object-fit:cover;aspect-ratio:16 / 9;user-select:none;pointer-events:none}slot[name=avatar]::slotted(*){margin:0}:host(:hover){cursor:pointer}:host(:hover) .image:after{opacity:1}";
920
+ const styles$Z = ":host{--_card-padding: var(--odx-size-150);display:grid;place-content:flex-start;background-color:var(--odx-color-background-main);grid-template-columns:1fr auto;border-radius:var(--odx-border-radius-md);padding:var(--_card-padding);overflow:clip;max-width:100%;grid-template-areas:\"image image\" \"avatar avatar\" \"title header-actions\" \"content content\" \"footer footer\"}.header,.title{display:flex;place-items:center;overflow:hidden;min-block-size:var(--odx-size-225);margin-block-end:var(--odx-size-50)}.title{grid-area:title}.header{grid-area:header-actions}.avatar{display:flex;place-items:flex-end;grid-area:avatar;margin-block-start:calc(-1 * var(--odx-size-50))}.image{grid-area:image;margin:calc(-1 * var(--_card-padding));margin-block-end:var(--odx-size-150);position:relative}.image:after{content:\"\";position:absolute;inset:0;background-color:var(--odx-color-transparent-hover);opacity:0;pointer-events:none;transition:var(--odx-transition-default);backdrop-filter:blur(var(--odx-elevation-blur))}:host::part(content){grid-area:content}:host::part(footer){grid-area:footer}[part=image-container]+[part=avatar-container]{block-size:0}slot[name=image]::slotted(*){max-inline-size:100%;max-block-size:100%;object-fit:cover;aspect-ratio:16 / 9;user-select:none;pointer-events:none}slot[name=avatar]::slotted(*){margin:0}:host(:hover){cursor:pointer}:host(:hover) .image:after{opacity:1}";
1050
921
 
1051
- var __defProp$16 = Object.defineProperty;
1052
- var __getOwnPropDesc$16 = Object.getOwnPropertyDescriptor;
1053
- var __decorateClass$16 = (decorators, target, key, kind) => {
1054
- var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$16(target, key) : target;
922
+ var __defProp$17 = Object.defineProperty;
923
+ var __getOwnPropDesc$17 = Object.getOwnPropertyDescriptor;
924
+ var __decorateClass$17 = (decorators, target, key, kind) => {
925
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$17(target, key) : target;
1055
926
  for (var i = decorators.length - 1, decorator; i >= 0; i--)
1056
927
  if (decorator = decorators[i])
1057
928
  result = (kind ? decorator(target, key, result) : decorator(result)) || result;
1058
- if (kind && result) __defProp$16(target, key, result);
929
+ if (kind && result) __defProp$17(target, key, result);
1059
930
  return result;
1060
931
  };
1061
932
  let OdxCard = class extends CanBeDisabled(CustomElement) {
@@ -1071,38 +942,38 @@ let OdxCard = class extends CanBeDisabled(CustomElement) {
1071
942
  `;
1072
943
  }
1073
944
  };
1074
- OdxCard = __decorateClass$16([
1075
- customElement("odx-card", [styles$Y])
945
+ OdxCard = __decorateClass$17([
946
+ customElement("odx-card", [styles$Z])
1076
947
  ], OdxCard);
1077
948
 
1078
- const styles$X = "@layer base{:host{display:flex}::slotted(odx-checkbox-group){margin-inline-start:var(--odx-size-75)}}@layer variant{:host(:not([variant=\"inline\"])){flex-direction:column}:host([variant=\"list\"]) ::slotted(:is(odx-checkbox,odx-switch):last-of-type){border-block-end:none}:host([variant=\"list\"]) ::slotted(:is(odx-checkbox,odx-switch)){border-block-end:var(--odx-border-width-thin) solid var(--odx-color-separator);padding:var(--odx-size-75);margin:0;inline-size:auto}}";
949
+ const styles$Y = "@layer base{:host{display:flex}::slotted(odx-checkbox-group){margin-inline-start:var(--odx-size-75)}}@layer variant{:host(:not([variant=\"inline\"])){flex-direction:column}:host([variant=\"list\"]) ::slotted(:is(odx-checkbox,odx-switch):last-of-type){border-block-end:none}:host([variant=\"list\"]) ::slotted(:is(odx-checkbox,odx-switch)){border-block-end:var(--odx-border-width-thin) solid var(--odx-color-separator);padding:var(--odx-size-75);margin:0;inline-size:auto}}";
1079
950
 
1080
- var __defProp$15 = Object.defineProperty;
1081
- var __getOwnPropDesc$15 = Object.getOwnPropertyDescriptor;
1082
- var __typeError$q = (msg) => {
951
+ var __defProp$16 = Object.defineProperty;
952
+ var __getOwnPropDesc$16 = Object.getOwnPropertyDescriptor;
953
+ var __typeError$r = (msg) => {
1083
954
  throw TypeError(msg);
1084
955
  };
1085
- var __decorateClass$15 = (decorators, target, key, kind) => {
1086
- var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$15(target, key) : target;
956
+ var __decorateClass$16 = (decorators, target, key, kind) => {
957
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$16(target, key) : target;
1087
958
  for (var i = decorators.length - 1, decorator; i >= 0; i--)
1088
959
  if (decorator = decorators[i])
1089
960
  result = (kind ? decorator(target, key, result) : decorator(result)) || result;
1090
- if (kind && result) __defProp$15(target, key, result);
961
+ if (kind && result) __defProp$16(target, key, result);
1091
962
  return result;
1092
963
  };
1093
- var __accessCheck$q = (obj, member, msg) => member.has(obj) || __typeError$q("Cannot " + msg);
1094
- var __privateGet$m = (obj, member, getter) => (__accessCheck$q(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
1095
- var __privateAdd$q = (obj, member, value) => member.has(obj) ? __typeError$q("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
1096
- var _handleSlotChange$6, _handleGroupControlChange;
964
+ var __accessCheck$r = (obj, member, msg) => member.has(obj) || __typeError$r("Cannot " + msg);
965
+ var __privateGet$n = (obj, member, getter) => (__accessCheck$r(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
966
+ var __privateAdd$r = (obj, member, value) => member.has(obj) ? __typeError$r("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
967
+ var _handleSlotChange$8, _handleGroupControlChange;
1097
968
  let OdxCheckboxGroup = class extends CheckboxGroupFormControl {
1098
969
  constructor() {
1099
970
  super(...arguments);
1100
- __privateAdd$q(this, _handleSlotChange$6, () => {
971
+ __privateAdd$r(this, _handleSlotChange$8, () => {
1101
972
  for (const control of this.groupControls) {
1102
- control.addEventListener("change", __privateGet$m(this, _handleGroupControlChange));
973
+ control.addEventListener("change", __privateGet$n(this, _handleGroupControlChange));
1103
974
  }
1104
975
  });
1105
- __privateAdd$q(this, _handleGroupControlChange, (event) => {
976
+ __privateAdd$r(this, _handleGroupControlChange, (event) => {
1106
977
  const { target } = event;
1107
978
  if (!this.isControl(target)) return;
1108
979
  event.stopImmediatePropagation();
@@ -1113,16 +984,16 @@ let OdxCheckboxGroup = class extends CheckboxGroupFormControl {
1113
984
  });
1114
985
  }
1115
986
  render() {
1116
- return html`<slot @slotchange=${__privateGet$m(this, _handleSlotChange$6)}></slot>`;
987
+ return html`<slot @slotchange=${__privateGet$n(this, _handleSlotChange$8)}></slot>`;
1117
988
  }
1118
989
  };
1119
- _handleSlotChange$6 = new WeakMap();
990
+ _handleSlotChange$8 = new WeakMap();
1120
991
  _handleGroupControlChange = new WeakMap();
1121
- __decorateClass$15([
992
+ __decorateClass$16([
1122
993
  property({ reflect: true })
1123
994
  ], OdxCheckboxGroup.prototype, "variant", 2);
1124
- OdxCheckboxGroup = __decorateClass$15([
1125
- customElement("odx-checkbox-group", [styles$X])
995
+ OdxCheckboxGroup = __decorateClass$16([
996
+ customElement("odx-checkbox-group", [styles$Y])
1126
997
  ], OdxCheckboxGroup);
1127
998
 
1128
999
  const CheckboxGroupVariant = {
@@ -1130,16 +1001,16 @@ const CheckboxGroupVariant = {
1130
1001
  LIST: "list"
1131
1002
  };
1132
1003
 
1133
- const styles$W = "@layer base{:host{--_indicator-space: var(--odx-size-12);--_indicator-size: calc(var(--odx-size-150) - var(--_indicator-space) * 2);--_indicator-color-background: var(--odx-color-selection-control-fill);--_indicator-color-stroke: var(--odx-color-selection-control-stroke);--_indicator-color-foreground: var(--odx-palette-transparent);--_label-color-foreground: var(--odx-color-text);cursor:pointer;display:inline-flex;margin:var(--odx-size-37) var(--odx-size-75);user-select:none;border-radius:var(--odx-border-radius-controls);padding:var(--_indicator-space)}:host,.indicator,.content{transition:var(--odx-transition-reduced)}.indicator{display:flex;place-content:center;place-items:center;block-size:var(--_indicator-size);inline-size:var(--_indicator-size);flex-shrink:0;border-radius:var(--odx-border-radius-controls);background-color:var(--_indicator-color-background);border:var(--odx-border-width-thin) solid var(--_indicator-color-stroke);border-color:var(--_indicator-color-stroke);color:var(--_indicator-color-foreground);outline:var(--odx-focus-ring-outline);outline-offset:var(--odx-focus-ring-offset);transition-property:background-color,border-color,outline-color}.label{display:inline-block}.content{color:var(--_label-color-foreground);margin-block:calc(-1 * var(--_indicator-space));transition-property:color}:host(:empty) .content{display:none}:host(:not(:empty)) .indicator{margin-inline-end:var(--odx-size-75)}}@layer state{:host(:not(:empty)) .indicator{margin-inline-end:var(--odx-size-75)}:host(:empty) .content{display:none}:host(:hover){--_indicator-color-stroke: var(--odx-color-selection-control-stroke-hover);--_indicator-color-background: var(--odx-color-selection-control-fill-hover)}:host(:focus-visible) .indicator{outline-color:var(--odx-focus-ring-color)}:host(:is([aria-checked=\"true\"],[aria-checked=\"mixed\"])){--_indicator-color-background: var(--odx-color-selection-control-fill-selected);--_indicator-color-foreground: var(--odx-color-foreground-light);--_indicator-color-stroke: var(--odx-color-selection-control-stroke-selected)}:host(:is([aria-checked=\"true\"],[aria-checked=\"mixed\"]):not(:is([aria-disabled],[aria-readonly])):hover){--_indicator-color-background: var(--odx-color-selection-control-fill-selected-hover)}:host([aria-disabled=\"true\"]){--_indicator-color-background: var(--odx-color-disabled-fill);--_indicator-color-foreground: var(--odx-palette-transparent);--_indicator-color-stroke: var(--odx-selection-control-color-border-disabled);--_label-color-foreground: var(--odx-color-disabled-foreground);cursor:not-allowed}:host([aria-disabled=\"true\"]:is([aria-checked=\"true\"],[aria-checked=\"mixed\"])){--_indicator-color-background: var(--odx-color-disabled-fill-selected);--_indicator-color-foreground: var(--odx-color-disabled-foreground-selected);--_indicator-color-stroke: var(--_indicator-color-background)}:host([aria-readonly=\"true\"]){--_indicator-color-background: var(--odx-color-selection-control-fill-readonly);--_indicator-color-stroke: var(--odx-color-input-control-stroke-readonly);cursor:default}:host([aria-readonly=\"true\"]:is([aria-checked=\"true\"],[aria-checked=\"mixed\"])){--_indicator-color-foreground: var(--odx-color-foreground-base)}}";
1004
+ const styles$X = "@layer base{:host{--_indicator-space: var(--odx-size-12);--_indicator-size: calc(var(--odx-size-150) - var(--_indicator-space) * 2);--_indicator-color-background: var(--odx-color-selection-control-fill);--_indicator-color-stroke: var(--odx-color-selection-control-stroke);--_indicator-color-foreground: var(--odx-palette-transparent);--_label-color-foreground: var(--odx-color-text);cursor:pointer;display:inline-flex;margin-block:var(--odx-size-37);user-select:none;border-radius:var(--odx-border-radius-controls);padding:var(--_indicator-space)}:host,.indicator,.content{transition:var(--odx-transition-reduced)}.indicator{display:flex;place-content:center;place-items:center;block-size:var(--_indicator-size);inline-size:var(--_indicator-size);flex-shrink:0;border-radius:var(--odx-border-radius-controls);background-color:var(--_indicator-color-background);border:var(--odx-border-width-thin) solid var(--_indicator-color-stroke);border-color:var(--_indicator-color-stroke);color:var(--_indicator-color-foreground);outline:var(--odx-focus-ring-outline);outline-offset:var(--odx-focus-ring-offset);transition-property:background-color,border-color,outline-color}.label{display:inline-block}.content{color:var(--_label-color-foreground);margin-block:calc(-1 * var(--_indicator-space));transition-property:color}:host(:empty) .content{display:none}:host(:not(:empty)) .indicator{margin-inline-end:var(--odx-size-75)}}@layer state{:host(:not(:empty)) .indicator{margin-inline-end:var(--odx-size-75)}:host(:empty) .content{display:none}:host(:hover){--_indicator-color-stroke: var(--odx-color-selection-control-stroke-hover);--_indicator-color-background: var(--odx-color-selection-control-fill-hover)}:host(:focus-visible) .indicator{outline-color:var(--odx-focus-ring-color)}:host(:is([aria-checked=\"true\"],[aria-checked=\"mixed\"])){--_indicator-color-background: var(--odx-color-selection-control-fill-selected);--_indicator-color-foreground: var(--odx-color-foreground-light);--_indicator-color-stroke: var(--odx-color-selection-control-stroke-selected)}:host(:is([aria-checked=\"true\"],[aria-checked=\"mixed\"]):not(:is([aria-disabled],[aria-readonly])):hover){--_indicator-color-background: var(--odx-color-selection-control-fill-selected-hover)}:host([aria-disabled=\"true\"]){--_indicator-color-background: var(--odx-color-disabled-fill);--_indicator-color-foreground: var(--odx-palette-transparent);--_indicator-color-stroke: var(--odx-selection-control-color-border-disabled);--_label-color-foreground: var(--odx-color-disabled-foreground);cursor:not-allowed}:host([aria-disabled=\"true\"]:is([aria-checked=\"true\"],[aria-checked=\"mixed\"])){--_indicator-color-background: var(--odx-color-disabled-fill-selected);--_indicator-color-foreground: var(--odx-color-disabled-foreground-selected);--_indicator-color-stroke: var(--_indicator-color-background)}:host([aria-readonly=\"true\"]){--_indicator-color-background: var(--odx-color-selection-control-fill-readonly);--_indicator-color-stroke: var(--odx-color-input-control-stroke-readonly);cursor:default}:host([aria-readonly=\"true\"]:is([aria-checked=\"true\"],[aria-checked=\"mixed\"])){--_indicator-color-foreground: var(--odx-color-foreground-base)}}";
1134
1005
 
1135
- var __defProp$14 = Object.defineProperty;
1136
- var __getOwnPropDesc$14 = Object.getOwnPropertyDescriptor;
1137
- var __decorateClass$14 = (decorators, target, key, kind) => {
1138
- var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$14(target, key) : target;
1006
+ var __defProp$15 = Object.defineProperty;
1007
+ var __getOwnPropDesc$15 = Object.getOwnPropertyDescriptor;
1008
+ var __decorateClass$15 = (decorators, target, key, kind) => {
1009
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$15(target, key) : target;
1139
1010
  for (var i = decorators.length - 1, decorator; i >= 0; i--)
1140
1011
  if (decorator = decorators[i])
1141
1012
  result = (kind ? decorator(target, key, result) : decorator(result)) || result;
1142
- if (kind && result) __defProp$14(target, key, result);
1013
+ if (kind && result) __defProp$15(target, key, result);
1143
1014
  return result;
1144
1015
  };
1145
1016
  let OdxCheckbox = class extends CheckboxFormControl {
@@ -1162,9 +1033,9 @@ let OdxCheckbox = class extends CheckboxFormControl {
1162
1033
  </div>
1163
1034
  `;
1164
1035
  }
1165
- willUpdate(changes) {
1166
- super.willUpdate?.(changes);
1167
- if (changes.has("indeterminate")) {
1036
+ willUpdate(props) {
1037
+ super.willUpdate?.(props);
1038
+ if (props.has("indeterminate")) {
1168
1039
  if (this.indeterminate) {
1169
1040
  this.ariaChecked = "mixed";
1170
1041
  }
@@ -1176,44 +1047,44 @@ let OdxCheckbox = class extends CheckboxFormControl {
1176
1047
  this.indeterminate = false;
1177
1048
  }
1178
1049
  };
1179
- __decorateClass$14([
1050
+ __decorateClass$15([
1180
1051
  property({ type: Boolean, reflect: true })
1181
1052
  ], OdxCheckbox.prototype, "indeterminate", 2);
1182
- OdxCheckbox = __decorateClass$14([
1183
- customElement("odx-checkbox", [styles$W])
1053
+ OdxCheckbox = __decorateClass$15([
1054
+ customElement("odx-checkbox", [styles$X])
1184
1055
  ], OdxCheckbox);
1185
1056
 
1186
- const styles$V = ":host{--_color-background: var(--odx-color-neutral-rest);--_color-background-hover: var(--odx-color-neutral-hover);--_color-foreground: var(--odx-color-neutral-text);--_font-size: var(--odx-font-size-text-sm);--_block-size: var(--odx-size-150);--_border-radius: var(--_block-size);--_padding-inline: var(--odx-size-50);display:inline-flex;place-items:center;background-color:var(--_color-background);cursor:inherit;padding-inline:var(--_padding-inline);gap:var(--odx-size-25);block-size:var(--_block-size);border-radius:var(--_border-radius);color:var(--_color-foreground);outline-offset:var(--odx-focus-ring-offset)}:host,.content,.action{transition:var(--odx-transition-reduced);transition-property:color background-color outline-color}:host,.action{outline:var(--odx-focus-ring-outline)}:host(:focus-visible),.action:focus-visible{outline-color:var(--odx-focus-ring-color)}.content{min-inline-size:var(--odx-size-150);user-select:none;text-align:center}.action,::slotted(odx-icon){font-size:var(--odx-font-size-text-md);block-size:var(--_block-size);inline-size:var(--_block-size);color:inherit;outline-offset:calc(-1 * var(--odx-focus-ring-offset))}.action{background-color:var(--_color-background);border:none;border-radius:var(--_border-radius);cursor:pointer;margin-inline-end:calc(-1 * var(--_padding-inline));padding:0}.action:hover{background-color:var(--_color-background-hover)}:host([variant=\"neutral\"]){--_color-background: var(--odx-color-neutral-rest);--_color-background-hover: var(--odx-color-neutral-hover);--_color-foreground: var(--odx-color-foreground-base)}:host([variant=\"primary\"]){--_color-background: var(--odx-color-primary-rest);--_color-background-hover: var(--odx-color-primary-hover);--_color-foreground: var(--odx-color-foreground-light)}:host([variant=\"highlight\"]){--_color-background: var(--odx-color-highlight-rest);--_color-background-hover: var(--odx-color-highlight-hover);--_color-foreground: var(--odx-color-foreground-light)}:host([variant=\"success\"]){--_color-background: var(--odx-color-success-rest);--_color-background-hover: var(--odx-color-success-hover);--_color-foreground: var(--odx-color-success-text)}:host([variant=\"warning\"]){--_color-background: var(--odx-color-warning-rest);--_color-background-hover: var(--odx-color-warning-hover);--_color-foreground: var(--odx-color-warning-text)}:host([variant=\"danger\"]){--_color-background: var(--odx-color-danger-rest);--_color-background-hover: var(--odx-color-danger-hover);--_color-foreground: var(--odx-color-foreground-light)}:host([aria-disabled=\"true\"]){--_color-background: var(--odx-color-disabled-fill);--_color-foreground: var(--odx-color-disabled-foreground);.action{pointer-events:none}}:host([interactive]:not([interactive=\"false\"])){cursor:pointer}:host([interactive]:not([interactive=\"false\"]):hover){--_color-background: var(--_color-background-hover)}:host([aria-disabled=\"true\"][interactive]:not([interactive=\"false\"])){--_color-background: var(--odx-color-disabled-fill);cursor:not-allowed}";
1057
+ const styles$W = ":host{--_color-background: var(--odx-color-neutral-rest);--_color-background-hover: var(--odx-color-neutral-hover);--_color-foreground: var(--odx-color-neutral-text);--_font-size: var(--odx-font-size-text-sm);--_block-size: var(--odx-size-150);--_border-radius: var(--_block-size);--_padding-inline: var(--odx-size-50);display:inline-flex;place-items:center;background-color:var(--_color-background);cursor:inherit;padding-inline:var(--_padding-inline);gap:var(--odx-size-25);block-size:var(--_block-size);border-radius:var(--_border-radius);color:var(--_color-foreground);outline-offset:var(--odx-focus-ring-offset)}:host,.content,.action{transition:var(--odx-transition-reduced);transition-property:color background-color outline-color}:host,.action{outline:var(--odx-focus-ring-outline)}:host(:focus-visible),.action:focus-visible{outline-color:var(--odx-focus-ring-color)}.content{min-inline-size:var(--odx-size-150);user-select:none;text-align:center;line-height:inherit}.action,::slotted(odx-icon){font-size:var(--odx-font-size-text-md);block-size:var(--_block-size);inline-size:var(--_block-size);color:inherit;outline-offset:calc(-1 * var(--odx-focus-ring-offset))}.action{background-color:var(--_color-background);border:none;border-radius:var(--_border-radius);cursor:pointer;margin-inline-end:calc(-1 * var(--_padding-inline));padding:0}.action:hover{background-color:var(--_color-background-hover)}:host([variant=\"neutral\"]){--_color-background: var(--odx-color-neutral-rest);--_color-background-hover: var(--odx-color-neutral-hover);--_color-foreground: var(--odx-color-foreground-base)}:host([variant=\"primary\"]){--_color-background: var(--odx-color-primary-rest);--_color-background-hover: var(--odx-color-primary-hover);--_color-foreground: var(--odx-color-foreground-light)}:host([variant=\"highlight\"]){--_color-background: var(--odx-color-highlight-rest);--_color-background-hover: var(--odx-color-highlight-hover);--_color-foreground: var(--odx-color-foreground-light)}:host([variant=\"success\"]){--_color-background: var(--odx-color-success-rest);--_color-background-hover: var(--odx-color-success-hover);--_color-foreground: var(--odx-color-success-text)}:host([variant=\"warning\"]){--_color-background: var(--odx-color-warning-rest);--_color-background-hover: var(--odx-color-warning-hover);--_color-foreground: var(--odx-color-warning-text)}:host([variant=\"danger\"]){--_color-background: var(--odx-color-danger-rest);--_color-background-hover: var(--odx-color-danger-hover);--_color-foreground: var(--odx-color-foreground-light)}:host([aria-disabled=\"true\"]){--_color-background: var(--odx-color-disabled-fill);--_color-foreground: var(--odx-color-disabled-foreground);.action{pointer-events:none}}:host([interactive]:not([interactive=\"false\"])){cursor:pointer}:host([interactive]:not([interactive=\"false\"]):hover){--_color-background: var(--_color-background-hover)}:host([aria-disabled=\"true\"][interactive]:not([interactive=\"false\"])){--_color-background: var(--odx-color-disabled-fill);cursor:not-allowed}";
1187
1058
 
1188
- var __defProp$13 = Object.defineProperty;
1189
- var __getOwnPropDesc$13 = Object.getOwnPropertyDescriptor;
1190
- var __typeError$p = (msg) => {
1059
+ var __defProp$14 = Object.defineProperty;
1060
+ var __getOwnPropDesc$14 = Object.getOwnPropertyDescriptor;
1061
+ var __typeError$q = (msg) => {
1191
1062
  throw TypeError(msg);
1192
1063
  };
1193
- var __decorateClass$13 = (decorators, target, key, kind) => {
1194
- var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$13(target, key) : target;
1064
+ var __decorateClass$14 = (decorators, target, key, kind) => {
1065
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$14(target, key) : target;
1195
1066
  for (var i = decorators.length - 1, decorator; i >= 0; i--)
1196
1067
  if (decorator = decorators[i])
1197
1068
  result = (kind ? decorator(target, key, result) : decorator(result)) || result;
1198
- if (kind && result) __defProp$13(target, key, result);
1069
+ if (kind && result) __defProp$14(target, key, result);
1199
1070
  return result;
1200
1071
  };
1201
- var __accessCheck$p = (obj, member, msg) => member.has(obj) || __typeError$p("Cannot " + msg);
1202
- var __privateGet$l = (obj, member, getter) => (__accessCheck$p(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
1203
- var __privateAdd$p = (obj, member, value) => member.has(obj) ? __typeError$p("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
1204
- var _handleActionClick, _handleClick$5;
1072
+ var __accessCheck$q = (obj, member, msg) => member.has(obj) || __typeError$q("Cannot " + msg);
1073
+ var __privateGet$m = (obj, member, getter) => (__accessCheck$q(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
1074
+ var __privateAdd$q = (obj, member, value) => member.has(obj) ? __typeError$q("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
1075
+ var _handleActionClick, _handleClick$6;
1205
1076
  let OdxChip = class extends CanBeDisabled(CustomElement) {
1206
1077
  constructor() {
1207
1078
  super(...arguments);
1208
1079
  this.removable = false;
1209
1080
  this.interactive = false;
1210
- __privateAdd$p(this, _handleActionClick, (event) => {
1081
+ __privateAdd$q(this, _handleActionClick, (event) => {
1211
1082
  const actionElement = getElementFromEvent(event, (node) => !!this.actionElement && node === this.actionElement);
1212
1083
  if (!actionElement) return;
1213
1084
  event.stopPropagation();
1214
1085
  this.emit("remove");
1215
1086
  });
1216
- __privateAdd$p(this, _handleClick$5, (event) => {
1087
+ __privateAdd$q(this, _handleClick$6, (event) => {
1217
1088
  if (this.removable) {
1218
1089
  const actionElement = getElementFromEvent(event, (node) => !!this.actionElement && node === this.actionElement);
1219
1090
  if (actionElement) return;
@@ -1230,46 +1101,46 @@ let OdxChip = class extends CanBeDisabled(CustomElement) {
1230
1101
  }
1231
1102
  renderAction() {
1232
1103
  return html`
1233
- <button class="action" ?disabled=${this.disabled} @click=${__privateGet$l(this, _handleActionClick)}>
1104
+ <button class="action" ?disabled=${this.disabled} @click=${__privateGet$m(this, _handleActionClick)}>
1234
1105
  <odx-icon class="action-icon" name="core::close"></odx-icon>
1235
1106
  </button>
1236
1107
  `;
1237
1108
  }
1238
- willUpdate(changes) {
1239
- super.willUpdate?.(changes);
1240
- if (changes.has("interactive") || changes.has("disabled")) {
1109
+ willUpdate(props) {
1110
+ super.willUpdate?.(props);
1111
+ if (props.has("interactive") || props.has("disabled")) {
1241
1112
  if (!this.disabled) {
1242
1113
  toggleAttribute(this, "tabindex", this.interactive ? 0 : null);
1243
1114
  toggleAttribute(this.actionElement, "tabindex", this.interactive ? -1 : null);
1244
1115
  }
1245
1116
  }
1246
1117
  }
1247
- updated(changes) {
1248
- if (changes.has("removable") || changes.has("interactive") || changes.has("disabled")) {
1118
+ updated(props) {
1119
+ if (props.has("removable") || props.has("interactive") || props.has("disabled")) {
1249
1120
  if (this.removable || this.interactive) {
1250
- this.addEventListener("click", __privateGet$l(this, _handleClick$5), { capture: true });
1121
+ this.addEventListener("click", __privateGet$m(this, _handleClick$6), { capture: true });
1251
1122
  } else {
1252
- this.removeEventListener("click", __privateGet$l(this, _handleClick$5));
1123
+ this.removeEventListener("click", __privateGet$m(this, _handleClick$6));
1253
1124
  }
1254
1125
  }
1255
1126
  }
1256
1127
  };
1257
1128
  _handleActionClick = new WeakMap();
1258
- _handleClick$5 = new WeakMap();
1259
- __decorateClass$13([
1129
+ _handleClick$6 = new WeakMap();
1130
+ __decorateClass$14([
1260
1131
  query(".action")
1261
1132
  ], OdxChip.prototype, "actionElement", 2);
1262
- __decorateClass$13([
1133
+ __decorateClass$14([
1263
1134
  property({ type: Boolean, reflect: true })
1264
1135
  ], OdxChip.prototype, "removable", 2);
1265
- __decorateClass$13([
1136
+ __decorateClass$14([
1266
1137
  property({ type: Boolean, reflect: true })
1267
1138
  ], OdxChip.prototype, "interactive", 2);
1268
- __decorateClass$13([
1139
+ __decorateClass$14([
1269
1140
  property({ reflect: true })
1270
1141
  ], OdxChip.prototype, "variant", 2);
1271
- OdxChip = __decorateClass$13([
1272
- customElement("odx-chip", [styles$V])
1142
+ OdxChip = __decorateClass$14([
1143
+ customElement("odx-chip", [styles$W])
1273
1144
  ], OdxChip);
1274
1145
 
1275
1146
  const ChipVariant = {
@@ -1287,31 +1158,31 @@ const CircularProgressBarSize = {
1287
1158
  LARGE: "large"
1288
1159
  };
1289
1160
 
1290
- const styles$U = "@keyframes odx-circular-progress-indicator-animation{0%{stroke-dashoffset:100}25%{stroke-dashoffset:250;transform:rotate(180deg)}to{stroke-dashoffset:100;transform:rotate(270deg)}}@keyframes odx-circular-progress-inner-animation{0%{transform:rotate(0)}to{transform:rotate(360deg)}}:host{--_indicator-color: var(--odx-color-primary-rest);--_track-color: var(--odx-palette-coolgray-10);aspect-ratio:1;display:flex;place-content:center;place-items:center;color:currentColor;block-size:100%;inline-size:100%;position:relative}:host([size=\"small\"]){--_size: var(--odx-size-300)}:host([size=\"medium\"]){--_size: var(--odx-size-400)}:host([size=\"large\"]){--_size: var(--odx-size-600)}:host([size]){max-block-size:var(--_size);max-inline-size:var(--_size)}:host::part(track),:host::part(indicator){fill:transparent}:host::part(indicator){stroke:var(--_indicator-color);transform:rotate(-90deg);transform-origin:center;transition:stroke-dashoffset var(--odx-motion-duration-fast) var(--odx-motion-easing-reduced)}:host::part(track){stroke:var(--_track-color)}:host([indeterminate]:not([indeterminate=\"false\"]))::part(inner){animation:1.75s linear infinite odx-circular-progress-inner-animation}:host([indeterminate]:not([indeterminate=\"false\"]))::part(indicator){animation:1.75s ease infinite odx-circular-progress-indicator-animation both}";
1161
+ const styles$V = "@keyframes odx-circular-progress-indicator-animation{0%{stroke-dashoffset:100}25%{stroke-dashoffset:250;transform:rotate(180deg)}to{stroke-dashoffset:100;transform:rotate(270deg)}}@keyframes odx-circular-progress-inner-animation{0%{transform:rotate(0)}to{transform:rotate(360deg)}}:host{--_indicator-color: var(--odx-color-primary-rest);--_track-color: var(--odx-palette-coolgray-10);aspect-ratio:1;display:flex;place-content:center;place-items:center;color:currentColor;block-size:100%;inline-size:100%;position:relative}:host([size=\"small\"]){--_size: var(--odx-size-300)}:host([size=\"medium\"]){--_size: var(--odx-size-400)}:host([size=\"large\"]){--_size: var(--odx-size-600)}:host([size]){max-block-size:var(--_size);max-inline-size:var(--_size)}:host::part(track),:host::part(indicator){fill:transparent}:host::part(indicator){stroke:var(--_indicator-color);transform:rotate(-90deg);transform-origin:center;transition:stroke-dashoffset var(--odx-motion-duration-fast) var(--odx-motion-easing-reduced)}:host::part(track){stroke:var(--_track-color)}:host([indeterminate]:not([indeterminate=\"false\"]))::part(inner){animation:1.75s linear infinite odx-circular-progress-inner-animation}:host([indeterminate]:not([indeterminate=\"false\"]))::part(indicator){animation:1.75s ease infinite odx-circular-progress-indicator-animation both}";
1291
1162
 
1292
- var __defProp$12 = Object.defineProperty;
1293
- var __getOwnPropDesc$12 = Object.getOwnPropertyDescriptor;
1294
- var __typeError$o = (msg) => {
1163
+ var __defProp$13 = Object.defineProperty;
1164
+ var __getOwnPropDesc$13 = Object.getOwnPropertyDescriptor;
1165
+ var __typeError$p = (msg) => {
1295
1166
  throw TypeError(msg);
1296
1167
  };
1297
- var __decorateClass$12 = (decorators, target, key, kind) => {
1298
- var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$12(target, key) : target;
1168
+ var __decorateClass$13 = (decorators, target, key, kind) => {
1169
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$13(target, key) : target;
1299
1170
  for (var i = decorators.length - 1, decorator; i >= 0; i--)
1300
1171
  if (decorator = decorators[i])
1301
1172
  result = (kind ? decorator(target, key, result) : decorator(result)) || result;
1302
- if (kind && result) __defProp$12(target, key, result);
1173
+ if (kind && result) __defProp$13(target, key, result);
1303
1174
  return result;
1304
1175
  };
1305
- var __accessCheck$o = (obj, member, msg) => member.has(obj) || __typeError$o("Cannot " + msg);
1306
- var __privateGet$k = (obj, member, getter) => (__accessCheck$o(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
1307
- var __privateAdd$o = (obj, member, value) => member.has(obj) ? __typeError$o("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
1308
- var __privateSet$4 = (obj, member, value, setter) => (__accessCheck$o(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
1176
+ var __accessCheck$p = (obj, member, msg) => member.has(obj) || __typeError$p("Cannot " + msg);
1177
+ var __privateGet$l = (obj, member, getter) => (__accessCheck$p(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
1178
+ var __privateAdd$p = (obj, member, value) => member.has(obj) ? __typeError$p("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
1179
+ var __privateSet$4 = (obj, member, value, setter) => (__accessCheck$p(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
1309
1180
  var _value$1, _OdxCircularProgressBar_instances, circumference_get, radius_get, progressValue_get, normalizedStrokeWidth_get;
1310
1181
  let OdxCircularProgressBar = class extends CustomElement {
1311
1182
  constructor() {
1312
1183
  super(...arguments);
1313
- __privateAdd$o(this, _OdxCircularProgressBar_instances);
1314
- __privateAdd$o(this, _value$1, 0);
1184
+ __privateAdd$p(this, _OdxCircularProgressBar_instances);
1185
+ __privateAdd$p(this, _value$1, 0);
1315
1186
  this.viewPortSize = 100;
1316
1187
  this.stroke = 4;
1317
1188
  this.indeterminate = false;
@@ -1327,7 +1198,7 @@ let OdxCircularProgressBar = class extends CustomElement {
1327
1198
  }
1328
1199
  }
1329
1200
  get value() {
1330
- return __privateGet$k(this, _value$1);
1201
+ return __privateGet$l(this, _value$1);
1331
1202
  }
1332
1203
  firstUpdated(changes) {
1333
1204
  super.firstUpdated?.(changes);
@@ -1345,17 +1216,17 @@ let OdxCircularProgressBar = class extends CustomElement {
1345
1216
  <svg part="inner" viewBox="0 0 ${this.viewPortSize} ${this.viewPortSize}">
1346
1217
  <circle
1347
1218
  part="track"
1348
- stroke-width="${__privateGet$k(this, _OdxCircularProgressBar_instances, normalizedStrokeWidth_get)}"
1349
- r="${__privateGet$k(this, _OdxCircularProgressBar_instances, radius_get)}"
1219
+ stroke-width="${__privateGet$l(this, _OdxCircularProgressBar_instances, normalizedStrokeWidth_get)}"
1220
+ r="${__privateGet$l(this, _OdxCircularProgressBar_instances, radius_get)}"
1350
1221
  cx="50%"
1351
1222
  cy="50%"
1352
1223
  />
1353
1224
  <circle
1354
1225
  part="indicator"
1355
- stroke-dasharray="${__privateGet$k(this, _OdxCircularProgressBar_instances, circumference_get)}"
1356
- stroke-dashoffset="${__privateGet$k(this, _OdxCircularProgressBar_instances, progressValue_get)}"
1357
- stroke-width="${__privateGet$k(this, _OdxCircularProgressBar_instances, normalizedStrokeWidth_get)}"
1358
- r="${__privateGet$k(this, _OdxCircularProgressBar_instances, radius_get)}"
1226
+ stroke-dasharray="${__privateGet$l(this, _OdxCircularProgressBar_instances, circumference_get)}"
1227
+ stroke-dashoffset="${__privateGet$l(this, _OdxCircularProgressBar_instances, progressValue_get)}"
1228
+ stroke-width="${__privateGet$l(this, _OdxCircularProgressBar_instances, normalizedStrokeWidth_get)}"
1229
+ r="${__privateGet$l(this, _OdxCircularProgressBar_instances, radius_get)}"
1359
1230
  cx="50%"
1360
1231
  cy="50%"
1361
1232
  />
@@ -1372,13 +1243,13 @@ let OdxCircularProgressBar = class extends CustomElement {
1372
1243
  _value$1 = new WeakMap();
1373
1244
  _OdxCircularProgressBar_instances = new WeakSet();
1374
1245
  circumference_get = function() {
1375
- return Math.floor(2 * __privateGet$k(this, _OdxCircularProgressBar_instances, radius_get) * Math.PI);
1246
+ return Math.floor(2 * __privateGet$l(this, _OdxCircularProgressBar_instances, radius_get) * Math.PI);
1376
1247
  };
1377
1248
  radius_get = function() {
1378
- return Math.max(0, this.viewPortSize / 2 - __privateGet$k(this, _OdxCircularProgressBar_instances, normalizedStrokeWidth_get) / 2);
1249
+ return Math.max(0, this.viewPortSize / 2 - __privateGet$l(this, _OdxCircularProgressBar_instances, normalizedStrokeWidth_get) / 2);
1379
1250
  };
1380
1251
  progressValue_get = function() {
1381
- return this.indeterminate ? __privateGet$k(this, _OdxCircularProgressBar_instances, circumference_get) : Math.floor((1 - __privateGet$k(this, _value$1) / 100) * __privateGet$k(this, _OdxCircularProgressBar_instances, circumference_get));
1252
+ return this.indeterminate ? __privateGet$l(this, _OdxCircularProgressBar_instances, circumference_get) : Math.floor((1 - __privateGet$l(this, _value$1) / 100) * __privateGet$l(this, _OdxCircularProgressBar_instances, circumference_get));
1382
1253
  };
1383
1254
  normalizedStrokeWidth_get = function() {
1384
1255
  if (this.stroke < 0) return 0;
@@ -1389,84 +1260,63 @@ normalizedStrokeWidth_get = function() {
1389
1260
  }
1390
1261
  return stroke;
1391
1262
  };
1392
- __decorateClass$12([
1263
+ __decorateClass$13([
1393
1264
  property({ type: Number })
1394
1265
  ], OdxCircularProgressBar.prototype, "value", 1);
1395
- __decorateClass$12([
1266
+ __decorateClass$13([
1396
1267
  property({ type: Number, reflect: true })
1397
1268
  ], OdxCircularProgressBar.prototype, "stroke", 2);
1398
- __decorateClass$12([
1269
+ __decorateClass$13([
1399
1270
  property({ type: Boolean, reflect: true })
1400
1271
  ], OdxCircularProgressBar.prototype, "indeterminate", 2);
1401
- __decorateClass$12([
1272
+ __decorateClass$13([
1402
1273
  property({ reflect: true })
1403
1274
  ], OdxCircularProgressBar.prototype, "size", 2);
1404
- OdxCircularProgressBar = __decorateClass$12([
1405
- customElement("odx-circular-progress-bar", [styles$U])
1275
+ OdxCircularProgressBar = __decorateClass$13([
1276
+ customElement("odx-circular-progress-bar", [styles$V])
1406
1277
  ], OdxCircularProgressBar);
1407
1278
 
1408
- const styles$T = ":host{display:block;padding:var(--odx-size-75);background-color:var(--odx-color-background-main)}::slotted(:is([slot=\"header\"],[slot=\"footer\"])){margin-inline:calc(-1 * var(--odx-size-75))}";
1409
-
1410
- var __defProp$11 = Object.defineProperty;
1411
- var __getOwnPropDesc$11 = Object.getOwnPropertyDescriptor;
1412
- var __decorateClass$11 = (decorators, target, key, kind) => {
1413
- var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$11(target, key) : target;
1414
- for (var i = decorators.length - 1, decorator; i >= 0; i--)
1415
- if (decorator = decorators[i])
1416
- result = (kind ? decorator(target, key, result) : decorator(result)) || result;
1417
- if (kind && result) __defProp$11(target, key, result);
1418
- return result;
1419
- };
1420
- let OdxContentBox = class extends CustomElement {
1421
- render() {
1422
- return html`
1423
- <slot name="header"></slot>
1424
- <slot></slot>
1425
- <slot name="footer"></slot>
1426
- `;
1427
- }
1428
- };
1429
- OdxContentBox = __decorateClass$11([
1430
- customElement("odx-content-box", [styles$T])
1431
- ], OdxContentBox);
1432
-
1433
1279
  const DropdownPlacement = {
1434
1280
  TOP: PopoverPlacement.TOP,
1435
1281
  BOTTOM: PopoverPlacement.BOTTOM
1436
1282
  };
1437
1283
 
1438
- const styles$S = ":host{--_popover-offset: var(--odx-size-37);--_popover-color-background: var(--odx-color-background-main)}";
1284
+ const styles$U = ":host{--_popover-offset: var(--odx-size-37);--_popover-color-background: var(--odx-color-background-main)}";
1439
1285
 
1440
- var __defProp$10 = Object.defineProperty;
1441
- var __getOwnPropDesc$10 = Object.getOwnPropertyDescriptor;
1442
- var __typeError$n = (msg) => {
1286
+ var __defProp$12 = Object.defineProperty;
1287
+ var __getOwnPropDesc$12 = Object.getOwnPropertyDescriptor;
1288
+ var __typeError$o = (msg) => {
1443
1289
  throw TypeError(msg);
1444
1290
  };
1445
- var __decorateClass$10 = (decorators, target, key, kind) => {
1446
- var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$10(target, key) : target;
1291
+ var __decorateClass$12 = (decorators, target, key, kind) => {
1292
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$12(target, key) : target;
1447
1293
  for (var i = decorators.length - 1, decorator; i >= 0; i--)
1448
1294
  if (decorator = decorators[i])
1449
1295
  result = (kind ? decorator(target, key, result) : decorator(result)) || result;
1450
- if (kind && result) __defProp$10(target, key, result);
1296
+ if (kind && result) __defProp$12(target, key, result);
1451
1297
  return result;
1452
1298
  };
1453
- var __accessCheck$n = (obj, member, msg) => member.has(obj) || __typeError$n("Cannot " + msg);
1454
- var __privateGet$j = (obj, member, getter) => (__accessCheck$n(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
1455
- var __privateAdd$n = (obj, member, value) => member.has(obj) ? __typeError$n("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
1456
- var __privateMethod$c = (obj, member, method) => (__accessCheck$n(obj, member, "access private method"), method);
1457
- var _OdxDropdown_instances, updateAriaAttributes_fn$1, _handleMouseEvent, _handleKeyboardEvent$1;
1458
- let OdxDropdown = class extends PopoverHost(CanBeDisabled(CustomElement)) {
1299
+ var __accessCheck$o = (obj, member, msg) => member.has(obj) || __typeError$o("Cannot " + msg);
1300
+ var __privateGet$k = (obj, member, getter) => (__accessCheck$o(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
1301
+ var __privateAdd$o = (obj, member, value) => member.has(obj) ? __typeError$o("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
1302
+ var __privateMethod$e = (obj, member, method) => (__accessCheck$o(obj, member, "access private method"), method);
1303
+ var _OdxDropdown_instances, updateAriaAttributes_fn$2, _handleClick$5, _handleKeyboardEvent$1;
1304
+ let OdxDropdown = class extends CanBeDisabled(PopoverHost) {
1459
1305
  constructor() {
1460
1306
  super(...arguments);
1461
- __privateAdd$n(this, _OdxDropdown_instances);
1307
+ __privateAdd$o(this, _OdxDropdown_instances);
1462
1308
  this.matchReferenceWidth = false;
1463
1309
  this.placement = DropdownPlacement.BOTTOM;
1464
- __privateAdd$n(this, _handleMouseEvent, (_event) => {
1310
+ __privateAdd$o(this, _handleClick$5, (_event) => {
1465
1311
  this.togglePopover();
1466
1312
  });
1467
- __privateAdd$n(this, _handleKeyboardEvent$1, (event) => {
1468
- if (event.key !== "Enter") return;
1469
- this.togglePopover();
1313
+ __privateAdd$o(this, _handleKeyboardEvent$1, (event) => {
1314
+ const { actions } = getKeyboardEventInfo(event);
1315
+ if (!actions.enter) return;
1316
+ if (!this.isPopoverOpen()) {
1317
+ event.stopImmediatePropagation();
1318
+ }
1319
+ this.showPopover();
1470
1320
  });
1471
1321
  }
1472
1322
  get options() {
@@ -1482,15 +1332,29 @@ let OdxDropdown = class extends PopoverHost(CanBeDisabled(CustomElement)) {
1482
1332
  mountPopover(referenceElement) {
1483
1333
  super.mountPopover(referenceElement);
1484
1334
  if (this.disabled || !referenceElement) return;
1485
- __privateMethod$c(this, _OdxDropdown_instances, updateAriaAttributes_fn$1).call(this, referenceElement, this.id);
1486
- referenceElement.addEventListener("click", __privateGet$j(this, _handleMouseEvent));
1487
- referenceElement.addEventListener("keydown", __privateGet$j(this, _handleKeyboardEvent$1));
1335
+ __privateMethod$e(this, _OdxDropdown_instances, updateAriaAttributes_fn$2).call(this, referenceElement, this.id);
1336
+ referenceElement.addEventListener("click", __privateGet$k(this, _handleClick$5));
1337
+ referenceElement.addEventListener("keydown", __privateGet$k(this, _handleKeyboardEvent$1));
1338
+ this.emit("mount", { detail: { referenceElement } });
1488
1339
  }
1489
1340
  unmountPopover(referenceElement) {
1490
1341
  super.unmountPopover(referenceElement);
1491
- __privateMethod$c(this, _OdxDropdown_instances, updateAriaAttributes_fn$1).call(this, referenceElement, null);
1492
- referenceElement.removeEventListener("click", __privateGet$j(this, _handleMouseEvent));
1493
- referenceElement.removeEventListener("keydown", __privateGet$j(this, _handleKeyboardEvent$1));
1342
+ __privateMethod$e(this, _OdxDropdown_instances, updateAriaAttributes_fn$2).call(this, referenceElement, null);
1343
+ referenceElement.removeEventListener("click", __privateGet$k(this, _handleClick$5));
1344
+ referenceElement.removeEventListener("keydown", __privateGet$k(this, _handleKeyboardEvent$1));
1345
+ this.emit("unmount", { detail: { referenceElement } });
1346
+ }
1347
+ onBeforePopoverShow() {
1348
+ this.emit("before-show");
1349
+ }
1350
+ onPopoverShow() {
1351
+ this.emit("show");
1352
+ }
1353
+ onBeforePopoverHide() {
1354
+ this.emit("before-hide");
1355
+ }
1356
+ onPopoverHide() {
1357
+ this.emit("hide");
1494
1358
  }
1495
1359
  render() {
1496
1360
  return html`
@@ -1499,12 +1363,12 @@ let OdxDropdown = class extends PopoverHost(CanBeDisabled(CustomElement)) {
1499
1363
  </odx-popover>
1500
1364
  `;
1501
1365
  }
1502
- willUpdate(changes) {
1503
- super.willUpdate?.(changes);
1504
- if (changes.has("id")) {
1505
- __privateMethod$c(this, _OdxDropdown_instances, updateAriaAttributes_fn$1).call(this, this.referenceElement, this.id);
1366
+ willUpdate(props) {
1367
+ super.willUpdate?.(props);
1368
+ if (props.has("id")) {
1369
+ __privateMethod$e(this, _OdxDropdown_instances, updateAriaAttributes_fn$2).call(this, this.referenceElement, this.id);
1506
1370
  }
1507
- if (changes.has("disabled")) {
1371
+ if (props.has("disabled")) {
1508
1372
  if (this.disabled) {
1509
1373
  this.referenceElement && this.unmountPopover(this.referenceElement);
1510
1374
  } else {
@@ -1514,24 +1378,140 @@ let OdxDropdown = class extends PopoverHost(CanBeDisabled(CustomElement)) {
1514
1378
  }
1515
1379
  };
1516
1380
  _OdxDropdown_instances = new WeakSet();
1517
- updateAriaAttributes_fn$1 = function(referenceElement, id) {
1381
+ updateAriaAttributes_fn$2 = function(referenceElement, id) {
1518
1382
  toggleAttribute(referenceElement, "aria-describedby", id);
1519
1383
  };
1520
- _handleMouseEvent = new WeakMap();
1384
+ _handleClick$5 = new WeakMap();
1521
1385
  _handleKeyboardEvent$1 = new WeakMap();
1522
- __decorateClass$10([
1386
+ __decorateClass$12([
1523
1387
  query("odx-popover", true)
1524
1388
  ], OdxDropdown.prototype, "popoverElement", 2);
1525
- __decorateClass$10([
1526
- property({ type: Boolean, reflect: true })
1389
+ __decorateClass$12([
1390
+ property({ type: Boolean, reflect: true, attribute: "match-reference-width" })
1527
1391
  ], OdxDropdown.prototype, "matchReferenceWidth", 2);
1528
- __decorateClass$10([
1392
+ __decorateClass$12([
1529
1393
  property({ type: String, reflect: true })
1530
1394
  ], OdxDropdown.prototype, "placement", 2);
1531
- OdxDropdown = __decorateClass$10([
1532
- customElement("odx-dropdown", [styles$S])
1395
+ OdxDropdown = __decorateClass$12([
1396
+ customElement("odx-dropdown", [styles$U])
1533
1397
  ], OdxDropdown);
1534
1398
 
1399
+ const styles$T = ":host{display:block;--_color-background: var(--odx-color-input-control-fill);--_color-foreground: var(--odx-color-foreground-base);--_color-stroke: var(--odx-color-input-control-stroke);--_padding-block: var(--odx-size-37);--_padding-inline: var(--odx-size-75);border-radius:var(--odx-border-radius-controls);color:var(--_color-foreground);max-inline-size:320px}.base{display:flex;cursor:pointer;text-align:start;padding:var(--_padding-block) var(--_padding-inline);border:var(--odx-border-width-thin) solid var(--_color-stroke);border-radius:inherit;background-color:var(--_color-background);min-width:200px;min-block-size:var(--odx-size-225);transition:var(--odx-transition-reduced);transition-property:background-color,border-color,outline-color;gap:var(--odx-padding-inline);outline:var(--odx-focus-ring-outline);outline-offset:var(--odx-focus-ring-offset);user-select:none;overflow:hidden;&:focus-visible{outline-color:var(--odx-color-outline-focus)}}.value{display:flex;gap:var(--_padding-block)}.indicator{font-size:var(--odx-size-150);margin-left:auto}odx-chip{--_border-radius: var(--odx-border-radius-controls);--_padding-inline: var(--_padding-block)}odx-dropdown{--max-block-size: 320px}:host(:hover){--_color-background: var(--odx-color-input-control-fill-hover);--_color-stroke: var(--odx-color-input-control-stroke-hover)}:host([multiple]):has(odx-chip) .base{padding-inline-start:var(--_padding-block)}slot[name=placeholder]{color:var(--odx-color-foreground-muted)}";
1400
+
1401
+ var __defProp$11 = Object.defineProperty;
1402
+ var __getOwnPropDesc$11 = Object.getOwnPropertyDescriptor;
1403
+ var __typeError$n = (msg) => {
1404
+ throw TypeError(msg);
1405
+ };
1406
+ var __decorateClass$11 = (decorators, target, key, kind) => {
1407
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$11(target, key) : target;
1408
+ for (var i = decorators.length - 1, decorator; i >= 0; i--)
1409
+ if (decorator = decorators[i])
1410
+ result = (kind ? decorator(target, key, result) : decorator(result)) || result;
1411
+ if (kind && result) __defProp$11(target, key, result);
1412
+ return result;
1413
+ };
1414
+ var __accessCheck$n = (obj, member, msg) => member.has(obj) || __typeError$n("Cannot " + msg);
1415
+ var __privateGet$j = (obj, member, getter) => (__accessCheck$n(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
1416
+ var __privateAdd$n = (obj, member, value) => member.has(obj) ? __typeError$n("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
1417
+ var _handleSlotChange$7, _handleControlChange, _handleControlKeyboardEvent, _handleControlInput, _handleControlClear;
1418
+ let OdxCombobox = class extends ListboxFormControl {
1419
+ constructor() {
1420
+ super();
1421
+ __privateAdd$n(this, _handleSlotChange$7, () => {
1422
+ for (const option of this.options) {
1423
+ option.type = this.multiple ? "checkbox" : null;
1424
+ }
1425
+ });
1426
+ __privateAdd$n(this, _handleControlChange, () => {
1427
+ if (!this.control) return;
1428
+ this.control.addEventListener("clear", __privateGet$j(this, _handleControlClear));
1429
+ this.control.addEventListener("input", __privateGet$j(this, _handleControlInput));
1430
+ this.control.addEventListener("keydown", __privateGet$j(this, _handleControlKeyboardEvent));
1431
+ this.dropdown.referenceElement = this.control;
1432
+ });
1433
+ __privateAdd$n(this, _handleControlKeyboardEvent, (event) => {
1434
+ const { actions, direction } = getKeyboardEventInfo(event);
1435
+ if (actions.enter || actions.space || actions.start || actions.end || direction.down || direction.up) {
1436
+ event.preventDefault();
1437
+ this.emit(new KeyboardEvent(event.type, { key: event.key }));
1438
+ }
1439
+ this.dropdown.showPopover();
1440
+ });
1441
+ __privateAdd$n(this, _handleControlInput, (event) => {
1442
+ if (this.dropdown.isPopoverOpen()) return;
1443
+ this.dropdown.showPopover();
1444
+ });
1445
+ __privateAdd$n(this, _handleControlClear, (event) => {
1446
+ if (!this.dropdown.isPopoverOpen()) return;
1447
+ this.dropdown.hidePopover();
1448
+ });
1449
+ if (!isServer) {
1450
+ this.addEventListener("blur", () => this.dropdown.hidePopover());
1451
+ }
1452
+ }
1453
+ canAutoSelect(option) {
1454
+ return !this.dropdown.isPopoverOpen() && super.canAutoSelect(option);
1455
+ }
1456
+ render() {
1457
+ return html`
1458
+ <odx-highlight>
1459
+ <slot name="control" @slotchange=${__privateGet$j(this, _handleControlChange)}>
1460
+ </slot>
1461
+ </odx-highlight>
1462
+ <odx-dropdown part="dropdown" role="listbox" tabindex="-1" ?disabled=${this.disabled} match-reference-width>
1463
+ <slot @slotchange=${__privateGet$j(this, _handleSlotChange$7)}></slot>
1464
+ </odx-dropdown>
1465
+ `;
1466
+ }
1467
+ };
1468
+ _handleSlotChange$7 = new WeakMap();
1469
+ _handleControlChange = new WeakMap();
1470
+ _handleControlKeyboardEvent = new WeakMap();
1471
+ _handleControlInput = new WeakMap();
1472
+ _handleControlClear = new WeakMap();
1473
+ __decorateClass$11([
1474
+ state(),
1475
+ queryAssignedElement({ slot: "control" })
1476
+ ], OdxCombobox.prototype, "control", 2);
1477
+ __decorateClass$11([
1478
+ queryAssignedElements({ selector: '[role="option"]', flatten: true })
1479
+ ], OdxCombobox.prototype, "options", 2);
1480
+ __decorateClass$11([
1481
+ query(OdxDropdown.selector, true)
1482
+ ], OdxCombobox.prototype, "dropdown", 2);
1483
+ __decorateClass$11([
1484
+ query(".base")
1485
+ ], OdxCombobox.prototype, "base", 2);
1486
+ OdxCombobox = __decorateClass$11([
1487
+ customElement("odx-combobox", [styles$T])
1488
+ ], OdxCombobox);
1489
+
1490
+ const styles$S = ":host{display:block;padding:var(--odx-size-75);background-color:var(--odx-color-background-main)}::slotted(:is([slot=\"header\"],[slot=\"footer\"])){margin-inline:calc(-1 * var(--odx-size-75))}";
1491
+
1492
+ var __defProp$10 = Object.defineProperty;
1493
+ var __getOwnPropDesc$10 = Object.getOwnPropertyDescriptor;
1494
+ var __decorateClass$10 = (decorators, target, key, kind) => {
1495
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$10(target, key) : target;
1496
+ for (var i = decorators.length - 1, decorator; i >= 0; i--)
1497
+ if (decorator = decorators[i])
1498
+ result = (kind ? decorator(target, key, result) : decorator(result)) || result;
1499
+ if (kind && result) __defProp$10(target, key, result);
1500
+ return result;
1501
+ };
1502
+ let OdxContentBox = class extends CustomElement {
1503
+ render() {
1504
+ return html`
1505
+ <slot name="header"></slot>
1506
+ <slot></slot>
1507
+ <slot name="footer"></slot>
1508
+ `;
1509
+ }
1510
+ };
1511
+ OdxContentBox = __decorateClass$10([
1512
+ customElement("odx-content-box", [styles$S])
1513
+ ], OdxContentBox);
1514
+
1535
1515
  const styles$R = ":host{display:block}";
1536
1516
 
1537
1517
  var __defProp$$ = Object.defineProperty;
@@ -1550,12 +1530,12 @@ var __decorateClass$$ = (decorators, target, key, kind) => {
1550
1530
  var __accessCheck$m = (obj, member, msg) => member.has(obj) || __typeError$m("Cannot " + msg);
1551
1531
  var __privateGet$i = (obj, member, getter) => (__accessCheck$m(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
1552
1532
  var __privateAdd$m = (obj, member, value) => member.has(obj) ? __typeError$m("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
1553
- var _handleSlotChange$5;
1533
+ var _handleSlotChange$6;
1554
1534
  const FORM_FIELD_CONTROL_SELECTOR = "odx-form-field-control";
1555
1535
  let OdxFormField = class extends CustomElement {
1556
1536
  constructor() {
1557
1537
  super(...arguments);
1558
- __privateAdd$m(this, _handleSlotChange$5, () => {
1538
+ __privateAdd$m(this, _handleSlotChange$6, () => {
1559
1539
  this.control?.addEventListener("change", () => this.requestUpdate());
1560
1540
  });
1561
1541
  }
@@ -1568,7 +1548,7 @@ let OdxFormField = class extends CustomElement {
1568
1548
  render() {
1569
1549
  const isValid = this.control?.checkValidity();
1570
1550
  return html`
1571
- <slot @slotchange=${__privateGet$i(this, _handleSlotChange$5)}></slot>
1551
+ <slot @slotchange=${__privateGet$i(this, _handleSlotChange$6)}></slot>
1572
1552
  ${when(isValid === false, () => this.renderErrorMessage())}
1573
1553
 
1574
1554
  `;
@@ -1581,7 +1561,7 @@ let OdxFormField = class extends CustomElement {
1581
1561
  `;
1582
1562
  }
1583
1563
  };
1584
- _handleSlotChange$5 = new WeakMap();
1564
+ _handleSlotChange$6 = new WeakMap();
1585
1565
  __decorateClass$$([
1586
1566
  queryAssignedElements({ flatten: true })
1587
1567
  ], OdxFormField.prototype, "elements", 2);
@@ -1635,7 +1615,7 @@ let OdxFormatBytes = class extends BaseFormat {
1635
1615
  }
1636
1616
  transform(value) {
1637
1617
  const units = OdxFormatBytes.UNIT_PREFIXES[this.unit];
1638
- const index = clamp(Math.floor(Math.log10(value) / 3), 0, units.length - 1);
1618
+ const index = Math.min(Math.max(0, Math.floor(Math.log10(value) / 3)), units.length - 1);
1639
1619
  const transformedValue = value / 1e3 ** index;
1640
1620
  return this.formatNumber(transformedValue, {
1641
1621
  maximumFractionDigits: 2,
@@ -1760,7 +1740,7 @@ var __accessCheck$l = (obj, member, msg) => member.has(obj) || __typeError$l("Ca
1760
1740
  var __privateGet$h = (obj, member, getter) => (__accessCheck$l(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
1761
1741
  var __privateAdd$l = (obj, member, value) => member.has(obj) ? __typeError$l("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
1762
1742
  var __privateSet$3 = (obj, member, value, setter) => (__accessCheck$l(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
1763
- var __privateMethod$b = (obj, member, method) => (__accessCheck$l(obj, member, "access private method"), method);
1743
+ var __privateMethod$d = (obj, member, method) => (__accessCheck$l(obj, member, "access private method"), method);
1764
1744
  var _syncInterval, _OdxRelativeTime_instances, setupSyncInterval_fn;
1765
1745
  let OdxRelativeTime = class extends BaseFormat {
1766
1746
  constructor() {
@@ -1783,7 +1763,7 @@ let OdxRelativeTime = class extends BaseFormat {
1783
1763
  willUpdate(props) {
1784
1764
  super.willUpdate?.(props);
1785
1765
  if (props.has("syncInterval")) {
1786
- __privateMethod$b(this, _OdxRelativeTime_instances, setupSyncInterval_fn).call(this);
1766
+ __privateMethod$d(this, _OdxRelativeTime_instances, setupSyncInterval_fn).call(this);
1787
1767
  }
1788
1768
  }
1789
1769
  transform(value) {
@@ -1817,7 +1797,7 @@ OdxRelativeTime = __decorateClass$W([
1817
1797
  customElement("odx-relative-time")
1818
1798
  ], OdxRelativeTime);
1819
1799
 
1820
- const styles$Q = "@layer base{:host{display:flex;align-items:center;block-size:100%;gap:var(--odx-size-75)}::slotted(odx-separator){--min-size: var(--odx-size-150);--inline-space: 0}}";
1800
+ const styles$Q = "@layer base{:host{display:flex;align-items:center;block-size:100%;gap:var(--odx-size-75)}::slotted(odx-separator){--min-size: var(--odx-size-150);--margin-inline: 0}}";
1821
1801
 
1822
1802
  var __defProp$V = Object.defineProperty;
1823
1803
  var __getOwnPropDesc$V = Object.getOwnPropertyDescriptor;
@@ -1894,11 +1874,11 @@ var __decorateClass$T = (decorators, target, key, kind) => {
1894
1874
  var __accessCheck$k = (obj, member, msg) => member.has(obj) || __typeError$k("Cannot " + msg);
1895
1875
  var __privateGet$g = (obj, member, getter) => (__accessCheck$k(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
1896
1876
  var __privateAdd$k = (obj, member, value) => member.has(obj) ? __typeError$k("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
1897
- var _handleSlotChange$4;
1877
+ var _handleSlotChange$5;
1898
1878
  let OdxHeader = class extends CustomElement {
1899
1879
  constructor() {
1900
1880
  super(...arguments);
1901
- __privateAdd$k(this, _handleSlotChange$4, () => {
1881
+ __privateAdd$k(this, _handleSlotChange$5, () => {
1902
1882
  const [titleElement] = this.titleElements;
1903
1883
  if (!titleElement) return;
1904
1884
  titleElement.ariaLevel = "1";
@@ -1916,14 +1896,14 @@ let OdxHeader = class extends CustomElement {
1916
1896
  <div class="base">
1917
1897
  <slot name="prefix"></slot>
1918
1898
  <odx-logo size="sm"></odx-logo>
1919
- <slot @slotchange=${__privateGet$g(this, _handleSlotChange$4)}></slot>
1899
+ <slot @slotchange=${__privateGet$g(this, _handleSlotChange$5)}></slot>
1920
1900
  <slot name="actions"></slot>
1921
1901
  </div>
1922
1902
  <div class="background"></div>
1923
1903
  `;
1924
1904
  }
1925
1905
  };
1926
- _handleSlotChange$4 = new WeakMap();
1906
+ _handleSlotChange$5 = new WeakMap();
1927
1907
  __decorateClass$T([
1928
1908
  queryAssignedElements({ selector: OdxTitle.selector, flatten: true })
1929
1909
  ], OdxHeader.prototype, "titleElements", 2);
@@ -1966,7 +1946,7 @@ const HeadlineSize = {
1966
1946
  XL: "xl"
1967
1947
  };
1968
1948
 
1969
- const styles$M = "::highlight(odx-highlight){background-color:var(--odx-color-highlight-rest);color:var(--odx-color-foreground-light)}";
1949
+ const styles$M = "@layer base{:host{--background-color: var(--odx-color-highlight-rest);--foreground-color: var(--odx-color-foreground-light)}::highlight(odx-highlight){background-color:var(--background-color);color:var(--foreground-color)}:host([subtle]){--background-color: transparent;--foreground-color: var(--odx-color-highlight-rest)}}";
1970
1950
 
1971
1951
  var __defProp$R = Object.defineProperty;
1972
1952
  var __getOwnPropDesc$R = Object.getOwnPropertyDescriptor;
@@ -1982,16 +1962,22 @@ let OdxHighlight = class extends CustomElement {
1982
1962
  constructor() {
1983
1963
  super(...arguments);
1984
1964
  this.minlength = 0;
1965
+ this.subtle = false;
1966
+ this.disabled = false;
1985
1967
  }
1986
1968
  updated(props) {
1987
1969
  super.updated(props);
1988
- if (props.has("query") || props.has("minlength")) {
1970
+ if (props.has("query") || props.has("selector") || props.has("minlength") && !this.disabled) {
1989
1971
  this.highlight();
1990
1972
  }
1973
+ if (props.has("disabled") && this.disabled) {
1974
+ CSS.highlights.delete("odx-highlight");
1975
+ return;
1976
+ }
1991
1977
  }
1992
1978
  highlight() {
1993
1979
  if (!CSS.highlights) return;
1994
- const result = searchTextContent({ root: this, minlength: this.minlength, query: this.query ?? "" });
1980
+ const result = searchTextContent({ root: this, minlength: this.minlength, query: this.query ?? "", selector: this.selector });
1995
1981
  if (result.length > 0) {
1996
1982
  CSS.highlights.set("odx-highlight", new Highlight(...result));
1997
1983
  } else {
@@ -2002,13 +1988,24 @@ let OdxHighlight = class extends CustomElement {
2002
1988
  __decorateClass$R([
2003
1989
  property()
2004
1990
  ], OdxHighlight.prototype, "query", 2);
1991
+ __decorateClass$R([
1992
+ property()
1993
+ ], OdxHighlight.prototype, "selector", 2);
2005
1994
  __decorateClass$R([
2006
1995
  property({ type: Number })
2007
1996
  ], OdxHighlight.prototype, "minlength", 2);
1997
+ __decorateClass$R([
1998
+ property({ type: Boolean, reflect: true })
1999
+ ], OdxHighlight.prototype, "subtle", 2);
2000
+ __decorateClass$R([
2001
+ property({ type: Boolean })
2002
+ ], OdxHighlight.prototype, "disabled", 2);
2008
2003
  OdxHighlight = __decorateClass$R([
2009
2004
  customElement("odx-highlight", [styles$M])
2010
2005
  ], OdxHighlight);
2011
2006
 
2007
+ const styles$L = ":host{--icon-rotation: 0deg}[part=icon]{transition:inherit;transition-property:transform;transform:rotate(var(--icon-rotation))}";
2008
+
2012
2009
  var __defProp$Q = Object.defineProperty;
2013
2010
  var __getOwnPropDesc$Q = Object.getOwnPropertyDescriptor;
2014
2011
  var __decorateClass$Q = (decorators, target, key, kind) => {
@@ -2034,10 +2031,10 @@ __decorateClass$Q([
2034
2031
  property()
2035
2032
  ], OdxIconButton.prototype, "icon", 2);
2036
2033
  OdxIconButton = __decorateClass$Q([
2037
- customElement("odx-icon-button")
2034
+ customElement("odx-icon-button", [styles$L])
2038
2035
  ], OdxIconButton);
2039
2036
 
2040
- const styles$L = "@layer base{:host{display:block}}";
2037
+ const styles$K = "@layer base{:host{display:block}}";
2041
2038
 
2042
2039
  var __defProp$P = Object.defineProperty;
2043
2040
  var __getOwnPropDesc$P = Object.getOwnPropertyDescriptor;
@@ -2054,7 +2051,7 @@ var __decorateClass$P = (decorators, target, key, kind) => {
2054
2051
  };
2055
2052
  var __accessCheck$j = (obj, member, msg) => member.has(obj) || __typeError$j("Cannot " + msg);
2056
2053
  var __privateAdd$j = (obj, member, value) => member.has(obj) ? __typeError$j("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
2057
- var __privateMethod$a = (obj, member, method) => (__accessCheck$j(obj, member, "access private method"), method);
2054
+ var __privateMethod$c = (obj, member, method) => (__accessCheck$j(obj, member, "access private method"), method);
2058
2055
  var _OdxImage_instances, handleDimensionChange_fn;
2059
2056
  class ResourceLoader {
2060
2057
  async load(resource) {
@@ -2100,7 +2097,7 @@ let OdxImage = class extends CustomElement {
2100
2097
  this.checkVisibility();
2101
2098
  }
2102
2099
  if (props.has("height") || props.has("width")) {
2103
- __privateMethod$a(this, _OdxImage_instances, handleDimensionChange_fn).call(this);
2100
+ __privateMethod$c(this, _OdxImage_instances, handleDimensionChange_fn).call(this);
2104
2101
  }
2105
2102
  }
2106
2103
  async load(src) {
@@ -2144,10 +2141,10 @@ __decorateClass$P([
2144
2141
  property({ type: Number })
2145
2142
  ], OdxImage.prototype, "width", 2);
2146
2143
  OdxImage = __decorateClass$P([
2147
- customElement("odx-image", [styles$L])
2144
+ customElement("odx-image", [styles$K])
2148
2145
  ], OdxImage);
2149
2146
 
2150
- const styles$K = "@layer base{:host{--_color-background: var(--odx-color-background-main);--_color-foreground: var(--odx-color-foreground-base);--_color-stroke: var(--odx-color-separator);--_icon-size: var(--odx-size-150);display:flex;align-items:flex-start;gap:var(--odx-size-75);padding:var(--odx-size-75);background-color:var(--_color-background);color:var(--_color-foreground);transition:var(--odx-transition-reduced);line-height:var(--odx-typography-line-height-base);transition-property:background-color,color,display,opacity;transition-behavior:allow-discrete;@starting-style{opacity:0}}.icon{--size: var(--_icon-size)}.base{flex:1 1 auto;font-size:var(--odx-typography-font-size-2);line-height:var(--odx-typography-line-height-base)}.action{--_color-foreground: inherit;margin-block-start:calc(-1 * var(--odx-size-37));margin-inline-end:calc(-1 * var(--odx-size-37))}}@layer state{:host([aria-hidden=\"true\"]){display:none;opacity:0}}@layer variant{:host([variant=\"info\"]){--_color-background: var(--odx-palette-blue-10);--_color-stroke: var(--odx-palette-blue-30)}:host([variant=\"danger\"]){--_color-background: var(--odx-palette-red-10);--_color-foreground: var(--odx-palette-red-100);--_color-stroke: var(--odx-palette-red-30)}:host([variant=\"warning\"]){--_color-background: var(--odx-palette-yellow-00);--_color-stroke: var(--odx-palette-yellow-60)}:host([variant=\"success\"]){--_color-background: var(--odx-palette-green-00);--_color-stroke: var(--odx-palette-green-60)}:host([emphasized]){border-inline-start:var(--odx-border-width-thickest) solid var(--_color-stroke);padding-inline-start:calc(var(--odx-size-75) - var(--odx-border-width-thickest))}}";
2147
+ const styles$J = "@layer base{:host{--_color-background: var(--odx-color-background-main);--_color-foreground: var(--odx-color-foreground-base);--_color-stroke: var(--odx-color-separator);--_icon-size: var(--odx-size-150);display:flex;align-items:flex-start;gap:var(--odx-size-75);padding:var(--odx-size-75);background-color:var(--_color-background);color:var(--_color-foreground);transition:var(--odx-transition-reduced);line-height:var(--odx-typography-line-height-base);transition-property:background-color,color,display,opacity;transition-behavior:allow-discrete;@starting-style{opacity:0}}.icon{--size: var(--_icon-size)}.base{flex:1 1 auto;font-size:var(--odx-typography-font-size-2);line-height:var(--odx-typography-line-height-base)}.action{--_color-foreground: inherit;margin-block-start:calc(-1 * var(--odx-size-37));margin-inline-end:calc(-1 * var(--odx-size-37))}}@layer state{:host([aria-hidden=\"true\"]){display:none;opacity:0}}@layer variant{:host([variant=\"info\"]){--_color-background: var(--odx-palette-blue-10);--_color-stroke: var(--odx-palette-blue-30)}:host([variant=\"danger\"]){--_color-background: var(--odx-palette-red-10);--_color-foreground: var(--odx-palette-red-100);--_color-stroke: var(--odx-palette-red-30)}:host([variant=\"warning\"]){--_color-background: var(--odx-palette-yellow-00);--_color-stroke: var(--odx-palette-yellow-60)}:host([variant=\"success\"]){--_color-background: var(--odx-palette-green-00);--_color-stroke: var(--odx-palette-green-60)}:host([emphasized]){border-inline-start:var(--odx-border-width-thickest) solid var(--_color-stroke);padding-inline-start:calc(var(--odx-size-75) - var(--odx-border-width-thickest))}}";
2151
2148
 
2152
2149
  var __defProp$O = Object.defineProperty;
2153
2150
  var __getOwnPropDesc$O = Object.getOwnPropertyDescriptor;
@@ -2204,7 +2201,7 @@ __decorateClass$O([
2204
2201
  property({ reflect: true })
2205
2202
  ], OdxInlineMessage.prototype, "variant", 2);
2206
2203
  OdxInlineMessage = __decorateClass$O([
2207
- customElement("odx-inline-message", [styles$K])
2204
+ customElement("odx-inline-message", [styles$J])
2208
2205
  ], OdxInlineMessage);
2209
2206
 
2210
2207
  const InlineMessageVariant = {
@@ -2217,7 +2214,7 @@ const InlineMessageType = {
2217
2214
  BANNER: "banner"
2218
2215
  };
2219
2216
 
2220
- const styles$J = ":host{--_color-stroke: var(--odx-color-input-control-stroke);--_color-background: var(--odx-color-input-control-fill);--_block-size: var(--odx-size-225);display:block}.base{display:flex;place-items:center;background-color:var(--_color-background);border:var(--odx-border-width-thin) solid var(--_color-stroke);block-size:var(--_block-size);border-radius:var(--odx-border-radius-controls);font-size:var(--odx-font-size-text-md);transition:var(--odx-transition-reduced);transition-property:background-color,border-color;padding-inline:var(--odx-size-50);gap:var(--odx-size-50);&:has(:focus-visible){--_color-stroke: var(--odx-color-input-control-stroke-pressed)}&:has(.input:hover){--_color-background: var(--odx-color-input-control-fill-hover);--_color-stroke: var(--odx-color-input-control-stroke-hover)}}.input{background-color:var(--odx-color-transparent);outline:none;border:none;flex:1 1 auto;block-size:100%;padding:0;color:inherit;font-weight:var(--odx-typography-font-weight-medium);&::placeholder{color:var(--odx-color-foreground-muted);font-weight:var(--odx-typography-font-weight-normal)}&::-webkit-search-decoration,&::-webkit-search-cancel-button,&::-webkit-search-results-button,&::-webkit-search-results-decoration{-webkit-appearance:none}}::slotted(odx-icon[slot]){--size: var(--odx-typography-font-size-5)}";
2217
+ const styles$I = "@layer base{:host{--_color-background: var(--odx-color-input-control-fill);--_color-stroke: var(--odx-color-input-control-stroke);--_control-size: var(--odx-size-225);display:inline-block;min-inline-size:16ch}[part=base]{display:flex;place-items:center;background-color:var(--_color-background);border:var(--odx-border-width-thin) solid var(--_color-stroke);block-size:var(--_control-size);border-radius:var(--odx-border-radius-controls);font-size:var(--odx-font-size-text-md);transition:var(--odx-transition-reduced);transition-property:background-color,border-color;padding-inline:var(--odx-size-50);gap:var(--odx-size-37);&:has([part=input]:hover){--_color-background: var(--odx-color-input-control-fill-hover);--_color-stroke: var(--odx-color-input-control-stroke-hover)}&:has([part=input]:focus-visible){--_color-stroke: var(--odx-focus-ring-color)}&:has(.clear){padding-inline-end:var(--odx-size-px)}}.clear{--_icon-size: var(--odx-typography-font-size-4);--_margin-icon: 0}[part=input]{background-color:var(--odx-color-transparent);outline:none;border:none;flex:1 1 auto;block-size:100%;padding:0;color:inherit;min-width:none;font-weight:var(--odx-typography-font-weight-medium);&::placeholder{color:var(--odx-color-foreground-muted);font-weight:var(--odx-typography-font-weight-normal)}&::-webkit-search-decoration,&::-webkit-search-cancel-button,&::-webkit-search-results-button,&::-webkit-search-results-decoration{-webkit-appearance:none}}::slotted(odx-icon[slot]){--size: var(--odx-typography-font-size-5)}}@layer variant{:host([block]){display:block}}";
2221
2218
 
2222
2219
  var __defProp$N = Object.defineProperty;
2223
2220
  var __getOwnPropDesc$N = Object.getOwnPropertyDescriptor;
@@ -2235,13 +2232,19 @@ var __decorateClass$N = (decorators, target, key, kind) => {
2235
2232
  var __accessCheck$i = (obj, member, msg) => member.has(obj) || __typeError$i("Cannot " + msg);
2236
2233
  var __privateGet$f = (obj, member, getter) => (__accessCheck$i(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
2237
2234
  var __privateAdd$i = (obj, member, value) => member.has(obj) ? __typeError$i("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
2238
- var _handleInput$1, _handleKeyDown$2, _handleClear$1;
2235
+ var __privateMethod$b = (obj, member, method) => (__accessCheck$i(obj, member, "access private method"), method);
2236
+ var _OdxInput_instances, isClearable_fn$1, _handleClear$2, _handleInput$1, _handleKeyDown$2;
2239
2237
  let OdxInput = class extends FormControl(CustomElement) {
2240
2238
  constructor() {
2241
2239
  super(...arguments);
2242
- this.clearable = true;
2240
+ __privateAdd$i(this, _OdxInput_instances);
2241
+ this.block = false;
2242
+ this.clearable = false;
2243
2243
  this.placeholder = "";
2244
2244
  this.type = "text";
2245
+ __privateAdd$i(this, _handleClear$2, () => {
2246
+ this.clear();
2247
+ });
2245
2248
  __privateAdd$i(this, _handleInput$1, (event) => {
2246
2249
  this.value = event.target.value;
2247
2250
  });
@@ -2249,31 +2252,33 @@ let OdxInput = class extends FormControl(CustomElement) {
2249
2252
  const { actions } = getKeyboardEventInfo(event);
2250
2253
  if (!actions.escape) return;
2251
2254
  event.preventDefault();
2252
- __privateGet$f(this, _handleClear$1).call(this);
2253
- });
2254
- __privateAdd$i(this, _handleClear$1, () => {
2255
- if (!this.clearable || this.emit("clear")) return;
2256
2255
  this.clear();
2257
2256
  });
2258
2257
  }
2259
2258
  clear() {
2259
+ if (!__privateMethod$b(this, _OdxInput_instances, isClearable_fn$1).call(this) || this.emit("clear")) return;
2260
2260
  this.value = "";
2261
+ this.focus();
2262
+ }
2263
+ focus() {
2264
+ this.focusableElement.focus();
2261
2265
  }
2262
2266
  render() {
2263
2267
  const clearButton = when(
2264
- this.clearable && this.value,
2265
- () => html`<odx-icon-button icon="core::error" @click=${__privateGet$f(this, _handleClear$1)} variant="ghost" tabindex="-1"></odx-icon-button>`
2268
+ __privateMethod$b(this, _OdxInput_instances, isClearable_fn$1).call(this),
2269
+ () => html`<odx-icon-button class="clear" icon="core::close" size="sm" tabindex="-1" variant="ghost" @click=${__privateGet$f(this, _handleClear$2)}></odx-icon-button>`
2266
2270
  );
2267
2271
  return html`
2268
- <div class="base">
2272
+ <div part="base">
2269
2273
  <slot name="prefix"></slot>
2270
2274
  <input
2271
2275
  placeholder=${this.placeholder}
2272
- class="input"
2276
+ part="input"
2273
2277
  type=${this.type}
2274
2278
  ?disabled=${this.disabled}
2275
2279
  ?readonly=${this.readonly}
2276
2280
  .value=${this.value}
2281
+ size="1"
2277
2282
  @keydown=${__privateGet$f(this, _handleKeyDown$2)}
2278
2283
  @change=${forwardEvent(this)}
2279
2284
  @input=${__privateGet$f(this, _handleInput$1)}
@@ -2285,10 +2290,20 @@ let OdxInput = class extends FormControl(CustomElement) {
2285
2290
  `;
2286
2291
  }
2287
2292
  };
2293
+ _OdxInput_instances = new WeakSet();
2294
+ isClearable_fn$1 = function() {
2295
+ return this.clearable && !this.disabled && !this.readonly && !this.required && !!this.value;
2296
+ };
2297
+ _handleClear$2 = new WeakMap();
2288
2298
  _handleInput$1 = new WeakMap();
2289
2299
  _handleKeyDown$2 = new WeakMap();
2290
- _handleClear$1 = new WeakMap();
2291
2300
  OdxInput.formAssociated = true;
2301
+ __decorateClass$N([
2302
+ query("input")
2303
+ ], OdxInput.prototype, "focusableElement", 2);
2304
+ __decorateClass$N([
2305
+ property({ type: Boolean, reflect: true })
2306
+ ], OdxInput.prototype, "block", 2);
2292
2307
  __decorateClass$N([
2293
2308
  property({ type: Boolean })
2294
2309
  ], OdxInput.prototype, "clearable", 2);
@@ -2302,7 +2317,7 @@ __decorateClass$N([
2302
2317
  property({ reflect: true })
2303
2318
  ], OdxInput.prototype, "variant", 2);
2304
2319
  OdxInput = __decorateClass$N([
2305
- customElement("odx-input", [styles$J])
2320
+ customElement("odx-input", [styles$I])
2306
2321
  ], OdxInput);
2307
2322
 
2308
2323
  const InputVariant = {
@@ -2311,7 +2326,7 @@ const InputVariant = {
2311
2326
  LG: "lg"
2312
2327
  };
2313
2328
 
2314
- const styles$I = ":host{display:-webkit-box;min-inline-size:min-content;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:var(--max, 2)}";
2329
+ const styles$H = ":host{display:-webkit-box;min-inline-size:min-content;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:var(--max, 2)}";
2315
2330
 
2316
2331
  var __defProp$M = Object.defineProperty;
2317
2332
  var __getOwnPropDesc$M = Object.getOwnPropertyDescriptor;
@@ -2342,10 +2357,10 @@ __decorateClass$M([
2342
2357
  property({ type: Number })
2343
2358
  ], OdxLineClamp.prototype, "max", 2);
2344
2359
  OdxLineClamp = __decorateClass$M([
2345
- customElement("odx-line-clamp", [styles$I])
2360
+ customElement("odx-line-clamp", [styles$H])
2346
2361
  ], OdxLineClamp);
2347
2362
 
2348
- const styles$H = "@layer base{:host{--indent-level: 0;--_block-size: var(--odx-size-300);--_padding-block: var(--odx-size-75);--_padding-inline: var(--odx-size-50);--_margin-icon: 0;display:flex;flex-direction:column;max-inline-size:100%;block-size:auto;place-items:initial}.base,.spinner{padding-inline-start:calc(var(--odx-size-50) + var(--indent-level) * var(--odx-size-200))}.spinner{padding-inline-end:var(--odx-size-100)}.base{block-size:var(--_block-size);text-align:start;place-content:flex-start;outline-offset:calc(-1 * var(--odx-focus-ring-offset));z-index:1;line-height:var(--odx-typography-line-height-2)}.base:after{display:block;block-size:var(--odx-size-px);background-color:var(--odx-color-separator);position:absolute;inset:auto var(--odx-size-37) -1px;transition:var(--odx-transition-reduced);transition-property:opacity;z-index:0}:host(:is(:not(:last-of-type),[expanded]):not(:is([aria-current],[aria-disabled=\"true\"]))) .base:after{content:\"\"}.content{margin-inline-end:auto}.base>*{--odx-focus-ring-offset: 0}[part=control]::part(icon){transition:var(--odx-transition-reduced);transition-property:transform}}@layer variant{:host(:not([compact])){::slotted(odx-icon){margin-inline:var(--odx-size-37)}}:host([compact]){--_block-size: var(--odx-size-225);[part=control]{--_icon-size: var(--odx-size-150)}}}@layer state{:host(:not([muted]):hover):after{opacity:0}:host([muted]:not([aria-disabled=\"true\"])){--_color-background-hover: var(--_color-background);--_color-background-pressed: var(--_color-background);cursor:default}:host([aria-current]){--_color-background: var(--odx-color-selected);--_color-background-hover: var(--odx-color-selected-hover)}:host([aria-current][aria-disabled=\"true\"]){--_color-background: var(--odx-color-disabled-fill-selected);--_color-background-hover: var(--_color-background);--_color-background-pressed: var(--_color-background);--_color-foreground: var(--odx-color-disabled-foreground-selected);cursor:not-allowed}:host([aria-expanded=\"true\"]){[part=control]::part(icon){transform:rotate(180deg)}}::slotted(odx-list){--item-indent-level: calc(var(--indent-level) + 1)}}";
2363
+ const styles$G = "@layer base{:host{--indent-level: 0;--_block-size: var(--odx-size-300);--_padding-block: var(--odx-size-75);--_padding-inline: var(--odx-size-50);--_margin-icon: 0;display:flex;flex-direction:column;max-inline-size:100%;block-size:auto;place-items:initial}[part=base]{block-size:var(--_block-size);text-align:start;place-content:flex-start;outline-offset:calc(-1 * var(--odx-focus-ring-offset));z-index:1;padding-inline-start:calc(var(--odx-size-50) + var(--indent-level) * var(--odx-size-200));line-height:var(--odx-typography-line-height-2);>*{--odx-focus-ring-offset: 0}}[part=separator]{--margin-block: 0;--margin-inline: var(--odx-size-50)}[part=label]{flex:1 1 auto}[part=base]>*{--odx-focus-ring-offset: 0}[part=expand-control]::part(icon){transition:var(--odx-transition-reduced)}::slotted(odx-list){--item-indent-level: calc(var(--indent-level) + 1)}:host(:last-of-type) [part=separator]{opacity:0}}@layer variant{[part=base]:has([part=expand-control]:active){--_color-background-pressed: var(--_color-background-hover)}:host(:not([compact])){::slotted(odx-icon){margin-inline:var(--odx-size-37)}}:host([compact]){--_block-size: var(--odx-size-225);[part=expand-control]{--_icon-size: var(--odx-size-150)}}}@layer state{:host(:not([muted]):hover):after{opacity:0}:host([muted]:not([aria-disabled=\"true\"])){--_color-background-hover: var(--_color-background);--_color-background-pressed: var(--_color-background);cursor:default}:host([aria-current]){--_color-background: var(--odx-color-selected);--_color-background-hover: var(--odx-color-selected-hover)}:host([aria-current][aria-disabled=\"true\"]){--_color-background: var(--odx-color-disabled-fill-selected);--_color-background-hover: var(--_color-background);--_color-background-pressed: var(--_color-background);--_color-foreground: var(--odx-color-disabled-foreground-selected);cursor:not-allowed}:host([expanded]){[part=separator]{opacity:1}[part=expand-control]{--icon-rotation: 180deg}}}";
2349
2364
 
2350
2365
  var __defProp$L = Object.defineProperty;
2351
2366
  var __getOwnPropDesc$L = Object.getOwnPropertyDescriptor;
@@ -2363,69 +2378,87 @@ var __decorateClass$L = (decorators, target, key, kind) => {
2363
2378
  var __accessCheck$h = (obj, member, msg) => member.has(obj) || __typeError$h("Cannot " + msg);
2364
2379
  var __privateGet$e = (obj, member, getter) => (__accessCheck$h(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
2365
2380
  var __privateAdd$h = (obj, member, value) => member.has(obj) ? __typeError$h("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
2366
- var _handleClick$4;
2367
- let OdxListItem = class extends CanBeSelected(CanBeExpanded(BaseButton)) {
2381
+ var __privateMethod$a = (obj, member, method) => (__accessCheck$h(obj, member, "access private method"), method);
2382
+ var _OdxListItem_instances, updateAriaAttributes_fn$1, _handleClick$4;
2383
+ let OdxListItem = class extends CanBeSelected(CanBeExpanded(InteractiveElement)) {
2368
2384
  constructor() {
2369
2385
  super();
2386
+ __privateAdd$h(this, _OdxListItem_instances);
2370
2387
  this.compact = false;
2371
2388
  this.muted = false;
2372
- this.withControl = false;
2373
- this.withExpandedIndicator = false;
2389
+ this.withExpandControl = false;
2390
+ this.withExpandIndicator = false;
2374
2391
  __privateAdd$h(this, _handleClick$4, (event) => {
2375
- const expandControl = this.shadowRoot?.querySelector(this.withControl ? ".expand-control" : ".base");
2376
- if (!getElementFromEvent(event, (node) => node === expandControl)) return;
2392
+ const expandControl = this.shadowRoot?.querySelector(this.withExpandControl ? '[part="expand-control"]' : '[part="base"]');
2393
+ if (!(this.withExpandIndicator || this.isExpandable()) || !getElementFromEvent(event, (node) => node === expandControl)) return;
2377
2394
  this.toggle();
2378
- if (!this.expanded) return;
2379
- for (const item of Array.from(this.querySelectorAll("odx-list-item"))) {
2380
- item.toggle(false);
2381
- }
2382
2395
  });
2383
2396
  if (!isServer) {
2384
2397
  this.addEventListener("click", __privateGet$e(this, _handleClick$4));
2385
2398
  }
2386
2399
  }
2387
2400
  isExpandable() {
2388
- return !this.disabled && !this.loading && this.querySelectorAll('[slot="expand"]').length > 0;
2401
+ return !this.disabled && !this.loading && this.expandableItems.length > 0;
2389
2402
  }
2390
2403
  connectedCallback() {
2391
2404
  super.connectedCallback();
2392
2405
  this.role ||= "listitem";
2393
2406
  }
2394
2407
  render() {
2395
- const expandSlot = html`<slot name="expand"></slot>`;
2408
+ const expandSlot = html`<slot name="expand" @slotchange=${() => this.requestUpdate()}></slot>`;
2396
2409
  return html`
2397
- ${when(this.loading, () => this.renderSpinner(true))}
2398
2410
  ${super.render()}
2411
+ <odx-separator part="separator"></odx-separator>
2399
2412
  ${when(
2400
2413
  this.isExpandable(),
2401
- () => html`<odx-toggle-content class="expand-content" ?expanded=${this.expanded}>${expandSlot}</odx-toggle-content>`,
2414
+ () => html`<odx-toggle-content part="content" id="list-item-content" role="region" ?hidden=${!this.expanded}>${expandSlot}</odx-toggle-content>`,
2402
2415
  () => html`<odx-visually-hidden>${expandSlot}</odx-visually-hidden>`
2403
2416
  )}
2404
2417
  `;
2405
2418
  }
2406
2419
  renderContent() {
2420
+ const controlSize = this.compact ? ButtonSize.SM : void 0;
2407
2421
  return html`
2408
- ${super.renderContent(false)}
2422
+ ${super.renderContent(true)}
2409
2423
  ${when(
2410
- this.withExpandedIndicator || this.isExpandable(),
2424
+ this.withExpandIndicator || this.isExpandable(),
2411
2425
  () => html`
2412
- <odx-icon-button part="control" icon="core::chevron-down" size=${this.compact ? "sm" : "md"} variant="ghost" ?disabled=${this.disabled} ?inert=${!this.withControl}>
2426
+ <odx-icon-button
2427
+ id="expand-control"
2428
+ part="expand-control"
2429
+ icon="core::chevron-down"
2430
+ variant="ghost"
2431
+ size=${optionalAttr(controlSize)}
2432
+ ?disabled=${this.disabled}
2433
+ ?inert=${!this.withExpandControl}
2434
+ >
2413
2435
  </odx-icon-button>
2414
2436
  `
2415
2437
  )}
2416
2438
  `;
2417
2439
  }
2418
- renderSpinner(overlay = false) {
2419
- return html`<odx-skeleton class=${classMap({ spinner: true, overlay })} size="sm"></odx-skeleton>`;
2420
- }
2421
- willUpdate(props) {
2422
- super.willUpdate(props);
2423
- if (props.has("expanded")) {
2424
- this.ariaExpanded = toAriaBooleanAttribute(this.expanded);
2440
+ updated(props) {
2441
+ super.updated?.(props);
2442
+ if (props.has("disabled") || props.has("expanded")) {
2443
+ __privateMethod$a(this, _OdxListItem_instances, updateAriaAttributes_fn$1).call(this);
2425
2444
  }
2426
2445
  }
2427
2446
  };
2447
+ _OdxListItem_instances = new WeakSet();
2448
+ updateAriaAttributes_fn$1 = function() {
2449
+ const region = this.shadowRoot?.getElementById("list-item-content");
2450
+ if (!region) return;
2451
+ const expandControl = this.shadowRoot?.querySelector(this.withExpandControl ? '[part="expand-control"]' : '[part="base"]');
2452
+ if (!expandControl) return;
2453
+ expandControl.ariaExpanded = toAriaBooleanAttribute(this.expanded);
2454
+ expandControl.setAttribute("aria-controls", region.id);
2455
+ region.setAttribute("aria-labelledby", "expand-control");
2456
+ region.ariaHidden = toAriaBooleanAttribute(this.disabled || !this.expanded);
2457
+ };
2428
2458
  _handleClick$4 = new WeakMap();
2459
+ __decorateClass$L([
2460
+ queryAssignedElements({ slot: "expand" })
2461
+ ], OdxListItem.prototype, "expandableItems", 2);
2429
2462
  __decorateClass$L([
2430
2463
  property({ type: Boolean, reflect: true })
2431
2464
  ], OdxListItem.prototype, "compact", 2);
@@ -2433,16 +2466,16 @@ __decorateClass$L([
2433
2466
  property({ type: Boolean, reflect: true })
2434
2467
  ], OdxListItem.prototype, "muted", 2);
2435
2468
  __decorateClass$L([
2436
- property({ type: Boolean, attribute: "with-control" })
2437
- ], OdxListItem.prototype, "withControl", 2);
2469
+ property({ type: Boolean, attribute: "with-expand-control" })
2470
+ ], OdxListItem.prototype, "withExpandControl", 2);
2438
2471
  __decorateClass$L([
2439
- property({ type: Boolean, attribute: "with-expanded-indicator" })
2440
- ], OdxListItem.prototype, "withExpandedIndicator", 2);
2472
+ property({ type: Boolean, attribute: "with-expand-indicator" })
2473
+ ], OdxListItem.prototype, "withExpandIndicator", 2);
2441
2474
  OdxListItem = __decorateClass$L([
2442
- customElement("odx-list-item", [BaseButton.styles, styles$H])
2475
+ customElement("odx-list-item", [styles$G])
2443
2476
  ], OdxListItem);
2444
2477
 
2445
- const styles$G = "@layer base{:host{display:block;--item-indent-level: 0}::slotted(odx-list-item){--indent-level: var(--item-indent-level)}}";
2478
+ const styles$F = "@layer base{:host{display:block;--item-indent-level: 0}::slotted(odx-list-item){--indent-level: var(--item-indent-level)}}";
2446
2479
 
2447
2480
  var __defProp$K = Object.defineProperty;
2448
2481
  var __getOwnPropDesc$K = Object.getOwnPropertyDescriptor;
@@ -2455,16 +2488,24 @@ var __decorateClass$K = (decorators, target, key, kind) => {
2455
2488
  return result;
2456
2489
  };
2457
2490
  let OdxList = class extends CustomElement {
2491
+ constructor() {
2492
+ super();
2493
+ this.multiple = false;
2494
+ new ExpandableItemManager(this, { getItems: () => Array.from(this.querySelectorAll('[role="listitem"]')) });
2495
+ }
2458
2496
  connectedCallback() {
2459
2497
  super.connectedCallback();
2460
2498
  this.role = "list";
2461
2499
  }
2462
2500
  };
2501
+ __decorateClass$K([
2502
+ property({ type: Boolean, reflect: true })
2503
+ ], OdxList.prototype, "multiple", 2);
2463
2504
  OdxList = __decorateClass$K([
2464
- customElement("odx-list", [styles$G])
2505
+ customElement("odx-list", [styles$F])
2465
2506
  ], OdxList);
2466
2507
 
2467
- const styles$F = "@layer base{:host{--_overlay-fill-color: var(--odx-color-backdrop, rgba(255, 255, 255, .25));display:contents;overflow:hidden;border-radius:inherit}:host::part(overlay){display:flex;flex-direction:column;place-content:center;place-items:center;position:absolute;inset:0;pointer-events:none;opacity:0;visibility:hidden;transition:var(--odx-transition-reduced) allow-discrete;overflow:hidden;border-radius:inherit}:host::part(content){min-inline-size:var(--odx-size-225);text-align:center}}@layer state{:host([loading])::part(overlay){background-color:var(--_overlay-fill-color);z-index:9999;opacity:1;backdrop-filter:blur(var(--odx-size-12));pointer-events:all;visibility:visible}}";
2508
+ const styles$E = "@layer base{:host{--_overlay-fill-color: var(--odx-color-backdrop, rgba(255, 255, 255, .25));display:contents;overflow:hidden;border-radius:inherit}:host::part(overlay){display:flex;flex-direction:column;place-content:center;place-items:center;position:absolute;inset:0;pointer-events:none;opacity:0;visibility:hidden;transition:var(--odx-transition-reduced) allow-discrete;overflow:hidden;border-radius:inherit}:host::part(content){min-inline-size:var(--odx-size-225);text-align:center}}@layer state{:host([loading])::part(overlay){background-color:var(--_overlay-fill-color);z-index:9999;opacity:1;backdrop-filter:blur(var(--odx-size-12));pointer-events:all;visibility:visible}}";
2468
2509
 
2469
2510
  var __defProp$J = Object.defineProperty;
2470
2511
  var __getOwnPropDesc$J = Object.getOwnPropertyDescriptor;
@@ -2535,10 +2576,10 @@ __decorateClass$J([
2535
2576
  query('[part="overlay"]', true)
2536
2577
  ], OdxLoadingOverlay.prototype, "overlay", 2);
2537
2578
  OdxLoadingOverlay = __decorateClass$J([
2538
- customElement("odx-loading-overlay", [styles$F])
2579
+ customElement("odx-loading-overlay", [styles$E])
2539
2580
  ], OdxLoadingOverlay);
2540
2581
 
2541
- const styles$E = "@layer base{:host{--_animation-duration: 1.5s;--_animation-delay: 0s;--_size: var(--odx-size-225);--_space: var(--odx-size-37);--_track-size: calc(var(--odx-size-37) - var(--odx-size-px));--_track-color: var(--odx-color-transparent-pressed);display:flex;place-content:center;place-items:center;color:inherit;font-size:var(--_size);block-size:1em}.base{display:block;block-size:100%;inline-size:100%;aspect-ratio:1;animation:loading-spinner-rotation-animation 1.5s linear infinite}:host(:not([variant=\"dots\"])){inline-size:1em;.track,.indicator{stroke-width:var(--_track-size)}.track{stroke:var(--_track-color)}.indicator{stroke:currentColor;color:inherit;stroke-dasharray:90,180;stroke-dashoffset:-5;animation:loading-spinner-animation 1.5s ease-in-out infinite;stroke-linecap:round}:not(svg){transform-origin:0px 0px}}:host([variant=\"dots\"]){gap:calc(var(--_space) / 2);padding:var(--_space);animation:loading-spinner-dots-entry-animation .25s linear both;.indicator{background-color:currentColor;border-radius:50%;block-size:calc(var(--_size) / 3);flex:0 0 calc(var(--_size) / 3);z-index:3;animation:loading-spinner-dots-animation var(--_animation-duration) var(--_animation-delay) infinite cubic-bezier(.96,.21,.41,.76) forwards;&:nth-child(1){--_animation-delay: calc(-1 * var(--_animation-duration) / 6)}&:nth-child(2){--_animation-delay: calc(-1 * var(--_animation-duration) / 12)}&:nth-child(3){--_animation-delay: 0s}}}}@keyframes loading-spinner-animation{0%{stroke-dasharray:1,150;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-35}to{stroke-dasharray:90,150;stroke-dashoffset:-124}}@keyframes loading-spinner-rotation-animation{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes loading-spinner-dots-entry-animation{0%{opacity:0}to{opacity:1}}@keyframes loading-spinner-dots-animation{0%,75%,to{transform:scale(.667);background-color:var(--odx-color-transparent-pressed)}50%{transform:scale(1);background-color:currentColor}}";
2582
+ const styles$D = "@layer base{:host{--_animation-duration: 1.5s;--_animation-delay: 0s;--_size: var(--odx-size-225);--_space: var(--odx-size-37);--_track-size: calc(var(--odx-size-37) - var(--odx-size-px));--_track-color: var(--odx-color-transparent-pressed);display:flex;place-content:center;place-items:center;color:inherit;font-size:var(--_size);block-size:1em}.base{display:block;block-size:100%;inline-size:100%;aspect-ratio:1;animation:loading-spinner-rotation-animation 1.5s linear infinite}:host(:not([variant=\"dots\"])){inline-size:1em;.track,.indicator{stroke-width:var(--_track-size)}.track{stroke:var(--_track-color)}.indicator{stroke:currentColor;color:inherit;stroke-dasharray:90,180;stroke-dashoffset:-5;animation:loading-spinner-animation 1.5s ease-in-out infinite;stroke-linecap:round}:not(svg){transform-origin:0px 0px}}:host([variant=\"dots\"]){gap:calc(var(--_space) / 2);padding:var(--_space);animation:loading-spinner-dots-entry-animation .25s linear both;.indicator{background-color:currentColor;border-radius:50%;block-size:calc(var(--_size) / 3);flex:0 0 calc(var(--_size) / 3);z-index:3;animation:loading-spinner-dots-animation var(--_animation-duration) var(--_animation-delay) infinite cubic-bezier(.96,.21,.41,.76) forwards;&:nth-child(1){--_animation-delay: calc(-1 * var(--_animation-duration) / 6)}&:nth-child(2){--_animation-delay: calc(-1 * var(--_animation-duration) / 12)}&:nth-child(3){--_animation-delay: 0s}}}}@keyframes loading-spinner-animation{0%{stroke-dasharray:1,150;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-35}to{stroke-dasharray:90,150;stroke-dashoffset:-124}}@keyframes loading-spinner-rotation-animation{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes loading-spinner-dots-entry-animation{0%{opacity:0}to{opacity:1}}@keyframes loading-spinner-dots-animation{0%,75%,to{transform:scale(.667);background-color:var(--odx-color-transparent-pressed)}50%{transform:scale(1);background-color:currentColor}}";
2542
2583
 
2543
2584
  var __defProp$I = Object.defineProperty;
2544
2585
  var __getOwnPropDesc$I = Object.getOwnPropertyDescriptor;
@@ -2589,10 +2630,10 @@ __decorateClass$I([
2589
2630
  property({ reflect: true })
2590
2631
  ], OdxLoadingSpinner.prototype, "variant", 2);
2591
2632
  OdxLoadingSpinner = __decorateClass$I([
2592
- customElement("odx-loading-spinner", [styles$E])
2633
+ customElement("odx-loading-spinner", [styles$D])
2593
2634
  ], OdxLoadingSpinner);
2594
2635
 
2595
- const styles$D = ":host{aspect-ratio:92 / 36;background-color:currentColor;block-size:var(--_logo-block-size);display:inline-block;mask-image:url(\"data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='UTF-8'%20?%3e%3csvg%20id='Layer_1'%20data-name='Layer%201'%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2091.6%2035.43'%3e%3cpath%20d='m81.18,29.07h5.63v-14.43c0-1.06,0-1.38.21-1.7.32-.74,1.17-1.17,2.23-1.17.96,0,1.59.21,2.34.74v-4.24c-6.27.11-8.29.53-10.41,2.23v18.56Zm-12.11-10.93v-4.24c0-1.59.74-2.44,2.34-2.44,1.49,0,2.34.85,2.34,2.33v4.35h-4.68Zm10.31,3.29v-8.06c0-3.4-1.81-4.99-5.63-4.99h-4.68c-2.02,0-2.87.21-3.93,1.06-1.06.96-1.7,2.33-1.7,3.93v10.71c0,1.48.43,2.55,1.38,3.61,1.06,1.06,2.02,1.38,4.25,1.38h10.2v-4.24c-2.87.85-4.57,1.06-6.69,1.06-2.44,0-3.51-.53-3.51-1.91v-2.55h10.31Zm-27.63,6.37c0-1.59.74-2.44,2.34-2.44s2.44.85,2.44,2.44v2.33c0,1.38-.85,2.23-2.34,2.23-1.59,0-2.44-.85-2.44-2.23v-2.33Zm10.41-.53c0-1.59-.32-2.65-1.17-3.61-1.06-1.17-2.23-1.49-4.46-1.49h-4.68c-2.12,0-2.97.21-4.04,1.06-1.06.95-1.7,2.44-1.7,4.03v3.08c0,1.49.53,2.76,1.38,3.61,1.06,1.17,2.02,1.48,4.36,1.48h4.68c2.02,0,2.98-.21,4.04-1.06,1.06-.95,1.59-2.12,1.59-4.03v-3.08Zm-10.41-13.58c0-1.38.85-2.23,2.44-2.23s2.44.85,2.44,2.23v2.44c0,1.38-.96,2.23-2.44,2.23-1.59,0-2.44-.85-2.44-2.23v-2.44Zm9.99-5.3h-9.99c-1.91,0-2.66.21-3.72,1.06-1.06.96-1.59,2.33-1.59,3.93v3.08c0,1.27.43,2.55,1.28,3.5,1.06,1.17,1.91,1.49,4.04,1.49h4.57c2.02,0,2.87-.32,3.83-1.06,1.06-.95,1.59-2.23,1.59-3.93v-8.06Zm-22.63,17.4h-2.44c-.96,0-1.7-.32-2.13-1.06-.21-.32-.21-.42-.21-1.38v-1.91c0-1.59.74-2.33,2.34-2.33h2.44v6.68Zm0-9.97h-4.89c-1.91,0-2.76.21-3.72,1.17-1.06.85-1.59,2.12-1.59,3.82v3.29c0,1.48.32,2.55,1.17,3.5,1.06,1.17,2.02,1.48,4.25,1.48h10.52v-15.81c0-1.38-.43-2.55-1.38-3.5-1.17-1.17-2.13-1.49-4.25-1.49h-8.5v4.24c2.13-.85,3.51-1.17,5.42-1.17,2.02,0,2.97.64,2.97,2.02v2.44Zm2.34-15.81c-1.81,0-3.19,1.38-3.19,3.08,0,1.8,1.38,3.18,3.19,3.18,1.7,0,3.08-1.38,3.08-3.18,0-1.7-1.38-3.08-3.08-3.08Zm-7.55,0c-1.81,0-3.19,1.38-3.19,3.08,0,1.8,1.38,3.18,3.19,3.18,1.7,0,3.08-1.38,3.08-3.18,0-1.7-1.38-3.08-3.08-3.08Zm-14.77,29.07h5.63v-14.43c0-1.06,0-1.38.21-1.7.32-.74,1.17-1.17,2.23-1.17.96,0,1.59.21,2.34.74v-4.24c-6.27.11-8.29.53-10.41,2.23v18.56ZM0,.72v2.97h9.14c1.06,0,1.59.21,2.13.74.43.53.43.74.43,2.65v15.29c0,2.87-.53,3.4-3.08,3.4h-2.55V6.67H0v22.4h11.26c2.66,0,3.4-.21,4.68-1.49,1.17-1.17,1.38-2.02,1.38-5.31V6.24c0-2.02-.21-2.76-1.06-3.82-1.06-1.17-2.44-1.7-4.36-1.7H0Z'%20/%3e%3c/svg%3e\");mask-repeat:no-repeat;mask-origin:content-box;mask-position:center center;margin-block:var(--_logo-spacing)}:host([compact]){aspect-ratio:1;mask-image:url(\"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2017%2028'%3e%3cpath%20d='M0%200v2.97h9.14c1.06%200%201.59.21%202.13.74.43.53.43.74.43%202.65v15.29c0%202.87-.53%203.4-3.08%203.4H6.07V5.95H0v22.4h11.26c2.66%200%203.4-.21%204.68-1.49%201.17-1.17%201.38-2.02%201.38-5.31V5.52c0-2.02-.21-2.76-1.06-3.82C15.2.53%2013.82%200%2011.9%200H0Z'%20/%3e%3c/svg%3e\")}:host([size=\"xs\"]){--_logo-block-size: calc(var(--odx-size-150) - 2 * var(--odx-size-25));--_logo-spacing: var(--odx-size-25)}:host,:host([size=\"sm\"]){--_logo-block-size: var(--odx-size-150);--_logo-spacing: var(--odx-size-37)}:host([size=\"md\"]){--_logo-block-size: var(--odx-size-225);--_logo-spacing: var(--odx-size-37)}:host([size=\"lg\"]){--_logo-block-size: var(--odx-size-300);--_logo-spacing: var(--odx-size-37)}:host([size=\"xl\"]){--_logo-block-size: var(--odx-size-400);--_logo-spacing: var(--odx-size-37)}";
2636
+ const styles$C = ":host{aspect-ratio:92 / 36;background-color:currentColor;block-size:var(--_logo-block-size);display:inline-block;mask-image:url(\"data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='UTF-8'%20?%3e%3csvg%20id='Layer_1'%20data-name='Layer%201'%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2091.6%2035.43'%3e%3cpath%20d='m81.18,29.07h5.63v-14.43c0-1.06,0-1.38.21-1.7.32-.74,1.17-1.17,2.23-1.17.96,0,1.59.21,2.34.74v-4.24c-6.27.11-8.29.53-10.41,2.23v18.56Zm-12.11-10.93v-4.24c0-1.59.74-2.44,2.34-2.44,1.49,0,2.34.85,2.34,2.33v4.35h-4.68Zm10.31,3.29v-8.06c0-3.4-1.81-4.99-5.63-4.99h-4.68c-2.02,0-2.87.21-3.93,1.06-1.06.96-1.7,2.33-1.7,3.93v10.71c0,1.48.43,2.55,1.38,3.61,1.06,1.06,2.02,1.38,4.25,1.38h10.2v-4.24c-2.87.85-4.57,1.06-6.69,1.06-2.44,0-3.51-.53-3.51-1.91v-2.55h10.31Zm-27.63,6.37c0-1.59.74-2.44,2.34-2.44s2.44.85,2.44,2.44v2.33c0,1.38-.85,2.23-2.34,2.23-1.59,0-2.44-.85-2.44-2.23v-2.33Zm10.41-.53c0-1.59-.32-2.65-1.17-3.61-1.06-1.17-2.23-1.49-4.46-1.49h-4.68c-2.12,0-2.97.21-4.04,1.06-1.06.95-1.7,2.44-1.7,4.03v3.08c0,1.49.53,2.76,1.38,3.61,1.06,1.17,2.02,1.48,4.36,1.48h4.68c2.02,0,2.98-.21,4.04-1.06,1.06-.95,1.59-2.12,1.59-4.03v-3.08Zm-10.41-13.58c0-1.38.85-2.23,2.44-2.23s2.44.85,2.44,2.23v2.44c0,1.38-.96,2.23-2.44,2.23-1.59,0-2.44-.85-2.44-2.23v-2.44Zm9.99-5.3h-9.99c-1.91,0-2.66.21-3.72,1.06-1.06.96-1.59,2.33-1.59,3.93v3.08c0,1.27.43,2.55,1.28,3.5,1.06,1.17,1.91,1.49,4.04,1.49h4.57c2.02,0,2.87-.32,3.83-1.06,1.06-.95,1.59-2.23,1.59-3.93v-8.06Zm-22.63,17.4h-2.44c-.96,0-1.7-.32-2.13-1.06-.21-.32-.21-.42-.21-1.38v-1.91c0-1.59.74-2.33,2.34-2.33h2.44v6.68Zm0-9.97h-4.89c-1.91,0-2.76.21-3.72,1.17-1.06.85-1.59,2.12-1.59,3.82v3.29c0,1.48.32,2.55,1.17,3.5,1.06,1.17,2.02,1.48,4.25,1.48h10.52v-15.81c0-1.38-.43-2.55-1.38-3.5-1.17-1.17-2.13-1.49-4.25-1.49h-8.5v4.24c2.13-.85,3.51-1.17,5.42-1.17,2.02,0,2.97.64,2.97,2.02v2.44Zm2.34-15.81c-1.81,0-3.19,1.38-3.19,3.08,0,1.8,1.38,3.18,3.19,3.18,1.7,0,3.08-1.38,3.08-3.18,0-1.7-1.38-3.08-3.08-3.08Zm-7.55,0c-1.81,0-3.19,1.38-3.19,3.08,0,1.8,1.38,3.18,3.19,3.18,1.7,0,3.08-1.38,3.08-3.18,0-1.7-1.38-3.08-3.08-3.08Zm-14.77,29.07h5.63v-14.43c0-1.06,0-1.38.21-1.7.32-.74,1.17-1.17,2.23-1.17.96,0,1.59.21,2.34.74v-4.24c-6.27.11-8.29.53-10.41,2.23v18.56ZM0,.72v2.97h9.14c1.06,0,1.59.21,2.13.74.43.53.43.74.43,2.65v15.29c0,2.87-.53,3.4-3.08,3.4h-2.55V6.67H0v22.4h11.26c2.66,0,3.4-.21,4.68-1.49,1.17-1.17,1.38-2.02,1.38-5.31V6.24c0-2.02-.21-2.76-1.06-3.82-1.06-1.17-2.44-1.7-4.36-1.7H0Z'%20/%3e%3c/svg%3e\");mask-repeat:no-repeat;mask-origin:content-box;mask-position:center center;margin-block:var(--_logo-spacing)}:host([compact]){aspect-ratio:1;mask-image:url(\"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2017%2028'%3e%3cpath%20d='M0%200v2.97h9.14c1.06%200%201.59.21%202.13.74.43.53.43.74.43%202.65v15.29c0%202.87-.53%203.4-3.08%203.4H6.07V5.95H0v22.4h11.26c2.66%200%203.4-.21%204.68-1.49%201.17-1.17%201.38-2.02%201.38-5.31V5.52c0-2.02-.21-2.76-1.06-3.82C15.2.53%2013.82%200%2011.9%200H0Z'%20/%3e%3c/svg%3e\")}:host([size=\"xs\"]){--_logo-block-size: calc(var(--odx-size-150) - 2 * var(--odx-size-25));--_logo-spacing: var(--odx-size-25)}:host,:host([size=\"sm\"]){--_logo-block-size: var(--odx-size-150);--_logo-spacing: var(--odx-size-37)}:host([size=\"md\"]){--_logo-block-size: var(--odx-size-225);--_logo-spacing: var(--odx-size-37)}:host([size=\"lg\"]){--_logo-block-size: var(--odx-size-300);--_logo-spacing: var(--odx-size-37)}:host([size=\"xl\"]){--_logo-block-size: var(--odx-size-400);--_logo-spacing: var(--odx-size-37)}";
2596
2637
 
2597
2638
  var __defProp$H = Object.defineProperty;
2598
2639
  var __getOwnPropDesc$H = Object.getOwnPropertyDescriptor;
@@ -2624,7 +2665,7 @@ __decorateClass$H([
2624
2665
  property({ type: Boolean, reflect: true })
2625
2666
  ], OdxLogo.prototype, "compact", 2);
2626
2667
  OdxLogo = __decorateClass$H([
2627
- customElement("odx-logo", [styles$D])
2668
+ customElement("odx-logo", [styles$C])
2628
2669
  ], OdxLogo);
2629
2670
 
2630
2671
  const LogoSize = {
@@ -2671,7 +2712,7 @@ OdxMainMenuButton = __decorateClass$G([
2671
2712
  customElement("odx-main-menu-button", [])
2672
2713
  ], OdxMainMenuButton);
2673
2714
 
2674
- const styles$C = ":host{--_color-fill: var(--odx-palette-transparent);--_color-text: inherit;--_color-outline: var(--odx-palette-transparent);user-select:none}.base{display:flex;place-items:center;background-color:var(--_color-fill);color:var(--_color-text);gap:var(--odx-size-50);block-size:var(--odx-size-300);padding-inline:var(--odx-size-100);font-weight:var(--odx-font-weight-medium);border-radius:var(--odx-border-radius-sm);outline:var(--odx-focus-ring-outline);outline-offset:var(--odx-focus-ring-offset);outline-color:var(--_color-outline);transition:var(--odx-transition-default);text-decoration:none;&:focus-visible{--_color-outline: var(--odx-focus-ring-color)}}:host(:hover){--_color-fill: var(--odx-color-foreground-highlight)}:host(:is([active],:active)){--_color-fill: var(--odx-color-foreground-highlight-pressed)}:host([aria-disabled=\"true\"]){--_color-text: var(--odx-color-disabled-foreground-brand);pointer-events:none}";
2715
+ const styles$B = ":host{--_color-fill: var(--odx-palette-transparent);--_color-text: inherit;--_color-outline: var(--odx-palette-transparent);user-select:none}[part=base]{display:flex;place-items:center;background-color:var(--_color-fill);color:var(--_color-text);gap:var(--odx-size-50);block-size:var(--odx-size-300);padding-inline:var(--odx-size-100);font-weight:var(--odx-font-weight-medium);border-radius:var(--odx-border-radius-sm);outline:var(--odx-focus-ring-outline);outline-offset:var(--odx-focus-ring-offset);outline-color:var(--_color-outline);transition:var(--odx-transition-default);text-decoration:none;&:focus-visible{--_color-outline: var(--odx-focus-ring-color)}}:host(:hover){--_color-fill: var(--odx-color-foreground-highlight)}:host(:is([active],:active)){--_color-fill: var(--odx-color-foreground-highlight-pressed)}:host([aria-disabled=\"true\"]){--_color-text: var(--odx-color-disabled-foreground-brand);pointer-events:none}";
2675
2716
 
2676
2717
  var __defProp$F = Object.defineProperty;
2677
2718
  var __getOwnPropDesc$F = Object.getOwnPropertyDescriptor;
@@ -2686,7 +2727,7 @@ var __decorateClass$F = (decorators, target, key, kind) => {
2686
2727
  let OdxMainMenuLink = class extends BaseLink {
2687
2728
  };
2688
2729
  OdxMainMenuLink = __decorateClass$F([
2689
- customElement("odx-main-menu-link", [styles$C])
2730
+ customElement("odx-main-menu-link", [styles$B])
2690
2731
  ], OdxMainMenuLink);
2691
2732
 
2692
2733
  var __defProp$E = Object.defineProperty;
@@ -2743,7 +2784,7 @@ OdxMainMenuTitle = __decorateClass$D([
2743
2784
  customElement("odx-main-menu-title")
2744
2785
  ], OdxMainMenuTitle);
2745
2786
 
2746
- const styles$B = ":host{--odx-link-color: var(--odx-color-foreground-light);--odx-link-color-hover: var(--odx-color-foreground-light);--odx-link-color-disabled: var(--odx-color-disabled-foreground-brand);--_transition-duration: var(--odx-motion-duration-default);grid-template-rows:auto 1fr auto auto;block-size:100%;inline-size:var(--odx-main-menu-max-width, min(100dvw, 384px));border:none;background-color:var(--odx-color-background-draeger);color:var(--odx-color-foreground-light);margin:0;padding:0;transform:translate(-100%);box-shadow:var(--odx-shadow-level-2);transition:transform var(--_transition-duration) allow-discrete,overlay var(--_transition-duration) allow-discrete,display var(--_transition-duration) allow-discrete}:host(:popover-open){display:grid;opacity:1;transform:translate(0);@starting-style{opacity:0;transform:translate(-100%)}}:host::backdrop{background-color:var(--odx-color-backdrop);backdrop-filter:blur(0);opacity:0;transition:backdrop-filter var(--_transition-duration),opacity var(--_transition-duration);cursor:default}:host(:popover-open)::backdrop{backdrop-filter:blur(var(--odx-elevation-blur));opacity:1}@starting-style{:host(:popover-open)::backdrop{backdrop-filter:blur(0);opacity:0}}[part~=navigation]{padding:var(--odx-size-75);overflow-y:auto}[part~=header]{padding-inline:var(--odx-size-150);padding-block-start:var(--odx-size-75);padding-block-end:clamp(0px,4dvh - calc(var(--odx-size-75)),var(--odx-size-75))}[part~=link-navigation],[part~=footer]{padding:var(--odx-size-150);padding-block:clamp(var(--odx-size-75),4dvh,var(--odx-size-150))}[part~=link-navigation]{padding-block-end:0;padding-block-start:var(--odx-size-75);column-gap:var(--odx-size-100)}";
2787
+ const styles$A = ":host{--odx-link-color: var(--odx-color-foreground-light);--odx-link-color-hover: var(--odx-color-foreground-light);--odx-link-color-disabled: var(--odx-color-disabled-foreground-brand);--_transition-duration: var(--odx-motion-duration-default);grid-template-rows:auto 1fr auto auto;block-size:100%;inline-size:var(--odx-main-menu-max-width, min(100dvw, 384px));border:none;background-color:var(--odx-color-background-draeger);color:var(--odx-color-foreground-light);margin:0;padding:0;transform:translate(-100%);box-shadow:var(--odx-shadow-level-2);transition:transform var(--_transition-duration) allow-discrete,overlay var(--_transition-duration) allow-discrete,display var(--_transition-duration) allow-discrete}:host(:popover-open){display:grid;opacity:1;transform:translate(0);@starting-style{opacity:0;transform:translate(-100%)}}:host::backdrop{background-color:var(--odx-color-backdrop);backdrop-filter:blur(0);opacity:0;transition:backdrop-filter var(--_transition-duration),opacity var(--_transition-duration);cursor:default}:host(:popover-open)::backdrop{backdrop-filter:blur(var(--odx-elevation-blur));opacity:1}@starting-style{:host(:popover-open)::backdrop{backdrop-filter:blur(0);opacity:0}}[part~=navigation]{padding:var(--odx-size-75);overflow-y:auto}[part~=header]{padding-inline:var(--odx-size-150);padding-block-start:var(--odx-size-75);padding-block-end:clamp(0px,4dvh - calc(var(--odx-size-75)),var(--odx-size-75))}[part~=link-navigation],[part~=footer]{padding:var(--odx-size-150);padding-block:clamp(var(--odx-size-75),4dvh,var(--odx-size-150))}[part~=link-navigation]{padding-block-end:0;padding-block-start:var(--odx-size-75);column-gap:var(--odx-size-100)}";
2747
2788
 
2748
2789
  var __defProp$C = Object.defineProperty;
2749
2790
  var __getOwnPropDesc$C = Object.getOwnPropertyDescriptor;
@@ -2761,12 +2802,12 @@ var __decorateClass$C = (decorators, target, key, kind) => {
2761
2802
  var __accessCheck$d = (obj, member, msg) => member.has(obj) || __typeError$d("Cannot " + msg);
2762
2803
  var __privateGet$b = (obj, member, getter) => (__accessCheck$d(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
2763
2804
  var __privateAdd$d = (obj, member, value) => member.has(obj) ? __typeError$d("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
2764
- var _focusTrap, _handleSlotChange$3, _handleToggle;
2805
+ var _focusTrap, _handleSlotChange$4, _handleToggle;
2765
2806
  let OdxMainMenu = class extends CustomElement {
2766
2807
  constructor() {
2767
2808
  super();
2768
2809
  __privateAdd$d(this, _focusTrap, new FocusTrapController(this));
2769
- __privateAdd$d(this, _handleSlotChange$3, () => {
2810
+ __privateAdd$d(this, _handleSlotChange$4, () => {
2770
2811
  for (const link of this.links) {
2771
2812
  link.slot ||= "link-navigation";
2772
2813
  }
@@ -2797,12 +2838,10 @@ let OdxMainMenu = class extends CustomElement {
2797
2838
  <slot name="title"></slot>
2798
2839
  <slot name="subtitle"></slot>
2799
2840
  </div>
2800
- <nav part="navigation">
2801
- <odx-stack gap="md" align="stretch" vertical>
2802
- <slot @slotchange=${__privateGet$b(this, _handleSlotChange$3)}></slot>
2803
- </odx-stack>
2841
+ <nav part="navigation" class="odx-stack">
2842
+ <slot @slotchange=${__privateGet$b(this, _handleSlotChange$4)}></slot>
2804
2843
  </nav>
2805
- <odx-stack part="link-navigation" gap="xs" wrap horizontal justify="start">
2844
+ <odx-stack part="link-navigation" gap="xs" horizontal wrap>
2806
2845
  <slot name="link-navigation"></slot>
2807
2846
  </odx-stack>
2808
2847
  <div part="footer">
@@ -2812,16 +2851,16 @@ let OdxMainMenu = class extends CustomElement {
2812
2851
  }
2813
2852
  };
2814
2853
  _focusTrap = new WeakMap();
2815
- _handleSlotChange$3 = new WeakMap();
2854
+ _handleSlotChange$4 = new WeakMap();
2816
2855
  _handleToggle = new WeakMap();
2817
2856
  __decorateClass$C([
2818
2857
  queryAssignedElements({ selector: "odx-link", flatten: true })
2819
2858
  ], OdxMainMenu.prototype, "links", 2);
2820
2859
  OdxMainMenu = __decorateClass$C([
2821
- customElement("odx-main-menu", [styles$B])
2860
+ customElement("odx-main-menu", [styles$A])
2822
2861
  ], OdxMainMenu);
2823
2862
 
2824
- const styles$A = "@layer base{.base{place-content:flex-start}}";
2863
+ const styles$z = "@layer base{[part=base]{place-content:flex-start}}";
2825
2864
 
2826
2865
  var __defProp$B = Object.defineProperty;
2827
2866
  var __getOwnPropDesc$B = Object.getOwnPropertyDescriptor;
@@ -2833,11 +2872,11 @@ var __decorateClass$B = (decorators, target, key, kind) => {
2833
2872
  if (kind && result) __defProp$B(target, key, result);
2834
2873
  return result;
2835
2874
  };
2836
- let OdxMenuItem = class extends BaseButton {
2875
+ let OdxMenuItem = class extends InteractiveElement {
2837
2876
  renderContent() {
2838
2877
  return html`
2839
2878
  ${when(!this.loading && this.icon, (icon) => html`<odx-icon name="${icon}"></odx-icon>`)}
2840
- ${when(this.loading, () => this.renderSpinner())}
2879
+ ${when(this.loading, () => this.renderLoader())}
2841
2880
  <odx-line-clamp class="content" .max=${2}>
2842
2881
  <slot></slot>
2843
2882
  </odx-line-clamp>
@@ -2848,18 +2887,15 @@ let OdxMenuItem = class extends BaseButton {
2848
2887
  super.connectedCallback();
2849
2888
  this.role ||= "menuitem";
2850
2889
  }
2851
- renderOverlay() {
2852
- return nothing;
2853
- }
2854
2890
  };
2855
2891
  __decorateClass$B([
2856
2892
  property()
2857
2893
  ], OdxMenuItem.prototype, "icon", 2);
2858
2894
  OdxMenuItem = __decorateClass$B([
2859
- customElement("odx-menu-item", [BaseButton.styles, styles$A])
2895
+ customElement("odx-menu-item", [styles$z])
2860
2896
  ], OdxMenuItem);
2861
2897
 
2862
- const styles$z = ":host{display:flex;place-items:center;padding-inline:var(--odx-size-50);user-select:none;font-weight:var(--odx-typography-font-weight-medium);gap:var(--odx-size-50)}@layer baes{odx-icon,::slotted(odx-icon){--size: var(--odx-typography-font-size-5);margin-inline:}}";
2898
+ const styles$y = ":host{display:flex;place-items:center;padding-inline:var(--odx-size-50);user-select:none;font-weight:var(--odx-typography-font-weight-medium);gap:var(--odx-size-50)}@layer baes{odx-icon,::slotted(odx-icon){--size: var(--odx-typography-font-size-5);margin-inline:}}";
2863
2899
 
2864
2900
  var __defProp$A = Object.defineProperty;
2865
2901
  var __getOwnPropDesc$A = Object.getOwnPropertyDescriptor;
@@ -2874,10 +2910,10 @@ var __decorateClass$A = (decorators, target, key, kind) => {
2874
2910
  let OdxMenuLabel = class extends CustomElement {
2875
2911
  };
2876
2912
  OdxMenuLabel = __decorateClass$A([
2877
- customElement("odx-menu-label", [styles$z])
2913
+ customElement("odx-menu-label", [styles$y])
2878
2914
  ], OdxMenuLabel);
2879
2915
 
2880
- const styles$y = ":host{--min-inline-size: 160px;--max-inline-size: 280px;--_gap: var(--odx-size-37)}odx-popover{--color-background: var(--odx-color-background-main);--_outer-padding: var(--odx-size-50)}.base{display:flex;flex-direction:column;block-size:100%;gap:var(--_gap);max-inline-size:var(--max-inline-size);min-inline-size:var(--min-inline-size)}::slotted(odx-separator){--block-space: calc(-1 * var(--_gap) / 2)}::slotted(odx-button){inline-size:100%;margin:0}";
2916
+ const styles$x = ":host{--min-inline-size: 160px;--max-inline-size: 280px;--_gap: var(--odx-size-37);--_popover-color-background: var(--odx-color-background-main)}.base{display:flex;flex-direction:column;block-size:100%;gap:var(--_gap);max-inline-size:var(--max-inline-size);min-inline-size:var(--min-inline-size)}::slotted(odx-separator){--margin-block: 0}";
2881
2917
 
2882
2918
  var __defProp$z = Object.defineProperty;
2883
2919
  var __getOwnPropDesc$z = Object.getOwnPropertyDescriptor;
@@ -2898,7 +2934,7 @@ var __privateAdd$c = (obj, member, value) => member.has(obj) ? __typeError$c("Ca
2898
2934
  var _tabindexController, _handleReferenceInteraction, _handleClick$2, _handleKeyDown$1, _handleReferenceKeyDown;
2899
2935
  const MENU_ITEM_ROLES = ["menuitem", "menuitemcheckbox", "menuitemradio"];
2900
2936
  const MENU_ITEMS_SELECTOR = MENU_ITEM_ROLES.map((role) => `[role="${role}"]`).join(",");
2901
- let OdxMenu = class extends PopoverHost(CustomElement) {
2937
+ let OdxMenu = class extends PopoverHost {
2902
2938
  constructor() {
2903
2939
  super(...arguments);
2904
2940
  __privateAdd$c(this, _tabindexController, new RovingTabindexController(this, {
@@ -2937,7 +2973,7 @@ let OdxMenu = class extends PopoverHost(CustomElement) {
2937
2973
  });
2938
2974
  }
2939
2975
  getItems() {
2940
- return Array.from(this.querySelectorAll(MENU_ITEMS_SELECTOR));
2976
+ return Array.from(this.querySelectorAll(MENU_ITEMS_SELECTOR)).filter((item) => !item.disabled);
2941
2977
  }
2942
2978
  connectedCallback() {
2943
2979
  super.connectedCallback();
@@ -2954,6 +2990,7 @@ let OdxMenu = class extends PopoverHost(CustomElement) {
2954
2990
  super.unmountPopover(referenceElement);
2955
2991
  }
2956
2992
  onBeforePopoverShow() {
2993
+ __privateGet$a(this, _tabindexController).update({ elements: () => this.getItems() });
2957
2994
  __privateGet$a(this, _tabindexController).currentIndex = 0;
2958
2995
  __privateGet$a(this, _tabindexController).focus();
2959
2996
  }
@@ -2982,10 +3019,10 @@ _handleClick$2 = new WeakMap();
2982
3019
  _handleKeyDown$1 = new WeakMap();
2983
3020
  _handleReferenceKeyDown = new WeakMap();
2984
3021
  OdxMenu = __decorateClass$z([
2985
- customElement("odx-menu", [styles$y])
3022
+ customElement("odx-menu", [styles$x])
2986
3023
  ], OdxMenu);
2987
3024
 
2988
- const styles$x = "@layer base{:host{--max-inline-size: 640px;--margin-block-start: var(--odx-size-450);--_modal-transition: var(--odx-popover-transition, var(--odx-motion-duration-default));--_modal-transition-offset-x: 0;--_modal-transition-offset-y: calc(-1 * var(--_modal-offset));--_modal-outer-padding: var(--odx-breakpoint-spacing-150-responsive);display:contents;transition-property:display}:host,.base,.base::backdrop{transition:var(--odx-transition-default);transition-behavior:allow-discrete}.base,.base::backdrop{opacity:0}.base{background:transparent;border:0;border-radius:var(--odx-border-radius-ml);box-shadow:var(--odx-shadow-level-2);color:var(--odx-color-foreground-base);margin-block-start:var(--margin-block-start);overflow:unset;padding:0;inline-size:min(var(--max-inline-size),100% - 2 * var(--_modal-outer-padding));transform:translateY(var(--odx-size-100));transition-property:opacity,display,overlay,transform,outline;&::backdrop{backdrop-filter:blur(var(--odx-elevation-blur));background-color:var(--odx-color-backdrop);transition-property:opacity}}.inner{display:flex;flex-direction:column;background-color:var(--odx-color-background-main);border-radius:inherit;padding:var(--odx-breakpoint-spacing-50) var(--odx-breakpoint-spacing-150-responsive);max-block-size:calc(100dvh - 2 * var(--_modal-outer-padding))}.header,.footer{min-block-size:var(--odx-size-300)}.header{padding-inline-end:var(--odx-size-300)}.content{padding:var(--odx-size-75) 0}.dismiss-action{position:absolute;inset-block-start:var(--odx-breakpoint-spacing-50);inset-inline-end:var(--odx-breakpoint-spacing-150-responsive)}}@layer state{:host(:not([open])){display:none}.base:focus-visible{outline-color:var(--odx-focus-ring-color)}.base[open]{&,&::backdrop{opacity:1;@starting-style{opacity:0}}transform:translate(0);@starting-style{transform:translateY(var(--odx-size-100))}}}";
3025
+ const styles$w = "@layer base{:host{--max-inline-size: 640px;--margin-block-start: var(--odx-size-450);--_modal-transition: var(--odx-popover-transition, var(--odx-motion-duration-default));--_modal-transition-offset-x: 0;--_modal-transition-offset-y: calc(-1 * var(--_modal-offset));--_modal-outer-padding: var(--odx-breakpoint-spacing-150-responsive);display:contents;transition-property:display}:host,.base,.base::backdrop{transition:var(--odx-transition-default);transition-behavior:allow-discrete}.base,.base::backdrop{opacity:0}.base{background:transparent;border:0;border-radius:var(--odx-border-radius-ml);box-shadow:var(--odx-shadow-level-2);color:var(--odx-color-foreground-base);margin-block-start:var(--margin-block-start);overflow:unset;padding:0;inline-size:min(var(--max-inline-size),100% - 2 * var(--_modal-outer-padding));transform:translateY(var(--odx-size-100));transition-property:opacity,display,overlay,transform,outline;&::backdrop{backdrop-filter:blur(var(--odx-elevation-blur));background-color:var(--odx-color-backdrop);transition-property:opacity}}.inner{display:flex;flex-direction:column;background-color:var(--odx-color-background-main);border-radius:inherit;padding:var(--odx-breakpoint-spacing-50) var(--odx-breakpoint-spacing-150-responsive);max-block-size:calc(100dvh - 2 * var(--_modal-outer-padding))}.header,.footer{min-block-size:var(--odx-size-300)}.header{padding-inline-end:var(--odx-size-300)}.content{padding:var(--odx-size-75) 0}.dismiss-action{position:absolute;inset-block-start:var(--odx-breakpoint-spacing-50);inset-inline-end:var(--odx-breakpoint-spacing-150-responsive)}}@layer state{:host(:not([open])){display:none}.base:focus-visible{outline-color:var(--odx-focus-ring-color)}.base[open]{&,&::backdrop{opacity:1;@starting-style{opacity:0}}transform:translate(0);@starting-style{transform:translateY(var(--odx-size-100))}}}";
2989
3026
 
2990
3027
  var __defProp$y = Object.defineProperty;
2991
3028
  var __getOwnPropDesc$y = Object.getOwnPropertyDescriptor;
@@ -3087,13 +3124,13 @@ let OdxModal = class extends CustomElement {
3087
3124
  this.dismissable,
3088
3125
  () => html`<odx-icon-button class="dismiss-action" icon="core::close" variant="ghost" @click=${this.dismiss}>×</odx-icon-button >`
3089
3126
  )}
3090
- <odx-stack class="header" align="center">
3127
+ <odx-stack class="header" align="center" horizontal>
3091
3128
  <slot name="header"></slot>
3092
3129
  </odx-stack>
3093
3130
  <div class="content">
3094
3131
  <slot></slot>
3095
3132
  </div>
3096
- <odx-stack class="footer" align="center" justify="end">
3133
+ <odx-stack class="footer" align="center" justify="end" horizontal>
3097
3134
  <slot name="footer"></slot>
3098
3135
  </odx-stack>
3099
3136
  </div>
@@ -3137,14 +3174,14 @@ __decorateClass$y([
3137
3174
  property({ reflect: true })
3138
3175
  ], OdxModal.prototype, "variant", 2);
3139
3176
  OdxModal = __decorateClass$y([
3140
- customElement("odx-modal", [styles$x])
3177
+ customElement("odx-modal", [styles$w])
3141
3178
  ], OdxModal);
3142
3179
 
3143
3180
  const ModalVariant = {
3144
3181
  SIDESHEET: "sidesheet"
3145
3182
  };
3146
3183
 
3147
- const styles$w = "@layer base{:host{flex:0 0 auto}.base{text-align:start;place-content:flex-start;outline-offset:0}.content{margin-inline-end:auto}}@layer state{:host([aria-current]){--_color-background: var(--odx-color-selected);--_color-background-hover: var(--odx-color-selected-hover)}:host([aria-current][aria-disabled=\"true\"]){--_color-background: var(--odx-color-disabled-fill-selected);--_color-foreground: var(--odx-color-disabled-foreground-selected);cursor:not-allowed}}@layer variant{:host([size=\"lg\"]){--_block-size: var(--odx-size-300);--_padding-inline: var(--odx-size-100);--_font-size: var(--odx-typography-font-size-3);--_icon-size: var(--odx-size-200);--_margin-block: 0}}";
3184
+ const styles$v = "@layer base{:host{flex:0 0 auto}[part=base]{text-align:start;place-content:flex-start;outline-offset:0}[part=label]{margin-inline-end:auto}}@layer state{:host([aria-current]){--_color-background: var(--odx-color-selected);--_color-background-hover: var(--odx-color-selected-hover)}:host([aria-current][aria-disabled=\"true\"]){--_color-background: var(--odx-color-disabled-fill-selected);--_color-foreground: var(--odx-color-disabled-foreground-selected);cursor:not-allowed}}@layer variant{:host([size=\"lg\"]){--_block-size: var(--odx-size-300);--_padding-inline: var(--odx-size-100);--_font-size: var(--odx-typography-font-size-3);--_icon-size: var(--odx-size-200);--_margin-block: 0;odx-avatar,::slotted(odx-avatar){--_size: var(--odx-size-200);--_font-size: var(--odx-typography-font-size-5);--_spacing: calc(var(--odx-size-50))}}}";
3148
3185
 
3149
3186
  var __defProp$x = Object.defineProperty;
3150
3187
  var __getOwnPropDesc$x = Object.getOwnPropertyDescriptor;
@@ -3156,13 +3193,13 @@ var __decorateClass$x = (decorators, target, key, kind) => {
3156
3193
  if (kind && result) __defProp$x(target, key, result);
3157
3194
  return result;
3158
3195
  };
3159
- let OdxNavigationItem = class extends CanBeSelected(BaseButton) {
3196
+ let OdxNavigationItem = class extends CanBeSelected(InteractiveElement) {
3160
3197
  };
3161
3198
  __decorateClass$x([
3162
3199
  property({ reflect: true })
3163
3200
  ], OdxNavigationItem.prototype, "size", 2);
3164
3201
  OdxNavigationItem = __decorateClass$x([
3165
- customElement("odx-navigation-item", [BaseButton.styles, styles$w])
3202
+ customElement("odx-navigation-item", [styles$v])
3166
3203
  ], OdxNavigationItem);
3167
3204
 
3168
3205
  const NavigationItemSize = {
@@ -3170,7 +3207,7 @@ const NavigationItemSize = {
3170
3207
  LG: "lg"
3171
3208
  };
3172
3209
 
3173
- const styles$v = ":host{--_color-background: var(--odx-palette-transparent);--_color-foreground: inherit;display:inline-flex;place-items:center;padding:var(--odx-size-37) var(--odx-size-75);cursor:pointer;gap:var(--odx-size-75);border-radius:var(--odx-border-radius-controls);transition:var(--odx-transition-reduced);outline:var(--odx-outline-focus);outline-offset:var(--odx-outline-offset-focus);background-color:var(--_color-background);transition-property:background-color,color,outline-color;user-select:none;outline:var(--odx-focus-ring-outline);outline-offset:var(--odx-focus-ring-offset);color:var(--_color-foreground)}odx-checkbox{margin:0}:host(:hover){--_color-background: var(--odx-color-transparent-hover)}:host([odx-active]),:host(:active){--_color-background: var(--odx-color-transparent-pressed)}:host([aria-selected=\"true\"]){--_color-background: var(--odx-color-selected)}:host([aria-selected=\"true\"]:hover){--_color-background: var(--odx-color-selected-hover)}:host([aria-disabled=\"true\"]){--_color-background: var(--odx-color-disabled-fill);--_color-foreground: var(--odx-color-disabled-foreground);cursor:not-allowed;pointer-events:none}:host([aria-selected=\"true\"][aria-disabled=\"true\"]){--_color-background: var(--odx-color-disabled-fill-selected);--_color-foreground: var(--odx-color-disabled-foreground-selected)}:host(:focus-visible){outline-color:var(--odx-focus-ring-color)}";
3210
+ const styles$u = ":host{--_color-background: var(--odx-palette-transparent);--_color-foreground: inherit;display:inline-flex;place-items:center;padding:var(--odx-size-37) var(--odx-size-75);cursor:pointer;gap:var(--odx-size-75);border-radius:var(--odx-border-radius-controls);transition:var(--odx-transition-reduced);outline:var(--odx-outline-focus);outline-offset:var(--odx-outline-offset-focus);background-color:var(--_color-background);transition-property:background-color,color,outline-color;user-select:none;outline:var(--odx-focus-ring-outline);color:var(--_color-foreground)}odx-checkbox{margin:0}:host(:hover){--_color-background: var(--odx-color-transparent-hover)}:host([odx-active]),:host(:active){--_color-background: var(--odx-color-transparent-pressed)}:host([aria-selected=\"true\"]){--_color-background: var(--odx-color-selected)}:host([aria-selected=\"true\"]:hover){--_color-background: var(--odx-color-selected-hover)}:host([aria-disabled=\"true\"]){--_color-background: var(--odx-color-disabled-fill);--_color-foreground: var(--odx-color-disabled-foreground);cursor:not-allowed;pointer-events:none}:host([aria-selected=\"true\"][aria-disabled=\"true\"]){--_color-background: var(--odx-color-disabled-fill-selected);--_color-foreground: var(--odx-color-disabled-foreground-selected)}:host([aria-selected=\"true\"][odx-active]),:host([aria-selected=\"true\"]:active){--_color-background: var(--odx-color-selected-hover)}:host(:focus-visible){outline-color:var(--odx-focus-ring-color)}";
3174
3211
 
3175
3212
  var __defProp$w = Object.defineProperty;
3176
3213
  var __getOwnPropDesc$w = Object.getOwnPropertyDescriptor;
@@ -3195,14 +3232,11 @@ let OdxOption = class extends OptionControl {
3195
3232
  `;
3196
3233
  }
3197
3234
  };
3198
- __decorateClass$w([
3199
- property({ reflect: true })
3200
- ], OdxOption.prototype, "type", 2);
3201
3235
  OdxOption = __decorateClass$w([
3202
- customElement("odx-option", [styles$v])
3236
+ customElement("odx-option", [styles$u])
3203
3237
  ], OdxOption);
3204
3238
 
3205
- const styles$u = ":host{display:grid;inline-size:100%;grid-template-columns:minmax(0px,auto) minmax(0px,100%) minmax(0px,auto);grid-template-rows:minmax(0px,auto) minmax(0px,1fr);grid-template-areas:\"navigation header sidebar\" \"navigation content sidebar\";justify-content:start;max-inline-size:var(--max-inline-size)}.header,.navigation,.sidebar{background-color:var(--odx-color-background-cool);position:sticky;inset-block-start:var(--scroll-margin-block-start);z-index:98}.navigation,.sidebar{--_size: calc(100dvh - var(--scroll-margin-block-start));max-block-size:var(--_size);inset-block-end:0;overflow:auto}.content{grid-area:content;margin-block-end:var(--odx-size-150)}.header{grid-area:header}.navigation{grid-area:navigation;padding-inline-end:var(--odx-size-75)}.sidebar{grid-area:sidebar;padding-inline-start:var(--odx-size-75)}";
3239
+ const styles$t = ":host{display:grid;inline-size:100%;grid-template-columns:minmax(0px,auto) minmax(0px,100%) minmax(0px,auto);grid-template-rows:minmax(0px,auto) minmax(0px,1fr) minmax(0px,auto);grid-template-areas:\"navigation header sidebar\" \"navigation content sidebar\" \"footer footer footer\";justify-content:start;padding-inline:var(--odx-size-75);max-inline-size:var(--max-inline-size)}.header,.navigation,.sidebar{background-color:var(--odx-color-background-cool);position:sticky;inset-block-start:var(--scroll-margin-block-start);z-index:98}.navigation,.sidebar{--_size: calc(100dvh - var(--scroll-margin-block-start));max-block-size:var(--_size);inset-block-end:0;overflow:auto}.content{grid-area:content;margin-block-end:var(--odx-size-150)}.footer{grid-area:footer}.header{grid-area:header}.navigation{grid-area:navigation;padding-inline-end:var(--odx-size-75)}.sidebar{grid-area:sidebar;padding-inline-start:var(--odx-size-75)}";
3206
3240
 
3207
3241
  var __defProp$v = Object.defineProperty;
3208
3242
  var __getOwnPropDesc$v = Object.getOwnPropertyDescriptor;
@@ -3223,14 +3257,15 @@ let OdxPageLayout = class extends CustomElement {
3223
3257
  <slot></slot>
3224
3258
  </div>
3225
3259
  ${optionalSlot(this, "sidebar")}
3260
+ ${optionalSlot(this, "footer")}
3226
3261
  `;
3227
3262
  }
3228
3263
  };
3229
3264
  OdxPageLayout = __decorateClass$v([
3230
- customElement("odx-page-layout", [styles$u])
3265
+ customElement("odx-page-layout", [styles$t])
3231
3266
  ], OdxPageLayout);
3232
3267
 
3233
- const styles$t = ":host{--max-inline-size: var(--odx-page-max-inline-size, 100%);--scroll-margin-block-start: calc(var(--header-size, 0px) + var(--subheader-size, 0px));display:grid;min-block-size:100dvh;grid-template-columns:100%;grid-template-rows:minmax(0,auto) minmax(0,auto) minmax(0px,1fr);grid-template-areas:\"header\" \"subheader\" \"content\"}.header,.subheader{position:sticky;z-index:99}.subheader,.content{inline-size:100%;background-color:var(--odx-color-background-cool);padding-inline:var(--odx-size-75);max-inline-size:var(--max-inline-size)}.header{grid-area:header;inset-block-start:0}.subheader{grid-area:subheader;inset-block-start:var(--header-size, 0px)}.content{block-size:100%;grid-area:content}:host([alignment=\"center\"]){.subheader,.content{margin-inline:auto}}:host([layout=\"narrow\"]){--max-inline-size: var(--odx-page-max-inline-size-narrow)}:host([layout=\"wide\"]){--max-inline-size: var(--odx-page-max-inline-size-wide)}::slotted(odx-page-layout){min-block-size:100%}";
3268
+ const styles$s = ":host{--max-inline-size: var(--odx-page-max-inline-size, 100%);--scroll-margin-block-start: calc(var(--header-size, 0px) + var(--subheader-size, 0px));display:grid;min-block-size:100dvh;grid-template-columns:100%;grid-template-rows:minmax(0,auto) minmax(0,auto) minmax(0,1fr) minmax(0,auto);grid-template-areas:\"header\" \"subheader\" \"content\" \"footer\"}.header,.subheader{position:sticky;z-index:99}.subheader,.content{inline-size:100%;background-color:var(--odx-color-background-cool);padding-inline:var(--odx-size-75);max-inline-size:var(--max-inline-size)}.header{grid-area:header;inset-block-start:0}.subheader{grid-area:subheader;inset-block-start:var(--header-size, 0px)}.content{block-size:100%;grid-area:content}.footer{grid-area:footer}:host([alignment=\"center\"]){.subheader,.content{margin-inline:auto}}:host([layout=\"narrow\"]){--max-inline-size: var(--odx-page-max-inline-size-narrow)}:host([layout=\"wide\"]){--max-inline-size: var(--odx-page-max-inline-size-wide)}::slotted(odx-page-layout){min-block-size:100%}";
3234
3269
 
3235
3270
  var __defProp$u = Object.defineProperty;
3236
3271
  var __getOwnPropDesc$u = Object.getOwnPropertyDescriptor;
@@ -3260,6 +3295,9 @@ let OdxPage = class extends CustomElement {
3260
3295
  <div class="content" part="content">
3261
3296
  <slot></slot>
3262
3297
  </div>
3298
+ <div class="footer" part="footer">
3299
+ <slot name="footer"></slot>
3300
+ </div>
3263
3301
  `;
3264
3302
  }
3265
3303
  };
@@ -3276,7 +3314,7 @@ __decorateClass$u([
3276
3314
  property({ reflect: true })
3277
3315
  ], OdxPage.prototype, "layout", 2);
3278
3316
  OdxPage = __decorateClass$u([
3279
- customElement("odx-page", [styles$t])
3317
+ customElement("odx-page", [styles$s])
3280
3318
  ], OdxPage);
3281
3319
 
3282
3320
  const PageAlignment = {
@@ -3287,7 +3325,7 @@ const PageLayout = {
3287
3325
  WIDE: "wide"
3288
3326
  };
3289
3327
 
3290
- const styles$s = "@layer base{:host{display:block}odx-icon-button::part(anchor){outline-offset:0}}";
3328
+ const styles$r = "@layer base{:host{display:block}odx-icon-button::part(base){outline-offset:0}}";
3291
3329
 
3292
3330
  var __defProp$t = Object.defineProperty;
3293
3331
  var __getOwnPropDesc$t = Object.getOwnPropertyDescriptor;
@@ -3317,9 +3355,9 @@ let OdxPagination = class extends IsLocalized(CustomElement) {
3317
3355
  }
3318
3356
  get paginationContext() {
3319
3357
  return {
3320
- pageStart: clamp(this.page * this.pageSize, 0, this.totalItems),
3321
- pageEnd: clamp((this.page + 1) * this.pageSize - 1, 0, this.totalItems),
3322
- page: clamp(this.page, 1, this.totalPages),
3358
+ pageStart: Math.min(Math.max(0, this.page * this.pageSize), this.totalItems),
3359
+ pageEnd: Math.min(Math.max(0, (this.page + 1) * this.pageSize - 1), this.totalItems),
3360
+ page: Math.min(Math.max(1, this.page), this.totalPages),
3323
3361
  totalPages: this.totalPages,
3324
3362
  totalItems: this.totalItems,
3325
3363
  hasPreviousPage: this.page > 0,
@@ -3345,7 +3383,7 @@ let OdxPagination = class extends IsLocalized(CustomElement) {
3345
3383
  render() {
3346
3384
  const { hasPreviousPage, hasNextPage } = this.paginationContext;
3347
3385
  return html`
3348
- <odx-stack align="center" gap="xs" justify="end">
3386
+ <odx-stack align="center" gap="xs" justify="end" horizontal>
3349
3387
  <span>${this.t("odx.pagination.summary", this.paginationContext)}</span>
3350
3388
  <odx-button-group ?disabled=${!hasPreviousPage} connected variant="ghost">
3351
3389
  <odx-icon-button icon="core::chevron-left-end" @click=${() => this.firstPage()}></odx-icon-button>
@@ -3376,10 +3414,10 @@ __decorateClass$t([
3376
3414
  property({ type: Number })
3377
3415
  ], OdxPagination.prototype, "totalItems", 2);
3378
3416
  OdxPagination = __decorateClass$t([
3379
- customElement("odx-pagination", [styles$s])
3417
+ customElement("odx-pagination", [styles$r])
3380
3418
  ], OdxPagination);
3381
3419
 
3382
- const styles$r = ":host{--_color-foreground: inherit;--_indicator-color: var(--odx-color-primary-rest);--_track-color: var(--odx-palette-coolgray-10);--_track-size: var(--odx-size-50);--_value-percentage: 0;--_label-width: var(--odx-progress-label-width, 33.3%);--_value-width: 1.5rem}:host{display:flex;align-items:center;flex-wrap:wrap;gap:var(--odx-size-50);color:var(--_color-foreground);line-height:1rem;padding-inline:var(--odx-size-75);padding-block:var(--odx-size-25)}.base,.indicator{inline-size:100%}.base{block-size:var(--_track-size);background:var(--_track-color);border-radius:var(--odx-border-radius-md);overflow:hidden;position:relative;inline-size:100%}.indicator{block-size:100%;background-color:var(--_indicator-color);transform:scaleX(calc(var(--_value-percentage) / 100));transform-origin:0 center;transition:var(--odx-transition-reduced);transition-property:background-color,transform;transform-origin:0% 50%}.label{text-align:start;overflow-x:clip;text-overflow:ellipsis;white-space:nowrap;max-inline-size:calc(100% - var(--_value-width) - var(--odx-size-75))}.value{text-align:end;margin-inline-start:auto}:host([condensed]){padding-block:0;flex-wrap:nowrap;.label{inline-size:var(--_label-width)}.value{width:var(--_value-width);order:99}}:host([state=\"confirm\"]){--_indicator-color: var(--odx-color-confirmation-rest);--_color-foreground: var(--_indicator-color);--_value-color: var(--_indicator-color)}:host([state=\"error\"]){--_indicator-color: var(--odx-color-danger-rest);--_color-foreground: var(--_indicator-color);--_value-color: var(--_indicator-color);font-weight:var(--odx-font-weight-medium)}:host([state=\"success\"]){--_indicator-color: var(--odx-color-success-rest)}:host([indeterminate]) .indicator{animation:indeterminate 1.5s linear infinite}@keyframes indeterminate{0%{transform:translate(0) scaleX(0)}40%{transform:translate(0) scaleX(.4)}to{transform:translate(100%) scaleX(.5)}}";
3420
+ const styles$q = ":host{--_color-foreground: inherit;--_indicator-color: var(--odx-color-primary-rest);--_track-color: var(--odx-palette-coolgray-10);--_track-size: var(--odx-size-50);--_value-percentage: 0}:host{display:flex;align-items:center;flex-wrap:wrap;gap:var(--odx-size-50);color:var(--_color-foreground);line-height:1rem;padding-inline:var(--odx-size-75);padding-block:var(--odx-size-25)}.base,.indicator{inline-size:100%}.base{block-size:var(--_track-size);background:var(--_track-color);border-radius:var(--odx-border-radius-md);overflow:hidden;position:relative;inline-size:100%}.indicator{block-size:100%;background-color:var(--_indicator-color);transform:scaleX(calc(var(--_value-percentage) / 100));transform-origin:0 center;transition:var(--odx-transition-reduced);transition-property:background-color,transform;transform-origin:0% 50%}[part=label]{flex:1;text-align:start;padding-block:var(--odx-size-25);margin-block:calc(-1 * var(--odx-size-25))}[part=value]{align-self:flex-end;text-align:end;margin-inline-start:auto}:host([condensed]){padding-block:0;flex-wrap:nowrap;[part=label]{flex:1 1 auto}[part=value]{order:99}}:host([state=\"confirm\"]){--_indicator-color: var(--odx-color-confirmation-rest);--_color-foreground: var(--_indicator-color);--_value-color: var(--_indicator-color)}:host([state=\"error\"]){--_indicator-color: var(--odx-color-danger-rest);--_color-foreground: var(--_indicator-color);--_value-color: var(--_indicator-color);font-weight:var(--odx-font-weight-medium)}:host([state=\"success\"]){--_indicator-color: var(--odx-color-success-rest)}:host([indeterminate]) .indicator{animation:indeterminate 1.5s linear infinite}@keyframes indeterminate{0%{transform:translate(0) scaleX(0)}40%{transform:translate(0) scaleX(.4)}to{transform:translate(100%) scaleX(.5)}}";
3383
3421
 
3384
3422
  var __defProp$s = Object.defineProperty;
3385
3423
  var __getOwnPropDesc$s = Object.getOwnPropertyDescriptor;
@@ -3402,7 +3440,7 @@ let OdxProgressBar = class extends CustomElement {
3402
3440
  this.hideValue = false;
3403
3441
  }
3404
3442
  get valuePercentage() {
3405
- return clamp(round(this.value - this.min / this.max - this.min, 2), this.min, this.max);
3443
+ return Math.min(Math.max(this.min, round(this.value - this.min / this.max - this.min, 2)), this.max);
3406
3444
  }
3407
3445
  get valueHidden() {
3408
3446
  return this.hideValue || !this.valueText && this.indeterminate;
@@ -3410,7 +3448,7 @@ let OdxProgressBar = class extends CustomElement {
3410
3448
  render() {
3411
3449
  const valueText = this.valueText || `${this.valuePercentage}%`;
3412
3450
  return html`
3413
- ${when(this.label, (label) => html`<div part="label" aria-hidden="true">${label}</div>`)}
3451
+ ${when(this.label, (label) => html`<div part="label" aria-hidden="true" odxPreventTextOverflow>${label}</div>`)}
3414
3452
  ${when(!this.valueHidden, () => html`<odx-text part="value" aria-hidden="true">${valueText}</odx-text>`)}
3415
3453
  <div
3416
3454
  class="base"
@@ -3420,7 +3458,7 @@ let OdxProgressBar = class extends CustomElement {
3420
3458
  aria-valuemin="0"
3421
3459
  aria-valuemax="100"
3422
3460
  aria-valuenow=${this.indeterminate ? 0 : this.value}
3423
- style=${styleMap({ "--_value-percentage": this.valuePercentage })}
3461
+ style="--_value-percentage: ${this.valuePercentage}"
3424
3462
  >
3425
3463
  <div class="indicator"></div>
3426
3464
  </div>
@@ -3458,7 +3496,7 @@ __decorateClass$s([
3458
3496
  property()
3459
3497
  ], OdxProgressBar.prototype, "valueText", 2);
3460
3498
  OdxProgressBar = __decorateClass$s([
3461
- customElement("odx-progress-bar", [styles$r])
3499
+ customElement("odx-progress-bar", [styles$q])
3462
3500
  ], OdxProgressBar);
3463
3501
 
3464
3502
  const ProgressState = {
@@ -3467,7 +3505,7 @@ const ProgressState = {
3467
3505
  ERROR: "error"
3468
3506
  };
3469
3507
 
3470
- const styles$q = "@layer base{:host{--_indicator-space: var(--odx-size-12);--_indicator-size: calc(var(--odx-size-150) - var(--_indicator-space) * 2);--_indicator-color-background: var(--odx-color-selection-control-fill);--_indicator-color-stroke: var(--odx-color-selection-control-stroke);--_indicator-stroke-width: var(--odx-border-width-thin);--_label-color-foreground: var(--odx-color-foreground-base);cursor:pointer;display:inline-flex;margin:var(--odx-size-37) var(--odx-size-75);user-select:none;border-radius:var(--odx-border-radius-controls);padding:var(--_indicator-space)}:host,.indicator,.content{transition:var(--odx-transition-reduced)}.indicator{display:flex;place-content:center;place-items:center;block-size:var(--_indicator-size);inline-size:var(--_indicator-size);flex-shrink:0;border-radius:var(--odx-border-radius-circle);background-color:var(--_indicator-color-background);border:var(--odx-border-width-thin) solid var(--_indicator-color-stroke);border-color:var(--_indicator-color-stroke);border-width:var(--_indicator-stroke-width);transition-property:background-color,border-color,outline-color,border-width,box-shadow;outline:var(--odx-focus-ring-outline);outline-offset:var(--odx-focus-ring-offset)}.label{display:inline-block}.content{color:var(--_label-color-foreground);margin-block:calc(-1 * var(--_indicator-space));transition-property:color}}@layer state{:host(:empty) .content{display:none}:host(:not(:empty)) .indicator{margin-inline-end:var(--odx-size-75)}:host(:hover){--_indicator-color-background: var(--odx-color-selection-control-fill-hover);--_indicator-color-stroke: var(--odx-color-selection-control-stroke-hover)}:host(:focus-visible) .indicator{outline-color:var(--odx-focus-ring-color)}:host([aria-readonly=\"true\"]){--_indicator-color-background: var(--odx-color-selection-control-fill-readonly);--_indicator-color-foreground: var(--odx-color-selection-control-foreground-readonly);--_indicator-color-stroke: var(--odx-color-selection-control-stroke-readonly);cursor:default}:host([aria-disabled=\"true\"]){--_indicator-color-background: var(--odx-color-disabled-fill);--_indicator-color-foreground: var(--odx-color-disabled-foreground);--_indicator-color-stroke: var(--odx-color-disabled-stroke);--_label-color-foreground: var(--odx-color-disabled-foreground);cursor:not-allowed}:host([aria-checked=\"true\"]){--_indicator-color-background: var(--odx-color-selection-control-stroke-selected);--_indicator-color-foreground: var(--odx-color-foreground-light);--_indicator-color-stroke: var(--odx-color-selection-control-fill-selected);--_indicator-stroke-width: var(--odx-size-25)}:host([aria-checked=\"true\"]:not(:is([aria-readonly],[aria-disabled])):hover){--_indicator-color-stroke: var(--odx-color-selection-control-fill-selected-hover)}:host([aria-checked=\"true\"][aria-readonly=\"true\"]){--_indicator-color-background: var(--odx-color-selection-control-fill-selected);--_indicator-stroke-width: var(--odx-size-px);.indicator{box-shadow:0 0 0 var(--odx-size-37) var(--odx-color-foreground-light) inset}}:host([aria-checked=\"true\"][aria-disabled=\"true\"]){--_indicator-color-stroke: var(--odx-color-disabled-fill-selected);--_indicator-color-background: var(--odx-color-disabled-fill-selected);--_indicator-stroke-width: var(--odx-size-px);.indicator{box-shadow:0 0 0 var(--odx-size-37) var(--odx-color-disabled-foreground-selected) inset}}}";
3508
+ const styles$p = "@layer base{:host{--_indicator-space: var(--odx-size-12);--_indicator-size: calc(var(--odx-size-150) - var(--_indicator-space) * 2);--_indicator-color-background: var(--odx-color-selection-control-fill);--_indicator-color-stroke: var(--odx-color-selection-control-stroke);--_indicator-stroke-width: var(--odx-border-width-thin);--_label-color-foreground: var(--odx-color-foreground-base);cursor:pointer;display:inline-flex;margin:var(--odx-size-37) var(--odx-size-75);user-select:none;border-radius:var(--odx-border-radius-controls);padding:var(--_indicator-space)}:host,.indicator,.content{transition:var(--odx-transition-reduced)}.indicator{display:flex;place-content:center;place-items:center;block-size:var(--_indicator-size);inline-size:var(--_indicator-size);flex-shrink:0;border-radius:var(--odx-border-radius-circle);background-color:var(--_indicator-color-background);border:var(--odx-border-width-thin) solid var(--_indicator-color-stroke);border-color:var(--_indicator-color-stroke);border-width:var(--_indicator-stroke-width);transition-property:background-color,border-color,outline-color,border-width,box-shadow;outline:var(--odx-focus-ring-outline);outline-offset:var(--odx-focus-ring-offset)}.label{display:inline-block}.content{color:var(--_label-color-foreground);margin-block:calc(-1 * var(--_indicator-space));transition-property:color}}@layer state{:host(:empty) .content{display:none}:host(:not(:empty)) .indicator{margin-inline-end:var(--odx-size-75)}:host(:hover){--_indicator-color-background: var(--odx-color-selection-control-fill-hover);--_indicator-color-stroke: var(--odx-color-selection-control-stroke-hover)}:host(:focus-visible) .indicator{outline-color:var(--odx-focus-ring-color)}:host([aria-readonly=\"true\"]){--_indicator-color-background: var(--odx-color-selection-control-fill-readonly);--_indicator-color-foreground: var(--odx-color-selection-control-foreground-readonly);--_indicator-color-stroke: var(--odx-color-selection-control-stroke-readonly);cursor:default}:host([aria-disabled=\"true\"]){--_indicator-color-background: var(--odx-color-disabled-fill);--_indicator-color-foreground: var(--odx-color-disabled-foreground);--_indicator-color-stroke: var(--odx-color-disabled-stroke);--_label-color-foreground: var(--odx-color-disabled-foreground);cursor:not-allowed}:host([aria-checked=\"true\"]){--_indicator-color-background: var(--odx-color-selection-control-stroke-selected);--_indicator-color-foreground: var(--odx-color-foreground-light);--_indicator-color-stroke: var(--odx-color-selection-control-fill-selected);--_indicator-stroke-width: var(--odx-size-25)}:host([aria-checked=\"true\"]:not(:is([aria-readonly],[aria-disabled])):hover){--_indicator-color-stroke: var(--odx-color-selection-control-fill-selected-hover)}:host([aria-checked=\"true\"][aria-readonly=\"true\"]){--_indicator-color-background: var(--odx-color-selection-control-fill-selected);--_indicator-stroke-width: var(--odx-size-px);.indicator{box-shadow:0 0 0 var(--odx-size-37) var(--odx-color-foreground-light) inset}}:host([aria-checked=\"true\"][aria-disabled=\"true\"]){--_indicator-color-stroke: var(--odx-color-disabled-fill-selected);--_indicator-color-background: var(--odx-color-disabled-fill-selected);--_indicator-stroke-width: var(--odx-size-px);.indicator{box-shadow:0 0 0 var(--odx-size-37) var(--odx-color-disabled-foreground-selected) inset}}}";
3471
3509
 
3472
3510
  var __defProp$r = Object.defineProperty;
3473
3511
  var __getOwnPropDesc$r = Object.getOwnPropertyDescriptor;
@@ -3502,10 +3540,10 @@ let OdxRadioButton = class extends CheckboxFormControl {
3502
3540
  }
3503
3541
  };
3504
3542
  OdxRadioButton = __decorateClass$r([
3505
- customElement("odx-radio-button", [styles$q])
3543
+ customElement("odx-radio-button", [styles$p])
3506
3544
  ], OdxRadioButton);
3507
3545
 
3508
- const styles$p = "@layer base{:host{display:flex}}@layer variant{:host(:not([variant=\"inline\"])){flex-direction:column}:host([variant=\"list\"]){::slotted(odx-radio-button:last-of-type){border-block-end:none}::slotted(odx-radio-button){border-block-end:var(--odx-border-width-thin) solid var(--odx-color-separator);padding:var(--odx-size-75);margin:0;inline-size:auto}}}";
3546
+ const styles$o = "@layer base{:host{display:flex}}@layer variant{:host(:not([variant=\"inline\"])){flex-direction:column}:host([variant=\"list\"]){::slotted(odx-radio-button:last-of-type){border-block-end:none}::slotted(odx-radio-button){border-block-end:var(--odx-border-width-thin) solid var(--odx-color-separator);padding:var(--odx-size-75);margin:0;inline-size:auto}}}";
3509
3547
 
3510
3548
  var __defProp$q = Object.defineProperty;
3511
3549
  var __getOwnPropDesc$q = Object.getOwnPropertyDescriptor;
@@ -3523,7 +3561,7 @@ __decorateClass$q([
3523
3561
  property({ reflect: true })
3524
3562
  ], OdxRadioGroup.prototype, "variant", 2);
3525
3563
  OdxRadioGroup = __decorateClass$q([
3526
- customElement("odx-radio-group", [styles$p])
3564
+ customElement("odx-radio-group", [styles$o])
3527
3565
  ], OdxRadioGroup);
3528
3566
 
3529
3567
  const RadioGroupVariant = {
@@ -3531,7 +3569,7 @@ const RadioGroupVariant = {
3531
3569
  LIST: "list"
3532
3570
  };
3533
3571
 
3534
- const styles$o = ":host{--min-inline-size: 180px;--max-inline-size: 240px;display:flex;flex-direction:column;block-size:100%;padding-inline:var(--odx-size-50);padding-block:var(--odx-size-150);gap:var(--odx-size-75);max-inline-size:var(--max-inline-size);min-inline-size:var(--min-inline-size);transition:var(--odx-transition-default);transition-property:min-inline-size,max-inline-size}.toggle-control{margin-block-start:auto}.toggle-icon{transition:var(--odx-transition-default);transition-property:transform}:host([collapsed]:not([collapsed=\"false\"])){--min-inline-size: var(--odx-size-400);--max-inline-size: var(--odx-size-400);.toggle-icon{transform:rotateY(-180deg)}}::slotted(odx-spacer){--size: var(--odx-size-300);--gap-offset: var(--odx-size-75)}";
3572
+ const styles$n = ":host{--min-inline-size: 180px;--max-inline-size: 240px;display:flex;flex-direction:column;block-size:100%;padding-inline:var(--odx-size-50);padding-block:var(--odx-size-150);gap:var(--odx-size-75);max-inline-size:var(--max-inline-size);min-inline-size:var(--min-inline-size);transition:var(--odx-transition-default);transition-property:min-inline-size,max-inline-size}.toggle-control{margin-block-start:auto}.toggle-icon{transition:var(--odx-transition-default);transition-property:transform}:host([collapsed]:not([collapsed=\"false\"])){--min-inline-size: var(--odx-size-400);--max-inline-size: var(--odx-size-400);.toggle-icon{transform:rotateY(-180deg)}}::slotted(odx-spacer){--size: var(--odx-size-300);--gap-offset: var(--odx-size-75)}";
3535
3573
 
3536
3574
  var __defProp$p = Object.defineProperty;
3537
3575
  var __getOwnPropDesc$p = Object.getOwnPropertyDescriptor;
@@ -3549,7 +3587,7 @@ var __decorateClass$p = (decorators, target, key, kind) => {
3549
3587
  var __accessCheck$a = (obj, member, msg) => member.has(obj) || __typeError$a("Cannot " + msg);
3550
3588
  var __privateGet$8 = (obj, member, getter) => (__accessCheck$a(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
3551
3589
  var __privateAdd$a = (obj, member, value) => member.has(obj) ? __typeError$a("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
3552
- var _handleSlotChange$2, _handleControlClick;
3590
+ var _handleSlotChange$3, _handleControlClick;
3553
3591
  setTranslation("en", {
3554
3592
  odx: { railNavigation: { controlText: { collapsed: "Expand navigation", expanded: "Collapse navigation" } } }
3555
3593
  });
@@ -3560,7 +3598,7 @@ let OdxRailNavigation = class extends IsLocalized(CustomElement) {
3560
3598
  constructor() {
3561
3599
  super(...arguments);
3562
3600
  this.collapsed = false;
3563
- __privateAdd$a(this, _handleSlotChange$2, () => {
3601
+ __privateAdd$a(this, _handleSlotChange$3, () => {
3564
3602
  for (const item of getAssignedElements(this)) {
3565
3603
  item.size = "lg";
3566
3604
  }
@@ -3571,7 +3609,7 @@ let OdxRailNavigation = class extends IsLocalized(CustomElement) {
3571
3609
  }
3572
3610
  render() {
3573
3611
  return html`
3574
- <slot @slotchange=${__privateGet$8(this, _handleSlotChange$2)}></slot>
3612
+ <slot @slotchange=${__privateGet$8(this, _handleSlotChange$3)}></slot>
3575
3613
  <odx-navigation-item class="toggle-control" size="lg" @click=${__privateGet$8(this, _handleControlClick)} odxPreventTextOverflow>
3576
3614
  <odx-icon class="toggle-icon" name="core::chevron-left" slot="prefix"></odx-icon>
3577
3615
  <odx-visually-hidden>
@@ -3584,7 +3622,7 @@ let OdxRailNavigation = class extends IsLocalized(CustomElement) {
3584
3622
  return this.navigationItems;
3585
3623
  }
3586
3624
  };
3587
- _handleSlotChange$2 = new WeakMap();
3625
+ _handleSlotChange$3 = new WeakMap();
3588
3626
  _handleControlClick = new WeakMap();
3589
3627
  __decorateClass$p([
3590
3628
  queryAssignedElements({ selector: OdxNavigationItem.selector, flatten: true })
@@ -3593,7 +3631,7 @@ __decorateClass$p([
3593
3631
  property({ type: Boolean, reflect: true })
3594
3632
  ], OdxRailNavigation.prototype, "collapsed", 2);
3595
3633
  OdxRailNavigation = __decorateClass$p([
3596
- customElement("odx-rail-navigation", [styles$o])
3634
+ customElement("odx-rail-navigation", [styles$n])
3597
3635
  ], OdxRailNavigation);
3598
3636
 
3599
3637
  class SearchEvent extends CustomEvent {
@@ -3607,7 +3645,7 @@ const SearchBarBehavior = {
3607
3645
  SUBMIT: "submit"
3608
3646
  };
3609
3647
 
3610
- const styles$n = ":host{--odx-search-max-inline-size: 35em;display:block;max-width:var(--odx-search-max-inline-size)}";
3648
+ const styles$m = ":host{--odx-search-max-inline-size: 35em;display:block;max-width:var(--odx-search-max-inline-size)}";
3611
3649
 
3612
3650
  var __defProp$o = Object.defineProperty;
3613
3651
  var __getOwnPropDesc$o = Object.getOwnPropertyDescriptor;
@@ -3627,7 +3665,7 @@ var __privateGet$7 = (obj, member, getter) => (__accessCheck$9(obj, member, "rea
3627
3665
  var __privateAdd$9 = (obj, member, value) => member.has(obj) ? __typeError$9("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
3628
3666
  var __privateSet$1 = (obj, member, value, setter) => (__accessCheck$9(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
3629
3667
  var __privateMethod$7 = (obj, member, method) => (__accessCheck$9(obj, member, "access private method"), method);
3630
- var _value, _search, _OdxSearchBar_instances, inputValue_get, _handleSearch, _handleInput, _handleClear, updateValue_fn;
3668
+ var _value, _search, _OdxSearchBar_instances, inputValue_get, _handleSearch, _handleInput, _handleClear$1, updateValue_fn;
3631
3669
  let OdxSearchBar = class extends CustomElement {
3632
3670
  constructor() {
3633
3671
  super(...arguments);
@@ -3645,7 +3683,7 @@ let OdxSearchBar = class extends CustomElement {
3645
3683
  event.preventDefault();
3646
3684
  __privateGet$7(this, _search).call(this, __privateGet$7(this, _OdxSearchBar_instances, inputValue_get));
3647
3685
  });
3648
- __privateAdd$9(this, _handleClear, async (event) => {
3686
+ __privateAdd$9(this, _handleClear$1, async (event) => {
3649
3687
  forwardEvent(this)(event);
3650
3688
  if (event.defaultPrevented) return;
3651
3689
  this.search("");
@@ -3672,12 +3710,13 @@ let OdxSearchBar = class extends CustomElement {
3672
3710
  render() {
3673
3711
  return html`
3674
3712
  <odx-input
3713
+ clearable
3675
3714
  class="input"
3676
3715
  spellcheck="false"
3677
3716
  autocomplete="off"
3678
3717
  placeholder=${this.placeholder}
3679
3718
  type="search"
3680
- @clear=${__privateGet$7(this, _handleClear)}
3719
+ @clear=${__privateGet$7(this, _handleClear$1)}
3681
3720
  @input=${__privateGet$7(this, _handleInput)}
3682
3721
  @search=${__privateGet$7(this, _handleSearch)}
3683
3722
  >
@@ -3694,7 +3733,7 @@ inputValue_get = function() {
3694
3733
  };
3695
3734
  _handleSearch = new WeakMap();
3696
3735
  _handleInput = new WeakMap();
3697
- _handleClear = new WeakMap();
3736
+ _handleClear$1 = new WeakMap();
3698
3737
  updateValue_fn = function(value, updateInput = false) {
3699
3738
  __privateSet$1(this, _value, value);
3700
3739
  if (!updateInput) return;
@@ -3713,10 +3752,10 @@ __decorateClass$o([
3713
3752
  property()
3714
3753
  ], OdxSearchBar.prototype, "placeholder", 2);
3715
3754
  OdxSearchBar = __decorateClass$o([
3716
- customElement("odx-search-bar", [styles$n])
3755
+ customElement("odx-search-bar", [styles$m])
3717
3756
  ], OdxSearchBar);
3718
3757
 
3719
- const styles$m = ":host{display:block;--_color-background: var(--odx-color-input-control-fill);--_color-foreground: var(--odx-color-foreground-base);--_color-stroke: var(--odx-color-input-control-stroke);--_padding-block: var(--odx-size-37);--_padding-inline: var(--odx-size-75);border-radius:var(--odx-border-radius-controls);color:var(--_color-foreground);max-inline-size:320px}.base{display:flex;cursor:pointer;text-align:start;padding:var(--_padding-block) var(--_padding-inline);border:var(--odx-border-width-thin) solid var(--_color-stroke);border-radius:inherit;background-color:var(--_color-background);min-width:200px;min-block-size:var(--odx-size-225);transition:var(--odx-transition-reduced);transition-property:background-color,border-color,outline-color;gap:var(--odx-padding-inline);outline:var(--odx-focus-ring-outline);outline-offset:var(--odx-focus-ring-offset);user-select:none;overflow:hidden;&:focus-visible{outline-color:var(--odx-color-outline-focus)}}.value{display:flex;gap:var(--_padding-block)}.indicator{font-size:var(--odx-size-150);margin-left:auto}odx-chip{--_border-radius: var(--odx-border-radius-controls);--_padding-inline: var(--_padding-block)}odx-dropdown{--max-block-size: 320px}:host(:hover){--_color-background: var(--odx-color-input-control-fill-hover);--_color-stroke: var(--odx-color-input-control-stroke-hover)}:host([multiple]):has(odx-chip) .base{padding-inline-start:var(--_padding-block)}slot[name=placeholder]{color:var(--odx-color-foreground-muted)}";
3758
+ const styles$l = "@layer base{:host{--_color-background: var(--odx-color-input-control-fill);--_color-foreground: var(--odx-color-foreground-base);--_color-stroke: var(--odx-color-input-control-stroke);--_control-size: var(--odx-size-225);--_padding-block: var(--odx-size-37);--_padding-inline: var(--odx-size-50);display:block;border-radius:var(--odx-border-radius-controls);color:var(--_color-foreground);max-inline-size:320px}.base{display:flex;cursor:pointer;text-align:start;align-items:center;padding-inline:var(--_padding-inline);border:var(--odx-border-width-thin) solid var(--_color-stroke);border-radius:inherit;background-color:var(--_color-background);min-width:200px;block-size:var(--_control-size);transition:var(--odx-transition-reduced);transition-property:background-color,border-color,outline-color;gap:var(--_padding-block);outline:var(--odx-focus-ring-outline);outline-offset:var(--odx-focus-ring-offset);user-select:none;overflow:hidden;&:focus-visible{outline-color:var(--odx-focus-ring-color)}}.value{display:flex;gap:var(--_padding-block);margin-inline-end:auto}.indicator{font-size:var(--odx-size-175)}odx-chip{--_border-radius: var(--odx-border-radius-controls);--_padding-inline: var(--_padding-block)}odx-dropdown{--max-block-size: 320px}slot[name=placeholder]{color:var(--odx-color-foreground-muted)}}@layer state{:host(:hover){--_color-background: var(--odx-color-input-control-fill-hover);--_color-stroke: var(--odx-color-input-control-stroke-hover)}:host([aria-disabled=\"true\"]){--_color-foreground: var(--odx-color-disabled-foreground);--_color-background: var(--odx-color-disabled-fill);--_color-stroke: var(--odx-color-disabled-stroke);.base{cursor:not-allowed}slot[name=placeholder]{color:var(---_color-foreground)}}:host([multiple]):has(odx-chip) .base{padding-inline-start:var(--_padding-block)}}";
3720
3759
 
3721
3760
  var __defProp$n = Object.defineProperty;
3722
3761
  var __getOwnPropDesc$n = Object.getOwnPropertyDescriptor;
@@ -3735,23 +3774,48 @@ var __accessCheck$8 = (obj, member, msg) => member.has(obj) || __typeError$8("Ca
3735
3774
  var __privateGet$6 = (obj, member, getter) => (__accessCheck$8(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
3736
3775
  var __privateAdd$8 = (obj, member, value) => member.has(obj) ? __typeError$8("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
3737
3776
  var __privateMethod$6 = (obj, member, method) => (__accessCheck$8(obj, member, "access private method"), method);
3738
- var _OdxSelect_instances, handleMultipleChange_fn, _handleDropdownToggle, _removeChip;
3739
- let OdxSelect = class extends SelectFormControl {
3777
+ var _OdxSelect_instances, isClearable_fn, _handleSlotChange$2, _handleChipRemove, _handleClear;
3778
+ let OdxSelect = class extends ListboxFormControl {
3740
3779
  constructor() {
3741
- super(...arguments);
3780
+ super();
3742
3781
  __privateAdd$8(this, _OdxSelect_instances);
3743
- __privateAdd$8(this, _handleDropdownToggle, (event) => {
3744
- if (event.newState === "open") {
3745
- this.options[0]?.setActive();
3782
+ this.maxVisibleSelectedOptions = 2;
3783
+ __privateAdd$8(this, _handleSlotChange$2, () => {
3784
+ for (const option of this.options) {
3785
+ option.type = this.multiple ? "checkbox" : null;
3746
3786
  }
3747
3787
  });
3748
- __privateAdd$8(this, _removeChip, async (option) => {
3749
- this.toggle(option, false, true);
3788
+ __privateAdd$8(this, _handleChipRemove, (option) => {
3789
+ this.toggleOption(option, false);
3750
3790
  });
3791
+ __privateAdd$8(this, _handleClear, (event) => {
3792
+ event.stopPropagation();
3793
+ event.preventDefault();
3794
+ this.clear();
3795
+ });
3796
+ if (!isServer) {
3797
+ this.addEventListener("change", () => {
3798
+ if (this.multiple || this.autoSelect) return;
3799
+ this.dropdown.hidePopover();
3800
+ });
3801
+ this.addEventListener("blur", () => this.dropdown.hidePopover());
3802
+ }
3803
+ }
3804
+ clear() {
3805
+ if (!__privateMethod$6(this, _OdxSelect_instances, isClearable_fn).call(this) || this.emit("clear")) return;
3806
+ this.updateValue(void 0);
3807
+ this.focus();
3808
+ }
3809
+ focus() {
3810
+ this.focusableElement.focus();
3751
3811
  }
3752
3812
  render() {
3813
+ const clearButton = when(
3814
+ !this.multiple && __privateMethod$6(this, _OdxSelect_instances, isClearable_fn).call(this),
3815
+ () => html`<odx-icon-button icon="core::close" size="sm" tabindex="-1" variant="ghost" @click=${__privateGet$6(this, _handleClear)}></odx-icon-button>`
3816
+ );
3753
3817
  return html`
3754
- <div class="base" id="select-trigger" tabindex="0">
3818
+ <div id="select-trigger" class="base" tabindex="0">
3755
3819
  <div class="value" odxPreventTextOverflow>
3756
3820
  ${when(
3757
3821
  Array.from(this.selectedOptions).length,
@@ -3759,56 +3823,50 @@ let OdxSelect = class extends SelectFormControl {
3759
3823
  () => html`<slot name="placeholder">Select options</slot>`
3760
3824
  )}
3761
3825
  </div>
3826
+ ${clearButton}
3762
3827
  <odx-icon class="indicator" name="core::chevron-down"></odx-icon>
3763
3828
  </div>
3764
- <odx-dropdown part="dropdown" anchor="select-trigger" role="listbox" tabindex="-1" ?disabled=${this.disabled} matchReferenceWidth @toggle=${__privateGet$6(this, _handleDropdownToggle)}>
3765
- <slot @slotchange=${__privateMethod$6(this, _OdxSelect_instances, handleMultipleChange_fn)}></slot>
3829
+ <odx-dropdown part="dropdown" anchor="select-trigger" role="listbox" tabindex="-1" ?disabled=${this.disabled} match-reference-width>
3830
+ <slot @slotchange=${__privateGet$6(this, _handleSlotChange$2)}></slot>
3766
3831
  </odx-dropdown>
3767
3832
  `;
3768
3833
  }
3769
3834
  renderSelectedOptions() {
3770
3835
  const selectedOptions = Array.from(this.selectedOptions);
3771
- if (this.multiple) {
3772
- const maxOptions = 2;
3773
- const visibleOptions = selectedOptions.slice(0, maxOptions);
3774
- const showExtra = selectedOptions.length > maxOptions;
3775
- return html`
3776
- ${repeat(
3777
- visibleOptions,
3778
- (option) => html`<odx-chip @remove=${() => __privateGet$6(this, _removeChip).call(this, option)} removable tabindex="-1">${option.getTextLabel()}</odx-chip>`
3779
- )}
3780
- ${when(showExtra, () => html`<odx-chip>+${selectedOptions.length - maxOptions}</odx-chip>`)}
3781
- `;
3782
- }
3783
- this.dropdownElement.hidePopover();
3784
- return html`${selectedOptions[0]?.getTextLabel()}`;
3785
- }
3786
- willUpdate(changes) {
3787
- super.willUpdate?.(changes);
3788
- if (changes.has("multiple")) {
3789
- __privateMethod$6(this, _OdxSelect_instances, handleMultipleChange_fn).call(this);
3836
+ if (!this.multiple) {
3837
+ return html`${selectedOptions[0]?.label}`;
3790
3838
  }
3839
+ const renderChip = (option) => html`<odx-chip @remove=${() => __privateGet$6(this, _handleChipRemove).call(this, option)} removable tabindex="-1">${option.getTextLabel()}</odx-chip>`;
3840
+ return html`
3841
+ ${repeat(selectedOptions.slice(0, this.maxVisibleSelectedOptions), renderChip)}
3842
+ ${when(selectedOptions.length > this.maxVisibleSelectedOptions, () => html`<odx-chip>+${selectedOptions.length - this.maxVisibleSelectedOptions}</odx-chip>`)}
3843
+ `;
3791
3844
  }
3792
3845
  };
3793
3846
  _OdxSelect_instances = new WeakSet();
3794
- handleMultipleChange_fn = function() {
3795
- for (const option of this.options) {
3796
- option.type = this.multiple ? "checkbox" : null;
3797
- }
3847
+ isClearable_fn = function() {
3848
+ return !this.disabled && !this.readonly && !this.required && !!this.value;
3798
3849
  };
3799
- _handleDropdownToggle = new WeakMap();
3800
- _removeChip = new WeakMap();
3850
+ _handleSlotChange$2 = new WeakMap();
3851
+ _handleChipRemove = new WeakMap();
3852
+ _handleClear = new WeakMap();
3801
3853
  __decorateClass$n([
3802
- queryAssignedElements({ selector: OdxOption.selector, flatten: true })
3854
+ query(".base", true)
3855
+ ], OdxSelect.prototype, "focusableElement", 2);
3856
+ __decorateClass$n([
3857
+ queryAssignedElements({ selector: '[role="option"]', flatten: true })
3803
3858
  ], OdxSelect.prototype, "options", 2);
3804
3859
  __decorateClass$n([
3805
3860
  query(OdxDropdown.selector, true)
3806
- ], OdxSelect.prototype, "dropdownElement", 2);
3861
+ ], OdxSelect.prototype, "dropdown", 2);
3862
+ __decorateClass$n([
3863
+ property({ type: Number })
3864
+ ], OdxSelect.prototype, "maxVisibleSelectedOptions", 2);
3807
3865
  OdxSelect = __decorateClass$n([
3808
- customElement("odx-select", [styles$m])
3866
+ customElement("odx-select", [styles$l])
3809
3867
  ], OdxSelect);
3810
3868
 
3811
- const styles$l = "@layer base{:host{--color: var(--odx-color-separator);--size: var(--odx-size-px);--min-size: var(--odx-size-75);--inline-space: var(--odx-size-12);--block-space: var(--odx-size-75);display:block;margin-block:calc(var(--block-space) - .5 * var(--size));margin-inline:var(--inline-space)}.base{display:flex;align-items:center;column-gap:var(--odx-size-37);&:before,&:after{content:\"\";display:block;flex:1 1 auto;block-size:var(--size);background-color:var(--color);pointer-events:none}}}@layer variants{:host([vertical]){margin-block:var(--block-space);margin-inline:calc(var(--inline-space) - .5 * var(--size));.base{flex-direction:column;&:after,&:before{min-block-size:calc(var(--min-size) / 2);block-size:calc(100% - var(--block-space) * 2);inline-size:var(--size)}}}:host(:not([vertical])){.base{&:after,&:before{min-inline-size:calc(var(--min-size) / 2)}}}:host([highlight]){--color: var(--odx-color-separator-strong)}:host([align=\"start\"]){.base:before{flex:0 0 var(--min-size)}}:host([align=\"end\"]){.base:after{flex:0 0 var(--min-size)}}:host([empty-slot]) .base{gap:0}}";
3869
+ const styles$k = "@layer base{:host{--color: var(--odx-color-separator);--size: var(--odx-size-px);--min-size: var(--odx-size-75);--margin-block: var(--odx-size-75);--margin-inline: var(--odx-size-12);display:block;margin-block:calc(var(--margin-block) - .5 * var(--size));margin-inline:var(--margin-inline);transition:var(--odx-transition-default);transition-property:opacity}.base{display:flex;align-items:center;column-gap:var(--odx-size-37);&:before,&:after{content:\"\";display:block;flex:1 1 auto;block-size:var(--size);background-color:var(--color);pointer-events:none}}}@layer variants{:host([vertical]){margin-block:var(--margin-block);margin-inline:calc(var(--margin-inline) - .5 * var(--size));.base{flex-direction:column;&:after,&:before{min-block-size:calc(var(--min-size) / 2);block-size:calc(100% - var(--margin-block) * 2);inline-size:var(--size)}}}:host(:not([vertical])){.base{&:after,&:before{min-inline-size:calc(var(--min-size) / 2)}}}:host([highlight]){--color: var(--odx-color-separator-strong)}:host([align=\"start\"]){.base:before{flex:0 0 var(--min-size)}}:host([align=\"end\"]){.base:after{flex:0 0 var(--min-size)}}:host([empty-slot]) .base{gap:0}}";
3812
3870
 
3813
3871
  var __defProp$m = Object.defineProperty;
3814
3872
  var __getOwnPropDesc$m = Object.getOwnPropertyDescriptor;
@@ -3850,7 +3908,7 @@ __decorateClass$m([
3850
3908
  property({ type: Boolean, reflect: true })
3851
3909
  ], OdxSeparator.prototype, "vertical", 2);
3852
3910
  OdxSeparator = __decorateClass$m([
3853
- customElement("odx-separator", [styles$l])
3911
+ customElement("odx-separator", [styles$k])
3854
3912
  ], OdxSeparator);
3855
3913
 
3856
3914
  const SeparatorAlign = {
@@ -3858,7 +3916,7 @@ const SeparatorAlign = {
3858
3916
  END: "end"
3859
3917
  };
3860
3918
 
3861
- const styles$k = "@layer base{:host{--inline-size: 100%;--_block-size: var(--odx-size-100);--_border-radius: var(--odx-border-radius-controls);--_color-fill: var(--odx-color-disabled-fill);display:block;inline-size:var(--inline-size);block-size:var(--_block-size);max-inline-size:100%;overflow:hidden}.base{border-radius:var(--_border-radius);block-size:100%;background:var(--_color-fill) linear-gradient(90deg,transparent 33%,var(--odx-palette-blue-80-15) 50%,transparent 66%);background-size:200% 100%;background-position:150% 100%;animation:odx-skeleton-loading 3s infinite linear}@keyframes odx-skeleton-loading{0%{background-position:150% 100%}33%,to{background-position:-50% 100%}}}@layer variant{:host([size=\"sm\"]){--_block-size: var(--odx-typography-font-size-1)}:host([size=\"lg\"]){--_block-size: var(--odx-typography-font-size-5)}:host([size=\"xl\"]){--_block-size: var(--odx-typography-font-size-7)}:host([shape=\"button\"]){--inline-size: 6rem;--_block-size: var(--odx-size-225)}:host([shape=\"button\"][size=\"sm\"]){--inline-size: 5rem;--_block-size: var(--odx-size-150)}:host([shape=\"button\"]:is([size=\"lg\"],[size=\"xl\"])){--inline-size: 7rem;--_block-size: var(--odx-size-300)}:host([shape=\"circle\"]){--_border-radius: var(--odx-border-radius-circle)}:host([shape=\"rectangle\"]){--_border-radius: var(--odx-border-radius-md)}:host(:is([shape=\"circle\"],[shape=\"rectangle\"])){--inline-size: var(--_block-size);--_block-size: var(--odx-size-150);flex:0 0 auto}:host(:is([shape=\"circle\"],[shape=\"rectangle\"])[size=\"sm\"]){--_block-size: var(--odx-size-125)}:host(:is([shape=\"circle\"],[shape=\"rectangle\"])[size=\"lg\"]){--_block-size: var(--odx-size-225)}:host(:is([shape=\"circle\"],[shape=\"rectangle\"])[size=\"xl\"]){--_block-size: var(--odx-size-300)}:host([emphasized]){--_color-fill: var(--odx-color-disabled-fill-selected)}:host([muted]) .base{animation:none}}";
3919
+ const styles$j = "@layer base{:host{--inline-size: 100%;--_block-size: var(--odx-size-100);--_border-radius: var(--odx-border-radius-controls);--_color-fill: var(--odx-color-disabled-fill);display:block;inline-size:var(--inline-size);block-size:var(--_block-size);max-inline-size:100%;overflow:hidden}.base{border-radius:var(--_border-radius);block-size:100%;background:var(--_color-fill) linear-gradient(90deg,transparent 33%,var(--odx-palette-blue-80-15) 50%,transparent 66%);background-size:200% 100%;background-position:150% 100%;animation:odx-skeleton-loading 3s infinite linear}@keyframes odx-skeleton-loading{0%{background-position:150% 100%}33%,to{background-position:-50% 100%}}}@layer variant{:host([size=\"sm\"]){--_block-size: var(--odx-typography-font-size-1)}:host([size=\"lg\"]){--_block-size: var(--odx-typography-font-size-5)}:host([size=\"xl\"]){--_block-size: var(--odx-typography-font-size-7)}:host([shape=\"button\"]){--inline-size: 6rem;--_block-size: var(--odx-size-225)}:host([shape=\"button\"][size=\"sm\"]){--inline-size: 5rem;--_block-size: var(--odx-size-150)}:host([shape=\"button\"]:is([size=\"lg\"],[size=\"xl\"])){--inline-size: 7rem;--_block-size: var(--odx-size-300)}:host([shape=\"circle\"]){--_border-radius: var(--odx-border-radius-circle)}:host([shape=\"rectangle\"]){--_border-radius: var(--odx-border-radius-md)}:host(:is([shape=\"circle\"],[shape=\"rectangle\"])){--inline-size: var(--_block-size);--_block-size: var(--odx-size-150);flex:0 0 auto}:host(:is([shape=\"circle\"],[shape=\"rectangle\"])[size=\"sm\"]){--_block-size: var(--odx-size-125)}:host(:is([shape=\"circle\"],[shape=\"rectangle\"])[size=\"lg\"]){--_block-size: var(--odx-size-225)}:host(:is([shape=\"circle\"],[shape=\"rectangle\"])[size=\"xl\"]){--_block-size: var(--odx-size-300)}:host([emphasized]){--_color-fill: var(--odx-color-disabled-fill-selected)}:host([muted]) .base{animation:none}}";
3862
3920
 
3863
3921
  var __defProp$l = Object.defineProperty;
3864
3922
  var __getOwnPropDesc$l = Object.getOwnPropertyDescriptor;
@@ -3893,7 +3951,7 @@ __decorateClass$l([
3893
3951
  property({ type: String, reflect: true })
3894
3952
  ], OdxSkeleton.prototype, "size", 2);
3895
3953
  OdxSkeleton = __decorateClass$l([
3896
- customElement("odx-skeleton", [styles$k])
3954
+ customElement("odx-skeleton", [styles$j])
3897
3955
  ], OdxSkeleton);
3898
3956
 
3899
3957
  const SkeletonSize = {
@@ -3907,7 +3965,7 @@ const SkeletonShape = {
3907
3965
  RECTANGLE: "rectangle"
3908
3966
  };
3909
3967
 
3910
- const styles$j = "*{margin:0;padding:0;box-sizing:border-box}:host{--_thumb-color: var(--_track-color);--_thumb-size: var(--odx-size-150);--_previous-position: 0%;--_position: 0%;--_next-position: 0%;display:contents}:host::part(track),:host::part(thumb),:host::part(label){position:absolute}:host::part(track),:host::part(label){pointer-events:none}:host::part(thumb),:host::part(label){background-color:var(--_thumb-color);inset-inline-start:var(--_position)}:host::part(track){background-color:var(--_track-color);border-radius:var(--_track-size);inset:0 calc(100% - var(--_position)) 0 var(--_previous-position);z-index:var(--_layer-background)}:host::part(thumb){display:flex;place-content:center;place-items:center;border-radius:50%;block-size:var(--_thumb-size);inline-size:var(--_thumb-size);inset-block-start:50%;cursor:grab;transform:translate(-50%,-50%);z-index:var(--_layer-interactive);box-shadow:var(--odx-shadow-level-0);outline:0 solid var(--odx-palette-cyan-50-15)}:host::part(label){inset-block-end:100%;transform:translate(-50%) translateY(calc(-1 * var(--odx-size-75))) scale(0);opacity:0;border-radius:var(--odx-border-radius-sm);color:var(--odx-color-foreground-light);padding-inline:var(--odx-size-50);line-height:var(--odx-size-150);z-index:var(--_layer-foreground)}:host::part(with-motion){transition:var(--odx-transition-reduced)}:host([odx-drag-active])::part(with-motion){transition-property:outline}:host::part(thumb):active,:host(:active)::part(thumb){outline-width:var(--odx-size-75)}:host(:hover),:host(:focus-within){--_thumb-color: var(--odx-color-highlight-rest)}:host(:focus-within)::part(label),:host(:hover)::part(label){opacity:1;transform:translate(-50%) translateY(calc(-1 * var(--odx-size-75))) scale(1)}:host([aria-disabled=\"true\"]){pointer-events:none}:host([aria-disabled=\"true\"])::part(thumb){--_thumb-color: var(--odx-color-disabled-fill);z-index:var(--_layer-interactive-disabled)}";
3968
+ const styles$i = "*{margin:0;padding:0;box-sizing:border-box}:host{--_thumb-color: var(--_track-color);--_thumb-size: var(--odx-size-150);--_previous-position: 0%;--_position: 0%;--_next-position: 0%;display:contents}:host::part(track),:host::part(thumb),:host::part(label){position:absolute}:host::part(track),:host::part(label){pointer-events:none}:host::part(thumb),:host::part(label){background-color:var(--_thumb-color);inset-inline-start:var(--_position)}:host::part(track){background-color:var(--_track-color);border-radius:var(--_track-size);inset:0 calc(100% - var(--_position)) 0 var(--_previous-position);z-index:var(--_layer-background)}:host::part(thumb){display:flex;place-content:center;place-items:center;border-radius:50%;block-size:var(--_thumb-size);inline-size:var(--_thumb-size);inset-block-start:50%;cursor:grab;transform:translate(-50%,-50%);z-index:var(--_layer-interactive);box-shadow:var(--odx-shadow-level-0);outline:0 solid var(--odx-palette-cyan-50-15)}:host::part(label){inset-block-end:100%;transform:translate(-50%) translateY(calc(-1 * var(--odx-size-75))) scale(0);opacity:0;border-radius:var(--odx-border-radius-sm);color:var(--odx-color-foreground-light);padding-inline:var(--odx-size-50);line-height:var(--odx-size-150);z-index:var(--_layer-foreground)}:host::part(with-motion){transition:var(--odx-transition-reduced)}:host([odx-drag-active])::part(with-motion){transition-property:outline}:host::part(thumb):active,:host(:active)::part(thumb){outline-width:var(--odx-size-75)}:host(:hover),:host(:focus-within){--_thumb-color: var(--odx-color-highlight-rest)}:host(:focus-within)::part(label),:host(:hover)::part(label){opacity:1;transform:translate(-50%) translateY(calc(-1 * var(--odx-size-75))) scale(1)}:host([aria-disabled=\"true\"]){pointer-events:none}:host([aria-disabled=\"true\"])::part(thumb){--_thumb-color: var(--odx-color-disabled-fill);z-index:var(--_layer-interactive-disabled)}";
3911
3969
 
3912
3970
  const SliderLabelVisibility = {
3913
3971
  AUTO: "auto",
@@ -4038,7 +4096,7 @@ findClosestValue_fn = function(value) {
4038
4096
  return __privateMethod$5(this, _OdxSliderHandle_instances, limitValue_fn).call(this, closestValue + (isNextValue ? this.context.step : 0));
4039
4097
  };
4040
4098
  updatePosition_fn = function(value) {
4041
- const valuePercentage = `${round(clamp((value - this.context.min) / this.context.range, 0, 1) * 100, 3)}%`;
4099
+ const valuePercentage = `${round(Math.min(Math.max(0, (value - this.context.min) / this.context.range), 1) * 100, 3)}%`;
4042
4100
  this.style.setProperty("--_position", valuePercentage);
4043
4101
  __privateGet$5(this, _nextHandle)?.style.setProperty("--_previous-position", valuePercentage);
4044
4102
  __privateGet$5(this, _previousHandle)?.style.setProperty("--_next-position", valuePercentage);
@@ -4047,12 +4105,12 @@ getValueFromPosition_fn = function(position) {
4047
4105
  return __privateMethod$5(this, _OdxSliderHandle_instances, limitValue_fn).call(this, __privateMethod$5(this, _OdxSliderHandle_instances, calculateValue_fn).call(this, position.x));
4048
4106
  };
4049
4107
  calculateValue_fn = function(relativePosition) {
4050
- return clamp(relativePosition / 100, 0, 1) * this.context.range + this.context.min;
4108
+ return Math.min(Math.max(0, relativePosition / 100), 1) * this.context.range + this.context.min;
4051
4109
  };
4052
4110
  limitValue_fn = function(value) {
4053
4111
  const startLimit = __privateGet$5(this, _previousHandle) ? Math.max(__privateGet$5(this, _previousHandle).value, this.min - this.minRange) + this.minRange : this.min;
4054
4112
  const endLimit = __privateGet$5(this, _nextHandle) ? Math.min(__privateGet$5(this, _nextHandle).value, this.max + this.minRange) - this.minRange : this.max;
4055
- return clamp(value, startLimit, endLimit);
4113
+ return Math.min(Math.max(startLimit, value), endLimit);
4056
4114
  };
4057
4115
  findPreviousHandle_fn = function() {
4058
4116
  let sibling = this.previousElementSibling;
@@ -4077,10 +4135,10 @@ __decorateClass$k([
4077
4135
  property()
4078
4136
  ], OdxSliderHandle.prototype, "trackVisibility", 2);
4079
4137
  OdxSliderHandle = __decorateClass$k([
4080
- customElement("odx-slider-handle", [styles$j])
4138
+ customElement("odx-slider-handle", [styles$i])
4081
4139
  ], OdxSliderHandle);
4082
4140
 
4083
- const styles$i = ":host{--_mark-color: var(--odx-slider-mark-color, var(--odx-palette-coolgray-40));--_mark-tick-block-size: var(--odx-size-75);--_mark-tick-inline-size: var(--odx-size-12);display:flex;align-items:center;flex-direction:row;position:absolute;inset:0;z-index:-1;pointer-events:none}[part~=mark]{flex:1 0 auto;position:relative}[part~=mark][last]{flex:0 0 0}[part~=mark-tick]{display:block;width:2px;inset-inline-end:0;transform:translate(calc(-.5 * var(--_mark-tick-inline-size)));height:var(--_mark-tick-block-size);background-color:var(--_mark-color)}[part~=mark][last] [part~=mark-tick]{transform:none}[part~=mark-label]{text-align:center;transform:translate(-50%) translateY(var(--odx-size-100));position:absolute;inset-block-start:0;line-height:inherit}[part~=mark]:not(:last-of-type){border-inline-end-color:var(--_mark-color)}[part~=mark][active]:not([active=false]){border-inline-end-color:red}";
4141
+ const styles$h = ":host{--_mark-color: var(--odx-slider-mark-color, var(--odx-palette-coolgray-40));--_mark-tick-block-size: var(--odx-size-75);--_mark-tick-inline-size: var(--odx-size-12);display:flex;align-items:center;flex-direction:row;position:absolute;inset:0;z-index:-1;pointer-events:none}[part~=mark]{flex:1 0 auto;position:relative}[part~=mark][last]{flex:0 0 0}[part~=mark-tick]{display:block;width:2px;inset-inline-end:0;transform:translate(calc(-.5 * var(--_mark-tick-inline-size)));height:var(--_mark-tick-block-size);background-color:var(--_mark-color)}[part~=mark][last] [part~=mark-tick]{transform:none}[part~=mark-label]{text-align:center;transform:translate(-50%) translateY(var(--odx-size-100));position:absolute;inset-block-start:0;line-height:inherit}[part~=mark]:not(:last-of-type){border-inline-end-color:var(--_mark-color)}[part~=mark][active]:not([active=false]){border-inline-end-color:red}";
4084
4142
 
4085
4143
  var __defProp$j = Object.defineProperty;
4086
4144
  var __getOwnPropDesc$j = Object.getOwnPropertyDescriptor;
@@ -4131,10 +4189,10 @@ __decorateClass$j([
4131
4189
  property({ type: Boolean, reflect: true })
4132
4190
  ], OdxSliderMarks.prototype, "showLabels", 2);
4133
4191
  OdxSliderMarks = __decorateClass$j([
4134
- customElement("odx-slider-marks", [styles$i])
4192
+ customElement("odx-slider-marks", [styles$h])
4135
4193
  ], OdxSliderMarks);
4136
4194
 
4137
- const styles$h = ":host{--_track-size: var(--odx-size-25);--_track-color: var(--odx-slider-track-color, var(--odx-color-primary-rest));--_layer-background: 0;--_layer-interactive-disabled: 1;--_layer-interactive: 2;--_layer-foreground: 3;display:flex;flex-direction:column;place-content:center;min-height:var(--odx-size-300);padding-block-start:var(--odx-size-75);padding-block-end:var(--odx-size-50);padding-inline:var(--odx-size-75);cursor:pointer}:host(:active){cursor:grabbing}:host::part(container){block-size:var(--_track-size);position:relative;background-color:var(--odx-palette-coolgray-40);border-radius:var(--odx-border-radius-sm)}";
4195
+ const styles$g = ":host{--_track-size: var(--odx-size-25);--_track-color: var(--odx-slider-track-color, var(--odx-color-primary-rest));--_layer-background: 0;--_layer-interactive-disabled: 1;--_layer-interactive: 2;--_layer-foreground: 3;display:flex;flex-direction:column;place-content:center;min-height:var(--odx-size-300);padding-block-start:var(--odx-size-75);padding-block-end:var(--odx-size-50);padding-inline:var(--odx-size-75);cursor:pointer}:host(:active){cursor:grabbing}:host::part(container){block-size:var(--_track-size);position:relative;background-color:var(--odx-palette-coolgray-40);border-radius:var(--odx-border-radius-sm)}";
4138
4196
 
4139
4197
  var __defProp$i = Object.defineProperty;
4140
4198
  var __getOwnPropDesc$i = Object.getOwnPropertyDescriptor;
@@ -4179,8 +4237,8 @@ let OdxSlider = class extends CustomElement {
4179
4237
  });
4180
4238
  __privateAdd$6(this, _handleSlotChange$1, async () => {
4181
4239
  const elements = this.dragController.draggableElements;
4182
- const min = minBy(elements, (elment) => elment.min)?.min ?? 0;
4183
- const max = maxBy(elements, (element) => element.max)?.max ?? 1;
4240
+ const min = elements.reduce((min2, element) => Math.min(min2, element.min), Number.POSITIVE_INFINITY);
4241
+ const max = elements.reduce((max2, element) => Math.max(max2, element.max ?? 0), Number.NEGATIVE_INFINITY);
4184
4242
  this.context = { ...this.context, min, max, range: Math.abs(max - min) };
4185
4243
  });
4186
4244
  if (!isServer) {
@@ -4241,10 +4299,10 @@ __decorateClass$i([
4241
4299
  property()
4242
4300
  ], OdxSlider.prototype, "unit", 1);
4243
4301
  OdxSlider = __decorateClass$i([
4244
- customElement("odx-slider", [styles$h])
4302
+ customElement("odx-slider", [styles$g])
4245
4303
  ], OdxSlider);
4246
4304
 
4247
- const styles$g = ":host{--gap-offset: 0;--size: 0;display:block;inline-size:100%;block-size:var(--size);margin:calc(-1 * var(--gap-offset)) 0}:host([dynamic]){block-size:100%;flex:1 1 auto;max-block-size:var(--size)}:host([horizontal]){block-size:100%;inline-size:var(--size);margin:0 calc(-1 * var(--gap-offset))}:host([dynamic][horizontal]){inline-size:100%;max-inline-size:var(--size)}:host([fill]){min-block-size:var(--size);flex:1 1 var(--size)}:host([fill][horizontal]){min-inline-size:var(--size);flex:1 1 var(--size)}:host([fill][dynamic]){min-block-size:auto;min-inline-size:auto;max-block-size:100%;flex:1 1 auto}";
4305
+ const styles$f = ":host{--gap-offset: 0;--size: 0;display:block;inline-size:100%;block-size:var(--size);margin:calc(-1 * var(--gap-offset)) 0}:host([dynamic]){block-size:100%;flex:1 1 auto;max-block-size:var(--size)}:host([horizontal]){block-size:100%;inline-size:var(--size);margin:0 calc(-1 * var(--gap-offset))}:host([dynamic][horizontal]){inline-size:100%;max-inline-size:var(--size)}:host([fill]){min-block-size:var(--size);flex:1 1 var(--size)}:host([fill][horizontal]){min-inline-size:var(--size);flex:1 1 var(--size)}:host([fill][dynamic]){min-block-size:auto;min-inline-size:auto;max-block-size:100%;flex:1 1 auto}";
4248
4306
 
4249
4307
  var __defProp$h = Object.defineProperty;
4250
4308
  var __getOwnPropDesc$h = Object.getOwnPropertyDescriptor;
@@ -4277,10 +4335,10 @@ __decorateClass$h([
4277
4335
  property({ type: Boolean, reflect: true })
4278
4336
  ], OdxSpacer.prototype, "fill", 2);
4279
4337
  OdxSpacer = __decorateClass$h([
4280
- customElement("odx-spacer", [styles$g])
4338
+ customElement("odx-spacer", [styles$f])
4281
4339
  ], OdxSpacer);
4282
4340
 
4283
- const styles$f = ":host{--_color-background: var(--odx-color-input-control-fill);--_color-stroke: var(--odx-color-input-control-stroke);--_color-foreground: var(--odx-color-foreground-base);display:grid;width:min-content;grid-template-columns:auto 1fr auto;grid-template-areas:\"decrement input increment\"}[part~=action],::slotted(input){border:var(--odx-border-width-thin) solid var(--_color-stroke);background-color:var(--_color-background);outline:var(--odx-focus-ring-outline);outline-offset:var(--odx-focus-ring-offset);block-size:var(--odx-size-225);color:var(--_color-foreground);transition:var(--odx-transition-reduced);transition-property:background-color,border-color,color,outline-color}::slotted(input){grid-area:input;min-width:auto;padding:0 var(--odx-size-75)!important;text-align:center;min-inline-size:var(--odx-size-400);appearance:textfield;font-weight:var(--odx-typography-font-weight-medium)!important}[part~=action]{display:flex;place-content:center;place-items:center;inline-size:var(--odx-size-225);cursor:pointer;border-radius:var(--odx-border-radius-controls);font-size:var(--odx-typography-font-size-3)}[part~=action-increment]{grid-area:increment;border-start-start-radius:0;border-end-start-radius:0;border-inline-start:none}[part~=action-decrement]{grid-area:decrement;border-start-end-radius:0;border-end-end-radius:0;border-inline-end:none}[part~=action]:hover,::slotted(input:hover){--_color-background: var(--odx-color-input-control-fill-hover)}::slotted(input:hover){--_color-stroke: var(--odx-color-input-control-stroke-hover)}[part~=action]:focus-visible,::slotted(input:focus-visible){outline-color:var(--odx-focus-ring-color);z-index:1}:host([aria-disabled=\"true\"]) ::slotted(input),[part~=action]:disabled{--_color-background: var(--odx-color-disabled-fill);--_color-foreground: var(--odx-color-disabled-foreground);cursor:not-allowed}:host([compact]:not([compact=\"false\"])){grid-template-columns:1fr auto;grid-template-rows:1fr 1fr;grid-template-areas:\"input increment\" \"input decrement\";[part~=action]{block-size:calc(var(--odx-size-225) / 2);font-size:var(--odx-typography-font-size-1);border-inline-end:var(--odx-border-width-thin) solid var(--odx-color-input-control-stroke);border-inline-start:none;border-radius:var(--odx-border-radius-controls)}[part~=action-increment]{border-block-end:none;border-start-start-radius:0;border-end-start-radius:0;border-end-end-radius:0}[part~=action-decrement]{border-start-start-radius:0;border-end-start-radius:0;border-start-end-radius:0}::slotted(input){border-start-start-radius:var(--odx-border-radius-controls);border-end-start-radius:var(--odx-border-radius-controls)}}";
4341
+ const styles$e = ":host{--_color-background: var(--odx-color-input-control-fill);--_color-stroke: var(--odx-color-input-control-stroke);--_color-foreground: var(--odx-color-foreground-base);display:grid;width:min-content;grid-template-columns:auto 1fr auto;grid-template-areas:\"decrement input increment\"}[part~=action],::slotted(input){border:var(--odx-border-width-thin) solid var(--_color-stroke);background-color:var(--_color-background);outline:var(--odx-focus-ring-outline);outline-offset:var(--odx-focus-ring-offset);block-size:var(--odx-size-225);color:var(--_color-foreground);transition:var(--odx-transition-reduced);transition-property:background-color,border-color,color,outline-color}::slotted(input){grid-area:input;min-width:auto;padding:0 var(--odx-size-75)!important;text-align:center;min-inline-size:var(--odx-size-400);appearance:textfield;font-weight:var(--odx-typography-font-weight-medium)!important}[part~=action]{display:flex;place-content:center;place-items:center;inline-size:var(--odx-size-225);cursor:pointer;border-radius:var(--odx-border-radius-controls);font-size:var(--odx-typography-font-size-3)}[part~=action-increment]{grid-area:increment;border-start-start-radius:0;border-end-start-radius:0;border-inline-start:none}[part~=action-decrement]{grid-area:decrement;border-start-end-radius:0;border-end-end-radius:0;border-inline-end:none}[part~=action]:hover,::slotted(input:hover){--_color-background: var(--odx-color-input-control-fill-hover)}::slotted(input:hover){--_color-stroke: var(--odx-color-input-control-stroke-hover)}[part~=action]:focus-visible,::slotted(input:focus-visible){outline-color:var(--odx-focus-ring-color);z-index:1}:host([aria-disabled=\"true\"]) ::slotted(input),[part~=action]:disabled{--_color-background: var(--odx-color-disabled-fill);--_color-foreground: var(--odx-color-disabled-foreground);cursor:not-allowed}:host([compact]:not([compact=\"false\"])){grid-template-columns:1fr auto;grid-template-rows:1fr 1fr;grid-template-areas:\"input increment\" \"input decrement\";[part~=action]{block-size:calc(var(--odx-size-225) / 2);font-size:var(--odx-typography-font-size-1);border-inline-end:var(--odx-border-width-thin) solid var(--odx-color-input-control-stroke);border-inline-start:none;border-radius:var(--odx-border-radius-controls)}[part~=action-increment]{border-block-end:none;border-start-start-radius:0;border-end-start-radius:0;border-end-end-radius:0}[part~=action-decrement]{border-start-start-radius:0;border-end-start-radius:0;border-start-end-radius:0}::slotted(input){border-start-start-radius:var(--odx-border-radius-controls);border-end-start-radius:var(--odx-border-radius-controls)}}";
4284
4342
 
4285
4343
  var __defProp$g = Object.defineProperty;
4286
4344
  var __getOwnPropDesc$g = Object.getOwnPropertyDescriptor;
@@ -4367,11 +4425,9 @@ __decorateClass$g([
4367
4425
  property({ type: Boolean, reflect: true })
4368
4426
  ], OdxSpinbox.prototype, "compact", 2);
4369
4427
  OdxSpinbox = __decorateClass$g([
4370
- customElement("odx-spinbox", [styles$f])
4428
+ customElement("odx-spinbox", [styles$e])
4371
4429
  ], OdxSpinbox);
4372
4430
 
4373
- const styles$e = ":host{--gap: 0;display:flex;flex-direction:row;max-inline-size:100%;inline-size:100%;gap:var(--gap)}:host([vertical]){flex-direction:column}:host([wrap]){flex-wrap:wrap}:host([gap=\"none\"]){--gap: 0}:host([gap=\"xs\"]){--gap: var(--odx-size-25)}:host([gap=\"sm\"]){--gap: var(--odx-size-50)}:host,:host([gap=\"md\"]){--gap: var(--odx-size-75)}:host([gap=\"lg\"]){--gap: var(--odx-size-150)}:host([gap=\"xl\"]){--gap: var(--odx-size-225)}:host,:host([align=\"start\"]){align-items:flex-start}:host([align=\"end\"]){align-items:end}:host([align=\"center\"]){align-items:center}:host([align=\"stretch\"]){align-items:stretch}:host([justify=\"center\"]){justify-content:center}:host,:host([justify=\"start\"]){justify-content:flex-start}:host([justify=\"end\"]){justify-content:flex-end}:host([justify=\"stretch\"]){justify-content:stretch}:host([justify=\"space-between\"]){justify-content:space-between}:host([justify=\"space-around\"]){justify-content:space-around}:host([justify=\"space-evenly\"]){justify-content:space-evenly}";
4374
-
4375
4431
  var __defProp$f = Object.defineProperty;
4376
4432
  var __getOwnPropDesc$f = Object.getOwnPropertyDescriptor;
4377
4433
  var __decorateClass$f = (decorators, target, key, kind) => {
@@ -4385,36 +4441,42 @@ var __decorateClass$f = (decorators, target, key, kind) => {
4385
4441
  let OdxStack = class extends CustomElement {
4386
4442
  constructor() {
4387
4443
  super(...arguments);
4388
- this.vertical = false;
4444
+ this.horizontal = false;
4389
4445
  this.wrap = false;
4390
4446
  }
4391
- render() {
4392
- return html`<slot></slot>`;
4447
+ updated(props) {
4448
+ super.updated(props);
4449
+ this.classList.toggle("odx-stack-wrap", this.wrap);
4450
+ this.classList.toggle("odx-stack-horizontal", this.horizontal);
4451
+ this.classList.toggle(`odx-align-${this.align}`, !!this.align);
4452
+ this.classList.toggle(`odx-gap-${this.gap}`, !!this.gap);
4453
+ this.classList.toggle(`odx-justify-${this.justify}`, !!this.justify);
4454
+ this.classList.toggle("odx-stack", true);
4393
4455
  }
4394
4456
  };
4395
4457
  __decorateClass$f([
4396
- property({ attribute: "align-items", reflect: true })
4458
+ property({ reflect: true })
4397
4459
  ], OdxStack.prototype, "align", 2);
4398
4460
  __decorateClass$f([
4399
- property({ attribute: "justify-content", reflect: true })
4461
+ property({ reflect: true })
4400
4462
  ], OdxStack.prototype, "justify", 2);
4401
4463
  __decorateClass$f([
4402
4464
  property({ reflect: true })
4403
4465
  ], OdxStack.prototype, "gap", 2);
4404
4466
  __decorateClass$f([
4405
4467
  property({ type: Boolean, reflect: true })
4406
- ], OdxStack.prototype, "vertical", 2);
4468
+ ], OdxStack.prototype, "horizontal", 2);
4407
4469
  __decorateClass$f([
4408
4470
  property({ type: Boolean, reflect: true })
4409
4471
  ], OdxStack.prototype, "wrap", 2);
4410
4472
  OdxStack = __decorateClass$f([
4411
- customElement("odx-stack", [styles$e])
4473
+ customElement("odx-stack")
4412
4474
  ], OdxStack);
4413
4475
 
4414
4476
  const StackAlign = {
4415
4477
  START: "start",
4416
- END: "end",
4417
- CENTER: "center"
4478
+ CENTER: "center",
4479
+ END: "end"
4418
4480
  };
4419
4481
  const StackGap = {
4420
4482
  NONE: "none",
@@ -4711,12 +4773,12 @@ let OdxTableRow = class extends CanBeDisabled(CustomElement) {
4711
4773
  <slot @change=${__privateGet$2(this, _handleChange$1)} @slotchange=${__privateMethod$2(this, _OdxTableRow_instances, handleSlotchange_fn)}></slot>
4712
4774
  `;
4713
4775
  }
4714
- willUpdate(changes) {
4715
- super.willUpdate?.(changes);
4716
- if (changes.has("selected")) {
4776
+ willUpdate(props) {
4777
+ super.willUpdate?.(props);
4778
+ if (props.has("selected")) {
4717
4779
  __privateMethod$2(this, _OdxTableRow_instances, handleSelectedChange_fn).call(this);
4718
4780
  }
4719
- if (changes.has("selectable")) {
4781
+ if (props.has("selectable")) {
4720
4782
  __privateMethod$2(this, _OdxTableRow_instances, handleSelectableChange_fn).call(this);
4721
4783
  }
4722
4784
  }
@@ -4859,7 +4921,7 @@ const tableContext = {
4859
4921
  defaultValue: { hasCheckboxes: true }
4860
4922
  };
4861
4923
 
4862
- const styles$5 = ":host{display:block;text-decoration:inherit;color:var(--_color, inherit);font-size:var(--_font-size, inherit);line-height:var(--_line-height, inherit);font-weight:var(--_font-weight, inherit)}:host([inline]){display:inline-block}:host([emphasized]:not([emphasized=\"false\"])){--_font-weight: var(--odx-typography-font-weight-medium)}:host([size=\"xs\"]){--_font-size: var(--odx-typography-font-size-1);--_line-height: var(--odx-typography-line-height-1)}:host([size=\"sm\"]){--_font-size: var(--odx-typography-font-size-2);--_line-height: var(--odx-typography-line-height-2)}:host([size=\"md\"]){--_font-size: var(--odx-typography-font-size-3);--_line-height: var(--odx-typography-line-height-3)}:host([size=\"lg\"]){--_font-size: var(--odx-typography-font-size-4);--_line-height: var(--odx-typography-line-height-4)}";
4924
+ const styles$5 = ":host{display:block;text-decoration:inherit;color:var(--_color, inherit);font-size:var(--_font-size, inherit);line-height:var(--_line-height, inherit);font-weight:var(--_font-weight, inherit)}:host([inline]){display:inline-block}:host([emphasized]:not([emphasized=\"false\"])){--_font-weight: var(--odx-typography-font-weight-medium)}:host([size=\"xs\"]){--_font-size: var(--odx-typography-font-size-1);--_line-height: var(--odx-typography-line-height-1)}:host([size=\"sm\"]){--_font-size: var(--odx-typography-font-size-2);--_line-height: var(--odx-typography-line-height-2)}:host([size=\"md\"]){--_font-size: var(--odx-typography-font-size-3);--_line-height: var(--odx-typography-line-height-3)}:host([size=\"lg\"]){--_font-size: var(--odx-typography-font-size-4);--_line-height: var(--odx-typography-line-height-4)}:host([variant=\"highlight\"]){--_color: var(--odx-color-highlight-rest)}";
4863
4925
 
4864
4926
  var __defProp$6 = Object.defineProperty;
4865
4927
  var __getOwnPropDesc$6 = Object.getOwnPropertyDescriptor;
@@ -4898,7 +4960,7 @@ const TextSize = {
4898
4960
  };
4899
4961
  const TextVariant = {
4900
4962
  HINT: "hint",
4901
- ACCENT: "info",
4963
+ HIGHLIGHT: "highlight",
4902
4964
  DANGER: "danger"
4903
4965
  };
4904
4966
 
@@ -4933,7 +4995,7 @@ const ToastVariant = {
4933
4995
  DANGER: "danger"
4934
4996
  };
4935
4997
 
4936
- const styles$3 = ":host{--_border-radius: var(--odx-border-radius-sm);--_color-background: transparent;--_color-stroke: var(--odx-color-selection-control-stroke);--_color-foreground: var(--odx-color-foreground-base);--_size: var(--odx-size-225);--_padding-inline: var(--odx-size-75);display:inline-flex;cursor:pointer;user-select:none;position:relative;border:var(--odx-border-width-thin) solid var(--_color-stroke);border-radius:var(--odx-border-radius-controls);padding-inline:var(--_padding-inline);margin:var(--odx-size-37);transition:var(--odx-transition-default);transition-property:color,background-color,border-color,outline-color;background-color:var(--_color-background);outline-color:var(--_color-stroke);block-size:var(--_size);place-items:center;color:var(--_color-foreground);font-weight:var(--odx-typography-font-weight-medium);outline:var(--odx-focus-ring-outline);outline-offset:var(--odx-focus-ring-offset)}:host::part(label){display:inline-block}:host(:empty)::part(content){display:none}:host(:hover){--_color-background: var(--odx-color-selection-control-fill-hover);--_color-stroke: var(--odx-color-selection-control-stroke-hover)}:host(:focus-visible){outline-color:var(--odx-focus-ring-color)}:host([aria-pressed=\"true\"]){--_color-background: var(--odx-color-selection-control-fill-selected);--_color-foreground: var(--odx-color-foreground-light);--_color-stroke: var(--odx-color-selection-control-stroke-selected)}:host([aria-pressed=\"true\"]:not(:is([aria-readonly],[aria-disabled])):hover){--_color-background: var(--odx-color-selection-control-fill-selected-hover)}:host([aria-disabled=\"true\"]){--_color-background: var(--odx-color-disabled-fill);--_color-foreground: var(--odx-color-disabled-foreground);--_color-stroke: var(--odx-color-disabled-stroke);cursor:not-allowed}:host([aria-readonly=\"true\"]){--_color-background: var(--odx-color-selection-control-fill-readonly);--_color-foreground: var(--odx-color-selection-control-foreground-readonly);--_color-stroke: var(--odx-color-selection-control-stroke-readonly);cursor:default}:host([aria-pressed=\"true\"][aria-disabled=\"true\"]){--_color-background: var(--odx-color-disabled-fill-selected);--_color-foreground: var(--odx-color-disabled-foreground-selected)}:host(:not(:last-child)):host-context(odx-button-group[connected]){margin-inline-end:calc(-1 * var(--odx-size-12))!important}";
4998
+ const styles$3 = ":host{--_border-radius: var(--odx-border-radius-sm);--_color-background: transparent;--_color-stroke: var(--odx-color-selection-control-stroke);--_color-foreground: var(--odx-color-foreground-base);--_size: var(--odx-size-225);--_padding-inline: var(--odx-size-75);display:inline-flex;cursor:pointer;user-select:none;position:relative;border:var(--odx-border-width-thin) solid var(--_color-stroke);border-radius:var(--odx-border-radius-controls);padding-inline:var(--_padding-inline);margin:var(--odx-size-37);transition:var(--odx-transition-default);transition-property:color,background-color,border-color,outline-color;background-color:var(--_color-background);outline-color:var(--_color-stroke);block-size:var(--_size);place-items:center;color:var(--_color-foreground);font-weight:var(--odx-typography-font-weight-medium);outline:var(--odx-focus-ring-outline);outline-offset:var(--odx-focus-ring-offset)}:host::part(label){display:inline-block}:host(:hover){--_color-background: var(--odx-color-selection-control-fill-hover);--_color-stroke: var(--odx-color-selection-control-stroke-hover)}:host(:focus-visible){outline-color:var(--odx-focus-ring-color)}:host([aria-pressed=\"true\"]){--_color-background: var(--odx-color-selection-control-fill-selected);--_color-foreground: var(--odx-color-foreground-light);--_color-stroke: var(--odx-color-selection-control-stroke-selected)}:host([aria-pressed=\"true\"]:not(:is([aria-readonly],[aria-disabled])):hover){--_color-background: var(--odx-color-selection-control-fill-selected-hover)}:host([aria-disabled=\"true\"]){--_color-background: var(--odx-color-disabled-fill);--_color-foreground: var(--odx-color-disabled-foreground);--_color-stroke: var(--odx-color-disabled-stroke);cursor:not-allowed}:host([aria-readonly=\"true\"]){--_color-background: var(--odx-color-selection-control-fill-readonly);--_color-foreground: var(--odx-color-selection-control-foreground-readonly);--_color-stroke: var(--odx-color-selection-control-stroke-readonly);cursor:default}:host([aria-pressed=\"true\"][aria-disabled=\"true\"]){--_color-background: var(--odx-color-disabled-fill-selected);--_color-foreground: var(--odx-color-disabled-foreground-selected)}";
4937
4999
 
4938
5000
  var __defProp$4 = Object.defineProperty;
4939
5001
  var __getOwnPropDesc$4 = Object.getOwnPropertyDescriptor;
@@ -4981,7 +5043,7 @@ OdxToggleButton = __decorateClass$4([
4981
5043
  customElement("odx-toggle-button", [styles$3])
4982
5044
  ], OdxToggleButton);
4983
5045
 
4984
- const styles$2 = "@layer base{:host{display:grid;grid-template-rows:1fr;transition:var(--odx-transition-slow)}.base{overflow:hidden}.content{transition:var(--odx-transition-slow);transition-property:opacity,transform,visibility}:host(:last-of-type) odx-separator{display:none}::slotted(*){background-color:transparent}}@layer state{:host([aria-hidden=\"true\"]){grid-template-rows:0fr;.content{opacity:0;transform:translateY(var(--odx-size-25));visibility:hidden}}}";
5046
+ const styles$2 = "@layer base{:host{--offset-y: -100%;--transition: var(--odx-transition-default);display:grid;grid-template-rows:1fr;transition:var(--transition)}.base{overflow:hidden}.content{transition:var(--transition)}}@layer state{:host([hidden]){grid-template-rows:0fr;.content{opacity:0;transform:translateY(var(--offset-y));visibility:hidden}}}";
4985
5047
 
4986
5048
  var __defProp$3 = Object.defineProperty;
4987
5049
  var __getOwnPropDesc$3 = Object.getOwnPropertyDescriptor;
@@ -4996,7 +5058,7 @@ var __decorateClass$3 = (decorators, target, key, kind) => {
4996
5058
  let OdxToggleContent = class extends CustomElement {
4997
5059
  constructor() {
4998
5060
  super(...arguments);
4999
- this.expanded = false;
5061
+ this.hidden = false;
5000
5062
  }
5001
5063
  render() {
5002
5064
  return html`
@@ -5007,16 +5069,10 @@ let OdxToggleContent = class extends CustomElement {
5007
5069
  </div>
5008
5070
  `;
5009
5071
  }
5010
- willUpdate(props) {
5011
- super.willUpdate(props);
5012
- if (props.has("expanded")) {
5013
- this.ariaHidden = toAriaBooleanAttribute(!this.expanded);
5014
- }
5015
- }
5016
5072
  };
5017
5073
  __decorateClass$3([
5018
5074
  property({ type: Boolean, reflect: true })
5019
- ], OdxToggleContent.prototype, "expanded", 2);
5075
+ ], OdxToggleContent.prototype, "hidden", 2);
5020
5076
  OdxToggleContent = __decorateClass$3([
5021
5077
  customElement("odx-toggle-content", [styles$2])
5022
5078
  ], OdxToggleContent);
@@ -5048,7 +5104,7 @@ var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read fr
5048
5104
  var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
5049
5105
  var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "access private method"), method);
5050
5106
  var _OdxTooltip_instances, addKeyboardListeners_fn, removeKeyboardListeners_fn, addMouseListeners_fn, removeMouseListeners_fn, updateAriaAttributes_fn, _handleReferenceMouseLeave, _handleMouseEvents, _handleKeyboardFocus;
5051
- let OdxTooltip = class extends PopoverHost(CustomElement) {
5107
+ let OdxTooltip = class extends PopoverHost {
5052
5108
  constructor() {
5053
5109
  super(...arguments);
5054
5110
  __privateAdd(this, _OdxTooltip_instances);
@@ -5194,4 +5250,4 @@ OdxVisuallyHidden = __decorateClass([
5194
5250
  customElement("odx-visually-hidden", [styles])
5195
5251
  ], OdxVisuallyHidden);
5196
5252
 
5197
- export { AnchorObserver, AreaHeaderSize, AreaHeaderVariant, AvatarSize, AvatarVariant, BadgeType, BadgeVariant, BaseButton, BaseFormat, BaseLink, ButtonSize, ButtonVariant, CheckboxGroupVariant, ChipVariant, CircularProgressBarSize, DropdownPlacement, HeadlineSize, InlineMessageType, InlineMessageVariant, InputVariant, LOADING_OVERLAY_HOST_DIRECTIVE, LogoSize, ModalVariant, NavigationItemSize, OdxAccordion, OdxAccordionHeader, OdxAccordionPanel, OdxActionGroup, OdxAnchorNavigation, OdxAreaHeader, OdxAvatar, OdxAvatarGroup, OdxBadge, OdxBreadcrumbs, OdxBreadcrumbsItem, OdxButton, OdxButtonGroup, OdxCard, OdxCheckbox, OdxCheckboxGroup, OdxChip, OdxCircularProgressBar, OdxContentBox, OdxDropdown, OdxFormField, OdxFormatBytes, OdxFormatDate, OdxFormatNumber, OdxHeader, OdxHeaderActions, OdxHeadline, OdxHighlight, OdxIconButton, OdxImage, OdxInlineMessage, OdxInput, OdxLineClamp, OdxLink, OdxList, OdxListItem, OdxLoadingOverlay, OdxLoadingSpinner, OdxLogo, OdxMainMenu, OdxMainMenuButton, OdxMainMenuLink, OdxMainMenuSubtitle, OdxMainMenuTitle, OdxMenu, OdxMenuItem, OdxMenuLabel, OdxModal, OdxNavigationItem, OdxOption, OdxPage, OdxPageLayout, OdxPagination, OdxProgressBar, OdxRadioButton, OdxRadioGroup, OdxRailNavigation, OdxRelativeTime, OdxSearchBar, OdxSelect, OdxSeparator, OdxSkeleton, OdxSlider, OdxSliderHandle, OdxSliderMarks, OdxSpacer, OdxSpinbox, OdxStack, OdxSwitch, OdxTable, OdxTableBody, OdxTableCell, OdxTableCheckboxCell, OdxTableHeader, OdxTableHeaderCell, OdxTableRow, OdxText, OdxTitle, OdxToast, OdxToggleButton, OdxToggleContent, OdxTooltip, OdxTranslate, OdxVisuallyHidden, PageAlignment, PageLayout, ProgressState, RadioGroupVariant, SearchBarBehavior, SearchEvent, SeparatorAlign, SkeletonShape, SkeletonSize, SliderLabelVisibility, SliderTrackVisibility, StackAlign, StackGap, StackJustify, TextSize, TextVariant, TitleSize, ToastVariant, TooltipPlacement, sliderContext, tableContext };
5253
+ export { AnchorObserver, AreaHeaderSize, AreaHeaderVariant, AvatarSize, AvatarVariant, BadgeType, BadgeVariant, BaseFormat, BaseLink, ButtonBadgeAlign, ButtonLoaderSlot, ButtonSize, ButtonVariant, CheckboxGroupVariant, ChipVariant, CircularProgressBarSize, DropdownPlacement, HeadlineSize, InlineMessageType, InlineMessageVariant, InputVariant, LOADING_OVERLAY_HOST_DIRECTIVE, LogoSize, ModalVariant, NavigationItemSize, OdxAccordion, OdxAccordionHeader, OdxAccordionPanel, OdxActionGroup, OdxAnchorNavigation, OdxAreaHeader, OdxAvatar, OdxAvatarGroup, OdxBadge, OdxBreadcrumbs, OdxBreadcrumbsItem, OdxButton, OdxButtonGroup, OdxCard, OdxCheckbox, OdxCheckboxGroup, OdxChip, OdxCircularProgressBar, OdxCombobox, OdxContentBox, OdxDropdown, OdxFormField, OdxFormatBytes, OdxFormatDate, OdxFormatNumber, OdxHeader, OdxHeaderActions, OdxHeadline, OdxHighlight, OdxIconButton, OdxImage, OdxInlineMessage, OdxInput, OdxLineClamp, OdxLink, OdxList, OdxListItem, OdxLoadingOverlay, OdxLoadingSpinner, OdxLogo, OdxMainMenu, OdxMainMenuButton, OdxMainMenuLink, OdxMainMenuSubtitle, OdxMainMenuTitle, OdxMenu, OdxMenuItem, OdxMenuLabel, OdxModal, OdxNavigationItem, OdxOption, OdxPage, OdxPageLayout, OdxPagination, OdxProgressBar, OdxRadioButton, OdxRadioGroup, OdxRailNavigation, OdxRelativeTime, OdxSearchBar, OdxSelect, OdxSeparator, OdxSkeleton, OdxSlider, OdxSliderHandle, OdxSliderMarks, OdxSpacer, OdxSpinbox, OdxStack, OdxSwitch, OdxTable, OdxTableBody, OdxTableCell, OdxTableCheckboxCell, OdxTableHeader, OdxTableHeaderCell, OdxTableRow, OdxText, OdxTitle, OdxToast, OdxToggleButton, OdxToggleContent, OdxTooltip, OdxTranslate, OdxVisuallyHidden, PageAlignment, PageLayout, ProgressState, RadioGroupVariant, SearchBarBehavior, SearchEvent, SeparatorAlign, SkeletonShape, SkeletonSize, SliderLabelVisibility, SliderTrackVisibility, StackAlign, StackGap, StackJustify, TextSize, TextVariant, TitleSize, ToastVariant, TooltipPlacement, sliderContext, tableContext };