@vonage/vivid 3.40.0 → 3.42.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 (161) hide show
  1. package/accordion/index.js +2 -2
  2. package/accordion-item/index.js +2 -2
  3. package/alert/index.js +6 -5
  4. package/audio-player/index.js +33 -0
  5. package/avatar/index.js +2 -2
  6. package/badge/index.js +2 -2
  7. package/banner/index.js +8 -5
  8. package/breadcrumb/index.js +1 -1
  9. package/breadcrumb-item/index.js +3 -3
  10. package/button/index.js +4 -4
  11. package/calendar/index.js +1 -1
  12. package/calendar-event/index.js +1 -1
  13. package/card/index.js +4 -3
  14. package/checkbox/index.js +3 -3
  15. package/combobox/index.js +8 -8
  16. package/custom-elements.json +438 -41
  17. package/data-grid/index.js +2 -2
  18. package/date-picker/index.js +9 -9
  19. package/date-range-picker/index.js +8 -8
  20. package/dialog/index.js +6 -6
  21. package/divider/index.js +1 -1
  22. package/elevation/index.js +1 -1
  23. package/empty-state/index.js +2 -2
  24. package/fab/index.js +3 -3
  25. package/file-picker/index.js +5 -5
  26. package/focus/index.js +1 -1
  27. package/header/index.js +2 -2
  28. package/icon/index.js +1 -1
  29. package/index.js +57 -56
  30. package/layout/index.js +1 -1
  31. package/lib/alert/alert.d.ts +3 -1
  32. package/lib/alert/locale.d.ts +3 -0
  33. package/lib/audio-player/audio-player.d.ts +17 -0
  34. package/lib/audio-player/audio-player.template.d.ts +4 -0
  35. package/lib/audio-player/definition.d.ts +4 -0
  36. package/lib/audio-player/locale.d.ts +5 -0
  37. package/lib/banner/banner.d.ts +3 -1
  38. package/lib/banner/locale.d.ts +3 -0
  39. package/lib/card/card.d.ts +3 -0
  40. package/lib/card/card.template.d.ts +1 -1
  41. package/lib/card/definition.d.ts +1 -0
  42. package/lib/checkbox/checkbox.d.ts +1 -0
  43. package/lib/components.d.ts +1 -0
  44. package/lib/enums.d.ts +2 -1
  45. package/lib/selectable-box/selectable-box.d.ts +2 -2
  46. package/lib/split-button/locale.d.ts +3 -0
  47. package/lib/split-button/split-button.d.ts +4 -2
  48. package/listbox/index.js +4 -4
  49. package/locales/en-GB.js +14 -0
  50. package/locales/en-US.js +14 -0
  51. package/locales/ja-JP.js +14 -0
  52. package/locales/zh-CN.js +14 -0
  53. package/menu/index.js +8 -8
  54. package/menu-item/index.js +3 -3
  55. package/nav/index.js +1 -1
  56. package/nav-disclosure/index.js +3 -3
  57. package/nav-item/index.js +3 -3
  58. package/note/index.js +2 -2
  59. package/number-field/index.js +6 -6
  60. package/option/index.js +3 -3
  61. package/package.json +1 -1
  62. package/pagination/index.js +5 -5
  63. package/popup/index.js +6 -6
  64. package/progress/index.js +1 -1
  65. package/progress-ring/index.js +1 -1
  66. package/radio/index.js +2 -2
  67. package/radio-group/index.js +2 -2
  68. package/select/index.js +8 -8
  69. package/selectable-box/index.js +5 -5
  70. package/shared/definition.js +3 -3
  71. package/shared/definition10.js +90 -159
  72. package/shared/definition11.js +151 -29
  73. package/shared/definition12.js +37 -766
  74. package/shared/definition13.js +747 -106
  75. package/shared/definition14.js +121 -198
  76. package/shared/definition15.js +167 -664
  77. package/shared/definition16.js +576 -1137
  78. package/shared/definition17.js +1278 -143
  79. package/shared/definition18.js +68 -306
  80. package/shared/definition19.js +359 -217
  81. package/shared/definition2.js +1 -1
  82. package/shared/definition20.js +259 -67
  83. package/shared/definition21.js +66 -58
  84. package/shared/definition22.js +43 -84
  85. package/shared/definition23.js +76 -2353
  86. package/shared/definition24.js +2362 -45
  87. package/shared/definition25.js +63 -27
  88. package/shared/definition26.js +24 -51
  89. package/shared/definition27.js +36 -822
  90. package/shared/definition28.js +837 -49
  91. package/shared/definition29.js +52 -89
  92. package/shared/definition3.js +1 -1
  93. package/shared/definition30.js +88 -24
  94. package/shared/definition31.js +25 -12
  95. package/shared/definition32.js +12 -52
  96. package/shared/definition33.js +28 -502
  97. package/shared/definition34.js +442 -197
  98. package/shared/definition35.js +260 -186
  99. package/shared/definition36.js +186 -75
  100. package/shared/definition37.js +70 -54
  101. package/shared/definition38.js +65 -421
  102. package/shared/definition39.js +437 -38
  103. package/shared/definition4.js +43 -16
  104. package/shared/definition40.js +32 -680
  105. package/shared/definition41.js +654 -105
  106. package/shared/definition42.js +117 -78
  107. package/shared/definition43.js +74 -567
  108. package/shared/definition44.js +567 -98
  109. package/shared/definition45.js +110 -135
  110. package/shared/definition46.js +153 -17
  111. package/shared/definition47.js +16 -79
  112. package/shared/definition48.js +53 -475
  113. package/shared/definition49.js +502 -25
  114. package/shared/definition5.js +160 -44
  115. package/shared/definition50.js +22 -121
  116. package/shared/definition51.js +113 -271
  117. package/shared/definition52.js +249 -243
  118. package/shared/definition53.js +270 -109
  119. package/shared/definition54.js +84 -74
  120. package/shared/definition55.js +114 -69
  121. package/shared/definition56.js +81 -292
  122. package/shared/definition57.js +302 -13
  123. package/shared/definition58.js +11 -41
  124. package/shared/definition59.js +20 -154
  125. package/shared/definition6.js +43 -33
  126. package/shared/definition60.js +181 -0
  127. package/shared/definition7.js +39 -106
  128. package/shared/definition8.js +122 -38
  129. package/shared/definition9.js +56 -89
  130. package/shared/enums.js +1 -0
  131. package/shared/icon.js +2 -2
  132. package/shared/index.js +1 -1
  133. package/shared/index2.js +1 -1
  134. package/shared/listbox.js +1 -1
  135. package/shared/localization/Locale.d.ts +8 -0
  136. package/shared/patterns/form-elements/form-elements.d.ts +6 -6
  137. package/shared/presentationDate.js +10 -8
  138. package/shared/text-field.js +1 -1
  139. package/side-drawer/index.js +1 -1
  140. package/slider/index.js +3 -3
  141. package/split-button/index.js +6 -3
  142. package/style.css +329 -242
  143. package/styles/core/all.css +31 -25
  144. package/styles/core/theme.css +1 -1
  145. package/styles/core/typography.css +31 -25
  146. package/styles/tokens/theme-dark.css +4 -4
  147. package/styles/tokens/theme-light.css +4 -4
  148. package/styles/tokens/vivid-2-compat.css +1 -1
  149. package/switch/index.js +3 -3
  150. package/tab/index.js +3 -3
  151. package/tab-panel/index.js +1 -1
  152. package/tabs/index.js +5 -5
  153. package/tag/index.js +3 -3
  154. package/tag-group/index.js +1 -1
  155. package/text-area/index.js +3 -3
  156. package/text-field/index.js +3 -3
  157. package/toggletip/index.js +7 -7
  158. package/tooltip/index.js +7 -7
  159. package/tree-item/index.js +3 -3
  160. package/tree-view/index.js +1 -1
  161. package/vivid.api.json +270 -1
@@ -1,13 +1,16 @@
1
- import { a as attr, h as html, r as registerFactory } from './index.js';
2
- import { a as iconRegistries } from './definition25.js';
3
- import { f as focusRegistries } from './definition57.js';
4
- import { B as BreadcrumbItem$1 } from './breadcrumb-item.js';
5
- import { t as textAnchorTemplate } from './text-anchor.template.js';
6
- import { I as Icon } from './icon.js';
1
+ import { a as attr, F as FoundationElement, o as observable, h as html, r as registerFactory } from './index.js';
2
+ import { B as Button, a as buttonRegistries } from './definition11.js';
3
+ import { a as iconRegistries } from './definition26.js';
4
+ import { C as Connotation } from './enums.js';
5
+ import { A as AffixIcon, a as affixIconTemplateFactory, I as IconWrapper } from './affix.js';
6
+ import './index2.js';
7
+ import { L as Localized } from './localized.js';
8
+ import { a as applyMixins } from './apply-mixins.js';
9
+ import { s as slotted } from './slotted.js';
7
10
  import { w as when } from './when.js';
