@knowark/componarkjs 1.7.3
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/Makefile +49 -0
- package/README.md +47 -0
- package/knowarkjs.code-workspace +29 -0
- package/lib/base/component/README.rst +113 -0
- package/lib/base/component/component.js +115 -0
- package/lib/base/component/component.test.js +327 -0
- package/lib/base/component/index.js +3 -0
- package/lib/base/index.js +1 -0
- package/lib/base/styles/index.js +3 -0
- package/lib/base/styles/styles.js +320 -0
- package/lib/base/utils/define.js +21 -0
- package/lib/base/utils/define.test.js +62 -0
- package/lib/base/utils/format.js +24 -0
- package/lib/base/utils/format.test.js +19 -0
- package/lib/base/utils/helpers.js +96 -0
- package/lib/base/utils/helpers.test.js +154 -0
- package/lib/base/utils/index.js +5 -0
- package/lib/base/utils/slots.js +18 -0
- package/lib/base/utils/slots.test.js +52 -0
- package/lib/base/utils/uuid.js +9 -0
- package/lib/base/utils/uuid.test.js +19 -0
- package/lib/components/audio/README.md +22 -0
- package/lib/components/audio/components/audio.js +103 -0
- package/lib/components/audio/components/audio.test.js +127 -0
- package/lib/components/audio/index.js +1 -0
- package/lib/components/audio/styles/ark.css.js +83 -0
- package/lib/components/audio/styles/index.js +2 -0
- package/lib/components/camera/README.md +64 -0
- package/lib/components/camera/components/camera.js +85 -0
- package/lib/components/camera/components/camera.test.js +104 -0
- package/lib/components/camera/index.js +1 -0
- package/lib/components/camera/styles/ark.css.js +17 -0
- package/lib/components/camera/styles/index.js +2 -0
- package/lib/components/capture/components/capture.js +54 -0
- package/lib/components/capture/components/capture.test.js +112 -0
- package/lib/components/capture/index.js +1 -0
- package/lib/components/droparea/README.md +51 -0
- package/lib/components/droparea/components/droparea-preview.js +159 -0
- package/lib/components/droparea/components/droparea-preview.test.js +105 -0
- package/lib/components/droparea/components/droparea.js +165 -0
- package/lib/components/droparea/components/droparea.test.js +320 -0
- package/lib/components/droparea/index.js +1 -0
- package/lib/components/droparea/styles/ark.css.js +235 -0
- package/lib/components/droparea/styles/index.js +3 -0
- package/lib/components/emit/components/emit.js +33 -0
- package/lib/components/emit/components/emit.test.js +138 -0
- package/lib/components/emit/index.js +1 -0
- package/lib/components/index.js +9 -0
- package/lib/components/list/README.md +103 -0
- package/lib/components/list/components/item.test.js +93 -0
- package/lib/components/list/components/list.item.js +22 -0
- package/lib/components/list/components/list.js +96 -0
- package/lib/components/list/components/list.test.js +267 -0
- package/lib/components/list/index.js +2 -0
- package/lib/components/paginator/README.md +32 -0
- package/lib/components/paginator/components/paginator.js +110 -0
- package/lib/components/paginator/components/paginator.test.js +131 -0
- package/lib/components/paginator/index.js +1 -0
- package/lib/components/paginator/styles/ark.css.js +196 -0
- package/lib/components/paginator/styles/index.js +2 -0
- package/lib/components/spinner/README.md +41 -0
- package/lib/components/spinner/components/spinner.js +105 -0
- package/lib/components/spinner/components/spinner.test.js +50 -0
- package/lib/components/spinner/index.js +1 -0
- package/lib/components/spinner/styles/ark.css.js +658 -0
- package/lib/components/spinner/styles/index.js +2 -0
- package/lib/components/splitview/README.md +63 -0
- package/lib/components/splitview/components/splitview.detail.js +46 -0
- package/lib/components/splitview/components/splitview.detail.test.js +92 -0
- package/lib/components/splitview/components/splitview.js +69 -0
- package/lib/components/splitview/components/splitview.master.js +26 -0
- package/lib/components/splitview/components/splitview.master.test.js +55 -0
- package/lib/components/splitview/components/splitview.test.js +76 -0
- package/lib/components/splitview/index.js +3 -0
- package/lib/components/translate/README.md +56 -0
- package/lib/components/translate/components/translate.js +100 -0
- package/lib/components/translate/components/translate.test.js +226 -0
- package/lib/components/translate/index.js +1 -0
- package/lib/index.js +2 -0
- package/package.json +68 -0
- package/showcase/design/.htaccess +8 -0
- package/showcase/design/core/factories/development/development.factory.js +5 -0
- package/showcase/design/core/factories/development/index.js +1 -0
- package/showcase/design/core/factories/index.js +11 -0
- package/showcase/design/core/factories/standard.factory.js +19 -0
- package/showcase/design/index.html +22 -0
- package/showcase/design/index.js +7 -0
- package/showcase/design/screens/base/audio/audioDemo.js +32 -0
- package/showcase/design/screens/base/audio/index.js +25 -0
- package/showcase/design/screens/base/camera/cameraDemo.js +83 -0
- package/showcase/design/screens/base/camera/index.js +25 -0
- package/showcase/design/screens/base/droparea/dropareaDemo.js +88 -0
- package/showcase/design/screens/base/droparea/index.js +25 -0
- package/showcase/design/screens/base/index.js +42 -0
- package/showcase/design/screens/base/list/index.js +25 -0
- package/showcase/design/screens/base/list/listDemo.js +89 -0
- package/showcase/design/screens/base/paginator/index.js +25 -0
- package/showcase/design/screens/base/paginator/paginatorDemo.js +82 -0
- package/showcase/design/screens/base/root.component.js +294 -0
- package/showcase/design/screens/base/root.routes.js +28 -0
- package/showcase/design/screens/base/spinner/index.js +25 -0
- package/showcase/design/screens/base/spinner/spinnerDemo.js +55 -0
- package/showcase/design/screens/base/splitview/detailDemo.js +40 -0
- package/showcase/design/screens/base/splitview/index.js +25 -0
- package/showcase/design/screens/base/splitview/splitViewDemo.js +58 -0
- package/showcase/design/screens/base/translate/index.js +20 -0
- package/showcase/design/screens/base/translate/translateDemo.js +43 -0
- package/showcase/design/screens/main.js +12 -0
- package/showcase/design/screens/screens.routes.js +23 -0
- package/showcase/index.html +86 -0
- package/showcase/index.js +5 -0
- package/showcase/locales/en/default.json +5 -0
- package/showcase/locales/es/default.json +5 -0
- package/showcase/locales/fr/default.json +5 -0
- package/tsconfig.json +23 -0
- package/webpack.config.cjs +118 -0
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
const css = String.raw; export default css`
|
|
2
|
+
.ark-paginator {
|
|
3
|
+
background: var(--canvas, white);
|
|
4
|
+
color: var(--ink, black);
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
/*-------------- THEME-------------- */
|
|
8
|
+
|
|
9
|
+
.ark-paginator[background=primary] {
|
|
10
|
+
background: var(--primary);
|
|
11
|
+
color: white;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
.ark-paginator.ark-paginator[color=primary] {
|
|
15
|
+
color: var(--primary);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
.ark-paginator[background=secondary] {
|
|
19
|
+
background: var(--secondary);
|
|
20
|
+
color: white;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
.ark-paginator.ark-paginator[color=secondary] {
|
|
24
|
+
color: var(--secondary);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.ark-paginator[background=success] {
|
|
28
|
+
background: var(--success);
|
|
29
|
+
color: white;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
.ark-paginator.ark-paginator[color=success] {
|
|
33
|
+
color: var(--success);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
.ark-paginator[background=danger] {
|
|
37
|
+
background: var(--danger);
|
|
38
|
+
color: white;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
.ark-paginator.ark-paginator[color=danger] {
|
|
42
|
+
color: var(--danger);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
.ark-paginator[background=warning] {
|
|
46
|
+
background: var(--warning);
|
|
47
|
+
color: white;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
.ark-paginator.ark-paginator[color=warning] {
|
|
51
|
+
color: var(--warning);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
.ark-paginator[background=info] {
|
|
55
|
+
background: var(--info);
|
|
56
|
+
color: white;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
.ark-paginator.ark-paginator[color=info] {
|
|
60
|
+
color: var(--info);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
.ark-paginator[background=dark] {
|
|
64
|
+
background: var(--dark);
|
|
65
|
+
color: white;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
.ark-paginator.ark-paginator[color=dark] {
|
|
69
|
+
color: var(--dark);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
.ark-paginator[background=muted] {
|
|
73
|
+
background: var(--muted);
|
|
74
|
+
color: white;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
.ark-paginator.ark-paginator[color=muted] {
|
|
78
|
+
color: var(--muted);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
.ark-paginator[background=light] {
|
|
82
|
+
background: var(--light);
|
|
83
|
+
color: white;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
.ark-paginator.ark-paginator[color=light] {
|
|
87
|
+
color: var(--light);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/*-------------------------------------------*/
|
|
91
|
+
|
|
92
|
+
.ark-paginator__body {
|
|
93
|
+
width: 100%;
|
|
94
|
+
display: grid;
|
|
95
|
+
grid-auto-flow: column;
|
|
96
|
+
justify-content: center;
|
|
97
|
+
align-items: center;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
.ark-paginator__footer {
|
|
101
|
+
display: grid;
|
|
102
|
+
grid-auto-flow: column;
|
|
103
|
+
justify-content: center;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
.ark-paginator__footer small[data-info] {
|
|
107
|
+
color: var(--primary);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
.ark-paginator__buttons {
|
|
111
|
+
margin: 10px;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
.ark-paginator__buttons button {
|
|
115
|
+
width: 1.8rem;
|
|
116
|
+
height: 1.8rem;
|
|
117
|
+
border: 0;
|
|
118
|
+
margin: 0.1rem;
|
|
119
|
+
background: inherit;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
.ark-paginator__buttons button:focus {
|
|
123
|
+
outline: none;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
.ark-paginator__buttons button:active {
|
|
127
|
+
border: 1px solid black;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
.ark-paginator__buttons button[on-click=_prev],
|
|
131
|
+
.ark-paginator__buttons button[on-click=_next] {
|
|
132
|
+
border: 2px solid rgba(128, 128, 128, 0.411);
|
|
133
|
+
background: white;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
.ark-paginator__buttons button[on-click=_first],
|
|
137
|
+
.ark-paginator__buttons button[on-click=_last] {
|
|
138
|
+
border: 2px solid rgba(128, 128, 128, 0.411);
|
|
139
|
+
background: white;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
.ark-paginator__pages {
|
|
143
|
+
display: grid;
|
|
144
|
+
grid-auto-flow: column;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
.ark-paginator__pages button {
|
|
148
|
+
min-width: 1.8rem;
|
|
149
|
+
width: 1.8rem;
|
|
150
|
+
min-height: 1.8rem;
|
|
151
|
+
height: 1.8rem;
|
|
152
|
+
border: 1px solid var(--primary);
|
|
153
|
+
margin: 0.1rem;
|
|
154
|
+
text-align: center;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
.ark-paginator__pages button:focus {
|
|
158
|
+
outline: none;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
.ark-paginator__pages button[active] {
|
|
162
|
+
background: var(--primary, blue);
|
|
163
|
+
color: white;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
.ark-paginator__buttons button {
|
|
167
|
+
border-radius: 4px;
|
|
168
|
+
transition: transform 0.1s ease-in-out;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
.ark-paginator__buttons button:hover {
|
|
172
|
+
transform: scale(1.05);
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
.ark-paginator__pages {
|
|
176
|
+
display: grid;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
.ark-paginator__pages button {
|
|
180
|
+
border-radius: 4px;
|
|
181
|
+
transition: transform 0.1s ease-in-out;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
.ark-paginator__pages button:focus {
|
|
185
|
+
outline: none;
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
.ark-paginator__pages button[active] {
|
|
189
|
+
background: var(--primary, blue);
|
|
190
|
+
color: white;
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
.ark-paginator__pages button:hover {
|
|
194
|
+
transform: scale(1.05);
|
|
195
|
+
}
|
|
196
|
+
`
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
SPINNER
|
|
2
|
+
=======
|
|
3
|
+
|
|
4
|
+
The ``ark-spinner`` creates an animated loading icon
|
|
5
|
+
|
|
6
|
+
Examples
|
|
7
|
+
--------
|
|
8
|
+
|
|
9
|
+
**Spinner with size specified**
|
|
10
|
+
|
|
11
|
+
```html
|
|
12
|
+
<ark-spinner size="1.5"></ark-spinner>
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
**Different types of spinners available**
|
|
16
|
+
|
|
17
|
+
```html
|
|
18
|
+
<ark-spinner type="chase"></ark-spinner>
|
|
19
|
+
<ark-spinner type="rect"></ark-spinner>
|
|
20
|
+
<ark-spinner type="loader"></ark-spinner>
|
|
21
|
+
<ark-spinner type="bounce"></ark-spinner>
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
Attributes
|
|
27
|
+
----------
|
|
28
|
+
|
|
29
|
+
| Name | Type | Default | Description |
|
|
30
|
+
| :---: | :----: | :------: | :--------------------------------------------------------------------------------: |
|
|
31
|
+
| size | string | "1" | Sets the size, by scale, being 1 the normal size and 2 double the size |
|
|
32
|
+
| type | string | "circle" | Specifies the style of the spinner ("circle", "chase", "rect", "loader", "bounce") |
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
Properties
|
|
36
|
+
----------
|
|
37
|
+
|
|
38
|
+
| Name | Type | Default | Description |
|
|
39
|
+
| :---: | :----: | :------: | :--------------------------------------------------------------------------------: |
|
|
40
|
+
| size | string | "1" | Sets the size, by scale, being 1 the normal size and 2 double the size |
|
|
41
|
+
| type | string | "circle" | Specifies the style of the spinner ("circle", "chase", "rect", "loader", "bounce") |
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { Component } from "../../../base/component/index.js"
|
|
2
|
+
import styles from "../styles/index.js"
|
|
3
|
+
|
|
4
|
+
const tag = "ark-spinner"
|
|
5
|
+
export class Spinner extends Component {
|
|
6
|
+
init(context = {}) {
|
|
7
|
+
this.scale = context.scale || this.scale || "1"
|
|
8
|
+
this.type = context.type || this.type || "circle"
|
|
9
|
+
|
|
10
|
+
return super.init()
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
reflectedProperties() {
|
|
14
|
+
return ["scale", "type"]
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
render() {
|
|
18
|
+
this.innerHTML = /* html */ `
|
|
19
|
+
${this.spinnerType(this.type)}
|
|
20
|
+
`
|
|
21
|
+
this.setScale(this.scale)
|
|
22
|
+
return super.render()
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
setScale(scale) {
|
|
26
|
+
this.style.setProperty('transform', `scale(${scale})`)
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/** @returns {HTMLElement} */
|
|
30
|
+
get loader() {
|
|
31
|
+
return this.querySelector("[data-loader]")
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
spinnerType(type) {
|
|
35
|
+
let content = ""
|
|
36
|
+
|
|
37
|
+
if (type === 'circle') {
|
|
38
|
+
content = /*html*/ `
|
|
39
|
+
<div data-loader class="sk-fading-circle">
|
|
40
|
+
<div class="sk-circle1 sk-circle"></div>
|
|
41
|
+
<div class="sk-circle2 sk-circle"></div>
|
|
42
|
+
<div class="sk-circle3 sk-circle"></div>
|
|
43
|
+
<div class="sk-circle4 sk-circle"></div>
|
|
44
|
+
<div class="sk-circle5 sk-circle"></div>
|
|
45
|
+
<div class="sk-circle6 sk-circle"></div>
|
|
46
|
+
<div class="sk-circle7 sk-circle"></div>
|
|
47
|
+
<div class="sk-circle8 sk-circle"></div>
|
|
48
|
+
<div class="sk-circle9 sk-circle"></div>
|
|
49
|
+
<div class="sk-circle10 sk-circle"></div>
|
|
50
|
+
<div class="sk-circle11 sk-circle"></div>
|
|
51
|
+
<div class="sk-circle12 sk-circle"></div>
|
|
52
|
+
</div>
|
|
53
|
+
`
|
|
54
|
+
} else if (type === 'chase') {
|
|
55
|
+
content = /*html*/ `
|
|
56
|
+
<div data-loader class="sk-chase">
|
|
57
|
+
<div class="sk-chase-dot"></div>
|
|
58
|
+
<div class="sk-chase-dot"></div>
|
|
59
|
+
<div class="sk-chase-dot"></div>
|
|
60
|
+
<div class="sk-chase-dot"></div>
|
|
61
|
+
<div class="sk-chase-dot"></div>
|
|
62
|
+
<div class="sk-chase-dot"></div>
|
|
63
|
+
</div>
|
|
64
|
+
`
|
|
65
|
+
} else if (type === 'rect') {
|
|
66
|
+
content = /*html*/ `
|
|
67
|
+
<div data-loader class="spinner">
|
|
68
|
+
<div class="rect1"></div>
|
|
69
|
+
<div class="rect2"></div>
|
|
70
|
+
<div class="rect3"></div>
|
|
71
|
+
<div class="rect4"></div>
|
|
72
|
+
<div class="rect5"></div>
|
|
73
|
+
</div>
|
|
74
|
+
`
|
|
75
|
+
} else if (type === 'loader') {
|
|
76
|
+
content = /* html */ `
|
|
77
|
+
<div data-loader class="lds-spinner">
|
|
78
|
+
<div></div>
|
|
79
|
+
<div></div>
|
|
80
|
+
<div></div>
|
|
81
|
+
<div></div>
|
|
82
|
+
<div></div>
|
|
83
|
+
<div></div>
|
|
84
|
+
<div></div>
|
|
85
|
+
<div></div>
|
|
86
|
+
<div></div>
|
|
87
|
+
<div></div>
|
|
88
|
+
<div></div>
|
|
89
|
+
<div></div>
|
|
90
|
+
</div>
|
|
91
|
+
`
|
|
92
|
+
} else {
|
|
93
|
+
content = /* html */ `
|
|
94
|
+
<div data-loader class="bouncer">
|
|
95
|
+
<div class="bounce1"></div>
|
|
96
|
+
<div class="bounce2"></div>
|
|
97
|
+
<div class="bounce3"></div>
|
|
98
|
+
</div>
|
|
99
|
+
`
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
return content
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
Component.define(tag, Spinner, styles)
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import './spinner.js'
|
|
2
|
+
|
|
3
|
+
describe('Spinner', () => {
|
|
4
|
+
let container = null
|
|
5
|
+
|
|
6
|
+
beforeEach(() => {
|
|
7
|
+
container = document.createElement('div')
|
|
8
|
+
document.body.appendChild(container)
|
|
9
|
+
})
|
|
10
|
+
|
|
11
|
+
afterEach(() => {
|
|
12
|
+
container.remove()
|
|
13
|
+
container = null
|
|
14
|
+
})
|
|
15
|
+
|
|
16
|
+
it('can be instantiated', () => {
|
|
17
|
+
container.innerHTML = /* html */ `
|
|
18
|
+
<ark-spinner></ark-spinner>
|
|
19
|
+
`
|
|
20
|
+
const spinner = container.querySelector('ark-spinner')
|
|
21
|
+
|
|
22
|
+
expect(spinner).toBeTruthy
|
|
23
|
+
expect(spinner).toBe(spinner.init())
|
|
24
|
+
})
|
|
25
|
+
|
|
26
|
+
it('Different types of spinner can be used', () => {
|
|
27
|
+
container.innerHTML = /* html */ `
|
|
28
|
+
<ark-spinner type="chase"></ark-spinner>
|
|
29
|
+
<ark-spinner type="rect"></ark-spinner>
|
|
30
|
+
<ark-spinner type="loader"></ark-spinner>
|
|
31
|
+
<ark-spinner type="bounce"></ark-spinner>
|
|
32
|
+
`
|
|
33
|
+
const spinner = container.querySelector('ark-spinner')
|
|
34
|
+
const loader = spinner.loader
|
|
35
|
+
|
|
36
|
+
expect(spinner.loader).toBeCalled
|
|
37
|
+
})
|
|
38
|
+
|
|
39
|
+
it('Can set the scale of the spinner', () => {
|
|
40
|
+
container.innerHTML = /* html */ `
|
|
41
|
+
<ark-spinner scale="2.5" type="chase"></ark-spinner>
|
|
42
|
+
`
|
|
43
|
+
const spinner = container.querySelector('ark-spinner')
|
|
44
|
+
|
|
45
|
+
expect(spinner.loader).toBeCalled
|
|
46
|
+
expect(spinner.style.transform.split(')')[0].split('(')[1]).toBe(
|
|
47
|
+
spinner.scale
|
|
48
|
+
)
|
|
49
|
+
})
|
|
50
|
+
})
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { Spinner } from './components/spinner.js'
|