@vonage/vivid 3.0.0-next.11 → 3.0.0-next.110

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 (209) hide show
  1. package/README.md +165 -4
  2. package/accordion/index.js +5 -14
  3. package/accordion-item/index.js +34 -41
  4. package/action-group/index.js +37 -0
  5. package/avatar/index.js +61 -0
  6. package/badge/index.js +23 -35
  7. package/banner/index.js +20 -115
  8. package/breadcrumb/index.js +22 -19
  9. package/breadcrumb-item/index.js +28 -25
  10. package/button/index.js +29 -690
  11. package/calendar/index.js +70 -69
  12. package/calendar-event/index.js +109 -0
  13. package/card/index.js +112 -0
  14. package/checkbox/index.js +178 -0
  15. package/custom-elements.json +3941 -0
  16. package/dialog/index.js +214 -0
  17. package/divider/index.js +27 -0
  18. package/elevation/index.js +10 -16
  19. package/fab/index.js +98 -0
  20. package/focus/index.js +18 -3
  21. package/header/index.js +63 -0
  22. package/icon/index.js +9 -12
  23. package/index.js +68 -22
  24. package/layout/index.js +6 -16
  25. package/lib/accordion-item/accordion-item.d.ts +2 -2
  26. package/lib/accordion-item/index.d.ts +0 -1
  27. package/lib/action-group/action-group.d.ts +10 -0
  28. package/lib/{sidenav-item/sidenav-item.template.d.ts → action-group/action-group.template.d.ts} +2 -2
  29. package/lib/{sidenav-item → action-group}/index.d.ts +1 -2
  30. package/lib/avatar/avatar.d.ts +15 -0
  31. package/lib/avatar/avatar.template.d.ts +4 -0
  32. package/lib/avatar/index.d.ts +2 -0
  33. package/lib/badge/badge.d.ts +3 -5
  34. package/lib/badge/index.d.ts +1 -2
  35. package/lib/banner/banner.d.ts +1 -1
  36. package/lib/banner/banner.template.d.ts +0 -2
  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 +0 -1
  40. package/lib/button/button.d.ts +4 -3
  41. package/lib/button/index.d.ts +1 -21
  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/{text → card}/index.d.ts +1 -1
  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 +2 -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 +2 -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 +2 -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 +2 -0
  70. package/lib/icon/icon.d.ts +5 -6
  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 +1 -0
  74. package/lib/listbox/listbox.d.ts +9 -0
  75. package/lib/listbox/listbox.template.d.ts +4 -0
  76. package/lib/menu/index.d.ts +10 -0
  77. package/lib/menu/menu.d.ts +10 -0
  78. package/lib/menu/menu.template.d.ts +3 -0
  79. package/lib/menu-item/index.d.ts +2 -0
  80. package/lib/menu-item/menu-item.d.ts +7 -0
  81. package/lib/menu-item/menu-item.template.d.ts +5 -0
  82. package/lib/nav/index.d.ts +2 -0
  83. package/lib/nav/nav.d.ts +3 -0
  84. package/lib/nav/nav.template.d.ts +4 -0
  85. package/lib/nav-disclosure/index.d.ts +2 -0
  86. package/lib/nav-disclosure/nav-disclosure.d.ts +10 -0
  87. package/lib/nav-disclosure/nav-disclosure.template.d.ts +4 -0
  88. package/lib/nav-item/index.d.ts +2 -0
  89. package/lib/{sidenav-item/sidenav-item.d.ts → nav-item/nav-item.d.ts} +2 -2
  90. package/lib/nav-item/nav-item.template.d.ts +4 -0
  91. package/lib/note/index.d.ts +2 -0
  92. package/lib/note/note.d.ts +10 -0
  93. package/lib/note/note.template.d.ts +4 -0
  94. package/lib/number-field/index.d.ts +2 -0
  95. package/lib/number-field/number-field.d.ts +14 -0
  96. package/lib/number-field/number-field.template.d.ts +4 -0
  97. package/lib/option/index.d.ts +2 -0
  98. package/lib/option/option.d.ts +9 -0
  99. package/lib/option/option.template.d.ts +4 -0
  100. package/lib/popup/index.d.ts +1 -3
  101. package/lib/popup/popup.d.ts +3 -2
  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 +2 -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 +2 -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 +2 -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 +2 -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 +2 -0
  123. package/lib/text-field/text-field.d.ts +14 -0
  124. package/lib/text-field/text-field.template.d.ts +4 -0
  125. package/lib/tooltip/index.d.ts +0 -1
  126. package/lib/tooltip/tooltip.d.ts +7 -7
  127. package/listbox/index.js +1086 -0
  128. package/menu/index.js +357 -0
  129. package/menu-item/index.js +90 -0
  130. package/nav/index.js +17 -0
  131. package/nav-disclosure/index.js +80 -0
  132. package/nav-item/index.js +44 -0
  133. package/note/index.js +59 -0
  134. package/number-field/index.js +460 -0
  135. package/option/index.js +75 -0
  136. package/package.json +62 -10
  137. package/popup/index.js +35 -2036
  138. package/progress/index.js +33 -38
  139. package/progress-ring/index.js +13 -13
  140. package/radio/index.js +52 -0
  141. package/radio-group/index.js +435 -0
  142. package/shared/affix.js +2 -8
  143. package/shared/anchor.js +11 -3
  144. package/shared/apply-mixins.js +5 -4
  145. package/shared/aria-global.js +2 -86
  146. package/shared/aria.js +9 -0
  147. package/shared/base-progress.js +6 -1
  148. package/shared/breadcrumb-item.js +2 -2
  149. package/shared/button.js +23 -0
  150. package/shared/button2.js +200 -0
  151. package/shared/calendar-event.js +19 -0
  152. package/shared/design-system/index.d.ts +1 -1
  153. package/shared/dialog-polyfill.esm.js +858 -0
  154. package/shared/direction.js +20 -0
  155. package/shared/divider.js +55 -0
  156. package/shared/dom.js +8 -0
  157. package/shared/elevation.js +10 -0
  158. package/shared/enums.js +70 -0
  159. package/shared/es.object.assign.js +2 -59
  160. package/shared/es.promise.resolve.js +944 -0
  161. package/shared/es.regexp.to-string.js +58 -0
  162. package/shared/focus.js +11 -0
  163. package/shared/focus2.js +5 -0
  164. package/shared/form-associated.js +466 -0
  165. package/shared/form-elements.js +343 -0
  166. package/shared/icon.js +32 -1153
  167. package/shared/index.js +3780 -83
  168. package/shared/index2.js +7 -19
  169. package/shared/key-codes.js +97 -0
  170. package/shared/listbox-option.js +201 -0
  171. package/shared/menu-item.js +277 -0
  172. package/shared/numbers.js +25 -0
  173. package/shared/patterns/focus.d.ts +3 -0
  174. package/shared/patterns/form-elements/form-elements.d.ts +31 -0
  175. package/shared/patterns/form-elements/index.d.ts +1 -0
  176. package/shared/patterns/index.d.ts +2 -0
  177. package/shared/popup.js +1484 -0
  178. package/shared/radio.js +127 -0
  179. package/shared/ref.js +41 -0
  180. package/shared/slotted.js +1 -1
  181. package/shared/start-end.js +50 -0
  182. package/shared/string-trim.js +39 -0
  183. package/shared/text-anchor.js +2 -13
  184. package/shared/text-anchor.template.js +6 -5
  185. package/shared/utils/index.d.ts +1 -0
  186. package/side-drawer/index.js +38 -34
  187. package/slider/index.js +596 -0
  188. package/styles/core/all.css +86 -0
  189. package/styles/core/theme.css +11 -0
  190. package/styles/core/typography.css +80 -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 +8 -3
  199. package/text-area/index.js +288 -0
  200. package/text-field/index.js +129 -0
  201. package/tooltip/index.js +59 -43
  202. package/vivid.api.json +2979 -0
  203. package/lib/text/text.d.ts +0 -10
  204. package/shared/style-inject.es.js +0 -28
  205. package/shared/web.dom-collections.iterator.js +0 -1479
  206. package/sidenav-item/index.js +0 -38
  207. package/styles/themes/dark.css +0 -205
  208. package/styles/themes/light.css +0 -205
  209. package/text/index.js +0 -45
