@vonage/vivid 3.56.0 → 3.58.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 (40) hide show
  1. package/custom-elements.json +183 -0
  2. package/lib/audio-player/audio-player.d.ts +17 -0
  3. package/lib/fab/fab.d.ts +1 -1
  4. package/package.json +1 -1
  5. package/shared/definition16.cjs +1 -1
  6. package/shared/definition16.js +1 -1
  7. package/shared/definition24.cjs +1 -1
  8. package/shared/definition24.js +1 -1
  9. package/shared/definition35.cjs +1 -1
  10. package/shared/definition35.js +1 -1
  11. package/shared/definition42.cjs +1 -1
  12. package/shared/definition42.js +1 -1
  13. package/shared/definition43.cjs +2 -2
  14. package/shared/definition43.js +2 -2
  15. package/shared/definition46.cjs +1 -1
  16. package/shared/definition46.js +1 -1
  17. package/shared/definition5.cjs +138 -120
  18. package/shared/definition5.js +139 -121
  19. package/shared/definition50.cjs +1 -1
  20. package/shared/definition50.js +1 -1
  21. package/shared/definition58.cjs +1 -1
  22. package/shared/definition58.js +1 -1
  23. package/shared/definition61.cjs +23 -9
  24. package/shared/definition61.js +23 -9
  25. package/shared/definition7.cjs +1 -1
  26. package/shared/definition7.js +1 -1
  27. package/shared/icon.cjs +1 -1
  28. package/shared/icon.js +1 -1
  29. package/shared/patterns/anchored.d.ts +4 -4
  30. package/shared/slider.template.cjs +3 -3
  31. package/shared/slider.template.js +3 -3
  32. package/shared/text-field.cjs +1 -1
  33. package/shared/text-field.js +1 -1
  34. package/styles/core/all.css +1 -1
  35. package/styles/core/theme.css +1 -1
  36. package/styles/core/typography.css +1 -1
  37. package/styles/tokens/theme-dark.css +4 -4
  38. package/styles/tokens/theme-light.css +4 -4
  39. package/styles/tokens/vivid-2-compat.css +1 -1
  40. package/vivid.api.json +10 -1
@@ -1,4 +1,4 @@
1
- import { a as attr, F as FoundationElement, o as observable, h as html, r as registerFactory } from './index.js';
1
+ import { a as attr, F as FoundationElement, O as Observable, h as html, r as registerFactory } from './index.js';
2
2
  import { B as Button, a as buttonRegistries } from './definition11.js';
3
3
  import { S as Slider, a as sliderRegistries } from './definition46.js';
4
4
  import { M as MediaSkipBy } from './enums.js';
@@ -7,7 +7,6 @@ import './index2.js';
7
7
  import { L as Localized } from './localized.js';
8
8
  import { a as applyMixins } from './apply-mixins.js';
9
9
  import { w as when } from './when.js';
10
- import { r as ref } from './ref.js';
11
10
  import { c as classNames } from './class-names.js';
12
11
 
13
12
  const styles = ":host{display:block;max-inline-size:350px}.wrapper{container-type:inline-size}.base{display:inline-flex;box-sizing:border-box;align-items:center;padding:8px;color:var(--vvd-color-canvas-text);gap:16px;inline-size:100%;user-select:none}.base .slider{flex:1;grid-area:slider;min-inline-size:var(--audio-player-min-inline-size, 200px)}.base .controls{display:flex;align-items:center;justify-content:center;gap:8px;grid-area:controls}.base .time-stamp{display:inline-flex}.base .time-stamp .current-time,.base .time-stamp .total-time{margin-inline:6px;min-inline-size:32px}.base .playback{grid-area:playback}@container (max-width: 500px){.base.two-lines{display:inline-grid;grid-template:auto auto/1fr;grid-template-areas:\"slider\" \"controls\";inline-size:100%;row-gap:4px}.base.two-lines .time-stamp{margin-inline:auto 2px}.base.two-lines.playback{grid-template-areas:\"slider slider\" \"controls playback\";grid-template-columns:1fr auto}.base.two-lines.playback .time-stamp{margin-inline:auto}.base .slider{box-sizing:border-box;min-inline-size:auto;padding-inline:2px}}";
@@ -22,6 +21,20 @@ var __decorateClass = (decorators, target, key, kind) => {
22
21
  __defProp(target, key, result);
23
22
  return result;
24
23
  };
