@sbb-esta/lyne-elements-dev 5.0.0-next-dev.1776960216 → 5.0.0-next-dev.1777019159

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 (34) hide show
  1. package/alert/alert/alert.component.js +1 -1
  2. package/alert/alert-group/alert-group.component.js +1 -1
  3. package/{alert-group.component-CAjj3FtE.js → alert-group.component-BCYOVicl.js} +5 -7
  4. package/alert.component-BQsF0R1M.js +161 -0
  5. package/alert.js +2 -2
  6. package/alert.pure.js +2 -2
  7. package/core/styles/core.scss +11 -1
  8. package/core.css +28 -8
  9. package/custom-elements.json +618 -618
  10. package/development/alert/alert/alert.component.d.ts +1 -0
  11. package/development/alert/alert/alert.component.d.ts.map +1 -1
  12. package/development/alert/alert/alert.component.js +1 -1
  13. package/development/alert/alert-group/alert-group.component.d.ts.map +1 -1
  14. package/development/alert/alert-group/alert-group.component.js +1 -1
  15. package/development/alert-group.component-D4KxKTd2.js +186 -0
  16. package/development/alert.component-Pv-Ol6XU.js +213 -0
  17. package/development/alert.js +2 -2
  18. package/development/alert.pure.js +2 -2
  19. package/development/dialog/dialog/dialog.component.js +1 -1
  20. package/development/dialog.component-BTXyWi17.js +233 -0
  21. package/development/dialog.js +1 -1
  22. package/development/dialog.pure.js +1 -1
  23. package/dialog/dialog/dialog.component.js +1 -1
  24. package/{dialog.component-DTbAHlVd.js → dialog.component-ChB9gCyY.js} +1 -1
  25. package/dialog.js +1 -1
  26. package/dialog.pure.js +1 -1
  27. package/off-brand-theme.css +28 -8
  28. package/package.json +2 -2
  29. package/safety-theme.css +28 -8
  30. package/standard-theme.css +28 -8
  31. package/alert.component-C42LwoGa.js +0 -163
  32. package/development/alert-group.component-DeI6kuwn.js +0 -188
  33. package/development/alert.component-Cn36k_Hf.js +0 -214
  34. package/development/dialog.component-B4cZfRCl.js +0 -233
