@massimo-cassandro/minimo 0.1.3 → 0.1.4

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 (68) hide show
  1. package/index.js +0 -0
  2. package/package.json +5 -6
  3. package/src/components/auto-datatable/auto-datatable.css +355 -0
  4. package/src/components/auto-datatable/auto-datatable.js +154 -0
  5. package/src/components/init.js +7 -0
  6. package/src/components/modal-alert/flash-alerts.js +32 -0
  7. package/src/components/modal-alert/modal-alert.css +47 -0
  8. package/src/components/modal-alert/modal-alert.js +85 -0
  9. package/src/components/modal-alert/svg/check-circle-duotone.svg +1 -0
  10. package/src/components/modal-alert/svg/info-duotone.svg +1 -0
  11. package/src/components/modal-alert/svg/question-duotone.svg +1 -0
  12. package/src/components/modal-alert/svg/warning-duotone.svg +1 -0
  13. package/src/components/modal-alert/svg/x-circle-duotone.svg +1 -0
  14. package/src/components/modal-content/modal-content.js +152 -0
  15. package/src/components/modal-content/modal-content.module.css +142 -0
  16. package/src/components/recaptcha/recaptcha.css +74 -0
  17. package/src/components/sf-macro/sf-macro.css +104 -0
  18. package/src/components/sf-macro/sf-macro.js +44 -0
  19. package/src/components/vanilla-cookie-consent/cookie-consent.css +20 -0
  20. package/src/components/vanilla-cookie-consent/cookie-consent.js +76 -0
  21. package/src/components/vanilla-cookie-consent/render-cookie-list.js +32 -0
  22. package/src/components/vanilla-cookie-consent/src/cookie-list.js +85 -0
  23. package/src/components/vanilla-cookie-consent/src/it-translation.js +38 -0
  24. package/src/components/vanilla-cookie-consent/src/run-analytics.js +54 -0
  25. package/src/components/vanilla-cookie-consent/src/run-recaptcha.js +71 -0
  26. package/src/css/alerts.css +95 -0
  27. package/src/css/anchors.css +40 -0
  28. package/src/css/buttons/btn-close.css +41 -0
  29. package/src/css/buttons/buttons.css +187 -0
  30. package/src/css/buttons/status-buttons.css +107 -0
  31. package/src/css/container.css +15 -0
  32. package/src/css/data-formats.css +30 -0
  33. package/src/css/details.css +19 -0
  34. package/src/css/dialog-content.css +72 -0
  35. package/src/css/flex.css +30 -0
  36. package/src/css/forms/form-edit-info.css +17 -0
  37. package/src/css/forms/forms.css +315 -0
  38. package/src/css/forms/select-indicator.svg +3 -0
  39. package/src/css/grid.css +63 -0
  40. package/src/css/headings.css +34 -0
  41. package/src/css/icons.css +114 -0
  42. package/src/css/inner-nav.css +11 -0
  43. package/src/css/layout-base.css +11 -0
  44. package/src/css/overlay.css +11 -0
  45. package/src/css/reset.css +59 -0
  46. package/src/css/spinners/TODO spinner-circle.css +54 -0
  47. package/src/css/spinners/TODO spinner-three-dots.css +14 -0
  48. package/src/css/spinners/readme.md +1 -0
  49. package/src/css/spinners/spinner-circle-basic.css +15 -0
  50. package/src/css/spinners/spinner-trailing-dots.css +51 -0
  51. package/src/css/spinners/spinner-wrapper.css +20 -0
  52. package/src/css/svg.css +3 -0
  53. package/src/css/table.css +66 -0
  54. package/src/css/text.css +114 -0
  55. package/src/css/utilities.css +128 -0
  56. package/src/custom-media-default.css +16 -0
  57. package/src/custom-properties-default.css +273 -0
  58. package/src/index-template.css +49 -0
  59. package/src/js/alert-autoclose.js +9 -0
  60. package/src/js/create-blurhash-canvas.js +47 -0
  61. package/src/js/dialog-content.js +82 -0
  62. package/src/js/dismiss-alerts.js +6 -0
  63. package/src/js/forms.js +36 -0
  64. package/src/js/img-viewer-dom-builder.js +196 -0
  65. package/src/js/inner-nav.js +11 -0
  66. package/src/js/overlay.js +12 -0
  67. package/src/js/print-icon.js +51 -0
  68. package/src/js/spinner.js +30 -0
