@vonage/vivid 4.29.0 → 4.30.1

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 (49) hide show
  1. package/custom-elements.json +366 -6
  2. package/lib/accordion-item/accordion-item.d.ts +3 -1
  3. package/lib/badge/badge.d.ts +1 -1
  4. package/lib/date-picker/date-picker.d.ts +2 -2
  5. package/lib/date-time-picker/date-time-picker.d.ts +3 -3
  6. package/lib/selectable-box/selectable-box.d.ts +2 -0
  7. package/lib/split-button/split-button.d.ts +1 -1
  8. package/lib/tag/tag.d.ts +1 -1
  9. package/lib/time-picker/time-picker.d.ts +2 -2
  10. package/package.json +1 -1
  11. package/shared/calendar-picker.template.cjs +6 -5
  12. package/shared/calendar-picker.template.js +6 -5
  13. package/shared/definition.cjs +11 -2
  14. package/shared/definition.js +11 -2
  15. package/shared/definition23.cjs +1 -1
  16. package/shared/definition23.js +1 -1
  17. package/shared/definition28.cjs +1 -2
  18. package/shared/definition28.js +2 -2
  19. package/shared/definition44.cjs +10 -22
  20. package/shared/definition44.js +10 -22
  21. package/shared/definition47.cjs +11 -5
  22. package/shared/definition47.js +11 -5
  23. package/shared/definition50.cjs +1 -1
  24. package/shared/definition50.js +1 -1
  25. package/shared/definition56.cjs +5 -4
  26. package/shared/definition56.js +5 -4
  27. package/shared/definition58.cjs +10 -29
  28. package/shared/definition58.js +12 -31
  29. package/shared/definition67.cjs +27 -16
  30. package/shared/definition67.js +27 -16
  31. package/shared/picker-field/mixins/single-date-picker.d.ts +2 -2
  32. package/shared/picker-field/mixins/single-value-picker.d.ts +1 -1
  33. package/shared/picker-field/mixins/time-selection-picker.d.ts +2 -2
  34. package/shared/picker-field/mixins/time-selection-picker.template.d.ts +2 -2
  35. package/shared/single-date-picker.cjs +1 -1
  36. package/shared/single-date-picker.js +1 -1
  37. package/shared/single-value-picker.cjs +22 -21
  38. package/shared/single-value-picker.js +22 -21
  39. package/shared/time-selection-picker.template.cjs +4 -3
  40. package/shared/time-selection-picker.template.js +4 -3
  41. package/shared/vivid-element.cjs +2 -1
  42. package/shared/vivid-element.js +2 -2
  43. package/styles/core/all.css +1 -1
  44. package/styles/core/theme.css +1 -1
  45. package/styles/core/typography.css +1 -1
  46. package/styles/tokens/theme-dark.css +4 -4
  47. package/styles/tokens/theme-light.css +4 -4
  48. package/styles/tokens/vivid-2-compat.css +1 -1
  49. package/vivid.api.json +93 -4
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vonage/vivid",
3
- "version": "4.29.0",
3
+ "version": "4.30.1",
4
4
  "type": "module",
5
5
  "module": "./index.js",
6
6
  "main": "./index.cjs",
@@ -8,7 +8,7 @@ const repeat = require('./repeat.cjs');
8
8
  const when = require('./when.cjs');
9
9
  const classNames = require('./class-names.cjs');
10
10
 
11
- const calendarStyles = ".segments{display:inline-flex;gap:24px}.segment{display:flex;flex-direction:column;gap:12px}.segment .header{--focus-stroke-gap-color: transparent;display:flex;align-items:center;padding-block:8px}.segment .header:focus-visible{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))}.segment .title{display:flex;flex-grow:1;justify-content:center}.segment .title-action{border-radius:8px;block-size:24px;font:var(--vvd-typography-base-extended);padding-inline:8px}.calendar{display:flex;flex-direction:column;margin-top:8px;gap:4px}.calendar .calendar-separator{margin-inline:10px}.calendar .calendar-weekdays{display:flex;justify-content:center}.calendar .calendar-weekday{display:inline-flex;align-items:center;justify-content:center;block-size:16px;font:var(--vvd-typography-base-condensed);inline-size:40px}.calendar .calendar-week{display:flex;justify-content:center}.calendar .calendar-day{display:inline-flex;align-items:center;justify-content:center;border-radius:50%;aspect-ratio:1/1;block-size:28px;font:var(--vvd-typography-base);margin-inline:6px}.calendar .calendar-day.start,.calendar .calendar-day.end{border:2px solid var(--vvd-color-cta-50);background-color:var(--vvd-color-cta-200)}.calendar:focus-visible .calendar .calendar-day.start,.calendar:focus-visible .calendar .calendar-day.end{border-width:3px}.calendar .calendar-day:before,.calendar .calendar-day:after{position:absolute;z-index:-1;display:block;width:20px;height:28px}.calendar .calendar-day:before{right:50%}.calendar .calendar-day:after{left:50%}.calendar .calendar-day.range:before,.calendar .calendar-day.range:after{background-color:var(--vvd-color-cta-50)}.calendar .calendar-day.range:not(.start):before,.calendar .calendar-day.range:not(.end):after{content:\"\"}.calendar .calendar-day.outside-month,.calendar .calendar-day:disabled{color:var(--vvd-color-neutral-400)}.months-separator{margin-inline:-12px}.month-grid{display:flex;flex-direction:column;gap:34px}.month-grid .months-row{display:flex;justify-content:center;gap:29px}.month-grid .month{display:inline-flex;align-items:center;justify-content:center;border-radius:50%;aspect-ratio:1/1;block-size:48px;font:var(--vvd-typography-base-extended);text-transform:uppercase}.month-grid .month:disabled{color:var(--vvd-color-neutral-400)}.button{--_connotation-color-primary: var(--vvd-date-picker-accent-primary, var(--vvd-color-canvas-text));--_connotation-color-firm: var(--vvd-date-picker-accent-firm, var(--vvd-color-canvas-text));--_connotation-color-faint: var(--vvd-date-picker-accent-faint, var(--vvd-color-neutral-50));--_connotation-color-soft: var(--vvd-date-picker-accent-soft, var(--vvd-color-neutral-100));--_connotation-color-dim: var(--vvd-date-picker-accent-dim, var(--vvd-color-neutral-200));--_connotation-color-pale: var(--vvd-date-picker-accent-pale, var(--vvd-color-neutral-300))}.button{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.button:where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-faint);--_appearance-color-outline: transparent}.button:where(.active,:active):where(:not(.disabled,:disabled)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-soft);--_appearance-color-outline: transparent}.button:where(.selected):where(:not(.disabled,:disabled)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-soft);--_appearance-color-outline: transparent}.button:where(.selected):where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-dim);--_appearance-color-outline: transparent}.button:where(.selected):where(.disabled,:disabled){--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: var(--vvd-color-neutral-200);--_appearance-color-outline: transparent}.button{position:relative;padding:0;border:none;background-color:var(--_appearance-color-fill);color:var(--_appearance-color-text);cursor:pointer}.button:disabled{cursor:not-allowed}.button:focus:not(.title-action),.button.title-action:focus-visible{--focus-stroke-gap-color: transparent;color:var(--vvd-color-canvas-text);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))}.button:focus:not(.title-action).start,.button:focus:not(.title-action).end,.button.title-action:focus-visible.start,.button.title-action:focus-visible.end{border-width:3px}.button.current{border:1px solid var(--vvd-color-neutral-200)}.button.selected{border:1px solid var(--vvd-color-neutral-900)}";
11
+ const calendarStyles = ".segments{display:inline-flex;gap:24px}.segment{display:flex;flex-direction:column;gap:12px}.segment .header{display:flex;align-items:center;padding-block:8px}.segment .title{display:flex;flex-grow:1;justify-content:center}.segment .title-action{border-radius:8px;block-size:24px;font:var(--vvd-typography-base-extended);padding-inline:8px}.calendar{display:flex;flex-direction:column;margin-top:8px;gap:4px}.calendar .calendar-separator{margin-inline:10px}.calendar .calendar-weekdays{display:flex;justify-content:center}.calendar .calendar-weekday{display:inline-flex;align-items:center;justify-content:center;block-size:16px;font:var(--vvd-typography-base-condensed);inline-size:40px}.calendar .calendar-week{display:flex;justify-content:center}.calendar .calendar-day{display:inline-flex;align-items:center;justify-content:center;border-radius:50%;aspect-ratio:1/1;block-size:28px;font:var(--vvd-typography-base);margin-inline:6px}.calendar .calendar-day.start,.calendar .calendar-day.end{border:2px solid var(--vvd-color-cta-50);background-color:var(--vvd-color-cta-200)}.calendar:focus-visible .calendar .calendar-day.start,.calendar:focus-visible .calendar .calendar-day.end{border-width:3px}.calendar .calendar-day:before,.calendar .calendar-day:after{position:absolute;z-index:-1;display:block;width:20px;height:28px}.calendar .calendar-day:before{right:50%}.calendar .calendar-day:after{left:50%}.calendar .calendar-day.range:before,.calendar .calendar-day.range:after{background-color:var(--vvd-color-cta-50)}.calendar .calendar-day.range:not(.start):before,.calendar .calendar-day.range:not(.end):after{content:\"\"}.calendar .calendar-day.outside-month,.calendar .calendar-day:disabled{color:var(--vvd-color-neutral-400)}.months-separator{margin-inline:-12px}.month-grid{display:flex;flex-direction:column;gap:34px}.month-grid .months-row{display:flex;justify-content:center;gap:29px}.month-grid .month{display:inline-flex;align-items:center;justify-content:center;border-radius:50%;aspect-ratio:1/1;block-size:48px;font:var(--vvd-typography-base-extended);text-transform:uppercase}.month-grid .month:disabled{color:var(--vvd-color-neutral-400)}.button{--_connotation-color-primary: var(--vvd-date-picker-accent-primary, var(--vvd-color-canvas-text));--_connotation-color-firm: var(--vvd-date-picker-accent-firm, var(--vvd-color-canvas-text));--_connotation-color-faint: var(--vvd-date-picker-accent-faint, var(--vvd-color-neutral-50));--_connotation-color-soft: var(--vvd-date-picker-accent-soft, var(--vvd-color-neutral-100));--_connotation-color-dim: var(--vvd-date-picker-accent-dim, var(--vvd-color-neutral-200));--_connotation-color-pale: var(--vvd-date-picker-accent-pale, var(--vvd-color-neutral-300))}.button{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.button:where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-faint);--_appearance-color-outline: transparent}.button:where(.active,:active):where(:not(.disabled,:disabled)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-soft);--_appearance-color-outline: transparent}.button:where(.selected):where(:not(.disabled,:disabled)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-soft);--_appearance-color-outline: transparent}.button:where(.selected):where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-dim);--_appearance-color-outline: transparent}.button:where(.selected):where(.disabled,:disabled){--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: var(--vvd-color-neutral-200);--_appearance-color-outline: transparent}.button{position:relative;padding:0;border:none;background-color:var(--_appearance-color-fill);color:var(--_appearance-color-text);cursor:pointer}.button:disabled{cursor:not-allowed}.button:focus:not(.title-action),.button.title-action:focus-visible{--focus-stroke-gap-color: transparent;color:var(--vvd-color-canvas-text);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))}.button:focus:not(.title-action).start,.button:focus:not(.title-action).end,.button.title-action:focus-visible.start,.button.title-action:focus-visible.end{border-width:3px}.button.current{border:1px solid var(--vvd-color-neutral-200)}.button.selected{border:1px solid var(--vvd-color-neutral-900)}";
12
12
 