@@ -0,0 +1,233 @@
1
+ import { __esDecorate, __runInitializers } from "tslib";
2
+ import { unsafeCSS } from "lit";
3
+ import { property } from "lit/decorators.js";
4
+ import { SbbScreenReaderOnlyElement, boxSizingStyles, isZeroAnimationDuration } from "./core.js";
5
+ import { html as html$1 } from "lit/static-html.js";
6
+ import { ResizeController } from "@lit-labs/observers/resize-controller.js";
7
+ import { ref } from "lit/directives/ref.js";
8
+ import { SbbOverlayBaseElement, SbbOverlayCloseEvent, overlayRefs } from "./overlay.pure.js";
9
+ import { SbbOverlayCloseEvent as SbbDialogCloseEvent, assignOverlayResult as assignDialogResult } from "./overlay/overlay-base-element.js";
10
+ //#region src/elements/dialog/dialog/dialog.scss?inline
11
+ var dialog_default = ":host {\n --sbb-dialog-animation-duration: var(\n --sbb-disable-animation-duration,\n var(--sbb-animation-duration-6x)\n );\n --sbb-dialog-padding-block: var(--sbb-spacing-responsive-xs);\n --sbb-dialog-shadow-animation-duration: var(\n --sbb-disable-animation-duration,\n var(--sbb-animation-duration-4x)\n );\n display: none;\n position: fixed;\n inset: var(--sbb-dialog-inset);\n z-index: var(--sbb-dialog-z-index, var(--sbb-overlay-default-z-index));\n}\n\n:host(:is(:state(top-shadow),[state--top-shadow])) {\n --sbb-dialog-block-start-box-shadow: var(--_sbb-dialog-block-shadow);\n}\n\n:host(:is(:is(:state(state-opening),[state--state-opening]), :is(:state(state-opened),[state--state-opened]), :is(:state(state-closing),[state--state-closing]))) {\n display: block;\n}\n\n:host(:is(:is(:state(state-opening),[state--state-opening]), :is(:state(state-opened),[state--state-opened]))) {\n --sbb-dialog-pointer-events: all;\n --sbb-dialog-backdrop-color: var(--sbb-background-color-3);\n --sbb-dialog-backdrop-visibility: visible;\n --sbb-dialog-backdrop-pointer-events: all;\n}\n\n:host([backdrop=translucent]:is(:is(:state(state-opening),[state--state-opening]), :is(:state(state-opened),[state--state-opened]))) {\n --sbb-dialog-backdrop-color: color-mix(in srgb, var(--sbb-color-black) 50%, transparent);\n}\n\n:host([backdrop=opaque]:not([negative]):is(:is(:state(state-opening),[state--state-opening]), :is(:state(state-opened),[state--state-opened]))) {\n --sbb-dialog-backdrop-color: var(--sbb-background-color-3);\n}\n\n:host(:not([negative])) {\n --_sbb-dialog-color: var(--sbb-dialog-color);\n --_sbb-dialog-block-shadow: var(--sbb-dialog-block-shadow);\n --sbb-dialog-actions-border-color: var(--sbb-background-color-4);\n --sbb-dialog-background-color: var(--sbb-background-color-1);\n}\n\n:host([negative]) {\n --_sbb-dialog-color: var(--sbb-dialog-color-negative);\n --_sbb-dialog-block-shadow: var(--sbb-dialog-block-shadow-negative);\n --sbb-dialog-background-color: var(--sbb-background-color-1-negative);\n --sbb-dialog-actions-border-color: var(--sbb-background-color-4-negative);\n --sbb-dialog-backdrop-color: var(--sbb-background-color-3-negative);\n --sbb-focus-outline-color: var(--sbb-focus-outline-color-dark);\n}\n\n:host(:is(:state(bottom-shadow),[state--bottom-shadow])) {\n --sbb-dialog-block-end-box-shadow: var(--_sbb-dialog-block-shadow);\n --sbb-dialog-actions-border-color: transparent;\n}\n\n:host(:not(:is(:state(state-closed),[state--state-closed]))) {\n --sbb-dialog-inset-block: 0;\n --sbb-dialog-inset-inline: 0;\n}\n\n.sbb-dialog__container {\n pointer-events: var(--sbb-dialog-pointer-events);\n display: flex;\n justify-content: center;\n align-items: center;\n position: fixed;\n inset-block: var(--sbb-dialog-inset-block);\n inset-inline: var(--sbb-dialog-inset-inline);\n}\n.sbb-dialog__container::before {\n content: \"\";\n visibility: var(--sbb-dialog-backdrop-visibility);\n pointer-events: var(--sbb-dialog-backdrop-pointer-events);\n position: fixed;\n inset-block: var(--sbb-dialog-inset-block);\n inset-inline: var(--sbb-dialog-inset-inline);\n background-color: var(--sbb-dialog-backdrop-color);\n transition-duration: var(--sbb-dialog-animation-duration);\n transition-timing-function: var(--sbb-dialog-animation-easing);\n transition-property: background-color, visibility;\n}\n\n.sbb-dialog {\n display: none;\n position: absolute;\n inset-inline: 0;\n inset-block: auto 0;\n border: none;\n border-radius: var(--sbb-dialog-border-radius) var(--sbb-dialog-border-radius) 0 0;\n max-width: var(--sbb-dialog-max-width);\n max-height: var(--sbb-dialog-max-height);\n color: var(--_sbb-dialog-color);\n background-color: var(--sbb-dialog-background-color);\n}\n:host(:is(:is(:state(state-opening),[state--state-opening]), :is(:state(state-opened),[state--state-opened]), :is(:state(state-closing),[state--state-closing]))) .sbb-dialog {\n display: block;\n animation-name: open;\n animation-duration: var(--sbb-dialog-animation-duration);\n animation-timing-function: ease;\n}\n:host(:is(:state(state-closing),[state--state-closing])) .sbb-dialog {\n pointer-events: none;\n animation-name: close;\n}\n@media (forced-colors: active) {\n .sbb-dialog {\n outline: var(--sbb-border-width-1x) solid CanvasText;\n }\n}\n@media (min-width: calc(37.5rem)) {\n .sbb-dialog {\n height: var(--sbb-dialog-height);\n width: var(--sbb-dialog-width);\n inset: unset;\n border-radius: var(--sbb-dialog-border-radius);\n overflow: hidden;\n }\n}\n\n:host(:is(:state(has-intermediate-element),[state--has-intermediate-element])) ::slotted(:first-child),\n.sbb-dialog__wrapper {\n max-height: var(--sbb-dialog-max-height);\n}\n@media (min-width: calc(37.5rem)) {\n :host(:is(:state(has-intermediate-element),[state--has-intermediate-element])) ::slotted(:first-child),\n .sbb-dialog__wrapper {\n width: var(--sbb-dialog-width);\n height: var(--sbb-dialog-height);\n }\n}\n\n:host(:is(:state(has-intermediate-element),[state--has-intermediate-element])) ::slotted(:first-child),\n:host(:not(:is(:state(has-intermediate-element),[state--has-intermediate-element]))) .sbb-dialog__wrapper {\n display: grid;\n grid-template: \"title close-button\" auto \"content content\" 1fr \"actions actions\" auto/1fr auto;\n gap: 0;\n}\n\n@keyframes open {\n from {\n opacity: 0;\n translate: 0 var(--sbb-dialog-translate-y, 100%);\n }\n to {\n opacity: 1;\n translate: 0 0;\n }\n}\n@keyframes close {\n from {\n opacity: 1;\n translate: 0 0;\n }\n to {\n opacity: 0;\n translate: 0 var(--sbb-dialog-translate-y, 100%);\n }\n}";
12
+ //#endregion
13
+ //#region src/elements/dialog/dialog/dialog.component.ts
14
+ /**
15
+ * It displays an interactive overlay element.
16
+ *
17
+ * @slot - Use the unnamed slot to provide a `sbb-dialog-title`, `sbb-dialog-content` and an optional `sbb-dialog-actions`.
18
+ * @cssprop [--sbb-dialog-z-index=var(--sbb-overlay-default-z-index)] - To specify a custom stack order,
19
+ * the `z-index` can be overridden by defining this CSS variable. The default `z-index` of the
20
+ * component is set to `var(--sbb-overlay-default-z-index)` with a value of `1000`.
21
+ */
22
+ var SbbDialogElement = (() => {
23
+ let _classSuper = SbbOverlayBaseElement;
24
+ let _backdropAction_decorators;
25
+ let _backdropAction_initializers = [];
26
+ let _backdropAction_extraInitializers = [];
27
+ let _backdrop_decorators;
28
+ let _backdrop_initializers = [];
29
+ let _backdrop_extraInitializers = [];
30
+ return class SbbDialogElement extends _classSuper {
31
+ static {
32
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
33
+ _backdropAction_decorators = [property({ attribute: "backdrop-action" })];
34
+ _backdrop_decorators = [property({
35
+ attribute: "backdrop",
36
+ reflect: true
37
+ })];
38
+ __esDecorate(this, null, _backdropAction_decorators, {
39
+ kind: "accessor",
40
+ name: "backdropAction",
41
+ static: false,
42
+ private: false,
43
+ access: {
44
+ has: (obj) => "backdropAction" in obj,
45
+ get: (obj) => obj.backdropAction,
46
+ set: (obj, value) => {
47
+ obj.backdropAction = value;
48
+ }
49
+ },
50
+ metadata: _metadata
51
+ }, _backdropAction_initializers, _backdropAction_extraInitializers);
52
+ __esDecorate(this, null, _backdrop_decorators, {
53
+ kind: "accessor",
54
+ name: "backdrop",
55
+ static: false,
56
+ private: false,
57
+ access: {
58
+ has: (obj) => "backdrop" in obj,
59
+ get: (obj) => obj.backdrop,
60
+ set: (obj, value) => {
61
+ obj.backdrop = value;
62
+ }
63
+ },
64
+ metadata: _metadata
65
+ }, _backdrop_initializers, _backdrop_extraInitializers);
66
+ if (_metadata) Object.defineProperty(this, Symbol.metadata, {
67
+ enumerable: true,
68
+ configurable: true,
69
+ writable: true,
70
+ value: _metadata
71
+ });
72
+ }
73
+ static {
74
+ this.elementName = "sbb-dialog";
75
+ }
76
+ static {
77
+ this.elementDependencies = [SbbScreenReaderOnlyElement];
78
+ }
79
+ static {
80
+ this.styles = [boxSizingStyles, unsafeCSS(dialog_default)];
81
+ }
82
+ #backdropAction_accessor_storage;
83
+ /** Backdrop click action. */
84
+ get backdropAction() {
85
+ return this.#backdropAction_accessor_storage;
86
+ }
87
+ set backdropAction(value) {
88
+ this.#backdropAction_accessor_storage = value;
89
+ }
90
+ #backdrop_accessor_storage;
91
+ /** Backdrop density. */
92
+ get backdrop() {
93
+ return this.#backdrop_accessor_storage;
94
+ }
95
+ set backdrop(value) {
96
+ this.#backdrop_accessor_storage = value;
97
+ }
98
+ constructor() {
99
+ super();
100
+ this.#backdropAction_accessor_storage = __runInitializers(this, _backdropAction_initializers, "close");
101
+ this.#backdrop_accessor_storage = (__runInitializers(this, _backdropAction_extraInitializers), __runInitializers(this, _backdrop_initializers, "opaque"));
102
+ this._dialogContentResizeObserver = (__runInitializers(this, _backdrop_extraInitializers), new ResizeController(this, {
103
+ target: null,
104
+ skipInitial: true,
105
+ callback: () => setTimeout(() => this._updateOverflowState())
106
+ }));
107
+ this._isPointerDownEventOnDialog = false;
108
+ this.closeAttribute = "sbb-dialog-close";
109
+ this.closeTag = "sbb-dialog-close-button";
110
+ /** Check if the pointerdown event target is triggered on the dialog. */
111
+ this._pointerDownListener = (event) => {
112
+ if (this.backdropAction !== "close") return;
113
+ this._isPointerDownEventOnDialog = !!this._dialogElement && event.composedPath().includes(this._dialogElement);
114
+ };
115
+ /** Close dialog on backdrop click. */
116
+ this._closeOnBackdropClick = (event) => {
117
+ if (this.backdropAction === "close" && !this._isPointerDownEventOnDialog && this._dialogElement && !event.composedPath().includes(this._dialogElement)) this.close();
118
+ };
119
+ this.addEventListener?.("pointerdown", this._pointerDownListener);
120
+ this.addEventListener?.("pointerup", this._closeOnBackdropClick);
121
+ this.addEventListener("scroll", () => this._updateOverflowState(), {
122
+ passive: true,
123
+ capture: true
124
+ });
125
+ }
126
+ /** Announce the accessibility label or dialog title for screen readers. */
127
+ announceTitle() {
128
+ this.setAriaLiveRefContent(this.accessibilityLabel || this.querySelector("sbb-dialog-title")?.textContent.trim());
129
+ }
130
+ isZeroAnimationDuration() {
131
+ return isZeroAnimationDuration(this, "--sbb-dialog-animation-duration");
132
+ }
133
+ handleClosing() {
134
+ const contentElement = this._contentElement();
135
+ contentElement?.scrollTo(0, 0);
136
+ this.state = "closed";
137
+ this.hidePopover?.();
138
+ this.inertController.deactivate();
139
+ if (!this.skipFocusRestoration) this.lastFocusedElement?.focus();
140
+ this.openOverlayController?.abort();
141
+ this.focusTrapController.enabled = false;
142
+ if (contentElement) this._dialogContentResizeObserver.hostDisconnected();
143
+ this.removeInstanceFromGlobalCollection();
144
+ if (!overlayRefs.length) this.scrollHandler.enableScroll();
145
+ this.escapableOverlayController.disconnect();
146
+ this.dispatchCloseEvent({
147
+ returnValue: this.returnValue,
148
+ closeTarget: this.overlayCloseElement
149
+ });
150
+ }
151
+ handleOpening() {
152
+ this.state = "opened";
153
+ this.inertController.activate();
154
+ this.focusTrapController.focusInitialElement();
155
+ this.focusTrapController.enabled = true;
156
+ setTimeout(() => this.announceTitle());
157
+ const contentElement = this._contentElement();
158
+ if (contentElement) this._dialogContentResizeObserver.observe(contentElement);
159
+ this.dispatchOpenEvent();
160
+ }
161
+ firstUpdated(changedProperties) {
162
+ super.firstUpdated(changedProperties);
163
+ if (this.isOpen) this.announceTitle();
164
+ this._syncTitleNegative();
165
+ }
166
+ willUpdate(changedProperties) {
167
+ super.willUpdate(changedProperties);
168
+ if (changedProperties.has("negative")) this._syncTitleNegative();
169
+ }
170
+ _handleSlotChange() {
171
+ this._syncTitleNegative();
172
+ this._detectIntermediateElement();
173
+ }
174
+ _syncTitleNegative() {
175
+ const dialogTitle = this.querySelector?.("sbb-dialog-title");
176
+ const closeButton = this.querySelector?.("sbb-dialog-close-button");
177
+ if (dialogTitle) dialogTitle.negative = this.negative;
178
+ if (closeButton) closeButton.negative = this.negative;
179
+ }
180
+ _detectIntermediateElement() {
181
+ const hasNoExpectedDirectChildren = this.querySelector(":scope > :is(sbb-dialog-title, sbb-dialog-close-button, sbb-dialog-content, sbb-dialog-actions)") === null;
182
+ this.toggleState("has-intermediate-element", hasNoExpectedDirectChildren);
183
+ }
184
+ _updateOverflowState() {
185
+ const contentElement = this._contentElement();
186
+ this.toggleState("top-shadow", (contentElement?.scrollTop ?? 0) > 0);
187
+ this.toggleState("bottom-shadow", (contentElement?.scrollTop ?? 0) + (contentElement?.offsetHeight ?? 0) < (contentElement?.scrollHeight ?? 0));
188
+ }
189
+ _contentElement() {
190
+ return this.querySelector("sbb-dialog-content");
191
+ }
192
+ dispatchBeforeCloseEvent(_detail) {
193
+ /** @type {SbbDialogCloseEvent} Emits whenever the component begins the closing transition. Can be canceled. */
194
+ return this.dispatchEvent(new SbbOverlayCloseEvent("beforeclose", {
195
+ cancelable: true,
196
+ closeAttribute: this.closeAttribute,
197
+ closeTarget: this.overlayCloseElement,
198
+ result: this.returnValue
199
+ }));
200
+ }
201
+ dispatchCloseEvent(_detail) {
202
+ /** @type {SbbDialogCloseEvent} Emits whenever the component is closed. */
203
+ return this.dispatchEvent(new SbbOverlayCloseEvent("close", {
204
+ closeAttribute: this.closeAttribute,
205
+ closeTarget: this.overlayCloseElement,
206
+ result: this.returnValue
207
+ }));
208
+ }
209
+ render() {
210
+ return html$1`
211
+ <div class="sbb-dialog__container">
212
+ <div
213
+ @animationend=${this.onOverlayAnimationEnd}
214
+ class="sbb-dialog"
215
+ ${ref((el) => this._dialogElement = el)}
216
+ >
217
+ <div
218
+ @click=${(event) => this.closeOnSbbOverlayCloseClick(event)}
219
+ class="sbb-dialog__wrapper"
220
+ >
221
+ <slot @slotchange=${() => this._handleSlotChange()}></slot>
222
+ </div>
223
+ </div>
224
+ </div>
225
+ <sbb-screen-reader-only aria-live="polite"></sbb-screen-reader-only>
226
+ `;
227
+ }
228
+ };
229
+ })();
230
+ //#endregion
231
+ export { SbbDialogElement as n, assignDialogResult as r, SbbDialogCloseEvent as t };
232
+
233
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLmNvbXBvbmVudC1CVFh5V2kxNy5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZWxlbWVudHMvZGlhbG9nL2RpYWxvZy9kaWFsb2cuc2Nzcz9pbmxpbmUiLCIuLi8uLi8uLi9zcmMvZWxlbWVudHMvZGlhbG9nL2RpYWxvZy9kaWFsb2cuY29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIkB1c2UgJy4uLy4uL2NvcmUvc3R5bGVzJyBhcyBzYmI7XG5cbjpob3N0IHtcbiAgLS1zYmItZGlhbG9nLWFuaW1hdGlvbi1kdXJhdGlvbjogdmFyKFxuICAgIC0tc2JiLWRpc2FibGUtYW5pbWF0aW9uLWR1cmF0aW9uLFxuICAgIHZhcigtLXNiYi1hbmltYXRpb24tZHVyYXRpb24tNngpXG4gICk7XG4gIC0tc2JiLWRpYWxvZy1wYWRkaW5nLWJsb2NrOiB2YXIoLS1zYmItc3BhY2luZy1yZXNwb25zaXZlLXhzKTtcbiAgLS1zYmItZGlhbG9nLXNoYWRvdy1hbmltYXRpb24tZHVyYXRpb246IHZhcihcbiAgICAtLXNiYi1kaXNhYmxlLWFuaW1hdGlvbi1kdXJhdGlvbixcbiAgICB2YXIoLS1zYmItYW5pbWF0aW9uLWR1cmF0aW9uLTR4KVxuICApO1xuXG4gIGRpc3BsYXk6IG5vbmU7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgaW5zZXQ6IHZhcigtLXNiYi1kaWFsb2ctaW5zZXQpO1xuICB6LWluZGV4OiB2YXIoLS1zYmItZGlhbG9nLXotaW5kZXgsIHZhcigtLXNiYi1vdmVybGF5LWRlZmF1bHQtei1pbmRleCkpO1xufVxuXG46aG9zdCg6c3RhdGUodG9wLXNoYWRvdykpIHtcbiAgLS1zYmItZGlhbG9nLWJsb2NrLXN0YXJ0LWJveC1zaGFkb3c6IHZhcigtLV9zYmItZGlhbG9nLWJsb2NrLXNoYWRvdyk7XG59XG5cbjpob3N0KDppcyg6c3RhdGUoc3RhdGUtb3BlbmluZyksIDpzdGF0ZShzdGF0ZS1vcGVuZWQpLCA6c3RhdGUoc3RhdGUtY2xvc2luZykpKSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuXG46aG9zdCg6aXMoOnN0YXRlKHN0YXRlLW9wZW5pbmcpLCA6c3RhdGUoc3RhdGUtb3BlbmVkKSkpIHtcbiAgLS1zYmItZGlhbG9nLXBvaW50ZXItZXZlbnRzOiBhbGw7XG4gIC0tc2JiLWRpYWxvZy1iYWNrZHJvcC1jb2xvcjogdmFyKC0tc2JiLWJhY2tncm91bmQtY29sb3ItMyk7XG4gIC0tc2JiLWRpYWxvZy1iYWNrZHJvcC12aXNpYmlsaXR5OiB2aXNpYmxlO1xuICAtLXNiYi1kaWFsb2ctYmFja2Ryb3AtcG9pbnRlci1ldmVudHM6IGFsbDtcbn1cblxuOmhvc3QoW2JhY2tkcm9wPSd0cmFuc2x1Y2VudCddOmlzKDpzdGF0ZShzdGF0ZS1vcGVuaW5nKSwgOnN0YXRlKHN0YXRlLW9wZW5lZCkpKSB7XG4gIC0tc2JiLWRpYWxvZy1iYWNrZHJvcC1jb2xvcjogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLXNiYi1jb2xvci1ibGFjaykgNTAlLCB0cmFuc3BhcmVudCk7XG59XG5cbjpob3N0KFtiYWNrZHJvcD0nb3BhcXVlJ106bm90KFtuZWdhdGl2ZV0pOmlzKDpzdGF0ZShzdGF0ZS1vcGVuaW5nKSwgOnN0YXRlKHN0YXRlLW9wZW5lZCkpKSB7XG4gIC0tc2JiLWRpYWxvZy1iYWNrZHJvcC1jb2xvcjogdmFyKC0tc2JiLWJhY2tncm91bmQtY29sb3ItMyk7XG59XG5cbjpob3N0KDpub3QoW25lZ2F0aXZlXSkpIHtcbiAgLS1fc2JiLWRpYWxvZy1jb2xvcjogdmFyKC0tc2JiLWRpYWxvZy1jb2xvcik7XG4gIC0tX3NiYi1kaWFsb2ctYmxvY2stc2hhZG93OiB2YXIoLS1zYmItZGlhbG9nLWJsb2NrLXNoYWRvdyk7XG4gIC0tc2JiLWRpYWxvZy1hY3Rpb25zLWJvcmRlci1jb2xvcjogdmFyKC0tc2JiLWJhY2tncm91bmQtY29sb3ItNCk7XG4gIC0tc2JiLWRpYWxvZy1iYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zYmItYmFja2dyb3VuZC1jb2xvci0xKTtcbn1cblxuOmhvc3QoW25lZ2F0aXZlXSkge1xuICAtLV9zYmItZGlhbG9nLWNvbG9yOiB2YXIoLS1zYmItZGlhbG9nLWNvbG9yLW5lZ2F0aXZlKTtcbiAgLS1fc2JiLWRpYWxvZy1ibG9jay1zaGFkb3c6IHZhcigtLXNiYi1kaWFsb2ctYmxvY2stc2hhZG93LW5lZ2F0aXZlKTtcbiAgLS1zYmItZGlhbG9nLWJhY2tncm91bmQtY29sb3I6IHZhcigtLXNiYi1iYWNrZ3JvdW5kLWNvbG9yLTEtbmVnYXRpdmUpO1xuICAtLXNiYi1kaWFsb2ctYWN0aW9ucy1ib3JkZXItY29sb3I6IHZhcigtLXNiYi1iYWNrZ3JvdW5kLWNvbG9yLTQtbmVnYXRpdmUpO1xuICAtLXNiYi1kaWFsb2ctYmFja2Ryb3AtY29sb3I6IHZhcigtLXNiYi1iYWNrZ3JvdW5kLWNvbG9yLTMtbmVnYXRpdmUpO1xuICAtLXNiYi1mb2N1cy1vdXRsaW5lLWNvbG9yOiB2YXIoLS1zYmItZm9jdXMtb3V0bGluZS1jb2xvci1kYXJrKTtcbn1cblxuOmhvc3QoOnN0YXRlKGJvdHRvbS1zaGFkb3cpKSB7XG4gIC0tc2JiLWRpYWxvZy1ibG9jay1lbmQtYm94LXNoYWRvdzogdmFyKC0tX3NiYi1kaWFsb2ctYmxvY2stc2hhZG93KTtcbiAgLS1zYmItZGlhbG9nLWFjdGlvbnMtYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcbn1cblxuOmhvc3QoOm5vdCg6c3RhdGUoc3RhdGUtY2xvc2VkKSkpIHtcbiAgLS1zYmItZGlhbG9nLWluc2V0LWJsb2NrOiAwO1xuICAtLXNiYi1kaWFsb2ctaW5zZXQtaW5saW5lOiAwO1xufVxuXG4uc2JiLWRpYWxvZ19fY29udGFpbmVyIHtcbiAgcG9pbnRlci1ldmVudHM6IHZhcigtLXNiYi1kaWFsb2ctcG9pbnRlci1ldmVudHMpO1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgcG9zaXRpb246IGZpeGVkO1xuICBpbnNldC1ibG9jazogdmFyKC0tc2JiLWRpYWxvZy1pbnNldC1ibG9jayk7XG4gIGluc2V0LWlubGluZTogdmFyKC0tc2JiLWRpYWxvZy1pbnNldC1pbmxpbmUpO1xuXG4gIC8vIERpYWxvZyBiYWNrZHJvcCAobm90IHZpc2libGUgb24gbW9iaWxlKVxuICAmOjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICcnO1xuICAgIHZpc2liaWxpdHk6IHZhcigtLXNiYi1kaWFsb2ctYmFja2Ryb3AtdmlzaWJpbGl0eSk7XG4gICAgcG9pbnRlci1ldmVudHM6IHZhcigtLXNiYi1kaWFsb2ctYmFja2Ryb3AtcG9pbnRlci1ldmVudHMpO1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICBpbnNldC1ibG9jazogdmFyKC0tc2JiLWRpYWxvZy1pbnNldC1ibG9jayk7XG4gICAgaW5zZXQtaW5saW5lOiB2YXIoLS1zYmItZGlhbG9nLWluc2V0LWlubGluZSk7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc2JiLWRpYWxvZy1iYWNrZHJvcC1jb2xvcik7XG4gICAgdHJhbnNpdGlvbjoge1xuICAgICAgZHVyYXRpb246IHZhcigtLXNiYi1kaWFsb2ctYW5pbWF0aW9uLWR1cmF0aW9uKTtcbiAgICAgIHRpbWluZy1mdW5jdGlvbjogdmFyKC0tc2JiLWRpYWxvZy1hbmltYXRpb24tZWFzaW5nKTtcbiAgICAgIHByb3BlcnR5OiBiYWNrZ3JvdW5kLWNvbG9yLCB2aXNpYmlsaXR5O1xuICAgIH1cbiAgfVxufVxuXG4uc2JiLWRpYWxvZyB7XG4gIGRpc3BsYXk6IG5vbmU7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgaW5zZXQtaW5saW5lOiAwO1xuICBpbnNldC1ibG9jazogYXV0byAwO1xuICBib3JkZXI6IG5vbmU7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXNiYi1kaWFsb2ctYm9yZGVyLXJhZGl1cykgdmFyKC0tc2JiLWRpYWxvZy1ib3JkZXItcmFkaXVzKSAwIDA7XG4gIG1heC13aWR0aDogdmFyKC0tc2JiLWRpYWxvZy1tYXgtd2lkdGgpO1xuICBtYXgtaGVpZ2h0OiB2YXIoLS1zYmItZGlhbG9nLW1heC1oZWlnaHQpO1xuICBjb2xvcjogdmFyKC0tX3NiYi1kaWFsb2ctY29sb3IpO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zYmItZGlhbG9nLWJhY2tncm91bmQtY29sb3IpO1xuXG4gIDpob3N0KDppcyg6c3RhdGUoc3RhdGUtb3BlbmluZyksIDpzdGF0ZShzdGF0ZS1vcGVuZWQpLCA6c3RhdGUoc3RhdGUtY2xvc2luZykpKSAmIHtcbiAgICBkaXNwbGF5OiBibG9jaztcblxuICAgIGFuaW1hdGlvbjoge1xuICAgICAgbmFtZTogb3BlbjtcbiAgICAgIGR1cmF0aW9uOiB2YXIoLS1zYmItZGlhbG9nLWFuaW1hdGlvbi1kdXJhdGlvbik7XG4gICAgICB0aW1pbmctZnVuY3Rpb246IGVhc2U7XG4gICAgfVxuICB9XG5cbiAgOmhvc3QoOnN0YXRlKHN0YXRlLWNsb3NpbmcpKSAmIHtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICBhbmltYXRpb24tbmFtZTogY2xvc2U7XG4gIH1cblxuICBAaW5jbHVkZSBzYmIuaWYtZm9yY2VkLWNvbG9ycyB7XG4gICAgb3V0bGluZTogdmFyKC0tc2JiLWJvcmRlci13aWR0aC0xeCkgc29saWQgQ2FudmFzVGV4dDtcbiAgfVxuXG4gIEBpbmNsdWRlIHNiYi5tcSgkZnJvbTogc21hbGwpIHtcbiAgICBoZWlnaHQ6IHZhcigtLXNiYi1kaWFsb2ctaGVpZ2h0KTtcbiAgICB3aWR0aDogdmFyKC0tc2JiLWRpYWxvZy13aWR0aCk7XG4gICAgaW5zZXQ6IHVuc2V0O1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXNiYi1kaWFsb2ctYm9yZGVyLXJhZGl1cyk7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgfVxufVxuXG46aG9zdCg6c3RhdGUoaGFzLWludGVybWVkaWF0ZS1lbGVtZW50KSkgOjpzbG90dGVkKDpmaXJzdC1jaGlsZCksXG4uc2JiLWRpYWxvZ19fd3JhcHBlciB7XG4gIG1heC1oZWlnaHQ6IHZhcigtLXNiYi1kaWFsb2ctbWF4LWhlaWdodCk7XG5cbiAgQGluY2x1ZGUgc2JiLm1xKCRmcm9tOiBzbWFsbCkge1xuICAgIHdpZHRoOiB2YXIoLS1zYmItZGlhbG9nLXdpZHRoKTtcbiAgICBoZWlnaHQ6IHZhcigtLXNiYi1kaWFsb2ctaGVpZ2h0KTtcbiAgfVxufVxuXG46aG9zdCg6c3RhdGUoaGFzLWludGVybWVkaWF0ZS1lbGVtZW50KSkgOjpzbG90dGVkKDpmaXJzdC1jaGlsZCksXG46aG9zdCg6bm90KDpzdGF0ZShoYXMtaW50ZXJtZWRpYXRlLWVsZW1lbnQpKSkgLnNiYi1kaWFsb2dfX3dyYXBwZXIge1xuICBkaXNwbGF5OiBncmlkO1xuICBncmlkLXRlbXBsYXRlOlxuICAgICd0aXRsZSBjbG9zZS1idXR0b24nIGF1dG9cbiAgICAnY29udGVudCBjb250ZW50JyAxZnJcbiAgICAnYWN0aW9ucyBhY3Rpb25zJyBhdXRvIC8gMWZyIGF1dG87XG4gIGdhcDogMDtcbn1cblxuLy8gSXQgaXMgbmVjZXNzYXJ5IHRvIHVzZSBhbmltYXRpb25zIHdpdGgga2V5ZnJhbWVzIGluc3RlYWQgb2YgdHJhbnNpdGlvbnMgaW4gb3JkZXIgbm90IHRvIGFsdGVyXG4vLyB0aGUgZGVmYXVsdCBgZGlzcGxheTogYmxvY2tgIG9mIHRoZSBtb2RhbCBvdGhlcndpc2UgaXQgY2F1c2VzIHNldmVyYWwgcHJvYmxlbXMsXG4vLyBlc3BlY2lhbGx5IGZvciBhY2Nlc3NpYmlsaXR5LlxuQGtleWZyYW1lcyBvcGVuIHtcbiAgZnJvbSB7XG4gICAgb3BhY2l0eTogMDtcbiAgICB0cmFuc2xhdGU6IDAgdmFyKC0tc2JiLWRpYWxvZy10cmFuc2xhdGUteSwgMTAwJSk7XG4gIH1cblxuICB0byB7XG4gICAgb3BhY2l0eTogMTtcbiAgICB0cmFuc2xhdGU6IDAgMDtcbiAgfVxufVxuXG5Aa2V5ZnJhbWVzIGNsb3NlIHtcbiAgZnJvbSB7XG4gICAgb3BhY2l0eTogMTtcbiAgICB0cmFuc2xhdGU6IDAgMDtcbiAgfVxuXG4gIHRvIHtcbiAgICBvcGFjaXR5OiAwO1xuICAgIHRyYW5zbGF0ZTogMCB2YXIoLS1zYmItZGlhbG9nLXRyYW5zbGF0ZS15LCAxMDAlKTtcbiAgfVxufVxuIiwiaW1wb3J0IHsgUmVzaXplQ29udHJvbGxlciB9IGZyb20gJ0BsaXQtbGFicy9vYnNlcnZlcnMvcmVzaXplLWNvbnRyb2xsZXIuanMnO1xuaW1wb3J0IHsgdHlwZSBDU1NSZXN1bHRHcm91cCwgdHlwZSBQcm9wZXJ0eVZhbHVlcywgdHlwZSBUZW1wbGF0ZVJlc3VsdCwgdW5zYWZlQ1NTIH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IHByb3BlcnR5IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuaW1wb3J0IHsgcmVmIH0gZnJvbSAnbGl0L2RpcmVjdGl2ZXMvcmVmLmpzJztcbmltcG9ydCB7IGh0bWwgfSBmcm9tICdsaXQvc3RhdGljLWh0bWwuanMnO1xuXG5pbXBvcnQgdHlwZSB7IFNiYkVsZW1lbnRUeXBlLCBTYmJPdmVybGF5Q2xvc2VFdmVudERldGFpbHMgfSBmcm9tICcuLi8uLi9jb3JlLnRzJztcbmltcG9ydCB7XG4gIGJveFNpemluZ1N0eWxlcyxcbiAgaXNaZXJvQW5pbWF0aW9uRHVyYXRpb24sXG4gIFNiYlNjcmVlblJlYWRlck9ubHlFbGVtZW50LFxufSBmcm9tICcuLi8uLi9jb3JlLnRzJztcbmltcG9ydCB7XG4gIG92ZXJsYXlSZWZzLFxuICBTYmJPdmVybGF5QmFzZUVsZW1lbnQsXG4gIFNiYk92ZXJsYXlDbG9zZUV2ZW50IGFzIFNiYkRpYWxvZ0Nsb3NlRXZlbnQsXG59IGZyb20gJy4uLy4uL292ZXJsYXkucHVyZS50cyc7XG5pbXBvcnQgdHlwZSB7IFNiYkRpYWxvZ0NvbnRlbnRFbGVtZW50IH0gZnJvbSAnLi4vZGlhbG9nLWNvbnRlbnQvZGlhbG9nLWNvbnRlbnQuY29tcG9uZW50LnRzJztcblxuaW1wb3J0IHN0eWxlIGZyb20gJy4vZGlhbG9nLnNjc3M/aW5saW5lJztcblxuZXhwb3J0IHtcbiAgYXNzaWduT3ZlcmxheVJlc3VsdCBhcyBhc3NpZ25EaWFsb2dSZXN1bHQsXG4gIFNiYk92ZXJsYXlDbG9zZUV2ZW50IGFzIFNiYkRpYWxvZ0Nsb3NlRXZlbnQsXG59IGZyb20gJy4uLy4uL292ZXJsYXkvb3ZlcmxheS1iYXNlLWVsZW1lbnQudHMnO1xuXG4vKipcbiAqIEl0IGRpc3BsYXlzIGFuIGludGVyYWN0aXZlIG92ZXJsYXkgZWxlbWVudC5cbiAqXG4gKiBAc2xvdCAtIFVzZSB0aGUgdW5uYW1lZCBzbG90IHRvIHByb3ZpZGUgYSBgc2JiLWRpYWxvZy10aXRsZWAsIGBzYmItZGlhbG9nLWNvbnRlbnRgIGFuZCBhbiBvcHRpb25hbCBgc2JiLWRpYWxvZy1hY3Rpb25zYC5cbiAqIEBjc3Nwcm9wIFstLXNiYi1kaWFsb2ctei1pbmRleD12YXIoLS1zYmItb3ZlcmxheS1kZWZhdWx0LXotaW5kZXgpXSAtIFRvIHNwZWNpZnkgYSBjdXN0b20gc3RhY2sgb3JkZXIsXG4gKiB0aGUgYHotaW5kZXhgIGNhbiBiZSBvdmVycmlkZGVuIGJ5IGRlZmluaW5nIHRoaXMgQ1NTIHZhcmlhYmxlLiBUaGUgZGVmYXVsdCBgei1pbmRleGAgb2YgdGhlXG4gKiBjb21wb25lbnQgaXMgc2V0IHRvIGB2YXIoLS1zYmItb3ZlcmxheS1kZWZhdWx0LXotaW5kZXgpYCB3aXRoIGEgdmFsdWUgb2YgYDEwMDBgLlxuICovXG5leHBvcnQgY2xhc3MgU2JiRGlhbG9nRWxlbWVudCBleHRlbmRzIFNiYk92ZXJsYXlCYXNlRWxlbWVudCB7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgcmVhZG9ubHkgZWxlbWVudE5hbWU6IHN0cmluZyA9ICdzYmItZGlhbG9nJztcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBlbGVtZW50RGVwZW5kZW5jaWVzOiBTYmJFbGVtZW50VHlwZVtdID0gW1NiYlNjcmVlblJlYWRlck9ubHlFbGVtZW50XTtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gW2JveFNpemluZ1N0eWxlcywgdW5zYWZlQ1NTKHN0eWxlKV07XG5cbiAgLyoqIEJhY2tkcm9wIGNsaWNrIGFjdGlvbi4gKi9cbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnYmFja2Ryb3AtYWN0aW9uJyB9KSBwdWJsaWMgYWNjZXNzb3IgYmFja2Ryb3BBY3Rpb246ICdjbG9zZScgfCAnbm9uZScgPVxuICAgICdjbG9zZSc7XG5cbiAgLyoqIEJhY2tkcm9wIGRlbnNpdHkuICovXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2JhY2tkcm9wJywgcmVmbGVjdDogdHJ1ZSB9KSBwdWJsaWMgYWNjZXNzb3IgYmFja2Ryb3A6XG4gICAgfCAnb3BhcXVlJ1xuICAgIHwgJ3RyYW5zbHVjZW50JyA9ICdvcGFxdWUnO1xuXG4gIC8vIFdlIHVzZSBhIHRpbWVvdXQgYXMgYSB3b3JrYXJvdW5kIHRvIHRoZSBcIlJlc2l6ZU9ic2VydmVyIGxvb3AgY29tcGxldGVkIHdpdGggdW5kZWxpdmVyZWQgbm90aWZpY2F0aW9uc1wiIGVycm9yLlxuICAvLyBGb3IgbW9yZSBkZXRhaWxzOlxuICAvLyAtIGh0dHBzOi8vZ2l0aHViLmNvbS9XSUNHL3Jlc2l6ZS1vYnNlcnZlci9pc3N1ZXMvMzgjaXNzdWVjb21tZW50LTQyMjEyNjAwNlxuICAvLyAtIGh0dHBzOi8vZ2l0aHViLmNvbS9qdWdnbGUvcmVzaXplLW9ic2VydmVyL2lzc3Vlcy8xMDMjaXNzdWVjb21tZW50LTE3MTExNDgyODVcbiAgcHJpdmF0ZSBfZGlhbG9nQ29udGVudFJlc2l6ZU9ic2VydmVyID0gbmV3IFJlc2l6ZUNvbnRyb2xsZXIodGhpcywge1xuICAgIHRhcmdldDogbnVsbCxcbiAgICBza2lwSW5pdGlhbDogdHJ1ZSxcbiAgICBjYWxsYmFjazogKCkgPT4gc2V0VGltZW91dCgoKSA9PiB0aGlzLl91cGRhdGVPdmVyZmxvd1N0YXRlKCkpLFxuICB9KTtcblxuICBwcml2YXRlIF9kaWFsb2dFbGVtZW50PzogSFRNTEVsZW1lbnQ7XG4gIHByaXZhdGUgX2lzUG9pbnRlckRvd25FdmVudE9uRGlhbG9nOiBib29sZWFuID0gZmFsc2U7XG4gIHByb3RlY3RlZCBjbG9zZUF0dHJpYnV0ZTogc3RyaW5nID0gJ3NiYi1kaWFsb2ctY2xvc2UnO1xuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgY2xvc2VUYWc6IHN0cmluZyA9ICdzYmItZGlhbG9nLWNsb3NlLWJ1dHRvbic7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgLy8gQ2xvc2UgZGlhbG9nIG9uIGJhY2tkcm9wIGNsaWNrXG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyPy4oJ3BvaW50ZXJkb3duJywgdGhpcy5fcG9pbnRlckRvd25MaXN0ZW5lcik7XG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyPy4oJ3BvaW50ZXJ1cCcsIHRoaXMuX2Nsb3NlT25CYWNrZHJvcENsaWNrKTtcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsICgpID0+IHRoaXMuX3VwZGF0ZU92ZXJmbG93U3RhdGUoKSwge1xuICAgICAgcGFzc2l2ZTogdHJ1ZSxcbiAgICAgIGNhcHR1cmU6IHRydWUsXG4gICAgfSk7XG4gIH1cblxuICAvKiogQW5ub3VuY2UgdGhlIGFjY2Vzc2liaWxpdHkgbGFiZWwgb3IgZGlhbG9nIHRpdGxlIGZvciBzY3JlZW4gcmVhZGVycy4gKi9cbiAgcHVibGljIGFubm91bmNlVGl0bGUoKTogdm9pZCB7XG4gICAgdGhpcy5zZXRBcmlhTGl2ZVJlZkNvbnRlbnQoXG4gICAgICB0aGlzLmFjY2Vzc2liaWxpdHlMYWJlbCB8fCB0aGlzLnF1ZXJ5U2VsZWN0b3IoJ3NiYi1kaWFsb2ctdGl0bGUnKT8udGV4dENvbnRlbnQudHJpbSgpLFxuICAgICk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaXNaZXJvQW5pbWF0aW9uRHVyYXRpb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGlzWmVyb0FuaW1hdGlvbkR1cmF0aW9uKHRoaXMsICctLXNiYi1kaWFsb2ctYW5pbWF0aW9uLWR1cmF0aW9uJyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlQ2xvc2luZygpOiB2b2lkIHtcbiAgICBjb25zdCBjb250ZW50RWxlbWVudCA9IHRoaXMuX2NvbnRlbnRFbGVtZW50KCk7XG5cbiAgICBjb250ZW50RWxlbWVudD8uc2Nyb2xsVG8oMCwgMCk7XG4gICAgdGhpcy5zdGF0ZSA9ICdjbG9zZWQnO1xuICAgIHRoaXMuaGlkZVBvcG92ZXI/LigpO1xuXG4gICAgdGhpcy5pbmVydENvbnRyb2xsZXIuZGVhY3RpdmF0ZSgpO1xuICAgIGlmICghdGhpcy5za2lwRm9jdXNSZXN0b3JhdGlvbikge1xuICAgICAgLy8gTWFudWFsbHkgZm9jdXMgbGFzdCBmb2N1c2VkIGVsZW1lbnRcbiAgICAgIHRoaXMubGFzdEZvY3VzZWRFbGVtZW50Py5mb2N1cygpO1xuICAgIH1cbiAgICB0aGlzLm9wZW5PdmVybGF5Q29udHJvbGxlcj8uYWJvcnQoKTtcbiAgICB0aGlzLmZvY3VzVHJhcENvbnRyb2xsZXIuZW5hYmxlZCA9IGZhbHNlO1xuICAgIGlmIChjb250ZW50RWxlbWVudCkge1xuICAgICAgdGhpcy5fZGlhbG9nQ29udGVudFJlc2l6ZU9ic2VydmVyLmhvc3REaXNjb25uZWN0ZWQoKTtcbiAgICB9XG4gICAgdGhpcy5yZW1vdmVJbnN0YW5jZUZyb21HbG9iYWxDb2xsZWN0aW9uKCk7XG4gICAgLy8gRW5hYmxlIHNjcm9sbGluZyBmb3IgY29udGVudCBiZWxvdyB0aGUgZGlhbG9nIGlmIG5vIGRpYWxvZyBpcyBvcGVuXG4gICAgaWYgKCFvdmVybGF5UmVmcy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuc2Nyb2xsSGFuZGxlci5lbmFibGVTY3JvbGwoKTtcbiAgICB9XG4gICAgdGhpcy5lc2NhcGFibGVPdmVybGF5Q29udHJvbGxlci5kaXNjb25uZWN0KCk7XG4gICAgdGhpcy5kaXNwYXRjaENsb3NlRXZlbnQoe1xuICAgICAgcmV0dXJuVmFsdWU6IHRoaXMucmV0dXJuVmFsdWUsXG4gICAgICBjbG9zZVRhcmdldDogdGhpcy5vdmVybGF5Q2xvc2VFbGVtZW50LFxuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZU9wZW5pbmcoKTogdm9pZCB7XG4gICAgdGhpcy5zdGF0ZSA9ICdvcGVuZWQnO1xuICAgIHRoaXMuaW5lcnRDb250cm9sbGVyLmFjdGl2YXRlKCk7XG4gICAgdGhpcy5mb2N1c1RyYXBDb250cm9sbGVyLmZvY3VzSW5pdGlhbEVsZW1lbnQoKTtcbiAgICB0aGlzLmZvY3VzVHJhcENvbnRyb2xsZXIuZW5hYmxlZCA9IHRydWU7XG4gICAgLy8gVXNlIHRpbWVvdXQgdG8gcmVhZCBsYWJlbCBhZnRlciBmb2N1c2VkIGVsZW1lbnRcbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuYW5ub3VuY2VUaXRsZSgpKTtcblxuICAgIGNvbnN0IGNvbnRlbnRFbGVtZW50ID0gdGhpcy5fY29udGVudEVsZW1lbnQoKTtcbiAgICBpZiAoY29udGVudEVsZW1lbnQpIHtcbiAgICAgIHRoaXMuX2RpYWxvZ0NvbnRlbnRSZXNpemVPYnNlcnZlci5vYnNlcnZlKGNvbnRlbnRFbGVtZW50KTtcbiAgICB9XG4gICAgdGhpcy5kaXNwYXRjaE9wZW5FdmVudCgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGZpcnN0VXBkYXRlZChjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICBzdXBlci5maXJzdFVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXMpO1xuXG4gICAgLy8gSWYgdGhlIGNvbXBvbmVudCBpcyBhbHJlYWR5IG9wZW4gb24gZmlyc3RVcGRhdGUsIGFubm91bmNlIHRoZSB0aXRsZVxuICAgIGlmICh0aGlzLmlzT3Blbikge1xuICAgICAgdGhpcy5hbm5vdW5jZVRpdGxlKCk7XG4gICAgfVxuXG4gICAgdGhpcy5fc3luY1RpdGxlTmVnYXRpdmUoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSB3aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlczx0aGlzPik6IHZvaWQge1xuICAgIHN1cGVyLndpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXMpO1xuXG4gICAgaWYgKGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygnbmVnYXRpdmUnKSkge1xuICAgICAgdGhpcy5fc3luY1RpdGxlTmVnYXRpdmUoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9oYW5kbGVTbG90Q2hhbmdlKCk6IHZvaWQge1xuICAgIHRoaXMuX3N5bmNUaXRsZU5lZ2F0aXZlKCk7XG4gICAgdGhpcy5fZGV0ZWN0SW50ZXJtZWRpYXRlRWxlbWVudCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfc3luY1RpdGxlTmVnYXRpdmUoKTogdm9pZCB7XG4gICAgY29uc3QgZGlhbG9nVGl0bGUgPSB0aGlzLnF1ZXJ5U2VsZWN0b3I/Lignc2JiLWRpYWxvZy10aXRsZScpO1xuICAgIGNvbnN0IGNsb3NlQnV0dG9uID0gdGhpcy5xdWVyeVNlbGVjdG9yPy4oJ3NiYi1kaWFsb2ctY2xvc2UtYnV0dG9uJyk7XG5cbiAgICBpZiAoZGlhbG9nVGl0bGUpIHtcbiAgICAgIGRpYWxvZ1RpdGxlLm5lZ2F0aXZlID0gdGhpcy5uZWdhdGl2ZTtcbiAgICB9XG5cbiAgICBpZiAoY2xvc2VCdXR0b24pIHtcbiAgICAgIGNsb3NlQnV0dG9uLm5lZ2F0aXZlID0gdGhpcy5uZWdhdGl2ZTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9kZXRlY3RJbnRlcm1lZGlhdGVFbGVtZW50KCk6IHZvaWQge1xuICAgIGNvbnN0IGhhc05vRXhwZWN0ZWREaXJlY3RDaGlsZHJlbiA9XG4gICAgICB0aGlzLnF1ZXJ5U2VsZWN0b3IoXG4gICAgICAgICc6c2NvcGUgPiA6aXMoc2JiLWRpYWxvZy10aXRsZSwgc2JiLWRpYWxvZy1jbG9zZS1idXR0b24sIHNiYi1kaWFsb2ctY29udGVudCwgc2JiLWRpYWxvZy1hY3Rpb25zKScsXG4gICAgICApID09PSBudWxsO1xuXG4gICAgdGhpcy50b2dnbGVTdGF0ZSgnaGFzLWludGVybWVkaWF0ZS1lbGVtZW50JywgaGFzTm9FeHBlY3RlZERpcmVjdENoaWxkcmVuKTtcbiAgfVxuXG4gIC8qKiBDaGVjayBpZiB0aGUgcG9pbnRlcmRvd24gZXZlbnQgdGFyZ2V0IGlzIHRyaWdnZXJlZCBvbiB0aGUgZGlhbG9nLiAqL1xuICBwcml2YXRlIF9wb2ludGVyRG93bkxpc3RlbmVyID0gKGV2ZW50OiBQb2ludGVyRXZlbnQpOiB2b2lkID0+IHtcbiAgICBpZiAodGhpcy5iYWNrZHJvcEFjdGlvbiAhPT0gJ2Nsb3NlJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2lzUG9pbnRlckRvd25FdmVudE9uRGlhbG9nID1cbiAgICAgICEhdGhpcy5fZGlhbG9nRWxlbWVudCAmJiBldmVudC5jb21wb3NlZFBhdGgoKS5pbmNsdWRlcyh0aGlzLl9kaWFsb2dFbGVtZW50KTtcbiAgfTtcblxuICAvKiogQ2xvc2UgZGlhbG9nIG9uIGJhY2tkcm9wIGNsaWNrLiAqL1xuICBwcml2YXRlIF9jbG9zZU9uQmFja2Ryb3BDbGljayA9IChldmVudDogUG9pbnRlckV2ZW50KTogdm9pZCA9PiB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5iYWNrZHJvcEFjdGlvbiA9PT0gJ2Nsb3NlJyAmJlxuICAgICAgIXRoaXMuX2lzUG9pbnRlckRvd25FdmVudE9uRGlhbG9nICYmXG4gICAgICB0aGlzLl9kaWFsb2dFbGVtZW50ICYmXG4gICAgICAhZXZlbnQuY29tcG9zZWRQYXRoKCkuaW5jbHVkZXModGhpcy5fZGlhbG9nRWxlbWVudClcbiAgICApIHtcbiAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9XG4gIH07XG5cbiAgcHJpdmF0ZSBfdXBkYXRlT3ZlcmZsb3dTdGF0ZSgpOiB2b2lkIHtcbiAgICBjb25zdCBjb250ZW50RWxlbWVudCA9IHRoaXMuX2NvbnRlbnRFbGVtZW50KCk7XG4gICAgdGhpcy50b2dnbGVTdGF0ZSgndG9wLXNoYWRvdycsIChjb250ZW50RWxlbWVudD8uc2Nyb2xsVG9wID8/IDApID4gMCk7XG4gICAgdGhpcy50b2dnbGVTdGF0ZShcbiAgICAgICdib3R0b20tc2hhZG93JyxcbiAgICAgIChjb250ZW50RWxlbWVudD8uc2Nyb2xsVG9wID8/IDApICsgKGNvbnRlbnRFbGVtZW50Py5vZmZzZXRIZWlnaHQgPz8gMCkgPFxuICAgICAgICAoY29udGVudEVsZW1lbnQ/LnNjcm9sbEhlaWdodCA/PyAwKSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBfY29udGVudEVsZW1lbnQoKTogU2JiRGlhbG9nQ29udGVudEVsZW1lbnQgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5xdWVyeVNlbGVjdG9yKCdzYmItZGlhbG9nLWNvbnRlbnQnKTtcbiAgfVxuXG4gIC8vIFRPRE86IHJlbW92ZSBwYXJhbWV0ZXIgYGRldGFpbGBcbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGRpc3BhdGNoQmVmb3JlQ2xvc2VFdmVudChfZGV0YWlsPzogU2JiT3ZlcmxheUNsb3NlRXZlbnREZXRhaWxzKTogYm9vbGVhbiB7XG4gICAgLyoqIEB0eXBlIHtTYmJEaWFsb2dDbG9zZUV2ZW50fSBFbWl0cyB3aGVuZXZlciB0aGUgY29tcG9uZW50IGJlZ2lucyB0aGUgY2xvc2luZyB0cmFuc2l0aW9uLiBDYW4gYmUgY2FuY2VsZWQuICovXG4gICAgcmV0dXJuIHRoaXMuZGlzcGF0Y2hFdmVudChcbiAgICAgIG5ldyBTYmJEaWFsb2dDbG9zZUV2ZW50KCdiZWZvcmVjbG9zZScsIHtcbiAgICAgICAgY2FuY2VsYWJsZTogdHJ1ZSxcbiAgICAgICAgY2xvc2VBdHRyaWJ1dGU6IHRoaXMuY2xvc2VBdHRyaWJ1dGUsXG4gICAgICAgIGNsb3NlVGFyZ2V0OiB0aGlzLm92ZXJsYXlDbG9zZUVsZW1lbnQsXG4gICAgICAgIHJlc3VsdDogdGhpcy5yZXR1cm5WYWx1ZSxcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICAvLyBUT0RPOiByZW1vdmUgcGFyYW1ldGVyIGBkZXRhaWxgXG4gIHByb3RlY3RlZCBvdmVycmlkZSBkaXNwYXRjaENsb3NlRXZlbnQoX2RldGFpbD86IFNiYk92ZXJsYXlDbG9zZUV2ZW50RGV0YWlscyk6IGJvb2xlYW4ge1xuICAgIC8qKiBAdHlwZSB7U2JiRGlhbG9nQ2xvc2VFdmVudH0gRW1pdHMgd2hlbmV2ZXIgdGhlIGNvbXBvbmVudCBpcyBjbG9zZWQuICovXG4gICAgcmV0dXJuIHRoaXMuZGlzcGF0Y2hFdmVudChcbiAgICAgIG5ldyBTYmJEaWFsb2dDbG9zZUV2ZW50KCdjbG9zZScsIHtcbiAgICAgICAgY2xvc2VBdHRyaWJ1dGU6IHRoaXMuY2xvc2VBdHRyaWJ1dGUsXG4gICAgICAgIGNsb3NlVGFyZ2V0OiB0aGlzLm92ZXJsYXlDbG9zZUVsZW1lbnQsXG4gICAgICAgIHJlc3VsdDogdGhpcy5yZXR1cm5WYWx1ZSxcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICByZXR1cm4gaHRtbGBcbiAgICAgIDxkaXYgY2xhc3M9XCJzYmItZGlhbG9nX19jb250YWluZXJcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIEBhbmltYXRpb25lbmQ9JHt0aGlzLm9uT3ZlcmxheUFuaW1hdGlvbkVuZH1cbiAgICAgICAgICBjbGFzcz1cInNiYi1kaWFsb2dcIlxuICAgICAgICAgICR7cmVmKChlbD86IEVsZW1lbnQpID0+ICh0aGlzLl9kaWFsb2dFbGVtZW50ID0gZWwgYXMgSFRNTERpdkVsZW1lbnQpKX1cbiAgICAgICAgPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIEBjbGljaz0keyhldmVudDogRXZlbnQpID0+IHRoaXMuY2xvc2VPblNiYk92ZXJsYXlDbG9zZUNsaWNrKGV2ZW50KX1cbiAgICAgICAgICAgIGNsYXNzPVwic2JiLWRpYWxvZ19fd3JhcHBlclwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHNsb3QgQHNsb3RjaGFuZ2U9JHsoKSA9PiB0aGlzLl9oYW5kbGVTbG90Q2hhbmdlKCl9Pjwvc2xvdD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxzYmItc2NyZWVuLXJlYWRlci1vbmx5IGFyaWEtbGl2ZT1cInBvbGl0ZVwiPjwvc2JiLXNjcmVlbi1yZWFkZXItb25seT5cbiAgICBgO1xuICB9XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIEhUTUxFbGVtZW50VGFnTmFtZU1hcCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgICdzYmItZGlhbG9nJzogU2JiRGlhbG9nRWxlbWVudDtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUNrQ2EsMEJBQWdCO21CQUFTOzs7Ozs7O2NBQXpCLHlCQUF5QixZQUFxQjs7O2lDQU14RCxTQUFTLEVBQUUsV0FBVyxtQkFBbUIsQ0FBQyxDQUFBOzJCQUkxQyxTQUFTO0lBQUUsV0FBVztJQUFZLFNBQVM7SUFBTSxDQUFDLENBQUE7QUFKUCxnQkFBQSxNQUFBLE1BQUEsNEJBQUE7SUFBQSxNQUFBO0lBQUEsTUFBQTtJQUFBLFFBQUE7SUFBQSxTQUFBO0lBQUEsUUFBQTtLQUFBLE1BQUEsUUFBQSxvQkFBQTtLQUFBLE1BQUEsUUFBQSxJQUFnQjtLQUFjLE1BQUEsS0FBQSxVQUFBO0FBQUEsVUFBZCxpQkFBYzs7S0FBQTtJQUFBLFVBQUE7SUFBQSxFQUFBLDhCQUFBLGtDQUFBO0FBSXRCLGdCQUFBLE1BQUEsTUFBQSxzQkFBQTtJQUFBLE1BQUE7SUFBQSxNQUFBO0lBQUEsUUFBQTtJQUFBLFNBQUE7SUFBQSxRQUFBO0tBQUEsTUFBQSxRQUFBLGNBQUE7S0FBQSxNQUFBLFFBQUEsSUFBZ0I7S0FBUSxNQUFBLEtBQUEsVUFBQTtBQUFBLFVBQVIsV0FBUTs7S0FBQTtJQUFBLFVBQUE7SUFBQSxFQUFBLHdCQUFBLDRCQUFBOzs7Ozs7Ozs7QUFUNUMsUUFB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
@@ -2,7 +2,7 @@ import { t as SbbDialogActionsElement } from "./dialog-actions.component-Bu950dM
2
2
  import { t as SbbDialogCloseButtonElement } from "./dialog-close-button.component-CxtWzXR4.js";
