@vonage/vivid 3.0.0-next.3 → 3.0.0-next.30

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 (143) hide show
  1. package/README.md +49 -4
  2. package/accordion/index.js +61 -0
  3. package/accordion-item/index.js +133 -0
  4. package/action-group/index.js +49 -0
  5. package/badge/index.js +27 -22
  6. package/banner/index.js +148 -0
  7. package/breadcrumb/index.js +41 -150
  8. package/breadcrumb-item/index.js +18 -8
  9. package/button/index.js +40 -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/checkbox/index.js +176 -0
  14. package/elevation/index.js +4 -38
  15. package/fab/index.js +101 -0
  16. package/focus/index.js +20 -3
  17. package/header/index.js +68 -0
  18. package/icon/index.js +40 -5
  19. package/index.d.ts +1 -0
  20. package/index.js +50 -14
  21. package/layout/index.js +5 -5
  22. package/lib/accordion/accordion.d.ts +9 -0
  23. package/lib/accordion/accordion.template.d.ts +4 -0
  24. package/lib/accordion/index.d.ts +2 -0
  25. package/lib/accordion-item/accordion-item.d.ts +13 -0
  26. package/lib/accordion-item/accordion-item.template.d.ts +4 -0
  27. package/lib/accordion-item/index.d.ts +4 -0
  28. package/lib/action-group/action-group.d.ts +10 -0
  29. package/lib/action-group/action-group.template.d.ts +4 -0
  30. package/lib/action-group/index.d.ts +2 -0
  31. package/lib/badge/badge.d.ts +8 -8
  32. package/lib/badge/index.d.ts +1 -1
  33. package/lib/banner/banner.d.ts +20 -0
  34. package/lib/banner/banner.template.d.ts +4 -0
  35. package/lib/banner/index.d.ts +3 -0
  36. package/lib/breadcrumb/breadcrumb.template.d.ts +4 -0
  37. package/lib/breadcrumb-item/breadcrumb-item.d.ts +1 -1
  38. package/lib/breadcrumb-item/breadcrumb-item.template.d.ts +0 -1
  39. package/lib/breadcrumb-item/index.d.ts +2 -0
  40. package/lib/button/button.d.ts +9 -8
  41. package/lib/button/index.d.ts +2 -19
  42. package/lib/calendar/calendar.d.ts +13 -0
  43. package/lib/calendar/calendar.template.d.ts +4 -0
  44. package/lib/calendar/helpers/calendar.date-functions.d.ts +2 -0
  45. package/lib/calendar/helpers/calendar.event-context.d.ts +6 -0
  46. package/lib/calendar/helpers/calendar.keyboard-interactions.d.ts +9 -0
  47. package/lib/calendar/index.d.ts +2 -0
  48. package/lib/calendar-event/calendar-event.d.ts +14 -0
  49. package/lib/calendar-event/calendar-event.template.d.ts +4 -0
  50. package/lib/calendar-event/index.d.ts +2 -0
  51. package/lib/card/card.d.ts +10 -0
  52. package/lib/card/card.template.d.ts +4 -0
  53. package/lib/card/index.d.ts +4 -0
  54. package/lib/checkbox/checkbox.d.ts +5 -0
  55. package/lib/checkbox/checkbox.template.d.ts +4 -0
  56. package/lib/checkbox/index.d.ts +4 -0
  57. package/lib/components.d.ts +23 -5
  58. package/lib/elevation/elevation.d.ts +2 -1
  59. package/lib/elevation/index.d.ts +1 -1
  60. package/lib/enums.d.ts +14 -7
  61. package/lib/fab/fab.d.ts +13 -0
  62. package/lib/fab/fab.template.d.ts +4 -0
  63. package/lib/fab/index.d.ts +4 -0
  64. package/lib/focus/index.d.ts +1 -1
  65. package/lib/header/header.d.ts +5 -0
  66. package/lib/header/header.template.d.ts +4 -0
  67. package/lib/header/index.d.ts +3 -0
  68. package/lib/icon/icon.d.ts +4 -5
  69. package/lib/layout/index.d.ts +1 -1
  70. package/lib/layout/layout.d.ts +3 -3
  71. package/lib/note/index.d.ts +2 -0
  72. package/lib/note/note.d.ts +10 -0
  73. package/lib/note/note.template.d.ts +5 -0
  74. package/lib/popup/index.d.ts +4 -0
  75. package/lib/popup/popup.d.ts +17 -0
  76. package/lib/popup/popup.template.d.ts +4 -0
  77. package/lib/progress/index.d.ts +2 -0
  78. package/lib/progress/progress.d.ts +9 -0
  79. package/lib/progress/progress.template.d.ts +5 -0
  80. package/lib/progress-ring/index.d.ts +2 -0
  81. package/lib/progress-ring/progress-ring.d.ts +7 -0
  82. package/lib/progress-ring/progress-ring.template.d.ts +4 -0
  83. package/lib/side-drawer/index.d.ts +2 -0
  84. package/lib/side-drawer/side-drawer.d.ts +7 -0
  85. package/lib/side-drawer/side-drawer.template.d.ts +4 -0
  86. package/lib/sidenav/index.d.ts +2 -0
  87. package/lib/sidenav/sidenav.d.ts +3 -0
  88. package/lib/sidenav/sidenav.template.d.ts +4 -0
  89. package/lib/sidenav-item/index.d.ts +1 -0
  90. package/lib/sidenav-item/sidenav-item.d.ts +4 -5
  91. package/lib/text/index.d.ts +2 -0
  92. package/lib/text/text.d.ts +10 -0
  93. package/lib/text/text.template.d.ts +4 -0
  94. package/lib/text-anchor/text-anchor.d.ts +4 -1
  95. package/lib/text-field/index.d.ts +4 -0
  96. package/lib/text-field/text-field.d.ts +23 -0
  97. package/lib/text-field/text-field.template.d.ts +5 -0
  98. package/lib/tooltip/index.d.ts +3 -0
  99. package/lib/tooltip/tooltip.d.ts +8 -0
  100. package/lib/tooltip/tooltip.template.d.ts +4 -0
  101. package/note/index.js +68 -0
  102. package/package.json +36 -6
  103. package/popup/index.js +2110 -0
  104. package/progress/index.js +107 -0
  105. package/progress-ring/index.js +82 -0
  106. package/shared/_has.js +58 -0
  107. package/shared/affix.js +10 -25
  108. package/shared/anchor.js +10 -3
  109. package/shared/aria-global.js +20 -20
  110. package/shared/base-progress.js +70 -0
  111. package/shared/breadcrumb-item.js +2 -2
  112. package/shared/button.js +195 -0
  113. package/shared/calendar-event.js +26 -0
  114. package/shared/enums.js +79 -0
  115. package/shared/es.object.assign.js +69 -0
  116. package/shared/export.js +972 -0
  117. package/shared/focus.js +5 -0
  118. package/shared/focus2.js +11 -0
  119. package/shared/form-associated.js +547 -0
  120. package/shared/icon.js +1389 -0
  121. package/shared/index.js +4940 -1426
  122. package/shared/index2.js +27 -4901
  123. package/shared/iterators.js +61 -0
  124. package/shared/object-keys.js +13 -0
  125. package/shared/patterns/affix.d.ts +3 -4
  126. package/shared/patterns/focus.d.ts +3 -0
  127. package/shared/patterns/index.d.ts +1 -0
  128. package/shared/slotted.js +119 -0
  129. package/shared/text-anchor.js +12 -0
  130. package/shared/text-anchor.template.js +16 -6
  131. package/shared/to-string.js +51 -0
  132. package/shared/web.dom-collections.iterator.js +46 -1059
  133. package/shared/when.js +15 -0
  134. package/side-drawer/index.js +82 -0
  135. package/sidenav/index.js +17 -0
  136. package/sidenav-item/index.js +24 -61
  137. package/styles/themes/dark.css +16 -4
  138. package/styles/themes/light.css +16 -4
  139. package/text/index.js +48 -0
  140. package/text-anchor/index.js +13 -13
  141. package/text-field/index.js +411 -0
  142. package/tooltip/index.js +70 -0
  143. 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 = ".base {\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('base');
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,133 @@
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.base {\n display: flex;\n flex-direction: column;\n}\n.base:not(.open) .body {\n display: none;\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 margin: 0;\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 cursor: pointer;\n}\n.button {\n --_appearance-color-text: var(--_connotation-color-primary);\n --_appearance-color-fill: transaprent;\n --_appearance-color-outline: transaprent;\n}\n.button:where(:hover, .hover):where(:not(:disabled, .disabled)) {\n --_appearance-color-text: var(--_connotation-color-primary);\n --_appearance-color-fill: var(--_connotation-color-faint);\n --_appearance-color-outline: transaprent;\n}\n.button: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: transaprent;\n}\n.button {\n --_connotation-color-primary: var(--vvd-color-on-canvas);\n --_connotation-color-faint: var(--vvd-color-neutral-10);\n --_connotation-color-soft: var(--vvd-color-neutral-20);\n}\n@supports selector(:focus-visible) {\n .button:focus {\n outline: none;\n }\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
+ _t6,
74
+ _t7;
75
+ const PANEL = 'panel';
76
+
77
+ const getClasses = ({
78
+ open,
79
+ iconTrailing,
80
+ icon,
81
+ noIndicator
82
+ }) => classNames('base', ['open', open], ['icon', Boolean(icon)], ['icon-trailing', iconTrailing], ['no-indicator', noIndicator]);
83
+
84
+ const AccordionItemTemplate = context => html(_t || (_t = _`
85
+ <div class="${0}">
86
+ ${0}
87
+ <div class="body" id="${0}" role="region" aria-labelledby="header">
88
+ <slot></slot>
89
+ </div>
90
+ </div>
91
+ `), getClasses, x => renderPanelHeader(context, x.headingLevel), PANEL);
92
+
93
+ const renderPanelHeader = (context, headingLevel) => {
94
+ const header = headingLevel ? 'h' + headingLevel : 'h3';
95
+ return html(_t2 || (_t2 = _`
96
+ <${0} class="header">
97
+ ${0}
98
+ </${0}>
99
+ `), header, renderHeaderButton(context), header);
100
+ };
101
+
102
+ const renderHeaderButton = context => {
103
+ const affixIconTemplate = affixIconTemplateFactory(context);
104
+ const focusTemplate = focusTemplateFactory(context);
105
+ return html(_t3 || (_t3 = _`
106
+ <button class="button" id="header" @click=${0}
107
+ aria-expanded=${0}
108
+ aria-controls="${0}">
109
+ ${0}
110
+ ${0}
111
+ <span class="heading-text">${0}</span>
112
+ ${0}
113
+ <span class="indicator">
114
+ ${0}
115
+ </span>
116
+ </button>
117
+ `), 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 = _`
118
+ ${0}
119
+ ${0}
120
+ `), when(x => !x.open, html(_t6 || (_t6 = _`<vwc-icon type='chevron-down-solid'></vwc-icon>`))), when(x => x.open, html(_t7 || (_t7 = _`<vwc-icon type='chevron-up-solid'></vwc-icon>`))))));
121
+ };
122
+
123
+ const vividAccordionItem = AccordionItem.compose({
124
+ baseName: 'accordion-item',
125
+ template: AccordionItemTemplate,
126
+ styles: css_248z,
127
+ shadowOptions: {
128
+ delegatesFocus: true
129
+ }
130
+ });
131
+ designSystem.register(vividAccordionItem());
132
+
133
+ export { vividAccordionItem };
@@ -0,0 +1,49 @@
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 '../shared/web.dom-collections.iterator.js';
4
+ import { c as classNames } from '../shared/class-names.js';
5
+ import '../shared/export.js';
6
+ import '../shared/object-keys.js';
7
+ import '../shared/iterators.js';
8
+
9
+ var css_248z = ":host {\n display: inline-block;\n}\n\n.base {\n position: relative;\n display: flex;\n box-sizing: border-box;\n align-items: center;\n background-color: var(--_appearance-color-fill);\n color: var(--_appearance-color-text);\n inline-size: inherit;\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.base::before {\n position: absolute;\n z-index: 1;\n border-radius: inherit;\n box-shadow: inset 0 0 0 1px var(--_appearance-color-outline);\n content: \"\";\n inset: 0;\n pointer-events: none;\n}\n.base:not(.tight) {\n padding: 4px;\n column-gap: 4px;\n}\n\n/* Shape */\n.base:not(.shape-pill) {\n border-radius: 6px;\n}\n\n.base.shape-pill {\n border-radius: 24px;\n}\n\n::slotted([role=separator]) {\n width: 1px;\n align-self: stretch;\n background-color: var(--vvd-color-neutral-30);\n margin-block: 4px;\n}";
10
+ styleInject(css_248z);
11
+
12
+ class ActionGroup extends FoundationElement {
13
+ constructor() {
14
+ super(...arguments);
15
+ this.tight = false;
16
+ }
17
+
18
+ }
19
+
20
+ __decorate([attr, __metadata("design:type", String)], ActionGroup.prototype, "shape", void 0);
21
+
22
+ __decorate([attr, __metadata("design:type", String)], ActionGroup.prototype, "appearance", void 0);
23
+
24
+ __decorate([attr({
25
+ mode: 'boolean'
26
+ }), __metadata("design:type", Object)], ActionGroup.prototype, "tight", void 0);
27
+
28
+ let _ = t => t,
29
+ _t;
30
+
31
+ const getClasses = ({
32
+ appearance,
33
+ shape,
34
+ tight
35
+ }) => classNames('base', [`appearance-${appearance}`, Boolean(appearance)], [`shape-${shape}`, Boolean(shape)], ['tight', tight]);
36
+
37
+ const ActionGroupTemplate = () => html(_t || (_t = _`
38
+ <div class="${0}">
39
+ <slot></slot>
40
+ </div>`), getClasses);
41
+
42
+ const vividActionGroup = ActionGroup.compose({
43
+ baseName: 'action-group',
44
+ template: ActionGroupTemplate,
45
+ styles: css_248z
46
+ });
47
+ designSystem.register(vividActionGroup());
48
+
49
+ 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,148 @@
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/focus2.js';
22
+ import '../shared/object-keys.js';
23
+
24
+ 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}";
25
+ styleInject(css_248z);
26
+
27
+ var _Banner_handleRemoveEnd, _Banner_closeOnKeyDown;
28
+ 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']]);
29
+
30
+ const defaultConnotation = (connotation = Connotation.Info) => connotationIconMap.get(connotation);
31
+
32
+ class Banner extends FoundationElement {
33
+ constructor() {
34
+ super(...arguments);
35
+ this.removable = false;
36
+
37
+ _Banner_handleRemoveEnd.set(this, () => {
38
+ this.$emit('vwc-banner:removed');
39
+ this.parentElement && this.parentElement.removeChild(this);
40
+ });
41
+
42
+ _Banner_closeOnKeyDown.set(this, e => {
43
+ if (e.key !== 'Escape' || !this.removable) {
44
+ return;
45
+ }
46
+
47
+ this.remove();
48
+ });
49
+ }
50
+
51
+ get conditionedIcon() {
52
+ var _a;
53
+
54
+ return (_a = this.icon) !== null && _a !== void 0 ? _a : defaultConnotation(this.connotation);
55
+ }
56
+
57
+ connectedCallback() {
58
+ super.connectedCallback();
59
+ this.addEventListener('keydown', __classPrivateFieldGet(this, _Banner_closeOnKeyDown, "f"));
60
+ }
61
+
62
+ disconnectedCallback() {
63
+ super.disconnectedCallback();
64
+ this.removeEventListener('keydown', __classPrivateFieldGet(this, _Banner_closeOnKeyDown, "f"));
65
+ }
66
+
67
+ remove() {
68
+ this.$emit('vwc-banner:removing');
69
+ const banner = this.shadowRoot && this.shadowRoot.querySelector('.banner');
70
+
71
+ if (banner) {
72
+ banner.classList.add('removing');
73
+ banner.addEventListener('transitionend', __classPrivateFieldGet(this, _Banner_handleRemoveEnd, "f"));
74
+ }
75
+ }
76
+
77
+ }
78
+ _Banner_handleRemoveEnd = new WeakMap(), _Banner_closeOnKeyDown = new WeakMap();
79
+
80
+ __decorate([attr({
81
+ attribute: 'action-href'
82
+ }), __metadata("design:type", Object)], Banner.prototype, "actionHref", void 0);
83
+
84
+ __decorate([attr({
85
+ attribute: 'action-text'
86
+ }), __metadata("design:type", Object)], Banner.prototype, "actionText", void 0);
87
+
88
+ __decorate([attr({
89
+ mode: 'boolean'
90
+ }), __metadata("design:type", Object)], Banner.prototype, "removable", void 0);
91
+
92
+ __decorate([attr({
93
+ attribute: 'aria-live'
94
+ }), __metadata("design:type", Object)], Banner.prototype, "ariaLive", void 0);
95
+
96
+ __decorate([attr(), __metadata("design:type", Object)], Banner.prototype, "role", void 0);
97
+
98
+ __decorate([attr(), __metadata("design:type", Object)], Banner.prototype, "text", void 0);
99
+
100
+ __decorate([attr(), __metadata("design:type", Object)], Banner.prototype, "connotation", void 0);
101
+
102
+ applyMixins(Banner, AffixIcon);
103
+
104
+ let _2 = t => t,
105
+ _t,
106
+ _t2;
107
+
108
+ const getClasses = _ => classNames('control', [`connotation-${_.connotation}`, !!_.connotation]);
109
+
110
+ function renderDismissButton() {
111
+ return html(_t || (_t = _2`
112
+ <vwc-button
113
+ density="condensed"
114
+ class="dismiss-button"
115
+ icon="close-line"
116
+ @click="${0}">
117
+ </vwc-button>`), x => x.remove());
118
+ }
119
+
120
+ const BannerTemplate = context => {
121
+ const affixIconTemplate = affixIconTemplateFactory(context);
122
+ return html(_t2 || (_t2 = _2`
123
+ <div class="banner ${0}" tabindex="0">
124
+ <header class="header">
125
+ <div class="user-content">
126
+ ${0}
127
+ <div class="banner--message"
128
+ role="${0}"
129
+ aria-live="${0}">
130
+ ${0}
131
+ </div>
132
+ <slot class="action-items" name="actionItems"></slot>
133
+ </div>
134
+
135
+ ${0}
136
+ </header>
137
+ </div>
138
+ `), 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()));
139
+ };
140
+
141
+ const vividBanner = Banner.compose({
142
+ baseName: 'banner',
143
+ template: BannerTemplate,
144
+ styles: css_248z
145
+ });
146
+ designSystem.register(vividBanner());
147
+
148
+ export { vividBanner };