@vonage/vivid 3.25.0 → 3.26.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 (120) hide show
  1. package/accordion/index.js +0 -1
  2. package/accordion-item/index.js +0 -1
  3. package/alert/index.js +0 -1
  4. package/avatar/index.js +0 -1
  5. package/badge/index.js +0 -1
  6. package/banner/index.js +0 -1
  7. package/breadcrumb-item/index.js +0 -1
  8. package/button/index.js +0 -1
  9. package/card/index.js +0 -1
  10. package/checkbox/index.js +0 -1
  11. package/combobox/index.js +0 -1
  12. package/custom-elements.json +35 -1
  13. package/data-grid/index.js +7 -2
  14. package/dialog/index.js +0 -1
  15. package/empty-state/index.js +0 -1
  16. package/fab/index.js +0 -1
  17. package/icon/index.js +0 -1
  18. package/index.js +27 -29
  19. package/lib/components.d.ts +0 -2
  20. package/lib/data-grid/data-grid-cell.d.ts +14 -1
  21. package/lib/data-grid/data-grid.options.d.ts +7 -0
  22. package/listbox/index.js +56 -11
  23. package/menu/index.js +2 -3
  24. package/menu-item/index.js +1 -2
  25. package/nav/index.js +1 -1
  26. package/nav-disclosure/index.js +1 -2
  27. package/nav-item/index.js +1 -2
  28. package/note/index.js +1 -2
  29. package/number-field/index.js +1 -2
  30. package/option/index.js +0 -1
  31. package/package.json +1 -1
  32. package/pagination/index.js +1 -2
  33. package/popup/index.js +0 -1
  34. package/progress/index.js +1 -1
  35. package/radio/index.js +1 -1
  36. package/radio-group/index.js +1 -1
  37. package/select/index.js +1 -2
  38. package/shared/definition.js +1 -1
  39. package/shared/definition10.js +1 -1
  40. package/shared/definition11.js +1 -1
  41. package/shared/definition12.js +1 -1
  42. package/shared/definition14.js +1 -1
  43. package/shared/definition15.js +1 -1
  44. package/shared/definition16.js +2 -2
  45. package/shared/definition17.js +1 -1
  46. package/shared/definition18.js +1 -1
  47. package/shared/definition19.js +1 -1
  48. package/shared/definition2.js +1 -1
  49. package/shared/definition21.js +1 -1
  50. package/shared/definition22.js +68 -21
  51. package/shared/definition23.js +1 -1
  52. package/shared/definition24.js +1 -1
  53. package/shared/definition25.js +1 -1
  54. package/shared/definition26.js +1 -1
  55. package/shared/definition27.js +1 -1
  56. package/shared/definition29.js +368 -48
  57. package/shared/definition30.js +301 -296
  58. package/shared/definition31.js +14 -376
  59. package/shared/definition32.js +70 -13
  60. package/shared/definition33.js +25 -66
  61. package/shared/definition34.js +39 -27
  62. package/shared/definition35.js +431 -31
  63. package/shared/definition36.js +214 -430
  64. package/shared/definition37.js +70 -209
  65. package/shared/definition38.js +33 -81
  66. package/shared/definition39.js +423 -32
  67. package/shared/definition4.js +1 -1
  68. package/shared/definition40.js +586 -358
  69. package/shared/definition41.js +73 -648
  70. package/shared/definition42.js +584 -70
  71. package/shared/definition43.js +81 -538
  72. package/shared/definition44.js +52 -127
  73. package/shared/definition45.js +16 -56
  74. package/shared/definition46.js +485 -17
  75. package/shared/definition47.js +99 -477
  76. package/shared/definition48.js +19 -114
  77. package/shared/definition49.js +276 -19
  78. package/shared/definition5.js +1 -1
  79. package/shared/definition50.js +89 -245
  80. package/shared/definition51.js +627 -118
  81. package/shared/definition52.js +86 -601
  82. package/shared/definition53.js +68 -112
  83. package/shared/definition54.js +294 -69
  84. package/shared/definition6.js +1 -1
  85. package/shared/definition7.js +1 -1
  86. package/shared/definition8.js +1 -1
  87. package/shared/definition9.js +1 -1
  88. package/shared/es.object.assign.js +1 -1
  89. package/shared/es.regexp.to-string.js +1 -1
  90. package/shared/es.string.includes.js +1 -1
  91. package/shared/form-elements.js +1 -1
  92. package/shared/icon.js +17 -13
  93. package/shared/index.js +1 -1
  94. package/shared/patterns/form-elements/form-elements.d.ts +4 -4
  95. package/shared/string-trim.js +1 -1
  96. package/shared/text-field.js +1 -1
  97. package/shared/to-string.js +1 -1
  98. package/side-drawer/index.js +1 -1
  99. package/slider/index.js +1 -1
  100. package/styles/core/all.css +1 -1
  101. package/styles/core/theme.css +1 -1
  102. package/styles/core/typography.css +1 -1
  103. package/styles/tokens/theme-dark.css +4 -4
  104. package/styles/tokens/theme-light.css +4 -4
  105. package/switch/index.js +1 -2
  106. package/tab/index.js +1 -2
  107. package/tab-panel/index.js +1 -1
  108. package/tabs/index.js +3 -4
  109. package/tag/index.js +1 -2
  110. package/tag-group/index.js +1 -1
  111. package/text-anchor/index.js +0 -1
  112. package/text-area/index.js +1 -2
  113. package/text-field/index.js +1 -2
  114. package/toggletip/index.js +1 -2
  115. package/tooltip/index.js +1 -2
  116. package/tree-item/index.js +1 -2
  117. package/tree-view/index.js +1 -1
  118. package/vivid.api.json +0 -191
  119. package/shared/definition55.js +0 -305
  120. package/shared/engine-is-node.js +0 -8