3
3
  import { t as SbbDialogContentElement } from "./dialog-content.component-DlSxpY_e.js";
4
4
  import { t as SbbDialogTitleElement } from "./dialog-title.component-CNMzIUB2.js";
5
- import { n as SbbDialogElement, r as assignDialogResult, t as SbbDialogCloseEvent } from "./dialog.component-B4cZfRCl.js";
5
+ import { n as SbbDialogElement, r as assignDialogResult, t as SbbDialogCloseEvent } from "./dialog.component-BTXyWi17.js";
6
6
  import "./dialog.pure.js";
7
7
  //#region src/elements/dialog.ts
8
8
  /** @entrypoint */
@@ -2,5 +2,5 @@ import { t as SbbDialogActionsElement } from "./dialog-actions.component-Bu950dM
2
2
  import { t as SbbDialogCloseButtonElement } from "./dialog-close-button.component-CxtWzXR4.js";
3
3
  import { t as SbbDialogContentElement } from "./dialog-content.component-DlSxpY_e.js";
4
4
  import { t as SbbDialogTitleElement } from "./dialog-title.component-CNMzIUB2.js";
5
- import { n as SbbDialogElement, r as assignDialogResult, t as SbbDialogCloseEvent } from "./dialog.component-B4cZfRCl.js";
5
+ import { n as SbbDialogElement, r as assignDialogResult, t as SbbDialogCloseEvent } from "./dialog.component-BTXyWi17.js";
6
6
  export { SbbDialogActionsElement, SbbDialogCloseButtonElement, SbbDialogCloseEvent, SbbDialogContentElement, SbbDialogElement, SbbDialogTitleElement, assignDialogResult };
