@vonage/vivid 3.0.0-next.120 → 3.0.0-next.122

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 (118) hide show
  1. package/custom-elements.json +119 -438
  2. package/header/index.js +4 -56
  3. package/index.js +40 -39
  4. package/layout/index.js +1 -1
  5. package/lib/accordion/definition.d.ts +0 -2
  6. package/lib/accordion-item/definition.d.ts +0 -2
  7. package/lib/action-group/definition.d.ts +0 -2
  8. package/lib/avatar/definition.d.ts +0 -2
  9. package/lib/badge/definition.d.ts +1 -1
  10. package/lib/banner/definition.d.ts +0 -2
  11. package/lib/breadcrumb/definition.d.ts +0 -2
  12. package/lib/breadcrumb-item/definition.d.ts +0 -2
  13. package/lib/button/definition.d.ts +0 -2
  14. package/lib/calendar/definition.d.ts +0 -2
  15. package/lib/calendar-event/definition.d.ts +0 -2
  16. package/lib/card/definition.d.ts +0 -2
  17. package/lib/checkbox/definition.d.ts +0 -2
  18. package/lib/components.d.ts +1 -0
  19. package/lib/dialog/definition.d.ts +0 -2
  20. package/lib/divider/definition.d.ts +0 -2
  21. package/lib/elevation/definition.d.ts +0 -2
  22. package/lib/fab/definition.d.ts +1 -1
  23. package/lib/focus/definition.d.ts +1 -1
  24. package/lib/header/definition.d.ts +1 -1
  25. package/lib/icon/definition.d.ts +1 -1
  26. package/lib/layout/definition.d.ts +1 -1
  27. package/lib/listbox/definition.d.ts +1 -1
  28. package/lib/menu/definition.d.ts +6 -2
  29. package/lib/menu-item/definition.d.ts +1 -1
  30. package/lib/nav/definition.d.ts +1 -1
  31. package/lib/nav-disclosure/definition.d.ts +1 -1
  32. package/lib/nav-item/definition.d.ts +1 -1
  33. package/lib/note/definition.d.ts +1 -1
  34. package/lib/number-field/definition.d.ts +2 -1
  35. package/lib/option/definition.d.ts +1 -1
  36. package/lib/popup/definition.d.ts +1 -2
  37. package/lib/progress/definition.d.ts +1 -1
  38. package/lib/progress-ring/definition.d.ts +1 -1
  39. package/lib/radio/definition.d.ts +1 -1
  40. package/lib/radio-group/definition.d.ts +6 -2
  41. package/lib/side-drawer/definition.d.ts +1 -1
  42. package/lib/slider/definition.d.ts +1 -1
  43. package/lib/switch/definition.d.ts +1 -1
  44. package/lib/text-anchor/definition.d.ts +1 -1
  45. package/lib/text-area/definition.d.ts +1 -1
  46. package/lib/text-field/definition.d.ts +1 -1
  47. package/lib/tooltip/definition.d.ts +1 -1
  48. package/listbox/index.js +2 -2
  49. package/menu/index.js +3 -3
  50. package/menu-item/index.js +1 -1
  51. package/nav/index.js +1 -1
  52. package/nav-disclosure/index.js +1 -1
  53. package/nav-item/index.js +1 -1
  54. package/note/index.js +1 -1
  55. package/number-field/index.js +8 -8
  56. package/option/index.js +1 -1
  57. package/package.json +3 -2
  58. package/popup/index.js +1 -1
  59. package/progress/index.js +1 -1
  60. package/progress-ring/index.js +1 -1
  61. package/radio/index.js +1 -1
  62. package/radio-group/index.js +1 -1
  63. package/shared/definition.js +7 -7
  64. package/shared/definition10.js +6 -6
  65. package/shared/definition11.js +9 -9
  66. package/shared/definition12.js +7 -7
  67. package/shared/definition13.js +7 -7
  68. package/shared/definition14.js +9 -9
  69. package/shared/definition15.js +6 -6
  70. package/shared/definition16.js +9 -9
  71. package/shared/definition17.js +10 -10
  72. package/shared/definition18.js +7 -7
  73. package/shared/definition19.js +9 -9
  74. package/shared/definition2.js +9 -9
  75. package/shared/definition20.js +48 -34
  76. package/shared/definition21.js +36 -1070
  77. package/shared/definition22.js +980 -163
  78. package/shared/definition23.js +212 -299
  79. package/shared/definition24.js +311 -1492
  80. package/shared/definition25.js +1493 -315
  81. package/shared/definition26.js +348 -15
  82. package/shared/definition27.js +13 -70
  83. package/shared/definition28.js +68 -24
  84. package/shared/definition29.js +22 -47
  85. package/shared/definition3.js +6 -6
  86. package/shared/definition30.js +41 -79
  87. package/shared/definition31.js +77 -60
  88. package/shared/definition32.js +68 -36
  89. package/shared/definition33.js +32 -422
  90. package/shared/definition34.js +419 -70
  91. package/shared/definition35.js +67 -573
  92. package/shared/definition36.js +528 -83
  93. package/shared/definition37.js +88 -220
  94. package/shared/definition38.js +247 -87
  95. package/shared/definition39.js +110 -68
  96. package/shared/definition4.js +7 -7
  97. package/shared/definition40.js +77 -0
  98. package/shared/definition5.js +7 -7
  99. package/shared/definition6.js +8 -8
  100. package/shared/definition7.js +8 -8
  101. package/shared/definition8.js +9 -9
  102. package/shared/definition9.js +9 -9
  103. package/shared/design-system/index.d.ts +2 -1
  104. package/shared/form-elements.js +1 -1
  105. package/shared/index.js +2 -2
  106. package/side-drawer/index.js +1 -1
  107. package/slider/index.js +1 -1
  108. package/styles/core/all.css +1 -1
  109. package/styles/core/theme.css +1 -1
  110. package/styles/core/typography.css +1 -1
  111. package/styles/tokens/theme-dark.css +4 -4
  112. package/styles/tokens/theme-light.css +4 -4
  113. package/switch/index.js +1 -1
  114. package/text-anchor/index.js +5 -5
  115. package/text-area/index.js +1 -1
  116. package/text-field/index.js +1 -1
  117. package/tooltip/index.js +2 -2
  118. package/vivid.api.json +545 -1162