13
13
  /**
14
14
  * @name toDate
@@ -5687,10 +5687,11 @@ const CalendarPicker = (Base) => {
5687
5687
  super._onPickerButtonClick();
5688
5688
  if (this._popupOpen) {
5689
5689
  vividElement.DOM.processUpdates();
5690
- const headerElement = this._dialogEl.querySelector(
5691
- ".header"
5692
- );
5693
- headerElement?.focus();
5690
+ const tabbableDate = this._tabbableDate;
5691
+ if (tabbableDate)
5692
+ this.shadowRoot.querySelector(
5693
+ `[data-date="${tabbableDate}"]`
5694
+ ).focus();
5694
5695
  }
5695
5696
  }
5696
5697
  // --- Calendar header ---
@@ -6,7 +6,7 @@ import { r as repeat } from './repeat.js';
6
6
  import { w as when } from './when.js';
7
7
  import { c as classNames } from './class-names.js';
8
8
 
9
- const calendarStyles = ".segments{display:inline-flex;gap:24px}.segment{display:flex;flex-direction:column;gap:12px}.segment .header{--focus-stroke-gap-color: transparent;display:flex;align-items:center;padding-block:8px}.segment .header:focus-visible{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))}.segment .title{display:flex;flex-grow:1;justify-content:center}.segment .title-action{border-radius:8px;block-size:24px;font:var(--vvd-typography-base-extended);padding-inline:8px}.calendar{display:flex;flex-direction:column;margin-top:8px;gap:4px}.calendar .calendar-separator{margin-inline:10px}.calendar .calendar-weekdays{display:flex;justify-content:center}.calendar .calendar-weekday{display:inline-flex;align-items:center;justify-content:center;block-size:16px;font:var(--vvd-typography-base-condensed);inline-size:40px}.calendar .calendar-week{display:flex;justify-content:center}.calendar .calendar-day{display:inline-flex;align-items:center;justify-content:center;border-radius:50%;aspect-ratio:1/1;block-size:28px;font:var(--vvd-typography-base);margin-inline:6px}.calendar .calendar-day.start,.calendar .calendar-day.end{border:2px solid var(--vvd-color-cta-50);background-color:var(--vvd-color-cta-200)}.calendar:focus-visible .calendar .calendar-day.start,.calendar:focus-visible .calendar .calendar-day.end{border-width:3px}.calendar .calendar-day:before,.calendar .calendar-day:after{position:absolute;z-index:-1;display:block;width:20px;height:28px}.calendar .calendar-day:before{right:50%}.calendar .calendar-day:after{left:50%}.calendar .calendar-day.range:before,.calendar .calendar-day.range:after{background-color:var(--vvd-color-cta-50)}.calendar .calendar-day.range:not(.start):before,.calendar .calendar-day.range:not(.end):after{content:\"\"}.calendar .calendar-day.outside-month,.calendar .calendar-day:disabled{color:var(--vvd-color-neutral-400)}.months-separator{margin-inline:-12px}.month-grid{display:flex;flex-direction:column;gap:34px}.month-grid .months-row{display:flex;justify-content:center;gap:29px}.month-grid .month{display:inline-flex;align-items:center;justify-content:center;border-radius:50%;aspect-ratio:1/1;block-size:48px;font:var(--vvd-typography-base-extended);text-transform:uppercase}.month-grid .month:disabled{color:var(--vvd-color-neutral-400)}.button{--_connotation-color-primary: var(--vvd-date-picker-accent-primary, var(--vvd-color-canvas-text));--_connotation-color-firm: var(--vvd-date-picker-accent-firm, var(--vvd-color-canvas-text));--_connotation-color-faint: var(--vvd-date-picker-accent-faint, var(--vvd-color-neutral-50));--_connotation-color-soft: var(--vvd-date-picker-accent-soft, var(--vvd-color-neutral-100));--_connotation-color-dim: var(--vvd-date-picker-accent-dim, var(--vvd-color-neutral-200));--_connotation-color-pale: var(--vvd-date-picker-accent-pale, var(--vvd-color-neutral-300))}.button{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.button:where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-faint);--_appearance-color-outline: transparent}.button:where(.active,:active):where(:not(.disabled,:disabled)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-soft);--_appearance-color-outline: transparent}.button:where(.selected):where(:not(.disabled,:disabled)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-soft);--_appearance-color-outline: transparent}.button:where(.selected):where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-dim);--_appearance-color-outline: transparent}.button:where(.selected):where(.disabled,:disabled){--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: var(--vvd-color-neutral-200);--_appearance-color-outline: transparent}.button{position:relative;padding:0;border:none;background-color:var(--_appearance-color-fill);color:var(--_appearance-color-text);cursor:pointer}.button:disabled{cursor:not-allowed}.button:focus:not(.title-action),.button.title-action:focus-visible{--focus-stroke-gap-color: transparent;color:var(--vvd-color-canvas-text);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))}.button:focus:not(.title-action).start,.button:focus:not(.title-action).end,.button.title-action:focus-visible.start,.button.title-action:focus-visible.end{border-width:3px}.button.current{border:1px solid var(--vvd-color-neutral-200)}.button.selected{border:1px solid var(--vvd-color-neutral-900)}";
9
+ const calendarStyles = ".segments{display:inline-flex;gap:24px}.segment{display:flex;flex-direction:column;gap:12px}.segment .header{display:flex;align-items:center;padding-block:8px}.segment .title{display:flex;flex-grow:1;justify-content:center}.segment .title-action{border-radius:8px;block-size:24px;font:var(--vvd-typography-base-extended);padding-inline:8px}.calendar{display:flex;flex-direction:column;margin-top:8px;gap:4px}.calendar .calendar-separator{margin-inline:10px}.calendar .calendar-weekdays{display:flex;justify-content:center}.calendar .calendar-weekday{display:inline-flex;align-items:center;justify-content:center;block-size:16px;font:var(--vvd-typography-base-condensed);inline-size:40px}.calendar .calendar-week{display:flex;justify-content:center}.calendar .calendar-day{display:inline-flex;align-items:center;justify-content:center;border-radius:50%;aspect-ratio:1/1;block-size:28px;font:var(--vvd-typography-base);margin-inline:6px}.calendar .calendar-day.start,.calendar .calendar-day.end{border:2px solid var(--vvd-color-cta-50);background-color:var(--vvd-color-cta-200)}.calendar:focus-visible .calendar .calendar-day.start,.calendar:focus-visible .calendar .calendar-day.end{border-width:3px}.calendar .calendar-day:before,.calendar .calendar-day:after{position:absolute;z-index:-1;display:block;width:20px;height:28px}.calendar .calendar-day:before{right:50%}.calendar .calendar-day:after{left:50%}.calendar .calendar-day.range:before,.calendar .calendar-day.range:after{background-color:var(--vvd-color-cta-50)}.calendar .calendar-day.range:not(.start):before,.calendar .calendar-day.range:not(.end):after{content:\"\"}.calendar .calendar-day.outside-month,.calendar .calendar-day:disabled{color:var(--vvd-color-neutral-400)}.months-separator{margin-inline:-12px}.month-grid{display:flex;flex-direction:column;gap:34px}.month-grid .months-row{display:flex;justify-content:center;gap:29px}.month-grid .month{display:inline-flex;align-items:center;justify-content:center;border-radius:50%;aspect-ratio:1/1;block-size:48px;font:var(--vvd-typography-base-extended);text-transform:uppercase}.month-grid .month:disabled{color:var(--vvd-color-neutral-400)}.button{--_connotation-color-primary: var(--vvd-date-picker-accent-primary, var(--vvd-color-canvas-text));--_connotation-color-firm: var(--vvd-date-picker-accent-firm, var(--vvd-color-canvas-text));--_connotation-color-faint: var(--vvd-date-picker-accent-faint, var(--vvd-color-neutral-50));--_connotation-color-soft: var(--vvd-date-picker-accent-soft, var(--vvd-color-neutral-100));--_connotation-color-dim: var(--vvd-date-picker-accent-dim, var(--vvd-color-neutral-200));--_connotation-color-pale: var(--vvd-date-picker-accent-pale, var(--vvd-color-neutral-300))}.button{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.button:where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-faint);--_appearance-color-outline: transparent}.button:where(.active,:active):where(:not(.disabled,:disabled)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-soft);--_appearance-color-outline: transparent}.button:where(.selected):where(:not(.disabled,:disabled)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-soft);--_appearance-color-outline: transparent}.button:where(.selected):where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-dim);--_appearance-color-outline: transparent}.button:where(.selected):where(.disabled,:disabled){--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: var(--vvd-color-neutral-200);--_appearance-color-outline: transparent}.button{position:relative;padding:0;border:none;background-color:var(--_appearance-color-fill);color:var(--_appearance-color-text);cursor:pointer}.button:disabled{cursor:not-allowed}.button:focus:not(.title-action),.button.title-action:focus-visible{--focus-stroke-gap-color: transparent;color:var(--vvd-color-canvas-text);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))}.button:focus:not(.title-action).start,.button:focus:not(.title-action).end,.button.title-action:focus-visible.start,.button.title-action:focus-visible.end{border-width:3px}.button.current{border:1px solid var(--vvd-color-neutral-200)}.button.selected{border:1px solid var(--vvd-color-neutral-900)}";
10
10
 
11
11
  /**
12
12
  * @name toDate
@@ -5685,10 +5685,11 @@ const CalendarPicker = (Base) => {
5685
5685
  super._onPickerButtonClick();
5686
5686
  if (this._popupOpen) {
5687
5687
  DOM.processUpdates();
5688
- const headerElement = this._dialogEl.querySelector(
5689
- ".header"
5690
- );
5691
- headerElement?.focus();
5688
+ const tabbableDate = this._tabbableDate;
5689
+ if (tabbableDate)
5690
+ this.shadowRoot.querySelector(
5691
+ `[data-date="${tabbableDate}"]`
5692
+ ).focus();
5692
5693
  }
5693
5694
  }
5694
5695
  // --- Calendar header ---
@@ -4,10 +4,11 @@ const vividElement = require('./vivid-element.cjs');
4
4
  const definition = require('./definition28.cjs');
5
5
  const affix = require('./affix.cjs');
6
6
  const ref = require('./ref.cjs');
7
+ const classNames = require('./class-names.cjs');
7
8
  const slotted = require('./slotted.cjs');
8
9
  const when = require('./when.cjs');
9
10
 
10
- const styles = ":host{--_vvd-accordion-item-accent-firm-wrapper: var( --vvd-accordion-item-accent-firm )}.heading-button{--vvd-accordion-item-accent-firm: var( --_vvd-accordion-item-accent-firm-wrapper, var(--vvd-accordion-item-accent-primary) )}:host{display:flex;box-sizing:border-box;flex-direction:column}.heading-container{margin:0}.heading-button{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.heading-button:where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-faint);--_appearance-color-outline: transparent}.heading-button:where(.active,:active):where(:not(.disabled,:disabled)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-soft);--_appearance-color-outline: transparent}.heading-button{--_connotation-color-faint: var(--vvd-accordion-item-accent-faint, var(--vvd-color-neutral-50));--_connotation-color-soft: var(--vvd-accordion-item-accent-soft, var(--vvd-color-neutral-100));--_connotation-color-firm: var(--vvd-accordion-item-accent-firm, var(--vvd-color-canvas-text))}.heading-button{--focus-stroke-gap-color: transparent;display:flex;width:100%;align-items:center;padding:16px;border:none;background-color:var(--_appearance-color-fill);color:var(--_appearance-color-text);cursor:pointer;text-align:left}.heading-button:focus-visible{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))}.heading-button.size-condensed{font:var(--vvd-typography-base-extended-bold);gap:12px}.heading-button:not(.size-condensed){font:var(--vvd-typography-heading-4);gap:16px}.heading-content{flex:auto}.meta{overflow:hidden;max-width:var(--accordion-item-meta-inline-size, 20%);flex-shrink:0;color:var(--vvd-color-neutral-600);text-align:end;text-overflow:ellipsis;white-space:nowrap}.heading-button:not(.size-condensed) .meta{font:var(--vvd-typography-base-bold)}.heading-button.size-condensed .meta{font:var(--vvd-typography-base-condensed-bold)}.region{display:none;padding:8px 32px 24px 16px}.region:not(.size-condensed).padded{padding-inline-start:52px}:host([expanded]) .region{display:block}.region.size-condensed.padded{padding-inline-start:44px}slot[name=icon]{color:var(--vvd-color-neutral-600)}.heading-button:not(.size-condensed) slot[name=icon]{font:inherit}.heading-button.size-condensed slot[name=icon]{font:var(--vvd-typography-base-extended)}:host(:not([icon-trailing])) slot[name=icon]:last-of-type{color:var(--_appearance-color-text)}";
11
+ const styles = ":host{--_vvd-accordion-item-accent-firm-wrapper: var( --vvd-accordion-item-accent-firm )}.heading-button{--vvd-accordion-item-accent-firm: var( --_vvd-accordion-item-accent-firm-wrapper, var(--vvd-accordion-item-accent-primary) )}:host{display:flex;box-sizing:border-box;flex-direction:column}.heading-container{margin:0}.heading-button,.heading-button.appearance-ghost-light{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.heading-button.appearance-filled{--_appearance-color-text: var(--_connotation-color-primary-text);--_appearance-color-fill: var(--_connotation-color-primary);--_appearance-color-outline: transparent}.heading-button:where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-faint);--_appearance-color-outline: transparent}.heading-button:where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)).appearance-ghost-light{--_appearance-color-text: var(--_connotation-color-fierce-primary);--_appearance-color-fill: color-mix(in srgb, var(--_connotation-color-primary), transparent 90%);--_appearance-color-outline: transparent}.heading-button:where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)).appearance-filled{--_appearance-color-text: var(--_connotation-color-primary-text);--_appearance-color-fill: var(--_connotation-color-primary-increment);--_appearance-color-outline: transparent}.heading-button:where(.active,:active):where(:not(.disabled,:disabled)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-soft);--_appearance-color-outline: transparent}.heading-button:where(.active,:active):where(:not(.disabled,:disabled)).appearance-ghost-light{--_appearance-color-text: var(--_connotation-color-fierce-primary);--_appearance-color-fill: color-mix(in srgb, var(--_connotation-color-primary), transparent 80%);--_appearance-color-outline: transparent}.heading-button:where(.active,:active):where(:not(.disabled,:disabled)).appearance-filled{--_appearance-color-text: var(--_connotation-color-primary-text);--_appearance-color-fill: var(--_connotation-color-fierce);--_appearance-color-outline: transparent}.heading-button{--_connotation-color-primary: var(--vvd-accordion-item-accent-primary, var(--vvd-color-canvas-text));--_connotation-color-primary-text: var(--vvd-accordion-item-accent-primary-text, var(--vvd-color-canvas));--_connotation-color-primary-increment: var(--vvd-accordion-item-accent-primary-increment, var(--vvd-color-neutral-800));--_connotation-color-fierce: var(--vvd-accordion-item-accent-fierce, var(--vvd-color-neutral-700));--_connotation-color-faint: var(--vvd-accordion-item-accent-faint, var(--vvd-color-neutral-50));--_connotation-color-soft: var(--vvd-accordion-item-accent-soft, var(--vvd-color-neutral-100));--_connotation-color-firm: var(--vvd-accordion-item-accent-firm, var(--vvd-color-canvas-text))}.heading-button{--focus-stroke-gap-color: transparent;display:flex;width:100%;align-items:center;padding:16px;border:none;background-color:var(--_appearance-color-fill);color:var(--_appearance-color-text);cursor:pointer;text-align:left}.heading-button:focus-visible{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))}.heading-button.size-condensed{font:var(--vvd-typography-base-extended-bold);gap:12px}.heading-button:not(.size-condensed){font:var(--vvd-typography-heading-4);gap:16px}.heading-content{flex:auto}.meta{overflow:hidden;max-width:var(--accordion-item-meta-inline-size, 20%);flex-shrink:0;color:var(--vvd-color-neutral-600);text-align:end;text-overflow:ellipsis;white-space:nowrap}.heading-button:not(.size-condensed) .meta{font:var(--vvd-typography-base-bold)}.heading-button.size-condensed .meta{font:var(--vvd-typography-base-condensed-bold)}.region{display:none;padding:8px 32px 24px 16px}.region:not(.size-condensed).padded{padding-inline-start:52px}:host([expanded]) .region{display:block}.region.size-condensed.padded{padding-inline-start:44px}slot[name=icon]{color:var(--vvd-color-neutral-600)}.heading-button:not(.size-condensed) slot[name=icon]{font:inherit}.heading-button.size-condensed slot[name=icon]{font:var(--vvd-typography-base-extended)}:host(:not([icon-trailing])) slot[name=icon]:last-of-type{color:var(--_appearance-color-text)}";
11
12
 
12
13
  var __defProp = Object.defineProperty;
13
14
  var __decorateClass = (decorators, target, key, kind) => {
@@ -43,6 +44,9 @@ __decorateClass([
43
44
  converter: vividElement.nullableNumberConverter
44
45
  })
45
46
  ], AccordionItem.prototype, "headinglevel");
47
+ __decorateClass([
48
+ vividElement.attr
49
+ ], AccordionItem.prototype, "appearance");
46
50
  __decorateClass([
47
51
  vividElement.attr({ mode: "boolean" })
48
52
  ], AccordionItem.prototype, "expanded");
@@ -69,12 +73,17 @@ __decorateClass([
69
73
  vividElement.attr
70
74
  ], AccordionItem.prototype, "size");
71
75
 
76
+ const getClasses = ({ appearance, size }) => classNames.classNames(
77
+ "heading-button",
78
+ [`appearance-${appearance}`, Boolean(appearance)],
79
+ [`size-${size}`, Boolean(size)]
80
+ );
72
81
  const header = (context, hTag) => {
73
82
  const affixIconTemplate = affix.affixIconTemplateFactory(context);
74
83
  return vividElement.html`
75
84
  <${hTag} class="heading-container">
76
85
  <button
77
- class="heading-button ${(x) => x.size ? `size-${x.size}` : ""}"
86
+ class="${getClasses}"
78
87
  id="${(x) => x.id}"
79
88
  aria-expanded="${(x) => x.expanded}"
80
89
  aria-controls="${(x) => x.id}-panel"
@@ -2,10 +2,11 @@ import { V as VividElement, a as attr, n as nullableNumberConverter, o as observ
2
2
  import { i as iconDefinition } from './definition28.js';
3
3
  import { A as AffixIconWithTrailing, a as affixIconTemplateFactory, I as IconWrapper } from './affix.js';
4
4
  import { r as ref } from './ref.js';
5
+ import { c as classNames } from './class-names.js';
5
6
  import { s as slotted } from './slotted.js';
6
7
  import { w as when } from './when.js';
7
8
 
8
- const styles = ":host{--_vvd-accordion-item-accent-firm-wrapper: var( --vvd-accordion-item-accent-firm )}.heading-button{--vvd-accordion-item-accent-firm: var( --_vvd-accordion-item-accent-firm-wrapper, var(--vvd-accordion-item-accent-primary) )}:host{display:flex;box-sizing:border-box;flex-direction:column}.heading-container{margin:0}.heading-button{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.heading-button:where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-faint);--_appearance-color-outline: transparent}.heading-button:where(.active,:active):where(:not(.disabled,:disabled)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-soft);--_appearance-color-outline: transparent}.heading-button{--_connotation-color-faint: var(--vvd-accordion-item-accent-faint, var(--vvd-color-neutral-50));--_connotation-color-soft: var(--vvd-accordion-item-accent-soft, var(--vvd-color-neutral-100));--_connotation-color-firm: var(--vvd-accordion-item-accent-firm, var(--vvd-color-canvas-text))}.heading-button{--focus-stroke-gap-color: transparent;display:flex;width:100%;align-items:center;padding:16px;border:none;background-color:var(--_appearance-color-fill);color:var(--_appearance-color-text);cursor:pointer;text-align:left}.heading-button:focus-visible{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))}.heading-button.size-condensed{font:var(--vvd-typography-base-extended-bold);gap:12px}.heading-button:not(.size-condensed){font:var(--vvd-typography-heading-4);gap:16px}.heading-content{flex:auto}.meta{overflow:hidden;max-width:var(--accordion-item-meta-inline-size, 20%);flex-shrink:0;color:var(--vvd-color-neutral-600);text-align:end;text-overflow:ellipsis;white-space:nowrap}.heading-button:not(.size-condensed) .meta{font:var(--vvd-typography-base-bold)}.heading-button.size-condensed .meta{font:var(--vvd-typography-base-condensed-bold)}.region{display:none;padding:8px 32px 24px 16px}.region:not(.size-condensed).padded{padding-inline-start:52px}:host([expanded]) .region{display:block}.region.size-condensed.padded{padding-inline-start:44px}slot[name=icon]{color:var(--vvd-color-neutral-600)}.heading-button:not(.size-condensed) slot[name=icon]{font:inherit}.heading-button.size-condensed slot[name=icon]{font:var(--vvd-typography-base-extended)}:host(:not([icon-trailing])) slot[name=icon]:last-of-type{color:var(--_appearance-color-text)}";
9
+ const styles = ":host{--_vvd-accordion-item-accent-firm-wrapper: var( --vvd-accordion-item-accent-firm )}.heading-button{--vvd-accordion-item-accent-firm: var( --_vvd-accordion-item-accent-firm-wrapper, var(--vvd-accordion-item-accent-primary) )}:host{display:flex;box-sizing:border-box;flex-direction:column}.heading-container{margin:0}.heading-button,.heading-button.appearance-ghost-light{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.heading-button.appearance-filled{--_appearance-color-text: var(--_connotation-color-primary-text);--_appearance-color-fill: var(--_connotation-color-primary);--_appearance-color-outline: transparent}.heading-button:where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-faint);--_appearance-color-outline: transparent}.heading-button:where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)).appearance-ghost-light{--_appearance-color-text: var(--_connotation-color-fierce-primary);--_appearance-color-fill: color-mix(in srgb, var(--_connotation-color-primary), transparent 90%);--_appearance-color-outline: transparent}.heading-button:where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)).appearance-filled{--_appearance-color-text: var(--_connotation-color-primary-text);--_appearance-color-fill: var(--_connotation-color-primary-increment);--_appearance-color-outline: transparent}.heading-button:where(.active,:active):where(:not(.disabled,:disabled)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-soft);--_appearance-color-outline: transparent}.heading-button:where(.active,:active):where(:not(.disabled,:disabled)).appearance-ghost-light{--_appearance-color-text: var(--_connotation-color-fierce-primary);--_appearance-color-fill: color-mix(in srgb, var(--_connotation-color-primary), transparent 80%);--_appearance-color-outline: transparent}.heading-button:where(.active,:active):where(:not(.disabled,:disabled)).appearance-filled{--_appearance-color-text: var(--_connotation-color-primary-text);--_appearance-color-fill: var(--_connotation-color-fierce);--_appearance-color-outline: transparent}.heading-button{--_connotation-color-primary: var(--vvd-accordion-item-accent-primary, var(--vvd-color-canvas-text));--_connotation-color-primary-text: var(--vvd-accordion-item-accent-primary-text, var(--vvd-color-canvas));--_connotation-color-primary-increment: var(--vvd-accordion-item-accent-primary-increment, var(--vvd-color-neutral-800));--_connotation-color-fierce: var(--vvd-accordion-item-accent-fierce, var(--vvd-color-neutral-700));--_connotation-color-faint: var(--vvd-accordion-item-accent-faint, var(--vvd-color-neutral-50));--_connotation-color-soft: var(--vvd-accordion-item-accent-soft, var(--vvd-color-neutral-100));--_connotation-color-firm: var(--vvd-accordion-item-accent-firm, var(--vvd-color-canvas-text))}.heading-button{--focus-stroke-gap-color: transparent;display:flex;width:100%;align-items:center;padding:16px;border:none;background-color:var(--_appearance-color-fill);color:var(--_appearance-color-text);cursor:pointer;text-align:left}.heading-button:focus-visible{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))}.heading-button.size-condensed{font:var(--vvd-typography-base-extended-bold);gap:12px}.heading-button:not(.size-condensed){font:var(--vvd-typography-heading-4);gap:16px}.heading-content{flex:auto}.meta{overflow:hidden;max-width:var(--accordion-item-meta-inline-size, 20%);flex-shrink:0;color:var(--vvd-color-neutral-600);text-align:end;text-overflow:ellipsis;white-space:nowrap}.heading-button:not(.size-condensed) .meta{font:var(--vvd-typography-base-bold)}.heading-button.size-condensed .meta{font:var(--vvd-typography-base-condensed-bold)}.region{display:none;padding:8px 32px 24px 16px}.region:not(.size-condensed).padded{padding-inline-start:52px}:host([expanded]) .region{display:block}.region.size-condensed.padded{padding-inline-start:44px}slot[name=icon]{color:var(--vvd-color-neutral-600)}.heading-button:not(.size-condensed) slot[name=icon]{font:inherit}.heading-button.size-condensed slot[name=icon]{font:var(--vvd-typography-base-extended)}:host(:not([icon-trailing])) slot[name=icon]:last-of-type{color:var(--_appearance-color-text)}";
9
10
 
10
11
  var __defProp = Object.defineProperty;
11
12
  var __decorateClass = (decorators, target, key, kind) => {
@@ -41,6 +42,9 @@ __decorateClass([
41
42
  converter: nullableNumberConverter
42
43
  })
43
44
  ], AccordionItem.prototype, "headinglevel");
45
+ __decorateClass([
46
+ attr
47
+ ], AccordionItem.prototype, "appearance");
44
48
  __decorateClass([
45
49
  attr({ mode: "boolean" })
46
50
  ], AccordionItem.prototype, "expanded");
@@ -67,12 +71,17 @@ __decorateClass([
67
71
  attr
68
72
  ], AccordionItem.prototype, "size");
69
73
 
74
+ const getClasses = ({ appearance, size }) => classNames(
75
+ "heading-button",
76
+ [`appearance-${appearance}`, Boolean(appearance)],
77
+ [`size-${size}`, Boolean(size)]
78
+ );
70
79
  const header = (context, hTag) => {
71
80
  const affixIconTemplate = affixIconTemplateFactory(context);
72
81
  return html`
73
82
  <${hTag} class="heading-container">
74
83
  <button
75
- class="heading-button ${(x) => x.size ? `size-${x.size}` : ""}"
84
+ class="${getClasses}"
76
85
  id="${(x) => x.id}"
77
86
  aria-expanded="${(x) => x.expanded}"
78
87
  aria-controls="${(x) => x.id}-panel"
@@ -5,7 +5,7 @@ const divider = require('./divider.cjs');
5
5
  const hostSemantics = require('./host-semantics.cjs');
6
6
  const classNames = require('./class-names.cjs');
7
7
 
8
- const styles = ":host{display:block}.base{display:block}.base{--_connotation-color-soft: var(--vvd-divider-accent-soft, var(--vvd-color-neutral-100));--_connotation-color-dim: var(--vvd-divider-accent-dim, var(--vvd-color-neutral-200))}.base:not(.vertical){block-size:1px;inline-size:100%}.base.vertical{block-size:100%;inline-size:1px}.base.appearance-ghost{background-color:var(--_connotation-color-dim)}.base.appearance-subtle{background-color:var(--_connotation-color-soft)}";
8
+ const styles = ":host{display:block}.base{--_connotation-color-soft: var(--vvd-divider-accent-soft, var(--vvd-color-neutral-100));--_connotation-color-dim: var(--vvd-divider-accent-dim, var(--vvd-color-neutral-200))}.base{display:block}.base:not(.vertical){block-size:1px;inline-size:100%}.base.vertical{block-size:100%;inline-size:1px}.base.appearance-ghost{background-color:var(--_connotation-color-dim)}.base.appearance-subtle{background-color:var(--_connotation-color-soft)}";
9
9
 
10
10
  const getClasses = ({ orientation, appearance }) => classNames.classNames(
11
11
  "base",
@@ -3,7 +3,7 @@ import { a as DividerRole, D as Divider } from './divider.js';
3
3
  import { a as applyHostSemantics } from './host-semantics.js';
4
4
  import { c as classNames } from './class-names.js';
5
5
 
6
- const styles = ":host{display:block}.base{display:block}.base{--_connotation-color-soft: var(--vvd-divider-accent-soft, var(--vvd-color-neutral-100));--_connotation-color-dim: var(--vvd-divider-accent-dim, var(--vvd-color-neutral-200))}.base:not(.vertical){block-size:1px;inline-size:100%}.base.vertical{block-size:100%;inline-size:1px}.base.appearance-ghost{background-color:var(--_connotation-color-dim)}.base.appearance-subtle{background-color:var(--_connotation-color-soft)}";
6
+ const styles = ":host{display:block}.base{--_connotation-color-soft: var(--vvd-divider-accent-soft, var(--vvd-color-neutral-100));--_connotation-color-dim: var(--vvd-divider-accent-dim, var(--vvd-color-neutral-200))}.base{display:block}.base:not(.vertical){block-size:1px;inline-size:100%}.base.vertical{block-size:100%;inline-size:1px}.base.appearance-ghost{background-color:var(--_connotation-color-dim)}.base.appearance-subtle{background-color:var(--_connotation-color-soft)}";
7
7
 
8
8
  const getClasses = ({ orientation, appearance }) => classNames(
9
9
  "base",
@@ -135,7 +135,7 @@ var memoizeWith = /*#__PURE__*/_has._curry2(function memoizeWith(keyGen, fn) {
135
135
  });