@@ -1,383 +1,21 @@
1
- import { F as FoundationElement, Y as DOM, _ as __decorate, a as attr, o as observable, b as __metadata, h as html, r as registerFactory } from './index.js';
2
- import { i as iconRegistries } from './definition3.js';
3
- import { f as focusRegistries } from './definition4.js';
4
- import './es.object.assign.js';
5
- import { b as AffixIcon, a as affixIconTemplateFactory } from './affix.js';
6
- import { S as StartEnd } from './start-end.js';
7
- import { D as Direction, g as getDirection } from './direction.js';
8
- import { a as applyMixins } from './apply-mixins.js';
9
- import { i as keyArrowLeft, h as keyArrowRight, e as keySpace, d as keyEnter } from './key-codes.js';
10
- import { f as focusTemplateFactory } from './focus2.js';
11
- import { w as when } from './when.js';
12
- import { s as slotted } from './slotted.js';
13
- import { c as classNames } from './class-names.js';
1
+ import { F as FoundationElement, h as html, r as registerFactory } from './index.js';
14
2
 
15
- /**
16
- * Menu items roles.
17
- * @public
18
- */
19
- const MenuItemRole$1 = {
20
- /**
21
- * The menu item has a "menuitem" role
22
- */
23
- menuitem: "menuitem",
24
- /**
25
- * The menu item has a "menuitemcheckbox" role
26
- */
27
- menuitemcheckbox: "menuitemcheckbox",
28
- /**
29
- * The menu item has a "menuitemradio" role
30
- */
31
- menuitemradio: "menuitemradio",
32
- };
33
- /**
34
- * @internal
35
- */
36
- const roleForMenuItem = {
37
- [MenuItemRole$1.menuitem]: "menuitem",
38
- [MenuItemRole$1.menuitemcheckbox]: "menuitemcheckbox",
39
- [MenuItemRole$1.menuitemradio]: "menuitemradio",
40
- };
3
+ var css_248z = "nav {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}";
41
4
 
