@vonage/vivid 3.0.0-next.10 → 3.0.0-next.101

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 (207) hide show
  1. package/README.md +141 -4
  2. package/accordion/index.js +3 -12
  3. package/accordion-item/index.js +31 -38
  4. package/action-group/index.js +41 -0
  5. package/avatar/index.js +61 -0
  6. package/badge/index.js +17 -30
  7. package/banner/index.js +26 -111
  8. package/breadcrumb/index.js +21 -18
  9. package/breadcrumb-item/index.js +24 -20
  10. package/button/index.js +20 -757
  11. package/calendar/index.js +72 -67
  12. package/calendar-event/index.js +112 -0
  13. package/card/index.js +114 -0
  14. package/checkbox/index.js +179 -0
  15. package/dialog/index.js +230 -0
  16. package/divider/index.js +4 -0
  17. package/elevation/index.js +3 -31
  18. package/fab/index.js +100 -0
  19. package/focus/index.js +18 -3
  20. package/header/index.js +61 -0
  21. package/icon/index.js +11 -9
  22. package/index.js +64 -20
  23. package/layout/index.js +5 -15
  24. package/lib/accordion-item/accordion-item.d.ts +2 -2
  25. package/lib/accordion-item/index.d.ts +2 -1
  26. package/lib/action-group/action-group.d.ts +10 -0
  27. package/lib/{sidenav-item/sidenav-item.template.d.ts → action-group/action-group.template.d.ts} +2 -2
  28. package/lib/{sidenav-item → action-group}/index.d.ts +1 -2
  29. package/lib/avatar/avatar.d.ts +15 -0
  30. package/lib/avatar/avatar.template.d.ts +4 -0
  31. package/lib/avatar/index.d.ts +3 -0
  32. package/lib/badge/badge.d.ts +3 -5
  33. package/lib/badge/index.d.ts +1 -1
  34. package/lib/banner/banner.d.ts +1 -1
  35. package/lib/banner/banner.template.d.ts +0 -2
  36. package/lib/banner/index.d.ts +1 -0
  37. package/lib/breadcrumb/breadcrumb.template.d.ts +4 -0
  38. package/lib/breadcrumb-item/breadcrumb-item.d.ts +1 -1
  39. package/lib/breadcrumb-item/index.d.ts +1 -0
  40. package/lib/button/button.d.ts +4 -3
  41. package/lib/button/index.d.ts +2 -19
  42. package/lib/calendar/calendar.d.ts +3 -1
  43. package/lib/calendar/index.d.ts +0 -1
  44. package/lib/calendar-event/calendar-event.d.ts +14 -0
  45. package/lib/calendar-event/calendar-event.template.d.ts +4 -0
  46. package/lib/calendar-event/index.d.ts +2 -0
  47. package/lib/card/card.d.ts +10 -0
  48. package/lib/{text/text.template.d.ts → card/card.template.d.ts} +2 -2
  49. package/lib/card/index.d.ts +4 -0
  50. package/lib/checkbox/checkbox.d.ts +5 -0
  51. package/lib/checkbox/checkbox.template.d.ts +4 -0
  52. package/lib/checkbox/index.d.ts +4 -0
  53. package/lib/components.d.ts +32 -10
  54. package/lib/dialog/dialog.d.ts +20 -0
  55. package/lib/dialog/dialog.template.d.ts +4 -0
  56. package/lib/dialog/index.d.ts +5 -0
  57. package/lib/divider/divider.d.ts +3 -0
  58. package/lib/divider/divider.template.d.ts +4 -0
  59. package/lib/divider/index.d.ts +2 -0
  60. package/lib/elevation/elevation.d.ts +1 -0
  61. package/lib/elevation/index.d.ts +1 -1
  62. package/lib/enums.d.ts +19 -6
  63. package/lib/fab/fab.d.ts +13 -0
  64. package/lib/fab/fab.template.d.ts +4 -0
  65. package/lib/fab/index.d.ts +4 -0
  66. package/lib/focus/index.d.ts +1 -1
  67. package/lib/header/header.d.ts +5 -0
  68. package/lib/header/header.template.d.ts +4 -0
  69. package/lib/header/index.d.ts +3 -0
  70. package/lib/icon/icon.d.ts +4 -3
  71. package/lib/layout/index.d.ts +1 -1
  72. package/lib/layout/layout.d.ts +4 -4
  73. package/lib/listbox/index.d.ts +4 -0
  74. package/lib/listbox/listbox.d.ts +9 -0
  75. package/lib/listbox/listbox.template.d.ts +4 -0
  76. package/lib/listbox-option/index.d.ts +4 -0
  77. package/lib/listbox-option/listbox-option.d.ts +9 -0
  78. package/lib/listbox-option/listbox-option.template.d.ts +4 -0
  79. package/lib/menu/index.d.ts +12 -0
  80. package/lib/menu/menu.d.ts +10 -0
  81. package/lib/menu/menu.template.d.ts +3 -0
  82. package/lib/menu-item/index.d.ts +3 -0
  83. package/lib/menu-item/menu-item.d.ts +7 -0
  84. package/lib/menu-item/menu-item.template.d.ts +5 -0
  85. package/lib/nav/index.d.ts +2 -0
  86. package/lib/nav/nav.d.ts +3 -0
  87. package/lib/nav/nav.template.d.ts +4 -0
  88. package/lib/nav-disclosure/index.d.ts +4 -0
  89. package/lib/nav-disclosure/nav-disclosure.d.ts +10 -0
  90. package/lib/nav-disclosure/nav-disclosure.template.d.ts +4 -0
  91. package/lib/nav-item/index.d.ts +4 -0
  92. package/lib/{sidenav-item/sidenav-item.d.ts → nav-item/nav-item.d.ts} +2 -2
  93. package/lib/nav-item/nav-item.template.d.ts +4 -0
  94. package/lib/{text → note}/index.d.ts +1 -1
  95. package/lib/note/note.d.ts +10 -0
  96. package/lib/note/note.template.d.ts +5 -0
  97. package/lib/number-field/index.d.ts +4 -0
  98. package/lib/number-field/number-field.d.ts +14 -0
  99. package/lib/number-field/number-field.template.d.ts +4 -0
  100. package/lib/popup/index.d.ts +1 -1
  101. package/lib/popup/popup.d.ts +2 -1
  102. package/lib/progress/progress.d.ts +1 -1
  103. package/lib/progress-ring/progress-ring.d.ts +2 -1
  104. package/lib/radio/index.d.ts +3 -0
  105. package/lib/radio/radio.d.ts +4 -0
  106. package/lib/radio/radio.template.d.ts +4 -0
  107. package/lib/radio-group/index.d.ts +10 -0
  108. package/lib/radio-group/radio-group.d.ts +4 -0
  109. package/lib/radio-group/radio-group.template.d.ts +4 -0
  110. package/lib/side-drawer/index.d.ts +1 -1
  111. package/lib/side-drawer/side-drawer.d.ts +3 -2
  112. package/lib/slider/index.d.ts +3 -0
  113. package/lib/slider/slider.d.ts +4 -0
  114. package/lib/slider/slider.template.d.ts +4 -0
  115. package/lib/switch/index.d.ts +4 -0
  116. package/lib/switch/switch.d.ts +7 -0
  117. package/lib/switch/switch.template.d.ts +4 -0
  118. package/lib/text-anchor/text-anchor.d.ts +1 -1
  119. package/lib/text-area/index.d.ts +4 -0
  120. package/lib/text-area/text-area.d.ts +9 -0
  121. package/lib/text-area/text-area.template.d.ts +4 -0
  122. package/lib/text-field/index.d.ts +4 -0
  123. package/lib/text-field/text-field.d.ts +14 -0
  124. package/lib/text-field/text-field.template.d.ts +5 -0
  125. package/lib/tooltip/tooltip.d.ts +2 -2
  126. package/listbox/index.js +1090 -0
  127. package/listbox-option/index.js +22 -0
  128. package/menu/index.js +371 -0
  129. package/menu-item/index.js +21 -0
  130. package/nav/index.js +17 -0
  131. package/nav-disclosure/index.js +82 -0
  132. package/nav-item/index.js +46 -0
  133. package/note/index.js +59 -0
  134. package/number-field/index.js +461 -0
  135. package/package.json +61 -10
  136. package/popup/index.js +23 -2061
  137. package/progress/index.js +35 -36
  138. package/progress-ring/index.js +11 -11
  139. package/radio/index.js +47 -0
  140. package/radio-group/index.js +435 -0
  141. package/shared/affix.js +1 -6
  142. package/shared/anchor.js +10 -2
  143. package/shared/apply-mixins.js +5 -4
  144. package/shared/aria-global.js +2 -86
  145. package/shared/aria.js +9 -0
  146. package/shared/base-progress.js +5 -0
  147. package/shared/breadcrumb-item.js +1 -1
  148. package/shared/button.js +200 -0
  149. package/shared/calendar-event.js +19 -0
  150. package/shared/dialog-polyfill.esm.js +858 -0
  151. package/shared/direction.js +20 -0
  152. package/shared/dom.js +8 -0
  153. package/shared/enums.js +70 -0
  154. package/shared/es.object.assign.js +3 -2
  155. package/shared/es.regexp.to-string.js +59 -0
  156. package/shared/export.js +1017 -0
  157. package/shared/focus.js +5 -0
  158. package/shared/focus2.js +11 -0
  159. package/shared/form-associated.js +466 -0
  160. package/shared/form-elements.js +331 -0
  161. package/shared/icon.js +532 -564
  162. package/shared/index.js +108 -79
  163. package/shared/index2.js +100 -14
  164. package/shared/index3.js +31 -0
  165. package/shared/index4.js +77 -0
  166. package/shared/index5.js +261 -0
  167. package/shared/index6.js +1525 -0
  168. package/shared/index7.js +349 -0
  169. package/shared/iterators.js +61 -0
  170. package/shared/key-codes.js +97 -0
  171. package/shared/numbers.js +25 -0
  172. package/shared/object-keys.js +13 -0
  173. package/shared/patterns/focus.d.ts +3 -0
  174. package/shared/patterns/form-elements/form-elements.d.ts +28 -0
  175. package/shared/patterns/form-elements/index.d.ts +1 -0
  176. package/shared/patterns/index.d.ts +2 -0
  177. package/shared/radio.js +127 -0
  178. package/shared/ref.js +41 -0
  179. package/shared/slotted.js +1 -1
  180. package/shared/start-end.js +50 -0
  181. package/shared/string-trim.js +40 -0
  182. package/shared/text-anchor.js +2 -13
  183. package/shared/text-anchor.template.js +6 -5
  184. package/shared/to-string.js +51 -0
  185. package/shared/web.dom-collections.iterator.js +74 -1081
  186. package/side-drawer/index.js +41 -33
  187. package/slider/index.js +596 -0
  188. package/styles/core/all.css +75 -0
  189. package/styles/core/theme.css +11 -0
  190. package/styles/core/typography.css +69 -0
  191. package/styles/fonts/SpeziaCompleteVariableItalicWeb.woff2 +0 -0
  192. package/styles/fonts/SpeziaCompleteVariableUprightWeb.woff2 +0 -0
  193. package/styles/fonts/SpeziaMonoCompleteVariableWeb.woff2 +0 -0
  194. package/styles/fonts/spezia.css +9 -12
  195. package/styles/tokens/theme-dark.css +230 -0
  196. package/styles/tokens/theme-light.css +230 -0
  197. package/switch/index.js +153 -0
  198. package/text-anchor/index.js +10 -1
  199. package/text-area/index.js +289 -0
  200. package/text-field/index.js +130 -0
  201. package/tooltip/index.js +24 -24
  202. package/lib/text/text.d.ts +0 -10
  203. package/shared/style-inject.es.js +0 -28
  204. package/sidenav-item/index.js +0 -38
  205. package/styles/themes/dark.css +0 -205
  206. package/styles/themes/light.css +0 -205
  207. package/text/index.js +0 -45
