@vonage/vivid 3.43.0 → 3.45.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 (90) hide show
  1. package/README.md +399 -165
  2. package/appearance-ui/index.js +94 -0
  3. package/custom-elements.json +793 -352
  4. package/index.js +3 -2
  5. package/lib/alert/alert.d.ts +2 -0
  6. package/lib/appearance-ui/appearance-ui.d.ts +12 -0
  7. package/lib/appearance-ui/appearance-ui.template.d.ts +4 -0
  8. package/lib/appearance-ui/definition.d.ts +3 -0
  9. package/lib/data-grid/data-grid-cell.d.ts +1 -0
  10. package/lib/data-grid/data-grid.d.ts +2 -0
  11. package/lib/dialog/dialog.d.ts +1 -4
  12. package/lib/enums.d.ts +3 -0
  13. package/lib/menu/menu.d.ts +6 -5
  14. package/lib/menu-item/definition.d.ts +1 -0
  15. package/lib/popup/popup.d.ts +2 -2
  16. package/lib/select/select.d.ts +0 -3
  17. package/lib/tabs/tabs.d.ts +3 -1
  18. package/lib/toggletip/toggletip.d.ts +4 -4
  19. package/lib/tooltip/tooltip.d.ts +4 -5
  20. package/listbox/index.js +1 -1
  21. package/menu/index.js +1 -0
  22. package/menu-item/index.js +1 -0
  23. package/package.json +1 -1
  24. package/shared/anchored.js +76 -0
  25. package/shared/definition.js +1 -1
  26. package/shared/definition11.js +1 -1
  27. package/shared/definition12.js +1 -1
  28. package/shared/definition13.js +1 -1
  29. package/shared/definition14.js +1 -1
  30. package/shared/definition15.js +1 -1
  31. package/shared/definition16.js +1 -1
  32. package/shared/definition17.js +96 -44
  33. package/shared/definition2.js +1 -1
  34. package/shared/definition20.js +16 -2
  35. package/shared/definition21.js +1 -1
  36. package/shared/definition22.js +1 -1
  37. package/shared/definition23.js +1 -1
  38. package/shared/definition24.js +1 -1
  39. package/shared/definition25.js +1 -1
  40. package/shared/definition28.js +42 -47
  41. package/shared/definition29.js +12 -4
  42. package/shared/definition3.js +1 -1
  43. package/shared/definition30.js +1 -1
  44. package/shared/definition31.js +1 -1
  45. package/shared/definition33.js +1 -1
  46. package/shared/definition34.js +3 -3
  47. package/shared/definition35.js +1 -1
  48. package/shared/definition36.js +1 -1
  49. package/shared/definition37.js +1 -1
  50. package/shared/definition38.js +1 -1
  51. package/shared/definition39.js +1 -1
  52. package/shared/definition4.js +10 -6
  53. package/shared/definition40.js +1 -1
  54. package/shared/definition41.js +6 -4
  55. package/shared/definition42.js +1 -1
  56. package/shared/definition43.js +1 -1
  57. package/shared/definition44.js +1 -1
  58. package/shared/definition45.js +10 -6
  59. package/shared/definition46.js +1 -1
  60. package/shared/definition48.js +1 -1
  61. package/shared/definition49.js +8 -3
  62. package/shared/definition5.js +1 -1
  63. package/shared/definition51.js +1 -1
  64. package/shared/definition52.js +3 -3
  65. package/shared/definition53.js +2 -2
  66. package/shared/definition54.js +37 -45
  67. package/shared/definition55.js +42 -58
  68. package/shared/definition56.js +1 -1
  69. package/shared/definition58.js +1 -1
  70. package/shared/definition6.js +1 -1
  71. package/shared/definition60.js +108 -12
  72. package/shared/definition7.js +1 -1
  73. package/shared/definition8.js +2 -3
  74. package/shared/definition9.js +1 -1
  75. package/shared/enums.js +5 -1
  76. package/shared/form-associated.js +1 -0
  77. package/shared/index2.js +1 -1
  78. package/shared/patterns/anchored.d.ts +22 -0
  79. package/shared/presentationDate.js +2 -2
  80. package/shared/text-field.js +1 -1
  81. package/style.css +835 -144
  82. package/styles/core/all.css +1 -1
  83. package/styles/core/theme.css +1 -1
  84. package/styles/core/typography.css +1 -1
  85. package/styles/tokens/theme-dark.css +4 -4
  86. package/styles/tokens/theme-light.css +4 -4
  87. package/styles/tokens/vivid-2-compat.css +1 -1
  88. package/toggletip/index.js +1 -0
  89. package/tooltip/index.js +1 -0
  90. package/vivid.api.json +61 -0
@@ -1,5 +1,5 @@
1
1
  import { a as iconRegistries } from './definition26.js';
2
- import { F as FoundationElement, _ as __decorate, a as attr, o as observable, D as DOM, h as html, r as registerFactory } from './index.js';
2
+ import { F as FoundationElement, _ as __decorate, a as attr, o as observable, D as DOM, h as html, O as Observable, r as registerFactory } from './index.js';
3
3
  import { d as keyEnd, g as keyHome, h as keyArrowRight, i as keyArrowLeft, j as keyPageDown, l as keyPageUp, f as keyArrowDown, e as keyArrowUp, b as keyEscape, m as keyFunction2, k as keyEnter } from './key-codes.js';
4
4
  import { R as RepeatDirective } from './repeat.js';
5
5
  import { e as elements, s as slotted } from './slotted.js';
@@ -908,11 +908,33 @@ __decorate([
908
908
  observable
909
909
  ], DataGridCell$1.prototype, "columnDefinition", void 0);
910
910
 
911
- const dataGridStyles = ":host {\n display: block;\n}\n\n:host([generate-header=sticky]) {\n max-block-size: 400px;\n}\n\n.base {\n position: relative;\n overflow: auto;\n block-size: inherit;\n inline-size: 100%;\n max-block-size: inherit;\n}\n.base::-webkit-scrollbar {\n display: none;\n}";
911
+ const dataGridStyles = ":host {\n display: block;\n}\n\n:host([generate-header=sticky]) {\n max-block-size: 400px;\n}\n\n.base {\n position: relative;\n overflow: auto;\n block-size: inherit;\n inline-size: 100%;\n max-block-size: inherit;\n}";
912
912
 
913
- const dataGridRowStyles = "/**\n * Do not edit directly\n * Generated on Mon, 11 Dec 2023 11:36:24 GMT\n */\n.base {\n display: grid;\n width: 100%;\n box-sizing: border-box;\n color: var(--vvd-color-canvas-text);\n}\n.base.connotation-cta {\n /* @cssprop [--vvd-data-grid-row-cta-primary=var(--vvd-color-cta-500)] */\n --_connotation-color-primary: var(--vvd-data-grid-row-cta-primary, var(--vvd-color-cta-500));\n /* @cssprop [--vvd-data-grid-row-cta-primary-text=var(--vvd-color-canvas)] */\n --_connotation-color-primary-text: var(--vvd-data-grid-row-cta-primary-text, var(--vvd-color-canvas));\n /* @cssprop [--vvd-data-grid-row-cta-primary-increment=var(--vvd-color-cta-600)] */\n --_connotation-color-primary-increment: var(--vvd-data-grid-row-cta-primary-increment, var(--vvd-color-cta-600));\n /* @cssprop [--vvd-data-grid-row-cta-faint=var(--vvd-color-cta-50)] */\n --_connotation-color-faint: var(--vvd-data-grid-row-cta-faint, var(--vvd-color-cta-50));\n /* @cssprop [--vvd-data-grid-row-cta-pale=var(--vvd-color-cta-300)] */\n --_connotation-color-pale: var(--vvd-data-grid-row-cta-pale, var(--vvd-color-cta-300));\n /* @cssprop [--vvd-data-grid-row-cta-dim=var(--vvd-color-cta-200)] */\n --_connotation-color-dim: var(--vvd-data-grid-row-cta-dim, var(--vvd-color-cta-200));\n}\n.base:not(.connotation-cta) {\n /* @cssprop [--vvd-data-grid-row-accent-primary=var(--vvd-color-canvas-text)] */\n --_connotation-color-primary: var(--vvd-data-grid-row-accent-primary, var(--vvd-color-canvas-text));\n /* @cssprop [--vvd-data-grid-row-accent-primary-text=var(--vvd-color-canvas)] */\n --_connotation-color-primary-text: var(--vvd-data-grid-row-accent-primary-text, var(--vvd-color-canvas));\n /* @cssprop [--vvd-data-grid-row-accent-primary-increment=var(--vvd-color-neutral-800)] */\n --_connotation-color-primary-increment: var(--vvd-data-grid-row-accent-primary-increment, var(--vvd-color-neutral-800));\n /* @cssprop [--vvd-data-grid-row-accent-faint=var(--vvd-color-neutral-50)] */\n --_connotation-color-faint: var(--vvd-data-grid-row-accent-faint, var(--vvd-color-neutral-50));\n /* @cssprop [--vvd-data-grid-row-accent-pale=var(--vvd-color-neutral-300)] */\n --_connotation-color-pale: var(--vvd-data-grid-row-accent-pale, var(--vvd-color-neutral-300));\n /* @cssprop [--vvd-data-grid-row-accent-dim=var(--vvd-color-neutral-200)] */\n --_connotation-color-dim: var(--vvd-data-grid-row-accent-dim, var(--vvd-color-neutral-200));\n}\n.base {\n --_appearance-color-text: var(--_connotation-color-primary);\n --_appearance-color-fill: transparent;\n --_appearance-color-outline: transparent;\n}\n.base:where(:hover, .hover):where(:not(:disabled, .disabled, .readonly)) {\n --_appearance-color-text: var(--_connotation-color-primary);\n --_appearance-color-fill: var(--_connotation-color-faint);\n --_appearance-color-outline: transparent;\n}\n.base:where(.selected, [aria-current]):where(:not(:disabled, .disabled)) {\n --_appearance-color-text: var(--_connotation-color-primary);\n --_appearance-color-fill: var(--_connotation-color-dim);\n --_appearance-color-outline: transparent;\n}\n.base:where(.selected, [aria-current]):where(:hover, .hover):where(:not(:disabled, .disabled, .readonly)) {\n --_appearance-color-text: var(--_connotation-color-primary);\n --_appearance-color-fill: var(--_connotation-color-pale);\n --_appearance-color-outline: transparent;\n}\n:host([row-type=sticky-header]) .base {\n position: sticky;\n z-index: 9;\n top: 0;\n background: var(--data-grid-row-background, var(--vvd-color-canvas));\n}\n:host([row-type=hidden-header]) .base {\n display: none;\n}\n:host(:is([aria-selected]):not([row-type*=header])) .base {\n background-color: var(--_appearance-color-fill);\n}";
913
+ const dataGridRowStyles = "/**\n * Do not edit directly\n * Generated on Mon, 08 Jan 2024 16:06:07 GMT\n */\n.base {\n display: grid;\n width: 100%;\n box-sizing: border-box;\n color: var(--vvd-color-canvas-text);\n}\n.base.connotation-cta {\n /* @cssprop [--vvd-data-grid-row-cta-primary=var(--vvd-color-cta-500)] */\n --_connotation-color-primary: var(--vvd-data-grid-row-cta-primary, var(--vvd-color-cta-500));\n /* @cssprop [--vvd-data-grid-row-cta-primary-text=var(--vvd-color-canvas)] */\n --_connotation-color-primary-text: var(--vvd-data-grid-row-cta-primary-text, var(--vvd-color-canvas));\n /* @cssprop [--vvd-data-grid-row-cta-primary-increment=var(--vvd-color-cta-600)] */\n --_connotation-color-primary-increment: var(--vvd-data-grid-row-cta-primary-increment, var(--vvd-color-cta-600));\n /* @cssprop [--vvd-data-grid-row-cta-faint=var(--vvd-color-cta-50)] */\n --_connotation-color-faint: var(--vvd-data-grid-row-cta-faint, var(--vvd-color-cta-50));\n /* @cssprop [--vvd-data-grid-row-cta-pale=var(--vvd-color-cta-300)] */\n --_connotation-color-pale: var(--vvd-data-grid-row-cta-pale, var(--vvd-color-cta-300));\n /* @cssprop [--vvd-data-grid-row-cta-dim=var(--vvd-color-cta-200)] */\n --_connotation-color-dim: var(--vvd-data-grid-row-cta-dim, var(--vvd-color-cta-200));\n}\n.base:not(.connotation-cta) {\n /* @cssprop [--vvd-data-grid-row-accent-primary=var(--vvd-color-canvas-text)] */\n --_connotation-color-primary: var(--vvd-data-grid-row-accent-primary, var(--vvd-color-canvas-text));\n /* @cssprop [--vvd-data-grid-row-accent-primary-text=var(--vvd-color-canvas)] */\n --_connotation-color-primary-text: var(--vvd-data-grid-row-accent-primary-text, var(--vvd-color-canvas));\n /* @cssprop [--vvd-data-grid-row-accent-primary-increment=var(--vvd-color-neutral-800)] */\n --_connotation-color-primary-increment: var(--vvd-data-grid-row-accent-primary-increment, var(--vvd-color-neutral-800));\n /* @cssprop [--vvd-data-grid-row-accent-faint=var(--vvd-color-neutral-50)] */\n --_connotation-color-faint: var(--vvd-data-grid-row-accent-faint, var(--vvd-color-neutral-50));\n /* @cssprop [--vvd-data-grid-row-accent-pale=var(--vvd-color-neutral-300)] */\n --_connotation-color-pale: var(--vvd-data-grid-row-accent-pale, var(--vvd-color-neutral-300));\n /* @cssprop [--vvd-data-grid-row-accent-dim=var(--vvd-color-neutral-200)] */\n --_connotation-color-dim: var(--vvd-data-grid-row-accent-dim, var(--vvd-color-neutral-200));\n}\n.base {\n --_appearance-color-text: var(--_connotation-color-primary);\n --_appearance-color-fill: transparent;\n --_appearance-color-outline: transparent;\n}\n.base:where(:hover, .hover):where(:not(:disabled, .disabled, .readonly)) {\n --_appearance-color-text: var(--_connotation-color-primary);\n --_appearance-color-fill: var(--_connotation-color-faint);\n --_appearance-color-outline: transparent;\n}\n.base:where(.selected, [aria-current]):where(:not(:disabled, .disabled)) {\n --_appearance-color-text: var(--_connotation-color-primary);\n --_appearance-color-fill: var(--_connotation-color-dim);\n --_appearance-color-outline: transparent;\n}\n.base:where(.selected, [aria-current]):where(:hover, .hover):where(:not(:disabled, .disabled, .readonly)) {\n --_appearance-color-text: var(--_connotation-color-primary);\n --_appearance-color-fill: var(--_connotation-color-pale);\n --_appearance-color-outline: transparent;\n}\n:host([row-type=sticky-header]) .base {\n position: sticky;\n z-index: 9;\n top: 0;\n background: var(--data-grid-row-background, var(--vvd-color-canvas));\n}\n:host([row-type=hidden-header]) .base {\n display: none;\n}\n:host(:is([aria-selected]):not([row-type*=header])) .base {\n background-color: var(--_appearance-color-fill);\n}";
914
914
 