24
+ const SKIP_DIRECTIONS = {
25
+ FORWARD: 1,
26
+ BACKWARD: -1
27
+ };
28
+ function formatTime(time) {
29
+ if (!time || Number.isNaN(time)) {
30
+ return "0:00";
31
+ }
32
+ const min = Math.floor(time / 60);
33
+ const sec = Math.floor(time % 60);
34
+ return min + ":" + (sec < 10 ? "0" + sec : sec);
35
+ }
36
+ const PAUSE = true;
37
+ const PLAY = false;
25
38
  const validSkipByConverter = {
26
39
  toView(value) {
27
40
  return value;
@@ -32,7 +45,7 @@ const validSkipByConverter = {
32
45
  };
33
46
  class AudioPlayer extends FoundationElement {
34
47
  constructor() {
35
- super(...arguments);
48
+ super();
36
49
  this.playButtonAriaLabel = null;
37
50
  this.pauseButtonAriaLabel = null;
38
51
  this.sliderAriaLabel = null;
@@ -40,106 +53,109 @@ class AudioPlayer extends FoundationElement {
40
53
  this.skipBackwardButtonAriaLabel = null;
41
54
  this.disabled = false;
42
55
  this.notime = false;
43
- this.paused = true;
44
- /**
45
- * @internal
46
- */
47
- this._rewind = () => {
48
- if (this._playerEl) {
49
- this._playerEl.currentTime = this._playerEl.duration * (Number(this._sliderEl.value) / 100);
56
+ this.#playerEl = new Audio();
57
+ this.#pausedChanged = (pausing) => {
58
+ if (pausing === this.paused) {
59
+ return;
60
+ }
61
+ if (!this.paused) {
62
+ this.#playerEl.pause();
63
+ } else {
64
+ this.#updateProgress();
65
+ this.#playerEl.play();
66
+ }
67
+ this.#setPausedState();
68
+ };
69
+ this.#updateProgress = () => {
70
+ Observable.notify(this, "currentTime");
71
+ const percent = this.currentTime / this.duration * 100;
72
+ if (percent === 100) {
73
+ this.pause();
74
+ }
75
+ };
76
+ this.#updateTotalTime = () => {
77
+ Observable.notify(this, "duration");
78
+ };
79
+ this.#rewind = () => {
80
+ if (this.#playerEl) {
81
+ this.currentTime = this.duration * Number(this.#sliderEl.value) / 100;
82
+ }
83
+ };
84
+ this.#handleSliderEvent = (event) => {
85
+ if (event.target === this.#sliderEl) {
86
+ this.pause();
87
+ this.#rewind();
50
88
  }
89
+ return true;
51
90
  };
91
+ this.#setPausedState = () => {
92
+ Observable.notify(this, "paused");
93
+ };
94
+ this.#playerEl.addEventListener("timeupdate", this.#updateProgress);
95
+ this.#playerEl.addEventListener("loadedmetadata", this.#updateTotalTime);
96
+ }
97
+ srcChanged() {
98
+ if (this.src === void 0) {
99
+ this.#playerEl.removeAttribute("src");
100
+ } else {
101
+ this.#playerEl.src = this.src;
102
+ }
103
+ }
104
+ get paused() {
105
+ Observable.track(this, "paused");
106
+ return this.#playerEl.paused;
107
+ }
108
+ set paused(_) {
109
+ }
110
+ get duration() {
111
+ Observable.track(this, "duration");
112
+ return this.#playerEl.duration;
113
+ }
114
+ set duration(_) {
115
+ }
116
+ get currentTime() {
117
+ Observable.track(this, "currentTime");
118
+ return this.#playerEl.currentTime;
119
+ }
120
+ set currentTime(value) {
121
+ this.#playerEl.currentTime = value;
122
+ }
123
+ get #sliderEl() {
124
+ return this.shadowRoot.querySelector(".slider");
125
+ }
126
+ #playerEl;
127
+ get #baseElement() {
128
+ return this.shadowRoot.querySelector(".base");
52
129
  }
