@vonage/vivid 3.8.0 → 3.10.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 (124) hide show
  1. package/alert/index.js +28 -0
  2. package/avatar/index.js +1 -1
  3. package/badge/index.js +1 -1
  4. package/banner/index.js +3 -3
  5. package/breadcrumb/index.js +1 -1
  6. package/breadcrumb-item/index.js +1 -1
  7. package/button/index.js +2 -2
  8. package/calendar/index.js +1 -1
  9. package/calendar-event/index.js +1 -1
  10. package/card/index.js +2 -2
  11. package/checkbox/index.js +1 -1
  12. package/combobox/index.js +6 -6
  13. package/custom-elements.json +269 -27
  14. package/data-grid/index.js +1 -1
  15. package/dialog/index.js +4 -4
  16. package/divider/index.js +1 -1
  17. package/elevation/index.js +1 -1
  18. package/fab/index.js +1 -1
  19. package/header/index.js +2 -2
  20. package/index.js +51 -50
  21. package/layout/index.js +1 -1
  22. package/lib/alert/alert.d.ts +24 -0
  23. package/lib/alert/alert.template.d.ts +4 -0
  24. package/lib/alert/definition.d.ts +2 -0
  25. package/lib/alert/index.d.ts +1 -0
  26. package/lib/components.d.ts +1 -0
  27. package/lib/text-area/text-area.d.ts +2 -1
  28. package/lib/text-field/text-field.d.ts +2 -1
  29. package/lib/tooltip/tooltip.d.ts +1 -0
  30. package/listbox/index.js +2 -2
  31. package/menu/index.js +6 -6
  32. package/menu-item/index.js +1 -1
  33. package/nav/index.js +1 -1
  34. package/nav-disclosure/index.js +1 -1
  35. package/nav-item/index.js +1 -1
  36. package/note/index.js +1 -1
  37. package/number-field/index.js +4 -4
  38. package/option/index.js +1 -1
  39. package/package.json +1 -1
  40. package/popup/index.js +4 -4
  41. package/progress/index.js +1 -1
  42. package/progress-ring/index.js +1 -1
  43. package/radio/index.js +1 -1
  44. package/radio-group/index.js +1 -1
  45. package/select/index.js +6 -6
  46. package/shared/definition.js +1 -1
  47. package/shared/definition10.js +46 -63
  48. package/shared/definition11.js +38 -92
  49. package/shared/definition12.js +96 -31
  50. package/shared/definition13.js +84 -757
  51. package/shared/definition14.js +32 -95
  52. package/shared/definition15.js +758 -100
  53. package/shared/definition16.js +103 -24
  54. package/shared/definition17.js +96 -154
  55. package/shared/definition18.js +108 -663
  56. package/shared/definition19.js +667 -1532
  57. package/shared/definition2.js +1 -1
  58. package/shared/definition20.js +1544 -223
  59. package/shared/definition21.js +183 -964
  60. package/shared/definition22.js +1037 -222
  61. package/shared/definition23.js +226 -67
  62. package/shared/definition24.js +68 -77
  63. package/shared/definition25.js +76 -47
  64. package/shared/definition26.js +46 -32
  65. package/shared/definition27.js +35 -49
  66. package/shared/definition28.js +48 -344
  67. package/shared/definition29.js +273 -282
  68. package/shared/definition30.js +356 -14
  69. package/shared/definition31.js +13 -67
  70. package/shared/definition32.js +65 -21
  71. package/shared/definition33.js +21 -39
  72. package/shared/definition34.js +31 -432
  73. package/shared/definition35.js +432 -76
  74. package/shared/definition36.js +82 -33
  75. package/shared/definition37.js +31 -422
  76. package/shared/definition38.js +357 -568
  77. package/shared/definition39.js +628 -75
  78. package/shared/definition4.js +1 -1
  79. package/shared/definition40.js +70 -573
  80. package/shared/definition41.js +538 -81
  81. package/shared/definition42.js +127 -47
  82. package/shared/definition43.js +51 -16
  83. package/shared/definition44.js +17 -425
  84. package/shared/definition45.js +421 -103
  85. package/shared/definition46.js +114 -19
  86. package/shared/definition47.js +19 -269
  87. package/shared/definition48.js +245 -87
  88. package/shared/definition49.js +110 -68
  89. package/shared/definition5.js +1 -1
  90. package/shared/definition50.js +80 -67
  91. package/shared/definition51.js +69 -295
  92. package/shared/definition52.js +305 -0
  93. package/shared/definition6.js +142 -45
  94. package/shared/definition7.js +95 -23
  95. package/shared/definition8.js +22 -103
  96. package/shared/definition9.js +62 -102
  97. package/shared/es.object.assign.js +1 -1
  98. package/shared/form-associated.js +1 -1
  99. package/shared/form-elements.js +46 -7
  100. package/shared/index.js +1 -1
  101. package/shared/listbox.js +2 -2
  102. package/shared/patterns/form-elements/form-elements.d.ts +16 -2
  103. package/shared/repeat.js +1 -1
  104. package/shared/text-field.js +1 -1
  105. package/shared/text-field2.js +1 -1
  106. package/side-drawer/index.js +1 -1
  107. package/slider/index.js +1 -1
  108. package/styles/core/all.css +1 -1
  109. package/styles/core/theme.css +1 -1
  110. package/styles/core/typography.css +1 -1
  111. package/styles/tokens/theme-dark.css +4 -4
  112. package/styles/tokens/theme-light.css +4 -4
  113. package/switch/index.js +1 -1
  114. package/tab/index.js +1 -1
  115. package/tab-panel/index.js +1 -1
  116. package/tabs/index.js +3 -3
  117. package/tag/index.js +1 -1
  118. package/tag-group/index.js +1 -1
  119. package/text-area/index.js +1 -1
  120. package/text-field/index.js +1 -1
  121. package/tooltip/index.js +5 -5
  122. package/tree-item/index.js +1 -1
  123. package/tree-view/index.js +1 -1
  124. package/vivid.api.json +91 -0
@@ -1,45 +1,117 @@
1
- import { F as FoundationElement, _ as __decorate, a as attr, b as __metadata, h as html, r as registerFactory } from './index.js';
1
+ import { _ as __decorate, a as attr, b as __metadata, h as html, r as registerFactory } from './index.js';
2
2
  import { i as iconRegistries } from './definition3.js';
3
+ import { f as focusRegistries } from './definition4.js';
4
+ import { P as ProgressRing, p as progressRingRegistries } from './definition9.js';
3
5
  import { A as AffixIconWithTrailing, a as affixIconTemplateFactory } from './affix.js';
6
+ import { B as Button$1 } from './button.js';
4
7
  import { a as applyMixins } from './apply-mixins.js';
8
+ import { f as focusTemplateFactory } from './focus2.js';
5
9
  import { w as when } from './when.js';
10
+ import { r as ref } from './ref.js';
6
11
  import { c as classNames } from './class-names.js';
7
12
 
8
- class Badge extends FoundationElement {}
9
- __decorate([attr, __metadata("design:type", String)], Badge.prototype, "connotation", void 0);
10
- __decorate([attr, __metadata("design:type", String)], Badge.prototype, "shape", void 0);
11
- __decorate([attr, __metadata("design:type", String)], Badge.prototype, "appearance", void 0);
12
- __decorate([attr, __metadata("design:type", String)], Badge.prototype, "text", void 0);
13
- applyMixins(Badge, AffixIconWithTrailing);
13
+ class Button extends Button$1 {
14
+ constructor() {
15
+ super(...arguments);
16
+ this.stacked = false;
17
+ this.pending = false;
18
+ }
19
+ }
20
+ __decorate([attr, __metadata("design:type", String)], Button.prototype, "connotation", void 0);
21
+ __decorate([attr, __metadata("design:type", String)], Button.prototype, "shape", void 0);
22
+ __decorate([attr, __metadata("design:type", String)], Button.prototype, "appearance", void 0);
23
+ __decorate([attr, __metadata("design:type", String)], Button.prototype, "size", void 0);
24
+ __decorate([attr({
25
+ mode: 'boolean',
26
+ attribute: 'stacked'
27
+ }), __metadata("design:type", Object)], Button.prototype, "stacked", void 0);
28
+ __decorate([attr({
29
+ mode: 'boolean',
30
+ attribute: 'pending'
31
+ }), __metadata("design:type", Object)], Button.prototype, "pending", void 0);
32
+ __decorate([attr, __metadata("design:type", String)], Button.prototype, "label", void 0);
33
+ applyMixins(Button, AffixIconWithTrailing);
14
34
 
