@jrgermain/stylesheet 0.2.0 → 0.3.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.
Files changed (50) hide show
  1. package/dist/index.css +2677 -2574
  2. package/dist/index.css.map +1 -1
  3. package/dist/index.min.css +2 -2
  4. package/dist/index.min.css.map +1 -1
  5. package/package.json +12 -12
  6. package/src/styles/components/{_details.scss → accordion.css} +58 -69
  7. package/src/styles/components/alert.css +12 -0
  8. package/src/styles/components/{_app.scss → app.css} +106 -46
  9. package/src/styles/components/banner.css +33 -0
  10. package/src/styles/components/{_button.scss → button.css} +145 -24
  11. package/src/styles/components/{_card.scss → card.css} +15 -19
  12. package/src/styles/components/chip.css +217 -0
  13. package/src/styles/components/{_hr.scss → divider.css} +7 -6
  14. package/src/styles/components/drawer.css +111 -0
  15. package/src/styles/components/{_field.scss → field.css} +22 -21
  16. package/src/styles/components/{_layout.scss → flex.css} +5 -25
  17. package/src/styles/components/heading.css +60 -0
  18. package/src/styles/components/highlight.css +39 -0
  19. package/src/styles/components/link.css +41 -0
  20. package/src/styles/components/meter.css +80 -0
  21. package/src/styles/components/modal.css +39 -0
  22. package/src/styles/components/progress.css +73 -0
  23. package/src/styles/components/quote.css +31 -0
  24. package/src/styles/components/{_skeleton.scss → skeleton.css} +17 -18
  25. package/src/styles/components/skip-link.css +44 -0
  26. package/src/styles/components/slider.css +96 -0
  27. package/src/styles/components/{_switch.scss → switch.css} +24 -12
  28. package/src/styles/components/table.css +86 -0
  29. package/src/styles/components/text.css +120 -0
  30. package/src/styles/components/visually-hidden.css +13 -0
  31. package/src/styles/experimental/dialog-animations.css +6 -6
  32. package/src/styles/index.css +32 -0
  33. package/src/styles/shared/base-alert.css +112 -0
  34. package/src/styles/shared/base-dialog.css +90 -0
  35. package/src/styles/shared/dismiss-button.css +27 -0
  36. package/src/styles/utils/reset.css +29 -0
  37. package/src/styles/{_variables.scss → utils/variables.css} +43 -52
  38. package/src/svg/dropdown-invert-thick.svg +4 -0
  39. package/src/svg/dropdown-invert.svg +4 -0
  40. package/src/svg/dropdown-thick.svg +4 -0
  41. package/src/svg/dropdown.svg +1 -1
  42. package/src/styles/_utils.scss +0 -87
  43. package/src/styles/components/_alert.scss +0 -178
  44. package/src/styles/components/_chip.scss +0 -151
  45. package/src/styles/components/_dialog.scss +0 -234
  46. package/src/styles/components/_progress-meter.scss +0 -149
  47. package/src/styles/components/_range.scss +0 -96
  48. package/src/styles/components/_table.scss +0 -82
  49. package/src/styles/components/_text.scss +0 -295
  50. package/src/styles/index.scss +0 -47