package/menu/index.js ADDED
@@ -0,0 +1,357 @@
1
+ import '../shared/es.promise.resolve.js';
2
+ import { F as FoundationElement, a2 as DOM, _ as __decorate, V as observable, a as attr, b as __metadata, h as html, g as getPrefix, d as designSystem } from '../shared/index.js';
3
+ import { l as loadComponentsModules } from '../shared/index2.js';
4
+ import { M as MenuItem, a as MenuItemRole, r as roleForMenuItem } from '../shared/menu-item.js';
5
+ import { i as isHTMLElement } from '../shared/dom.js';
6
+ import { g as keyHome, d as keyEnd, e as keyArrowUp, f as keyArrowDown } from '../shared/key-codes.js';
7
+ import { P as Popup } from '../shared/popup.js';
8
+ import { s as slotted } from '../shared/slotted.js';
9
+ import { r as ref } from '../shared/ref.js';
10
+ import '../shared/start-end.js';
11
+ import '../shared/direction.js';
12
+ import '../shared/apply-mixins.js';
13
+ import '../shared/es.object.assign.js';
14
+
15
+ /**
16
+ * A Menu Custom HTML Element.
17
+ * Implements the {@link https://www.w3.org/TR/wai-aria-1.1/#menu | ARIA menu }.
18
+ *
19
+ * @slot - The default slot for the menu items
20
+ *
21
+ * @public
22
+ */
23
+ class Menu$1 extends FoundationElement {
24
+ constructor() {
25
+ super(...arguments);
26
+ this.expandedItem = null;
27
+ /**
28
+ * The index of the focusable element in the items array
29
+ * defaults to -1
30
+ */
31
+ this.focusIndex = -1;
32
+ /**
33
+ * @internal
34
+ */
35
+ this.isNestedMenu = () => {
36
+ return (this.parentElement !== null &&
37
+ isHTMLElement(this.parentElement) &&
38
+ this.parentElement.getAttribute("role") === "menuitem");
39
+ };
40
+ /**
41
+ * if focus is moving out of the menu, reset to a stable initial state
42
+ * @internal
43
+ */
44
+ this.handleFocusOut = (e) => {
45
+ if (!this.contains(e.relatedTarget) && this.menuItems !== undefined) {
46
+ this.collapseExpandedItem();
47
+ // find our first focusable element
48
+ const focusIndex = this.menuItems.findIndex(this.isFocusableElement);
49
+ // set the current focus index's tabindex to -1
50
+ this.menuItems[this.focusIndex].setAttribute("tabindex", "-1");
51
+ // set the first focusable element tabindex to 0
52
+ this.menuItems[focusIndex].setAttribute("tabindex", "0");
53
+ // set the focus index
54
+ this.focusIndex = focusIndex;
55
+ }
56
+ };
57
+ this.handleItemFocus = (e) => {
58
+ const targetItem = e.target;
59
+ if (this.menuItems !== undefined &&
60
+ targetItem !== this.menuItems[this.focusIndex]) {
61
+ this.menuItems[this.focusIndex].setAttribute("tabindex", "-1");
62
+ this.focusIndex = this.menuItems.indexOf(targetItem);
63
+ targetItem.setAttribute("tabindex", "0");
64
+ }
65
+ };
66
+ this.handleExpandedChanged = (e) => {
67
+ if (e.defaultPrevented ||
68
+ e.target === null ||
69
+ this.menuItems === undefined ||
70
+ this.menuItems.indexOf(e.target) < 0) {
71
+ return;
72
+ }
73
+ e.preventDefault();
74
+ const changedItem = e.target;
75
+ // closing an expanded item without opening another
76
+ if (this.expandedItem !== null &&
77
+ changedItem === this.expandedItem &&
78
+ changedItem.expanded === false) {
79
+ this.expandedItem = null;
80
+ return;
81
+ }
82
+ if (changedItem.expanded) {
83
+ if (this.expandedItem !== null && this.expandedItem !== changedItem) {
84
+ this.expandedItem.expanded = false;
85
+ }
86
+ this.menuItems[this.focusIndex].setAttribute("tabindex", "-1");
87
+ this.expandedItem = changedItem;
88
+ this.focusIndex = this.menuItems.indexOf(changedItem);
89
+ changedItem.setAttribute("tabindex", "0");
90
+ }
91
+ };
92
+ this.removeItemListeners = () => {
93
+ if (this.menuItems !== undefined) {
94
+ this.menuItems.forEach((item) => {
95
+ item.removeEventListener("expanded-change", this.handleExpandedChanged);
96
+ item.removeEventListener("focus", this.handleItemFocus);
97
+ });
98
+ }
99
+ };
100
+ this.setItems = () => {
101
+ const newItems = this.domChildren();
102
+ this.removeItemListeners();
103
+ this.menuItems = newItems;
104
+ const menuItems = this.menuItems.filter(this.isMenuItemElement);
105
+ // if our focus index is not -1 we have items
106
+ if (menuItems.length) {
107
+ this.focusIndex = 0;
108
+ }
109
+ function elementIndent(el) {
110
+ const role = el.getAttribute("role");
111
+ const startSlot = el.querySelector("[slot=start]");
112
+ if (role !== MenuItemRole.menuitem && startSlot === null) {
113
+ return 1;
114
+ }
115
+ else if (role === MenuItemRole.menuitem && startSlot !== null) {
116
+ return 1;
117
+ }
118
+ else if (role !== MenuItemRole.menuitem && startSlot !== null) {
119
+ return 2;
120
+ }
121
+ else {
122
+ return 0;
123
+ }
124
+ }
125
+ const indent = menuItems.reduce((accum, current) => {
126
+ const elementValue = elementIndent(current);
127
+ return accum > elementValue ? accum : elementValue;
128
+ }, 0);
129
+ menuItems.forEach((item, index) => {
130
+ item.setAttribute("tabindex", index === 0 ? "0" : "-1");
131
+ item.addEventListener("expanded-change", this.handleExpandedChanged);
132
+ item.addEventListener("focus", this.handleItemFocus);
133
+ if (item instanceof MenuItem) {
134
+ item.startColumnCount = indent;
135
+ }
136
+ });
137
+ };
138
+ /**
139
+ * handle change from child element
140
+ */
141
+ this.changeHandler = (e) => {
142
+ if (this.menuItems === undefined) {
143
+ return;
144
+ }
145
+ const changedMenuItem = e.target;
146
+ const changeItemIndex = this.menuItems.indexOf(changedMenuItem);
147
+ if (changeItemIndex === -1) {
148
+ return;
149
+ }
150
+ if (changedMenuItem.role === "menuitemradio" &&
151
+ changedMenuItem.checked === true) {
152
+ for (let i = changeItemIndex - 1; i >= 0; --i) {
153
+ const item = this.menuItems[i];
154
+ const role = item.getAttribute("role");
155
+ if (role === MenuItemRole.menuitemradio) {
156
+ item.checked = false;
157
+ }
158
+ if (role === "separator") {
159
+ break;
160
+ }
161
+ }
162
+ const maxIndex = this.menuItems.length - 1;
163
+ for (let i = changeItemIndex + 1; i <= maxIndex; ++i) {
164
+ const item = this.menuItems[i];
165
+ const role = item.getAttribute("role");
166
+ if (role === MenuItemRole.menuitemradio) {
167
+ item.checked = false;
168
+ }
169
+ if (role === "separator") {
170
+ break;
171
+ }
172
+ }
173
+ }
174
+ };
175
+ /**
176
+ * check if the item is a menu item
177
+ */
178
+ this.isMenuItemElement = (el) => {
179
+ return (isHTMLElement(el) &&
180
+ Menu$1.focusableElementRoles.hasOwnProperty(el.getAttribute("role")));
181
+ };
182
+ /**
183
+ * check if the item is focusable
184
+ */
185
+ this.isFocusableElement = (el) => {
186
+ return this.isMenuItemElement(el);
187
+ };
188
+ }
189
+ itemsChanged(oldValue, newValue) {
190
+ // only update children after the component is connected and
191
+ // the setItems has run on connectedCallback
192
+ // (menuItems is undefined until then)
193
+ if (this.$fastController.isConnected && this.menuItems !== undefined) {
194
+ this.setItems();
195
+ }
196
+ }
197
+ /**
198
+ * @internal
199
+ */
200
+ connectedCallback() {
201
+ super.connectedCallback();
202
+ DOM.queueUpdate(() => {
203
+ // wait until children have had a chance to
204
+ // connect before setting/checking their props/attributes
205
+ this.setItems();
206
+ });
207
+ this.addEventListener("change", this.changeHandler);
208
+ }
209
+ /**
210
+ * @internal
211
+ */
212
+ disconnectedCallback() {
213
+ super.disconnectedCallback();
214
+ this.removeItemListeners();
215
+ this.menuItems = undefined;
216
+ this.removeEventListener("change", this.changeHandler);
217
+ }
218
+ /**
219
+ * Focuses the first item in the menu.
220
+ *
221
+ * @public
222
+ */
223
+ focus() {
224
+ this.setFocus(0, 1);
225
+ }
226
+ /**
227
+ * Collapses any expanded menu items.
228
+ *
229
+ * @public
230
+ */
231
+ collapseExpandedItem() {
232
+ if (this.expandedItem !== null) {
233
+ this.expandedItem.expanded = false;
234
+ this.expandedItem = null;
235
+ }
236
+ }
237
+ /**
238
+ * @internal
239
+ */
240
+ handleMenuKeyDown(e) {
241
+ if (e.defaultPrevented || this.menuItems === undefined) {
242
+ return;
243
+ }
244
+ switch (e.key) {
245
+ case keyArrowDown:
246
+ // go forward one index
247
+ this.setFocus(this.focusIndex + 1, 1);
248
+ return;
249
+ case keyArrowUp:
250
+ // go back one index
251
+ this.setFocus(this.focusIndex - 1, -1);
252
+ return;
253
+ case keyEnd:
254
+ // set focus on last item
255
+ this.setFocus(this.menuItems.length - 1, -1);
256
+ return;
257
+ case keyHome:
258
+ // set focus on first item
259
+ this.setFocus(0, 1);
260
+ return;
261
+ default:
262
+ // if we are not handling the event, do not prevent default
263
+ return true;
264
+ }
265
+ }
266
+ /**
267
+ * get an array of valid DOM children
268
+ */
269
+ domChildren() {
270
+ return Array.from(this.children).filter(child => !child.hasAttribute("hidden"));
271
+ }
272
+ setFocus(focusIndex, adjustment) {
273
+ if (this.menuItems === undefined) {
274
+ return;
275
+ }
276
+ while (focusIndex >= 0 && focusIndex < this.menuItems.length) {
277
+ const child = this.menuItems[focusIndex];
278
+ if (this.isFocusableElement(child)) {
279
+ // change the previous index to -1
280
+ if (this.focusIndex > -1 &&
281
+ this.menuItems.length >= this.focusIndex - 1) {
282
+ this.menuItems[this.focusIndex].setAttribute("tabindex", "-1");
283
+ }
284
+ // update the focus index
285
+ this.focusIndex = focusIndex;
286
+ // update the tabindex of next focusable element
287
+ child.setAttribute("tabindex", "0");
288
+ // focus the element
289
+ child.focus();
290
+ break;
291
+ }
292
+ focusIndex += adjustment;
293
+ }
294
+ }
295
+ }
296
+ Menu$1.focusableElementRoles = roleForMenuItem;
297
+ __decorate([
298
+ observable
299
+ ], Menu$1.prototype, "items", void 0);
300
+
301
+ var css_248z = ".base {\n max-inline-size: var(--menu-max-inline-size, 100%);\n min-inline-size: var(--menu-max-inline-size);\n padding-block: 8px;\n}";
302
+
303
+ class Menu extends Menu$1 {
304
+ constructor() {
305
+ super(...arguments);
306
+ this.open = false;
307
+ this.popupOpenChanged = () => {
308
+ this.open = this._popup.open;
309
+ };
310
+ }
311
+ }
312
+ __decorate([attr({
313
+ mode: 'boolean'
314
+ }), __metadata("design:type", Object)], Menu.prototype, "open", void 0);
315
+ __decorate([attr, __metadata("design:type", String)], Menu.prototype, "placement", void 0);
316
+ __decorate([attr, __metadata("design:type", String)], Menu.prototype, "anchor", void 0);
317
+
318
+ let _ = t => t,
319
+ _t;
320
+ const MenuTemplate = context => {
321
+ const popupTag = context.tagFor(Popup);
322
+ return html(_t || (_t = _`
323
+ <template
324
+ slot="${0}"
325
+ >
326
+ <${0}
327
+ :placement=${0}
328
+ :open=${0}
329
+ :anchor=${0}
330
+ @open="${0}"
331
+ @close="${0}"
332
+ ${0}
333
+ >
334
+ <div
335
+ class="base"
336
+ role="menu"
337
+ @keydown="${0}"
338
+ @focusout="${0}"
339
+ >
340
+ <slot ${0}></slot>
341
+ </div>
342
+ </${0}>
343
+ </template>`), x => x.slot || x.isNestedMenu() ? 'submenu' : void 0, popupTag, x => x.placement, x => x.open, x => x.anchor, x => x.popupOpenChanged(), x => x.popupOpenChanged(), ref('_popup'), (x, c) => x.handleMenuKeyDown(c.event), (x, c) => x.handleFocusOut(c.event), slotted('items'), popupTag);
344
+ };
345
+
346
+ const prefix = getPrefix(import.meta.url);
347
+ const vividMenu = Menu.compose({
348
+ baseName: 'menu',
349
+ template: MenuTemplate,
350
+ styles: css_248z
351
+ });
352
+ (async () => {
353
+ await loadComponentsModules(['popup', 'menu-item'], prefix);
354
+ designSystem.withPrefix(prefix).register(vividMenu());
355
+ })();
356
+
357
+ export { vividMenu };
@@ -0,0 +1,90 @@
1
+ import '../shared/es.promise.resolve.js';
2
+ import { _ as __decorate, a as attr, b as __metadata, h as html, g as getPrefix, d as designSystem } from '../shared/index.js';
3
+ import { l as loadComponentsModules } from '../shared/index2.js';
4
+ import { b as AffixIcon, a as affixIconTemplateFactory } from '../shared/affix.js';
5
+ import { M as MenuItem$1, a as MenuItemRole } from '../shared/menu-item.js';
6
+ import { a as applyMixins } from '../shared/apply-mixins.js';
7
+ import { f as focusTemplateFactory } from '../shared/focus.js';
8
+ import { w as when } from '../shared/when.js';
9
+ import { c as classNames } from '../shared/class-names.js';
10
+ import '../shared/icon.js';
11
+ import '../shared/string-trim.js';
12
+ import '../shared/_has.js';
13
+ import '../shared/start-end.js';
14
+ import '../shared/ref.js';
15
+ import '../shared/direction.js';
16
+ import '../shared/key-codes.js';
17
+ import '../shared/focus2.js';
18
+
19
+ var css_248z = "/**\n * Do not edit directly\n * Generated on Sun, 04 Dec 2022 15:37:45 GMT\n */\n@supports selector(:focus-visible) {\n :host(:focus) {\n outline: none;\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 block-size: calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density, 0), 2)));\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 gap: 12px;\n inline-size: 100%;\n padding-inline: 16px;\n}\n.base {\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(--_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: transparent;\n --_appearance-color-outline: transparent;\n}\n.base:where(:active, .active):where(:not(:disabled, .disabled)) {\n --_appearance-color-text: var(--_connotation-color-primary);\n --_appearance-color-fill: var(--_connotation-color-soft);\n --_appearance-color-outline: transparent;\n}\n.base:where(.selected, [aria-current]):where(:not(:disabled, .disabled, :hover, .hover)) {\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:where(.selected, [aria-current]):where(:hover, .hover) {\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.base {\n --_connotation-color-primary: var(--vvd-color-canvas-text);\n --_connotation-color-primary-text: var(--vvd-color-canvas);\n --_connotation-color-primary-increment: var(--vvd-color-neutral-800);\n --_connotation-color-faint: var(--vvd-color-neutral-50);\n --_connotation-color-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 cursor: pointer;\n}\n.base.disabled {\n cursor: not-allowed;\n}\n\n.focus-indicator {\n border-radius: 6px;\n}\n:host(:not(:focus-visible)) .focus-indicator {\n display: none;\n}\n\n.icon {\n font-size: 20px;\n}\n.base:not(.disabled, .item-checkbox, .item-radio) .icon {\n color: var(--vvd-color-neutral-600);\n}\n.base:is(.disabled, .item-checkbox, .item-radio) .icon {\n color: var(--_appearance-color-text);\n}\n\n.text {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}";
20
+
21
+ class MenuItem extends MenuItem$1 {}
22
+ __decorate([attr, __metadata("design:type", String)], MenuItem.prototype, "text", void 0);
23
+ applyMixins(MenuItem, AffixIcon);
24
+
25
+ let _ = t => t,
26
+ _t,
27
+ _t2,
28
+ _t3,
29
+ _t4,
30
+ _t5;
31
+ const getClasses = ({
32
+ disabled,
33
+ checked,
34
+ expanded,
35
+ role
36
+ }) => classNames('base', ['disabled', Boolean(disabled)], ['selected', role !== MenuItemRole.menuitem && Boolean(checked)], ['expanded', Boolean(expanded)], ['item-checkbox', role === MenuItemRole.menuitemcheckbox], ['item-radio', role === MenuItemRole.menuitemradio]);
37
+ const MenuItemTemplate = (context, definition) => {
38
+ const affixIconTemplate = affixIconTemplateFactory(context);
39
+ const focusTemplate = focusTemplateFactory(context);
40
+ return html(_t || (_t = _`
41
+ <template
42
+ aria-checked="${0}"
43
+ aria-disabled="${0}"
44
+ aria-expanded="${0}"
45
+ @keydown="${0}"
46
+ @click="${0}"
47
+ @mouseover="${0}"
48
+ @mouseout="${0}"
49
+ >
50
+ <div class="${0}">
51
+
52
+ ${0}
53
+ ${0}
54
+
55
+ ${0}
56
+
57
+ ${0}
58
+
59
+ ${0}
60
+
61
+ <span class="text">
62
+ ${0}
63
+ </span>
64
+ </div>
65
+ </template>
66
+ `), x => x.role !== MenuItemRole.menuitem ? x.checked : void 0, x => x.disabled, x => x.expanded, (x, c) => x.handleMenuItemKeyDown(c.event), (x, c) => x.handleMenuItemClick(c.event), (x, c) => x.handleMouseOver(c.event), (x, c) => x.handleMouseOut(c.event), getClasses, when(x => x.hasSubmenu, html(_t2 || (_t2 = _`
67
+ <div
68
+ class="expand-collapse-glyph-container"
69
+ >
70
+ <span class="expand-collapse">
71
+ <slot name="expand-collapse-indicator">
72
+ ${0}
73
+ </slot>
74
+ </span>
75
+ </div>
76
+ `), definition.expandCollapseGlyph || '')), () => focusTemplate, when(x => x.role === MenuItemRole.menuitemcheckbox, html(_t3 || (_t3 = _`${0}`), x => affixIconTemplate(x.checked ? 'checkbox-checked-line' : 'checkbox-unchecked-line'))), when(x => x.role === MenuItemRole.menuitemradio, html(_t4 || (_t4 = _`${0}`), x => affixIconTemplate(x.checked ? 'radio-checked-line' : 'radio-unchecked-line'))), when(x => x.role === MenuItemRole.menuitem && x.icon, html(_t5 || (_t5 = _`${0}`), x => affixIconTemplate(x.icon))), x => x.text);
77
+ };
78
+
79
+ const prefix = getPrefix(import.meta.url);
80
+ const vividMenuItem = MenuItem.compose({
81
+ baseName: 'menu-item',
82
+ template: MenuItemTemplate,
83
+ styles: css_248z
84
+ });
85
+ (async () => {
86
+ await loadComponentsModules(['icon', 'focus'], prefix);
87
+ designSystem.withPrefix(prefix).register(vividMenuItem());
88
+ })();
89
+
90
+ export { vividMenuItem };
package/nav/index.js ADDED
@@ -0,0 +1,17 @@
1
+ import { F as FoundationElement, h as html, d as designSystem, g as getPrefix } from '../shared/index.js';
2
+
3
+ class Nav extends FoundationElement {}
4
+
5
+ let _ = t => t,
6
+ _t;
7
+ const NavTemplate = () => html(_t || (_t = _`
8
+ <nav><slot></slot></nav>
9
+ `));
10
+
11
+ const vividNav = Nav.compose({
12
+ baseName: 'nav',
13
+ template: NavTemplate
14
+ });
15
+ designSystem.withPrefix(getPrefix(import.meta.url)).register(vividNav());
16
+
17
+ export { vividNav };
@@ -0,0 +1,80 @@
1
+ import '../shared/es.promise.resolve.js';
2
+ import { F as FoundationElement, Y as __classPrivateFieldGet, _ as __decorate, a as attr, b as __metadata, h as html, g as getPrefix, d as designSystem } from '../shared/index.js';
3
+ import { l as loadComponentsModules } from '../shared/index2.js';
4
+ import { b as AffixIcon, a as affixIconTemplateFactory } from '../shared/affix.js';
5
+ import { a as applyMixins } from '../shared/apply-mixins.js';
6
+ import { f as focusTemplateFactory } from '../shared/focus.js';
7
+ import { w as when } from '../shared/when.js';
8
+ import { r as ref } from '../shared/ref.js';
9
+ import '../shared/icon.js';
10
+ import '../shared/string-trim.js';
11
+ import '../shared/_has.js';
12
+ import '../shared/focus2.js';
13
+
14
+ var css_248z = "/**\n * Do not edit directly\n * Generated on Sun, 04 Dec 2022 15:37:45 GMT\n */\n.control {\n position: relative;\n display: flex;\n box-sizing: border-box;\n align-items: center;\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 cursor: pointer;\n font: var(--vvd-typography-base);\n gap: 12px;\n hyphens: auto;\n inline-size: 100%;\n min-block-size: calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density, 0), 2)));\n padding-inline: 16px;\n text-decoration: none;\n vertical-align: middle;\n word-break: break-word;\n}\n.control {\n --_appearance-color-text: var(--_connotation-color-primary);\n --_appearance-color-fill: transparent;\n --_appearance-color-outline: transparent;\n}\n.control:where(:hover, .hover):where(:not(:disabled, .disabled, .readonly)) {\n --_appearance-color-text: var(--_connotation-color-primary);\n --_appearance-color-fill: var(--_connotation-color-faint);\n --_appearance-color-outline: transparent;\n}\n.control:where(:active, .active):where(:not(:disabled, .disabled)) {\n --_appearance-color-text: var(--_connotation-color-primary);\n --_appearance-color-fill: var(--_connotation-color-soft);\n --_appearance-color-outline: transparent;\n}\n.control:where(.selected, [aria-current]):where(:not(:disabled, .disabled, :hover, .hover)) {\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 {\n --_connotation-color-primary: var(--vvd-color-canvas-text);\n --_connotation-color-primary-text: var(--vvd-color-canvas);\n --_connotation-color-faint: var(--vvd-color-neutral-50);\n --_connotation-color-soft: var(--vvd-color-neutral-100);\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 .toggleIcon {\n margin-inline-start: auto;\n}\n\n.control:not(:focus-visible) .focus-indicator {\n display: none;\n}\n\n.icon {\n font-size: 20px;\n}\n.control:not(.icon-only) .icon {\n color: var(--vvd-color-neutral-600);\n}\n\n.content {\n border-inline-start: 1px solid var(--vvd-color-neutral-200);\n margin-inline-start: 20px;\n padding-inline-start: 12px;\n}\n\ndetails > summary {\n list-style: none;\n}\n\ndetails > summary::-webkit-details-marker {\n display: none;\n}";
15
+
16
+ var _NavDisclosure_onToggle;
17
+ class NavDisclosure extends FoundationElement {
18
+ constructor() {
19
+ super(...arguments);
20
+ this.open = false;
21
+ _NavDisclosure_onToggle.set(this, () => {
22
+ this.open = this.details.open;
23
+ this.$emit('toggle');
24
+ });
25
+ }
26
+ connectedCallback() {
27
+ super.connectedCallback();
28
+ this.details.addEventListener('toggle', __classPrivateFieldGet(this, _NavDisclosure_onToggle, "f"));
29
+ this.details.open = this.open;
30
+ }
31
+ disconnectedCallback() {
32
+ super.disconnectedCallback();
33
+ this.details.removeEventListener('toggle', __classPrivateFieldGet(this, _NavDisclosure_onToggle, "f"));
34
+ }
35
+ }
36
+ _NavDisclosure_onToggle = new WeakMap();
37
+ __decorate([attr, __metadata("design:type", String)], NavDisclosure.prototype, "label", void 0);
38
+ __decorate([attr({
39
+ mode: 'boolean'
40
+ }), __metadata("design:type", Object)], NavDisclosure.prototype, "open", void 0);
41
+ applyMixins(NavDisclosure, AffixIcon);
42
+
43
+ let _ = t => t,
44
+ _t,
45
+ _t2,
46
+ _t3;
47
+ const NavDisclosureTemplate = context => {
48
+ const affixIconTemplate = affixIconTemplateFactory(context);
49
+ const focusTemplate = focusTemplateFactory(context);
50
+ return html(_t || (_t = _`<details class="base" ${0} ?open=${0}>
51
+ <summary class="control"
52
+ role="button"
53
+ aria-controls="disclosure-content"
54
+ aria-expanded="${0}"
55
+ >
56
+ ${0}
57
+ ${0}
58
+ ${0}
59
+ ${0}
60
+ ${0}
61
+ </summary>
62
+ <div class="content" id="disclosure-content">
63
+ <slot></slot>
64
+ </div>
65
+ </details>
66
+ `), ref('details'), x => x.open, x => x.open, x => affixIconTemplate(x.icon), x => x.label, when(x => x.open, html(_t2 || (_t2 = _`<vwc-icon class="toggleIcon" name='chevron-up-solid'></vwc-icon>`))), when(x => !x.open, html(_t3 || (_t3 = _`<vwc-icon class="toggleIcon" name='chevron-down-solid'></vwc-icon>`))), () => focusTemplate);
67
+ };
68
+
69
+ const prefix = getPrefix(import.meta.url);
70
+ const vividNavDisclosure = NavDisclosure.compose({
71
+ baseName: 'nav-disclosure',
72
+ template: NavDisclosureTemplate,
73
+ styles: css_248z
74
+ });
75
+ (async () => {
76
+ await loadComponentsModules(['icon', 'focus'], prefix);
77
+ designSystem.withPrefix(prefix).register(vividNavDisclosure());
78
+ })();
79
+
80
+ export { vividNavDisclosure };
@@ -0,0 +1,44 @@
1
+ import '../shared/es.promise.resolve.js';
2
+ import { h as html, g as getPrefix, d as designSystem } from '../shared/index.js';
3
+ import { l as loadComponentsModules } from '../shared/index2.js';
4
+ import { b as AffixIcon } from '../shared/affix.js';
5
+ import { T as TextAnchor } from '../shared/text-anchor.js';
6
+ import { a as applyMixins } from '../shared/apply-mixins.js';
7
+ import { t as textAnchorTemplate } from '../shared/text-anchor.template.js';
8
+ import '../shared/icon.js';
9
+ import '../shared/string-trim.js';
10
+ import '../shared/_has.js';
11
+ import '../shared/anchor.js';
12
+ import '../shared/aria-global.js';
13
+ import '../shared/start-end.js';
14
+ import '../shared/ref.js';
15
+ import '../shared/focus.js';
16
+ import '../shared/focus2.js';
17
+ import '../shared/class-names.js';
18
+
19
+ var css_248z = "/**\n * Do not edit directly\n * Generated on Sun, 04 Dec 2022 15:37:45 GMT\n */\n.control {\n position: relative;\n display: inline-flex;\n box-sizing: border-box;\n align-items: center;\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 gap: 12px;\n hyphens: auto;\n inline-size: 100%;\n min-block-size: calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density, 0), 2)));\n text-decoration: none;\n vertical-align: middle;\n word-break: break-word;\n}\n.control {\n --_appearance-color-text: var(--_connotation-color-primary);\n --_appearance-color-fill: transparent;\n --_appearance-color-outline: transparent;\n}\n.control:where(:hover, .hover):where(:not(:disabled, .disabled, .readonly)) {\n --_appearance-color-text: var(--_connotation-color-primary);\n --_appearance-color-fill: var(--_connotation-color-faint);\n --_appearance-color-outline: transparent;\n}\n.control:where(:active, .active):where(:not(:disabled, .disabled)) {\n --_appearance-color-text: var(--_connotation-color-primary);\n --_appearance-color-fill: var(--_connotation-color-soft);\n --_appearance-color-outline: transparent;\n}\n.control:where(.selected, [aria-current]):where(:not(:disabled, .disabled, :hover, .hover)) {\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(.selected, [aria-current]):where(:hover, .hover) {\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 {\n --_connotation-color-primary: var(--vvd-color-canvas-text);\n --_connotation-color-primary-text: var(--vvd-color-canvas);\n --_connotation-color-primary-increment: var(--vvd-color-neutral-800);\n --_connotation-color-faint: var(--vvd-color-neutral-50);\n --_connotation-color-soft: var(--vvd-color-neutral-100);\n}\n@supports selector(:focus-visible) {\n .control:focus {\n outline: none;\n }\n}\n.control.icon-only {\n display: flex;\n block-size: calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density, 0), 2)));\n inline-size: calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density, 0), 2)));\n place-content: center;\n}\n.control:not(.icon-only) {\n padding-inline: 16px;\n}\n\n.control:not(:focus-visible) .focus-indicator {\n display: none;\n}\n\n.icon {\n font-size: 20px;\n}\n.control:not(.icon-only) .icon {\n color: var(--vvd-color-neutral-600);\n}";
20
+
21
+ class NavItem extends TextAnchor {}
22
+ applyMixins(NavItem, AffixIcon);
23
+
24
+ let _ = t => t,
25
+ _t;
26
+ const NavItemTemplate = (context, definition) => html(_t || (_t = _`
27
+ ${0}
28
+ `), textAnchorTemplate(context));
29
+
30
+ const prefix = getPrefix(import.meta.url);
31
+ const vividNavItem = NavItem.compose({
32
+ baseName: 'nav-item',
33
+ template: NavItemTemplate,
34
+ styles: css_248z,
35
+ shadowOptions: {
36
+ delegatesFocus: true
37
+ }
38
+ });
39
+ (async () => {
40
+ await loadComponentsModules(['icon', 'focus'], prefix);
41
+ designSystem.withPrefix(prefix).register(vividNavItem());
42
+ })();
43
+
44
+ export { vividNavItem };
package/note/index.js ADDED
@@ -0,0 +1,59 @@
1
+ import '../shared/es.promise.resolve.js';
2
+ import { F as FoundationElement, _ as __decorate, a as attr, b as __metadata, h as html, g as getPrefix, d as designSystem } from '../shared/index.js';
3
+ import { l as loadComponentsModules } from '../shared/index2.js';
4
+ import { b as AffixIcon } from '../shared/affix.js';
5
+ import '../shared/focus2.js';
6
+ import '../shared/icon.js';
7
+ import { a as applyMixins } from '../shared/apply-mixins.js';
8
+ import { C as Connotation } from '../shared/enums.js';
9
+ import { w as when } from '../shared/when.js';
10
+ import { c as classNames } from '../shared/class-names.js';
11
+ import '../shared/string-trim.js';
12
+ import '../shared/_has.js';
13
+
14
+ var css_248z = "/**\n * Do not edit directly\n * Generated on Sun, 04 Dec 2022 15:37:45 GMT\n */\n.base {\n display: flex;\n align-items: stretch;\n padding: 20px;\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}\n.base.connotation-success {\n --_connotation-color-primary: var(--vvd-color-success-500);\n --_connotation-color-intermediate: var(--vvd-color-success-500);\n --_connotation-color-backdrop: var(--vvd-color-success-50);\n}\n.base.connotation-information {\n --_connotation-color-primary: var(--vvd-color-information-500);\n --_connotation-color-intermediate: var(--vvd-color-information-500);\n --_connotation-color-backdrop: var(--vvd-color-information-50);\n}\n.base.connotation-alert {\n --_connotation-color-primary: var(--vvd-color-alert-500);\n --_connotation-color-intermediate: var(--vvd-color-alert-500);\n --_connotation-color-backdrop: var(--vvd-color-alert-50);\n}\n.base.connotation-warning {\n --_connotation-color-primary: var(--vvd-color-warning-300);\n --_connotation-color-intermediate: var(--vvd-color-warning-500);\n --_connotation-color-backdrop: var(--vvd-color-warning-50);\n}\n.base:not(.connotation-success, .connotation-information, .connotation-alert, .connotation-warning) {\n --_connotation-color-primary: var(--vvd-color-announcement-500);\n --_connotation-color-intermediate: var(--vvd-color-announcement-500);\n --_connotation-color-backdrop: var(--vvd-color-announcement-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@supports (contain: content) {\n .base {\n contain: content;\n }\n}\n@supports not (contain: content) {\n .base {\n overflow: hidden;\n }\n}\n\n.icon {\n align-self: flex-start;\n color: var(--_appearance-color-outline);\n font-size: 24px;\n margin-inline-end: 16px;\n}\n\n.text {\n display: flex;\n min-height: 24px;\n flex: 1;\n flex-direction: column;\n justify-content: center;\n gap: 4px;\n text-align: start;\n}\n.text .headline {\n font: var(--vvd-typography-base-bold);\n}\n.text .message {\n font: var(--vvd-typography-base);\n}";
15
+
16
+ class Note extends FoundationElement {}
17
+ __decorate([attr, __metadata("design:type", String)], Note.prototype, "headline", void 0);
18
+ __decorate([attr, __metadata("design:type", String)], Note.prototype, "connotation", void 0);
19
+ applyMixins(Note, AffixIcon);
20
+
21
+ let _ = t => t,
22
+ _t,
23
+ _t2,
24
+ _t3;
25
+ const connotationIconMap = new Map([[Connotation.Information, 'info-solid'], [Connotation.Announcement, 'megaphone-solid'], [Connotation.Success, 'check-circle-solid'], [Connotation.Warning, 'warning-solid'], [Connotation.Alert, 'error-solid']]);
26
+ const getClasses = ({
27
+ connotation
28
+ }) => classNames('base', `connotation-${connotation}`);
29
+ function getHeaderTemplate() {
30
+ return html(_t || (_t = _`<div class="headline">${0}</div>`), x => x.headline);
31
+ }
32
+ function getIconType(note) {
33
+ return note.icon ? note.icon : note.connotation ? connotationIconMap.get(note.connotation) : 'megaphone-solid';
34
+ }
35
+ function getIconTemplate() {
36
+ return html(_t2 || (_t2 = _`<vwc-icon class="icon" name="${0}"></vwc-icon>`), getIconType);
37
+ }
38
+ const NoteTemplate = () => html(_t3 || (_t3 = _`
39
+ <div class="${0}">
40
+ ${0}
41
+ <div class="text">
42
+ ${0}
43
+ <slot class="message"></slot>
44
+ </div>
45
+ </div>
46
+ `), getClasses, getIconTemplate(), when(x => x.headline, getHeaderTemplate()));
47
+
48
+ const prefix = getPrefix(import.meta.url);
49
+ const vividNote = Note.compose({
50
+ baseName: 'note',
51
+ template: NoteTemplate,
52
+ styles: css_248z
53
+ });
54
+ (async () => {
55
+ await loadComponentsModules(['icon'], prefix);
56
+ designSystem.withPrefix(prefix).register(vividNote());
57
+ })();
58
+
59
+ export { vividNote };