@stackific/md3 0.1.0 → 0.1.2

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 (113) hide show
  1. package/README.md +1 -43
  2. package/dist/md3.css +1 -1
  3. package/dist/md3.js +1 -621
  4. package/package.json +2 -5
  5. package/src/main.js +0 -5
  6. package/src/runtime/elements/dialogs.js +0 -72
  7. package/src/runtime/elements/fields.js +0 -181
  8. package/src/runtime/elements/menus.js +0 -42
  9. package/src/runtime/elements/pages.js +0 -7
  10. package/src/runtime/elements/progress.js +0 -35
  11. package/src/runtime/elements/sliders.js +0 -78
  12. package/src/runtime/elements/snackbars.js +0 -27
  13. package/src/runtime/helpers/ripples.js +0 -46
  14. package/src/runtime/md3.js +0 -141
  15. package/src/runtime/palette.js +0 -64
  16. package/src/runtime/settings/theme.js +0 -194
  17. package/src/runtime/utils.js +0 -165
  18. package/src/styles/_config.scss +0 -142
  19. package/src/styles/_mixins.scss +0 -80
  20. package/src/styles/elements/_badges.scss +0 -65
  21. package/src/styles/elements/_bars.scss +0 -83
  22. package/src/styles/elements/_buttons.scss +0 -119
  23. package/src/styles/elements/_cards.scss +0 -32
  24. package/src/styles/elements/_chips.scss +0 -46
  25. package/src/styles/elements/_dialogs.scss +0 -143
  26. package/src/styles/elements/_dividers.scss +0 -46
  27. package/src/styles/elements/_expansions.scss +0 -19
  28. package/src/styles/elements/_fields.scss +0 -458
  29. package/src/styles/elements/_grids.scss +0 -35
  30. package/src/styles/elements/_icons.scss +0 -70
  31. package/src/styles/elements/_layouts.scss +0 -24
  32. package/src/styles/elements/_lists.scss +0 -76
  33. package/src/styles/elements/_main-layouts.scss +0 -45
  34. package/src/styles/elements/_media.scss +0 -104
  35. package/src/styles/elements/_menus.scss +0 -289
  36. package/src/styles/elements/_navigations.scss +0 -450
  37. package/src/styles/elements/_overlays.scss +0 -34
  38. package/src/styles/elements/_pages.scss +0 -28
  39. package/src/styles/elements/_progress.scss +0 -141
  40. package/src/styles/elements/_selections.scss +0 -248
  41. package/src/styles/elements/_shapes.scss +0 -151
  42. package/src/styles/elements/_sliders.scss +0 -336
  43. package/src/styles/elements/_snackbars.scss +0 -44
  44. package/src/styles/elements/_tables.scss +0 -67
  45. package/src/styles/elements/_tabs.scss +0 -49
  46. package/src/styles/elements/_tooltips.scss +0 -125
  47. package/src/styles/helpers/_alignments.scss +0 -29
  48. package/src/styles/helpers/_blurs.scss +0 -26
  49. package/src/styles/helpers/_colors.scss +0 -39
  50. package/src/styles/helpers/_directions.scss +0 -30
  51. package/src/styles/helpers/_elevates.scss +0 -20
  52. package/src/styles/helpers/_forms.scss +0 -76
  53. package/src/styles/helpers/_margins.scss +0 -39
  54. package/src/styles/helpers/_opacities.scss +0 -18
  55. package/src/styles/helpers/_paddings.scss +0 -35
  56. package/src/styles/helpers/_positions.scss +0 -44
  57. package/src/styles/helpers/_responsive.scss +0 -24
  58. package/src/styles/helpers/_ripples.scss +0 -40
  59. package/src/styles/helpers/_scrolls.scss +0 -7
  60. package/src/styles/helpers/_shadows.scss +0 -22
  61. package/src/styles/helpers/_sizes.scss +0 -34
  62. package/src/styles/helpers/_spaces.scss +0 -22
  63. package/src/styles/helpers/_typography.scss +0 -132
  64. package/src/styles/helpers/_waves.scss +0 -52
  65. package/src/styles/helpers/_zoom.scss +0 -18
  66. package/src/styles/md3.scss +0 -61
  67. package/src/styles/settings/_fonts.scss +0 -42
  68. package/src/styles/settings/_globals.scss +0 -104
  69. package/src/styles/settings/_reset.scss +0 -82
  70. package/src/styles/settings/_theme.scss +0 -126
  71. package/src/styles/settings/_themes.scss +0 -1525
  72. /package/dist/{shapes → assets}/arch.svg +0 -0
  73. /package/dist/{shapes → assets}/arrow.svg +0 -0
  74. /package/dist/{shapes → assets}/boom.svg +0 -0
  75. /package/dist/{shapes → assets}/bun.svg +0 -0
  76. /package/dist/{shapes → assets}/burst.svg +0 -0
  77. /package/dist/{shapes → assets}/circle.svg +0 -0
  78. /package/dist/{shapes → assets}/clamshell.svg +0 -0
  79. /package/dist/{shapes → assets}/diamond.svg +0 -0
  80. /package/dist/{shapes → assets}/fan.svg +0 -0
  81. /package/dist/{shapes → assets}/flower.svg +0 -0
  82. /package/dist/{shapes → assets}/gem.svg +0 -0
  83. /package/dist/{shapes → assets}/ghost-ish.svg +0 -0
  84. /package/dist/{shapes → assets}/heart.svg +0 -0
  85. /package/dist/{shapes → assets}/leaf-clover4.svg +0 -0
  86. /package/dist/{shapes → assets}/leaf-clover8.svg +0 -0
  87. /package/dist/{shapes → assets}/loading-indicator.svg +0 -0
  88. /package/dist/{fonts → assets}/material-symbols-outlined.woff2 +0 -0
  89. /package/dist/{fonts → assets}/material-symbols-rounded.woff2 +0 -0
  90. /package/dist/{fonts → assets}/material-symbols-sharp.woff2 +0 -0
  91. /package/dist/{fonts → assets}/material-symbols-subset.woff2 +0 -0
  92. /package/dist/{shapes → assets}/oval.svg +0 -0
  93. /package/dist/{shapes → assets}/pentagon.svg +0 -0
  94. /package/dist/{shapes → assets}/pill.svg +0 -0
  95. /package/dist/{shapes → assets}/pixel-circle.svg +0 -0
  96. /package/dist/{shapes → assets}/pixel-triangle.svg +0 -0
  97. /package/dist/{shapes → assets}/puffy-diamond.svg +0 -0
  98. /package/dist/{shapes → assets}/puffy.svg +0 -0
  99. /package/dist/{shapes → assets}/semicircle.svg +0 -0
  100. /package/dist/{shapes → assets}/sided-cookie12.svg +0 -0
  101. /package/dist/{shapes → assets}/sided-cookie4.svg +0 -0
  102. /package/dist/{shapes → assets}/sided-cookie6.svg +0 -0
  103. /package/dist/{shapes → assets}/sided-cookie7.svg +0 -0
  104. /package/dist/{shapes → assets}/sided-cookie9.svg +0 -0
  105. /package/dist/{shapes → assets}/slanted.svg +0 -0
  106. /package/dist/{shapes → assets}/soft-boom.svg +0 -0
  107. /package/dist/{shapes → assets}/soft-burst.svg +0 -0
  108. /package/dist/{shapes → assets}/square.svg +0 -0
  109. /package/dist/{shapes → assets}/sunny.svg +0 -0
  110. /package/dist/{shapes → assets}/triangle.svg +0 -0
  111. /package/dist/{shapes → assets}/very-sunny.svg +0 -0
  112. /package/dist/{shapes → assets}/wavy-circle.svg +0 -0
  113. /package/dist/{shapes → assets}/wavy.svg +0 -0