53
130
  connectedCallback() {
54
131
  super.connectedCallback();
55
- document.addEventListener("mouseup", this._rewind);
132
+ document.addEventListener("mouseup", this.#rewind);
133
+ this.#setInteractionListeners();
134
+ this.#setPausedState();
56
135
  }
57
136
  disconnectedCallback() {
58
137
  super.disconnectedCallback();
59
- document.addEventListener("mouseup", this._rewind);
138
+ document.addEventListener("mouseup", this.#rewind);
139
+ this.#setInteractionListeners(false);
60
140
  }
61
- /**
62
- * @internal
63
- */
64
- _togglePlay() {
65
- if (this.paused) {
66
- this._updateProgress();
67
- this._playerEl.play();
68
- } else {
69
- this._playerEl.pause();
70
- }
71
- this.paused = !this.paused;
141
+ play() {
142
+ this.#pausedChanged(PLAY);
72
143
  }
73
- /**
74
- * @internal
75
- */
76
- _onSkipButtonClick(isForward) {
77
- if (this._playerEl) {
78
- const currentTime = this._playerEl.currentTime;
79
- const skipDirection = isForward ? 1 : -1;
80
- const skipValue = parseInt(this.skipBy) * skipDirection;
81
- const newTime = currentTime + skipValue;
82
- this._playerEl.currentTime = Math.max(
83
- 0,
84
- Math.min(this._playerEl.duration, newTime)
85
- );
86
- this._updateProgress();
87
- }
144
+ pause() {
145
+ this.#pausedChanged(PAUSE);
88
146
  }
89
- /**
90
- * @internal
91
- */
92
- _updateProgress() {
93
- let currentTime;
94
- const current = this._playerEl.currentTime;
95
- const percent = current / this._playerEl.duration * 100;
96
- if (this._sliderEl) {
97
- this._sliderEl.value = percent.toString();
98
- this._sliderEl.ariaValuetext = this._formatTime(current);
99
- }
100
- if (percent === 100) {
101
- this.paused = true;
102
- }
103
- if (this._timeStampEl) {
104
- currentTime = this._timeStampEl.querySelector(".current-time");
105
- if (currentTime)
106
- currentTime.textContent = this._formatTime(current);
107
- }
108
- }
109
- /**
110
- * @internal
111
- */
112
- _updateTotalTime() {
113
- let totalTime;
114
- if (this._playerEl)
115
- this.duration = this._playerEl.duration;
116
- if (this._timeStampEl) {
117
- totalTime = this._timeStampEl.querySelector(".total-time");
118
- if (totalTime)
119
- totalTime.textContent = this._formatTime(this._playerEl.duration);
120
- }
121
- }
122
- /**
123
- * @internal
124
- */
125
- _handleSliderEvent(event) {
126
- if (event.target === this._sliderEl) {
127
- this.paused = true;
128
- if (this._playerEl) {
129
- this._playerEl.pause();
130
- }
131
- this._rewind();
132
- }
133
- return true;
134
- }
135
- /**
136
- * @internal
137
- */
138
- _formatTime(time) {
139
- const min = Math.floor(time / 60);
140
- const sec = Math.floor(time % 60);
141
- return min + ":" + (sec < 10 ? "0" + sec : sec);
147
+ #setInteractionListeners(add = true) {
148
+ const action = add ? "addEventListener" : "removeEventListener";
149
+ this.#baseElement[action]("keyup", this.#handleSliderEvent);
150
+ this.#baseElement[action]("keydown", this.#handleSliderEvent);
151
+ this.#baseElement[action]("mousedown", this.#handleSliderEvent);
142
152
  }
153
+ #pausedChanged;
154
+ #updateProgress;
155
+ #updateTotalTime;
156
+ #rewind;
157
+ #handleSliderEvent;
158
+ #setPausedState;
143
159
  }
144
160
  __decorateClass([
145
161
  attr({ attribute: "play-button-aria-label" })
@@ -174,18 +190,27 @@ __decorateClass([
174
190
  converter: validSkipByConverter
175
191
  })
176
192
  ], AudioPlayer.prototype, "skipBy");
177
- __decorateClass([
178
- observable
179
- ], AudioPlayer.prototype, "paused");
180
- __decorateClass([
181
- observable
182
- ], AudioPlayer.prototype, "duration");
183
193
  applyMixins(AudioPlayer, Localized);
184
194
 
195
+ function getCurrentTimePercentage(x) {
196
+ if (Number.isNaN(x.currentTime) || Number.isNaN(x.duration)) {
197
+ return 0;
198
+ }
199
+ return x.currentTime / x.duration * 100;
200
+ }
201
+ function skip(audioElement, skipDirection) {
202
+ const currentTime = audioElement.currentTime;
203
+ const skipValue = parseInt(audioElement.skipBy) * skipDirection;
204
+ const newTime = currentTime + skipValue;
205
+ audioElement.currentTime = Math.max(
206
+ 0,
207
+ Math.min(audioElement.duration, newTime)
208
+ );
209
+ }
185
210
  const getClasses = ({ disabled, duration }) => classNames(["disabled", Boolean(disabled) || !duration]);
186
211
  function renderButton(context) {
187
212
  const buttonTag = context.tagFor(Button);
188
- return html`<${buttonTag} class="pause" @click="${(x) => x._togglePlay()}"
213
+ return html`<${buttonTag} class="pause" @click="${(x) => x.paused ? x.play() : x.pause()}"
189
214
  icon="${(x) => x.paused ? "play-solid" : "pause-solid"}"
190
215
  aria-label="${(x) => x.paused ? x.playButtonAriaLabel || x.locale.audioPlayer.playButtonLabel : x.pauseButtonAriaLabel || x.locale.audioPlayer.pauseButtonLabel}"
191
216
  size='condensed'
@@ -196,7 +221,8 @@ function renderButton(context) {
196
221
  function renderBackwardSkipButtons(context) {
197
222
  const buttonTag = context.tagFor(Button);
198
223
  return html`
199
- <${buttonTag} class="skip backward" @click="${(x) => x._onSkipButtonClick(false)}"
224
+ <${buttonTag} class="skip backward"
225
+ @click="${(element) => skip(element, SKIP_DIRECTIONS.BACKWARD)}"
200
226
  icon="${(x) => x.skipBy == MediaSkipBy.Five ? "5-sec-backward-line" : x.skipBy == MediaSkipBy.Thirty ? "30-sec-backward-line" : "10-sec-backward-line"}"
201
227
  size='condensed'
202
228
  aria-label="${(x) => x.skipBackwardButtonAriaLabel || x.locale.audioPlayer.skipBackwardButton}"
@@ -208,7 +234,8 @@ function renderBackwardSkipButtons(context) {
208
234
  function renderForwardSkipButtons(context) {
209
235
  const buttonTag = context.tagFor(Button);
210
236
  return html`
211
- <${buttonTag} class="skip forward" @click="${(x) => x._onSkipButtonClick(true)}"
237
+ <${buttonTag} class="skip forward"
238
+ @click="${(element) => skip(element, SKIP_DIRECTIONS.FORWARD)}"
212
239
  icon="${(x) => x.skipBy == MediaSkipBy.Five ? "5-sec-forward-line" : x.skipBy == MediaSkipBy.Thirty ? "30-sec-forward-line" : "10-sec-forward-line"}"
213
240
  size='condensed'
214
241
  aria-label="${(x) => x.skipForwardButtonAriaLabel || x.locale.audioPlayer.skipForwardButton}"
@@ -219,29 +246,26 @@ function renderForwardSkipButtons(context) {
219
246
  }
220
247
  function renderSlider(context) {
221
248
  const sliderTag = context.tagFor(Slider);
222
- return html`<${sliderTag}
223
- ${ref("_sliderEl")} class="slider"
224
- aria-label="${(x) => x.sliderAriaLabel || x.locale.audioPlayer.sliderLabel}"
225
- value="0" max="100"
226
- connotation="${(x) => x.connotation}"
227
- ?disabled="${(x) => x.disabled || !x.duration}">
249
+ return html`
250
+ <${sliderTag}
251
+ class="slider"
252
+ aria-label="${(x) => x.sliderAriaLabel || x.locale.audioPlayer.sliderLabel}"
253
+ value="${getCurrentTimePercentage}" max="100"
254
+ ariaValuetext="${(x) => formatTime(x.currentTime)}"
255
+ connotation="${(x) => x.connotation}"
256
+ ?disabled="${(x) => x.disabled || !x.duration}">
228
257
  </${sliderTag}>`;
229
258
  }
230
259
  function renderTimestamp() {
231
- return html` <div class="time-stamp" ${ref("_timeStampEl")}>
232
- <span class="current-time">0:00</span>
260
+ return html` <div class="time-stamp">
261
+ <span class="current-time">${(x) => formatTime(x.currentTime)}</span>
233
262
  <span>/</span>
234
- <span class="total-time">0:00</span>
263
+ <span class="total-time">${(x) => formatTime(x.duration)}</span>
235
264
  </div>`;
236
265
  }
237
266
  const AudioPlayerTemplate = (context) => {
238
267
  return html` <div class="wrapper">
239
- <div
240
- class="base ${getClasses}"
241
- @keyup="${(x, c) => x._handleSliderEvent(c.event)}"
242
- @keydown="${(x, c) => x._handleSliderEvent(c.event)}"
243
- @mousedown="${(x, c) => x._handleSliderEvent(c.event)}"
244
- >
268
+ <div class="base ${getClasses}">
245
269
  <div class="controls">
246
270
  ${when(
247
271
  (x) => x.skipBy && x.skipBy != MediaSkipBy.Zero,
@@ -255,12 +279,6 @@ const AudioPlayerTemplate = (context) => {
255
279
  ${when((x) => !x.notime, renderTimestamp())}
256
280
  </div>
257
281
  ${renderSlider(context)}
258
- <audio
259
- ${ref("_playerEl")}
260
- src="${(x) => x.src}"
261
- @timeupdate="${(x) => x._updateProgress()}"
262
- @loadedmetadata="${(x) => x._updateTotalTime()}"
263
- ></audio>
264
282
  </div>
265
283
  </div>`;
266
284
  };
@@ -19,7 +19,7 @@ index.__decorate([
19
19
  index.attr({ mode: "boolean" })
20
20
  ], Tab$1.prototype, "disabled", void 0);
21
21
 
22
- const styles = ":host(.vertical){justify-content:end;grid-column:1/auto}:host([disabled]){cursor:not-allowed}:host(:focus-visible){outline:none}.base{position:relative;display:flex;box-sizing:border-box;align-items:center;padding:var(--_tabs-tablist-gutter);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-bold);gap:var(--_tabs-tablist-gutter);min-block-size:40px;vertical-align:middle;white-space:nowrap}.base{--_appearance-color-text: var(--_connotation-color-primary);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.base:where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--_connotation-color-primary);--_appearance-color-fill: var(--_connotation-color-faint);--_appearance-color-outline: transparent}.base:where(.disabled,:disabled){--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.base:where(.active,:active):where(:not(.disabled,:disabled)){--_appearance-color-text: var(--_connotation-color-primary);--_appearance-color-fill: var(--_connotation-color-soft);--_appearance-color-outline: transparent}.base.connotation-cta{--_connotation-color-primary: var(--vvd-tab-cta-primary, var(--vvd-color-cta-500));--_connotation-color-primary-text: var(--vvd-tab-cta-primary-text, var(--vvd-color-canvas));--_connotation-color-firm: var(--vvd-tab-cta-firm, var(--vvd-color-cta-600));--_connotation-color-faint: var(--vvd-tab-cta-faint, var(--vvd-color-cta-50));--_connotation-color-fierce: var(--vvd-tab-cta-fierce, var(--vvd-color-cta-700));--_connotation-color-pale: var(--vvd-tab-cta-pale, var(--vvd-color-cta-300))}.base:not(.connotation-cta){--_connotation-color-primary: var(--vvd-tab-accent-primary, var(--vvd-color-canvas-text));--_connotation-color-primary-text: var(--vvd-tab-accent-primary-text, var(--vvd-color-canvas));--_connotation-color-firm: var(--vvd-tab-accent-firm, var(--vvd-color-canvas-text));--_connotation-color-faint: var(--vvd-tab-accent-faint, var(--vvd-color-neutral-50));--_connotation-color-fierce: var(--vvd-tab-accent-fierce, var(--vvd-color-neutral-700));--_connotation-color-pale: var(--vvd-tab-accent-pale, var(--vvd-color-neutral-300))}@supports (user-select: none){.base{user-select:none}}.base:not(.shape-sharp){border-radius:8px}.base:not(.disabled){cursor:pointer}.base.disabled{pointer-events:none}:host(:focus-visible) .base{--focus-stroke-gap-color: transparent;box-shadow:inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:2px solid var(--focus-stroke-color, var(--vvd-color-canvas-text));outline-offset:calc(-2px - var(--focus-inset, 0px))}:host(.vertical) .base{padding-inline-start:calc(var(--_tabs-active-indicator-stroke-width) + var(--_tabs-tablist-gutter))}slot[name=icon]{font-size:20px;line-height:1}.icon-trailing slot[name=icon]{display:inline-block;order:1;margin-inline-start:auto}:host(:not(.vertical)) .base:after{position:absolute;border-radius:2px;background:currentColor;block-size:2px;content:\"\";inline-size:100%;inset-block-end:0;inset-inline-start:0;pointer-events:none;transition-property:opacity}:host(:not(.vertical)):host([aria-selected=true]) .base:after{transition-delay:.2s}:host(:not(.vertical)):host(:not([aria-selected=true])) .base:after{opacity:0}";
22
+ const styles = ":host(.vertical){justify-content:end;grid-column:1/auto}:host([disabled]){cursor:not-allowed}:host(:focus-visible){outline:none}.base{position:relative;display:flex;box-sizing:border-box;align-items:center;padding:var(--_tabs-tablist-gutter);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-bold);gap:var(--_tabs-tablist-gutter);min-block-size:40px;vertical-align:middle;white-space:nowrap}.base{--_appearance-color-text: var(--_connotation-color-primary);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.base:where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--_connotation-color-primary);--_appearance-color-fill: var(--_connotation-color-faint);--_appearance-color-outline: transparent}.base:where(.disabled,:disabled){--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.base:where(.active,:active):where(:not(.disabled,:disabled)){--_appearance-color-text: var(--_connotation-color-primary);--_appearance-color-fill: var(--_connotation-color-soft);--_appearance-color-outline: transparent}.base.connotation-cta{--_connotation-color-primary: var(--vvd-tab-cta-primary, var(--vvd-color-cta-500));--_connotation-color-primary-text: var(--vvd-tab-cta-primary-text, var(--vvd-color-canvas));--_connotation-color-firm: var(--vvd-tab-cta-firm, var(--vvd-color-cta-600));--_connotation-color-faint: var(--vvd-tab-cta-faint, var(--vvd-color-cta-50));--_connotation-color-fierce: var(--vvd-tab-cta-fierce, var(--vvd-color-cta-700));--_connotation-color-pale: var(--vvd-tab-cta-pale, var(--vvd-color-cta-300))}.base:not(.connotation-cta){--_connotation-color-primary: var(--vvd-tab-accent-primary, var(--vvd-color-canvas-text));--_connotation-color-primary-text: var(--vvd-tab-accent-primary-text, var(--vvd-color-canvas));--_connotation-color-firm: var(--vvd-tab-accent-firm, var(--vvd-color-canvas-text));--_connotation-color-faint: var(--vvd-tab-accent-faint, var(--vvd-color-neutral-50));--_connotation-color-fierce: var(--vvd-tab-accent-fierce, var(--vvd-color-neutral-700));--_connotation-color-pale: var(--vvd-tab-accent-pale, var(--vvd-color-neutral-300))}@supports (user-select: none){.base{user-select:none}}.base:not(.shape-sharp){border-radius:8px}.base:not(.disabled){cursor:pointer}.base.disabled{pointer-events:none}:host(:focus-visible) .base{--focus-stroke-gap-color: transparent;box-shadow:inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:2px solid var(--focus-stroke-color, var(--vvd-color-canvas-text));outline-offset:calc(-2px - var(--focus-inset, 0px))}:host(.vertical) .base{margin-inline-start:var(--_tabs-active-indicator-stroke-width)}slot[name=icon]{font-size:20px;line-height:1}.icon-trailing slot[name=icon]{display:inline-block;order:1;margin-inline-start:auto}:host(:not(.vertical)) .base:after{position:absolute;border-radius:2px;background:currentColor;block-size:2px;content:\"\";inline-size:100%;inset-block-end:0;inset-inline-start:0;pointer-events:none;transition-property:opacity}:host(:not(.vertical)):host([aria-selected=true]) .base:after{transition-delay:.2s}:host(:not(.vertical)):host(:not([aria-selected=true])) .base:after{opacity:0}";
23
23
 
24
24
  var __defProp = Object.defineProperty;
25
25
  var __decorateClass = (decorators, target, key, kind) => {
@@ -17,7 +17,7 @@ __decorate([
17
17
  attr({ mode: "boolean" })
18
18
  ], Tab$1.prototype, "disabled", void 0);
19
19
 
20
- const styles = ":host(.vertical){justify-content:end;grid-column:1/auto}:host([disabled]){cursor:not-allowed}:host(:focus-visible){outline:none}.base{position:relative;display:flex;box-sizing:border-box;align-items:center;padding:var(--_tabs-tablist-gutter);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-bold);gap:var(--_tabs-tablist-gutter);min-block-size:40px;vertical-align:middle;white-space:nowrap}.base{--_appearance-color-text: var(--_connotation-color-primary);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.base:where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--_connotation-color-primary);--_appearance-color-fill: var(--_connotation-color-faint);--_appearance-color-outline: transparent}.base:where(.disabled,:disabled){--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.base:where(.active,:active):where(:not(.disabled,:disabled)){--_appearance-color-text: var(--_connotation-color-primary);--_appearance-color-fill: var(--_connotation-color-soft);--_appearance-color-outline: transparent}.base.connotation-cta{--_connotation-color-primary: var(--vvd-tab-cta-primary, var(--vvd-color-cta-500));--_connotation-color-primary-text: var(--vvd-tab-cta-primary-text, var(--vvd-color-canvas));--_connotation-color-firm: var(--vvd-tab-cta-firm, var(--vvd-color-cta-600));--_connotation-color-faint: var(--vvd-tab-cta-faint, var(--vvd-color-cta-50));--_connotation-color-fierce: var(--vvd-tab-cta-fierce, var(--vvd-color-cta-700));--_connotation-color-pale: var(--vvd-tab-cta-pale, var(--vvd-color-cta-300))}.base:not(.connotation-cta){--_connotation-color-primary: var(--vvd-tab-accent-primary, var(--vvd-color-canvas-text));--_connotation-color-primary-text: var(--vvd-tab-accent-primary-text, var(--vvd-color-canvas));--_connotation-color-firm: var(--vvd-tab-accent-firm, var(--vvd-color-canvas-text));--_connotation-color-faint: var(--vvd-tab-accent-faint, var(--vvd-color-neutral-50));--_connotation-color-fierce: var(--vvd-tab-accent-fierce, var(--vvd-color-neutral-700));--_connotation-color-pale: var(--vvd-tab-accent-pale, var(--vvd-color-neutral-300))}@supports (user-select: none){.base{user-select:none}}.base:not(.shape-sharp){border-radius:8px}.base:not(.disabled){cursor:pointer}.base.disabled{pointer-events:none}:host(:focus-visible) .base{--focus-stroke-gap-color: transparent;box-shadow:inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:2px solid var(--focus-stroke-color, var(--vvd-color-canvas-text));outline-offset:calc(-2px - var(--focus-inset, 0px))}:host(.vertical) .base{padding-inline-start:calc(var(--_tabs-active-indicator-stroke-width) + var(--_tabs-tablist-gutter))}slot[name=icon]{font-size:20px;line-height:1}.icon-trailing slot[name=icon]{display:inline-block;order:1;margin-inline-start:auto}:host(:not(.vertical)) .base:after{position:absolute;border-radius:2px;background:currentColor;block-size:2px;content:\"\";inline-size:100%;inset-block-end:0;inset-inline-start:0;pointer-events:none;transition-property:opacity}:host(:not(.vertical)):host([aria-selected=true]) .base:after{transition-delay:.2s}:host(:not(.vertical)):host(:not([aria-selected=true])) .base:after{opacity:0}";
20
+ const styles = ":host(.vertical){justify-content:end;grid-column:1/auto}:host([disabled]){cursor:not-allowed}:host(:focus-visible){outline:none}.base{position:relative;display:flex;box-sizing:border-box;align-items:center;padding:var(--_tabs-tablist-gutter);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-bold);gap:var(--_tabs-tablist-gutter);min-block-size:40px;vertical-align:middle;white-space:nowrap}.base{--_appearance-color-text: var(--_connotation-color-primary);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.base:where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--_connotation-color-primary);--_appearance-color-fill: var(--_connotation-color-faint);--_appearance-color-outline: transparent}.base:where(.disabled,:disabled){--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.base:where(.active,:active):where(:not(.disabled,:disabled)){--_appearance-color-text: var(--_connotation-color-primary);--_appearance-color-fill: var(--_connotation-color-soft);--_appearance-color-outline: transparent}.base.connotation-cta{--_connotation-color-primary: var(--vvd-tab-cta-primary, var(--vvd-color-cta-500));--_connotation-color-primary-text: var(--vvd-tab-cta-primary-text, var(--vvd-color-canvas));--_connotation-color-firm: var(--vvd-tab-cta-firm, var(--vvd-color-cta-600));--_connotation-color-faint: var(--vvd-tab-cta-faint, var(--vvd-color-cta-50));--_connotation-color-fierce: var(--vvd-tab-cta-fierce, var(--vvd-color-cta-700));--_connotation-color-pale: var(--vvd-tab-cta-pale, var(--vvd-color-cta-300))}.base:not(.connotation-cta){--_connotation-color-primary: var(--vvd-tab-accent-primary, var(--vvd-color-canvas-text));--_connotation-color-primary-text: var(--vvd-tab-accent-primary-text, var(--vvd-color-canvas));--_connotation-color-firm: var(--vvd-tab-accent-firm, var(--vvd-color-canvas-text));--_connotation-color-faint: var(--vvd-tab-accent-faint, var(--vvd-color-neutral-50));--_connotation-color-fierce: var(--vvd-tab-accent-fierce, var(--vvd-color-neutral-700));--_connotation-color-pale: var(--vvd-tab-accent-pale, var(--vvd-color-neutral-300))}@supports (user-select: none){.base{user-select:none}}.base:not(.shape-sharp){border-radius:8px}.base:not(.disabled){cursor:pointer}.base.disabled{pointer-events:none}:host(:focus-visible) .base{--focus-stroke-gap-color: transparent;box-shadow:inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:2px solid var(--focus-stroke-color, var(--vvd-color-canvas-text));outline-offset:calc(-2px - var(--focus-inset, 0px))}:host(.vertical) .base{margin-inline-start:var(--_tabs-active-indicator-stroke-width)}slot[name=icon]{font-size:20px;line-height:1}.icon-trailing slot[name=icon]{display:inline-block;order:1;margin-inline-start:auto}:host(:not(.vertical)) .base:after{position:absolute;border-radius:2px;background:currentColor;block-size:2px;content:\"\";inline-size:100%;inset-block-end:0;inset-inline-start:0;pointer-events:none;transition-property:opacity}:host(:not(.vertical)):host([aria-selected=true]) .base:after{transition-delay:.2s}:host(:not(.vertical)):host(:not([aria-selected=true])) .base:after{opacity:0}";
21
21
 
22
22
  var __defProp = Object.defineProperty;
23
23
  var __decorateClass = (decorators, target, key, kind) => {
@@ -5,7 +5,7 @@ const definition = require('./definition63.cjs');
5
5
  const anchored = require('./anchored.cjs');
6
6
  const classNames = require('./class-names.cjs');
7
7
 
8
- const styles = ":host{display:var(--_popup-display, inline)}:host([slotted-anchor]){--_popup-display: contents}.control{pointer-events:none}.tooltip{width:var(--tooltip-inline-size, auto)}.tooltip-text{padding:8px 12px;color:var(--vvd-color-canvas-text);font:var(--vvd-typography-base-bold)}";
8
+ const styles = ":host{display:var(--_popup-display, inline)}:host([slotted-anchor]){--_popup-display: contents}.control{pointer-events:none}.tooltip{width:var(--tooltip-inline-size, auto);max-inline-size:var(--tooltip-max-inline-size, none)}.tooltip-text{padding:8px 12px;color:var(--vvd-color-canvas-text);font:var(--vvd-typography-base-bold)}";
9
9
 
10
10
  var __defProp = Object.defineProperty;
11
11
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
@@ -3,7 +3,7 @@ import { P as Popup, p as popupRegistries } from './definition63.js';
3
3
  import { b as anchored, a as anchorSlotTemplateFactory } from './anchored.js';
4
4
  import { c as classNames } from './class-names.js';
5
5
 
6
- const styles = ":host{display:var(--_popup-display, inline)}:host([slotted-anchor]){--_popup-display: contents}.control{pointer-events:none}.tooltip{width:var(--tooltip-inline-size, auto)}.tooltip-text{padding:8px 12px;color:var(--vvd-color-canvas-text);font:var(--vvd-typography-base-bold)}";
6
+ const styles = ":host{display:var(--_popup-display, inline)}:host([slotted-anchor]){--_popup-display: contents}.control{pointer-events:none}.tooltip{width:var(--tooltip-inline-size, auto);max-inline-size:var(--tooltip-max-inline-size, none)}.tooltip-text{padding:8px 12px;color:var(--vvd-color-canvas-text);font:var(--vvd-typography-base-bold)}";
7
7
 
8
8
  var __defProp = Object.defineProperty;
9
9
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;