@vonage/vivid 4.25.0 → 4.26.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 (149) hide show
  1. package/custom-elements.json +1496 -386
  2. package/lib/accordion-item/accordion-item.d.ts +1 -1
  3. package/lib/action-group/action-group.d.ts +1 -1
  4. package/lib/alert/alert.d.ts +2 -2
  5. package/lib/audio-player/audio-player.d.ts +1 -1
  6. package/lib/badge/badge.d.ts +1 -1
  7. package/lib/banner/banner.d.ts +3 -3
  8. package/lib/breadcrumb/breadcrumb.d.ts +1 -1
  9. package/lib/breadcrumb-item/breadcrumb-item.d.ts +1 -1
  10. package/lib/button/button.d.ts +3 -3
  11. package/lib/calendar/calendar.d.ts +2 -0
  12. package/lib/calendar-event/calendar-event.d.ts +1 -1
  13. package/lib/card/card.d.ts +1 -1
  14. package/lib/checkbox/checkbox.d.ts +3 -3
  15. package/lib/combobox/combobox.d.ts +3 -3
  16. package/lib/data-grid/data-grid-cell.d.ts +4 -2
  17. package/lib/data-grid/data-grid-row.d.ts +1 -0
  18. package/lib/data-grid/data-grid.d.ts +1 -1
  19. package/lib/date-picker/date-picker.d.ts +4 -4
  20. package/lib/date-range-picker/date-range-picker.d.ts +2 -2
  21. package/lib/date-time-picker/date-time-picker.d.ts +4 -4
  22. package/lib/dial-pad/dial-pad.d.ts +1 -1
  23. package/lib/dialog/dialog.d.ts +3 -2
  24. package/lib/divider/divider.d.ts +1 -1
  25. package/lib/fab/fab.d.ts +1 -1
  26. package/lib/file-picker/file-picker.d.ts +3 -3
  27. package/lib/header/header.d.ts +1 -1
  28. package/lib/menu/menu.d.ts +1 -1
  29. package/lib/menu-item/menu-item.d.ts +2 -2
  30. package/lib/nav/nav.d.ts +1 -1
  31. package/lib/nav-disclosure/nav-disclosure.d.ts +2 -2
  32. package/lib/nav-item/nav-item.d.ts +2 -2
  33. package/lib/note/note.d.ts +1 -1
  34. package/lib/number-field/locale.d.ts +3 -2
  35. package/lib/number-field/number-field.d.ts +5 -5
  36. package/lib/option/option.d.ts +2 -2
  37. package/lib/pagination/locale.d.ts +5 -0
  38. package/lib/pagination/pagination.d.ts +341 -2
  39. package/lib/popup/popup.d.ts +1 -0
  40. package/lib/progress/progress.d.ts +1 -1
  41. package/lib/progress-ring/progress-ring.d.ts +1 -1
  42. package/lib/radio-group/radio-group.d.ts +1 -1
  43. package/lib/range-slider/range-slider.d.ts +1 -1
  44. package/lib/rich-text-editor/menubar/menubar.d.ts +1 -1
  45. package/lib/rich-text-editor/rich-text-editor.d.ts +1 -1
  46. package/lib/searchable-select/option-tag.d.ts +1 -1
  47. package/lib/searchable-select/searchable-select.d.ts +5 -5
  48. package/lib/select/select.d.ts +4 -4
  49. package/lib/selectable-box/selectable-box.d.ts +1 -1
  50. package/lib/slider/slider.d.ts +2 -2
  51. package/lib/split-button/split-button.d.ts +3 -3
  52. package/lib/switch/switch.d.ts +1 -1
  53. package/lib/tab/tab.d.ts +3 -3
  54. package/lib/tab-panel/tab-panel.d.ts +1 -1
  55. package/lib/tag/tag.d.ts +2 -2
  56. package/lib/tag-group/tag-group.d.ts +1 -1
  57. package/lib/text-area/text-area.d.ts +4 -4
  58. package/lib/text-field/text-field.d.ts +5 -5
  59. package/lib/time-picker/time-picker.d.ts +2 -2
  60. package/lib/tree-item/tree-item.d.ts +2 -2
  61. package/lib/tree-view/tree-view.d.ts +1 -1
  62. package/lib/video-player/video-player.d.ts +1 -1
  63. package/locales/de-DE.cjs +21 -3
  64. package/locales/de-DE.js +21 -3
  65. package/locales/en-GB.cjs +21 -3
  66. package/locales/en-GB.js +21 -3
  67. package/locales/en-US.cjs +21 -3
  68. package/locales/en-US.js +21 -3
  69. package/locales/ja-JP.cjs +21 -3
  70. package/locales/ja-JP.js +21 -3
  71. package/locales/zh-CN.cjs +21 -3
  72. package/locales/zh-CN.js +21 -3
  73. package/package.json +1 -1
  74. package/shared/aria/delegates-aria.d.ts +1 -1
  75. package/shared/aria/host-semantics.d.ts +1 -1
  76. package/shared/definition.cjs +19 -3
  77. package/shared/definition.js +20 -4
  78. package/shared/definition11.cjs +1 -1
  79. package/shared/definition11.js +1 -1
  80. package/shared/definition13.cjs +25 -0
  81. package/shared/definition13.js +26 -1
  82. package/shared/definition15.cjs +1 -1
  83. package/shared/definition15.js +1 -1
  84. package/shared/definition16.cjs +1 -1
  85. package/shared/definition16.js +1 -1
  86. package/shared/definition17.cjs +601 -521
  87. package/shared/definition17.js +599 -519
  88. package/shared/definition21.cjs +2 -2
  89. package/shared/definition21.js +2 -2
  90. package/shared/definition22.cjs +9 -3
  91. package/shared/definition22.js +9 -3
  92. package/shared/definition28.cjs +1 -1
  93. package/shared/definition28.js +1 -1
  94. package/shared/definition3.cjs +1 -1
  95. package/shared/definition3.js +1 -1
  96. package/shared/definition31.cjs +1 -1
  97. package/shared/definition31.js +1 -1
  98. package/shared/definition32.cjs +1 -1
  99. package/shared/definition32.js +1 -1
  100. package/shared/definition36.cjs +40 -29
  101. package/shared/definition36.js +33 -22
  102. package/shared/definition38.cjs +30 -23
  103. package/shared/definition38.js +30 -23
  104. package/shared/definition42.cjs +2 -2
  105. package/shared/definition42.js +2 -2
  106. package/shared/definition45.cjs +2 -2
  107. package/shared/definition45.js +2 -2
  108. package/shared/definition46.cjs +1 -1
  109. package/shared/definition46.js +1 -1
  110. package/shared/definition49.cjs +2 -2
  111. package/shared/definition49.js +2 -2
  112. package/shared/definition63.cjs +2 -2
  113. package/shared/definition63.js +2 -2
  114. package/shared/definition67.cjs +9 -1
  115. package/shared/definition67.js +10 -2
  116. package/shared/feedback/feedback-message.d.ts +1 -1
  117. package/shared/feedback/mixins.d.ts +2 -2
  118. package/shared/foundation/button/button.d.ts +1 -1
  119. package/shared/foundation/vivid-element/vivid-element.d.ts +2 -0
  120. package/shared/key-codes.js +1 -1
  121. package/shared/localization/Locale.d.ts +2 -0
  122. package/shared/mixins.cjs +4 -1
  123. package/shared/mixins.js +4 -1
  124. package/shared/patterns/affix.d.ts +2 -2
  125. package/shared/patterns/char-count/char-count.d.ts +1 -1
  126. package/shared/patterns/form-elements/with-success-text.d.ts +1 -1
  127. package/shared/patterns/linkable.d.ts +1 -1
  128. package/shared/patterns/localized.d.ts +1 -1
  129. package/shared/patterns/trapped-focus.d.ts +1 -1
  130. package/shared/picker-field/mixins/calendar-picker.d.ts +1 -1
  131. package/shared/picker-field/mixins/calendar-picker.template.d.ts +1 -1
  132. package/shared/picker-field/mixins/inline-time-picker/inline-time-picker.d.ts +1 -1
  133. package/shared/picker-field/mixins/min-max-calendar-picker.d.ts +2 -2
  134. package/shared/picker-field/mixins/single-date-picker.d.ts +3 -3
  135. package/shared/picker-field/mixins/single-value-picker.d.ts +1 -1
  136. package/shared/picker-field/mixins/time-selection-picker.d.ts +2 -2
  137. package/shared/picker-field/mixins/time-selection-picker.template.d.ts +2 -2
  138. package/shared/picker-field/picker-field.d.ts +3 -3
  139. package/shared/picker-field.template.cjs +13 -13
  140. package/shared/picker-field.template.js +13 -13
  141. package/shared/vivid-element.cjs +11 -1
  142. package/shared/vivid-element.js +11 -1
  143. package/styles/core/all.css +1 -1
  144. package/styles/core/theme.css +1 -1
  145. package/styles/core/typography.css +1 -1
  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/vivid.api.json +154 -66