915
- const dataGridCellStyles = "/**\n * Do not edit directly\n * Generated on Mon, 11 Dec 2023 11:36:24 GMT\n */\n:host {\n min-inline-size: 80px;\n}\n\n:host(:focus-visible) {\n outline: none;\n}\n\n.base {\n position: relative;\n display: flex;\n box-sizing: border-box;\n align-items: center;\n padding: 8px 12px;\n border-bottom: 1px solid var(--vvd-color-neutral-300);\n block-size: calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density, 0), 2) + 8));\n color: var(--_appearance-color-text);\n font: var(--vvd-typography-base);\n}\n.base.connotation-cta {\n /* @cssprop [--vvd-data-grid-cell-cta-primary=var(--vvd-color-cta-500)] */\n --_connotation-color-primary: var(--vvd-data-grid-cell-cta-primary, var(--vvd-color-cta-500));\n /* @cssprop [--vvd-data-grid-cell-cta-primary-text=var(--vvd-color-canvas)] */\n --_connotation-color-primary-text: var(--vvd-data-grid-cell-cta-primary-text, var(--vvd-color-canvas));\n /* @cssprop [--vvd-data-grid-cell-cta-primary-increment=var(--vvd-color-cta-600)] */\n --_connotation-color-primary-increment: var(--vvd-data-grid-cell-cta-primary-increment, var(--vvd-color-cta-600));\n /* @cssprop [--vvd-data-grid-cell-cta-faint=var(--vvd-color-cta-50)] */\n --_connotation-color-faint: var(--vvd-data-grid-cell-cta-faint, var(--vvd-color-cta-50));\n /* @cssprop [--vvd-data-grid-cell-cta-pale=var(--vvd-color-cta-300)] */\n --_connotation-color-pale: var(--vvd-data-grid-cell-cta-pale, var(--vvd-color-cta-300));\n /* @cssprop [--vvd-data-grid-cell-cta-dim=var(--vvd-color-cta-200)] */\n --_connotation-color-dim: var(--vvd-data-grid-cell-cta-dim, var(--vvd-color-cta-200));\n}\n.base:not(.connotation-cta) {\n /* @cssprop [--vvd-data-grid-cell-accent-primary=var(--vvd-color-canvas-text)] */\n --_connotation-color-primary: var(--vvd-data-grid-cell-accent-primary, var(--vvd-color-canvas-text));\n /* @cssprop [--vvd-data-grid-cell-accent-primary-text=var(--vvd-color-canvas)] */\n --_connotation-color-primary-text: var(--vvd-data-grid-cell-accent-primary-text, var(--vvd-color-canvas));\n /* @cssprop [--vvd-data-grid-cell-accent-primary-increment=var(--vvd-color-neutral-800)] */\n --_connotation-color-primary-increment: var(--vvd-data-grid-cell-accent-primary-increment, var(--vvd-color-neutral-800));\n /* @cssprop [--vvd-data-grid-cell-accent-faint=var(--vvd-color-neutral-50)] */\n --_connotation-color-faint: var(--vvd-data-grid-cell-accent-faint, var(--vvd-color-neutral-50));\n /* @cssprop [--vvd-data-grid-cell-accent-pale=var(--vvd-color-neutral-300)] */\n --_connotation-color-pale: var(--vvd-data-grid-cell-accent-pale, var(--vvd-color-neutral-300));\n /* @cssprop [--vvd-data-grid-cell-accent-dim=var(--vvd-color-neutral-200)] */\n --_connotation-color-dim: var(--vvd-data-grid-cell-accent-dim, var(--vvd-color-neutral-200));\n}\n.base {\n --_appearance-color-text: var(--_connotation-color-primary);\n --_appearance-color-fill: transparent;\n --_appearance-color-outline: transparent;\n}\n.base:where(:hover, .hover):where(:not(:disabled, .disabled, .readonly)) {\n --_appearance-color-text: var(--_connotation-color-primary);\n --_appearance-color-fill: var(--_connotation-color-faint);\n --_appearance-color-outline: transparent;\n}\n.base:where(.selected, [aria-current]):where(:not(:disabled, .disabled)) {\n --_appearance-color-text: var(--_connotation-color-primary);\n --_appearance-color-fill: var(--_connotation-color-dim);\n --_appearance-color-outline: transparent;\n}\n.base:where(.selected, [aria-current]):where(:hover, .hover):where(:not(:disabled, .disabled, .readonly)) {\n --_appearance-color-text: var(--_connotation-color-primary);\n --_appearance-color-fill: var(--_connotation-color-pale);\n --_appearance-color-outline: transparent;\n}\n:host([cell-type=columnheader]) .base {\n border-color: var(--vvd-color-canvas-text);\n font: var(--vvd-typography-base-bold);\n}\n:host(:is([aria-selected]):not([cell-type=columnheader])) .base {\n background-color: var(--_appearance-color-fill);\n}\n\n.focus-indicator {\n --focus-stroke-gap-color: transparent;\n pointer-events: none;\n}\n:host(:not(:focus)) .base > .focus-indicator {\n display: none;\n}\n\nslot {\n display: block;\n overflow: hidden;\n inline-size: 100%;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.header-icon {\n margin-inline-start: auto;\n}";
915
+ const dataGridCellStyles = "/**\n * Do not edit directly\n * Generated on Mon, 08 Jan 2024 16:06:07 GMT\n */\n:host {\n min-inline-size: 80px;\n}\n\n:host(:focus-visible) {\n outline: none;\n}\n\n.base {\n position: relative;\n display: flex;\n box-sizing: border-box;\n align-items: center;\n padding: 8px 12px;\n border-bottom: 1px solid var(--vvd-color-neutral-300);\n block-size: calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density, 0), 2) + 8));\n color: var(--_appearance-color-text);\n font: var(--vvd-typography-base);\n}\n.base.connotation-cta {\n /* @cssprop [--vvd-data-grid-cell-cta-primary=var(--vvd-color-cta-500)] */\n --_connotation-color-primary: var(--vvd-data-grid-cell-cta-primary, var(--vvd-color-cta-500));\n /* @cssprop [--vvd-data-grid-cell-cta-primary-text=var(--vvd-color-canvas)] */\n --_connotation-color-primary-text: var(--vvd-data-grid-cell-cta-primary-text, var(--vvd-color-canvas));\n /* @cssprop [--vvd-data-grid-cell-cta-primary-increment=var(--vvd-color-cta-600)] */\n --_connotation-color-primary-increment: var(--vvd-data-grid-cell-cta-primary-increment, var(--vvd-color-cta-600));\n /* @cssprop [--vvd-data-grid-cell-cta-faint=var(--vvd-color-cta-50)] */\n --_connotation-color-faint: var(--vvd-data-grid-cell-cta-faint, var(--vvd-color-cta-50));\n /* @cssprop [--vvd-data-grid-cell-cta-pale=var(--vvd-color-cta-300)] */\n --_connotation-color-pale: var(--vvd-data-grid-cell-cta-pale, var(--vvd-color-cta-300));\n /* @cssprop [--vvd-data-grid-cell-cta-dim=var(--vvd-color-cta-200)] */\n --_connotation-color-dim: var(--vvd-data-grid-cell-cta-dim, var(--vvd-color-cta-200));\n}\n.base:not(.connotation-cta) {\n /* @cssprop [--vvd-data-grid-cell-accent-primary=var(--vvd-color-canvas-text)] */\n --_connotation-color-primary: var(--vvd-data-grid-cell-accent-primary, var(--vvd-color-canvas-text));\n /* @cssprop [--vvd-data-grid-cell-accent-primary-text=var(--vvd-color-canvas)] */\n --_connotation-color-primary-text: var(--vvd-data-grid-cell-accent-primary-text, var(--vvd-color-canvas));\n /* @cssprop [--vvd-data-grid-cell-accent-primary-increment=var(--vvd-color-neutral-800)] */\n --_connotation-color-primary-increment: var(--vvd-data-grid-cell-accent-primary-increment, var(--vvd-color-neutral-800));\n /* @cssprop [--vvd-data-grid-cell-accent-faint=var(--vvd-color-neutral-50)] */\n --_connotation-color-faint: var(--vvd-data-grid-cell-accent-faint, var(--vvd-color-neutral-50));\n /* @cssprop [--vvd-data-grid-cell-accent-pale=var(--vvd-color-neutral-300)] */\n --_connotation-color-pale: var(--vvd-data-grid-cell-accent-pale, var(--vvd-color-neutral-300));\n /* @cssprop [--vvd-data-grid-cell-accent-dim=var(--vvd-color-neutral-200)] */\n --_connotation-color-dim: var(--vvd-data-grid-cell-accent-dim, var(--vvd-color-neutral-200));\n}\n.base {\n --_appearance-color-text: var(--_connotation-color-primary);\n --_appearance-color-fill: transparent;\n --_appearance-color-outline: transparent;\n}\n.base:where(:hover, .hover):where(:not(:disabled, .disabled, .readonly)) {\n --_appearance-color-text: var(--_connotation-color-primary);\n --_appearance-color-fill: var(--_connotation-color-faint);\n --_appearance-color-outline: transparent;\n}\n.base:where(.selected, [aria-current]):where(:not(:disabled, .disabled)) {\n --_appearance-color-text: var(--_connotation-color-primary);\n --_appearance-color-fill: var(--_connotation-color-dim);\n --_appearance-color-outline: transparent;\n}\n.base:where(.selected, [aria-current]):where(:hover, .hover):where(:not(:disabled, .disabled, .readonly)) {\n --_appearance-color-text: var(--_connotation-color-primary);\n --_appearance-color-fill: var(--_connotation-color-pale);\n --_appearance-color-outline: transparent;\n}\n:host([cell-type=columnheader]) .base {\n border-color: var(--vvd-color-canvas-text);\n font: var(--vvd-typography-base-bold);\n}\n:host(:is([aria-selected]):not([cell-type=columnheader])) .base {\n background-color: var(--_appearance-color-fill);\n}\n\n.focus-indicator {\n --focus-stroke-gap-color: transparent;\n pointer-events: none;\n}\n:host(:not(:focus)) .base > .focus-indicator {\n display: none;\n}\n\nslot {\n display: block;\n overflow: hidden;\n inline-size: 100%;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.header-icon {\n margin-inline-start: auto;\n}";
916
+
917
+ const DataGridCellSortStates = {
918
+ none: "none",
919
+ ascending: "ascending",
920
+ descending: "descending",
921
+ other: "other"
922
+ };
923
+ const GenerateHeaderOptions = {
924
+ none: "none",
925
+ default: "default",
926
+ sticky: "sticky"
927
+ };
928
+ const DataGridRowTypes = {
929
+ default: "default",
930
+ header: "header",
931
+ stickyHeader: "sticky-header"
932
+ };
933
+ const DataGridCellRole = {
934
+ columnheader: "columnheader",
935
+ rowheader: "rowheader",
936
+ default: "gridcell"
937
+ };
916
938
 