@@ -1,279 +1,147 @@
1
- import { F as FoundationElement, _ as __decorate, a as attr, Z as nullableNumberConverter, N as observable, b as __metadata, h as html, r as registerFactorial } from './index.js';
2
- import { i as iconElements } from './definition3.js';
3
- import { f as focusElements } from './definition4.js';
1
+ import { F as FoundationElement, _ as __decorate, a as attr, N as observable, b as __metadata, h as html, r as registerFactory } from './index.js';
2
+ import { i as iconRegistries } from './definition3.js';
3
+ import { f as focusRegistries } from './definition4.js';
4
+ import { C as CheckableFormAssociated } from './form-associated.js';
5
+ import { a as keySpace, k as keyEnter } from './key-codes.js';
4
6
  import './affix.js';
5
- import './focus.js';
6
- import { D as DelegatesARIATextbox, f as formElements, g as getFeedbackTemplate } from './form-elements.js';
7
- import { a as applyMixins } from './apply-mixins.js';
8
- import { F as FormAssociated } from './form-associated.js';
9
7
  import { f as focusTemplateFactory } from './focus2.js';
8
+ import './icon.js';
10
9
  import { w as when } from './when.js';
11
- import { r as ref } from './ref.js';
12
10
  import { c as classNames } from './class-names.js';
13
11
 