@@ -0,0 +1,315 @@
1
+ /* TODO separare? */
2
+ /* TODO serie di gruppi radio o checkbox */
3
+ /* TODO multiselect */
4
+ /* TODO classe grid specifica per i form ?? (.form-grid?) */
5
+ /* TODO customizable select */
6
+
7
+ /* TODO da verificare
8
+ fieldset.form-group, fieldset.form-collection-fset {
9
+
10
+ &, legend {
11
+ padding: 0;
12
+ background: transparent;
13
+ border: none;
14
+ }
15
+
16
+ legend {
17
+ position: static;
18
+ text-transform: none;
19
+ }
20
+
21
+ .form-check {
22
+ label {
23
+ font-weight: var(--ada-font-weight-regular);
24
+ }
25
+ }
26
+
27
+ }
28
+ */
29
+
30
+ fieldset:not(.fupl-wrapper):not(.form-group):not(.form-collection-fset) {
31
+ position: relative;
32
+ padding: 3rem 1rem 1rem;
33
+ margin: 1rem 0 2rem;
34
+ background: transparent;
35
+ border: var(--form-fieldset-border-width) solid var(--form-border-color);
36
+ border-radius: var(--form-btns-border-radius);
37
+
38
+ &, > legend {
39
+ border: var(--form-fieldset-border-width) solid var(--form-border-color);
40
+ }
41
+
42
+ >legend {
43
+ position: absolute;
44
+ top: -.5rem;
45
+ left: calc(-1 * var(--form-fieldset-border-width));
46
+ z-index: 1;
47
+ padding: .4rem .8rem;
48
+ font-size: .9rem;
49
+ font-weight: var(--font-weight-semibold);
50
+ line-height: 1.2;
51
+ color: var(--form-legend-color);
52
+ /* text-transform: uppercase; */
53
+ background-color: var(--form-legend-bg-color);
54
+ border-radius: var(--form-btns-border-radius) var(--form-btns-border-radius) var(--form-btns-border-radius) 0;
55
+ }
56
+
57
+ fieldset:not(.fupl-wrapper):not(.form-group) {
58
+ padding-top: 2rem;
59
+ margin-bottom: .5rem;
60
+ border: none;
61
+
62
+ &:first-of-type {
63
+ margin-top: 0;
64
+ }
65
+
66
+ >legend {
67
+ padding-right: 0;
68
+ padding-left: 0;
69
+ font-size: .9rem;
70
+ background: transparent;
71
+ border-bottom: 1px solid var(--form-border-color);
72
+ }
73
+ }
74
+
75
+ &[disabled] {
76
+ font-style: italic;
77
+ opacity: .6;
78
+ }
79
+ }
80
+
81
+ .form-group {
82
+ display: flex;
83
+ flex-flow: column nowrap;
84
+ gap: var(--spacing-xxs);
85
+ align-content: flex-start; /* multiline container */
86
+ align-items: flex-start;
87
+ justify-content: stretch;
88
+ padding-block: var(--form-group-padding-block);
89
+
90
+ &:has(textarea) {
91
+ height: 100%;
92
+ }
93
+
94
+ .grid & {
95
+ padding-block-end: 0;
96
+ }
97
+ }
98
+
99
+ .form-group:has([required]) .form-label, .required {
100
+ position: relative;
101
+ padding-inline-start: var(--spacing-md);
102
+ &::before {
103
+ position: absolute;
104
+ top: -.2em;
105
+ left: 0;
106
+ display: inline-block;
107
+ padding-inline-end: var(--spacing-xs);
108
+ font-size: 2em;
109
+ color: var(--form-required-flag-color);
110
+ content: var(--form-required-flag-content);
111
+ }
112
+
113
+ }
114
+
115
+ .form-label {
116
+ display: block;
117
+ font-size: var(--font-size-sm);
118
+ font-weight: var(--font-weight-semibold);
119
+ }
120
+
121
+ /* la classe form-select è mantenuta per compatibilità con bootstrap */
122
+ .form-control, .form-control-text, .form-select {
123
+ display: block;
124
+ width: 100%;
125
+ font-family: var(--font-family);
126
+ font-size: var(--form-btns-font-size);
127
+ font-weight: var(--font-weight-regular);
128
+ line-height: var(--line-height-base);
129
+ color: var(--form-text-color);
130
+ background-color: var(--form-bg-color);
131
+ border: 1px solid var(--form-border-color);
132
+ border-radius: var(--form-btns-border-radius);
133
+
134
+ &:focus {
135
+ outline: var(--form-btns-outline-width) solid var(--form-btns-focus-color);
136
+ }
137
+
138
+ &[disabled] {
139
+ /* color: $form-select-disabled-color;
140
+ background-color: $form-select-disabled-bg;
141
+ border-color: $form-select-disabled-border-color; */
142
+ background-color: var(--form-disabled-bg-color);
143
+ /* opacity: .6; */
144
+ &::placeholder {
145
+ font-style: italic;
146
+ }
147
+ }
148
+ }
149
+
150
+ .form-control, .form-control-text {
151
+
152
+ padding: var(--form-btns-padding-y) var(--form-btns-padding-x);
153
+
154
+ &::placeholder {
155
+ font-size: var(--form-btns-font-size);
156
+ color: var(--form-placeholder-color);
157
+ opacity: 1;
158
+ }
159
+
160
+ &.form-control-sm {
161
+ padding: var(--form-btns-sm-padding-y) var(--form-btns-sm-padding-x);
162
+ font-size: var(--form-btns-sm-font-size);
163
+ }
164
+ }
165
+ .form-control-text {
166
+ overflow: hidden;
167
+ text-overflow: ellipsis;
168
+ white-space: nowrap;
169
+ cursor: not-allowed;
170
+ background-color: var(--form-disabled-bg-color);
171
+ }
172
+
173
+ /* da bootstrap */
174
+ select.form-control, .form-select {
175
+
176
+ --form-select-indicator-color: var(--form-text-color);
177
+ --indicator-padding-right: var(--spacing-base);
178
+
179
+ padding: var(--form-btns-padding-y) var(--indicator-padding-right) var(--form-btns-padding-y) var(--form-btns-padding-x);
180
+ appearance: none;
181
+ background-image: url('./select-indicator.svg?inline-dataURI');
182
+ background-repeat: no-repeat;
183
+ background-position: right var(--indicator-padding-right) center;
184
+ background-size: 16px 12px;
185
+
186
+ &[multiple],
187
+ &[size]:not([size='1']) {
188
+ padding-right: var(--form-btns-padding-x);
189
+ background-image: none;
190
+ }
191
+
192
+ &:-moz-focusring {
193
+ color: transparent;
194
+ text-shadow: 0 0 0 var(--form-text-color);
195
+ }
196
+ }
197
+
198
+ input[type='checkbox'] {
199
+ color: var(--secondary-fg);
200
+ accent-color: var(--secondary);
201
+ transform-origin: center;
202
+ scale: 1.3;
203
+ }
204
+
205
+ /* da bs5 */
206
+ /* versione con label a destra */
207
+ .form-check {
208
+ display: block;
209
+ padding-left: 1.5em;
210
+ margin-block-start: var(--spacing-sm);
211
+
212
+ .form-check-input {
213
+ display: inline-block;
214
+ float: left;
215
+ width: auto;
216
+ margin: 4px 0 0 -1.5em;
217
+ }
218
+ }
219
+
220
+ /* fix per safari */
221
+ /* https://8yd.no/article/date-input-height-in-safari */
222
+ input::-webkit-datetime-edit {
223
+ padding: 0;
224
+ margin-block-end: -2px;
225
+ line-height: 1;
226
+ }
227
+ input::-webkit-calendar-picker-indicator { /* solo in chromium, non in safari */
228
+ margin: 2px 0;
229
+ }
230
+
231
+
232
+ .form-help-text {
233
+ font-size: var(--font-size-xs);
234
+ color: var(--text-muted-color);
235
+ }
236
+
237
+
238
+ textarea.form-control {
239
+ flex: 1;
240
+ }
241
+
242
+ /* da bs5 */
243
+ .input-group {
244
+ position: relative;
245
+ display: flex;
246
+ gap: 0;
247
+ align-items: stretch;
248
+ justify-content: center;
249
+ width: 100%;
250
+
251
+ > .form-control, > .form-select {
252
+ z-index: 2;
253
+ flex: 1;
254
+ border-inline-end: none;
255
+ border-top-right-radius: 0;
256
+ border-bottom-right-radius: 0;
257
+ }
258
+
259
+ > .input-group-text {
260
+ padding: var(--form-btns-padding-y) var(--form-btns-padding-x);
261
+ font-size: var(--form-btns-font-size);
262
+ background-color: var(--form-input-group-bg-color);
263
+ border: 1px solid var(--form-border-color);
264
+ border-radius: var(--form-btns-border-radius);
265
+ }
266
+
267
+ > .btn, .input-group-text {
268
+ z-index: 1;
269
+ border-top-left-radius: 0;
270
+ border-bottom-left-radius: 0;
271
+ }
272
+
273
+ > * {
274
+ &:focus, &:focus-within {
275
+ z-index: 5;
276
+ }
277
+ }
278
+
279
+ &:has([disabled]) {
280
+ > .btn, .input-group-text {
281
+ font-style: italic;
282
+ color: var(--text-muted-color);
283
+ background-color: var(--form-disabled-bg-color);
284
+ /* opacity: .6; */
285
+ }
286
+ }
287
+
288
+
289
+ }
290
+
291
+ .was-validated {
292
+
293
+ .form-group:has(:valid), .form-group:has(.is-valid){
294
+ --status-color: var(--status-success-color);
295
+ }
296
+ .form-group:has(:invalid), .form-group:has(.is-invalid){
297
+ --status-color: var(--status-danger-color);
298
+ }
299
+
300
+ .form-label {
301
+ color: var(--status-color);
302
+ }
303
+ .form-control, .form-select {
304
+ outline: 2px solid var(--status-color);
305
+ outline-offset: 2px;
306
+
307
+ &:focus {
308
+ /* background-color: var(--status-bg-color); */
309
+ outline: var(--form-btns-outline-width) solid var(--status-color);
310
+ outline-offset: 0;
311
+
312
+ }
313
+ }
314
+
315
+ }
@@ -0,0 +1,3 @@
1
+ <svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'>
2
+ <path fill='none' stroke='rgb(5, 48, 56)' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/>
3
+ </svg>
@@ -0,0 +1,63 @@
1
+ .grid {
2
+ --cols: 1;
3
+ --min-col-width: calc((100% - calc(3 * var(--flex-grid-gap))) / var(--cols));
4
+
5
+ display: grid;
6
+ grid-template-columns: repeat(auto-fill, minmax(var(--min-col-width), 1fr));
7
+ grid-auto-flow: row;
8
+ gap: var(--flex-grid-gap);
9
+ /* align-items: center; */
10
+ /* justify-items: start; */
11
+
12
+ &.justify-content-end {
13
+ justify-content: end;
14
+ }
15
+
16
+
17
+ @media (--medium-screen) {
18
+ --cols: 2;
19
+
20
+ > .span-2, > .span-3, > .span-4 {
21
+ grid-column-start: span 2;
22
+ }
23
+ }
24
+
25
+ @media (--desktop-up) {
26
+ --cols: 4;
27
+
28
+ /* versione a 5, 6, 8 colonne */
29
+ &.grid-5 {
30
+ --cols: 5;
31
+ }
32
+ &.grid-6 {
33
+ --cols: 6;
34
+ }
35
+ &.grid-8 {
36
+ --cols: 8;
37
+ }
38
+
39
+ > .span-2 {
40
+ grid-column-start: span 2;
41
+ }
42
+ > .span-3 {
43
+ grid-column-start: span 3;
44
+ }
45
+
46
+ > .span-4 {
47
+ grid-column-start: span 4;
48
+ }
49
+ } /* end @media (--desktop-up) */
50
+
51
+ /* grid items */
52
+ > .grid-item-last {
53
+ grid-column: -2 / -1;
54
+ }
55
+
56
+ > .justify-self-end {
57
+ justify-self: end;
58
+ }
59
+
60
+ > .align-self-center {
61
+ align-self: center;
62
+ }
63
+ }
@@ -0,0 +1,34 @@
1
+
2
+ h1, h2, h3, .h3, h4, .h4 {
3
+ line-height: 1.2;
4
+ text-align: var(--headings-test-align);
5
+ }
6
+
7
+ h1 {
8
+ margin: 0 0 2rem;
9
+ font-size: 2.5rem;
10
+ font-weight: var(--font-weight-bold);
11
+
12
+ small, .small, .text-sm {
13
+ display: block;
14
+ font-size: var(--font-size-sm);
15
+ color: var(--text-muted-color);
16
+ }
17
+ }
18
+
19
+ h2, h3, .h3, h4, .h4 {
20
+ font-weight: var(--font-weight-semibold);
21
+ }
22
+ h2 {
23
+ margin: 0 0 2rem;
24
+ font-size: 2rem;
25
+ }
26
+
27
+ h3, .h3 {
28
+ margin: 0 0 1.5rem;
29
+ font-size: 1.6rem;
30
+ }
31
+ h4, .h4 {
32
+ margin: 0 0 1.5rem;
33
+ font-size: 1.4rem;
34
+ }
@@ -0,0 +1,114 @@
1
+ @use 'sass:map';
2
+
3
+ .icon {
4
+ display: inline-block;
5
+ width: 1em;
6
+ aspect-ratio: 1;
7
+
8
+ fill: currentColor;
9
+ stroke: none;
10
+
11
+ /* fill: none;
12
+ stroke: currentColor;
13
+ stroke-linecap: round;
14
+ stroke-linejoin: round;
15
+ stroke-width: 4px; */
16
+
17
+ /* &.icon-bold{
18
+ stroke-width: 8px;
19
+ } */
20
+
21
+ &.icon-lg {
22
+ width: 1.2em;
23
+ height: 1.2em;
24
+ }
25
+ &.icon-xl {
26
+ width: 1.4em;
27
+ height: 1.4em;
28
+ }
29
+ &.icon-xxl {
30
+ width: 2em;
31
+ height: 2em;
32
+ }
33
+ &.icon-4xl {
34
+ width: 8em;
35
+ height: 8em;
36
+ }
37
+
38
+ /* &.fill-icon {
39
+ fill: currentColor;
40
+ stroke: none;
41
+ } */
42
+
43
+ /* &.ratio3x4 {
44
+ height: auto;
45
+ aspect-ratio: 3 / 4;
46
+ }
47
+ &.ratio3x5 {
48
+ height: auto;
49
+ aspect-ratio: 3 / 5;
50
+ } */
51
+ &.baseline-shift-20 {
52
+ translate: 0 20%;
53
+ }
54
+ &.baseline-shift-30 {
55
+ translate: 0 30%;
56
+ }
57
+ &.baseline-negative-shift-20 {
58
+ translate: 0 -20%;
59
+ }
60
+ }
61
+
62
+ /* .duotone-light, .duotone-medium, .duotone-dark {
63
+ fill: currentColor;
64
+ stroke: none;
65
+ }
66
+ .duotone-light {
67
+ fill-opacity: .2;
68
+ }
69
+ .duotone-medium {
70
+ fill-opacity: .4;
71
+ }
72
+ .duotone-dark {
73
+ fill-opacity: .7;
74
+ } */
75
+
76
+ /* contenitore di icon con aggiunta di barra trasversale
77
+ <span class="icon-stroked-wrapper"><svg...></span> */
78
+ /* .icon-stroked-wrapper {
79
+ position: relative;
80
+ top: 2px;
81
+
82
+ &::after {
83
+ position: absolute;
84
+ top: 45%;
85
+ left: -6%;
86
+ width: 110%;
87
+ height: 3px;
88
+ content: '';
89
+ background-color: rgb(var(--ada-danger-rgb) / .7);
90
+ transform-origin: center;
91
+ rotate: 30deg;
92
+ translate: 0 -50%;
93
+ }
94
+
95
+ .icon{
96
+ position: relative;
97
+ top: -2px;
98
+ }
99
+ } */
100
+
101
+ /*
102
+ a .icon {
103
+ fill: $link-color;
104
+
105
+ &:hover {
106
+ fill: $link-hover-color;
107
+ }
108
+ }
109
+ */
110
+
111
+ .btn .icon {
112
+ position: relative;
113
+ /* top:3px; */
114
+ }
@@ -0,0 +1,11 @@
1
+ .inner-nav-main, .inner-nav {
2
+ display: flex;
3
+ gap: 1.5rem;
4
+ justify-content: flex-end;
5
+ margin: 1rem 0;
6
+ /* text-align: end; */
7
+
8
+ @media print {
9
+ display: none;
10
+ }
11
+ }
@@ -0,0 +1,11 @@
1
+ html, body {
2
+ /* height: 100%; */
3
+ padding: 0;
4
+ margin: 0;
5
+ font-family: var(--font-family);
6
+ font-size: var(--font-size-base);
7
+ line-height: var(--line-height-base);
8
+ color: var(--text-color);
9
+ background-color: var(--body-bg-color);
10
+ scroll-behavior: smooth;
11
+ }
@@ -0,0 +1,11 @@
1
+ .overlay {
2
+ position: fixed;
3
+ inset: 0;
4
+ z-index: var(--z-index-overlay);
5
+ pointer-events: none;
6
+ background-color: color-mix(in srgb, var(--text-color) 20%, transparent);
7
+ }
8
+ .overlay-inverted {
9
+ background-color: color-mix(in srgb, var(--body-bg) 50%, transparent);
10
+
11
+ }
@@ -0,0 +1,59 @@
1
+ /*
2
+ Josh's Custom CSS Reset
3
+ https://www.joshwcomeau.com/css/custom-css-reset/
4
+ */
5
+ /* 1. Use a more-intuitive box-sizing model */
6
+ *, *::before, *::after {
7
+ box-sizing: border-box;
8
+ }
9
+
10
+ /* 2. Remove default margin */
11
+ * {
12
+ margin: 0;
13
+ }
14
+
15
+ /* 3. Enable keyword animations */
16
+ @media (prefers-reduced-motion: no-preference) {
17
+ html {
18
+ interpolate-size: allow-keywords;
19
+ }
20
+ }
21
+
22
+ body {
23
+ /* 4. Add accessible line-height */
24
+ line-height: 1.5;
25
+ /* 5. Improve text rendering */
26
+ -webkit-font-smoothing: antialiased;
27
+ }
28
+
29
+ /* 6. Improve media defaults */
30
+ img, picture, video, canvas, svg {
31
+ display: block;
32
+ max-width: 100%;
33
+ }
34
+
35
+ /* 7. Inherit fonts for form controls */
36
+ input, button, textarea, select {
37
+ font: inherit;
38
+ }
39
+
40
+ /* 8. Avoid text overflows */
41
+ p, h1, h2, h3, h4, h5, h6 {
42
+ overflow-wrap: break-word;
43
+ }
44
+
45
+ /* 9. Improve line wrapping */
46
+ p {
47
+ text-wrap: pretty;
48
+ }
49
+ h1, h2, h3, h4, h5, h6 {
50
+ text-wrap: balance;
51
+ }
52
+
53
+ /*
54
+ 10. Create a root stacking context
55
+ */
56
+ /* stylelint-disable-next-line selector-id-pattern, selector-max-id */
57
+ #root, #__next {
58
+ isolation: isolate;
59
+ }
@@ -0,0 +1,54 @@
1
+ /*
2
+ https://lukehaas.me/projects/css-spinners/ (#2)
3
+
4
+ <div class="spinner-wrapper"><div class="spinner">Loading...</div></div>
5
+ */
6
+
7
+
8
+ .spinner {
9
+ position: relative;
10
+ width: 10em;
11
+ height: 10em;
12
+ margin: 55px auto;
13
+ font-size: .7rem;
14
+ color: var(--spinner-color);
15
+ text-indent: -99999em;
16
+ box-shadow: inset 0 0 0 1em;
17
+ transform: translateZ(0);
18
+
19
+ &, &::before, &::after {
20
+ border-radius: 50%;
21
+ }
22
+
23
+ &::before, &::after {
24
+ position: absolute;
25
+ content: '';
26
+ }
27
+ }
28
+
29
+ .spinner::before {
30
+ top: -.1em;
31
+ left: -.1em;
32
+ width: 5.2em;
33
+ height: 10.2em;
34
+ border-radius: 10.2em 0 0 10.2em;
35
+ transform-origin: 5.1em 5.1em;
36
+ animation: spinner-load 2s infinite ease 1.5s;
37
+ }
38
+ .spinner::after {
39
+ top: -.1em;
40
+ left: 4.9em;
41
+ width: 5.2em;
42
+ height: 10.2em;
43
+ border-radius: 0 10.2em 10.2em 0;
44
+ transform-origin: 0.1em 5.1em;
45
+ animation: spinner-load 2s infinite ease;
46
+ }
47
+ @keyframes spinner-load {
48
+ 0% {
49
+ transform: rotate(0deg);
50
+ }
51
+ 100% {
52
+ transform: rotate(360deg);
53
+ }
54
+ }
@@ -0,0 +1,14 @@
1
+ /* HTML: <div class="loader"></div> */
2
+ /* https://css-loaders.com/dots/ #1 */
3
+ .spinner {
4
+ width: 80px;
5
+ aspect-ratio: 6;
6
+ margin-top: 2rem;
7
+ clip-path: inset(0 100% 0 0);
8
+ background: radial-gradient(circle closest-side, var(--text-color) 90%, transparent) 0 / calc(100% / 3) 100% space;
9
+ animation: l1 1s steps(4) infinite;
10
+ }
11
+
12
+ @keyframes l1 { to { clip-path: inset(0 -34% 0 0); } }
13
+
14
+
@@ -0,0 +1 @@
1
+ Gli spinner hanno tutti la stessa classe, presumendo che se ne usi solo una per volta...
@@ -0,0 +1,15 @@
1
+ .spinner {
2
+ display: inline-block;
3
+ width: var(--spinner-size);
4
+ aspect-ratio: 1;
5
+ color: var(--spinner-color);
6
+ text-indent: -99999em;
7
+ border: var(--spinner-stroke) solid;
8
+ border-color: currentColor currentColor transparent;
9
+ border-radius: 50%;
10
+ animation: spinner-border .7s linear infinite;
11
+ }
12
+
13
+ @keyframes spinner-border {
14
+ to { transform: rotate(360deg); }
15
+ }