@digital2analogue2/parsimony-components 0.1.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.
- package/custom-elements.json +3751 -0
- package/dist/alert/alert.d.ts +36 -0
- package/dist/alert/alert.d.ts.map +1 -0
- package/dist/alert/alert.js +179 -0
- package/dist/alert/alert.js.map +1 -0
- package/dist/alert/alert.stories.d.ts +12 -0
- package/dist/alert/alert.stories.d.ts.map +1 -0
- package/dist/alert/alert.stories.js +59 -0
- package/dist/alert/alert.stories.js.map +1 -0
- package/dist/avatar/avatar.d.ts +37 -0
- package/dist/avatar/avatar.d.ts.map +1 -0
- package/dist/avatar/avatar.js +150 -0
- package/dist/avatar/avatar.js.map +1 -0
- package/dist/avatar/avatar.stories.d.ts +10 -0
- package/dist/avatar/avatar.stories.d.ts.map +1 -0
- package/dist/avatar/avatar.stories.js +56 -0
- package/dist/avatar/avatar.stories.js.map +1 -0
- package/dist/badge/badge.d.ts +31 -0
- package/dist/badge/badge.d.ts.map +1 -0
- package/dist/badge/badge.js +104 -0
- package/dist/badge/badge.js.map +1 -0
- package/dist/badge/badge.stories.d.ts +9 -0
- package/dist/badge/badge.stories.d.ts.map +1 -0
- package/dist/badge/badge.stories.js +35 -0
- package/dist/badge/badge.stories.js.map +1 -0
- package/dist/button/button.d.ts +50 -0
- package/dist/button/button.d.ts.map +1 -0
- package/dist/button/button.js +237 -0
- package/dist/button/button.js.map +1 -0
- package/dist/button/button.stories.d.ts +12 -0
- package/dist/button/button.stories.d.ts.map +1 -0
- package/dist/button/button.stories.js +44 -0
- package/dist/button/button.stories.js.map +1 -0
- package/dist/card/card.d.ts +32 -0
- package/dist/card/card.d.ts.map +1 -0
- package/dist/card/card.js +107 -0
- package/dist/card/card.js.map +1 -0
- package/dist/card/card.stories.d.ts +9 -0
- package/dist/card/card.stories.d.ts.map +1 -0
- package/dist/card/card.stories.js +39 -0
- package/dist/card/card.stories.js.map +1 -0
- package/dist/checkbox/checkbox.d.ts +44 -0
- package/dist/checkbox/checkbox.d.ts.map +1 -0
- package/dist/checkbox/checkbox.js +201 -0
- package/dist/checkbox/checkbox.js.map +1 -0
- package/dist/checkbox/checkbox.stories.d.ts +10 -0
- package/dist/checkbox/checkbox.stories.d.ts.map +1 -0
- package/dist/checkbox/checkbox.stories.js +38 -0
- package/dist/checkbox/checkbox.stories.js.map +1 -0
- package/dist/dialog/dialog.d.ts +51 -0
- package/dist/dialog/dialog.d.ts.map +1 -0
- package/dist/dialog/dialog.js +234 -0
- package/dist/dialog/dialog.js.map +1 -0
- package/dist/dialog/dialog.stories.d.ts +7 -0
- package/dist/dialog/dialog.stories.d.ts.map +1 -0
- package/dist/dialog/dialog.stories.js +30 -0
- package/dist/dialog/dialog.stories.js.map +1 -0
- package/dist/icon/icon.d.ts +40 -0
- package/dist/icon/icon.d.ts.map +1 -0
- package/dist/icon/icon.js +99 -0
- package/dist/icon/icon.js.map +1 -0
- package/dist/icon/icon.stories.d.ts +9 -0
- package/dist/icon/icon.stories.d.ts.map +1 -0
- package/dist/icon/icon.stories.js +41 -0
- package/dist/icon/icon.stories.js.map +1 -0
- package/dist/index.d.ts +22 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +22 -0
- package/dist/index.js.map +1 -0
- package/dist/input/input.d.ts +61 -0
- package/dist/input/input.d.ts.map +1 -0
- package/dist/input/input.js +233 -0
- package/dist/input/input.js.map +1 -0
- package/dist/input/input.stories.d.ts +10 -0
- package/dist/input/input.stories.d.ts.map +1 -0
- package/dist/input/input.stories.js +48 -0
- package/dist/input/input.stories.js.map +1 -0
- package/dist/link/link.d.ts +39 -0
- package/dist/link/link.d.ts.map +1 -0
- package/dist/link/link.js +112 -0
- package/dist/link/link.js.map +1 -0
- package/dist/link/link.stories.d.ts +9 -0
- package/dist/link/link.stories.d.ts.map +1 -0
- package/dist/link/link.stories.js +44 -0
- package/dist/link/link.stories.js.map +1 -0
- package/dist/progress/progress.d.ts +35 -0
- package/dist/progress/progress.d.ts.map +1 -0
- package/dist/progress/progress.js +116 -0
- package/dist/progress/progress.js.map +1 -0
- package/dist/progress/progress.stories.d.ts +10 -0
- package/dist/progress/progress.stories.d.ts.map +1 -0
- package/dist/progress/progress.stories.js +32 -0
- package/dist/progress/progress.stories.js.map +1 -0
- package/dist/radio/radio-group.d.ts +53 -0
- package/dist/radio/radio-group.d.ts.map +1 -0
- package/dist/radio/radio-group.js +183 -0
- package/dist/radio/radio-group.js.map +1 -0
- package/dist/radio/radio-group.stories.d.ts +9 -0
- package/dist/radio/radio-group.stories.d.ts.map +1 -0
- package/dist/radio/radio-group.stories.js +44 -0
- package/dist/radio/radio-group.stories.js.map +1 -0
- package/dist/radio/radio.d.ts +29 -0
- package/dist/radio/radio.d.ts.map +1 -0
- package/dist/radio/radio.js +166 -0
- package/dist/radio/radio.js.map +1 -0
- package/dist/radio/radio.stories.d.ts +13 -0
- package/dist/radio/radio.stories.d.ts.map +1 -0
- package/dist/radio/radio.stories.js +28 -0
- package/dist/radio/radio.stories.js.map +1 -0
- package/dist/select/select.d.ts +63 -0
- package/dist/select/select.d.ts.map +1 -0
- package/dist/select/select.js +258 -0
- package/dist/select/select.js.map +1 -0
- package/dist/select/select.stories.d.ts +9 -0
- package/dist/select/select.stories.d.ts.map +1 -0
- package/dist/select/select.stories.js +46 -0
- package/dist/select/select.stories.js.map +1 -0
- package/dist/skeleton/skeleton.d.ts +39 -0
- package/dist/skeleton/skeleton.d.ts.map +1 -0
- package/dist/skeleton/skeleton.js +111 -0
- package/dist/skeleton/skeleton.js.map +1 -0
- package/dist/skeleton/skeleton.stories.d.ts +9 -0
- package/dist/skeleton/skeleton.stories.d.ts.map +1 -0
- package/dist/skeleton/skeleton.stories.js +36 -0
- package/dist/skeleton/skeleton.stories.js.map +1 -0
- package/dist/spinner/spinner.d.ts +29 -0
- package/dist/spinner/spinner.d.ts.map +1 -0
- package/dist/spinner/spinner.js +131 -0
- package/dist/spinner/spinner.js.map +1 -0
- package/dist/spinner/spinner.stories.d.ts +8 -0
- package/dist/spinner/spinner.stories.d.ts.map +1 -0
- package/dist/spinner/spinner.stories.js +29 -0
- package/dist/spinner/spinner.stories.js.map +1 -0
- package/dist/tabs/tab-list.d.ts +45 -0
- package/dist/tabs/tab-list.d.ts.map +1 -0
- package/dist/tabs/tab-list.js +150 -0
- package/dist/tabs/tab-list.js.map +1 -0
- package/dist/tabs/tab-list.stories.d.ts +7 -0
- package/dist/tabs/tab-list.stories.d.ts.map +1 -0
- package/dist/tabs/tab-list.stories.js +27 -0
- package/dist/tabs/tab-list.stories.js.map +1 -0
- package/dist/tabs/tab.d.ts +40 -0
- package/dist/tabs/tab.d.ts.map +1 -0
- package/dist/tabs/tab.js +114 -0
- package/dist/tabs/tab.js.map +1 -0
- package/dist/tabs/tab.stories.d.ts +13 -0
- package/dist/tabs/tab.stories.d.ts.map +1 -0
- package/dist/tabs/tab.stories.js +28 -0
- package/dist/tabs/tab.stories.js.map +1 -0
- package/dist/tag/tag.d.ts +38 -0
- package/dist/tag/tag.d.ts.map +1 -0
- package/dist/tag/tag.js +71 -0
- package/dist/tag/tag.js.map +1 -0
- package/dist/tag/tag.stories.d.ts +10 -0
- package/dist/tag/tag.stories.d.ts.map +1 -0
- package/dist/tag/tag.stories.js +43 -0
- package/dist/tag/tag.stories.js.map +1 -0
- package/dist/test-setup.d.ts +2 -0
- package/dist/test-setup.d.ts.map +1 -0
- package/dist/test-setup.js +2 -0
- package/dist/test-setup.js.map +1 -0
- package/dist/textarea/textarea.d.ts +60 -0
- package/dist/textarea/textarea.d.ts.map +1 -0
- package/dist/textarea/textarea.js +232 -0
- package/dist/textarea/textarea.js.map +1 -0
- package/dist/textarea/textarea.stories.d.ts +10 -0
- package/dist/textarea/textarea.stories.d.ts.map +1 -0
- package/dist/textarea/textarea.stories.js +47 -0
- package/dist/textarea/textarea.stories.js.map +1 -0
- package/dist/toggle/toggle.d.ts +43 -0
- package/dist/toggle/toggle.d.ts.map +1 -0
- package/dist/toggle/toggle.js +189 -0
- package/dist/toggle/toggle.js.map +1 -0
- package/dist/toggle/toggle.stories.d.ts +9 -0
- package/dist/toggle/toggle.stories.d.ts.map +1 -0
- package/dist/toggle/toggle.stories.js +34 -0
- package/dist/toggle/toggle.stories.js.map +1 -0
- package/package.json +65 -0
- package/src/react.d.ts +199 -0
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import { LitElement, html, css, nothing } from 'lit';
|
|
8
|
+
import { customElement, property, query } from 'lit/decorators.js';
|
|
9
|
+
/**
|
|
10
|
+
* A form-associated select dropdown with label, helper text, and error state.
|
|
11
|
+
*
|
|
12
|
+
* Pass options via the `options` property (array of `{ value, label, disabled? }`).
|
|
13
|
+
* Uses `ElementInternals` for native form participation and `delegatesFocus`
|
|
14
|
+
* so the host forwards focus to the inner `<select>`.
|
|
15
|
+
*
|
|
16
|
+
* Reuses `--component-input-*` tokens — the input token set covers
|
|
17
|
+
* text input, textarea, and select (see tokens/components/input.tokens.json).
|
|
18
|
+
*
|
|
19
|
+
* @fires change - When the selected value changes
|
|
20
|
+
* @csspart label - The label element
|
|
21
|
+
* @csspart select - The inner select element
|
|
22
|
+
* @csspart helper - The helper text container
|
|
23
|
+
* @csspart error - The error message container
|
|
24
|
+
*/
|
|
25
|
+
let RrSelect = class RrSelect extends LitElement {
|
|
26
|
+
constructor() {
|
|
27
|
+
super();
|
|
28
|
+
/** Form field name submitted with the selected value. */
|
|
29
|
+
this.name = '';
|
|
30
|
+
/** Selected option value. */
|
|
31
|
+
this.value = '';
|
|
32
|
+
/** Field label rendered above the select. */
|
|
33
|
+
this.label = '';
|
|
34
|
+
/** Helper text shown when there is no error. Maps to attribute helper-text. */
|
|
35
|
+
this.helperText = '';
|
|
36
|
+
/** Error message; sets data-invalid and a custom validity. Maps to attribute error-text. */
|
|
37
|
+
this.errorText = '';
|
|
38
|
+
/** Marks the field as required and shows an asterisk. */
|
|
39
|
+
this.required = false;
|
|
40
|
+
/** Disables the select. */
|
|
41
|
+
this.disabled = false;
|
|
42
|
+
/** Options to render: array of { value: string; label: string; disabled?: boolean }. */
|
|
43
|
+
this.options = [];
|
|
44
|
+
this._internals = this.attachInternals();
|
|
45
|
+
}
|
|
46
|
+
get _isInvalid() {
|
|
47
|
+
return this.errorText.length > 0;
|
|
48
|
+
}
|
|
49
|
+
updated(changed) {
|
|
50
|
+
if (changed.has('value')) {
|
|
51
|
+
this._internals.setFormValue?.(this.value);
|
|
52
|
+
}
|
|
53
|
+
// Sync the native select's displayed selection with `value`. There is no
|
|
54
|
+
// template binding for this — a `.value` binding on <select> commits
|
|
55
|
+
// before the <option> children render and silently no-ops — and `options`
|
|
56
|
+
// often arrive after the element upgrades. Only applied when `value`
|
|
57
|
+
// matches a real option; otherwise the native select keeps its own
|
|
58
|
+
// selection.
|
|
59
|
+
if (changed.has('value') || changed.has('options')) {
|
|
60
|
+
if (this._select &&
|
|
61
|
+
this._select.value !== this.value &&
|
|
62
|
+
this.options.some(o => o.value === this.value)) {
|
|
63
|
+
this._select.value = this.value;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
if (changed.has('errorText')) {
|
|
67
|
+
if (this._isInvalid) {
|
|
68
|
+
this.setAttribute('data-invalid', '');
|
|
69
|
+
this._internals.setValidity?.({ customError: true }, this.errorText, this._select);
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
this.removeAttribute('data-invalid');
|
|
73
|
+
this._internals.setValidity?.({});
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
_onChange(e) {
|
|
78
|
+
const select = e.target;
|
|
79
|
+
this.value = select.value;
|
|
80
|
+
this._internals.setFormValue?.(this.value);
|
|
81
|
+
this.dispatchEvent(new Event('change', { bubbles: true, composed: true }));
|
|
82
|
+
}
|
|
83
|
+
render() {
|
|
84
|
+
const hasLabel = this.label.length > 0;
|
|
85
|
+
const describedBy = this._isInvalid ? 'error' : this.helperText ? 'helper' : undefined;
|
|
86
|
+
return html `
|
|
87
|
+
${hasLabel
|
|
88
|
+
? html `<label part="label" for="select">
|
|
89
|
+
${this.label}${this.required
|
|
90
|
+
? html `<span class="required" aria-hidden="true">*</span>`
|
|
91
|
+
: nothing}
|
|
92
|
+
</label>`
|
|
93
|
+
: nothing}
|
|
94
|
+
<div class="wrapper">
|
|
95
|
+
<select
|
|
96
|
+
part="select"
|
|
97
|
+
id="select"
|
|
98
|
+
.name=${this.name}
|
|
99
|
+
.disabled=${this.disabled}
|
|
100
|
+
.required=${this.required}
|
|
101
|
+
aria-required=${this.required ? 'true' : nothing}
|
|
102
|
+
aria-invalid=${this._isInvalid ? 'true' : nothing}
|
|
103
|
+
aria-errormessage=${this._isInvalid ? 'error' : nothing}
|
|
104
|
+
aria-describedby=${describedBy || nothing}
|
|
105
|
+
@change=${this._onChange}
|
|
106
|
+
>
|
|
107
|
+
${this.options.map(opt => html `
|
|
108
|
+
<option value=${opt.value} ?disabled=${opt.disabled ?? false}>
|
|
109
|
+
${opt.label}
|
|
110
|
+
</option>
|
|
111
|
+
`)}
|
|
112
|
+
</select>
|
|
113
|
+
<span class="arrow" aria-hidden="true">
|
|
114
|
+
<svg width="12" height="12" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
115
|
+
<path d="M2 4.5L6 8.5L10 4.5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
|
|
116
|
+
</svg>
|
|
117
|
+
</span>
|
|
118
|
+
</div>
|
|
119
|
+
${this.helperText && !this._isInvalid
|
|
120
|
+
? html `<div id="helper" part="helper" class="helper">${this.helperText}</div>`
|
|
121
|
+
: nothing}
|
|
122
|
+
${this._isInvalid
|
|
123
|
+
? html `<div id="error" part="error" class="error" role="alert">${this.errorText}</div>`
|
|
124
|
+
: nothing}
|
|
125
|
+
`;
|
|
126
|
+
}
|
|
127
|
+
};
|
|
128
|
+
RrSelect.formAssociated = true;
|
|
129
|
+
RrSelect.shadowRootOptions = {
|
|
130
|
+
...LitElement.shadowRootOptions,
|
|
131
|
+
delegatesFocus: true,
|
|
132
|
+
};
|
|
133
|
+
RrSelect.styles = css `
|
|
134
|
+
:host {
|
|
135
|
+
display: block;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
label {
|
|
139
|
+
display: block;
|
|
140
|
+
font: var(--font-label-medium);
|
|
141
|
+
color: var(--component-input-foreground-label);
|
|
142
|
+
margin-bottom: 4px;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
.required {
|
|
146
|
+
color: var(--component-input-foreground-label-required);
|
|
147
|
+
margin-left: 2px;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
.wrapper {
|
|
151
|
+
position: relative;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
select {
|
|
155
|
+
display: block;
|
|
156
|
+
width: 100%;
|
|
157
|
+
box-sizing: border-box;
|
|
158
|
+
font: var(--font-body-large);
|
|
159
|
+
color: var(--component-input-foreground-value);
|
|
160
|
+
background: var(--component-input-background-default);
|
|
161
|
+
border: 1px solid var(--component-input-border-default);
|
|
162
|
+
border-radius: var(--component-input-radius);
|
|
163
|
+
padding: var(--component-input-padding-y) var(--component-input-padding-x);
|
|
164
|
+
padding-right: 36px;
|
|
165
|
+
outline: none;
|
|
166
|
+
appearance: none;
|
|
167
|
+
-webkit-appearance: none;
|
|
168
|
+
cursor: pointer;
|
|
169
|
+
transition: border-color var(--motion-duration-instant) var(--motion-easing-default);
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
select:hover {
|
|
173
|
+
border-color: var(--component-input-border-hover);
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
select:focus {
|
|
177
|
+
border-color: var(--component-input-border-focus);
|
|
178
|
+
box-shadow: 0 0 0 1px var(--component-input-border-focus);
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
.arrow {
|
|
182
|
+
position: absolute;
|
|
183
|
+
right: 10px;
|
|
184
|
+
top: 50%;
|
|
185
|
+
transform: translateY(-50%);
|
|
186
|
+
pointer-events: none;
|
|
187
|
+
color: var(--component-input-foreground-label);
|
|
188
|
+
display: flex;
|
|
189
|
+
align-items: center;
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
:host([disabled]) select {
|
|
193
|
+
background: var(--component-input-background-disabled);
|
|
194
|
+
border-color: var(--component-input-border-disabled);
|
|
195
|
+
color: var(--component-input-foreground-disabled);
|
|
196
|
+
cursor: not-allowed;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
:host([disabled]) label {
|
|
200
|
+
color: var(--component-input-foreground-disabled);
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
:host([disabled]) .arrow {
|
|
204
|
+
color: var(--component-input-foreground-disabled);
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
:host([data-invalid]) select {
|
|
208
|
+
border-color: var(--component-input-border-error);
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
:host([data-invalid]) select:focus {
|
|
212
|
+
box-shadow: 0 0 0 1px var(--component-input-border-error);
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
.helper {
|
|
216
|
+
font: var(--font-label-small);
|
|
217
|
+
color: var(--component-input-foreground-helper);
|
|
218
|
+
margin-top: 4px;
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
.error {
|
|
222
|
+
font: var(--font-label-small);
|
|
223
|
+
color: var(--component-input-foreground-error);
|
|
224
|
+
margin-top: 4px;
|
|
225
|
+
}
|
|
226
|
+
`;
|
|
227
|
+
__decorate([
|
|
228
|
+
property()
|
|
229
|
+
], RrSelect.prototype, "name", void 0);
|
|
230
|
+
__decorate([
|
|
231
|
+
property({ reflect: true })
|
|
232
|
+
], RrSelect.prototype, "value", void 0);
|
|
233
|
+
__decorate([
|
|
234
|
+
property()
|
|
235
|
+
], RrSelect.prototype, "label", void 0);
|
|
236
|
+
__decorate([
|
|
237
|
+
property({ attribute: 'helper-text' })
|
|
238
|
+
], RrSelect.prototype, "helperText", void 0);
|
|
239
|
+
__decorate([
|
|
240
|
+
property({ attribute: 'error-text' })
|
|
241
|
+
], RrSelect.prototype, "errorText", void 0);
|
|
242
|
+
__decorate([
|
|
243
|
+
property({ type: Boolean, reflect: true })
|
|
244
|
+
], RrSelect.prototype, "required", void 0);
|
|
245
|
+
__decorate([
|
|
246
|
+
property({ type: Boolean, reflect: true })
|
|
247
|
+
], RrSelect.prototype, "disabled", void 0);
|
|
248
|
+
__decorate([
|
|
249
|
+
property({ type: Array })
|
|
250
|
+
], RrSelect.prototype, "options", void 0);
|
|
251
|
+
__decorate([
|
|
252
|
+
query('select')
|
|
253
|
+
], RrSelect.prototype, "_select", void 0);
|
|
254
|
+
RrSelect = __decorate([
|
|
255
|
+
customElement('rr-select')
|
|
256
|
+
], RrSelect);
|
|
257
|
+
export { RrSelect };
|
|
258
|
+
//# sourceMappingURL=select.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"select.js","sourceRoot":"","sources":["../../src/select/select.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Meta, StoryObj } from '@storybook/web-components-vite';
|
|
2
|
+
import '@digital2analogue2/parsimony-components';
|
|
3
|
+
declare const meta: Meta;
|
|
4
|
+
export default meta;
|
|
5
|
+
type Story = StoryObj;
|
|
6
|
+
export declare const Default: Story;
|
|
7
|
+
export declare const WithValue: Story;
|
|
8
|
+
export declare const WithError: Story;
|
|
9
|
+
//# sourceMappingURL=select.stories.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"select.stories.d.ts","sourceRoot":"","sources":["../../src/select/select.stories.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAErE,OAAO,yCAAyC,CAAC;AAQjD,QAAA,MAAM,IAAI,EAAE,IAiCX,CAAC;AACF,eAAe,IAAI,CAAC;AAEpB,KAAK,KAAK,GAAG,QAAQ,CAAC;AAEtB,eAAO,MAAM,OAAO,EAAE,KAAU,CAAC;AAEjC,eAAO,MAAM,SAAS,EAAE,KAAgC,CAAC;AAEzD,eAAO,MAAM,SAAS,EAAE,KAAyD,CAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { html } from 'lit';
|
|
2
|
+
import '@digital2analogue2/parsimony-components';
|
|
3
|
+
const options = [
|
|
4
|
+
{ label: 'One', value: '1' },
|
|
5
|
+
{ label: 'Two', value: '2' },
|
|
6
|
+
{ label: 'Three', value: '3' },
|
|
7
|
+
];
|
|
8
|
+
const meta = {
|
|
9
|
+
title: 'Components/Select',
|
|
10
|
+
component: 'rr-select',
|
|
11
|
+
argTypes: {
|
|
12
|
+
name: { control: 'text' },
|
|
13
|
+
value: { control: 'text' },
|
|
14
|
+
label: { control: 'text' },
|
|
15
|
+
helperText: { control: 'text' },
|
|
16
|
+
errorText: { control: 'text' },
|
|
17
|
+
required: { control: 'boolean' },
|
|
18
|
+
disabled: { control: 'boolean' },
|
|
19
|
+
},
|
|
20
|
+
args: {
|
|
21
|
+
name: '',
|
|
22
|
+
value: '',
|
|
23
|
+
label: 'Quantity',
|
|
24
|
+
helperText: '',
|
|
25
|
+
errorText: '',
|
|
26
|
+
required: false,
|
|
27
|
+
disabled: false,
|
|
28
|
+
},
|
|
29
|
+
render: ({ name, value, label, helperText, errorText, required, disabled }) => html `
|
|
30
|
+
<rr-select
|
|
31
|
+
name=${name}
|
|
32
|
+
value=${value}
|
|
33
|
+
label=${label}
|
|
34
|
+
helper-text=${helperText}
|
|
35
|
+
error-text=${errorText}
|
|
36
|
+
?required=${required}
|
|
37
|
+
?disabled=${disabled}
|
|
38
|
+
.options=${options}
|
|
39
|
+
></rr-select>
|
|
40
|
+
`,
|
|
41
|
+
};
|
|
42
|
+
export default meta;
|
|
43
|
+
export const Default = {};
|
|
44
|
+
export const WithValue = { args: { value: '2' } };
|
|
45
|
+
export const WithError = { args: { errorText: 'Please choose a value.' } };
|
|
46
|
+
//# sourceMappingURL=select.stories.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"select.stories.js","sourceRoot":"","sources":["../../src/select/select.stories.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAC3B,OAAO,yCAAyC,CAAC;AAEjD,MAAM,OAAO,GAAG;IACd,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE;IAC5B,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE;IAC5B,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE;CAC/B,CAAC;AAEF,MAAM,IAAI,GAAS;IACjB,KAAK,EAAE,mBAAmB;IAC1B,SAAS,EAAE,WAAW;IACtB,QAAQ,EAAE;QACR,IAAI,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE;QACzB,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE;QAC1B,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE;QAC1B,UAAU,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE;QAC/B,SAAS,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE;QAC9B,QAAQ,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE;QAChC,QAAQ,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE;KACjC;IACD,IAAI,EAAE;QACJ,IAAI,EAAE,EAAE;QACR,KAAK,EAAE,EAAE;QACT,KAAK,EAAE,UAAU;QACjB,UAAU,EAAE,EAAE;QACd,SAAS,EAAE,EAAE;QACb,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,KAAK;KAChB;IACD,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,IAAI,CAAA;;aAExE,IAAI;cACH,KAAK;cACL,KAAK;oBACC,UAAU;mBACX,SAAS;kBACV,QAAQ;kBACR,QAAQ;iBACT,OAAO;;GAErB;CACF,CAAC;AACF,eAAe,IAAI,CAAC;AAIpB,MAAM,CAAC,MAAM,OAAO,GAAU,EAAE,CAAC;AAEjC,MAAM,CAAC,MAAM,SAAS,GAAU,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC;AAEzD,MAAM,CAAC,MAAM,SAAS,GAAU,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,wBAAwB,EAAE,EAAE,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { LitElement } from 'lit';
|
|
2
|
+
export type SkeletonVariant = 'text' | 'circular' | 'rectangular';
|
|
3
|
+
/**
|
|
4
|
+
* `<rr-skeleton>` — animated shimmer placeholder for loading states.
|
|
5
|
+
*
|
|
6
|
+
* Use in place of content while data is being fetched. Three shape
|
|
7
|
+
* variants match common content types: text lines, avatars, and image blocks.
|
|
8
|
+
*
|
|
9
|
+
* @attr {text|circular|rectangular} variant - Shape of the skeleton (default: text)
|
|
10
|
+
* @attr width - CSS width value (default: '100%' for text/rectangular, '40px' for circular)
|
|
11
|
+
* @attr height - CSS height value (default: '1em' for text, '40px' for circular/rectangular)
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* <!-- Text line skeleton -->
|
|
15
|
+
* <rr-skeleton></rr-skeleton>
|
|
16
|
+
*
|
|
17
|
+
* <!-- Avatar skeleton -->
|
|
18
|
+
* <rr-skeleton variant="circular" width="40px" height="40px"></rr-skeleton>
|
|
19
|
+
*
|
|
20
|
+
* <!-- Card image skeleton -->
|
|
21
|
+
* <rr-skeleton variant="rectangular" height="200px"></rr-skeleton>
|
|
22
|
+
*/
|
|
23
|
+
export declare class RrSkeleton extends LitElement {
|
|
24
|
+
static styles: import("lit").CSSResult;
|
|
25
|
+
/** Shape of the skeleton. */
|
|
26
|
+
variant: SkeletonVariant;
|
|
27
|
+
/** CSS width value. Defaults to 40px for circular, otherwise 100%. */
|
|
28
|
+
width: string;
|
|
29
|
+
/** CSS height value. Defaults to 40px for circular, otherwise 1em. */
|
|
30
|
+
height: string;
|
|
31
|
+
private get _style();
|
|
32
|
+
render(): import("lit-html").TemplateResult<1>;
|
|
33
|
+
}
|
|
34
|
+
declare global {
|
|
35
|
+
interface HTMLElementTagNameMap {
|
|
36
|
+
'rr-skeleton': RrSkeleton;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=skeleton.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skeleton.d.ts","sourceRoot":"","sources":["../../src/skeleton/skeleton.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAa,MAAM,KAAK,CAAC;AAG5C,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,UAAU,GAAG,aAAa,CAAC;AAElE;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBACa,UAAW,SAAQ,UAAU;IACxC,MAAM,CAAC,MAAM,0BA0CX;IAEF,6BAA6B;IACA,OAAO,EAAE,eAAe,CAAU;IAE/D,sEAAsE;IAC1D,KAAK,SAAM;IAEvB,sEAAsE;IAC1D,MAAM,SAAM;IAExB,OAAO,KAAK,MAAM,GAIjB;IAED,MAAM;CAUP;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,aAAa,EAAE,UAAU,CAAC;KAC3B;CACF"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import { LitElement, html, css } from 'lit';
|
|
8
|
+
import { customElement, property } from 'lit/decorators.js';
|
|
9
|
+
/**
|
|
10
|
+
* `<rr-skeleton>` — animated shimmer placeholder for loading states.
|
|
11
|
+
*
|
|
12
|
+
* Use in place of content while data is being fetched. Three shape
|
|
13
|
+
* variants match common content types: text lines, avatars, and image blocks.
|
|
14
|
+
*
|
|
15
|
+
* @attr {text|circular|rectangular} variant - Shape of the skeleton (default: text)
|
|
16
|
+
* @attr width - CSS width value (default: '100%' for text/rectangular, '40px' for circular)
|
|
17
|
+
* @attr height - CSS height value (default: '1em' for text, '40px' for circular/rectangular)
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* <!-- Text line skeleton -->
|
|
21
|
+
* <rr-skeleton></rr-skeleton>
|
|
22
|
+
*
|
|
23
|
+
* <!-- Avatar skeleton -->
|
|
24
|
+
* <rr-skeleton variant="circular" width="40px" height="40px"></rr-skeleton>
|
|
25
|
+
*
|
|
26
|
+
* <!-- Card image skeleton -->
|
|
27
|
+
* <rr-skeleton variant="rectangular" height="200px"></rr-skeleton>
|
|
28
|
+
*/
|
|
29
|
+
let RrSkeleton = class RrSkeleton extends LitElement {
|
|
30
|
+
constructor() {
|
|
31
|
+
super(...arguments);
|
|
32
|
+
/** Shape of the skeleton. */
|
|
33
|
+
this.variant = 'text';
|
|
34
|
+
/** CSS width value. Defaults to 40px for circular, otherwise 100%. */
|
|
35
|
+
this.width = '';
|
|
36
|
+
/** CSS height value. Defaults to 40px for circular, otherwise 1em. */
|
|
37
|
+
this.height = '';
|
|
38
|
+
}
|
|
39
|
+
get _style() {
|
|
40
|
+
const w = this.width || (this.variant === 'circular' ? '40px' : '100%');
|
|
41
|
+
const h = this.height || (this.variant === 'circular' ? '40px' : '1em');
|
|
42
|
+
return `width: ${w}; height: ${h};`;
|
|
43
|
+
}
|
|
44
|
+
render() {
|
|
45
|
+
return html `
|
|
46
|
+
<span
|
|
47
|
+
class="skeleton"
|
|
48
|
+
role="presentation"
|
|
49
|
+
aria-hidden="true"
|
|
50
|
+
style="${this._style}"
|
|
51
|
+
></span>
|
|
52
|
+
`;
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
RrSkeleton.styles = css `
|
|
56
|
+
:host {
|
|
57
|
+
display: block;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
.skeleton {
|
|
61
|
+
background: var(--color-background-disabled);
|
|
62
|
+
background-image: linear-gradient(
|
|
63
|
+
90deg,
|
|
64
|
+
var(--color-background-disabled) 0%,
|
|
65
|
+
var(--color-background-alt) 50%,
|
|
66
|
+
var(--color-background-disabled) 100%
|
|
67
|
+
);
|
|
68
|
+
background-size: 200% 100%;
|
|
69
|
+
animation: rr-shimmer 1.6s ease-in-out infinite;
|
|
70
|
+
border-radius: var(--radius-sm);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
@media (prefers-reduced-motion: reduce) {
|
|
74
|
+
.skeleton {
|
|
75
|
+
animation: none;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
:host([variant='text']) .skeleton {
|
|
80
|
+
border-radius: var(--radius-sm);
|
|
81
|
+
transform: scaleY(0.85);
|
|
82
|
+
transform-origin: center;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
:host([variant='circular']) .skeleton {
|
|
86
|
+
border-radius: var(--radius-full);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
:host([variant='rectangular']) .skeleton {
|
|
90
|
+
border-radius: var(--radius-default);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
@keyframes rr-shimmer {
|
|
94
|
+
0% { background-position: 200% 0; }
|
|
95
|
+
100% { background-position: -200% 0; }
|
|
96
|
+
}
|
|
97
|
+
`;
|
|
98
|
+
__decorate([
|
|
99
|
+
property({ reflect: true })
|
|
100
|
+
], RrSkeleton.prototype, "variant", void 0);
|
|
101
|
+
__decorate([
|
|
102
|
+
property()
|
|
103
|
+
], RrSkeleton.prototype, "width", void 0);
|
|
104
|
+
__decorate([
|
|
105
|
+
property()
|
|
106
|
+
], RrSkeleton.prototype, "height", void 0);
|
|
107
|
+
RrSkeleton = __decorate([
|
|
108
|
+
customElement('rr-skeleton')
|
|
109
|
+
], RrSkeleton);
|
|
110
|
+
export { RrSkeleton };
|
|
111
|
+
//# sourceMappingURL=skeleton.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skeleton.js","sourceRoot":"","sources":["../../src/skeleton/skeleton.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAI5D;;;;;;;;;;;;;;;;;;;GAmBG;AAEI,IAAM,UAAU,GAAhB,MAAM,UAAW,SAAQ,UAAU;IAAnC;;QA6CL,6BAA6B;QACA,YAAO,GAAoB,MAAM,CAAC;QAE/D,sEAAsE;QAC1D,UAAK,GAAG,EAAE,CAAC;QAEvB,sEAAsE;QAC1D,WAAM,GAAG,EAAE,CAAC;IAkB1B,CAAC;IAhBC,IAAY,MAAM;QAChB,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,OAAO,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QACxE,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACxE,OAAO,UAAU,CAAC,aAAa,CAAC,GAAG,CAAC;IACtC,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAA;;;;;iBAKE,IAAI,CAAC,MAAM;;KAEvB,CAAC;IACJ,CAAC;;AApEM,iBAAM,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0ClB,AA1CY,CA0CX;AAG2B;IAA5B,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;2CAAmC;AAGnD;IAAX,QAAQ,EAAE;yCAAY;AAGX;IAAX,QAAQ,EAAE;0CAAa;AApDb,UAAU;IADtB,aAAa,CAAC,aAAa,CAAC;GAChB,UAAU,CAsEtB"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Meta, StoryObj } from '@storybook/web-components-vite';
|
|
2
|
+
import '@digital2analogue2/parsimony-components';
|
|
3
|
+
declare const meta: Meta;
|
|
4
|
+
export default meta;
|
|
5
|
+
type Story = StoryObj;
|
|
6
|
+
export declare const Text: Story;
|
|
7
|
+
export declare const Circular: Story;
|
|
8
|
+
export declare const Rectangular: Story;
|
|
9
|
+
//# sourceMappingURL=skeleton.stories.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skeleton.stories.d.ts","sourceRoot":"","sources":["../../src/skeleton/skeleton.stories.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAErE,OAAO,yCAAyC,CAAC;AAEjD,QAAA,MAAM,IAAI,EAAE,IAgBX,CAAC;AACF,eAAe,IAAI,CAAC;AAEpB,KAAK,KAAK,GAAG,QAAQ,CAAC;AAEtB,eAAO,MAAM,IAAI,EAAE,KAQlB,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,KAEtB,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KAEzB,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { html } from 'lit';
|
|
2
|
+
import '@digital2analogue2/parsimony-components';
|
|
3
|
+
const meta = {
|
|
4
|
+
title: 'Components/Skeleton',
|
|
5
|
+
component: 'rr-skeleton',
|
|
6
|
+
argTypes: {
|
|
7
|
+
variant: { control: 'select', options: ['text', 'circular', 'rectangular'] },
|
|
8
|
+
width: { control: 'text' },
|
|
9
|
+
height: { control: 'text' },
|
|
10
|
+
},
|
|
11
|
+
args: {
|
|
12
|
+
variant: 'text',
|
|
13
|
+
width: '',
|
|
14
|
+
height: '',
|
|
15
|
+
},
|
|
16
|
+
render: ({ variant, width, height }) => html `
|
|
17
|
+
<rr-skeleton variant=${variant} width=${width} height=${height}></rr-skeleton>
|
|
18
|
+
`,
|
|
19
|
+
};
|
|
20
|
+
export default meta;
|
|
21
|
+
export const Text = {
|
|
22
|
+
render: () => html `
|
|
23
|
+
<div style="display: flex; flex-direction: column; gap: var(--spacing-tight);">
|
|
24
|
+
<rr-skeleton variant="text"></rr-skeleton>
|
|
25
|
+
<rr-skeleton variant="text"></rr-skeleton>
|
|
26
|
+
<rr-skeleton variant="text" width="60%"></rr-skeleton>
|
|
27
|
+
</div>
|
|
28
|
+
`,
|
|
29
|
+
};
|
|
30
|
+
export const Circular = {
|
|
31
|
+
args: { variant: 'circular', width: '48px', height: '48px' },
|
|
32
|
+
};
|
|
33
|
+
export const Rectangular = {
|
|
34
|
+
args: { variant: 'rectangular', width: '100%', height: '120px' },
|
|
35
|
+
};
|
|
36
|
+
//# sourceMappingURL=skeleton.stories.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skeleton.stories.js","sourceRoot":"","sources":["../../src/skeleton/skeleton.stories.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAC3B,OAAO,yCAAyC,CAAC;AAEjD,MAAM,IAAI,GAAS;IACjB,KAAK,EAAE,qBAAqB;IAC5B,SAAS,EAAE,aAAa;IACxB,QAAQ,EAAE;QACR,OAAO,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,aAAa,CAAC,EAAE;QAC5E,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE;QAC1B,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE;KAC5B;IACD,IAAI,EAAE;QACJ,OAAO,EAAE,MAAM;QACf,KAAK,EAAE,EAAE;QACT,MAAM,EAAE,EAAE;KACX;IACD,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,IAAI,CAAA;2BACnB,OAAO,UAAU,KAAK,WAAW,MAAM;GAC/D;CACF,CAAC;AACF,eAAe,IAAI,CAAC;AAIpB,MAAM,CAAC,MAAM,IAAI,GAAU;IACzB,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,CAAA;;;;;;GAMjB;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAU;IAC7B,IAAI,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE;CAC7D,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAU;IAChC,IAAI,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE;CACjE,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { LitElement } from 'lit';
|
|
2
|
+
export type SpinnerSize = 'sm' | 'md' | 'lg';
|
|
3
|
+
/**
|
|
4
|
+
* `<rr-spinner>` — animated loading indicator.
|
|
5
|
+
*
|
|
6
|
+
* Renders a circular SVG spinner using the action color token.
|
|
7
|
+
* Announces to screen readers via an `aria-live` region.
|
|
8
|
+
*
|
|
9
|
+
* @attr {sm|md|lg} size - Visual size (default: md)
|
|
10
|
+
* @attr label - Accessible label text (default: "Loading")
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* <rr-spinner></rr-spinner>
|
|
14
|
+
* <rr-spinner size="sm" label="Saving…"></rr-spinner>
|
|
15
|
+
*/
|
|
16
|
+
export declare class RrSpinner extends LitElement {
|
|
17
|
+
static styles: import("lit").CSSResult;
|
|
18
|
+
/** Visual size of the spinner. Reflected to the size attribute. */
|
|
19
|
+
size: SpinnerSize;
|
|
20
|
+
/** Accessible label announced to screen readers via the status region. */
|
|
21
|
+
label: string;
|
|
22
|
+
render(): import("lit-html").TemplateResult<1>;
|
|
23
|
+
}
|
|
24
|
+
declare global {
|
|
25
|
+
interface HTMLElementTagNameMap {
|
|
26
|
+
'rr-spinner': RrSpinner;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=spinner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spinner.d.ts","sourceRoot":"","sources":["../../src/spinner/spinner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAa,MAAM,KAAK,CAAC;AAG5C,MAAM,MAAM,WAAW,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAE7C;;;;;;;;;;;;GAYG;AACH,qBACa,SAAU,SAAQ,UAAU;IACvC,MAAM,CAAC,MAAM,0BAiEX;IAEF,mEAAmE;IACtC,IAAI,EAAE,WAAW,CAAQ;IAEtD,0EAA0E;IAC9D,KAAK,SAAa;IAE9B,MAAM;CAwBP;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,YAAY,EAAE,SAAS,CAAC;KACzB;CACF"}
|