@@ -0,0 +1,153 @@
1
+ import '../focus/index.js';
2
+ import { F as FoundationElement, _ as __decorate, a as attr, o as observable, b as __metadata, h as html, d as designSystem } from '../shared/index.js';
3
+ import { C as CheckableFormAssociated } from '../shared/form-associated.js';
4
+ import { a as keySpace, k as keyEnter } from '../shared/key-codes.js';
5
+ import '../shared/affix.js';
6
+ import { f as focusTemplateFactory } from '../shared/focus2.js';
7
+ import '../shared/web.dom-collections.iterator.js';
8
+ import '../shared/icon.js';
9
+ import { w as when } from '../shared/when.js';
10
+ import { c as classNames } from '../shared/class-names.js';
11
+ import '../shared/focus.js';
12
+ import '../shared/export.js';
13
+ import '../shared/object-keys.js';
14
+ import '../shared/iterators.js';
15
+ import '../shared/to-string.js';
16
+ import '../shared/string-trim.js';
17
+ import '../shared/_has.js';
18
+
19
+ class _Switch extends FoundationElement {
20
+ }
21
+ /**
22
+ * A form-associated base class for the {@link @microsoft/fast-foundation#(Switch:class)} component.
23
+ *
24
+ * @internal
25
+ */
26
+ class FormAssociatedSwitch extends CheckableFormAssociated(_Switch) {
27
+ constructor() {
28
+ super(...arguments);
29
+ this.proxy = document.createElement("input");
30
+ }
31
+ }
32
+
33
+ /**
34
+ * A Switch Custom HTML Element.
35
+ * Implements the {@link https://www.w3.org/TR/wai-aria-1.1/#switch | ARIA switch }.
36
+ *
37
+ * @slot - The deafult slot for the label
38
+ * @slot checked-message - The message when in a checked state
39
+ * @slot unchecked-message - The message when in an unchecked state
40
+ * @csspart label - The label
41
+ * @csspart switch - The element representing the switch, which wraps the indicator
42
+ * @csspart status-message - The wrapper for the status messages
43
+ * @csspart checked-message - The checked message
44
+ * @csspart unchecked-message - The unchecked message
45
+ * @fires change - Emits a custom change event when the checked state changes
46
+ *
47
+ * @public
48
+ */
49
+ class Switch$1 extends FormAssociatedSwitch {
50
+ constructor() {
51
+ super();
52
+ /**
53
+ * The element's value to be included in form submission when checked.
54
+ * Default to "on" to reach parity with input[type="checkbox"]
55
+ *
56
+ * @internal
57
+ */
58
+ this.initialValue = "on";
59
+ /**
60
+ * @internal
61
+ */
62
+ this.keypressHandler = (e) => {
63
+ if (this.readOnly) {
64
+ return;
65
+ }
66
+ switch (e.key) {
67
+ case keyEnter:
68
+ case keySpace:
69
+ this.checked = !this.checked;
70
+ break;
71
+ }
72
+ };
73
+ /**
74
+ * @internal
75
+ */
76
+ this.clickHandler = (e) => {
77
+ if (!this.disabled && !this.readOnly) {
78
+ this.checked = !this.checked;
79
+ }
80
+ };
81
+ this.proxy.setAttribute("type", "checkbox");
82
+ }
83
+ readOnlyChanged() {
84
+ if (this.proxy instanceof HTMLInputElement) {
85
+ this.proxy.readOnly = this.readOnly;
86
+ }
87
+ this.readOnly
88
+ ? this.classList.add("readonly")
89
+ : this.classList.remove("readonly");
90
+ }
91
+ /**
92
+ * @internal
93
+ */
94
+ checkedChanged(prev, next) {
95
+ super.checkedChanged(prev, next);
96
+ /**
97
+ * @deprecated - this behavior already exists in the template and should not exist in the class.
98
+ */
99
+ this.checked ? this.classList.add("checked") : this.classList.remove("checked");
100
+ }
101
+ }
102
+ __decorate([
103
+ attr({ attribute: "readonly", mode: "boolean" })
104
+ ], Switch$1.prototype, "readOnly", void 0);
105
+ __decorate([
106
+ observable
107
+ ], Switch$1.prototype, "defaultSlottedNodes", void 0);
108
+
109
+ var css_248z = "/**\n * Do not edit directly\n * Generated on Wed, 16 Nov 2022 09:48:51 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-100);\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-100);\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-100);\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 + 8 * clamp(-1, var(--vvd-size-density, 0), 1) - 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 + 8 * clamp(-1, var(--vvd-size-density, 0), 1) - 20));\n border-radius: calc(calc(1px * (40 + 8 * clamp(-1, var(--vvd-size-density, 0), 1) - 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 + 8 * clamp(-1, var(--vvd-size-density, 0), 1) - 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}";
110
+
111
+ class Switch extends Switch$1 {}
112
+ __decorate([attr, __metadata("design:type", String)], Switch.prototype, "label", void 0);
113
+ __decorate([attr, __metadata("design:type", String)], Switch.prototype, "connotation", void 0);
114
+
115
+ let _2 = t => t,
116
+ _t,
117
+ _t2;
118
+ const getClasses = _ => classNames('control', ['appearance-filled', _.checked && !_.disabled && !_.readOnly], ['checked', _.checked], ['disabled', _.disabled], ['readonly', _.readOnly], [`connotation-${_.connotation}`, Boolean(_.checked) && Boolean(_.connotation)]);
119
+ const SwitchTemplate = context => {
120
+ const focusTemplate = focusTemplateFactory(context);
121
+ return html(_t || (_t = _2`
122
+ <div
123
+ class="${0}"
124
+ role="switch"
125
+ aria-checked="${0}"
126
+ aria-disabled="${0}"
127
+ aria-readonly="${0}"
128
+ tabindex="${0}"
129
+ @keypress="${0}"
130
+ @click="${0}"
131
+ >
132
+ <div class="switch">
133
+ <span class="checked-indicator"></span>
134
+ ${0}
135
+ </div>
136
+ ${0}
137
+ </div>
138
+ `), 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">
139
+ ${0}
140
+ </div>`), x => x.label)));
141
+ };
142
+
143
+ const vividSwitch = Switch.compose({
144
+ baseName: 'switch',
145
+ template: SwitchTemplate,
146
+ styles: css_248z,
147
+ shadowOptions: {
148
+ delegatesFocus: true
149
+ }
150
+ });
151
+ designSystem.register(vividSwitch());
152
+
153
+ export { vividSwitch };
@@ -1,13 +1,22 @@
1
1
  import { d as designSystem } from '../shared/index.js';
2
2
  import { T as TextAnchor } from '../shared/text-anchor.js';
3
3
  import { t as textAnchorTemplate } from '../shared/text-anchor.template.js';
4
- import '../shared/web.dom-collections.iterator.js';
5
4
  import '../shared/affix.js';
5
+ import '../shared/web.dom-collections.iterator.js';
6
+ import '../shared/export.js';
7
+ import '../shared/object-keys.js';
8
+ import '../shared/iterators.js';
6
9
  import '../shared/icon.js';
10
+ import '../shared/to-string.js';
11
+ import '../shared/string-trim.js';
7
12
  import '../shared/_has.js';
8
13
  import '../shared/anchor.js';
9
14
  import '../shared/apply-mixins.js';
10
15
  import '../shared/aria-global.js';
16
+ import '../shared/start-end.js';
17
+ import '../shared/ref.js';
18
+ import '../shared/focus2.js';
19
+ import '../shared/focus.js';
11
20
  import '../shared/class-names.js';
12
21
 
13
22
  const vividTextAnchor = TextAnchor.compose({
@@ -0,0 +1,289 @@
1
+ import '../focus/index.js';
2
+ import '../icon/index.js';
3
+ import { F as FoundationElement, _ as __decorate, a as attr, n as nullableNumberConverter, o as observable, b as __metadata, h as html, d as designSystem } from '../shared/index.js';
4
+ import '../shared/affix.js';
5
+ import '../shared/focus.js';
6
+ import { D as DelegatesARIATextbox, f as formElements, g as getFeedbackTemplate } from '../shared/form-elements.js';
7
+ import { a as applyMixins } from '../shared/apply-mixins.js';
8
+ import { F as FormAssociated } from '../shared/form-associated.js';
9
+ import { f as focusTemplateFactory } from '../shared/focus2.js';
10
+ import { w as when } from '../shared/when.js';
11
+ import { r as ref } from '../shared/ref.js';
12
+ import { c as classNames } from '../shared/class-names.js';
13
+ import '../shared/icon.js';
14
+ import '../shared/export.js';
15
+ import '../shared/iterators.js';
16
+ import '../shared/to-string.js';
17
+ import '../shared/string-trim.js';
18
+ import '../shared/_has.js';
19
+ import '../shared/web.dom-collections.iterator.js';
20
+ import '../shared/object-keys.js';
21
+ import '../shared/aria-global.js';
22
+ import '../shared/start-end.js';
23
+ import '../shared/key-codes.js';
24
+
25
+ class _TextArea extends FoundationElement {
26
+ }
27
+ /**
28
+ * A form-associated base class for the {@link @microsoft/fast-foundation#(TextArea:class)} component.
29
+ *
30
+ * @internal
31
+ */
32
+ class FormAssociatedTextArea extends FormAssociated(_TextArea) {
33
+ constructor() {
34
+ super(...arguments);
35
+ this.proxy = document.createElement("textarea");
36
+ }
37
+ }
38
+
39
+ /**
40
+ * Resize mode for a TextArea
41
+ * @public
42
+ */
43
+ const TextAreaResize = {
44
+ /**
45
+ * No resize.
46
+ */
47
+ none: "none",
48
+ /**
49
+ * Resize vertically and horizontally.
50
+ */
51
+ both: "both",
52
+ /**
53
+ * Resize horizontally.
54
+ */
55
+ horizontal: "horizontal",
56
+ /**
57
+ * Resize vertically.
58
+ */
59
+ vertical: "vertical",
60
+ };
61
+
62
+ /**
63
+ * A Text Area Custom HTML Element.
64
+ * Based largely on the {@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/textarea | <textarea> element }.
65
+ *
66
+ * @slot - The default slot for the label
67
+ * @csspart label - The label
68
+ * @csspart root - The element wrapping the control
69
+ * @csspart control - The textarea element
70
+ * @fires change - Emits a custom 'change' event when the textarea emits a change event
71
+ *
72
+ * @public
73
+ */
74
+ class TextArea$1 extends FormAssociatedTextArea {
75
+ constructor() {
76
+ super(...arguments);
77
+ /**
78
+ * The resize mode of the element.
79
+ * @public
80
+ * @remarks
81
+ * HTML Attribute: resize
82
+ */
83
+ this.resize = TextAreaResize.none;
84
+ /**
85
+ * Sizes the element horizontally by a number of character columns.
86
+ *
87
+ * @public
88
+ * @remarks
89
+ * HTML Attribute: cols
90
+ */
91
+ this.cols = 20;
92
+ /**
93
+ * @internal
94
+ */
95
+ this.handleTextInput = () => {
96
+ this.value = this.control.value;
97
+ };
98
+ }
99
+ readOnlyChanged() {
100
+ if (this.proxy instanceof HTMLTextAreaElement) {
101
+ this.proxy.readOnly = this.readOnly;
102
+ }
103
+ }
104
+ autofocusChanged() {
105
+ if (this.proxy instanceof HTMLTextAreaElement) {
106
+ this.proxy.autofocus = this.autofocus;
107
+ }
108
+ }
109
+ listChanged() {
110
+ if (this.proxy instanceof HTMLTextAreaElement) {
111
+ this.proxy.setAttribute("list", this.list);
112
+ }
113
+ }
114
+ maxlengthChanged() {
115
+ if (this.proxy instanceof HTMLTextAreaElement) {
116
+ this.proxy.maxLength = this.maxlength;
117
+ }
118
+ }
119
+ minlengthChanged() {
120
+ if (this.proxy instanceof HTMLTextAreaElement) {
121
+ this.proxy.minLength = this.minlength;
122
+ }
123
+ }
124
+ spellcheckChanged() {
125
+ if (this.proxy instanceof HTMLTextAreaElement) {
126
+ this.proxy.spellcheck = this.spellcheck;
127
+ }
128
+ }
129
+ /**
130
+ * Selects all the text in the text area
131
+ *
132
+ * @public
133
+ */
134
+ select() {
135
+ this.control.select();
136
+ /**
137
+ * The select event does not permeate the shadow DOM boundary.
138
+ * This fn effectively proxies the select event,
139
+ * emitting a `select` event whenever the internal
140
+ * control emits a `select` event
141
+ */
142
+ this.$emit("select");
143
+ }
144
+ /**
145
+ * Change event handler for inner control.
146
+ * @remarks
147
+ * "Change" events are not `composable` so they will not
148
+ * permeate the shadow DOM boundary. This fn effectively proxies
149
+ * the change event, emitting a `change` event whenever the internal
150
+ * control emits a `change` event
151
+ * @internal
152
+ */
153
+ handleChange() {
154
+ this.$emit("change");
155
+ }
156
+ /** {@inheritDoc (FormAssociated:interface).validate} */
157
+ validate() {
158
+ super.validate(this.control);
159
+ }
160
+ }
161
+ __decorate([
162
+ attr({ mode: "boolean" })
163
+ ], TextArea$1.prototype, "readOnly", void 0);
164
+ __decorate([
165
+ attr
166
+ ], TextArea$1.prototype, "resize", void 0);
167
+ __decorate([
168
+ attr({ mode: "boolean" })
169
+ ], TextArea$1.prototype, "autofocus", void 0);
170
+ __decorate([
171
+ attr({ attribute: "form" })
172
+ ], TextArea$1.prototype, "formId", void 0);
173
+ __decorate([
174
+ attr
175
+ ], TextArea$1.prototype, "list", void 0);
176
+ __decorate([
177
+ attr({ converter: nullableNumberConverter })
178
+ ], TextArea$1.prototype, "maxlength", void 0);
179
+ __decorate([
180
+ attr({ converter: nullableNumberConverter })
181
+ ], TextArea$1.prototype, "minlength", void 0);
182
+ __decorate([
183
+ attr
184
+ ], TextArea$1.prototype, "name", void 0);
185
+ __decorate([
186
+ attr
187
+ ], TextArea$1.prototype, "placeholder", void 0);
188
+ __decorate([
189
+ attr({ converter: nullableNumberConverter, mode: "fromView" })
190
+ ], TextArea$1.prototype, "cols", void 0);
191
+ __decorate([
192
+ attr({ converter: nullableNumberConverter, mode: "fromView" })
193
+ ], TextArea$1.prototype, "rows", void 0);
194
+ __decorate([
195
+ attr({ mode: "boolean" })
196
+ ], TextArea$1.prototype, "spellcheck", void 0);
197
+ __decorate([
198
+ observable
199
+ ], TextArea$1.prototype, "defaultSlottedNodes", void 0);
200
+ applyMixins(TextArea$1, DelegatesARIATextbox);
201
+
202
+ var css_248z = "/**\n * Do not edit directly\n * Generated on Wed, 16 Nov 2022 09:48:51 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-100);\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-100);\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 + 8 * clamp(-1, var(--vvd-size-density, 0), 1)));\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}";
203
+
204
+ let TextArea = class TextArea extends TextArea$1 {};
205
+ __decorate([attr, __metadata("design:type", String)], TextArea.prototype, "wrap", void 0);
206
+ TextArea = __decorate([formElements], TextArea);
207
+
208
+ let _ = t => t,
209
+ _t,
210
+ _t2;
211
+ const getClasses = ({
212
+ value,
213
+ errorValidationMessage,
214
+ disabled,
215
+ placeholder,
216
+ readOnly,
217
+ successText
218
+ }) => classNames('base', ['readonly', readOnly], ['placeholder', Boolean(placeholder)], ['disabled', disabled], ['error connotation-alert', Boolean(errorValidationMessage)], ['has-value', Boolean(value)], ['success connotation-success', !!successText]);
219
+ function renderLabel() {
220
+ return html(_t || (_t = _`
221
+ <label for="control" class="label">
222
+ ${0}
223
+ </label>`), x => x.label);
224
+ }
225
+ const TextAreaTemplate = context => {
226
+ const focusTemplate = focusTemplateFactory(context);
227
+ return html(_t2 || (_t2 = _`
228
+ <div class="${0}">
229
+ ${0}
230
+ <div class="fieldset">
231
+ <textarea class="control"
232
+ ?autofocus="${0}"
233
+ placeholder="${0}"
234
+ name="${0}"
235
+ maxlength="${0}"
236
+ rows="${0}"
237
+ cols="${0}"
238
+ wrap="${0}"
239
+ ?readonly="${0}"
240
+ ?required="${0}"
241
+ ?spellcheck="${0}"
242
+ :value="${0}"
243
+ aria-atomic="${0}"
244
+ aria-busy="${0}"
245
+ aria-controls="${0}"
246
+ aria-current="${0}"
247
+ aria-describedby="${0}"
248
+ aria-details="${0}"
249
+ aria-disabled="${0}"
250
+ aria-errormessage="${0}"
251
+ aria-flowto="${0}"
252
+ aria-haspopup="${0}"
253
+ aria-hidden="${0}"
254
+ aria-invalid="${0}"
255
+ aria-keyshortcuts="${0}"
256
+ aria-label="${0}"
257
+ aria-labelledby="${0}"
258
+ aria-live="${0}"
259
+ aria-owns="${0}"
260
+ aria-relevant="${0}"
261
+ aria-roledescription="${0}"
262
+ @input="${0}"
263
+ @change="${0}"
264
+ ${0}
265
+ >
266
+ </textarea>
267
+ ${0}
268
+ </div>
269
+ ${0}
270
+ ${0}
271
+ ${0}
272
+ </div>
273
+ `), 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 => {
274
+ var _a;
275
+ return !x.successText && !x.errorValidationMessage && ((_a = x.helperText) === null || _a === void 0 ? void 0 : _a.length);
276
+ }, getFeedbackTemplate('helper', context)), when(x => !x.successText && x.errorValidationMessage, getFeedbackTemplate('error', context)), when(x => x.successText, getFeedbackTemplate('success', context)));
277
+ };
278
+
279
+ const vividTextArea = TextArea.compose({
280
+ baseName: 'text-area',
281
+ template: TextAreaTemplate,
282
+ styles: css_248z,
283
+ shadowOptions: {
284
+ delegatesFocus: true
285
+ }
286
+ });
287
+ designSystem.register(vividTextArea());
288
+
289
+ export { vividTextArea };
@@ -0,0 +1,130 @@
1
+ import '../icon/index.js';
2
+ import '../focus/index.js';
3
+ import { _ as __decorate, a as attr, b as __metadata, h as html, d as designSystem } from '../shared/index.js';
4
+ import { b as AffixIcon, a as affixIconTemplateFactory } from '../shared/affix.js';
5
+ import '../shared/focus.js';
6
+ import { T as TextField$1, f as formElements, g as getFeedbackTemplate } from '../shared/form-elements.js';
7
+ import { a as applyMixins } from '../shared/apply-mixins.js';
8
+ import { f as focusTemplateFactory } from '../shared/focus2.js';
9
+ import { w as when } from '../shared/when.js';
10
+ import { r as ref } from '../shared/ref.js';
11
+ import { c as classNames } from '../shared/class-names.js';
12
+ import '../shared/icon.js';
13
+ import '../shared/export.js';
14
+ import '../shared/iterators.js';
15
+ import '../shared/to-string.js';
16
+ import '../shared/string-trim.js';
17
+ import '../shared/_has.js';
18
+ import '../shared/web.dom-collections.iterator.js';
19
+ import '../shared/object-keys.js';
20
+ import '../shared/form-associated.js';
21
+ import '../shared/key-codes.js';
22
+ import '../shared/aria-global.js';
23
+ import '../shared/start-end.js';
24
+
25
+ let TextField = class TextField extends TextField$1 {};
26
+ __decorate([attr, __metadata("design:type", String)], TextField.prototype, "appearance", void 0);
27
+ __decorate([attr, __metadata("design:type", String)], TextField.prototype, "shape", void 0);
28
+ __decorate([attr, __metadata("design:type", String)], TextField.prototype, "autoComplete", void 0);
29
+ TextField = __decorate([formElements], TextField);
30
+ applyMixins(TextField, AffixIcon);
31
+
32
+ var css_248z = "/**\n * Do not edit directly\n * Generated on Wed, 16 Nov 2022 09:48:51 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: min-content 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-100);\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-100);\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}\n\n.label {\n color: var(--vvd-color-canvas-text);\n contain: inline-size;\n font: var(--vvd-typography-base);\n grid-column: 1/4;\n grid-row: 1;\n}\n.char-count + .label {\n grid-column: 1/3;\n}\n\n.char-count {\n color: var(--_low-ink-color);\n font: var(--vvd-typography-base);\n grid-column: 3/4;\n}\n\n.fieldset {\n position: relative;\n display: flex;\n align-items: center;\n grid-column: 1/4;\n transition: color 0.2s;\n /* Shape */\n}\n.base > .fieldset {\n block-size: calc(1px * (40 + 8 * clamp(-1, var(--vvd-size-density, 0), 1)));\n}\n.base:not(.shape-pill) .fieldset {\n border-radius: 6px;\n}\n.base.shape-pill .fieldset {\n border-radius: 24px;\n}\n\n.control {\n width: 100%;\n border: 0 none;\n background-color: var(--_appearance-color-fill);\n block-size: 100%;\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 padding-inline-end: 16px;\n padding-inline-start: 16px;\n transition: box-shadow 0.2s, background-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.icon {\n position: absolute;\n z-index: 1;\n color: var(--_low-ink-color);\n font-size: 20px;\n inset-inline-start: 16px;\n}\n.icon + .control {\n padding-inline-start: 44px;\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}";
33
+
34
+ let _ = t => t,
35
+ _t,
36
+ _t2,
37
+ _t3;
38
+ const getStateClasses = ({
39
+ errorValidationMessage,
40
+ disabled,
41
+ value,
42
+ readOnly,
43
+ placeholder,
44
+ appearance,
45
+ shape,
46
+ label,
47
+ successText
48
+ }) => classNames(['error connotation-alert', Boolean(errorValidationMessage)], ['disabled', disabled], ['has-value', Boolean(value)], ['readonly', readOnly], ['placeholder', Boolean(placeholder)], [`appearance-${appearance}`, Boolean(appearance)], [`shape-${shape}`, Boolean(shape)], ['no-label', !label], ['success connotation-success', Boolean(successText)]);
49
+ function renderLabel() {
50
+ return html(_t || (_t = _`
51
+ <label for="control" class="label">
52
+ ${0}
53
+ </label>`), x => x.label);
54
+ }
55
+ function renderCharCount() {
56
+ return html(_t2 || (_t2 = _`
57
+ <span class="char-count">${0} / ${0}</span>
58
+ `), x => x.value ? x.value.length : 0, x => x.maxlength);
59
+ }
60
+ const TextfieldTemplate = context => {
61
+ const affixIconTemplate = affixIconTemplateFactory(context);
62
+ const focusTemplate = focusTemplateFactory(context);
63
+ return html(_t3 || (_t3 = _`
64
+ <div class="base ${0}">
65
+ ${0}
66
+ ${0}
67
+ <div class="fieldset">
68
+ ${0}
69
+ <input class="control"
70
+ id="control"
71
+ @input="${0}"
72
+ @change="${0}"
73
+ ?autofocus="${0}"
74
+ ?disabled="${0}"
75
+ list="${0}"
76
+ maxlength="${0}"
77
+ minlength="${0}"
78
+ pattern="${0}"
79
+ placeholder="${0}"
80
+ ?readonly="${0}"
81
+ ?required="${0}"
82
+ size="${0}"
83
+ autocomplete="${0}"
84
+ name="${0}"
85
+ ?spellcheck="${0}"
86
+ :value="${0}"
87
+ type="${0}"
88
+ aria-atomic="${0}"
89
+ aria-busy="${0}"
90
+ aria-controls="${0}"
91
+ aria-current="${0}"
92
+ aria-describedby="${0}"
93
+ aria-details="${0}"
94
+ aria-disabled="${0}"
95
+ aria-errormessage="${0}"
96
+ aria-flowto="${0}"
97
+ aria-haspopup="${0}"
98
+ aria-hidden="${0}"
99
+ aria-invalid="${0}"
100
+ aria-keyshortcuts="${0}"
101
+ aria-label="${0}"
102
+ aria-labelledby="${0}"
103
+ aria-live="${0}"
104
+ aria-owns="${0}"
105
+ aria-relevant="${0}"
106
+ aria-roledescription="${0}"
107
+ ${0}
108
+ />
109
+ ${0}
110
+ </div>
111
+ ${0}
112
+ ${0}
113
+ ${0}
114
+ </div>`), getStateClasses, when(x => x.charCount && x.maxlength, renderCharCount()), when(x => x.label, renderLabel()), x => affixIconTemplate(x.icon), x => x.handleTextInput(), x => x.handleChange(), x => x.autofocus, x => x.disabled, x => x.list, x => x.maxlength, x => x.minlength, x => x.pattern, x => x.placeholder, x => x.readOnly, x => x.required, x => x.size, x => x.autoComplete, x => x.name, x => x.spellcheck, x => x.value, x => x.type, 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, ref('control'), () => focusTemplate, when(x => {
115
+ var _a;
116
+ return !x.successText && !x.errorValidationMessage && ((_a = x.helperText) === null || _a === void 0 ? void 0 : _a.length);
117
+ }, getFeedbackTemplate('helper', context)), when(x => !x.successText && x.errorValidationMessage, getFeedbackTemplate('error', context)), when(x => x.successText, getFeedbackTemplate('success', context)));
118
+ };
119
+
120
+ const vividTextfield = TextField.compose({
121
+ baseName: 'text-field',
122
+ template: TextfieldTemplate,
123
+ styles: css_248z,
124
+ shadowOptions: {
125
+ delegatesFocus: true
126
+ }
127
+ });
128
+ designSystem.register(vividTextfield());
129
+
130
+ export { vividTextfield };