15
- var css_248z = "/**\n * Do not edit directly\n * Generated on Tue, 18 Apr 2023 16:20:35 GMT\n */\n.base {\n --_badge-block-size: calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density, 0), 2) - 20));\n display: inline-flex;\n box-sizing: border-box;\n align-items: center;\n background-color: var(--_appearance-color-fill);\n block-size: var(--_badge-block-size);\n box-shadow: inset 0 0 0 1px var(--_appearance-color-outline);\n color: var(--_appearance-color-text);\n column-gap: 8px;\n font: var(--vvd-typography-base-condensed-bold);\n max-inline-size: 100%;\n padding-inline: 8px;\n vertical-align: middle;\n}\n.base.connotation-cta {\n --_connotation-color-primary: var(--vvd-color-cta-500);\n --_connotation-color-primary-text: var(--vvd-color-canvas);\n --_connotation-color-intermediate: var(--vvd-color-cta-500);\n --_connotation-color-soft: var(--vvd-color-cta-100);\n --_connotation-color-contrast: var(--vvd-color-cta-800);\n --_connotation-color-pale: var(--vvd-color-cta-300);\n --_connotation-color-fierce: var(--vvd-color-cta-700);\n}\n.base.connotation-success {\n --_connotation-color-primary: var(--vvd-color-success-500);\n --_connotation-color-primary-text: var(--vvd-color-canvas);\n --_connotation-color-intermediate: var(--vvd-color-success-500);\n --_connotation-color-soft: var(--vvd-color-success-100);\n --_connotation-color-contrast: var(--vvd-color-success-800);\n --_connotation-color-pale: var(--vvd-color-success-300);\n --_connotation-color-fierce: var(--vvd-color-success-700);\n}\n.base.connotation-alert {\n --_connotation-color-primary: var(--vvd-color-alert-500);\n --_connotation-color-primary-text: var(--vvd-color-canvas);\n --_connotation-color-intermediate: var(--vvd-color-alert-500);\n --_connotation-color-soft: var(--vvd-color-alert-100);\n --_connotation-color-contrast: var(--vvd-color-alert-800);\n --_connotation-color-pale: var(--vvd-color-alert-300);\n --_connotation-color-fierce: var(--vvd-color-alert-700);\n}\n.base.connotation-warning {\n --_connotation-color-primary: var(--vvd-color-warning-300);\n --_connotation-color-primary-text: var(--vvd-color-canvas-text);\n --_connotation-color-intermediate: var(--vvd-color-warning-300);\n --_connotation-color-soft: var(--vvd-color-warning-100);\n --_connotation-color-contrast: var(--vvd-color-warning-800);\n --_connotation-color-pale: var(--vvd-color-warning-300);\n --_connotation-color-fierce: var(--vvd-color-warning-700);\n}\n.base.connotation-information {\n --_connotation-color-primary: var(--vvd-color-information-500);\n --_connotation-color-primary-text: var(--vvd-color-canvas);\n --_connotation-color-intermediate: var(--vvd-color-information-500);\n --_connotation-color-soft: var(--vvd-color-information-100);\n --_connotation-color-contrast: var(--vvd-color-information-800);\n --_connotation-color-pale: var(--vvd-color-information-300);\n --_connotation-color-fierce: var(--vvd-color-information-700);\n}\n.base:not(.connotation-cta, .connotation-success, .connotation-alert, .connotation-warning, .connotation-information) {\n --_connotation-color-primary: var(--vvd-color-canvas-text);\n --_connotation-color-primary-text: var(--vvd-color-canvas);\n --_connotation-color-intermediate: var(--vvd-color-neutral-500);\n --_connotation-color-soft: var(--vvd-color-neutral-100);\n --_connotation-color-contrast: var(--vvd-color-neutral-800);\n --_connotation-color-pale: var(--vvd-color-neutral-300);\n --_connotation-color-fierce: var(--vvd-color-neutral-700);\n}\n.base {\n --_appearance-color-text: var(--_connotation-color-primary-text);\n --_appearance-color-fill: var(--_connotation-color-primary);\n --_appearance-color-outline: transparent;\n}\n.base.appearance-duotone {\n --_appearance-color-text: var(--_connotation-color-fierce);\n --_appearance-color-fill: transparent;\n --_appearance-color-outline: var(--_connotation-color-pale);\n}\n.base.appearance-subtle {\n --_appearance-color-text: var(--_connotation-color-contrast);\n --_appearance-color-fill: var(--_connotation-color-soft);\n --_appearance-color-outline: transparent;\n}\n.base.icon-only {\n contain: size;\n padding-inline: 0;\n place-content: center;\n}\n@supports (aspect-ratio: 1) {\n .base.icon-only {\n aspect-ratio: 1;\n }\n}\n@supports not (aspect-ratio: 1) {\n .base.icon-only {\n inline-size: var(--_badge-block-size);\n }\n}\n\n.text {\n overflow: hidden;\n max-inline-size: 100%;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n/* Shape */\n.base:not(.shape-pill) {\n border-radius: 4px;\n}\n\n.base.shape-pill {\n border-radius: 14px;\n}\n\n/* Icon */\n.icon {\n font-size: calc(var(--_badge-block-size) / 1.6667);\n line-height: 1;\n}\n.icon-trailing .icon {\n order: 1;\n}";
35
+ var css_248z = "/**\n * Do not edit directly\n * Generated on Thu, 27 Apr 2023 09:20:45 GMT\n */\n:host {\n display: inline-block;\n}\n\n.control {\n position: relative;\n display: inline-flex;\n box-sizing: border-box;\n align-items: center;\n justify-content: center;\n border: 0 none;\n margin: 0;\n background-color: var(--_appearance-color-fill);\n block-size: var(--_button-block-size);\n box-shadow: inset 0 0 0 1px var(--_appearance-color-outline);\n color: var(--_appearance-color-text);\n gap: var(--_button-icon-gap);\n vertical-align: middle;\n white-space: nowrap;\n /* Shape */\n /* Size */\n}\n.control.connotation-cta {\n --_connotation-color-primary: var(--vvd-color-cta-500);\n --_connotation-color-primary-text: var(--vvd-color-canvas);\n --_connotation-color-primary-increment: var(--vvd-color-cta-600);\n --_connotation-color-contrast: var(--vvd-color-cta-800);\n --_connotation-color-fierce: var(--vvd-color-cta-700);\n --_connotation-color-firm: var(--vvd-color-cta-600);\n --_connotation-color-soft: var(--vvd-color-cta-100);\n --_connotation-color-faint: var(--vvd-color-cta-50);\n}\n.control.connotation-success {\n --_connotation-color-primary: var(--vvd-color-success-500);\n --_connotation-color-primary-text: var(--vvd-color-canvas);\n --_connotation-color-primary-increment: var(--vvd-color-success-600);\n --_connotation-color-contrast: var(--vvd-color-success-800);\n --_connotation-color-fierce: var(--vvd-color-success-700);\n --_connotation-color-firm: var(--vvd-color-success-600);\n --_connotation-color-soft: var(--vvd-color-success-100);\n --_connotation-color-faint: var(--vvd-color-success-50);\n}\n.control.connotation-alert {\n --_connotation-color-primary: var(--vvd-color-alert-500);\n --_connotation-color-primary-text: var(--vvd-color-canvas);\n --_connotation-color-primary-increment: var(--vvd-color-alert-600);\n --_connotation-color-contrast: var(--vvd-color-alert-800);\n --_connotation-color-fierce: var(--vvd-color-alert-700);\n --_connotation-color-firm: var(--vvd-color-alert-600);\n --_connotation-color-soft: var(--vvd-color-alert-100);\n --_connotation-color-faint: var(--vvd-color-alert-50);\n}\n.control:not(.connotation-cta, .connotation-success, .connotation-alert) {\n --_connotation-color-primary: var(--vvd-color-canvas-text);\n --_connotation-color-primary-text: var(--vvd-color-canvas);\n --_connotation-color-primary-increment: var(--vvd-color-neutral-800);\n --_connotation-color-contrast: var(--vvd-color-neutral-800);\n --_connotation-color-fierce: var(--vvd-color-neutral-700);\n --_connotation-color-firm: var(--vvd-color-canvas-text);\n --_connotation-color-soft: var(--vvd-color-neutral-100);\n --_connotation-color-faint: var(--vvd-color-neutral-50);\n}\n.control.appearance-filled {\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.appearance-outlined {\n --_appearance-color-text: var(--_connotation-color-firm);\n --_appearance-color-fill: transparent;\n --_appearance-color-outline: var(--_connotation-color-firm);\n}\n.control {\n --_appearance-color-text: var(--_connotation-color-primary);\n --_appearance-color-fill: transparent;\n --_appearance-color-outline: transparent;\n}\n.control:where(:hover, .hover):where(:not(:disabled, .disabled, .readonly)).appearance-filled {\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(:hover, .hover):where(:not(:disabled, .disabled, .readonly)).appearance-outlined {\n --_appearance-color-text: var(--_connotation-color-firm);\n --_appearance-color-fill: var(--_connotation-color-faint);\n --_appearance-color-outline: var(--_connotation-color-firm);\n}\n.control: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.control:where(:disabled, .disabled).appearance-filled {\n --_appearance-color-text: var(--vvd-color-neutral-400);\n --_appearance-color-fill: var(--vvd-color-neutral-200);\n --_appearance-color-outline: transparent;\n}\n.control:where(:disabled, .disabled).appearance-outlined {\n --_appearance-color-text: var(--vvd-color-neutral-400);\n --_appearance-color-fill: transparent;\n --_appearance-color-outline: var(--vvd-color-neutral-400);\n}\n.control:where(:disabled, .disabled) {\n --_appearance-color-text: var(--vvd-color-neutral-400);\n --_appearance-color-fill: transparent;\n --_appearance-color-outline: transparent;\n}\n.control:where(:active, .active):where(:not(:disabled, .disabled)).appearance-filled {\n --_appearance-color-text: var(--_connotation-color-primary-text);\n --_appearance-color-fill: var(--_connotation-color-fierce);\n --_appearance-color-outline: transparent;\n}\n.control:where(:active, .active):where(:not(:disabled, .disabled)).appearance-outlined {\n --_appearance-color-text: var(--_connotation-color-firm);\n --_appearance-color-fill: var(--_connotation-color-soft);\n --_appearance-color-outline: var(--_connotation-color-firm);\n}\n.control: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.control:not(.icon-only) {\n inline-size: 100%;\n}\n@supports selector(:focus-visible) {\n .control:focus {\n outline: none;\n }\n}\n@supports (user-select: none) {\n .control {\n user-select: none;\n }\n}\n.control:not(:disabled) {\n cursor: pointer;\n}\n.control:disabled {\n cursor: not-allowed;\n}\n.control.icon-only {\n contain: size;\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(--_button-block-size);\n }\n}\n.control:not(.shape-pill) {\n border-radius: 6px;\n}\n.control.shape-pill:not(.icon-only, .stacked) {\n border-radius: 24px;\n}\n.control.shape-pill.stacked {\n border-radius: 24px;\n}\n.control.shape-pill.icon-only {\n border-radius: 50%;\n}\n.control:not(.stacked).size-super-condensed {\n --_button-block-size: calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density, 0), 2) - 16));\n font: var(--vvd-typography-base-condensed-bold);\n}\n.control:not(.stacked).size-super-condensed:not(.icon-only) {\n --_button-icon-gap: 4px;\n padding-inline: 8px;\n}\n.control:not(.stacked).size-condensed {\n --_button-block-size: calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density, 0), 2) - 8));\n font: var(--vvd-typography-base-condensed-bold);\n}\n.control:not(.stacked).size-condensed:not(.icon-only) {\n --_button-icon-gap: 8px;\n padding-inline: 12px;\n}\n.control:not(.stacked).size-expanded {\n --_button-block-size: calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density, 0), 2) + 8));\n font: var(--vvd-typography-base-extended-bold);\n}\n.control:not(.stacked).size-expanded:not(.icon-only) {\n --_button-icon-gap: 10px;\n padding-inline: 20px;\n}\n.control:not(.stacked):not(.size-condensed, .size-expanded, .size-super-condensed) {\n --_button-block-size: calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density, 0), 2)));\n font: var(--vvd-typography-base-bold);\n}\n.control:not(.stacked):not(.size-condensed, .size-expanded, .size-super-condensed):not(.icon-only) {\n --_button-icon-gap: 8px;\n padding-inline: 16px;\n}\n.control.stacked {\n flex-direction: column;\n justify-content: center;\n}\n.control.stacked.size-super-condensed {\n --stacked-size: calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density, 0), 2) - 16));\n --_button-block-size: calc(var(--stacked-size) + 20px);\n font: var(--vvd-typography-base-condensed-bold);\n}\n.control.stacked.size-super-condensed:not(.icon-only) {\n --_button-icon-gap: 4px;\n padding-inline: 8px;\n}\n.control.stacked.size-condensed {\n --stacked-size: calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density, 0), 2) - 8));\n --_button-block-size: calc(var(--stacked-size) + 24px);\n font: var(--vvd-typography-base-condensed-bold);\n}\n.control.stacked.size-condensed:not(.icon-only) {\n --_button-icon-gap: 6px;\n padding-inline: 12px;\n}\n.control.stacked.size-expanded {\n --stacked-size: calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density, 0), 2) + 8));\n --_button-block-size: calc(var(--stacked-size) + 32px);\n font: var(--vvd-typography-base-extended-bold);\n}\n.control.stacked.size-expanded:not(.icon-only) {\n --_button-icon-gap: 10px;\n padding-inline: 20px;\n}\n.control.stacked:not(.size-condensed, .size-expanded, .size-super-condensed) {\n --stacked-size: calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density, 0), 2)));\n --_button-block-size: calc(var(--stacked-size) + 28px);\n font: var(--vvd-typography-base-bold);\n}\n.control.stacked:not(.size-condensed, .size-expanded, .size-super-condensed):not(.icon-only) {\n --_button-icon-gap: 8px;\n padding-inline: 16px;\n}\n\n/* Icon */\n.icon {\n line-height: 1;\n}\n.icon-trailing .icon {\n order: 1;\n}\n.control.stacked > .icon {\n font-size: calc(var(--stacked-size) / 2);\n}\n.control:not(.stacked) > .icon {\n font-size: calc(var(--_button-block-size) / 2);\n}\n\n:not(:focus-visible) > .focus-indicator {\n display: none;\n}\n.appearance-outlined .focus-indicator, .appearance-ghost .focus-indicator {\n --focus-stroke-gap-color: transparent;\n}\n\n.pending {\n order: 2;\n}";
16
36
 