917
939
  var __defProp$2 = Object.defineProperty;
918
940
  var __getOwnPropDesc$2 = Object.getOwnPropertyDescriptor;
@@ -971,6 +993,15 @@ class DataGrid extends DataGrid$1 {
971
993
  this.#setSelectedState(row, !cacheTargetSelection);
972
994
  }
973
995
  };
996
+ this.#changeHandler = {
997
+ handleChange(dataGrid, propertyName) {
998
+ if (propertyName === "columnDefinitions") {
999
+ if (dataGrid.$fastController.isConnected) {
1000
+ dataGrid.toggleGeneratedHeader();
1001
+ }
1002
+ }
1003
+ }
1004
+ };
974
1005
  this.#setSelectedState = (cell, selectedState) => {
975
1006
  cell.setAttribute("aria-selected", selectedState.toString());
976
1007
  };
@@ -1004,6 +1035,29 @@ class DataGrid extends DataGrid$1 {
1004
1035
  };
1005
1036
  this.addEventListener("click", this.#handleClick);
1006
1037
  this.addEventListener("keydown", this.#handleKeypress);
1038
+ const privates = this;
1039
+ privates.toggleGeneratedHeader = () => {
1040
+ if (privates.generatedHeader !== null) {
1041
+ this.removeChild(privates.generatedHeader);
1042
+ privates.generatedHeader = null;
1043
+ }
1044
+ if (this.generateHeader !== GenerateHeaderOptions.none && this.columnDefinitions !== null) {
1045
+ const generatedHeaderElement = document.createElement(
1046
+ this.rowElementTag
1047
+ );
1048
+ privates.generatedHeader = generatedHeaderElement;
1049
+ privates.generatedHeader.columnDefinitions = this.columnDefinitions;
1050
+ privates.generatedHeader.gridTemplateColumns = this.gridTemplateColumns;
1051
+ privates.generatedHeader.rowType = this.generateHeader === GenerateHeaderOptions.sticky ? DataGridRowTypes.stickyHeader : DataGridRowTypes.header;
1052
+ if (this.firstChild !== null || privates.rowsPlaceholder !== null) {
1053
+ this.insertBefore(
1054
+ generatedHeaderElement,
1055
+ this.firstChild !== null ? this.firstChild : privates.rowsPlaceholder
1056
+ );
1057
+ }
1058
+ return;
1059
+ }
1060
+ };
1007
1061
  }
1008
1062
  get #selectedRows() {
1009
1063
  return this.rowElements.filter((row) => row.getAttribute("aria-selected") === "true");
@@ -1026,6 +1080,15 @@ class DataGrid extends DataGrid$1 {
1026
1080
  #handleClick;
1027
1081
  #handleCellSelection;
1028
1082
  #handleRowSelection;
1083
+ #changeHandler;
1084
+ connectedCallback() {
1085
+ super.connectedCallback();
1086
+ Observable.getNotifier(this).subscribe(this.#changeHandler, "columnDefinitions");
1087
+ }
1088
+ disconnectedCallback() {
1089
+ super.disconnectedCallback();
1090
+ Observable.getNotifier(this).unsubscribe(this.#changeHandler, "columnDefinitions");
1091
+ }
1029
1092
  #setSelectedState;
1030
1093
  #resetSelection;
1031
1094
  #initSelections;
@@ -1063,28 +1126,6 @@ __decorateClass$1([
1063
1126
  attr({ attribute: "aria-selected" })
1064
1127
  ], DataGridRow.prototype, "ariaSelected", 2);
1065
1128
 
1066
- const DataGridCellSortStates = {
1067
- none: "none",
1068
- ascending: "ascending",
1069
- descending: "descending",
1070
- other: "other"
1071
- };
1072
- const GenerateHeaderOptions = {
1073
- none: "none",
1074
- default: "default",
1075
- sticky: "sticky"
1076
- };
1077
- const DataGridRowTypes = {
1078
- default: "default",
1079
- header: "header",
1080
- stickyHeader: "sticky-header"
1081
- };
1082
- const DataGridCellRole = {
1083
- columnheader: "columnheader",
1084
- rowheader: "rowheader",
1085
- default: "gridcell"
1086
- };
1087
-
1088
1129
  function createRowItemTemplate(context) {
1089
1130
  const rowTag = context.tagFor(DataGridRow);
1090
1131
  return html`
@@ -1102,7 +1143,7 @@ function setHeaderRow(x) {
1102
1143
  if (x.columnDefinitions === null) {
1103
1144
  const headerRow = x.querySelector('[cell-type="columnheader"]')?.parentElement;
1104
1145
  if (headerRow) {
1105
- const rowType = x.generateHeader === GenerateHeaderOptions.sticky ? DataGridRowTypes.stickyHeader : x.generateHeader === GenerateHeaderOptions.default ? DataGridRowTypes.header : "hidden-header";
1146
+ const rowType = x.generateHeader === GenerateHeaderOptions.sticky ? DataGridRowTypes.stickyHeader : DataGridRowTypes.header;
1106
1147
  headerRow.setAttribute("row-type", rowType);
1107
1148
  }
1108
1149
  }
@@ -1173,6 +1214,31 @@ class DataGridCell extends DataGridCell$1 {
1173
1214
  super.handleFocusout(e);
1174
1215
  this.shadowRoot.querySelector(".base").classList.remove("active");
1175
1216
  }
1217
+ #getColumnDataKey() {
1218
+ return this.columnDefinition && this.columnDefinition.columnDataKey ? this.columnDefinition.columnDataKey : this.textContent.trim();
1219
+ }
1220
+ /**
1221
+ * @internal
1222
+ */
1223
+ _handleInteraction() {
1224
+ const isHeaderCell = this.cellType === "columnheader";
1225
+ const isSortable = isHeaderCell && this.ariaSort !== null;
1226
+ if (isSortable) {
1227
+ this.$emit("sort", {
1228
+ columnDataKey: this.#getColumnDataKey(),
1229
+ sortDirection: this.ariaSort
1230
+ });
1231
+ }
1232
+ const hasInternalFocusQueue = isHeaderCell ? this.columnDefinition?.headerCellInternalFocusQueue : this.columnDefinition?.cellInternalFocusQueue;
1233
+ if (!hasInternalFocusQueue) {
1234
+ this.$emit("cell-click", {
1235
+ cell: this,
1236
+ row: this.parentElement,
1237
+ isHeaderCell,
1238
+ columnDataKey: this.#getColumnDataKey()
1239
+ });
1240
+ }
1241
+ }
1176
1242
  }
1177
1243
  __decorateClass([
1178
1244
  attr({ attribute: "aria-selected", mode: "fromView" })
@@ -1243,23 +1309,9 @@ function renderSortIcons(c) {
1243
1309
  `)}
1244
1310
  `;
1245
1311
  }
1246
- function isSortable(x) {
1247
- return x.cellType === "columnheader" && x.ariaSort !== null;
1248
- }
1249
- function emitSortEvent(x) {
1250
- x.$emit(
1251
- "sort",
1252
- { columnDataKey: x.columnDefinition && x.columnDefinition.columnDataKey ? x.columnDefinition.columnDataKey : x.textContent.trim(), sortDirection: x.ariaSort }
1253
- );
1254
- }
1255
- function handleClick(x) {
1256
- if (isSortable(x)) {
1257
- emitSortEvent(x);
1258
- }
1259
- }
1260
1312
  function handleKeyDown(x, e) {
1261
- if (isSortable(x) && (e.key === keyEnter$1 || e.key === keySpace)) {
1262
- emitSortEvent(x);
1313
+ if (e.key === keyEnter$1 || e.key === keySpace) {
1314
+ x._handleInteraction();
1263
1315
  }
1264
1316
  return true;
1265
1317
  }
@@ -1269,7 +1321,7 @@ function DataGridCellTemplate(context) {
1269
1321
  <template
1270
1322
  tabindex="-1"
1271
1323
  role="${(x) => DataGridCellRole[x.cellType] ?? DataGridCellRole.default}"
1272
- @click="${handleClick}"
1324
+ @click="${(x) => x._handleInteraction()}"
1273
1325
  @keydown="${(x, c) => handleKeyDown(x, c.event)}"
1274
1326
  >
1275
1327
  <div class="base">
@@ -186,7 +186,7 @@ __decorate([
186
186
  observable
187
187
  ], Accordion$1.prototype, "accordionItems", void 0);
188
188
 
189
- const styles = "/**\n * Do not edit directly\n * Generated on Mon, 11 Dec 2023 11:36:24 GMT\n */\n.base {\n display: flex;\n box-sizing: border-box;\n flex-direction: column;\n}\n\n::slotted(:not(:only-of-type)) {\n border-bottom: 1px solid var(--vvd-color-neutral-200);\n}";
189
+ const styles = "/**\n * Do not edit directly\n * Generated on Mon, 08 Jan 2024 16:06:07 GMT\n */\n.base {\n display: flex;\n box-sizing: border-box;\n flex-direction: column;\n}\n\n::slotted(:not(:only-of-type)) {\n border-bottom: 1px solid var(--vvd-color-neutral-200);\n}";
190
190
 
191
191
  class Accordion extends Accordion$1 {
192
192
  constructor() {
@@ -7,13 +7,14 @@ import './index2.js';
7
7
  import { L as Localized } from './localized.js';
8
8
  import { a as applyMixins } from './apply-mixins.js';
9
9
  import { I as Icon } from './icon.js';
10
+ import { f as focusTemplateFactory } from './focus2.js';
10
11
  import { w as when } from './when.js';
11
12
  import { s as slotted } from './slotted.js';
12
13
  import { c as classNames } from './class-names.js';
13
14
 
14
15
  const dialogPolyfillStyles = "dialog {\n position: absolute;\n left: 0; right: 0;\n width: -moz-fit-content;\n width: -webkit-fit-content;\n width: fit-content;\n height: -moz-fit-content;\n height: -webkit-fit-content;\n height: fit-content;\n margin: auto;\n border: solid;\n padding: 1em;\n background: white;\n color: black;\n display: block;\n}\n\ndialog:not([open]) {\n display: none;\n}\n\ndialog + .backdrop {\n position: fixed;\n top: 0; right: 0; bottom: 0; left: 0;\n background: rgba(0,0,0,0.1);\n}\n\n._dialog_overlay {\n position: fixed;\n top: 0; right: 0; bottom: 0; left: 0;\n}\n\ndialog.fixed {\n position: fixed;\n top: 50%;\n transform: translate(0, -50%);\n}";
15
16
 
16
- const styles = "/**\n * Do not edit directly\n * Generated on Mon, 11 Dec 2023 11:36:24 GMT\n */\n.base {\n box-sizing: border-box;\n padding: 0;\n border: none;\n background-color: transparent;\n border-radius: 6px;\n color: var(--vvd-color-canvas-text);\n max-block-size: var(--dialog-max-block-size, calc(100vh - 64px));\n max-inline-size: var(--dialog-max-inline-size, var(--_dialog-default-max-inline-size));\n min-inline-size: var(--dialog-min-inline-size, 280px);\n}\n@media not all and (min-width: 600px) {\n .base {\n --_dialog-default-max-inline-size: 90vw;\n }\n}\n@media (min-width: 600px) {\n .base {\n --_dialog-default-max-inline-size: 560px;\n }\n}\n.base:not(.modal) {\n z-index: var(--dialog-z-index, 1);\n}\n.base.modal {\n position: fixed;\n box-shadow: 0 4px 20px rgba(0, 0, 0, 0.35);\n}\n.base.modal::backdrop {\n background-color: var(--vvd-color-canvas-text, currentColor);\n opacity: 0.5;\n}\n\n.main-wrapper {\n display: flex;\n box-sizing: border-box;\n flex-direction: column;\n gap: 24px;\n padding-block: 24px;\n}\n.main-wrapper > * {\n box-sizing: border-box;\n}\n\n.header {\n display: grid;\n align-items: flex-start;\n justify-content: space-between;\n inline-size: 100%;\n padding-inline: 24px;\n}\n.base:not(.icon-placement-side) .header {\n grid-template-columns: 1fr auto;\n grid-template-rows: auto auto auto;\n}\n.base:not(.icon-placement-side) .header .icon {\n font-size: calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density, 0), 2) - 8));\n grid-column: 1/2;\n grid-row: 1/2;\n line-height: 1;\n margin-block-end: calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density, 0), 2) - 16));\n}\n.base.icon-placement-side .header {\n grid-template-columns: auto 1fr auto;\n grid-template-rows: auto auto;\n}\n.base.icon-placement-side .header .icon {\n font-size: calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density, 0), 2) - 12));\n}\n.base.icon-placement-side .header ::slotted(*),\n.base.icon-placement-side .header .icon {\n grid-column: 1/2;\n grid-row: 1/-1;\n margin-inline-end: calc(calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density, 0), 2) - 8)) / 2);\n}\n.header.border {\n position: relative;\n}\n.header.border::after {\n position: absolute;\n bottom: -24px;\n left: 0;\n background-color: var(--vvd-color-neutral-200);\n block-size: 1px;\n content: \"\";\n inline-size: 100%;\n}\n.base.hide-body .header.border::after {\n content: none;\n}\n\n.body:not(.full-width) {\n padding-inline: 24px;\n}\n.hide-body .body {\n display: none;\n}\n\n.footer {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 24px;\n padding-inline: 24px;\n}\n.hide-footer .footer {\n display: none;\n}\n.footer .actions {\n display: flex;\n align-self: flex-end;\n gap: 8px;\n}\n\n.dismiss-button {\n flex-shrink: 0;\n grid-column: -2/-1;\n grid-row: 1/-1;\n margin-block-start: -8px;\n margin-inline-end: -8px;\n margin-inline-start: 4px;\n}\n\n.headline {\n font: var(--vvd-typography-heading-4);\n}\n\n.subtitle {\n font: var(--vvd-typography-base);\n}\n\nslot[name=main] {\n display: block;\n overflow: hidden auto;\n max-width: inherit;\n max-height: inherit;\n border-radius: inherit;\n}";
17
+ const styles = "/**\n * Do not edit directly\n * Generated on Mon, 08 Jan 2024 16:06:07 GMT\n */\n.base {\n box-sizing: border-box;\n padding: 0;\n border: none;\n background-color: transparent;\n border-radius: 6px;\n color: var(--vvd-color-canvas-text);\n max-block-size: var(--dialog-max-block-size, calc(100vh - 64px));\n max-inline-size: var(--dialog-max-inline-size, var(--_dialog-default-max-inline-size));\n min-inline-size: var(--dialog-min-inline-size, 280px);\n}\n@media not all and (min-width: 600px) {\n .base {\n --_dialog-default-max-inline-size: 90vw;\n }\n}\n@media (min-width: 600px) {\n .base {\n --_dialog-default-max-inline-size: 560px;\n }\n}\n.base:not(.modal) {\n z-index: var(--dialog-z-index, 1);\n}\n.base.modal {\n position: fixed;\n box-shadow: 0 4px 20px rgba(0, 0, 0, 0.35);\n}\n.base.modal::backdrop {\n background-color: var(--vvd-color-canvas-text, currentColor);\n opacity: 0.5;\n}\n.base:focus-visible {\n outline: none;\n}\n.base .focus-indicator {\n pointer-events: none;\n}\n.base:not(:focus-visible) .focus-indicator {\n display: none;\n}\n\n.main-wrapper {\n display: flex;\n box-sizing: border-box;\n flex-direction: column;\n gap: 24px;\n padding-block: 24px;\n}\n.main-wrapper > * {\n box-sizing: border-box;\n}\n\n.header {\n display: grid;\n align-items: flex-start;\n justify-content: space-between;\n inline-size: 100%;\n padding-inline: 24px;\n}\n.base:not(.icon-placement-side) .header {\n grid-template-columns: 1fr auto;\n grid-template-rows: auto auto auto;\n}\n.base:not(.icon-placement-side) .header .icon {\n font-size: calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density, 0), 2) - 8));\n grid-column: 1/2;\n grid-row: 1/2;\n line-height: 1;\n margin-block-end: calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density, 0), 2) - 16));\n}\n.base.icon-placement-side .header {\n grid-template-columns: auto 1fr auto;\n grid-template-rows: auto auto;\n}\n.base.icon-placement-side .header .icon {\n font-size: calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density, 0), 2) - 12));\n}\n.base.icon-placement-side .header ::slotted(*),\n.base.icon-placement-side .header .icon {\n grid-column: 1/2;\n grid-row: 1/-1;\n margin-inline-end: calc(calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density, 0), 2) - 8)) / 2);\n}\n.header.border {\n position: relative;\n}\n.header.border::after {\n position: absolute;\n bottom: -24px;\n left: 0;\n background-color: var(--vvd-color-neutral-200);\n block-size: 1px;\n content: \"\";\n inline-size: 100%;\n}\n.base.hide-body .header.border::after {\n content: none;\n}\n\n.body:not(.full-width) {\n padding-inline: 24px;\n}\n.hide-body .body {\n display: none;\n}\n\n.footer {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 24px;\n padding-inline: 24px;\n}\n.hide-footer .footer {\n display: none;\n}\n.footer .actions {\n display: flex;\n align-self: flex-end;\n gap: 8px;\n}\n\n.dismiss-button {\n flex-shrink: 0;\n grid-column: -2/-1;\n grid-row: 1/-1;\n margin-block-start: -8px;\n margin-inline-end: -8px;\n margin-inline-start: 4px;\n}\n\n.headline {\n font: var(--vvd-typography-heading-4);\n}\n\n.subtitle {\n font: var(--vvd-typography-base);\n}\n\nslot[name=main] {\n display: block;\n overflow: hidden auto;\n max-width: inherit;\n max-height: inherit;\n border-radius: inherit;\n}";
17
18
 
18
19
  var __defProp = Object.defineProperty;
19
20
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
@@ -41,9 +42,10 @@ class Dialog extends FoundationElement {
41
42
  this.fullWidthBody = false;
42
43
  this.ariaLabel = null;
43
44
  this.dismissButtonAriaLabel = null;
45
+ this.noLightDismiss = false;
44
46
  this.#modal = false;
45
47
  this.#handleScrimClick = (event) => {
46
- if (event.target !== this.#dialog) {
48
+ if (event.target !== this.#dialog || this.noLightDismiss) {
47
49
  return;
48
50
  }
49
51
  const rect = this.#dialog.getBoundingClientRect();
@@ -64,6 +66,9 @@ class Dialog extends FoundationElement {
64
66
  get returnValue() {
65
67
  return this.#dialog?.returnValue;
66
68
  }
69
+ /**
70
+ * @internal
71
+ */
67
72
  get modal() {
68
73
  return this.#modal;
69
74
  }
@@ -80,6 +85,9 @@ class Dialog extends FoundationElement {
80
85
  }
81
86
  return this.#dialogElement;
82
87
  }
88
+ /**
89
+ * @internal
90
+ */
83
91
  openChanged(oldValue, newValue) {
84
92
  if (oldValue === void 0) {
85
93
  return;
@@ -151,6 +159,9 @@ __decorateClass([
151
159
  __decorateClass([
152
160
  attr({ attribute: "dismiss-button-aria-label" })
153
161
  ], Dialog.prototype, "dismissButtonAriaLabel", 2);
162
+ __decorateClass([
163
+ attr({ attribute: "no-light-dismiss", mode: "boolean" })
164
+ ], Dialog.prototype, "noLightDismiss", 2);
154
165
  __decorateClass([
155
166
  observable
156
167
  ], Dialog.prototype, "bodySlottedContent", 2);
@@ -215,13 +226,16 @@ const DialogTemplate = (context) => {
215
226
  const elevationTag = context.tagFor(Elevation);
216
227
  const iconTag = context.tagFor(Icon);
217
228
  const buttonTag = context.tagFor(Button);
229
+ const focusTemplate = focusTemplateFactory(context);
218
230
  return html`
219
231
  <${elevationTag} dp="8">
220
232
  <dialog class="${getClasses}"
221
233
  @keydown="${(x, c) => handleEscapeKey(x, c.event)}"
234
+ @cancel="${(_, c) => c.event.preventDefault()}"
222
235
  returnValue="${(x) => x.returnValue}"
223
236
  aria-label="${(x) => x.ariaLabel}"
224
237
  >
238
+ ${() => focusTemplate}
225
239
  <slot name="main">
226
240
  <div class="main-wrapper">
227
241
  <div class="header ${(x) => x.subtitle ? "border" : ""}">
@@ -51,7 +51,7 @@ __decorate([
51
51
  attr
52
52
  ], Divider$1.prototype, "orientation", void 0);
53
53
 
54
- const styles = "/**\n * Do not edit directly\n * Generated on Mon, 11 Dec 2023 11:36:24 GMT\n */\n:host {\n display: block;\n}\n\n.base {\n display: block;\n background-color: var(--vvd-color-neutral-200);\n}\n.base:not(.vertical) {\n block-size: 1px;\n inline-size: 100%;\n}\n.base.vertical {\n block-size: 100%;\n inline-size: 1px;\n}";
54
+ const styles = "/**\n * Do not edit directly\n * Generated on Mon, 08 Jan 2024 16:06:07 GMT\n */\n:host {\n display: block;\n}\n\n.base {\n display: block;\n background-color: var(--vvd-color-neutral-200);\n}\n.base:not(.vertical) {\n block-size: 1px;\n inline-size: 100%;\n}\n.base.vertical {\n block-size: 100%;\n inline-size: 1px;\n}";
55
55
 
56
56
  class Divider extends Divider$1 {
57
57
  }
@@ -5,7 +5,7 @@ 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 = "/**\n * Do not edit directly\n * Generated on Mon, 11 Dec 2023 11:36:24 GMT\n */\n:host {\n display: block;\n}\n\n.base {\n display: flex;\n box-sizing: border-box;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n block-size: 100%;\n gap: 24px;\n}\n\n.icon-container {\n display: flex;\n align-items: center;\n justify-content: center;\n background-color: var(--vvd-color-neutral-100);\n block-size: 120px;\n border-radius: 50%;\n inline-size: 120px;\n}\n\n.content {\n display: flex;\n flex-direction: column;\n font: var(--vvd-typography-base);\n gap: 8px;\n text-align: center;\n}\n\nheader {\n font: var(--vvd-typography-base-bold);\n}\n\n.actions {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: center;\n gap: 8px;\n}\n.base.no-actions .actions {\n display: none;\n}";
8
+ const styles = "/**\n * Do not edit directly\n * Generated on Mon, 08 Jan 2024 16:06:07 GMT\n */\n:host {\n display: block;\n}\n\n.base {\n display: flex;\n box-sizing: border-box;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n block-size: 100%;\n gap: 24px;\n}\n\n.icon-container {\n display: flex;\n align-items: center;\n justify-content: center;\n background-color: var(--vvd-color-neutral-100);\n block-size: 120px;\n border-radius: 50%;\n inline-size: 120px;\n}\n\n.content {\n display: flex;\n flex-direction: column;\n font: var(--vvd-typography-base);\n gap: 8px;\n text-align: center;\n}\n\nheader {\n font: var(--vvd-typography-base-bold);\n}\n\n.actions {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: center;\n gap: 8px;\n}\n.base.no-actions .actions {\n display: none;\n}";
9
9
 
10
10
  var __defProp = Object.defineProperty;
11
11
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
@@ -8,7 +8,7 @@ import { f as focusTemplateFactory } from './focus2.js';
8
8
  import { r as ref } from './ref.js';
9
9
  import { c as classNames } from './class-names.js';
10
10
 
11
- const styles = "/**\n * Do not edit directly\n * Generated on Mon, 11 Dec 2023 11:36:24 GMT\n */\n.control {\n position: relative;\n display: inline-flex;\n box-sizing: border-box;\n align-items: center;\n border: 0 none;\n background: var(--_appearance-color-fill, var(--_elevation-fill));\n block-size: var(--_fab-block-size);\n border-radius: var(--_fab-border-radius);\n color: var(--_appearance-color-text, var(--vvd-color-canvas-text));\n column-gap: var(--fab-icon-gap);\n filter: var(--_elevation-shadow);\n font: var(--vvd-typography-base-bold);\n transition: background-color 0.15s linear, filter 0.15s linear;\n vertical-align: middle;\n /* Size */\n}\n.control.connotation-accent {\n /* @cssprop [--vvd-fab-accent-primary=var(--vvd-color-canvas-text)] */\n --_connotation-color-primary: var(--vvd-fab-accent-primary, var(--vvd-color-canvas-text));\n /* @cssprop [--vvd-fab-accent-primary-text=var(--vvd-color-canvas)] */\n --_connotation-color-primary-text: var(--vvd-fab-accent-primary-text, var(--vvd-color-canvas));\n /* @cssprop [--vvd-fab-accent-primary-increment=var(--vvd-color-neutral-800)] */\n --_connotation-color-primary-increment: var(--vvd-fab-accent-primary-increment, var(--vvd-color-neutral-800));\n /* @cssprop [--vvd-fab-accent-contrast=var(--vvd-color-neutral-800)] */\n --_connotation-color-contrast: var(--vvd-fab-accent-contrast, var(--vvd-color-neutral-800));\n /* @cssprop [--vvd-fab-accent-fierce=var(--vvd-color-neutral-700)] */\n --_connotation-color-fierce: var(--vvd-fab-accent-fierce, var(--vvd-color-neutral-700));\n /* @cssprop [--vvd-fab-accent-firm=var(--vvd-color-canvas-text)] */\n --_connotation-color-firm: var(--vvd-fab-accent-firm, var(--vvd-color-canvas-text));\n}\n.control.connotation-cta {\n /* @cssprop [--vvd-fab-cta-primary=var(--vvd-color-cta-500)] */\n --_connotation-color-primary: var(--vvd-fab-cta-primary, var(--vvd-color-cta-500));\n /* @cssprop [--vvd-fab-cta-primary-text=var(--vvd-color-canvas)] */\n --_connotation-color-primary-text: var(--vvd-fab-cta-primary-text, var(--vvd-color-canvas));\n /* @cssprop [--vvd-fab-cta-primary-increment=var(--vvd-color-cta-600)] */\n --_connotation-color-primary-increment: var(--vvd-fab-cta-primary-increment, var(--vvd-color-cta-600));\n /* @cssprop [--vvd-fab-cta-contrast=var(--vvd-color-cta-800)] */\n --_connotation-color-contrast: var(--vvd-fab-cta-contrast, var(--vvd-color-cta-800));\n /* @cssprop [--vvd-fab-cta-fierce=var(--vvd-color-cta-700)] */\n --_connotation-color-fierce: var(--vvd-fab-cta-fierce, var(--vvd-color-cta-700));\n /* @cssprop [--vvd-fab-cta-firm=var(--vvd-color-cta-600)] */\n --_connotation-color-firm: var(--vvd-fab-cta-firm, var(--vvd-color-cta-600));\n}\n.control {\n --_appearance-color-text: var(--_connotation-color-primary-text);\n --_appearance-color-fill: var(--_connotation-color-primary);\n --_appearance-color-outline: transparent;\n}\n.control:where(:hover, .hover):where(:not(:disabled, .disabled, .readonly)) {\n --_appearance-color-text: var(--_connotation-color-primary-text);\n --_appearance-color-fill: var(--_connotation-color-primary-increment);\n --_appearance-color-outline: transparent;\n}\n.control:where(:disabled, .disabled) {\n --_appearance-color-text: var(--vvd-color-neutral-300);\n --_appearance-color-fill: var(--vvd-color-neutral-100);\n --_appearance-color-outline: transparent;\n}\n.control:where(:active, .active):where(:not(:disabled, .disabled)) {\n --_appearance-color-text: var(--_connotation-color-primary-text);\n --_appearance-color-fill: var(--_connotation-color-fierce);\n --_appearance-color-outline: transparent;\n}\n@supports selector(:focus-visible) {\n .control:focus-visible {\n outline: none;\n }\n}\n@supports (user-select: none) {\n .control {\n user-select: none;\n }\n}\n.control.size-expanded {\n --_fab-border-radius: 30px;\n --_fab-block-size: calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density, 0), 2) + 16));\n}\n.control:not(.size-expanded) {\n --_fab-border-radius: 24px;\n --_fab-block-size: calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density, 0), 2)));\n}\n.control.icon-only {\n border-radius: 50%;\n padding-inline: 0;\n place-content: center;\n}\n@supports (aspect-ratio: 1) {\n .control.icon-only {\n aspect-ratio: 1;\n }\n}\n@supports not (aspect-ratio: 1) {\n .control.icon-only {\n inline-size: var(--_fab-block-size);\n }\n}\n.control:not(.icon-only) {\n --fab-icon-gap: 10px;\n padding-inline: 20px;\n}\n.control:disabled {\n --_elevation-fill: var(--vvd-color-surface-0dp);\n --_elevation-shadow: var(--vvd-shadow-surface-0dp);\n cursor: not-allowed;\n}\n.control:not(:disabled) {\n --_elevation-fill: var(--vvd-color-surface-4dp);\n --_elevation-shadow: var(--vvd-shadow-surface-4dp);\n cursor: pointer;\n}\n.control:not(:disabled):hover {\n --_elevation-fill: var(--vvd-color-surface-12dp);\n --_elevation-shadow: var(--vvd-shadow-surface-12dp);\n}\n.control:not(:disabled):active {\n --_elevation-fill: var(--vvd-color-surface-24dp);\n --_elevation-shadow: var(--vvd-shadow-surface-24dp);\n}\n\n/* Icon */\nslot[name=icon] {\n line-height: 1;\n}\n.icon-trailing slot[name=icon] {\n display: inline-block;\n order: 1;\n}\n.control.size-extended slot[name=icon] {\n font-size: calc(calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density, 0), 2) + 16)) / 2.3333);\n}\n.control:not(.size-extended) slot[name=icon] {\n font-size: calc(calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density, 0), 2))) / 2);\n}\n\n:not(:focus-visible) .focus-indicator {\n display: none;\n}\n.control:not(.connotation-accent, .connotation-cta) .focus-indicator {\n --focus-stroke-gap-color: transparent;\n}";
11
+ const styles = "/**\n * Do not edit directly\n * Generated on Mon, 08 Jan 2024 16:06:07 GMT\n */\n.control {\n position: relative;\n display: inline-flex;\n box-sizing: border-box;\n align-items: center;\n border: 0 none;\n background: var(--_appearance-color-fill, var(--_elevation-fill));\n block-size: var(--_fab-block-size);\n border-radius: var(--_fab-border-radius);\n color: var(--_appearance-color-text, var(--vvd-color-canvas-text));\n column-gap: var(--fab-icon-gap);\n filter: var(--_elevation-shadow);\n font: var(--vvd-typography-base-bold);\n transition: background-color 0.15s linear, filter 0.15s linear;\n vertical-align: middle;\n /* Size */\n}\n.control.connotation-accent {\n /* @cssprop [--vvd-fab-accent-primary=var(--vvd-color-canvas-text)] */\n --_connotation-color-primary: var(--vvd-fab-accent-primary, var(--vvd-color-canvas-text));\n /* @cssprop [--vvd-fab-accent-primary-text=var(--vvd-color-canvas)] */\n --_connotation-color-primary-text: var(--vvd-fab-accent-primary-text, var(--vvd-color-canvas));\n /* @cssprop [--vvd-fab-accent-primary-increment=var(--vvd-color-neutral-800)] */\n --_connotation-color-primary-increment: var(--vvd-fab-accent-primary-increment, var(--vvd-color-neutral-800));\n /* @cssprop [--vvd-fab-accent-contrast=var(--vvd-color-neutral-800)] */\n --_connotation-color-contrast: var(--vvd-fab-accent-contrast, var(--vvd-color-neutral-800));\n /* @cssprop [--vvd-fab-accent-fierce=var(--vvd-color-neutral-700)] */\n --_connotation-color-fierce: var(--vvd-fab-accent-fierce, var(--vvd-color-neutral-700));\n /* @cssprop [--vvd-fab-accent-firm=var(--vvd-color-canvas-text)] */\n --_connotation-color-firm: var(--vvd-fab-accent-firm, var(--vvd-color-canvas-text));\n}\n.control.connotation-cta {\n /* @cssprop [--vvd-fab-cta-primary=var(--vvd-color-cta-500)] */\n --_connotation-color-primary: var(--vvd-fab-cta-primary, var(--vvd-color-cta-500));\n /* @cssprop [--vvd-fab-cta-primary-text=var(--vvd-color-canvas)] */\n --_connotation-color-primary-text: var(--vvd-fab-cta-primary-text, var(--vvd-color-canvas));\n /* @cssprop [--vvd-fab-cta-primary-increment=var(--vvd-color-cta-600)] */\n --_connotation-color-primary-increment: var(--vvd-fab-cta-primary-increment, var(--vvd-color-cta-600));\n /* @cssprop [--vvd-fab-cta-contrast=var(--vvd-color-cta-800)] */\n --_connotation-color-contrast: var(--vvd-fab-cta-contrast, var(--vvd-color-cta-800));\n /* @cssprop [--vvd-fab-cta-fierce=var(--vvd-color-cta-700)] */\n --_connotation-color-fierce: var(--vvd-fab-cta-fierce, var(--vvd-color-cta-700));\n /* @cssprop [--vvd-fab-cta-firm=var(--vvd-color-cta-600)] */\n --_connotation-color-firm: var(--vvd-fab-cta-firm, var(--vvd-color-cta-600));\n}\n.control {\n --_appearance-color-text: var(--_connotation-color-primary-text);\n --_appearance-color-fill: var(--_connotation-color-primary);\n --_appearance-color-outline: transparent;\n}\n.control:where(:hover, .hover):where(:not(:disabled, .disabled, .readonly)) {\n --_appearance-color-text: var(--_connotation-color-primary-text);\n --_appearance-color-fill: var(--_connotation-color-primary-increment);\n --_appearance-color-outline: transparent;\n}\n.control:where(:disabled, .disabled) {\n --_appearance-color-text: var(--vvd-color-neutral-300);\n --_appearance-color-fill: var(--vvd-color-neutral-100);\n --_appearance-color-outline: transparent;\n}\n.control:where(:active, .active):where(:not(:disabled, .disabled)) {\n --_appearance-color-text: var(--_connotation-color-primary-text);\n --_appearance-color-fill: var(--_connotation-color-fierce);\n --_appearance-color-outline: transparent;\n}\n@supports selector(:focus-visible) {\n .control:focus-visible {\n outline: none;\n }\n}\n@supports (user-select: none) {\n .control {\n user-select: none;\n }\n}\n.control.size-expanded {\n --_fab-border-radius: 40px;\n --_fab-block-size: calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density, 0), 2) + 16));\n}\n.control:not(.size-expanded) {\n --_fab-border-radius: 24px;\n --_fab-block-size: calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density, 0), 2)));\n}\n.control.icon-only {\n border-radius: 50%;\n padding-inline: 0;\n place-content: center;\n}\n@supports (aspect-ratio: 1) {\n .control.icon-only {\n aspect-ratio: 1;\n }\n}\n@supports not (aspect-ratio: 1) {\n .control.icon-only {\n inline-size: var(--_fab-block-size);\n }\n}\n.control:not(.icon-only) {\n --fab-icon-gap: 10px;\n padding-inline: 20px;\n}\n.control:disabled {\n --_elevation-fill: var(--vvd-color-surface-0dp);\n --_elevation-shadow: var(--vvd-shadow-surface-0dp);\n cursor: not-allowed;\n}\n.control:not(:disabled) {\n --_elevation-fill: var(--vvd-color-surface-4dp);\n --_elevation-shadow: var(--vvd-shadow-surface-4dp);\n cursor: pointer;\n}\n.control:not(:disabled):hover {\n --_elevation-fill: var(--vvd-color-surface-12dp);\n --_elevation-shadow: var(--vvd-shadow-surface-12dp);\n}\n.control:not(:disabled):active {\n --_elevation-fill: var(--vvd-color-surface-24dp);\n --_elevation-shadow: var(--vvd-shadow-surface-24dp);\n}\n\n/* Icon */\nslot[name=icon] {\n line-height: 1;\n}\n.icon-trailing slot[name=icon] {\n display: inline-block;\n order: 1;\n}\n.control.size-extended slot[name=icon] {\n font-size: calc(calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density, 0), 2) + 16)) / 2.3333);\n}\n.control:not(.size-extended) slot[name=icon] {\n font-size: calc(calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density, 0), 2))) / 2);\n}\n\n:not(:focus-visible) .focus-indicator {\n display: none;\n}\n.control:not(.connotation-accent, .connotation-cta) .focus-indicator {\n --focus-stroke-gap-color: transparent;\n}";
12
12
 
13
13
  var __defProp = Object.defineProperty;
14
14
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
@@ -13,7 +13,7 @@ import { w as when } from './when.js';
13
13
  import { r as ref } from './ref.js';
14
14
  import { c as classNames } from './class-names.js';
15
15
 
16
- const styles = "/**\n * Do not edit directly\n * Generated on Mon, 11 Dec 2023 11:36:24 GMT\n */\n:host {\n display: block;\n max-inline-size: 400px;\n}\n\n.base {\n display: flex;\n flex-direction: column;\n}\n\n.control {\n position: relative;\n display: flex;\n box-sizing: border-box;\n flex-wrap: wrap;\n align-items: center;\n justify-content: center;\n padding: 16px;\n border: 1px dashed var(--vvd-color-neutral-400);\n background-color: var(--vvd-color-cta-50);\n border-radius: 6px;\n color: var(--vvd-color-neutral-600);\n cursor: pointer;\n font: var(--vvd-typography-base);\n gap: 8px;\n inline-size: 100%;\n min-block-size: 52px;\n outline: none;\n}\n@supports selector(:focus-visible) {\n .control:focus-visible {\n outline: none;\n }\n}\n.control:not(.size-expanded) {\n min-block-size: 52px;\n}\n.control.size-expanded {\n min-block-size: 120px;\n}\n\n.main {\n pointer-events: none;\n}\n\n.dz-preview {\n display: grid;\n box-sizing: border-box;\n padding: 6px 12px;\n border-radius: 6px;\n grid-template-columns: 1fr auto;\n grid-template-rows: auto auto;\n inline-size: 100%;\n}\n.dz-preview .dz-details {\n display: flex;\n min-width: 0;\n flex-direction: column;\n max-inline-size: 100%;\n}\n.dz-preview .dz-details .dz-filename {\n overflow: hidden;\n color: var(--vvd-color-canvas-text);\n font: var(--vvd-typography-base);\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.dz-preview .dz-details .dz-size {\n color: var(--vvd-color-neutral-600);\n font: var(--vvd-typography-base-condensed);\n}\n.dz-preview .dz-error-message {\n color: var(--vvd-color-alert-500);\n font: var(--vvd-typography-base-condensed);\n margin-block-start: 4px;\n}\n.dz-preview:not(.dz-error) .dz-error-message {\n display: none;\n}\n.dz-preview.dz-error {\n border: 1px solid var(--vvd-color-alert-500);\n}\n.dz-preview.dz-error .dz-details .dz-size,\n.dz-preview.dz-error .dz-progress {\n display: none;\n}\n.dz-preview .remove-btn {\n display: inline;\n align-self: center;\n grid-column: 2/-1;\n grid-row: 1/-1;\n}\n\n.message {\n margin-block-start: 4px;\n --_low-ink-color: var(--vvd-color-neutral-600);\n}\n\n.preview-list {\n display: flex;\n flex-direction: column;\n gap: 12px;\n margin-block-start: 12px;\n overflow-y: auto;\n}\n.preview-list:empty {\n display: none;\n}\n\n.control:not(:focus-visible) .focus-indicator {\n display: none;\n}";
16
+ const styles = "/**\n * Do not edit directly\n * Generated on Mon, 08 Jan 2024 16:06:07 GMT\n */\n:host {\n display: block;\n max-inline-size: 400px;\n}\n\n.base {\n display: flex;\n flex-direction: column;\n}\n\n.control {\n position: relative;\n display: flex;\n box-sizing: border-box;\n flex-wrap: wrap;\n align-items: center;\n justify-content: center;\n padding: 16px;\n border: 1px dashed var(--vvd-color-neutral-400);\n background-color: var(--vvd-color-cta-50);\n border-radius: 6px;\n color: var(--vvd-color-neutral-600);\n cursor: pointer;\n font: var(--vvd-typography-base);\n gap: 8px;\n inline-size: 100%;\n min-block-size: 52px;\n outline: none;\n}\n@supports selector(:focus-visible) {\n .control:focus-visible {\n outline: none;\n }\n}\n.control:not(.size-expanded) {\n min-block-size: 52px;\n}\n.control.size-expanded {\n min-block-size: 120px;\n}\n\n.main {\n pointer-events: none;\n}\n\n.dz-preview {\n display: grid;\n box-sizing: border-box;\n padding: 6px 12px;\n border-radius: 6px;\n grid-template-columns: 1fr auto;\n grid-template-rows: auto auto;\n inline-size: 100%;\n}\n.dz-preview .dz-details {\n display: flex;\n min-width: 0;\n flex-direction: column;\n max-inline-size: 100%;\n}\n.dz-preview .dz-details .dz-filename {\n overflow: hidden;\n color: var(--vvd-color-canvas-text);\n font: var(--vvd-typography-base);\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.dz-preview .dz-details .dz-size {\n color: var(--vvd-color-neutral-600);\n font: var(--vvd-typography-base-condensed);\n}\n.dz-preview .dz-error-message {\n color: var(--vvd-color-alert-500);\n font: var(--vvd-typography-base-condensed);\n margin-block-start: 4px;\n}\n.dz-preview:not(.dz-error) .dz-error-message {\n display: none;\n}\n.dz-preview.dz-error {\n border: 1px solid var(--vvd-color-alert-500);\n}\n.dz-preview.dz-error .dz-details .dz-size,\n.dz-preview.dz-error .dz-progress {\n display: none;\n}\n.dz-preview .remove-btn {\n display: inline;\n align-self: center;\n grid-column: 2/-1;\n grid-row: 1/-1;\n}\n\n.message {\n margin-block-start: 4px;\n --_low-ink-color: var(--vvd-color-neutral-600);\n}\n\n.preview-list {\n display: flex;\n flex-direction: column;\n gap: 12px;\n margin-block-start: 12px;\n overflow-y: auto;\n}\n.preview-list:empty {\n display: none;\n}\n\n.control:not(:focus-visible) .focus-indicator {\n display: none;\n}";
17
17
 
18
18
  var objectExtend = extend;
19
19
 
@@ -2,7 +2,7 @@ import { a as attr, F as FoundationElement, h as html, r as registerFactory } fr
2
2
  import { E as Elevation, e as elevationRegistries } from './definition59.js';
3
3
  import { c as classNames } from './class-names.js';
4
4
 
5
- const styles = "/**\n * Do not edit directly\n * Generated on Mon, 11 Dec 2023 11:36:24 GMT\n */\n.base {\n z-index: 1;\n block-size: calc(calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density, 0), 2))) + calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density, 0), 2) - 16)));\n font: var(--vvd-typography-heading-4);\n inline-size: 100%;\n}\n.base .header-content {\n display: inline-flex;\n align-items: center;\n column-gap: 4px;\n}\n\n.container {\n display: flex;\n box-sizing: border-box;\n justify-content: space-between;\n background-color: var(--header-bg-color, var(--vvd-color-canvas));\n block-size: inherit;\n color: var(--vvd-color-canvas-text);\n column-gap: 12px;\n padding-block: 8px;\n padding-inline: 16px;\n}\n.container[part~=vvd-theme-alternate] {\n color-scheme: var(--vvd-color-scheme);\n}\n\n.app-content {\n --vvd-header-block-size: calc(calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density, 0), 2))) + calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density, 0), 2) - 16)));\n}";
5
+ const styles = "/**\n * Do not edit directly\n * Generated on Mon, 08 Jan 2024 16:06:07 GMT\n */\n.base {\n z-index: 1;\n block-size: calc(calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density, 0), 2))) + calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density, 0), 2) - 16)));\n font: var(--vvd-typography-heading-4);\n inline-size: 100%;\n}\n.base .header-content {\n display: inline-flex;\n align-items: center;\n column-gap: 4px;\n}\n\n.container {\n display: flex;\n box-sizing: border-box;\n justify-content: space-between;\n background-color: var(--header-bg-color, var(--vvd-color-canvas));\n block-size: inherit;\n color: var(--vvd-color-canvas-text);\n column-gap: 12px;\n padding-block: 8px;\n padding-inline: 16px;\n}\n.container[part~=vvd-theme-alternate] {\n color-scheme: var(--vvd-color-scheme);\n}\n\n.app-content {\n --vvd-header-block-size: calc(calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density, 0), 2))) + calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density, 0), 2) - 16)));\n}";
6
6
 
7
7
  var __defProp = Object.defineProperty;
8
8
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
@@ -7,6 +7,7 @@ import { S as StartEnd } from './start-end.js';
7
7
  import { D as Direction, g as getDirection } from './direction.js';
8
8
  import { i as keyArrowLeft, h as keyArrowRight, a as keySpace, k as keyEnter, g as keyHome, d as keyEnd, e as keyArrowUp, f as keyArrowDown } from './key-codes.js';
9
9
  import { I as Icon } from './icon.js';
10
+ import { a as anchored } from './anchored.js';
10
11
  import { i as isHTMLElement } from './dom.js';
11
12
  import { f as focusTemplateFactory } from './focus2.js';
12
13
  import { s as slotted, e as elements } from './slotted.js';
@@ -569,7 +570,7 @@ __decorate([
569
570
  observable
570
571
  ], Menu$1.prototype, "items", void 0);
571
572
 
572
- const styles = "/**\n * Do not edit directly\n * Generated on Mon, 11 Dec 2023 11:36:24 GMT\n */\n@supports selector(:focus-visible) {\n :host(:focus-visible) {\n outline: none;\n }\n}\n:host([disabled]) {\n cursor: not-allowed;\n}\n\n.base {\n position: relative;\n display: flex;\n box-sizing: border-box;\n align-items: center;\n background-color: var(--_appearance-color-fill);\n box-shadow: inset 0 0 0 1px var(--_appearance-color-outline);\n gap: 12px;\n inline-size: 100%;\n padding-block: 2px;\n padding-inline: 16px;\n}\n.base {\n --_appearance-color-text: var(--_connotation-color-primary);\n --_appearance-color-fill: transparent;\n --_appearance-color-outline: transparent;\n}\n.base:where(:hover, .hover):where(:not(:disabled, .disabled, .readonly)) {\n --_appearance-color-text: var(--_connotation-color-primary);\n --_appearance-color-fill: var(--_connotation-color-faint);\n --_appearance-color-outline: transparent;\n}\n.base:where(:disabled, .disabled) {\n --_appearance-color-text: var(--vvd-color-neutral-300);\n --_appearance-color-fill: transparent;\n --_appearance-color-outline: transparent;\n}\n.base:where(:active, .active):where(:not(:disabled, .disabled)) {\n --_appearance-color-text: var(--_connotation-color-primary);\n --_appearance-color-fill: var(--_connotation-color-soft);\n --_appearance-color-outline: transparent;\n}\n.base:where(.selected, [aria-current]):where(:not(:disabled, .disabled)) {\n --_appearance-color-text: var(--_connotation-color-primary);\n --_appearance-color-fill: var(--_connotation-color-dim);\n --_appearance-color-outline: transparent;\n}\n.base:where(.selected, [aria-current]):where(:hover, .hover):where(:not(:disabled, .disabled, .readonly)) {\n --_appearance-color-text: var(--_connotation-color-primary);\n --_appearance-color-fill: var(--_connotation-color-pale);\n --_appearance-color-outline: transparent;\n}\n.base {\n /* @cssprop [--vvd-menu-item-accent-primary=var(--vvd-color-canvas-text)] */\n --_connotation-color-primary: var(--vvd-menu-item-accent-primary, var(--vvd-color-canvas-text));\n /* @cssprop [--vvd-menu-item-accent-primary-text=var(--vvd-color-canvas)] */\n --_connotation-color-primary-text: var(--vvd-menu-item-accent-primary-text, var(--vvd-color-canvas));\n /* @cssprop [--vvd-menu-item-accent-primary-increment=var(--vvd-color-neutral-800)] */\n --_connotation-color-primary-increment: var(--vvd-menu-item-accent-primary-increment, var(--vvd-color-neutral-800));\n /* @cssprop [--vvd-menu-item-accent-faint=var(--vvd-color-neutral-50)] */\n --_connotation-color-faint: var(--vvd-menu-item-accent-faint, var(--vvd-color-neutral-50));\n /* @cssprop [--vvd-menu-item-accent-soft=var(--vvd-color-neutral-100)] */\n --_connotation-color-soft: var(--vvd-menu-item-accent-soft, var(--vvd-color-neutral-100));\n /* @cssprop [--vvd-menu-item-accent-pale=var(--vvd-color-neutral-300)] */\n --_connotation-color-pale: var(--vvd-menu-item-accent-pale, var(--vvd-color-neutral-300));\n /* @cssprop [--vvd-menu-item-accent-dim=var(--vvd-color-neutral-200)] */\n --_connotation-color-dim: var(--vvd-menu-item-accent-dim, var(--vvd-color-neutral-200));\n}\n.base:not(.two-lines) {\n min-block-size: calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density, 0), 2)));\n}\n.base.two-lines {\n min-block-size: calc(calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density, 0), 2))) + calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density, 0), 2) - 16)));\n}\n@supports (user-select: none) {\n .base {\n user-select: none;\n }\n}\n.base:not(.disabled) {\n cursor: pointer;\n}\n.base.disabled {\n pointer-events: none;\n}\n\n.focus-indicator {\n border-radius: 6px;\n}\n:host(:not(:focus-visible)) .focus-indicator {\n display: none;\n}\n\n.icon {\n flex-shrink: 0;\n font-size: calc(calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density, 0), 2))) / 2);\n line-height: 1;\n}\n\n.action,\n.decorative {\n display: flex;\n place-content: center;\n}\n\n.action {\n color: var(--_appearance-color-text);\n}\n.base.trailing .action {\n order: 1;\n margin-inline-start: auto;\n}\n.base.has-meta .action {\n order: 1;\n margin-inline-start: auto;\n}\n\n.base:not(.disabled) .decorative {\n color: var(--vvd-color-neutral-600);\n}\n.base.disabled .decorative {\n color: var(--vvd-color-neutral-200);\n}\n.base.has-meta .decorative {\n order: 1;\n margin-inline-start: auto;\n}\n\n.chevron {\n margin-inline-start: auto;\n}\n\n.text {\n display: flex;\n overflow: hidden;\n flex-direction: column;\n}\n\n.text-primary,\n.text-secondary {\n /* stylelint-disable value-no-vendor-prefix */\n display: -webkit-box;\n /* stylelint-enable value-no-vendor-prefix */\n overflow: hidden;\n -webkit-box-orient: vertical;\n color: var(--_appearance-color-text);\n font: var(--vvd-typography-base);\n}\n\n.text-primary {\n -webkit-line-clamp: var(--text-primary-line-clamp, 1);\n}\n.base.two-lines .text-primary {\n font: var(--vvd-typography-base-bold);\n}\n\n.text-secondary {\n -webkit-line-clamp: var(--text-secondary-line-clamp, 1);\n}\n.base.two-lines .text-secondary {\n color: var(--vvd-color-neutral-600);\n}";
573
+ const styles = "/**\n * Do not edit directly\n * Generated on Mon, 08 Jan 2024 16:06:07 GMT\n */\n@supports selector(:focus-visible) {\n :host(:focus-visible) {\n outline: none;\n }\n}\n:host([disabled]) {\n pointer-events: none;\n}\n\n.base {\n position: relative;\n display: flex;\n box-sizing: border-box;\n align-items: center;\n background-color: var(--_appearance-color-fill);\n box-shadow: inset 0 0 0 1px var(--_appearance-color-outline);\n gap: 12px;\n inline-size: 100%;\n padding-block: 2px;\n padding-inline: 16px;\n}\n.base {\n --_appearance-color-text: var(--_connotation-color-primary);\n --_appearance-color-fill: transparent;\n --_appearance-color-outline: transparent;\n}\n.base:where(:hover, .hover):where(:not(:disabled, .disabled, .readonly)) {\n --_appearance-color-text: var(--_connotation-color-primary);\n --_appearance-color-fill: var(--_connotation-color-faint);\n --_appearance-color-outline: transparent;\n}\n.base:where(:disabled, .disabled) {\n --_appearance-color-text: var(--vvd-color-neutral-300);\n --_appearance-color-fill: transparent;\n --_appearance-color-outline: transparent;\n}\n.base:where(:active, .active):where(:not(:disabled, .disabled)) {\n --_appearance-color-text: var(--_connotation-color-primary);\n --_appearance-color-fill: var(--_connotation-color-soft);\n --_appearance-color-outline: transparent;\n}\n.base:where(.selected, [aria-current]):where(:not(:disabled, .disabled)) {\n --_appearance-color-text: var(--_connotation-color-primary);\n --_appearance-color-fill: var(--_connotation-color-dim);\n --_appearance-color-outline: transparent;\n}\n.base:where(.selected, [aria-current]):where(:hover, .hover):where(:not(:disabled, .disabled, .readonly)) {\n --_appearance-color-text: var(--_connotation-color-primary);\n --_appearance-color-fill: var(--_connotation-color-pale);\n --_appearance-color-outline: transparent;\n}\n.base {\n /* @cssprop [--vvd-menu-item-accent-primary=var(--vvd-color-canvas-text)] */\n --_connotation-color-primary: var(--vvd-menu-item-accent-primary, var(--vvd-color-canvas-text));\n /* @cssprop [--vvd-menu-item-accent-primary-text=var(--vvd-color-canvas)] */\n --_connotation-color-primary-text: var(--vvd-menu-item-accent-primary-text, var(--vvd-color-canvas));\n /* @cssprop [--vvd-menu-item-accent-primary-increment=var(--vvd-color-neutral-800)] */\n --_connotation-color-primary-increment: var(--vvd-menu-item-accent-primary-increment, var(--vvd-color-neutral-800));\n /* @cssprop [--vvd-menu-item-accent-faint=var(--vvd-color-neutral-50)] */\n --_connotation-color-faint: var(--vvd-menu-item-accent-faint, var(--vvd-color-neutral-50));\n /* @cssprop [--vvd-menu-item-accent-soft=var(--vvd-color-neutral-100)] */\n --_connotation-color-soft: var(--vvd-menu-item-accent-soft, var(--vvd-color-neutral-100));\n /* @cssprop [--vvd-menu-item-accent-pale=var(--vvd-color-neutral-300)] */\n --_connotation-color-pale: var(--vvd-menu-item-accent-pale, var(--vvd-color-neutral-300));\n /* @cssprop [--vvd-menu-item-accent-dim=var(--vvd-color-neutral-200)] */\n --_connotation-color-dim: var(--vvd-menu-item-accent-dim, var(--vvd-color-neutral-200));\n}\n.base:not(.two-lines) {\n min-block-size: calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density, 0), 2)));\n}\n.base.two-lines {\n min-block-size: calc(calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density, 0), 2))) + calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density, 0), 2) - 16)));\n}\n@supports (user-select: none) {\n .base {\n user-select: none;\n }\n}\n.base:not(.disabled) {\n cursor: pointer;\n}\n\n.focus-indicator {\n border-radius: 6px;\n}\n:host(:not(:focus-visible)) .focus-indicator {\n display: none;\n}\n\n.icon {\n flex-shrink: 0;\n font-size: calc(calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density, 0), 2))) / 2);\n line-height: 1;\n}\n\n.action,\n.decorative {\n display: flex;\n place-content: center;\n}\n\n.action {\n color: var(--_appearance-color-text);\n}\n.base.trailing .action {\n order: 1;\n margin-inline-start: auto;\n}\n.base.has-meta .action {\n order: 1;\n margin-inline-start: auto;\n}\n\n.base:not(.disabled) .decorative {\n color: var(--vvd-color-neutral-600);\n}\n.base.disabled .decorative {\n color: var(--vvd-color-neutral-200);\n}\n.base.has-meta .decorative {\n order: 1;\n margin-inline-start: auto;\n}\n\n.chevron {\n margin-inline-start: auto;\n}\n\n.text {\n display: flex;\n overflow: hidden;\n flex-direction: column;\n}\n\n.text-primary,\n.text-secondary {\n /* stylelint-disable value-no-vendor-prefix */\n display: -webkit-box;\n /* stylelint-enable value-no-vendor-prefix */\n overflow: hidden;\n -webkit-box-orient: vertical;\n color: var(--_appearance-color-text);\n font: var(--vvd-typography-base);\n}\n\n.text-primary {\n -webkit-line-clamp: var(--text-primary-line-clamp, 1);\n}\n.base.two-lines .text-primary {\n font: var(--vvd-typography-base-bold);\n}\n\n.text-secondary {\n -webkit-line-clamp: var(--text-secondary-line-clamp, 1);\n}\n.base.two-lines .text-secondary {\n color: var(--vvd-color-neutral-600);\n}";
573
574
 
574
575
  var __defProp$1 = Object.defineProperty;
575
576
  var __getOwnPropDesc$1 = Object.getOwnPropertyDescriptor;
@@ -657,30 +658,23 @@ var __decorateClass = (decorators, target, key, kind) => {
657
658
  __defProp(target, key, result);
658
659
  return result;
659
660
  };
660
- class Menu extends Menu$1 {
661
+ let Menu = class extends Menu$1 {
661
662
  constructor() {
662
663
  super();
663
- this.#anchorEl = null;
664
- this.#observeMissingAnchor = (anchorId) => {
665
- this.#observer = new MutationObserver(() => {
666
- const anchor = document.getElementById(anchorId);
667
- if (anchor) {
668
- this.#anchorEl = anchor;
669
- this.#setupAnchor(this.#anchorEl);
670
- this.#observer.disconnect();
671
- this.#observer = void 0;
672
- }
673
- });
674
- this.#observer.observe(document.body, { childList: true, subtree: true });
675
- };
664
+ this.ariaLabel = null;
676
665
  this.placement = "bottom";
677
- this.anchor = "";
678
666
  this.autoDismiss = false;
679
667
  this.open = false;
680
668
  this.#openIfClosed = () => {
681
669
  if (!this.open)
682
670
  DOM.queueUpdate(() => this.open = true);
683
671
  };
672
+ this.#updateClickOutsideListener = () => {
673
+ document.removeEventListener("click", this.#closeOnClickOutside);
674
+ if (this.autoDismiss && this.isConnected) {
675
+ document.addEventListener("click", this.#closeOnClickOutside);
676
+ }
677
+ };
684
678
  this.#closeOnClickOutside = (e) => {
685
679
  if (!this.contains(e.target))
686
680
  this.open = false;
@@ -695,59 +689,57 @@ class Menu extends Menu$1 {
695
689
  handleFocusOut(e);
696
690
  };
697
691
  }
698
- #observer;
699
- #anchorEl;
700
- #observeMissingAnchor;
701
- anchorChanged(_, newValue) {
702
- if (this.#anchorEl)
703
- this.#cleanupAnchor(this.#anchorEl);
704
- this.#observer?.disconnect();
705
- this.#anchorEl = newValue instanceof HTMLElement ? newValue : document.getElementById(newValue);
706
- if (this.#anchorEl) {
707
- this.#setupAnchor(this.#anchorEl);
708
- } else {
709
- this.#observeMissingAnchor(newValue);
710
- }
711
- }
712
- autoDismissChanged(oldValue, newValue) {
692
+ autoDismissChanged(oldValue) {
713
693
  if (oldValue === void 0)
714
694
  return;
715
- if (newValue) {
716
- document.addEventListener("click", this.#closeOnClickOutside);
717
- } else {
718
- document.removeEventListener("click", this.#closeOnClickOutside);
719
- }
695
+ this.#updateClickOutsideListener();
720
696
  }
721
697
  openChanged(_, newValue) {
722
698
  newValue ? this.$emit("open", void 0, { bubbles: false }) : this.$emit("close", void 0, { bubbles: false });
723
- if (this.#anchorEl) {
724
- this.#anchorEl.ariaExpanded = this.open.toString();
699
+ if (this._anchorEl) {
700
+ this.#updateAnchor(this._anchorEl);
725
701
  }
726
702
  }
703
+ connectedCallback() {
704
+ super.connectedCallback();
705
+ this.#updateClickOutsideListener();
706
+ }
727
707
  disconnectedCallback() {
728
708
  super.disconnectedCallback();
729
- if (this.#anchorEl)
730
- this.#cleanupAnchor(this.#anchorEl);
731
- this.#observer?.disconnect();
732
- document.removeEventListener("click", this.#closeOnClickOutside);
709
+ this.#updateClickOutsideListener();
710
+ }
711
+ /**
712
+ * @internal
713
+ */
714
+ _anchorElChanged(oldValue, newValue) {
715
+ if (oldValue)
716
+ this.#cleanupAnchor(oldValue);
717
+ if (newValue)
718
+ this.#setupAnchor(newValue);
733
719
  }
734
720
  #setupAnchor(a) {
735
721
  a.addEventListener("click", this.#openIfClosed, true);
736
722
  a.setAttribute("aria-haspopup", "menu");
723
+ this.#updateAnchor(a);
724
+ }
725
+ #updateAnchor(a) {
726
+ a.setAttribute("aria-expanded", this.open.toString());
737
727
  }
738
728
  #cleanupAnchor(a) {
739
729
  a.removeEventListener("click", this.#openIfClosed, true);
740
730
  a.removeAttribute("aria-hasPopup");
731
+ a.removeAttribute("aria-expanded");
741
732
  }
742
733
  #openIfClosed;
734
+ #updateClickOutsideListener;
743
735
  #closeOnClickOutside;
744
- }
736
+ };
745
737
  __decorateClass([
746
- attr({ mode: "fromView" })
747
- ], Menu.prototype, "placement", 2);
738
+ attr({ attribute: "aria-label" })
739
+ ], Menu.prototype, "ariaLabel", 2);
748
740
  __decorateClass([
749
741
  attr({ mode: "fromView" })
750
- ], Menu.prototype, "anchor", 2);
742
+ ], Menu.prototype, "placement", 2);
751
743
  __decorateClass([
752
744
  attr({ mode: "boolean", attribute: "auto-dismiss" })
753
745
  ], Menu.prototype, "autoDismiss", 2);
@@ -760,6 +752,9 @@ __decorateClass([
760
752
  __decorateClass([
761
753
  observable
762
754
  ], Menu.prototype, "actionItemsSlottedContent", 2);
755
+ Menu = __decorateClass([
756
+ anchored
757
+ ], Menu);
763
758
 
764
759
  const getIndicatorIcon = (x) => {
765
760
  if (x.checkedAppearance === CheckAppearance.TickOnly) {
@@ -845,4 +840,4 @@ const menuItemDefinition = MenuItem.compose({
845
840
  const menuItemRegistries = [menuItemDefinition(), ...iconRegistries, ...focusRegistries];
846
841
  const registerMenuItem = registerFactory(menuItemRegistries);
847
842
 
848
- export { Menu as M, menuItemRegistries as a, menuItemDefinition as m, registerMenuItem as r };
843
+ export { MenuItemRole as M, menuItemRegistries as a, Menu as b, menuItemDefinition as m, registerMenuItem as r };