kemet-ui 0.2.0 → 1.0.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 (66) hide show
  1. package/custom-elements.json +5546 -855
  2. package/dist/components/kemet-accordion-panel.js +178 -0
  3. package/dist/components/kemet-accordion.js +105 -72
  4. package/dist/components/kemet-badge.js +102 -0
  5. package/dist/components/kemet-button.js +230 -0
  6. package/dist/components/kemet-checkbox.js +298 -0
  7. package/dist/components/kemet-combo.js +207 -0
  8. package/dist/components/kemet-count.js +112 -0
  9. package/dist/components/kemet-draggable.js +19 -6
  10. package/dist/components/kemet-drawer.js +38 -15
  11. package/dist/components/kemet-drawer.styles.js +6 -0
  12. package/dist/components/kemet-field.js +233 -0
  13. package/dist/components/kemet-flipcard-trigger.js +4 -5
  14. package/dist/components/kemet-flipcard.js +26 -3
  15. package/dist/components/kemet-icon.js +19 -3
  16. package/dist/components/kemet-input.js +650 -0
  17. package/dist/components/kemet-modal-close.js +23 -4
  18. package/dist/components/kemet-modal.js +78 -13
  19. package/dist/components/kemet-modal.styles.js +14 -2
  20. package/dist/components/kemet-option.js +45 -0
  21. package/dist/components/kemet-popover-close.js +1 -1
  22. package/dist/components/kemet-popover.js +75 -12
  23. package/dist/components/kemet-radio.js +214 -0
  24. package/dist/components/kemet-radios.js +218 -0
  25. package/dist/components/kemet-rotator.js +23 -4
  26. package/dist/components/kemet-scroll-link.js +21 -2
  27. package/dist/components/kemet-scroll-nav.js +25 -2
  28. package/dist/components/kemet-scroll-snap-paginator.js +68 -26
  29. package/dist/components/kemet-scroll-snap-slide.js +23 -13
  30. package/dist/components/kemet-scroll-snap.js +31 -16
  31. package/dist/components/kemet-select.js +365 -0
  32. package/dist/components/kemet-svg.js +18 -2
  33. package/dist/components/kemet-svgs.js +7 -3
  34. package/dist/components/kemet-tab-panel.js +15 -1
  35. package/dist/components/kemet-tab.js +48 -1
  36. package/dist/components/kemet-tabs.js +289 -83
  37. package/dist/components/kemet-tabs.styles.js +200 -0
  38. package/dist/components/kemet-textarea.js +395 -0
  39. package/dist/components/kemet-toggle.js +225 -0
  40. package/dist/kemet-components.cjs +5128 -1200
  41. package/dist/kemet-components.js +5117 -1173
  42. package/dist/kemet-components.min.js +1536 -421
  43. package/dist/styles/kemet.components.css +12 -260
  44. package/dist/styles/kemet.components.css.map +1 -1
  45. package/dist/styles/kemet.core.css +2371 -503
  46. package/dist/styles/kemet.core.css.map +1 -1
  47. package/dist/styles/scss/components/_config.scss +0 -25
  48. package/dist/styles/scss/components/accordion.scss +4 -53
  49. package/dist/styles/scss/components/modal.scss +5 -9
  50. package/dist/styles/scss/components/scrollsnap.scss +0 -57
  51. package/dist/styles/scss/core/_config.scss +160 -3
  52. package/dist/styles/scss/core/_helpers.scss +109 -2
  53. package/dist/styles/scss/core/attributes.scss +16 -0
  54. package/dist/styles/scss/core/base.scss +38 -0
  55. package/dist/styles/scss/core/layout.scss +6 -5
  56. package/dist/styles/scss/kemet.components.scss +0 -2
  57. package/dist/styles/scss/kemet.core.scss +1 -2
  58. package/package.json +34 -56
  59. package/dist/components/kemet-carousel-link.js +0 -54
  60. package/dist/components/kemet-carousel-next.js +0 -46
  61. package/dist/components/kemet-carousel-prev.js +0 -46
  62. package/dist/components/kemet-carousel-slide.js +0 -83
  63. package/dist/components/kemet-carousel.js +0 -236
  64. package/dist/components/kemet-ratio.js +0 -61
  65. package/dist/styles/scss/components/flipcard.scss +0 -14
  66. package/dist/styles/scss/components/tabs.scss +0 -73
