fractalstyler2 0.4.0 → 0.7.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 (87) hide show
  1. package/README.md +114 -95
  2. package/dist/cli.js +105 -25
  3. package/dist/components/Accordion.svelte +44 -0
  4. package/dist/components/Accordion.svelte.d.ts +23 -0
  5. package/dist/components/AccordionItem.svelte +44 -0
  6. package/dist/components/AccordionItem.svelte.d.ts +21 -0
  7. package/dist/components/AppShell.svelte +86 -0
  8. package/dist/components/AppShell.svelte.d.ts +39 -0
  9. package/dist/components/ColorPicker.svelte +38 -0
  10. package/dist/components/ColorPicker.svelte.d.ts +6 -0
  11. package/dist/components/Hero.svelte +14 -0
  12. package/dist/components/Hero.svelte.d.ts +9 -0
  13. package/dist/components/LayoutPicker.svelte +34 -0
  14. package/dist/components/LayoutPicker.svelte.d.ts +6 -0
  15. package/dist/components/MotionPicker.svelte +34 -0
  16. package/dist/components/MotionPicker.svelte.d.ts +6 -0
  17. package/dist/components/PageShell.svelte +14 -0
  18. package/dist/components/PageShell.svelte.d.ts +9 -0
  19. package/dist/components/PageSplit.svelte +26 -0
  20. package/dist/components/PageSplit.svelte.d.ts +18 -0
  21. package/dist/components/ShapePicker.svelte +37 -0
  22. package/dist/components/ShapePicker.svelte.d.ts +6 -0
  23. package/dist/css/fractalstyler.css +10643 -0
  24. package/dist/css/fractalstyler.min.css +2 -0
  25. package/dist/index.d.ts +18 -6
  26. package/dist/index.js +30 -12
  27. package/dist/mcp/schemas/compile_fractals.json +3 -3
  28. package/dist/mcp/schemas/css_to_fractals.json +1 -1
  29. package/dist/mcp/schemas/generate_component.json +2 -2
  30. package/dist/mcp/schemas/instructions.md +41 -14
  31. package/dist/mcp/schemas/list_fractals.json +9 -7
  32. package/dist/mcp/schemas/validate_recipe.json +2 -2
  33. package/dist/mcp/server.d.ts +1 -1
  34. package/dist/mcp/server.js +334 -237
  35. package/dist/presets.core.d.ts +42 -0
  36. package/dist/presets.core.js +190 -0
  37. package/dist/presets.svelte.d.ts +6 -0
  38. package/dist/presets.svelte.js +21 -0
  39. package/dist/styles/_00_presets.sass +111 -0
  40. package/dist/styles/_00_themes.sass +1061 -0
  41. package/dist/styles/_00_tokens.sass +57 -17
  42. package/dist/styles/_01_config.sass +77 -70
  43. package/dist/styles/_02_dimensions.sass +174 -0
  44. package/dist/styles/_03_containers.sass +105 -0
  45. package/dist/styles/_04_layouts.sass +100 -0
  46. package/dist/styles/_05_shells.sass +374 -0
  47. package/dist/styles/_06_visuals.sass +236 -0
  48. package/dist/styles/_07_interactions.sass +112 -0
  49. package/dist/styles/_08_own.sass +4 -0
  50. package/dist/styles/canonical-markups.md +160 -0
  51. package/dist/styles/index.sass +11 -18
  52. package/dist/themes.d.ts +7 -0
  53. package/dist/themes.js +45 -0
  54. package/dist/version.d.ts +1 -0
  55. package/dist/version.js +2 -0
  56. package/package.json +26 -15
  57. package/plugin.json +11 -10
  58. package/registry.json +2002 -0
  59. package/skills/fractal-styler/SKILL.md +137 -50
  60. package/skills/fractal-styler/references/fractals.md +416 -28
  61. package/skills/fractal-styler/references/tokens.md +110 -36
  62. package/dist/styles/_02_fonts.sass +0 -13
  63. package/dist/styles/_03_responsive.sass +0 -31
  64. package/dist/styles/_04_atoms.sass +0 -155
  65. package/dist/styles/_05_molecules.sass +0 -97
  66. package/dist/styles/_06_recipes.sass +0 -189
  67. package/dist/styles/_07_base.sass +0 -44
  68. package/dist/styles/_08_blocks.sass +0 -433
  69. package/dist/styles/_09_utilities.sass +0 -208
  70. package/dist/styles/_10_layouts.sass +0 -373
  71. package/dist/styles/_11_own.sass +0 -21
  72. package/dist/styles/_fractals.sass +0 -14
  73. package/skills/style-migration/SKILL.md +0 -45
  74. package/templates/_00_tokens.sass +0 -136
  75. package/templates/_01_config.sass +0 -66
  76. package/templates/_02_fonts.sass +0 -13
  77. package/templates/_03_responsive.sass +0 -31
  78. package/templates/_04_atoms.sass +0 -155
  79. package/templates/_05_molecules.sass +0 -97
  80. package/templates/_06_recipes.sass +0 -189
  81. package/templates/_07_base.sass +0 -44
  82. package/templates/_08_blocks.sass +0 -433
  83. package/templates/_09_utilities.sass +0 -207
  84. package/templates/_10_layouts.sass +0 -373
  85. package/templates/_11_own.sass +0 -21
  86. package/templates/_fractals.sass +0 -14
  87. package/templates/index.sass +0 -18
