@vonage/vivid 3.31.0 → 3.34.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 (237) hide show
  1. package/accordion/index.js +5 -5
  2. package/accordion-item/index.js +4 -4
  3. package/action-group/index.js +1 -1
  4. package/alert/index.js +8 -7
  5. package/avatar/index.js +2 -2
  6. package/badge/index.js +2 -2
  7. package/banner/index.js +5 -5
  8. package/breadcrumb/index.js +1 -1
  9. package/breadcrumb-item/index.js +3 -3
  10. package/button/index.js +4 -4
  11. package/calendar/index.js +1 -1
  12. package/calendar-event/index.js +1 -1
  13. package/card/index.js +3 -3
  14. package/checkbox/index.js +7 -4
  15. package/combobox/index.js +10 -9
  16. package/custom-elements.json +996 -29
  17. package/data-grid/index.js +2 -2
  18. package/date-picker/index.js +35 -0
  19. package/dialog/index.js +6 -6
  20. package/divider/index.js +1 -1
  21. package/elevation/index.js +1 -1
  22. package/empty-state/index.js +2 -2
  23. package/fab/index.js +4 -4
  24. package/file-picker/index.js +7 -6
  25. package/focus/index.js +1 -1
  26. package/header/index.js +2 -2
  27. package/icon/index.js +1 -1
  28. package/index.d.ts +1 -0
  29. package/index.js +68 -66
  30. package/layout/index.js +1 -1
  31. package/lib/button/button.d.ts +2 -0
  32. package/lib/calendar/calendar.d.ts +1 -1
  33. package/lib/components.d.ts +20 -19
  34. package/lib/date-picker/calendar/calendarGrid.d.ts +17 -0
  35. package/lib/date-picker/calendar/dateStr.d.ts +7 -0
  36. package/lib/date-picker/calendar/month.d.ts +12 -0
  37. package/lib/date-picker/calendar/monthPickerGrid.d.ts +10 -0
  38. package/lib/date-picker/calendar/presentationDate.d.ts +4 -0
  39. package/lib/date-picker/calendar/year.d.ts +2 -0
  40. package/lib/date-picker/date-picker.d.ts +18 -0
  41. package/lib/date-picker/date-picker.template.d.ts +4 -0
  42. package/lib/date-picker/definition.d.ts +3 -0
  43. package/lib/date-picker/locale.d.ts +21 -0
  44. package/lib/icon/icon.d.ts +0 -1
  45. package/lib/listbox/listbox.d.ts +9 -1
  46. package/lib/select/select.d.ts +4 -2
  47. package/lib/text-field/text-field.d.ts +1 -0
  48. package/listbox/index.js +22 -17
  49. package/locales/en-GB.d.ts +3 -0
  50. package/locales/en-GB.js +59 -0
  51. package/locales/en-US.d.ts +3 -0
  52. package/locales/en-US.js +59 -0
  53. package/locales/ja-JP.d.ts +3 -0
  54. package/locales/ja-JP.js +59 -0
  55. package/locales/zh-CN.d.ts +3 -0
  56. package/locales/zh-CN.js +59 -0
  57. package/menu/index.js +8 -8
  58. package/menu-item/index.js +4 -4
  59. package/nav/index.js +1 -1
  60. package/nav-disclosure/index.js +3 -3
  61. package/nav-item/index.js +3 -3
  62. package/note/index.js +4 -4
  63. package/number-field/index.js +8 -7
  64. package/option/index.js +5 -4
  65. package/package.json +2 -15
  66. package/pagination/index.js +5 -5
  67. package/popup/index.js +6 -6
  68. package/progress/index.js +1 -1
  69. package/progress-ring/index.js +1 -1
  70. package/radio/index.js +2 -2
  71. package/radio-group/index.js +1 -1
  72. package/select/index.js +10 -9
  73. package/shared/affix.js +25 -9
  74. package/shared/apply-mixins.js +1 -1
  75. package/shared/breadcrumb-item.js +5 -5
  76. package/shared/button.js +13 -13
  77. package/shared/calendar-event.js +36 -16
  78. package/shared/definition.js +133 -194
  79. package/shared/definition10.js +225 -40
  80. package/shared/definition11.js +36 -32
  81. package/shared/definition12.js +763 -98
  82. package/shared/definition13.js +125 -89
  83. package/shared/definition14.js +207 -27
  84. package/shared/definition15.js +710 -731
  85. package/shared/definition16.js +1289 -47
  86. package/shared/definition17.js +6113 -93
  87. package/shared/definition18.js +242 -164
  88. package/shared/definition19.js +47 -692
  89. package/shared/definition2.js +199 -117
  90. package/shared/definition20.js +59 -1671
  91. package/shared/definition21.js +95 -255
  92. package/shared/definition22.js +2218 -1167
  93. package/shared/definition23.js +57 -219
  94. package/shared/definition24.js +27 -68
  95. package/shared/definition25.js +54 -38
  96. package/shared/definition26.js +395 -70
  97. package/shared/definition27.js +381 -2223
  98. package/shared/definition28.js +85 -44
  99. package/shared/definition29.js +27 -40
  100. package/shared/definition3.js +61 -24
  101. package/shared/definition30.js +13 -427
  102. package/shared/definition31.js +49 -360
  103. package/shared/definition32.js +466 -13
  104. package/shared/definition33.js +273 -63
  105. package/shared/definition34.js +195 -25
  106. package/shared/definition35.js +86 -35
  107. package/shared/definition36.js +66 -427
  108. package/shared/definition37.js +430 -190
  109. package/shared/definition38.js +34 -52
  110. package/shared/definition39.js +683 -31
  111. package/shared/definition4.js +157 -12
  112. package/shared/definition40.js +97 -422
  113. package/shared/definition41.js +473 -543
  114. package/shared/definition42.js +122 -73
  115. package/shared/definition43.js +103 -502
  116. package/shared/definition44.js +23 -101
  117. package/shared/definition45.js +76 -126
  118. package/shared/definition46.js +494 -48
  119. package/shared/definition47.js +23 -23
  120. package/shared/definition48.js +126 -476
  121. package/shared/definition49.js +275 -98
  122. package/shared/definition5.js +71 -36
  123. package/shared/definition50.js +157 -16
  124. package/shared/definition51.js +133 -263
  125. package/shared/definition52.js +131 -115
  126. package/shared/definition53.js +85 -120
  127. package/shared/definition54.js +295 -111
  128. package/shared/definition55.js +12 -71
  129. package/shared/definition56.js +39 -295
  130. package/shared/definition57.js +181 -0
  131. package/shared/definition6.js +56 -111
  132. package/shared/definition7.js +119 -187
  133. package/shared/definition8.js +58 -23
  134. package/shared/definition9.js +92 -66
  135. package/shared/focus.js +2 -1
  136. package/shared/focus2.js +1 -1
  137. package/shared/form-associated.js +2 -2
  138. package/shared/icon.js +48 -27
  139. package/shared/index.js +7 -27
  140. package/shared/index2.js +202 -0
  141. package/shared/key-codes.js +1 -1
  142. package/shared/listbox.js +88 -11
  143. package/shared/localization/Locale.d.ts +4 -0
  144. package/shared/localization/index.d.ts +7 -0
  145. package/shared/patterns/form-elements/form-elements.d.ts +4 -4
  146. package/shared/patterns/index.d.ts +1 -0
  147. package/shared/patterns/localized.d.ts +4 -0
  148. package/shared/radio.js +23 -7
  149. package/shared/repeat.js +1 -1
  150. package/shared/text-anchor.js +21 -4
  151. package/shared/text-anchor.template.js +37 -40
  152. package/shared/text-field.js +2 -2
  153. package/shared/text-field2.js +15 -15
  154. package/shared/tree-item.js +12 -12
  155. package/side-drawer/index.js +1 -1
  156. package/slider/index.js +2 -2
  157. package/split-button/index.js +3 -3
  158. package/style.css +6097 -0
  159. package/styles/core/all.css +25 -3
  160. package/styles/core/theme.css +1 -1
  161. package/styles/core/typography.css +25 -3
  162. package/styles/tokens/theme-dark.css +4 -4
  163. package/styles/tokens/theme-light.css +4 -4
  164. package/styles/tokens/vivid-2-compat.css +2 -2
  165. package/switch/index.js +5 -4
  166. package/tab/index.js +3 -3
  167. package/tab-panel/index.js +1 -1
  168. package/tabs/index.js +5 -5
  169. package/tag/index.js +3 -3
  170. package/tag-group/index.js +1 -1
  171. package/text-anchor/index.js +1 -1
  172. package/text-area/index.js +5 -4
  173. package/text-field/index.js +5 -4
  174. package/toggletip/index.js +7 -7
  175. package/tooltip/index.js +7 -7
  176. package/tree-item/index.js +3 -3
  177. package/tree-view/index.js +1 -1
  178. package/vivid.api.json +137 -0
  179. package/lib/accordion/index.d.ts +0 -1
  180. package/lib/accordion-item/index.d.ts +0 -1
  181. package/lib/action-group/index.d.ts +0 -1
  182. package/lib/alert/index.d.ts +0 -1
  183. package/lib/avatar/index.d.ts +0 -1
  184. package/lib/badge/index.d.ts +0 -1
  185. package/lib/banner/index.d.ts +0 -1
  186. package/lib/breadcrumb/index.d.ts +0 -1
  187. package/lib/breadcrumb-item/index.d.ts +0 -1
  188. package/lib/button/index.d.ts +0 -1
  189. package/lib/calendar/index.d.ts +0 -1
  190. package/lib/calendar-event/index.d.ts +0 -1
  191. package/lib/card/index.d.ts +0 -1
  192. package/lib/checkbox/index.d.ts +0 -1
  193. package/lib/combobox/index.d.ts +0 -1
  194. package/lib/data-grid/index.d.ts +0 -1
  195. package/lib/dialog/index.d.ts +0 -1
  196. package/lib/divider/index.d.ts +0 -1
  197. package/lib/elevation/index.d.ts +0 -1
  198. package/lib/empty-state/index.d.ts +0 -1
  199. package/lib/fab/index.d.ts +0 -1
  200. package/lib/file-picker/index.d.ts +0 -1
  201. package/lib/focus/index.d.ts +0 -1
  202. package/lib/header/index.d.ts +0 -1
  203. package/lib/icon/index.d.ts +0 -1
  204. package/lib/layout/index.d.ts +0 -1
  205. package/lib/listbox/index.d.ts +0 -1
  206. package/lib/menu/index.d.ts +0 -1
  207. package/lib/menu-item/index.d.ts +0 -1
  208. package/lib/nav/index.d.ts +0 -1
  209. package/lib/nav-disclosure/index.d.ts +0 -1
  210. package/lib/nav-item/index.d.ts +0 -1
  211. package/lib/note/index.d.ts +0 -1
  212. package/lib/number-field/index.d.ts +0 -1
  213. package/lib/option/index.d.ts +0 -1
  214. package/lib/pagination/index.d.ts +0 -1
  215. package/lib/popup/index.d.ts +0 -1
  216. package/lib/progress/index.d.ts +0 -1
  217. package/lib/progress-ring/index.d.ts +0 -1
  218. package/lib/radio/index.d.ts +0 -1
  219. package/lib/radio-group/index.d.ts +0 -1
  220. package/lib/select/index.d.ts +0 -1
  221. package/lib/side-drawer/index.d.ts +0 -1
  222. package/lib/slider/index.d.ts +0 -1
  223. package/lib/split-button/index.d.ts +0 -1
  224. package/lib/switch/index.d.ts +0 -1
  225. package/lib/tab/index.d.ts +0 -1
  226. package/lib/tab-panel/index.d.ts +0 -1
  227. package/lib/tabs/index.d.ts +0 -1
  228. package/lib/tag/index.d.ts +0 -1
  229. package/lib/tag-group/index.d.ts +0 -1
  230. package/lib/text-anchor/index.d.ts +0 -1
  231. package/lib/text-area/index.d.ts +0 -1
  232. package/lib/text-field/index.d.ts +0 -1
  233. package/lib/toggletip/index.d.ts +0 -1
  234. package/lib/tooltip/index.d.ts +0 -1
  235. package/lib/tree-item/index.d.ts +0 -1
  236. package/lib/tree-view/index.d.ts +0 -1
  237. package/shared/form-elements.js +0 -162
