@vonage/vivid 3.0.0-next.2 → 3.0.0-next.22

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 (133) hide show
  1. package/README.md +49 -4
  2. package/accordion/index.js +61 -0
  3. package/accordion-item/index.js +128 -0
  4. package/action-group/index.js +34 -0
  5. package/badge/index.js +27 -22
  6. package/banner/index.js +149 -0
  7. package/breadcrumb/index.js +103 -0
  8. package/breadcrumb-item/index.js +26 -11
  9. package/button/index.js +41 -663
  10. package/calendar/index.js +1550 -0
  11. package/calendar-event/index.js +117 -0
  12. package/card/index.js +134 -0
  13. package/elevation/index.js +8 -15
  14. package/fab/index.js +99 -0
  15. package/focus/index.js +20 -3
  16. package/icon/index.js +40 -5
  17. package/index.d.ts +1 -0
  18. package/index.js +49 -12
  19. package/layout/index.js +5 -5
  20. package/lib/accordion/accordion.d.ts +9 -0
  21. package/lib/accordion/accordion.template.d.ts +4 -0
  22. package/lib/accordion/index.d.ts +2 -0
  23. package/lib/accordion-item/accordion-item.d.ts +13 -0
  24. package/lib/accordion-item/accordion-item.template.d.ts +4 -0
  25. package/lib/accordion-item/index.d.ts +5 -0
  26. package/lib/action-group/action-group.d.ts +9 -0
  27. package/lib/action-group/action-group.template.d.ts +4 -0
  28. package/lib/action-group/index.d.ts +2 -0
  29. package/lib/badge/badge.d.ts +8 -8
  30. package/lib/badge/index.d.ts +1 -1
  31. package/lib/banner/banner.d.ts +20 -0
  32. package/lib/banner/banner.template.d.ts +4 -0
  33. package/lib/banner/index.d.ts +3 -0
  34. package/lib/breadcrumb/breadcrumb.d.ts +3 -0
  35. package/lib/breadcrumb/index.d.ts +2 -0
  36. package/lib/breadcrumb-item/breadcrumb-item.d.ts +3 -3
  37. package/lib/breadcrumb-item/breadcrumb-item.template.d.ts +0 -1
  38. package/lib/breadcrumb-item/index.d.ts +2 -0
  39. package/lib/button/button.d.ts +9 -8
  40. package/lib/button/index.d.ts +2 -19
  41. package/lib/calendar/calendar.d.ts +13 -0
  42. package/lib/calendar/calendar.template.d.ts +4 -0
  43. package/lib/calendar/helpers/calendar.date-functions.d.ts +2 -0
  44. package/lib/calendar/helpers/calendar.event-context.d.ts +6 -0
  45. package/lib/calendar/helpers/calendar.keyboard-interactions.d.ts +9 -0
  46. package/lib/calendar/index.d.ts +2 -0
  47. package/lib/calendar-event/calendar-event.d.ts +14 -0
  48. package/lib/calendar-event/calendar-event.template.d.ts +4 -0
  49. package/lib/calendar-event/index.d.ts +2 -0
  50. package/lib/card/card.d.ts +10 -0
  51. package/lib/card/card.template.d.ts +4 -0
  52. package/lib/card/index.d.ts +4 -0
  53. package/lib/components.d.ts +20 -3
  54. package/lib/elevation/elevation.d.ts +1 -1
  55. package/lib/elevation/index.d.ts +1 -1
  56. package/lib/enums.d.ts +14 -7
  57. package/lib/fab/fab.d.ts +10 -0
  58. package/lib/fab/fab.template.d.ts +4 -0
  59. package/lib/fab/index.d.ts +4 -0
  60. package/lib/focus/index.d.ts +1 -1
  61. package/lib/icon/icon.d.ts +4 -5
  62. package/lib/layout/index.d.ts +1 -1
  63. package/lib/layout/layout.d.ts +3 -3
  64. package/lib/note/index.d.ts +2 -0
  65. package/lib/note/note.d.ts +10 -0
  66. package/lib/note/note.template.d.ts +5 -0
  67. package/lib/popup/index.d.ts +4 -0
  68. package/lib/popup/popup.d.ts +17 -0
  69. package/lib/popup/popup.template.d.ts +4 -0
  70. package/lib/progress/index.d.ts +2 -0
  71. package/lib/progress/progress.d.ts +9 -0
  72. package/lib/progress/progress.template.d.ts +5 -0
  73. package/lib/progress-ring/index.d.ts +2 -0
  74. package/lib/progress-ring/progress-ring.d.ts +7 -0
  75. package/lib/progress-ring/progress-ring.template.d.ts +4 -0
  76. package/lib/side-drawer/index.d.ts +2 -0
  77. package/lib/side-drawer/side-drawer.d.ts +15 -0
  78. package/lib/side-drawer/side-drawer.template.d.ts +4 -0
  79. package/lib/sidenav-item/index.d.ts +1 -0
  80. package/lib/sidenav-item/sidenav-item.d.ts +4 -5
  81. package/lib/text/index.d.ts +2 -0
  82. package/lib/text/text.d.ts +10 -0
  83. package/lib/text/text.template.d.ts +4 -0
  84. package/lib/text-anchor/text-anchor.d.ts +4 -1
  85. package/lib/text-field/index.d.ts +4 -0
  86. package/lib/text-field/text-field.d.ts +21 -0
  87. package/lib/text-field/text-field.template.d.ts +5 -0
  88. package/lib/tooltip/index.d.ts +3 -0
  89. package/lib/tooltip/tooltip.d.ts +8 -0
  90. package/lib/tooltip/tooltip.template.d.ts +4 -0
  91. package/note/index.js +68 -0
  92. package/package.json +37 -6
  93. package/popup/index.js +2111 -0
  94. package/progress/index.js +101 -0
  95. package/progress-ring/index.js +82 -0
  96. package/shared/_has.js +58 -0
  97. package/shared/affix.js +10 -25
  98. package/shared/anchor.js +11 -4
  99. package/shared/aria-global.js +22 -59
  100. package/shared/base-progress.js +70 -0
  101. package/shared/breadcrumb-item.js +25 -0
  102. package/shared/button.js +195 -0
  103. package/shared/calendar-event.js +26 -0
  104. package/shared/enums.js +79 -0
  105. package/shared/es.object.assign.js +69 -0
  106. package/shared/export.js +972 -0
  107. package/shared/focus.js +5 -0
  108. package/shared/focus2.js +11 -0
  109. package/shared/form-associated.js +460 -0
  110. package/shared/icon.js +1389 -0
  111. package/shared/index.js +4940 -1426
  112. package/shared/iterators.js +61 -0
  113. package/shared/object-keys.js +13 -0
  114. package/shared/patterns/affix.d.ts +3 -4
  115. package/shared/patterns/focus.d.ts +3 -0
  116. package/shared/patterns/index.d.ts +1 -0
  117. package/shared/ref.js +41 -0
  118. package/shared/slotted.js +119 -0
  119. package/shared/text-anchor.js +12 -0
  120. package/shared/text-anchor.template.js +18 -20
  121. package/shared/to-string.js +51 -0
  122. package/shared/web.dom-collections.iterator.js +46 -1059
  123. package/shared/when.js +15 -0
  124. package/side-drawer/index.js +8660 -0
  125. package/sidenav-item/index.js +25 -61
  126. package/styles/themes/dark.css +16 -4
  127. package/styles/themes/light.css +16 -4
  128. package/text/index.js +48 -0
  129. package/text-anchor/index.js +13 -2
  130. package/text-field/index.js +398 -0
  131. package/tooltip/index.js +71 -0
  132. package/shared/index2.js +0 -4911
  133. package/shared/index3.js +0 -21
