pico-rails 1.4.4 → 1.5.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (37) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/stylesheets/{scss → pico/scss}/_variables.scss +0 -0
  3. data/app/assets/stylesheets/{scss → pico/scss}/components/_accordion.scss +38 -12
  4. data/app/assets/stylesheets/{scss → pico/scss}/components/_card.scss +4 -1
  5. data/app/assets/stylesheets/pico/scss/components/_dropdown.scss +208 -0
  6. data/app/assets/stylesheets/{scss → pico/scss}/components/_modal.scss +12 -14
  7. data/app/assets/stylesheets/pico/scss/components/_nav.scss +97 -0
  8. data/app/assets/stylesheets/{scss → pico/scss}/components/_progress.scss +10 -2
  9. data/app/assets/stylesheets/{scss → pico/scss}/content/_button.scss +24 -68
  10. data/app/assets/stylesheets/{scss → pico/scss}/content/_code.scss +3 -3
  11. data/app/assets/stylesheets/{scss → pico/scss}/content/_embedded.scss +4 -9
  12. data/app/assets/stylesheets/{scss → pico/scss}/content/_form-alt-input-types.scss +42 -24
  13. data/app/assets/stylesheets/{scss → pico/scss}/content/_form-checkbox-radio.scss +0 -0
  14. data/app/assets/stylesheets/{scss → pico/scss}/content/_form.scss +27 -40
  15. data/app/assets/stylesheets/{scss → pico/scss}/content/_miscs.scss +8 -8
  16. data/app/assets/stylesheets/{scss → pico/scss}/content/_table.scss +5 -7
  17. data/app/assets/stylesheets/{scss → pico/scss}/content/_typography.scss +18 -46
  18. data/app/assets/stylesheets/{scss → pico/scss}/layout/_container.scss +0 -0
  19. data/app/assets/stylesheets/{scss → pico/scss}/layout/_document.scss +18 -15
  20. data/app/assets/stylesheets/{scss → pico/scss}/layout/_grid.scss +0 -0
  21. data/app/assets/stylesheets/{scss → pico/scss}/layout/_scroller.scss +0 -0
  22. data/app/assets/stylesheets/{scss → pico/scss}/layout/_section.scss +0 -0
  23. data/app/assets/stylesheets/{scss → pico/scss}/layout/_sectioning.scss +3 -2
  24. data/app/assets/stylesheets/{scss → pico/scss}/themes/default/_colors.scss +0 -0
  25. data/app/assets/stylesheets/{scss → pico/scss}/themes/default/_dark.scss +21 -4
  26. data/app/assets/stylesheets/{scss → pico/scss}/themes/default/_light.scss +21 -4
  27. data/app/assets/stylesheets/{scss → pico/scss}/themes/default/_styles.scss +6 -0
  28. data/app/assets/stylesheets/{scss → pico/scss}/themes/default.scss +0 -0
  29. data/app/assets/stylesheets/{scss → pico/scss}/utilities/_accessibility.scss +1 -3
  30. data/app/assets/stylesheets/{scss → pico/scss}/utilities/_loading.scss +1 -1
  31. data/app/assets/stylesheets/{scss → pico/scss}/utilities/_reduce-motion.scss +2 -4
  32. data/app/assets/stylesheets/{scss → pico/scss}/utilities/_tooltip.scss +1 -1
  33. data/app/assets/stylesheets/pico.scss +28 -28
  34. data/app/assets/stylesheets/pico.slim.scss +17 -17
  35. data/lib/pico/version.rb +1 -1
  36. metadata +33 -32
  37. data/app/assets/stylesheets/scss/components/_nav.scss +0 -73
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: dd0c2c814510196236080602a40a9337d59c861ecaaf910699ffdfed17b99b64
4
- data.tar.gz: f9a203a0560539e546151a7a35d918122c8c4e1474e21109afcd6ace19225627
3
+ metadata.gz: 4699b06e03e0f2dbc1ba08f9bdd997f0f596bccea4d7961f7f05fc706956c6cb
4
+ data.tar.gz: c786cace7283f250abca93e8bb45b023c7d4cfe115d30e3b43d42dccf1109dd9
5
5
  SHA512:
6
- metadata.gz: 5a43f98634b4730eae493fd9b014fd2b70e0914b6ba812ce89a3de433a4770a24ea705217765c961caf72b66b2583450d8cfb1395e1ac570805e58409df33f18
7
- data.tar.gz: 3df4e21a8a0edc1eae26653bcdf3847a17c2ded98550e4acefd072d5d8e2ca9008a5d62af486184fc2f357b9da543c2903ff88deb80f5643dba51d1ad6456673
6
+ metadata.gz: bd3a09dac816bd6dee7971d938d3c828a167ee3782895aace7b48f80e198eaf3630d62e72a5858b24f15961387551661089fd1de8b5024c7e03f582721001852
7
+ data.tar.gz: d755275d9cd9dd919a0eb2e0b2b467f3bf8bf9ef1ca3f1db1add7af516f565d93ce285d12e7407031ec9e2af140c080ff261bfa024715504740f656d26b82a07
@@ -5,15 +5,18 @@
5
5
  details {
6
6
  display: block;
7
7
  margin-bottom: var(--spacing);
8
- padding-bottom: calc(var(--spacing) * 0.5);
8
+ padding-bottom: var(--spacing);
9
9
  border-bottom: var(--border-width) solid var(--accordion-border-color);
10
10
 
11
11
  summary {
12
- color: var(--accordion-close-summary-color);
13
12
  line-height: 1rem;
14
13
  list-style-type: none;
15
14
  cursor: pointer;
16
15
 
16
+ &:not([role]) {
17
+ color: var(--accordion-close-summary-color);
18
+ }
19
+
17
20
  @if $enable-transitions {
18
21
  transition: color var(--transition);
19
22
  }
@@ -36,10 +39,11 @@ details {
36
39
  display: block;
37
40
  width: 1rem;
38
41
  height: 1rem;
42
+ margin-inline-start: calc(var(--spacing, 1rem) * 0.5);
39
43
  float: right;
40
44
  transform: rotate(-90deg);
41
45
  background-image: var(--icon-chevron);
42
- background-position: center;
46
+ background-position: right center;
43
47
  background-size: 1rem auto;
44
48
  background-repeat: no-repeat;
45
49
  content: "";
@@ -51,14 +55,31 @@ details {
51
55
 
52
56
  &:focus {
53
57
  outline: none;
54
- color: var(--accordion-active-summary-color);
58
+
59
+ &:not([role="button"]) {
60
+ color: var(--accordion-active-summary-color);
61
+ }
55
62
  }
56
63
 
57
- ~ * {
58
- margin-top: calc(var(--spacing) * 0.5);
64
+ // Type button
65
+ &[role="button"] {
66
+ width: 100%;
67
+ text-align: left;
59
68
 
60
- ~ * {
61
- margin-top: 0;
69
+ // Marker
70
+ &::after {
71
+ height: calc(1rem * var(--line-height, 1.5));
72
+ background-image: var(--icon-chevron-button);
73
+ }
74
+
75
+ @if $enable-classes {
76
+ // .contrast
77
+ &:not(.outline).contrast {
78
+ // Marker
79
+ &::after {
80
+ background-image: var(--icon-chevron-button-inverse);
81
+ }
82
+ }
62
83
  }
63
84
  }
64
85
  }
@@ -66,15 +87,17 @@ details {
66
87
  // Open
67
88
  &[open] {
68
89
  > summary {
69
- margin-bottom: calc(var(--spacing) * 0.25);
90
+ margin-bottom: calc(var(--spacing));
70
91
 
71
- &:not(:focus) {
72
- color: var(--accordion-open-summary-color);
92
+ &:not([role]) {
93
+ &:not(:focus) {
94
+ color: var(--accordion-open-summary-color);
95
+ }
73
96
  }
74
97
 
75
98
  &::after {
76
99
  transform: rotate(0);
77
- }
100
+ }
78
101
  }
79
102
  }
80
103
  }
@@ -82,8 +105,11 @@ details {
82
105
  [dir="rtl"] {
83
106
  details {
84
107
  summary {
108
+ text-align: right;
109
+
85
110
  &::after {
86
111
  float: left;
112
+ background-position: left center;
87
113
  }
88
114
  }
89
115
  }
@@ -5,7 +5,6 @@
5
5
  article {
6
6
  margin: var(--block-spacing-vertical) 0;
7
7
  padding: var(--block-spacing-vertical) var(--block-spacing-horizontal);
8
- overflow: hidden;
9
8
  border-radius: var(--border-radius);
10
9
  background: var(--card-background-color);
11
10
  box-shadow: var(--card-box-shadow);
@@ -23,11 +22,15 @@ article {
23
22
  margin-top: calc(var(--block-spacing-vertical) * -1);
24
23
  margin-bottom: var(--block-spacing-vertical);
25
24
  border-bottom: var(--border-width) solid var(--card-border-color);
25
+ border-top-right-radius: var(--border-radius);
26
+ border-top-left-radius: var(--border-radius);
26
27
  }
27
28
 
28
29
  > footer {
29
30
  margin-top: var(--block-spacing-vertical);
30
31
  margin-bottom: calc(var(--block-spacing-vertical) * -1);
31
32
  border-top: var(--border-width) solid var(--card-border-color);
33
+ border-bottom-right-radius: var(--border-radius);
34
+ border-bottom-left-radius: var(--border-radius);
32
35
  }
33
36
  }
@@ -0,0 +1,208 @@
1
+ /**
2
+ * Dropdown ([role="list"])
3
+ */
4
+
5
+ // Menu
6
+ details[role="list"],
7
+ li[role="list"] {
8
+ position: relative;
9
+ }
10
+
11
+ details[role="list"] summary + ul,
12
+ li[role="list"] > ul {
13
+ display: flex;
14
+ z-index: 99;
15
+ position: absolute;
16
+ top: auto;
17
+ right: 0;
18
+ left: 0;
19
+ flex-direction: column;
20
+ margin: 0;
21
+ padding: 0;
22
+ border: var(--border-width) solid var(--dropdown-border-color);
23
+ border-radius: var(--border-radius);
24
+ border-top-right-radius: 0;
25
+ border-top-left-radius: 0;
26
+ background-color: var(--dropdown-background-color);
27
+ box-shadow: var(--card-box-shadow);
28
+ color: var(--dropdown-color);
29
+ white-space: nowrap;
30
+
31
+ li {
32
+ width: 100%;
33
+ margin-bottom: 0;
34
+ padding: calc(var(--form-element-spacing-vertical) * 0.5)
35
+ var(--form-element-spacing-horizontal);
36
+ list-style: none;
37
+
38
+ &:first-of-type {
39
+ margin-top: calc(var(--form-element-spacing-vertical) * 0.5);
40
+ }
41
+
42
+ &:last-of-type {
43
+ margin-bottom: calc(var(--form-element-spacing-vertical) * 0.5);
44
+ }
45
+
46
+ a {
47
+ display: block;
48
+ margin: calc(var(--form-element-spacing-vertical) * -0.5)
49
+ calc(var(--form-element-spacing-horizontal) * -1);
50
+ padding: calc(var(--form-element-spacing-vertical) * 0.5)
51
+ var(--form-element-spacing-horizontal);
52
+ overflow: hidden;
53
+ color: var(--dropdown-color);
54
+ text-decoration: none;
55
+ text-overflow: ellipsis;
56
+
57
+ &:hover {
58
+ background-color: var(--dropdown-hover-background-color);
59
+ }
60
+ }
61
+ }
62
+ }
63
+
64
+ // Marker
65
+ details[role="list"] summary,
66
+ li[role="list"] > a {
67
+ &::after {
68
+ display: block;
69
+ width: 1rem;
70
+ height: calc(1rem * var(--line-height, 1.5));
71
+ margin-inline-start: 0.5rem;
72
+ float: right;
73
+ transform: rotate(0deg);
74
+ background-position: right center;
75
+ background-size: 1rem auto;
76
+ background-repeat: no-repeat;
77
+ content: "";
78
+ }
79
+ }
80
+
81
+ // Global dropdown only
82
+ details[role="list"] {
83
+ padding: 0;
84
+ border-bottom: none;
85
+
86
+ // Style <summary> as <select>
87
+ summary {
88
+ margin-bottom: 0;
89
+
90
+ &:not([role]) {
91
+ height: calc(
92
+ 1rem * var(--line-height) + var(--form-element-spacing-vertical) * 2 +
93
+ var(--border-width) * 2
94
+ );
95
+ padding: var(--form-element-spacing-vertical)
96
+ var(--form-element-spacing-horizontal);
97
+ border: var(--border-width) solid var(--form-element-border-color);
98
+ border-radius: var(--border-radius);
99
+ background-color: var(--form-element-background-color);
100
+ color: var(--form-element-placeholder-color);
101
+ line-height: inherit;
102
+ cursor: pointer;
103
+
104
+ @if $enable-transitions {
105
+ transition: background-color var(--transition),
106
+ border-color var(--transition), color var(--transition),
107
+ box-shadow var(--transition);
108
+ }
109
+
110
+ &:active,
111
+ &:focus {
112
+ border-color: var(--form-element-active-border-color);
113
+ background-color: var(--form-element-active-background-color);
114
+ }
115
+
116
+ &:focus {
117
+ box-shadow: 0 0 0 var(--outline-width) var(--form-element-focus-color);
118
+ }
119
+ }
120
+ }
121
+
122
+ // Close for details[role="list"]
123
+ &[open] summary {
124
+ border-bottom-right-radius: 0;
125
+ border-bottom-left-radius: 0;
126
+
127
+ &::before {
128
+ display: block;
129
+ z-index: 1;
130
+ position: fixed;
131
+ top: 0;
132
+ right: 0;
133
+ bottom: 0;
134
+ left: 0;
135
+ background: none;
136
+ content: "";
137
+ cursor: default;
138
+ }
139
+ }
140
+ }
141
+
142
+ // All Dropdowns inside <nav>
143
+ nav details[role="list"] summary,
144
+ nav li[role="list"] a {
145
+ display: flex;
146
+ direction: ltr;
147
+ }
148
+
149
+ nav details[role="list"] summary + ul,
150
+ nav li[role="list"] > ul {
151
+ min-width: fit-content;
152
+ border-radius: var(--border-radius);
153
+
154
+ li a {
155
+ border-radius: 0;
156
+ }
157
+ }
158
+
159
+ // Dropdowns inside <nav> as nested <details>
160
+ nav details[role="list"] {
161
+ summary,
162
+ summary:not([role]) {
163
+ height: auto;
164
+ padding: var(--nav-link-spacing-vertical) var(--nav-link-spacing-horizontal);
165
+ }
166
+
167
+ &[open] summary {
168
+ border-radius: var(--border-radius);
169
+ }
170
+
171
+ summary + ul {
172
+ margin-top: var(--outline-width);
173
+ margin-inline-start: 0;
174
+ }
175
+
176
+ summary[role="link"] {
177
+ margin-bottom: calc(var(--nav-link-spacing-vertical) * -1);
178
+ line-height: var(--line-height);
179
+
180
+ + ul {
181
+ margin-top: calc(var(--nav-link-spacing-vertical) + var(--outline-width));
182
+ margin-inline-start: calc(var(--nav-link-spacing-horizontal) * -1);
183
+ }
184
+ }
185
+ }
186
+
187
+ // Dropdowns inside a <nav> without using <details>
188
+ li[role="list"] {
189
+ // Open on hover (for mobile)
190
+ // or on active/focus (for keyboard navigation)
191
+ &:hover > ul,
192
+ a:active ~ ul,
193
+ a:focus ~ ul {
194
+ display: flex;
195
+ }
196
+
197
+ > ul {
198
+ display: none;
199
+ margin-top: calc(var(--nav-link-spacing-vertical) + var(--outline-width));
200
+ margin-inline-start: calc(
201
+ var(--nav-element-spacing-horizontal) - var(--nav-link-spacing-horizontal)
202
+ );
203
+ }
204
+
205
+ > a::after {
206
+ background-image: var(--icon-chevron);
207
+ }
208
+ }
@@ -21,23 +21,24 @@ dialog {
21
21
  height: inherit;
22
22
  min-height: 100%;
23
23
  padding: var(--spacing);
24
- border: none;
24
+ border: 0;
25
25
  background-color: var(--modal-overlay-background-color);
26
+ color: var(--color);
26
27
 
27
28
  // Content
28
29
  article {
29
30
  max-height: calc(100vh - var(--spacing) * 2);
30
31
  overflow: auto;
31
32
 
32
- @if map-get($breakpoints, 'sm') {
33
- @media (min-width: map-get($breakpoints, 'sm')) {
34
- max-width: map-get($viewports, 'sm');
33
+ @if map-get($breakpoints, "sm") {
34
+ @media (min-width: map-get($breakpoints, "sm")) {
35
+ max-width: map-get($viewports, "sm");
35
36
  }
36
37
  }
37
38
 
38
- @if map-get($breakpoints, 'md') {
39
- @media (min-width: map-get($breakpoints, 'md')) {
40
- max-width: map-get($viewports, 'md');
39
+ @if map-get($breakpoints, "md") {
40
+ @media (min-width: map-get($breakpoints, "md")) {
41
+ max-width: map-get($viewports, "md");
41
42
  }
42
43
  }
43
44
 
@@ -58,7 +59,7 @@ dialog {
58
59
  > footer {
59
60
  text-align: right;
60
61
 
61
- [role='button'] {
62
+ [role="button"] {
62
63
  margin-bottom: 0;
63
64
 
64
65
  &:not(:first-of-type) {
@@ -92,9 +93,7 @@ dialog {
92
93
  transition: opacity var(--transition);
93
94
  }
94
95
 
95
- &:hover,
96
- &:active,
97
- &:focus {
96
+ &:is([aria-current], :hover, :active, :focus) {
98
97
  opacity: 1;
99
98
  }
100
99
  }
@@ -103,7 +102,7 @@ dialog {
103
102
 
104
103
  // Closed state
105
104
  &:not([open]),
106
- &[open='false'] {
105
+ &[open="false"] {
107
106
  display: none;
108
107
  }
109
108
  }
@@ -125,8 +124,7 @@ dialog {
125
124
  @if ($enable-classes and $enable-transitions) {
126
125
  $animation-duration: 0.2s;
127
126
 
128
- .modal-is-opening,
129
- .modal-is-closing {
127
+ :where(.modal-is-opening, .modal-is-closing) {
130
128
  dialog,
131
129
  dialog > article {
132
130
  animation-duration: $animation-duration;
@@ -0,0 +1,97 @@
1
+ /**
2
+ * Nav
3
+ */
4
+
5
+ // Reboot based on :
6
+ // - sanitize.css v13.0.0 | CC0 1.0 Universal | github.com/csstools/sanitize.css
7
+
8
+ // Prevent VoiceOver from ignoring list semantics in Safari (opinionated)
9
+ :where(nav li)::before {
10
+ float: left;
11
+ content: "\200B";
12
+ }
13
+
14
+ // Pico
15
+ // ––––––––––––––––––––
16
+
17
+ // Horizontal Nav
18
+ nav,
19
+ nav ul {
20
+ display: flex;
21
+ }
22
+
23
+ nav {
24
+ justify-content: space-between;
25
+
26
+ ol,
27
+ ul {
28
+ align-items: center;
29
+ margin-bottom: 0;
30
+ padding: 0;
31
+ list-style: none;
32
+
33
+ &:first-of-type {
34
+ margin-left: calc(var(--nav-element-spacing-horizontal) * -1);
35
+ }
36
+ &:last-of-type {
37
+ margin-right: calc(var(--nav-element-spacing-horizontal) * -1);
38
+ }
39
+ }
40
+
41
+ li {
42
+ display: inline-block;
43
+ margin: 0;
44
+ padding: var(--nav-element-spacing-vertical)
45
+ var(--nav-element-spacing-horizontal);
46
+
47
+ // Minimal support for buttons and forms elements
48
+ > * {
49
+ --spacing: 0;
50
+ }
51
+ }
52
+
53
+ :where(a, [role="link"]) {
54
+ display: inline-block;
55
+ margin: calc(var(--nav-link-spacing-vertical) * -1)
56
+ calc(var(--nav-link-spacing-horizontal) * -1);
57
+ padding: var(--nav-link-spacing-vertical) var(--nav-link-spacing-horizontal);
58
+ border-radius: var(--border-radius);
59
+ text-decoration: none;
60
+
61
+ &:is([aria-current], :hover, :active, :focus) {
62
+ text-decoration: none;
63
+ }
64
+ }
65
+
66
+ // Minimal support for role="button"
67
+ [role="button"] {
68
+ margin-right: inherit;
69
+ margin-left: inherit;
70
+ padding: var(--nav-link-spacing-vertical) var(--nav-link-spacing-horizontal);
71
+ }
72
+
73
+ }
74
+
75
+ // Vertical Nav
76
+ aside {
77
+ nav,
78
+ ol,
79
+ ul,
80
+ li {
81
+ display: block;
82
+ }
83
+
84
+ li {
85
+ padding: calc(var(--nav-element-spacing-vertical) * 0.5)
86
+ var(--nav-element-spacing-horizontal);
87
+
88
+ a {
89
+ display: block;
90
+ }
91
+
92
+ // Minimal support for links as buttons
93
+ [role="button"] {
94
+ margin: inherit;
95
+ }
96
+ }
97
+ }
@@ -4,7 +4,7 @@
4
4
 
5
5
  // Reboot based on :
6
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
7
+ // - sanitize.css v13.0.0 | CC0 1.0 Universal | github.com/csstools/sanitize.css
8
8
  // ––––––––––––––––––––
9
9
 
10
10
  // 1. Add the correct display in Edge 18- and IE
@@ -40,7 +40,7 @@ progress {
40
40
 
41
41
  &::-webkit-progress-bar {
42
42
  border-radius: var(--border-radius);
43
- background: transparent;
43
+ background: none;
44
44
  }
45
45
  &[value]::-webkit-progress-value {
46
46
  background-color: var(--progress-color);
@@ -71,6 +71,14 @@ progress {
71
71
  }
72
72
  }
73
73
 
74
+ [dir="rtl"] {
75
+ @media (prefers-reduced-motion: no-preference) {
76
+ progress:indeterminate {
77
+ animation-direction: reverse;
78
+ }
79
+ }
80
+ }
81
+
74
82
  @keyframes progressIndeterminate {
75
83
  0% {
76
84
  background-position: 200% 0;