@vonage/vivid 4.3.0 → 4.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/custom-elements.json +392 -41
  2. package/index.cjs +1 -0
  3. package/index.js +1 -1
  4. package/lib/dialog/dialog.d.ts +1 -0
  5. package/lib/empty-state/definition.d.ts +1 -0
  6. package/lib/empty-state/empty-state.d.ts +5 -0
  7. package/lib/enums.d.ts +4 -0
  8. package/lib/popup/popup.d.ts +5 -0
  9. package/lib/range-slider/range-slider.d.ts +2 -0
  10. package/lib/slider/slider.d.ts +5 -0
  11. package/lib/slider/slider.template.d.ts +2 -2
  12. package/package.json +1 -1
  13. package/shared/definition.cjs +1 -1
  14. package/shared/definition.js +1 -1
  15. package/shared/definition21.cjs +67 -30
  16. package/shared/definition21.js +67 -30
  17. package/shared/definition23.cjs +18 -3
  18. package/shared/definition23.js +19 -4
  19. package/shared/definition25.cjs +1 -1
  20. package/shared/definition25.js +1 -1
  21. package/shared/definition30.cjs +1 -1
  22. package/shared/definition30.js +1 -1
  23. package/shared/definition42.cjs +123 -18
  24. package/shared/definition42.js +123 -18
  25. package/shared/definition46.cjs +96 -11
  26. package/shared/definition46.js +97 -12
  27. package/shared/definition56.cjs +1 -1
  28. package/shared/definition56.js +1 -1
  29. package/shared/definition63.cjs +155 -2
  30. package/shared/definition63.js +156 -4
  31. package/shared/enums.cjs +6 -0
  32. package/shared/enums.js +6 -1
  33. package/shared/patterns/anchored.d.ts +4 -4
  34. package/shared/presentationDate.cjs +1 -1
  35. package/shared/presentationDate.js +1 -1
  36. package/shared/slider.template.cjs +27 -4
  37. package/shared/slider.template.js +27 -4
  38. package/styles/core/all.css +1 -1
  39. package/styles/core/theme.css +1 -1
  40. package/styles/core/typography.css +1 -1
  41. package/styles/tokens/theme-dark.css +4 -4
  42. package/styles/tokens/theme-light.css +4 -4
  43. package/styles/tokens/vivid-2-compat.css +1 -1
  44. package/vivid.api.json +211 -0
package/index.js CHANGED
@@ -59,6 +59,6 @@ export { r as registerTooltip, t as tooltipDefinition, a as tooltipRegistries }
59
59
  export { r as registerTreeItem, t as treeItemDefinition, a as treeItemRegistries } from './shared/definition59.js';
60
60
  export { r as registerTreeView, t as treeViewDefinition, a as treeViewRegistries } from './shared/definition60.js';
61
61
  export { r as registerVideoPlayer, v as videoPlayerDefinition, a as videoPlayerRegistries } from './shared/definition61.js';
62
- export { A as Appearance, c as AriaLive, C as Connotation, a as ConnotationDecorative, L as LayoutSize, M as MediaSkipBy, P as Position, R as Role, S as Shape, b as Size, T as TabsGutters } from './shared/enums.js';
62
+ export { A as Appearance, c as AriaLive, C as Connotation, a as ConnotationDecorative, I as IconDecoration, L as LayoutSize, M as MediaSkipBy, P as Position, R as Role, S as Shape, b as Size, T as TabsGutters } from './shared/enums.js';
63
63
  export { d as designSystem, r as registerFactory } from './shared/index.js';
64
64
  export { s as setLocale } from './shared/index2.js';
