1212 @return $result ;
1313}
1414
15+ // Themes map sub-keys
16+ //
17+ // Return var() references to root tokens instead of raw values.
18+ // Ex: theme-color-refs("bg") => (primary: var(--primary-bg), accent: var(--accent-bg), ...)
19+ @function theme-color-refs ($key ) {
20+ $result : ();
21+
22+ @each $color-name , $color-map in $theme-colors {
23+ @if map .has-key ($color-map , $key ) {
24+ $result : map .merge ($result , ($color-name : var (--#{$color-name}-#{$key} )));
25+ }
26+ }
27+
28+ @return $result ;
29+ }
30+
31+ // Theme token to root tokens
32+ //
33+ // Returns the global :root token reference for a given a given token map, prefix, and key.
34+ // Ex: theme-token-refs($theme-bgs, "bg") => (body: var(--bg-body), 1: var(--bg-1), ...)
35+ // Skips `inherit` since it's a CSS-wide keyword that can't be stored in a custom property.
36+ @function theme-token-refs ($map , $prefix ) {
37+ $result : ();
38+
39+ @each $key , $value in $map {
40+ @if $value != inherit {
41+ $result : map .merge ($result , ($key : var (--#{$prefix}-#{$key} )));
42+ }
43+ }
44+
45+ @return $result ;
46+ }
47+
1548// Generate opacity values using color-mix()
1649@function theme-opacity-values ($color-var , $opacities : $util-opacity ) {
1750 $result : ();
4578$theme-colors : (
4679 " primary" : (
4780 " base" : var (--blue-500 ),
48- " text " : light-dark (var (--blue-600 ), var (--blue-400 )),
49- " text -emphasis" : light-dark (var (--blue-800 ), var (--blue-200 )),
81+ " fg " : light-dark (var (--blue-600 ), var (--blue-400 )),
82+ " fg -emphasis" : light-dark (var (--blue-800 ), var (--blue-200 )),
5083 " bg" : var (--blue-500 ),
5184 " bg-subtle" : light-dark (var (--blue-100 ), var (--blue-900 )),
5285 " bg-muted" : light-dark (var (--blue-200 ), var (--blue-800 )),
@@ -56,8 +89,8 @@ $theme-colors: (
5689 ),
5790 " accent" : (
5891 " base" : var (--indigo-500 ),
59- " text " : light-dark (var (--indigo-600 ), color-mix (in oklch , var (--indigo-400 ), var (--indigo-300 ))),
60- " text -emphasis" : light-dark (var (--indigo-800 ), var (--indigo-300 )),
92+ " fg " : light-dark (var (--indigo-600 ), color-mix (in oklch , var (--indigo-400 ), var (--indigo-300 ))),
93+ " fg -emphasis" : light-dark (var (--indigo-800 ), var (--indigo-300 )),
6194 " bg" : var (--indigo-500 ),
6295 " bg-subtle" : light-dark (var (--indigo-100 ), var (--indigo-900 )),
6396 " bg-muted" : light-dark (var (--indigo-200 ), var (--indigo-800 )),
@@ -67,8 +100,8 @@ $theme-colors: (
67100 ),
68101 " success" : (
69102 " base" : var (--green-500 ),
70- " text " : light-dark (var (--green-600 ), var (--green-400 )),
71- " text -emphasis" : light-dark (var (--green-800 ), var (--green-300 )),
103+ " fg " : light-dark (var (--green-600 ), var (--green-400 )),
104+ " fg -emphasis" : light-dark (var (--green-800 ), var (--green-300 )),
72105 " bg" : var (--green-500 ),
73106 " bg-subtle" : light-dark (var (--green-100 ), var (--green-900 )),
74107 " bg-muted" : light-dark (var (--green-200 ), var (--green-800 )),
@@ -78,8 +111,8 @@ $theme-colors: (
78111 ),
79112 " danger" : (
80113 " base" : var (--red-500 ),
81- " text " : light-dark (var (--red-600 ), var (--red-400 )),
82- " text -emphasis" : light-dark (var (--red-800 ), var (--red-300 )),
114+ " fg " : light-dark (var (--red-600 ), var (--red-400 )),
115+ " fg -emphasis" : light-dark (var (--red-800 ), var (--red-300 )),
83116 " bg" : var (--red-500 ),
84117 " bg-subtle" : light-dark (var (--red-100 ), var (--red-900 )),
85118 " bg-muted" : light-dark (var (--red-200 ), var (--red-800 )),
@@ -89,8 +122,8 @@ $theme-colors: (
89122 ),
90123 " warning" : (
91124 " base" : var (--yellow-500 ),
92- " text " : light-dark (var (--yellow-700 ), var (--yellow-400 )),
93- " text -emphasis" : light-dark (var (--yellow-800 ), var (--yellow-300 )),
125+ " fg " : light-dark (var (--yellow-700 ), var (--yellow-400 )),
126+ " fg -emphasis" : light-dark (var (--yellow-800 ), var (--yellow-300 )),
94127 " bg" : var (--yellow-500 ),
95128 " bg-subtle" : light-dark (var (--yellow-100 ), var (--yellow-900 )),
96129 " bg-muted" : light-dark (var (--yellow-200 ), var (--yellow-800 )),
@@ -100,8 +133,8 @@ $theme-colors: (
100133 ),
101134 " info" : (
102135 " base" : var (--cyan-500 ),
103- " text " : light-dark (var (--cyan-600 ), var (--cyan-400 )),
104- " text -emphasis" : light-dark (var (--cyan-800 ), var (--cyan-300 )),
136+ " fg " : light-dark (var (--cyan-600 ), var (--cyan-400 )),
137+ " fg -emphasis" : light-dark (var (--cyan-800 ), var (--cyan-300 )),
105138 " bg" : var (--cyan-500 ),
106139 " bg-subtle" : light-dark (var (--cyan-100 ), var (--cyan-900 )),
107140 " bg-muted" : light-dark (var (--cyan-200 ), var (--cyan-800 )),
@@ -111,8 +144,8 @@ $theme-colors: (
111144 ),
112145 " inverse" : (
113146 " base" : var (--gray-900 ),
114- " text " : light-dark (var (--gray-900 ), var (--gray-200 )),
115- " text -emphasis" : light-dark (var (--gray-975 ), var (--white )),
147+ " fg " : light-dark (var (--gray-900 ), var (--gray-200 )),
148+ " fg -emphasis" : light-dark (var (--gray-975 ), var (--white )),
116149 " bg" : light-dark (var (--gray-900 ), var (--gray-025 )),
117150 " bg-subtle" : light-dark (var (--gray-100 ), var (--gray-900 )),
118151 " bg-muted" : light-dark (var (--gray-200 ), var (--gray-300 )),
@@ -122,8 +155,8 @@ $theme-colors: (
122155 ),
123156 " secondary" : (
124157 " base" : var (--gray-200 ),
125- " text " : light-dark (var (--gray-600 ), var (--gray-400 )),
126- " text -emphasis" : light-dark (var (--gray-800 ), var (--gray-200 )),
158+ " fg " : light-dark (var (--gray-600 ), var (--gray-400 )),
159+ " fg -emphasis" : light-dark (var (--gray-800 ), var (--gray-200 )),
127160 " bg" : light-dark (var (--gray-100 ), var (--gray-600 )),
128161 " bg-subtle" : light-dark (var (--gray-050 ), var (--gray-800 )),
129162 " bg-muted" : light-dark (var (--gray-100 ), var (--gray-700 )),
0 commit comments