@@ -1,5 +1,6 @@
1
1
  import { B as Button, b as buttonDefinition } from './definition11.js';
2
2
  import { V as VividElement, a as attr, o as observable, v as volatile, h as html, d as createRegisterFunction, f as defineVividComponent } from './vivid-element.js';
3
+ import { L as Localized } from './localized.js';
3
4
  import { b as Size, S as Shape } from './enums.js';
4
5
  import { e as elements } from './slotted.js';
5
6
  import { c as classNames } from './class-names.js';
@@ -25,7 +26,7 @@ const totalConverter = {
25
26
  fromView: (value) => parseInt(value, 10),
26
27
  toView: (value) => value.toString()
27
28
  };
28
- class Pagination extends VividElement {
29
+ class Pagination extends Localized(VividElement) {
29
30
  constructor() {
30
31
  super();
31
32
  this.navIcons = false;
@@ -167,21 +168,25 @@ const paginationButtonRenderer = (buttonTag) => html` ${when(
167
168
  (value) => value !== "...",
168
169
  html`
169
170
  <${buttonTag} class="vwc-pagination-button"
170
- label="${(value) => value}"
171
- appearance="${getButtonAppearance}"
172
- size="${(_, { parent: x }) => getPaginationSize(x)}"
173
- shape="${(_, { parent: x }) => getPaginationShape(x)}"
174
- style="inline-size: ${(value) => getPaginationButtonWidth(value)};"
175
- tabindex="0"
176
- aria-current="${(value, { parent }) => parent.selectedIndex === Number(value) - 1}"
177
- @click="${handleSelection}"
178
- @keydown="${handleKeyDown}">
171
+ label="${(value) => value}"
172
+ appearance="${getButtonAppearance}"
173
+ size="${(_, { parent: x }) => getPaginationSize(x)}"
174
+ shape="${(_, { parent: x }) => getPaginationShape(x)}"
175
+ style="inline-size: ${(value) => getPaginationButtonWidth(value)};"
176
+ tabindex="0"
177
+ aria-label="${(value, { parent: x }) => x.locale.pagination.goToPageLabel(value)}"
178
+ aria-current="${(value, { parent }) => parent.selectedIndex === Number(value) - 1}"
179
+ @click="${handleSelection}"
180
+ @keydown="${handleKeyDown}">
179
181
  </${buttonTag}>
180
182
  `
181
183
  )}
182
184
  ${when(
183
185
  (value) => value === "...",
184
- html` <div class="dots size-${(_, { parent: x }) => getPaginationSize(x)}">
186
+ html` <div
187
+ class="dots size-${(_, { parent: x }) => getPaginationSize(x)}"
188
+ aria-hidden="true"
189
+ >
185
190
  ...
186
191
  </div>`
187
192
  )}`;
@@ -206,12 +211,13 @@ const PaginationTemplate = (context) => {
206
211
  return html`
207
212
  <div class="${getClasses}">
208
213
  <${buttonTag} class="prev-button" ${ref("prevButton")}
209
- label="${(x) => !x.navIcons ? "Previous" : null}"
210
- icon="${(x) => x.navIcons ? "chevron-left-line" : null}"
211
- size="${getPaginationSize}"
212
- shape="${getPaginationShape}"
213
- ?disabled="${(x) => x.total === 0 || x.selectedIndex === 0}"
214
- @click="${(x) => x.selectedIndex !== void 0 && x.selectedIndex--}"
214
+ label="${(x) => !x.navIcons ? "Previous" : null}"
215
+ icon="${(x) => x.navIcons ? "chevron-left-line" : null}"
216
+ size="${getPaginationSize}"
217
+ shape="${getPaginationShape}"
218
+ ?disabled="${(x) => x.total === 0 || x.selectedIndex === 0}"
219
+ @click="${(x) => x.selectedIndex !== void 0 && x.selectedIndex--}"
220
+ aria-label="${(x) => x.locale.pagination.previousPageLabel}"
215
221
  ></${buttonTag}>
216
222
  <div id="buttons-wrapper" class="buttons-wrapper" ${children({
217
223
  property: "paginationButtons",
@@ -220,12 +226,13 @@ const PaginationTemplate = (context) => {
220
226
  ${repeat((x) => x.pagesList, paginationButtonTemplate, { positioning: true })}
221
227
  </div>
222
228
  <${buttonTag} class="next-button" ${ref("nextButton")}
223
- label="${(x) => !x.navIcons ? "Next" : null}"
224
- icon="${(x) => x.navIcons ? "chevron-right-line" : null}"
225
- size="${getPaginationSize}"
226
- shape="${getPaginationShape}"
227
- ?disabled="${(x) => x.total === 0 || x.selectedIndex === x.total - 1}"
228
- @click="${(x) => x.selectedIndex !== void 0 && x.selectedIndex++}"
229
+ label="${(x) => !x.navIcons ? "Next" : null}"
230
+ icon="${(x) => x.navIcons ? "chevron-right-line" : null}"
231
+ size="${getPaginationSize}"
232
+ shape="${getPaginationShape}"
233
+ ?disabled="${(x) => x.total === 0 || x.selectedIndex === x.total - 1}"
234
+ @click="${(x) => x.selectedIndex !== void 0 && x.selectedIndex++}"
235
+ aria-label="${(x) => x.locale.pagination.nextPageLabel}"
229
236
  ></${buttonTag}>
230
237
  </div>`;
231
238
  };
@@ -114,7 +114,7 @@ class Radio extends withErrorText.WithErrorText(
114
114
  connectedCallback() {
115
115
  super.connectedCallback();
116
116
  vividElement.DOM.queueUpdate(this.validate);
117
- if (this.parentElement.getAttribute("role") !== "radiogroup" && this.getAttribute("tabindex") === null) {
117
+ if (this.parentElement.getAttribute("data-vvd-component") !== "radio-group" && this.getAttribute("tabindex") === null) {
118
118
  if (!this.disabled) {
119
119
  this.setAttribute("tabindex", "0");
120
120
  }
@@ -130,7 +130,7 @@ class Radio extends withErrorText.WithErrorText(
130
130
  }
131
131
  isInsideRadioGroup() {
132
132
  const parent = this.closest(
133
- "[role=radiogroup]"
133
+ '[data-vvd-component="radio-group"]'
134
134
  );
135
135
  return parent !== null;
136
136
  }
@@ -112,7 +112,7 @@ class Radio extends WithErrorText(
112
112
  connectedCallback() {
113
113
  super.connectedCallback();
114
114
  DOM.queueUpdate(this.validate);
115
- if (this.parentElement.getAttribute("role") !== "radiogroup" && this.getAttribute("tabindex") === null) {
115
+ if (this.parentElement.getAttribute("data-vvd-component") !== "radio-group" && this.getAttribute("tabindex") === null) {
116
116
  if (!this.disabled) {
117
117
  this.setAttribute("tabindex", "0");
118
118
  }
@@ -128,7 +128,7 @@ class Radio extends WithErrorText(
128
128
  }
129
129
  isInsideRadioGroup() {
130
130
  const parent = this.closest(
131
- "[role=radiogroup]"
131
+ '[data-vvd-component="radio-group"]'
132
132
  );
133
133
  return parent !== null;
134
134
  }
@@ -21,7 +21,7 @@ const slotted = require('./slotted.cjs');
21
21
  const classNames = require('./class-names.cjs');
22
22
  const repeat = require('./repeat.cjs');
23
23
 
24
- const styles = ".chevron{display:flex;flex-shrink:0;font:var(--vvd-typography-base-extended);transform:rotate(0);transition:transform .2s}:host([data-expanded=true]) .chevron,:host([open]) .chevron{transform:rotate(180deg)}:not(.disabled) .chevron{cursor:pointer}.disabled .chevron{color:var(--_low-ink-color);cursor:not-allowed}:host(:focus-visible){outline:none}:host{display:inline-block;inline-size:300px;--_low-ink-color: var(--vvd-color-neutral-600)}:host([disabled]){--_low-ink-color: var(--vvd-color-neutral-400);cursor:not-allowed}.control-wrapper{display:flex;flex-direction:column;gap:4px}.label{color:var(--vvd-color-canvas-text);font:var(--vvd-typography-base)}.selection-count{color:var(--_low-ink-color);font:var(--vvd-typography-base)}.fieldset{--_connotation-color-primary: var(--vvd-searchable-select-accent-primary, var(--vvd-color-canvas-text));--_connotation-color-primary-text: var(--vvd-searchable-select-accent-primary-text, var(--vvd-color-canvas));--_connotation-color-primary-increment: var(--vvd-searchable-select-accent-primary-increment, var(--vvd-color-neutral-800));--_connotation-color-intermediate: var(--vvd-searchable-select-accent-intermediate, var(--vvd-color-neutral-500));--_connotation-color-faint: var(--vvd-searchable-select-accent-faint, var(--vvd-color-neutral-50));--_connotation-color-soft: var(--vvd-searchable-select-accent-soft, var(--vvd-color-neutral-100));--_connotation-color-firm: var(--vvd-searchable-select-accent-firm, var(--vvd-color-canvas-text));--_connotation-color-fierce: var(--vvd-searchable-select-accent-fierce, var(--vvd-color-neutral-700))}.fieldset{--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-canvas);--_appearance-color-outline: var(--vvd-color-neutral-500)}.fieldset.appearance-ghost{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.fieldset:where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-canvas);--_appearance-color-outline: var(--vvd-color-neutral-700)}.fieldset:where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)).appearance-ghost{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-faint);--_appearance-color-outline: transparent}.fieldset:where(.disabled,:disabled){--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: var(--vvd-color-neutral-100);--_appearance-color-outline: var(--vvd-color-neutral-300)}.fieldset:where(.disabled,:disabled).appearance-ghost{--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.fieldset:where(.readonly):where(:not(.disabled,:disabled)){--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-neutral-200);--_appearance-color-outline: var(--vvd-color-neutral-400)}.fieldset:where(.readonly):where(:not(.disabled,:disabled)).appearance-ghost{--_appearance-color-text: var(--vvd-color-neutral-600);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.fieldset:where(.error):where(:not(.disabled,:disabled)){--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-alert-50);--_appearance-color-outline: var(--vvd-color-alert-500)}.fieldset:where(.error):where(:not(.disabled,:disabled)).appearance-ghost{--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-alert-50);--_appearance-color-outline: transparent}.fieldset:where(.success):where(:not(.disabled,:disabled)){--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-success-50);--_appearance-color-outline: var(--vvd-color-success-500)}.fieldset:where(.success):where(:not(.disabled,:disabled)).appearance-ghost{--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-success-50);--_appearance-color-outline: transparent}.fieldset{display:flex;align-items:center;justify-content:space-between;background-color:var(--_appearance-color-fill);box-shadow:inset 0 0 0 1px var(--_appearance-color-outline);color:var(--_appearance-color-text);font:var(--vvd-typography-base);gap:8px;padding-block:8px;padding-inline:16px;transition:box-shadow .2s,background-color .2s}.fieldset:focus-within{box-shadow:0 0 0 4px color-mix(in srgb,var(--vvd-color-cta-500),transparent 85%),inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:1px solid var(--focus-stroke-color, var(--vvd-color-cta-500));outline-offset:calc(-1px - var(--focus-inset, 0px));--focus-stroke-gap-color: transparent}:host(:not([shape=pill])) .fieldset{border-radius:8px}:host([shape=pill]) .fieldset{border-radius:24px}.popup-wrapper{position:relative}.content-area{display:flex;overflow:hidden;flex:1;flex-direction:column;gap:8px;min-block-size:24px}.tag-row{display:flex;gap:8px;inline-size:100%}.tag-row.contains-only-input:not(:focus-within){display:contents}.tag-wrapper{overflow:hidden}.tag{max-inline-size:100%}input{box-sizing:border-box;flex:1;border:none;background:none;block-size:24px;font:var(--vvd-typography-base);max-inline-size:100%;min-inline-size:100px;outline:none}.contains-only-input input:not(:focus){position:absolute;block-size:0;inline-size:0;min-inline-size:0;opacity:0;pointer-events:none}.listbox{display:flex;flex-direction:column;padding:4px;gap:2px;max-block-size:var(--searchable-select-height, 408px);overflow-y:auto}.empty-message{display:flex;align-items:center;justify-content:center;color:var(--vvd-color-neutral-300);font:var(--vvd-typography-base);min-block-size:40px;text-align:center}::part(popup-base){inline-size:max-content;min-inline-size:var(--_searchable-select-fixed-width, 100%)}slot[name=icon]{font-size:20px}.visually-hidden{position:absolute;overflow:hidden;width:1px;height:1px;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}";
24
+ const styles = ".chevron{display:flex;flex-shrink:0;font:var(--vvd-typography-base-extended);transform:rotate(0);transition:transform .2s}:host([data-expanded=true]) .chevron,:host([open]) .chevron{transform:rotate(180deg)}:not(.disabled) .chevron{cursor:pointer}.disabled .chevron{color:var(--_low-ink-color);cursor:not-allowed}:host(:focus-visible){outline:none}:host{display:inline-block;inline-size:300px;--_low-ink-color: var(--vvd-color-neutral-600)}:host([disabled]){--_low-ink-color: var(--vvd-color-neutral-400);cursor:not-allowed}.control-wrapper{display:flex;flex-direction:column;gap:4px}.label{color:var(--vvd-color-canvas-text);font:var(--vvd-typography-base)}.selection-count{color:var(--_low-ink-color);font:var(--vvd-typography-base)}.fieldset{--_connotation-color-primary: var(--vvd-searchable-select-accent-primary, var(--vvd-color-canvas-text));--_connotation-color-primary-text: var(--vvd-searchable-select-accent-primary-text, var(--vvd-color-canvas));--_connotation-color-primary-increment: var(--vvd-searchable-select-accent-primary-increment, var(--vvd-color-neutral-800));--_connotation-color-intermediate: var(--vvd-searchable-select-accent-intermediate, var(--vvd-color-neutral-500));--_connotation-color-faint: var(--vvd-searchable-select-accent-faint, var(--vvd-color-neutral-50));--_connotation-color-soft: var(--vvd-searchable-select-accent-soft, var(--vvd-color-neutral-100));--_connotation-color-firm: var(--vvd-searchable-select-accent-firm, var(--vvd-color-canvas-text));--_connotation-color-fierce: var(--vvd-searchable-select-accent-fierce, var(--vvd-color-neutral-700))}.fieldset{--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-canvas);--_appearance-color-outline: var(--vvd-color-neutral-500)}.fieldset.appearance-ghost{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.fieldset:where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-canvas);--_appearance-color-outline: var(--vvd-color-neutral-700)}.fieldset:where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)).appearance-ghost{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-faint);--_appearance-color-outline: transparent}.fieldset:where(.disabled,:disabled){--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: var(--vvd-color-neutral-100);--_appearance-color-outline: var(--vvd-color-neutral-300)}.fieldset:where(.disabled,:disabled).appearance-ghost{--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.fieldset:where(.readonly):where(:not(.disabled,:disabled)){--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-neutral-200);--_appearance-color-outline: var(--vvd-color-neutral-400)}.fieldset:where(.readonly):where(:not(.disabled,:disabled)).appearance-ghost{--_appearance-color-text: var(--vvd-color-neutral-600);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.fieldset:where(.error):where(:not(.disabled,:disabled)){--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-alert-50);--_appearance-color-outline: var(--vvd-color-alert-500)}.fieldset:where(.error):where(:not(.disabled,:disabled)).appearance-ghost{--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-alert-50);--_appearance-color-outline: transparent}.fieldset:where(.success):where(:not(.disabled,:disabled)){--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-success-50);--_appearance-color-outline: var(--vvd-color-success-500)}.fieldset:where(.success):where(:not(.disabled,:disabled)).appearance-ghost{--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-success-50);--_appearance-color-outline: transparent}.fieldset{display:flex;align-items:center;justify-content:space-between;background-color:var(--_appearance-color-fill);box-shadow:inset 0 0 0 1px var(--_appearance-color-outline);color:var(--_appearance-color-text);font:var(--vvd-typography-base);gap:8px;padding-block:8px;padding-inline:16px;transition:box-shadow .2s,background-color .2s}.fieldset:focus-within{box-shadow:0 0 0 4px color-mix(in srgb,var(--vvd-color-cta-500),transparent 85%),inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:1px solid var(--focus-stroke-color, var(--vvd-color-cta-500));outline-offset:calc(-1px - var(--focus-inset, 0px));--focus-stroke-gap-color: transparent}:host(:not([shape=pill])) .fieldset{border-radius:8px}:host([shape=pill]) .fieldset{border-radius:24px}.popup-wrapper{position:relative}.content-area{display:flex;overflow:hidden;flex:1;flex-direction:column;gap:8px;min-block-size:24px}.tag-row{display:flex;gap:8px;inline-size:100%}.tag-row.contains-only-input:not(:focus-within){display:contents}.tag-wrapper{overflow:hidden}.tag{max-inline-size:100%}input{box-sizing:border-box;flex:1;border:none;background:none;block-size:24px;font:var(--vvd-typography-base);max-inline-size:100%;min-inline-size:min(100px,40%);outline:none}.contains-only-input input:not(:focus){position:absolute;block-size:0;inline-size:0;min-inline-size:0;opacity:0;pointer-events:none}.listbox{display:flex;flex-direction:column;padding:4px;gap:2px;max-block-size:var(--searchable-select-height, 408px);overflow-y:auto}.empty-message{display:flex;align-items:center;justify-content:center;color:var(--vvd-color-neutral-300);font:var(--vvd-typography-base);min-block-size:40px;text-align:center}::part(popup-base){inline-size:max-content;min-inline-size:var(--_searchable-select-fixed-width, 100%)}slot[name=icon]{font-size:20px}.visually-hidden{position:absolute;overflow:hidden;width:1px;height:1px;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}";
25
25
 
26
26
  const optionTagStyles = ".base.connotation-cta{--_connotation-color-contrast: var(--vvd-option-tag-cta-contrast, var(--vvd-color-cta-800))}.base:not(.connotation-cta){--_connotation-color-contrast: var(--vvd-option-tag-accent-contrast, var(--vvd-color-neutral-800))}.base{position:relative;display:inline-flex;box-sizing:border-box;align-items:center;background-color:var(--fill-color);block-size:calc(1px*(24 + 4*clamp(-1,var(--vvd-size-density, 0),2)));box-shadow:inset 0 0 0 1px var(--outline-color);color:var(--text-color);column-gap:8px;font:var(--vvd-typography-base-bold);max-inline-size:100%;padding-inline:8px;user-select:none;vertical-align:middle}.base:not(.disabled){--text-color: var(--_connotation-color-contrast);--fill-color: color-mix( in srgb, var(--_connotation-color-contrast), transparent 87.5% );--outline-color: transparent}.base.disabled{--text-color: var(--vvd-color-neutral-300);--fill-color: color-mix( in srgb, var(--vvd-color-neutral-800), transparent 87.5% );--outline-color: transparent}.base:not(.shape-pill){border-radius:4px}.base.shape-pill{border-radius:16px}.label{overflow:hidden;max-inline-size:100%;text-overflow:ellipsis;white-space:nowrap}slot[name=icon]{font-size:calc(calc(1px*(24 + 4*clamp(-1,var(--vvd-size-density, 0),2))) / 1.5);line-height:1}.icon-placeholder{inline-size:calc(calc(1px*(24 + 4*clamp(-1,var(--vvd-size-density, 0),2))) / 1.5)}.remove-button{display:flex;align-items:center;border-radius:inherit;cursor:pointer;outline:none}.disabled .remove-button{pointer-events:none}.remove-button:focus-visible:before{--focus-stroke-gap-color: transparent;box-shadow:0 0 0 4px color-mix(in srgb,var(--vvd-color-cta-500),transparent 85%),inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:1px solid var(--focus-stroke-color, var(--vvd-color-cta-500));outline-offset:calc(-1px - var(--focus-inset, 0px));position:absolute;z-index:1;display:block;border-radius:inherit;content:\"\";inset:0;pointer-events:none}";
27
27
 
@@ -693,7 +693,7 @@ class SearchableSelect extends mixins.WithFeedback(
693
693
  return;
694
694
  }
695
695
  const capturedOption = e.target.closest(
696
- `option,[role=option]`
696
+ `option,[role=option],[data-vvd-component=option]`
697
697
  );
698
698
  if (capturedOption && !capturedOption.disabled) {
699
699
  this.#handleOptionInteraction(capturedOption);
@@ -19,7 +19,7 @@ import { s as slotted } from './slotted.js';
19
19
  import { c as classNames } from './class-names.js';
20
20
  import { r as repeat } from './repeat.js';
21
21
 
22
- const styles = ".chevron{display:flex;flex-shrink:0;font:var(--vvd-typography-base-extended);transform:rotate(0);transition:transform .2s}:host([data-expanded=true]) .chevron,:host([open]) .chevron{transform:rotate(180deg)}:not(.disabled) .chevron{cursor:pointer}.disabled .chevron{color:var(--_low-ink-color);cursor:not-allowed}:host(:focus-visible){outline:none}:host{display:inline-block;inline-size:300px;--_low-ink-color: var(--vvd-color-neutral-600)}:host([disabled]){--_low-ink-color: var(--vvd-color-neutral-400);cursor:not-allowed}.control-wrapper{display:flex;flex-direction:column;gap:4px}.label{color:var(--vvd-color-canvas-text);font:var(--vvd-typography-base)}.selection-count{color:var(--_low-ink-color);font:var(--vvd-typography-base)}.fieldset{--_connotation-color-primary: var(--vvd-searchable-select-accent-primary, var(--vvd-color-canvas-text));--_connotation-color-primary-text: var(--vvd-searchable-select-accent-primary-text, var(--vvd-color-canvas));--_connotation-color-primary-increment: var(--vvd-searchable-select-accent-primary-increment, var(--vvd-color-neutral-800));--_connotation-color-intermediate: var(--vvd-searchable-select-accent-intermediate, var(--vvd-color-neutral-500));--_connotation-color-faint: var(--vvd-searchable-select-accent-faint, var(--vvd-color-neutral-50));--_connotation-color-soft: var(--vvd-searchable-select-accent-soft, var(--vvd-color-neutral-100));--_connotation-color-firm: var(--vvd-searchable-select-accent-firm, var(--vvd-color-canvas-text));--_connotation-color-fierce: var(--vvd-searchable-select-accent-fierce, var(--vvd-color-neutral-700))}.fieldset{--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-canvas);--_appearance-color-outline: var(--vvd-color-neutral-500)}.fieldset.appearance-ghost{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.fieldset:where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-canvas);--_appearance-color-outline: var(--vvd-color-neutral-700)}.fieldset:where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)).appearance-ghost{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-faint);--_appearance-color-outline: transparent}.fieldset:where(.disabled,:disabled){--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: var(--vvd-color-neutral-100);--_appearance-color-outline: var(--vvd-color-neutral-300)}.fieldset:where(.disabled,:disabled).appearance-ghost{--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.fieldset:where(.readonly):where(:not(.disabled,:disabled)){--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-neutral-200);--_appearance-color-outline: var(--vvd-color-neutral-400)}.fieldset:where(.readonly):where(:not(.disabled,:disabled)).appearance-ghost{--_appearance-color-text: var(--vvd-color-neutral-600);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.fieldset:where(.error):where(:not(.disabled,:disabled)){--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-alert-50);--_appearance-color-outline: var(--vvd-color-alert-500)}.fieldset:where(.error):where(:not(.disabled,:disabled)).appearance-ghost{--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-alert-50);--_appearance-color-outline: transparent}.fieldset:where(.success):where(:not(.disabled,:disabled)){--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-success-50);--_appearance-color-outline: var(--vvd-color-success-500)}.fieldset:where(.success):where(:not(.disabled,:disabled)).appearance-ghost{--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-success-50);--_appearance-color-outline: transparent}.fieldset{display:flex;align-items:center;justify-content:space-between;background-color:var(--_appearance-color-fill);box-shadow:inset 0 0 0 1px var(--_appearance-color-outline);color:var(--_appearance-color-text);font:var(--vvd-typography-base);gap:8px;padding-block:8px;padding-inline:16px;transition:box-shadow .2s,background-color .2s}.fieldset:focus-within{box-shadow:0 0 0 4px color-mix(in srgb,var(--vvd-color-cta-500),transparent 85%),inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:1px solid var(--focus-stroke-color, var(--vvd-color-cta-500));outline-offset:calc(-1px - var(--focus-inset, 0px));--focus-stroke-gap-color: transparent}:host(:not([shape=pill])) .fieldset{border-radius:8px}:host([shape=pill]) .fieldset{border-radius:24px}.popup-wrapper{position:relative}.content-area{display:flex;overflow:hidden;flex:1;flex-direction:column;gap:8px;min-block-size:24px}.tag-row{display:flex;gap:8px;inline-size:100%}.tag-row.contains-only-input:not(:focus-within){display:contents}.tag-wrapper{overflow:hidden}.tag{max-inline-size:100%}input{box-sizing:border-box;flex:1;border:none;background:none;block-size:24px;font:var(--vvd-typography-base);max-inline-size:100%;min-inline-size:100px;outline:none}.contains-only-input input:not(:focus){position:absolute;block-size:0;inline-size:0;min-inline-size:0;opacity:0;pointer-events:none}.listbox{display:flex;flex-direction:column;padding:4px;gap:2px;max-block-size:var(--searchable-select-height, 408px);overflow-y:auto}.empty-message{display:flex;align-items:center;justify-content:center;color:var(--vvd-color-neutral-300);font:var(--vvd-typography-base);min-block-size:40px;text-align:center}::part(popup-base){inline-size:max-content;min-inline-size:var(--_searchable-select-fixed-width, 100%)}slot[name=icon]{font-size:20px}.visually-hidden{position:absolute;overflow:hidden;width:1px;height:1px;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}";
22
+ const styles = ".chevron{display:flex;flex-shrink:0;font:var(--vvd-typography-base-extended);transform:rotate(0);transition:transform .2s}:host([data-expanded=true]) .chevron,:host([open]) .chevron{transform:rotate(180deg)}:not(.disabled) .chevron{cursor:pointer}.disabled .chevron{color:var(--_low-ink-color);cursor:not-allowed}:host(:focus-visible){outline:none}:host{display:inline-block;inline-size:300px;--_low-ink-color: var(--vvd-color-neutral-600)}:host([disabled]){--_low-ink-color: var(--vvd-color-neutral-400);cursor:not-allowed}.control-wrapper{display:flex;flex-direction:column;gap:4px}.label{color:var(--vvd-color-canvas-text);font:var(--vvd-typography-base)}.selection-count{color:var(--_low-ink-color);font:var(--vvd-typography-base)}.fieldset{--_connotation-color-primary: var(--vvd-searchable-select-accent-primary, var(--vvd-color-canvas-text));--_connotation-color-primary-text: var(--vvd-searchable-select-accent-primary-text, var(--vvd-color-canvas));--_connotation-color-primary-increment: var(--vvd-searchable-select-accent-primary-increment, var(--vvd-color-neutral-800));--_connotation-color-intermediate: var(--vvd-searchable-select-accent-intermediate, var(--vvd-color-neutral-500));--_connotation-color-faint: var(--vvd-searchable-select-accent-faint, var(--vvd-color-neutral-50));--_connotation-color-soft: var(--vvd-searchable-select-accent-soft, var(--vvd-color-neutral-100));--_connotation-color-firm: var(--vvd-searchable-select-accent-firm, var(--vvd-color-canvas-text));--_connotation-color-fierce: var(--vvd-searchable-select-accent-fierce, var(--vvd-color-neutral-700))}.fieldset{--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-canvas);--_appearance-color-outline: var(--vvd-color-neutral-500)}.fieldset.appearance-ghost{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.fieldset:where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-canvas);--_appearance-color-outline: var(--vvd-color-neutral-700)}.fieldset:where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)).appearance-ghost{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-faint);--_appearance-color-outline: transparent}.fieldset:where(.disabled,:disabled){--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: var(--vvd-color-neutral-100);--_appearance-color-outline: var(--vvd-color-neutral-300)}.fieldset:where(.disabled,:disabled).appearance-ghost{--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.fieldset:where(.readonly):where(:not(.disabled,:disabled)){--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-neutral-200);--_appearance-color-outline: var(--vvd-color-neutral-400)}.fieldset:where(.readonly):where(:not(.disabled,:disabled)).appearance-ghost{--_appearance-color-text: var(--vvd-color-neutral-600);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.fieldset:where(.error):where(:not(.disabled,:disabled)){--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-alert-50);--_appearance-color-outline: var(--vvd-color-alert-500)}.fieldset:where(.error):where(:not(.disabled,:disabled)).appearance-ghost{--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-alert-50);--_appearance-color-outline: transparent}.fieldset:where(.success):where(:not(.disabled,:disabled)){--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-success-50);--_appearance-color-outline: var(--vvd-color-success-500)}.fieldset:where(.success):where(:not(.disabled,:disabled)).appearance-ghost{--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-success-50);--_appearance-color-outline: transparent}.fieldset{display:flex;align-items:center;justify-content:space-between;background-color:var(--_appearance-color-fill);box-shadow:inset 0 0 0 1px var(--_appearance-color-outline);color:var(--_appearance-color-text);font:var(--vvd-typography-base);gap:8px;padding-block:8px;padding-inline:16px;transition:box-shadow .2s,background-color .2s}.fieldset:focus-within{box-shadow:0 0 0 4px color-mix(in srgb,var(--vvd-color-cta-500),transparent 85%),inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:1px solid var(--focus-stroke-color, var(--vvd-color-cta-500));outline-offset:calc(-1px - var(--focus-inset, 0px));--focus-stroke-gap-color: transparent}:host(:not([shape=pill])) .fieldset{border-radius:8px}:host([shape=pill]) .fieldset{border-radius:24px}.popup-wrapper{position:relative}.content-area{display:flex;overflow:hidden;flex:1;flex-direction:column;gap:8px;min-block-size:24px}.tag-row{display:flex;gap:8px;inline-size:100%}.tag-row.contains-only-input:not(:focus-within){display:contents}.tag-wrapper{overflow:hidden}.tag{max-inline-size:100%}input{box-sizing:border-box;flex:1;border:none;background:none;block-size:24px;font:var(--vvd-typography-base);max-inline-size:100%;min-inline-size:min(100px,40%);outline:none}.contains-only-input input:not(:focus){position:absolute;block-size:0;inline-size:0;min-inline-size:0;opacity:0;pointer-events:none}.listbox{display:flex;flex-direction:column;padding:4px;gap:2px;max-block-size:var(--searchable-select-height, 408px);overflow-y:auto}.empty-message{display:flex;align-items:center;justify-content:center;color:var(--vvd-color-neutral-300);font:var(--vvd-typography-base);min-block-size:40px;text-align:center}::part(popup-base){inline-size:max-content;min-inline-size:var(--_searchable-select-fixed-width, 100%)}slot[name=icon]{font-size:20px}.visually-hidden{position:absolute;overflow:hidden;width:1px;height:1px;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}";
23
23
 
24
24
  const optionTagStyles = ".base.connotation-cta{--_connotation-color-contrast: var(--vvd-option-tag-cta-contrast, var(--vvd-color-cta-800))}.base:not(.connotation-cta){--_connotation-color-contrast: var(--vvd-option-tag-accent-contrast, var(--vvd-color-neutral-800))}.base{position:relative;display:inline-flex;box-sizing:border-box;align-items:center;background-color:var(--fill-color);block-size:calc(1px*(24 + 4*clamp(-1,var(--vvd-size-density, 0),2)));box-shadow:inset 0 0 0 1px var(--outline-color);color:var(--text-color);column-gap:8px;font:var(--vvd-typography-base-bold);max-inline-size:100%;padding-inline:8px;user-select:none;vertical-align:middle}.base:not(.disabled){--text-color: var(--_connotation-color-contrast);--fill-color: color-mix( in srgb, var(--_connotation-color-contrast), transparent 87.5% );--outline-color: transparent}.base.disabled{--text-color: var(--vvd-color-neutral-300);--fill-color: color-mix( in srgb, var(--vvd-color-neutral-800), transparent 87.5% );--outline-color: transparent}.base:not(.shape-pill){border-radius:4px}.base.shape-pill{border-radius:16px}.label{overflow:hidden;max-inline-size:100%;text-overflow:ellipsis;white-space:nowrap}slot[name=icon]{font-size:calc(calc(1px*(24 + 4*clamp(-1,var(--vvd-size-density, 0),2))) / 1.5);line-height:1}.icon-placeholder{inline-size:calc(calc(1px*(24 + 4*clamp(-1,var(--vvd-size-density, 0),2))) / 1.5)}.remove-button{display:flex;align-items:center;border-radius:inherit;cursor:pointer;outline:none}.disabled .remove-button{pointer-events:none}.remove-button:focus-visible:before{--focus-stroke-gap-color: transparent;box-shadow:0 0 0 4px color-mix(in srgb,var(--vvd-color-cta-500),transparent 85%),inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:1px solid var(--focus-stroke-color, var(--vvd-color-cta-500));outline-offset:calc(-1px - var(--focus-inset, 0px));position:absolute;z-index:1;display:block;border-radius:inherit;content:\"\";inset:0;pointer-events:none}";
25
25
 
@@ -691,7 +691,7 @@ class SearchableSelect extends WithFeedback(
691
691
  return;
692
692
  }
693
693
  const capturedOption = e.target.closest(
694
- `option,[role=option]`
694
+ `option,[role=option],[data-vvd-component=option]`
695
695
  );
696
696
  if (capturedOption && !capturedOption.disabled) {
697
697
  this.#handleOptionInteraction(capturedOption);
@@ -399,7 +399,7 @@ class Select extends mixins.WithLightDOMFeedback(
399
399
  return;
400
400
  }
401
401
  const clickedOption = e.target.closest(
402
- `option,[role=option]`
402
+ `option,[role=option],[data-vvd-component=option]`
403
403
  );
404
404
  if (clickedOption && clickedOption.disabled) {
405
405
  return;
@@ -397,7 +397,7 @@ class Select extends WithLightDOMFeedback(
397
397
  return;
398
398
  }
399
399
  const clickedOption = e.target.closest(
400
- `option,[role=option]`
400
+ `option,[role=option],[data-vvd-component=option]`
401
401
  );
402
402
  if (clickedOption && clickedOption.disabled) {
403
403
  return;
@@ -349,9 +349,9 @@ class Slider extends localized.Localized(
349
349
  setThumbPositionForOrientation(_) {
350
350
  const percentage = this.#thumbTrackEndOffset(this.valueAsNumber);
351
351
  if (this.orientation === aria.Orientation.horizontal) {
352
- this.position = this.isDragging ? `right: ${percentage}%; transition: none;` : `right: ${percentage}%; transition: all 0.2s ease;`;
352
+ this.position = this.isDragging ? `right: ${percentage}%; transition: none;` : `right: ${percentage}%; transition: right 0.2s ease;`;
353
353
  } else {
354
- this.position = this.isDragging ? `bottom: ${percentage}%; transition: none;` : `bottom: ${percentage}%; transition: all 0.2s ease;`;
354
+ this.position = this.isDragging ? `bottom: ${percentage}%; transition: none;` : `bottom: ${percentage}%; transition: bottom 0.2s ease;`;
355
355
  }
356
356
  }
357
357
  #thumbTrackEndOffset(value) {
@@ -347,9 +347,9 @@ class Slider extends Localized(
347
347
  setThumbPositionForOrientation(_) {
348
348
  const percentage = this.#thumbTrackEndOffset(this.valueAsNumber);
349
349
  if (this.orientation === Orientation.horizontal) {
350
- this.position = this.isDragging ? `right: ${percentage}%; transition: none;` : `right: ${percentage}%; transition: all 0.2s ease;`;
350
+ this.position = this.isDragging ? `right: ${percentage}%; transition: none;` : `right: ${percentage}%; transition: right 0.2s ease;`;
351
351
  } else {
352
- this.position = this.isDragging ? `bottom: ${percentage}%; transition: none;` : `bottom: ${percentage}%; transition: all 0.2s ease;`;
352
+ this.position = this.isDragging ? `bottom: ${percentage}%; transition: none;` : `bottom: ${percentage}%; transition: bottom 0.2s ease;`;
353
353
  }
354
354
  }
355
355
  #thumbTrackEndOffset(value) {
@@ -245,11 +245,11 @@ class TreeView extends hostSemantics.HostSemantics(vividElement.VividElement) {
245
245
  */
246
246
  checkForNestedItems() {
247
247
  return this.slottedTreeItems.some((node) => {
248
- return definition.isTreeItemElement(node) && node.querySelector("[role='treeitem']");
248
+ return definition.isTreeItemElement(node) && node.querySelector("[data-vvd-component='tree-item']");
249
249
  });
250
250
  }
251
251
  getVisibleNodes() {
252
- return getDisplayedNodes(this, "[role='treeitem']");
252
+ return getDisplayedNodes(this, "[data-vvd-component='tree-item']");
253
253
  }
254
254
  }
255
255
  // @ts-expect-error Type is incorrectly non-optional
@@ -243,11 +243,11 @@ class TreeView extends HostSemantics(VividElement) {
243
243
  */
244
244
  checkForNestedItems() {
245
245
  return this.slottedTreeItems.some((node) => {
246
- return isTreeItemElement(node) && node.querySelector("[role='treeitem']");
246
+ return isTreeItemElement(node) && node.querySelector("[data-vvd-component='tree-item']");
247
247
  });
248
248
  }
249
249
  getVisibleNodes() {
250
- return getDisplayedNodes(this, "[role='treeitem']");
250
+ return getDisplayedNodes(this, "[data-vvd-component='tree-item']");
251
251
  }
252
252
  }
253
253
  // @ts-expect-error Type is incorrectly non-optional
@@ -1964,6 +1964,7 @@ class Popup extends vividElement.VividElement {
1964
1964
  this.placementStrategy = PlacementStrategy.Flip;
1965
1965
  this.animationFrame = false;
1966
1966
  this.strategy = "fixed";
1967
+ this.offset = null;
1967
1968
  this.#autoUpdateCallback = () => {
1968
1969
  this.#lastPositionUpdate = this.updatePosition();
1969
1970
  return this.#lastPositionUpdate;
@@ -1983,13 +1984,17 @@ class Popup extends vividElement.VividElement {
1983
1984
  }
1984
1985
  })
1985
1986
  ];
1987
+ let offsetValue = this.offset ?? 0;
1986
1988
  if (this.arrow) {
1989
+ offsetValue += 12;
1987
1990
  middleware = [
1988
- offset(12),
1989
1991
  ...middleware,
1990
1992
  arrow({ element: this.arrowEl, padding: 10 })
1991
1993
  ];
1992
1994
  }
1995
+ if (offsetValue > 0) {
1996
+ middleware.unshift(offset(offsetValue));
1997
+ }
1993
1998
  return middleware;
1994
1999
  }
1995
2000
  #cleanup;
@@ -2138,6 +2143,9 @@ __decorateClass([
2138
2143
  __decorateClass([
2139
2144
  vividElement.attr({ mode: "fromView" })
2140
2145
  ], Popup.prototype, "strategy");
2146
+ __decorateClass([
2147
+ vividElement.attr({ attribute: "offset", converter: vividElement.nullableNumberConverter })
2148
+ ], Popup.prototype, "offset");
2141
2149
  __decorateClass([
2142
2150
  vividElement.observable
2143
2151
  ], Popup.prototype, "anchor");
@@ -1,6 +1,6 @@
1
1
  import { B as Button, b as buttonDefinition } from './definition11.js';
2
2
  import { E as Elevation, e as elevationDefinition } from './definition65.js';
3
- import { V as VividElement, a as attr, o as observable, h as html, d as createRegisterFunction, f as defineVividComponent } from './vivid-element.js';
3
+ import { V as VividElement, a as attr, n as nullableNumberConverter, o as observable, h as html, d as createRegisterFunction, f as defineVividComponent } from './vivid-element.js';
4
4
  import { r as ref } from './ref.js';
5
5
  import { c as classNames } from './class-names.js';
6
6
  import { w as when } from './when.js';
@@ -1962,6 +1962,7 @@ class Popup extends VividElement {
1962
1962
  this.placementStrategy = PlacementStrategy.Flip;
1963
1963
  this.animationFrame = false;
1964
1964
  this.strategy = "fixed";
1965
+ this.offset = null;
1965
1966
  this.#autoUpdateCallback = () => {
1966
1967
  this.#lastPositionUpdate = this.updatePosition();
1967
1968
  return this.#lastPositionUpdate;
@@ -1981,13 +1982,17 @@ class Popup extends VividElement {
1981
1982
  }
1982
1983
  })
1983
1984
  ];
1985
+ let offsetValue = this.offset ?? 0;
1984
1986
  if (this.arrow) {
1987
+ offsetValue += 12;
1985
1988
  middleware = [
1986
- offset(12),
1987
1989
  ...middleware,
1988
1990
  arrow({ element: this.arrowEl, padding: 10 })
1989
1991
  ];
1990
1992
  }
1993
+ if (offsetValue > 0) {
1994
+ middleware.unshift(offset(offsetValue));
1995
+ }
1991
1996
  return middleware;
1992
1997
  }
1993
1998
  #cleanup;
@@ -2136,6 +2141,9 @@ __decorateClass([
2136
2141
  __decorateClass([
2137
2142
  attr({ mode: "fromView" })
2138
2143
  ], Popup.prototype, "strategy");
2144
+ __decorateClass([
2145
+ attr({ attribute: "offset", converter: nullableNumberConverter })
2146
+ ], Popup.prototype, "offset");
2139
2147
  __decorateClass([
2140
2148
  observable
2141
2149
  ], Popup.prototype, "anchor");
@@ -3,11 +3,11 @@ export type FeedbackType = 'none' | 'helper' | 'error' | 'success';
3
3
  declare const FeedbackMessage_base: {
4
4
  new (...args: any[]): {
5
5
  readonly locale: import("../localization/Locale").Locale;
6
+ connectedCallback(): void;
6
7
  specialHandling: boolean;
7
8
  _vividAriaBehaviour: import("../aria/aria-mixin").VividAriaBehaviour;
8
9
  readonly $fastController: import("@microsoft/fast-element").Controller;
9
10
  $emit(type: string, detail?: any, options?: Omit<CustomEventInit<any>, "detail"> | undefined): boolean | void;
10
- connectedCallback(): void;
11
11
  disconnectedCallback(): void;
12
12
  attributeChangedCallback(name: string, oldValue: string, newValue: string): void;
13
13
  accessKey: string;
@@ -13,11 +13,11 @@ export declare const WithFeedback: <T extends Constructor<VividElement>>(Base: T
13
13
  };
14
14
  _slottedHelperTextFeedbackType(): "none" | "helper";
15
15
  _getFeedbackTemplate(ctx: VividElementDefinitionContext): import("@microsoft/fast-element").ViewTemplate<any, any>;
16
+ connectedCallback(): void;
16
17
  specialHandling: boolean;
17
18
  _vividAriaBehaviour: import("../aria/aria-mixin").VividAriaBehaviour;
18
19
  readonly $fastController: import("@microsoft/fast-element").Controller;
19
20
  $emit(type: string, detail?: any, options?: Omit<CustomEventInit<any>, "detail"> | undefined): boolean | void;
20
- connectedCallback(): void;
21
21
  disconnectedCallback(): void;
22
22
  attributeChangedCallback(name: string, oldValue: string, newValue: string): void;
23
23
  accessKey: string;
@@ -363,11 +363,11 @@ export declare const WithLightDOMFeedback: <T extends Constructor<VividElement>>
363
363
  message: string;
364
364
  };
365
365
  _slottedHelperTextFeedbackType(): "none" | "helper";
366
+ connectedCallback(): void;
366
367
  specialHandling: boolean;
367
368
  _vividAriaBehaviour: import("../aria/aria-mixin").VividAriaBehaviour;
368
369
  readonly $fastController: import("@microsoft/fast-element").Controller;
369
370
  $emit(type: string, detail?: any, options?: Omit<CustomEventInit<any>, "detail"> | undefined): boolean | void;
370
- connectedCallback(): void;
371
371
  disconnectedCallback(): void;
372
372
  attributeChangedCallback(name: string, oldValue: string, newValue: string): void;
373
373
  accessKey: string;
@@ -2,10 +2,10 @@ import { VividElement } from '../vivid-element/vivid-element';
2
2
  declare const VividFoundationButton_base: {
3
3
  new (...args: any[]): {
4
4
  _vividAriaBehaviour: "delegate";
5
+ connectedCallback(): void;
5
6
  specialHandling: boolean;
6
7
  readonly $fastController: import("@microsoft/fast-element").Controller;
7
8
  $emit(type: string, detail?: any, options?: Omit<CustomEventInit<any>, "detail"> | undefined): boolean | void;
8
- connectedCallback(): void;
9
9
  disconnectedCallback(): void;
10
10
  attributeChangedCallback(name: string, oldValue: string, newValue: string): void;
11
11
  accessKey: string;
@@ -352,5 +352,7 @@ declare const VividElement_base: {
352
352
  };
353
353
  export declare class VividElement extends VividElement_base {
354
354
  static VIVID_VERSION: string;
355
+ static componentName: string;
356
+ connectedCallback(): void;
355
357
  }
356
358
  export {};
@@ -15,4 +15,4 @@ const keyPageUp = "PageUp";
15
15
  const keySpace = " ";
16
16
  const keyTab = "Tab";
17
17
 
18
- export { keySpace as a, keyEscape as b, keyTab as c, keyEnd as d, keyArrowUp as e, keyArrowDown as f, keyHome as g, keyArrowRight as h, keyArrowLeft as i, keyPageDown as j, keyEnter as k, keyPageUp as l, keyFunction2 as m };
18
+ export { keySpace as a, keyEscape as b, keyTab as c, keyEnd as d, keyArrowUp as e, keyArrowDown as f, keyHome as g, keyArrowRight as h, keyArrowLeft as i, keyFunction2 as j, keyEnter as k, keyPageDown as l, keyPageUp as m };
@@ -19,6 +19,7 @@ import type { ButtonLocale } from '../../lib/button/locale';
19
19
  import type { FeedbackMessageLocale } from '../feedback/locale';
20
20
  import type { CharCountLocale } from '../patterns/char-count/locale';
21
21
  import type { DataGridLocale } from '../../lib/data-grid/locale';
22
+ import type { PaginationLocale } from '../../lib/pagination/locale';
22
23
  import type { Connotation } from '../../lib/enums';
23
24
  type ConnotationAnnoncementLocale = {
24
25
  [key in Connotation as `${key}Icon`]: string;
@@ -50,5 +51,6 @@ export interface Locale {
50
51
  connotationAnnoncement: ConnotationAnnoncementLocale;
51
52
  charCount: CharCountLocale;
52
53
  dataGrid: DataGridLocale;
54
+ pagination: PaginationLocale;
53
55
  }
54
56
  export {};
package/shared/mixins.cjs CHANGED
@@ -227,7 +227,10 @@ const WithFeedback = (Base) => {
227
227
  <${feedbackTag} id="feedback" :type="${(x) => x._internalFeedback().type}">
228
228
  ${(x) => x._internalFeedback().message}
229
229
  </${feedbackTag}>
230
- <${feedbackTag} id="slotted-helper-text-feedback" :type="${(x) => x._slottedHelperTextFeedbackType()}">
230
+ <${feedbackTag}
231
+ id="slotted-helper-text-feedback"
232
+ :type="${(x) => x._slottedHelperTextFeedbackType()}"
233
+ >
231
234
  <slot name="helper-text" ${slotted.slotted("_helperTextSlottedContent")}></slot>
232
235
  </${feedbackTag}>
233
236
  `;
package/shared/mixins.js CHANGED
@@ -225,7 +225,10 @@ const WithFeedback = (Base) => {
225
225
  <${feedbackTag} id="feedback" :type="${(x) => x._internalFeedback().type}">
226
226
  ${(x) => x._internalFeedback().message}
227
227
  </${feedbackTag}>
228
- <${feedbackTag} id="slotted-helper-text-feedback" :type="${(x) => x._slottedHelperTextFeedbackType()}">
228
+ <${feedbackTag}
229
+ id="slotted-helper-text-feedback"
230
+ :type="${(x) => x._slottedHelperTextFeedbackType()}"
231
+ >
229
232
  <slot name="helper-text" ${slotted("_helperTextSlottedContent")}></slot>
230
233
  </${feedbackTag}>
231
234
  `;
@@ -6,11 +6,11 @@ export declare const AffixIcon: <T extends Constructor<VividElement>>(Base: T) =
6
6
  new (...args: any[]): {
7
7
  icon?: string | undefined;
8
8
  iconSlottedContent?: HTMLElement[] | undefined;
9
+ connectedCallback(): void;
9
10
  specialHandling: boolean;
10
11
  _vividAriaBehaviour: import("../aria/aria-mixin").VividAriaBehaviour;
11
12
  readonly $fastController: import("@microsoft/fast-element").Controller;
12
13
  $emit(type: string, detail?: any, options?: Omit<CustomEventInit<any>, "detail"> | undefined): boolean | void;
13
- connectedCallback(): void;
14
14
  disconnectedCallback(): void;
15
15
  attributeChangedCallback(name: string, oldValue: string, newValue: string): void;
16
16
  accessKey: string;
@@ -347,11 +347,11 @@ export declare const AffixIconWithTrailing: <T extends Constructor<VividElement>
347
347
  iconTrailing: boolean;
348
348
  icon?: string | undefined;
349
349
  iconSlottedContent?: HTMLElement[] | undefined;
350
+ connectedCallback(): void;
350
351
  specialHandling: boolean;
351
352
  _vividAriaBehaviour: import("../aria/aria-mixin").VividAriaBehaviour;
352
353
  readonly $fastController: import("@microsoft/fast-element").Controller;
353
354
  $emit(type: string, detail?: any, options?: Omit<CustomEventInit<any>, "detail"> | undefined): boolean | void;
354
- connectedCallback(): void;
355
355
  disconnectedCallback(): void;
356
356
  attributeChangedCallback(name: string, oldValue: string, newValue: string): void;
357
357
  accessKey: string;
@@ -13,11 +13,11 @@ export declare const WithCharCount: <T extends Constructor<VividElement>>(Base:
13
13
  _updateCharCountRemaining: () => void;
14
14
  _getCharCountTemplate: (context: VividElementDefinitionContext) => import("@microsoft/fast-element").ViewTemplate<any, any>;
15
15
  readonly locale: import("../../localization/Locale").Locale;
16
+ connectedCallback(): void;
16
17
  specialHandling: boolean;
17
18
  _vividAriaBehaviour: import("../../aria/aria-mixin").VividAriaBehaviour;
18
19
  readonly $fastController: import("@microsoft/fast-element").Controller;
19
20
  $emit(type: string, detail?: any, options?: Omit<CustomEventInit<any>, "detail"> | undefined): boolean | void;
20
- connectedCallback(): void;
21
21
  disconnectedCallback(): void;
22
22
  attributeChangedCallback(name: string, oldValue: string, newValue: string): void;
23
23
  accessKey: string;
@@ -3,11 +3,11 @@ import type { VividElement } from '../../foundation/vivid-element/vivid-element'
3
3
  export declare const WithSuccessText: <T extends Constructor<VividElement>>(Base: T) => {
4
4
  new (...args: any[]): {
5
5
  successText?: string | undefined;
6
+ connectedCallback(): void;
6
7
  specialHandling: boolean;
7
8
  _vividAriaBehaviour: import("../../aria/aria-mixin").VividAriaBehaviour;
8
9
  readonly $fastController: import("@microsoft/fast-element").Controller;
9
10
  $emit(type: string, detail?: any, options?: Omit<CustomEventInit<any>, "detail"> | undefined): boolean | void;
10
- connectedCallback(): void;
11
11
  disconnectedCallback(): void;
12
12
  attributeChangedCallback(name: string, oldValue: string, newValue: string): void;
13
13
  accessKey: string;
@@ -57,10 +57,10 @@ export declare const Linkable: <T extends Constructor<VividElement>>(Base: T) =>
57
57
  ariaRelevant: (string | number | boolean | null | undefined) | ((x: unknown) => string | number | boolean | null | undefined);
58
58
  }> | undefined) => ViewTemplate<T_1, any>;
59
59
  _vividAriaBehaviour: "delegate";
60
+ connectedCallback(): void;
60
61
  specialHandling: boolean;
61
62
  readonly $fastController: import("@microsoft/fast-element").Controller;
62
63
  $emit(type: string, detail?: any, options?: Omit<CustomEventInit<any>, "detail"> | undefined): boolean | void;
63
- connectedCallback(): void;
64
64
  disconnectedCallback(): void;
65
65
  attributeChangedCallback(name: string, oldValue: string, newValue: string): void;
66
66
  accessKey: string;
@@ -4,11 +4,11 @@ import type { Locale } from '../localization/Locale';
4
4
  export declare const Localized: <T extends Constructor<VividElement>>(Base: T) => {
5
5
  new (...args: any[]): {
6
6
  readonly locale: Locale;
7
+ connectedCallback(): void;
7
8
  specialHandling: boolean;
8
9
  _vividAriaBehaviour: import("../aria/aria-mixin").VividAriaBehaviour;
9
10
  readonly $fastController: import("@microsoft/fast-element").Controller;
10
11
  $emit(type: string, detail?: any, options?: Omit<CustomEventInit<any>, "detail"> | undefined): boolean | void;
11
- connectedCallback(): void;
12
12
  disconnectedCallback(): void;
13
13
  attributeChangedCallback(name: string, oldValue: string, newValue: string): void;
14
14
  accessKey: string;
@@ -4,11 +4,11 @@ export declare const ignoreEventInFocusTraps: (event: Event) => void;
4
4
  export declare const TrappedFocus: <T extends Constructor<VividElement>>(Base: T) => {
5
5
  new (...args: any[]): {
6
6
  _trappedFocus(event: KeyboardEvent, getFocusableEls: () => NodeListOf<HTMLElement>): boolean;
7
+ connectedCallback(): void;
7
8
  specialHandling: boolean;
8
9
  _vividAriaBehaviour: import("../aria/aria-mixin").VividAriaBehaviour;
9
10
  readonly $fastController: import("@microsoft/fast-element").Controller;
10
11
  $emit(type: string, detail?: any, options?: Omit<CustomEventInit<any>, "detail"> | undefined): boolean | void;
11
- connectedCallback(): void;
12
12
  disconnectedCallback(): void;
13
13
  attributeChangedCallback(name: string, oldValue: string, newValue: string): void;
14
14
  accessKey: string;
@@ -101,11 +101,11 @@ export declare const CalendarPicker: <T extends AbstractConstructor<PickerField>
101
101
  };
102
102
  _slottedHelperTextFeedbackType(): "none" | "helper";
103
103
  _getFeedbackTemplate(ctx: import("../../design-system/defineVividComponent").VividElementDefinitionContext): import("@microsoft/fast-element").ViewTemplate<any, any>;
104
+ connectedCallback(): void;
104
105
  specialHandling: boolean;
105
106
  _vividAriaBehaviour: import("../../aria/aria-mixin").VividAriaBehaviour;
106
107
  readonly $fastController: import("@microsoft/fast-element").Controller;
107
108
  $emit(type: string, detail?: any, options?: Omit<CustomEventInit<any>, "detail"> | undefined): boolean | void;
108
- connectedCallback(): void;
109
109
  disconnectedCallback(): void;
110
110
  attributeChangedCallback(name: string, oldValue: string, newValue: string): void;
111
111
  accessKey: string;
@@ -99,11 +99,11 @@ export declare const CalendarPickerTemplate: (context: VividElementDefinitionCon
99
99
  };
100
100
  _slottedHelperTextFeedbackType(): "none" | "helper";
101
101
  _getFeedbackTemplate(ctx: VividElementDefinitionContext): import("@microsoft/fast-element").ViewTemplate<any, any>;
102
+ connectedCallback(): void;
102
103
  specialHandling: boolean;
103
104
  _vividAriaBehaviour: import("../../aria/aria-mixin").VividAriaBehaviour;
104
105
  readonly $fastController: import("@microsoft/fast-element").Controller;
105
106
  $emit(type: string, detail?: any, options?: Omit<CustomEventInit<any>, "detail"> | undefined): boolean | void;
106
- connectedCallback(): void;
107
107
  disconnectedCallback(): void;
108
108
  attributeChangedCallback(name: string, oldValue: string, newValue: string): void;
109
109
  accessKey: string;