css-zero 0.0.38 → 0.0.39
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.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/app/assets/stylesheets/sizes.css +14 -14
- data/app/assets/stylesheets/zutilities.css +46 -19
- data/lib/css_zero/version.rb +1 -1
- data/lib/generators/css_zero/add/USAGE +1 -1
- data/lib/generators/css_zero/add/resources.yml +8 -4
- data/lib/generators/css_zero/add/templates/app/assets/images/search.svg +1 -0
- data/lib/generators/css_zero/add/templates/app/assets/stylesheets/accordion.css +4 -2
- data/lib/generators/css_zero/add/templates/app/assets/stylesheets/avatar.css +16 -26
- data/lib/generators/css_zero/add/templates/app/assets/stylesheets/button.css +11 -8
- data/lib/generators/css_zero/add/templates/app/assets/stylesheets/carousel.css +1 -12
- data/lib/generators/css_zero/add/templates/app/assets/stylesheets/command.css +56 -0
- data/lib/generators/css_zero/add/templates/app/assets/stylesheets/dialog.css +1 -1
- data/lib/generators/css_zero/add/templates/app/assets/stylesheets/input.css +12 -12
- data/lib/generators/css_zero/add/templates/app/assets/stylesheets/layouts.css +0 -4
- data/lib/generators/css_zero/add/templates/app/assets/stylesheets/lightbox.css +3 -7
- data/lib/generators/css_zero/add/templates/app/assets/stylesheets/sheet.css +1 -1
- data/lib/generators/css_zero/add/templates/app/assets/stylesheets/tabs.css +7 -15
- data/lib/generators/css_zero/add/templates/app/assets/stylesheets/toggle.css +1 -3
- data/lib/generators/css_zero/add/templates/app/javascript/controllers/command_controller.js +42 -0
- data/lib/generators/css_zero/add/templates/app/javascript/controllers/copyable_input_controller.js +11 -9
- data/lib/generators/css_zero/install/install_generator.rb +14 -0
- data/lib/generators/css_zero/install/templates/app/javascript/helpers/cookie_helpers.js +18 -0
- data/lib/generators/css_zero/install/templates/app/javascript/helpers/timing_helpers.js +39 -0
- metadata +7 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: c1bd36382642c26e7ccfb6659948ab080b708909dd80e8168b3e7149dc2f27ab
|
|
4
|
+
data.tar.gz: cb7f89e2c79deb6b134accafbcc012928045d6f155a331cd7a11abdba45bc771
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: c7b281b3c1fd86decc8cd6df0a14859c6ee2565625f933a14e0f18d9a733d8cb89a75303e7500450af83eda10f82ea9aa744c9d7284c252b3488412aabb92797
|
|
7
|
+
data.tar.gz: 73ce63baeb7fef096081772831efcdff2319262c5f59ab3bcf8ca04d8951811c8b1b8e5738f3c8e41f717186ed218cc52ab1491b231427a8a16ca58d42c1b0e0
|
data/README.md
CHANGED
|
@@ -19,7 +19,7 @@ bin/rails generate css_zero:install
|
|
|
19
19
|
Add only the components you need. (Optional)
|
|
20
20
|
|
|
21
21
|
```
|
|
22
|
-
bin/rails generate css_zero:add accordion alert avatar badge breadcrumb button card carousel collapsible dialog flash fullscreen hotkey input input_concerns layouts lightbox local_time pagination progress prose sheet skeleton switch table tabs upload_preview toggle web_share
|
|
22
|
+
bin/rails generate css_zero:add accordion alert avatar badge breadcrumb button card carousel command collapsible dialog flash fullscreen hotkey input input_concerns layouts lightbox local_time pagination progress prose sheet skeleton switch table tabs upload_preview toggle web_share
|
|
23
23
|
```
|
|
24
24
|
|
|
25
25
|
### Requirements
|
|
@@ -68,21 +68,21 @@
|
|
|
68
68
|
--size-full: 100%;
|
|
69
69
|
|
|
70
70
|
/****************************************************************
|
|
71
|
-
*
|
|
71
|
+
* Max Inline Sizes
|
|
72
72
|
*****************************************************************/
|
|
73
|
-
--
|
|
74
|
-
--
|
|
75
|
-
--
|
|
76
|
-
--
|
|
77
|
-
--
|
|
78
|
-
--
|
|
79
|
-
--
|
|
80
|
-
--
|
|
81
|
-
--
|
|
82
|
-
--
|
|
83
|
-
--
|
|
84
|
-
--
|
|
85
|
-
--
|
|
73
|
+
--max-i-3xs: 16rem; /* 256px */
|
|
74
|
+
--max-i-2xs: 18rem; /* 288px */
|
|
75
|
+
--max-i-xs: 20rem; /* 320px */
|
|
76
|
+
--max-i-sm: 24rem; /* 384px */
|
|
77
|
+
--max-i-md: 28rem; /* 448px */
|
|
78
|
+
--max-i-lg: 32rem; /* 512px */
|
|
79
|
+
--max-i-xl: 36rem; /* 576px */
|
|
80
|
+
--max-i-2xl: 42rem; /* 672px */
|
|
81
|
+
--max-i-3xl: 48rem; /* 768px */
|
|
82
|
+
--max-i-4xl: 56rem; /* 896px */
|
|
83
|
+
--max-i-5xl: 64rem; /* 1024px */
|
|
84
|
+
--max-i-6xl: 72rem; /* 1152px */
|
|
85
|
+
--max-i-7xl: 80rem; /* 1280px */
|
|
86
86
|
|
|
87
87
|
/****************************************************************
|
|
88
88
|
* Aspect Ratio
|
|
@@ -148,12 +148,12 @@
|
|
|
148
148
|
.relative { position: relative; }
|
|
149
149
|
.sticky { position: sticky; }
|
|
150
150
|
|
|
151
|
-
.min-
|
|
152
|
-
.max-
|
|
151
|
+
.min-i-0 { min-inline-size: 0; }
|
|
152
|
+
.max-i-full { max-inline-size: 100%; }
|
|
153
153
|
|
|
154
|
-
.
|
|
155
|
-
.
|
|
156
|
-
.
|
|
154
|
+
.b-full { block-size: 100%; }
|
|
155
|
+
.i-full { inline-size: 100%; }
|
|
156
|
+
.i-min { inline-size: min-content; }
|
|
157
157
|
|
|
158
158
|
.overflow-x-auto { overflow-x: auto; scroll-snap-type: x mandatory; }
|
|
159
159
|
.overflow-y-auto { overflow-y: auto; scroll-snap-type: y mandatory; }
|
|
@@ -169,70 +169,77 @@
|
|
|
169
169
|
* Margin
|
|
170
170
|
*****************************************************************/
|
|
171
171
|
.m-0 { margin: 0; }
|
|
172
|
-
.m-0\.5 { margin: var(--size-0_5); }
|
|
173
172
|
.m-1 { margin: var(--size-1); }
|
|
174
173
|
.m-2 { margin: var(--size-2); }
|
|
174
|
+
.m-3 { margin: var(--size-3); }
|
|
175
175
|
.m-4 { margin: var(--size-4); }
|
|
176
|
+
.m-5 { margin: var(--size-5); }
|
|
176
177
|
.m-6 { margin: var(--size-6); }
|
|
177
178
|
.m-8 { margin: var(--size-8); }
|
|
178
179
|
.m-10 { margin: var(--size-10); }
|
|
179
180
|
.m-auto { margin: auto; }
|
|
180
181
|
|
|
181
182
|
.mb-0 { margin-block: 0; }
|
|
182
|
-
.mb-0\.5 { margin-block: var(--size-0_5); }
|
|
183
183
|
.mb-1 { margin-block: var(--size-1); }
|
|
184
184
|
.mb-2 { margin-block: var(--size-2); }
|
|
185
|
+
.mb-3 { margin-block: var(--size-3); }
|
|
185
186
|
.mb-4 { margin-block: var(--size-4); }
|
|
187
|
+
.mb-5 { margin-block: var(--size-5); }
|
|
186
188
|
.mb-6 { margin-block: var(--size-6); }
|
|
187
189
|
.mb-8 { margin-block: var(--size-8); }
|
|
188
190
|
.mb-10 { margin-block: var(--size-10); }
|
|
189
191
|
.mb-auto { margin-block: auto; }
|
|
190
192
|
|
|
191
193
|
.mbs-0 { margin-block-start: 0; }
|
|
192
|
-
.mbs-0\.5 { margin-block-start: var(--size-0_5); }
|
|
193
194
|
.mbs-1 { margin-block-start: var(--size-1); }
|
|
194
195
|
.mbs-2 { margin-block-start: var(--size-2); }
|
|
196
|
+
.mbs-3 { margin-block-start: var(--size-3); }
|
|
195
197
|
.mbs-4 { margin-block-start: var(--size-4); }
|
|
198
|
+
.mbs-5 { margin-block-start: var(--size-5); }
|
|
196
199
|
.mbs-6 { margin-block-start: var(--size-6); }
|
|
197
200
|
.mbs-8 { margin-block-start: var(--size-8); }
|
|
198
201
|
.mbs-10 { margin-block-start: var(--size-10); }
|
|
199
202
|
.mbs-auto { margin-block-start: auto; }
|
|
200
203
|
|
|
201
204
|
.mbe-0 { margin-block-end: 0; }
|
|
202
|
-
.mbe-0\.5 { margin-block-end: var(--size-0_5); }
|
|
203
205
|
.mbe-1 { margin-block-end: var(--size-1); }
|
|
204
206
|
.mbe-2 { margin-block-end: var(--size-2); }
|
|
207
|
+
.mbe-3 { margin-block-end: var(--size-3); }
|
|
205
208
|
.mbe-4 { margin-block-end: var(--size-4); }
|
|
209
|
+
.mbe-5 { margin-block-end: var(--size-5); }
|
|
206
210
|
.mbe-6 { margin-block-end: var(--size-6); }
|
|
207
211
|
.mbe-8 { margin-block-end: var(--size-8); }
|
|
208
212
|
.mbe-10 { margin-block-end: var(--size-10); }
|
|
209
213
|
.mbe-auto { margin-block-end: auto; }
|
|
210
214
|
|
|
211
215
|
.mi-0 { margin-inline: 0; }
|
|
212
|
-
.mi-0\.5 { margin-inline: var(--size-0_5); }
|
|
213
216
|
.mi-1 { margin-inline: var(--size-1); }
|
|
214
217
|
.mi-2 { margin-inline: var(--size-2); }
|
|
218
|
+
.mi-3 { margin-inline: var(--size-3); }
|
|
215
219
|
.mi-4 { margin-inline: var(--size-4); }
|
|
220
|
+
.mi-5 { margin-inline: var(--size-5); }
|
|
216
221
|
.mi-6 { margin-inline: var(--size-6); }
|
|
217
222
|
.mi-8 { margin-inline: var(--size-8); }
|
|
218
223
|
.mi-10 { margin-inline: var(--size-10); }
|
|
219
224
|
.mi-auto { margin-inline: auto; }
|
|
220
225
|
|
|
221
226
|
.mis-0 { margin-inline-start: 0; }
|
|
222
|
-
.mis-0\.5 { margin-inline-start: var(--size-0_5); }
|
|
223
227
|
.mis-1 { margin-inline-start: var(--size-1); }
|
|
224
228
|
.mis-2 { margin-inline-start: var(--size-2); }
|
|
229
|
+
.mis-3 { margin-inline-start: var(--size-3); }
|
|
225
230
|
.mis-4 { margin-inline-start: var(--size-4); }
|
|
231
|
+
.mis-5 { margin-inline-start: var(--size-5); }
|
|
226
232
|
.mis-6 { margin-inline-start: var(--size-6); }
|
|
227
233
|
.mis-8 { margin-inline-start: var(--size-8); }
|
|
228
234
|
.mis-10 { margin-inline-start: var(--size-10); }
|
|
229
235
|
.mis-auto { margin-inline-start: auto; }
|
|
230
236
|
|
|
231
237
|
.mie-0 { margin-inline-end: 0; }
|
|
232
|
-
.mie-0\.5 { margin-inline-end: var(--size-0_5); }
|
|
233
238
|
.mie-1 { margin-inline-end: var(--size-1); }
|
|
234
239
|
.mie-2 { margin-inline-end: var(--size-2); }
|
|
240
|
+
.mie-3 { margin-inline-end: var(--size-3); }
|
|
235
241
|
.mie-4 { margin-inline-end: var(--size-4); }
|
|
242
|
+
.mie-5 { margin-inline-end: var(--size-5); }
|
|
236
243
|
.mie-6 { margin-inline-end: var(--size-6); }
|
|
237
244
|
.mie-8 { margin-inline-end: var(--size-8); }
|
|
238
245
|
.mie-10 { margin-inline-end: var(--size-10); }
|
|
@@ -242,68 +249,88 @@
|
|
|
242
249
|
* Padding
|
|
243
250
|
*****************************************************************/
|
|
244
251
|
.p-0 { padding: 0; }
|
|
245
|
-
.p-0\.5 { padding: var(--size-0_5); }
|
|
246
252
|
.p-1 { padding: var(--size-1); }
|
|
247
253
|
.p-2 { padding: var(--size-2); }
|
|
254
|
+
.p-3 { padding: var(--size-3); }
|
|
248
255
|
.p-4 { padding: var(--size-4); }
|
|
256
|
+
.p-5 { padding: var(--size-5); }
|
|
249
257
|
.p-6 { padding: var(--size-6); }
|
|
250
258
|
.p-8 { padding: var(--size-8); }
|
|
251
259
|
.p-10 { padding: var(--size-10); }
|
|
252
260
|
|
|
253
261
|
.pb-0 { padding-block: 0; }
|
|
254
|
-
.pb-0\.5 { padding-block: var(--size-0_5); }
|
|
255
262
|
.pb-1 { padding-block: var(--size-1); }
|
|
256
263
|
.pb-2 { padding-block: var(--size-2); }
|
|
264
|
+
.pb-3 { padding-block: var(--size-3); }
|
|
257
265
|
.pb-4 { padding-block: var(--size-4); }
|
|
266
|
+
.pb-5 { padding-block: var(--size-5); }
|
|
258
267
|
.pb-6 { padding-block: var(--size-6); }
|
|
259
268
|
.pb-8 { padding-block: var(--size-8); }
|
|
260
269
|
.pb-10 { padding-block: var(--size-10); }
|
|
261
270
|
|
|
262
271
|
.pbs-0 { padding-block-start: 0; }
|
|
263
|
-
.pbs-0\.5 { padding-block-start: var(--size-0_5); }
|
|
264
272
|
.pbs-1 { padding-block-start: var(--size-1); }
|
|
265
273
|
.pbs-2 { padding-block-start: var(--size-2); }
|
|
274
|
+
.pbs-3 { padding-block-start: var(--size-3); }
|
|
266
275
|
.pbs-4 { padding-block-start: var(--size-4); }
|
|
276
|
+
.pbs-5 { padding-block-start: var(--size-5); }
|
|
267
277
|
.pbs-6 { padding-block-start: var(--size-6); }
|
|
268
278
|
.pbs-8 { padding-block-start: var(--size-8); }
|
|
269
279
|
.pbs-10 { padding-block-start: var(--size-10); }
|
|
270
280
|
|
|
271
281
|
.pbe-0 { padding-block-end: 0; }
|
|
272
|
-
.pbe-0\.5 { padding-block-end: var(--size-0_5); }
|
|
273
282
|
.pbe-1 { padding-block-end: var(--size-1); }
|
|
274
283
|
.pbe-2 { padding-block-end: var(--size-2); }
|
|
284
|
+
.pbe-3 { padding-block-end: var(--size-3); }
|
|
275
285
|
.pbe-4 { padding-block-end: var(--size-4); }
|
|
286
|
+
.pbe-5 { padding-block-end: var(--size-5); }
|
|
276
287
|
.pbe-6 { padding-block-end: var(--size-6); }
|
|
277
288
|
.pbe-8 { padding-block-end: var(--size-8); }
|
|
278
289
|
.pbe-10 { padding-block-end: var(--size-10); }
|
|
279
290
|
|
|
280
291
|
.pi-0 { padding-inline: 0; }
|
|
281
|
-
.pi-0\.5 { padding-inline: var(--size-0_5); }
|
|
282
292
|
.pi-1 { padding-inline: var(--size-1); }
|
|
283
293
|
.pi-2 { padding-inline: var(--size-2); }
|
|
294
|
+
.pi-3 { padding-inline: var(--size-3); }
|
|
284
295
|
.pi-4 { padding-inline: var(--size-4); }
|
|
296
|
+
.pi-5 { padding-inline: var(--size-5); }
|
|
285
297
|
.pi-6 { padding-inline: var(--size-6); }
|
|
286
298
|
.pi-8 { padding-inline: var(--size-8); }
|
|
287
299
|
.pi-10 { padding-inline: var(--size-10); }
|
|
288
300
|
|
|
289
301
|
.pis-0 { padding-inline-start: 0; }
|
|
290
|
-
.pis-0\.5 { padding-inline-start: var(--size-0_5); }
|
|
291
302
|
.pis-1 { padding-inline-start: var(--size-1); }
|
|
292
303
|
.pis-2 { padding-inline-start: var(--size-2); }
|
|
304
|
+
.pis-3 { padding-inline-start: var(--size-3); }
|
|
293
305
|
.pis-4 { padding-inline-start: var(--size-4); }
|
|
306
|
+
.pis-5 { padding-inline-start: var(--size-5); }
|
|
294
307
|
.pis-6 { padding-inline-start: var(--size-6); }
|
|
295
308
|
.pis-8 { padding-inline-start: var(--size-8); }
|
|
296
309
|
.pis-10 { padding-inline-start: var(--size-10); }
|
|
297
310
|
|
|
298
311
|
.pie-0 { padding-inline-end: 0; }
|
|
299
|
-
.pie-0\.5 { padding-inline-end: var(--size-0_5); }
|
|
300
312
|
.pie-1 { padding-inline-end: var(--size-1); }
|
|
301
313
|
.pie-2 { padding-inline-end: var(--size-2); }
|
|
314
|
+
.pie-3 { padding-inline-end: var(--size-3); }
|
|
302
315
|
.pie-4 { padding-inline-end: var(--size-4); }
|
|
316
|
+
.pie-5 { padding-inline-end: var(--size-5); }
|
|
303
317
|
.pie-6 { padding-inline-end: var(--size-6); }
|
|
304
318
|
.pie-8 { padding-inline-end: var(--size-8); }
|
|
305
319
|
.pie-10 { padding-inline-end: var(--size-10); }
|
|
306
320
|
|
|
321
|
+
/****************************************************************
|
|
322
|
+
* Hiding/Showing based on media query size
|
|
323
|
+
*****************************************************************/
|
|
324
|
+
.show\@sm, .show\@md, .show\@lg { display: none; }
|
|
325
|
+
|
|
326
|
+
.show\@sm { @media (width >= 40rem) { display: flex; } }
|
|
327
|
+
.show\@md { @media (width >= 48rem) { display: flex; } }
|
|
328
|
+
.show\@lg { @media (width >= 64rem) { display: flex; } }
|
|
329
|
+
|
|
330
|
+
.hide\@sm { @media (width >= 40rem) { display: none; } }
|
|
331
|
+
.hide\@md { @media (width >= 48rem) { display: none; } }
|
|
332
|
+
.hide\@lg { @media (width >= 64rem) { display: none; } }
|
|
333
|
+
|
|
307
334
|
/****************************************************************
|
|
308
335
|
* Accessibility
|
|
309
336
|
*****************************************************************/
|
data/lib/css_zero/version.rb
CHANGED
|
@@ -2,7 +2,7 @@ Description:
|
|
|
2
2
|
This will add components into your project.
|
|
3
3
|
|
|
4
4
|
Components:
|
|
5
|
-
accordion alert avatar badge breadcrumb button card carousel collapsible dialog flash fullscreen hotkey input input_concerns layouts lightbox local_time pagination progress prose sheet skeleton switch table tabs upload_preview toggle web_share
|
|
5
|
+
accordion alert avatar badge breadcrumb button card carousel command collapsible dialog flash fullscreen hotkey input input_concerns layouts lightbox local_time pagination progress prose sheet skeleton switch table tabs upload_preview toggle web_share
|
|
6
6
|
|
|
7
7
|
Example:
|
|
8
8
|
bin/rails generate css_zero:add [components...]
|
|
@@ -20,6 +20,10 @@ carousel:
|
|
|
20
20
|
- app/javascript/controllers/carousel_controller.js
|
|
21
21
|
- app/assets/images/arrow-left.svg
|
|
22
22
|
- app/assets/images/arrow-right.svg
|
|
23
|
+
command:
|
|
24
|
+
- app/assets/stylesheets/command.css
|
|
25
|
+
- app/javascript/controllers/command_controller.js
|
|
26
|
+
- app/assets/images/search.svg
|
|
23
27
|
collapsible:
|
|
24
28
|
- app/javascript/controllers/collapsible_controller.js
|
|
25
29
|
dialog:
|
|
@@ -39,15 +43,15 @@ input:
|
|
|
39
43
|
- app/assets/images/select-arrow.svg
|
|
40
44
|
- app/javascript/controllers/check_all_controller.js
|
|
41
45
|
input_concerns:
|
|
42
|
-
- app/javascript/controllers/autoselect_controller.js
|
|
43
46
|
- app/javascript/controllers/copyable_input_controller.js
|
|
44
|
-
- app/javascript/controllers/clearable_input_controller.js
|
|
45
|
-
- app/javascript/controllers/revealable_input_controller.js
|
|
46
47
|
- app/assets/images/copy.svg
|
|
47
48
|
- app/assets/images/check.svg
|
|
49
|
+
- app/javascript/controllers/clearable_input_controller.js
|
|
50
|
+
- app/assets/images/x.svg
|
|
51
|
+
- app/javascript/controllers/revealable_input_controller.js
|
|
48
52
|
- app/assets/images/eye.svg
|
|
49
53
|
- app/assets/images/eye-off.svg
|
|
50
|
-
- app/
|
|
54
|
+
- app/javascript/controllers/autoselect_controller.js
|
|
51
55
|
layouts:
|
|
52
56
|
- app/assets/stylesheets/layouts.css
|
|
53
57
|
- app/assets/images/menu.svg
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="#000" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-search"><circle cx="11" cy="11" r="8"/><path d="m21 21-4.3-4.3"/></svg>
|
|
@@ -1,16 +1,18 @@
|
|
|
1
1
|
:where(.accordion) {
|
|
2
2
|
details {
|
|
3
3
|
border-block-end-width: var(--border);
|
|
4
|
+
interpolate-size: allow-keywords;
|
|
4
5
|
|
|
5
6
|
&::details-content {
|
|
6
|
-
block-size: 0;
|
|
7
|
+
block-size: 0;
|
|
8
|
+
overflow-y: clip;
|
|
7
9
|
transition-behavior: allow-discrete;
|
|
8
10
|
transition-duration: var(--time-150);
|
|
9
11
|
transition-property: content-visibility height;
|
|
10
12
|
}
|
|
11
13
|
|
|
12
14
|
&[open]::details-content {
|
|
13
|
-
block-size:
|
|
15
|
+
block-size: auto;
|
|
14
16
|
}
|
|
15
17
|
|
|
16
18
|
&[open] summary::after {
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
.avatar {
|
|
2
|
+
--radius: var(--rounded-full);
|
|
2
3
|
--size: var(--avatar-size, var(--size-10));
|
|
3
4
|
|
|
4
5
|
block-size: var(--size);
|
|
5
|
-
border-radius: var(--
|
|
6
|
+
border-radius: var(--radius);
|
|
6
7
|
display: flex;
|
|
7
8
|
flex-shrink: 0;
|
|
8
9
|
inline-size: var(--size);
|
|
@@ -14,33 +15,22 @@
|
|
|
14
15
|
inline-size: var(--size-full);
|
|
15
16
|
object-fit: cover;
|
|
16
17
|
}
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
.avatar--btn {
|
|
20
|
-
cursor: pointer;
|
|
21
18
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
pointer-events: none;
|
|
19
|
+
span[role=img] {
|
|
20
|
+
align-items: center;
|
|
21
|
+
background-color: var(--color-border-light);
|
|
22
|
+
block-size: var(--size-full);
|
|
23
|
+
border-radius: var(--radius);
|
|
24
|
+
display: flex;
|
|
25
|
+
font-size: calc(var(--size) * .4);
|
|
26
|
+
inline-size: var(--size-full);
|
|
27
|
+
justify-content: center;
|
|
28
|
+
user-select: none;
|
|
33
29
|
}
|
|
34
30
|
}
|
|
35
31
|
|
|
36
|
-
.
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
border-radius: var(--rounded-full);
|
|
41
|
-
display: flex;
|
|
42
|
-
font-size: calc(var(--size) * .4);
|
|
43
|
-
inline-size: var(--size-full);
|
|
44
|
-
justify-content: center;
|
|
45
|
-
user-select: none;
|
|
32
|
+
.btn--avatar {
|
|
33
|
+
--btn-padding: 0;
|
|
34
|
+
--btn-icon-color: none;
|
|
35
|
+
--btn-radius: var(--radius);
|
|
46
36
|
}
|
|
@@ -6,10 +6,10 @@
|
|
|
6
6
|
color: var(--btn-color, var(--color-text));
|
|
7
7
|
cursor: pointer;
|
|
8
8
|
display: inline-flex;
|
|
9
|
-
font-size: var(--text-sm);
|
|
10
|
-
font-weight: var(--font-medium);
|
|
9
|
+
font-size: var(--btn-font-size, var(--text-sm));
|
|
10
|
+
font-weight: var(--btn-font-weight, var(--font-medium));
|
|
11
11
|
gap: var(--size-2);
|
|
12
|
-
justify-content: center;
|
|
12
|
+
justify-content: var(--btn-justify-content, center);
|
|
13
13
|
white-space: nowrap;
|
|
14
14
|
padding: var(--btn-padding, 0.5rem 1rem);
|
|
15
15
|
text-align: center;
|
|
@@ -19,15 +19,17 @@
|
|
|
19
19
|
}
|
|
20
20
|
|
|
21
21
|
&:hover {
|
|
22
|
-
|
|
22
|
+
--hover-color: var(--btn-background, var(--color-bg));
|
|
23
|
+
--hover-color-l: var(--btn-hover-lightness, calc(l * .96));
|
|
24
|
+
background-color: oklch(from var(--hover-color) var(--hover-color-l) c h);
|
|
23
25
|
}
|
|
24
26
|
|
|
25
27
|
&:focus-visible {
|
|
26
|
-
outline: var(--
|
|
28
|
+
outline: var(--btn-outline-size, 2px) solid var(--color-selected-dark);
|
|
27
29
|
outline-offset: var(--border-2);
|
|
28
30
|
}
|
|
29
31
|
|
|
30
|
-
&:disabled {
|
|
32
|
+
&:is(:disabled, [aria-disabled]) {
|
|
31
33
|
opacity: var(--opacity-50);
|
|
32
34
|
pointer-events: none;
|
|
33
35
|
}
|
|
@@ -66,11 +68,12 @@
|
|
|
66
68
|
.btn--plain {
|
|
67
69
|
--btn-background: transparent;
|
|
68
70
|
--btn-border-color: transparent;
|
|
69
|
-
--btn-
|
|
71
|
+
--btn-hover-lightness: 100%;
|
|
70
72
|
--btn-padding: 0;
|
|
71
73
|
}
|
|
72
74
|
|
|
73
|
-
.btn--
|
|
75
|
+
.btn--icon {
|
|
76
|
+
--btn-padding: var(--size-2);
|
|
74
77
|
--btn-radius: var(--rounded-full);
|
|
75
78
|
}
|
|
76
79
|
|
|
@@ -1,21 +1,10 @@
|
|
|
1
|
-
.carousel {
|
|
2
|
-
align-items: center;
|
|
3
|
-
display: flex;
|
|
4
|
-
gap: var(--size-4);
|
|
5
|
-
}
|
|
6
|
-
|
|
7
1
|
.carousel__content {
|
|
8
2
|
display: flex;
|
|
9
3
|
gap: var(--size-6);
|
|
10
|
-
overflow
|
|
4
|
+
overflow: hidden;
|
|
11
5
|
padding: var(--size-1);
|
|
12
|
-
scrollbar-width: none;
|
|
13
6
|
scroll-snap-type: x mandatory;
|
|
14
7
|
|
|
15
|
-
&::-webkit-scrollbar {
|
|
16
|
-
display: none;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
8
|
> * {
|
|
20
9
|
flex: 0 0 100%;
|
|
21
10
|
scroll-snap-stop: always;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
.command {
|
|
2
|
+
border-width: var(--border);
|
|
3
|
+
border-radius: var(--rounded-lg);
|
|
4
|
+
box-shadow: var(--shadow-sm);
|
|
5
|
+
display: flex;
|
|
6
|
+
flex-direction: column;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
.command__input {
|
|
10
|
+
--input-background: transparent;
|
|
11
|
+
--input-border-color: transparent;
|
|
12
|
+
--input-outline-size: 0;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
.command__list {
|
|
16
|
+
max-block-size: 300px;
|
|
17
|
+
overflow-y: auto;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
.command__group {
|
|
21
|
+
border-block-start-width: var(--border);
|
|
22
|
+
display: flex;
|
|
23
|
+
flex-direction: column;
|
|
24
|
+
padding: var(--size-1);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.command__group-header {
|
|
28
|
+
color: var(--color-text-subtle);
|
|
29
|
+
font-size: var(--text-xs);
|
|
30
|
+
padding: var(--size-1_5) var(--size-2);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
.command__item {
|
|
34
|
+
--btn-border-color: transparent;
|
|
35
|
+
--btn-font-weight: var(--font-normal);
|
|
36
|
+
--btn-justify-content: start;
|
|
37
|
+
--btn-outline-size: 0;
|
|
38
|
+
--btn-padding: var(--size-1_5) var(--size-2);
|
|
39
|
+
|
|
40
|
+
&:focus-visible {
|
|
41
|
+
--btn-background: var(--color-secondary);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
.command__item-key {
|
|
46
|
+
color: var(--color-text-subtle);
|
|
47
|
+
font-size: var(--text-xs);
|
|
48
|
+
margin-inline-start: auto;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
.command__list--filtering {
|
|
52
|
+
.command__group { display: none; }
|
|
53
|
+
.command__group:has(.selected) { display: flex; }
|
|
54
|
+
.command__item { display: none; }
|
|
55
|
+
.command__item:is(.selected) { display: flex; }
|
|
56
|
+
}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
.input {
|
|
2
2
|
appearance: none;
|
|
3
|
-
background-color: var(--color-bg);
|
|
4
|
-
border: var(--border
|
|
5
|
-
border-radius: var(--rounded-md);
|
|
6
|
-
font-size: var(--text-sm);
|
|
3
|
+
background-color: var(--input-background, var(--color-bg));
|
|
4
|
+
border: 1px solid var(--input-border-color, var(--color-border));
|
|
5
|
+
border-radius: var(--input-radius, var(--rounded-md));
|
|
6
|
+
font-size: var(--input-font-size, var(--text-sm));
|
|
7
7
|
inline-size: var(--size-full);
|
|
8
|
-
padding: var(--
|
|
8
|
+
padding: var(--input-padding, 0.5rem 1rem);
|
|
9
9
|
|
|
10
10
|
option {
|
|
11
11
|
padding-block: revert;
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
}
|
|
35
35
|
|
|
36
36
|
&:user-invalid ~ .invalid-feedback {
|
|
37
|
-
display:
|
|
37
|
+
display: flex;
|
|
38
38
|
}
|
|
39
39
|
|
|
40
40
|
&:disabled {
|
|
@@ -50,13 +50,13 @@
|
|
|
50
50
|
|
|
51
51
|
/* Containers that act like (and contain) inputs */
|
|
52
52
|
.input--actor {
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
outline-offset: var(--border-2);
|
|
53
|
+
input {
|
|
54
|
+
border: 0; inline-size: 100%; outline: 0;
|
|
56
55
|
}
|
|
57
56
|
|
|
58
|
-
|
|
59
|
-
|
|
57
|
+
&:focus-within {
|
|
58
|
+
outline: var(--input-outline-size, 2px) solid var(--color-selected-dark);
|
|
59
|
+
outline-offset: var(--border-2);
|
|
60
60
|
}
|
|
61
61
|
}
|
|
62
62
|
|
|
@@ -73,7 +73,7 @@
|
|
|
73
73
|
/* Styles that are shared between components */
|
|
74
74
|
:is(.input, .checkbox, .radio, .range) {
|
|
75
75
|
&:focus-visible {
|
|
76
|
-
outline: var(--
|
|
76
|
+
outline: var(--input-outline-size, 2px) solid var(--color-selected-dark);
|
|
77
77
|
outline-offset: var(--border-2);
|
|
78
78
|
}
|
|
79
79
|
|
|
@@ -1,14 +1,10 @@
|
|
|
1
|
-
:root {
|
|
2
|
-
--lightbox-padding: var(--size-4);
|
|
3
|
-
}
|
|
4
|
-
|
|
5
1
|
.lightbox {
|
|
6
2
|
background-color: rgba(0, 0, 0, .8);
|
|
7
3
|
block-size: 100dvh;
|
|
8
4
|
max-block-size: unset;
|
|
9
5
|
inline-size: 100dvw;
|
|
10
6
|
max-inline-size: unset;
|
|
11
|
-
padding: var(--
|
|
7
|
+
padding: var(--size-4);
|
|
12
8
|
|
|
13
9
|
&[open] {
|
|
14
10
|
display: grid;
|
|
@@ -36,6 +32,6 @@
|
|
|
36
32
|
|
|
37
33
|
.lightbox__image {
|
|
38
34
|
grid-area: 1/1;
|
|
39
|
-
max-inline-size: calc(100dvw - (var(--
|
|
40
|
-
max-block-size: calc(100dvh - (var(--
|
|
35
|
+
max-inline-size: calc(100dvw - (var(--size-4) * 2));
|
|
36
|
+
max-block-size: calc(100dvh - (var(--size-4) * 2));
|
|
41
37
|
}
|
|
@@ -1,9 +1,3 @@
|
|
|
1
|
-
.tabs {
|
|
2
|
-
display: flex;
|
|
3
|
-
flex-direction: column;
|
|
4
|
-
gap: var(--size-2);
|
|
5
|
-
}
|
|
6
|
-
|
|
7
1
|
.tabs__list {
|
|
8
2
|
background-color: var(--color-border-light);
|
|
9
3
|
block-size: var(--size-10);
|
|
@@ -12,18 +6,16 @@
|
|
|
12
6
|
display: inline-flex;
|
|
13
7
|
gap: var(--size-2);
|
|
14
8
|
padding: var(--size-1);
|
|
9
|
+
}
|
|
15
10
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
11
|
+
.btn--tab {
|
|
12
|
+
--btn-background: transparent;
|
|
13
|
+
--btn-border-color: transparent;
|
|
14
|
+
--btn-hover-lightness: 100%;
|
|
19
15
|
|
|
20
|
-
|
|
21
|
-
--btn-background: transparent;
|
|
22
|
-
--btn-border-color: transparent;
|
|
23
|
-
--btn-filter-hover: none;
|
|
24
|
-
}
|
|
16
|
+
inline-size: var(--size-full);
|
|
25
17
|
|
|
26
|
-
|
|
18
|
+
&[aria-selected=true] {
|
|
27
19
|
--btn-background: var(--color-bg);
|
|
28
20
|
}
|
|
29
21
|
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { Controller } from "@hotwired/stimulus"
|
|
2
|
+
import { debounce } from "helpers/timing_helpers"
|
|
3
|
+
|
|
4
|
+
export default class extends Controller {
|
|
5
|
+
static targets = [ "list" ]
|
|
6
|
+
static classes = [ "active", "selected" ]
|
|
7
|
+
|
|
8
|
+
initialize() {
|
|
9
|
+
this.filter = debounce(this.filter.bind(this), 300)
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
filter(event) {
|
|
13
|
+
this.#reset()
|
|
14
|
+
|
|
15
|
+
if (event.target.value != "") {
|
|
16
|
+
this.#selectMatches(event.target.value)
|
|
17
|
+
this.#activate()
|
|
18
|
+
} else {
|
|
19
|
+
this.#deactivate()
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
#activate() {
|
|
24
|
+
this.listTarget.classList.add(this.activeClass)
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
#deactivate() {
|
|
28
|
+
this.listTarget.classList.remove(this.activeClass)
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
#selectMatches(value) {
|
|
32
|
+
this.listTarget.querySelectorAll(`[data-value*=${value.toLowerCase()}]`).forEach((element) => {
|
|
33
|
+
element.classList.add(this.selectedClass)
|
|
34
|
+
})
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
#reset() {
|
|
38
|
+
this.listTarget.querySelectorAll(`.${this.selectedClass}`).forEach((element) => {
|
|
39
|
+
element.classList.remove(this.selectedClass)
|
|
40
|
+
})
|
|
41
|
+
}
|
|
42
|
+
}
|
data/lib/generators/css_zero/add/templates/app/javascript/controllers/copyable_input_controller.js
CHANGED
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
import { Controller } from "@hotwired/stimulus"
|
|
2
|
+
import { debounce } from "helpers/timing_helpers"
|
|
2
3
|
|
|
3
4
|
export default class extends Controller {
|
|
4
5
|
static targets = [ "input", "copyIcon", "successIcon" ]
|
|
5
6
|
static values = { copied: Boolean }
|
|
6
7
|
|
|
7
|
-
|
|
8
|
+
initialize() {
|
|
9
|
+
this.reset = debounce(this.reset.bind(this), 2500)
|
|
10
|
+
}
|
|
8
11
|
|
|
9
12
|
copiedValueChanged() {
|
|
10
13
|
this.#update()
|
|
@@ -12,23 +15,22 @@ export default class extends Controller {
|
|
|
12
15
|
|
|
13
16
|
copy() {
|
|
14
17
|
this.#copyToClipboard()
|
|
15
|
-
this
|
|
18
|
+
this.reset()
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
reset() {
|
|
22
|
+
this.copiedValue = false
|
|
16
23
|
}
|
|
17
24
|
|
|
18
25
|
#copyToClipboard() {
|
|
19
26
|
try {
|
|
20
27
|
navigator.clipboard.writeText(this.inputTarget.value)
|
|
21
28
|
this.copiedValue = true
|
|
22
|
-
} catch
|
|
23
|
-
|
|
29
|
+
} catch {
|
|
30
|
+
this.copiedValue = false
|
|
24
31
|
}
|
|
25
32
|
}
|
|
26
33
|
|
|
27
|
-
#reset() {
|
|
28
|
-
clearTimeout(this.#copiedTimeout)
|
|
29
|
-
this.#copiedTimeout = setTimeout(() => { this.copiedValue = false }, 3000)
|
|
30
|
-
}
|
|
31
|
-
|
|
32
34
|
#update() {
|
|
33
35
|
this.copyIconTarget.hidden = this.copiedValue
|
|
34
36
|
this.successIconTarget.hidden = !this.copiedValue
|
|
@@ -6,4 +6,18 @@ class CssZero::InstallGenerator < Rails::Generators::Base
|
|
|
6
6
|
def copy_base_css
|
|
7
7
|
copy_file "app/assets/stylesheets/base.css"
|
|
8
8
|
end
|
|
9
|
+
|
|
10
|
+
def copy_javascript_helpers
|
|
11
|
+
directory "app/javascript/helpers"
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def pin_javascript_helpers
|
|
15
|
+
return unless install_with_importmap?
|
|
16
|
+
append_to_file "config/importmap.rb", %(pin_all_from "app/javascript/helpers", under: "helpers"\n)
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
private
|
|
20
|
+
def install_with_importmap?
|
|
21
|
+
Rails.root.join("config/importmap.rb").exist?
|
|
22
|
+
end
|
|
9
23
|
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export function getCookie(name) {
|
|
2
|
+
const cookies = document.cookie ? document.cookie.split("; ") : []
|
|
3
|
+
const prefix = `${encodeURIComponent(name)}=`
|
|
4
|
+
const cookie = cookies.find(cookie => cookie.startsWith(prefix))
|
|
5
|
+
|
|
6
|
+
if (cookie) {
|
|
7
|
+
const value = cookie.split("=").slice(1).join("=")
|
|
8
|
+
return value ? decodeURIComponent(value) : undefined
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export function setCookie(name, value) {
|
|
13
|
+
const twentyYears = 20 * 365 * 24 * 60 * 60 * 1000
|
|
14
|
+
const body = [ name, value ].map(encodeURIComponent).join("=")
|
|
15
|
+
const expires = new Date(Date.now() + twentyYears).toUTCString()
|
|
16
|
+
const cookie = `${body}; path=/; expires=${expires}`
|
|
17
|
+
document.cookie = cookie
|
|
18
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
export function throttle(fn, delay = 1000) {
|
|
2
|
+
let timeoutId = null
|
|
3
|
+
|
|
4
|
+
return (...args) => {
|
|
5
|
+
if (!timeoutId) {
|
|
6
|
+
fn(...args)
|
|
7
|
+
timeoutId = setTimeout(() => timeoutId = null, delay)
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export function debounce(fn, delay = 1000) {
|
|
13
|
+
let timeoutId = null
|
|
14
|
+
|
|
15
|
+
return (...args) => {
|
|
16
|
+
clearTimeout(timeoutId)
|
|
17
|
+
timeoutId = setTimeout(() => fn.apply(this, args), delay)
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export function nextEventLoopTick() {
|
|
22
|
+
return delay(0)
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export function onNextEventLoopTick(callback) {
|
|
26
|
+
setTimeout(callback, 0)
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export function nextFrame() {
|
|
30
|
+
return new Promise(requestAnimationFrame)
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export function nextEventNamed(eventName, element = window) {
|
|
34
|
+
return new Promise(resolve => element.addEventListener(eventName, resolve, { once: true }))
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export function delay(ms) {
|
|
38
|
+
return new Promise(resolve => setTimeout(resolve, ms))
|
|
39
|
+
}
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: css-zero
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0.
|
|
4
|
+
version: 0.0.39
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Lázaro Nixon
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2024-09-
|
|
11
|
+
date: 2024-09-30 00:00:00.000000000 Z
|
|
12
12
|
dependencies: []
|
|
13
13
|
description:
|
|
14
14
|
email: lazaronixon@hotmail.com
|
|
@@ -53,6 +53,7 @@ files:
|
|
|
53
53
|
- lib/generators/css_zero/add/templates/app/assets/images/maximize.svg
|
|
54
54
|
- lib/generators/css_zero/add/templates/app/assets/images/menu.svg
|
|
55
55
|
- lib/generators/css_zero/add/templates/app/assets/images/minus.svg
|
|
56
|
+
- lib/generators/css_zero/add/templates/app/assets/images/search.svg
|
|
56
57
|
- lib/generators/css_zero/add/templates/app/assets/images/select-arrow.svg
|
|
57
58
|
- lib/generators/css_zero/add/templates/app/assets/images/share.svg
|
|
58
59
|
- lib/generators/css_zero/add/templates/app/assets/images/x.svg
|
|
@@ -64,6 +65,7 @@ files:
|
|
|
64
65
|
- lib/generators/css_zero/add/templates/app/assets/stylesheets/button.css
|
|
65
66
|
- lib/generators/css_zero/add/templates/app/assets/stylesheets/card.css
|
|
66
67
|
- lib/generators/css_zero/add/templates/app/assets/stylesheets/carousel.css
|
|
68
|
+
- lib/generators/css_zero/add/templates/app/assets/stylesheets/command.css
|
|
67
69
|
- lib/generators/css_zero/add/templates/app/assets/stylesheets/dialog.css
|
|
68
70
|
- lib/generators/css_zero/add/templates/app/assets/stylesheets/flash.css
|
|
69
71
|
- lib/generators/css_zero/add/templates/app/assets/stylesheets/input.css
|
|
@@ -82,6 +84,7 @@ files:
|
|
|
82
84
|
- lib/generators/css_zero/add/templates/app/javascript/controllers/check_all_controller.js
|
|
83
85
|
- lib/generators/css_zero/add/templates/app/javascript/controllers/clearable_input_controller.js
|
|
84
86
|
- lib/generators/css_zero/add/templates/app/javascript/controllers/collapsible_controller.js
|
|
87
|
+
- lib/generators/css_zero/add/templates/app/javascript/controllers/command_controller.js
|
|
85
88
|
- lib/generators/css_zero/add/templates/app/javascript/controllers/copyable_input_controller.js
|
|
86
89
|
- lib/generators/css_zero/add/templates/app/javascript/controllers/dialog_controller.js
|
|
87
90
|
- lib/generators/css_zero/add/templates/app/javascript/controllers/element_removal_controller.js
|
|
@@ -97,6 +100,8 @@ files:
|
|
|
97
100
|
- lib/generators/css_zero/install/USAGE
|
|
98
101
|
- lib/generators/css_zero/install/install_generator.rb
|
|
99
102
|
- lib/generators/css_zero/install/templates/app/assets/stylesheets/base.css
|
|
103
|
+
- lib/generators/css_zero/install/templates/app/javascript/helpers/cookie_helpers.js
|
|
104
|
+
- lib/generators/css_zero/install/templates/app/javascript/helpers/timing_helpers.js
|
|
100
105
|
homepage: https://github.com/lazaronixon/css-zero
|
|
101
106
|
licenses:
|
|
102
107
|
- MIT
|