@rolemodel/optics 0.4.1 → 0.5.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.
@@ -0,0 +1,55 @@
1
+ %spinner-global {
2
+ --_op-spinner-indicator-color: var(--op-color-primary-base);
3
+ --_op-spinner-track-color: var(--op-color-neutral-plus-four);
4
+ --_op-spinner-track-width-x-small: var(--op-border-width);
5
+ --_op-spinner-track-width-small: var(--op-border-width-large);
6
+ --_op-spinner-track-width-medium: calc(var(--op-border-width-large) + var(--op-border-width));
7
+ --_op-spinner-track-width-large: var(--op-border-width-x-large);
8
+ --_op-spinner-diameter-x-small: calc(6 * var(--op-size-unit)); // 24px
9
+ --_op-spinner-diameter-small: calc(10 * var(--op-size-unit)); // 40px
10
+ --_op-spinner-diameter-medium: calc(15 * var(--op-size-unit)); // 60px
11
+ --_op-spinner-diameter-large: calc(20 * var(--op-size-unit)); // 80px
12
+ --_op-spinner-animation-duration: 0.8s;
13
+ --_op-spinner-animation-timing-function: linear;
14
+
15
+ // Private API (don't touch these)
16
+ --__op-spinner-diameter: var(--_op-spinner-diameter-large);
17
+ --__op-spinner-track-width: var(--_op-spinner-track-width-large);
18
+
19
+ width: var(--__op-spinner-diameter);
20
+ height: var(--__op-spinner-diameter);
21
+ border: var(--__op-spinner-track-width) solid var(--_op-spinner-track-color);
22
+ border-radius: var(--__op-spinner-diameter);
23
+ border-top-color: var(--_op-spinner-indicator-color);
24
+ animation: spinner var(--_op-spinner-animation-duration) var(--_op-spinner-animation-timing-function) infinite;
25
+
26
+ &.spinner--x-small {
27
+ --__op-spinner-diameter: var(--_op-spinner-diameter-x-small);
28
+ --__op-spinner-track-width: var(--_op-spinner-track-width-x-small);
29
+ }
30
+
31
+ &.spinner--small {
32
+ --__op-spinner-diameter: var(--_op-spinner-diameter-small);
33
+ --__op-spinner-track-width: var(--_op-spinner-track-width-small);
34
+ }
35
+
36
+ &.spinner--medium {
37
+ --__op-spinner-diameter: var(--_op-spinner-diameter-medium);
38
+ --__op-spinner-track-width: var(--_op-spinner-track-width-medium);
39
+ }
40
+
41
+ &.spinner--large {
42
+ --__op-spinner-diameter: var(--_op-spinner-diameter-large);
43
+ --__op-spinner-track-width: var(--_op-spinner-track-width-large);
44
+ }
45
+ }
46
+
47
+ .spinner {
48
+ @extend %spinner-global;
49
+ }
50
+
51
+ @keyframes spinner {
52
+ to {
53
+ transform: rotate(360deg);
54
+ }
55
+ }
@@ -0,0 +1,106 @@
1
+ %switch-global {
2
+ // Public API (allowed to be overridden)
3
+ --_op-switch-height-small: calc(4 * var(--op-size-unit)); // 16px
4
+ --_op-switch-height-large: calc(6 * var(--op-size-unit)); // 24px
5
+ --_op-switch-width-small: calc(7 * var(--op-size-unit)); // 28px
6
+ --_op-switch-width-large: calc(11 * var(--op-size-unit)); // 44px
7
+ --_op-switch-opacity-disabled: var(--op-opacity-disabled);
8
+ --_op-switch-switch-padding: var(--op-space-2x-small);
9
+
10
+ // Private API (don't touch these)
11
+ --__op-switch-width: var(--_op-switch-width-large);
12
+ --__op-switch-height: var(--_op-switch-height-large);
13
+ --__op-switch-switch-size: calc(var(--__op-switch-height) - var(--_op-switch-switch-padding));
14
+ --__op-switch-half-switch-padding: calc(var(--_op-switch-switch-padding) / 2);
15
+
16
+ position: relative;
17
+ display: flex;
18
+
19
+ input {
20
+ width: 0;
21
+ height: 0;
22
+ margin-right: calc(-1 * var(--op-space-2x-small));
23
+
24
+ &:disabled + label {
25
+ cursor: not-allowed;
26
+ opacity: var(--_op-switch-opacity-disabled);
27
+ }
28
+
29
+ &:checked + label {
30
+ background-color: var(--op-color-primary-base);
31
+ box-shadow: none;
32
+
33
+ &::after {
34
+ left: calc(100% - var(--__op-switch-half-switch-padding));
35
+ transform: translateX(-100%);
36
+ }
37
+ }
38
+
39
+ &:hover + label {
40
+ &::after {
41
+ background-color: var(--op-color-primary-plus-five);
42
+ }
43
+ }
44
+
45
+ &:focus-visible + label {
46
+ box-shadow:
47
+ 0 0 0 var(--op-border-width-large) var(--op-color-primary-plus-six),
48
+ inset var(--op-border-all) var(--op-color-primary-minus-three);
49
+
50
+ &::after {
51
+ background-color: var(--op-color-neutral-plus-five);
52
+ box-shadow: var(--op-border-all) var(--op-color-primary-minus-three);
53
+ }
54
+ }
55
+
56
+ &:focus-visible:checked + label {
57
+ &::after {
58
+ background-color: var(--op-color-primary-plus-six);
59
+ box-shadow: var(--op-border-all) var(--op-color-primary-minus-two);
60
+ }
61
+ }
62
+ }
63
+
64
+ label {
65
+ position: relative;
66
+ display: block;
67
+ width: var(--__op-switch-width);
68
+ height: var(--__op-switch-height);
69
+ border-radius: var(--op-radius-pill);
70
+ background: var(--op-color-neutral-base);
71
+ box-shadow: inset var(--op-border-all) var(--op-color-neutral-plus-three);
72
+ text-indent: -9999px; // Normally text would not be put in the label, but this hides it in case you do put text in the label
73
+
74
+ &::after {
75
+ position: absolute;
76
+ top: var(--__op-switch-half-switch-padding);
77
+ left: var(--__op-switch-half-switch-padding);
78
+ width: var(--__op-switch-switch-size);
79
+ height: var(--__op-switch-switch-size);
80
+ border-radius: var(--op-radius-circle);
81
+ background-color: var(--op-color-neutral-plus-eight);
82
+ content: '';
83
+ transition: var(--op-transition-input);
84
+ }
85
+ }
86
+
87
+ // Size Modifiers
88
+ &.switch--small {
89
+ --__op-switch-width: var(--_op-switch-width-small);
90
+ --__op-switch-height: var(--_op-switch-height-small);
91
+ }
92
+
93
+ &.switch--large {
94
+ --__op-switch-width: var(--_op-switch-width-large);
95
+ --__op-switch-height: var(--_op-switch-height-large);
96
+ }
97
+
98
+ // Prevent labels after the toggle being full width
99
+ & + label {
100
+ width: fit-content;
101
+ }
102
+ }
103
+
104
+ .switch {
105
+ @extend %switch-global;
106
+ }
@@ -0,0 +1,84 @@
1
+ %tab-group-global {
2
+ display: flex;
3
+ align-items: center;
4
+ }
5
+
6
+ %tab-global {
7
+ // Public API
8
+ --_op-tab-font-small: var(--op-font-x-small);
9
+ --_op-tab-font-large: var(--op-font-small);
10
+ --_op-tab-padding-small: calc(var(--op-space-2x-small) + var(--op-space-3x-small)) var(--op-space-medium);
11
+ --_op-tab-padding-large: var(--op-space-x-small) var(--op-space-medium) var(--op-space-small) var(--op-space-medium);
12
+ --_op-tab-indicator-width-small: var(--op-border-width-large);
13
+ --_op-tab-indicator-width-large: var(--op-border-width-x-large);
14
+ --_op-tab-disabled-opacity: var(--op-opacity-disabled);
15
+
16
+ // Private API
17
+ --__op-tab-font-size: var(--_op-tab-font-large);
18
+ --__op-tab-padding: var(--_op-tab-padding-large);
19
+ --__op-tab-indicator-width: var(--_op-tab-indicator-width-large);
20
+ --__op-tab-indicator: inset 0 calc(-1 * var(--__op-tab-indicator-width)) 0 0;
21
+
22
+ padding: var(--__op-tab-padding);
23
+ background-color: var(--op-color-background);
24
+ color: var(--op-color-on-background);
25
+ font-size: var(--__op-tab-font-size);
26
+ text-decoration: none;
27
+
28
+ &.tab--active {
29
+ box-shadow: var(--__op-tab-indicator) var(--op-color-primary-plus-one);
30
+ }
31
+
32
+ // Focus State
33
+ &:focus,
34
+ &:focus-within,
35
+ &:focus-visible {
36
+ outline: none;
37
+ }
38
+
39
+ // Focus State
40
+ &:focus-visible:not(.tab--disabled) {
41
+ z-index: 1;
42
+ box-shadow: var(--op-input-focus-primary);
43
+
44
+ &.tab--active {
45
+ box-shadow:
46
+ var(--__op-tab-indicator) var(--op-color-primary-plus-one),
47
+ var(--op-input-focus-primary);
48
+ }
49
+ }
50
+
51
+ // Disabled State
52
+ &.tab--disabled {
53
+ opacity: var(--_op-tab-disabled-opacity);
54
+ pointer-events: none;
55
+ }
56
+
57
+ // Hover State
58
+ &:hover {
59
+ background-color: var(--op-color-primary-plus-seven);
60
+ box-shadow: var(--__op-tab-indicator) var(--op-color-primary-base);
61
+ color: var(--op-color-primary-on-plus-seven);
62
+ }
63
+
64
+ // Size Modifiers
65
+ &.tab--small {
66
+ --__op-tab-padding: var(--_op-tab-padding-small);
67
+ --__op-tab-font-size: var(--_op-tab-font-small);
68
+ --__op-tab-indicator-width: var(--_op-tab-indicator-width-small);
69
+ }
70
+
71
+ &.tab--large {
72
+ --__op-tab-padding: var(--_op-tab-padding-large);
73
+ --__op-tab-font-size: var(--_op-tab-font-large);
74
+ --__op-tab-indicator-width: var(--_op-tab-indicator-width-large);
75
+ }
76
+ }
77
+
78
+ .tab-group {
79
+ @extend %tab-group-global;
80
+ }
81
+
82
+ .tab {
83
+ @extend %tab-global;
84
+ }
@@ -1,9 +1,9 @@
1
1
  %table-global {
2
2
  // Public API
3
3
  // Cells (for height, the appropriate variable is used when using the density modifiers)
4
- --_op-table-cell-height-default: calc(var(--op-space-scale-unit) * 4.4);
5
- --_op-table-cell-height-comfortable: calc(var(--op-space-scale-unit) * 6.4);
6
- --_op-table-cell-height-compact: calc(var(--op-space-scale-unit) * 3.4);
4
+ --_op-table-cell-height-default: calc(11 * var(--op-size-unit)); // 44px
5
+ --_op-table-cell-height-comfortable: calc(16 * var(--op-size-unit)); // 64px
6
+ --_op-table-cell-height-compact: calc(8 * var(--op-size-unit)); // 32px
7
7
 
8
8
  // Private API
9
9
  // These allow for overriding specific padding versions easier.
@@ -0,0 +1,174 @@
1
+ %tag-global {
2
+ display: inline-flex;
3
+ align-items: center;
4
+ justify-content: center;
5
+ padding: var(--op-space-2x-small);
6
+ border-radius: var(--op-radius-pill);
7
+ background-color: var(--op-color-neutral-plus-four);
8
+ color: var(--op-color-neutral-on-plus-four);
9
+ font-size: var(--op-font-x-small);
10
+ font-weight: var(--op-font-weight-bold);
11
+ letter-spacing: var(--op-letter-spacing-label);
12
+ line-height: var(--op-line-height-dense);
13
+ user-select: none;
14
+ white-space: nowrap;
15
+
16
+ .tag__label {
17
+ padding-inline: var(--op-space-2x-small);
18
+ }
19
+
20
+ .btn--icon {
21
+ --__op-btn-height: var(--op-font-medium);
22
+
23
+ // Hover State
24
+ &:hover {
25
+ background-color: var(--op-color-neutral-minus-three);
26
+ box-shadow: none;
27
+ color: var(--op-color-neutral-on-minus-three);
28
+ }
29
+
30
+ // Focus State
31
+ &:focus-visible {
32
+ background-color: var(--op-color-neutral-base);
33
+ box-shadow: var(--op-input-focus-neutral);
34
+ color: var(--op-color-neutral-on-base);
35
+ }
36
+ }
37
+ }
38
+
39
+ .tag-readonly {
40
+ @extend %tag-global;
41
+ }
42
+
43
+ .tag-primary {
44
+ @extend %tag-global;
45
+
46
+ background-color: var(--op-color-primary-base);
47
+ color: var(--op-color-primary-on-base);
48
+
49
+ .btn--icon {
50
+ color: var(--op-color-primary-on-base);
51
+
52
+ // Hover State
53
+ &:hover {
54
+ background-color: var(--op-color-primary-minus-three);
55
+ box-shadow: none;
56
+ color: var(--op-color-primary-on-minus-three);
57
+ }
58
+
59
+ // Focus State
60
+ &:focus-visible {
61
+ background-color: var(--op-color-primary-base);
62
+ box-shadow: var(--op-input-focus-primary);
63
+ color: var(--op-color-primary-on-base);
64
+ }
65
+ }
66
+ }
67
+
68
+ .tag-danger {
69
+ @extend %tag-global;
70
+
71
+ background-color: var(--op-color-alerts-danger-base);
72
+ color: var(--op-color-alerts-danger-on-base);
73
+
74
+ /* stylelint-disable no-descending-specificity */
75
+ .btn--icon {
76
+ color: var(--op-color-alerts-danger-on-base);
77
+
78
+ // Hover State
79
+ &:hover {
80
+ background-color: var(--op-color-alerts-danger-minus-three);
81
+ box-shadow: none;
82
+ color: var(--op-color-alerts-danger-on-minus-three);
83
+ }
84
+
85
+ // Focus State
86
+ &:focus-visible {
87
+ background-color: var(--op-color-alerts-danger-base);
88
+ box-shadow: var(--op-input-focus-danger);
89
+ color: var(--op-color-alerts-danger-on-base);
90
+ }
91
+ }
92
+ /* stylelint-enable no-descending-specificity */
93
+ }
94
+
95
+ .tag-warning {
96
+ @extend %tag-global;
97
+
98
+ background-color: var(--op-color-alerts-warning-base);
99
+ color: var(--op-color-alerts-warning-on-base);
100
+
101
+ /* stylelint-disable no-descending-specificity */
102
+ .btn--icon {
103
+ color: var(--op-color-alerts-warning-on-base);
104
+
105
+ // Hover State
106
+ &:hover {
107
+ background-color: var(--op-color-alerts-warning-minus-three);
108
+ box-shadow: none;
109
+ color: var(--op-color-alerts-warning-on-minus-three);
110
+ }
111
+
112
+ // Focus State
113
+ &:focus-visible {
114
+ background-color: var(--op-color-alerts-warning-base);
115
+ box-shadow: var(--op-input-focus-warning);
116
+ color: var(--op-color-alerts-warning-on-base);
117
+ }
118
+ }
119
+ /* stylelint-enable no-descending-specificity */
120
+ }
121
+
122
+ .tag-info {
123
+ @extend %tag-global;
124
+
125
+ background-color: var(--op-color-alerts-info-base);
126
+ color: var(--op-color-alerts-info-on-base);
127
+
128
+ /* stylelint-disable no-descending-specificity */
129
+ .btn--icon {
130
+ color: var(--op-color-alerts-info-on-base);
131
+
132
+ // Hover State
133
+ &:hover {
134
+ background-color: var(--op-color-alerts-info-minus-three);
135
+ box-shadow: none;
136
+ color: var(--op-color-alerts-info-on-minus-three);
137
+ }
138
+
139
+ // Focus State
140
+ &:focus-visible {
141
+ background-color: var(--op-color-alerts-info-base);
142
+ box-shadow: var(--op-input-focus-info);
143
+ color: var(--op-color-alerts-info-on-base);
144
+ }
145
+ }
146
+ /* stylelint-enable no-descending-specificity */
147
+ }
148
+
149
+ .tag-notice {
150
+ @extend %tag-global;
151
+
152
+ background-color: var(--op-color-alerts-notice-base);
153
+ color: var(--op-color-alerts-notice-on-base);
154
+
155
+ /* stylelint-disable no-descending-specificity */
156
+ .btn--icon {
157
+ color: var(--op-color-alerts-notice-on-base);
158
+
159
+ // Hover State
160
+ &:hover {
161
+ background-color: var(--op-color-alerts-notice-minus-three);
162
+ box-shadow: none;
163
+ color: var(--op-color-alerts-notice-on-minus-three);
164
+ }
165
+
166
+ // Focus State
167
+ &:focus-visible {
168
+ background-color: var(--op-color-alerts-notice-base);
169
+ box-shadow: var(--op-input-focus-notice);
170
+ color: var(--op-color-alerts-notice-on-base);
171
+ }
172
+ }
173
+ /* stylelint-enable no-descending-specificity */
174
+ }
@@ -1,6 +1,6 @@
1
1
  %tooltip-global {
2
2
  // Public API
3
- --_op-tooltip-max-width: calc(5 * var(--op-space-3x-large));
3
+ --_op-tooltip-max-width: calc(50 * var(--op-size-unit)); // 200px
4
4
  --_op-tooltip-padding: var(--op-space-x-small) var(--op-space-medium);
5
5
  --_op-tooltip-background-color: var(--op-color-neutral-minus-max);
6
6
  --_op-tooltip-text-color: var(--op-color-neutral-on-minus-max);
@@ -13,7 +13,7 @@
13
13
 
14
14
  &::before,
15
15
  &::after {
16
- opacity: 0;
16
+ opacity: var(--op-opacity-none);
17
17
  transition: var(--op-transition-tooltip);
18
18
  visibility: hidden;
19
19
  }
@@ -48,7 +48,7 @@
48
48
  &:hover {
49
49
  &::before,
50
50
  &::after {
51
- opacity: 1;
51
+ opacity: var(--op-opacity-full);
52
52
  visibility: visible;
53
53
  }
54
54
  }
@@ -21,12 +21,19 @@
21
21
 
22
22
  .app__content {
23
23
  width: 100%;
24
- max-width: $breakpoint-medium;
24
+ max-width: var(--op-breakpoint-medium);
25
25
  flex-grow: 1;
26
26
  padding: 0 var(--op-space-large);
27
27
  margin: 0 auto;
28
28
  }
29
29
 
30
+ .app__content-no-margin {
31
+ width: 100%;
32
+ flex-grow: 1;
33
+ padding: 0 var(--op-space-large);
34
+ overflow-y: auto;
35
+ }
36
+
30
37
  .app__footer {
31
38
  position: sticky;
32
39
  z-index: var(--op-z-index-footer);
@@ -64,6 +64,41 @@
64
64
  --op-color-alerts-notice-l: 64%;
65
65
  }
66
66
 
67
+ @mixin opacities {
68
+ /**
69
+ * @tokens Opacities
70
+ * @presenter Opacity
71
+ */
72
+ --op-opacity-none: 0;
73
+ --op-opacity-overlay: 0.2;
74
+ --op-opacity-disabled: 0.4;
75
+ --op-opacity-half: 0.5;
76
+ --op-opacity-full: 1;
77
+ }
78
+
79
+ // Breakpoints are duplicated here for use as variables with calculations and for use in @media queries.
80
+ // We use SCSS variables outside the root since support for custom properties / css variables
81
+ // is not yet available
82
+ // https://drafts.csswg.org/css-env-1/
83
+ // https://bholmes.dev/blog/alternative-to-css-variable-media-queries/
84
+ @mixin breakpoints {
85
+ /**
86
+ * @tokens Breakpoints
87
+ * @presenter Spacing
88
+ */
89
+ --op-breakpoint-x-small: 512px; // vertical phone
90
+ --op-breakpoint-small: 768px; // vertical ipad
91
+ --op-breakpoint-medium: 1024px; // landscape ipad
92
+ --op-breakpoint-large: 1280px; // small laptop
93
+ --op-breakpoint-x-large: 1440px; // medium laptop
94
+ }
95
+
96
+ $breakpoint-x-small: 512px; // vertical phone
97
+ $breakpoint-small: 768px; // vertical ipad
98
+ $breakpoint-medium: 1024px; // landscape ipad
99
+ $breakpoint-large: 1280px; // small laptop
100
+ $breakpoint-x-large: 1440px; // medium laptop
101
+
67
102
  @mixin border-radius {
68
103
  /**
69
104
  * @tokens Border Radius
@@ -176,6 +211,7 @@
176
211
  /**
177
212
  * @tokens Transition
178
213
  */
214
+ --op-transition-accordion: rotate 120ms ease-in;
179
215
  --op-transition-input: all 120ms ease-in;
180
216
  --op-transition-sidebar: all 200ms ease-in-out;
181
217
  --op-transition-modal: all 300ms ease-in;
@@ -194,8 +230,8 @@
194
230
  /**
195
231
  * @tokens Encoded Images
196
232
  */
197
- --op-encoded-images-dropdown-arrow-width: var(--op-space-scale-unit); // No way to string interpolate
198
- --op-encoded-images-dropdown-arrow: url("data:image/svg+xml,%3Csvg viewBox='0 0 10 7' version='1.1' xmlns='http://www.w3.org/2000/svg' width='10' height='7'%3E%3Cg transform='matrix(0.983953,0,0,1.00934,-9.22679,-3.65885)'%3E%3Cpath fill='%23d1d1d1' d='M9.37727 3.625l5.08154 6.93523L19.54036 3.625'/%3E%3C/g%3E%3C/svg%3E%0A");
233
+ --op-encoded-images-dropdown-arrow-width: calc(1.2 * var(--op-space-scale-unit)); // 12px No way to string interpolate
234
+ --op-encoded-images-dropdown-arrow: url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iOSIgdmlld0JveD0iMCAwIDEyIDkiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxwYXRoIGQ9Ik02IDguMzc1MDFMMCAyLjM3NTAxTDEuNCAwLjk3NTAwNkw2IDUuNTc1MDFMMTAuNiAwLjk3NTAwNkwxMiAyLjM3NTAxTDYgOC4zNzUwMVoiIGZpbGw9IiMwQTBBMEIiLz4KPC9zdmc+Cg==');
199
235
  }
200
236
 
201
237
  @mixin fonts {
@@ -224,6 +260,14 @@
224
260
  --op-space-4x-large: calc(var(--op-space-scale-unit) * 8); // 80px
225
261
  }
226
262
 
263
+ @mixin sizing-scales {
264
+ /**
265
+ * @tokens Size Scale
266
+ * @presenter Spacing
267
+ */
268
+ --op-size-unit: 0.4rem; // 4px;
269
+ }
270
+
227
271
  @mixin shadows {
228
272
  /**
229
273
  * @tokens Shadows
@@ -272,29 +316,25 @@
272
316
  --op-input-outer-focus: 0 0 0 var(--op-border-width-x-large);
273
317
  --op-input-focus-primary: var(--op-input-inner-focus) var(--op-color-primary-plus-two),
274
318
  var(--op-input-outer-focus) var(--op-color-primary-plus-five);
319
+ --op-input-focus-neutral: var(--op-input-inner-focus) var(--op-color-neutral-plus-two),
320
+ var(--op-input-outer-focus) var(--op-color-neutral-plus-five);
275
321
  --op-input-focus-danger: var(--op-input-inner-focus) var(--op-color-alerts-danger-plus-two),
276
322
  var(--op-input-outer-focus) var(--op-color-alerts-danger-plus-five);
277
323
  --op-input-focus-warning: var(--op-input-inner-focus) var(--op-color-alerts-warning-plus-two),
278
324
  var(--op-input-outer-focus) var(--op-color-alerts-warning-plus-five);
325
+ --op-input-focus-info: var(--op-input-inner-focus) var(--op-color-alerts-info-plus-two),
326
+ var(--op-input-outer-focus) var(--op-color-alerts-info-plus-five);
327
+ --op-input-focus-notice: var(--op-input-inner-focus) var(--op-color-alerts-notice-plus-two),
328
+ var(--op-input-outer-focus) var(--op-color-alerts-notice-plus-five);
279
329
  }
280
330
 
281
- // We use SCSS variables outside the root since support for custom properties / css variables
282
- // is not yet available
283
- // https://drafts.csswg.org/css-env-1/
284
- // https://bholmes.dev/blog/alternative-to-css-variable-media-queries/
285
-
286
- /**
287
- * @tokens Breakpoints
288
- */
289
- $breakpoint-x-small: 512px; // vertical phone
290
- $breakpoint-small: 768px; // vertical ipad
291
- $breakpoint-medium: 1024px; // landscape ipad
292
- $breakpoint-large: 1280px; // small laptop
293
- $breakpoint-x-large: 1440px; // medium laptop
294
-
295
331
  :root {
296
332
  // Color HSLs
297
333
  @include color-varieties;
334
+ @include opacities;
335
+
336
+ // Breakpoints
337
+ @include breakpoints;
298
338
 
299
339
  // Border
300
340
  @include border-radius;
@@ -319,6 +359,7 @@ $breakpoint-x-large: 1440px; // medium laptop
319
359
  @include encoded-images;
320
360
 
321
361
  // Spacing
362
+ @include sizing-scales;
322
363
  @include spacing-scales;
323
364
 
324
365
  // Shadows