@@ -1,151 +0,0 @@
1
- @use "../utils";
2
-
3
- $color-variants: (
4
- "red",
5
- "orange",
6
- "yellow",
7
- "green",
8
- "sky",
9
- "blue",
10
- "purple",
11
- "magenta",
12
- "brand",
13
- "gray"
14
- );
15
-
16
- .chip {
17
- --chip-fg-color: white;
18
-
19
- display: inline-flex;
20
- align-items: center;
21
- border-radius: var(--radius-full);
22
- font-size: var(--font-size-s);
23
- padding-block: var(--space-3xs);
24
- padding-inline: var(--space-xs);
25
- background-color: var(--chip-bg-color);
26
- border: var(--border-s) solid var(--chip-border-color);
27
- color: var(--chip-fg-color);
28
- flex-shrink: 0;
29
- cursor: default;
30
- transition-property: box-shadow, background-color, border-color;
31
- transition-duration: 200ms;
32
- transition-timing-function: ease;
33
- text-decoration: none;
34
- appearance: none;
35
- line-height: 1.2;
36
-
37
- &:is(:focus-visible, .focus) {
38
- box-shadow: 0 0 0 0.2em var(--chip-focus-color);
39
- }
40
-
41
- &.clickable {
42
- cursor: pointer;
43
- box-shadow: var(--shadow-s);
44
-
45
- &:is(:focus-visible, .focus) {
46
- outline: 0;
47
- box-shadow:
48
- var(--shadow-s),
49
- 0 0 0 0.2em var(--chip-focus-color);
50
- }
51
-
52
- &:is(:hover, .hover) {
53
- background-color: var(--chip-border-color);
54
- }
55
-
56
- &:is(:active, .active) {
57
- background-color: var(--chip-bg-color-active);
58
- border-color: var(--chip-bg-color-active);
59
- }
60
- }
61
-
62
- @each $color in $color-variants {
63
- &.#{$color} {
64
- --chip-bg-color: var(--color-#{$color}-6);
65
- --chip-border-color: var(--color-#{$color}-7);
66
- --chip-focus-color: var(--color-#{$color}-transparent);
67
- --chip-bg-color-active: var(--color-#{$color}-5);
68
- }
69
- }
70
-
71
- &.black {
72
- --chip-bg-color: black;
73
- --chip-border-color: var(--color-gray-4);
74
- --chip-focus-color: var(--color-gray-transparent);
75
- --chip-bg-color-active: var(--color-gray-1);
76
- }
77
-
78
- &.white {
79
- --chip-fg-color: black;
80
- --chip-bg-color: white;
81
- --chip-border-color: var(--color-gray-8);
82
- --chip-focus-color: var(--color-gray-transparent);
83
- --chip-bg-color-active: var(--color-gray-7);
84
- }
85
-
86
- @media (prefers-color-scheme: dark) {
87
- @each $color in $color-variants {
88
- &.#{$color} {
89
- --chip-border-color: var(--color-#{$color}-5);
90
- --chip-bg-color-active: var(--color-#{$color}-7);
91
- }
92
- }
93
-
94
- &.black {
95
- --chip-border-color: var(--color-gray-7);
96
- --chip-bg-color-active: var(--color-gray-8);
97
- }
98
-
99
- &.white {
100
- --chip-border-color: var(--color-gray-2);
101
- --chip-bg-color-active: var(--color-gray-3);
102
- }
103
- }
104
-
105
- .delete {
106
- outline: 0;
107
- margin-inline: var(--space-3xs) calc(-1 * var(--space-2xs));
108
- font-size: 0.6em;
109
- border: var(--border-s) solid var(--chip-border-color);
110
- border-radius: var(--radius-full);
111
- transition-property: background-color, border-color;
112
- transition-duration: 200ms;
113
- transition-timing-function: ease;
114
- position: relative;
115
- overflow: hidden;
116
- cursor: pointer;
117
- height: 2em;
118
- width: 2em;
119
- user-select: none;
120
- background-color: #0002;
121
- padding: 0;
122
- display: inline-flex;
123
- box-shadow: none;
124
-
125
- &::after {
126
- content: "";
127
- width: 1.7em;
128
- height: 1.7em;
129
- mask-image: #{utils.svg-to-data-url(
130
- '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="32" d="M368 368L144 144M368 144L144 368"/></svg>'
131
- )};
132
- mask-size: contain;
133
- mask-repeat: no-repeat;
134
- mask-position: center;
135
- background-color: var(--chip-fg-color);
136
- margin: auto;
137
- }
138
-
139
- &:is(:focus-visible, .focus) {
140
- border-color: var(--chip-fg-color);
141
- }
142
-
143
- &:is(:hover, .hover, :focus-visible, .focus) {
144
- background-color: #0001;
145
- }
146
-
147
- &:is(:active, .active) {
148
- background-color: #0003;
149
- }
150
- }
151
- }
@@ -1,234 +0,0 @@
1
- @use "./text";
2
- @use "../utils";
3
-
4
- dialog,
5
- dialog::backdrop {
6
- --dialog-starting-opacity: 0.25;
7
- --dialog-starting-transform: translateY(8px);
8
- --dialog-open-opacity: 1;
9
- --dialog-open-transform: translate(0);
10
- --dialog-ending-opacity: 0;
11
- --dialog-ending-transform: translateY(-4px) scale(0.97);
12
- --dialog-backdrop-starting-opacity: 0;
13
- --dialog-backdrop-open-opacity: 0.75;
14
- --dialog-backdrop-ending-opacity: 0;
15
- --dialog-backdrop-color: var(--color-gray-2);
16
-
17
- @media (prefers-reduced-motion) {
18
- --dialog-starting-transform: translate(0);
19
- --dialog-ending-transform: translate(0);
20
- }
21
-
22
- @media (prefers-color-scheme: dark) {
23
- --dialog-backdrop-color: var(--color-gray-8);
24
- --dialog-backdrop-open-opacity: 0.85;
25
- }
26
- }
27
-
28
- dialog {
29
- box-shadow: var(--shadow-xl);
30
- border: var(--border-s) solid var(--color-outline);
31
- border-radius: var(--radius-l);
32
- background-color: var(--color-body-alt);
33
- color: var(--color-body-text);
34
- padding: 0;
35
- flex-direction: column;
36
- gap: 0;
37
-
38
- &::backdrop {
39
- background-color: var(--dialog-backdrop-color);
40
- }
41
-
42
- &.drawer {
43
- --dialog-starting-opacity: 0.5;
44
-
45
- position: fixed;
46
- inset: 0;
47
- border-radius: 0;
48
- margin: 0;
49
- border: 0;
50
- overflow: auto;
51
-
52
- &.left {
53
- right: auto;
54
-
55
- @media (prefers-reduced-motion: no-preference) {
56
- --dialog-starting-transform: translateX(-16px);
57
- --dialog-ending-transform: translateX(-16px);
58
- }
59
- }
60
-
61
- &.top {
62
- bottom: auto;
63
-
64
- @media (prefers-reduced-motion: no-preference) {
65
- --dialog-starting-transform: translateY(-16px);
66
- --dialog-ending-transform: translateY(-16px);
67
- }
68
- }
69
-
70
- &.right {
71
- left: auto;
72
-
73
- @media (prefers-reduced-motion: no-preference) {
74
- --dialog-starting-transform: translateX(16px);
75
- --dialog-ending-transform: translateX(16px);
76
- }
77
- }
78
-
79
- &.bottom {
80
- top: auto;
81
-
82
- @media (prefers-reduced-motion: no-preference) {
83
- --dialog-starting-transform: translateY(16px);
84
- --dialog-ending-transform: translateY(16px);
85
- }
86
- }
87
-
88
- &.top,
89
- &.bottom {
90
- width: 100dvw;
91
- max-width: unset;
92
- height: auto;
93
- max-height: 100dvh;
94
- min-height: min(100dvh, 250px);
95
-
96
- &.small {
97
- max-height: min(100dvh, 300px);
98
- }
99
-
100
- &.medium {
101
- max-height: min(100dvh, 450px);
102
- }
103
-
104
- &.large {
105
- max-height: min(100dvh, 600px);
106
- }
107
- }
108
-
109
- &.left,
110
- &.right {
111
- height: 100dvh;
112
- max-height: unset;
113
- width: auto;
114
- min-width: min(100dvw, 300px);
115
- max-width: 100dvw;
116
-
117
- &.small {
118
- max-width: min(100dvw, 350px);
119
- }
120
-
121
- &.medium {
122
- max-width: min(100dvw, 450px);
123
- }
124
-
125
- &.large {
126
- max-width: min(100dvw, 700px);
127
- }
128
- }
129
- }
130
-
131
- &:not(.drawer) {
132
- --dialog-width: 9999px;
133
-
134
- max-height: calc(100svh - 4 * var(--space-body));
135
- max-width: min(calc(100svw - 4 * var(--space-body)), var(--dialog-width));
136
-
137
- &.small {
138
- --dialog-width: 400px;
139
- }
140
-
141
- &.medium {
142
- --dialog-width: 650px;
143
- }
144
-
145
- &.large {
146
- --dialog-width: 900px;
147
- }
148
- }
149
-
150
- &[open] {
151
- display: flex;
152
- }
153
- }
154
-
155
- .dialog-header {
156
- font-family: var(--font-family-heading);
157
- font-size: var(--font-size-m);
158
- font-weight: var(--font-weight-bold);
159
- line-height: 1;
160
- padding: var(--space-m);
161
- padding-block-end: var(--space-xs);
162
- flex-shrink: 0;
163
- display: flex;
164
- align-items: center;
165
- justify-content: space-between;
166
- color: var(--color-brand-3);
167
- margin: 0;
168
-
169
- h1,
170
- h2,
171
- h3,
172
- h4,
173
- h5,
174
- h6 {
175
- color: inherit;
176
- font-size: inherit;
177
- font-weight: inherit;
178
- margin: 0;
179
- }
180
-
181
- .button.close {
182
- color: inherit;
183
- margin: -0.5rem;
184
- margin-inline-start: var(--space-3xs);
185
-
186
- &::after {
187
- content: "";
188
- width: 1.8em;
189
- height: 1.8em;
190
- mask-image: #{utils.svg-to-data-url(
191
- '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="32" d="M368 368L144 144M368 144L144 368"/></svg>'
192
- )};
193
- mask-size: contain;
194
- mask-repeat: no-repeat;
195
- background-color: currentcolor;
196
- }
197
- }
198
- }
199
-
200
- .dialog-body {
201
- padding: var(--space-m);
202
- padding-block-start: var(--space-xs);
203
- flex-shrink: 1;
204
- display: block;
205
- overflow: auto;
206
- margin: 0;
207
- }
208
-
209
- .dialog-footer {
210
- padding: var(--space-xs);
211
- flex-shrink: 0;
212
- display: flex;
213
- gap: var(--space-2xs);
214
- justify-content: flex-start;
215
- background-color: var(--color-body);
216
- border-block-start: var(--border-s) solid var(--color-outline);
217
- margin: 0;
218
-
219
- @media screen and (width <= 500px) {
220
- flex-direction: column;
221
- width: 100%;
222
- justify-content: stretch;
223
- }
224
-
225
- .button:not(.small, .medium, .large) {
226
- font-size: 0.9rem;
227
- }
228
- }
229
-
230
- @supports (transition-behavior: allow-discrete) and (overlay: none) {
231
- dialog {
232
- animation: unset;
233
- }
234
- }
@@ -1,149 +0,0 @@
1
- @mixin background {
2
- border-radius: var(--radius-s);
3
- border: 0;
4
- display: block;
5
- inline-size: 100%;
6
- block-size: 1em;
7
- box-shadow: inset 0 0 0 var(--border-s) var(--color-outline);
8
- background: var(--color-gray-9);
9
- box-sizing: border-box;
10
- overflow: clip;
11
- }
12
-
13
- @mixin value {
14
- border-radius: var(--radius-s);
15
- border: var(--border-s) solid transparent;
16
- box-sizing: border-box;
17
- }
18
-
19
- @mixin value-good {
20
- background: var(--color-green-6);
21
- border-color: var(--color-green-5);
22
- }
23
-
24
- @mixin value-ok {
25
- background: var(--color-yellow-7);
26
- border-color: var(--color-yellow-6);
27
-
28
- @media (prefers-color-scheme: dark) {
29
- background: var(--color-yellow-4);
30
- border-color: var(--color-yellow-3);
31
- }
32
- }
33
-
34
- @mixin value-bad {
35
- background: var(--color-red-6);
36
- border-color: var(--color-red-5);
37
- }
38
-
39
- @mixin value-neutral {
40
- background: var(--color-blue-6);
41
- border-color: var(--color-blue-5);
42
- }
43
-
44
- @mixin value-indeterminate {
45
- @include value-neutral;
46
-
47
- opacity: 0.5;
48
- inline-size: 100% !important;
49
- animation: indeterminate-progress 1s linear infinite alternate;
50
- }
51
-
52
- @keyframes indeterminate-progress {
53
- from {
54
- opacity: 0.2;
55
- }
56
-
57
- to {
58
- opacity: 0.8;
59
- }
60
- }
61
-
62
- meter {
63
- appearance: none;
64
- inline-size: 100%;
65
- block-size: 1em;
66
- }
67
-
68
- @supports selector(::-moz-meter-bar) {
69
- meter {
70
- @include background;
71
- }
72
- }
73
-
74
- ::-webkit-meter-bar {
75
- @include background;
76
- }
77
-
78
- ::-webkit-meter-optimum-value,
79
- ::-webkit-meter-suboptimum-value,
80
- ::-webkit-meter-even-less-good-value {
81
- @include value;
82
- }
83
-
84
- ::-webkit-meter-inner-element {
85
- display: inline-block;
86
- position: relative;
87
- }
88
-
89
- ::-moz-meter-bar {
90
- @include value;
91
- }
92
-
93
- ::-webkit-meter-optimum-value {
94
- @include value-good;
95
- }
96
-
97
- :-moz-meter-optimum::-moz-meter-bar {
98
- @include value-good;
99
- }
100
-
101
- ::-webkit-meter-suboptimum-value {
102
- @include value-ok;
103
- }
104
-
105
- :-moz-meter-sub-optimum::-moz-meter-bar {
106
- @include value-ok;
107
- }
108
-
109
- ::-webkit-meter-even-less-good-value {
110
- @include value-bad;
111
- }
112
-
113
- :-moz-meter-sub-sub-optimum::-moz-meter-bar {
114
- @include value-bad;
115
- }
116
-
117
- progress {
118
- appearance: none;
119
- inline-size: 100%;
120
- block-size: 1em;
121
- }
122
-
123
- @supports selector(::-moz-progress-bar) {
124
- progress {
125
- @include background;
126
- }
127
- }
128
-
129
- ::-webkit-progress-bar {
130
- @include background;
131
- }
132
-
133
- ::-webkit-progress-value {
134
- @include value;
135
- @include value-neutral;
136
- }
137
-
138
- ::-moz-progress-bar {
139
- @include value;
140
- @include value-neutral;
141
- }
142
-
143
- :indeterminate::-webkit-progress-value {
144
- @include value-indeterminate;
145
- }
146
-
147
- :indeterminate::-moz-progress-bar {
148
- @include value-indeterminate;
149
- }
@@ -1,96 +0,0 @@
1
- @mixin track {
2
- block-size: 0.25em;
3
- inline-size: 100%;
4
- border-radius: var(--radius-full);
5
- background-color: var(--color-gray-8);
6
- print-color-adjust: exact;
7
-
8
- @media (prefers-color-scheme: dark) {
9
- background-color: var(--color-gray-6);
10
- }
11
- }
12
-
13
- @mixin thumb {
14
- height: 1.25em;
15
- width: 1.25em;
16
- border-radius: var(--radius-full);
17
- background-color: white;
18
- box-shadow: var(--shadow-s);
19
- border: var(--border-s) solid var(--color-outline);
20
- transition-property: border-color, box-shadow, transform;
21
- transition-duration: 200ms;
22
- transition-timing-function: ease;
23
- }
24
-
25
- @mixin thumb-active {
26
- border-color: var(--color-brand-5);
27
-
28
- &:active {
29
- @media screen and (resolution >= 2x) {
30
- transform: scale(0.9);
31
- }
32
- }
33
- }
34
-
35
- @mixin thumb-focus {
36
- border-color: var(--color-brand-5);
37
- box-shadow: 0 0 0 0.2em var(--color-brand-transparent);
38
- }
39
-
40
- input[type="range"] {
41
- font-size: 1rem;
42
- block-size: 1.25em;
43
- appearance: none;
44
- background: transparent;
45
- cursor: pointer;
46
-
47
- @media (pointer: coarse) {
48
- font-size: 1.5rem;
49
- }
50
-
51
- &:disabled {
52
- opacity: 0.5;
53
- cursor: not-allowed;
54
- }
55
-
56
- &:focus-visible {
57
- outline: 0;
58
-
59
- &::-webkit-slider-thumb {
60
- @include thumb-focus;
61
- }
62
-
63
- &::-moz-range-thumb {
64
- @include thumb-focus;
65
- }
66
- }
67
-
68
- &:enabled:active {
69
- &::-webkit-slider-thumb {
70
- @include thumb-active;
71
- }
72
-
73
- &::-moz-range-thumb {
74
- @include thumb-active;
75
- }
76
- }
77
-
78
- &::-webkit-slider-runnable-track {
79
- @include track;
80
- }
81
-
82
- &::-moz-range-track {
83
- @include track;
84
- }
85
-
86
- &::-webkit-slider-thumb {
87
- @include thumb;
88
-
89
- appearance: none;
90
- margin-block-start: -0.5em;
91
- }
92
-
93
- &::-moz-range-thumb {
94
- @include thumb;
95
- }
96
- }
@@ -1,82 +0,0 @@
1
- @use "./text";
2
-
3
- table {
4
- --table-bg-odd: var(--color-body-alt);
5
- --table-bg-even: var(--color-body);
6
- --table-vertical-border: var(--border-s);
7
-
8
- background-color: var(--color-body-alt);
9
- border-collapse: separate;
10
- border-spacing: 0;
11
- font-size: var(--font-size-m);
12
- border: var(--border-s) solid var(--color-outline);
13
- border-radius: var(--radius-s);
14
- color: var(--color-body-text);
15
-
16
- &.subtle {
17
- --table-bg-odd: transparent;
18
- --table-bg-even: transparent;
19
- --table-vertical-border: 0;
20
-
21
- border: 0;
22
- }
23
-
24
- &.dense :is(th, td) {
25
- padding: var(--space-3xs) var(--space-2xs);
26
- }
27
-
28
- &.sparse :is(th, td) {
29
- padding: var(--space-xs) var(--space-s);
30
- }
31
- }
32
-
33
- caption {
34
- @extend %h5;
35
-
36
- text-align: unset;
37
- margin: 0 0 var(--space-2xs);
38
- }
39
-
40
- th,
41
- td {
42
- padding: var(--space-2xs) var(--space-xs);
43
- }
44
-
45
- th,
46
- tfoot td {
47
- font-weight: var(--font-weight-bold);
48
- text-align: center;
49
- }
50
-
51
- th {
52
- border-block-end: var(--border-m) solid var(--color-outline);
53
- }
54
-
55
- tfoot td {
56
- border-block-start: var(--border-m) solid var(--color-outline);
57
- }
58
-
59
- td {
60
- text-align: unset;
61
- }
62
-
63
- :is(th, tfoot td):not(:last-of-type) {
64
- border-inline-end: var(--table-vertical-border) dashed var(--color-outline);
65
- }
66
-
67
- td:not(tfoot td, :last-of-type) {
68
- border-inline-end: var(--table-vertical-border) solid var(--color-outline);
69
- }
70
-
71
- tr:not(:last-of-type) td {
72
- border-block-end: var(--border-s) solid var(--color-outline);
73
- }
74
-
75
- tbody tr:nth-child(odd),
76
- tbody:has(tr:last-of-type:nth-child(even)) + tfoot tr {
77
- background-color: var(--table-bg-even);
78
- }
79
-
80
- tbody tr:nth-child(even) {
81
- background-color: var(--table-bg-odd);
82
- }