@coopdigital/styles 0.16.6 → 0.18.0

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.
@@ -2,75 +2,49 @@
2
2
  @use "../breakpoints.scss" as *;
3
3
  @use "../keyframes/spinner";
4
4
 
5
- $button-variants: (
5
+ $variants: (
6
6
  "blue": (
7
7
  bg-color: var(--color-blue),
8
8
  text-color: var(--color-white),
9
- bg-color-hover: var(--color-blue-hover),
10
- bg-color-active: var(--color-blue-active),
11
9
  ),
12
10
  "white": (
13
11
  bg-color: var(--color-white),
14
12
  text-color: var(--color-black),
15
- bg-color-hover: var(--color-white-hover),
16
- bg-color-active: var(--color-white-active),
17
13
  ),
18
14
  "grey": (
19
15
  bg-color: var(--color-grey),
20
16
  text-color: var(--color-black),
21
- bg-color-hover: var(--color-grey-hover),
22
- bg-color-active: var(--color-grey-active),
23
17
  ),
24
18
  "green-ghost": (
25
19
  bg-color: transparent,
26
20
  text-color: var(--color-green),
27
- text-color-hover: var(--color-green-hover),
28
- bg-color-hover: transparent,
29
- bg-color-active: transparent,
30
- shadow: inset 0 0 0 2px var(--color-green),
31
- shadow-hover: inset 0 0 0 2px var(--color-green-hover),
21
+ border: 2px solid var(--color-green),
32
22
  ),
33
23
  "blue-ghost": (
34
24
  bg-color: transparent,
35
25
  text-color: var(--color-blue),
36
- text-color-hover: var(--color-blue-hover),
37
- bg-color-hover: transparent,
38
- bg-color-active: transparent,
39
- shadow: inset 0 0 0 2px var(--color-blue),
40
- shadow-hover: inset 0 0 0 2px var(--color-blue-hover),
26
+ border: 2px solid var(--color-blue),
41
27
  ),
42
28
  "white-ghost": (
43
29
  bg-color: transparent,
44
30
  text-color: var(--color-white),
45
- text-color-hover: var(--color-white-hover),
46
- bg-color-hover: transparent,
47
- bg-color-active: transparent,
48
- shadow: inset 0 0 0 2px var(--color-white),
49
- shadow-hover: inset 0 0 0 2px var(--color-white-hover),
31
+ border: 2px solid var(--color-white),
50
32
  ),
51
33
  "grey-ghost": (
52
34
  bg-color: transparent,
53
35
  text-color: var(--color-grey),
54
- text-color-hover: var(--color-grey-hover),
55
- bg-color-hover: transparent,
56
- bg-color-active: transparent,
57
- shadow: inset 0 0 0 2px var(--color-grey),
58
- shadow-hover: inset 0 0 0 2px var(--color-grey-hover),
36
+ border: 2px solid var(--color-grey),
59
37
  ),
60
38
  );
61
39
 
62
40
  .coop-button {
63
41
  --bg-color: var(--color-green);
64
- --bg-color-hover: var(--color-green-hover);
65
- --bg-color-active: var(--color-green-active);
66
- --shadow: 0;
67
- --shadow-hover: 0;
68
42
  --text-color: var(--color-white);
69
- --text-color-hover: var(--color-white);
70
- --padding-x: var(--spacing-20);
43
+ --font-size: var(--type-size-16);
44
+ --border: 0;
45
+ --padding-x: var(--spacing-32);
71
46
  --padding-y: var(--spacing-12);
72
- --type-size: var(--type-size-16);
73
- --min-height: var(--spacing-48);
47
+ --height: var(--spacing-48);
74
48
 
75
49
  cursor: pointer;
76
50
 
@@ -80,13 +54,13 @@ $button-variants: (
80
54
  justify-content: center;
81
55
 
82
56
  width: max-content;
83
- height: var(--min-height);
84
- margin-bottom: var(--spacing-8);
57
+ height: var(--height);
58
+ min-height: var(--height);
85
59
  padding: var(--padding-y) var(--padding-x);
86
- border: 0;
60
+ border: var(--border);
87
61
  border-radius: var(--ui-border-radius-m);
88
62
 
89
- font-size: var(--type-size);
63
+ font-size: var(--font-size);
90
64
  font-weight: 500;
91
65
  line-height: var(--type-line-height-default);
92
66
  color: var(--text-color);
@@ -96,43 +70,51 @@ $button-variants: (
96
70
 
97
71
  background: var(--bg-color);
98
72
  outline: none;
99
- box-shadow: var(--shadow);
100
73
 
101
74
  transition: 0.15s ease-in-out;
102
75
  transition-property: background-color, color, text-decoration-color;
103
76
 
104
77
  /* SIZES */
105
78
  &[data-size="sm"] {
106
- --padding-y: var(--spacing-8);
107
79
  --padding-x: var(--spacing-24);
108
- --min-height: var(--spacing-40);
80
+ --height: var(--spacing-40);
109
81
  }
110
82
 
111
83
  &[data-size="lg"] {
112
- --type-size: var(--type-size-18);
113
- --min-height: var(--spacing-52);
84
+ --height: var(--spacing-56);
85
+ --font-size: var(--type-size-18);
114
86
  }
115
87
 
116
- &[data-size="xl"] {
117
- --type-size: var(--type-size-20);
118
- --min-height: var(--spacing-54);
88
+ // &[data-size="xl"] {
89
+ // --min-height: var(--spacing-60);
90
+ // }
91
+
92
+ &:is(a) {
93
+ text-decoration: none;
119
94
  }
120
95
 
121
- &:focus {
96
+ &:focus-visible {
122
97
  outline: 2px solid var(--color-focus);
123
98
  outline-offset: 3px;
124
- transition: none;
125
99
  }
126
100
 
127
- &:not([data-loading]):active {
128
- background: var(--bg-color-active);
101
+ &[aria-disabled],
102
+ &:disabled {
103
+ --bg-color: var(--color-mid-grey);
104
+ --text-color: var(--color-white);
105
+ --border: 0;
106
+
107
+ cursor: not-allowed;
108
+ outline: 0;
129
109
  }
130
110
 
131
- &:not([data-loading], [aria-disabled]):hover {
132
- color: var(--text-color-hover);
133
- text-decoration-color: var(--text-color-hover);
134
- background: var(--bg-color-hover);
135
- box-shadow: var(--shadow-hover);
111
+ &:not([data-loading], [aria-disabled], :disabled):hover {
112
+ text-decoration-color: var(--text-color);
113
+ background-color: hsl(from var(--bg-color) h s calc(l - 5));
114
+ }
115
+
116
+ &:not([data-loading], [aria-disabled], :disabled):active {
117
+ background-color: hsl(from var(--bg-color) h s calc(l - 10));
136
118
  }
137
119
 
138
120
  /* FULL WIDTH */
@@ -145,7 +127,7 @@ $button-variants: (
145
127
  cursor: wait;
146
128
  position: relative;
147
129
 
148
- svg {
130
+ svg[data-icon="loading"] {
149
131
  animation: spin 1.25s linear infinite;
150
132
  }
151
133
  }
@@ -154,48 +136,21 @@ $button-variants: (
154
136
  pointer-events: none;
155
137
  }
156
138
 
157
- &[aria-disabled] {
158
- --bg-color: var(--color-mid-grey);
159
- --bg-color-active: var(--color-mid-grey);
160
- --bg-color-hover: var(--color-mid-grey);
161
- --text-color: var(--color-white);
162
-
163
- cursor: auto;
164
- outline: 0;
165
-
166
- &[data-variant*="ghost"] {
167
- --bg-color: transparent;
168
- --bg-color-active: transparent;
169
- --bg-color-hover: transparent;
170
- --text-color: var(--color-mid-grey);
171
- --shadow: inset 0 0 0 2px var(--color-mid-grey);
172
- }
173
- }
174
-
175
139
  /* MEDIA QUERIES */
176
140
 
177
- @media (min-width: $mq-medium) {
178
- --padding-x: var(--spacing-40);
179
- }
141
+ // @media (min-width: $mq-medium) {
142
+ // --padding-x: var(--spacing-40);
143
+ // }
180
144
 
181
145
  /* VARIANTS */
182
146
 
183
- @each $variant, $colors in $button-variants {
184
- &[data-variant="#{$variant}"]:not([aria-disabled]) {
147
+ @each $variant, $colors in $variants {
148
+ &[data-variant="#{$variant}"]:not([aria-disabled], &:disabled) {
185
149
  --bg-color: #{map.get($colors, "bg-color")};
186
- --bg-color-hover: #{map.get($colors, "bg-color-hover")};
187
- --bg-color-active: #{map.get($colors, "bg-color-active")};
188
150
  --text-color: #{map.get($colors, "text-color")};
189
151
 
190
- @if map.has-key($colors, "text-color-hover") {
191
- --text-color-hover: #{map.get($colors, "text-color-hover")};
192
- } @else {
193
- --text-color-hover: #{map.get($colors, "text-color")};
194
- }
195
-
196
- @if map.has-key($colors, "shadow") {
197
- --shadow: #{map.get($colors, "shadow")};
198
- --shadow-hover: #{map.get($colors, "shadow-hover")};
152
+ @if map.has-key($colors, "border") {
153
+ --border: #{map.get($colors, "border")};
199
154
  }
200
155
  }
201
156
  }
@@ -74,13 +74,13 @@
74
74
  border-radius: var(--ui-border-radius-m);
75
75
  }
76
76
 
77
- &:focus-within::before {
77
+ &:focus-visible::before {
78
78
  outline: 2px solid var(--color-focus);
79
79
  outline-offset: 3px;
80
80
  }
81
81
 
82
82
  &:hover,
83
- &:focus {
83
+ &:focus-visible {
84
84
  .coop-card--heading {
85
85
  text-decoration: underline;
86
86
  }
@@ -141,7 +141,7 @@
141
141
  }
142
142
 
143
143
  &:hover,
144
- &:focus {
144
+ &:focus-visible {
145
145
  box-shadow: var(--ui-shadow-hover);
146
146
 
147
147
  .coop-card--icon {
@@ -1,15 +1,19 @@
1
1
  .coop-pill {
2
- --type-size-badge: var(--type-size-10);
3
- --type-size-pill: var(--type-size-16);
2
+ --font-size-badge: var(--type-size-10);
3
+ --font-size: var(--type-size-16);
4
+ --height: var(--spacing-48);
4
5
 
5
6
  position: relative;
6
7
 
7
- display: inline-block;
8
+ display: inline-flex;
9
+ align-items: center;
8
10
 
9
- padding: var(--spacing-12) var(--spacing-20);
11
+ height: var(--height);
12
+ min-height: var(--height);
13
+ padding: 0 var(--spacing-20);
10
14
  border-radius: var(--ui-border-radius-xl);
11
15
 
12
- font-size: var(--type-size-pill); // [data-pill-size="md"]
16
+ font-size: var(--font-size); // [data-pill-size="md"]
13
17
  line-height: var(--type-line-height-default);
14
18
  color: var(--color-text-default);
15
19
  text-decoration: none;
@@ -23,7 +27,7 @@
23
27
  padding: var(--spacing-2) var(--spacing-6);
24
28
  border-radius: var(--ui-border-radius-m);
25
29
 
26
- font-size: var(--type-size-badge);
30
+ font-size: var(--font-size-badge);
27
31
  font-weight: 600;
28
32
  line-height: var(--type-line-height);
29
33
  color: var(--color-white);
@@ -31,19 +35,16 @@
31
35
  }
32
36
 
33
37
  &[data-size="sm"] {
34
- --type-size-pill: var(--type-size-14);
38
+ --height: var(--spacing-40);
39
+ --font-size: var(--type-size-14);
35
40
  }
36
41
 
37
42
  &[data-size="lg"] {
38
- --type-size-pill: var(--type-size-18);
39
- --type-size-badge: var(--type-size-12);
40
- }
41
-
42
- &[data-size="xl"] {
43
- --type-size-pill: var(--type-size-20);
44
- --type-size-badge: var(--type-size-12);
43
+ --height: var(--spacing-56);
44
+ --font-size: var(--type-size-18);
45
+ --font-size-badge: var(--type-size-12);
45
46
 
46
- padding: var(--spacing-14) var(--spacing-24);
47
+ padding: 0 var(--spacing-24);
47
48
  }
48
49
 
49
50
  /* GROUP RULES */
@@ -54,7 +55,7 @@
54
55
  }
55
56
 
56
57
  a.coop-pill {
57
- &:focus,
58
+ &:focus-visible,
58
59
  &:hover {
59
60
  text-decoration: underline;
60
61
  }
@@ -1,12 +1,13 @@
1
1
  @use "../breakpoints.scss" as *;
2
2
 
3
3
  .coop-search-box {
4
- $ghost-variants: ("green", "blue", "white", "grey");
4
+ $ghost-variants: ("green", "blue");
5
5
 
6
6
  --padding-x: var(--spacing-16);
7
7
  --padding-y: var(--spacing-12);
8
- --type-size: var(--type-size-16);
8
+ --font-size: var(--type-size-16);
9
9
  --border-color: var(--color-grey-neutral-cool);
10
+ --height: var(--spacing-48);
10
11
 
11
12
  display: flex;
12
13
  flex-direction: column;
@@ -14,7 +15,7 @@
14
15
 
15
16
  width: 100%;
16
17
 
17
- font-size: var(--type-size);
18
+ font-size: var(--font-size);
18
19
 
19
20
  label {
20
21
  display: block;
@@ -30,7 +31,7 @@
30
31
 
31
32
  /* STATUS */
32
33
 
33
- &:has(input:focus) {
34
+ &:has(input:focus-visible) {
34
35
  border-radius: var(--ui-border-radius-m);
35
36
  outline: 2px solid var(--color-focus);
36
37
  outline-offset: 3px;
@@ -43,11 +44,6 @@
43
44
  padding-right: 1rem;
44
45
  padding-left: 1rem;
45
46
  border-radius: 0 var(--ui-border-radius-m) var(--ui-border-radius-m) 0;
46
-
47
- .coop-icon {
48
- width: 1em;
49
- height: 1em;
50
- }
51
47
  }
52
48
 
53
49
  /* SIZES */
@@ -55,21 +51,19 @@
55
51
  &[data-size="sm"] {
56
52
  --padding-y: var(--spacing-8);
57
53
  --padding-x: var(--spacing-12);
54
+ --height: var(--spacing-40);
58
55
  }
59
56
 
60
57
  &[data-size="lg"] {
61
- --type-size: var(--type-size-18);
62
- }
63
-
64
- &[data-size="xl"] {
65
- --type-size: var(--type-size-20);
66
-
67
- min-height: 3.5rem;
58
+ --height: var(--spacing-56);
59
+ --font-size: var(--type-size-18);
68
60
  }
69
61
 
70
62
  input {
71
63
  width: 100%;
72
64
  min-width: 80px;
65
+ height: var(--height);
66
+ min-height: var(--height);
73
67
  padding: var(--padding-y) var(--padding-x);
74
68
  border: 2px solid var(--border-color);
75
69
  border-right: 0;
@@ -77,7 +71,7 @@
77
71
 
78
72
  outline: 0;
79
73
 
80
- &:focus {
74
+ &:focus-visible {
81
75
  border-color: var(--color-mid-grey);
82
76
  }
83
77
  }
@@ -88,17 +82,11 @@
88
82
  border-radius: var(--ui-border-radius-m);
89
83
  }
90
84
 
91
- input {
85
+ input,
86
+ button,
87
+ button:hover {
92
88
  border: 0;
93
89
  }
94
-
95
- button {
96
- box-shadow: unset;
97
-
98
- &:hover {
99
- box-shadow: unset;
100
- }
101
- }
102
90
  }
103
91
 
104
92
  &[data-variant="white"] {
@@ -10,6 +10,7 @@
10
10
  display: flex;
11
11
  flex-direction: var(--flex-direction);
12
12
  align-items: center;
13
+
13
14
  border-radius: var(--ui-border-radius-m);
14
15
 
15
16
  box-shadow: var(--ui-shadow);
@@ -24,10 +25,11 @@
24
25
 
25
26
  picture {
26
27
  overflow: hidden;
28
+ align-self: stretch;
29
+
27
30
  max-width: var(--image-max-width);
28
31
  margin: 0;
29
32
  border-radius: var(--image-border-radius);
30
- align-self: stretch;
31
33
  }
32
34
 
33
35
  img {
@@ -56,13 +58,13 @@
56
58
  border-radius: var(--ui-border-radius-m);
57
59
  }
58
60
 
59
- &:focus-within::before {
61
+ &:focus-visible::before {
60
62
  outline: 2px solid var(--color-focus);
61
63
  outline-offset: 3px;
62
64
  }
63
65
 
64
66
  &:hover,
65
- &:focus {
67
+ &:focus-visible {
66
68
  .coop-signpost--heading {
67
69
  text-decoration: underline;
68
70
  }
@@ -88,13 +90,13 @@
88
90
  min-width: 1rem;
89
91
 
90
92
  svg {
91
- transition: transform 0.2s ease-out;
92
93
  height: 1rem;
94
+ transition: transform 0.2s ease-out;
93
95
  }
94
96
  }
95
97
 
96
98
  &:hover,
97
- &:focus {
99
+ &:focus-visible {
98
100
  box-shadow: var(--ui-shadow-hover);
99
101
 
100
102
  .coop-signpost--icon svg {
@@ -12,8 +12,8 @@
12
12
  }
13
13
 
14
14
  a.coop-tag {
15
- &:focus,
16
- &:hover {
15
+ &:hover,
16
+ &:focus-visible {
17
17
  text-decoration: underline;
18
18
  }
19
19
  }
@@ -0,0 +1,15 @@
1
+ @use "breakpoints" as *;
2
+
3
+ .coop-grid {
4
+ display: grid;
5
+ grid-template-columns: repeat(2, minmax(0, 1fr));
6
+ gap: 1rem;
7
+
8
+ @media (min-width: $mq-small) {
9
+ grid-template-columns: repeat(6, minmax(0, 1fr));
10
+ }
11
+ @media (min-width: $mq-medium) {
12
+ grid-template-columns: repeat(12, minmax(0, 1fr));
13
+ gap: 2rem;
14
+ }
15
+ }
package/src/main.scss CHANGED
@@ -1,3 +1,4 @@
1
1
  @use "./vars";
2
2
  @use "./reset";
3
3
  @use "./typography";
4
+ @use "./layout";
package/src/reset.scss CHANGED
@@ -10,7 +10,7 @@ html {
10
10
 
11
11
  html,
12
12
  body {
13
- font-family: "Avenir Next", sans-serif;
13
+ font-family: var(--font-family);
14
14
  font-size: var(--type-size-default);
15
15
  color: var(--color-text-default);
16
16
  }
@@ -7,7 +7,7 @@
7
7
  }
8
8
 
9
9
  &:active,
10
- &:focus {
10
+ &:focus-visible {
11
11
  outline: 2px solid var(--color-focus);
12
12
  outline-offset: 3px;
13
13
  transition: none;
@@ -0,0 +1,7 @@
1
+ $display-options: (flex, block, inline, inline-flex, inline-block, grid, hidden);
2
+
3
+ @each $display in $display-options {
4
+ .#{$display} {
5
+ display: if($display == "hidden", none, $display);
6
+ }
7
+ }