42
- /**
43
- * A Switch Custom HTML Element.
44
- * Implements {@link https://www.w3.org/TR/wai-aria-1.1/#menuitem | ARIA menuitem }, {@link https://www.w3.org/TR/wai-aria-1.1/#menuitemcheckbox | ARIA menuitemcheckbox}, or {@link https://www.w3.org/TR/wai-aria-1.1/#menuitemradio | ARIA menuitemradio }.
45
- *
46
- * @slot checked-indicator - The checked indicator
47
- * @slot radio-indicator - The radio indicator
48
- * @slot start - Content which can be provided before the menu item content
49
- * @slot end - Content which can be provided after the menu item content
50
- * @slot - The default slot for menu item content
51
- * @slot expand-collapse-indicator - The expand/collapse indicator
52
- * @slot submenu - Used to nest menu's within menu items
53
- * @csspart input-container - The element representing the visual checked or radio indicator
54
- * @csspart checkbox - The element wrapping the `menuitemcheckbox` indicator
55
- * @csspart radio - The element wrapping the `menuitemradio` indicator
56
- * @csspart content - The element wrapping the menu item content
57
- * @csspart expand-collapse-glyph-container - The element wrapping the expand collapse element
58
- * @csspart expand-collapse - The expand/collapse element
59
- * @csspart submenu-region - The container for the submenu, used for positioning
60
- * @fires expanded-change - Fires a custom 'expanded-change' event when the expanded state changes
61
- * @fires change - Fires a custom 'change' event when a non-submenu item with a role of `menuitemcheckbox`, `menuitemradio`, or `menuitem` is invoked
62
- *
63
- * @public
64
- */
65
- class MenuItem$1 extends FoundationElement {
66
- constructor() {
67
- super(...arguments);
68
- /**
69
- * The role of the element.
70
- *
71
- * @public
72
- * @remarks
73
- * HTML Attribute: role
74
- */
75
- this.role = MenuItemRole$1.menuitem;
76
- /**
77
- * @internal
78
- */
79
- this.hasSubmenu = false;
80
- /**
81
- * Track current direction to pass to the anchored region
82
- *
83
- * @internal
84
- */
85
- this.currentDirection = Direction.ltr;
86
- this.focusSubmenuOnLoad = false;
87
- /**
88
- * @internal
89
- */
90
- this.handleMenuItemKeyDown = (e) => {
91
- if (e.defaultPrevented) {
92
- return false;
93
- }
94
- switch (e.key) {
95
- case keyEnter:
96
- case keySpace:
97
- this.invoke();
98
- return false;
99
- case keyArrowRight:
100
- //open/focus on submenu
101
- this.expandAndFocus();
102
- return false;
103
- case keyArrowLeft:
104
- //close submenu
105
- if (this.expanded) {
106
- this.expanded = false;
107
- this.focus();
108
- return false;
109
- }
110
- }
111
- return true;
112
- };
113
- /**
114
- * @internal
115
- */
116
- this.handleMenuItemClick = (e) => {
117
- if (e.defaultPrevented || this.disabled) {
118
- return false;
119
- }
120
- this.invoke();
121
- return false;
122
- };
123
- /**
124
- * @internal
125
- */
126
- this.submenuLoaded = () => {
127
- if (!this.focusSubmenuOnLoad) {
128
- return;
129
- }
130
- this.focusSubmenuOnLoad = false;
131
- if (this.hasSubmenu) {
132
- this.submenu.focus();
133
- this.setAttribute("tabindex", "-1");
134
- }
135
- };
136
- /**
137
- * @internal
138
- */
139
- this.handleMouseOver = (e) => {
140
- if (this.disabled || !this.hasSubmenu || this.expanded) {
141
- return false;
142
- }
143
- this.expanded = true;
144
- return false;
145
- };
146
- /**
147
- * @internal
148
- */
149
- this.handleMouseOut = (e) => {
150
- if (!this.expanded || this.contains(document.activeElement)) {
151
- return false;
152
- }
153
- this.expanded = false;
154
- return false;
155
- };
156
- /**
157
- * @internal
158
- */
159
- this.expandAndFocus = () => {
160
- if (!this.hasSubmenu) {
161
- return;
162
- }
163
- this.focusSubmenuOnLoad = true;
164
- this.expanded = true;
165
- };
166
- /**
167
- * @internal
168
- */
169
- this.invoke = () => {
170
- if (this.disabled) {
171
- return;
172
- }
173
- switch (this.role) {
174
- case MenuItemRole$1.menuitemcheckbox:
175
- this.checked = !this.checked;
176
- break;
177
- case MenuItemRole$1.menuitem:
178
- // update submenu
179
- this.updateSubmenu();
180
- if (this.hasSubmenu) {
181
- this.expandAndFocus();
182
- }
183
- else {
184
- this.$emit("change");
185
- }
186
- break;
187
- case MenuItemRole$1.menuitemradio:
188
- if (!this.checked) {
189
- this.checked = true;
190
- }
191
- break;
192
- }
193
- };
194
- /**
195
- * Gets the submenu element if any
196
- *
197
- * @internal
198
- */
199
- this.updateSubmenu = () => {
200
- this.submenu = this.domChildren().find((element) => {
201
- return element.getAttribute("role") === "menu";
202
- });
203
- this.hasSubmenu = this.submenu === undefined ? false : true;
204
- };
205
- }
206
- expandedChanged(oldValue) {
207
- if (this.$fastController.isConnected) {
208
- if (this.submenu === undefined) {
209
- return;
210
- }
211
- if (this.expanded === false) {
212
- this.submenu.collapseExpandedItem();
213
- }
214
- else {
215
- this.currentDirection = getDirection(this);
216
- }
217
- this.$emit("expanded-change", this, { bubbles: false });
218
- }
219
- }
220
- checkedChanged(oldValue, newValue) {
221
- if (this.$fastController.isConnected) {
222
- this.$emit("change");
223
- }
224
- }
225
- /**
226
- * @internal
227
- */
228
- connectedCallback() {
229
- super.connectedCallback();
230
- DOM.queueUpdate(() => {
231
- this.updateSubmenu();
232
- });
233
- if (!this.startColumnCount) {
234
- this.startColumnCount = 1;
235
- }
236
- this.observer = new MutationObserver(this.updateSubmenu);
237
- }
238
- /**
239
- * @internal
240
- */
241
- disconnectedCallback() {
242
- super.disconnectedCallback();
243
- this.submenu = undefined;
244
- if (this.observer !== undefined) {
245
- this.observer.disconnect();
246
- this.observer = undefined;
247
- }
248
- }
249
- /**
250
- * get an array of valid DOM children
251
- */
252
- domChildren() {
253
- return Array.from(this.children).filter(child => !child.hasAttribute("hidden"));
254
- }
255
- }
256
- __decorate([
257
- attr({ mode: "boolean" })
258
- ], MenuItem$1.prototype, "disabled", void 0);
259
- __decorate([
260
- attr({ mode: "boolean" })
261
- ], MenuItem$1.prototype, "expanded", void 0);
262
- __decorate([
263
- observable
264
- ], MenuItem$1.prototype, "startColumnCount", void 0);
265
- __decorate([
266
- attr
267
- ], MenuItem$1.prototype, "role", void 0);
268
- __decorate([
269
- attr({ mode: "boolean" })
270
- ], MenuItem$1.prototype, "checked", void 0);
271
- __decorate([
272
- observable
273
- ], MenuItem$1.prototype, "submenuRegion", void 0);
274
- __decorate([
275
- observable
276
- ], MenuItem$1.prototype, "hasSubmenu", void 0);
277
- __decorate([
278
- observable
279
- ], MenuItem$1.prototype, "currentDirection", void 0);
280
- __decorate([
281
- observable
282
- ], MenuItem$1.prototype, "submenu", void 0);
283
- applyMixins(MenuItem$1, StartEnd);
284
-
285
- var css_248z = "/**\n * Do not edit directly\n * Generated on Thu, 20 Jul 2023 11:19:49 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 box-shadow: inset 0 0 0 1px var(--_appearance-color-outline);\n gap: 12px;\n inline-size: 100%;\n padding-block: 2px;\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-300);\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);\n --_appearance-color-fill: var(--_connotation-color-dim);\n --_appearance-color-outline: transparent;\n}\n.base:where(.selected, [aria-current]):where(:hover, .hover) {\n --_appearance-color-text: var(--_connotation-color-primary);\n --_appearance-color-fill: var(--_connotation-color-pale);\n --_appearance-color-outline: transparent;\n}\n.base {\n /* @cssprop [--vvd-menu-item-accent-primary=var(--vvd-color-canvas-text)] */\n --_connotation-color-primary: var(--vvd-menu-item-accent-primary, var(--vvd-color-canvas-text));\n /* @cssprop [--vvd-menu-item-accent-primary-text=var(--vvd-color-canvas)] */\n --_connotation-color-primary-text: var(--vvd-menu-item-accent-primary-text, var(--vvd-color-canvas));\n /* @cssprop [--vvd-menu-item-accent-primary-increment=var(--vvd-color-neutral-800)] */\n --_connotation-color-primary-increment: var(--vvd-menu-item-accent-primary-increment, var(--vvd-color-neutral-800));\n /* @cssprop [--vvd-menu-item-accent-faint=var(--vvd-color-neutral-50)] */\n --_connotation-color-faint: var(--vvd-menu-item-accent-faint, var(--vvd-color-neutral-50));\n /* @cssprop [--vvd-menu-item-accent-soft=var(--vvd-color-neutral-100)] */\n --_connotation-color-soft: var(--vvd-menu-item-accent-soft, var(--vvd-color-neutral-100));\n /* @cssprop [--vvd-menu-item-accent-pale=var(--vvd-color-neutral-300)] */\n --_connotation-color-pale: var(--vvd-menu-item-accent-pale, var(--vvd-color-neutral-300));\n /* @cssprop [--vvd-menu-item-accent-dim=var(--vvd-color-neutral-200)] */\n --_connotation-color-dim: var(--vvd-menu-item-accent-dim, var(--vvd-color-neutral-200));\n}\n.base:not(.two-lines) {\n min-block-size: calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density, 0), 2)));\n}\n.base.two-lines {\n min-block-size: calc(calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density, 0), 2))) + calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density, 0), 2) - 16)));\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\n.focus-indicator {\n border-radius: 6px;\n}\n:host(:not(:focus-visible)) .focus-indicator {\n display: none;\n}\n\n.icon {\n flex-shrink: 0;\n font-size: calc(calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density, 0), 2))) / 2);\n line-height: 1;\n}\n\n.action,\n.decorative {\n display: flex;\n place-content: center;\n}\n\n.action {\n color: var(--_appearance-color-text);\n}\n.base.trailing .action {\n order: 1;\n margin-inline-start: auto;\n}\n\n.base:not(.disabled) .decorative {\n color: var(--vvd-color-neutral-600);\n}\n.base.disabled .decorative {\n color: var(--vvd-color-neutral-200);\n}\n.base.has-meta .decorative {\n order: 1;\n margin-inline-start: auto;\n}\n\n.text {\n display: flex;\n overflow: hidden;\n flex-direction: column;\n}\n\n.text-primary,\n.text-secondary {\n /* stylelint-disable value-no-vendor-prefix */\n display: -webkit-box;\n /* stylelint-enable value-no-vendor-prefix */\n overflow: hidden;\n -webkit-box-orient: vertical;\n color: var(--_appearance-color-text);\n font: var(--vvd-typography-base);\n}\n\n.text-primary {\n -webkit-line-clamp: var(--text-primary-line-clamp, 1);\n}\n.base.two-lines .text-primary {\n font: var(--vvd-typography-base-bold);\n}\n\n.text-secondary {\n -webkit-line-clamp: var(--text-secondary-line-clamp, 1);\n}\n.base.two-lines .text-secondary {\n color: var(--vvd-color-neutral-600);\n}";
286
-
287
- const MenuItemRole = Object.assign(Object.assign({}, MenuItemRole$1), {
288
- 'presentation': 'presentation'
289
- });
290
- class MenuItem extends MenuItem$1 {}
291
- __decorate([attr, __metadata("design:type", String)], MenuItem.prototype, "text", void 0);
292
- __decorate([attr({
293
- attribute: 'text-secondary'
294
- }), __metadata("design:type", String)], MenuItem.prototype, "textSecondary", void 0);
295
- __decorate([observable, __metadata("design:type", Array)], MenuItem.prototype, "metaSlottedContent", void 0);
296
- applyMixins(MenuItem, AffixIcon);
5
+ class Nav extends FoundationElement {}
297
6
 
