css-zero 0.0.8 → 0.0.10
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +72 -23
- data/app/assets/stylesheets/buttons.css +37 -20
- data/app/assets/stylesheets/colors.css +18 -17
- data/app/assets/stylesheets/dialog.css +33 -0
- data/app/assets/stylesheets/inputs.css +54 -0
- data/app/assets/stylesheets/zutilities.css +21 -15
- data/lib/css_zero/version.rb +1 -1
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1627717e8a9e7cedf50a2bf68f7fff9eb3b9a36991d6b9a68dc54271d6a035a2
|
4
|
+
data.tar.gz: 6a5fbdf78fe2d73522011672a7b3b536a001e0eeb5953a4ffc7171aca361bfab
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4efd2234d0690ea705ccd894db2b5d89bce059177f7620d65f0e1d998bf41e94a6470a626b4600e96b1cb99ea9c2e77d95c8e7961569c3a8908045ee1bc2a8af
|
7
|
+
data.tar.gz: 83c1cef52f7a3f328af20e97720464c8043d63da94b8694d20b74fdd80762a5c838f624fc4b52ef9224d3e4fcf49fe4993ffc1bc010a49d248af24ba21a821d0
|
data/README.md
CHANGED
@@ -26,12 +26,16 @@ If you are using [Sprockets](https://github.com/rails/sprockets) make sure to lo
|
|
26
26
|
```css
|
27
27
|
*= require _reset
|
28
28
|
*= require animations
|
29
|
+
*= require base
|
29
30
|
*= require borders
|
30
31
|
*= require buttons
|
31
32
|
*= require colors
|
33
|
+
*= require dialog
|
32
34
|
*= require effects
|
33
35
|
*= require filters
|
34
36
|
*= require grid
|
37
|
+
*= require inputs
|
38
|
+
*= require separators
|
35
39
|
*= require sizes
|
36
40
|
*= require transform
|
37
41
|
*= require transition
|
@@ -64,39 +68,84 @@ If you are using [Sprockets](https://github.com/rails/sprockets) make sure to lo
|
|
64
68
|
|
65
69
|
Check the [CSS files](app/assets/stylesheets) in the repository for reference.
|
66
70
|
|
67
|
-
##
|
71
|
+
## Inputs
|
68
72
|
|
69
|
-
<img width="
|
73
|
+
<img width="436" alt="Inputs" src="https://github.com/lazaronixon/css-zero/assets/2651240/9935df82-606f-4ebb-bfd7-d18c9bc8b5f5">
|
70
74
|
|
71
|
-
```html
|
72
|
-
<div class="flex
|
73
|
-
<
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
<
|
79
|
-
|
80
|
-
<
|
81
|
-
</
|
75
|
+
```html
|
76
|
+
<div class="flex flex-col w-full gap" style="max-inline-size: 24rem;">
|
77
|
+
<div class="flex flex-col grow gap-small">
|
78
|
+
<label for="name_field" class="text-sm font-medium">Full name</label>
|
79
|
+
<input type="text" id="name_field" class="input">
|
80
|
+
</div>
|
81
|
+
|
82
|
+
<div class="flex flex-col grow gap-small">
|
83
|
+
<label for="date_field" class="text-sm font-medium">Date picker</label>
|
84
|
+
<input type="date" id="date_field" class="input">
|
85
|
+
</div>
|
86
|
+
|
87
|
+
<div class="flex flex-col grow gap-small">
|
88
|
+
<label for="file_field" class="text-sm font-medium">File</label>
|
89
|
+
<input type="file" id="file_field" class="input">
|
90
|
+
</div>
|
91
|
+
|
92
|
+
<div class="flex flex-col grow gap-small">
|
93
|
+
<label for="age_range_Field" class="text-sm font-medium">Age Range</label>
|
94
|
+
<select id="age_range_Field" class="input">
|
95
|
+
<option value="0-13">0-13</option>
|
96
|
+
<option value="14-17">14-17</option>
|
97
|
+
</select>
|
98
|
+
</div>
|
99
|
+
|
100
|
+
<div class="flex flex-col grow gap-small">
|
101
|
+
<label for="comment_field" class="text-sm font-medium">Comment</label>
|
102
|
+
<textarea id="comment_field" class="input"></textarea>
|
103
|
+
</div>
|
104
|
+
|
105
|
+
<div class="flex items-center gap-small">
|
106
|
+
<input type="checkbox" id="terms">
|
107
|
+
<label for="terms" class="text-sm font-medium">Accept terms and conditions</label>
|
108
|
+
</div>
|
109
|
+
</div>
|
110
|
+
```
|
82
111
|
|
83
|
-
|
84
|
-
Colored button
|
85
|
-
</button>
|
112
|
+
## Buttons
|
86
113
|
|
87
|
-
|
88
|
-
|
114
|
+
<img width="783" alt="image" src="https://github.com/lazaronixon/css-zero/assets/2651240/4e6a6829-5dd0-4eff-9b2f-33c9de85d3ef">
|
115
|
+
|
116
|
+
```html
|
117
|
+
<div class="flex justify-center gap">
|
118
|
+
<button class="btn">Primary</button>
|
119
|
+
<button class="btn btn--secondary">Secondary</button>
|
120
|
+
<button class="btn btn--outline">Outline</button>
|
121
|
+
<button class="btn btn--plain">Plain</button>
|
122
|
+
<button class="btn btn--positive">Positive</button>
|
123
|
+
<button class="btn btn--negative">Negative</button>
|
124
|
+
|
125
|
+
<button class="btn">
|
126
|
+
<%= image_tag "plus.svg", role: "presentation", size: 20 %>
|
127
|
+
<span>With icon</span>
|
89
128
|
</button>
|
90
129
|
</div>
|
91
130
|
```
|
92
131
|
|
93
|
-
##
|
132
|
+
## Dialog
|
94
133
|
|
95
|
-
|
134
|
+
<img width="572" alt="Dialog" src="https://github.com/lazaronixon/css-zero/assets/2651240/381dd7eb-8024-4ffc-992a-d47d370a3c24">
|
96
135
|
|
97
|
-
|
136
|
+
```html
|
137
|
+
<dialog id="my_modal" class="dialog">
|
138
|
+
<h1 class="text-lg font-semibold">Are you absolutely sure?</h1>
|
139
|
+
<p class="text-sm text-subtle mbs-2">This action cannot be undone. This will permanently delete your account and remove your data from our servers.</p>
|
98
140
|
|
99
|
-
|
141
|
+
<div class="flex gap-small justify-end mbs-4">
|
142
|
+
<form method="dialog"><button class="btn btn--outline">Cancel</button></form>
|
143
|
+
<button class="btn">Continue</button>
|
144
|
+
</div>
|
145
|
+
</dialog>
|
146
|
+
|
147
|
+
<button class="btn" onClick="my_modal.showModal();">Show modal</button>
|
148
|
+
```
|
100
149
|
|
101
150
|
## Customization
|
102
151
|
|
@@ -124,7 +173,7 @@ Soon...
|
|
124
173
|
### Style level
|
125
174
|
|
126
175
|
```html
|
127
|
-
<button class="btn
|
176
|
+
<button class="btn" style="--btn-background: #67e8f9; --btn-color: #083344;">
|
128
177
|
Colored button
|
129
178
|
</button>
|
130
179
|
```
|
@@ -1,22 +1,26 @@
|
|
1
1
|
.btn {
|
2
2
|
align-items: center;
|
3
|
-
background-color: var(--btn-background,
|
4
|
-
border-radius: var(--btn-border-radius, var(--rounded-
|
5
|
-
border: 1px solid var(--btn-border-color,
|
6
|
-
|
7
|
-
|
8
|
-
column-gap: var(--size-2);
|
3
|
+
background-color: var(--btn-background, var(--color-primary));
|
4
|
+
border-radius: var(--btn-border-radius, var(--rounded-md));
|
5
|
+
border: 1px solid var(--btn-border-color, transparent);
|
6
|
+
color: var(--btn-color, var(--color-text-reversed));
|
7
|
+
column-gap: var(--btn-gap, var(--size-2));
|
9
8
|
cursor: pointer;
|
10
9
|
display: inline-flex;
|
11
10
|
font-size: var(--btn-font-size, var(--text-sm));
|
12
|
-
font-weight: var(--btn-font-weight, var(--font-
|
11
|
+
font-weight: var(--btn-font-weight, var(--font-medium));
|
13
12
|
justify-content: center;
|
14
|
-
|
15
|
-
padding: var(--btn-padding, var(--size-1_5) var(--size-3_5));
|
13
|
+
padding: var(--btn-padding, .5rem 1rem);
|
16
14
|
text-align: center;
|
15
|
+
white-space: nowrap;
|
17
16
|
|
18
|
-
|
19
|
-
filter:
|
17
|
+
img:not([class]) {
|
18
|
+
filter: var(--btn-icon-color, var(--color-filter-text-reversed));
|
19
|
+
}
|
20
|
+
|
21
|
+
&:focus-visible {
|
22
|
+
outline: 2px solid var(--color-selected);
|
23
|
+
outline-offset: var(--border-2);
|
20
24
|
}
|
21
25
|
|
22
26
|
&:disabled {
|
@@ -25,18 +29,31 @@
|
|
25
29
|
}
|
26
30
|
}
|
27
31
|
|
28
|
-
.btn--
|
29
|
-
--btn-background: var(--color-
|
30
|
-
--btn-
|
31
|
-
--btn-color:
|
32
|
+
.btn--secondary {
|
33
|
+
--btn-background: var(--color-secondary);
|
34
|
+
--btn-color: var(--color-text);
|
35
|
+
--btn-icon-color: var(--color-filter-text);
|
36
|
+
}
|
37
|
+
|
38
|
+
.btn--outline {
|
39
|
+
--btn-background: transparent;
|
40
|
+
--btn-border-color: var(--color-border);
|
41
|
+
--btn-color: var(--color-text);
|
42
|
+
--btn-icon-color: var(--color-filter-text);
|
32
43
|
}
|
33
44
|
|
34
45
|
.btn--plain {
|
35
|
-
--btn-
|
36
|
-
--btn-
|
46
|
+
--btn-background: transparent;
|
47
|
+
--btn-color: var(--color-text);
|
48
|
+
--btn-icon-color: var(--color-filter-text);
|
37
49
|
}
|
38
50
|
|
39
|
-
.btn--
|
40
|
-
--btn-
|
41
|
-
--btn-
|
51
|
+
.btn--positive {
|
52
|
+
--btn-background: var(--color-positive);
|
53
|
+
--btn-color: white;
|
54
|
+
}
|
55
|
+
|
56
|
+
.btn--negative {
|
57
|
+
--btn-background: var(--color-negative);
|
58
|
+
--btn-color: white;
|
42
59
|
}
|
@@ -264,27 +264,28 @@
|
|
264
264
|
--rose-900: #881337;
|
265
265
|
--rose-950: #4c0519;
|
266
266
|
|
267
|
+
color-scheme: light dark;
|
268
|
+
|
267
269
|
/* Abstractions */
|
268
|
-
--color-
|
269
|
-
--color-
|
270
|
-
--color-text: var(--zinc-950);
|
271
|
-
--color-text-
|
272
|
-
--color-
|
273
|
-
--color-border:
|
270
|
+
--color-bg: light-dark(white, var(--zinc-950));
|
271
|
+
--color-text: light-dark(var(--zinc-950), var(--zinc-50));
|
272
|
+
--color-text-reversed: light-dark(var(--zinc-50), var(--zinc-950));
|
273
|
+
--color-text-subtle: light-dark(var(--zinc-500), var(--zinc-400));
|
274
|
+
--color-selected: light-dark(var(--zinc-400), var(--zinc-300));
|
275
|
+
--color-border: light-dark(var(--zinc-200), var(--zinc-800));
|
276
|
+
|
277
|
+
/* Accent colors */
|
278
|
+
--color-primary: light-dark(var(--zinc-900), var(--zinc-50));
|
279
|
+
--color-secondary: light-dark(var(--zinc-100), var(--zinc-800));
|
280
|
+
--color-negative: light-dark(var(--red-600), var(--red-900));
|
281
|
+
--color-positive: light-dark(var(--green-600), var(--green-900));
|
274
282
|
|
275
283
|
/* Filtered color values */
|
276
|
-
--color-filter-
|
277
|
-
--color-filter-
|
284
|
+
--color-filter-text: invert(5%) sepia(10%) saturate(497%) hue-rotate(201deg) brightness(96%) contrast(102%);
|
285
|
+
--color-filter-text-reversed: invert(100%) sepia(67%) saturate(49%) hue-rotate(230deg) brightness(119%) contrast(96%);
|
278
286
|
|
279
|
-
/* Redefine named color values for dark mode */
|
280
287
|
@media (prefers-color-scheme: dark) {
|
281
|
-
--color-
|
282
|
-
--color-
|
283
|
-
--color-text: white;
|
284
|
-
--color-text-reversed: var(--zinc-950);
|
285
|
-
--color-text-subtle: var(--zinc-400);
|
286
|
-
--color-border: var(--zinc-700);
|
287
|
-
--color-filter-black: var(--invert);
|
288
|
-
--color-filter-white: var(--invert-0);
|
288
|
+
--color-filter-text: invert(100%) sepia(67%) saturate(49%) hue-rotate(230deg) brightness(119%) contrast(96%);
|
289
|
+
--color-filter-text-reversed: invert(5%) sepia(10%) saturate(497%) hue-rotate(201deg) brightness(96%) contrast(102%);
|
289
290
|
}
|
290
291
|
}
|
@@ -0,0 +1,33 @@
|
|
1
|
+
.dialog {
|
2
|
+
background-color: var(--dialog-background, var(--color-bg));
|
3
|
+
border: 1px solid var(--dialog-border-color, var(--color-border));
|
4
|
+
border-radius: var(--dialog-border-radius, var(--rounded-lg));
|
5
|
+
box-shadow: var(--dialog-shadow, var(--shadow-lg));
|
6
|
+
margin: auto; inline-size: 100%;
|
7
|
+
max-inline-size: var(--dialog-size, var(--width-lg));
|
8
|
+
padding: var(--dialog-padding, var(--size-6));
|
9
|
+
|
10
|
+
&::backdrop {
|
11
|
+
background-color: var(--dialog-backdrop-background, #000c);
|
12
|
+
}
|
13
|
+
|
14
|
+
/* Setup transition */
|
15
|
+
&, &::backdrop {
|
16
|
+
opacity: 0; transition: all var(--time-300) allow-discrete;
|
17
|
+
}
|
18
|
+
|
19
|
+
/* Fade in */
|
20
|
+
&[open], &[open]::backdrop {
|
21
|
+
opacity: 1
|
22
|
+
}
|
23
|
+
|
24
|
+
/* Fade out */
|
25
|
+
@starting-style {
|
26
|
+
&[open], &[open]::backdrop { opacity: 0; }
|
27
|
+
}
|
28
|
+
|
29
|
+
/* Responsiveness */
|
30
|
+
@media (width <= 40rem) {
|
31
|
+
border-radius: 0;
|
32
|
+
}
|
33
|
+
}
|
@@ -0,0 +1,54 @@
|
|
1
|
+
.input {
|
2
|
+
appearance: none;
|
3
|
+
background-color: var(--input-background, transparent);
|
4
|
+
border-radius: var(--input-border-radius, var(--rounded-md));
|
5
|
+
border: 1px solid var(--input-border-color, var(--color-border));
|
6
|
+
box-shadow: var(--input-shadow, var(--shadow-xs));
|
7
|
+
color: var(--input-color, var(--color-text));
|
8
|
+
font-size: var(--input-font-size, var(--text-sm));
|
9
|
+
inline-size: 100%;
|
10
|
+
padding: var(--input-padding, .5rem .75rem);
|
11
|
+
|
12
|
+
&::file-selector-button {
|
13
|
+
font-weight: var(--font-medium);
|
14
|
+
margin-inline-end: var(--size-2);
|
15
|
+
}
|
16
|
+
|
17
|
+
&:is(textarea) {
|
18
|
+
field-sizing: content;
|
19
|
+
min-block-size: var(--input-lines, 4lh);
|
20
|
+
resize: none;
|
21
|
+
}
|
22
|
+
|
23
|
+
&:is(select):not([multiple]) {
|
24
|
+
background-image: var(--icon-chevron, url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='rgb(113,113,122)' stroke-width='2'%3E%3Cpath d='m6 9 6 6 6-6'%3E%3C/path%3E%3C/svg%3E"));
|
25
|
+
background-position: center right var(--icon-chevron-padding, .75rem);
|
26
|
+
background-size: 1rem auto;
|
27
|
+
background-repeat: no-repeat;
|
28
|
+
}
|
29
|
+
|
30
|
+
&:focus-visible {
|
31
|
+
outline: 2px solid var(--color-selected);
|
32
|
+
outline-offset: var(--border-2);
|
33
|
+
}
|
34
|
+
|
35
|
+
&:disabled {
|
36
|
+
cursor: not-allowed;
|
37
|
+
opacity: var(--opacity-50);
|
38
|
+
}
|
39
|
+
|
40
|
+
&::placeholder {
|
41
|
+
color: var(--color-text-subtle);
|
42
|
+
}
|
43
|
+
}
|
44
|
+
|
45
|
+
[type="checkbox"], [type="radio"] {
|
46
|
+
accent-color: var(--check-color, var(--color-primary));
|
47
|
+
height: var(--check-size, var(--size-4));
|
48
|
+
width: var(--check-size, var(--size-4));
|
49
|
+
|
50
|
+
&:focus-visible {
|
51
|
+
outline: 2px solid var(--color-selected);
|
52
|
+
outline-offset: var(--border-2);
|
53
|
+
}
|
54
|
+
}
|
@@ -23,7 +23,7 @@
|
|
23
23
|
.self-center { align-self: center; }
|
24
24
|
|
25
25
|
.gap { column-gap: var(--column-gap, 1rem); row-gap: var(--row-gap, 1rem); }
|
26
|
-
.gap-
|
26
|
+
.gap-small { column-gap: 0.5rem; row-gap: 0.5rem; }
|
27
27
|
|
28
28
|
/****************************************************************
|
29
29
|
* Text
|
@@ -60,6 +60,8 @@
|
|
60
60
|
|
61
61
|
.text-primary { color: var(--color-text); }
|
62
62
|
.text-reversed { color: var(--color-text-reversed); }
|
63
|
+
.text-negative { color: var(--color-negative); }
|
64
|
+
.text-positive { color: var(--color-positive); }
|
63
65
|
.text-subtle { color: var(--color-text-subtle); }
|
64
66
|
|
65
67
|
.text-xs { font-size: var(--text-xs); }
|
@@ -82,12 +84,13 @@
|
|
82
84
|
.bg-main { background-color: var(--color-bg); }
|
83
85
|
.bg-black { background-color: var(--color-text); }
|
84
86
|
.bg-white { background-color: var(--color-text-reversed); }
|
85
|
-
.bg-shade { background-color: var(--color-border); }
|
86
87
|
.bg-transparent { background-color: transparent; }
|
87
88
|
|
88
|
-
|
89
|
-
|
90
|
-
|
89
|
+
/****************************************************************
|
90
|
+
* SVG colors
|
91
|
+
*****************************************************************/
|
92
|
+
.colorize-black { filter: var(--color-filter-text); }
|
93
|
+
.colorize-white { filter: var(--color-filter-text-reversed); }
|
91
94
|
|
92
95
|
/****************************************************************
|
93
96
|
* Border
|
@@ -141,16 +144,6 @@
|
|
141
144
|
.overflow-y-auto { overflow-y: auto; scroll-snap-type: y mandatory; scroll-behavior: smooth; }
|
142
145
|
.overflow-hidden { overflow: hidden; }
|
143
146
|
|
144
|
-
.sr-only {
|
145
|
-
position: absolute;
|
146
|
-
width: 1px; height: 1px;
|
147
|
-
padding: 0; margin: -1px;
|
148
|
-
overflow: hidden;
|
149
|
-
clip: rect(0, 0, 0, 0);
|
150
|
-
white-space: nowrap;
|
151
|
-
border-width: 0;
|
152
|
-
}
|
153
|
-
|
154
147
|
/****************************************************************
|
155
148
|
* Margin
|
156
149
|
*****************************************************************/
|
@@ -289,3 +282,16 @@
|
|
289
282
|
.pie-6 { padding-inline-end: var(--size-6); }
|
290
283
|
.pie-8 { padding-inline-end: var(--size-8); }
|
291
284
|
.pie-10 { padding-inline-end: var(--size-10); }
|
285
|
+
|
286
|
+
/****************************************************************
|
287
|
+
* Accessibility
|
288
|
+
*****************************************************************/
|
289
|
+
.sr-only {
|
290
|
+
position: absolute;
|
291
|
+
width: 1px; height: 1px;
|
292
|
+
padding: 0; margin: -1px;
|
293
|
+
overflow: hidden;
|
294
|
+
clip: rect(0, 0, 0, 0);
|
295
|
+
white-space: nowrap;
|
296
|
+
border-width: 0;
|
297
|
+
}
|
data/lib/css_zero/version.rb
CHANGED
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.10
|
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-06-
|
11
|
+
date: 2024-06-18 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description:
|
14
14
|
email: lazaronixon@hotmail.com
|
@@ -23,9 +23,11 @@ files:
|
|
23
23
|
- app/assets/stylesheets/borders.css
|
24
24
|
- app/assets/stylesheets/buttons.css
|
25
25
|
- app/assets/stylesheets/colors.css
|
26
|
+
- app/assets/stylesheets/dialog.css
|
26
27
|
- app/assets/stylesheets/effects.css
|
27
28
|
- app/assets/stylesheets/filters.css
|
28
29
|
- app/assets/stylesheets/grid.css
|
30
|
+
- app/assets/stylesheets/inputs.css
|
29
31
|
- app/assets/stylesheets/sizes.css
|
30
32
|
- app/assets/stylesheets/transform.css
|
31
33
|
- app/assets/stylesheets/transition.css
|