8
11
  import { c as classNames } from './class-names.js';
9
12
 
10
- const styles = "/**\n * Do not edit directly\n * Generated on Wed, 01 Nov 2023 12:16:28 GMT\n */\n.base {\n display: flex;\n align-items: center;\n color: var(--vvd-color-canvas-text);\n font: var(--vvd-typography-base);\n}\n.base .separator {\n margin: 0 16px;\n color: var(--vvd-color-neutral-600);\n font-size: 12px;\n}\n\n.control {\n position: relative;\n font: inherit;\n}\n@supports selector(:focus-visible) {\n .control:focus-visible {\n outline: none;\n }\n}\n.control:any-link {\n color: var(--vvd-color-cta-600);\n text-decoration: none;\n}\n.control:any-link:hover {\n text-decoration: underline;\n}\n\n.focus-indicator {\n --focus-inset: -4px -8px;\n --focus-stroke-gap-color: transparent;\n border-radius: 6px;\n}\n.control:not(:focus-visible) > .focus-indicator {\n display: none;\n}";
13
+ const styles = "/**\n * Do not edit directly\n * Generated on Thu, 30 Nov 2023 11:42:28 GMT\n */\n:host {\n display: block;\n}\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 /* @cssprop [--vvd-banner-success-primary=var(--vvd-color-success-500)] */\n --_connotation-color-primary: var(--vvd-banner-success-primary, var(--vvd-color-success-500));\n /* @cssprop [--vvd-banner-success-primary-text=var(--vvd-color-canvas)] */\n --_connotation-color-primary-text: var(--vvd-banner-success-primary-text, var(--vvd-color-canvas));\n}\n.control.connotation-alert {\n /* @cssprop [--vvd-banner-alert-primary=var(--vvd-color-alert-500)] */\n --_connotation-color-primary: var(--vvd-banner-alert-primary, var(--vvd-color-alert-500));\n /* @cssprop [--vvd-banner-alert-primary-text=var(--vvd-color-canvas)] */\n --_connotation-color-primary-text: var(--vvd-banner-alert-primary-text, var(--vvd-color-canvas));\n}\n.control.connotation-announcement {\n /* @cssprop [--vvd-banner-announcement-primary=var(--vvd-color-announcement-500)] */\n --_connotation-color-primary: var(--vvd-banner-announcement-primary, var(--vvd-color-announcement-500));\n /* @cssprop [--vvd-banner-announcement-primary-text=var(--vvd-color-canvas)] */\n --_connotation-color-primary-text: var(--vvd-banner-announcement-primary-text, var(--vvd-color-canvas));\n}\n.control.connotation-warning {\n /* @cssprop [--vvd-banner-warning-primary=var(--vvd-color-warning-300)] */\n --_connotation-color-primary: var(--vvd-banner-warning-primary, var(--vvd-color-warning-300));\n /* @cssprop [--vvd-banner-warning-primary-text=var(--vvd-color-canvas-text)] */\n --_connotation-color-primary-text: var(--vvd-banner-warning-primary-text, var(--vvd-color-canvas-text));\n}\n.control:not(.connotation-success, .connotation-alert, .connotation-announcement, .connotation-warning) {\n /* @cssprop [--vvd-banner-information-primary=var(--vvd-color-information-500)] */\n --_connotation-color-primary: var(--vvd-banner-information-primary, var(--vvd-color-information-500));\n /* @cssprop [--vvd-banner-information-primary-text=var(--vvd-color-canvas)] */\n --_connotation-color-primary-text: var(--vvd-banner-information-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\n.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 font: var(--vvd-typography-base-bold);\n inline-size: 100%;\n}\n.header .content {\n display: flex;\n flex-grow: 1;\n align-items: center;\n justify-content: center;\n column-gap: 16px;\n inline-size: 100%;\n padding-inline: 16px;\n}\n.header .content slot[name=icon] {\n flex-shrink: 0;\n font-size: 20px;\n line-height: 1;\n}\n.header .content .action-items {\n flex-shrink: 0;\n}\n.header .dismiss-button {\n flex-shrink: 0;\n margin-inline-end: 8px;\n}";
11
14
 
12
15
  var __defProp = Object.defineProperty;
13
16
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
@@ -20,46 +23,127 @@ var __decorateClass = (decorators, target, key, kind) => {
20
23
  __defProp(target, key, result);
21
24
  return result;
22
25
  };
23
- class BreadcrumbItem extends BreadcrumbItem$1 {
26
+ const connotationIconMap = /* @__PURE__ */ new Map([
27
+ [Connotation.Information, "info-solid"],
28
+ [Connotation.Announcement, "megaphone-solid"],
29
+ [Connotation.Success, "check-circle-solid"],
30
+ [Connotation.Warning, "warning-solid"],
31
+ [Connotation.Alert, "error-solid"]
32
+ ]);
33
+ const defaultConnotation = (connotation = Connotation.Information) => connotationIconMap.get(connotation);
34
+ class Banner extends FoundationElement {
24
35
  constructor() {
25
- super();
36
+ super(...arguments);
37
+ this.dismissButtonAriaLabel = null;
38
+ this.role = null;
39
+ this.removable = false;
40
+ this.#handleRemoveEnd = () => {
41
+ this.$emit("removed");
42
+ this.parentElement && this.parentElement.removeChild(this);
43
+ };
44
+ this.#closeOnKeyDown = (e) => {
45
+ if (e.key !== "Escape" || !this.removable) {
46
+ return;
47
+ }
48
+ this.remove();
49
+ };
26
50
  }
51
+ get conditionedIcon() {
52
+ return this.icon ?? defaultConnotation(this.connotation);
53
+ }
54
+ connectedCallback() {
55
+ super.connectedCallback();
56
+ this.addEventListener("keydown", this.#closeOnKeyDown);
57
+ }
58
+ disconnectedCallback() {
59
+ super.disconnectedCallback();
60
+ this.removeEventListener("keydown", this.#closeOnKeyDown);
61
+ }
62
+ remove() {
63
+ this.$emit("removing");
64
+ const banner = this.shadowRoot && this.shadowRoot.querySelector(".control");
65
+ if (banner) {
66
+ banner.classList.add("removing");
67
+ banner.addEventListener("transitionend", this.#handleRemoveEnd);
68
+ }
69
+ }
70
+ #handleRemoveEnd;
71
+ #closeOnKeyDown;
27
72
  }
73
+ __decorateClass([
74
+ attr({ attribute: "dismiss-aria-label" })
75
+ ], Banner.prototype, "dismissButtonAriaLabel", 2);
28
76
  __decorateClass([
29
77
  attr
30
- ], BreadcrumbItem.prototype, "text", 2);
78
+ ], Banner.prototype, "role", 2);
79
+ __decorateClass([
80
+ attr({ attribute: "action-href" })
81
+ ], Banner.prototype, "actionHref", 2);
82
+ __decorateClass([
83
+ attr({ attribute: "action-text" })
84
+ ], Banner.prototype, "actionText", 2);
85
+ __decorateClass([
86
+ attr({ mode: "boolean" })
87
+ ], Banner.prototype, "removable", 2);
88
+ __decorateClass([
89
+ attr({ attribute: "aria-live" })
90
+ ], Banner.prototype, "ariaLive", 2);
91
+ __decorateClass([
92
+ attr()
93
+ ], Banner.prototype, "text", 2);
94
+ __decorateClass([
95
+ attr()
96
+ ], Banner.prototype, "connotation", 2);
97
+ __decorateClass([
98
+ observable
99
+ ], Banner.prototype, "actionItemsSlottedContent", 2);
100
+ applyMixins(Banner, AffixIcon);
101
+ applyMixins(Banner, Localized);
31
102
 