@@ -1,117 +1,294 @@
1
- import { F as FoundationElement, d as __classPrivateFieldGet, _ as __decorate, a as attr, 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 { b as AffixIcon, a as affixIconTemplateFactory } from './affix.js';
1
+ import { F as FoundationElement, _ as __decorate, a as attr, n as nullableNumberConverter, o as observable, h as html, r as registerFactory } from './index.js';
2
+ import { a as iconRegistries } from './definition24.js';
3
+ import { f as focusRegistries } from './definition55.js';
4
+ import './affix.js';
5
+ import { e as errorText, f as formElements, F as FormElementSuccessText, a as FormElementHelperText, b as FormElementCharCount, g as getFeedbackTemplate } from './index2.js';
6
+ import { D as DelegatesARIATextbox } from './text-field2.js';
5
7
  import { a as applyMixins } from './apply-mixins.js';
6
- import { f as focusTemplateFactory } from './focus2.js';
7
- import { I as Icon } from './icon.js';
8
+ import { F as FormAssociated } from './form-associated.js';
8
9
  import { w as when } from './when.js';
10
+ import { r as ref } from './ref.js';
9
11
  import { c as classNames } from './class-names.js';
10
12
 
11
- var _Tag_select;
12
- class Tag extends FoundationElement {
13
- constructor() {
14
- super(...arguments);
15
- this.removable = false;
16
- this.disabled = false;
17
- this.selectable = false;
18
- this.selected = false;
19
- _Tag_select.set(this, () => {
20
- if (!this.selectable || this.disabled) {
21
- return;
22
- }
23
- this.selected = !this.selected;
24
- this.$emit('selected-change');
25
- });
26
- }
27
- remove() {
28
- if (!this.removable || this.selectable) {
29
- return;
13
+ class _TextArea extends FoundationElement {
14
+ }
15
+ /**
16
+ * A form-associated base class for the {@link @microsoft/fast-foundation#(TextArea:class)} component.
17
+ *
18
+ * @internal
19
+ */
20
+ class FormAssociatedTextArea extends FormAssociated(_TextArea) {
21
+ constructor() {
22
+ super(...arguments);
23
+ this.proxy = document.createElement("textarea");
30
24
  }
31
- this.$emit('removed');
32
- this.parentElement && this.parentElement.removeChild(this);
33
- }
34
- handleKeydown(e) {
35
- if (e.key === 'Enter') {
36
- __classPrivateFieldGet(this, _Tag_select, "f").call(this);
25
+ }
26
+
27
+ /**
28
+ * Resize mode for a TextArea
29
+ * @public
30
+ */
31
+ const TextAreaResize = {
32
+ /**
33
+ * No resize.
34
+ */
35
+ none: "none",
36
+ /**
37
+ * Resize vertically and horizontally.
38
+ */
39
+ both: "both",
40
+ /**
41
+ * Resize horizontally.
42
+ */
43
+ horizontal: "horizontal",
44
+ /**
45
+ * Resize vertically.
46
+ */
47
+ vertical: "vertical",
48
+ };
49
+
50
+ /**
51
+ * A Text Area Custom HTML Element.
52
+ * Based largely on the {@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/textarea | <textarea> element }.
53
+ *
54
+ * @slot - The default slot for the label
55
+ * @csspart label - The label
56
+ * @csspart root - The element wrapping the control
57
+ * @csspart control - The textarea element
58
+ * @fires change - Emits a custom 'change' event when the textarea emits a change event
59
+ *
60
+ * @public
61
+ */
62
+ let TextArea$1 = class TextArea extends FormAssociatedTextArea {
63
+ constructor() {
64
+ super(...arguments);
65
+ /**
66
+ * The resize mode of the element.
67
+ * @public
68
+ * @remarks
69
+ * HTML Attribute: resize
70
+ */
71
+ this.resize = TextAreaResize.none;
72
+ /**
73
+ * Sizes the element horizontally by a number of character columns.
74
+ *
75
+ * @public
76
+ * @remarks
77
+ * HTML Attribute: cols
78
+ */
79
+ this.cols = 20;
80
+ /**
81
+ * @internal
82
+ */
83
+ this.handleTextInput = () => {
84
+ this.value = this.control.value;
85
+ };
37
86
  }
38
- if (e.key === 'Delete' || e.key === 'Backspace') {
39
- this.remove();
87
+ readOnlyChanged() {
88
+ if (this.proxy instanceof HTMLTextAreaElement) {
89
+ this.proxy.readOnly = this.readOnly;
90
+ }
40
91
  }
41
- return true;
42
- }
43
- handleClick() {
44
- __classPrivateFieldGet(this, _Tag_select, "f").call(this);
45
- }
46
- }
47
- _Tag_select = new WeakMap();
48
- __decorate([attr, __metadata("design:type", String)], Tag.prototype, "connotation", void 0);
49
- __decorate([attr, __metadata("design:type", String)], Tag.prototype, "shape", void 0);
50
- __decorate([attr, __metadata("design:type", String)], Tag.prototype, "appearance", void 0);
51
- __decorate([attr, __metadata("design:type", String)], Tag.prototype, "label", void 0);
52
- __decorate([attr({
53
- mode: 'boolean'
54
- }), __metadata("design:type", Object)], Tag.prototype, "removable", void 0);
55
- __decorate([attr({
56
- mode: 'boolean'
57
- }), __metadata("design:type", Object)], Tag.prototype, "disabled", void 0);
58
- __decorate([attr({
59
- mode: 'boolean'
60
- }), __metadata("design:type", Object)], Tag.prototype, "selectable", void 0);
61
- __decorate([attr({
62
- mode: 'boolean'
63
- }), __metadata("design:type", Object)], Tag.prototype, "selected", void 0);
64
- applyMixins(Tag, AffixIcon);
92
+ autofocusChanged() {
93
+ if (this.proxy instanceof HTMLTextAreaElement) {
94
+ this.proxy.autofocus = this.autofocus;
95
+ }
96
+ }
97
+ listChanged() {
98
+ if (this.proxy instanceof HTMLTextAreaElement) {
99
+ this.proxy.setAttribute("list", this.list);
100
+ }
101
+ }
102
+ maxlengthChanged() {
103
+ if (this.proxy instanceof HTMLTextAreaElement) {
104
+ this.proxy.maxLength = this.maxlength;
105
+ }
106
+ }
107
+ minlengthChanged() {
108
+ if (this.proxy instanceof HTMLTextAreaElement) {
109
+ this.proxy.minLength = this.minlength;
110
+ }
111
+ }
112
+ spellcheckChanged() {
113
+ if (this.proxy instanceof HTMLTextAreaElement) {
114
+ this.proxy.spellcheck = this.spellcheck;
115
+ }
116
+ }
117
+ /**
118
+ * Selects all the text in the text area
119
+ *
120
+ * @public
121
+ */
122
+ select() {
123
+ this.control.select();
124
+ /**
125
+ * The select event does not permeate the shadow DOM boundary.
126
+ * This fn effectively proxies the select event,
127
+ * emitting a `select` event whenever the internal
128
+ * control emits a `select` event
129
+ */
130
+ this.$emit("select");
131
+ }
132
+ /**
133
+ * Change event handler for inner control.
134
+ * @remarks
135
+ * "Change" events are not `composable` so they will not
136
+ * permeate the shadow DOM boundary. This fn effectively proxies
137
+ * the change event, emitting a `change` event whenever the internal
138
+ * control emits a `change` event
139
+ * @internal
140
+ */
141
+ handleChange() {
142
+ this.$emit("change");
143
+ }
144
+ /** {@inheritDoc (FormAssociated:interface).validate} */
145
+ validate() {
146
+ super.validate(this.control);
147
+ }
148
+ };
149
+ __decorate([
150
+ attr({ mode: "boolean" })
151
+ ], TextArea$1.prototype, "readOnly", void 0);
152
+ __decorate([
153
+ attr
154
+ ], TextArea$1.prototype, "resize", void 0);
155
+ __decorate([
156
+ attr({ mode: "boolean" })
157
+ ], TextArea$1.prototype, "autofocus", void 0);
158
+ __decorate([
159
+ attr({ attribute: "form" })
160
+ ], TextArea$1.prototype, "formId", void 0);
161
+ __decorate([
162
+ attr
163
+ ], TextArea$1.prototype, "list", void 0);
164
+ __decorate([
165
+ attr({ converter: nullableNumberConverter })
166
+ ], TextArea$1.prototype, "maxlength", void 0);
167
+ __decorate([
168
+ attr({ converter: nullableNumberConverter })
169
+ ], TextArea$1.prototype, "minlength", void 0);
170
+ __decorate([
171
+ attr
172
+ ], TextArea$1.prototype, "name", void 0);
173
+ __decorate([
174
+ attr
175
+ ], TextArea$1.prototype, "placeholder", void 0);
176
+ __decorate([
177
+ attr({ converter: nullableNumberConverter, mode: "fromView" })
178
+ ], TextArea$1.prototype, "cols", void 0);
179
+ __decorate([
180
+ attr({ converter: nullableNumberConverter, mode: "fromView" })
181
+ ], TextArea$1.prototype, "rows", void 0);
182
+ __decorate([
183
+ attr({ mode: "boolean" })
184
+ ], TextArea$1.prototype, "spellcheck", void 0);
185
+ __decorate([
186
+ observable
187
+ ], TextArea$1.prototype, "defaultSlottedNodes", void 0);
188
+ applyMixins(TextArea$1, DelegatesARIATextbox);
189
+
190
+ const styles = "/**\n * Do not edit directly\n * Generated on Mon, 04 Sep 2023 12:44:18 GMT\n */\n:host {\n display: inline-block;\n}\n\n.base {\n display: inline-grid;\n grid-template-columns: 1fr max-content;\n inline-size: 100%;\n row-gap: 4px;\n}\n.base {\n --_appearance-color-text: var(--vvd-color-canvas-text);\n --_appearance-color-fill: var(--_connotation-color-backdrop);\n --_appearance-color-outline: var(--_connotation-color-intermediate);\n}\n.base.appearance-ghost {\n --_appearance-color-text: var(--_connotation-color-primary);\n --_appearance-color-fill: transparent;\n --_appearance-color-outline: transparent;\n}\n.base:where(:hover, .hover):where(:not(:disabled, .disabled, .readonly)) {\n --_appearance-color-text: var(--vvd-color-canvas-text);\n --_appearance-color-fill: var(--_connotation-color-backdrop);\n --_appearance-color-outline: var(--_connotation-color-firm);\n}\n.base:where(:hover, .hover):where(:not(:disabled, .disabled, .readonly)).appearance-ghost {\n --_appearance-color-text: var(--_connotation-color-primary);\n --_appearance-color-fill: var(--_connotation-color-faint);\n --_appearance-color-outline: transparent;\n}\n.base:where(:disabled, .disabled) {\n --_appearance-color-text: var(--vvd-color-neutral-300);\n --_appearance-color-fill: var(--vvd-color-neutral-100);\n --_appearance-color-outline: var(--vvd-color-neutral-300);\n}\n.base:where(:disabled, .disabled).appearance-ghost {\n --_appearance-color-text: var(--vvd-color-neutral-300);\n --_appearance-color-fill: transparent;\n --_appearance-color-outline: transparent;\n}\n.base:where(.readonly):where(:not(:disabled, .disabled)) {\n --_appearance-color-text: var(--vvd-color-canvas-text);\n --_appearance-color-fill: var(--vvd-color-neutral-200);\n --_appearance-color-outline: var(--vvd-color-neutral-400);\n}\n.base:where(.readonly):where(:not(:disabled, .disabled)).appearance-ghost {\n --_appearance-color-text: var(--vvd-color-neutral-600);\n --_appearance-color-fill: transparent;\n --_appearance-color-outline: transparent;\n}\n.base.connotation-success {\n /* @cssprop [--vvd-text-area-success-primary=var(--vvd-color-success-500)] */\n --_connotation-color-primary: var(--vvd-text-area-success-primary, var(--vvd-color-success-500));\n /* @cssprop [--vvd-text-area-success-backdrop=var(--vvd-color-success-50)] */\n --_connotation-color-backdrop: var(--vvd-text-area-success-backdrop, var(--vvd-color-success-50));\n /* @cssprop [--vvd-text-area-success-intermediate=var(--vvd-color-success-500)] */\n --_connotation-color-intermediate: var(--vvd-text-area-success-intermediate, var(--vvd-color-success-500));\n /* @cssprop [--vvd-text-area-success-firm=var(--vvd-color-success-600)] */\n --_connotation-color-firm: var(--vvd-text-area-success-firm, var(--vvd-color-success-600));\n /* @cssprop [--vvd-text-area-success-faint=var(--vvd-color-success-50)] */\n --_connotation-color-faint: var(--vvd-text-area-success-faint, var(--vvd-color-success-50));\n /* @cssprop [--vvd-text-area-success-soft=var(--vvd-color-success-100)] */\n --_connotation-color-soft: var(--vvd-text-area-success-soft, var(--vvd-color-success-100));\n}\n.base.connotation-alert {\n /* @cssprop [--vvd-text-area-alert-primary=var(--vvd-color-alert-500)] */\n --_connotation-color-primary: var(--vvd-text-area-alert-primary, var(--vvd-color-alert-500));\n /* @cssprop [--vvd-text-area-alert-backdrop=var(--vvd-color-alert-50)] */\n --_connotation-color-backdrop: var(--vvd-text-area-alert-backdrop, var(--vvd-color-alert-50));\n /* @cssprop [--vvd-text-area-alert-intermediate=var(--vvd-color-alert-500)] */\n --_connotation-color-intermediate: var(--vvd-text-area-alert-intermediate, var(--vvd-color-alert-500));\n /* @cssprop [--vvd-text-area-alert-firm=var(--vvd-color-alert-600)] */\n --_connotation-color-firm: var(--vvd-text-area-alert-firm, var(--vvd-color-alert-600));\n /* @cssprop [--vvd-text-area-alert-faint=var(--vvd-color-alert-50)] */\n --_connotation-color-faint: var(--vvd-text-area-alert-faint, var(--vvd-color-alert-50));\n /* @cssprop [--vvd-text-area-alert-soft=var(--vvd-color-alert-100)] */\n --_connotation-color-soft: var(--vvd-text-area-alert-soft, var(--vvd-color-alert-100));\n}\n.base:not(.connotation-success, .connotation-alert) {\n /* @cssprop [--vvd-text-area-accent-primary=var(--vvd-color-canvas-text)] */\n --_connotation-color-primary: var(--vvd-text-area-accent-primary, var(--vvd-color-canvas-text));\n /* @cssprop [--vvd-text-area-accent-backdrop=var(--vvd-color-canvas)] */\n --_connotation-color-backdrop: var(--vvd-text-area-accent-backdrop, var(--vvd-color-canvas));\n /* @cssprop [--vvd-text-area-accent-intermediate=var(--vvd-color-neutral-500)] */\n --_connotation-color-intermediate: var(--vvd-text-area-accent-intermediate, var(--vvd-color-neutral-500));\n /* @cssprop [--vvd-text-area-accent-firm=var(--vvd-color-canvas-text)] */\n --_connotation-color-firm: var(--vvd-text-area-accent-firm, var(--vvd-color-canvas-text));\n /* @cssprop [--vvd-text-area-accent-faint=var(--vvd-color-neutral-50)] */\n --_connotation-color-faint: var(--vvd-text-area-accent-faint, var(--vvd-color-neutral-50));\n /* @cssprop [--vvd-text-area-accent-soft=var(--vvd-color-neutral-100)] */\n --_connotation-color-soft: var(--vvd-text-area-accent-soft, var(--vvd-color-neutral-100));\n}\n@supports (user-select: none) {\n .base {\n user-select: none;\n }\n}\n.base:not(.disabled) {\n --_low-ink-color: var(--vvd-color-neutral-600);\n}\n.base.disabled {\n --_low-ink-color: var(--_appearance-color-text);\n 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/2;\n grid-row: 1;\n line-height: 20px;\n}\n\n.char-count {\n color: var(--_low-ink-color);\n font: var(--vvd-typography-base);\n grid-column: 2/-1;\n}\n\n.control {\n padding: 8px 16px;\n border: 0 none;\n appearance: none; /* for box-shadow visibility on IOS */\n background-color: var(--_appearance-color-fill);\n border-radius: 6px;\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 grid-column: 1/-1;\n min-block-size: calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density, 0), 2)));\n resize: none;\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 pointer-events: none;\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 pointer-events: none;\n -webkit-text-fill-color: var(--_low-ink-color); /* 1. sets text fill to current `color` for safari */\n}\n.control:focus {\n outline: 2px solid var(--focus-stroke-color, currentColor);\n outline-offset: -2px;\n}\n:host([resize=both]) .control {\n resize: both;\n}\n:host([resize=horizontal]) .control {\n resize: horizontal;\n}\n:host([resize=vertical]) .control {\n resize: vertical;\n}";
65
191
 
66
- var css_248z = "/**\n * Do not edit directly\n * Generated on Thu, 17 Aug 2023 11:13:18 GMT\n */\n.base {\n --tag-block-size: calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density, 0), 2) - 16));\n position: relative;\n display: inline-flex;\n box-sizing: border-box;\n align-items: center;\n background-color: var(--_appearance-color-fill);\n block-size: var(--tag-block-size);\n box-shadow: inset 0 0 0 1px var(--_appearance-color-outline);\n color: var(--_appearance-color-text);\n column-gap: 8px;\n font: var(--vvd-typography-base-bold);\n max-inline-size: 100%;\n padding-inline: 8px;\n vertical-align: middle;\n /* Shape */\n}\n.base.connotation-cta {\n /* @cssprop [--vvd-tag-cta-contrast=var(--vvd-color-cta-800)] */\n --_connotation-color-contrast: var(--vvd-tag-cta-contrast, var(--vvd-color-cta-800));\n /* @cssprop [--vvd-tag-cta-soft=var(--vvd-color-cta-100)] */\n --_connotation-color-soft: var(--vvd-tag-cta-soft, var(--vvd-color-cta-100));\n /* @cssprop [--vvd-tag-cta-pale=var(--vvd-color-cta-300)] */\n --_connotation-color-pale: var(--vvd-tag-cta-pale, var(--vvd-color-cta-300));\n /* @cssprop [--vvd-tag-cta-fierce=var(--vvd-color-cta-700)] */\n --_connotation-color-fierce: var(--vvd-tag-cta-fierce, var(--vvd-color-cta-700));\n /* @cssprop [--vvd-tag-cta-firm=var(--vvd-color-cta-600)] */\n --_connotation-color-firm: var(--vvd-tag-cta-firm, var(--vvd-color-cta-600));\n /* @cssprop [--vvd-tag-cta-faint=var(--vvd-color-cta-50)] */\n --_connotation-color-faint: var(--vvd-tag-cta-faint, var(--vvd-color-cta-50));\n /* @cssprop [--vvd-tag-cta-dim=var(--vvd-color-cta-200)] */\n --_connotation-color-dim: var(--vvd-tag-cta-dim, var(--vvd-color-cta-200));\n}\n.base:not(.connotation-cta) {\n /* @cssprop [--vvd-tag-accent-contrast=var(--vvd-color-neutral-800)] */\n --_connotation-color-contrast: var(--vvd-tag-accent-contrast, var(--vvd-color-neutral-800));\n /* @cssprop [--vvd-tag-accent-soft=var(--vvd-color-neutral-100)] */\n --_connotation-color-soft: var(--vvd-tag-accent-soft, var(--vvd-color-neutral-100));\n /* @cssprop [--vvd-tag-accent-pale=var(--vvd-color-neutral-300)] */\n --_connotation-color-pale: var(--vvd-tag-accent-pale, var(--vvd-color-neutral-300));\n /* @cssprop [--vvd-tag-accent-fierce=var(--vvd-color-neutral-700)] */\n --_connotation-color-fierce: var(--vvd-tag-accent-fierce, var(--vvd-color-neutral-700));\n /* @cssprop [--vvd-tag-accent-firm=var(--vvd-color-canvas-text)] */\n --_connotation-color-firm: var(--vvd-tag-accent-firm, var(--vvd-color-canvas-text));\n /* @cssprop [--vvd-tag-accent-faint=var(--vvd-color-neutral-50)] */\n --_connotation-color-faint: var(--vvd-tag-accent-faint, var(--vvd-color-neutral-50));\n /* @cssprop [--vvd-tag-accent-dim=var(--vvd-color-neutral-200)] */\n --_connotation-color-dim: var(--vvd-tag-accent-dim, var(--vvd-color-neutral-200));\n}\n.base {\n --_appearance-color-text: var(--_connotation-color-contrast);\n --_appearance-color-fill: var(--_connotation-color-soft);\n --_appearance-color-outline: transparent;\n}\n.base.appearance-duotone {\n --_appearance-color-text: var(--_connotation-color-fierce);\n --_appearance-color-fill: transparent;\n --_appearance-color-outline: var(--_connotation-color-pale);\n}\n.base:where(:hover, .hover):where(:not(:disabled, .disabled, .readonly)) {\n --_appearance-color-text: var(--_connotation-color-contrast);\n --_appearance-color-fill: var(--_connotation-color-faint);\n --_appearance-color-outline: transparent;\n}\n.base:where(:hover, .hover):where(:not(:disabled, .disabled, .readonly)).appearance-duotone {\n --_appearance-color-text: var(--_connotation-color-fierce);\n --_appearance-color-fill: transparent;\n --_appearance-color-outline: var(--_connotation-color-firm);\n}\n.base:where(:active, .active):where(:not(:disabled, .disabled)) {\n --_appearance-color-text: var(--_connotation-color-contrast);\n --_appearance-color-fill: var(--_connotation-color-dim);\n --_appearance-color-outline: transparent;\n}\n.base:where(:active, .active):where(:not(:disabled, .disabled)).appearance-duotone {\n --_appearance-color-text: var(--_connotation-color-fierce);\n --_appearance-color-fill: var(--_connotation-color-faint);\n --_appearance-color-outline: var(--_connotation-color-pale);\n}\n.base:where(:disabled, .disabled) {\n --_appearance-color-text: var(--vvd-color-neutral-300);\n --_appearance-color-fill: var(--vvd-color-neutral-100);\n --_appearance-color-outline: transparent;\n}\n.base:where(:disabled, .disabled).appearance-duotone {\n --_appearance-color-text: var(--vvd-color-neutral-300);\n --_appearance-color-fill: transparent;\n --_appearance-color-outline: var(--vvd-color-neutral-100);\n}\n.base:where(.selected, [aria-current]):where(:not(:disabled, .disabled, :hover, .hover)) {\n --_appearance-color-text: var(--_connotation-color-contrast);\n --_appearance-color-fill: var(--_connotation-color-pale);\n --_appearance-color-outline: transparent;\n}\n.base:where(.selected, [aria-current]):where(:not(:disabled, .disabled, :hover, .hover)).appearance-duotone {\n --_appearance-color-text: var(--_connotation-color-fierce);\n --_appearance-color-fill: var(--_connotation-color-faint);\n --_appearance-color-outline: var(--_connotation-color-pale);\n}\n.base:not(.shape-pill) {\n border-radius: 4px;\n}\n.base.shape-pill {\n border-radius: 14px;\n}\n@supports selector(:focus-visible) {\n .base:focus-visible {\n outline: none;\n }\n}\n@supports (user-select: none) {\n .base {\n user-select: none;\n }\n}\n.base:not(.disabled) {\n cursor: pointer;\n}\n.base.disabled {\n cursor: not-allowed;\n pointer-events: none;\n}\n.base.removable {\n cursor: auto;\n}\n\n.label {\n overflow: hidden;\n max-inline-size: 100%;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.icon {\n font-size: calc(var(--tag-block-size) / 1.5);\n line-height: 1;\n}\n.icon > * {\n vertical-align: middle;\n}\n\n.dismiss-button {\n display: flex;\n align-items: center;\n background-color: var(--_appearance-color-fill);\n border-radius: inherit;\n cursor: pointer;\n}\n\n.base:not(:focus-visible) .focus-indicator {\n display: none;\n}";
192
+ var __defProp = Object.defineProperty;
193
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
194
+ var __decorateClass = (decorators, target, key, kind) => {
195
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
196
+ for (var i = decorators.length - 1, decorator; i >= 0; i--)
197
+ if (decorator = decorators[i])
198
+ result = (kind ? decorator(target, key, result) : decorator(result)) || result;
199
+ if (kind && result)
200
+ __defProp(target, key, result);
201
+ return result;
202
+ };
203
+ let TextArea = class extends TextArea$1 {
204
+ };
205
+ __decorateClass([
206
+ attr
207
+ ], TextArea.prototype, "wrap", 2);
208
+ TextArea = __decorateClass([
209
+ errorText,
210
+ formElements
211
+ ], TextArea);
212
+ applyMixins(TextArea, FormElementCharCount, FormElementHelperText, FormElementSuccessText);
67
213
 
68
- const getClasses = ({
69
- connotation,
70
- appearance,
71
- shape,
72
- disabled,
73
- selectable,
74
- removable,
75
- selected
76
- }) => classNames('base', ['disabled', disabled], ['selectable', selectable], ['active', selectable && selected], ['removable', removable && !selectable], [`connotation-${connotation}`, Boolean(connotation)], [`appearance-${appearance}`, Boolean(appearance)], [`shape-${shape}`, Boolean(shape)]);
77
- function renderDismissButton(iconTag) {
214
+ const getClasses = ({ value, errorValidationMessage, disabled, placeholder, readOnly, successText }) => classNames(
215
+ "base",
216
+ ["readonly", readOnly],
217
+ ["placeholder", Boolean(placeholder)],
218
+ ["disabled", disabled],
219
+ ["error connotation-alert", Boolean(errorValidationMessage)],
220
+ ["has-value", Boolean(value)],
221
+ ["success connotation-success", !!successText]
222
+ );
223
+ function renderLabel() {
224
+ return html`
225
+ <label for="control" class="label">
226
+ ${(x) => x.label}
227
+ </label>`;
228
+ }
229
+ function renderCharCount() {
78
230
  return html`
79
- <span
80
- aria-hidden="true"
81
- class="dismiss-button"
82
- @click="${x => x.remove()}">
83
- <${iconTag} name="close-line"></${iconTag}>
84
- </span>`;
231
+ <span class="char-count">${(x) => x.value ? x.value.length : 0} / ${(x) => x.maxlength}</span>
232
+ `;
85
233
  }
86
- const tagTemplate = context => {
87
- const affixIconTemplate = affixIconTemplateFactory(context);
88
- const iconTag = context.tagFor(Icon);
89
- const focusTemplate = focusTemplateFactory(context);
234
+ const TextAreaTemplate = (context) => {
90
235
  return html`
91
- <span class="${getClasses}"
92
- role="option"
93
- aria-disabled="${x => x.disabled}"
94
- aria-selected="${x => x.selectable}"
95
- tabindex="${x => x.disabled ? null : 0}"
96
- @keydown="${(x, c) => x.handleKeydown(c.event)}"
97
- @click="${x => x.handleClick()}">
98
- ${x => affixIconTemplate(x.icon)}
99
- ${when(x => x.label, x => html`<span class="label">${x.label}</span>`)}
100
- ${when(x => x.removable && !x.selectable, renderDismissButton(iconTag))}
101
- ${when(x => x.selectable && x.selected, html`<${iconTag} class="selectable-icon" name="check-circle-solid"></${iconTag}>`)}
102
- ${() => focusTemplate}
103
- </span>`;
236
+ <div class="${getClasses}">
237
+ ${when((x) => x.charCount && x.maxlength, renderCharCount())}
238
+ ${when((x) => x.label, renderLabel())}
239
+ <textarea class="control"
240
+ ?autofocus="${(x) => x.autofocus}"
241
+ placeholder="${(x) => x.placeholder ? x.placeholder : null}"
242
+ name="${(x) => x.name ? x.name : null}"
243
+ maxlength="${(x) => x.maxlength ? x.maxlength : null}"
244
+ rows="${(x) => x.rows ? x.rows : null}"
245
+ cols="${(x) => x.cols ? x.cols : null}"
246
+ wrap="${(x) => x.wrap ? x.wrap : null}"
247
+ ?readonly="${(x) => x.readOnly}"
248
+ ?disabled="${(x) => x.disabled}"
249
+ ?required="${(x) => x.required}"
250
+ ?spellcheck="${(x) => x.spellcheck}"
251
+ :value="${(x) => x.value}"
252
+ aria-atomic="${(x) => x.ariaAtomic}"
253
+ aria-busy="${(x) => x.ariaBusy}"
254
+ aria-controls="${(x) => x.ariaControls}"
255
+ aria-current="${(x) => x.ariaCurrent}"
256
+ aria-describedby="${(x) => x.ariaDescribedby}"
257
+ aria-details="${(x) => x.ariaDetails}"
258
+ aria-disabled="${(x) => x.ariaDisabled}"
259
+ aria-errormessage="${(x) => x.ariaErrormessage}"
260
+ aria-flowto="${(x) => x.ariaFlowto}"
261
+ aria-haspopup="${(x) => x.ariaHaspopup}"
262
+ aria-hidden="${(x) => x.ariaHidden}"
263
+ aria-invalid="${(x) => x.ariaInvalid}"
264
+ aria-keyshortcuts="${(x) => x.ariaKeyshortcuts}"
265
+ aria-label="${(x) => x.ariaLabel}"
266
+ aria-labelledby="${(x) => x.ariaLabelledby}"
267
+ aria-live="${(x) => x.ariaLive}"
268
+ aria-owns="${(x) => x.ariaOwns}"
269
+ aria-relevant="${(x) => x.ariaRelevant}"
270
+ aria-roledescription="${(x) => x.ariaRoledescription}"
271
+ @input="${(x) => x.handleTextInput()}"
272
+ @change="${(x) => x.handleChange()}"
273
+ ${ref("control")}
274
+ >
275
+ </textarea>
276
+ ${when((x) => !x.successText && !x.errorValidationMessage && x.helperText?.length, getFeedbackTemplate("helper", context))}
277
+ ${when((x) => !x.successText && x.errorValidationMessage, getFeedbackTemplate("error", context))}
278
+ ${when((x) => x.successText, getFeedbackTemplate("success", context))}
279
+ </div>
280
+ `;
104
281
  };
105
282
 
106
- const tagDefinition = Tag.compose({
107
- baseName: 'tag',
108
- template: tagTemplate,
109
- styles: css_248z,
283
+ const textAreaDefinition = TextArea.compose({
284
+ baseName: "text-area",
285
+ template: TextAreaTemplate,
286
+ styles,
110
287
  shadowOptions: {
111
288
  delegatesFocus: true
112
289
  }
113
290
  });
114
- const tagRegistries = [tagDefinition(), ...iconRegistries, ...focusRegistries];
115
- const registerTag = registerFactory(tagRegistries);
291
+ const textAreaRegistries = [textAreaDefinition(), ...iconRegistries, ...focusRegistries];
292
+ const registerTextArea = registerFactory(textAreaRegistries);
116
293
 
117
- export { registerTag as r, tagDefinition as t };
294
+ export { textAreaRegistries as a, registerTextArea as r, textAreaDefinition as t };
@@ -1,44 +1,79 @@
1
- import { F as FoundationElement, _ as __decorate, a as attr, b as __metadata, h as html, r as registerFactory } from './index.js';
1
+ import { F as FoundationElement, a as attr, h as html, r as registerFactory } from './index.js';
2
+ import { a as iconRegistries } from './definition24.js';
3
+ import { I as Icon } from './icon.js';
4
+ import { w as when } from './when.js';
2
5
  import { c as classNames } from './class-names.js';
3
6
 
4
- var css_248z = "/**\n * Do not edit directly\n * Generated on Thu, 17 Aug 2023 11:13:18 GMT\n */\n:host {\n display: inline-block;\n}\n\n.base {\n position: relative;\n display: flex;\n box-sizing: border-box;\n align-items: center;\n background-color: var(--_appearance-color-fill);\n inline-size: inherit;\n vertical-align: middle;\n}\n.base {\n /* @cssprop [--vvd-action-group-accent-backdrop=var(--vvd-color-canvas)] */\n --_connotation-color-backdrop: var(--vvd-action-group-accent-backdrop, var(--vvd-color-canvas));\n /* @cssprop [--vvd-action-group-accent-primary=var(--vvd-color-canvas-text)] */\n --_connotation-color-primary: var(--vvd-action-group-accent-primary, var(--vvd-color-canvas-text));\n /* @cssprop [--vvd-action-group-accent-intermediate=var(--vvd-color-neutral-500)] */\n --_connotation-color-intermediate: var(--vvd-action-group-accent-intermediate, var(--vvd-color-neutral-500));\n /* @cssprop [--vvd-action-group-accent-faint=var(--vvd-color-neutral-50)] */\n --_connotation-color-faint: var(--vvd-action-group-accent-faint, var(--vvd-color-neutral-50));\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::before {\n position: absolute;\n z-index: 1;\n border-radius: inherit;\n box-shadow: inset 0 0 0 1px var(--_appearance-color-outline);\n content: \"\";\n inset: 0;\n pointer-events: none;\n}\n.base:not(.tight) {\n padding: 4px;\n column-gap: 4px;\n}\n\n/* Shape */\n.base:not(.shape-pill) {\n border-radius: 6px;\n}\n\n.base.shape-pill {\n border-radius: 24px;\n}\n\n/* Separator */\n::slotted([role=separator]) {\n align-self: stretch;\n margin-block: 4px;\n}";
7
+ const styles = "/**\n * Do not edit directly\n * Generated on Mon, 04 Sep 2023 12:44:18 GMT\n */\n.base {\n display: inline-flex;\n overflow: hidden;\n align-items: center;\n justify-content: center;\n background-color: var(--_appearance-color-fill);\n block-size: var(--_size);\n box-shadow: inset 0 0 0 1px var(--_appearance-color-outline);\n color: var(--_appearance-color-text);\n inline-size: var(--_size);\n vertical-align: middle;\n}\n.base.connotation-cta {\n /* @cssprop [--vvd-avatar-cta-primary=var(--vvd-color-cta-500)] */\n --_connotation-color-primary: var(--vvd-avatar-cta-primary, var(--vvd-color-cta-500));\n /* @cssprop [--vvd-avatar-cta-primary-text=var(--vvd-color-canvas)] */\n --_connotation-color-primary-text: var(--vvd-avatar-cta-primary-text, var(--vvd-color-canvas));\n /* @cssprop [--vvd-avatar-cta-firm=var(--vvd-color-cta-600)] */\n --_connotation-color-firm: var(--vvd-avatar-cta-firm, var(--vvd-color-cta-600));\n /* @cssprop [--vvd-avatar-cta-fierce=var(--vvd-color-cta-700)] */\n --_connotation-color-fierce: var(--vvd-avatar-cta-fierce, var(--vvd-color-cta-700));\n /* @cssprop [--vvd-avatar-cta-pale=var(--vvd-color-cta-300)] */\n --_connotation-color-pale: var(--vvd-avatar-cta-pale, var(--vvd-color-cta-300));\n}\n.base:not(.connotation-cta) {\n /* @cssprop [--vvd-avatar-accent-primary=var(--vvd-color-canvas-text)] */\n --_connotation-color-primary: var(--vvd-avatar-accent-primary, var(--vvd-color-canvas-text));\n /* @cssprop [--vvd-avatar-accent-primary-text=var(--vvd-color-canvas)] */\n --_connotation-color-primary-text: var(--vvd-avatar-accent-primary-text, var(--vvd-color-canvas));\n /* @cssprop [--vvd-avatar-accent-firm=var(--vvd-color-canvas-text)] */\n --_connotation-color-firm: var(--vvd-avatar-accent-firm, var(--vvd-color-canvas-text));\n /* @cssprop [--vvd-avatar-accent-fierce=var(--vvd-color-neutral-700)] */\n --_connotation-color-fierce: var(--vvd-avatar-accent-fierce, var(--vvd-color-neutral-700));\n /* @cssprop [--vvd-avatar-accent-pale=var(--vvd-color-neutral-300)] */\n --_connotation-color-pale: var(--vvd-avatar-accent-pale, var(--vvd-color-neutral-300));\n}\n.base {\n --_appearance-color-text: var(--_connotation-color-primary-text);\n --_appearance-color-fill: var(--_connotation-color-primary);\n --_appearance-color-outline: transparent;\n}\n.base.appearance-outlined {\n --_appearance-color-text: var(--_connotation-color-firm);\n --_appearance-color-fill: transparent;\n --_appearance-color-outline: var(--_connotation-color-firm);\n}\n.base.appearance-duotone {\n --_appearance-color-text: var(--_connotation-color-fierce);\n --_appearance-color-fill: transparent;\n --_appearance-color-outline: var(--_connotation-color-pale);\n}\n.base.size-condensed {\n --_size: calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density, 0), 2) - 8));\n}\n.base.size-condensed .initials {\n font: var(--vvd-typography-base-condensed-bold);\n}\n.base.size-condensed .icon {\n font-size: calc(calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density, 0), 2) - 8)) / 2);\n line-height: 1;\n}\n.base.size-expanded {\n --_size: calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density, 0), 2) + 8));\n}\n.base.size-expanded .initials {\n font: var(--vvd-typography-heading-4);\n}\n.base.size-expanded .icon {\n font-size: calc(calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density, 0), 2) + 8)) / 2);\n line-height: 1;\n}\n.base:not(.size-condensed, .size-expanded) {\n --_size: calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density, 0), 2)));\n}\n.base:not(.size-condensed, .size-expanded) .initials {\n font: var(--vvd-typography-base-extended-bold);\n}\n.base:not(.size-condensed, .size-expanded) .icon {\n font-size: calc(calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density, 0), 2))) / 2);\n line-height: 1;\n}\n.base:not(.shape-pill) {\n border-radius: 6px;\n}\n.base.shape-pill {\n border-radius: 50%;\n}\n.base .initials {\n text-transform: uppercase;\n}\n.base ::slotted(*) {\n block-size: 100%;\n inline-size: 100%;\n object-fit: cover;\n}";
5
8
 
6
- class ActionGroup extends FoundationElement {
7
- constructor() {
8
- super(...arguments);
9
- this.tight = false;
10
- this.role = null;
11
- this.ariaLabel = null;
12
- }
9
+ var __defProp = Object.defineProperty;
10
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
11
+ var __decorateClass = (decorators, target, key, kind) => {
12
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
13
+ for (var i = decorators.length - 1, decorator; i >= 0; i--)
14
+ if (decorator = decorators[i])
15
+ result = (kind ? decorator(target, key, result) : decorator(result)) || result;
16
+ if (kind && result)
17
+ __defProp(target, key, result);
18
+ return result;
19
+ };
20
+ class Avatar extends FoundationElement {
13
21
  }
14
- __decorate([attr, __metadata("design:type", String)], ActionGroup.prototype, "shape", void 0);
15
- __decorate([attr, __metadata("design:type", String)], ActionGroup.prototype, "appearance", void 0);
16
- __decorate([attr({
17
- mode: 'boolean'
18
- }), __metadata("design:type", Object)], ActionGroup.prototype, "tight", void 0);
19
- __decorate([attr(), __metadata("design:type", Object)], ActionGroup.prototype, "role", void 0);
20
- __decorate([attr({
21
- attribute: 'aria-label'
22
- }), __metadata("design:type", Object)], ActionGroup.prototype, "ariaLabel", void 0);
22
+ __decorateClass([
23
+ attr
24
+ ], Avatar.prototype, "connotation", 2);
25
+ __decorateClass([
26
+ attr
27
+ ], Avatar.prototype, "shape", 2);
28
+ __decorateClass([
29
+ attr
30
+ ], Avatar.prototype, "appearance", 2);
31
+ __decorateClass([
32
+ attr
33
+ ], Avatar.prototype, "size", 2);
34
+ __decorateClass([
35
+ attr
36
+ ], Avatar.prototype, "icon", 2);
37
+ __decorateClass([
38
+ attr
39
+ ], Avatar.prototype, "initials", 2);
23
40
 
24
- const getClasses = ({
25
- appearance,
26
- shape,
27
- tight
28
- }) => classNames('base', [`appearance-${appearance}`, Boolean(appearance)], [`shape-${shape}`, Boolean(shape)], ['tight', tight]);
29
- const ActionGroupTemplate = () => html`
30
- <div class="${getClasses}"
31
- role="${x => x.role ? x.role : 'group'}"
32
- aria-label="${x => x.ariaLabel}">
33
- <slot></slot>
34
- </div>`;
41
+ const getClasses = ({ appearance, connotation, shape, size }) => classNames(
42
+ "base",
43
+ [`connotation-${connotation}`, Boolean(connotation)],
44
+ [`appearance-${appearance}`, Boolean(appearance)],
45
+ [`shape-${shape}`, Boolean(shape)],
46
+ [`size-${size}`, Boolean(size)]
47
+ );
48
+ function renderIcon(iconTag) {
49
+ return html`
50
+ <span class="icon">
51
+ <${iconTag} name="${(x) => x.icon ? `${x.icon}` : "user-line"}"></${iconTag}>
52
+ </span>
53
+ `;
54
+ }
55
+ function renderInitials() {
56
+ return html`
57
+ <span class="initials">${({ initials }) => initials.substring(0, 2)}</span>
58
+ `;
59
+ }
60
+ const AvatarTemplate = (context) => {
61
+ const iconTag = context.tagFor(Icon);
62
+ return html`
63
+ <span class="${getClasses}">
64
+ <slot name="graphic">
65
+ ${when((x) => x.initials, renderInitials())}
66
+ ${when((x) => !x.initials, renderIcon(iconTag))}
67
+ </slot>
68
+ </span>`;
69
+ };
35
70
 
36
- const actionGroupDefinition = ActionGroup.compose({
37
- baseName: 'action-group',
38
- template: ActionGroupTemplate,
39
- styles: css_248z
71
+ const avatarDefinition = Avatar.compose({
72
+ baseName: "avatar",
73
+ template: AvatarTemplate,
74
+ styles
40
75
  });
41
- const actionGroupRegistries = [actionGroupDefinition()];
42
- const registerActionGroup = registerFactory(actionGroupRegistries);
76
+ const avatarRegistries = [avatarDefinition(), ...iconRegistries];
77
+ const registerAvatar = registerFactory(avatarRegistries);
43
78
 
44
- export { actionGroupDefinition as a, actionGroupRegistries as b, registerActionGroup as r };
79
+ export { avatarDefinition as a, avatarRegistries as b, registerAvatar as r };