@@ -13,6 +13,7 @@ export declare class Dialog extends FoundationElement {
13
13
  ariaLabel: string | null;
14
14
  dismissButtonAriaLabel: string | null;
15
15
  noLightDismiss: boolean;
16
+ modal: boolean;
16
17
  set returnValue(value: string);
17
18
  get returnValue(): string;
18
19
  close(): void;
@@ -1,3 +1,4 @@
1
1
  import type { FoundationElementDefinition } from '@microsoft/fast-foundation';
2
+ export type { EmptyStateConnotation, EmptyStateIconDecoration, } from './empty-state';
2
3
  export declare const emptyStateDefinition: (overrideDefinition?: import("@microsoft/fast-foundation").OverrideFoundationElementDefinition<FoundationElementDefinition> | undefined) => import("@microsoft/fast-foundation").FoundationElementRegistry<FoundationElementDefinition, import("@microsoft/fast-element").Constructable<import("@microsoft/fast-foundation").FoundationElement>>;
3
4
  export declare const registerEmptyState: (prefix?: string) => import("@microsoft/fast-foundation").DesignSystem;
@@ -1,5 +1,10 @@
1
1
  import { FoundationElement } from '@microsoft/fast-foundation';
2
+ import type { Connotation, IconDecoration } from '../enums.js';
3
+ export type EmptyStateConnotation = Extract<Connotation, Connotation.Accent | Connotation.CTA | Connotation.Success | Connotation.Alert | Connotation.Warning | Connotation.Information>;
4
+ export type EmptyStateIconDecoration = Extract<IconDecoration, IconDecoration.Filled | IconDecoration.Outlined>;
2
5
  export declare class EmptyState extends FoundationElement {
6
+ connotation?: EmptyStateConnotation;
3
7
  headline?: string;
4
8
  icon?: string;
9
+ iconDecoration?: EmptyStateIconDecoration;
5
10
  }
package/lib/enums.d.ts CHANGED
@@ -28,6 +28,10 @@ export declare enum Appearance {
28
28
  Listitem = "listitem",
29
29
  Elevated = "elevated"
30
30
  }
31
+ export declare enum IconDecoration {
32
+ Filled = "filled",
33
+ Outlined = "outlined"
34
+ }
31
35
  export declare enum Size {
32
36
  UltraCondensed = "ultra-condensed",
33
37
  SuperCondensed = "super-condensed",
@@ -0,0 +1,5 @@
1
+ export declare const PlacementStrategy: {
2
+ readonly Flip: "flip";
3
+ readonly AutoPlacementHorizontal: "auto-placement-horizontal";
4
+ readonly AutoPlacementVertical: "auto-placement-vertical";
5
+ };
@@ -3,6 +3,7 @@ import { Connotation } from '../enums';
3
3
  import { type FormElement, Localized } from '../../shared/patterns';
4
4
  import { FormAssociatedRangeSlider } from './range-slider.form-associated';
5
5
  export type RangeSliderConnotation = Connotation.Accent | Connotation.CTA;
6
+ export type ThumbId = 'start' | 'end';
6
7
  export declare class RangeSlider extends FormAssociatedRangeSlider {
7
8
  #private;
8
9
  start: string;
@@ -23,6 +24,7 @@ export declare class RangeSlider extends FormAssociatedRangeSlider {
23
24
  ariaEndLabel: string | null;
24
25
  markers: boolean;
25
26
  connotation?: RangeSliderConnotation;
27
+ pin: boolean;
26
28
  valueTextFormatter: (value: string) => string;
27
29
  formResetCallback(): void;
28
30
  connectedCallback(): void;
@@ -3,11 +3,16 @@ import type { Connotation } from '../enums';
3
3
  import { Localized } from '../../shared/patterns';
4
4
  export type SliderConnotation = Connotation.Accent | Connotation.CTA;
5
5
  export declare class Slider extends FastSlider {
6
+ #private;
6
7
  ariaLabel: string | null;
7
8
  ariaValuetext: string | null;
8
9
  markers: boolean;
10
+ pin: boolean;
9
11
  connotation?: SliderConnotation;
10
12
  valueTextFormatter: (value: string) => string;
13
+ constructor();
14
+ connectedCallback(): void;
15
+ disconnectedCallback(): void;
11
16
  }
12
17
  export interface Slider extends Localized {
13
18
  }
@@ -1,5 +1,5 @@
1
1
  import type { ViewTemplate } from '@microsoft/fast-element';
2
- import type { ElementDefinitionContext } from '@microsoft/fast-foundation';
2
+ import type { ElementDefinitionContext, FoundationElementDefinition } from '@microsoft/fast-foundation';
3
3
  import type { Slider } from './slider';
4
4
  export declare const getMarkersTemplate: (isHorizontal: boolean, numMarkers: number) => ViewTemplate<any, any>;
5
- export declare const SliderTemplate: (context: ElementDefinitionContext) => ViewTemplate<Slider>;
5
+ export declare const SliderTemplate: (context: ElementDefinitionContext, definition: FoundationElementDefinition) => ViewTemplate<Slider>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vonage/vivid",
3
- "version": "4.3.0",
3
+ "version": "4.4.0",
4
4
  "type": "module",
5
5
  "module": "./index.js",
6
6
  "main": "./index.cjs",
@@ -76,7 +76,7 @@ index.__decorate([
76
76
  ], AccordionItem$1.prototype, "id", void 0);
77
77
  applyMixins.applyMixins(AccordionItem$1, startEnd.StartEnd);
78
78
 
79
- const styles = ":host{--_vvd-accordion-item-accent-firm-wrapper: var( --vvd-accordion-item-accent-firm )}.heading-button{--vvd-accordion-item-accent-firm: var( --_vvd-accordion-item-accent-firm-wrapper, var(--vvd-accordion-item-accent-primary) )}:host{display:flex;box-sizing:border-box;flex-direction:column}.heading-container{margin:0}.heading-button{--focus-stroke-gap-color: transparent;display:flex;width:100%;align-items:center;padding:16px;border:none;background-color:var(--_appearance-color-fill);color:var(--_appearance-color-text);cursor:pointer;text-align:left}.heading-button{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.heading-button:where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-faint);--_appearance-color-outline: transparent}.heading-button:where(.active,:active):where(:not(.disabled,:disabled)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-soft);--_appearance-color-outline: transparent}.heading-button{--_connotation-color-faint: var(--vvd-accordion-item-accent-faint, var(--vvd-color-neutral-50));--_connotation-color-soft: var(--vvd-accordion-item-accent-soft, var(--vvd-color-neutral-100));--_connotation-color-firm: var(--vvd-accordion-item-accent-firm, var(--vvd-color-canvas-text))}.heading-button:focus-visible{box-shadow:inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:2px solid var(--focus-stroke-color, var(--vvd-color-canvas-text));outline-offset:calc(-2px - var(--focus-inset, 0px))}.heading-button.size-condensed{font:var(--vvd-typography-base-extended-bold);gap:12px}.heading-button:not(.size-condensed){font:var(--vvd-typography-heading-4);gap:16px}.heading-content{flex:auto}.meta{overflow:hidden;max-width:20%;flex-shrink:0;color:var(--vvd-color-neutral-600);text-align:end;text-overflow:ellipsis;white-space:nowrap}.heading-button:not(.size-condensed) .meta{font:var(--vvd-typography-base-bold)}.heading-button.size-condensed .meta{font:var(--vvd-typography-base-condensed-bold)}.region{display:none;padding:8px 32px 24px 16px}.region:not(.size-condensed).padded{padding-inline-start:52px}:host([expanded]) .region{display:block}.region.size-condensed.padded{padding-inline-start:44px}slot[name=icon]{color:var(--vvd-color-neutral-600)}.heading-button:not(.size-condensed) slot[name=icon]{font:inherit}.heading-button.size-condensed slot[name=icon]{font:var(--vvd-typography-base-extended)}:host(:not([icon-trailing])) slot[name=icon]:last-of-type{color:var(--_appearance-color-text)}";
79
+ const styles = ":host{--_vvd-accordion-item-accent-firm-wrapper: var( --vvd-accordion-item-accent-firm )}.heading-button{--vvd-accordion-item-accent-firm: var( --_vvd-accordion-item-accent-firm-wrapper, var(--vvd-accordion-item-accent-primary) )}:host{display:flex;box-sizing:border-box;flex-direction:column}.heading-container{margin:0}.heading-button{--focus-stroke-gap-color: transparent;display:flex;width:100%;align-items:center;padding:16px;border:none;background-color:var(--_appearance-color-fill);color:var(--_appearance-color-text);cursor:pointer;text-align:left}.heading-button{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.heading-button:where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-faint);--_appearance-color-outline: transparent}.heading-button:where(.active,:active):where(:not(.disabled,:disabled)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-soft);--_appearance-color-outline: transparent}.heading-button{--_connotation-color-faint: var(--vvd-accordion-item-accent-faint, var(--vvd-color-neutral-50));--_connotation-color-soft: var(--vvd-accordion-item-accent-soft, var(--vvd-color-neutral-100));--_connotation-color-firm: var(--vvd-accordion-item-accent-firm, var(--vvd-color-canvas-text))}.heading-button:focus-visible{box-shadow:inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:2px solid var(--focus-stroke-color, var(--vvd-color-canvas-text));outline-offset:calc(-2px - var(--focus-inset, 0px))}.heading-button.size-condensed{font:var(--vvd-typography-base-extended-bold);gap:12px}.heading-button:not(.size-condensed){font:var(--vvd-typography-heading-4);gap:16px}.heading-content{flex:auto}.meta{overflow:hidden;max-width:var(--accordion-item-meta-inline-size, 20%);flex-shrink:0;color:var(--vvd-color-neutral-600);text-align:end;text-overflow:ellipsis;white-space:nowrap}.heading-button:not(.size-condensed) .meta{font:var(--vvd-typography-base-bold)}.heading-button.size-condensed .meta{font:var(--vvd-typography-base-condensed-bold)}.region{display:none;padding:8px 32px 24px 16px}.region:not(.size-condensed).padded{padding-inline-start:52px}:host([expanded]) .region{display:block}.region.size-condensed.padded{padding-inline-start:44px}slot[name=icon]{color:var(--vvd-color-neutral-600)}.heading-button:not(.size-condensed) slot[name=icon]{font:inherit}.heading-button.size-condensed slot[name=icon]{font:var(--vvd-typography-base-extended)}:host(:not([icon-trailing])) slot[name=icon]:last-of-type{color:var(--_appearance-color-text)}";
80
80
 
81
81
  var __defProp = Object.defineProperty;
82
82
  var __decorateClass = (decorators, target, key, kind) => {
@@ -74,7 +74,7 @@ __decorate([
74
74
  ], AccordionItem$1.prototype, "id", void 0);
75
75
  applyMixins(AccordionItem$1, StartEnd);
76
76
 
77
- const styles = ":host{--_vvd-accordion-item-accent-firm-wrapper: var( --vvd-accordion-item-accent-firm )}.heading-button{--vvd-accordion-item-accent-firm: var( --_vvd-accordion-item-accent-firm-wrapper, var(--vvd-accordion-item-accent-primary) )}:host{display:flex;box-sizing:border-box;flex-direction:column}.heading-container{margin:0}.heading-button{--focus-stroke-gap-color: transparent;display:flex;width:100%;align-items:center;padding:16px;border:none;background-color:var(--_appearance-color-fill);color:var(--_appearance-color-text);cursor:pointer;text-align:left}.heading-button{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.heading-button:where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-faint);--_appearance-color-outline: transparent}.heading-button:where(.active,:active):where(:not(.disabled,:disabled)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-soft);--_appearance-color-outline: transparent}.heading-button{--_connotation-color-faint: var(--vvd-accordion-item-accent-faint, var(--vvd-color-neutral-50));--_connotation-color-soft: var(--vvd-accordion-item-accent-soft, var(--vvd-color-neutral-100));--_connotation-color-firm: var(--vvd-accordion-item-accent-firm, var(--vvd-color-canvas-text))}.heading-button:focus-visible{box-shadow:inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:2px solid var(--focus-stroke-color, var(--vvd-color-canvas-text));outline-offset:calc(-2px - var(--focus-inset, 0px))}.heading-button.size-condensed{font:var(--vvd-typography-base-extended-bold);gap:12px}.heading-button:not(.size-condensed){font:var(--vvd-typography-heading-4);gap:16px}.heading-content{flex:auto}.meta{overflow:hidden;max-width:20%;flex-shrink:0;color:var(--vvd-color-neutral-600);text-align:end;text-overflow:ellipsis;white-space:nowrap}.heading-button:not(.size-condensed) .meta{font:var(--vvd-typography-base-bold)}.heading-button.size-condensed .meta{font:var(--vvd-typography-base-condensed-bold)}.region{display:none;padding:8px 32px 24px 16px}.region:not(.size-condensed).padded{padding-inline-start:52px}:host([expanded]) .region{display:block}.region.size-condensed.padded{padding-inline-start:44px}slot[name=icon]{color:var(--vvd-color-neutral-600)}.heading-button:not(.size-condensed) slot[name=icon]{font:inherit}.heading-button.size-condensed slot[name=icon]{font:var(--vvd-typography-base-extended)}:host(:not([icon-trailing])) slot[name=icon]:last-of-type{color:var(--_appearance-color-text)}";
77
+ const styles = ":host{--_vvd-accordion-item-accent-firm-wrapper: var( --vvd-accordion-item-accent-firm )}.heading-button{--vvd-accordion-item-accent-firm: var( --_vvd-accordion-item-accent-firm-wrapper, var(--vvd-accordion-item-accent-primary) )}:host{display:flex;box-sizing:border-box;flex-direction:column}.heading-container{margin:0}.heading-button{--focus-stroke-gap-color: transparent;display:flex;width:100%;align-items:center;padding:16px;border:none;background-color:var(--_appearance-color-fill);color:var(--_appearance-color-text);cursor:pointer;text-align:left}.heading-button{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.heading-button:where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-faint);--_appearance-color-outline: transparent}.heading-button:where(.active,:active):where(:not(.disabled,:disabled)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-soft);--_appearance-color-outline: transparent}.heading-button{--_connotation-color-faint: var(--vvd-accordion-item-accent-faint, var(--vvd-color-neutral-50));--_connotation-color-soft: var(--vvd-accordion-item-accent-soft, var(--vvd-color-neutral-100));--_connotation-color-firm: var(--vvd-accordion-item-accent-firm, var(--vvd-color-canvas-text))}.heading-button:focus-visible{box-shadow:inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:2px solid var(--focus-stroke-color, var(--vvd-color-canvas-text));outline-offset:calc(-2px - var(--focus-inset, 0px))}.heading-button.size-condensed{font:var(--vvd-typography-base-extended-bold);gap:12px}.heading-button:not(.size-condensed){font:var(--vvd-typography-heading-4);gap:16px}.heading-content{flex:auto}.meta{overflow:hidden;max-width:var(--accordion-item-meta-inline-size, 20%);flex-shrink:0;color:var(--vvd-color-neutral-600);text-align:end;text-overflow:ellipsis;white-space:nowrap}.heading-button:not(.size-condensed) .meta{font:var(--vvd-typography-base-bold)}.heading-button.size-condensed .meta{font:var(--vvd-typography-base-condensed-bold)}.region{display:none;padding:8px 32px 24px 16px}.region:not(.size-condensed).padded{padding-inline-start:52px}:host([expanded]) .region{display:block}.region.size-condensed.padded{padding-inline-start:44px}slot[name=icon]{color:var(--vvd-color-neutral-600)}.heading-button:not(.size-condensed) slot[name=icon]{font:inherit}.heading-button.size-condensed slot[name=icon]{font:var(--vvd-typography-base-extended)}:host(:not([icon-trailing])) slot[name=icon]:last-of-type{color:var(--_appearance-color-text)}";
78
78
 
79
79
  var __defProp = Object.defineProperty;
80
80
  var __decorateClass = (decorators, target, key, kind) => {
@@ -44,7 +44,8 @@ class Dialog extends index.FoundationElement {
44
44
  this.ariaLabel = null;
45
45
  this.dismissButtonAriaLabel = null;
46
46
  this.noLightDismiss = false;
47
- this.#modal = false;
47
+ this.modal = false;
48
+ this._openedAsModal = false;
48
49
  this.#handleScrimClick = (event) => {
49
50
  if (event.target !== this.#dialog || this.noLightDismiss) {
50
51
  return;
@@ -60,19 +61,26 @@ class Dialog extends index.FoundationElement {
60
61
  this.open = false;
61
62
  };
62
63
  }
63
- #modal;
64
+ /**
65
+ * @internal
66
+ */
67
+ modalChanged(_, newValue) {
68
+ if (this.open) {
69
+ this._openedAsModal = newValue;
70
+ if (this.$fastController.isConnected) {
71
+ this.#closeDialog();
72
+ this.#showDialog();
73
+ }
74
+ }
75
+ }
64
76
  set returnValue(value) {
65
- this.#dialog.returnValue = value;
77
+ if (this.#dialog) {
78
+ this.#dialog.returnValue = value;
79
+ }
66
80
  }
67
81
  get returnValue() {
68
82
  return this.#dialog?.returnValue;
69
83
  }
70
- /**
71
- * @internal
72
- */
73
- get modal() {
74
- return this.#modal;
75
- }
76
84
  #dialogElement;
77
85
  get #dialog() {
78
86
  if (!this.#dialogElement) {
@@ -80,7 +88,6 @@ class Dialog extends index.FoundationElement {
80
88
  "dialog"
81
89
  );
82
90
  if (this.#dialogElement) {
83
- this.#dialogElement.open = this.open;
84
91
  if (dialogPolyfill) {
85
92
  dialogPolyfill.registerDialog(this.#dialogElement);
86
93
  }
@@ -96,44 +103,66 @@ class Dialog extends index.FoundationElement {
96
103
  return;
97
104
  }
98
105
  if (!newValue) {
99
- this.close();
106
+ this._openedAsModal = false;
107
+ if (this.$fastController.isConnected) {
108
+ this.#closeDialog();
109
+ }
110
+ this.$emit("close", this.returnValue, { bubbles: false });
100
111
  } else {
101
- if (this.#dialog) {
102
- this.#dialog.open = true;
112
+ this._openedAsModal = this._openedAsModal || this.modal;
113
+ if (this.$fastController.isConnected) {
114
+ this.#showDialog();
103
115
  }
116
+ this.$emit("open", void 0, { bubbles: false });
104
117
  }
105
118
  }
106
119
  #handleScrimClick;
107
120
  #handleInternalFormSubmit;
108
121
  close() {
109
- if (this.#dialog.open) {
110
- this.#dialog.close();
111
- this.$emit("close", this.returnValue, { bubbles: false });
112
- }
113
122
  this.open = false;
114
- this.#handleModal(false);
115
- }
116
- #handleModal(show) {
117
- this.#modal = show;
118
- this.#dialog.toggleAttribute("aria-modal", show);
119
- this.#dialog.classList.toggle("modal", show);
120
123
  }
121
124
  show() {
122
- this.#dialog.show();
125
+ if (this._openedAsModal && !this.modal) {
126
+ throw new DOMException(
127
+ "Failed to execute 'show' on 'Dialog': The dialog is already open as a modal dialog, and therefore cannot be opened as a non-modal dialog.",
128
+ "InvalidStateError"
129
+ );
130
+ }
123
131
  this.open = true;
124
132
  }
125
133
  showModal() {
126
- this.#handleModal(true);
127
- this.#dialog.showModal();
134
+ if (this.open && !this._openedAsModal) {
135
+ throw new DOMException(
136
+ "Failed to execute 'showModal' on 'Dialog': The dialog is already open as a non-modal dialog, and therefore cannot be opened as a modal dialog.",
137
+ "InvalidStateError"
138
+ );
139
+ }
140
+ this._openedAsModal = true;
128
141
  this.open = true;
129
142
  }
143
+ #closeDialog() {
144
+ this.#dialog.close();
145
+ }
146
+ #showDialog() {
147
+ if (this._openedAsModal) {
148
+ this.#dialog.showModal();
149
+ } else {
150
+ this.#dialog.show();
151
+ }
152
+ }
130
153
  connectedCallback() {
131
154
  super.connectedCallback();
155
+ if (this.open) {
156
+ this.#showDialog();
157
+ }
132
158
  this.#dialog.addEventListener("mousedown", this.#handleScrimClick);
133
159
  this.#dialog.addEventListener("submit", this.#handleInternalFormSubmit);
134
160
  }
135
161
  disconnectedCallback() {
136
162
  super.disconnectedCallback();
163
+ if (this.open) {
164
+ this.#closeDialog();
165
+ }
137
166
  this.#dialog.removeEventListener("mousedown", this.#handleScrimClick);
138
167
  this.#dialog.removeEventListener("submit", this.#handleInternalFormSubmit);
139
168
  }
@@ -165,6 +194,12 @@ __decorateClass([
165
194
  __decorateClass([
166
195
  index.attr({ attribute: "no-light-dismiss", mode: "boolean" })
167
196
  ], Dialog.prototype, "noLightDismiss");
197
+ __decorateClass([
198
+ index.attr({ mode: "boolean" })
199
+ ], Dialog.prototype, "modal");
200
+ __decorateClass([
201
+ index.observable
202
+ ], Dialog.prototype, "_openedAsModal");
168
203
  __decorateClass([
169
204
  index.observable
170
205
  ], Dialog.prototype, "bodySlottedContent");
@@ -180,7 +215,8 @@ const getClasses = ({
180
215
  iconPlacement,
181
216
  bodySlottedContent,
182
217
  footerSlottedContent,
183
- actionItemsSlottedContent
218
+ actionItemsSlottedContent,
219
+ _openedAsModal
184
220
  }) => classNames.classNames(
185
221
  "base",
186
222
  [`icon-placement-${iconPlacement}`, Boolean(iconPlacement)],
@@ -188,7 +224,8 @@ const getClasses = ({
188
224
  [
189
225
  "hide-footer",
190
226
  !(footerSlottedContent?.length || actionItemsSlottedContent?.length)
191
- ]
227
+ ],
228
+ ["modal", _openedAsModal]
192
229
  );
193
230
  function icon(iconTag) {
194
231
  return index.html`
@@ -212,7 +249,7 @@ function renderDismissButton(buttonTag) {
212
249
  ></${buttonTag}>`;
213
250
  }
214
251
  function handleEscapeKey(dialog, event) {
215
- if (event.key === "Escape" && dialog.modal) {
252
+ if (event.key === "Escape" && dialog._openedAsModal) {
216
253
  dialog.open = false;
217
254
  }
218
255
  return true;
@@ -226,8 +263,8 @@ const DialogTemplate = (context) => {
226
263
  <dialog class="${getClasses}"
227
264
  @keydown="${(x, c) => handleEscapeKey(x, c.event)}"
228
265
  @cancel="${(_, c) => c.event.preventDefault()}"
229
- returnValue="${(x) => x.returnValue}"
230
266
  aria-label="${(x) => x.ariaLabel}"
267
+ ?aria-modal="${(x) => x._openedAsModal}"
231
268
  >
232
269
  <slot name="main">
233
270
  <div class="main-wrapper">
@@ -42,7 +42,8 @@ class Dialog extends FoundationElement {
42
42
  this.ariaLabel = null;
43
43
  this.dismissButtonAriaLabel = null;
44
44
  this.noLightDismiss = false;
45
- this.#modal = false;
45
+ this.modal = false;
46
+ this._openedAsModal = false;
46
47
  this.#handleScrimClick = (event) => {
47
48
  if (event.target !== this.#dialog || this.noLightDismiss) {
48
49
  return;
@@ -58,19 +59,26 @@ class Dialog extends FoundationElement {
58
59
  this.open = false;
59
60
  };
60
61
  }
61
- #modal;
62
+ /**
63
+ * @internal
64
+ */
65
+ modalChanged(_, newValue) {
66
+ if (this.open) {
67
+ this._openedAsModal = newValue;
68
+ if (this.$fastController.isConnected) {
69
+ this.#closeDialog();
70
+ this.#showDialog();
71
+ }
72
+ }
73
+ }
62
74
  set returnValue(value) {
63
- this.#dialog.returnValue = value;
75
+ if (this.#dialog) {
76
+ this.#dialog.returnValue = value;
77
+ }
64
78
  }
65
79
  get returnValue() {
66
80
  return this.#dialog?.returnValue;
67
81
  }
68
- /**
69
- * @internal
70
- */
71
- get modal() {
72
- return this.#modal;
73
- }
74
82
  #dialogElement;
75
83
  get #dialog() {
76
84
  if (!this.#dialogElement) {
@@ -78,7 +86,6 @@ class Dialog extends FoundationElement {
78
86
  "dialog"
79
87
  );
80
88
  if (this.#dialogElement) {
81
- this.#dialogElement.open = this.open;
82
89
  if (dialogPolyfill) {
83
90
  dialogPolyfill.registerDialog(this.#dialogElement);
84
91
  }
@@ -94,44 +101,66 @@ class Dialog extends FoundationElement {
94
101
  return;
95
102
  }
96
103
  if (!newValue) {
97
- this.close();
104
+ this._openedAsModal = false;
105
+ if (this.$fastController.isConnected) {
106
+ this.#closeDialog();
107
+ }
108
+ this.$emit("close", this.returnValue, { bubbles: false });
98
109
  } else {
99
- if (this.#dialog) {
100
- this.#dialog.open = true;
110
+ this._openedAsModal = this._openedAsModal || this.modal;
111
+ if (this.$fastController.isConnected) {
112
+ this.#showDialog();
101
113
  }
114
+ this.$emit("open", void 0, { bubbles: false });
102
115
  }
103
116
  }
104
117
  #handleScrimClick;
105
118
  #handleInternalFormSubmit;
106
119
  close() {
107
- if (this.#dialog.open) {
108
- this.#dialog.close();
109
- this.$emit("close", this.returnValue, { bubbles: false });
110
- }
111
120
  this.open = false;
112
- this.#handleModal(false);
113
- }
114
- #handleModal(show) {
115
- this.#modal = show;
116
- this.#dialog.toggleAttribute("aria-modal", show);
117
- this.#dialog.classList.toggle("modal", show);
118
121
  }
119
122
  show() {
120
- this.#dialog.show();
123
+ if (this._openedAsModal && !this.modal) {
124
+ throw new DOMException(
125
+ "Failed to execute 'show' on 'Dialog': The dialog is already open as a modal dialog, and therefore cannot be opened as a non-modal dialog.",
126
+ "InvalidStateError"
127
+ );
128
+ }
121
129
  this.open = true;
122
130
  }
123
131
  showModal() {
124
- this.#handleModal(true);
125
- this.#dialog.showModal();
132
+ if (this.open && !this._openedAsModal) {
133
+ throw new DOMException(
134
+ "Failed to execute 'showModal' on 'Dialog': The dialog is already open as a non-modal dialog, and therefore cannot be opened as a modal dialog.",
135
+ "InvalidStateError"
136
+ );
137
+ }
138
+ this._openedAsModal = true;
126
139
  this.open = true;
127
140
  }
141
+ #closeDialog() {
142
+ this.#dialog.close();
143
+ }
144
+ #showDialog() {
145
+ if (this._openedAsModal) {
146
+ this.#dialog.showModal();
147
+ } else {
148
+ this.#dialog.show();
149
+ }
150
+ }
128
151
  connectedCallback() {
129
152
  super.connectedCallback();
153
+ if (this.open) {
154
+ this.#showDialog();
155
+ }
130
156
  this.#dialog.addEventListener("mousedown", this.#handleScrimClick);
131
157
  this.#dialog.addEventListener("submit", this.#handleInternalFormSubmit);
132
158
  }
133
159
  disconnectedCallback() {
134
160
  super.disconnectedCallback();
161
+ if (this.open) {
162
+ this.#closeDialog();
163
+ }
135
164
  this.#dialog.removeEventListener("mousedown", this.#handleScrimClick);
136
165
  this.#dialog.removeEventListener("submit", this.#handleInternalFormSubmit);
137
166
  }
@@ -163,6 +192,12 @@ __decorateClass([
163
192
  __decorateClass([
164
193
  attr({ attribute: "no-light-dismiss", mode: "boolean" })
165
194
  ], Dialog.prototype, "noLightDismiss");
195
+ __decorateClass([
196
+ attr({ mode: "boolean" })
197
+ ], Dialog.prototype, "modal");
198
+ __decorateClass([
199
+ observable
200
+ ], Dialog.prototype, "_openedAsModal");
166
201
  __decorateClass([
167
202
  observable
168
203
  ], Dialog.prototype, "bodySlottedContent");
@@ -178,7 +213,8 @@ const getClasses = ({
178
213
  iconPlacement,
179
214
  bodySlottedContent,
180
215
  footerSlottedContent,
181
- actionItemsSlottedContent
216
+ actionItemsSlottedContent,
217
+ _openedAsModal
182
218
  }) => classNames(
183
219
  "base",
184
220
  [`icon-placement-${iconPlacement}`, Boolean(iconPlacement)],
@@ -186,7 +222,8 @@ const getClasses = ({
186
222
  [
187
223
  "hide-footer",
188
224
  !(footerSlottedContent?.length || actionItemsSlottedContent?.length)
189
- ]
225
+ ],
226
+ ["modal", _openedAsModal]
190
227
  );
191
228
  function icon(iconTag) {
192
229
  return html`
@@ -210,7 +247,7 @@ function renderDismissButton(buttonTag) {
210
247
  ></${buttonTag}>`;
211
248
  }
212
249
  function handleEscapeKey(dialog, event) {
213
- if (event.key === "Escape" && dialog.modal) {
250
+ if (event.key === "Escape" && dialog._openedAsModal) {
214
251
  dialog.open = false;
215
252
  }
216
253
  return true;
@@ -224,8 +261,8 @@ const DialogTemplate = (context) => {
224
261
  <dialog class="${getClasses}"
225
262
  @keydown="${(x, c) => handleEscapeKey(x, c.event)}"
226
263
  @cancel="${(_, c) => c.event.preventDefault()}"
227
- returnValue="${(x) => x.returnValue}"
228
264
  aria-label="${(x) => x.ariaLabel}"
265
+ ?aria-modal="${(x) => x._openedAsModal}"
229
266
  >
230
267
  <slot name="main">
231
268
  <div class="main-wrapper">
@@ -7,7 +7,7 @@ const when = require('./when.cjs');
7
7
  const slotted = require('./slotted.cjs');
8
8
  const classNames = require('./class-names.cjs');
9
9
 
10
- const styles = ":host{display:block}.base{display:flex;box-sizing:border-box;flex-direction:column;align-items:center;justify-content:center;block-size:100%;gap:24px}.icon-container{display:flex;align-items:center;justify-content:center;border-radius:50%;background-color:var(--vvd-color-neutral-100);block-size:120px;inline-size:120px}.content{display:flex;flex-direction:column;font:var(--vvd-typography-base);gap:8px;text-align:center}header{font:var(--vvd-typography-base-bold)}.actions{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:8px}.base.no-actions .actions{display:none}";
10
+ const styles = ":host{display:block}.base{--_empty-state-icon-container: 120px;--_empty-state-icon-background: var(--_connotation-color-faint);--_empty-state-icon-font-size: 52px;display:flex;box-sizing:border-box;flex-direction:column;align-items:center;justify-content:center;block-size:100%;gap:24px}.base.connotation-cta{--_connotation-color-firm-all: var(--vvd-empty-state-cta-firm-all, var(--vvd-color-cta-600));--_connotation-color-dim: var(--vvd-empty-state-cta-dim, var(--vvd-color-cta-200));--_connotation-color-faint: var(--vvd-empty-state-cta-faint, var(--vvd-color-cta-50))}.base.connotation-success{--_connotation-color-firm-all: var(--vvd-empty-state-success-firm-all, var(--vvd-color-success-600));--_connotation-color-dim: var(--vvd-empty-state-success-dim, var(--vvd-color-success-200));--_connotation-color-faint: var(--vvd-empty-state-success-faint, var(--vvd-color-success-50))}.base.connotation-alert{--_connotation-color-firm-all: var(--vvd-empty-state-alert-firm-all, var(--vvd-color-alert-600));--_connotation-color-dim: var(--vvd-empty-state-alert-dim, var(--vvd-color-alert-200));--_connotation-color-faint: var(--vvd-empty-state-alert-faint, var(--vvd-color-alert-50))}.base.connotation-warning{--_connotation-color-firm-all: var(--vvd-empty-state-warning-firm-all, var(--vvd-color-warning-600));--_connotation-color-dim: var(--vvd-empty-state-warning-dim, var(--vvd-color-warning-200));--_connotation-color-faint: var(--vvd-empty-state-warning-faint, var(--vvd-color-warning-50))}.base.connotation-information{--_connotation-color-firm-all: var(--vvd-empty-state-information-firm-all, var(--vvd-color-information-600));--_connotation-color-dim: var(--vvd-empty-state-information-dim, var(--vvd-color-information-200));--_connotation-color-faint: var(--vvd-empty-state-information-faint, var(--vvd-color-information-50))}.base.connotation-announcement{--_connotation-color-firm-all: var(--vvd-empty-state-announcement-firm-all, var(--vvd-color-announcement-600));--_connotation-color-dim: var(--vvd-empty-state-announcement-dim, var(--vvd-color-announcement-200));--_connotation-color-faint: var(--vvd-empty-state-announcement-faint, var(--vvd-color-announcement-50))}.base:not(.connotation-cta,.connotation-success,.connotation-alert,.connotation-warning,.connotation-information,.connotation-announcement){--_connotation-color-firm-all: var(--vvd-empty-state-accent-firm-all, var(--vvd-color-neutral-600));--_connotation-color-dim: var(--vvd-empty-state-accent-dim, var(--vvd-color-neutral-200));--_connotation-color-faint: var(--vvd-empty-state-accent-faint, var(--vvd-color-neutral-50))}.icon-container{display:flex;align-items:center;justify-content:center;border-radius:50%;background-color:var(--_empty-state-icon-background);block-size:var(--_empty-state-icon-container);font-size:var(--_empty-state-icon-font-size);inline-size:var(--_empty-state-icon-container)}.icon-decoration-outlined .icon-container{--_empty-state-icon-background: transparent;--_empty-state-icon-font-size: 40px;box-shadow:inset 0 0 0 21px var(--_connotation-color-faint)}.icon-container .icon{color:var(--_connotation-color-firm-all)}.icon-decoration-outlined .icon-container .icon{padding:19px;border:1px solid var(--_connotation-color-dim);border-radius:inherit}.content{display:flex;flex-direction:column;color:var(--vvd-color-canvas-text);font:var(--vvd-typography-base);gap:8px;text-align:center}header{color:var(--_connotation-color-firm-all);font:var(--vvd-typography-base-extended-bold)}.actions{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:8px}.base.no-actions .actions{display:none}";
11
11
 
12
12
  var __defProp = Object.defineProperty;
13
13
  var __decorateClass = (decorators, target, key, kind) => {
@@ -20,17 +20,32 @@ var __decorateClass = (decorators, target, key, kind) => {
20
20
  };
21
21
  class EmptyState extends index.FoundationElement {
22
22
  }
23
+ __decorateClass([
24
+ index.attr
25
+ ], EmptyState.prototype, "connotation");
23
26
  __decorateClass([
24
27
  index.attr
25
28
  ], EmptyState.prototype, "headline");
26
29
  __decorateClass([
27
30
  index.attr
28
31
  ], EmptyState.prototype, "icon");
32
+ __decorateClass([
33
+ index.attr({ attribute: "icon-decoration" })
34
+ ], EmptyState.prototype, "iconDecoration");
29
35
  __decorateClass([
30
36
  index.observable
31
37
  ], EmptyState.prototype, "slottedActionItems");
32
38
 
33
- const getClasses = (x) => classNames.classNames("base", ["no-actions", x.slottedActionItems?.length === 0]);
39
+ const getClasses = ({
40
+ connotation,
41
+ iconDecoration,
42
+ slottedActionItems
43
+ }) => classNames.classNames(
44
+ "base",
45
+ [`connotation-${connotation}`, Boolean(connotation)],
46
+ [`icon-decoration-${iconDecoration}`, Boolean(iconDecoration)],
47
+ ["no-actions", slottedActionItems?.length === 0]
48
+ );
34
49
  const EmptyStateTemplate = (context) => {
35
50
  const iconTag = context.tagFor(icon.Icon);
36
51
  return index.html` <div class="${getClasses}">
@@ -38,7 +53,7 @@ const EmptyStateTemplate = (context) => {
38
53
  ${when.when(
39
54
  (x) => x.icon,
40
55
  index.html`<div class="icon-container">
41
- <${iconTag} class="icon" name="${(x) => x.icon}" size="5"></${iconTag}>
56
+ <${iconTag} class="icon" name="${(x) => x.icon}"></${iconTag}>
42
57
  </div>`
43
58
  )}
44
59
  </slot>
@@ -1,11 +1,11 @@
1
- import { F as FoundationElement, a as attr, o as observable, h as html, r as registerFactory } from './index.js';
1
+ import { a as attr, F as FoundationElement, o as observable, h as html, r as registerFactory } from './index.js';
2
2
  import { a as iconRegistries } from './definition27.js';
3
3
  import { I as Icon } from './icon.js';
4
4
  import { w as when } from './when.js';
5
5
  import { s as slotted } from './slotted.js';
6
6
  import { c as classNames } from './class-names.js';
7
7
 
8
- const styles = ":host{display:block}.base{display:flex;box-sizing:border-box;flex-direction:column;align-items:center;justify-content:center;block-size:100%;gap:24px}.icon-container{display:flex;align-items:center;justify-content:center;border-radius:50%;background-color:var(--vvd-color-neutral-100);block-size:120px;inline-size:120px}.content{display:flex;flex-direction:column;font:var(--vvd-typography-base);gap:8px;text-align:center}header{font:var(--vvd-typography-base-bold)}.actions{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:8px}.base.no-actions .actions{display:none}";
8
+ const styles = ":host{display:block}.base{--_empty-state-icon-container: 120px;--_empty-state-icon-background: var(--_connotation-color-faint);--_empty-state-icon-font-size: 52px;display:flex;box-sizing:border-box;flex-direction:column;align-items:center;justify-content:center;block-size:100%;gap:24px}.base.connotation-cta{--_connotation-color-firm-all: var(--vvd-empty-state-cta-firm-all, var(--vvd-color-cta-600));--_connotation-color-dim: var(--vvd-empty-state-cta-dim, var(--vvd-color-cta-200));--_connotation-color-faint: var(--vvd-empty-state-cta-faint, var(--vvd-color-cta-50))}.base.connotation-success{--_connotation-color-firm-all: var(--vvd-empty-state-success-firm-all, var(--vvd-color-success-600));--_connotation-color-dim: var(--vvd-empty-state-success-dim, var(--vvd-color-success-200));--_connotation-color-faint: var(--vvd-empty-state-success-faint, var(--vvd-color-success-50))}.base.connotation-alert{--_connotation-color-firm-all: var(--vvd-empty-state-alert-firm-all, var(--vvd-color-alert-600));--_connotation-color-dim: var(--vvd-empty-state-alert-dim, var(--vvd-color-alert-200));--_connotation-color-faint: var(--vvd-empty-state-alert-faint, var(--vvd-color-alert-50))}.base.connotation-warning{--_connotation-color-firm-all: var(--vvd-empty-state-warning-firm-all, var(--vvd-color-warning-600));--_connotation-color-dim: var(--vvd-empty-state-warning-dim, var(--vvd-color-warning-200));--_connotation-color-faint: var(--vvd-empty-state-warning-faint, var(--vvd-color-warning-50))}.base.connotation-information{--_connotation-color-firm-all: var(--vvd-empty-state-information-firm-all, var(--vvd-color-information-600));--_connotation-color-dim: var(--vvd-empty-state-information-dim, var(--vvd-color-information-200));--_connotation-color-faint: var(--vvd-empty-state-information-faint, var(--vvd-color-information-50))}.base.connotation-announcement{--_connotation-color-firm-all: var(--vvd-empty-state-announcement-firm-all, var(--vvd-color-announcement-600));--_connotation-color-dim: var(--vvd-empty-state-announcement-dim, var(--vvd-color-announcement-200));--_connotation-color-faint: var(--vvd-empty-state-announcement-faint, var(--vvd-color-announcement-50))}.base:not(.connotation-cta,.connotation-success,.connotation-alert,.connotation-warning,.connotation-information,.connotation-announcement){--_connotation-color-firm-all: var(--vvd-empty-state-accent-firm-all, var(--vvd-color-neutral-600));--_connotation-color-dim: var(--vvd-empty-state-accent-dim, var(--vvd-color-neutral-200));--_connotation-color-faint: var(--vvd-empty-state-accent-faint, var(--vvd-color-neutral-50))}.icon-container{display:flex;align-items:center;justify-content:center;border-radius:50%;background-color:var(--_empty-state-icon-background);block-size:var(--_empty-state-icon-container);font-size:var(--_empty-state-icon-font-size);inline-size:var(--_empty-state-icon-container)}.icon-decoration-outlined .icon-container{--_empty-state-icon-background: transparent;--_empty-state-icon-font-size: 40px;box-shadow:inset 0 0 0 21px var(--_connotation-color-faint)}.icon-container .icon{color:var(--_connotation-color-firm-all)}.icon-decoration-outlined .icon-container .icon{padding:19px;border:1px solid var(--_connotation-color-dim);border-radius:inherit}.content{display:flex;flex-direction:column;color:var(--vvd-color-canvas-text);font:var(--vvd-typography-base);gap:8px;text-align:center}header{color:var(--_connotation-color-firm-all);font:var(--vvd-typography-base-extended-bold)}.actions{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:8px}.base.no-actions .actions{display:none}";
9
9
 
10
10
  var __defProp = Object.defineProperty;
11
11
  var __decorateClass = (decorators, target, key, kind) => {
@@ -18,17 +18,32 @@ var __decorateClass = (decorators, target, key, kind) => {
18
18
  };
19
19
  class EmptyState extends FoundationElement {
20
20
  }
21
+ __decorateClass([
22
+ attr
23
+ ], EmptyState.prototype, "connotation");
21
24
  __decorateClass([
22
25
  attr
23
26
  ], EmptyState.prototype, "headline");
24
27
  __decorateClass([
25
28
  attr
26
29
  ], EmptyState.prototype, "icon");
30
+ __decorateClass([
31
+ attr({ attribute: "icon-decoration" })
32
+ ], EmptyState.prototype, "iconDecoration");
27
33
  __decorateClass([
28
34
  observable
29
35
  ], EmptyState.prototype, "slottedActionItems");
30
36
 
31
- const getClasses = (x) => classNames("base", ["no-actions", x.slottedActionItems?.length === 0]);
37
+ const getClasses = ({
38
+ connotation,
39
+ iconDecoration,
40
+ slottedActionItems
41
+ }) => classNames(
42
+ "base",
43
+ [`connotation-${connotation}`, Boolean(connotation)],
44
+ [`icon-decoration-${iconDecoration}`, Boolean(iconDecoration)],
45
+ ["no-actions", slottedActionItems?.length === 0]
46
+ );
32
47
  const EmptyStateTemplate = (context) => {
33
48
  const iconTag = context.tagFor(Icon);
34
49
  return html` <div class="${getClasses}">
@@ -36,7 +51,7 @@ const EmptyStateTemplate = (context) => {
36
51
  ${when(
37
52
  (x) => x.icon,
38
53
  html`<div class="icon-container">
39
- <${iconTag} class="icon" name="${(x) => x.icon}" size="5"></${iconTag}>
54
+ <${iconTag} class="icon" name="${(x) => x.icon}"></${iconTag}>
40
55
  </div>`
41
56
  )}
42
57
  </slot>
@@ -13,7 +13,7 @@ const when = require('./when.cjs');
13
13
  const ref = require('./ref.cjs');
14
14
  const classNames = require('./class-names.cjs');
15
15
 
16
- const styles = ":host{display:block;max-inline-size:400px}.base{display:flex;flex-direction:column}.control{display:flex;box-sizing:border-box;flex-wrap:wrap;align-items:center;justify-content:center;padding:16px;border:1px dashed var(--vvd-color-neutral-400);border-radius:8px;background-color:var(--vvd-color-cta-50);color:var(--vvd-color-neutral-600);cursor:pointer;font:var(--vvd-typography-base);gap:8px;inline-size:100%;min-block-size:52px;outline:none}.control:not(.size-expanded){min-block-size:52px}.control.size-expanded{min-block-size:120px}.control:focus-visible{--focus-stroke-gap-color: transparent;--focus-inset: 1px;box-shadow:inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:2px solid var(--focus-stroke-color, var(--vvd-color-canvas-text));outline-offset:calc(-2px - var(--focus-inset, 0px))}.main{pointer-events:none}.dz-preview{display:grid;box-sizing:border-box;padding:6px 12px;border-radius:8px;grid-template-columns:1fr auto;grid-template-rows:auto auto;inline-size:100%}.dz-preview .dz-details{display:flex;min-width:0;flex-direction:column;max-inline-size:100%}.dz-preview .dz-details .dz-filename{overflow:hidden;color:var(--vvd-color-canvas-text);font:var(--vvd-typography-base);text-overflow:ellipsis;white-space:nowrap}.dz-preview .dz-details .dz-size{color:var(--vvd-color-neutral-600);font:var(--vvd-typography-base-condensed)}.dz-preview .dz-error-message{color:var(--vvd-color-alert-500);font:var(--vvd-typography-base-condensed);margin-block-start:4px}.dz-preview:not(.dz-error) .dz-error-message{display:none}.dz-preview.dz-error{border:1px solid var(--vvd-color-alert-500)}.dz-preview.dz-error .dz-details .dz-size,.dz-preview.dz-error .dz-progress{display:none}.dz-preview .remove-btn{display:inline;align-self:center;grid-column:2/-1;grid-row:1/-1}.message{margin-block-start:4px;--_low-ink-color: var(--vvd-color-neutral-600)}.preview-list{display:flex;flex-direction:column;gap:12px;margin-block-start:12px;overflow-y:auto}.preview-list:empty{display:none}";
16
+ const styles = ":host{display:block;max-inline-size:400px}.base{display:flex;flex-direction:column}.control{display:flex;box-sizing:border-box;flex-wrap:wrap;align-items:center;justify-content:center;padding:16px;border:1px dashed var(--vvd-color-neutral-400);border-radius:8px;background-color:var(--vvd-color-cta-50);color:var(--vvd-color-neutral-600);cursor:pointer;font:var(--vvd-typography-base);gap:8px;inline-size:100%;min-block-size:52px;outline:none}.control:not(.size-expanded){min-block-size:52px}.control.size-expanded{min-block-size:120px}.control:focus-visible{--focus-stroke-gap-color: transparent;--focus-inset: 1px;box-shadow:inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:2px solid var(--focus-stroke-color, var(--vvd-color-canvas-text));outline-offset:calc(-2px - var(--focus-inset, 0px))}.main{pointer-events:none}.dz-preview{display:grid;box-sizing:border-box;padding:8px;border-radius:8px;background-color:var(--file-picker-list-item-background-color, var(--vvd-color-canvas));grid-template-columns:1fr auto;grid-template-rows:auto auto;inline-size:100%}.dz-preview .dz-details{display:flex;min-width:0;flex-direction:column;max-inline-size:100%}.dz-preview .dz-details .dz-filename{overflow:hidden;color:var(--vvd-color-canvas-text);font:var(--vvd-typography-base);text-overflow:ellipsis;white-space:nowrap}.dz-preview .dz-details .dz-size{color:var(--vvd-color-neutral-600);font:var(--vvd-typography-base-condensed)}.dz-preview .dz-error-message{color:var(--vvd-color-alert-500);font:var(--vvd-typography-base-condensed);margin-block-start:4px}.dz-preview:not(.dz-error) .dz-error-message{display:none}.dz-preview.dz-error{border:1px solid var(--vvd-color-alert-500)}.dz-preview.dz-error .dz-details .dz-size,.dz-preview.dz-error .dz-progress{display:none}.dz-preview .remove-btn{display:inline;align-self:center;grid-column:2/-1;grid-row:1/-1}.message{margin-block-start:4px;--_low-ink-color: var(--vvd-color-neutral-600)}.preview-list{display:flex;flex-direction:column;gap:12px;margin-block-start:12px;overflow-y:auto}.preview-list:empty{display:none}";
17
17
 
18
18
  var objectExtend = extend;
19
19