css-zero 0.0.28 → 0.0.30

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 (28) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -2
  3. data/app/assets/stylesheets/_reset.css +2 -19
  4. data/app/assets/stylesheets/filters.css +22 -22
  5. data/app/assets/stylesheets/sizes.css +0 -4
  6. data/app/assets/stylesheets/transform.css +1 -1
  7. data/app/assets/stylesheets/transition.css +3 -4
  8. data/app/assets/stylesheets/zutilities.css +10 -36
  9. data/app/helpers/tabs_helper.rb +5 -0
  10. data/lib/css_zero/version.rb +1 -1
  11. data/lib/generators/css_zero/add/USAGE +1 -1
  12. data/lib/generators/css_zero/add/resources.yml +5 -0
  13. data/lib/generators/css_zero/add/templates/app/assets/stylesheets/accordion.css +10 -4
  14. data/lib/generators/css_zero/add/templates/app/assets/stylesheets/button.css +14 -20
  15. data/lib/generators/css_zero/add/templates/app/assets/stylesheets/carousel.css +1 -1
  16. data/lib/generators/css_zero/add/templates/app/assets/stylesheets/input.css +27 -13
  17. data/lib/generators/css_zero/add/templates/app/assets/stylesheets/layouts.css +47 -0
  18. data/lib/generators/css_zero/add/templates/app/assets/stylesheets/pagination.css +0 -1
  19. data/lib/generators/css_zero/add/templates/app/assets/stylesheets/sheet.css +13 -4
  20. data/lib/generators/css_zero/add/templates/app/assets/stylesheets/switch.css +1 -2
  21. data/lib/generators/css_zero/add/templates/app/assets/stylesheets/table.css +1 -1
  22. data/lib/generators/css_zero/add/templates/app/assets/stylesheets/tabs.css +24 -0
  23. data/lib/generators/css_zero/add/templates/app/assets/stylesheets/toggle.css +0 -1
  24. data/lib/generators/css_zero/add/templates/app/javascript/controllers/tabs_controller.js +25 -0
  25. data/lib/generators/css_zero/install/templates/app/assets/stylesheets/base.css +5 -0
  26. metadata +6 -4
  27. data/app/assets/stylesheets/grid.css +0 -38
  28. data/app/assets/stylesheets/zindex.css +0 -13
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5d00718d05a40dc614c0fda5d71c5959ad693c89e1fd5493c132a5d4144cbe5e
4
- data.tar.gz: b1f8b29d85f5ba031dfd416a80c57dc12d1b0903e0881c2e4cac3d18e2a39aa8
3
+ metadata.gz: f8c460c71199f0ee11915508660def66aba8330d9e7ff2693233e370ffc71818
4
+ data.tar.gz: a1b3716a3b9bb396dd50e233f74a6ed55aaa36489ec5aa80508ed4c5646306a0
5
5
  SHA512:
6
- metadata.gz: 6e0e3afefccb4f99330a9c3a3942b8619714b8152dd24e04bb421029f55fdff57ec3e1fbde841036151586235e5dcc07a505f0d713d661e15dbfcb37477e9653
7
- data.tar.gz: f4207685a64ce0a9b70cc1553aa6cede199c9eda2238823c1f713a4049d38992e8fe28b76c64678c6854fc627144a283bba92b2314ac2f6958b3546bef9d001c
6
+ metadata.gz: 45dfd49b4086d13457f904a5a7d99d26f2065b9f7ab1033e335f273f0bccc17542d6ae75194f26e84224002ebb569c41a54365c4e97e1eb799ef2d77a05eb73e
7
+ data.tar.gz: 2b1490c0232e5ba74b08565b9172d428d8578936cef764f443c80bf56619636c930df35ff30f6b1c2d44e8d368a960b5b709a5950dfde6e2e5540131dd714f34
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 input pagination progress prose sheet skeleton switch table toggle
22
+ bin/rails generate css_zero:add accordion alert avatar badge breadcrumb button card carousel collapsible dialog flash input layouts pagination progress prose sheet skeleton switch table tabs toggle
23
23
  ```
24
24
 
25
25
  ### Requirements
@@ -52,7 +52,6 @@ If you are using [Sprockets](https://github.com/rails/sprockets) make sure to lo
52
52
  *= require transform
53
53
  *= require transition
54
54
  *= require typography
55
- *= require zindex
56
55
  *= require_tree .
57
56
  *= require_self
58
57
  *= require zutilities
@@ -44,7 +44,6 @@ html:has(dialog:modal[open]) {
44
44
  overflow: hidden;
45
45
  }
46
46
 
47
-
48
47
  /*
49
48
  Inherit line-height from `html` so users can set them as a class directly on the `html` element.
50
49
  */
@@ -202,14 +201,6 @@ input:where([type='button'], [type='reset'], [type='submit']),
202
201
  appearance: button;
203
202
  }
204
203
 
205
- /*
206
- Revert padding block, it can be noticed in select with multiple.
207
- */
208
-
209
- option {
210
- padding-block: revert;
211
- }
212
-
213
204
  /*
214
205
  Use the modern Firefox focus style for all focusable elements.
215
206
  */
@@ -303,14 +294,6 @@ textarea {
303
294
  color: color-mix(in srgb, currentColor 50%, transparent); /* 2 */
304
295
  }
305
296
 
306
- /*
307
- Make sure disabled buttons don't get the pointer cursor.
308
- */
309
-
310
- :disabled {
311
- cursor: default;
312
- }
313
-
314
297
  /*
315
298
  1. Make replaced elements `display: block` by default. (https://github.com/mozdevs/cssremedy/issues/14)
316
299
  2. Add `vertical-align: middle` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210)
@@ -352,7 +335,7 @@ turbo-frame {
352
335
  */
353
336
 
354
337
  [hidden] {
355
- display: none;
338
+ display: none !important;
356
339
  }
357
340
 
358
341
  /*
@@ -360,5 +343,5 @@ turbo-frame {
360
343
  */
361
344
 
362
345
  [contents] {
363
- display: contents;
346
+ display: contents !important;
364
347
  }
@@ -106,27 +106,27 @@
106
106
  /****************************************************************
107
107
  * Opacity
108
108
  * Utilities for applying backdrop opacity filters to an element.
109
- * backdrop-filter: var(--opaqueness-45);
109
+ * backdrop-filter: var(--alpha-45);
110
110
  *****************************************************************/
111
- --opaqueness-0: opacity(0);
112
- --opaqueness-5: opacity(0.05);
113
- --opaqueness-10: opacity(0.1);
114
- --opaqueness-15: opacity(0.15);
115
- --opaqueness-20: opacity(0.2);
116
- --opaqueness-25: opacity(0.25);
117
- --opaqueness-30: opacity(0.3);
118
- --opaqueness-35: opacity(0.35);
119
- --opaqueness-40: opacity(0.4);
120
- --opaqueness-45: opacity(0.45);
121
- --opaqueness-50: opacity(0.5);
122
- --opaqueness-55: opacity(0.55);
123
- --opaqueness-60: opacity(0.6);
124
- --opaqueness-65: opacity(0.65);
125
- --opaqueness-70: opacity(0.7);
126
- --opaqueness-75: opacity(0.75);
127
- --opaqueness-80: opacity(0.8);
128
- --opaqueness-85: opacity(0.85);
129
- --opaqueness-90: opacity(0.9);
130
- --opaqueness-95: opacity(0.95);
131
- --opaqueness-100: opacity(1);
111
+ --alpha-0: opacity(0);
112
+ --alpha-5: opacity(0.05);
113
+ --alpha-10: opacity(0.1);
114
+ --alpha-15: opacity(0.15);
115
+ --alpha-20: opacity(0.2);
116
+ --alpha-25: opacity(0.25);
117
+ --alpha-30: opacity(0.3);
118
+ --alpha-35: opacity(0.35);
119
+ --alpha-40: opacity(0.4);
120
+ --alpha-45: opacity(0.45);
121
+ --alpha-50: opacity(0.5);
122
+ --alpha-55: opacity(0.55);
123
+ --alpha-60: opacity(0.6);
124
+ --alpha-65: opacity(0.65);
125
+ --alpha-70: opacity(0.7);
126
+ --alpha-75: opacity(0.75);
127
+ --alpha-80: opacity(0.8);
128
+ --alpha-85: opacity(0.85);
129
+ --alpha-90: opacity(0.9);
130
+ --alpha-95: opacity(0.95);
131
+ --alpha-100: opacity(1);
132
132
  }
@@ -88,11 +88,7 @@
88
88
  * Aspect Ratio
89
89
  *****************************************************************/
90
90
  --aspect-square: 1/1;
91
- --aspect-landscape: 4/3;
92
- --aspect-portrait: 3/4;
93
91
  --aspect-widescreen: 16/9;
94
- --aspect-ultrawide: 18/5;
95
- --aspect-golden: 1.6180/1;
96
92
 
97
93
  /****************************************************************
98
94
  * Breakpoints
@@ -2,7 +2,7 @@
2
2
  /****************************************************************
3
3
  * Scale
4
4
  * Variables for scaling elements with transform.
5
- * transform: scale(--scale-100);
5
+ * transform: var(--scale-100);
6
6
  *****************************************************************/
7
7
  --scale-50: scale(0.50);
8
8
  --scale-75: scale(0.75);
@@ -4,8 +4,8 @@
4
4
  * Variables for controlling which CSS properties transition.
5
5
  * transition-property: var(--transition);
6
6
  *****************************************************************/
7
- --transition: background-color, border-color, color, fill, stroke, opacity, box-shadow, transform;
8
- --transition-colors: background-color, border-color, color, fill, stroke;
7
+ --transition: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, translate, scale, rotate, filter, backdrop-filter;
8
+ --transition-colors: color, background-color, border-color, text-decoration-color, fill, stroke;
9
9
 
10
10
  /****************************************************************
11
11
  * Transition Timing
@@ -24,9 +24,8 @@
24
24
  /****************************************************************
25
25
  * Transition Timing Function
26
26
  * Variables for controlling the easing of CSS transitions.
27
- * transition-timing-function: var(--ease-linear);
27
+ * transition-timing-function: var(--ease-in);
28
28
  *****************************************************************/
29
- --ease-linear: linear;
30
29
  --ease-in: cubic-bezier(0.4, 0, 1, 1);
31
30
  --ease-out: cubic-bezier(0, 0, 0.2, 1);
32
31
  --ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);
@@ -28,37 +28,6 @@
28
28
  .gap { column-gap: var(--column-gap, 1rem); row-gap: var(--row-gap, 1rem); }
29
29
  .gap-sm { column-gap: 0.5rem; row-gap: 0.5rem; }
30
30
 
31
- /****************************************************************
32
- * Grid
33
- *****************************************************************/
34
- .grid { display: grid; }
35
-
36
- .grid-cols-1 { grid-template-columns: var(--grid-1); }
37
- .grid-cols-2 { grid-template-columns: var(--grid-2); }
38
- .grid-cols-3 { grid-template-columns: var(--grid-3); }
39
- .grid-cols-4 { grid-template-columns: var(--grid-4); }
40
- .grid-cols-5 { grid-template-columns: var(--grid-5); }
41
- .grid-cols-6 { grid-template-columns: var(--grid-6); }
42
- .grid-cols-7 { grid-template-columns: var(--grid-7); }
43
- .grid-cols-8 { grid-template-columns: var(--grid-8); }
44
- .grid-cols-9 { grid-template-columns: var(--grid-9); }
45
- .grid-cols-10 { grid-template-columns: var(--grid-10); }
46
- .grid-cols-11 { grid-template-columns: var(--grid-11); }
47
- .grid-cols-12 { grid-template-columns: var(--grid-12); }
48
-
49
- .col-span-1 { grid-column: var(--span-1); }
50
- .col-span-2 { grid-column: var(--span-2); }
51
- .col-span-3 { grid-column: var(--span-3); }
52
- .col-span-4 { grid-column: var(--span-4); }
53
- .col-span-5 { grid-column: var(--span-5); }
54
- .col-span-6 { grid-column: var(--span-6); }
55
- .col-span-7 { grid-column: var(--span-7); }
56
- .col-span-8 { grid-column: var(--span-8); }
57
- .col-span-9 { grid-column: var(--span-9); }
58
- .col-span-10 { grid-column: var(--span-10); }
59
- .col-span-11 { grid-column: var(--span-11); }
60
- .col-span-12 { grid-column: var(--span-12); }
61
-
62
31
  /****************************************************************
63
32
  * Text
64
33
  *****************************************************************/
@@ -141,8 +110,12 @@
141
110
  *****************************************************************/
142
111
  .border-0 { border-width: 0; }
143
112
  .border { border-width: var(--border-size, 1px); }
113
+
114
+ .border-b { border-block-width: var(--border-size, 1px); }
144
115
  .border-bs { border-block-start-width: var(--border-size, 1px); }
145
116
  .border-be { border-block-end-width: var(--border-size, 1px); }
117
+
118
+ .border-i { border-inline-width: var(--border-size, 1px); }
146
119
  .border-is { border-inline-start-width: var(--border-size, 1px); }
147
120
  .border-ie { border-inline-end-width: var(--border-size, 1px); }
148
121
 
@@ -151,6 +124,7 @@
151
124
 
152
125
  .border-solid { border-style: solid; }
153
126
  .border-dashed { border-style: dashed; }
127
+ .border-dotted { border-style: dotted; }
154
128
 
155
129
  .rounded-none { border-radius: none; }
156
130
  .rounded-sm { border-radius: var(--rounded-sm); }
@@ -186,6 +160,7 @@
186
160
 
187
161
  .h-full { block-size: 100%; }
188
162
  .w-full { inline-size: 100%; }
163
+ .w-min { inline-size: min-content; }
189
164
 
190
165
  .overflow-x-auto { overflow-x: auto; scroll-snap-type: x mandatory; }
191
166
  .overflow-y-auto { overflow-y: auto; scroll-snap-type: y mandatory; }
@@ -340,11 +315,10 @@
340
315
  * Accessibility
341
316
  *****************************************************************/
342
317
  .sr-only {
343
- position: absolute;
344
- width: 1px; height: 1px;
345
- padding: 0; margin: -1px;
318
+ block-size: 1px;
319
+ clip-path: inset(50%);
320
+ inline-size: 1px;
346
321
  overflow: hidden;
347
- clip: rect(0, 0, 0, 0);
322
+ position: absolute;
348
323
  white-space: nowrap;
349
- border-width: 0;
350
324
  }
@@ -0,0 +1,5 @@
1
+ module TabsHelper
2
+ def tab_button(content = nil, value:, **, &)
3
+ tag.button(content, data: { tabs_target: "button", action: "tabs#select", value: }, **, &)
4
+ end
5
+ end
@@ -1,3 +1,3 @@
1
1
  module CssZero
2
- VERSION = "0.0.28"
2
+ VERSION = "0.0.30"
3
3
  end
@@ -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 input pagination progress prose sheet skeleton switch table toggle
5
+ accordion alert avatar badge breadcrumb button card carousel collapsible dialog flash input layouts pagination progress prose sheet skeleton switch table tabs toggle
6
6
 
7
7
  Example:
8
8
  bin/rails generate css_zero:add [components...]
@@ -32,6 +32,8 @@ flash:
32
32
  input:
33
33
  - app/assets/stylesheets/input.css
34
34
  - app/assets/images/select-arrow.svg
35
+ layouts:
36
+ - app/assets/stylesheets/layouts.css
35
37
  pagination:
36
38
  - app/assets/stylesheets/pagination.css
37
39
  - app/assets/images/chevron-right.svg
@@ -51,5 +53,8 @@ switch:
51
53
  - app/assets/stylesheets/switch.css
52
54
  table:
53
55
  - app/assets/stylesheets/table.css
56
+ tabs:
57
+ - app/assets/stylesheets/tabs.css
58
+ - app/javascript/controllers/tabs_controller.js
54
59
  toggle:
55
60
  - app/assets/stylesheets/toggle.css
@@ -1,10 +1,16 @@
1
1
  :where(.accordion) {
2
2
  details {
3
3
  border-block-end-width: var(--border);
4
- transition: padding var(--time-150) var(--ease-in-out);
5
4
 
6
- &[open] {
7
- padding-block-end: var(--size-4);
5
+ &::details-content {
6
+ block-size: 0; overflow: hidden;
7
+ transition-behavior: allow-discrete;
8
+ transition-duration: var(--time-150);
9
+ transition-property: content-visibility height;
10
+ }
11
+
12
+ &[open]::details-content {
13
+ block-size: calc-size(auto);
8
14
  }
9
15
 
10
16
  &[open] summary::after {
@@ -40,7 +46,7 @@
40
46
  content: "";
41
47
  filter: var(--color-filter-text);
42
48
  inline-size: var(--size-4);
43
- transition: transform var(--time-200) var(--ease-in-out);
49
+ transition: transform var(--time-200);
44
50
  }
45
51
  }
46
52
  }
@@ -10,7 +10,7 @@
10
10
  font-weight: var(--font-medium);
11
11
  gap: var(--size-2);
12
12
  justify-content: center;
13
- min-inline-size: fit-content;
13
+ white-space: nowrap;
14
14
  padding: var(--size-2) var(--size-4);
15
15
  text-align: center;
16
16
 
@@ -60,25 +60,19 @@
60
60
  --btn-icon-color: var(--color-filter-negative);
61
61
  }
62
62
 
63
- .btn--loading {
64
- [aria-busy] &:disabled {
65
- position: relative;
66
-
67
- > * {
68
- visibility: hidden;
69
- }
63
+ [aria-busy] .btn--loading:disabled {
64
+ > * {
65
+ visibility: hidden;
66
+ }
70
67
 
71
- &::after {
72
- animation: var(--animate-spin);
73
- animation-duration: 1s;
74
- background-image: url("loader-circle.svg");
75
- background-size: cover;
76
- block-size: var(--size-4);
77
- content: "";
78
- filter: var(--btn-icon-color, var(--color-filter-text-reversed));
79
- inline-size: var(--size-4);
80
- margin-inline: auto;
81
- position: absolute;
82
- }
68
+ &::after {
69
+ animation: spin 1s linear infinite;
70
+ background-image: url("loader-circle.svg");
71
+ background-size: cover;
72
+ block-size: var(--size-4);
73
+ content: "";
74
+ filter: var(--btn-icon-color, var(--color-filter-text-reversed));
75
+ inline-size: var(--size-4);
76
+ position: absolute;
83
77
  }
84
78
  }
@@ -14,7 +14,7 @@
14
14
 
15
15
  &::-webkit-scrollbar {
16
16
  display: none;
17
- }
17
+ }
18
18
 
19
19
  > * {
20
20
  flex: 0 0 100%;
@@ -1,12 +1,16 @@
1
1
  .input {
2
2
  appearance: none;
3
3
  background-color: var(--color-bg);
4
- border-color: var(--color-border);
4
+ border: var(--border) solid var(--color-border);
5
5
  border-radius: var(--rounded-md);
6
6
  font-size: var(--text-sm);
7
7
  inline-size: var(--size-full);
8
8
  padding: var(--size-2) var(--size-3);
9
9
 
10
+ option {
11
+ padding-block: revert;
12
+ }
13
+
10
14
  &:is(textarea):not([rows]) {
11
15
  field-sizing: content;
12
16
  max-block-size: calc(10lh + var(--size-6));
@@ -26,15 +30,6 @@
26
30
  margin-inline-end: var(--size-2);
27
31
  }
28
32
 
29
- &:autofill {
30
- -webkit-text-fill-color: var(--color-text);
31
- -webkit-box-shadow: 0 0 0px 1000px var(--color-selected) inset;
32
- }
33
-
34
- &::placeholder {
35
- color: var(--color-text-subtle);
36
- }
37
-
38
33
  &:user-invalid {
39
34
  border-color: var(--color-negative);
40
35
  }
@@ -49,16 +44,35 @@
49
44
  }
50
45
  }
51
46
 
52
- .range {
53
- accent-color: var(--color-primary);
47
+ /* Containers that act like (and contain) inputs */
48
+ .input--actor {
49
+ &:focus-within {
50
+ outline: var(--border-2) solid var(--color-selected-dark);
51
+ outline-offset: var(--border-2);
52
+ }
53
+
54
+ &:has(:-webkit-autofill) {
55
+ -webkit-text-fill-color: var(--color-text);
56
+ -webkit-box-shadow: 0 0 0px 1000px var(--color-selected) inset;
57
+ }
58
+
59
+ .input__character {
60
+ border: 0; inline-size: 100%; outline: 0;
61
+ }
54
62
  }
55
63
 
64
+ /* Checkbox, radio, and range */
56
65
  .checkbox, .radio {
57
66
  accent-color: var(--color-primary);
58
67
  transform: scale(1.15);
59
68
  }
60
69
 
61
- :is(.input, .range, .checkbox, .radio) {
70
+ .range {
71
+ accent-color: var(--color-primary);
72
+ }
73
+
74
+ /* Styles that are shared between components */
75
+ :is(.input, .checkbox, .radio, .range) {
62
76
  &:focus-visible {
63
77
  outline: var(--border-2) solid var(--color-selected-dark);
64
78
  outline-offset: var(--border-2);
@@ -0,0 +1,47 @@
1
+ .layout-sidebar {
2
+ display: grid;
3
+ grid-template-areas: "header header" "sidebar main";
4
+ grid-template-columns: var(--sidebar-width, 0) 1fr;
5
+ grid-template-rows: auto 1fr;
6
+ min-block-size: 100dvh;
7
+
8
+ @media (width >= 48rem) {
9
+ --sidebar-width: 220px;
10
+ }
11
+
12
+ @media (width >= 64rem) {
13
+ --sidebar-width: 280px;
14
+ }
15
+ }
16
+
17
+ .layout-pancake {
18
+ display: grid;
19
+ grid-template-rows: auto 1fr auto;
20
+ min-block-size: 100dvh;
21
+ }
22
+
23
+ .layout-centered {
24
+ display: grid;
25
+ place-content: center;
26
+ min-block-size: 100dvh;
27
+ }
28
+
29
+ .container {
30
+ margin-inline: auto;
31
+ max-inline-size: var(--container-width, 64rem);
32
+ min-block-size: 100dvh;
33
+ }
34
+
35
+ /* Grid areas definition */
36
+
37
+ #header {
38
+ grid-area: header;
39
+ }
40
+
41
+ #sidebar {
42
+ grid-area: sidebar;
43
+ }
44
+
45
+ #main {
46
+ grid-area: main;
47
+ }
@@ -15,7 +15,6 @@
15
15
  font-weight: var(--font-medium);
16
16
  gap: var(--size-2);
17
17
  justify-content: center;
18
- min-inline-size: fit-content;
19
18
  padding: var(--size-2) var(--size-4);
20
19
  }
21
20
 
@@ -5,7 +5,7 @@
5
5
  block-size: 100%;
6
6
  color: var(--color-text);
7
7
  inline-size: var(--size-3-4);
8
- margin-inline-start: auto;
8
+ margin-inline: var(--sheet-margin);
9
9
  max-block-size: none;
10
10
  max-inline-size: var(--width-sm);
11
11
  padding: var(--size-6);
@@ -15,7 +15,7 @@
15
15
  }
16
16
 
17
17
  /* Setup animation */
18
- transform: translateX(100%);
18
+ transform: var(--sheet-transform);
19
19
  transition-behavior: allow-discrete;
20
20
  transition-duration: var(--time-500);
21
21
  transition-property: display, overlay, transform;
@@ -39,7 +39,7 @@
39
39
  /* Out animation */
40
40
  @starting-style {
41
41
  &[open] {
42
- transform: translateX(100%);
42
+ transform: var(--sheet-transform);
43
43
  }
44
44
 
45
45
  &[open]::backdrop {
@@ -49,10 +49,19 @@
49
49
 
50
50
  @media (width < 40rem) {
51
51
  max-inline-size: none;
52
- text-align: center;
53
52
  }
54
53
  }
55
54
 
55
+ .sheet--left {
56
+ --sheet-margin: 0 auto;
57
+ --sheet-transform: translateX(-100%);
58
+ }
59
+
60
+ .sheet--right {
61
+ --sheet-margin: auto 0;
62
+ --sheet-transform: translateX(100%);
63
+ }
64
+
56
65
  .sheet__close {
57
66
  inset-block-start: var(--size-4);
58
67
  inset-inline-end: var(--size-4);
@@ -9,7 +9,6 @@
9
9
  inline-size: var(--size-11);
10
10
  transition-duration: var(--time-150);
11
11
  transition-property: var(--transition-colors);
12
- transition-timing-function: var(--ease-in-out);
13
12
 
14
13
  &:checked {
15
14
  background-color: var(--color-primary);
@@ -26,7 +25,7 @@
26
25
  border-radius: var(--rounded-full);
27
26
  content: "";
28
27
  display: block;
29
- transition: margin var(--time-150) var(--ease-in-out);
28
+ transition: margin var(--time-150);
30
29
  }
31
30
 
32
31
  &:focus-visible {
@@ -11,7 +11,7 @@
11
11
  }
12
12
 
13
13
  tr:hover {
14
- background-color: var(--color-border-light);
14
+ background-color: hsl(from var(--color-border-light) h s l / .5);
15
15
  }
16
16
 
17
17
  th {
@@ -0,0 +1,24 @@
1
+ .tabs {
2
+ display: flex;
3
+ flex-direction: column;
4
+ gap: var(--size-2);
5
+ }
6
+
7
+ .tabs__list {
8
+ background-color: var(--color-border-light);
9
+ block-size: var(--size-10);
10
+ border-radius: var(--rounded-md);
11
+ color: var(--color-text-subtle);
12
+ display: inline-flex;
13
+ gap: var(--size-2);
14
+ padding: var(--size-1);
15
+
16
+ button {
17
+ inline-size: var(--size-full);
18
+ }
19
+
20
+ button[data-selected=true] {
21
+ --btn-background: var(--color-bg);
22
+ --btn-color: var(--color-text);
23
+ }
24
+ }
@@ -1,6 +1,5 @@
1
1
  .toggle {
2
2
  display: inline-flex;
3
- position: relative;
4
3
 
5
4
  &:has(:focus-visible) .btn {
6
5
  outline: var(--border-2) solid var(--color-selected-dark);
@@ -0,0 +1,25 @@
1
+ import { Controller } from "@hotwired/stimulus"
2
+
3
+ export default class extends Controller {
4
+ static targets = [ "button", "tab" ]
5
+ static values = { selected: String }
6
+
7
+ initialize() {
8
+ this.#showSelectedTab()
9
+ }
10
+
11
+ select(event) {
12
+ this.selectedValue = event.target.dataset.value
13
+ this.#showSelectedTab()
14
+ }
15
+
16
+ #showSelectedTab() {
17
+ this.buttonTargets.forEach(element => {
18
+ element.dataset.selected = element.dataset.value === this.selectedValue
19
+ })
20
+
21
+ this.tabTargets.forEach(element => {
22
+ element.hidden = element.dataset.value !== this.selectedValue
23
+ })
24
+ }
25
+ }
@@ -70,3 +70,8 @@ body {
70
70
  ::selection {
71
71
  background-color: var(--color-selected);
72
72
  }
73
+
74
+ :-webkit-autofill {
75
+ -webkit-text-fill-color: var(--color-text);
76
+ -webkit-box-shadow: 0 0 0px 1000px var(--color-selected) inset;
77
+ }
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.28
4
+ version: 0.0.30
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-07-26 00:00:00.000000000 Z
11
+ date: 2024-08-29 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description:
14
14
  email: lazaronixon@hotmail.com
@@ -24,14 +24,13 @@ files:
24
24
  - app/assets/stylesheets/colors.css
25
25
  - app/assets/stylesheets/effects.css
26
26
  - app/assets/stylesheets/filters.css
27
- - app/assets/stylesheets/grid.css
28
27
  - app/assets/stylesheets/sizes.css
29
28
  - app/assets/stylesheets/transform.css
30
29
  - app/assets/stylesheets/transition.css
31
30
  - app/assets/stylesheets/typography.css
32
- - app/assets/stylesheets/zindex.css
33
31
  - app/assets/stylesheets/zutilities.css
34
32
  - app/helpers/dialog_helper.rb
33
+ - app/helpers/tabs_helper.rb
35
34
  - lib/css-zero.rb
36
35
  - lib/css_zero/engine.rb
37
36
  - lib/css_zero/version.rb
@@ -59,6 +58,7 @@ files:
59
58
  - lib/generators/css_zero/add/templates/app/assets/stylesheets/dialog.css
60
59
  - lib/generators/css_zero/add/templates/app/assets/stylesheets/flash.css
61
60
  - lib/generators/css_zero/add/templates/app/assets/stylesheets/input.css
61
+ - lib/generators/css_zero/add/templates/app/assets/stylesheets/layouts.css
62
62
  - lib/generators/css_zero/add/templates/app/assets/stylesheets/pagination.css
63
63
  - lib/generators/css_zero/add/templates/app/assets/stylesheets/progress.css
64
64
  - lib/generators/css_zero/add/templates/app/assets/stylesheets/prose.css
@@ -66,11 +66,13 @@ files:
66
66
  - lib/generators/css_zero/add/templates/app/assets/stylesheets/skeleton.css
67
67
  - lib/generators/css_zero/add/templates/app/assets/stylesheets/switch.css
68
68
  - lib/generators/css_zero/add/templates/app/assets/stylesheets/table.css
69
+ - lib/generators/css_zero/add/templates/app/assets/stylesheets/tabs.css
69
70
  - lib/generators/css_zero/add/templates/app/assets/stylesheets/toggle.css
70
71
  - lib/generators/css_zero/add/templates/app/javascript/controllers/carousel_controller.js
71
72
  - lib/generators/css_zero/add/templates/app/javascript/controllers/collapsible_controller.js
72
73
  - lib/generators/css_zero/add/templates/app/javascript/controllers/dialog_controller.js
73
74
  - lib/generators/css_zero/add/templates/app/javascript/controllers/element_removal_controller.js
75
+ - lib/generators/css_zero/add/templates/app/javascript/controllers/tabs_controller.js
74
76
  - lib/generators/css_zero/install/USAGE
75
77
  - lib/generators/css_zero/install/install_generator.rb
76
78
  - lib/generators/css_zero/install/templates/app/assets/stylesheets/base.css
@@ -1,38 +0,0 @@
1
- :root {
2
- /****************************************************************
3
- * Grid Template
4
- * Variables for specifying the columns/rows in a grid layout.
5
- * grid-template-columns|grid-template-rows: var(--grid-1);
6
- *****************************************************************/
7
- --grid-1: repeat(1, minmax(0, 1fr));
8
- --grid-2: repeat(2, minmax(0, 1fr));
9
- --grid-3: repeat(3, minmax(0, 1fr));
10
- --grid-4: repeat(4, minmax(0, 1fr));
11
- --grid-5: repeat(5, minmax(0, 1fr));
12
- --grid-6: repeat(6, minmax(0, 1fr));
13
- --grid-7: repeat(7, minmax(0, 1fr));
14
- --grid-8: repeat(8, minmax(0, 1fr));
15
- --grid-9: repeat(9, minmax(0, 1fr));
16
- --grid-10: repeat(10, minmax(0, 1fr));
17
- --grid-11: repeat(11, minmax(0, 1fr));
18
- --grid-12: repeat(12, minmax(0, 1fr));
19
-
20
- /****************************************************************
21
- * Grid Start / End
22
- * Variables for controlling how elements are sized and placed across grid columns/rows.
23
- * grid-column|grid-row: var(--span-1);
24
- *****************************************************************/
25
- --span-1: span 1 / span 1;
26
- --span-2: span 2 / span 2;
27
- --span-3: span 3 / span 3;
28
- --span-4: span 4 / span 4;
29
- --span-5: span 5 / span 5;
30
- --span-6: span 6 / span 6;
31
- --span-7: span 7 / span 7;
32
- --span-8: span 8 / span 8;
33
- --span-9: span 9 / span 9;
34
- --span-10: span 10 / span 10;
35
- --span-11: span 11 / span 11;
36
- --span-12: span 12 / span 12;
37
- --span-full: 1 / -1;
38
- }
@@ -1,13 +0,0 @@
1
- /****************************************************************
2
- * Z-Index
3
- * Utilities for controlling the stack order of an element.
4
- * z-index: var(--z-10);
5
- *****************************************************************/
6
-
7
- :root {
8
- --z-10: 10;
9
- --z-20: 20;
10
- --z-30: 30;
11
- --z-40: 40;
12
- --z-50: 50;
13
- }