@@ -0,0 +1,225 @@
1
+ import { html, css, LitElement } from 'lit';
2
+ import { FormSubmitController } from '../../utilities/controllers/forms.js';
3
+
4
+ export default class KemetToggle extends LitElement {
5
+ static get styles() {
6
+ return [
7
+ css`
8
+ :host {
9
+ --kemet-toggle-width: 3.5rem;
10
+ --kemet-toggle-height: 2rem;
11
+ --kemet-toggle-handle-diameter: 1.6rem;
12
+ --kemet-toggle-handle-margin: calc((var(--kemet-toggle-height) - var(--kemet-toggle-handle-diameter)) / 2);
13
+
14
+ display: flex;
15
+ align-items: center;
16
+ }
17
+
18
+ :host([disabled]) {
19
+ opacity: 0.5;
20
+ }
21
+
22
+ label {
23
+ cursor: pointer;
24
+ display: flex;
25
+ align-items: center;
26
+ gap: 1rem;
27
+ font-size: inherit;
28
+ color: inherit;
29
+ }
30
+
31
+ :host([disabled]) label {
32
+ cursor: not-allowed;
33
+ }
34
+
35
+ input {
36
+ display: none;
37
+ }
38
+
39
+ [part='control'] {
40
+ position: relative;
41
+ display: inline-flex;
42
+ margin: 0;
43
+ width: var(--kemet-toggle-width);
44
+ height: var(--kemet-toggle-height);
45
+ }
46
+
47
+ [part='control'] > span {
48
+ transition: 300ms ease-in-out;
49
+ }
50
+
51
+ [part='track'] {
52
+ width: var(--kemet-toggle-width);
53
+ height: var(--kemet-toggle-height);
54
+ border: var(--kemet-toggle-track-border, none);
55
+ border-radius: var(--kemet-toggle-height);
56
+ background-color: var(--kemet-toggle-track-color, var(--kemet-color-white));
57
+ box-shadow: var(--kemet-toggle-track-shadow, inset 0 0.4rem 0.7rem 0 rgba(47, 47, 47, 0.35), inset 0 -0.2rem 0.4rem 0 var(--kemet-color-gray1));
58
+ }
59
+
60
+ :host([squared]) [part='track'] {
61
+ border-radius: 0;
62
+ }
63
+
64
+ [part='handle'] {
65
+ position: absolute;
66
+ top: var(--kemet-toggle-handle-margin);
67
+ left: var(--kemet-toggle-handle-margin);
68
+ width: var(--kemet-toggle-handle-diameter);
69
+ height: var(--kemet-toggle-handle-diameter);
70
+ transform: translateX(0);
71
+ border: var(--kemet-toggle-handle-border, none);
72
+ border-radius: var(--kemet-toggle-handle-diameter);
73
+ background-color: var(--kemet-toggle-handle-color, var(--kemet-color-primary));
74
+ box-shadow: var(--kemet-toggle-handle-shadow, 0 0.5rem 0.5rem 0 rgba(0, 0, 0, 0.1), 0 0.5rem 0.5rem 0 rgba(0, 0, 0, 0.2));
75
+ }
76
+
77
+ :host([squared]) [part='handle'] {
78
+ border-radius: 0;
79
+ }
80
+
81
+ :host([checked]) [part='handle'] {
82
+ transform: translateX(calc(var(--kemet-toggle-width) - var(--kemet-toggle-handle-diameter) - var(--kemet-toggle-handle-margin) * 2));
83
+ }
84
+
85
+ .option {
86
+ font-size: 90%;
87
+ }
88
+ `,
89
+ ];
90
+ }
91
+
92
+ static get properties() {
93
+ return {
94
+ /**
95
+ * The name on the input field
96
+ */
97
+ name: {
98
+ type: String,
99
+ },
100
+ /**
101
+ * Determines whether or not the toggle is checked
102
+ */
103
+ checked: {
104
+ type: Boolean,
105
+ reflect: true,
106
+ },
107
+ /**
108
+ * Determines whether or not the toggle is disabled
109
+ */
110
+ disabled: {
111
+ type: Boolean,
112
+ },
113
+ /**
114
+ * A description of the toggle's purpose
115
+ */
116
+ label: {
117
+ type: String,
118
+ },
119
+ /**
120
+ * Determines whether or not to show text options
121
+ */
122
+ show: {
123
+ type: Boolean,
124
+ },
125
+ /**
126
+ * Displays the toggle as squared instead of rounded
127
+ */
128
+ squared: {
129
+ type: Boolean,
130
+ },
131
+ /**
132
+ * The checked option text
133
+ */
134
+ optionChecked: {
135
+ type: String,
136
+ attribute: 'option-checked',
137
+ },
138
+ /**
139
+ * The unchecked option text
140
+ */
141
+ optionUnchecked: {
142
+ type: String,
143
+ attribute: 'option-unchecked',
144
+ },
145
+ };
146
+ }
147
+
148
+ constructor() {
149
+ super();
150
+
151
+ this.name = 'toggle-switch';
152
+ this.disabled = false;
153
+ this.checked = false;
154
+ this.show = false;
155
+ this.squared = false;
156
+ this.label = '';
157
+ this.optionChecked = 'on';
158
+ this.optionUnchecked = 'off';
159
+ this.value = this.checked ? this.optionChecked : this.optionUnchecked;
160
+
161
+ /**
162
+ * Used only for form reactive controller
163
+ */
164
+ this.formSubmitController = new FormSubmitController(this);
165
+ }
166
+
167
+ render() {
168
+ return html`
169
+ <label part="label">
170
+ ${this.makeUncheckedOption()}
171
+ <span part="control">
172
+ <span part="track"></span>
173
+ <span part="handle"></span>
174
+ </span>
175
+ <input
176
+ role="switch"
177
+ type="checkbox"
178
+ name="${this.name}"
179
+ aria-label="${this.label}"
180
+ aria-checked=${this.checked ? 'true' : 'false'}
181
+ ?disabled=${this.disabled}
182
+ ?checked=${this.checked}
183
+ @change=${this.handleChange}
184
+ />
185
+ ${this.makeCheckedOption()}
186
+ <span part="text">${this.label}</span>
187
+ </label>
188
+ `;
189
+ }
190
+
191
+ handleChange() {
192
+ this.checked = !this.checked;
193
+ this.value = this.checked ? this.optionChecked : this.optionUnchecked;
194
+
195
+ /**
196
+ * Fires when the toggle changes state
197
+ */
198
+ this.dispatchEvent(
199
+ new CustomEvent('kemet-toggle-change', {
200
+ bubbles: true,
201
+ composed: true,
202
+ detail: true,
203
+ }),
204
+ );
205
+ }
206
+
207
+ makeUncheckedOption() {
208
+ if (this.show) {
209
+ return html`<span class="option" part="unchecked">${this.optionUnchecked}</span>`;
210
+ }
211
+
212
+ return null;
213
+ }
214
+
215
+ makeCheckedOption() {
216
+ if (this.show) {
217
+ return html`<span class="option" part="checked">${this.optionChecked}</span>`;
218
+ }
219
+
220
+ return null;
221
+ }
222
+ }
223
+
224
+ // eslint-disable-next-line no-unused-expressions
225
+ customElements.get('kemet-toggle') || customElements.define('kemet-toggle', KemetToggle);