@@ -1,2 +1,2 @@
1
- import { n as e, r as t, t as n } from "../../dialog.component-DTbAHlVd.js";
1
+ import { n as e, r as t, t as n } from "../../dialog.component-ChB9gCyY.js";
2
2
  export { n as SbbDialogCloseEvent, e as SbbDialogElement, t as assignDialogResult };
@@ -8,7 +8,7 @@ import { ref as l } from "lit/directives/ref.js";
8
8
  import { SbbOverlayBaseElement as u, SbbOverlayCloseEvent as d, overlayRefs as f } from "./overlay.pure.js";
9
9
  import { SbbOverlayCloseEvent as p, assignOverlayResult as m } from "./overlay/overlay-base-element.js";
10
10
  //#region src/elements/dialog/dialog/dialog.scss?inline
11
- var h = ":host{--sbb-dialog-animation-duration: var( --sbb-disable-animation-duration, var(--sbb-animation-duration-6x) );--sbb-dialog-padding-block: var(--sbb-spacing-responsive-xs);--sbb-dialog-shadow-animation-duration: var( --sbb-disable-animation-duration, var(--sbb-animation-duration-4x) );display:none;position:fixed;inset:var(--sbb-dialog-inset);z-index:var(--sbb-dialog-z-index, var(--sbb-overlay-default-z-index))}@media(min-width:64rem){:host{--sbb-dialog-max-width: min( calc(100vw - var(--sbb-spacing-fixed-30x) * 2), var(--sbb-dialog-max-width-default) )}}:host(:is(:state(top-shadow),[state--top-shadow])){--sbb-dialog-block-start-box-shadow: var(--_sbb-dialog-block-shadow)}:host(:is(:is(:state(state-opening),[state--state-opening]),:is(:state(state-opened),[state--state-opened]),:is(:state(state-closing),[state--state-closing]))){display:block}:host(:is(:is(:state(state-opening),[state--state-opening]),:is(:state(state-opened),[state--state-opened]))){--sbb-dialog-pointer-events: all;--sbb-dialog-backdrop-color: var(--sbb-background-color-3)}@media(min-width:64rem){:host(:is(:is(:state(state-opening),[state--state-opening]),:is(:state(state-opened),[state--state-opened]))){--sbb-dialog-backdrop-visibility: visible;--sbb-dialog-backdrop-pointer-events: all}}:host([backdrop=translucent]:is(:is(:state(state-opening),[state--state-opening]),:is(:state(state-opened),[state--state-opened]))){--sbb-dialog-backdrop-color: color-mix(in srgb, var(--sbb-color-black) 50%, transparent)}:host([backdrop=opaque]:not([negative]):is(:is(:state(state-opening),[state--state-opening]),:is(:state(state-opened),[state--state-opened]))){--sbb-dialog-backdrop-color: var(--sbb-background-color-3)}:host(:not([negative])){--_sbb-dialog-color: var(--sbb-dialog-color);--_sbb-dialog-block-shadow: var(--sbb-dialog-block-shadow);--sbb-dialog-actions-border-color: var(--sbb-background-color-4);--sbb-dialog-background-color: var(--sbb-background-color-1)}:host([negative]){--_sbb-dialog-color: var(--sbb-dialog-color-negative);--_sbb-dialog-block-shadow: var(--sbb-dialog-block-shadow-negative);--sbb-dialog-background-color: var(--sbb-background-color-1-negative);--sbb-dialog-actions-border-color: var(--sbb-background-color-4-negative);--sbb-dialog-backdrop-color: var(--sbb-background-color-3-negative);--sbb-focus-outline-color: var(--sbb-focus-outline-color-dark)}:host(:is(:state(bottom-shadow),[state--bottom-shadow])){--sbb-dialog-block-end-box-shadow: var(--_sbb-dialog-block-shadow);--sbb-dialog-actions-border-color: transparent}:host(:not(:is(:state(state-closed),[state--state-closed]))){--sbb-dialog-inset: 0}.sbb-dialog__container{pointer-events:var(--sbb-dialog-pointer-events);display:flex;align-items:center;position:fixed;inset:var(--sbb-dialog-inset)}.sbb-dialog__container:before{content:\"\";visibility:var(--sbb-dialog-backdrop-visibility);pointer-events:var(--sbb-dialog-backdrop-pointer-events);position:fixed;inset:var(--sbb-dialog-inset);background-color:var(--sbb-dialog-backdrop-color);transition-duration:var(--sbb-dialog-animation-duration);transition-timing-function:var(--sbb-dialog-animation-easing);transition-property:background-color,visibility}.sbb-dialog{display:none;position:absolute;inset-inline:0;margin:auto;padding:0;border:none;width:var(--sbb-dialog-width);height:var(--sbb-dialog-height);max-width:var(--sbb-dialog-max-width);max-height:var(--sbb-dialog-max-height);color:var(--_sbb-dialog-color);background-color:var(--sbb-dialog-background-color)}:host(:is(:is(:state(state-opening),[state--state-opening]),:is(:state(state-opened),[state--state-opened]),:is(:state(state-closing),[state--state-closing]))) .sbb-dialog{display:block;animation-name:open;animation-duration:var(--sbb-dialog-animation-duration);animation-timing-function:ease}:host(:is(:state(state-closing),[state--state-closing])) .sbb-dialog{pointer-events:none;animation-name:close}@media(forced-colors:active){.sbb-dialog{outline:var(--sbb-border-width-1x) solid CanvasText}}@media(min-width:64rem){.sbb-dialog{border-radius:var(--sbb-dialog-border-radius);overflow:hidden;height:auto}}:host(:is(:state(has-intermediate-element),[state--has-intermediate-element])) ::slotted(:first-child),.sbb-dialog__wrapper{width:var(--sbb-dialog-width);height:var(--sbb-dialog-height);max-width:var(--sbb-dialog-max-width);max-height:var(--sbb-dialog-max-height)}:host(:is(:state(has-intermediate-element),[state--has-intermediate-element])) ::slotted(:first-child),:host(:not(:is(:state(has-intermediate-element),[state--has-intermediate-element]))) .sbb-dialog__wrapper{display:grid;grid-template:\"title close-button\" auto \"content content\" 1fr \"actions actions\" auto/1fr auto;gap:0}@keyframes open{0%{opacity:0;translate:0 var(--sbb-spacing-fixed-4x)}to{opacity:1;translate:0}}@keyframes close{0%{opacity:1;translate:0}to{opacity:0;translate:0 var(--sbb-spacing-fixed-4x)}}", g = (() => {
11
+ var h = ":host{--sbb-dialog-animation-duration: var( --sbb-disable-animation-duration, var(--sbb-animation-duration-6x) );--sbb-dialog-padding-block: var(--sbb-spacing-responsive-xs);--sbb-dialog-shadow-animation-duration: var( --sbb-disable-animation-duration, var(--sbb-animation-duration-4x) );display:none;position:fixed;inset:var(--sbb-dialog-inset);z-index:var(--sbb-dialog-z-index, var(--sbb-overlay-default-z-index))}:host(:is(:state(top-shadow),[state--top-shadow])){--sbb-dialog-block-start-box-shadow: var(--_sbb-dialog-block-shadow)}:host(:is(:is(:state(state-opening),[state--state-opening]),:is(:state(state-opened),[state--state-opened]),:is(:state(state-closing),[state--state-closing]))){display:block}:host(:is(:is(:state(state-opening),[state--state-opening]),:is(:state(state-opened),[state--state-opened]))){--sbb-dialog-pointer-events: all;--sbb-dialog-backdrop-color: var(--sbb-background-color-3);--sbb-dialog-backdrop-visibility: visible;--sbb-dialog-backdrop-pointer-events: all}:host([backdrop=translucent]:is(:is(:state(state-opening),[state--state-opening]),:is(:state(state-opened),[state--state-opened]))){--sbb-dialog-backdrop-color: color-mix(in srgb, var(--sbb-color-black) 50%, transparent)}:host([backdrop=opaque]:not([negative]):is(:is(:state(state-opening),[state--state-opening]),:is(:state(state-opened),[state--state-opened]))){--sbb-dialog-backdrop-color: var(--sbb-background-color-3)}:host(:not([negative])){--_sbb-dialog-color: var(--sbb-dialog-color);--_sbb-dialog-block-shadow: var(--sbb-dialog-block-shadow);--sbb-dialog-actions-border-color: var(--sbb-background-color-4);--sbb-dialog-background-color: var(--sbb-background-color-1)}:host([negative]){--_sbb-dialog-color: var(--sbb-dialog-color-negative);--_sbb-dialog-block-shadow: var(--sbb-dialog-block-shadow-negative);--sbb-dialog-background-color: var(--sbb-background-color-1-negative);--sbb-dialog-actions-border-color: var(--sbb-background-color-4-negative);--sbb-dialog-backdrop-color: var(--sbb-background-color-3-negative);--sbb-focus-outline-color: var(--sbb-focus-outline-color-dark)}:host(:is(:state(bottom-shadow),[state--bottom-shadow])){--sbb-dialog-block-end-box-shadow: var(--_sbb-dialog-block-shadow);--sbb-dialog-actions-border-color: transparent}:host(:not(:is(:state(state-closed),[state--state-closed]))){--sbb-dialog-inset-block: 0;--sbb-dialog-inset-inline: 0}.sbb-dialog__container{pointer-events:var(--sbb-dialog-pointer-events);display:flex;justify-content:center;align-items:center;position:fixed;inset-block:var(--sbb-dialog-inset-block);inset-inline:var(--sbb-dialog-inset-inline)}.sbb-dialog__container:before{content:\"\";visibility:var(--sbb-dialog-backdrop-visibility);pointer-events:var(--sbb-dialog-backdrop-pointer-events);position:fixed;inset-block:var(--sbb-dialog-inset-block);inset-inline:var(--sbb-dialog-inset-inline);background-color:var(--sbb-dialog-backdrop-color);transition-duration:var(--sbb-dialog-animation-duration);transition-timing-function:var(--sbb-dialog-animation-easing);transition-property:background-color,visibility}.sbb-dialog{display:none;position:absolute;inset-inline:0;inset-block:auto 0;border:none;border-radius:var(--sbb-dialog-border-radius) var(--sbb-dialog-border-radius) 0 0;max-width:var(--sbb-dialog-max-width);max-height:var(--sbb-dialog-max-height);color:var(--_sbb-dialog-color);background-color:var(--sbb-dialog-background-color)}:host(:is(:is(:state(state-opening),[state--state-opening]),:is(:state(state-opened),[state--state-opened]),:is(:state(state-closing),[state--state-closing]))) .sbb-dialog{display:block;animation-name:open;animation-duration:var(--sbb-dialog-animation-duration);animation-timing-function:ease}:host(:is(:state(state-closing),[state--state-closing])) .sbb-dialog{pointer-events:none;animation-name:close}@media(forced-colors:active){.sbb-dialog{outline:var(--sbb-border-width-1x) solid CanvasText}}@media(min-width:37.5rem){.sbb-dialog{height:var(--sbb-dialog-height);width:var(--sbb-dialog-width);inset:unset;border-radius:var(--sbb-dialog-border-radius);overflow:hidden}}:host(:is(:state(has-intermediate-element),[state--has-intermediate-element])) ::slotted(:first-child),.sbb-dialog__wrapper{max-height:var(--sbb-dialog-max-height)}@media(min-width:37.5rem){:host(:is(:state(has-intermediate-element),[state--has-intermediate-element])) ::slotted(:first-child),.sbb-dialog__wrapper{width:var(--sbb-dialog-width);height:var(--sbb-dialog-height)}}:host(:is(:state(has-intermediate-element),[state--has-intermediate-element])) ::slotted(:first-child),:host(:not(:is(:state(has-intermediate-element),[state--has-intermediate-element]))) .sbb-dialog__wrapper{display:grid;grid-template:\"title close-button\" auto \"content content\" 1fr \"actions actions\" auto/1fr auto;gap:0}@keyframes open{0%{opacity:0;translate:0 var(--sbb-dialog-translate-y, 100%)}to{opacity:1;translate:0 0}}@keyframes close{0%{opacity:1;translate:0 0}to{opacity:0;translate:0 var(--sbb-dialog-translate-y, 100%)}}", g = (() => {
12
12
  let p = u, m, g = [], _ = [], v, y = [], b = [];
13
13
  return class extends p {
14
14
  static {
package/dialog.js CHANGED
@@ -2,7 +2,7 @@ import { t as e } from "./dialog-actions.component-DjBJ65tV.js";
2
2
  import { t } from "./dialog-close-button.component-CLWP-IVb.js";
3
3
  import { t as n } from "./dialog-content.component-C_Gr8BNL.js";
4
4
  import { t as r } from "./dialog-title.component-CRGqiwZu.js";
5
- import { n as i, r as a, t as o } from "./dialog.component-DTbAHlVd.js";
5
+ import { n as i, r as a, t as o } from "./dialog.component-ChB9gCyY.js";
6
6
  import "./dialog.pure.js";
7
7
  i.define(), e.define(), t.define(), n.define(), r.define();
8
8
  //#endregion
package/dialog.pure.js CHANGED
@@ -2,5 +2,5 @@ import { t as e } from "./dialog-actions.component-DjBJ65tV.js";
2
2
  import { t } from "./dialog-close-button.component-CLWP-IVb.js";
3
3
  import { t as n } from "./dialog-content.component-C_Gr8BNL.js";
4
4
  import { t as r } from "./dialog-title.component-CRGqiwZu.js";
5
- import { n as i, r as a, t as o } from "./dialog.component-DTbAHlVd.js";
5
+ import { n as i, r as a, t as o } from "./dialog.component-ChB9gCyY.js";
6
6
  export { e as SbbDialogActionsElement, t as SbbDialogCloseButtonElement, o as SbbDialogCloseEvent, n as SbbDialogContentElement, i as SbbDialogElement, r as SbbDialogTitleElement, a as assignDialogResult };
@@ -1267,6 +1267,20 @@ slot[name=error]::slotted(*) {
1267
1267
  --sbb-size-element-s: var(--sbb-size-element-s-zero);
1268
1268
  --sbb-size-element-m: var(--sbb-size-element-m-zero);
1269
1269
  --sbb-size-element-l: var(--sbb-size-element-l-zero);
1270
+ --sbb-alert-background-color: var(--sbb-background-color-1-inverted);
1271
+ --sbb-alert-border-radius: var(--sbb-border-radius-4x);
1272
+ --sbb-alert-color: var(--sbb-color-aluminium);
1273
+ --sbb-alert-color: light-dark(var(--sbb-color-aluminium), var(--sbb-color-anthracite));
1274
+ --sbb-alert-padding: var(--sbb-spacing-responsive-xxs) var(--sbb-spacing-responsive-xs);
1275
+ --sbb-alert-timing-function: ease-in;
1276
+ --sbb-alert-icon-size: 1.25rem;
1277
+ --sbb-alert-icon-size-l: var(--sbb-size-icon-ui-small);
1278
+ --sbb-alert-title-margin-block: 0;
1279
+ --sbb-alert-font-size: var(--sbb-text-font-size-s);
1280
+ --sbb-alert-gap: var(--sbb-spacing-fixed-2x) var(--sbb-spacing-responsive-xs);
1281
+ --sbb-alert-close-icon-margin: var(--sbb-spacing-responsive-xxs);
1282
+ --sbb-alert-group-gap: var(--sbb-spacing-fixed-3x);
1283
+ --sbb-alert-group-border-radius: var(--sbb-border-radius-4x);
1270
1284
  --sbb-breadcrumb-color: var(--sbb-color-granite);
1271
1285
  --sbb-breadcrumb-color: light-dark(var(--sbb-color-granite), var(--sbb-color-aluminium));
1272
1286
  --sbb-breadcrumb-color-hover: var(--sbb-color-charcoal);
@@ -1479,12 +1493,12 @@ slot[name=error]::slotted(*) {
1479
1493
  --sbb-dialog-block-shadow: var(--sbb-box-shadow-level-9-soft);
1480
1494
  --sbb-dialog-color-negative: var(--sbb-color-2-negative);
1481
1495
  --sbb-dialog-block-shadow-negative: var(--sbb-box-shadow-level-9-soft-negative);
1482
- --sbb-dialog-width: 100%;
1496
+ --sbb-dialog-width: auto;
1483
1497
  --sbb-dialog-max-width: 100%;
1484
- --sbb-dialog-max-width-default: 55.75rem;
1485
- --sbb-dialog-height: 100%;
1486
- --sbb-dialog-max-height: 100%;
1487
- --sbb-dialog-inset: 0 auto auto 0;
1498
+ --sbb-dialog-height: auto;
1499
+ --sbb-dialog-max-height: calc(100vh - var(--sbb-spacing-fixed-6x));
1500
+ --sbb-dialog-inset-block: 0 auto;
1501
+ --sbb-dialog-inset-inline: 0 auto;
1488
1502
  --sbb-dialog-border-radius: var(--sbb-border-radius-8x);
1489
1503
  --sbb-dialog-animation-easing: ease;
1490
1504
  --sbb-dialog-pointer-events: none;
@@ -1972,6 +1986,8 @@ slot[name=error]::slotted(*) {
1972
1986
  --sbb-focus-outline-color-default: Highlight;
1973
1987
  --sbb-focus-outline-color-dark: Highlight;
1974
1988
  --sbb-focus-outline-width: var(--sbb-border-width-2x);
1989
+ --sbb-alert-outline: var(--sbb-border-width-1x) solid CanvasText;
1990
+ --sbb-alert-forced-color-border-radius: var(--sbb-alert-border-radius);
1975
1991
  --sbb-breadcrumb-color: ButtonText;
1976
1992
  --sbb-breadcrumb-color-active: Highlight;
1977
1993
  --sbb-card-border-color: CanvasText;
@@ -2061,7 +2077,11 @@ slot[name=error]::slotted(*) {
2061
2077
  --sbb-layout-base-offset-responsive: var(--sbb-layout-base-offset-responsive-small);
2062
2078
  --sbb-grid-base-columns: var(--sbb-layout-base-grid-columns-small);
2063
2079
  --sbb-grid-base-gutter-responsive: var(--sbb-layout-base-grid-gutter-responsive-small);
2064
- --sbb-dialog-padding-inline: var(--sbb-spacing-fixed-12x);
2080
+ --sbb-alert-close-button-divider-display: block;
2081
+ --sbb-dialog-padding-inline: var(--sbb-spacing-fixed-8x);
2082
+ --sbb-dialog-max-height: calc(100vh - 2 * var(--sbb-spacing-fixed-6x));
2083
+ --sbb-dialog-max-width: 90vw;
2084
+ --sbb-dialog-translate-y: var(--sbb-spacing-fixed-4x);
2065
2085
  --sbb-footer-clock-width: 7rem;
2066
2086
  --sbb-notification-icon-align-self: flex-start;
2067
2087
  --sbb-notification-padding-inline: var(--sbb-spacing-responsive-xs);
@@ -2102,14 +2122,14 @@ slot[name=error]::slotted(*) {
2102
2122
  --sbb-size-element-s: var(--sbb-size-element-s-large);
2103
2123
  --sbb-size-element-m: var(--sbb-size-element-m-large);
2104
2124
  --sbb-size-element-l: var(--sbb-size-element-l-large);
2125
+ --sbb-alert-icon-size: 1.75rem;
2126
+ --sbb-alert-icon-size-l: 2.125rem;
2105
2127
  --sbb-button-padding-inline-size-l: var(--sbb-spacing-fixed-10x);
2106
2128
  --sbb-button-padding-inline-size-m: var(--sbb-spacing-fixed-8x);
2107
2129
  --sbb-button-padding-inline-size-s: var(--sbb-spacing-fixed-5x);
2108
2130
  --sbb-chip-group-margin-block: var(--_sbb-chip-group-margin-block-start-default-large) 0;
2109
2131
  --sbb-chip-group-margin-block-no-label-not-empty: 0.1875rem 0.875rem;
2110
2132
  --sbb-chip-group-margin-block-with-label-not-empty: var(--_sbb-chip-group-margin-block-start-default-large) var(--_sbb-chip-group-margin-block-start-default-large);
2111
- --sbb-dialog-padding-inline: var(--sbb-spacing-responsive-s);
2112
- --sbb-dialog-max-height: calc(100vh - var(--sbb-spacing-fixed-16x));
2113
2133
  --sbb-flip-card-min-height: 20rem;
2114
2134
  --_sbb-form-field-label-to-input-overlapping: var(--sbb-spacing-fixed-1x);
2115
2135
  --_sbb-form-field-floating-label-transform: 0.65625rem;
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@sbb-esta/lyne-elements-dev",
3
- "version": "5.0.0-next-dev.1776960216",
3
+ "version": "5.0.0-next-dev.1777019159",
4
4
  "description": "Lyne Design System",
5
5
  "keywords": [
6
6
  "design system",
7
7
  "web components",
8
8
  "lit",
9
- "https://github.com/sbb-design-systems/lyne-components/commit/c08f2ee0b06a9e30239772ad0362e47750a35868"
9
+ "https://github.com/sbb-design-systems/lyne-components/commit/79629820ea7c6c89b49e922a55eab4052c744a23"
10
10
  ],
11
11
  "type": "module",
12
12
  "exports": {
package/safety-theme.css CHANGED
@@ -1267,6 +1267,20 @@ slot[name=error]::slotted(*) {
1267
1267
  --sbb-size-element-s: var(--sbb-size-element-s-zero);
1268
1268
  --sbb-size-element-m: var(--sbb-size-element-m-zero);
1269
1269
  --sbb-size-element-l: var(--sbb-size-element-l-zero);
1270
+ --sbb-alert-background-color: var(--sbb-background-color-1-inverted);
1271
+ --sbb-alert-border-radius: var(--sbb-border-radius-4x);
1272
+ --sbb-alert-color: var(--sbb-color-aluminium);
1273
+ --sbb-alert-color: light-dark(var(--sbb-color-aluminium), var(--sbb-color-anthracite));
1274
+ --sbb-alert-padding: var(--sbb-spacing-responsive-xxs) var(--sbb-spacing-responsive-xs);
1275
+ --sbb-alert-timing-function: ease-in;
1276
+ --sbb-alert-icon-size: 1.25rem;
1277
+ --sbb-alert-icon-size-l: var(--sbb-size-icon-ui-small);
1278
+ --sbb-alert-title-margin-block: 0;
1279
+ --sbb-alert-font-size: var(--sbb-text-font-size-s);
1280
+ --sbb-alert-gap: var(--sbb-spacing-fixed-2x) var(--sbb-spacing-responsive-xs);
1281
+ --sbb-alert-close-icon-margin: var(--sbb-spacing-responsive-xxs);
1282
+ --sbb-alert-group-gap: var(--sbb-spacing-fixed-3x);
1283
+ --sbb-alert-group-border-radius: var(--sbb-border-radius-4x);
1270
1284
  --sbb-breadcrumb-color: var(--sbb-color-granite);
1271
1285
  --sbb-breadcrumb-color: light-dark(var(--sbb-color-granite), var(--sbb-color-aluminium));
1272
1286
  --sbb-breadcrumb-color-hover: var(--sbb-color-charcoal);
@@ -1479,12 +1493,12 @@ slot[name=error]::slotted(*) {
1479
1493
  --sbb-dialog-block-shadow: var(--sbb-box-shadow-level-9-soft);
1480
1494
  --sbb-dialog-color-negative: var(--sbb-color-2-negative);
1481
1495
  --sbb-dialog-block-shadow-negative: var(--sbb-box-shadow-level-9-soft-negative);
1482
- --sbb-dialog-width: 100%;
1496
+ --sbb-dialog-width: auto;
1483
1497
  --sbb-dialog-max-width: 100%;
1484
- --sbb-dialog-max-width-default: 55.75rem;
1485
- --sbb-dialog-height: 100%;
1486
- --sbb-dialog-max-height: 100%;
1487
- --sbb-dialog-inset: 0 auto auto 0;
1498
+ --sbb-dialog-height: auto;
1499
+ --sbb-dialog-max-height: calc(100vh - var(--sbb-spacing-fixed-6x));
1500
+ --sbb-dialog-inset-block: 0 auto;
1501
+ --sbb-dialog-inset-inline: 0 auto;
1488
1502
  --sbb-dialog-border-radius: var(--sbb-border-radius-8x);
1489
1503
  --sbb-dialog-animation-easing: ease;
1490
1504
  --sbb-dialog-pointer-events: none;
@@ -1972,6 +1986,8 @@ slot[name=error]::slotted(*) {
1972
1986
  --sbb-focus-outline-color-default: Highlight;
1973
1987
  --sbb-focus-outline-color-dark: Highlight;
1974
1988
  --sbb-focus-outline-width: var(--sbb-border-width-2x);
1989
+ --sbb-alert-outline: var(--sbb-border-width-1x) solid CanvasText;
1990
+ --sbb-alert-forced-color-border-radius: var(--sbb-alert-border-radius);
1975
1991
  --sbb-breadcrumb-color: ButtonText;
1976
1992
  --sbb-breadcrumb-color-active: Highlight;
1977
1993
  --sbb-card-border-color: CanvasText;
@@ -2061,7 +2077,11 @@ slot[name=error]::slotted(*) {
2061
2077
  --sbb-layout-base-offset-responsive: var(--sbb-layout-base-offset-responsive-small);
2062
2078
  --sbb-grid-base-columns: var(--sbb-layout-base-grid-columns-small);
2063
2079
  --sbb-grid-base-gutter-responsive: var(--sbb-layout-base-grid-gutter-responsive-small);
2064
- --sbb-dialog-padding-inline: var(--sbb-spacing-fixed-12x);
2080
+ --sbb-alert-close-button-divider-display: block;
2081
+ --sbb-dialog-padding-inline: var(--sbb-spacing-fixed-8x);
2082
+ --sbb-dialog-max-height: calc(100vh - 2 * var(--sbb-spacing-fixed-6x));
2083
+ --sbb-dialog-max-width: 90vw;
2084
+ --sbb-dialog-translate-y: var(--sbb-spacing-fixed-4x);
2065
2085
  --sbb-footer-clock-width: 7rem;
2066
2086
  --sbb-notification-icon-align-self: flex-start;
2067
2087
  --sbb-notification-padding-inline: var(--sbb-spacing-responsive-xs);
@@ -2102,14 +2122,14 @@ slot[name=error]::slotted(*) {
2102
2122
  --sbb-size-element-s: var(--sbb-size-element-s-large);
2103
2123
  --sbb-size-element-m: var(--sbb-size-element-m-large);
2104
2124
  --sbb-size-element-l: var(--sbb-size-element-l-large);
2125
+ --sbb-alert-icon-size: 1.75rem;
2126
+ --sbb-alert-icon-size-l: 2.125rem;
2105
2127
  --sbb-button-padding-inline-size-l: var(--sbb-spacing-fixed-10x);
2106
2128
  --sbb-button-padding-inline-size-m: var(--sbb-spacing-fixed-8x);
2107
2129
  --sbb-button-padding-inline-size-s: var(--sbb-spacing-fixed-5x);
2108
2130
  --sbb-chip-group-margin-block: var(--_sbb-chip-group-margin-block-start-default-large) 0;
2109
2131
  --sbb-chip-group-margin-block-no-label-not-empty: 0.1875rem 0.875rem;
2110
2132
  --sbb-chip-group-margin-block-with-label-not-empty: var(--_sbb-chip-group-margin-block-start-default-large) var(--_sbb-chip-group-margin-block-start-default-large);
2111
- --sbb-dialog-padding-inline: var(--sbb-spacing-responsive-s);
2112
- --sbb-dialog-max-height: calc(100vh - var(--sbb-spacing-fixed-16x));
2113
2133
  --sbb-flip-card-min-height: 20rem;
2114
2134
  --_sbb-form-field-label-to-input-overlapping: var(--sbb-spacing-fixed-1x);
2115
2135
  --_sbb-form-field-floating-label-transform: 0.65625rem;
@@ -1267,6 +1267,20 @@ slot[name=error]::slotted(*) {
1267
1267
  --sbb-size-element-s: var(--sbb-size-element-s-zero);
1268
1268
  --sbb-size-element-m: var(--sbb-size-element-m-zero);
1269
1269
  --sbb-size-element-l: var(--sbb-size-element-l-zero);
1270
+ --sbb-alert-background-color: var(--sbb-background-color-1-inverted);
1271
+ --sbb-alert-border-radius: var(--sbb-border-radius-4x);
1272
+ --sbb-alert-color: var(--sbb-color-aluminium);
1273
+ --sbb-alert-color: light-dark(var(--sbb-color-aluminium), var(--sbb-color-anthracite));
1274
+ --sbb-alert-padding: var(--sbb-spacing-responsive-xxs) var(--sbb-spacing-responsive-xs);
1275
+ --sbb-alert-timing-function: ease-in;
1276
+ --sbb-alert-icon-size: 1.25rem;
1277
+ --sbb-alert-icon-size-l: var(--sbb-size-icon-ui-small);
1278
+ --sbb-alert-title-margin-block: 0;
1279
+ --sbb-alert-font-size: var(--sbb-text-font-size-s);
1280
+ --sbb-alert-gap: var(--sbb-spacing-fixed-2x) var(--sbb-spacing-responsive-xs);
1281
+ --sbb-alert-close-icon-margin: var(--sbb-spacing-responsive-xxs);
1282
+ --sbb-alert-group-gap: var(--sbb-spacing-fixed-3x);
1283
+ --sbb-alert-group-border-radius: var(--sbb-border-radius-4x);
1270
1284
  --sbb-breadcrumb-color: var(--sbb-color-granite);
1271
1285
  --sbb-breadcrumb-color: light-dark(var(--sbb-color-granite), var(--sbb-color-aluminium));
1272
1286
  --sbb-breadcrumb-color-hover: var(--sbb-color-charcoal);
@@ -1479,12 +1493,12 @@ slot[name=error]::slotted(*) {
1479
1493
  --sbb-dialog-block-shadow: var(--sbb-box-shadow-level-9-soft);
1480
1494
  --sbb-dialog-color-negative: var(--sbb-color-2-negative);
1481
1495
  --sbb-dialog-block-shadow-negative: var(--sbb-box-shadow-level-9-soft-negative);
1482
- --sbb-dialog-width: 100%;
1496
+ --sbb-dialog-width: auto;
1483
1497
  --sbb-dialog-max-width: 100%;
1484
- --sbb-dialog-max-width-default: 55.75rem;
1485
- --sbb-dialog-height: 100%;
1486
- --sbb-dialog-max-height: 100%;
1487
- --sbb-dialog-inset: 0 auto auto 0;
1498
+ --sbb-dialog-height: auto;
1499
+ --sbb-dialog-max-height: calc(100vh - var(--sbb-spacing-fixed-6x));
1500
+ --sbb-dialog-inset-block: 0 auto;
1501
+ --sbb-dialog-inset-inline: 0 auto;
1488
1502
  --sbb-dialog-border-radius: var(--sbb-border-radius-8x);
1489
1503
  --sbb-dialog-animation-easing: ease;
1490
1504
  --sbb-dialog-pointer-events: none;
@@ -1972,6 +1986,8 @@ slot[name=error]::slotted(*) {
1972
1986
  --sbb-focus-outline-color-default: Highlight;
1973
1987
  --sbb-focus-outline-color-dark: Highlight;
1974
1988
  --sbb-focus-outline-width: var(--sbb-border-width-2x);
1989
+ --sbb-alert-outline: var(--sbb-border-width-1x) solid CanvasText;
1990
+ --sbb-alert-forced-color-border-radius: var(--sbb-alert-border-radius);
1975
1991
  --sbb-breadcrumb-color: ButtonText;
1976
1992
  --sbb-breadcrumb-color-active: Highlight;
1977
1993
  --sbb-card-border-color: CanvasText;
@@ -2061,7 +2077,11 @@ slot[name=error]::slotted(*) {
2061
2077
  --sbb-layout-base-offset-responsive: var(--sbb-layout-base-offset-responsive-small);
2062
2078
  --sbb-grid-base-columns: var(--sbb-layout-base-grid-columns-small);
2063
2079
  --sbb-grid-base-gutter-responsive: var(--sbb-layout-base-grid-gutter-responsive-small);
2064
- --sbb-dialog-padding-inline: var(--sbb-spacing-fixed-12x);
2080
+ --sbb-alert-close-button-divider-display: block;
2081
+ --sbb-dialog-padding-inline: var(--sbb-spacing-fixed-8x);
2082
+ --sbb-dialog-max-height: calc(100vh - 2 * var(--sbb-spacing-fixed-6x));
2083
+ --sbb-dialog-max-width: 90vw;
2084
+ --sbb-dialog-translate-y: var(--sbb-spacing-fixed-4x);
2065
2085
  --sbb-footer-clock-width: 7rem;
2066
2086
  --sbb-notification-icon-align-self: flex-start;
2067
2087
  --sbb-notification-padding-inline: var(--sbb-spacing-responsive-xs);
@@ -2102,14 +2122,14 @@ slot[name=error]::slotted(*) {
2102
2122
  --sbb-size-element-s: var(--sbb-size-element-s-large);
2103
2123
  --sbb-size-element-m: var(--sbb-size-element-m-large);
2104
2124
  --sbb-size-element-l: var(--sbb-size-element-l-large);
2125
+ --sbb-alert-icon-size: 1.75rem;
2126
+ --sbb-alert-icon-size-l: 2.125rem;
2105
2127
  --sbb-button-padding-inline-size-l: var(--sbb-spacing-fixed-10x);
2106
2128
  --sbb-button-padding-inline-size-m: var(--sbb-spacing-fixed-8x);
2107
2129
  --sbb-button-padding-inline-size-s: var(--sbb-spacing-fixed-5x);
2108
2130
  --sbb-chip-group-margin-block: var(--_sbb-chip-group-margin-block-start-default-large) 0;
2109
2131
  --sbb-chip-group-margin-block-no-label-not-empty: 0.1875rem 0.875rem;
2110
2132
  --sbb-chip-group-margin-block-with-label-not-empty: var(--_sbb-chip-group-margin-block-start-default-large) var(--_sbb-chip-group-margin-block-start-default-large);
2111
- --sbb-dialog-padding-inline: var(--sbb-spacing-responsive-s);
2112
- --sbb-dialog-max-height: calc(100vh - var(--sbb-spacing-fixed-16x));
2113
2133
  --sbb-flip-card-min-height: 20rem;
2114
2134
  --_sbb-form-field-label-to-input-overlapping: var(--sbb-spacing-fixed-1x);
2115
2135
  --_sbb-form-field-floating-label-transform: 0.65625rem;