14
- class _TextArea extends FoundationElement {
12
+ class _Switch extends FoundationElement {
15
13
  }
16
14
  /**
17
- * A form-associated base class for the {@link @microsoft/fast-foundation#(TextArea:class)} component.
15
+ * A form-associated base class for the {@link @microsoft/fast-foundation#(Switch:class)} component.
18
16
  *
19
17
  * @internal
20
18
  */
21
- class FormAssociatedTextArea extends FormAssociated(_TextArea) {
19
+ class FormAssociatedSwitch extends CheckableFormAssociated(_Switch) {
22
20
  constructor() {
23
21
  super(...arguments);
24
- this.proxy = document.createElement("textarea");
22
+ this.proxy = document.createElement("input");
25
23
  }
26
24
  }
27
25
 
28
26
  /**
29
- * Resize mode for a TextArea
30
- * @public
31
- */
32
- const TextAreaResize = {
33
- /**
34
- * No resize.
35
- */
36
- none: "none",
37
- /**
38
- * Resize vertically and horizontally.
39
- */
40
- both: "both",
41
- /**
42
- * Resize horizontally.
43
- */
44
- horizontal: "horizontal",
45
- /**
46
- * Resize vertically.
47
- */
48
- vertical: "vertical",
49
- };
50
-
51
- /**
52
- * A Text Area Custom HTML Element.
53
- * Based largely on the {@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/textarea | <textarea> element }.
27
+ * A Switch Custom HTML Element.
28
+ * Implements the {@link https://www.w3.org/TR/wai-aria-1.1/#switch | ARIA switch }.
54
29
  *
55
- * @slot - The default slot for the label
30
+ * @slot - The deafult slot for the label
31
+ * @slot checked-message - The message when in a checked state
32
+ * @slot unchecked-message - The message when in an unchecked state
56
33
  * @csspart label - The label
57
- * @csspart root - The element wrapping the control
58
- * @csspart control - The textarea element
59
- * @fires change - Emits a custom 'change' event when the textarea emits a change event
34
+ * @csspart switch - The element representing the switch, which wraps the indicator
35
+ * @csspart status-message - The wrapper for the status messages
36
+ * @csspart checked-message - The checked message
37
+ * @csspart unchecked-message - The unchecked message
38
+ * @fires change - Emits a custom change event when the checked state changes
60
39
  *
61
40
  * @public
62
41
  */
63
- class TextArea$1 extends FormAssociatedTextArea {
42
+ class Switch$1 extends FormAssociatedSwitch {
64
43
  constructor() {
65
- super(...arguments);
44
+ super();
66
45
  /**
67
- * The resize mode of the element.
68
- * @public
69
- * @remarks
70
- * HTML Attribute: resize
46
+ * The element's value to be included in form submission when checked.
47
+ * Default to "on" to reach parity with input[type="checkbox"]
48
+ *
49
+ * @internal
71
50
  */
72
- this.resize = TextAreaResize.none;
51
+ this.initialValue = "on";
73
52
  /**
74
- * Sizes the element horizontally by a number of character columns.
75
- *
76
- * @public
77
- * @remarks
78
- * HTML Attribute: cols
53
+ * @internal
79
54
  */
80
- this.cols = 20;
55
+ this.keypressHandler = (e) => {
56
+ if (this.readOnly) {
57
+ return;
58
+ }
59
+ switch (e.key) {
60
+ case keyEnter:
61
+ case keySpace:
62
+ this.checked = !this.checked;
63
+ break;
64
+ }
65
+ };
81
66
  /**
82
67
  * @internal
83
68
  */
84
- this.handleTextInput = () => {
85
- this.value = this.control.value;
69
+ this.clickHandler = (e) => {
70
+ if (!this.disabled && !this.readOnly) {
71
+ this.checked = !this.checked;
72
+ }
86
73
  };
74
+ this.proxy.setAttribute("type", "checkbox");
87
75
  }
88
76
  readOnlyChanged() {
89
- if (this.proxy instanceof HTMLTextAreaElement) {
77
+ if (this.proxy instanceof HTMLInputElement) {
90
78
  this.proxy.readOnly = this.readOnly;
91
79
  }
92
- }
93
- autofocusChanged() {
94
- if (this.proxy instanceof HTMLTextAreaElement) {
95
- this.proxy.autofocus = this.autofocus;
96
- }
97
- }
98
- listChanged() {
99
- if (this.proxy instanceof HTMLTextAreaElement) {
100
- this.proxy.setAttribute("list", this.list);
101
- }
102
- }
103
- maxlengthChanged() {
104
- if (this.proxy instanceof HTMLTextAreaElement) {
105
- this.proxy.maxLength = this.maxlength;
106
- }
107
- }
108
- minlengthChanged() {
109
- if (this.proxy instanceof HTMLTextAreaElement) {
110
- this.proxy.minLength = this.minlength;
111
- }
112
- }
113
- spellcheckChanged() {
114
- if (this.proxy instanceof HTMLTextAreaElement) {
115
- this.proxy.spellcheck = this.spellcheck;
116
- }
80
+ this.readOnly
81
+ ? this.classList.add("readonly")
82
+ : this.classList.remove("readonly");
117
83
  }
118
84
  /**
119
- * Selects all the text in the text area
120
- *
121
- * @public
85
+ * @internal
122
86
  */
123
- select() {
124
- this.control.select();
87
+ checkedChanged(prev, next) {
88
+ super.checkedChanged(prev, next);
125
89
  /**
126
- * The select event does not permeate the shadow DOM boundary.
127
- * This fn effectively proxies the select event,
128
- * emitting a `select` event whenever the internal
129
- * control emits a `select` event
90
+ * @deprecated - this behavior already exists in the template and should not exist in the class.
130
91
  */
131
- this.$emit("select");
132
- }
133
- /**
134
- * Change event handler for inner control.
135
- * @remarks
136
- * "Change" events are not `composable` so they will not
137
- * permeate the shadow DOM boundary. This fn effectively proxies
138
- * the change event, emitting a `change` event whenever the internal
139
- * control emits a `change` event
140
- * @internal
141
- */
142
- handleChange() {
143
- this.$emit("change");
144
- }
145
- /** {@inheritDoc (FormAssociated:interface).validate} */
146
- validate() {
147
- super.validate(this.control);
92
+ this.checked ? this.classList.add("checked") : this.classList.remove("checked");
148
93
  }
149
94
  }
150
95
  __decorate([
151
- attr({ mode: "boolean" })
152
- ], TextArea$1.prototype, "readOnly", void 0);
153
- __decorate([
154
- attr
155
- ], TextArea$1.prototype, "resize", void 0);
156
- __decorate([
157
- attr({ mode: "boolean" })
158
- ], TextArea$1.prototype, "autofocus", void 0);
159
- __decorate([
160
- attr({ attribute: "form" })
161
- ], TextArea$1.prototype, "formId", void 0);
162
- __decorate([
163
- attr
164
- ], TextArea$1.prototype, "list", void 0);
165
- __decorate([
166
- attr({ converter: nullableNumberConverter })
167
- ], TextArea$1.prototype, "maxlength", void 0);
168
- __decorate([
169
- attr({ converter: nullableNumberConverter })
170
- ], TextArea$1.prototype, "minlength", void 0);
171
- __decorate([
172
- attr
173
- ], TextArea$1.prototype, "name", void 0);
174
- __decorate([
175
- attr
176
- ], TextArea$1.prototype, "placeholder", void 0);
177
- __decorate([
178
- attr({ converter: nullableNumberConverter, mode: "fromView" })
179
- ], TextArea$1.prototype, "cols", void 0);
180
- __decorate([
181
- attr({ converter: nullableNumberConverter, mode: "fromView" })
182
- ], TextArea$1.prototype, "rows", void 0);
183
- __decorate([
184
- attr({ mode: "boolean" })
185
- ], TextArea$1.prototype, "spellcheck", void 0);
96
+ attr({ attribute: "readonly", mode: "boolean" })
97
+ ], Switch$1.prototype, "readOnly", void 0);
186
98
  __decorate([
187
99
  observable
188
- ], TextArea$1.prototype, "defaultSlottedNodes", void 0);
189
- applyMixins(TextArea$1, DelegatesARIATextbox);
100
+ ], Switch$1.prototype, "defaultSlottedNodes", void 0);
190
101
 
191
- var css_248z = "/**\n * Do not edit directly\n * Generated on Wed, 14 Dec 2022 16:38:57 GMT\n */\n:host {\n display: inline-block;\n}\n\n.base {\n display: inline-grid;\n width: 100%;\n gap: 4px;\n grid-template-columns: 1fr max-content;\n}\n.base {\n --_appearance-color-text: var(--vvd-color-canvas-text);\n --_appearance-color-fill: var(--_connotation-color-backdrop);\n --_appearance-color-outline: var(--_connotation-color-intermediate);\n}\n.base.appearance-ghost {\n --_appearance-color-text: var(--_connotation-color-primary);\n --_appearance-color-fill: transparent;\n --_appearance-color-outline: transparent;\n}\n.base:where(:hover, .hover):where(:not(:disabled, .disabled, .readonly)) {\n --_appearance-color-text: var(--vvd-color-canvas-text);\n --_appearance-color-fill: var(--_connotation-color-backdrop);\n --_appearance-color-outline: var(--_connotation-color-firm);\n}\n.base:where(:hover, .hover):where(:not(:disabled, .disabled, .readonly)).appearance-ghost {\n --_appearance-color-text: var(--_connotation-color-primary);\n --_appearance-color-fill: var(--_connotation-color-faint);\n --_appearance-color-outline: transparent;\n}\n.base:where(:disabled, .disabled) {\n --_appearance-color-text: var(--vvd-color-neutral-400);\n --_appearance-color-fill: var(--vvd-color-neutral-200);\n --_appearance-color-outline: var(--vvd-color-neutral-400);\n}\n.base:where(:disabled, .disabled).appearance-ghost {\n --_appearance-color-text: var(--vvd-color-neutral-400);\n --_appearance-color-fill: transparent;\n --_appearance-color-outline: transparent;\n}\n.base:where(.readonly):where(:not(:disabled, .disabled)) {\n --_appearance-color-text: var(--vvd-color-neutral-800);\n --_appearance-color-fill: var(--vvd-color-neutral-200);\n --_appearance-color-outline: var(--vvd-color-neutral-500);\n}\n.base:where(.readonly):where(:not(:disabled, .disabled)).appearance-ghost {\n --_appearance-color-text: var(--vvd-color-neutral-400);\n --_appearance-color-fill: transparent;\n --_appearance-color-outline: transparent;\n}\n.base.connotation-success {\n --_connotation-color-primary: var(--vvd-color-success-500);\n --_connotation-color-backdrop: var(--vvd-color-success-50);\n --_connotation-color-intermediate: var(--vvd-color-success-500);\n --_connotation-color-firm: var(--vvd-color-success-600);\n}\n.base.connotation-alert {\n --_connotation-color-primary: var(--vvd-color-alert-500);\n --_connotation-color-backdrop: var(--vvd-color-alert-50);\n --_connotation-color-intermediate: var(--vvd-color-alert-500);\n --_connotation-color-firm: var(--vvd-color-alert-600);\n}\n.base:not(.connotation-success, .connotation-alert) {\n --_connotation-color-primary: var(--vvd-color-canvas-text);\n --_connotation-color-backdrop: var(--vvd-color-canvas);\n --_connotation-color-intermediate: var(--vvd-color-neutral-500);\n --_connotation-color-firm: var(--vvd-color-canvas-text);\n}\n@supports (user-select: none) {\n .base {\n user-select: none;\n }\n}\n.base:not(.disabled) {\n --_low-ink-color: var(--vvd-color-neutral-600);\n}\n.base.disabled {\n --_low-ink-color: var(--_appearance-color-text);\n pointer-events: none;\n}\n\n.label {\n color: var(--vvd-color-canvas-text);\n contain: inline-size;\n font: var(--vvd-typography-base);\n grid-column: 1/3;\n grid-row: 1;\n line-height: 20px;\n}\n\n.fieldset {\n position: relative;\n display: flex;\n align-items: center;\n border-radius: 6px;\n grid-column: 1/3;\n}\n\n.control {\n width: 100%;\n padding: 8px 16px;\n border: 0 none;\n background-color: var(--_appearance-color-fill);\n border-radius: inherit;\n box-shadow: inset 0 0 0 1px var(--_appearance-color-outline);\n color: var(--_appearance-color-text);\n font: var(--vvd-typography-base);\n min-block-size: calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density, 0), 2)));\n transition: box-shadow 0.2s, background-color 0.2s, color 0.2s;\n}\n.control:disabled {\n cursor: not-allowed;\n opacity: 1; /* 2. correct opacity on iOS */\n -webkit-text-fill-color: var(--_appearance-color-text); /* 1. sets text fill to current `color` for safari */\n}\n.control::placeholder, .control:disabled::placeholder {\n opacity: 1; /* 2. correct opacity on iOS */\n -webkit-text-fill-color: var(--_low-ink-color); /* 1. sets text fill to current `color` for safari */\n}\n@supports selector(:focus-visible) {\n .control:focus {\n outline: none;\n }\n}\n\n.focus-indicator {\n --focus-stroke-gap-color: transparent;\n pointer-events: none;\n}\n.fieldset:not(:focus-visible, :focus-within) > .focus-indicator {\n display: none;\n}";
102
+ var css_248z = "/**\n * Do not edit directly\n * Generated on Sun, 18 Dec 2022 17:21:55 GMT\n */\n.control {\n display: inline-flex;\n gap: 8px;\n}\n.control.connotation-cta {\n --_connotation-color-primary-text: var(--vvd-color-canvas);\n --_connotation-color-primary: var(--vvd-color-cta-500);\n --_connotation-color-primary-increment: var(--vvd-color-cta-600);\n --_connotation-color-backdrop: var(--vvd-color-cta-50);\n --_connotation-color-firm: var(--vvd-color-cta-600);\n --_connotation-color-intermediate: var(--vvd-color-cta-500);\n}\n.control.connotation-alert {\n --_connotation-color-primary-text: var(--vvd-color-canvas);\n --_connotation-color-primary: var(--vvd-color-alert-500);\n --_connotation-color-primary-increment: var(--vvd-color-alert-600);\n --_connotation-color-backdrop: var(--vvd-color-alert-50);\n --_connotation-color-firm: var(--vvd-color-alert-600);\n --_connotation-color-intermediate: var(--vvd-color-alert-500);\n}\n.control.connotation-success {\n --_connotation-color-primary-text: var(--vvd-color-canvas);\n --_connotation-color-primary: var(--vvd-color-success-500);\n --_connotation-color-primary-increment: var(--vvd-color-success-600);\n --_connotation-color-backdrop: var(--vvd-color-success-50);\n --_connotation-color-firm: var(--vvd-color-success-600);\n --_connotation-color-intermediate: var(--vvd-color-success-500);\n}\n.control:not(.connotation-cta, .connotation-alert, .connotation-success) {\n --_connotation-color-primary-text: var(--vvd-color-canvas);\n --_connotation-color-primary: var(--vvd-color-canvas-text);\n --_connotation-color-primary-increment: var(--vvd-color-neutral-800);\n --_connotation-color-backdrop: var(--vvd-color-canvas);\n --_connotation-color-firm: var(--vvd-color-canvas-text);\n --_connotation-color-intermediate: var(--vvd-color-neutral-500);\n}\n.control {\n --_appearance-color-text: var(--vvd-color-canvas-text);\n --_appearance-color-fill: var(--_connotation-color-backdrop);\n --_appearance-color-outline: var(--_connotation-color-intermediate);\n}\n.control.appearance-filled {\n --_appearance-color-text: var(--_connotation-color-primary-text);\n --_appearance-color-fill: var(--_connotation-color-primary);\n --_appearance-color-outline: transparent;\n}\n.control:where(:hover, .hover):where(:not(:disabled, .disabled, .readonly)) {\n --_appearance-color-text: var(--vvd-color-canvas-text);\n --_appearance-color-fill: var(--_connotation-color-backdrop);\n --_appearance-color-outline: var(--_connotation-color-firm);\n}\n.control:where(:hover, .hover):where(:not(:disabled, .disabled, .readonly)).appearance-filled {\n --_appearance-color-text: var(--_connotation-color-primary-text);\n --_appearance-color-fill: var(--_connotation-color-primary-increment);\n --_appearance-color-outline: transparent;\n}\n.control:where(:disabled, .disabled) {\n --_appearance-color-text: var(--vvd-color-neutral-400);\n --_appearance-color-fill: var(--vvd-color-neutral-200);\n --_appearance-color-outline: var(--vvd-color-neutral-400);\n}\n.control:where(:disabled, .disabled).appearance-filled {\n --_appearance-color-text: var(--vvd-color-neutral-400);\n --_appearance-color-fill: var(--vvd-color-neutral-200);\n --_appearance-color-outline: transparent;\n}\n.control:where(.readonly):where(:not(:disabled, .disabled)) {\n --_appearance-color-text: var(--vvd-color-neutral-800);\n --_appearance-color-fill: var(--vvd-color-neutral-200);\n --_appearance-color-outline: var(--vvd-color-neutral-500);\n}\n.control:where(.readonly):where(:not(:disabled, .disabled)).appearance-filled {\n --_appearance-color-text: var(--vvd-color-neutral-800);\n --_appearance-color-fill: var(--vvd-color-neutral-200);\n --_appearance-color-outline: transparent;\n}\n@supports selector(:focus-visible) {\n .control:focus {\n outline: none;\n }\n}\n@supports (user-select: none) {\n .control {\n user-select: none;\n }\n}\n.control:not(.disabled) {\n cursor: pointer;\n}\n.control.disabled {\n cursor: not-allowed;\n}\n\n.switch {\n --_switch-inline-size: calc(calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density, 0), 2) - 20)) * 1.8);\n position: relative;\n display: flex;\n box-sizing: border-box;\n align-items: center;\n background-color: var(--_appearance-color-fill);\n block-size: calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density, 0), 2) - 20));\n border-radius: calc(calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density, 0), 2) - 20)) / .5);\n box-shadow: inset 0 0 0 1px var(--_appearance-color-outline);\n inline-size: var(--_switch-inline-size);\n transition: all 0.2s ease-in-out 0s;\n}\n\n.checked-indicator {\n --_switch-checked-indicator-size: calc(calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density, 0), 2) - 20)) / 1.6667);\n --_switch-gutter: calc(var(--_switch-checked-indicator-size) / 3);\n block-size: var(--_switch-checked-indicator-size);\n border-radius: inherit;\n inline-size: var(--_switch-checked-indicator-size);\n margin-inline-start: auto;\n transition: all 0.2s ease-in-out 0s;\n}\n.control.appearance-filled .checked-indicator {\n background-color: var(--vvd-color-neutral-100);\n}\n.control:not(.appearance-filled) .checked-indicator {\n background-color: var(--_appearance-color-outline);\n}\n.control:not(.checked) .checked-indicator {\n transform: translateX(calc(-1 * var(--_switch-inline-size) + var(--_switch-checked-indicator-size) + var(--_switch-gutter)));\n}\n.control.checked .checked-indicator {\n transform: translateX(calc(-1 * var(--_switch-gutter)));\n}\n\n.label {\n color: var(--vvd-color-canvas-text);\n cursor: pointer;\n font: var(--vvd-typography-base);\n}\n\n.focus-indicator {\n --focus-inset: -4px;\n --focus-stroke-gap-color: transparent;\n border-radius: 14px;\n}\n.control:not(:focus-visible) .focus-indicator {\n display: none;\n}";
192
103
 
193
- let TextArea = class TextArea extends TextArea$1 {};
194
- __decorate([attr, __metadata("design:type", String)], TextArea.prototype, "wrap", void 0);
195
- TextArea = __decorate([formElements], TextArea);
104
+ class Switch extends Switch$1 {}
105
+ __decorate([attr, __metadata("design:type", String)], Switch.prototype, "label", void 0);
106
+ __decorate([attr, __metadata("design:type", String)], Switch.prototype, "connotation", void 0);
196
107
 
197
- let _ = t => t,
108
+ let _2 = t => t,
198
109
  _t,
199
110
  _t2;
200
- const getClasses = ({
201
- value,
202
- errorValidationMessage,
203
- disabled,
204
- placeholder,
205
- readOnly,
206
- successText
207
- }) => classNames('base', ['readonly', readOnly], ['placeholder', Boolean(placeholder)], ['disabled', disabled], ['error connotation-alert', Boolean(errorValidationMessage)], ['has-value', Boolean(value)], ['success connotation-success', !!successText]);
208
- function renderLabel() {
209
- return html(_t || (_t = _`
210
- <label for="control" class="label">
211
- ${0}
212
- </label>`), x => x.label);
213
- }
214
- const TextAreaTemplate = context => {
111
+ const getClasses = _ => classNames('control', ['appearance-filled', _.checked && !_.disabled && !_.readOnly], ['checked', _.checked], ['disabled', _.disabled], ['readonly', _.readOnly], [`connotation-${_.connotation}`, Boolean(_.checked) && Boolean(_.connotation)]);
112
+ const SwitchTemplate = context => {
215
113
  const focusTemplate = focusTemplateFactory(context);
216
- return html(_t2 || (_t2 = _`
217
- <div class="${0}">
218
- ${0}
219
- <div class="fieldset">
220
- <textarea class="control"
221
- ?autofocus="${0}"
222
- placeholder="${0}"
223
- name="${0}"
224
- maxlength="${0}"
225
- rows="${0}"
226
- cols="${0}"
227
- wrap="${0}"
228
- ?readonly="${0}"
229
- ?required="${0}"
230
- ?spellcheck="${0}"
231
- :value="${0}"
232
- aria-atomic="${0}"
233
- aria-busy="${0}"
234
- aria-controls="${0}"
235
- aria-current="${0}"
236
- aria-describedby="${0}"
237
- aria-details="${0}"
114
+ return html(_t || (_t = _2`
115
+ <div
116
+ class="${0}"
117
+ role="switch"
118
+ aria-checked="${0}"
238
119
  aria-disabled="${0}"
239
- aria-errormessage="${0}"
240
- aria-flowto="${0}"
241
- aria-haspopup="${0}"
242
- aria-hidden="${0}"
243
- aria-invalid="${0}"
244
- aria-keyshortcuts="${0}"
245
- aria-label="${0}"
246
- aria-labelledby="${0}"
247
- aria-live="${0}"
248
- aria-owns="${0}"
249
- aria-relevant="${0}"
250
- aria-roledescription="${0}"
251
- @input="${0}"
252
- @change="${0}"
120
+ aria-readonly="${0}"
121
+ tabindex="${0}"
122
+ @keypress="${0}"
123
+ @click="${0}"
124
+ >
125
+ <div class="switch">
126
+ <span class="checked-indicator"></span>
127
+ ${0}
128
+ </div>
129
+ ${0}
130
+ </div>
131
+ `), getClasses, x => x.checked, x => x.disabled, x => x.readOnly, x => x.disabled ? null : 0, (x, c) => x.keypressHandler(c.event), (x, c) => x.clickHandler(c.event), () => focusTemplate, when(x => x.label, html(_t2 || (_t2 = _2`<div class="label">
253
132
  ${0}
254
- >
255
- </textarea>
256
- ${0}
257
- </div>
258
- ${0}
259
- ${0}
260
- ${0}
261
- </div>
262
- `), getClasses, when(x => x.label, renderLabel()), x => x.autofocus, x => x.placeholder ? x.placeholder : null, x => x.name ? x.name : null, x => x.maxlength ? x.maxlength : null, x => x.rows ? x.rows : null, x => x.cols ? x.cols : null, x => x.wrap ? x.wrap : null, x => x.readOnly, x => x.required, x => x.spellcheck, x => x.value, x => x.ariaAtomic, x => x.ariaBusy, x => x.ariaControls, x => x.ariaCurrent, x => x.ariaDescribedby, x => x.ariaDetails, x => x.ariaDisabled, x => x.ariaErrormessage, x => x.ariaFlowto, x => x.ariaHaspopup, x => x.ariaHidden, x => x.ariaInvalid, x => x.ariaKeyshortcuts, x => x.ariaLabel, x => x.ariaLabelledby, x => x.ariaLive, x => x.ariaOwns, x => x.ariaRelevant, x => x.ariaRoledescription, x => x.handleTextInput(), x => x.handleChange(), ref('control'), () => focusTemplate, when(x => {
263
- var _a;
264
- return !x.successText && !x.errorValidationMessage && ((_a = x.helperText) === null || _a === void 0 ? void 0 : _a.length);
265
- }, getFeedbackTemplate('helper', context)), when(x => !x.successText && x.errorValidationMessage, getFeedbackTemplate('error', context)), when(x => x.successText, getFeedbackTemplate('success', context)));
133
+ </div>`), x => x.label)));
266
134
  };
267
135
 
268
- const textArea = TextArea.compose({
269
- baseName: 'text-area',
270
- template: TextAreaTemplate,
136
+ const switchDefinition = Switch.compose({
137
+ baseName: 'switch',
138
+ template: SwitchTemplate,
271
139
  styles: css_248z,
272
140
  shadowOptions: {
273
141
  delegatesFocus: true
274
142
  }
275
- })();
276
- const textAreaElements = [textArea, ...iconElements, ...focusElements];
277
- const registerTextArea = registerFactorial(textAreaElements);
143
+ });
144
+ const switchRegistries = [switchDefinition(), ...iconRegistries, ...focusRegistries];
145
+ const registerSwitch = registerFactory(switchRegistries);
278
146
 
279
- export { textAreaElements as a, registerTextArea as r, textArea as t };
147
+ export { switchRegistries as a, registerSwitch as r, switchDefinition as s };