298
7
  let _ = t => t,
299
- _t,
300
- _t2,
301
- _t3,
302
- _t4,
303
- _t5,
304
- _t6,
305
- _t7,
306
- _t8,
307
- _t9;
308
- const getCheckIcon = (affixIconTemplate, x, iconType) => {
309
- const iconStatus = x.checked ? 'checked' : 'unchecked';
310
- const icon = `${iconType}-${iconStatus}-line`;
311
- return affixIconTemplate(icon);
312
- };
313
- const getClasses = ({
314
- disabled,
315
- checked,
316
- expanded,
317
- role,
318
- text,
319
- textSecondary,
320
- icon,
321
- metaSlottedContent
322
- }) => classNames('base', ['disabled', Boolean(disabled)], ['selected', role !== MenuItemRole.menuitem && Boolean(checked)], ['trailing', role !== MenuItemRole.menuitem && Boolean(icon)], ['expanded', Boolean(expanded)], ['item-checkbox', role === MenuItemRole.menuitemcheckbox], ['item-radio', role === MenuItemRole.menuitemradio], ['two-lines', Boolean(text === null || text === void 0 ? void 0 : text.length) && Boolean(textSecondary === null || textSecondary === void 0 ? void 0 : textSecondary.length)], ['has-meta', Boolean(metaSlottedContent === null || metaSlottedContent === void 0 ? void 0 : metaSlottedContent.length)]);
323
- function handleClick(x, {
324
- event
325
- }) {
326
- x.handleMenuItemClick(event);
327
- return x.role === MenuItemRole.presentation;
328
- }
329
- const MenuItemTemplate = (context, definition) => {
330
- const affixIconTemplate = affixIconTemplateFactory(context);
331
- const focusTemplate = focusTemplateFactory(context);
332
- return html(_t || (_t = _`
333
- <template
334
- aria-checked="${0}"
335
- aria-disabled="${0}"
336
- aria-expanded="${0}"
337
- @keydown="${0}"
338
- @click="${0}"
339
- @mouseover="${0}"
340
- @mouseout="${0}"
341
- >
342
- <div class="${0}">
343
-
344
- ${0}
345
- ${0}
346
- ${0}
347
- ${0}
348
-
349
- ${0}
350
-
351
- ${0}
352
-
353
- ${0}
354
-
355
-
356
-
357
- </div>
358
- </template>
359
- `), x => x.role !== MenuItemRole.menuitem ? x.checked : void 0, x => x.disabled, x => x.expanded, (x, c) => x.handleMenuItemKeyDown(c.event), handleClick, (x, c) => x.handleMouseOver(c.event), (x, c) => x.handleMouseOut(c.event), getClasses, when(x => x.hasSubmenu, html(_t2 || (_t2 = _`
360
- <div
361
- class="expand-collapse-glyph-container"
362
- >
363
- <span class="expand-collapse">
364
- <slot name="expand-collapse-indicator">
365
- ${0}
366
- </slot>
367
- </span>
368
- </div>
369
- `), definition.expandCollapseGlyph || '')), () => focusTemplate, when(x => x.role !== MenuItemRole.menuitemcheckbox && x.role !== MenuItemRole.menuitemradio, html(_t3 || (_t3 = _`<slot name="meta" ${0}></slot>`), slotted('metaSlottedContent'))), when(x => x.role === MenuItemRole.menuitemcheckbox, html(_t4 || (_t4 = _`<span class="action">${0}</span>`), x => getCheckIcon(affixIconTemplate, x, 'checkbox'))), when(x => x.role === MenuItemRole.menuitemradio, html(_t5 || (_t5 = _`<span class="action">${0}</span>`), x => getCheckIcon(affixIconTemplate, x, 'radio'))), when(x => x.icon, html(_t6 || (_t6 = _`<span class="decorative">${0}</span>`), x => affixIconTemplate(x.icon))), when(x => x.text || x.textSecondary, html(_t7 || (_t7 = _`<span class="text">
370
- ${0}
371
- ${0}
372
- </span>`), when(x => x.text, html(_t8 || (_t8 = _`<span class="text-primary">${0}</span>`), x => x.text)), when(x => x.textSecondary, html(_t9 || (_t9 = _`<span class="text-secondary">${0}</span>`), x => x.textSecondary)))));
373
- };
374
-
375
- const menuItemDefinition = MenuItem.compose({
376
- baseName: 'menu-item',
377
- template: MenuItemTemplate,
8
+ _t;
9
+ const NavTemplate = () => html(_t || (_t = _`
10
+ <nav><slot></slot></nav>
11
+ `));
12
+
13
+ const navDefinition = Nav.compose({
14
+ baseName: 'nav',
15
+ template: NavTemplate,
378
16
  styles: css_248z
379
17
  });
380
- const menuItemRegistries = [menuItemDefinition(), ...iconRegistries, ...focusRegistries];
381
- const registerMenuItem = registerFactory(menuItemRegistries);
18
+ const navRegistries = [navDefinition()];
19
+ const registerNav = registerFactory(navRegistries);
382
20
 
383
- export { MenuItem$1 as M, MenuItemRole$1 as a, registerMenuItem as b, menuItemDefinition as c, menuItemRegistries as m, roleForMenuItem as r };
21
+ export { navRegistries as a, navDefinition as n, registerNav as r };
@@ -1,21 +1,78 @@
1
- import { F as FoundationElement, h as html, r as registerFactory } from './index.js';
1
+ import { F as FoundationElement, V 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';
5
+ import { a as applyMixins } from './apply-mixins.js';
6
+ import { I as Icon } from './icon.js';
7
+ import { f as focusTemplateFactory } from './focus2.js';
8
+ import { w as when } from './when.js';
9
+ import { r as ref } from './ref.js';
2
10
 
3
- var css_248z = "nav {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}";
11
+ var css_248z = "/**\n * Do not edit directly\n * Generated on Tue, 25 Jul 2023 07:38:24 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 /* @cssprop [--vvd-nav-disclosure-accent-primary=var(--vvd-color-canvas-text)] */\n --_connotation-color-primary: var(--vvd-nav-disclosure-accent-primary, var(--vvd-color-canvas-text));\n /* @cssprop [--vvd-nav-disclosure-accent-primary-text=var(--vvd-color-canvas)] */\n --_connotation-color-primary-text: var(--vvd-nav-disclosure-accent-primary-text, var(--vvd-color-canvas));\n /* @cssprop [--vvd-nav-disclosure-accent-faint=var(--vvd-color-neutral-50)] */\n --_connotation-color-faint: var(--vvd-nav-disclosure-accent-faint, var(--vvd-color-neutral-50));\n /* @cssprop [--vvd-nav-disclosure-accent-soft=var(--vvd-color-neutral-100)] */\n --_connotation-color-soft: var(--vvd-nav-disclosure-accent-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 line-height: 1;\n}\n.control:not(.icon-only) .icon {\n color: var(--vvd-color-neutral-600);\n}\n\n.content {\n display: flex;\n flex-direction: column;\n border-inline-start: 1px solid var(--vvd-color-neutral-200);\n gap: 4px;\n margin-block: 4px;\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}";
4
12
 
5
- class Nav extends FoundationElement {}
13
+ var _NavDisclosure_onToggle;
14
+ class NavDisclosure extends FoundationElement {
15
+ constructor() {
16
+ super(...arguments);
17
+ this.open = false;
18
+ _NavDisclosure_onToggle.set(this, () => {
19
+ this.open = this.details.open;
20
+ this.$emit('toggle', undefined, {
21
+ bubbles: false
22
+ });
23
+ });
24
+ }
25
+ connectedCallback() {
26
+ super.connectedCallback();
27
+ this.details.addEventListener('toggle', __classPrivateFieldGet(this, _NavDisclosure_onToggle, "f"));
28
+ this.details.open = this.open;
29
+ }
30
+ disconnectedCallback() {
31
+ super.disconnectedCallback();
32
+ this.details.removeEventListener('toggle', __classPrivateFieldGet(this, _NavDisclosure_onToggle, "f"));
33
+ }
34
+ }
35
+ _NavDisclosure_onToggle = new WeakMap();
36
+ __decorate([attr, __metadata("design:type", String)], NavDisclosure.prototype, "label", void 0);
37
+ __decorate([attr({
38
+ mode: 'boolean'
39
+ }), __metadata("design:type", Object)], NavDisclosure.prototype, "open", void 0);
40
+ applyMixins(NavDisclosure, AffixIcon);
6
41
 
7
42
  let _ = t => t,
8
- _t;
9
- const NavTemplate = () => html(_t || (_t = _`
10
- <nav><slot></slot></nav>
11
- `));
43
+ _t,
44
+ _t2,
45
+ _t3;
46
+ const NavDisclosureTemplate = context => {
47
+ const affixIconTemplate = affixIconTemplateFactory(context);
48
+ const focusTemplate = focusTemplateFactory(context);
49
+ const iconTag = context.tagFor(Icon);
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
+ <slot name="meta"></slot>
59
+ ${0}
60
+ ${0}
61
+ ${0}
62
+ </summary>
63
+ <div class="content" id="disclosure-content">
64
+ <slot></slot>
65
+ </div>
66
+ </details>
67
+ `), ref('details'), x => x.open, x => x.open, x => affixIconTemplate(x.icon), x => x.label, when(x => x.open, html(_t2 || (_t2 = _`<${0} class="toggleIcon" name='chevron-up-solid'></${0}>`), iconTag, iconTag)), when(x => !x.open, html(_t3 || (_t3 = _`<${0} class="toggleIcon" name='chevron-down-solid'></${0}>`), iconTag, iconTag)), () => focusTemplate);
68
+ };
12
69
 
13
- const navDefinition = Nav.compose({
14
- baseName: 'nav',
15
- template: NavTemplate,
70
+ const navDisclosureDefinition = NavDisclosure.compose({
71
+ baseName: 'nav-disclosure',
72
+ template: NavDisclosureTemplate,
16
73
  styles: css_248z
17
74
  });
18
- const navRegistries = [navDefinition()];
19
- const registerNav = registerFactory(navRegistries);
75
+ const navDisclosureRegistries = [navDisclosureDefinition(), ...iconRegistries, ...focusRegistries];
76
+ const registerNavDisclosure = registerFactory(navDisclosureRegistries);
20
77
 
21
- export { navRegistries as a, navDefinition as n, registerNav as r };
78
+ export { navDisclosureRegistries as a, navDisclosureDefinition as n, registerNavDisclosure as r };
@@ -1,78 +1,37 @@
1
- import { F as FoundationElement, V as __classPrivateFieldGet, _ as __decorate, a as attr, b as __metadata, h as html, r as registerFactory } from './index.js';
1
+ import { h as html, r as registerFactory } from './index.js';
2
2
  import { i as iconRegistries } from './definition3.js';
3
3
  import { f as focusRegistries } from './definition4.js';
4
- import { b as AffixIcon, a as affixIconTemplateFactory } from './affix.js';
4
+ import { b as AffixIcon } from './affix.js';
5
+ import { T as TextAnchor } from './text-anchor.js';
5
6
  import { a as applyMixins } from './apply-mixins.js';
6
- import { I as Icon } from './icon.js';
7
- import { f as focusTemplateFactory } from './focus2.js';
8
- import { w as when } from './when.js';
9
- import { r as ref } from './ref.js';
7
+ import { t as textAnchorTemplate } from './text-anchor.template.js';
10
8
 
11
- var css_248z = "/**\n * Do not edit directly\n * Generated on Thu, 20 Jul 2023 11:19:49 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 /* @cssprop [--vvd-nav-disclosure-accent-primary=var(--vvd-color-canvas-text)] */\n --_connotation-color-primary: var(--vvd-nav-disclosure-accent-primary, var(--vvd-color-canvas-text));\n /* @cssprop [--vvd-nav-disclosure-accent-primary-text=var(--vvd-color-canvas)] */\n --_connotation-color-primary-text: var(--vvd-nav-disclosure-accent-primary-text, var(--vvd-color-canvas));\n /* @cssprop [--vvd-nav-disclosure-accent-faint=var(--vvd-color-neutral-50)] */\n --_connotation-color-faint: var(--vvd-nav-disclosure-accent-faint, var(--vvd-color-neutral-50));\n /* @cssprop [--vvd-nav-disclosure-accent-soft=var(--vvd-color-neutral-100)] */\n --_connotation-color-soft: var(--vvd-nav-disclosure-accent-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 line-height: 1;\n}\n.control:not(.icon-only) .icon {\n color: var(--vvd-color-neutral-600);\n}\n\n.content {\n display: flex;\n flex-direction: column;\n border-inline-start: 1px solid var(--vvd-color-neutral-200);\n gap: 4px;\n margin-block: 4px;\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}";
9
+ var css_248z = "/**\n * Do not edit directly\n * Generated on Tue, 25 Jul 2023 07:38:24 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 /* @cssprop [--vvd-nav-item-accent-primary=var(--vvd-color-canvas-text)] */\n --_connotation-color-primary: var(--vvd-nav-item-accent-primary, var(--vvd-color-canvas-text));\n /* @cssprop [--vvd-nav-item-accent-primary-text=var(--vvd-color-canvas)] */\n --_connotation-color-primary-text: var(--vvd-nav-item-accent-primary-text, var(--vvd-color-canvas));\n /* @cssprop [--vvd-nav-item-accent-primary-increment=var(--vvd-color-neutral-800)] */\n --_connotation-color-primary-increment: var(--vvd-nav-item-accent-primary-increment, var(--vvd-color-neutral-800));\n /* @cssprop [--vvd-nav-item-accent-faint=var(--vvd-color-neutral-50)] */\n --_connotation-color-faint: var(--vvd-nav-item-accent-faint, var(--vvd-color-neutral-50));\n /* @cssprop [--vvd-nav-item-accent-soft=var(--vvd-color-neutral-100)] */\n --_connotation-color-soft: var(--vvd-nav-item-accent-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 line-height: 1;\n}";
12
10
 
13
- var _NavDisclosure_onToggle;
14
- class NavDisclosure extends FoundationElement {
15
- constructor() {
16
- super(...arguments);
17
- this.open = false;
18
- _NavDisclosure_onToggle.set(this, () => {
19
- this.open = this.details.open;
20
- this.$emit('toggle', undefined, {
21
- bubbles: false
22
- });
23
- });
24
- }
25
- connectedCallback() {
26
- super.connectedCallback();
27
- this.details.addEventListener('toggle', __classPrivateFieldGet(this, _NavDisclosure_onToggle, "f"));
28
- this.details.open = this.open;
29
- }
30
- disconnectedCallback() {
31
- super.disconnectedCallback();
32
- this.details.removeEventListener('toggle', __classPrivateFieldGet(this, _NavDisclosure_onToggle, "f"));
11
+ let _$1 = t => t,
12
+ _t$1;
13
+ class NavItem extends TextAnchor {
14
+ getBodyTemplate() {
15
+ return html(_t$1 || (_t$1 = _$1`<slot name="meta"></slot>`));
33
16
  }
34
17
  }
35
- _NavDisclosure_onToggle = new WeakMap();
36
- __decorate([attr, __metadata("design:type", String)], NavDisclosure.prototype, "label", void 0);
37
- __decorate([attr({
38
- mode: 'boolean'
39
- }), __metadata("design:type", Object)], NavDisclosure.prototype, "open", void 0);
40
- applyMixins(NavDisclosure, AffixIcon);
18
+ applyMixins(NavItem, AffixIcon);
41
19
 
42
20
  let _ = t => t,
43
- _t,
44
- _t2,
45
- _t3;
46
- const NavDisclosureTemplate = context => {
47
- const affixIconTemplate = affixIconTemplateFactory(context);
48
- const focusTemplate = focusTemplateFactory(context);
49
- const iconTag = context.tagFor(Icon);
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
- <slot name="meta"></slot>
59
- ${0}
60
- ${0}
61
- ${0}
62
- </summary>
63
- <div class="content" id="disclosure-content">
64
- <slot></slot>
65
- </div>
66
- </details>
67
- `), ref('details'), x => x.open, x => x.open, x => affixIconTemplate(x.icon), x => x.label, when(x => x.open, html(_t2 || (_t2 = _`<${0} class="toggleIcon" name='chevron-up-solid'></${0}>`), iconTag, iconTag)), when(x => !x.open, html(_t3 || (_t3 = _`<${0} class="toggleIcon" name='chevron-down-solid'></${0}>`), iconTag, iconTag)), () => focusTemplate);
68
- };
21
+ _t;
22
+ const NavItemTemplate = (context, definition) => html(_t || (_t = _`
23
+ ${0}
24
+ `), textAnchorTemplate(context));
69
25
 
70
- const navDisclosureDefinition = NavDisclosure.compose({
71
- baseName: 'nav-disclosure',
72
- template: NavDisclosureTemplate,
73
- styles: css_248z
26
+ const navItemDefinition = NavItem.compose({
27
+ baseName: 'nav-item',
28
+ template: NavItemTemplate,
29
+ styles: css_248z,
30
+ shadowOptions: {
31
+ delegatesFocus: true
32
+ }
74
33
  });
75
- const navDisclosureRegistries = [navDisclosureDefinition(), ...iconRegistries, ...focusRegistries];
76
- const registerNavDisclosure = registerFactory(navDisclosureRegistries);
34
+ const navItemRegistries = [navItemDefinition(), ...iconRegistries, ...focusRegistries];
35
+ const registerNavItem = registerFactory(navItemRegistries);
77
36
 
78
- export { navDisclosureRegistries as a, navDisclosureDefinition as n, registerNavDisclosure as r };
37
+ export { navItemRegistries as a, navItemDefinition as n, registerNavItem as r };