136
136
 
137
137
  const ICONS_BASE_URL = 'https://icon.resources.vonage.com';
138
- const ICONS_VERSION = '4.6.8';
138
+ const ICONS_VERSION = '4.6.9';
139
139
 
140
140
  const numberConverter = {
141
141
  toView(value) {
@@ -292,5 +292,4 @@ const registerIcon = vividElement.createRegisterFunction(iconDefinition);
292
292
 
293
293
  exports.Icon = Icon;
294
294
  exports.iconDefinition = iconDefinition;
295
- exports.memoizeWith = memoizeWith;
296
295
  exports.registerIcon = registerIcon;
@@ -133,7 +133,7 @@ var memoizeWith = /*#__PURE__*/_curry2(function memoizeWith(keyGen, fn) {
133
133
  });
134
134
 
135
135
  const ICONS_BASE_URL = 'https://icon.resources.vonage.com';
136
- const ICONS_VERSION = '4.6.8';
136
+ const ICONS_VERSION = '4.6.9';
137
137
 
138
138
  const numberConverter = {
139
139
  toView(value) {
@@ -288,4 +288,4 @@ const iconDefinition = defineVividComponent(
288
288
  );
289
289
  const registerIcon = createRegisterFunction(iconDefinition);
290
290
 
291
- export { Icon as I, iconDefinition as i, memoizeWith as m, registerIcon as r };
291
+ export { Icon as I, iconDefinition as i, registerIcon as r };
@@ -765,7 +765,7 @@ class Fragment {
765
765
  position in this fragment. The result object will be reused
766
766
  (overwritten) the next time the function is called. @internal
767
767
  */
768
- findIndex(pos, round = -1) {
768
+ findIndex(pos) {
769
769
  if (pos == 0)
770
770
  return retIndex(0, pos);
771
771
  if (pos == this.size)
@@ -775,7 +775,7 @@ class Fragment {
775
775
  for (let i = 0, curPos = 0;; i++) {
776
776
  let cur = this.child(i), end = curPos + cur.nodeSize;
777
777
  if (end >= pos) {
778
- if (end == pos || round > 0)
778
+ if (end == pos)
779
779
  return retIndex(i + 1, end);
780
780
  return retIndex(i, curPos);
781
781
  }
@@ -1736,7 +1736,7 @@ class Node {
1736
1736
  `blockSeparator` is given, it will be inserted to separate text
1737
1737
  from different block nodes. If `leafText` is given, it'll be
1738
1738
  inserted for every non-text leaf node encountered, otherwise
1739
- [`leafText`](https://prosemirror.net/docs/ref/#model.NodeSpec^leafText) will be used.
1739
+ [`leafText`](https://prosemirror.net/docs/ref/#model.NodeSpec.leafText) will be used.
1740
1740
  */
1741
1741
  textBetween(from, to, blockSeparator, leafText) {
1742
1742
  return this.content.textBetween(from, to, blockSeparator, leafText);
@@ -2946,8 +2946,8 @@ class Schema {
2946
2946
  let type = this.marks[prop], excl = type.spec.excludes;
2947
2947
  type.excluded = excl == null ? [type] : excl == "" ? [] : gatherMarks(this, excl.split(" "));
2948
2948
  }
2949
- this.nodeFromJSON = this.nodeFromJSON.bind(this);
2950
- this.markFromJSON = this.markFromJSON.bind(this);
2949
+ this.nodeFromJSON = json => Node.fromJSON(this, json);
2950
+ this.markFromJSON = json => Mark.fromJSON(this, json);
2951
2951
  this.topNodeType = this.nodes[this.spec.topNode || "doc"];
2952
2952
  this.cached.wrappings = Object.create(null);
2953
2953
  }
@@ -2983,20 +2983,6 @@ class Schema {
2983
2983
  return type.create(attrs);
2984
2984
  }
2985
2985
  /**
2986
- Deserialize a node from its JSON representation. This method is
2987
- bound.
2988
- */
2989
- nodeFromJSON(json) {
2990
- return Node.fromJSON(this, json);
2991
- }
2992
- /**
2993
- Deserialize a mark from its JSON representation. This method is
2994
- bound.
2995
- */
2996
- markFromJSON(json) {
2997
- return Mark.fromJSON(this, json);
2998
- }
2999
- /**
3000
2986
  @internal
3001
2987
  */
3002
2988
  nodeType(name) {
@@ -3178,7 +3164,7 @@ class DOMParser {
3178
3164
  /**
3179
3165
  Construct a DOM parser using the parsing rules listed in a
3180
3166
  schema's [node specs](https://prosemirror.net/docs/ref/#model.NodeSpec.parseDOM), reordered by
3181
- [priority](https://prosemirror.net/docs/ref/#model.ParseRule.priority).
3167
+ [priority](https://prosemirror.net/docs/ref/#model.GenericParseRule.priority).
3182
3168
  */
3183
3169
  static fromSchema(schema) {
3184
3170
  return schema.cached.domParser ||
@@ -3929,6 +3915,8 @@ function renderSpec(doc, structure, xmlNS, blockArraysIn) {
3929
3915
  let space = name.indexOf(" ");
3930
3916
  if (space > 0)
3931
3917
  dom.setAttributeNS(name.slice(0, space), name.slice(space + 1), attrs[name]);
3918
+ else if (name == "style" && dom.style)
3919
+ dom.style.cssText = attrs[name];
3932
3920
  else
3933
3921
  dom.setAttribute(name, attrs[name]);
3934
3922
  }
@@ -7448,7 +7436,7 @@ function posFromCaret(view, node, offset, coords) {
7448
7436
  if (desc.dom.nodeType == 1 && (desc.node.isBlock && desc.parent || !desc.contentDOM) &&
7449
7437
  // Ignore elements with zero-size bounding rectangles
7450
7438
  ((rect = desc.dom.getBoundingClientRect()).width || rect.height)) {
7451
- if (desc.node.isBlock && desc.parent) {
7439
+ if (desc.node.isBlock && desc.parent && !/^T(R|BODY|HEAD|FOOT)$/.test(desc.dom.nodeName)) {
7452
7440
  // Only apply the horizontal test to the innermost block. Vertical for any parent.
7453
7441
  if (!sawBlock && rect.left > coords.left || rect.top > coords.top)
7454
7442
  outsideBlock = desc.posBefore;
@@ -11962,7 +11950,7 @@ function ruleFromNode(dom) {
11962
11950
  }
11963
11951
  return null;
11964
11952
  }
11965
- const isInline = /^(a|abbr|acronym|b|bd[io]|big|br|button|cite|code|data(list)?|del|dfn|em|i|ins|kbd|label|map|mark|meter|output|q|ruby|s|samp|small|span|strong|su[bp]|time|u|tt|var)$/i;
11953
+ const isInline = /^(a|abbr|acronym|b|bd[io]|big|br|button|cite|code|data(list)?|del|dfn|em|i|img|ins|kbd|label|map|mark|meter|output|q|ruby|s|samp|small|span|strong|su[bp]|time|u|tt|var)$/i;
11966
11954
  function readDOMChange(view, from, to, typeOver, addedNodes) {
11967
11955
  let compositionID = view.input.compositionPendingChanges || (view.composing ? view.input.compositionID : 0);
11968
11956
  view.input.compositionPendingChanges = 0;
@@ -763,7 +763,7 @@ class Fragment {
763
763
  position in this fragment. The result object will be reused
764
764
  (overwritten) the next time the function is called. @internal
765
765
  */
766
- findIndex(pos, round = -1) {
766
+ findIndex(pos) {
767
767
  if (pos == 0)
768
768
  return retIndex(0, pos);
769
769
  if (pos == this.size)
@@ -773,7 +773,7 @@ class Fragment {
773
773
  for (let i = 0, curPos = 0;; i++) {
774
774
  let cur = this.child(i), end = curPos + cur.nodeSize;
775
775
  if (end >= pos) {
776
- if (end == pos || round > 0)
776
+ if (end == pos)
777
777
  return retIndex(i + 1, end);
778
778
  return retIndex(i, curPos);
779
779
  }
@@ -1734,7 +1734,7 @@ class Node {
1734
1734
  `blockSeparator` is given, it will be inserted to separate text
1735
1735
  from different block nodes. If `leafText` is given, it'll be
1736
1736
  inserted for every non-text leaf node encountered, otherwise
1737
- [`leafText`](https://prosemirror.net/docs/ref/#model.NodeSpec^leafText) will be used.
1737
+ [`leafText`](https://prosemirror.net/docs/ref/#model.NodeSpec.leafText) will be used.
1738
1738
  */
1739
1739
  textBetween(from, to, blockSeparator, leafText) {
1740
1740
  return this.content.textBetween(from, to, blockSeparator, leafText);
@@ -2944,8 +2944,8 @@ class Schema {
2944
2944
  let type = this.marks[prop], excl = type.spec.excludes;
2945
2945
  type.excluded = excl == null ? [type] : excl == "" ? [] : gatherMarks(this, excl.split(" "));
2946
2946
  }
2947
- this.nodeFromJSON = this.nodeFromJSON.bind(this);
2948
- this.markFromJSON = this.markFromJSON.bind(this);
2947
+ this.nodeFromJSON = json => Node.fromJSON(this, json);
2948
+ this.markFromJSON = json => Mark.fromJSON(this, json);
2949
2949
  this.topNodeType = this.nodes[this.spec.topNode || "doc"];
2950
2950
  this.cached.wrappings = Object.create(null);
2951
2951
  }
@@ -2981,20 +2981,6 @@ class Schema {
2981
2981
  return type.create(attrs);
2982
2982
  }
2983
2983
  /**
2984
- Deserialize a node from its JSON representation. This method is
2985
- bound.
2986
- */
2987
- nodeFromJSON(json) {
2988
- return Node.fromJSON(this, json);
2989
- }
2990
- /**
2991
- Deserialize a mark from its JSON representation. This method is
2992
- bound.
2993
- */
2994
- markFromJSON(json) {
2995
- return Mark.fromJSON(this, json);
2996
- }
2997
- /**
2998
2984
  @internal
2999
2985
  */
3000
2986
  nodeType(name) {
@@ -3176,7 +3162,7 @@ class DOMParser {
3176
3162
  /**
3177
3163
  Construct a DOM parser using the parsing rules listed in a
3178
3164
  schema's [node specs](https://prosemirror.net/docs/ref/#model.NodeSpec.parseDOM), reordered by
3179
- [priority](https://prosemirror.net/docs/ref/#model.ParseRule.priority).
3165
+ [priority](https://prosemirror.net/docs/ref/#model.GenericParseRule.priority).
3180
3166
  */
3181
3167
  static fromSchema(schema) {
3182
3168
  return schema.cached.domParser ||
@@ -3927,6 +3913,8 @@ function renderSpec(doc, structure, xmlNS, blockArraysIn) {
3927
3913
  let space = name.indexOf(" ");
3928
3914
  if (space > 0)
3929
3915
  dom.setAttributeNS(name.slice(0, space), name.slice(space + 1), attrs[name]);
3916
+ else if (name == "style" && dom.style)
3917
+ dom.style.cssText = attrs[name];
3930
3918
  else
3931
3919
  dom.setAttribute(name, attrs[name]);
3932
3920
  }
@@ -7446,7 +7434,7 @@ function posFromCaret(view, node, offset, coords) {
7446
7434
  if (desc.dom.nodeType == 1 && (desc.node.isBlock && desc.parent || !desc.contentDOM) &&
7447
7435
  // Ignore elements with zero-size bounding rectangles
7448
7436
  ((rect = desc.dom.getBoundingClientRect()).width || rect.height)) {
7449
- if (desc.node.isBlock && desc.parent) {
7437
+ if (desc.node.isBlock && desc.parent && !/^T(R|BODY|HEAD|FOOT)$/.test(desc.dom.nodeName)) {
7450
7438
  // Only apply the horizontal test to the innermost block. Vertical for any parent.
7451
7439
  if (!sawBlock && rect.left > coords.left || rect.top > coords.top)
7452
7440
  outsideBlock = desc.posBefore;
@@ -11960,7 +11948,7 @@ function ruleFromNode(dom) {
11960
11948
  }
11961
11949
  return null;
11962
11950
  }
11963
- const isInline = /^(a|abbr|acronym|b|bd[io]|big|br|button|cite|code|data(list)?|del|dfn|em|i|ins|kbd|label|map|mark|meter|output|q|ruby|s|samp|small|span|strong|su[bp]|time|u|tt|var)$/i;
11951
+ const isInline = /^(a|abbr|acronym|b|bd[io]|big|br|button|cite|code|data(list)?|del|dfn|em|i|img|ins|kbd|label|map|mark|meter|output|q|ruby|s|samp|small|span|strong|su[bp]|time|u|tt|var)$/i;
11964
11952
  function readDOMChange(view, from, to, typeOver, addedNodes) {
11965
11953
  let compositionID = view.input.compositionPendingChanges || (view.composing ? view.input.compositionID : 0);
11966
11954
  view.input.compositionPendingChanges = 0;
@@ -8,7 +8,7 @@ const enums = require('./enums.cjs');
8
8
  const classNames = require('./class-names.cjs');
9
9
  const when = require('./when.cjs');
10
10
 
11
- const styles = ":host{display:flex}.base.connotation-cta{--_connotation-color-firm-all: var(--vvd-selectable-box-cta-firm-all, var(--vvd-color-cta-600));--_connotation-color-pale: var(--vvd-selectable-box-cta-pale, var(--vvd-color-cta-300));--_connotation-color-fierce: var(--vvd-selectable-box-cta-fierce, var(--vvd-color-cta-700));--_connotation-color-faint: var(--vvd-selectable-box-cta-faint, var(--vvd-color-cta-50));--_connotation-color-soft: var(--vvd-selectable-box-cta-soft, var(--vvd-color-cta-100))}.base:not(.connotation-cta){--_connotation-color-firm-all: var(--vvd-selectable-box-accent-firm-all, var(--vvd-color-neutral-600));--_connotation-color-pale: var(--vvd-selectable-box-accent-pale, var(--vvd-color-neutral-300));--_connotation-color-fierce: var(--vvd-selectable-box-accent-fierce, var(--vvd-color-neutral-700));--_connotation-color-faint: var(--vvd-selectable-box-accent-faint, var(--vvd-color-neutral-50));--_connotation-color-soft: var(--vvd-selectable-box-accent-soft, var(--vvd-color-neutral-100))}.base{--_appearance-color-text: var(--_connotation-color-firm-all);--_appearance-color-fill: transparent;--_appearance-color-outline: var(--_connotation-color-pale)}.base:where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--_connotation-color-firm-all);--_appearance-color-fill: transparent;--_appearance-color-outline: var(--_connotation-color-firm-all)}.base:where(.selected):where(:not(.disabled,:disabled)){--_appearance-color-text: var(--_connotation-color-firm-all);--_appearance-color-fill: var(--_connotation-color-soft);--_appearance-color-outline: var(--_connotation-color-pale)}.base:where(.selected):where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--_connotation-color-firm-all);--_appearance-color-fill: var(--_connotation-color-faint);--_appearance-color-outline: var(--_connotation-color-firm-all)}.base{position:relative;padding:var(--selectable-box-spacing, 16px);border:1px solid var(--_appearance-color-outline);border-radius:8px;background-color:var(--_appearance-color-fill);inline-size:100%;padding-block-start:calc(var(--selectable-box-spacing, 16px) + 36px);text-align:start}.base:focus-visible{--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))}.base.tight{overflow:hidden;min-height:calc(var(--selectable-box-spacing, 16px) * 2 + 22px);padding:0}.base.clickable{cursor:pointer}.control{position:absolute;inset-block-start:var(--selectable-box-spacing, 16px);inset-inline-end:var(--selectable-box-spacing, 16px)}";
11
+ const styles = ":host{display:flex}.base{--control-offset: calc(var(--selectable-box-spacing, 16px) + 36px)}.base.connotation-cta{--_connotation-color-firm-all: var(--vvd-selectable-box-cta-firm-all, var(--vvd-color-cta-600));--_connotation-color-pale: var(--vvd-selectable-box-cta-pale, var(--vvd-color-cta-300));--_connotation-color-fierce: var(--vvd-selectable-box-cta-fierce, var(--vvd-color-cta-700));--_connotation-color-faint: var(--vvd-selectable-box-cta-faint, var(--vvd-color-cta-50));--_connotation-color-soft: var(--vvd-selectable-box-cta-soft, var(--vvd-color-cta-100))}.base:not(.connotation-cta){--_connotation-color-firm-all: var(--vvd-selectable-box-accent-firm-all, var(--vvd-color-neutral-600));--_connotation-color-pale: var(--vvd-selectable-box-accent-pale, var(--vvd-color-neutral-300));--_connotation-color-fierce: var(--vvd-selectable-box-accent-fierce, var(--vvd-color-neutral-700));--_connotation-color-faint: var(--vvd-selectable-box-accent-faint, var(--vvd-color-neutral-50));--_connotation-color-soft: var(--vvd-selectable-box-accent-soft, var(--vvd-color-neutral-100))}.base{--_appearance-color-text: var(--_connotation-color-firm-all);--_appearance-color-fill: transparent;--_appearance-color-outline: var(--_connotation-color-pale)}.base:where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--_connotation-color-firm-all);--_appearance-color-fill: transparent;--_appearance-color-outline: var(--_connotation-color-firm-all)}.base:where(.selected):where(:not(.disabled,:disabled)){--_appearance-color-text: var(--_connotation-color-firm-all);--_appearance-color-fill: var(--_connotation-color-soft);--_appearance-color-outline: var(--_connotation-color-pale)}.base:where(.selected):where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--_connotation-color-firm-all);--_appearance-color-fill: var(--_connotation-color-faint);--_appearance-color-outline: var(--_connotation-color-firm-all)}.base{position:relative;padding:var(--selectable-box-spacing, 16px);border:1px solid var(--_appearance-color-outline);border-radius:8px;background-color:var(--_appearance-color-fill);inline-size:100%;text-align:start}.base.control-placement-end-stacked,.base.control-placement-start-stacked{padding-block-start:var(--control-offset)}.base.control-placement-start{padding-inline-start:var(--control-offset)}.base.control-placement-end{padding-inline-end:var(--control-offset)}.base:focus-visible{--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))}.base.tight{overflow:hidden;min-height:calc(var(--selectable-box-spacing, 16px) * 2 + 22px);padding:0}.base.clickable{cursor:pointer}.control{position:absolute;inset-block-start:var(--selectable-box-spacing, 16px)}.control.start-stacked,.control.start{inset-inline-start:var(--selectable-box-spacing, 16px)}.control.end-stacked,.control.end{inset-inline-end:var(--selectable-box-spacing, 16px)}";
12
12
 
13
13
  var __defProp = Object.defineProperty;
14
14
  var __decorateClass = (decorators, target, key, kind) => {
@@ -25,6 +25,7 @@ class SelectableBox extends delegatesAria.DelegatesAria(vividElement.VividElemen
25
25
  this.checked = false;
26
26
  this.clickable = false;
27
27
  this.clickableBox = false;
28
+ this.controlPlacement = "end-stacked";
28
29
  this.tight = false;
29
30
  }
30
31
  /**
@@ -63,6 +64,9 @@ __decorateClass([
63
64
  __decorateClass([
64
65
  vividElement.attr({ attribute: "control-type" })
65
66
  ], SelectableBox.prototype, "controlType");
67
+ __decorateClass([
68
+ vividElement.attr({ attribute: "control-placement", mode: "fromView" })
69
+ ], SelectableBox.prototype, "controlPlacement");
66
70
  __decorateClass([
67
71
  vividElement.attr({ mode: "boolean" })
68
72
  ], SelectableBox.prototype, "tight");
@@ -71,14 +75,16 @@ const getClasses = ({
71
75
  connotation,
72
76
  tight,
73
77
  checked,
74
- clickableBox
78
+ clickableBox,
79
+ controlPlacement
75
80
  }) => classNames.classNames(
76
81
  "base",
77
82
  [`connotation-${connotation}`, Boolean(connotation)],
78
83
  ["tight", tight],
79
84
  ["selected", checked],
80
85
  ["clickable", clickableBox],
81
- ["readonly", !clickableBox]
86
+ ["readonly", !clickableBox],
87
+ [`control-placement-${controlPlacement}`, Boolean(controlPlacement)]
82
88
  );
83
89
  function handleControlChange(x) {
84
90
  if (!x.clickableBox) x._handleCheckedChange();
@@ -96,7 +102,7 @@ function checkbox(context) {
96
102
  { onlySpecified: true }
97
103
  )}
98
104
  @change="${(x) => handleControlChange(x)}"
99
- class="control checkbox"
105
+ class="control checkbox ${(x) => x.controlPlacement}"
100
106
  connotation="${(x) => x.connotation === "cta" ? enums.Connotation.CTA : enums.Connotation.Accent}"
101
107
  :checked="${(x) => x.checked}"
102
108
  inert="${(x) => x.clickableBox ? true : null}"
@@ -116,7 +122,7 @@ function radio(context) {
116
122
  { onlySpecified: true }
117
123
  )}
118
124
  @change="${(x) => handleControlChange(x)}"
119
- class="control radio"
125
+ class="control radio ${(x) => x.controlPlacement}"
120
126
  connotation="${(x) => x.connotation === "cta" ? enums.Connotation.CTA : enums.Connotation.Accent}"
121
127
  :checked="${(x) => x.checked}"
122
128
  inert="${(x) => x.clickableBox ? true : null}"
@@ -6,7 +6,7 @@ import { C as Connotation } from './enums.js';
6
6
  import { c as classNames } from './class-names.js';
7
7
  import { w as when } from './when.js';
8
8
 
9
- const styles = ":host{display:flex}.base.connotation-cta{--_connotation-color-firm-all: var(--vvd-selectable-box-cta-firm-all, var(--vvd-color-cta-600));--_connotation-color-pale: var(--vvd-selectable-box-cta-pale, var(--vvd-color-cta-300));--_connotation-color-fierce: var(--vvd-selectable-box-cta-fierce, var(--vvd-color-cta-700));--_connotation-color-faint: var(--vvd-selectable-box-cta-faint, var(--vvd-color-cta-50));--_connotation-color-soft: var(--vvd-selectable-box-cta-soft, var(--vvd-color-cta-100))}.base:not(.connotation-cta){--_connotation-color-firm-all: var(--vvd-selectable-box-accent-firm-all, var(--vvd-color-neutral-600));--_connotation-color-pale: var(--vvd-selectable-box-accent-pale, var(--vvd-color-neutral-300));--_connotation-color-fierce: var(--vvd-selectable-box-accent-fierce, var(--vvd-color-neutral-700));--_connotation-color-faint: var(--vvd-selectable-box-accent-faint, var(--vvd-color-neutral-50));--_connotation-color-soft: var(--vvd-selectable-box-accent-soft, var(--vvd-color-neutral-100))}.base{--_appearance-color-text: var(--_connotation-color-firm-all);--_appearance-color-fill: transparent;--_appearance-color-outline: var(--_connotation-color-pale)}.base:where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--_connotation-color-firm-all);--_appearance-color-fill: transparent;--_appearance-color-outline: var(--_connotation-color-firm-all)}.base:where(.selected):where(:not(.disabled,:disabled)){--_appearance-color-text: var(--_connotation-color-firm-all);--_appearance-color-fill: var(--_connotation-color-soft);--_appearance-color-outline: var(--_connotation-color-pale)}.base:where(.selected):where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--_connotation-color-firm-all);--_appearance-color-fill: var(--_connotation-color-faint);--_appearance-color-outline: var(--_connotation-color-firm-all)}.base{position:relative;padding:var(--selectable-box-spacing, 16px);border:1px solid var(--_appearance-color-outline);border-radius:8px;background-color:var(--_appearance-color-fill);inline-size:100%;padding-block-start:calc(var(--selectable-box-spacing, 16px) + 36px);text-align:start}.base:focus-visible{--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))}.base.tight{overflow:hidden;min-height:calc(var(--selectable-box-spacing, 16px) * 2 + 22px);padding:0}.base.clickable{cursor:pointer}.control{position:absolute;inset-block-start:var(--selectable-box-spacing, 16px);inset-inline-end:var(--selectable-box-spacing, 16px)}";
9
+ const styles = ":host{display:flex}.base{--control-offset: calc(var(--selectable-box-spacing, 16px) + 36px)}.base.connotation-cta{--_connotation-color-firm-all: var(--vvd-selectable-box-cta-firm-all, var(--vvd-color-cta-600));--_connotation-color-pale: var(--vvd-selectable-box-cta-pale, var(--vvd-color-cta-300));--_connotation-color-fierce: var(--vvd-selectable-box-cta-fierce, var(--vvd-color-cta-700));--_connotation-color-faint: var(--vvd-selectable-box-cta-faint, var(--vvd-color-cta-50));--_connotation-color-soft: var(--vvd-selectable-box-cta-soft, var(--vvd-color-cta-100))}.base:not(.connotation-cta){--_connotation-color-firm-all: var(--vvd-selectable-box-accent-firm-all, var(--vvd-color-neutral-600));--_connotation-color-pale: var(--vvd-selectable-box-accent-pale, var(--vvd-color-neutral-300));--_connotation-color-fierce: var(--vvd-selectable-box-accent-fierce, var(--vvd-color-neutral-700));--_connotation-color-faint: var(--vvd-selectable-box-accent-faint, var(--vvd-color-neutral-50));--_connotation-color-soft: var(--vvd-selectable-box-accent-soft, var(--vvd-color-neutral-100))}.base{--_appearance-color-text: var(--_connotation-color-firm-all);--_appearance-color-fill: transparent;--_appearance-color-outline: var(--_connotation-color-pale)}.base:where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--_connotation-color-firm-all);--_appearance-color-fill: transparent;--_appearance-color-outline: var(--_connotation-color-firm-all)}.base:where(.selected):where(:not(.disabled,:disabled)){--_appearance-color-text: var(--_connotation-color-firm-all);--_appearance-color-fill: var(--_connotation-color-soft);--_appearance-color-outline: var(--_connotation-color-pale)}.base:where(.selected):where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--_connotation-color-firm-all);--_appearance-color-fill: var(--_connotation-color-faint);--_appearance-color-outline: var(--_connotation-color-firm-all)}.base{position:relative;padding:var(--selectable-box-spacing, 16px);border:1px solid var(--_appearance-color-outline);border-radius:8px;background-color:var(--_appearance-color-fill);inline-size:100%;text-align:start}.base.control-placement-end-stacked,.base.control-placement-start-stacked{padding-block-start:var(--control-offset)}.base.control-placement-start{padding-inline-start:var(--control-offset)}.base.control-placement-end{padding-inline-end:var(--control-offset)}.base:focus-visible{--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))}.base.tight{overflow:hidden;min-height:calc(var(--selectable-box-spacing, 16px) * 2 + 22px);padding:0}.base.clickable{cursor:pointer}.control{position:absolute;inset-block-start:var(--selectable-box-spacing, 16px)}.control.start-stacked,.control.start{inset-inline-start:var(--selectable-box-spacing, 16px)}.control.end-stacked,.control.end{inset-inline-end:var(--selectable-box-spacing, 16px)}";
10
10
 
11
11
  var __defProp = Object.defineProperty;
12
12
  var __decorateClass = (decorators, target, key, kind) => {
@@ -23,6 +23,7 @@ class SelectableBox extends DelegatesAria(VividElement) {
23
23
  this.checked = false;
24
24
  this.clickable = false;
25
25
  this.clickableBox = false;
26
+ this.controlPlacement = "end-stacked";
26
27
  this.tight = false;
27
28
  }
28
29
  /**
@@ -61,6 +62,9 @@ __decorateClass([
61
62
  __decorateClass([
62
63
  attr({ attribute: "control-type" })
63
64
  ], SelectableBox.prototype, "controlType");
65
+ __decorateClass([
66
+ attr({ attribute: "control-placement", mode: "fromView" })
67
+ ], SelectableBox.prototype, "controlPlacement");
64
68
  __decorateClass([
65
69
  attr({ mode: "boolean" })
66
70
  ], SelectableBox.prototype, "tight");
@@ -69,14 +73,16 @@ const getClasses = ({
69
73
  connotation,
70
74
  tight,
71
75
  checked,
72
- clickableBox
76
+ clickableBox,
77
+ controlPlacement
73
78
  }) => classNames(
74
79
  "base",
75
80
  [`connotation-${connotation}`, Boolean(connotation)],
76
81
  ["tight", tight],
77
82
  ["selected", checked],
78
83
  ["clickable", clickableBox],
79
- ["readonly", !clickableBox]
84
+ ["readonly", !clickableBox],
85
+ [`control-placement-${controlPlacement}`, Boolean(controlPlacement)]
80
86
  );
81
87
  function handleControlChange(x) {
82
88
  if (!x.clickableBox) x._handleCheckedChange();
@@ -94,7 +100,7 @@ function checkbox(context) {
94
100
  { onlySpecified: true }
95
101
  )}
96
102
  @change="${(x) => handleControlChange(x)}"
97
- class="control checkbox"
103
+ class="control checkbox ${(x) => x.controlPlacement}"
98
104
  connotation="${(x) => x.connotation === "cta" ? Connotation.CTA : Connotation.Accent}"
99
105
  :checked="${(x) => x.checked}"
100
106
  inert="${(x) => x.clickableBox ? true : null}"
@@ -114,7 +120,7 @@ function radio(context) {
114
120
  { onlySpecified: true }
115
121
  )}
116
122
  @change="${(x) => handleControlChange(x)}"
117
- class="control radio"
123
+ class="control radio ${(x) => x.controlPlacement}"
118
124
  connotation="${(x) => x.connotation === "cta" ? Connotation.CTA : Connotation.Accent}"
119
125
  :checked="${(x) => x.checked}"
120
126
  inert="${(x) => x.clickableBox ? true : null}"