pico-rails 1.4.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 (41) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +53 -0
  3. data/app/assets/stylesheets/pico.classless.scss +13 -0
  4. data/app/assets/stylesheets/pico.fluid.classless.scss +16 -0
  5. data/app/assets/stylesheets/pico.scss +42 -0
  6. data/app/assets/stylesheets/pico.slim.scss +47 -0
  7. data/app/assets/stylesheets/scss/_variables.scss +66 -0
  8. data/app/assets/stylesheets/scss/components/_accordion.scss +90 -0
  9. data/app/assets/stylesheets/scss/components/_card.scss +33 -0
  10. data/app/assets/stylesheets/scss/components/_modal.scss +175 -0
  11. data/app/assets/stylesheets/scss/components/_nav.scss +73 -0
  12. data/app/assets/stylesheets/scss/components/_progress.scss +81 -0
  13. data/app/assets/stylesheets/scss/content/_button.scss +227 -0
  14. data/app/assets/stylesheets/scss/content/_code.scss +91 -0
  15. data/app/assets/stylesheets/scss/content/_embedded.scss +53 -0
  16. data/app/assets/stylesheets/scss/content/_form-alt-input-types.scss +258 -0
  17. data/app/assets/stylesheets/scss/content/_form-checkbox-radio.scss +138 -0
  18. data/app/assets/stylesheets/scss/content/_form.scss +361 -0
  19. data/app/assets/stylesheets/scss/content/_miscs.scss +33 -0
  20. data/app/assets/stylesheets/scss/content/_table.scss +52 -0
  21. data/app/assets/stylesheets/scss/content/_typography.scss +292 -0
  22. data/app/assets/stylesheets/scss/layout/_container.scss +42 -0
  23. data/app/assets/stylesheets/scss/layout/_document.scss +45 -0
  24. data/app/assets/stylesheets/scss/layout/_grid.scss +24 -0
  25. data/app/assets/stylesheets/scss/layout/_scroller.scss +16 -0
  26. data/app/assets/stylesheets/scss/layout/_section.scss +8 -0
  27. data/app/assets/stylesheets/scss/layout/_sectioning.scss +69 -0
  28. data/app/assets/stylesheets/scss/themes/default/_colors.scss +65 -0
  29. data/app/assets/stylesheets/scss/themes/default/_dark.scss +139 -0
  30. data/app/assets/stylesheets/scss/themes/default/_light.scss +139 -0
  31. data/app/assets/stylesheets/scss/themes/default/_styles.scss +238 -0
  32. data/app/assets/stylesheets/scss/themes/default.scss +29 -0
  33. data/app/assets/stylesheets/scss/utilities/_accessibility.scss +54 -0
  34. data/app/assets/stylesheets/scss/utilities/_loading.scss +58 -0
  35. data/app/assets/stylesheets/scss/utilities/_reduce-motion.scss +29 -0
  36. data/app/assets/stylesheets/scss/utilities/_tooltip.scss +105 -0
  37. data/lib/pico/engine.rb +4 -0
  38. data/lib/pico/version.rb +3 -0
  39. data/lib/pico-rails.rb +5 -0
  40. data/pico-rails.gemspec +16 -0
  41. metadata +97 -0