32
- const getClasses = (_) => classNames("base");
33
- const BreadcrumbItemTemplate = (context, definition) => {
34
- const iconTag = context.tagFor(Icon);
103
+ const getClasses = (_) => classNames(
104
+ "control",
105
+ [`connotation-${_.connotation}`, !!_.connotation]
106
+ );
107
+ function renderDismissButton(buttonTag) {
35
108
  return html`
36
- <div role="listitem" class="${getClasses}">
37
- ${when(
38
- (x) => x.text && !x.href,
39
- html`${(x) => x.text}`
40
- )}
41
-
42
- ${when(
43
- (x) => x.text && x.href && x.href.length > 0,
44
- html`${textAnchorTemplate(context)}`
45
- )}
109
+ <${buttonTag}
110
+ aria-label="${(x) => x.dismissButtonAriaLabel || x.locale.banner.dismissButtonLabel}"
111
+ part="vvd-theme-alternate"
112
+ size="condensed"
113
+ class="dismiss-button"
114
+ icon="close-line"
115
+ @click="${(x) => x.remove()}">
116
+ </${buttonTag}>`;
117
+ }
118
+ const BannerTemplate = (context) => {
119
+ const affixIconTemplate = affixIconTemplateFactory(context);
120
+ const buttonTag = context.tagFor(Button);
121
+ return html`
122
+ <div class="${getClasses}"
123
+ tabindex="${(x) => x.removable || x.actionItemsSlottedContent && x.actionItemsSlottedContent.length ? "0" : null}">
124
+ <header class="header">
125
+ <div class="content">
126
+ ${(x) => affixIconTemplate(x.conditionedIcon, IconWrapper.Slot)}
127
+ <div class="banner-message"
128
+ role="${(x) => x.role ? x.role : "status"}"
129
+ aria-live="${(x) => x.ariaLive ? x.ariaLive : "polite"}">
130
+ ${(x) => x.text}
131
+ </div>
132
+ <slot class="action-items" ${slotted("actionItemsSlottedContent")} name="action-items"></slot>
133
+ </div>
46
134
 
47
- ${when(
48
- (x) => x.separator,
49
- html`<${iconTag} class="separator" name="chevron-right-solid"></${iconTag}>`
50
- )}
51
- </div>`;
135
+ ${when((x) => x.removable, renderDismissButton(buttonTag))}
136
+ </header>
137
+ </div>
138
+ `;
52
139
  };
53
140
 
54
- const breadcrumbItemDefinition = BreadcrumbItem.compose({
55
- baseName: "breadcrumb-item",
56
- template: BreadcrumbItemTemplate,
57
- styles,
58
- shadowOptions: {
59
- delegatesFocus: true
60
- }
141
+ const bannerDefinition = Banner.compose({
142
+ baseName: "banner",
143
+ template: BannerTemplate,
144
+ styles
61
145
  });
62
- const breadcrumbItemRegistries = [breadcrumbItemDefinition(), ...iconRegistries, ...focusRegistries];
63
- const registerBreadcrumbItem = registerFactory(breadcrumbItemRegistries);
146
+ const bannerRegistries = [bannerDefinition(), ...iconRegistries, ...buttonRegistries];
147
+ const registerBanner = registerFactory(bannerRegistries);
64
148
 
65
- export { breadcrumbItemRegistries as a, breadcrumbItemDefinition as b, registerBreadcrumbItem as r };
149
+ export { bannerRegistries as a, bannerDefinition as b, registerBanner as r };
@@ -1,98 +1,65 @@
1
- import { F as FoundationElement, _ as __decorate, o as observable, h as html, r as registerFactory } from './index.js';
2
- import { s as slotted, e as elements } from './slotted.js';
1
+ import { a as attr, h as html, r as registerFactory } from './index.js';
2
+ import { a as iconRegistries } from './definition26.js';
3
+ import { f as focusRegistries } from './definition58.js';
3
4
  import { B as BreadcrumbItem$1 } from './breadcrumb-item.js';
5
+ import { t as textAnchorTemplate } from './text-anchor.template.js';
6
+ import { I as Icon } from './icon.js';
7
+ import { w as when } from './when.js';
8
+ import { c as classNames } from './class-names.js';
4
9
 
5
- /**
6
- * A Breadcrumb Custom HTML Element.
7
- * @slot - The default slot for the breadcrumb items
8
- * @csspart list - The element wrapping the slotted items
9
- *
10
- * @public
11
- */
12
- let Breadcrumb$1 = class Breadcrumb extends FoundationElement {
13
- slottedBreadcrumbItemsChanged() {
14
- if (this.$fastController.isConnected) {
15
- if (this.slottedBreadcrumbItems === undefined ||
16
- this.slottedBreadcrumbItems.length === 0) {
17
- return;
18
- }
19
- const lastNode = this.slottedBreadcrumbItems[this.slottedBreadcrumbItems.length - 1];
20
- this.slottedBreadcrumbItems.forEach((item) => {
21
- const itemIsLastNode = item === lastNode;
22
- this.setItemSeparator(item, itemIsLastNode);
23
- this.setAriaCurrent(item, itemIsLastNode);
24
- });
25
- }
26
- }
27
- setItemSeparator(item, isLastNode) {
28
- if (item instanceof BreadcrumbItem$1) {
29
- item.separator = !isLastNode;
30
- }
31
- }
32
- /**
33
- * Finds href on childnodes in the light DOM or shadow DOM.
34
- * We look in the shadow DOM because we insert an anchor when breadcrumb-item has an href.
35
- */
36
- findChildWithHref(node) {
37
- var _a, _b;
38
- if (node.childElementCount > 0) {
39
- return node.querySelector("a[href]");
40
- }
41
- else if ((_a = node.shadowRoot) === null || _a === void 0 ? void 0 : _a.childElementCount) {
42
- return (_b = node.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector("a[href]");
43
- }
44
- else
45
- return null;
46
- }
47
- /**
48
- * Sets ARIA Current for the current node
49
- * If child node with an anchor tag and with href is found then set aria-current to correct value for the child node,
50
- * otherwise apply aria-current to the host element, with an href
51
- */
52
- setAriaCurrent(item, isLastNode) {
53
- const childNodeWithHref = this.findChildWithHref(item);
54
- if (childNodeWithHref === null &&
55
- item.hasAttribute("href") &&
56
- item instanceof BreadcrumbItem$1) {
57
- isLastNode
58
- ? item.setAttribute("aria-current", "page")
59
- : item.removeAttribute("aria-current");
60
- }
61
- else if (childNodeWithHref !== null) {
62
- isLastNode
63
- ? childNodeWithHref.setAttribute("aria-current", "page")
64
- : childNodeWithHref.removeAttribute("aria-current");
65
- }
66
- }
10
+ const styles = "/**\n * Do not edit directly\n * Generated on Thu, 30 Nov 2023 11:42:28 GMT\n */\n.base {\n display: flex;\n align-items: center;\n color: var(--vvd-color-canvas-text);\n font: var(--vvd-typography-base);\n}\n.base .separator {\n margin: 0 16px;\n color: var(--vvd-color-neutral-600);\n font-size: 12px;\n}\n\n.control {\n position: relative;\n font: inherit;\n}\n@supports selector(:focus-visible) {\n .control:focus-visible {\n outline: none;\n }\n}\n.control:any-link {\n color: var(--vvd-color-cta-600);\n text-decoration: none;\n}\n.control:any-link:hover {\n text-decoration: underline;\n}\n\n.focus-indicator {\n --focus-inset: -4px -8px;\n --focus-stroke-gap-color: transparent;\n border-radius: 6px;\n}\n.control:not(:focus-visible) > .focus-indicator {\n display: none;\n}";
11
+
12
+ var __defProp = Object.defineProperty;
13
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
14
+ var __decorateClass = (decorators, target, key, kind) => {
15
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
16
+ for (var i = decorators.length - 1, decorator; i >= 0; i--)
17
+ if (decorator = decorators[i])
18
+ result = (kind ? decorator(target, key, result) : decorator(result)) || result;
19
+ if (kind && result)
20
+ __defProp(target, key, result);
21
+ return result;
67
22
  };
68
- __decorate([
69
- observable
70
- ], Breadcrumb$1.prototype, "slottedBreadcrumbItems", void 0);
23
+ class BreadcrumbItem extends BreadcrumbItem$1 {
24
+ constructor() {
25
+ super();
26
+ }
27
+ }
28
+ __decorateClass([
29
+ attr
30
+ ], BreadcrumbItem.prototype, "text", 2);
71
31
 
72
- const breadcrumbTemplate = () => html`
73
- <nav aria-label="breadcrumbs" class="base">
74
- <div role="list" class="list">
75
- <slot
76
- ${slotted({
77
- property: "slottedBreadcrumbItems",
78
- filter: elements()
79
- })}
80
- ></slot>
81
- </div>
82
- </nav>
83
- `;
32
+ const getClasses = (_) => classNames("base");
33
+ const BreadcrumbItemTemplate = (context, definition) => {
34
+ const iconTag = context.tagFor(Icon);
35
+ return html`
36
+ <div role="listitem" class="${getClasses}">
37
+ ${when(
38
+ (x) => x.text && !x.href,
39
+ html`${(x) => x.text}`
40
+ )}
84
41
 
85
- const styles = ".list {\n display: flex;\n}";
42
+ ${when(
43
+ (x) => x.text && x.href && x.href.length > 0,
44
+ html`${textAnchorTemplate(context)}`
45
+ )}
86
46
 
87
- class Breadcrumb extends Breadcrumb$1 {
88
- }
47
+ ${when(
48
+ (x) => x.separator,
49
+ html`<${iconTag} class="separator" name="chevron-right-solid"></${iconTag}>`
50
+ )}
51
+ </div>`;
52
+ };
89
53
 
90
- const breadcrumbDefinition = Breadcrumb.compose({
91
- baseName: "breadcrumb",
92
- template: breadcrumbTemplate,
93
- styles
54
+ const breadcrumbItemDefinition = BreadcrumbItem.compose({
55
+ baseName: "breadcrumb-item",
56
+ template: BreadcrumbItemTemplate,
57
+ styles,
58
+ shadowOptions: {
59
+ delegatesFocus: true
60
+ }
94
61
  });
95
- const breadcrumbRegistries = [breadcrumbDefinition()];
96
- const registerBreadcrumb = registerFactory(breadcrumbRegistries);
62
+ const breadcrumbItemRegistries = [breadcrumbItemDefinition(), ...iconRegistries, ...focusRegistries];
63
+ const registerBreadcrumbItem = registerFactory(breadcrumbItemRegistries);
97
64
 
98
- export { breadcrumbRegistries as a, breadcrumbDefinition as b, registerBreadcrumb as r };
65
+ export { breadcrumbItemRegistries as a, breadcrumbItemDefinition as b, registerBreadcrumbItem as r };
package/shared/enums.js CHANGED
@@ -27,6 +27,7 @@ var Appearance = /* @__PURE__ */ ((Appearance2) => {
27
27
  Appearance2["Subtle"] = "subtle";
28
28
  Appearance2["Ghost"] = "ghost";
29
29
  Appearance2["Listitem"] = "listitem";
30
+ Appearance2["Elevated"] = "elevated";
30
31
  return Appearance2;
31
32
  })(Appearance || {});
32
33
  var Size = /* @__PURE__ */ ((Size2) => {
package/shared/icon.js CHANGED
@@ -143,7 +143,7 @@ _curry2(function memoizeWith(mFn, fn) {
143
143
  const memoizeWith$1 = memoizeWith;
144
144
 
145
145
  const ICONS_BASE_URL = "https://icon.resources.vonage.com";
146
- const ICONS_VERSION = "4.5.0";
146
+ const ICONS_VERSION = "4.5.1";
147
147
 
148
148
  const PLACEHOLDER_ICON = `<svg width="80%" height="80%" viewBox="0 0 64 64">
149
149
  <g>
@@ -231,4 +231,4 @@ __decorateClass([
231
231
  volatile
232
232
  ], Icon.prototype, "iconUrl", 1);
233
233
 
234
- export { Icon as I };
234
+ export { Icon as I, memoizeWith$1 as m };
package/shared/index.js CHANGED
@@ -3425,7 +3425,7 @@ class ContainerImpl {
3425
3425
  return resolver.resolve(current, this);
3426
3426
  }
3427
3427
  }
3428
- throw new Error(`Unable to resolve key: ${key}`);
3428
+ throw new Error(`Unable to resolve key: ${String(key)}`);
3429
3429
  }