@@ -1,458 +0,0 @@
1
- // .field — form-input wrapper. By far the largest single component
2
- // (handles size, fill, border, round, prefix/suffix, label, invalid, helper).
3
- // Reuse opportunities: size scale, side-icon positioning, focus/disabled states.
4
-
5
- @use "sass:list";
6
- @use "sass:map";
7
-
8
- .field {
9
- --_input: 3rem;
10
- --_start: 1.2rem;
11
- --_middle: calc(var(--_input, 0) / 2);
12
- border-radius: 0.25rem 0.25rem 0 0;
13
- min-block-size: var(--_input);
14
- display: flex;
15
- flex-direction: column;
16
-
17
- &.fill {
18
- --_background: var(--surface-variant);
19
- background-color: unset !important;
20
- color: unset !important;
21
-
22
- > :is(input, select, textarea) {
23
- background-color: var(--_background);
24
- z-index: 0;
25
- }
26
- }
27
-
28
- &.border {
29
- border-radius: 0.25rem;
30
- }
31
-
32
- &.invalid > i {
33
- color: var(--error);
34
- }
35
-
36
- > progress.circle {
37
- border-width: 0.1875rem;
38
- }
39
- }
40
-
41
- $-field-sizes: (
42
- "small": (input: 2.5rem, start: 1rem),
43
- "large": (input: 3.5rem, start: 1.4rem),
44
- "extra": (input: 4rem, start: 1.6rem),
45
- );
46
-
47
- @each $name, $values in $-field-sizes {
48
- .field.#{$name} {
49
- --_input: #{map.get($values, input)};
50
- --_start: #{map.get($values, start)};
51
- }
52
- }
53
-
54
- $-field-rounds: (
55
- "small": 1.25rem,
56
- "default": 1.5rem,
57
- "large": 1.75rem,
58
- "extra": 2rem,
59
- );
60
-
61
- @each $name, $value in $-field-rounds {
62
- @if $name == "default" {
63
- .field[class*="round"] {
64
- border-radius: $value;
65
- }
66
- } @else {
67
- .field[class*="round"].#{$name} {
68
- border-radius: $value;
69
- }
70
- }
71
- }
72
-
73
- // icon — left/right side affordance
74
- .field {
75
- > :is(i, img, svg, progress.circle, a) {
76
- position: absolute;
77
- inset: calc((var(--_input, 0) / 2) - 0.75rem) auto auto auto;
78
- cursor: pointer;
79
- z-index: 10;
80
- inline-size: 1.5rem;
81
- block-size: 1.5rem;
82
- margin: auto 0;
83
- pointer-events: none;
84
- }
85
-
86
- > :is(a, .front) {
87
- pointer-events: all !important;
88
- }
89
-
90
- > a > :is(i, img, svg, progress.circle, a) {
91
- inline-size: 1.5rem;
92
- block-size: 1.5rem;
93
- }
94
- }
95
-
96
- .field > :is(i, img, svg, progress.circle, a),
97
- [dir="rtl"] .field > :is(i, img, svg, progress.circle, a):first-child {
98
- inset: calc(var(--_middle, 0) - 0.75rem) 1rem auto auto;
99
- }
100
-
101
- .field > :is(i, img, svg, progress.circle, a):first-child,
102
- [dir="rtl"] .field > :is(i, img, svg, progress.circle, a) {
103
- inset: calc(var(--_middle, 0) - 0.75rem) auto auto 1rem;
104
- }
105
-
106
- // input, textarea, select
107
- .field > :is(input, textarea, select) {
108
- all: unset;
109
- position: relative;
110
- display: flex;
111
- align-items: center;
112
- box-sizing: border-box;
113
- border-radius: inherit;
114
- border: 0.0625rem solid transparent;
115
- padding: 0 0.9375rem;
116
- font-family: inherit;
117
- font-size: 1rem;
118
- min-block-size: var(--_input);
119
- outline: none;
120
- z-index: 1;
121
- background: none;
122
- resize: none;
123
- text-align: start;
124
- cursor: text;
125
-
126
- &:focus {
127
- border: 0.125rem solid transparent;
128
- padding-inline: 0.875rem;
129
- }
130
- }
131
-
132
- input::-webkit-date-and-time-value {
133
- text-align: start;
134
- }
135
-
136
- :is(input, select, textarea):is(:-webkit-autofill, :autofill) {
137
- -webkit-background-clip: text;
138
- -webkit-text-fill-color: var(--on-surface);
139
- }
140
-
141
- .field > textarea:not([rows]) {
142
- field-sizing: content;
143
- max-block-size: 12rem;
144
- }
145
-
146
- input[type="file"],
147
- input[type="color"],
148
- :not(.field) > input:is([type^="date"], [type^="time"], [type="month"], [type="week"]),
149
- input::-webkit-calendar-picker-indicator {
150
- opacity: 0;
151
- position: absolute;
152
- inset: 0;
153
- inline-size: 100%;
154
- block-size: 100%;
155
- margin: 0;
156
- padding: 0;
157
- border: 0;
158
- outline: 0;
159
- z-index: 2 !important;
160
- }
161
-
162
- @media (pointer: fine) {
163
- .field > input::-webkit-calendar-picker-indicator {
164
- z-index: -1 !important;
165
- }
166
- }
167
-
168
- input::-webkit-search-decoration,
169
- input::-webkit-search-cancel-button,
170
- input::-webkit-search-results-button,
171
- input::-webkit-search-results-decoration,
172
- input::-webkit-inner-spin-button,
173
- input::-webkit-outer-spin-button {
174
- display: none;
175
- }
176
-
177
- input[type="number"] {
178
- appearance: textfield;
179
- }
180
-
181
- .field.border > :is(input, textarea, select) {
182
- border-color: var(--outline);
183
-
184
- &:focus {
185
- border-color: var(--primary);
186
- }
187
- }
188
-
189
- .field[class*="round"] > :is(input, textarea, select) {
190
- padding-inline: 1.4376rem;
191
-
192
- &:focus {
193
- padding-inline: 1.375rem;
194
- }
195
- }
196
-
197
- // prefix/suffix padding tweaks
198
- $-field-edges: (
199
- "prefix": (padding-inline-start, margin-inline-start),
200
- "suffix": (padding-inline-end, margin-inline-end),
201
- );
202
-
203
- @each $side, $props in $-field-edges {
204
- $padded: list.nth($props, 1);
205
- $margin: list.nth($props, 2);
206
-
207
- .field.#{$side} > :is(input, textarea, select) {
208
- #{$padded}: 2.9375rem;
209
-
210
- &:focus {
211
- #{$padded}: 2.875rem;
212
- }
213
- }
214
-
215
- .field.#{$side} > .slider {
216
- #{$margin}: 3.5rem;
217
- }
218
- }
219
-
220
- .field:not(.border, [class*="round"]) > :is(input, textarea, select) {
221
- border-block-end-color: var(--outline);
222
-
223
- &:focus {
224
- border-block-end-color: var(--primary);
225
- }
226
- }
227
-
228
- .field[class*="round"]:not(.border, .fill) > :is(input, textarea, select),
229
- .field[class*="round"]:not(.border) > :is(input, textarea, select):focus {
230
- box-shadow: var(--elevate1);
231
- }
232
-
233
- .field[class*="round"]:not(.border, .fill) > :is(input, textarea, select):focus {
234
- box-shadow: var(--elevate2);
235
- }
236
-
237
- .field.invalid:not(.border, [class*="round"]) > :is(input, textarea, select),
238
- .field.invalid:not(.border, [class*="round"]) > :is(input, textarea, select):focus {
239
- border-block-end-color: var(--error);
240
- }
241
-
242
- .field.invalid.border > :is(input, textarea, select),
243
- .field.invalid.border > :is(input, textarea, select):focus {
244
- border-color: var(--error);
245
- }
246
-
247
- .field:has(> :disabled) {
248
- opacity: 0.5;
249
- cursor: not-allowed;
250
- }
251
-
252
- .field > :disabled {
253
- cursor: not-allowed;
254
- }
255
-
256
- .field > select {
257
- user-select: none;
258
- }
259
-
260
- @-moz-document url-prefix() {
261
- .field > select:focus {
262
- background-color: var(--surface);
263
- }
264
-
265
- .field.fill > select:focus {
266
- background-color: var(--surface-variant);
267
- }
268
-
269
- .field > select:focus + label {
270
- z-index: 1;
271
- }
272
- }
273
-
274
- .field > select > option {
275
- background-color: var(--surface);
276
- }
277
-
278
- .field > :is(input, select) {
279
- padding-block-start: 1rem;
280
- }
281
-
282
- .field:not(.label) > :is(input, select),
283
- .field.border:not(.fill) > :is(input, select) {
284
- padding-block-start: 0;
285
- }
286
-
287
- .field > textarea {
288
- padding-block-start: var(--_start) !important;
289
-
290
- &:focus {
291
- padding-block-start: calc(var(--_start, 0) - 0.01rem) !important;
292
- }
293
- }
294
-
295
- .field:not(.label) > textarea,
296
- .field.border:not(.fill) > textarea {
297
- padding-block-start: calc(var(--_start, 0) - 0.5rem) !important;
298
- }
299
-
300
- .field:not(.label) > textarea:focus,
301
- .field.border:not(.fill) > textarea:focus {
302
- padding-block-start: calc(var(--_start, 0) - 0.51rem) !important;
303
- }
304
-
305
- // label
306
- .field.label > label {
307
- --_start: 1rem;
308
- position: absolute;
309
- inset: -0.5rem 0.9375rem 0 var(--_start);
310
- display: flex;
311
- block-size: calc(var(--_input, 0) + 1rem);
312
- line-height: calc(var(--_input, 0) + 1rem);
313
- font-size: 1rem;
314
- transition: all 0.2s;
315
- gap: 0.25rem;
316
- white-space: nowrap;
317
- pointer-events: none;
318
- }
319
-
320
- [dir="rtl"] .field.label > label {
321
- inset: -0.5rem calc(var(--_start) - 0.0625rem) 0 0.9375rem;
322
- }
323
-
324
- .field.label[class*="round"] > label {
325
- inset: -0.5rem 1.9375rem 0 var(--_start);
326
- }
327
-
328
- [dir="rtl"] .field.label[class*="round"] > label {
329
- inset: -0.5rem var(--_start) 0 1.9375rem;
330
- }
331
-
332
- .field.label.border.prefix:not(.fill) > :is(label.active, :focus + label, [placeholder]:not(:placeholder-shown) + label, select + label) {
333
- --_start: 1rem;
334
- }
335
-
336
- .field.label[class*="round"] > label,
337
- .field.label.border.prefix[class*="round"]:not(.fill) > :is(label.active, :focus + label, [placeholder]:not(:placeholder-shown) + label, select + label) {
338
- --_start: 1.5rem;
339
- }
340
-
341
- .field.label.prefix > label {
342
- --_start: 3rem;
343
- }
344
-
345
- .field.label > :is(label.active, :focus + label, [placeholder]:not(:placeholder-shown) + label, select + label) {
346
- block-size: 2.5rem;
347
- line-height: 2.5rem;
348
- font-size: 0.75rem;
349
- }
350
-
351
- .field.label.border:not(.fill) > :is(label.active, :focus + label, [placeholder]:not(:placeholder-shown) + label, select + label) {
352
- block-size: 1rem;
353
- line-height: 1rem;
354
- }
355
-
356
- .field.label.border:not(.fill) > label::after {
357
- content: "";
358
- display: block;
359
- margin: 0.5rem 0 0 0;
360
- border-block-start: 0.0625rem solid var(--outline);
361
- block-size: 1rem;
362
- transition: none;
363
- flex: auto;
364
- }
365
-
366
- .field.label.border:not(.fill) > :focus + label::after {
367
- border-block-start: 0.125rem solid var(--primary);
368
- }
369
-
370
- .field.label.border:not(.fill) > :is(input, textarea):is(:focus, [placeholder]:not(:placeholder-shown), .active),
371
- .field.label.border:not(.fill) > select {
372
- clip-path: polygon(-2% -2%, 0.75rem -2%, 0.75rem 0.5rem, calc(100% - 1rem) 0.5rem, calc(100% - 1rem) -2%, 102% -2%, 102% 102%, -2% 102%);
373
- }
374
-
375
- [dir="rtl"] .field.label.border:not(.fill) > :is(input, textarea):is(:focus, [placeholder]:not(:placeholder-shown), .active),
376
- [dir="rtl"] .field.label.border:not(.fill) > select {
377
- clip-path: polygon(-2% -2%, 1rem -2%, 1rem 0.5rem, calc(100% - 0.75rem) 0.5rem, calc(100% - 0.75rem) -2%, 102% -2%, 102% 102%, -2% 102%);
378
- }
379
-
380
- .field.label.border[class*="round"]:not(.fill) > :is(input, textarea):is(:focus, [placeholder]:not(:placeholder-shown), .active),
381
- .field.label.border[class*="round"]:not(.fill) > select {
382
- clip-path: polygon(-2% -2%, 1.25rem -2%, 1.25rem 0.5rem, calc(100% - 2rem) 0.5rem, calc(100% - 2rem) -2%, 102% -2%, 102% 102%, -2% 102%);
383
- }
384
-
385
- [dir="rtl"] .field.label.border[class*="round"]:not(.fill) > :is(input, textarea):is(:focus, [placeholder]:not(:placeholder-shown), .active),
386
- [dir="rtl"] .field.label.border[class*="round"]:not(.fill) > select {
387
- clip-path: polygon(-2% -2%, 2rem -2%, 2rem 0.5rem, calc(100% - 1.25rem) 0.5rem, calc(100% - 1.25rem) -2%, 102% -2%, 102% 102%, -2% 102%);
388
- }
389
-
390
- .field.label > :focus + label {
391
- color: var(--primary);
392
- }
393
-
394
- .field.label.invalid > label,
395
- .field.label.invalid > label::after {
396
- color: var(--error) !important;
397
- border-color: var(--error) !important;
398
- }
399
-
400
- .field.label > label > a {
401
- block-size: inherit;
402
- line-height: inherit;
403
- inline-size: 1rem;
404
-
405
- > :is(i, img, svg) {
406
- block-size: 1rem;
407
- line-height: 1rem;
408
- inline-size: 1rem;
409
- font-size: 1rem;
410
- }
411
- }
412
-
413
- // helper output
414
- .field > output {
415
- display: inline-block;
416
- font-size: 0.75rem;
417
- background: none !important;
418
- padding: 0.25rem 1rem;
419
- line-height: 1.25rem;
420
- align-self: start;
421
-
422
- &.invalid {
423
- color: var(--error) !important;
424
- }
425
- }
426
-
427
- .field[class*="round"] > output {
428
- padding: 0.25rem 1.5rem;
429
- }
430
-
431
- .field.invalid > output:not(.invalid),
432
- .field:not(.invalid) > output.invalid {
433
- display: none;
434
- }
435
-
436
- .field.invalid > output.invalid ~ menu,
437
- .field:not(.invalid) > output:not(.invalid) ~ menu {
438
- inset: auto auto 1.75rem 0;
439
- }
440
-
441
- table td > .field {
442
- margin: 0;
443
- }
444
-
445
- fieldset {
446
- border-radius: 0.25rem;
447
- padding: 1rem;
448
- border: 0.0625rem solid var(--outline-variant);
449
-
450
- > legend {
451
- margin: 0 -0.25rem;
452
- padding: 0 0.25rem;
453
-
454
- + * {
455
- margin-block-start: 0 !important;
456
- }
457
- }
458
- }
@@ -1,35 +0,0 @@
1
- // 12-column grid with .s1-12 / .m1-12 / .l1-12 span classes.
2
- // Per-breakpoint sets emitted via a single @each over $-grid-breakpoints.
3
-
4
- .grid {
5
- --_gap: 1rem;
6
- display: grid;
7
- grid-template-columns: repeat(12, 1fr);
8
- gap: var(--_gap);
9
- block-size: auto;
10
-
11
- > * {
12
- margin: 0;
13
- }
14
-
15
- &.no-space { --_gap: 0rem; }
16
- &.medium-space { --_gap: 1.5rem; }
17
- &.large-space { --_gap: 2rem; }
18
- }
19
-
20
- @for $i from 1 through 12 {
21
- .s#{$i} { grid-area: auto/span $i; }
22
- }
23
-
24
- $-grid-breakpoints: (
25
- "m": 601px,
26
- "l": 993px,
27
- );
28
-
29
- @each $prefix, $min in $-grid-breakpoints {
30
- @media only screen and (min-width: #{$min}) {
31
- @for $i from 1 through 12 {
32
- .#{$prefix}#{$i} { grid-area: auto/span $i; }
33
- }
34
- }
35
- }
@@ -1,70 +0,0 @@
1
- // Material-Symbols glyph base + size variants + filled variation axis.
2
-
3
- i,
4
- :is(.checkbox, .radio, .switch) > span::before,
5
- :is(.checkbox, .radio, .switch) > span > i {
6
- --_size: 1.5rem;
7
- font-family: var(--font-icon);
8
- font-weight: normal;
9
- font-style: normal;
10
- font-size: var(--_size);
11
- letter-spacing: normal;
12
- text-transform: none;
13
- display: inline-flex;
14
- align-items: center;
15
- justify-content: center;
16
- white-space: nowrap;
17
- word-wrap: normal;
18
- direction: ltr;
19
- font-feature-settings: "liga";
20
- -webkit-font-smoothing: antialiased;
21
- vertical-align: middle;
22
- text-align: center;
23
- overflow: hidden;
24
- inline-size: var(--_size);
25
- min-inline-size: var(--_size);
26
- block-size: var(--_size);
27
- min-block-size: var(--_size);
28
- box-sizing: content-box;
29
- line-height: normal;
30
- border-radius: 0;
31
- }
32
-
33
- i:has(.badge) { overflow: unset; }
34
-
35
- $-icon-sizes: (
36
- "tiny": 1rem,
37
- "small": 1.25rem,
38
- "medium": 1.5rem,
39
- "large": 1.75rem,
40
- "extra": 2rem,
41
- );
42
-
43
- @each $name, $value in $-icon-sizes {
44
- i.#{$name} { --_size: #{$value}; }
45
- }
46
-
47
- .chip > i { --_size: 1.25rem; }
48
-
49
- i.fill,
50
- a.active > i,
51
- button.active > i {
52
- font-variation-settings: "FILL" 1;
53
- }
54
-
55
- i > :is(img, svg) {
56
- inline-size: 100%;
57
- block-size: 100%;
58
- background-size: 100%;
59
- border-radius: inherit;
60
- position: absolute;
61
- inset: 0 auto auto 0;
62
- padding: inherit;
63
- }
64
-
65
- i[class*="fa-"] {
66
- font-size: calc(var(--_size, 0) * 0.85);
67
- line-height: normal;
68
- block-size: auto;
69
- min-block-size: auto;
70
- }
@@ -1,24 +0,0 @@
1
- // .absolute / .fixed positioning bundles with size variants.
2
-
3
- .absolute { position: absolute; }
4
- .fixed { position: fixed; }
5
-
6
- :is(.absolute, .fixed).left.right {
7
- inline-size: auto;
8
- }
9
-
10
- $-layout-sizes: (
11
- "small": 20rem,
12
- "medium": 28rem,
13
- "large": 44rem,
14
- );
15
-
16
- @each $name, $value in $-layout-sizes {
17
- :is(.absolute, .fixed).left.right.#{$name} {
18
- block-size: $value;
19
- }
20
-
21
- :is(.absolute, .fixed).top.bottom.#{$name} {
22
- inline-size: $value;
23
- }
24
- }
@@ -1,76 +0,0 @@
1
- // .list — vertical row container with spacing tiers and optional borders.
2
-
3
- .list {
4
- display: flex;
5
- flex-direction: column;
6
- padding: 0;
7
- margin: 0;
8
- flex: 1;
9
-
10
- > li,
11
- > li > details > summary,
12
- > li > a:only-child {
13
- all: unset;
14
- box-sizing: border-box;
15
- position: relative;
16
- display: flex;
17
- align-items: center;
18
- align-self: normal;
19
- text-align: start;
20
- justify-content: flex-start;
21
- white-space: nowrap;
22
- gap: 1rem;
23
- min-block-size: 3.5rem;
24
- padding: 0.5rem 1rem;
25
- cursor: pointer;
26
- flex: 1;
27
- }
28
-
29
- > li:has(ul, ol, details[open], a:only-child) {
30
- padding: 0;
31
- }
32
-
33
- > li > .list {
34
- padding: 0 0 0 1rem;
35
- }
36
-
37
- > li > *,
38
- > li > a:only-child > * {
39
- margin: 0;
40
- }
41
-
42
- > li > :is(details, .max),
43
- > li > a:only-child > .max,
44
- > li > details > summary > .max {
45
- flex: 1;
46
- }
47
-
48
- &.border > li:not(:last-child)::before,
49
- &.border > li > details[open] > summary::before {
50
- content: "";
51
- position: absolute;
52
- background-color: var(--outline-variant);
53
- inset: auto 0 0 0;
54
- block-size: 0.0625rem;
55
- inline-size: auto;
56
- }
57
-
58
- > li:focus-visible,
59
- > li > a:only-child:focus-visible {
60
- outline: 0.125rem solid var(--primary);
61
- outline-offset: -0.25rem;
62
- }
63
- }
64
-
65
- $-list-spacing: (
66
- "no": 2.5rem,
67
- "medium": 4.5rem,
68
- "large": 5.5rem,
69
- );
70
-
71
- @each $name, $value in $-list-spacing {
72
- .list.#{$name}-space > li,
73
- .list.#{$name}-space > li > details > summary {
74
- min-block-size: $value;
75
- }
76
- }
@@ -1,45 +0,0 @@
1
- // Page-level grid that wires <header>, <main>, <footer>, and edge <nav> slots.
2
-
3
- :has(> main) {
4
- display: grid;
5
- grid-template-columns: auto minmax(0, 1fr) auto;
6
- grid-template-rows: auto auto minmax(0, 1fr) auto auto;
7
- grid-template-areas:
8
- "left top right"
9
- "left header right"
10
- "left main right"
11
- "left footer right"
12
- "left bottom right";
13
- min-block-size: 100dvh;
14
- box-sizing: border-box;
15
- background-color: var(--surface);
16
- }
17
-
18
- $-grid-areas: (
19
- "nav.left": left,
20
- "nav.right": right,
21
- "nav.top": top,
22
- "nav.bottom": bottom,
23
- "header": header,
24
- "footer": footer,
25
- );
26
-
27
- @each $selector, $area in $-grid-areas {
28
- #{$selector} {
29
- grid-area: $area;
30
- }
31
- }
32
-
33
- main {
34
- --_padding: 0.5rem;
35
- grid-area: main;
36
- padding: var(--_padding);
37
- overflow: clip;
38
- }
39
-
40
- aside {
41
- z-index: 1;
42
-
43
- &:not(.fixed, .absolute).right { float: right; }
44
- &:not(.fixed, .absolute).left { float: left; }
45
- }