17
37
  let _ = t => t,
18
38
  _t,
19
39
  _t2;
40
+ const getAppearanceClassName = (appearance, disabled) => {
41
+ let className = `appearance-${appearance}`;
42
+ disabled && (className += ' disabled');
43
+ return className;
44
+ };
20
45
  const getClasses = ({
21
46
  connotation,
22
47
  appearance,
23
48
  shape,
24
49
  iconTrailing,
25
- text,
26
- icon
27
- }) => classNames('base', [`connotation-${connotation}`, Boolean(connotation)], [`appearance-${appearance}`, Boolean(appearance)], [`shape-${shape}`, Boolean(shape)], ['icon-trailing', iconTrailing], ['icon-only', !text && Boolean(icon)]);
28
- const badgeTemplate = context => {
50
+ icon,
51
+ label,
52
+ disabled,
53
+ stacked,
54
+ size
55
+ }) => classNames('control', [`connotation-${connotation}`, Boolean(connotation)], [getAppearanceClassName(appearance, disabled), Boolean(appearance)], [`shape-${shape}`, Boolean(shape)], [`size-${size}`, Boolean(size)], ['icon-only', !label && !!icon], ['icon-trailing', iconTrailing], ['stacked', Boolean(stacked)]);
56
+ const buttonTemplate = context => {
29
57
  const affixIconTemplate = affixIconTemplateFactory(context);
58
+ const focusTemplate = focusTemplateFactory(context);
59
+ const progressTag = context.tagFor(ProgressRing);
30
60
  return html(_t || (_t = _`
31
- <span class="${0}">
32
- ${0}
33
- ${0}
34
- </span>`), getClasses, x => affixIconTemplate(x.icon), when(x => x.text, x => html(_t2 || (_t2 = _`<span class="text">${0}</span>`), x.text)));
61
+ <button
62
+ class="${0}"
63
+ ?autofocus="${0}"
64
+ ?disabled="${0}"
65
+ form="${0}"
66
+ formaction="${0}"
67
+ formenctype="${0}"
68
+ formmethod="${0}"
69
+ formnovalidate="${0}"
70
+ formtarget="${0}"
71
+ name="${0}"
72
+ type="${0}"
73
+ value="${0}"
74
+ aria-atomic="${0}"
75
+ aria-busy="${0}"
76
+ aria-controls="${0}"
77
+ aria-current="${0}"
78
+ aria-describedby="${0}"
79
+ aria-details="${0}"
80
+ aria-disabled="${0}"
81
+ aria-errormessage="${0}"
82
+ aria-expanded="${0}"
83
+ aria-flowto="${0}"
84
+ aria-haspopup="${0}"
85
+ aria-hidden="${0}"
86
+ aria-invalid="${0}"
87
+ aria-keyshortcuts="${0}"
88
+ aria-label="${0}"
89
+ aria-labelledby="${0}"
90
+ aria-live="${0}"
91
+ aria-owns="${0}"
92
+ aria-pressed="${0}"
93
+ aria-relevant="${0}"
94
+ aria-roledescription="${0}"
95
+ ${0}
96
+ >
97
+ ${0}
98
+ ${0}
99
+ ${0}
100
+ ${0}
101
+ </button>
102
+ `), getClasses, x => x.autofocus, x => x.disabled || x.pending, x => x.formId, x => x.formaction, x => x.formenctype, x => x.formmethod, x => x.formnovalidate, x => x.formtarget, x => x.name, x => x.type, x => x.value, x => x.ariaAtomic, x => x.ariaBusy, x => x.ariaControls, x => x.ariaCurrent, x => x.ariaDescribedby, x => x.ariaDetails, x => x.ariaDisabled, x => x.ariaErrormessage, x => x.ariaExpanded, x => x.ariaFlowto, x => x.ariaHaspopup, x => x.ariaHidden, x => x.ariaInvalid, x => x.ariaKeyshortcuts, x => x.ariaLabel, x => x.ariaLabelledby, x => x.ariaLive, x => x.ariaOwns, x => x.ariaPressed, x => x.ariaRelevant, x => x.ariaRoledescription, ref('control'), () => focusTemplate, x => affixIconTemplate(x.icon), x => x.label, when(x => x.pending, html(_t2 || (_t2 = _`<${0} class="pending" size="-5"></${0}>`), progressTag, progressTag)));
35
103
  };
36
104
 
37
- const badgeDefinition = Badge.compose({
38
- baseName: 'badge',
39
- template: badgeTemplate,
40
- styles: css_248z
105
+ const buttonDefinition = Button.compose({
106
+ baseName: 'button',
107
+ baseClass: Button$1,
108
+ template: buttonTemplate,
109
+ styles: css_248z,
110
+ shadowOptions: {
111
+ delegatesFocus: true
112
+ }
41
113
  });
42
- const badgeRegistries = [badgeDefinition(), ...iconRegistries];
43
- const registerBadge = registerFactory(badgeRegistries);
114
+ const buttonRegistries = [buttonDefinition(), ...iconRegistries, ...focusRegistries, ...progressRingRegistries];
115
+ const registerButton = registerFactory(buttonRegistries);
44
116
 
45
- export { badgeDefinition as b, registerBadge as r };
117
+ export { Button as B, buttonDefinition as a, buttonRegistries as b, registerButton as r };
@@ -1,113 +1,32 @@
1
- import { F as FoundationElement, U as __classPrivateFieldGet, _ as __decorate, a as attr, b as __metadata, h as html, r as registerFactory } from './index.js';
2
- import { B as Button, b as buttonRegistries } from './definition9.js';
3
- import { i as iconRegistries } from './definition3.js';
4
- import { C as Connotation } from './enums.js';
5
- import { b as AffixIcon, a as affixIconTemplateFactory } from './affix.js';
6
- import { a as applyMixins } from './apply-mixins.js';
7
- import { w as when } from './when.js';
1
+ import { F as FoundationElement, _ as __decorate, a as attr, b as __metadata, h as html, r as registerFactory } from './index.js';
8
2
  import { c as classNames } from './class-names.js';
9
3
 
10
- var css_248z = "/**\n * Do not edit directly\n * Generated on Tue, 18 Apr 2023 16:20:35 GMT\n */\n.control {\n overflow: hidden;\n max-height: 160px;\n background-color: var(--_appearance-color-fill);\n color: var(--_appearance-color-text);\n transition: max-height var(--transition-delay, 200ms);\n}\n.control.connotation-success {\n --_connotation-color-primary: var(--vvd-color-success-500);\n --_connotation-color-primary-text: var(--vvd-color-canvas);\n}\n.control.connotation-alert {\n --_connotation-color-primary: var(--vvd-color-alert-500);\n --_connotation-color-primary-text: var(--vvd-color-canvas);\n}\n.control.connotation-announcement {\n --_connotation-color-primary: var(--vvd-color-announcement-500);\n --_connotation-color-primary-text: var(--vvd-color-canvas);\n}\n.control.connotation-warning {\n --_connotation-color-primary: var(--vvd-color-warning-300);\n --_connotation-color-primary-text: var(--vvd-color-canvas-text);\n}\n.control:not(.connotation-success, .connotation-alert, .connotation-announcement, .connotation-warning) {\n --_connotation-color-primary: var(--vvd-color-information-500);\n --_connotation-color-primary-text: var(--vvd-color-canvas);\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.removing {\n max-height: 0;\n}\n.control > .header {\n display: flex;\n min-height: calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density, 0), 2) + 20));\n align-items: center;\n justify-content: flex-start;\n font: var(--vvd-typography-base-bold);\n}\n.control > .header > .user-content {\n display: flex;\n flex: 1 0;\n align-items: center;\n justify-content: center;\n padding-inline: 16px;\n}\n.control > .header > .user-content > .icon {\n flex: 0 0 auto;\n font-size: 20px;\n line-height: 1;\n margin-inline-end: 15px;\n}\n.control > .header > .user-content > .action-items {\n display: inline-block;\n flex: 0 0 auto;\n padding-inline-start: 15px;\n}\n.control > .header > .user-content > .message {\n padding: 20px 0;\n}\n.control > .header > .dismiss-button {\n --vvd-icon-button-color: inherit;\n flex: 0 0 auto;\n margin-inline-end: 8px;\n}";
11
-
12
- var _Banner_handleRemoveEnd, _Banner_closeOnKeyDown;
13
- const connotationIconMap = new Map([[Connotation.Information, 'info-solid'], [Connotation.Announcement, 'megaphone-solid'], [Connotation.Success, 'check-circle-solid'], [Connotation.Warning, 'warning-solid'], [Connotation.Alert, 'error-solid']]);
14
- const defaultConnotation = (connotation = Connotation.Information) => connotationIconMap.get(connotation);
15
- class Banner extends FoundationElement {
16
- constructor() {
17
- super(...arguments);
18
- this.removable = false;
19
- _Banner_handleRemoveEnd.set(this, () => {
20
- this.$emit('removed');
21
- this.parentElement && this.parentElement.removeChild(this);
22
- });
23
- _Banner_closeOnKeyDown.set(this, e => {
24
- if (e.key !== 'Escape' || !this.removable) {
25
- return;
26
- }
27
- this.remove();
28
- });
29
- }
30
- get conditionedIcon() {
31
- var _a;
32
- return (_a = this.icon) !== null && _a !== void 0 ? _a : defaultConnotation(this.connotation);
33
- }
34
- connectedCallback() {
35
- super.connectedCallback();
36
- this.addEventListener('keydown', __classPrivateFieldGet(this, _Banner_closeOnKeyDown, "f"));
37
- }
38
- disconnectedCallback() {
39
- super.disconnectedCallback();
40
- this.removeEventListener('keydown', __classPrivateFieldGet(this, _Banner_closeOnKeyDown, "f"));
41
- }
42
- remove() {
43
- this.$emit('removing');
44
- const banner = this.shadowRoot && this.shadowRoot.querySelector('.banner');
45
- if (banner) {
46
- banner.classList.add('removing');
47
- banner.addEventListener('transitionend', __classPrivateFieldGet(this, _Banner_handleRemoveEnd, "f"));
48
- }
49
- }
50
- }
51
- _Banner_handleRemoveEnd = new WeakMap(), _Banner_closeOnKeyDown = new WeakMap();
52
- __decorate([attr({
53
- attribute: 'action-href'
54
- }), __metadata("design:type", Object)], Banner.prototype, "actionHref", void 0);
55
- __decorate([attr({
56
- attribute: 'action-text'
57
- }), __metadata("design:type", Object)], Banner.prototype, "actionText", void 0);
4
+ class Elevation extends FoundationElement {}
5
+ __decorate([attr, __metadata("design:type", Number)], Elevation.prototype, "dp", void 0);
58
6
  __decorate([attr({
7
+ attribute: 'no-shadow',
59
8
  mode: 'boolean'
60
- }), __metadata("design:type", Object)], Banner.prototype, "removable", void 0);
61
- __decorate([attr({
62
- attribute: 'aria-live'
63
- }), __metadata("design:type", Object)], Banner.prototype, "ariaLive", void 0);
64
- __decorate([attr(), __metadata("design:type", Object)], Banner.prototype, "role", void 0);
65
- __decorate([attr(), __metadata("design:type", Object)], Banner.prototype, "text", void 0);
66
- __decorate([attr(), __metadata("design:type", Object)], Banner.prototype, "connotation", void 0);
67
- applyMixins(Banner, AffixIcon);
9
+ }), __metadata("design:type", Boolean)], Elevation.prototype, "noShadow", void 0);
68
10
 
69
- let _2 = t => t,
70
- _t,
71
- _t2;
72
- const getClasses = _ => classNames('control', [`connotation-${_.connotation}`, !!_.connotation]);
73
- function renderDismissButton(buttonTag) {
74
- return html(_t || (_t = _2`
75
- <${0}
76
- part="vvd-theme-alternate"
77
- size="condensed"
78
- class="dismiss-button"
79
- icon="close-line"
80
- @click="${0}">
81
- </${0}>`), buttonTag, x => x.remove(), buttonTag);
82
- }
83
- const BannerTemplate = context => {
84
- const affixIconTemplate = affixIconTemplateFactory(context);
85
- const buttonTag = context.tagFor(Button);
86
- return html(_t2 || (_t2 = _2`
87
- <div class="banner ${0}" tabindex="0">
88
- <header class="header">
89
- <div class="user-content">
90
- ${0}
91
- <div class="banner--message"
92
- role="${0}"
93
- aria-live="${0}">
94
- ${0}
95
- </div>
96
- <slot class="action-items" name="action-items"></slot>
97
- </div>
11
+ var css_248z = ":host {\n display: contents;\n}\n\n.control {\n display: contents;\n}\n.control.dp-0 {\n --_elevation-fill: var(--vvd-color-surface-0dp);\n --_elevation-shadow: var(--vvd-shadow-surface-0dp);\n}\n.control.dp-4 {\n --_elevation-fill: var(--vvd-color-surface-4dp);\n --_elevation-shadow: var(--vvd-shadow-surface-4dp);\n}\n.control.dp-8 {\n --_elevation-fill: var(--vvd-color-surface-8dp);\n --_elevation-shadow: var(--vvd-shadow-surface-8dp);\n}\n.control.dp-12 {\n --_elevation-fill: var(--vvd-color-surface-12dp);\n --_elevation-shadow: var(--vvd-shadow-surface-12dp);\n}\n.control.dp-16 {\n --_elevation-fill: var(--vvd-color-surface-16dp);\n --_elevation-shadow: var(--vvd-shadow-surface-16dp);\n}\n.control.dp-24 {\n --_elevation-fill: var(--vvd-color-surface-24dp);\n --_elevation-shadow: var(--vvd-shadow-surface-24dp);\n}\n.control:not(.dp-0, .dp-4, .dp-8, .dp-12, .dp-16, .dp-24) {\n --_elevation-fill: var(--vvd-color-surface-2dp);\n --_elevation-shadow: var(--vvd-shadow-surface-2dp);\n}\n.control ::slotted(*) {\n background: var(--_elevation-fill);\n filter: var(--_elevation-shadow);\n transition: background-color 0.15s linear, filter 0.15s linear;\n}\n.control.no-shadow ::slotted(*) {\n filter: none;\n}";
98
12
 
99
- ${0}
100
- </header>
101
- </div>
102
- `), getClasses, x => affixIconTemplate(x.conditionedIcon), x => x.role ? x.role : 'status', x => x.ariaLive ? x.ariaLive : 'polite', x => x.text, when(x => x.removable, renderDismissButton(buttonTag)));
103
- };
13
+ let _ = t => t,
14
+ _t;
15
+ const getClasses = ({
16
+ dp,
17
+ noShadow
18
+ }) => classNames('control', [`dp-${dp}`, Boolean(dp)], ['no-shadow', Boolean(noShadow)]);
19
+ const elevationTemplate = () => html(_t || (_t = _`
20
+ <div class="${0}" part="base">
21
+ <slot></slot>
22
+ </div>`), getClasses);
104
23
 
105
- const bannerDefinition = Banner.compose({
106
- baseName: 'banner',
107
- template: BannerTemplate,
24
+ const elevationDefinition = Elevation.compose({
25
+ baseName: 'elevation',
26
+ template: elevationTemplate,
108
27
  styles: css_248z
109
28
  });
110
- const bannerRegistries = [bannerDefinition(), ...iconRegistries, ...buttonRegistries];
111
- const registerBanner = registerFactory(bannerRegistries);
29
+ const elevationRegistries = [elevationDefinition()];
30
+ const registerElevation = registerFactory(elevationRegistries);
112
31
 
113
- export { bannerRegistries as a, bannerDefinition as b, registerBanner as r };
32
+ export { Elevation as E, elevationDefinition as a, elevationRegistries as e, registerElevation as r };
@@ -1,117 +1,77 @@
1
1
  import { _ as __decorate, a as attr, b as __metadata, h as html, r as registerFactory } from './index.js';
2
- import { i as iconRegistries } from './definition3.js';
3
- import { f as focusRegistries } from './definition4.js';
4
- import { P as ProgressRing, p as progressRingRegistries } from './definition10.js';
5
- import { A as AffixIconWithTrailing, a as affixIconTemplateFactory } from './affix.js';
6
- import { B as Button$1 } from './button.js';
7
- import { a as applyMixins } from './apply-mixins.js';
8
- import { f as focusTemplateFactory } from './focus2.js';
2
+ import { B as BaseProgress } from './base-progress.js';
9
3
  import { w as when } from './when.js';
10
- import { r as ref } from './ref.js';
11
4
  import { c as classNames } from './class-names.js';
12
5
 
13
- class Button extends Button$1 {
14
- constructor() {
15
- super(...arguments);
16
- this.stacked = false;
17
- this.pending = false;
18
- }
19
- }
20
- __decorate([attr, __metadata("design:type", String)], Button.prototype, "connotation", void 0);
21
- __decorate([attr, __metadata("design:type", String)], Button.prototype, "shape", void 0);
22
- __decorate([attr, __metadata("design:type", String)], Button.prototype, "appearance", void 0);
23
- __decorate([attr, __metadata("design:type", String)], Button.prototype, "size", void 0);
24
- __decorate([attr({
25
- mode: 'boolean',
26
- attribute: 'stacked'
27
- }), __metadata("design:type", Object)], Button.prototype, "stacked", void 0);
28
- __decorate([attr({
29
- mode: 'boolean',
30
- attribute: 'pending'
31
- }), __metadata("design:type", Object)], Button.prototype, "pending", void 0);
32
- __decorate([attr, __metadata("design:type", String)], Button.prototype, "label", void 0);
33
- applyMixins(Button, AffixIconWithTrailing);
6
+ var css_248z = "/**\n * Do not edit directly\n * Generated on Thu, 27 Apr 2023 09:20:45 GMT\n */\n.base {\n align-items: center;\n block-size: var(--_size);\n color: var(--_appearance-color-text);\n inline-size: var(--_size);\n outline: none;\n}\n.base.connotation-cta {\n --_connotation-color-primary: var(--vvd-color-cta-500);\n}\n.base.connotation-alert {\n --_connotation-color-primary: var(--vvd-color-alert-500);\n}\n.base.connotation-success {\n --_connotation-color-primary: var(--vvd-color-success-500);\n}\n.base:not(.connotation-cta, .connotation-alert, .connotation-success) {\n --_connotation-color-primary: var(--vvd-color-canvas-text);\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(:disabled, .disabled) {\n --_appearance-color-text: var(--vvd-color-neutral-400);\n --_appearance-color-fill: transparent;\n --_appearance-color-outline: transparent;\n}\n.base.size--5 {\n --_size: calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density, 0), 2) - 20));\n}\n.base.size--4 {\n --_size: calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density, 0), 2) - 16));\n}\n.base.size--3 {\n --_size: calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density, 0), 2) - 12));\n}\n.base.size--2 {\n --_size: calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density, 0), 2) - 8));\n}\n.base.size--1 {\n --_size: calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density, 0), 2) - 4));\n}\n.base.size-1 {\n --_size: calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density, 0), 2) + 4));\n}\n.base.size-2 {\n --_size: calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density, 0), 2) + 8));\n}\n.base.size-3 {\n --_size: calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density, 0), 2) + 12));\n}\n.base.size-4 {\n --_size: calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density, 0), 2) + 16));\n}\n.base.size-5 {\n --_size: calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density, 0), 2) + 20));\n}\n.base:not(.size--5, .size--4, .size--3, .size--2, .size--1, .size-1, .size-2, .size-3, .size-4, .size-5) {\n --_size: calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density, 0), 2)));\n}\n\n.progress {\n width: 100%;\n height: 100%;\n}\n\n.background {\n fill: none;\n stroke: transparent;\n stroke-width: 1px;\n}\n\n.determinate {\n fill: none;\n stroke: currentColor;\n stroke-linecap: round;\n stroke-width: 1px;\n transform: rotate(-90deg);\n transform-origin: 50% 50%;\n transition: all 0.2s ease-in-out;\n}\n\n.indeterminate-indicator-1 {\n animation: spin-infinite 2s linear infinite;\n fill: none;\n stroke: currentColor;\n stroke-linecap: round;\n stroke-width: 1px;\n transform: rotate(-90deg);\n transform-origin: 50% 50%;\n transition: all 0.2s ease-in-out;\n}\n\n.base.paused .indeterminate-indicator-1 {\n animation-play-state: paused;\n}\n\n@keyframes spin-infinite {\n 0% {\n stroke-dasharray: 0.01px 43.97px;\n transform: rotate(0deg);\n }\n 50% {\n stroke-dasharray: 21.99px 21.99px;\n transform: rotate(450deg);\n }\n 100% {\n stroke-dasharray: 0.01px 43.97px;\n transform: rotate(1080deg);\n }\n}";
34
7
 
35
- var css_248z = "/**\n * Do not edit directly\n * Generated on Tue, 18 Apr 2023 16:20:35 GMT\n */\n:host {\n display: inline-block;\n}\n\n.control {\n position: relative;\n display: inline-flex;\n box-sizing: border-box;\n align-items: center;\n justify-content: center;\n border: 0 none;\n margin: 0;\n background-color: var(--_appearance-color-fill);\n block-size: var(--_button-block-size);\n box-shadow: inset 0 0 0 1px var(--_appearance-color-outline);\n color: var(--_appearance-color-text);\n gap: var(--_button-icon-gap);\n vertical-align: middle;\n white-space: nowrap;\n /* Size */\n}\n.control.connotation-cta {\n --_connotation-color-primary: var(--vvd-color-cta-500);\n --_connotation-color-primary-text: var(--vvd-color-canvas);\n --_connotation-color-primary-increment: var(--vvd-color-cta-600);\n --_connotation-color-contrast: var(--vvd-color-cta-800);\n --_connotation-color-fierce: var(--vvd-color-cta-700);\n --_connotation-color-firm: var(--vvd-color-cta-600);\n --_connotation-color-soft: var(--vvd-color-cta-100);\n --_connotation-color-faint: var(--vvd-color-cta-50);\n}\n.control.connotation-success {\n --_connotation-color-primary: var(--vvd-color-success-500);\n --_connotation-color-primary-text: var(--vvd-color-canvas);\n --_connotation-color-primary-increment: var(--vvd-color-success-600);\n --_connotation-color-contrast: var(--vvd-color-success-800);\n --_connotation-color-fierce: var(--vvd-color-success-700);\n --_connotation-color-firm: var(--vvd-color-success-600);\n --_connotation-color-soft: var(--vvd-color-success-100);\n --_connotation-color-faint: var(--vvd-color-success-50);\n}\n.control.connotation-alert {\n --_connotation-color-primary: var(--vvd-color-alert-500);\n --_connotation-color-primary-text: var(--vvd-color-canvas);\n --_connotation-color-primary-increment: var(--vvd-color-alert-600);\n --_connotation-color-contrast: var(--vvd-color-alert-800);\n --_connotation-color-fierce: var(--vvd-color-alert-700);\n --_connotation-color-firm: var(--vvd-color-alert-600);\n --_connotation-color-soft: var(--vvd-color-alert-100);\n --_connotation-color-faint: var(--vvd-color-alert-50);\n}\n.control:not(.connotation-cta, .connotation-success, .connotation-alert) {\n --_connotation-color-primary: var(--vvd-color-canvas-text);\n --_connotation-color-primary-text: var(--vvd-color-canvas);\n --_connotation-color-primary-increment: var(--vvd-color-neutral-800);\n --_connotation-color-contrast: var(--vvd-color-neutral-800);\n --_connotation-color-fierce: var(--vvd-color-neutral-700);\n --_connotation-color-firm: var(--vvd-color-canvas-text);\n --_connotation-color-soft: var(--vvd-color-neutral-100);\n --_connotation-color-faint: var(--vvd-color-neutral-50);\n}\n.control.appearance-filled {\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.appearance-outlined {\n --_appearance-color-text: var(--_connotation-color-firm);\n --_appearance-color-fill: transparent;\n --_appearance-color-outline: var(--_connotation-color-firm);\n}\n.control {\n --_appearance-color-text: var(--_connotation-color-primary);\n --_appearance-color-fill: transparent;\n --_appearance-color-outline: transparent;\n}\n.control:where(:hover, .hover):where(:not(:disabled, .disabled, .readonly)).appearance-filled {\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(:hover, .hover):where(:not(:disabled, .disabled, .readonly)).appearance-outlined {\n --_appearance-color-text: var(--_connotation-color-firm);\n --_appearance-color-fill: var(--_connotation-color-faint);\n --_appearance-color-outline: var(--_connotation-color-firm);\n}\n.control: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.control:where(:disabled, .disabled).appearance-filled {\n --_appearance-color-text: var(--vvd-color-neutral-400);\n --_appearance-color-fill: var(--vvd-color-neutral-200);\n --_appearance-color-outline: transparent;\n}\n.control:where(:disabled, .disabled).appearance-outlined {\n --_appearance-color-text: var(--vvd-color-neutral-400);\n --_appearance-color-fill: transparent;\n --_appearance-color-outline: var(--vvd-color-neutral-400);\n}\n.control:where(:disabled, .disabled) {\n --_appearance-color-text: var(--vvd-color-neutral-400);\n --_appearance-color-fill: transparent;\n --_appearance-color-outline: transparent;\n}\n.control:where(:active, .active):where(:not(:disabled, .disabled)).appearance-filled {\n --_appearance-color-text: var(--_connotation-color-primary-text);\n --_appearance-color-fill: var(--_connotation-color-fierce);\n --_appearance-color-outline: transparent;\n}\n.control:where(:active, .active):where(:not(:disabled, .disabled)).appearance-outlined {\n --_appearance-color-text: var(--_connotation-color-firm);\n --_appearance-color-fill: var(--_connotation-color-soft);\n --_appearance-color-outline: var(--_connotation-color-firm);\n}\n.control: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.control:not(.icon-only) {\n inline-size: 100%;\n}\n@supports selector(:focus-visible) {\n .control:focus {\n outline: none;\n }\n}\n@supports (user-select: none) {\n .control {\n user-select: none;\n }\n}\n.control:not(:disabled) {\n cursor: pointer;\n}\n.control:disabled {\n cursor: not-allowed;\n}\n.control.icon-only {\n contain: size;\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(--_button-block-size);\n }\n}\n.control:not(.stacked).size-super-condensed {\n --_button-block-size: calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density, 0), 2) - 16));\n font: var(--vvd-typography-base-condensed-bold);\n}\n.control:not(.stacked).size-super-condensed:not(.icon-only) {\n --_button-icon-gap: 4px;\n padding-inline: 8px;\n}\n.control:not(.stacked).size-condensed {\n --_button-block-size: calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density, 0), 2) - 8));\n font: var(--vvd-typography-base-condensed-bold);\n}\n.control:not(.stacked).size-condensed:not(.icon-only) {\n --_button-icon-gap: 8px;\n padding-inline: 12px;\n}\n.control:not(.stacked).size-expanded {\n --_button-block-size: calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density, 0), 2) + 8));\n font: var(--vvd-typography-base-extended-bold);\n}\n.control:not(.stacked).size-expanded:not(.icon-only) {\n --_button-icon-gap: 10px;\n padding-inline: 20px;\n}\n.control:not(.stacked):not(.size-condensed, .size-expanded, .size-super-condensed) {\n --_button-block-size: calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density, 0), 2)));\n font: var(--vvd-typography-base-bold);\n}\n.control:not(.stacked):not(.size-condensed, .size-expanded, .size-super-condensed):not(.icon-only) {\n --_button-icon-gap: 8px;\n padding-inline: 16px;\n}\n.control.stacked {\n flex-direction: column;\n justify-content: center;\n --_button-block-size: calc(calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density, 0), 2) + 8)) + calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density, 0), 2) - 20)));\n font: var(--vvd-typography-base-bold);\n}\n.control.stacked:not(.icon-only) {\n --_button-icon-gap: 10px;\n padding-inline: 16px;\n}\n\n/* Shape */\n.control:not(.shape-pill:not(.stacked)) {\n border-radius: 6px;\n}\n\n.control.shape-pill:not(.stacked):not(.icon-only) {\n border-radius: 24px;\n}\n.control.shape-pill:not(.stacked).icon-only {\n border-radius: 50%;\n}\n\n/* Icon */\n.icon {\n line-height: 1;\n}\n.icon-trailing .icon {\n order: 1;\n}\n.control.stacked > .icon {\n font-size: calc(calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density, 0), 2))) / 2);\n}\n.control:not(.stacked) > .icon {\n font-size: calc(var(--_button-block-size) / 2);\n}\n\n:not(:focus-visible) > .focus-indicator {\n display: none;\n}\n.appearance-outlined .focus-indicator, .appearance-ghost .focus-indicator {\n --focus-stroke-gap-color: transparent;\n}\n\n.pending {\n order: 2;\n}";
8
+ class ProgressRing extends BaseProgress {}
9
+ __decorate([attr, __metadata("design:type", String)], ProgressRing.prototype, "connotation", void 0);
10
+ __decorate([attr, __metadata("design:type", Number)], ProgressRing.prototype, "size", void 0);
36
11
 
37
- let _ = t => t,
12
+ let _2 = t => t,
38
13
  _t,
39
- _t2;
40
- const getAppearanceClassName = (appearance, disabled) => {
41
- let className = `appearance-${appearance}`;
42
- disabled && (className += ' disabled');
43
- return className;
44
- };
14
+ _t2,
15
+ _t3;
45
16
  const getClasses = ({
46
17
  connotation,
47
- appearance,
48
- shape,
49
- iconTrailing,
50
- icon,
51
- label,
52
- disabled,
53
- stacked,
54
- size
55
- }) => classNames('control', [`connotation-${connotation}`, Boolean(connotation)], [getAppearanceClassName(appearance, disabled), Boolean(appearance)], [`shape-${shape}`, Boolean(shape)], [`size-${size}`, Boolean(size)], ['icon-only', !label && !!icon], ['icon-trailing', iconTrailing], ['stacked', Boolean(stacked)]);
56
- const buttonTemplate = context => {
57
- const affixIconTemplate = affixIconTemplateFactory(context);
58
- const focusTemplate = focusTemplateFactory(context);
59
- const progressTag = context.tagFor(ProgressRing);
60
- return html(_t || (_t = _`
61
- <button
62
- class="${0}"
63
- ?autofocus="${0}"
64
- ?disabled="${0}"
65
- form="${0}"
66
- formaction="${0}"
67
- formenctype="${0}"
68
- formmethod="${0}"
69
- formnovalidate="${0}"
70
- formtarget="${0}"
71
- name="${0}"
72
- type="${0}"
73
- value="${0}"
74
- aria-atomic="${0}"
75
- aria-busy="${0}"
76
- aria-controls="${0}"
77
- aria-current="${0}"
78
- aria-describedby="${0}"
79
- aria-details="${0}"
80
- aria-disabled="${0}"
81
- aria-errormessage="${0}"
82
- aria-expanded="${0}"
83
- aria-flowto="${0}"
84
- aria-haspopup="${0}"
85
- aria-hidden="${0}"
86
- aria-invalid="${0}"
87
- aria-keyshortcuts="${0}"
88
- aria-label="${0}"
89
- aria-labelledby="${0}"
90
- aria-live="${0}"
91
- aria-owns="${0}"
92
- aria-pressed="${0}"
93
- aria-relevant="${0}"
94
- aria-roledescription="${0}"
95
- ${0}
18
+ size,
19
+ paused
20
+ }) => classNames('base', ['disabled', !!paused], [`connotation-${connotation}`, !!connotation], [`size-${size}`, !!size]);
21
+ const progressSegments = 44;
22
+ const ProgressRingTemplate = _ => html(_t || (_t = _2`
23
+ <div
24
+ role="progressbar"
25
+ aria-valuenow="${0}"
26
+ aria-valuemin="${0}"
27
+ aria-valuemax="${0}"
28
+ class="${0} ${0}"
96
29
  >
97
30
  ${0}
98
31
  ${0}
99
- ${0}
100
- ${0}
101
- </button>
102
- `), getClasses, x => x.autofocus, x => x.disabled || x.pending, x => x.formId, x => x.formaction, x => x.formenctype, x => x.formmethod, x => x.formnovalidate, x => x.formtarget, x => x.name, x => x.type, x => x.value, x => x.ariaAtomic, x => x.ariaBusy, x => x.ariaControls, x => x.ariaCurrent, x => x.ariaDescribedby, x => x.ariaDetails, x => x.ariaDisabled, x => x.ariaErrormessage, x => x.ariaExpanded, x => x.ariaFlowto, x => x.ariaHaspopup, x => x.ariaHidden, x => x.ariaInvalid, x => x.ariaKeyshortcuts, x => x.ariaLabel, x => x.ariaLabelledby, x => x.ariaLive, x => x.ariaOwns, x => x.ariaPressed, x => x.ariaRelevant, x => x.ariaRoledescription, ref('control'), () => focusTemplate, x => affixIconTemplate(x.icon), x => x.label, when(x => x.pending, html(_t2 || (_t2 = _`<${0} class="pending" size="-5"></${0}>`), progressTag, progressTag)));
103
- };
32
+ </div>
33
+ `), x => x.value, x => x.min, x => x.max, x => x.paused ? 'paused' : '', getClasses, when(x => typeof x.value === 'number', html(_t2 || (_t2 = _2`
34
+ <svg
35
+ class="progress"
36
+ viewBox="0 0 16 16"
37
+ >
38
+ <circle
39
+ class="background"
40
+ cx="8px"
41
+ cy="8px"
42
+ r="7px"
43
+ ></circle>
44
+ <circle
45
+ class="determinate"
46
+ style="stroke-dasharray: ${0}px ${0}px"
47
+ cx="8px"
48
+ cy="8px"
49
+ r="7px"
50
+ ></circle>
51
+ </svg>
52
+ `), x => progressSegments * x.percentComplete / 100, progressSegments)), when(x => typeof x.value !== 'number', html(_t3 || (_t3 = _2`
53
+ <svg class="progress" viewBox="0 0 16 16">
54
+ <circle
55
+ class="background"
56
+ cx="8px"
57
+ cy="8px"
58
+ r="7px"
59
+ ></circle>
60
+ <circle
61
+ class="indeterminate-indicator-1"
62
+ cx="8px"
63
+ cy="8px"
64
+ r="7px"
65
+ ></circle>
66
+ </svg>
67
+ `))));
104
68
 
105
- const buttonDefinition = Button.compose({
106
- baseName: 'button',
107
- baseClass: Button$1,
108
- template: buttonTemplate,
109
- styles: css_248z,
110
- shadowOptions: {
111
- delegatesFocus: true
112
- }
69
+ const progressRingDefinition = ProgressRing.compose({
70
+ baseName: 'progress-ring',
71
+ template: ProgressRingTemplate,
72
+ styles: css_248z
113
73
  });
114
- const buttonRegistries = [buttonDefinition(), ...iconRegistries, ...focusRegistries, ...progressRingRegistries];
115
- const registerButton = registerFactory(buttonRegistries);
74
+ const progressRingRegistries = [progressRingDefinition()];
75
+ const registerProgressRing = registerFactory(progressRingRegistries);
116
76
 
117
- export { Button as B, buttonDefinition as a, buttonRegistries as b, registerButton as r };
77
+ export { ProgressRing as P, progressRingDefinition as a, progressRingRegistries as p, registerProgressRing as r };
@@ -1,4 +1,4 @@
1
- import { i as descriptors, k as functionUncurryThis, K as functionCall, l as fails$1, $ as objectKeys$1, a0 as toObject$1, a1 as indexedObject, a2 as objectGetOwnPropertySymbols, a3 as objectPropertyIsEnumerable, G as _export } from './index.js';
1
+ import { i as descriptors, k as functionUncurryThis, K as functionCall, l as fails$1, a1 as objectKeys$1, a2 as toObject$1, a3 as indexedObject, a4 as objectGetOwnPropertySymbols, a5 as objectPropertyIsEnumerable, G as _export } from './index.js';
2
2
 
3
3
  var DESCRIPTORS = descriptors;
4
4
  var uncurryThis = functionUncurryThis;
@@ -1,4 +1,4 @@
1
- import { a as attr, o as observable, V as booleanConverter, e as emptyArray, W as DOM } from './index.js';
1
+ import { a as attr, o as observable, X as booleanConverter, e as emptyArray, Y as DOM } from './index.js';
2
2
  import { d as keyEnter } from './key-codes.js';
3
3
 
4
4
  const proxySlotName = "form-associated-proxy";
@@ -1,10 +1,10 @@
1
- import { _ as __decorate, a as attr, b as __metadata, o as observable, a6 as volatile, h as html, U as __classPrivateFieldGet, a5 as __classPrivateFieldSet } from './index.js';
1
+ import { _ as __decorate, a as attr, b as __metadata, o as observable, V as volatile, h as html, U as __classPrivateFieldGet, W as __classPrivateFieldSet } from './index.js';
2
2
  import { I as Icon } from './icon.js';
3
3
  import { w as when } from './when.js';
4
4
 
5
- var css_248z = "/**\n * Do not edit directly\n * Generated on Tue, 18 Apr 2023 16:20:35 GMT\n */\n.message {\n display: flex;\n contain: inline-size;\n font: var(--vvd-typography-base-condensed);\n gap: 4px;\n grid-column: 1/-1;\n}\n.message-text {\n color: var(--vvd-color-canvas-text);\n}\n.helper-message .message-text {\n color: var(--_low-ink-color);\n}\n.message-icon {\n font-size: 16px;\n}\n.success-message .message-icon {\n color: var(--vvd-color-success-500);\n}\n.error-message .message-icon {\n color: var(--vvd-color-alert-500);\n}";
5
+ var css_248z = "/**\n * Do not edit directly\n * Generated on Thu, 27 Apr 2023 09:20:45 GMT\n */\n.message {\n display: flex;\n contain: inline-size;\n font: var(--vvd-typography-base-condensed);\n gap: 4px;\n grid-column: 1/-1;\n}\n.message-text {\n color: var(--vvd-color-canvas-text);\n}\n.helper-message .message-text {\n color: var(--_low-ink-color);\n}\n.message-icon {\n font-size: 16px;\n}\n.success-message .message-icon {\n color: var(--vvd-color-success-500);\n}\n.error-message .message-icon {\n color: var(--vvd-color-alert-500);\n}";
6
6
 
7
- let _ = t => t,
7
+ let _2 = t => t,
8
8
  _t,
9
9
  _t2,
10
10
  _t3;
@@ -103,7 +103,7 @@ function getFeedbackTemplate(messageType, context) {
103
103
  const iconTag = context.tagFor(Icon);
104
104
  const messageTypeConfig = MessageTypeMap[messageType];
105
105
  const iconType = messageTypeConfig.iconType;
106
- return html(_t || (_t = _`
106
+ return html(_t || (_t = _2`
107
107
  <style>
108
108
  ${0}
109
109
 
@@ -111,7 +111,7 @@ function getFeedbackTemplate(messageType, context) {
111
111
  <div class="message ${0}-message">
112
112
  ${0}
113
113
  ${0}
114
- </div>`), css_248z, MessageTypeMap[messageType].className, when(() => iconType, html(_t2 || (_t2 = _`
114
+ </div>`), css_248z, MessageTypeMap[messageType].className, when(() => iconType, html(_t2 || (_t2 = _2`
115
115
  <${0} class="message-icon" name="${0}"></${0}>`), iconTag, iconType, iconTag)), feedbackMessage({
116
116
  messageProperty: MessageTypeMap[messageType].messageProperty
117
117
  }));
@@ -119,9 +119,48 @@ function getFeedbackTemplate(messageType, context) {
119
119
  function feedbackMessage({
120
120
  messageProperty
121
121
  }) {
122
- return html(_t3 || (_t3 = _`
122
+ return html(_t3 || (_t3 = _2`
123
123
  <span class="message-text">${0}</span>
124
124
  `), x => x[messageProperty]);
125
125
  }
126
+ function errorText(constructor) {
127
+ var _Decorated_shouldValidate, _Decorated_prevSuccessText;
128
+ class Decorated extends constructor {
129
+ constructor(...args) {
130
+ super(...args);
131
+ _Decorated_shouldValidate.set(this, true);
132
+ _Decorated_prevSuccessText.set(this, '');
133
+ this._validate = this.validate;
134
+ this.validate = () => {
135
+ if (__classPrivateFieldGet(this, _Decorated_shouldValidate, "f")) this._validate();
136
+ };
137
+ }
138
+ errorTextChanged(_, newmsg) {
139
+ if (newmsg) {
140
+ this.setValidity({
141
+ customError: true
142
+ }, newmsg, this.control);
143
+ __classPrivateFieldSet(this, _Decorated_prevSuccessText, this.successText, "f");
144
+ this.successText = '';
145
+ this.userValid = !this.userValid;
146
+ this.userValid = false;
147
+ __classPrivateFieldSet(this, _Decorated_shouldValidate, false, "f");
148
+ } else {
149
+ this.setValidity({
150
+ customError: false
151
+ }, '', this.control);
152
+ this.successText = __classPrivateFieldGet(this, _Decorated_prevSuccessText, "f");
153
+ this.userValid = true;
154
+ __classPrivateFieldSet(this, _Decorated_shouldValidate, true, "f");
155
+ this._validate();
156
+ }
157
+ }
158
+ }
159
+ _Decorated_shouldValidate = new WeakMap(), _Decorated_prevSuccessText = new WeakMap();
160
+ __decorate([attr({
161
+ attribute: 'error-text'
162
+ }), __metadata("design:type", String)], Decorated.prototype, "errorText", void 0);
163
+ return Decorated;
164
+ }
126
165
 
127
- export { FormElementSuccessText as F, FormElementHelperText as a, FormElementCharCount as b, formElements as f, getFeedbackTemplate as g };
166
+ export { FormElementSuccessText as F, FormElementHelperText as a, FormElementCharCount as b, errorText as e, formElements as f, getFeedbackTemplate as g };
package/shared/index.js CHANGED
@@ -6567,4 +6567,4 @@ const defaultPrefix = 'vwc';
6567
6567
  const designSystem = DesignSystem.getOrCreate();
6568
6568
  const registerFactory = registries => (prefix = defaultPrefix) => designSystem.withPrefix(prefix).register(...registries);
6569
6569
 
6570
- export { objectKeys$1 as $, AttachedBehaviorHTMLDirective as A, hasOwnProperty_1 as B, objectGetOwnPropertyDescriptor as C, isForced_1 as D, engineV8Version as E, FoundationElement as F, _export as G, defineBuiltIn$3 as H, objectSetPrototypeOf as I, setToStringTag$2 as J, functionCall as K, internalState as L, isObject$7 as M, iterators as N, Observable as O, getMethod$1 as P, lengthOfArrayLike$1 as Q, functionName as R, AttributeConfiguration as S, requireObjectCoercible$2 as T, __classPrivateFieldGet as U, booleanConverter as V, DOM as W, SubscriberSet as X, HTMLDirective as Y, HTMLView as Z, __decorate as _, attr as a, toObject$2 as a0, indexedObject as a1, objectGetOwnPropertySymbols as a2, objectPropertyIsEnumerable as a3, copyConstructorProperties$1 as a4, __classPrivateFieldSet as a5, volatile as a6, designSystem as a7, __metadata as b, classofRaw as c, getBuiltIn$4 as d, emptyArray as e, objectDefineProperty as f, global$b as g, html as h, descriptors as i, objectIsPrototypeOf as j, functionUncurryThis as k, fails$a as l, isCallable$e as m, nullableNumberConverter as n, observable as o, inspectSource$1 as p, anObject$5 as q, registerFactory as r, isNullOrUndefined$2 as s, tryToString$1 as t, functionBindNative as u, aCallable$1 as v, wellKnownSymbol$6 as w, engineUserAgent as x, html$2 as y, documentCreateElement$2 as z };
6570
+ export { HTMLDirective as $, AttachedBehaviorHTMLDirective as A, hasOwnProperty_1 as B, objectGetOwnPropertyDescriptor as C, isForced_1 as D, engineV8Version as E, FoundationElement as F, _export as G, defineBuiltIn$3 as H, objectSetPrototypeOf as I, setToStringTag$2 as J, functionCall as K, internalState as L, isObject$7 as M, iterators as N, Observable as O, getMethod$1 as P, lengthOfArrayLike$1 as Q, functionName as R, AttributeConfiguration as S, requireObjectCoercible$2 as T, __classPrivateFieldGet as U, volatile as V, __classPrivateFieldSet as W, booleanConverter as X, DOM as Y, SubscriberSet as Z, __decorate as _, attr as a, HTMLView as a0, objectKeys$1 as a1, toObject$2 as a2, indexedObject as a3, objectGetOwnPropertySymbols as a4, objectPropertyIsEnumerable as a5, copyConstructorProperties$1 as a6, designSystem as a7, __metadata as b, classofRaw as c, getBuiltIn$4 as d, emptyArray as e, objectDefineProperty as f, global$b as g, html as h, descriptors as i, objectIsPrototypeOf as j, functionUncurryThis as k, fails$a as l, isCallable$e as m, nullableNumberConverter as n, observable as o, inspectSource$1 as p, anObject$5 as q, registerFactory as r, isNullOrUndefined$2 as s, tryToString$1 as t, functionBindNative as u, aCallable$1 as v, wellKnownSymbol$6 as w, engineUserAgent as x, html$2 as y, documentCreateElement$2 as z };