3430
3430
  getAll(key, searchAncestors = false) {
3431
3431
  validateKey(key);
package/shared/index2.js CHANGED
@@ -3,7 +3,7 @@ import { a as attr, o as observable, h as html } from './index.js';
3
3
  import { w as when } from './when.js';
4
4
  import enUS from '../locales/en-US.js';
5
5
 
6
- const messageStyles = "/**\n * Do not edit directly\n * Generated on Wed, 01 Nov 2023 12:16:28 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
+ const messageStyles = "/**\n * Do not edit directly\n * Generated on Thu, 30 Nov 2023 11:42:28 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}";
7
7
 
8
8
  var __defProp$1 = Object.defineProperty;
9
9
  var __getOwnPropDesc$1 = Object.getOwnPropertyDescriptor;
package/shared/listbox.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { k as keyArrowLeft, a as keyArrowRight } from './key-codes2.js';
2
2
  import { F as FoundationElement, O as Observable, _ as __decorate, a as attr, o as observable, D as DOM, n as nullableNumberConverter } from './index.js';
3
- import { i as isListboxOption } from './definition34.js';
3
+ import { i as isListboxOption } from './definition35.js';
4
4
  import { A as ARIAGlobalStatesAndProperties } from './aria-global.js';
5
5
  import { a as applyMixins } from './apply-mixins.js';
6
6
  import { a as keySpace, b as keyEscape, k as keyEnter, c as keyTab, d as keyEnd, e as keyArrowUp, f as keyArrowDown, g as keyHome } from './key-codes.js';
@@ -1,10 +1,18 @@
1
1
  import type { DatePickerLocale } from '../date-picker/locale';
2
2
  import type { FilePickerLocale } from '../../lib/file-picker/locale';
3
+ import type { AudioPlayerLocale } from '../../lib/audio-player/locale';
4
+ import type { AlertLocale } from '../../lib/alert/locale';
3
5
  import type { DialogLocale } from '../../lib/dialog/locale';
6
+ import type { BannerLocale } from '../../lib/banner/locale';
4
7
  import type { NumberFieldLocale } from '../../lib/number-field/locale';
8
+ import type { SplitButtonLocale } from '../../lib/split-button/locale';
5
9
  export interface Locale {
6
10
  datePicker: DatePickerLocale;
7
11
  filePicker: FilePickerLocale;
12
+ audioPlayer: AudioPlayerLocale;
13
+ alert: AlertLocale;
8
14
  dialog: DialogLocale;
15
+ banner: BannerLocale;
9
16
  numberField: NumberFieldLocale;
17
+ splitButton: SplitButtonLocale;
10
18
  }
@@ -33,10 +33,10 @@ export declare function formElements<T extends {
33
33
  [x: string]: any;
34
34
  label?: string | undefined;
35
35
  errorValidationMessage: string;
36
- "__#2@#forceErrorDisplay": boolean;
37
- "__#2@#hasBeenTouched": boolean;
36
+ "__#1@#forceErrorDisplay": boolean;
37
+ "__#1@#hasBeenTouched": boolean;
38
38
  connectedCallback(): void;
39
- "__#2@#handleInvalidEvent": () => void;
39
+ "__#1@#handleInvalidEvent": () => void;
40
40
  disconnectedCallback(): void;
41
41
  formResetCallback(): void;
42
42
  validate: () => void;
@@ -50,10 +50,10 @@ export declare function errorText<T extends {
50
50
  new (...args: any[]): {
51
51
  [x: string]: any;
52
52
  errorText?: string | undefined;
53
- "__#3@#blockValidateCalls": boolean;
53
+ "__#2@#blockValidateCalls": boolean;
54
54
  errorTextChanged(_: string, newErrorText: string | undefined): void;
55
- "__#3@#forceCustomError"(errorMessage: string): void;
56
- "__#3@#clearCustomErrorAndRevalidate"(): void;
55
+ "__#2@#forceCustomError"(errorMessage: string): void;
56
+ "__#2@#clearCustomErrorAndRevalidate"(): void;
57
57
  };
58
58
  } & T;
59
59
  export {};
@@ -1,10 +1,10 @@
1
- import { B as Button } from './definition10.js';
2
- import { P as Popup } from './definition59.js';
3
- import { T as TextField } from './definition52.js';
1
+ import { B as Button } from './definition11.js';
2
+ import { P as Popup } from './definition60.js';
3
+ import { T as TextField } from './definition53.js';
4
4
  import './affix.js';
5
5
  import { f as focusTemplateFactory } from './focus2.js';
6
6
  import { a as FormElementHelperText } from './index2.js';
7
- import { D as Divider } from './definition20.js';
7
+ import { D as Divider } from './definition21.js';
8
8
  import { h as html, F as FoundationElement, a as attr, o as observable, v as volatile, D as DOM } from './index.js';
9
9
  import { r as ref } from './ref.js';
10
10
  import { r as repeat } from './repeat.js';
@@ -14,7 +14,7 @@ import { L as Localized } from './localized.js';
14
14
  import { F as FormAssociated } from './form-associated.js';
15
15
  import { a as applyMixins } from './apply-mixins.js';
16
16
 
17
- const styles = "/**\n * Do not edit directly\n * Generated on Wed, 01 Nov 2023 12:16:28 GMT\n */\n:host {\n display: inline-block;\n}\n\n.base {\n display: inline-block;\n inline-size: 100%;\n}\n\n.control {\n inline-size: 100%;\n}\n\n.dialog {\n display: inline-flex;\n flex-direction: column;\n padding: 12px;\n gap: 12px;\n}\n.dialog .footer {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n padding: 8px;\n gap: 8px;\n}\n\n.segments {\n display: flex;\n gap: 24px;\n}\n\n.segment {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n.segment .header {\n display: flex;\n align-items: center;\n padding-block: 8px;\n}\n.segment .title {\n display: flex;\n flex-grow: 1;\n justify-content: center;\n}\n.segment .title-action {\n block-size: 24px;\n border-radius: 6px;\n font: var(--vvd-typography-base-extended);\n padding-inline: 6px;\n}\n\n.calendar {\n display: flex;\n flex-direction: column;\n margin-top: 8px;\n gap: 4px;\n}\n.calendar .calendar-separator {\n margin-inline: 10px;\n}\n.calendar .calendar-weekdays {\n display: flex;\n justify-content: center;\n}\n.calendar .calendar-weekday {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n block-size: 16px;\n font: var(--vvd-typography-base-condensed);\n inline-size: 40px;\n}\n.calendar .calendar-week {\n display: flex;\n justify-content: center;\n}\n.calendar .calendar-day {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n aspect-ratio: 1/1;\n block-size: 28px;\n border-radius: 50%;\n font: var(--vvd-typography-base);\n margin-inline: 6px;\n --focus-inset: -2px;\n}\n.calendar .calendar-day.start, .calendar .calendar-day.end {\n border: 2px solid var(--vvd-color-cta-50);\n background-color: var(--vvd-color-cta-200);\n}\n.calendar .calendar-day::before, .calendar .calendar-day::after {\n position: absolute;\n z-index: -1;\n display: block;\n width: 20px;\n height: 28px;\n}\n.calendar .calendar-day::before {\n right: 50%;\n}\n.calendar .calendar-day::after {\n left: 50%;\n}\n.calendar .calendar-day.range::before, .calendar .calendar-day.range::after {\n background-color: var(--vvd-color-cta-50);\n}\n.calendar .calendar-day.range:not(.start)::before, .calendar .calendar-day.range:not(.end)::after {\n content: \"\";\n}\n.calendar .calendar-day.outside-month, .calendar .calendar-day:disabled {\n color: var(--vvd-color-neutral-400);\n}\n\n.months-separator {\n margin-inline: -12px;\n}\n\n.month-grid {\n display: flex;\n flex-direction: column;\n gap: 34px;\n}\n.month-grid .months-row {\n display: flex;\n justify-content: center;\n gap: 29px;\n}\n.month-grid .month {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n aspect-ratio: 1/1;\n block-size: 48px;\n border-radius: 50%;\n font: var(--vvd-typography-base-extended);\n text-transform: uppercase;\n}\n.month-grid .month:disabled {\n color: var(--vvd-color-neutral-400);\n}\n\n.button {\n position: relative;\n padding: 0;\n border: none;\n background-color: var(--_appearance-color-fill);\n color: var(--_appearance-color-text);\n cursor: pointer;\n}\n.button {\n /* @cssprop [--vvd-date-picker-accent-primary=var(--vvd-color-canvas-text)] */\n --_connotation-color-primary: var(--vvd-date-picker-accent-primary, var(--vvd-color-canvas-text));\n /* @cssprop [--vvd-date-picker-accent-faint=var(--vvd-color-neutral-50)] */\n --_connotation-color-faint: var(--vvd-date-picker-accent-faint, var(--vvd-color-neutral-50));\n /* @cssprop [--vvd-date-picker-accent-soft=var(--vvd-color-neutral-100)] */\n --_connotation-color-soft: var(--vvd-date-picker-accent-soft, var(--vvd-color-neutral-100));\n /* @cssprop [--vvd-date-picker-accent-dim=var(--vvd-color-neutral-200)] */\n --_connotation-color-dim: var(--vvd-date-picker-accent-dim, var(--vvd-color-neutral-200));\n /* @cssprop [--vvd-date-picker-accent-pale=var(--vvd-color-neutral-300)] */\n --_connotation-color-pale: var(--vvd-date-picker-accent-pale, var(--vvd-color-neutral-300));\n}\n.button {\n --_appearance-color-text: var(--_connotation-color-primary);\n --_appearance-color-fill: transparent;\n --_appearance-color-outline: transparent;\n}\n.button: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.button: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.button:where(.selected, [aria-current]):where(:not(:disabled, .disabled, :hover, .hover)) {\n --_appearance-color-text: var(--_connotation-color-primary);\n --_appearance-color-fill: var(--_connotation-color-dim);\n --_appearance-color-outline: transparent;\n}\n.button:where(.selected, [aria-current]):where(:hover, .hover) {\n --_appearance-color-text: var(--_connotation-color-primary);\n --_appearance-color-fill: var(--_connotation-color-pale);\n --_appearance-color-outline: transparent;\n}\n.button:where(.selected, [aria-current]):where(:disabled, .disabled) {\n --_appearance-color-text: var(--_connotation-color-pale);\n --_appearance-color-fill: var(--_connotation-color-dim);\n --_appearance-color-outline: transparent;\n}\n.button .focus-indicator {\n color: var(--vvd-color-canvas-text);\n --focus-stroke-gap-color: transparent;\n}\n.button:focus-visible {\n outline: none;\n}\n.button:not(:focus-visible) .focus-indicator {\n display: none;\n}\n.button.current {\n border: 1px solid var(--vvd-color-neutral-200);\n}\n.button:disabled {\n cursor: not-allowed;\n}";
17
+ const styles = "/**\n * Do not edit directly\n * Generated on Thu, 30 Nov 2023 11:42:28 GMT\n */\n:host {\n display: inline-block;\n}\n\n.base {\n display: inline-block;\n inline-size: 100%;\n}\n\n.control {\n inline-size: 100%;\n}\n\n.dialog {\n display: inline-flex;\n flex-direction: column;\n padding: 12px;\n gap: 12px;\n}\n.dialog .footer {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n padding: 8px;\n gap: 8px;\n}\n\n.segments {\n display: flex;\n gap: 24px;\n}\n\n.segment {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n.segment .header {\n display: flex;\n align-items: center;\n padding-block: 8px;\n}\n.segment .title {\n display: flex;\n flex-grow: 1;\n justify-content: center;\n}\n.segment .title-action {\n block-size: 24px;\n border-radius: 6px;\n font: var(--vvd-typography-base-extended);\n padding-inline: 6px;\n}\n\n.calendar {\n display: flex;\n flex-direction: column;\n margin-top: 8px;\n gap: 4px;\n}\n.calendar .calendar-separator {\n margin-inline: 10px;\n}\n.calendar .calendar-weekdays {\n display: flex;\n justify-content: center;\n}\n.calendar .calendar-weekday {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n block-size: 16px;\n font: var(--vvd-typography-base-condensed);\n inline-size: 40px;\n}\n.calendar .calendar-week {\n display: flex;\n justify-content: center;\n}\n.calendar .calendar-day {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n aspect-ratio: 1/1;\n block-size: 28px;\n border-radius: 50%;\n font: var(--vvd-typography-base);\n margin-inline: 6px;\n --focus-inset: -2px;\n}\n.calendar .calendar-day.start, .calendar .calendar-day.end {\n border: 2px solid var(--vvd-color-cta-50);\n background-color: var(--vvd-color-cta-200);\n}\n.calendar .calendar-day::before, .calendar .calendar-day::after {\n position: absolute;\n z-index: -1;\n display: block;\n width: 20px;\n height: 28px;\n}\n.calendar .calendar-day::before {\n right: 50%;\n}\n.calendar .calendar-day::after {\n left: 50%;\n}\n.calendar .calendar-day.range::before, .calendar .calendar-day.range::after {\n background-color: var(--vvd-color-cta-50);\n}\n.calendar .calendar-day.range:not(.start)::before, .calendar .calendar-day.range:not(.end)::after {\n content: \"\";\n}\n.calendar .calendar-day.outside-month, .calendar .calendar-day:disabled {\n color: var(--vvd-color-neutral-400);\n}\n\n.months-separator {\n margin-inline: -12px;\n}\n\n.month-grid {\n display: flex;\n flex-direction: column;\n gap: 34px;\n}\n.month-grid .months-row {\n display: flex;\n justify-content: center;\n gap: 29px;\n}\n.month-grid .month {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n aspect-ratio: 1/1;\n block-size: 48px;\n border-radius: 50%;\n font: var(--vvd-typography-base-extended);\n text-transform: uppercase;\n}\n.month-grid .month:disabled {\n color: var(--vvd-color-neutral-400);\n}\n\n.button {\n position: relative;\n padding: 0;\n border: none;\n background-color: var(--_appearance-color-fill);\n color: var(--_appearance-color-text);\n cursor: pointer;\n}\n.button {\n /* @cssprop [--vvd-date-picker-accent-primary=var(--vvd-color-canvas-text)] */\n --_connotation-color-primary: var(--vvd-date-picker-accent-primary, var(--vvd-color-canvas-text));\n /* @cssprop [--vvd-date-picker-accent-faint=var(--vvd-color-neutral-50)] */\n --_connotation-color-faint: var(--vvd-date-picker-accent-faint, var(--vvd-color-neutral-50));\n /* @cssprop [--vvd-date-picker-accent-soft=var(--vvd-color-neutral-100)] */\n --_connotation-color-soft: var(--vvd-date-picker-accent-soft, var(--vvd-color-neutral-100));\n /* @cssprop [--vvd-date-picker-accent-dim=var(--vvd-color-neutral-200)] */\n --_connotation-color-dim: var(--vvd-date-picker-accent-dim, var(--vvd-color-neutral-200));\n /* @cssprop [--vvd-date-picker-accent-pale=var(--vvd-color-neutral-300)] */\n --_connotation-color-pale: var(--vvd-date-picker-accent-pale, var(--vvd-color-neutral-300));\n}\n.button {\n --_appearance-color-text: var(--_connotation-color-primary);\n --_appearance-color-fill: transparent;\n --_appearance-color-outline: transparent;\n}\n.button: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.button: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.button: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.button: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.button:where(.selected, [aria-current]):where(:disabled, .disabled) {\n --_appearance-color-text: var(--_connotation-color-pale);\n --_appearance-color-fill: var(--_connotation-color-dim);\n --_appearance-color-outline: transparent;\n}\n.button .focus-indicator {\n color: var(--vvd-color-canvas-text);\n --focus-stroke-gap-color: transparent;\n}\n.button:focus-visible {\n outline: none;\n}\n.button:not(:focus-visible) .focus-indicator {\n display: none;\n}\n.button.current {\n border: 1px solid var(--vvd-color-neutral-200);\n}\n.button:disabled {\n cursor: not-allowed;\n}";
18
18
 
19
19
  function _typeof(obj) {
20
20
  "@babel/helpers - typeof";
@@ -5368,6 +5368,7 @@ function renderCalendarGrid(context) {
5368
5368
  ${when(
5369
5369
  (x, c) => !c.parentContext.parentContext.parent._hideDatesOutsideMonth || !x.isOutsideMonth,
5370
5370
  html`
5371
+ <span role="gridcell">
5371
5372
  <button
5372
5373
  class="${(x, c) => classNames(
5373
5374
  "calendar-day",
@@ -5379,7 +5380,6 @@ function renderCalendarGrid(context) {
5379
5380
  ["end", c.parentContext.parentContext.parent._isDateRangeEnd(x.date)],
5380
5381
  ["outside-month", x.isOutsideMonth]
5381
5382
  )}"
5382
- role="gridcell"
5383
5383
  ?disabled="${(x, c) => !c.parentContext.parentContext.parent._isDateInValidRange(x.date)}"
5384
5384
  tabindex="${(x, c) => x.date === c.parentContext.parentContext.parent._tabbableDate ? 2 : -1}"
5385
5385
  aria-selected="${(x, c) => c.parentContext.parentContext.parent._isDateAriaSelected(x.date)}"
@@ -5394,7 +5394,8 @@ function renderCalendarGrid(context) {
5394
5394
  )}"
5395
5395
  >
5396
5396
  ${() => focusTemplate} ${(x) => x.label}
5397
- </button>`
5397
+ </button>
5398
+ </span>`
5398
5399
  )}
5399
5400
  </div>
5400
5401
  `
@@ -5422,6 +5423,7 @@ function renderMonthPickerGrid(context) {
5422
5423
  ${repeat(
5423
5424
  (x) => x,
5424
5425
  html`
5426
+ <span role="gridcell">
5425
5427
  <button
5426
5428
  class="${(x, c) => classNames(
5427
5429
  "month",
@@ -5441,7 +5443,6 @@ function renderMonthPickerGrid(context) {
5441
5443
  )
5442
5444
  ]
5443
5445
  )}"
5444
- role="gridcell"
5445
5446
  tabindex="${(x, c) => c.parentContext.parentContext.parent._tabbableMonth && areMonthsEqual(x.month, c.parentContext.parentContext.parent._tabbableMonth) ? 2 : -1}"
5446
5447
  aria-label="${(x) => x.monthName}"
5447
5448
  aria-selected="${(x, c) => areMonthsEqual(
@@ -5459,6 +5460,7 @@ function renderMonthPickerGrid(context) {
5459
5460
  >
5460
5461
  ${() => focusTemplate} ${(x) => x.label}
5461
5462
  </button>
5463
+ </span>
5462
5464
  `
5463
5465
  )}
5464
5466
  </div>
@@ -1,3 +1,3 @@
1
- const styles = "/**\n * Do not edit directly\n * Generated on Wed, 01 Nov 2023 12:16:28 GMT\n */\n:host {\n display: inline-block;\n}\n\n.base {\n --_text-field-gutter: calc(calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density, 0), 2))) / 2.5);\n --_text-field-icon-size: calc(calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density, 0), 2))) / 2);\n display: inline-grid;\n width: 100%;\n gap: 4px;\n grid-template-columns: min-content 1fr max-content;\n}\n.base {\n --_appearance-color-text: var(--vvd-color-canvas-text);\n --_appearance-color-fill: var(--_connotation-color-backdrop);\n --_appearance-color-outline: var(--_connotation-color-intermediate);\n}\n.base.appearance-ghost {\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(--vvd-color-canvas-text);\n --_appearance-color-fill: var(--_connotation-color-backdrop);\n --_appearance-color-outline: var(--_connotation-color-firm);\n}\n.base:where(:hover, .hover):where(:not(:disabled, .disabled, .readonly)).appearance-ghost {\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: var(--vvd-color-neutral-100);\n --_appearance-color-outline: var(--vvd-color-neutral-300);\n}\n.base:where(:disabled, .disabled).appearance-ghost {\n --_appearance-color-text: var(--vvd-color-neutral-300);\n --_appearance-color-fill: transparent;\n --_appearance-color-outline: transparent;\n}\n.base:where(.readonly):where(:not(:disabled, .disabled)) {\n --_appearance-color-text: var(--vvd-color-canvas-text);\n --_appearance-color-fill: var(--vvd-color-neutral-200);\n --_appearance-color-outline: var(--vvd-color-neutral-400);\n}\n.base:where(.readonly):where(:not(:disabled, .disabled)).appearance-ghost {\n --_appearance-color-text: var(--vvd-color-neutral-600);\n --_appearance-color-fill: transparent;\n --_appearance-color-outline: transparent;\n}\n.base.connotation-success {\n /* @cssprop [--vvd-text-field-success-primary=var(--vvd-color-success-500)] */\n --_connotation-color-primary: var(--vvd-text-field-success-primary, var(--vvd-color-success-500));\n /* @cssprop [--vvd-text-field-success-backdrop=var(--vvd-color-success-50)] */\n --_connotation-color-backdrop: var(--vvd-text-field-success-backdrop, var(--vvd-color-success-50));\n /* @cssprop [--vvd-text-field-success-intermediate=var(--vvd-color-success-500)] */\n --_connotation-color-intermediate: var(--vvd-text-field-success-intermediate, var(--vvd-color-success-500));\n /* @cssprop [--vvd-text-field-success-firm=var(--vvd-color-success-600)] */\n --_connotation-color-firm: var(--vvd-text-field-success-firm, var(--vvd-color-success-600));\n /* @cssprop [--vvd-text-field-success-faint=var(--vvd-color-success-50)] */\n --_connotation-color-faint: var(--vvd-text-field-success-faint, var(--vvd-color-success-50));\n /* @cssprop [--vvd-text-field-success-soft=var(--vvd-color-success-100)] */\n --_connotation-color-soft: var(--vvd-text-field-success-soft, var(--vvd-color-success-100));\n}\n.base.connotation-alert {\n /* @cssprop [--vvd-text-field-alert-primary=var(--vvd-color-alert-500)] */\n --_connotation-color-primary: var(--vvd-text-field-alert-primary, var(--vvd-color-alert-500));\n /* @cssprop [--vvd-text-field-alert-backdrop=var(--vvd-color-alert-50)] */\n --_connotation-color-backdrop: var(--vvd-text-field-alert-backdrop, var(--vvd-color-alert-50));\n /* @cssprop [--vvd-text-field-alert-intermediate=var(--vvd-color-alert-500)] */\n --_connotation-color-intermediate: var(--vvd-text-field-alert-intermediate, var(--vvd-color-alert-500));\n /* @cssprop [--vvd-text-field-alert-firm=var(--vvd-color-alert-600)] */\n --_connotation-color-firm: var(--vvd-text-field-alert-firm, var(--vvd-color-alert-600));\n /* @cssprop [--vvd-text-field-alert-faint=var(--vvd-color-alert-50)] */\n --_connotation-color-faint: var(--vvd-text-field-alert-faint, var(--vvd-color-alert-50));\n /* @cssprop [--vvd-text-field-alert-soft=var(--vvd-color-alert-100)] */\n --_connotation-color-soft: var(--vvd-text-field-alert-soft, var(--vvd-color-alert-100));\n}\n.base:not(.connotation-success, .connotation-alert) {\n /* @cssprop [--vvd-text-field-accent-primary=var(--vvd-color-canvas-text)] */\n --_connotation-color-primary: var(--vvd-text-field-accent-primary, var(--vvd-color-canvas-text));\n /* @cssprop [--vvd-text-field-accent-backdrop=var(--vvd-color-canvas)] */\n --_connotation-color-backdrop: var(--vvd-text-field-accent-backdrop, var(--vvd-color-canvas));\n /* @cssprop [--vvd-text-field-accent-intermediate=var(--vvd-color-neutral-500)] */\n --_connotation-color-intermediate: var(--vvd-text-field-accent-intermediate, var(--vvd-color-neutral-500));\n /* @cssprop [--vvd-text-field-accent-firm=var(--vvd-color-canvas-text)] */\n --_connotation-color-firm: var(--vvd-text-field-accent-firm, var(--vvd-color-canvas-text));\n /* @cssprop [--vvd-text-field-accent-faint=var(--vvd-color-neutral-50)] */\n --_connotation-color-faint: var(--vvd-text-field-accent-faint, var(--vvd-color-neutral-50));\n /* @cssprop [--vvd-text-field-accent-soft=var(--vvd-color-neutral-100)] */\n --_connotation-color-soft: var(--vvd-text-field-accent-soft, var(--vvd-color-neutral-100));\n}\n@supports (user-select: none) {\n .base {\n user-select: none;\n }\n}\n.base:not(.disabled) {\n --_low-ink-color: var(--vvd-color-neutral-600);\n}\n.base.disabled {\n --_low-ink-color: var(--_appearance-color-text);\n}\n\n.label:not(slot),\n.label::slotted(label) {\n color: var(--vvd-color-canvas-text);\n contain: inline-size;\n font: var(--vvd-typography-base);\n grid-column: 1/4;\n grid-row: 1;\n}\n.char-count + .label:not(slot),\n.char-count + .label::slotted(label) {\n grid-column: 1/3;\n}\n\n.char-count {\n color: var(--_low-ink-color);\n font: var(--vvd-typography-base);\n grid-column: 3/4;\n}\n\n.fieldset {\n position: relative;\n display: flex;\n align-items: center;\n background-color: var(--_appearance-color-fill);\n font: var(--vvd-typography-base);\n grid-column: 1/4;\n padding-block: 0;\n transition: color 0.2s, background-color 0.2s;\n /* Shape */\n}\n.fieldset::after {\n position: absolute;\n display: block;\n block-size: 100%;\n border-radius: inherit;\n box-shadow: inset 0 0 0 1px var(--_appearance-color-outline);\n content: \"\";\n inline-size: 100%;\n pointer-events: none;\n transition: box-shadow 0.2s;\n}\n.fieldset:focus-visible {\n outline: none;\n}\n.base > .fieldset {\n block-size: calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density, 0), 2)));\n}\n.base:not(.shape-pill) .fieldset {\n border-radius: 6px;\n}\n.base.shape-pill .fieldset {\n border-radius: 24px;\n}\n\n.wrapper {\n block-size: 100%;\n border-radius: inherit;\n inline-size: 100%;\n}\n.wrapper:focus-visible {\n outline: none;\n}\n\n.control:not(slot), .control::slotted(input) {\n width: 100%;\n box-sizing: border-box;\n border: 0 none;\n appearance: none; /* for box-shadow visibility on IOS */\n background-color: transparent;\n block-size: 100%;\n border-radius: inherit;\n color: inherit;\n font: inherit;\n padding-block: 0;\n padding-inline-end: var(--_text-field-gutter);\n padding-inline-start: var(--_text-field-gutter);\n}\n.control:not(slot):disabled, .control::slotted(input:disabled) {\n cursor: not-allowed;\n opacity: 1; /* 2. correct opacity on iOS */\n -webkit-text-fill-color: var(--_appearance-color-text); /* 1. sets text fill to current `color` for safari */\n}\n.control:not(slot)::placeholder {\n opacity: 1 !important; /* 2. correct opacity on iOS */\n -webkit-text-fill-color: var(--_low-ink-color) !important; /* 1. sets text fill to current `color` for safari */\n}\n.control:not(slot):focus-visible, .control::slotted(input:focus-visible) {\n outline: none;\n}\n.has-icon .control:not(slot), .has-icon .control::slotted(input) {\n padding-inline-start: calc(var(--_text-field-icon-size) + var(--_text-field-gutter) * 2);\n}\n\n.icon {\n position: absolute;\n z-index: 1;\n color: var(--_low-ink-color);\n font-size: var(--_text-field-icon-size);\n inset-block-start: 50%;\n inset-inline-start: calc(100% + var(--_text-field-gutter));\n line-height: 1;\n transform: translateY(-50%);\n}\n\n.leading-items-wrapper {\n position: relative;\n}\n.base.no-leading .leading-items-wrapper {\n display: none;\n}\n\n.action-items-wrapper {\n margin-inline-end: 4px;\n}\n.base:not(.action-items) .action-items-wrapper {\n display: none;\n}\n\n.focus-indicator {\n --focus-stroke-gap-color: transparent;\n pointer-events: none;\n}\n.wrapper:not(:focus-visible, :focus-within) > .focus-indicator, .fieldset:not(:focus-visible, :focus-within) > .focus-indicator {\n display: none;\n}";
1
+ const styles = "/**\n * Do not edit directly\n * Generated on Thu, 30 Nov 2023 11:42:28 GMT\n */\n:host {\n display: inline-block;\n}\n\n.base {\n --_text-field-gutter: calc(calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density, 0), 2))) / 2.5);\n --_text-field-icon-size: calc(calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density, 0), 2))) / 2);\n display: inline-grid;\n width: 100%;\n gap: 4px;\n grid-template-columns: min-content 1fr max-content;\n}\n.base {\n --_appearance-color-text: var(--vvd-color-canvas-text);\n --_appearance-color-fill: var(--_connotation-color-backdrop);\n --_appearance-color-outline: var(--_connotation-color-intermediate);\n}\n.base.appearance-ghost {\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(--vvd-color-canvas-text);\n --_appearance-color-fill: var(--_connotation-color-backdrop);\n --_appearance-color-outline: var(--_connotation-color-firm);\n}\n.base:where(:hover, .hover):where(:not(:disabled, .disabled, .readonly)).appearance-ghost {\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: var(--vvd-color-neutral-100);\n --_appearance-color-outline: var(--vvd-color-neutral-300);\n}\n.base:where(:disabled, .disabled).appearance-ghost {\n --_appearance-color-text: var(--vvd-color-neutral-300);\n --_appearance-color-fill: transparent;\n --_appearance-color-outline: transparent;\n}\n.base:where(.readonly):where(:not(:disabled, .disabled)) {\n --_appearance-color-text: var(--vvd-color-canvas-text);\n --_appearance-color-fill: var(--vvd-color-neutral-200);\n --_appearance-color-outline: var(--vvd-color-neutral-400);\n}\n.base:where(.readonly):where(:not(:disabled, .disabled)).appearance-ghost {\n --_appearance-color-text: var(--vvd-color-neutral-600);\n --_appearance-color-fill: transparent;\n --_appearance-color-outline: transparent;\n}\n.base.connotation-success {\n /* @cssprop [--vvd-text-field-success-primary=var(--vvd-color-success-500)] */\n --_connotation-color-primary: var(--vvd-text-field-success-primary, var(--vvd-color-success-500));\n /* @cssprop [--vvd-text-field-success-backdrop=var(--vvd-color-success-50)] */\n --_connotation-color-backdrop: var(--vvd-text-field-success-backdrop, var(--vvd-color-success-50));\n /* @cssprop [--vvd-text-field-success-intermediate=var(--vvd-color-success-500)] */\n --_connotation-color-intermediate: var(--vvd-text-field-success-intermediate, var(--vvd-color-success-500));\n /* @cssprop [--vvd-text-field-success-firm=var(--vvd-color-success-600)] */\n --_connotation-color-firm: var(--vvd-text-field-success-firm, var(--vvd-color-success-600));\n /* @cssprop [--vvd-text-field-success-faint=var(--vvd-color-success-50)] */\n --_connotation-color-faint: var(--vvd-text-field-success-faint, var(--vvd-color-success-50));\n /* @cssprop [--vvd-text-field-success-soft=var(--vvd-color-success-100)] */\n --_connotation-color-soft: var(--vvd-text-field-success-soft, var(--vvd-color-success-100));\n}\n.base.connotation-alert {\n /* @cssprop [--vvd-text-field-alert-primary=var(--vvd-color-alert-500)] */\n --_connotation-color-primary: var(--vvd-text-field-alert-primary, var(--vvd-color-alert-500));\n /* @cssprop [--vvd-text-field-alert-backdrop=var(--vvd-color-alert-50)] */\n --_connotation-color-backdrop: var(--vvd-text-field-alert-backdrop, var(--vvd-color-alert-50));\n /* @cssprop [--vvd-text-field-alert-intermediate=var(--vvd-color-alert-500)] */\n --_connotation-color-intermediate: var(--vvd-text-field-alert-intermediate, var(--vvd-color-alert-500));\n /* @cssprop [--vvd-text-field-alert-firm=var(--vvd-color-alert-600)] */\n --_connotation-color-firm: var(--vvd-text-field-alert-firm, var(--vvd-color-alert-600));\n /* @cssprop [--vvd-text-field-alert-faint=var(--vvd-color-alert-50)] */\n --_connotation-color-faint: var(--vvd-text-field-alert-faint, var(--vvd-color-alert-50));\n /* @cssprop [--vvd-text-field-alert-soft=var(--vvd-color-alert-100)] */\n --_connotation-color-soft: var(--vvd-text-field-alert-soft, var(--vvd-color-alert-100));\n}\n.base:not(.connotation-success, .connotation-alert) {\n /* @cssprop [--vvd-text-field-accent-primary=var(--vvd-color-canvas-text)] */\n --_connotation-color-primary: var(--vvd-text-field-accent-primary, var(--vvd-color-canvas-text));\n /* @cssprop [--vvd-text-field-accent-backdrop=var(--vvd-color-canvas)] */\n --_connotation-color-backdrop: var(--vvd-text-field-accent-backdrop, var(--vvd-color-canvas));\n /* @cssprop [--vvd-text-field-accent-intermediate=var(--vvd-color-neutral-500)] */\n --_connotation-color-intermediate: var(--vvd-text-field-accent-intermediate, var(--vvd-color-neutral-500));\n /* @cssprop [--vvd-text-field-accent-firm=var(--vvd-color-canvas-text)] */\n --_connotation-color-firm: var(--vvd-text-field-accent-firm, var(--vvd-color-canvas-text));\n /* @cssprop [--vvd-text-field-accent-faint=var(--vvd-color-neutral-50)] */\n --_connotation-color-faint: var(--vvd-text-field-accent-faint, var(--vvd-color-neutral-50));\n /* @cssprop [--vvd-text-field-accent-soft=var(--vvd-color-neutral-100)] */\n --_connotation-color-soft: var(--vvd-text-field-accent-soft, var(--vvd-color-neutral-100));\n}\n@supports (user-select: none) {\n .base {\n user-select: none;\n }\n}\n.base:not(.disabled) {\n --_low-ink-color: var(--vvd-color-neutral-600);\n}\n.base.disabled {\n --_low-ink-color: var(--_appearance-color-text);\n}\n\n.label:not(slot),\n.label::slotted(label) {\n color: var(--vvd-color-canvas-text);\n contain: inline-size;\n font: var(--vvd-typography-base);\n grid-column: 1/4;\n grid-row: 1;\n}\n.char-count + .label:not(slot),\n.char-count + .label::slotted(label) {\n grid-column: 1/3;\n}\n\n.char-count {\n color: var(--_low-ink-color);\n font: var(--vvd-typography-base);\n grid-column: 3/4;\n}\n\n.fieldset {\n position: relative;\n display: flex;\n align-items: center;\n background-color: var(--_appearance-color-fill);\n font: var(--vvd-typography-base);\n grid-column: 1/4;\n padding-block: 0;\n transition: color 0.2s, background-color 0.2s;\n /* Shape */\n}\n.fieldset::after {\n position: absolute;\n display: block;\n block-size: 100%;\n border-radius: inherit;\n box-shadow: inset 0 0 0 1px var(--_appearance-color-outline);\n content: \"\";\n inline-size: 100%;\n pointer-events: none;\n transition: box-shadow 0.2s;\n}\n.fieldset:focus-visible {\n outline: none;\n}\n.base > .fieldset {\n block-size: calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density, 0), 2)));\n}\n.base:not(.shape-pill) .fieldset {\n border-radius: 6px;\n}\n.base.shape-pill .fieldset {\n border-radius: 24px;\n}\n\n.wrapper {\n block-size: 100%;\n border-radius: inherit;\n inline-size: 100%;\n}\n.wrapper:focus-visible {\n outline: none;\n}\n\n.control:not(slot), .control::slotted(input) {\n width: 100%;\n box-sizing: border-box;\n border: 0 none;\n appearance: none; /* for box-shadow visibility on IOS */\n background-color: transparent;\n block-size: 100%;\n border-radius: inherit;\n color: inherit;\n font: inherit;\n padding-block: 0;\n padding-inline-end: var(--_text-field-gutter);\n padding-inline-start: var(--_text-field-gutter);\n}\n.control:not(slot):disabled, .control::slotted(input:disabled) {\n cursor: not-allowed;\n opacity: 1; /* 2. correct opacity on iOS */\n -webkit-text-fill-color: var(--_appearance-color-text); /* 1. sets text fill to current `color` for safari */\n}\n.control:not(slot)::placeholder {\n opacity: 1 !important; /* 2. correct opacity on iOS */\n -webkit-text-fill-color: var(--_low-ink-color) !important; /* 1. sets text fill to current `color` for safari */\n}\n.control:not(slot):focus-visible, .control::slotted(input:focus-visible) {\n outline: none;\n}\n.has-icon .control:not(slot), .has-icon .control::slotted(input) {\n padding-inline-start: calc(var(--_text-field-icon-size) + var(--_text-field-gutter) * 2);\n}\n\n.icon {\n position: absolute;\n z-index: 1;\n color: var(--_low-ink-color);\n font-size: var(--_text-field-icon-size);\n inset-block-start: 50%;\n inset-inline-start: calc(100% + var(--_text-field-gutter));\n line-height: 1;\n transform: translateY(-50%);\n}\n\n.leading-items-wrapper {\n position: relative;\n}\n.base.no-leading .leading-items-wrapper {\n display: none;\n}\n\n.action-items-wrapper {\n margin-inline-end: 4px;\n}\n.base:not(.action-items) .action-items-wrapper {\n display: none;\n}\n\n.focus-indicator {\n --focus-stroke-gap-color: transparent;\n pointer-events: none;\n}\n.wrapper:not(:focus-visible, :focus-within) > .focus-indicator, .fieldset:not(:focus-visible, :focus-within) > .focus-indicator {\n display: none;\n}";
2
2
 
3
3
  export { styles as s };
@@ -1,4 +1,4 @@
1
- import { r as registerSideDrawer } from '../shared/definition42.js';
1
+ import { r as registerSideDrawer } from '../shared/definition43.js';
2
2
  import '../shared/index.js';
3
3
  import '../shared/when.js';
4
4
  import '../shared/class-names.js';
package/slider/index.js CHANGED
@@ -1,6 +1,6 @@
1
- import { r as registerSlider } from '../shared/definition43.js';
1
+ import { r as registerSlider } from '../shared/definition44.js';
2
2
  import '../shared/index.js';
3
- import '../shared/definition57.js';
3
+ import '../shared/definition58.js';
4
4
  import '../shared/focus.js';
5
5
  import '../shared/direction.js';
6
6
  import '../shared/numbers.js';
@@ -8,8 +8,8 @@ import '../shared/form-associated.js';
8
8
  import '../shared/key-codes.js';
9
9
  import '../shared/aria.js';
10
10
  import '../shared/focus2.js';
11
- import '../shared/ref.js';
12
11
  import '../shared/aria2.js';
12
+ import '../shared/ref.js';
13
13
  import '../shared/class-names.js';
14
14
 
15
15
  registerSlider();