fractalstyler2 0.7.0 → 0.8.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.
@@ -103,3 +103,18 @@
103
103
  position: fixed
104
104
  .sticky
105
105
  position: sticky
106
+
107
+ // Scroll containers. A panel that has to hold more than fits — a long option
108
+ // list, a code block, a table — is a composition primitive, not a bespoke
109
+ // widget. Without these the only way to express it was a hand-written rule,
110
+ // which is the escape hatch the registry exists to avoid.
111
+ // Pair with a height: .scroll-y needs one to have anything to scroll against.
112
+ .scroll-y // Vertical scroll inside a bounded height; needs an .h-* or a constraining flex parent
113
+ overflow-y: auto
114
+ overflow-x: hidden
115
+ overscroll-behavior: contain
116
+
117
+ .scroll-x // Horizontal scroll inside a bounded width; .reel adds snap points
118
+ overflow-x: auto
119
+ overflow-y: hidden
120
+ overscroll-behavior: contain
@@ -79,7 +79,7 @@ $frame-ratios: ('16-9': '16 / 9', '9-16': '9 / 16', '4-3': '4 / 3', '3-4': '3 /
79
79
  aspect-ratio: #{$ratio}
80
80
  overflow: hidden
81
81
  position: relative
82
- img, video, iframe
82
+ img, video, iframe, svg
83
83
  width: 100%
84
84
  height: 100%
85
85
  object-fit: cover
package/dist/themes.d.ts CHANGED
@@ -1,7 +1,9 @@
1
1
  export interface ThemeMeta {
2
2
  id: string;
3
3
  mode: 'light' | 'dark';
4
+ /** The same palette in the opposite mode, when one exists. */
5
+ twin?: string;
4
6
  }
5
- /** The 41 built-in palettes. Apply with setTheme(id). */
7
+ /** The 76 built-in palettes. Apply with setTheme(id). */
6
8
  export declare const themes: readonly ThemeMeta[];
7
9
  export declare const themeIds: readonly string[];
package/dist/themes.js CHANGED
@@ -1,45 +1,80 @@
1
- /** The 41 built-in palettes. Apply with setTheme(id). */
1
+ /** The 76 built-in palettes. Apply with setTheme(id). */
2
2
  export const themes = [
3
- { id: 'theme-light-default', mode: 'light' },
4
- { id: 'theme-himalaya-light', mode: 'light' },
5
- { id: 'theme-editorial-light', mode: 'light' },
6
- { id: 'theme-space-light', mode: 'light' },
7
- { id: 'theme-sun-light', mode: 'light' },
8
- { id: 'theme-monochrono-light', mode: 'light' },
9
- { id: 'theme-molly-light', mode: 'light' },
10
- { id: 'theme-malana-light', mode: 'light' },
11
- { id: 'theme-coresync-light', mode: 'light' },
12
- { id: 'theme-studio-light', mode: 'light' },
13
- { id: 'theme-matcha-light', mode: 'light' },
14
- { id: 'theme-sakura-light', mode: 'light' },
15
- { id: 'theme-nordic-frost-light', mode: 'light' },
16
- { id: 'theme-desert-dune-light', mode: 'light' },
17
- { id: 'theme-lavender-mist-light', mode: 'light' },
18
- { id: 'theme-botanical-light', mode: 'light' },
19
- { id: 'theme-clay-studio-light', mode: 'light' },
20
- { id: 'theme-solaris-light', mode: 'light' },
21
- { id: 'theme-cyberpunk-day-light', mode: 'light' },
22
- { id: 'theme-copper-patina-light', mode: 'light' },
23
- { id: 'theme-dracula-light', mode: 'light' },
24
- { id: 'theme-lagoona-dark', mode: 'dark' },
25
- { id: 'theme-frozen-dark', mode: 'dark' },
26
- { id: 'theme-night-dark', mode: 'dark' },
27
- { id: 'theme-inkworm-dark', mode: 'dark' },
28
- { id: 'theme-monochrono-dark', mode: 'dark' },
29
- { id: 'theme-fouram-dark', mode: 'dark' },
30
- { id: 'theme-wintercame-dark', mode: 'dark' },
31
- { id: 'theme-sun-dark', mode: 'dark' },
32
- { id: 'theme-console-dark', mode: 'dark' },
33
- { id: 'theme-dracula-dark', mode: 'dark' },
34
- { id: 'theme-catppuccin-mocha', mode: 'light' },
35
- { id: 'theme-nord-dark', mode: 'dark' },
36
- { id: 'theme-gruvbox-dark', mode: 'dark' },
37
- { id: 'theme-onedark-pro', mode: 'light' },
38
- { id: 'theme-rose-pine-dark', mode: 'dark' },
39
- { id: 'theme-midnight-emerald-dark', mode: 'dark' },
40
- { id: 'theme-obsidian-crimson-dark', mode: 'dark' },
41
- { id: 'theme-synthwave-dark', mode: 'dark' },
42
- { id: 'theme-deep-ocean-dark', mode: 'dark' },
43
- { id: 'theme-amethyst-void-dark', mode: 'dark' }
3
+ { id: 'theme-light-default', mode: 'light', twin: 'theme-dark-default' },
4
+ { id: 'theme-himalaya-light', mode: 'light', twin: 'theme-himalaya-dark' },
5
+ { id: 'theme-editorial-light', mode: 'light', twin: 'theme-editorial-dark' },
6
+ { id: 'theme-space-light', mode: 'light', twin: 'theme-space-dark' },
7
+ { id: 'theme-sun-light', mode: 'light', twin: 'theme-sun-dark' },
8
+ { id: 'theme-monochrono-light', mode: 'light', twin: 'theme-monochrono-dark' },
9
+ { id: 'theme-molly-light', mode: 'light', twin: 'theme-molly-dark' },
10
+ { id: 'theme-malana-light', mode: 'light', twin: 'theme-malana-dark' },
11
+ { id: 'theme-coresync-light', mode: 'light', twin: 'theme-coresync-dark' },
12
+ { id: 'theme-studio-light', mode: 'light', twin: 'theme-studio-dark' },
13
+ { id: 'theme-matcha-light', mode: 'light', twin: 'theme-matcha-dark' },
14
+ { id: 'theme-sakura-light', mode: 'light', twin: 'theme-sakura-dark' },
15
+ { id: 'theme-nordic-frost-light', mode: 'light', twin: 'theme-nordic-frost-dark' },
16
+ { id: 'theme-desert-dune-light', mode: 'light', twin: 'theme-desert-dune-dark' },
17
+ { id: 'theme-lavender-mist-light', mode: 'light', twin: 'theme-lavender-mist-dark' },
18
+ { id: 'theme-botanical-light', mode: 'light', twin: 'theme-botanical-dark' },
19
+ { id: 'theme-clay-studio-light', mode: 'light', twin: 'theme-clay-studio-dark' },
20
+ { id: 'theme-solaris-light', mode: 'light', twin: 'theme-solaris-dark' },
21
+ { id: 'theme-cyberpunk-day-light', mode: 'light', twin: 'theme-cyberpunk-day-dark' },
22
+ { id: 'theme-copper-patina-light', mode: 'light', twin: 'theme-copper-patina-dark' },
23
+ { id: 'theme-dracula-light', mode: 'light', twin: 'theme-dracula-dark' },
24
+ { id: 'theme-lagoona-dark', mode: 'dark', twin: 'theme-lagoona-light' },
25
+ { id: 'theme-frozen-dark', mode: 'dark', twin: 'theme-frozen-light' },
26
+ { id: 'theme-night-dark', mode: 'dark', twin: 'theme-night-light' },
27
+ { id: 'theme-inkworm-dark', mode: 'dark', twin: 'theme-inkworm-light' },
28
+ { id: 'theme-monochrono-dark', mode: 'dark', twin: 'theme-monochrono-light' },
29
+ { id: 'theme-fouram-dark', mode: 'dark', twin: 'theme-fouram-light' },
30
+ { id: 'theme-wintercame-dark', mode: 'dark', twin: 'theme-wintercame-light' },
31
+ { id: 'theme-sun-dark', mode: 'dark', twin: 'theme-sun-light' },
32
+ { id: 'theme-console-dark', mode: 'dark', twin: 'theme-console-light' },
33
+ { id: 'theme-dracula-dark', mode: 'dark', twin: 'theme-dracula-light' },
34
+ { id: 'theme-catppuccin-mocha', mode: 'dark', twin: 'theme-catppuccin-latte' },
35
+ { id: 'theme-nord-dark', mode: 'dark', twin: 'theme-nord-light' },
36
+ { id: 'theme-gruvbox-dark', mode: 'dark', twin: 'theme-gruvbox-light' },
37
+ { id: 'theme-onedark-pro', mode: 'dark', twin: 'theme-onelight-pro' },
38
+ { id: 'theme-rose-pine-dark', mode: 'dark', twin: 'theme-rose-pine-light' },
39
+ { id: 'theme-midnight-emerald-dark', mode: 'dark', twin: 'theme-midnight-emerald-light' },
40
+ { id: 'theme-obsidian-crimson-dark', mode: 'dark', twin: 'theme-obsidian-crimson-light' },
41
+ { id: 'theme-synthwave-dark', mode: 'dark', twin: 'theme-synthwave-light' },
42
+ { id: 'theme-deep-ocean-dark', mode: 'dark', twin: 'theme-deep-ocean-light' },
43
+ { id: 'theme-amethyst-void-dark', mode: 'dark', twin: 'theme-amethyst-void-light' },
44
+ { id: 'theme-dark-default', mode: 'dark', twin: 'theme-light-default' },
45
+ { id: 'theme-himalaya-dark', mode: 'dark', twin: 'theme-himalaya-light' },
46
+ { id: 'theme-editorial-dark', mode: 'dark', twin: 'theme-editorial-light' },
47
+ { id: 'theme-space-dark', mode: 'dark', twin: 'theme-space-light' },
48
+ { id: 'theme-molly-dark', mode: 'dark', twin: 'theme-molly-light' },
49
+ { id: 'theme-malana-dark', mode: 'dark', twin: 'theme-malana-light' },
50
+ { id: 'theme-coresync-dark', mode: 'dark', twin: 'theme-coresync-light' },
51
+ { id: 'theme-studio-dark', mode: 'dark', twin: 'theme-studio-light' },
52
+ { id: 'theme-matcha-dark', mode: 'dark', twin: 'theme-matcha-light' },
53
+ { id: 'theme-sakura-dark', mode: 'dark', twin: 'theme-sakura-light' },
54
+ { id: 'theme-nordic-frost-dark', mode: 'dark', twin: 'theme-nordic-frost-light' },
55
+ { id: 'theme-desert-dune-dark', mode: 'dark', twin: 'theme-desert-dune-light' },
56
+ { id: 'theme-lavender-mist-dark', mode: 'dark', twin: 'theme-lavender-mist-light' },
57
+ { id: 'theme-botanical-dark', mode: 'dark', twin: 'theme-botanical-light' },
58
+ { id: 'theme-clay-studio-dark', mode: 'dark', twin: 'theme-clay-studio-light' },
59
+ { id: 'theme-solaris-dark', mode: 'dark', twin: 'theme-solaris-light' },
60
+ { id: 'theme-cyberpunk-day-dark', mode: 'dark', twin: 'theme-cyberpunk-day-light' },
61
+ { id: 'theme-copper-patina-dark', mode: 'dark', twin: 'theme-copper-patina-light' },
62
+ { id: 'theme-lagoona-light', mode: 'light', twin: 'theme-lagoona-dark' },
63
+ { id: 'theme-frozen-light', mode: 'light', twin: 'theme-frozen-dark' },
64
+ { id: 'theme-night-light', mode: 'light', twin: 'theme-night-dark' },
65
+ { id: 'theme-inkworm-light', mode: 'light', twin: 'theme-inkworm-dark' },
66
+ { id: 'theme-fouram-light', mode: 'light', twin: 'theme-fouram-dark' },
67
+ { id: 'theme-wintercame-light', mode: 'light', twin: 'theme-wintercame-dark' },
68
+ { id: 'theme-console-light', mode: 'light', twin: 'theme-console-dark' },
69
+ { id: 'theme-catppuccin-latte', mode: 'light', twin: 'theme-catppuccin-mocha' },
70
+ { id: 'theme-nord-light', mode: 'light', twin: 'theme-nord-dark' },
71
+ { id: 'theme-gruvbox-light', mode: 'light', twin: 'theme-gruvbox-dark' },
72
+ { id: 'theme-onelight-pro', mode: 'light', twin: 'theme-onedark-pro' },
73
+ { id: 'theme-rose-pine-light', mode: 'light', twin: 'theme-rose-pine-dark' },
74
+ { id: 'theme-midnight-emerald-light', mode: 'light', twin: 'theme-midnight-emerald-dark' },
75
+ { id: 'theme-obsidian-crimson-light', mode: 'light', twin: 'theme-obsidian-crimson-dark' },
76
+ { id: 'theme-synthwave-light', mode: 'light', twin: 'theme-synthwave-dark' },
77
+ { id: 'theme-deep-ocean-light', mode: 'light', twin: 'theme-deep-ocean-dark' },
78
+ { id: 'theme-amethyst-void-light', mode: 'light', twin: 'theme-amethyst-void-dark' }
44
79
  ];
45
80
  export const themeIds = themes.map((t) => t.id);
package/dist/version.d.ts CHANGED
@@ -1 +1 @@
1
- export declare const version = "0.7.0";
1
+ export declare const version = "0.8.0";
package/dist/version.js CHANGED
@@ -1,2 +1,2 @@
1
1
  // Generated from package.json by scripts/update-registry.js — do not edit.
2
- export const version = '0.7.0';
2
+ export const version = '0.8.0';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fractalstyler2",
3
- "version": "0.7.0",
3
+ "version": "0.8.0",
4
4
  "description": "A composition styling system, shipped as plain CSS and as editable SASS. The class registry is the public API: compose in markup, write no stylesheet.",
5
5
  "bin": {
6
6
  "fractalstyler2": "./dist/cli.js",
@@ -16,7 +16,8 @@
16
16
  "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch",
17
17
  "validate:deck": "node scripts/validate-deck.js",
18
18
  "css": "node scripts/build-css.js",
19
- "version": "npm run registry && git add -A"
19
+ "version": "npm run registry && git add -A",
20
+ "pair": "node scripts/generate-pairs.mjs && node scripts/update-registry.js"
20
21
  },
21
22
  "files": [
22
23
  "dist",
@@ -38,19 +39,37 @@
38
39
  "types": "./dist/index.d.ts",
39
40
  "svelte": "./dist/index.js"
40
41
  },
41
- "./styles": "./dist/styles/index.sass",
42
+ "./styles": {
43
+ "types": "./dist/asset.d.ts",
44
+ "default": "./dist/styles/index.sass"
45
+ },
42
46
  "./styles/*": "./dist/styles/*",
43
- "./tokens": "./dist/styles/_00_tokens.sass",
47
+ "./tokens": {
48
+ "types": "./dist/asset.d.ts",
49
+ "default": "./dist/styles/_00_tokens.sass"
50
+ },
44
51
  "./mcp": "./dist/mcp/server.js",
45
52
  "./package.json": "./package.json",
46
- "./themes": "./dist/styles/_00_themes.sass",
53
+ "./themes": {
54
+ "types": "./dist/asset.d.ts",
55
+ "default": "./dist/styles/_00_themes.sass"
56
+ },
47
57
  "./presets": {
48
58
  "types": "./dist/presets.core.d.ts",
49
59
  "default": "./dist/presets.core.js"
50
60
  },
51
- "./css": "./dist/css/fractalstyler.css",
52
- "./css/min": "./dist/css/fractalstyler.min.css",
53
- "./styles/presets": "./dist/styles/_00_presets.sass"
61
+ "./css": {
62
+ "types": "./dist/asset.d.ts",
63
+ "default": "./dist/css/fractalstyler.css"
64
+ },
65
+ "./css/min": {
66
+ "types": "./dist/asset.d.ts",
67
+ "default": "./dist/css/fractalstyler.min.css"
68
+ },
69
+ "./styles/presets": {
70
+ "types": "./dist/asset.d.ts",
71
+ "default": "./dist/styles/_00_presets.sass"
72
+ }
54
73
  },
