@@ -7,14 +7,21 @@ const round = (num) =>
7
7
. replace ( / \. 0 $ / , '' )
8
8
const rem = ( px ) => `${ round ( px / 16 ) } rem`
9
9
const em = ( px , base ) => `${ round ( px / base ) } em`
10
- const isHex = ( hex ) => / ^ # [ 0 - 9 A - F ] { 6 } $ / i. test ( hex )
11
- const hexToRgb = ( hex ) => {
12
- hex = hex . replace ( '#' , '' )
10
+ const opacity = ( color , opacity ) => {
11
+ // In v3, the colors are hex encoded and a previous typography plugin version
12
+ // only handled these values. We keep the old behavior for backward
13
+ // compatibility with v3 codebases but use color-mix for any other color
14
+ // values.
15
+ hex = color . replace ( '#' , '' )
13
16
hex = hex . length === 3 ? hex . replace ( / ./ g, '$&$&' ) : hex
14
17
const r = parseInt ( hex . substring ( 0 , 2 ) , 16 )
15
18
const g = parseInt ( hex . substring ( 2 , 4 ) , 16 )
16
19
const b = parseInt ( hex . substring ( 4 , 6 ) , 16 )
17
- return `${ r } ${ g } ${ b } `
20
+
21
+ if ( Number . isNaN ( r ) || Number . isNaN ( g ) || Number . isNaN ( b ) ) {
22
+ return `color-mix(in oklab, ${ color } ${ opacity } , transparent)`
23
+ }
24
+ return `rgb(${ r } , ${ g } , ${ b } / ${ opacity } )`
18
25
}
19
26
20
27
let defaultModifiers = {
@@ -1060,9 +1067,7 @@ let defaultModifiers = {
1060
1067
'--tw-prose-quote-borders' : colors . slate [ 200 ] ,
1061
1068
'--tw-prose-captions' : colors . slate [ 500 ] ,
1062
1069
'--tw-prose-kbd' : colors . slate [ 900 ] ,
1063
- '--tw-prose-kbd-shadows' : isHex ( colors . slate [ 900 ] )
1064
- ? `rgb(${ hexToRgb ( colors . slate [ 900 ] ) } / 10%)`
1065
- : colors . slate [ 900 ] . replace ( ")" , " / .1)" ) ,
1070
+ '--tw-prose-kbd-shadows' : opacity ( colors . slate [ 900 ] , '10%' ) ,
1066
1071
'--tw-prose-code' : colors . slate [ 900 ] ,
1067
1072
'--tw-prose-pre-code' : colors . slate [ 200 ] ,
1068
1073
'--tw-prose-pre-bg' : colors . slate [ 800 ] ,
@@ -1080,7 +1085,7 @@ let defaultModifiers = {
1080
1085
'--tw-prose-invert-quote-borders' : colors . slate [ 700 ] ,
1081
1086
'--tw-prose-invert-captions' : colors . slate [ 400 ] ,
1082
1087
'--tw-prose-invert-kbd' : colors . white ,
1083
- '--tw-prose-invert-kbd-shadows' : `rgb( ${ hexToRgb ( colors . white ) } / 10%)` ,
1088
+ '--tw-prose-invert-kbd-shadows' : opacity ( colors . white , ' 10%' ) ,
1084
1089
'--tw-prose-invert-code' : colors . white ,
1085
1090
'--tw-prose-invert-pre-code' : colors . slate [ 300 ] ,
1086
1091
'--tw-prose-invert-pre-bg' : 'rgb(0 0 0 / 50%)' ,
@@ -1103,9 +1108,7 @@ let defaultModifiers = {
1103
1108
'--tw-prose-quote-borders' : colors . gray [ 200 ] ,
1104
1109
'--tw-prose-captions' : colors . gray [ 500 ] ,
1105
1110
'--tw-prose-kbd' : colors . gray [ 900 ] ,
1106
- '--tw-prose-kbd-shadows' : isHex ( colors . gray [ 900 ] )
1107
- ? `rgb(${ hexToRgb ( colors . gray [ 900 ] ) } / 10%)`
1108
- : colors . gray [ 900 ] . replace ( ")" , " / .1)" ) ,
1111
+ '--tw-prose-kbd-shadows' : opacity ( colors . gray [ 900 ] , '10%' ) ,
1109
1112
'--tw-prose-code' : colors . gray [ 900 ] ,
1110
1113
'--tw-prose-pre-code' : colors . gray [ 200 ] ,
1111
1114
'--tw-prose-pre-bg' : colors . gray [ 800 ] ,
@@ -1123,7 +1126,7 @@ let defaultModifiers = {
1123
1126
'--tw-prose-invert-quote-borders' : colors . gray [ 700 ] ,
1124
1127
'--tw-prose-invert-captions' : colors . gray [ 400 ] ,
1125
1128
'--tw-prose-invert-kbd' : colors . white ,
1126
- '--tw-prose-invert-kbd-shadows' : `rgb( ${ hexToRgb ( colors . white ) } / 10%)` ,
1129
+ '--tw-prose-invert-kbd-shadows' : opacity ( colors . white , ' 10%' ) ,
1127
1130
'--tw-prose-invert-code' : colors . white ,
1128
1131
'--tw-prose-invert-pre-code' : colors . gray [ 300 ] ,
1129
1132
'--tw-prose-invert-pre-bg' : 'rgb(0 0 0 / 50%)' ,
@@ -1146,9 +1149,7 @@ let defaultModifiers = {
1146
1149
'--tw-prose-quote-borders' : colors . zinc [ 200 ] ,
1147
1150
'--tw-prose-captions' : colors . zinc [ 500 ] ,
1148
1151
'--tw-prose-kbd' : colors . zinc [ 900 ] ,
1149
- '--tw-prose-kbd-shadows' : isHex ( colors . zinc [ 900 ] )
1150
- ? `rgb(${ hexToRgb ( colors . zinc [ 900 ] ) } / 10%)`
1151
- : colors . zinc [ 900 ] . replace ( ")" , " / .1)" ) ,
1152
+ '--tw-prose-kbd-shadows' : opacity ( colors . zinc [ 900 ] , '10%' ) ,
1152
1153
'--tw-prose-code' : colors . zinc [ 900 ] ,
1153
1154
'--tw-prose-pre-code' : colors . zinc [ 200 ] ,
1154
1155
'--tw-prose-pre-bg' : colors . zinc [ 800 ] ,
@@ -1166,7 +1167,7 @@ let defaultModifiers = {
1166
1167
'--tw-prose-invert-quote-borders' : colors . zinc [ 700 ] ,
1167
1168
'--tw-prose-invert-captions' : colors . zinc [ 400 ] ,
1168
1169
'--tw-prose-invert-kbd' : colors . white ,
1169
- '--tw-prose-invert-kbd-shadows' : `rgb( ${ hexToRgb ( colors . white ) } / 10%)` ,
1170
+ '--tw-prose-invert-kbd-shadows' : opacity ( colors . white , ' 10%' ) ,
1170
1171
'--tw-prose-invert-code' : colors . white ,
1171
1172
'--tw-prose-invert-pre-code' : colors . zinc [ 300 ] ,
1172
1173
'--tw-prose-invert-pre-bg' : 'rgb(0 0 0 / 50%)' ,
@@ -1189,9 +1190,7 @@ let defaultModifiers = {
1189
1190
'--tw-prose-quote-borders' : colors . neutral [ 200 ] ,
1190
1191
'--tw-prose-captions' : colors . neutral [ 500 ] ,
1191
1192
'--tw-prose-kbd' : colors . neutral [ 900 ] ,
1192
- '--tw-prose-kbd-shadows' : isHex ( colors . neutral [ 900 ] )
1193
- ? `rgb(${ hexToRgb ( colors . neutral [ 900 ] ) } / 10%)`
1194
- : colors . neutral [ 900 ] . replace ( ")" , " / .1)" ) ,
1193
+ '--tw-prose-kbd-shadows' : opacity ( colors . neutral [ 900 ] , '10%' ) ,
1195
1194
'--tw-prose-code' : colors . neutral [ 900 ] ,
1196
1195
'--tw-prose-pre-code' : colors . neutral [ 200 ] ,
1197
1196
'--tw-prose-pre-bg' : colors . neutral [ 800 ] ,
@@ -1209,7 +1208,7 @@ let defaultModifiers = {
1209
1208
'--tw-prose-invert-quote-borders' : colors . neutral [ 700 ] ,
1210
1209
'--tw-prose-invert-captions' : colors . neutral [ 400 ] ,
1211
1210
'--tw-prose-invert-kbd' : colors . white ,
1212
- '--tw-prose-invert-kbd-shadows' : `rgb( ${ hexToRgb ( colors . white ) } / 10%)` ,
1211
+ '--tw-prose-invert-kbd-shadows' : opacity ( colors . white , ' 10%' ) ,
1213
1212
'--tw-prose-invert-code' : colors . white ,
1214
1213
'--tw-prose-invert-pre-code' : colors . neutral [ 300 ] ,
1215
1214
'--tw-prose-invert-pre-bg' : 'rgb(0 0 0 / 50%)' ,
@@ -1232,9 +1231,7 @@ let defaultModifiers = {
1232
1231
'--tw-prose-quote-borders' : colors . stone [ 200 ] ,
1233
1232
'--tw-prose-captions' : colors . stone [ 500 ] ,
1234
1233
'--tw-prose-kbd' : colors . stone [ 900 ] ,
1235
- '--tw-prose-kbd-shadows' : isHex ( colors . stone [ 900 ] )
1236
- ? `rgb(${ hexToRgb ( colors . stone [ 900 ] ) } / 10%)`
1237
- : colors . stone [ 900 ] . replace ( ")" , " / .1)" ) ,
1234
+ '--tw-prose-kbd-shadows' : opacity ( colors . stone [ 900 ] , '10%' ) ,
1238
1235
'--tw-prose-code' : colors . stone [ 900 ] ,
1239
1236
'--tw-prose-pre-code' : colors . stone [ 200 ] ,
1240
1237
'--tw-prose-pre-bg' : colors . stone [ 800 ] ,
@@ -1252,7 +1249,7 @@ let defaultModifiers = {
1252
1249
'--tw-prose-invert-quote-borders' : colors . stone [ 700 ] ,
1253
1250
'--tw-prose-invert-captions' : colors . stone [ 400 ] ,
1254
1251
'--tw-prose-invert-kbd' : colors . white ,
1255
- '--tw-prose-invert-kbd-shadows' : `rgb( ${ hexToRgb ( colors . white ) } / 10%)` ,
1252
+ '--tw-prose-invert-kbd-shadows' : opacity ( colors . white , ' 10%' ) ,
1256
1253
'--tw-prose-invert-code' : colors . white ,
1257
1254
'--tw-prose-invert-pre-code' : colors . stone [ 300 ] ,
1258
1255
'--tw-prose-invert-pre-bg' : 'rgb(0 0 0 / 50%)' ,
0 commit comments