package/README.md CHANGED
@@ -1,7 +1,52 @@
1
- # components
1
+ <div class="home-page-hero">
2
+ <a href="https://github.com/vonage/vivid-3">
3
+ <img src="/vivid-logo.svg" style="" alt="Vivid Logo" width="120">
4
+ </a>
5
+ <h1>Welcome to Vivid</h1>
2
6
 
3
- This library was generated with [Nx](https://nx.dev).
7
+ [![codecov][codecov-shield]][codecov-url]
8
+ [![Contributors][contributors-shield]][contributors-url]
9
+ [![Forks][forks-shield]][forks-url]
10
+ [![Stargazers][stars-shield]][stars-url]
11
+ [![Issues][issues-shield]][issues-url]
12
+ [![Apache 2.0 License][license-shield]][license-url]
4
13
 
5
- ## Running unit tests
6
14
 
7
- Run `nx test components` to execute the unit tests via [Jest](https://jestjs.io).
15
+ <h6>
16
+ Vonage's design system platform targeted to provide </br>incorporated, battery-charged web components.
17
+ </h6>
18
+ <a class="home-page-hero-docs-btn" href="https://vivid.deno.dev"><strong>Explore the docs</strong></a>
19
+ <div class="home-page-hero-docs-links">
20
+ <a href="https://github.com/Vonage/vivid-3/issues/new?assignees=&labels=&template=bug_report.md&title=">Report Bug</a>
21
+ <span>|</span>
22
+ <a href="https://github.com/Vonage/vivid-3/issues/new?assignees=&labels=&template=feature_request.md&title=">Request Feature</a>
23
+ </div>
24
+ </div>
25
+
26
+ ### Installation
27
+
28
+ run:
29
+
30
+ ```bash
31
+ npm install @vonage/vivid
32
+ ```
33
+
34
+ use:
35
+
36
+ ```js
37
+ import '@vonage/vivid/button';
38
+ ```
39
+
40
+ ```html
41
+ <vwc-button label="Click me"></vwc-button>
42
+ ```
43
+
44
+ ## Roadmap
45
+
46
+ [view components status](https://github.com/orgs/Vonage/projects/6)
47
+
48
+ Follow our API planning on the [Vivid project components' view](https://github.com/orgs/Vonage/projects/3/views/13)
49
+
50
+ We publish a _next_ release on every successful merge to main, so you never need to wait for a new stable version to make use of any updates.
51
+
52
+ See the [open issues](https://github.com/vonage/vivid-3/issues) for a full list of proposed features (and known issues).
@@ -0,0 +1,61 @@
1
+ import { F as FoundationElement, _ as __decorate, a as attr, b as __metadata, h as html, d as designSystem } from '../shared/index.js';
2
+ import { s as styleInject } from '../shared/style-inject.es.js';
3
+ import { c as classNames } from '../shared/class-names.js';
4
+
5
+ var css_248z = ".control {\n display: flex;\n flex-direction: column;\n}\n\n::slotted(vwc-accordion-item:not(:only-of-type)) {\n border-bottom: 1px solid var(--vvd-color-neutral-30);\n}";
6
+ styleInject(css_248z);
7
+
8
+ class Accordion extends FoundationElement {
9
+ constructor() {
10
+ super();
11
+ this.accordionItems = undefined;
12
+ this.multi = false;
13
+ this.addEventListener('opened', this.handleOpened);
14
+ }
15
+
16
+ connectedCallback() {
17
+ super.connectedCallback();
18
+ this.accordionItems = this.children;
19
+ }
20
+
21
+ handleOpened(e) {
22
+ if (!this.multi && this.accordionItems) {
23
+ for (let i = 0; i < this.accordionItems.length; i++) {
24
+ if (this.accordionItems[i] !== e.target) {
25
+ this.accordionItems[i].open = false;
26
+ }
27
+ }
28
+ }
29
+ }
30
+
31
+ closeAll() {
32
+ if (this.accordionItems) {
33
+ for (let i = 0; i < this.accordionItems.length; i++) {
34
+ this.accordionItems[i].open = false;
35
+ }
36
+ }
37
+ }
38
+
39
+ }
40
+
41
+ __decorate([attr({
42
+ mode: 'boolean'
43
+ }), __metadata("design:type", Object)], Accordion.prototype, "multi", void 0);
44
+
45
+ let _2 = t => t,
46
+ _t;
47
+
48
+ const getClasses = _ => classNames('control');
49
+
50
+ const AccordionTemplate = () => html(_t || (_t = _2`<div class="${0}">
51
+ <slot></slot>
52
+ </div>`), getClasses);
53
+
54
+ const vividAccordion = Accordion.compose({
55
+ baseName: 'accordion',
56
+ template: AccordionTemplate,
57
+ styles: css_248z
58
+ });
59
+ designSystem.register(vividAccordion());
60
+
61
+ export { vividAccordion };
@@ -0,0 +1,128 @@
1
+ import '../icon/index.js';
2
+ import '../focus/index.js';
3
+ import { F as FoundationElement, _ as __decorate, a as attr, b as __metadata, h as html, d as designSystem } from '../shared/index.js';
4
+ import { s as styleInject } from '../shared/style-inject.es.js';
5
+ import '../shared/web.dom-collections.iterator.js';
6
+ import { A as AffixIconWithTrailing, a as affixIconTemplateFactory } from '../shared/affix.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 { c as classNames } from '../shared/class-names.js';
11
+ import '../shared/icon.js';
12
+ import '../shared/export.js';
13
+ import '../shared/iterators.js';
14
+ import '../shared/to-string.js';
15
+ import '../shared/_has.js';
16
+ import '../shared/focus.js';
17
+ import '../shared/object-keys.js';
18
+
19
+ var css_248z = "/*\n Do not edit directly\n Generated on Wed, 27 Apr 2022 11:58:36 GMT\n*/\n.body {\n font: 400 ultra-condensed 14px / 20px SpeziaWebVariable;\n letter-spacing: 0px;\n text-decoration: none;\n text-transform: none;\n padding: 8px 32px 24px 16px;\n}\n.icon:not(.icon-trailing) .body {\n padding-left: 48px;\n}\n\n.control {\n display: flex;\n flex-direction: column;\n}\n.control:not(.open) .toggle-close,\n.control:not(.open) .body {\n display: none;\n}\n.control.open .toggle-open {\n display: none;\n}\n.control.open .toggle-close {\n display: initial;\n}\n\n.header {\n padding: 0;\n margin: 0;\n}\n\n.button {\n font: 500 condensed 20px / 28px SpeziaWebVariable;\n letter-spacing: 0px;\n text-decoration: none;\n text-transform: none;\n position: relative;\n display: flex;\n width: 100%;\n align-items: center;\n padding: 16px;\n border: 0 none;\n background: transparent;\n cursor: pointer;\n outline: 0 none;\n}\n.button:hover {\n background: var(--vvd-color-neutral-10);\n}\n.button .heading-text {\n flex-grow: 1;\n margin-inline-end: auto;\n text-align: left;\n}\n.button .meta {\n font: 600 ultra-condensed 14px / 20px SpeziaWebVariable;\n letter-spacing: 0px;\n text-decoration: none;\n text-transform: none;\n overflow: hidden;\n max-width: 20%;\n flex-shrink: 0;\n color: var(--vvd-color-neutral-70);\n margin-inline-start: 16px;\n text-align: end;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.button .indicator {\n display: flex;\n}\n.button .indicator vwc-icon,\n.button .indicator slot[name=indicator i]::slotted(vwc-icon) {\n margin-inline-start: 16px;\n}\n.button .icon {\n margin-inline-end: 16px;\n}\n\n/* Icon */\n.icon-trailing .icon {\n order: 1;\n}\n\n.button:not(:focus-visible) > .focus-indicator {\n display: none;\n}";
20
+ styleInject(css_248z);
21
+
22
+ class AccordionItem extends FoundationElement {
23
+ constructor() {
24
+ super(...arguments);
25
+ this.noIndicator = false;
26
+ this.open = false;
27
+ }
28
+
29
+ attributeChangedCallback(name, oldValue, newValue) {
30
+ super.attributeChangedCallback(name, oldValue, newValue);
31
+
32
+ if (name === 'open') {
33
+ newValue === null ? this.emitEvent('closed') : this.emitEvent('opened');
34
+ }
35
+ }
36
+
37
+ emitEvent(name) {
38
+ const init = {
39
+ bubbles: true,
40
+ composed: true
41
+ };
42
+ const ev = new CustomEvent(name, init);
43
+ this.dispatchEvent(ev);
44
+ }
45
+
46
+ }
47
+
48
+ __decorate([attr, __metadata("design:type", String)], AccordionItem.prototype, "heading", void 0);
49
+
50
+ __decorate([attr({
51
+ attribute: 'heading-level'
52
+ }), __metadata("design:type", Number)], AccordionItem.prototype, "headingLevel", void 0);
53
+
54
+ __decorate([attr({
55
+ mode: 'boolean',
56
+ attribute: 'no-indicator'
57
+ }), __metadata("design:type", Object)], AccordionItem.prototype, "noIndicator", void 0);
58
+
59
+ __decorate([attr, __metadata("design:type", String)], AccordionItem.prototype, "meta", void 0);
60
+
61
+ __decorate([attr({
62
+ mode: 'boolean'
63
+ }), __metadata("design:type", Object)], AccordionItem.prototype, "open", void 0);
64
+
65
+ applyMixins(AccordionItem, AffixIconWithTrailing);
66
+
67
+ let _ = t => t,
68
+ _t,
69
+ _t2,
70
+ _t3,
71
+ _t4,
72
+ _t5;
73
+ const PANEL = 'panel';
74
+
75
+ const getClasses = ({
76
+ open,
77
+ iconTrailing,
78
+ icon,
79
+ noIndicator
80
+ }) => classNames('control', ['open', open], ['icon', Boolean(icon)], ['icon-trailing', iconTrailing], ['no-indicator', noIndicator]);
81
+
82
+ const AccordionItemTemplate = context => html(_t || (_t = _`
83
+ <div class="${0}">
84
+ ${0}
85
+ <div class="body" id="${0}" role="region" aria-labelledby="header">
86
+ <slot></slot>
87
+ </div>
88
+ </div>
89
+ `), getClasses, x => renderPanelHeader(context, x.headingLevel), PANEL);
90
+
91
+ const renderPanelHeader = (context, headingLevel) => {
92
+ const header = headingLevel ? 'h' + headingLevel : 'h3';
93
+ return html(_t2 || (_t2 = _`
94
+ <${0} class="header">
95
+ ${0}
96
+ </${0}>
97
+ `), header, renderHeaderButton(context), header);
98
+ };
99
+
100
+ const renderHeaderButton = context => {
101
+ const affixIconTemplate = affixIconTemplateFactory(context);
102
+ const focusTemplate = focusTemplateFactory(context);
103
+ return html(_t3 || (_t3 = _`
104
+ <button class="button" id="header" @click=${0}
105
+ ?aria-expanded=${0}
106
+ aria-controls="${0}">
107
+ ${0}
108
+ ${0}
109
+ <span class="heading-text">${0}</span>
110
+ ${0}
111
+ <span class="indicator">
112
+ ${0}
113
+ </span>
114
+ </button>
115
+ `), x => x.open = !x.open, x => x.open, PANEL, () => focusTemplate, x => affixIconTemplate(x.icon), x => x.heading, when(x => x.meta, html(_t4 || (_t4 = _`<span class="meta">${0}</span>`), x => x.meta)), when(x => !x.noIndicator && !x.iconTrailing, html(_t5 || (_t5 = _`
116
+ <vwc-icon class="toggle-open" type='chevron-down-solid'></vwc-icon>
117
+ <vwc-icon class="toggle-close" type='chevron-up-solid'></vwc-icon>
118
+ `))));
119
+ };
120
+
121
+ const vividAccordionItem = AccordionItem.compose({
122
+ baseName: 'accordion-item',
123
+ template: AccordionItemTemplate,
124
+ styles: css_248z
125
+ });
126
+ designSystem.register(vividAccordionItem());
127
+
128
+ export { vividAccordionItem };
@@ -0,0 +1,34 @@
1
+ import { F as FoundationElement, _ as __decorate, a as attr, b as __metadata, h as html, d as designSystem } from '../shared/index.js';
2
+ import { s as styleInject } from '../shared/style-inject.es.js';
3
+ import { c as classNames } from '../shared/class-names.js';
4
+
5
+ var css_248z = ".base {\n display: inline-flex;\n box-sizing: border-box;\n align-items: center;\n padding: 4px;\n background-color: var(--_appearance-color-fill);\n box-shadow: 0 0 0 1px var(--_appearance-color-outline);\n color: var(--_appearance-color-text);\n column-gap: 4px;\n vertical-align: middle;\n}\n.base {\n --_appearance-color-text: var(--vvd-color-on-canvas);\n --_appearance-color-fill: var(--vvd-color-canvas);\n --_appearance-color-outline: var(--vvd-color-neutral-50);\n}\n.base.appearance-ghost {\n --_appearance-color-text: var(--_connotation-color-primary);\n --_appearance-color-fill: transaprent;\n --_appearance-color-outline: transaprent;\n}\n\n/* Shape */\n.base:not(.shape-pill) {\n border-radius: 6px;\n}\n\n.base.shape-pill {\n border-radius: 24px;\n}\n\n::slotted([role=separator]) {\n width: 1px;\n align-self: stretch;\n background-color: var(--vvd-color-neutral-30);\n margin-block: 4px;\n}";
6
+ styleInject(css_248z);
7
+
8
+ class ActionGroup extends FoundationElement {}
9
+
10
+ __decorate([attr, __metadata("design:type", String)], ActionGroup.prototype, "shape", void 0);
11
+
12
+ __decorate([attr, __metadata("design:type", String)], ActionGroup.prototype, "appearance", void 0);
13
+
14
+ let _ = t => t,
15
+ _t;
16
+
17
+ const getClasses = ({
18
+ appearance,
19
+ shape
20
+ }) => classNames('base', [`appearance-${appearance}`, Boolean(appearance)], [`shape-${shape}`, Boolean(shape)]);
21
+
22
+ const ActionGroupTemplate = () => html(_t || (_t = _`
23
+ <div class="${0}">
24
+ <slot></slot>
25
+ </div>`), getClasses);
26
+
27
+ const vividActionGroup = ActionGroup.compose({
28
+ baseName: 'action-group',
29
+ template: ActionGroupTemplate,
30
+ styles: css_248z
31
+ });
32
+ designSystem.register(vividActionGroup());
33
+
34
+ export { vividActionGroup };
package/badge/index.js CHANGED
@@ -1,18 +1,19 @@
1
- import '../shared/index.js';
2
- import { F as FoundationElement, _ as __decorate, a as attr, b as __metadata, h as html, d as designSystem } from '../shared/index2.js';
3
- import '../shared/web.dom-collections.iterator.js';
4
- import { P as PrefixOrSuffix, p as prefixOrSuffixTemplate } from '../shared/affix.js';
1
+ import '../icon/index.js';
2
+ import { F as FoundationElement, _ as __decorate, a as attr, b as __metadata, h as html, d as designSystem } from '../shared/index.js';
3
+ import { A as AffixIconWithTrailing, a as affixIconTemplateFactory } from '../shared/affix.js';
5
4
  import { a as applyMixins } from '../shared/apply-mixins.js';
6
5
  import { s as styleInject } from '../shared/style-inject.es.js';
7
6
  import { c as classNames } from '../shared/class-names.js';
7
+ import '../shared/icon.js';
8
+ import '../shared/export.js';
9
+ import '../shared/iterators.js';
10
+ import '../shared/to-string.js';
11
+ import '../shared/_has.js';
12
+ import '../shared/when.js';
13
+ import '../shared/web.dom-collections.iterator.js';
14
+ import '../shared/object-keys.js';
8
15
 
9
- class Badge extends FoundationElement {
10
- constructor() {
11
- super(...arguments);
12
- this.text = '';
13
- }
14
-
15
- }
16
+ class Badge extends FoundationElement {}
16
17
 
17
18
  __decorate([attr, __metadata("design:type", String)], Badge.prototype, "connotation", void 0);
18
19
 
@@ -20,13 +21,13 @@ __decorate([attr, __metadata("design:type", String)], Badge.prototype, "shape",
20
21
 
21
22
  __decorate([attr, __metadata("design:type", String)], Badge.prototype, "appearance", void 0);
22
23
 
23
- __decorate([attr, __metadata("design:type", String)], Badge.prototype, "size", void 0);
24
+ __decorate([attr, __metadata("design:type", String)], Badge.prototype, "density", void 0);
24
25
 
25
- __decorate([attr, __metadata("design:type", Object)], Badge.prototype, "text", void 0);
26
+ __decorate([attr, __metadata("design:type", String)], Badge.prototype, "text", void 0);
26
27
 
27
- applyMixins(Badge, PrefixOrSuffix);
28
+ applyMixins(Badge, AffixIconWithTrailing);
28
29
 
29
- var css_248z = "/*\n Do not edit directly\n Generated on Sun, 23 Jan 2022 11:15:05 GMT\n*/\n.control.appearance-filled, .control:not(.appearance-outlined):not(.appearance-soft) {\n --appearance-color-fill: var(--connotation);\n --appearance-color-text: var(--on-connotation);\n}\n\n.control.appearance-outlined {\n --appearance-color-fill: transparent;\n --appearance-color-outline: var(--connotation);\n --appearance-color-text: var(--connotation-contrast);\n}\n\n.control.appearance-soft {\n --appearance-color-fill: var(--connotation-soft);\n --appearance-color-text: var(--connotation-contrast);\n}\n\n.control {\n font: 600 ultra-condensed 12px / 16px SpeziaWebVariable;\n letter-spacing: 0px;\n text-decoration: none;\n text-transform: none;\n display: inline-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 color: var(--appearance-color-text);\n column-gap: 8px;\n vertical-align: middle;\n}\n.control:not(.connotation-cta):not(.connotation-success):not(.connotation-alert):not(.connotation-warning):not(.connotation-info) {\n --connotation: var(--vvd-color-primary);\n --on-connotation: var(--vvd-color-on-primary);\n --connotation-soft: var(--vvd-color-neutral-20);\n --connotation-contrast: var(--vvd-color-primary);\n}\n\n.control.connotation-cta {\n --connotation: var(--vvd-color-cta);\n --on-connotation: var(--vvd-color-on-cta);\n --connotation-soft: var(--vvd-color-cta-20);\n --connotation-contrast: var(--vvd-color-cta-90);\n}\n\n.control.connotation-success {\n --connotation: var(--vvd-color-success);\n --on-connotation: var(--vvd-color-on-success);\n --connotation-soft: var(--vvd-color-success-20);\n --connotation-contrast: var(--vvd-color-success-90);\n}\n\n.control.connotation-alert {\n --connotation: var(--vvd-color-alert);\n --on-connotation: var(--vvd-color-on-alert);\n --connotation-soft: var(--vvd-color-alert-20);\n --connotation-contrast: var(--vvd-color-alert-90);\n}\n\n.control.connotation-warning {\n --connotation: var(--vvd-color-warning);\n --on-connotation: var(--vvd-color-on-warning);\n --connotation-soft: var(--vvd-color-warning-20);\n --connotation-contrast: var(--vvd-color-warning-90);\n}\n\n.control.connotation-info {\n --connotation: var(--vvd-color-info);\n --on-connotation: var(--vvd-color-on-info);\n --connotation-soft: var(--vvd-color-info-20);\n --connotation-contrast: var(--vvd-color-info-90);\n}\n\n/* Size */\n.control:not(.size-base-small):not(.size-base-large) {\n block-size: 24px;\n padding-inline: 10px;\n}\n\n.control.size-base-small {\n block-size: 20px;\n padding-inline: 8px;\n}\n\n.control.size-base-large {\n block-size: 28px;\n padding-inline: 12px;\n}\n\n/* Shape */\n.control:not(.shape-pill) {\n border-radius: 4px;\n}\n\n.control.shape-pill {\n border-radius: 14px;\n}\n\n/* Icon */\n.icon.icon-trailing {\n order: 1;\n}";
30
+ var css_248z = "/*\n Do not edit directly\n Generated on Wed, 27 Apr 2022 11:58:36 GMT\n*/\n.control {\n font: 600 ultra-condensed 12px / 16px SpeziaWebVariable;\n letter-spacing: 0px;\n text-decoration: none;\n text-transform: none;\n display: inline-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 color: var(--_appearance-color-text);\n column-gap: 8px;\n vertical-align: middle;\n}\n.control.connotation-cta {\n --_connotation-color-primary: var(--vvd-color-cta);\n --_connotation-color-on-primary: var(--vvd-color-on-cta);\n --_connotation-color-intermediate: var(--vvd-color-cta);\n --_connotation-color-soft: var(--vvd-color-cta-20);\n --_connotation-color-contrast: var(--vvd-color-cta-90);\n}\n.control.connotation-success {\n --_connotation-color-primary: var(--vvd-color-success);\n --_connotation-color-on-primary: var(--vvd-color-on-success);\n --_connotation-color-intermediate: var(--vvd-color-success);\n --_connotation-color-soft: var(--vvd-color-success-20);\n --_connotation-color-contrast: var(--vvd-color-success-90);\n}\n.control.connotation-alert {\n --_connotation-color-primary: var(--vvd-color-alert);\n --_connotation-color-on-primary: var(--vvd-color-on-alert);\n --_connotation-color-intermediate: var(--vvd-color-alert);\n --_connotation-color-soft: var(--vvd-color-alert-20);\n --_connotation-color-contrast: var(--vvd-color-alert-90);\n}\n.control.connotation-warning {\n --_connotation-color-primary: var(--vvd-color-warning);\n --_connotation-color-on-primary: var(--vvd-color-on-warning);\n --_connotation-color-intermediate: var(--vvd-color-warning);\n --_connotation-color-soft: var(--vvd-color-warning-20);\n --_connotation-color-contrast: var(--vvd-color-warning-90);\n}\n.control.connotation-info {\n --_connotation-color-primary: var(--vvd-color-info);\n --_connotation-color-on-primary: var(--vvd-color-on-info);\n --_connotation-color-intermediate: var(--vvd-color-info);\n --_connotation-color-soft: var(--vvd-color-info-20);\n --_connotation-color-contrast: var(--vvd-color-info-90);\n}\n.control:not(.connotation-cta, .connotation-success, .connotation-alert, .connotation-warning, .connotation-info) {\n --_connotation-color-primary: var(--vvd-color-on-canvas);\n --_connotation-color-on-primary: var(--vvd-color-canvas);\n --_connotation-color-intermediate: var(--vvd-color-neutral);\n --_connotation-color-soft: var(--vvd-color-neutral-20);\n --_connotation-color-contrast: var(--vvd-color-neutral-90);\n}\n.control {\n --_appearance-color-text: var(--_connotation-color-on-primary);\n --_appearance-color-fill: var(--_connotation-color-primary);\n --_appearance-color-outline: transaprent;\n}\n.control.appearance-duotone {\n --_appearance-color-text: var(--_connotation-color-contrast);\n --_appearance-color-fill: transaprent;\n --_appearance-color-outline: var(--_connotation-color-intermediate);\n}\n.control.appearance-subtle {\n --_appearance-color-text: var(--_connotation-color-contrast);\n --_appearance-color-fill: var(--_connotation-color-soft);\n --_appearance-color-outline: transaprent;\n}\n\n/* Size */\n.control:not(.density-condensed):not(.density-extended) {\n block-size: 24px;\n padding-inline: 10px;\n}\n\n.control.density-condensed {\n block-size: 20px;\n padding-inline: 8px;\n}\n\n.control.density-extended {\n block-size: 28px;\n padding-inline: 12px;\n}\n\n/* Shape */\n.control:not(.shape-pill) {\n border-radius: 4px;\n}\n\n.control.shape-pill {\n border-radius: 14px;\n}\n\n/* Icon */\n.icon-trailing .icon {\n order: 1;\n}";
30
31
  styleInject(css_248z);
31
32
 
32
33
  let _ = t => t,
@@ -36,20 +37,24 @@ const getClasses = ({
36
37
  connotation,
37
38
  appearance,
38
39
  shape,
39
- size
40
- }) => classNames('control', [`connotation-${connotation}`, Boolean(connotation)], [`appearance-${appearance}`, Boolean(appearance)], [`shape-${shape}`, Boolean(shape)], [`size-${size}`, Boolean(size)]);
40
+ density,
41
+ iconTrailing
42
+ }) => classNames('control', [`connotation-${connotation}`, Boolean(connotation)], [`appearance-${appearance}`, Boolean(appearance)], [`shape-${shape}`, Boolean(shape)], [`density-${density}`, Boolean(density)], ['icon-trailing', iconTrailing]);
41
43
 
42
- const badgeTemplate = context => html(_t || (_t = _`
44
+ const badgeTemplate = context => {
45
+ const affixIconTemplate = affixIconTemplateFactory(context);
46
+ return html(_t || (_t = _`
43
47
  <span class="${0}">
44
48
  ${0}
45
49
  ${0}
46
- </span>`), getClasses, () => prefixOrSuffixTemplate(context), x => x.text);
50
+ </span>`), getClasses, x => affixIconTemplate(x.icon), x => x.text);
51
+ };
47
52
 
48
- const VIVIDBadge = Badge.compose({
53
+ const vividBadge = Badge.compose({
49
54
  baseName: 'badge',
50
55
  template: badgeTemplate,
51
56
  styles: css_248z
52
57
  });
53
- designSystem.register(VIVIDBadge());
58
+ designSystem.register(vividBadge());
54
59
 
55
- export { VIVIDBadge };
60
+ export { vividBadge };
@@ -0,0 +1,149 @@
1
+ import '../button/index.js';
2
+ import { F as FoundationElement, c as __classPrivateFieldGet, _ as __decorate, a as attr, b as __metadata, h as html, d as designSystem } from '../shared/index.js';
3
+ import { s as styleInject } from '../shared/style-inject.es.js';
4
+ import '../shared/web.dom-collections.iterator.js';
5
+ import { C as Connotation } from '../shared/enums.js';
6
+ import { b as AffixIcon, a as affixIconTemplateFactory } from '../shared/affix.js';
7
+ import { a as applyMixins } from '../shared/apply-mixins.js';
8
+ import { w as when } from '../shared/when.js';
9
+ import { c as classNames } from '../shared/class-names.js';
10
+ import '../icon/index.js';
11
+ import '../shared/icon.js';
12
+ import '../shared/export.js';
13
+ import '../shared/iterators.js';
14
+ import '../shared/to-string.js';
15
+ import '../shared/_has.js';
16
+ import '../focus/index.js';
17
+ import '../shared/focus.js';
18
+ import '../shared/button.js';
19
+ import '../shared/form-associated.js';
20
+ import '../shared/aria-global.js';
21
+ import '../shared/ref.js';
22
+ import '../shared/focus2.js';
23
+ import '../shared/object-keys.js';
24
+
25
+ var css_248z = "/*\n Do not edit directly\n Generated on Wed, 27 Apr 2022 11:58:36 GMT\n*/\n.control {\n overflow: hidden;\n max-height: 160px;\n background-color: var(--_appearance-color-fill);\n color: var(--_appearance-color-text);\n transition: max-height var(--transition-delay, 200ms);\n}\n.control.connotation-success {\n --_connotation-color-primary: var(--vvd-color-success);\n --_connotation-color-on-primary: var(--vvd-color-on-success);\n}\n.control.connotation-alert {\n --_connotation-color-primary: var(--vvd-color-alert);\n --_connotation-color-on-primary: var(--vvd-color-on-alert);\n}\n.control.connotation-announcement {\n --_connotation-color-primary: var(--vvd-color-announcement);\n --_connotation-color-on-primary: var(--vvd-color-on-announcement);\n}\n.control.connotation-warning {\n --_connotation-color-primary: var(--vvd-color-warning);\n --_connotation-color-on-primary: var(--vvd-color-on-warning);\n}\n.control:not(.connotation-success, .connotation-alert, .connotation-announcement, .connotation-warning) {\n --_connotation-color-primary: var(--vvd-color-info);\n --_connotation-color-on-primary: var(--vvd-color-on-info);\n}\n.control {\n --_appearance-color-text: var(--_connotation-color-on-primary);\n --_appearance-color-fill: var(--_connotation-color-primary);\n --_appearance-color-outline: transaprent;\n}\n.control.removing {\n max-height: 0;\n}\n.control > .header {\n font: 600 ultra-condensed 14px / 20px SpeziaWebVariable;\n letter-spacing: 0px;\n text-decoration: none;\n text-transform: none;\n display: flex;\n min-height: 60px;\n align-items: center;\n justify-content: flex-start;\n}\n.control > .header > .user-content {\n display: flex;\n flex: 1 0;\n align-items: center;\n justify-content: center;\n padding-inline: 16px;\n}\n.control > .header > .user-content > .icon {\n flex: 0 0 auto;\n font-size: 20px;\n margin-inline-end: 15px;\n}\n.control > .header > .user-content > .action-items {\n display: inline-block;\n flex: 0 0 auto;\n padding-inline-start: 15px;\n}\n.control > .header > .user-content > .message {\n padding: 20px 0;\n}\n.control > .header > .dismiss-button {\n --vvd-icon-button-color: inherit;\n flex: 0 0 auto;\n margin-inline-end: 8px;\n}";
26
+ styleInject(css_248z);
27
+
28
+ var _Banner_handleRemoveEnd, _Banner_closeOnKeyDown;
29
+ const connotationIconMap = new Map([[Connotation.Info, 'info-solid'], [Connotation.Announcement, 'megaphone-solid'], [Connotation.Success, 'check-circle-solid'], [Connotation.Warning, 'warning-solid'], [Connotation.Alert, 'error-solid']]);
30
+
31
+ const defaultConnotation = (connotation = Connotation.Info) => connotationIconMap.get(connotation);
32
+
33
+ class Banner extends FoundationElement {
34
+ constructor() {
35
+ super(...arguments);
36
+ this.removable = false;
37
+
38
+ _Banner_handleRemoveEnd.set(this, () => {
39
+ this.$emit('vwc-banner:removed');
40
+ this.parentElement && this.parentElement.removeChild(this);
41
+ });
42
+
43
+ _Banner_closeOnKeyDown.set(this, e => {
44
+ if (e.key !== 'Escape' || !this.removable) {
45
+ return;
46
+ }
47
+
48
+ this.remove();
49
+ });
50
+ }
51
+
52
+ get conditionedIcon() {
53
+ var _a;
54
+
55
+ return (_a = this.icon) !== null && _a !== void 0 ? _a : defaultConnotation(this.connotation);
56
+ }
57
+
58
+ connectedCallback() {
59
+ super.connectedCallback();
60
+ this.addEventListener('keydown', __classPrivateFieldGet(this, _Banner_closeOnKeyDown, "f"));
61
+ }
62
+
63
+ disconnectedCallback() {
64
+ super.disconnectedCallback();
65
+ this.removeEventListener('keydown', __classPrivateFieldGet(this, _Banner_closeOnKeyDown, "f"));
66
+ }
67
+
68
+ remove() {
69
+ this.$emit('vwc-banner:removing');
70
+ const banner = this.shadowRoot && this.shadowRoot.querySelector('.banner');
71
+
72
+ if (banner) {
73
+ banner.classList.add('removing');
74
+ banner.addEventListener('transitionend', __classPrivateFieldGet(this, _Banner_handleRemoveEnd, "f"));
75
+ }
76
+ }
77
+
78
+ }
79
+ _Banner_handleRemoveEnd = new WeakMap(), _Banner_closeOnKeyDown = new WeakMap();
80
+
81
+ __decorate([attr({
82
+ attribute: 'action-href'
83
+ }), __metadata("design:type", Object)], Banner.prototype, "actionHref", void 0);
84
+
85
+ __decorate([attr({
86
+ attribute: 'action-text'
87
+ }), __metadata("design:type", Object)], Banner.prototype, "actionText", void 0);
88
+
89
+ __decorate([attr({
90
+ mode: 'boolean'
91
+ }), __metadata("design:type", Object)], Banner.prototype, "removable", void 0);
92
+
93
+ __decorate([attr({
94
+ attribute: 'aria-live'
95
+ }), __metadata("design:type", Object)], Banner.prototype, "ariaLive", void 0);
96
+
97
+ __decorate([attr(), __metadata("design:type", Object)], Banner.prototype, "role", void 0);
98
+
99
+ __decorate([attr(), __metadata("design:type", Object)], Banner.prototype, "text", void 0);
100
+
101
+ __decorate([attr(), __metadata("design:type", Object)], Banner.prototype, "connotation", void 0);
102
+
103
+ applyMixins(Banner, AffixIcon);
104
+
105
+ let _2 = t => t,
106
+ _t,
107
+ _t2;
108
+
109
+ const getClasses = _ => classNames('control', [`connotation-${_.connotation}`, !!_.connotation]);
110
+
111
+ function renderDismissButton() {
112
+ return html(_t || (_t = _2`
113
+ <vwc-button
114
+ density="condensed"
115
+ class="dismiss-button"
116
+ icon="close-line"
117
+ @click="${0}">
118
+ </vwc-button>`), x => x.remove());
119
+ }
120
+
121
+ const BannerTemplate = context => {
122
+ const affixIconTemplate = affixIconTemplateFactory(context);
123
+ return html(_t2 || (_t2 = _2`
124
+ <div class="banner ${0}" tabindex="0">
125
+ <header class="header">
126
+ <div class="user-content">
127
+ ${0}
128
+ <div class="banner--message"
129
+ role="${0}"
130
+ aria-live="${0}">
131
+ ${0}
132
+ </div>
133
+ <slot class="action-items" name="actionItems"></slot>
134
+ </div>
135
+
136
+ ${0}
137
+ </header>
138
+ </div>
139
+ `), getClasses, x => affixIconTemplate(x.conditionedIcon), x => x.role ? x.role : 'status', x => x.ariaLive ? x.ariaLive : 'polite', x => x.text, when(x => x.removable, renderDismissButton()));
140
+ };
141
+
142
+ const vividBanner = Banner.compose({
143
+ baseName: 'banner',
144
+ template: BannerTemplate,
145
+ styles: css_248z
146
+ });
147
+ designSystem.register(vividBanner());
148
+
149
+ export { vividBanner };
@@ -0,0 +1,103 @@
1
+ import { h as html, F as FoundationElement, _ as __decorate, o as observable, d as designSystem } from '../shared/index.js';
2
+ import { s as styleInject } from '../shared/style-inject.es.js';
3
+ import { B as BreadcrumbItem } from '../shared/breadcrumb-item.js';
4
+ import { s as slotted, e as elements } from '../shared/slotted.js';
5
+ import '../shared/anchor.js';
6
+ import '../shared/apply-mixins.js';
7
+ import '../shared/aria-global.js';
8
+ import '../shared/ref.js';
9
+
10
+ /**
11
+ * The template for the {@link @microsoft/fast-foundation#Breadcrumb} component.
12
+ * @public
13
+ */
14
+ const breadcrumbTemplate = (context, definition) => html `
15
+ <template role="navigation">
16
+ <div role="list" class="list" part="list">
17
+ <slot
18
+ ${slotted({ property: "slottedBreadcrumbItems", filter: elements() })}
19
+ ></slot>
20
+ </div>
21
+ </template>
22
+ `;
23
+
24
+ /**
25
+ * A Breadcrumb Custom HTML Element.
26
+ * @slot - The default slot for the breadcrumb items
27
+ * @csspart list - The element wrapping the slotted items
28
+ *
29
+ * @public
30
+ */
31
+ class Breadcrumb$1 extends FoundationElement {
32
+ slottedBreadcrumbItemsChanged() {
33
+ if (this.$fastController.isConnected) {
34
+ if (this.slottedBreadcrumbItems === undefined ||
35
+ this.slottedBreadcrumbItems.length === 0) {
36
+ return;
37
+ }
38
+ const lastNode = this.slottedBreadcrumbItems[this.slottedBreadcrumbItems.length - 1];
39
+ this.slottedBreadcrumbItems.forEach((item) => {
40
+ const itemIsLastNode = item === lastNode;
41
+ this.setItemSeparator(item, itemIsLastNode);
42
+ this.setAriaCurrent(item, itemIsLastNode);
43
+ });
44
+ }
45
+ }
46
+ setItemSeparator(item, isLastNode) {
47
+ if (item instanceof BreadcrumbItem) {
48
+ item.separator = !isLastNode;
49
+ }
50
+ }
51
+ /**
52
+ * Finds href on childnodes in the light DOM or shadow DOM.
53
+ * We look in the shadow DOM because we insert an anchor when breadcrumb-item has an href.
54
+ */
55
+ findChildWithHref(node) {
56
+ var _a, _b;
57
+ if (node.childElementCount > 0) {
58
+ return node.querySelector("a[href]");
59
+ }
60
+ else if ((_a = node.shadowRoot) === null || _a === void 0 ? void 0 : _a.childElementCount) {
61
+ return (_b = node.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector("a[href]");
62
+ }
63
+ else
64
+ return null;
65
+ }
66
+ /**
67
+ * Sets ARIA Current for the current node
68
+ * If child node with an anchor tag and with href is found then set aria-current to correct value for the child node,
69
+ * otherwise apply aria-current to the host element, with an href
70
+ */
71
+ setAriaCurrent(item, isLastNode) {
72
+ const childNodeWithHref = this.findChildWithHref(item);
73
+ if (childNodeWithHref === null &&
74
+ item.hasAttribute("href") &&
75
+ item instanceof BreadcrumbItem) {
76
+ isLastNode
77
+ ? item.setAttribute("aria-current", "page")
78
+ : item.removeAttribute("aria-current");
79
+ }
80
+ else if (childNodeWithHref !== null) {
81
+ isLastNode
82
+ ? childNodeWithHref.setAttribute("aria-current", "page")
83
+ : childNodeWithHref.removeAttribute("aria-current");
84
+ }
85
+ }
86
+ }
87
+ __decorate([
88
+ observable
89
+ ], Breadcrumb$1.prototype, "slottedBreadcrumbItems", void 0);
90
+
91
+ var css_248z = ".list {\n display: flex;\n}";
92
+ styleInject(css_248z);
93
+
94
+ class Breadcrumb extends Breadcrumb$1 {}
95
+
96
+ const vividBreadcrumb = Breadcrumb.compose({
97
+ baseName: 'breadcrumb',
98
+ template: breadcrumbTemplate,
99
+ styles: css_248z
100
+ });
101
+ designSystem.register(vividBreadcrumb());
102
+
103
+ export { vividBreadcrumb };