55
74
  "peerDependencies": {
56
75
  "svelte": "^5.0.0"
package/plugin.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fractalstyler2",
3
- "version": "0.7.0",
3
+ "version": "0.8.0",
4
4
  "description": "Composition styling system and design token engine — plain CSS or SASS — for web projects and AI coding agents.",
5
5
  "author": {
6
6
  "name": "Amrit",
package/registry.json CHANGED
@@ -631,6 +631,286 @@
631
631
  "description": "Built-in dark palette — pair with data-mode=\"dark\"",
632
632
  "example": "<html class=\"theme-amethyst-void-dark\" data-mode=\"dark\">"
633
633
  },
634
+ {
635
+ "class": ".theme-dark-default",
636
+ "layer": "L0",
637
+ "property": "22 colour tokens",
638
+ "file": "_00_themes.sass",
639
+ "description": "Built-in dark palette — pair with data-mode=\"dark\"",
640
+ "example": "<html class=\"theme-dark-default\" data-mode=\"dark\">"
641
+ },
642
+ {
643
+ "class": ".theme-himalaya-dark",
644
+ "layer": "L0",
645
+ "property": "22 colour tokens",
646
+ "file": "_00_themes.sass",
647
+ "description": "Built-in dark palette — pair with data-mode=\"dark\"",
648
+ "example": "<html class=\"theme-himalaya-dark\" data-mode=\"dark\">"
649
+ },
650
+ {
651
+ "class": ".theme-editorial-dark",
652
+ "layer": "L0",
653
+ "property": "22 colour tokens",
654
+ "file": "_00_themes.sass",
655
+ "description": "Built-in dark palette — pair with data-mode=\"dark\"",
656
+ "example": "<html class=\"theme-editorial-dark\" data-mode=\"dark\">"
657
+ },
658
+ {
659
+ "class": ".theme-space-dark",
660
+ "layer": "L0",
661
+ "property": "22 colour tokens",
662
+ "file": "_00_themes.sass",
663
+ "description": "Built-in dark palette — pair with data-mode=\"dark\"",
664
+ "example": "<html class=\"theme-space-dark\" data-mode=\"dark\">"
665
+ },
666
+ {
667
+ "class": ".theme-molly-dark",
668
+ "layer": "L0",
669
+ "property": "22 colour tokens",
670
+ "file": "_00_themes.sass",
671
+ "description": "Built-in dark palette — pair with data-mode=\"dark\"",
672
+ "example": "<html class=\"theme-molly-dark\" data-mode=\"dark\">"
673
+ },
674
+ {
675
+ "class": ".theme-malana-dark",
676
+ "layer": "L0",
677
+ "property": "22 colour tokens",
678
+ "file": "_00_themes.sass",
679
+ "description": "Built-in dark palette — pair with data-mode=\"dark\"",
680
+ "example": "<html class=\"theme-malana-dark\" data-mode=\"dark\">"
681
+ },
682
+ {
683
+ "class": ".theme-coresync-dark",
684
+ "layer": "L0",
685
+ "property": "22 colour tokens",
686
+ "file": "_00_themes.sass",
687
+ "description": "Built-in dark palette — pair with data-mode=\"dark\"",
688
+ "example": "<html class=\"theme-coresync-dark\" data-mode=\"dark\">"
689
+ },
690
+ {
691
+ "class": ".theme-studio-dark",
692
+ "layer": "L0",
693
+ "property": "22 colour tokens",
694
+ "file": "_00_themes.sass",
695
+ "description": "Built-in dark palette — pair with data-mode=\"dark\"",
696
+ "example": "<html class=\"theme-studio-dark\" data-mode=\"dark\">"
697
+ },
698
+ {
699
+ "class": ".theme-matcha-dark",
700
+ "layer": "L0",
701
+ "property": "22 colour tokens",
702
+ "file": "_00_themes.sass",
703
+ "description": "Built-in dark palette — pair with data-mode=\"dark\"",
704
+ "example": "<html class=\"theme-matcha-dark\" data-mode=\"dark\">"
705
+ },
706
+ {
707
+ "class": ".theme-sakura-dark",
708
+ "layer": "L0",
709
+ "property": "22 colour tokens",
710
+ "file": "_00_themes.sass",
711
+ "description": "Built-in dark palette — pair with data-mode=\"dark\"",
712
+ "example": "<html class=\"theme-sakura-dark\" data-mode=\"dark\">"
713
+ },
714
+ {
715
+ "class": ".theme-nordic-frost-dark",
716
+ "layer": "L0",
717
+ "property": "22 colour tokens",
718
+ "file": "_00_themes.sass",
719
+ "description": "Built-in dark palette — pair with data-mode=\"dark\"",
720
+ "example": "<html class=\"theme-nordic-frost-dark\" data-mode=\"dark\">"
721
+ },
722
+ {
723
+ "class": ".theme-desert-dune-dark",
724
+ "layer": "L0",
725
+ "property": "22 colour tokens",
726
+ "file": "_00_themes.sass",
727
+ "description": "Built-in dark palette — pair with data-mode=\"dark\"",
728
+ "example": "<html class=\"theme-desert-dune-dark\" data-mode=\"dark\">"
729
+ },
730
+ {
731
+ "class": ".theme-lavender-mist-dark",
732
+ "layer": "L0",
733
+ "property": "22 colour tokens",
734
+ "file": "_00_themes.sass",
735
+ "description": "Built-in dark palette — pair with data-mode=\"dark\"",
736
+ "example": "<html class=\"theme-lavender-mist-dark\" data-mode=\"dark\">"
737
+ },
738
+ {
739
+ "class": ".theme-botanical-dark",
740
+ "layer": "L0",
741
+ "property": "22 colour tokens",
742
+ "file": "_00_themes.sass",
743
+ "description": "Built-in dark palette — pair with data-mode=\"dark\"",
744
+ "example": "<html class=\"theme-botanical-dark\" data-mode=\"dark\">"
745
+ },
746
+ {
747
+ "class": ".theme-clay-studio-dark",
748
+ "layer": "L0",
749
+ "property": "22 colour tokens",
750
+ "file": "_00_themes.sass",
751
+ "description": "Built-in dark palette — pair with data-mode=\"dark\"",
752
+ "example": "<html class=\"theme-clay-studio-dark\" data-mode=\"dark\">"
753
+ },
754
+ {
755
+ "class": ".theme-solaris-dark",
756
+ "layer": "L0",
757
+ "property": "22 colour tokens",
758
+ "file": "_00_themes.sass",
759
+ "description": "Built-in dark palette — pair with data-mode=\"dark\"",
760
+ "example": "<html class=\"theme-solaris-dark\" data-mode=\"dark\">"
761
+ },
762
+ {
763
+ "class": ".theme-cyberpunk-day-dark",
764
+ "layer": "L0",
765
+ "property": "22 colour tokens",
766
+ "file": "_00_themes.sass",
767
+ "description": "Built-in dark palette — pair with data-mode=\"dark\"",
768
+ "example": "<html class=\"theme-cyberpunk-day-dark\" data-mode=\"dark\">"
769
+ },
770
+ {
771
+ "class": ".theme-copper-patina-dark",
772
+ "layer": "L0",
773
+ "property": "22 colour tokens",
774
+ "file": "_00_themes.sass",
775
+ "description": "Built-in dark palette — pair with data-mode=\"dark\"",
776
+ "example": "<html class=\"theme-copper-patina-dark\" data-mode=\"dark\">"
777
+ },
778
+ {
779
+ "class": ".theme-lagoona-light",
780
+ "layer": "L0",
781
+ "property": "22 colour tokens",
782
+ "file": "_00_themes.sass",
783
+ "description": "Built-in light palette — pair with data-mode=\"light\"",
784
+ "example": "<html class=\"theme-lagoona-light\" data-mode=\"light\">"
785
+ },
786
+ {
787
+ "class": ".theme-frozen-light",
788
+ "layer": "L0",
789
+ "property": "22 colour tokens",
790
+ "file": "_00_themes.sass",
791
+ "description": "Built-in light palette — pair with data-mode=\"light\"",
792
+ "example": "<html class=\"theme-frozen-light\" data-mode=\"light\">"
793
+ },
794
+ {
795
+ "class": ".theme-night-light",
796
+ "layer": "L0",
797
+ "property": "22 colour tokens",
798
+ "file": "_00_themes.sass",
799
+ "description": "Built-in light palette — pair with data-mode=\"light\"",
800
+ "example": "<html class=\"theme-night-light\" data-mode=\"light\">"
801
+ },
802
+ {
803
+ "class": ".theme-inkworm-light",
804
+ "layer": "L0",
805
+ "property": "22 colour tokens",
806
+ "file": "_00_themes.sass",
807
+ "description": "Built-in light palette — pair with data-mode=\"light\"",
808
+ "example": "<html class=\"theme-inkworm-light\" data-mode=\"light\">"
809
+ },
810
+ {
811
+ "class": ".theme-fouram-light",
812
+ "layer": "L0",
813
+ "property": "22 colour tokens",
814
+ "file": "_00_themes.sass",
815
+ "description": "Built-in light palette — pair with data-mode=\"light\"",
816
+ "example": "<html class=\"theme-fouram-light\" data-mode=\"light\">"
817
+ },
818
+ {
819
+ "class": ".theme-wintercame-light",
820
+ "layer": "L0",
821
+ "property": "22 colour tokens",
822
+ "file": "_00_themes.sass",
823
+ "description": "Built-in light palette — pair with data-mode=\"light\"",
824
+ "example": "<html class=\"theme-wintercame-light\" data-mode=\"light\">"
825
+ },
826
+ {
827
+ "class": ".theme-console-light",
828
+ "layer": "L0",
829
+ "property": "22 colour tokens",
830
+ "file": "_00_themes.sass",
831
+ "description": "Built-in light palette — pair with data-mode=\"light\"",
832
+ "example": "<html class=\"theme-console-light\" data-mode=\"light\">"
833
+ },
834
+ {
835
+ "class": ".theme-catppuccin-latte",
836
+ "layer": "L0",
837
+ "property": "22 colour tokens",
838
+ "file": "_00_themes.sass",
839
+ "description": "Built-in light palette — pair with data-mode=\"light\"",
840
+ "example": "<html class=\"theme-catppuccin-latte\" data-mode=\"light\">"
841
+ },
842
+ {
843
+ "class": ".theme-nord-light",
844
+ "layer": "L0",
845
+ "property": "22 colour tokens",
846
+ "file": "_00_themes.sass",
847
+ "description": "Built-in light palette — pair with data-mode=\"light\"",
848
+ "example": "<html class=\"theme-nord-light\" data-mode=\"light\">"
849
+ },
850
+ {
851
+ "class": ".theme-gruvbox-light",
852
+ "layer": "L0",
853
+ "property": "22 colour tokens",
854
+ "file": "_00_themes.sass",
855
+ "description": "Built-in light palette — pair with data-mode=\"light\"",
856
+ "example": "<html class=\"theme-gruvbox-light\" data-mode=\"light\">"
857
+ },
858
+ {
859
+ "class": ".theme-onelight-pro",
860
+ "layer": "L0",
861
+ "property": "22 colour tokens",
862
+ "file": "_00_themes.sass",
863
+ "description": "Built-in light palette — pair with data-mode=\"light\"",
864
+ "example": "<html class=\"theme-onelight-pro\" data-mode=\"light\">"
865
+ },
866
+ {
867
+ "class": ".theme-rose-pine-light",
868
+ "layer": "L0",
869
+ "property": "22 colour tokens",
870
+ "file": "_00_themes.sass",
871
+ "description": "Built-in light palette — pair with data-mode=\"light\"",
872
+ "example": "<html class=\"theme-rose-pine-light\" data-mode=\"light\">"
873
+ },
874
+ {
875
+ "class": ".theme-midnight-emerald-light",
876
+ "layer": "L0",
877
+ "property": "22 colour tokens",
878
+ "file": "_00_themes.sass",
879
+ "description": "Built-in light palette — pair with data-mode=\"light\"",
880
+ "example": "<html class=\"theme-midnight-emerald-light\" data-mode=\"light\">"
881
+ },
882
+ {
883
+ "class": ".theme-obsidian-crimson-light",
884
+ "layer": "L0",
885
+ "property": "22 colour tokens",
886
+ "file": "_00_themes.sass",
887
+ "description": "Built-in light palette — pair with data-mode=\"light\"",
888
+ "example": "<html class=\"theme-obsidian-crimson-light\" data-mode=\"light\">"
889
+ },
890
+ {
891
+ "class": ".theme-synthwave-light",
892
+ "layer": "L0",
893
+ "property": "22 colour tokens",
894
+ "file": "_00_themes.sass",
895
+ "description": "Built-in light palette — pair with data-mode=\"light\"",
896
+ "example": "<html class=\"theme-synthwave-light\" data-mode=\"light\">"
897
+ },
898
+ {
899
+ "class": ".theme-deep-ocean-light",
900
+ "layer": "L0",
901
+ "property": "22 colour tokens",
902
+ "file": "_00_themes.sass",
903
+ "description": "Built-in light palette — pair with data-mode=\"light\"",
904
+ "example": "<html class=\"theme-deep-ocean-light\" data-mode=\"light\">"
905
+ },
906
+ {
907
+ "class": ".theme-amethyst-void-light",
908
+ "layer": "L0",
909
+ "property": "22 colour tokens",
910
+ "file": "_00_themes.sass",
911
+ "description": "Built-in light palette — pair with data-mode=\"light\"",
912
+ "example": "<html class=\"theme-amethyst-void-light\" data-mode=\"light\">"
913
+ },
634
914
  {
635
915
  "class": ".box",
636
916
  "layer": "L2",
@@ -975,6 +1255,22 @@
975
1255
  "description": ".sticky component / container",
976
1256
  "example": "<div class=\"sticky\">"
977
1257
  },
1258
+ {
1259
+ "class": ".scroll-y",
1260
+ "layer": "L2",
1261
+ "property": "",
1262
+ "file": "_03_containers.sass",
1263
+ "description": "Vertical scroll inside a bounded height; needs an .h-* or a constraining flex parent",
1264
+ "example": "<div class=\"scroll-y\">"
1265
+ },
1266
+ {
1267
+ "class": ".scroll-x",
1268
+ "layer": "L2",
1269
+ "property": "",
1270
+ "file": "_03_containers.sass",
1271
+ "description": "Horizontal scroll inside a bounded width; .reel adds snap points",
1272
+ "example": "<div class=\"scroll-x\">"
1273
+ },
978
1274
  {
979
1275
  "class": ".grid-1",
980
1276
  "layer": "L3",
@@ -9,7 +9,7 @@ description: Compose UI components and page layouts with the fractalstyler2 clas
9
9
  entire public API.** You compose in markup; you do not author CSS.
10
10
 
11
11
  It ships as plain CSS and as editable SASS, from one source. Which one a
12
- project took changes nothing you do: the classes, tokens, 41 themes and four
12
+ project took changes nothing you do: the classes, tokens, 76 themes and four
13
13
  preset axes are identical either way. Check for `fractalstyler.css` or a
14
14
  `src/lib/styles/` directory to know which you are in — and never assume a SASS
15
15
  toolchain exists.
@@ -154,6 +154,14 @@ An absent attribute means that axis's default. Values are in
154
154
  `references/tokens.md`. Presets remap tokens only; they never require a markup
155
155
  change.
156
156
 
157
+ To drive any of this from code — set a preset, toggle light/dark, apply one of
158
+ the 76 palettes, or read what is currently active — use the package runtime
159
+ rather than writing to `document.documentElement` yourself. It persists the
160
+ choice and stamps it before first paint. `docs/14-api.md` is the complete
161
+ reference; the short version is `initPresets()` once on mount, then
162
+ `setPreset`, `toggleMode`, and `setTheme`. Prebuilt controls ship as
163
+ `ModeToggle`, `ThemePicker`, and one picker per axis.
164
+
157
165
  ---
158
166
 
159
167
  ## MCP Tools
@@ -1,7 +1,7 @@
1
1
  # Fractalstyler2 — Class Reference
2
2
 
3
3
  GENERATED FILE — do not edit. Emitted by `scripts/update-registry.js` from the
4
- parsed stylesheet. 250 classes across 89 tokens.
4
+ parsed stylesheet. 287 classes across 89 tokens.
5
5
 
6
6
  **The classes below are the entire public API.** The system defines no
7
7
  authoring mixins and no SASS functions — `+stack`, `+surface`, `space()` and
@@ -62,6 +62,41 @@ Raw values. Every token also exists as a class.
62
62
  | `.theme-synthwave-dark` | 22 colour tokens | `_00_themes.sass` |
63
63
  | `.theme-deep-ocean-dark` | 22 colour tokens | `_00_themes.sass` |
64
64
  | `.theme-amethyst-void-dark` | 22 colour tokens | `_00_themes.sass` |
65
+ | `.theme-dark-default` | 22 colour tokens | `_00_themes.sass` |
66
+ | `.theme-himalaya-dark` | 22 colour tokens | `_00_themes.sass` |
67
+ | `.theme-editorial-dark` | 22 colour tokens | `_00_themes.sass` |
68
+ | `.theme-space-dark` | 22 colour tokens | `_00_themes.sass` |
69
+ | `.theme-molly-dark` | 22 colour tokens | `_00_themes.sass` |
70
+ | `.theme-malana-dark` | 22 colour tokens | `_00_themes.sass` |
71
+ | `.theme-coresync-dark` | 22 colour tokens | `_00_themes.sass` |
72
+ | `.theme-studio-dark` | 22 colour tokens | `_00_themes.sass` |
73
+ | `.theme-matcha-dark` | 22 colour tokens | `_00_themes.sass` |
74
+ | `.theme-sakura-dark` | 22 colour tokens | `_00_themes.sass` |
75
+ | `.theme-nordic-frost-dark` | 22 colour tokens | `_00_themes.sass` |
76
+ | `.theme-desert-dune-dark` | 22 colour tokens | `_00_themes.sass` |
77
+ | `.theme-lavender-mist-dark` | 22 colour tokens | `_00_themes.sass` |
78
+ | `.theme-botanical-dark` | 22 colour tokens | `_00_themes.sass` |
79
+ | `.theme-clay-studio-dark` | 22 colour tokens | `_00_themes.sass` |
80
+ | `.theme-solaris-dark` | 22 colour tokens | `_00_themes.sass` |
81
+ | `.theme-cyberpunk-day-dark` | 22 colour tokens | `_00_themes.sass` |
82
+ | `.theme-copper-patina-dark` | 22 colour tokens | `_00_themes.sass` |
83
+ | `.theme-lagoona-light` | 22 colour tokens | `_00_themes.sass` |
84
+ | `.theme-frozen-light` | 22 colour tokens | `_00_themes.sass` |
85
+ | `.theme-night-light` | 22 colour tokens | `_00_themes.sass` |
86
+ | `.theme-inkworm-light` | 22 colour tokens | `_00_themes.sass` |
87
+ | `.theme-fouram-light` | 22 colour tokens | `_00_themes.sass` |
88
+ | `.theme-wintercame-light` | 22 colour tokens | `_00_themes.sass` |
89
+ | `.theme-console-light` | 22 colour tokens | `_00_themes.sass` |
90
+ | `.theme-catppuccin-latte` | 22 colour tokens | `_00_themes.sass` |
91
+ | `.theme-nord-light` | 22 colour tokens | `_00_themes.sass` |
92
+ | `.theme-gruvbox-light` | 22 colour tokens | `_00_themes.sass` |
93
+ | `.theme-onelight-pro` | 22 colour tokens | `_00_themes.sass` |
94
+ | `.theme-rose-pine-light` | 22 colour tokens | `_00_themes.sass` |
95
+ | `.theme-midnight-emerald-light` | 22 colour tokens | `_00_themes.sass` |
96
+ | `.theme-obsidian-crimson-light` | 22 colour tokens | `_00_themes.sass` |
97
+ | `.theme-synthwave-light` | 22 colour tokens | `_00_themes.sass` |
98
+ | `.theme-deep-ocean-light` | 22 colour tokens | `_00_themes.sass` |
99
+ | `.theme-amethyst-void-light` | 22 colour tokens | `_00_themes.sass` |
65
100
 
66
101
  ---
67
102
 
@@ -154,6 +189,8 @@ Flow and alignment. x* is ALWAYS horizontal, y* is ALWAYS vertical, in every con
154
189
  | `.absolute` | .absolute component / container | `_03_containers.sass` |
155
190
  | `.fixed` | .fixed component / container | `_03_containers.sass` |
156
191
  | `.sticky` | .sticky component / container | `_03_containers.sass` |
192
+ | `.scroll-y` | Vertical scroll inside a bounded height; needs an .h-* or a constraining flex parent | `_03_containers.sass` |
193
+ | `.scroll-x` | Horizontal scroll inside a bounded width; .reel adds snap points | `_03_containers.sass` |
157
194
 
158
195
  ---
159
196