@@ -1,28 +1,416 @@
1
- # Fractals Catalog Reference
2
-
3
- ## Atom Fractals (Single Decisions)
4
-
5
- * **Layout Flow**: `+box(x, y)` (flex col), `+row(x, y)` (flex row), `+wrap`, `+grid(cols)`, `+auto-grid(min, gap)`, `+center` (grid center).
6
- * **Spacing**: `+gap(v)`, `+pad(v)`, `+px(v)`, `+py(v)`, `+mx-auto`, `+my-auto`.
7
- * **Sizing**: `+w(v)`, `+h(v)`, `+full`, `+square(v)`, `+grow(n)`, `+shrink(n)`, `+min0`.
8
- * **Surfaces**: `+bg(role)`, `+ink(role)`, `+border(side, color)`, `+radius(v)`, `+shadow(v)`.
9
- * **Position**: `+relative`, `+absolute(inset)`, `+sticky(top)`, `+fill`.
10
- * **Type**: `+type(v)`, `+weight(w)`, `+leading(lh)`, `+truncate`, `+clamp-lines(n)`.
11
- * **Motion**: `+transition(props, dur, ease)`, `+ring(color)`.
12
-
13
- ## Molecule Fractals (Compositions of Atoms)
14
-
15
- * **`+stack($gap: xs, $x: null)`**: Vertical flex column rhythm with uniform gap.
16
- * **`+cluster($gap: xs, $x: start, $y: center)`**: Wrapping flex row for tag clouds, chips, and button rows.
17
- * **`+center-column($max: 60ch, $pad: s)`**: Bounded reading column with max-width measure and auto margins.
18
- * **`+cover($min: 100vh, $pad: s)`**: Full-height container with a vertically centered focal child (`> .center`).
19
- * **`+frame($ratio: 16 / 9)`**: Fixed aspect-ratio container for media.
20
- * **`+reel($gap: xs)`**: Horizontal scroll-snap rail.
21
- * **`+with-sidebar($rail: 240px, $gap: s, $min: 60%)`**: Intrinsic sidebar + fluid main layout.
22
- * **`+surface($bg: surface, $pad: s, $radius: 12, $elevation: none)`**: The all-in-one material mixin.
23
- * **`+cols($map, $gap: s)`**: Responsive grid mapped across breakpoints, e.g. `+cols((base: 1, sm: 2, lg: 3), m)`.
24
-
25
- ## Responsive Utilities
26
- * `+at(sm | md | lg | xl)`: Mobile-first min-width media query.
27
- * `+until(sm | md | lg | xl)`: Max-width media query.
28
- * `+cq`, `+cq-at(width)`, `+cq-until(width)`: Container queries.
1
+ # Fractalstyler2 — Class Reference
2
+
3
+ GENERATED FILE — do not edit. Emitted by `scripts/update-registry.js` from the
4
+ parsed stylesheet. 250 classes across 89 tokens.
5
+
6
+ **The classes below are the entire public API.** The system defines no
7
+ authoring mixins and no SASS functions — `+stack`, `+surface`, `space()` and
8
+ friends do not exist. Compose in markup.
9
+
10
+ `*` marks a family: substitute a preset step (`3xs 2xs xs sm md lg xl 2xl 3xl`)
11
+ or a value from the literal ladder: `0, 1, 2, 4, 6, 8, 12`, then every
12
+ multiple of 8 — to 64px for gap/pad/marg and radius, to 512px for sizing.
13
+ Append `-mob` or `-desk` to bind a
14
+ class to one side of the 768px seam.
15
+
16
+ ---
17
+
18
+ ## L0 — Tokens
19
+
20
+ Raw values. Every token also exists as a class.
21
+
22
+ | Class | Applies | Source |
23
+ |:---|:---|:---|
24
+ | `.theme-light-default` | 22 colour tokens | `_00_themes.sass` |
25
+ | `.theme-himalaya-light` | 22 colour tokens | `_00_themes.sass` |
26
+ | `.theme-editorial-light` | 22 colour tokens | `_00_themes.sass` |
27
+ | `.theme-space-light` | 22 colour tokens | `_00_themes.sass` |
28
+ | `.theme-sun-light` | 22 colour tokens | `_00_themes.sass` |
29
+ | `.theme-monochrono-light` | 22 colour tokens | `_00_themes.sass` |
30
+ | `.theme-molly-light` | 22 colour tokens | `_00_themes.sass` |
31
+ | `.theme-malana-light` | 22 colour tokens | `_00_themes.sass` |
32
+ | `.theme-coresync-light` | 22 colour tokens | `_00_themes.sass` |
33
+ | `.theme-studio-light` | 22 colour tokens | `_00_themes.sass` |
34
+ | `.theme-matcha-light` | 22 colour tokens | `_00_themes.sass` |
35
+ | `.theme-sakura-light` | 22 colour tokens | `_00_themes.sass` |
36
+ | `.theme-nordic-frost-light` | 22 colour tokens | `_00_themes.sass` |
37
+ | `.theme-desert-dune-light` | 22 colour tokens | `_00_themes.sass` |
38
+ | `.theme-lavender-mist-light` | 22 colour tokens | `_00_themes.sass` |
39
+ | `.theme-botanical-light` | 22 colour tokens | `_00_themes.sass` |
40
+ | `.theme-clay-studio-light` | 22 colour tokens | `_00_themes.sass` |
41
+ | `.theme-solaris-light` | 22 colour tokens | `_00_themes.sass` |
42
+ | `.theme-cyberpunk-day-light` | 22 colour tokens | `_00_themes.sass` |
43
+ | `.theme-copper-patina-light` | 22 colour tokens | `_00_themes.sass` |
44
+ | `.theme-dracula-light` | 22 colour tokens | `_00_themes.sass` |
45
+ | `.theme-lagoona-dark` | 22 colour tokens | `_00_themes.sass` |
46
+ | `.theme-frozen-dark` | 22 colour tokens | `_00_themes.sass` |
47
+ | `.theme-night-dark` | 22 colour tokens | `_00_themes.sass` |
48
+ | `.theme-inkworm-dark` | 22 colour tokens | `_00_themes.sass` |
49
+ | `.theme-monochrono-dark` | 22 colour tokens | `_00_themes.sass` |
50
+ | `.theme-fouram-dark` | 22 colour tokens | `_00_themes.sass` |
51
+ | `.theme-wintercame-dark` | 22 colour tokens | `_00_themes.sass` |
52
+ | `.theme-sun-dark` | 22 colour tokens | `_00_themes.sass` |
53
+ | `.theme-console-dark` | 22 colour tokens | `_00_themes.sass` |
54
+ | `.theme-dracula-dark` | 22 colour tokens | `_00_themes.sass` |
55
+ | `.theme-catppuccin-mocha` | 22 colour tokens | `_00_themes.sass` |
56
+ | `.theme-nord-dark` | 22 colour tokens | `_00_themes.sass` |
57
+ | `.theme-gruvbox-dark` | 22 colour tokens | `_00_themes.sass` |
58
+ | `.theme-onedark-pro` | 22 colour tokens | `_00_themes.sass` |
59
+ | `.theme-rose-pine-dark` | 22 colour tokens | `_00_themes.sass` |
60
+ | `.theme-midnight-emerald-dark` | 22 colour tokens | `_00_themes.sass` |
61
+ | `.theme-obsidian-crimson-dark` | 22 colour tokens | `_00_themes.sass` |
62
+ | `.theme-synthwave-dark` | 22 colour tokens | `_00_themes.sass` |
63
+ | `.theme-deep-ocean-dark` | 22 colour tokens | `_00_themes.sass` |
64
+ | `.theme-amethyst-void-dark` | 22 colour tokens | `_00_themes.sass` |
65
+
66
+ ---
67
+
68
+ ## L1 — Dimensions
69
+
70
+ Space, size, radius. Preset steps (3xs..3xl) and the literal ladder, each in three bands: base, -mob, -desk.
71
+
72
+ | Class | Applies | Source |
73
+ |:---|:---|:---|
74
+ | `.gap-*` | gap: calc(var(--space-*) * var(--gap-scale)) \| {N}px | `_02_dimensions.sass` |
75
+ | `.rgap-*` | row-gap: calc(var(--space-*) * var(--gap-scale)) \| {N}px | `_02_dimensions.sass` |
76
+ | `.cgap-*` | column-gap: calc(var(--space-*) * var(--gap-scale)) \| {N}px | `_02_dimensions.sass` |
77
+ | `.pad-*` | padding: calc(var(--space-*) * var(--pad-scale)) \| {N}px | `_02_dimensions.sass` |
78
+ | `.pad-x-*` | padding-inline: calc(var(--space-*) * var(--pad-scale)) \| {N}px | `_02_dimensions.sass` |
79
+ | `.pad-y-*` | padding-block: calc(var(--space-*) * var(--pad-scale)) \| {N}px | `_02_dimensions.sass` |
80
+ | `.pad-top-*` | padding-top: calc(var(--space-*) * var(--pad-scale)) \| {N}px | `_02_dimensions.sass` |
81
+ | `.pad-right-*` | padding-right: calc(var(--space-*) * var(--pad-scale)) \| {N}px | `_02_dimensions.sass` |
82
+ | `.pad-bottom-*` | padding-bottom: calc(var(--space-*) * var(--pad-scale)) \| {N}px | `_02_dimensions.sass` |
83
+ | `.pad-left-*` | padding-left: calc(var(--space-*) * var(--pad-scale)) \| {N}px | `_02_dimensions.sass` |
84
+ | `.marg-*` | margin: calc(var(--space-*) * var(--gap-scale)) \| {N}px | `_02_dimensions.sass` |
85
+ | `.marg--*` | margin: calc(var(--space-*) * var(--gap-scale) * -1) \| -{N}px | `_02_dimensions.sass` |
86
+ | `.marg-x-*` | margin-inline: calc(var(--space-*) * var(--gap-scale)) \| {N}px | `_02_dimensions.sass` |
87
+ | `.marg-y-*` | margin-block: calc(var(--space-*) * var(--gap-scale)) \| {N}px | `_02_dimensions.sass` |
88
+ | `.marg-top-*` | margin-top: calc(var(--space-*) * var(--gap-scale)) \| {N}px | `_02_dimensions.sass` |
89
+ | `.marg-top--*` | margin-top: calc(var(--space-*) * var(--gap-scale) * -1) \| -{N}px | `_02_dimensions.sass` |
90
+ | `.marg-bottom-*` | margin-bottom: calc(var(--space-*) * var(--gap-scale)) \| {N}px | `_02_dimensions.sass` |
91
+ | `.marg-bottom--*` | margin-bottom: calc(var(--space-*) * var(--gap-scale) * -1) \| -{N}px | `_02_dimensions.sass` |
92
+ | `.marg-left-*` | margin-left: calc(var(--space-*) * var(--gap-scale)) \| {N}px | `_02_dimensions.sass` |
93
+ | `.marg-right-*` | margin-right: calc(var(--space-*) * var(--gap-scale)) \| {N}px | `_02_dimensions.sass` |
94
+ | `.radius-*` | border-radius: {N}px | `_02_dimensions.sass` |
95
+ | `.radius-full` | border-radius: var(--radius-full) | `_02_dimensions.sass` |
96
+ | `.w-*` | width: {N}px | `_02_dimensions.sass` |
97
+ | `.h-*` | height: {N}px | `_02_dimensions.sass` |
98
+ | `.square-*` | width: {N}px; height: {N}px | `_02_dimensions.sass` |
99
+ | `.min0` | min-width: 0; min-height: 0 | `_02_dimensions.sass` |
100
+ | `.wfull` | width: 100% | `_02_dimensions.sass` |
101
+ | `.hfull` | height: 100% | `_02_dimensions.sass` |
102
+ | `.full` | width: 100%; height: 100% | `_02_dimensions.sass` |
103
+ | `.hfull-vh` | min-height: 100vh | `_02_dimensions.sass` |
104
+ | `.hfull-vh-fitted` | min-height: calc(100vh - var(--header-height) - var(--footer-height)) | `_02_dimensions.sass` |
105
+
106
+ ---
107
+
108
+ ## L2 — Containers
109
+
110
+ Flow and alignment. x* is ALWAYS horizontal, y* is ALWAYS vertical, in every container.
111
+
112
+ | Class | Applies | Source |
113
+ |:---|:---|:---|
114
+ | `.box` | .box component / container | `_03_containers.sass` |
115
+ | `.box.xcenter` | Modifier for .box | `_03_containers.sass` |
116
+ | `.box.xleft` | Modifier for .box | `_03_containers.sass` |
117
+ | `.box.xright` | Modifier for .box | `_03_containers.sass` |
118
+ | `.box.ycenter` | Modifier for .box | `_03_containers.sass` |
119
+ | `.box.ytop` | Modifier for .box | `_03_containers.sass` |
120
+ | `.box.ybot` | Modifier for .box | `_03_containers.sass` |
121
+ | `.box.ybetween` | Modifier for .box | `_03_containers.sass` |
122
+ | `.box.yevenly` | Modifier for .box | `_03_containers.sass` |
123
+ | `.box.yaround` | Modifier for .box | `_03_containers.sass` |
124
+ | `.row` | .row component / container | `_03_containers.sass` |
125
+ | `.row.xleft` | Modifier for .row | `_03_containers.sass` |
126
+ | `.row.xcenter` | Modifier for .row | `_03_containers.sass` |
127
+ | `.row.xright` | Modifier for .row | `_03_containers.sass` |
128
+ | `.row.xbetween` | Modifier for .row | `_03_containers.sass` |
129
+ | `.row.xevenly` | Modifier for .row | `_03_containers.sass` |
130
+ | `.row.xaround` | Modifier for .row | `_03_containers.sass` |
131
+ | `.row.ycenter` | Modifier for .row | `_03_containers.sass` |
132
+ | `.row.ytop` | Modifier for .row | `_03_containers.sass` |
133
+ | `.row.ybot` | Modifier for .row | `_03_containers.sass` |
134
+ | `.grid` | .grid component / container | `_03_containers.sass` |
135
+ | `.grid.center` | Modifier for .grid | `_03_containers.sass` |
136
+ | `.grid.xcenter` | Modifier for .grid | `_03_containers.sass` |
137
+ | `.grid.xleft` | Modifier for .grid | `_03_containers.sass` |
138
+ | `.grid.xright` | Modifier for .grid | `_03_containers.sass` |
139
+ | `.grid.xstretch` | Modifier for .grid | `_03_containers.sass` |
140
+ | `.grid.ycenter` | Modifier for .grid | `_03_containers.sass` |
141
+ | `.grid.ytop` | Modifier for .grid | `_03_containers.sass` |
142
+ | `.grid.ybot` | Modifier for .grid | `_03_containers.sass` |
143
+ | `.grid.ystretch` | Modifier for .grid | `_03_containers.sass` |
144
+ | `.grid.xbetween` | Modifier for .grid | `_03_containers.sass` |
145
+ | `.grid.xevenly` | Modifier for .grid | `_03_containers.sass` |
146
+ | `.grid.xaround` | Modifier for .grid | `_03_containers.sass` |
147
+ | `.grid.ybetween` | Modifier for .grid | `_03_containers.sass` |
148
+ | `.grid.yevenly` | Modifier for .grid | `_03_containers.sass` |
149
+ | `.grid.yaround` | Modifier for .grid | `_03_containers.sass` |
150
+ | `.wrap` | .wrap component / container | `_03_containers.sass` |
151
+ | `.grow` | .grow component / container | `_03_containers.sass` |
152
+ | `.shrink-0` | .shrink-0 component / container | `_03_containers.sass` |
153
+ | `.relative` | .relative component / container | `_03_containers.sass` |
154
+ | `.absolute` | .absolute component / container | `_03_containers.sass` |
155
+ | `.fixed` | .fixed component / container | `_03_containers.sass` |
156
+ | `.sticky` | .sticky component / container | `_03_containers.sass` |
157
+
158
+ ---
159
+
160
+ ## L3 — Layouts
161
+
162
+ Grids that step only through divisors, reading measures, frames, reels.
163
+
164
+ | Class | Applies | Source |
165
+ |:---|:---|:---|
166
+ | `.frame-16-9` | aspect-ratio: 16 / 9 | `_04_layouts.sass` |
167
+ | `.frame-9-16` | aspect-ratio: 9 / 16 | `_04_layouts.sass` |
168
+ | `.frame-4-3` | aspect-ratio: 4 / 3 | `_04_layouts.sass` |
169
+ | `.frame-3-4` | aspect-ratio: 3 / 4 | `_04_layouts.sass` |
170
+ | `.frame-3-2` | aspect-ratio: 3 / 2 | `_04_layouts.sass` |
171
+ | `.frame-2-3` | aspect-ratio: 2 / 3 | `_04_layouts.sass` |
172
+ | `.frame-1-1` | aspect-ratio: 1 / 1 | `_04_layouts.sass` |
173
+ | `.grid-1` | .grid-1 component / container | `_04_layouts.sass` |
174
+ | `.grid-2` | .grid-2 component / container | `_04_layouts.sass` |
175
+ | `.grid-3` | .grid-3 component / container | `_04_layouts.sass` |
176
+ | `.grid-4` | .grid-4 component / container | `_04_layouts.sass` |
177
+ | `.grid-6` | .grid-6 component / container | `_04_layouts.sass` |
178
+ | `.card-grid` | .card-grid component / container | `_04_layouts.sass` |
179
+ | `.prose` | .prose component / container | `_04_layouts.sass` |
180
+ | `.reel` | .reel component / container | `_04_layouts.sass` |
181
+
182
+ ---
183
+
184
+ ## L4 — Shells
185
+
186
+ Page and application scaffolding. Each shell class is paired with a canonical markup — see canonical-markups.md.
187
+
188
+ | Class | Applies | Source |
189
+ |:---|:---|:---|
190
+ | `.app-shell` | .app-shell component / container | `_05_shells.sass` |
191
+ | `.app-header` | .app-header component / container | `_05_shells.sass` |
192
+ | `.app-main` | .app-main component / container | `_05_shells.sass` |
193
+ | `.main-section` | .main-section component / container | `_05_shells.sass` |
194
+ | `.sidebar-left` | , | `_05_shells.sass` |
195
+ | `.sidebar-right` | .sidebar-right component / container | `_05_shells.sass` |
196
+ | `.sidebar-left` | .sidebar-left component / container | `_05_shells.sass` |
197
+ | `.sidebar-right` | .sidebar-right component / container | `_05_shells.sass` |
198
+ | `.sidebar-left` | Required child of .sidebar-right — see canonical-markups.md | `_05_shells.sass` |
199
+ | `.sidebar-right` | Required child of .sidebar-right — see canonical-markups.md | `_05_shells.sass` |
200
+ | `.content-shell` | .content-shell component / container | `_05_shells.sass` |
201
+ | `.app-footer` | .app-footer component / container | `_05_shells.sass` |
202
+ | `.mobile-toc` | .mobile-toc component / container | `_05_shells.sass` |
203
+ | `.navtree` | .navtree component / container | `_05_shells.sass` |
204
+ | `.navtree-title` | .navtree-title component / container | `_05_shells.sass` |
205
+ | `.navtree-link` | .navtree-link component / container | `_05_shells.sass` |
206
+ | `.navtree-link.active` | Modifier for .navtree-link | `_05_shells.sass` |
207
+ | `.navtree-sub` | .navtree-sub component / container | `_05_shells.sass` |
208
+ | `.toc` | .toc component / container | `_05_shells.sass` |
209
+ | `.toc-title` | .toc-title component / container | `_05_shells.sass` |
210
+ | `.toc-list` | .toc-list component / container | `_05_shells.sass` |
211
+ | `.toc-link` | .toc-link component / container | `_05_shells.sass` |
212
+ | `.toc-link.active` | Modifier for .toc-link | `_05_shells.sass` |
213
+ | `.toc-footer` | .toc-footer component / container | `_05_shells.sass` |
214
+ | `.tab-list` | .tab-list component / container | `_05_shells.sass` |
215
+ | `.tab-trigger` | .tab-trigger component / container | `_05_shells.sass` |
216
+ | `.tab-trigger.active` | Modifier for .tab-trigger | `_05_shells.sass` |
217
+ | `.page-shell` | .page-shell component / container | `_05_shells.sass` |
218
+ | `.page-split` | .page-split component / container | `_05_shells.sass` |
219
+ | `.page-main` | Required child of .page-split — see canonical-markups.md | `_05_shells.sass` |
220
+ | `.page-sidebar` | Required child of .page-split — see canonical-markups.md | `_05_shells.sass` |
221
+ | `.drawer` | .drawer component / container | `_05_shells.sass` |
222
+ | `.drawer.open` | Modifier for .drawer | `_05_shells.sass` |
223
+ | `.dialog` | .dialog component / container | `_05_shells.sass` |
224
+ | `.dialog.open` | , | `_05_shells.sass` |
225
+ | `.popover` | .popover component / container | `_05_shells.sass` |
226
+ | `.popover.open` | Modifier for .popover | `_05_shells.sass` |
227
+ | `.accordion` | .accordion component / container | `_05_shells.sass` |
228
+ | `.accordion-item` | .accordion-item component / container | `_05_shells.sass` |
229
+ | `.accordion-content` | Required child of .accordion-item — see canonical-markups.md | `_05_shells.sass` |
230
+ | `.accordion-panel` | Required child of .accordion-item — see canonical-markups.md | `_05_shells.sass` |
231
+ | `.accordion-item.open` | .accordion-content | `_05_shells.sass` |
232
+ | `.accordion-trigger` | .accordion-trigger component / container | `_05_shells.sass` |
233
+ | `.hero` | .hero component / container | `_05_shells.sass` |
234
+
235
+ ---
236
+
237
+ ## L5 — Visuals & Interactions
238
+
239
+ Surfaces, ink, borders, type, controls. The outermost layer.
240
+
241
+ | Class | Applies | Source |
242
+ |:---|:---|:---|
243
+ | `.bg` | .bg component / container | `_06_visuals.sass` |
244
+ | `.surface` | .surface component / container | `_06_visuals.sass` |
245
+ | `.raised` | .raised component / container | `_06_visuals.sass` |
246
+ | `.panel` | .panel component / container | `_06_visuals.sass` |
247
+ | `.footer` | .footer component / container | `_06_visuals.sass` |
248
+ | `.canvas` | .canvas component / container | `_06_visuals.sass` |
249
+ | `.terminal` | .terminal component / container | `_06_visuals.sass` |
250
+ | `.text-primary` | .text-primary component / container | `_06_visuals.sass` |
251
+ | `.text-secondary` | .text-secondary component / container | `_06_visuals.sass` |
252
+ | `.text-muted` | .text-muted component / container | `_06_visuals.sass` |
253
+ | `.text-inverse` | .text-inverse component / container | `_06_visuals.sass` |
254
+ | `.text-theme` | .text-theme component / container | `_06_visuals.sass` |
255
+ | `.text-success` | .text-success component / container | `_06_visuals.sass` |
256
+ | `.text-warning` | .text-warning component / container | `_06_visuals.sass` |
257
+ | `.text-danger` | .text-danger component / container | `_06_visuals.sass` |
258
+ | `.text-info` | .text-info component / container | `_06_visuals.sass` |
259
+ | `.bg-success` | .bg-success component / container | `_06_visuals.sass` |
260
+ | `.bg-warning` | .bg-warning component / container | `_06_visuals.sass` |
261
+ | `.bg-danger` | .bg-danger component / container | `_06_visuals.sass` |
262
+ | `.bg-info` | .bg-info component / container | `_06_visuals.sass` |
263
+ | `.border` | .border component / container | `_06_visuals.sass` |
264
+ | `.border-subtle` | .border-subtle component / container | `_06_visuals.sass` |
265
+ | `.border-top` | .border-top component / container | `_06_visuals.sass` |
266
+ | `.border-right` | .border-right component / container | `_06_visuals.sass` |
267
+ | `.border-bottom` | .border-bottom component / container | `_06_visuals.sass` |
268
+ | `.border-left` | .border-left component / container | `_06_visuals.sass` |
269
+ | `.text-xs` | .text-xs component / container | `_06_visuals.sass` |
270
+ | `.text-sm` | .text-sm component / container | `_06_visuals.sass` |
271
+ | `.text-md` | .text-md component / container | `_06_visuals.sass` |
272
+ | `.text-lg` | .text-lg component / container | `_06_visuals.sass` |
273
+ | `.text-xl` | .text-xl component / container | `_06_visuals.sass` |
274
+ | `.text-2xl` | .text-2xl component / container | `_06_visuals.sass` |
275
+ | `.text-3xl` | .text-3xl component / container | `_06_visuals.sass` |
276
+ | `.text-4xl` | .text-4xl component / container | `_06_visuals.sass` |
277
+ | `.weight-400` | .weight-400 component / container | `_06_visuals.sass` |
278
+ | `.weight-500` | .weight-500 component / container | `_06_visuals.sass` |
279
+ | `.weight-600` | .weight-600 component / container | `_06_visuals.sass` |
280
+ | `.weight-700` | .weight-700 component / container | `_06_visuals.sass` |
281
+ | `.mono` | .mono component / container | `_06_visuals.sass` |
282
+ | `.tt-u` | .tt-u component / container | `_06_visuals.sass` |
283
+ | `.tt-c` | .tt-c component / container | `_06_visuals.sass` |
284
+ | `.truncate` | .truncate component / container | `_06_visuals.sass` |
285
+ | `.clamp-1` | .clamp-1 component / container | `_06_visuals.sass` |
286
+ | `.clamp-2` | .clamp-2 component / container | `_06_visuals.sass` |
287
+ | `.clamp-3` | .clamp-3 component / container | `_06_visuals.sass` |
288
+ | `.eyebrow` | .eyebrow component / container | `_06_visuals.sass` |
289
+ | `.card` | .card component / container | `_06_visuals.sass` |
290
+ | `.field` | .field component / container | `_06_visuals.sass` |
291
+ | `.field-label` | .field-label component / container | `_06_visuals.sass` |
292
+ | `.field-error` | .field-error component / container | `_06_visuals.sass` |
293
+ | `.avatar` | .avatar component / container | `_06_visuals.sass` |
294
+ | `.divider` | .divider component / container | `_06_visuals.sass` |
295
+ | `.kbd` | .kbd component / container | `_06_visuals.sass` |
296
+ | `.switch-track` | .switch-track component / container | `_06_visuals.sass` |
297
+ | `.switch-thumb` | .switch-thumb component / container | `_06_visuals.sass` |
298
+ | `.switch-track` | [aria-checked='true'], | `_06_visuals.sass` |
299
+ | `.switch-track` | .checked | `_06_visuals.sass` |
300
+ | `.switch-thumb` | Required child of .switch-track — see canonical-markups.md | `_06_visuals.sass` |
301
+ | `.hide-mobile` | .hide-mobile component / container | `_06_visuals.sass` |
302
+ | `.hide-desktop` | .hide-desktop component / container | `_06_visuals.sass` |
303
+ | `.only-mobile` | .only-mobile component / container | `_06_visuals.sass` |
304
+ | `.shadow-sm` | .shadow-sm component / container | `_06_visuals.sass` |
305
+ | `.shadow-md` | .shadow-md component / container | `_06_visuals.sass` |
306
+ | `.shadow-lg` | .shadow-lg component / container | `_06_visuals.sass` |
307
+ | `.badge` | .badge component / container | `_07_interactions.sass` |
308
+ | `.input` | .input component / container | `_07_interactions.sass` |
309
+ | `.select` | .select component / container | `_07_interactions.sass` |
310
+ | `.link` | .link component / container | `_07_interactions.sass` |
311
+ | `.link-plain` | .link-plain component / container | `_07_interactions.sass` |
312
+ | `.link-parent` | .link-parent component / container | `_07_interactions.sass` |
313
+ | `.link-plain` | Required child of .link-parent — see canonical-markups.md | `_07_interactions.sass` |
314
+ | `.button` | .button component / container | `_07_interactions.sass` |
315
+ | `.button.primary` | Modifier for .button | `_07_interactions.sass` |
316
+ | `.button.ghost` | Modifier for .button | `_07_interactions.sass` |
317
+ | `.button.active` | Modifier for .button | `_07_interactions.sass` |
318
+ | `.button.is-icon` | Modifier for .button | `_07_interactions.sass` |
319
+
320
+ ---
321
+
322
+ ## Semantic Tokens
323
+
324
+ ```css
325
+ :root {
326
+ --bg: #fdfefe;
327
+ --bg-surface: #f8f7f7;
328
+ --bg-raised: #f1f5f9;
329
+ --bg-panel: #F1F3F5;
330
+ --bg-footer: #E9ECEF;
331
+ --bg-popover: #FFFFFF;
332
+ --bg-dialog: #FFFFFF;
333
+ --bg-terminal: #0F172A;
334
+ --bg-input: #FFFFFF;
335
+ --bg-canvas: #F8F9FA;
336
+ --text-primary: #0f172a;
337
+ --text-secondary: #5b6472;
338
+ --text-muted: #929497;
339
+ --text-inverse: #ffffff;
340
+ --state-hover: #E2E8F0;
341
+ --state-hover-subtle: #F1F5F9;
342
+ --state-selected: #CBD5E1;
343
+ --border: #E2E8F0;
344
+ --border-subtle: #EDF2F7;
345
+ --theme-color: #04825B;
346
+ --theme-color-alt: #047857;
347
+ --success: #10B981;
348
+ --success-hover: #059669;
349
+ --warning: #F59E0B;
350
+ --warning-hover: #D97706;
351
+ --danger: #EF4444;
352
+ --danger-hover: #DC2626;
353
+ --info: #3B82F6;
354
+ --info-hover: #2563EB;
355
+ --feedback-error: #DC2626;
356
+ --ring: rgba(0, 127, 78, 0.35);
357
+ --shadow-sm: 0 1px 2px rgba(15, 23, 42, 0.06);
358
+ --shadow-md: 0 4px 12px rgba(15, 23, 42, 0.08);
359
+ --shadow-lg: 0 12px 32px rgba(15, 23, 42, 0.12);
360
+ --font-sans: "Google Sans Flex", sans-serif;
361
+ --font-mono: "JetBrains Mono", monospace;
362
+ --text-xs: 0.75rem;
363
+ --text-sm: clamp(0.9375rem, 0.9119rem + 0.1136vw, 1rem);
364
+ --text-md: clamp(1.125rem, 1.0739rem + 0.2273vw, 1.25rem);
365
+ --text-lg: clamp(1.35rem, 1.2631rem + 0.3864vw, 1.5625rem);
366
+ --text-xl: clamp(1.62rem, 1.4837rem + 0.6057vw, 1.9531rem);
367
+ --text-2xl: clamp(1.944rem, 1.7405rem + 0.9044vw, 2.4414rem);
368
+ --text-3xl: clamp(2.3328rem, 2.0387rem + 1.3072vw, 3.0518rem);
369
+ --text-4xl: clamp(2.7994rem, 2.384rem + 1.8461vw, 3.8147rem);
370
+ --space-3xs: clamp(0.3125rem, 0.3125rem + 0vw, 0.3125rem);
371
+ --space-2xs: clamp(0.5625rem, 0.5369rem + 0.1136vw, 0.625rem);
372
+ --space-xs: clamp(0.875rem, 0.8494rem + 0.1136vw, 0.9375rem);
373
+ --space-sm: clamp(1.125rem, 1.0739rem + 0.2273vw, 1.25rem);
374
+ --space-md: clamp(1.6875rem, 1.6108rem + 0.3409vw, 1.875rem);
375
+ --space-lg: clamp(2.25rem, 2.1477rem + 0.4545vw, 2.5rem);
376
+ --space-xl: clamp(3.375rem, 3.2216rem + 0.6818vw, 3.75rem);
377
+ --space-2xl: clamp(4.5rem, 4.2955rem + 0.9091vw, 5rem);
378
+ --space-3xl: clamp(6.75rem, 6.4432rem + 1.3636vw, 7.5rem);
379
+ --radius-0: 0;
380
+ --radius-2: 2px;
381
+ --radius-3: 3px;
382
+ --radius-4: 4px;
383
+ --radius-6: 6px;
384
+ --radius-8: 8px;
385
+ --radius-12: 12px;
386
+ --radius-16: 16px;
387
+ --radius-24: 24px;
388
+ --radius-full: 9999px;
389
+ --radius-sm: 8px;
390
+ --radius-md: 16px;
391
+ --radius-lg: 24px;
392
+ --motion-fast: 120ms;
393
+ --motion-base: 160ms;
394
+ --motion-slow: 240ms;
395
+ --ease-out: cubic-bezier(0.16, 1, 0.3, 1);
396
+ --ease-spring: cubic-bezier(0.34, 1.56, 0.64, 1);
397
+ --control-h-sm: 26px;
398
+ --control-h-md: 32px;
399
+ --control-h-lg: 38px;
400
+ --z-base: 0;
401
+ --z-raised: 10;
402
+ --z-sticky: 100;
403
+ --z-modal: 200;
404
+ --z-toast: 300;
405
+ --header-height: 48px;
406
+ --footer-height: 32px;
407
+ --measure: 65ch;
408
+ --page-gutter: clamp(1rem, 4vw, 2rem);
409
+ --sidebar-width: 260px;
410
+ --toc-width: 240px;
411
+ --card-min: 16rem;
412
+ --breakpoint: 768px;
413
+ --gap-scale: 0.85;
414
+ --pad-scale: 0.7;
415
+ }
416
+ ```
@@ -1,36 +1,110 @@
1
- # Design Tokens Reference
2
-
3
- ## Space Scale (Fluid Utopia)
4
- | Step | Token Variable | Approximate Px | Clamp Formula |
5
- | :--- | :--- | :--- | :--- |
6
- | `3xs` | `--space-3xs` | ~5px | `clamp(0.3125rem, 0.3125rem + 0vw, 0.3125rem)` |
7
- | `2xs` | `--space-2xs` | ~9px | `clamp(0.5625rem, 0.5369rem + 0.1136vw, 0.625rem)` |
8
- | `xs` | `--space-xs` | ~14px | `clamp(0.875rem, 0.8494rem + 0.1136vw, 0.9375rem)` |
9
- | `s` | `--space-s` | ~18px | `clamp(1.125rem, 1.0739rem + 0.2273vw, 1.25rem)` |
10
- | `m` | `--space-m` | ~27px | `clamp(1.6875rem, 1.6108rem + 0.3409vw, 1.875rem)` |
11
- | `l` | `--space-l` | ~36px | `clamp(2.25rem, 2.1477rem + 0.4545vw, 2.5rem)` |
12
- | `xl` | `--space-xl` | ~54px | `clamp(3.375rem, 3.2216rem + 0.6818vw, 3.75rem)` |
13
- | `2xl` | `--space-2xl` | ~72px | `clamp(4.5rem, 4.2955rem + 0.9091vw, 5rem)` |
14
- | `3xl` | `--space-3xl` | ~108px | `clamp(6.75rem, 6.4432rem + 1.3636vw, 7.5rem)` |
15
- | `s-l` | `--space-s-l` | ~18→40px | `clamp(1.125rem, 0.5625rem + 2.5vw, 2.5rem)` |
16
-
17
- ## Typography Scale
18
- | Step | Token Variable | Fluid Clamp |
19
- | :--- | :--- | :--- |
20
- | `xs` | `--text-xs` | `0.75rem` (12px) |
21
- | `sm` | `--text-sm` | `clamp(0.9375rem, 0.9119rem + 0.1136vw, 1rem)` |
22
- | `md` | `--text-md` | `clamp(1.125rem, 1.0739rem + 0.2273vw, 1.25rem)` |
23
- | `lg` | `--text-lg` | `clamp(1.35rem, 1.2631rem + 0.3864vw, 1.5625rem)` |
24
- | `xl` | `--text-xl` | `clamp(1.62rem, 1.4837rem + 0.6057vw, 1.9531rem)` |
25
- | `2xl` | `--text-2xl` | `clamp(1.944rem, 1.7405rem + 0.9044vw, 2.4414rem)` |
26
- | `3xl` | `--text-3xl` | `clamp(2.3328rem, 2.0387rem + 1.3072vw, 3.0518rem)` |
27
- | `4xl` | `--text-4xl` | `clamp(2.7994rem, 2.384rem + 1.8461vw, 3.8147rem)` |
28
-
29
- ## Radius Scale
30
- `0`, `2`, `4`, `6`, `8`, `12`, `16`, `24`, `full`
31
-
32
- ## Color & Surface Roles
33
- * **Surfaces**: `--bg`, `--bg-surface`, `--bg-raised`
34
- * **Ink**: `--text-primary`, `--text-secondary`, `--text-muted`, `--text-inverse`
35
- * **Borders**: `--border`, `--border-strong`
36
- * **Brand**: `--theme`, `--theme-hover`, `--theme-active`, `--ring`
1
+ # Fractalstyler2 — Token Reference
2
+
3
+ GENERATED FILE — do not edit. Emitted by `scripts/update-registry.js`
4
+ from `_00_tokens.sass`.
5
+
6
+ Every token is also a class. If `--space-md` exists, so do `.gap-md`,
7
+ `.pad-md` and `.marg-md`. There is no second vocabulary to learn.
8
+
9
+ ## Fluid Type Scale
10
+
11
+ Interpolates smoothly between 360px and 1240px. No breakpoints.
12
+
13
+ | Token | Class | Value |
14
+ |:---|:---|:---|
15
+ | `--text-xs` | `.text-xs` | `0.75rem` |
16
+ | `--text-sm` | `.text-sm` | `clamp(0.9375rem, 0.9119rem + 0.1136vw, 1rem)` |
17
+ | `--text-md` | `.text-md` | `clamp(1.125rem, 1.0739rem + 0.2273vw, 1.25rem)` |
18
+ | `--text-lg` | `.text-lg` | `clamp(1.35rem, 1.2631rem + 0.3864vw, 1.5625rem)` |
19
+ | `--text-xl` | `.text-xl` | `clamp(1.62rem, 1.4837rem + 0.6057vw, 1.9531rem)` |
20
+ | `--text-2xl` | `.text-2xl` | `clamp(1.944rem, 1.7405rem + 0.9044vw, 2.4414rem)` |
21
+ | `--text-3xl` | `.text-3xl` | `clamp(2.3328rem, 2.0387rem + 1.3072vw, 3.0518rem)` |
22
+ | `--text-4xl` | `.text-4xl` | `clamp(2.7994rem, 2.384rem + 1.8461vw, 3.8147rem)` |
23
+
24
+ ## Fluid Space Scale
25
+
26
+ Gaps and margins scale by `--gap-scale`; paddings by `--pad-scale`.
27
+ The two move at different rates under the layout preset.
28
+
29
+ | Token | Class | Value |
30
+ |:---|:---|:---|
31
+ | `--space-3xs` | `.gap-3xs` `.pad-3xs` | `clamp(0.3125rem, 0.3125rem + 0vw, 0.3125rem)` |
32
+ | `--space-2xs` | `.gap-2xs` `.pad-2xs` | `clamp(0.5625rem, 0.5369rem + 0.1136vw, 0.625rem)` |
33
+ | `--space-xs` | `.gap-xs` `.pad-xs` | `clamp(0.875rem, 0.8494rem + 0.1136vw, 0.9375rem)` |
34
+ | `--space-sm` | `.gap-sm` `.pad-sm` | `clamp(1.125rem, 1.0739rem + 0.2273vw, 1.25rem)` |
35
+ | `--space-md` | `.gap-md` `.pad-md` | `clamp(1.6875rem, 1.6108rem + 0.3409vw, 1.875rem)` |
36
+ | `--space-lg` | `.gap-lg` `.pad-lg` | `clamp(2.25rem, 2.1477rem + 0.4545vw, 2.5rem)` |
37
+ | `--space-xl` | `.gap-xl` `.pad-xl` | `clamp(3.375rem, 3.2216rem + 0.6818vw, 3.75rem)` |
38
+ | `--space-2xl` | `.gap-2xl` `.pad-2xl` | `clamp(4.5rem, 4.2955rem + 0.9091vw, 5rem)` |
39
+ | `--space-3xl` | `.gap-3xl` `.pad-3xl` | `clamp(6.75rem, 6.4432rem + 1.3636vw, 7.5rem)` |
40
+
41
+ ## Radius
42
+
43
+ The `-sm/-md/-lg` channels are what compositions read; shape presets remap them.
44
+
45
+ | Token | Class | Value |
46
+ |:---|:---|:---|
47
+ | `--radius-0` | — | `0` |
48
+ | `--radius-2` | — | `2px` |
49
+ | `--radius-3` | — | `3px` |
50
+ | `--radius-4` | — | `4px` |
51
+ | `--radius-6` | — | `6px` |
52
+ | `--radius-8` | — | `8px` |
53
+ | `--radius-12` | — | `12px` |
54
+ | `--radius-16` | — | `16px` |
55
+ | `--radius-24` | — | `24px` |
56
+ | `--radius-full` | — | `9999px` |
57
+ | `--radius-sm` | — | `8px` |
58
+ | `--radius-md` | — | `16px` |
59
+ | `--radius-lg` | — | `24px` |
60
+
61
+ ## Colour Roles
62
+
63
+ Name the role, never the hex. Values shown are the light default;
64
+ `[data-mode="dark"]` and the colour presets remap them.
65
+
66
+ | Token | Class | Value |
67
+ |:---|:---|:---|
68
+ | `--bg` | — | `#fdfefe` |
69
+ | `--bg-surface` | — | `#f8f7f7` |
70
+ | `--bg-raised` | — | `#f1f5f9` |
71
+ | `--bg-panel` | — | `#F1F3F5` |
72
+ | `--bg-footer` | — | `#E9ECEF` |
73
+ | `--bg-popover` | — | `#FFFFFF` |
74
+ | `--bg-dialog` | — | `#FFFFFF` |
75
+ | `--bg-terminal` | — | `#0F172A` |
76
+ | `--bg-input` | — | `#FFFFFF` |
77
+ | `--bg-canvas` | — | `#F8F9FA` |
78
+ | `--text-primary` | — | `#0f172a` |
79
+ | `--text-secondary` | `.text-secondary` | `#5b6472` |
80
+ | `--text-muted` | `.text-muted` | `#929497` |
81
+ | `--text-inverse` | `.text-inverse` | `#ffffff` |
82
+ | `--state-hover` | — | `#E2E8F0` |
83
+ | `--state-hover-subtle` | — | `#F1F5F9` |
84
+ | `--state-selected` | — | `#CBD5E1` |
85
+ | `--border` | — | `#E2E8F0` |
86
+ | `--border-subtle` | — | `#EDF2F7` |
87
+ | `--theme-color` | — | `#04825B` |
88
+ | `--theme-color-alt` | — | `#047857` |
89
+ | `--success` | — | `#10B981` |
90
+ | `--success-hover` | — | `#059669` |
91
+ | `--warning` | — | `#F59E0B` |
92
+ | `--warning-hover` | — | `#D97706` |
93
+ | `--danger` | — | `#EF4444` |
94
+ | `--danger-hover` | — | `#DC2626` |
95
+ | `--info` | — | `#3B82F6` |
96
+ | `--info-hover` | — | `#2563EB` |
97
+ | `--feedback-error` | — | `#DC2626` |
98
+ | `--ring` | — | `rgba(0, 127, 78, 0.35)` |
99
+
100
+ ## Preset Axes
101
+
102
+ Stamped as attributes. An absent attribute means that axis's default.
103
+
104
+ | Attribute | Values | Default |
105
+ |:---|:---|:---|
106
+ | `data-layout` | tight · comfortable · sprawling | comfortable |
107
+ | `data-shape` | round · curved · pro · sharp | curved |
108
+ | `data-color` | clean · general · vibrant | general |
109
+ | `data-motion` | reduced · active · heavy · springy | active |
110
+ | `data-mode` | light · dark | follows prefers-color-scheme |
@@ -1,13 +0,0 @@
1
- // =============================================================================
2
- // 02_FONTS — local webfont declarations & font-family fallbacks.
3
- // -----------------------------------------------------------------------------
4
- // Downstream projects customize their font loading here.
5
- // =============================================================================
6
-
7
- // Define custom @font-face rules or load Google / local webfonts as needed:
8
- // @font-face
9
- // font-family: 'YourFont'
10
- // src: url('/fonts/YourFont.woff2') format('woff2')
11
- // font-weight: 100 900
12
- // font-style: normal
13
- // font-display: swap
@@ -1,31 +0,0 @@
1
- // =============================================================================
2
- // 03_RESPONSIVE — the breakpoint mixins. Viewport-aware conditional styling.
3
- // -----------------------------------------------------------------------------
4
- // Mobile-first defaults; use +at($bp) for min-width media queries.
5
- // =============================================================================
6
-
7
- @use '01_config' as *
8
-
9
- =at($bp)
10
- $width: bp($bp)
11
- @if $width
12
- @media (min-width: $width)
13
- @content
14
- @else
15
- @media (min-width: $bp)
16
- @content
17
-
18
- =below($bp)
19
- $width: bp($bp)
20
- @if $width
21
- @media (max-width: ($width - 1px))
22
- @content
23
- @else
24
- @media (max-width: $bp)
25
- @content
26
-
27
- =between($min-bp, $max-bp)
28
- $min: bp($min-bp)
29
- $max: bp($max-bp)
30
- @media (min-width: $min) and (max-width: ($max - 1px))
31
- @content