@@ -0,0 +1,138 @@
1
+ /**
2
+ * Form elements
3
+ * Checkboxes & Radios
4
+ */
5
+
6
+ [type="checkbox"],
7
+ [type="radio"] {
8
+ -webkit-appearance: none;
9
+ -moz-appearance: none;
10
+ appearance: none;
11
+ width: 1.25em;
12
+ height: 1.25em;
13
+ margin-top: -0.125em;
14
+ margin-right: 0.375em;
15
+ margin-left: 0;
16
+ margin-inline-start: 0;
17
+ margin-inline-end: 0.375em;
18
+ border-width: var(--border-width);
19
+ font-size: inherit;
20
+ vertical-align: middle;
21
+ cursor: pointer;
22
+
23
+ &::-ms-check {
24
+ display: none; // unstyle IE checkboxes
25
+ }
26
+
27
+ &:checked,
28
+ &:checked:active,
29
+ &:checked:focus {
30
+ --background-color: var(--primary);
31
+ --border-color: var(--primary);
32
+ background-image: var(--icon-checkbox);
33
+ background-position: center;
34
+ background-size: 0.75em auto;
35
+ background-repeat: no-repeat;
36
+ }
37
+
38
+ & ~ label {
39
+ display: inline-block;
40
+ margin-right: 0.375em;
41
+ margin-bottom: 0;
42
+ cursor: pointer;
43
+ }
44
+ }
45
+
46
+ // Checkboxes
47
+ [type="checkbox"] {
48
+ &:indeterminate {
49
+ --background-color: var(--primary);
50
+ --border-color: var(--primary);
51
+ background-image: var(--icon-minus);
52
+ background-position: center;
53
+ background-size: 0.75em auto;
54
+ background-repeat: no-repeat;
55
+ }
56
+ }
57
+
58
+ // Radios
59
+ [type="radio"] {
60
+ border-radius: 50%;
61
+
62
+ &:checked,
63
+ &:checked:active,
64
+ &:checked:focus {
65
+ --background-color: var(--primary-inverse);
66
+ border-width: 0.35em;
67
+ background-image: none;
68
+ }
69
+ }
70
+
71
+ // Switchs
72
+ [type="checkbox"][role="switch"] {
73
+ --background-color: var(--switch-background-color);
74
+ --border-color: var(--switch-background-color);
75
+ --color: var(--switch-color);
76
+
77
+ // Config
78
+ $switch-height: 1.25em;
79
+ $switch-width: 2.25em;
80
+ $switch-transition: 0.1s ease-in-out;
81
+
82
+ // Styles
83
+ width: $switch-width;
84
+ height: $switch-height;
85
+ border: var(--border-width) solid var(--border-color);
86
+ border-radius: $switch-height;
87
+ background-color: var(--background-color);
88
+ line-height: $switch-height;
89
+
90
+ &:focus {
91
+ --background-color: var(--switch-background-color);
92
+ --border-color: var(--switch-background-color);
93
+ }
94
+
95
+ &:checked {
96
+ --background-color: var(--switch-checked-background-color);
97
+ --border-color: var(--switch-checked-background-color);
98
+ }
99
+
100
+ &:before {
101
+ display: block;
102
+ width: calc(#{$switch-height} - (var(--border-width) * 2));
103
+ height: 100%;
104
+ border-radius: 50%;
105
+ background-color: var(--color);
106
+ content: "";
107
+
108
+ @if $enable-transitions {
109
+ transition: margin $switch-transition;
110
+ }
111
+ }
112
+
113
+ &:checked {
114
+ background-image: none;
115
+
116
+ &::before {
117
+ margin-left: calc(#{$switch-width * 0.5} - var(--border-width));
118
+ margin-inline-start: calc(#{$switch-width * 0.5} - var(--border-width));
119
+ }
120
+ }
121
+ }
122
+
123
+ // Aria-invalid
124
+ [type="checkbox"],
125
+ [type="checkbox"]:checked,
126
+ [type="radio"],
127
+ [type="radio"]:checked,
128
+ [type="checkbox"][role="switch"],
129
+ [type="checkbox"][role="switch"]:checked {
130
+
131
+ &[aria-invalid="false"] {
132
+ --border-color: var(--form-element-valid-border-color);
133
+ }
134
+
135
+ &[aria-invalid="true"] {
136
+ --border-color: var(--form-element-invalid-border-color);
137
+ }
138
+ }
@@ -0,0 +1,361 @@
1
+ /**
2
+ * Form elements
3
+ */
4
+
5
+ // Reboot based on :
6
+ // - normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css
7
+ // - sanitize.css v12.0.1 | CC0 1.0 Universal | github.com/csstools/sanitize.css
8
+ // ––––––––––––––––––––
9
+
10
+ // 1. Change the font styles in all browsers
11
+ // 2. Remove the margin in Firefox and Safari
12
+ input,
13
+ optgroup,
14
+ select,
15
+ textarea {
16
+ margin: 0; // 2
17
+ font-size: 1rem; // 1
18
+ line-height: var(--line-height); // 1
19
+ font-family: inherit; // 1
20
+ letter-spacing: inherit; // 2
21
+ }
22
+
23
+ // Show the overflow in IE.
24
+ input {
25
+ overflow: visible;
26
+ }
27
+
28
+ // Remove the inheritance of text transform in Edge, Firefox, and IE
29
+ select {
30
+ text-transform: none;
31
+ }
32
+
33
+ // 1. Correct the text wrapping in Edge and IE
34
+ // 2. Correct the color inheritance from `fieldset` elements in IE
35
+ // 3. Remove the padding so developers are not caught out when they zero out
36
+ // `fieldset` elements in all browsers
37
+ legend {
38
+ max-width: 100%; // 1
39
+ padding: 0; // 3
40
+ color: inherit; // 2
41
+ white-space: normal; // 1
42
+ }
43
+
44
+ // 1. Remove the default vertical scrollbar in IE
45
+ textarea {
46
+ overflow: auto; // 1
47
+ }
48
+
49
+ // Remove the padding in IE 10
50
+ [type="checkbox"],
51
+ [type="radio"] {
52
+ padding: 0;
53
+ }
54
+
55
+ // Correct the cursor style of increment and decrement buttons in Safari
56
+ ::-webkit-inner-spin-button,
57
+ ::-webkit-outer-spin-button {
58
+ height: auto;
59
+ }
60
+
61
+ // 1. Correct the odd appearance in Chrome and Safari
62
+ // 2. Correct the outline style in Safari
63
+ [type="search"] {
64
+ -webkit-appearance: textfield; // 1
65
+ outline-offset: -2px; // 2
66
+ }
67
+
68
+ // Remove the inner padding in Chrome and Safari on macOS
69
+ [type="search"]::-webkit-search-decoration {
70
+ -webkit-appearance: none;
71
+ }
72
+
73
+ // 1. Correct the inability to style clickable types in iOS and Safari
74
+ // 2. Change font properties to `inherit` in Safari
75
+ ::-webkit-file-upload-button {
76
+ -webkit-appearance: button; // 1
77
+ font: inherit; // 2
78
+ }
79
+
80
+ // Remove the inner border and padding of focus outlines in Firefox
81
+ ::-moz-focus-inner {
82
+ padding: 0;
83
+ border-style: none;
84
+ }
85
+
86
+ // Remove the focus outline in Firefox
87
+ :-moz-focusring {
88
+ outline: none;
89
+ }
90
+
91
+ // Remove the additional :invalid styles in Firefox
92
+ :-moz-ui-invalid {
93
+ box-shadow: none;
94
+ }
95
+
96
+ // Change the inconsistent appearance in IE (opinionated)
97
+ ::-ms-expand {
98
+ display: none;
99
+ }
100
+
101
+ // Remove the border and padding in all browsers (opinionated)
102
+ [type="file"],
103
+ [type="range"] {
104
+ padding: 0;
105
+ border-width: 0;
106
+ }
107
+
108
+ // Pico
109
+ // ––––––––––––––––––––
110
+
111
+ // Force height for alternatives input types
112
+ input:not([type="checkbox"]):not([type="radio"]):not([type="range"]) {
113
+ height: calc(
114
+ (1rem * var(--line-height)) + (var(--form-element-spacing-vertical) * 2) +
115
+ (var(--border-width) * 2)
116
+ );
117
+ }
118
+
119
+ // Fieldset
120
+ fieldset {
121
+ margin: 0;
122
+ margin-bottom: var(--spacing);
123
+ padding: 0;
124
+ border: 0;
125
+ }
126
+
127
+ // Label & legend
128
+ label,
129
+ fieldset legend {
130
+ display: block;
131
+ margin-bottom: calc(var(--spacing) * 0.25);
132
+ font-weight: var(--form-label-font-weight, var(--font-weight));
133
+ }
134
+
135
+ // Blocks, 100%
136
+ input:not([type="checkbox"]):not([type="radio"]),
137
+ select,
138
+ textarea {
139
+ width: 100%;
140
+ }
141
+
142
+ // Reset appearance (Not Checkboxes, Radios, Range and File)
143
+ input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="file"]),
144
+ select,
145
+ textarea {
146
+ appearance: none;
147
+ padding: var(--form-element-spacing-vertical)
148
+ var(--form-element-spacing-horizontal);
149
+ vertical-align: middle;
150
+ }
151
+
152
+ // Commons styles
153
+ input,
154
+ select,
155
+ textarea {
156
+ --background-color: var(--form-element-background-color);
157
+ --border-color: var(--form-element-border-color);
158
+ --color: var(--form-element-color);
159
+ --box-shadow: none;
160
+ border: var(--border-width) solid var(--border-color);
161
+ border-radius: var(--border-radius);
162
+ outline: none;
163
+ background-color: var(--background-color);
164
+ box-shadow: var(--box-shadow);
165
+ color: var(--color);
166
+ font-weight: var(--font-weight);
167
+
168
+ @if $enable-transitions {
169
+ transition: background-color var(--transition),
170
+ border-color var(--transition), color var(--transition),
171
+ box-shadow var(--transition);
172
+ }
173
+ }
174
+
175
+ // Active & Focus
176
+ input:not([type="submit"]):not([type="button"]):not([type="reset"]):not([type="checkbox"]):not([type="radio"]):not([readonly]),
177
+ select,
178
+ textarea {
179
+ &:active,
180
+ &:focus {
181
+ --background-color: var(--form-element-active-background-color);
182
+ }
183
+ }
184
+
185
+ // Active & Focus
186
+ input:not([type="submit"]):not([type="button"]):not([type="reset"]):not([role="switch"]):not([readonly]),
187
+ select,
188
+ textarea {
189
+ &:active,
190
+ &:focus {
191
+ --border-color: var(--form-element-active-border-color);
192
+ }
193
+ }
194
+
195
+ // Focus
196
+ input:not([type="submit"]):not([type="button"]):not([type="reset"]):not([type="range"]):not([type="file"]):not([readonly]),
197
+ select,
198
+ textarea {
199
+ &:focus {
200
+ --box-shadow: 0 0 0 var(--outline-width) var(--form-element-focus-color);
201
+ }
202
+ }
203
+
204
+ // Disabled
205
+ input:not([type="submit"]):not([type="button"]):not([type="reset"]),
206
+ select,
207
+ textarea {
208
+ &[disabled] {
209
+ --background-color: var(--form-element-disabled-background-color);
210
+ --border-color: var(--form-element-disabled-border-color);
211
+ opacity: var(--form-element-disabled-opacity);
212
+ }
213
+ }
214
+
215
+ // Aria-invalid
216
+ input,
217
+ select,
218
+ textarea {
219
+
220
+ &:not([type="checkbox"]):not([type="radio"]) {
221
+ &[aria-invalid] {
222
+ @if $enable-important {
223
+ padding-right: calc(
224
+ var(--form-element-spacing-horizontal) + 1.5rem
225
+ ) !important;
226
+ padding-left: var(--form-element-spacing-horizontal);
227
+ padding-inline-start: var(--form-element-spacing-horizontal) !important;
228
+ padding-inline-end: calc(
229
+ var(--form-element-spacing-horizontal) + 1.5rem
230
+ ) !important;
231
+ } @else {
232
+ padding-right: calc(var(--form-element-spacing-horizontal) + 1.5rem);
233
+ padding-left: var(--form-element-spacing-horizontal);
234
+ padding-inline-start: var(--form-element-spacing-horizontal);
235
+ padding-inline-end: calc(var(--form-element-spacing-horizontal) + 1.5rem);
236
+ }
237
+ background-position: center right 0.75rem;
238
+ background-size: 1rem auto;
239
+ background-repeat: no-repeat;
240
+ }
241
+
242
+ &[aria-invalid="false"] {
243
+ background-image: var(--icon-valid);
244
+ }
245
+
246
+ &[aria-invalid="true"] {
247
+ background-image: var(--icon-invalid);
248
+ }
249
+ }
250
+
251
+ &[aria-invalid="false"] {
252
+ --border-color: var(--form-element-valid-border-color);
253
+
254
+ &:active,
255
+ &:focus {
256
+ @if $enable-important {
257
+ --border-color: var(--form-element-valid-active-border-color) !important;
258
+ --box-shadow: 0 0 0 var(--outline-width) var(--form-element-valid-focus-color) !important;
259
+ } @else {
260
+ --border-color: var(--form-element-valid-active-border-color);
261
+ --box-shadow: 0 0 0 var(--outline-width) var(--form-element-valid-focus-color);
262
+ }
263
+ }
264
+ }
265
+
266
+ &[aria-invalid="true"] {
267
+ --border-color: var(--form-element-invalid-border-color);
268
+
269
+ &:active,
270
+ &:focus {
271
+ @if $enable-important {
272
+ --border-color: var(--form-element-invalid-active-border-color) !important;
273
+ --box-shadow: 0 0 0 var(--outline-width) var(--form-element-invalid-focus-color) !important;
274
+ } @else {
275
+ --border-color: var(--form-element-invalid-active-border-color);
276
+ --box-shadow: 0 0 0 var(--outline-width) var(--form-element-invalid-focus-color);
277
+ }
278
+ }
279
+ }
280
+ }
281
+
282
+ [dir="rtl"] {
283
+ input,
284
+ select,
285
+ textarea {
286
+ &:not([type="checkbox"]):not([type="radio"]) {
287
+ &[aria-invalid],
288
+ &[aria-invalid="true"],
289
+ &[aria-invalid="false"] {
290
+ background-position: center left 0.75rem;
291
+ }
292
+ }
293
+ }
294
+ }
295
+
296
+ // Placeholder
297
+ input::placeholder,
298
+ input::-webkit-input-placeholder,
299
+ textarea::placeholder,
300
+ textarea::-webkit-input-placeholder,
301
+ select:invalid {
302
+ color: var(--form-element-placeholder-color);
303
+ opacity: 1;
304
+ }
305
+
306
+ // Margin bottom (Not Checkboxes and Radios)
307
+ input:not([type="checkbox"]):not([type="radio"]),
308
+ select,
309
+ textarea {
310
+ margin-bottom: var(--spacing);
311
+ }
312
+
313
+ // Select
314
+ select {
315
+ // Unstyle the caret on `<select>`s in IE10+.
316
+ &::-ms-expand {
317
+ border: 0;
318
+ background-color: transparent;
319
+ }
320
+
321
+ &:not([multiple]):not([size]) {
322
+ padding-right: calc(var(--form-element-spacing-horizontal) + 1.5rem);
323
+ padding-left: var(--form-element-spacing-horizontal);
324
+ padding-inline-start: var(--form-element-spacing-horizontal);
325
+ padding-inline-end: calc(var(--form-element-spacing-horizontal) + 1.5rem);
326
+ background-image: var(--icon-chevron);
327
+ background-position: center right 0.75rem;
328
+ background-size: 1rem auto;
329
+ background-repeat: no-repeat;
330
+ }
331
+ }
332
+
333
+ [dir="rtl"] {
334
+ select {
335
+ &:not([multiple]):not([size]) {
336
+ background-position: center left 0.75rem;
337
+ }
338
+ }
339
+ }
340
+
341
+ // Helper
342
+ input,
343
+ select,
344
+ textarea {
345
+ + small {
346
+ display: block;
347
+ width: 100%;
348
+ margin-top: calc(var(--spacing) * -0.75);
349
+ margin-bottom: var(--spacing);
350
+ color: var(--muted-color);
351
+ }
352
+ }
353
+
354
+ // Styles for Input inside a label
355
+ label {
356
+ & > input,
357
+ & > select,
358
+ & > textarea {
359
+ margin-top: calc(var(--spacing) * 0.25);
360
+ }
361
+ }
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Miscs
3
+ */
4
+
5
+ // Reboot based on :
6
+ // - normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css
7
+ // - sanitize.css v12.0.1 | CC0 1.0 Universal | github.com/csstools/sanitize.css
8
+ // ––––––––––––––––––––
9
+
10
+ // 1. Add the correct box sizing in Firefox
11
+ // 2. Show the overflow in Edge and IE
12
+ hr {
13
+ box-sizing: content-box; // 1
14
+ height: 0; // 1
15
+ overflow: visible; // 2
16
+ border: none;
17
+ border-top: 1px solid var(--muted-border-color);
18
+ }
19
+
20
+ // Add the correct display in IE 10+
21
+ [hidden],
22
+ template {
23
+ @if $enable-important {
24
+ display: none !important;
25
+ } @else {
26
+ display: none;
27
+ }
28
+ }
29
+
30
+ // Add the correct display in IE 9-
31
+ canvas {
32
+ display: inline-block;
33
+ }
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Table
3
+ */
4
+
5
+ // Reboot based on :
6
+ // - normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css
7
+ // - sanitize.css v12.0.1 | CC0 1.0 Universal | github.com/csstools/sanitize.css
8
+ // ––––––––––––––––––––
9
+
10
+ // 1. Collapse border spacing in all browsers (opinionated).
11
+ // 2. Correct table border color inheritance in all Chrome, Edge, and Safari.
12
+ // 3. Remove text indentation from table contents in Chrome, Edge, and Safari.
13
+ table {
14
+ width: 100%;
15
+ border-color: inherit; // 2
16
+ border-collapse: collapse; // 1
17
+ border-spacing: 0;
18
+ text-indent: 0; // 3
19
+ }
20
+
21
+ // Pico
22
+ // ––––––––––––––––––––
23
+
24
+ // Cells
25
+ th,
26
+ td {
27
+ padding: calc(var(--spacing) / 2) var(--spacing);
28
+ border-bottom: var(--border-width) solid var(--table-border-color);
29
+ color: var(--color);
30
+ font-weight: var(--font-weight);
31
+ font-size: var(--font-size);
32
+ text-align: left;
33
+ text-align: start;
34
+ }
35
+
36
+ // Footer
37
+ tfoot {
38
+ th,
39
+ td {
40
+ border-top: var(--border-width) solid var(--table-border-color);
41
+ border-bottom: 0;
42
+ }
43
+ }
44
+
45
+ // Striped
46
+ table {
47
+ &[role="grid"] {
48
+ tbody tr:nth-child(odd) {
49
+ background-color: var(--table-row-stripped-background-color);
50
+ }
51
+ }
52
+ }