@@ -7,14 +7,21 @@ const round = (num) =>
77 . replace ( / \. 0 $ / , '' )
88const rem = ( px ) => `${ round ( px / 16 ) } rem`
99const 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 ( '#' , '' )
1316 hex = hex . length === 3 ? hex . replace ( / ./ g, '$&$&' ) : hex
1417 const r = parseInt ( hex . substring ( 0 , 2 ) , 16 )
1518 const g = parseInt ( hex . substring ( 2 , 4 ) , 16 )
1619 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 } )`
1825}
1926
2027let defaultModifiers = {
@@ -1060,9 +1067,7 @@ let defaultModifiers = {
10601067 '--tw-prose-quote-borders' : colors . slate [ 200 ] ,
10611068 '--tw-prose-captions' : colors . slate [ 500 ] ,
10621069 '--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%' ) ,
10661071 '--tw-prose-code' : colors . slate [ 900 ] ,
10671072 '--tw-prose-pre-code' : colors . slate [ 200 ] ,
10681073 '--tw-prose-pre-bg' : colors . slate [ 800 ] ,
@@ -1080,7 +1085,7 @@ let defaultModifiers = {
10801085 '--tw-prose-invert-quote-borders' : colors . slate [ 700 ] ,
10811086 '--tw-prose-invert-captions' : colors . slate [ 400 ] ,
10821087 '--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%' ) ,
10841089 '--tw-prose-invert-code' : colors . white ,
10851090 '--tw-prose-invert-pre-code' : colors . slate [ 300 ] ,
10861091 '--tw-prose-invert-pre-bg' : 'rgb(0 0 0 / 50%)' ,
@@ -1103,9 +1108,7 @@ let defaultModifiers = {
11031108 '--tw-prose-quote-borders' : colors . gray [ 200 ] ,
11041109 '--tw-prose-captions' : colors . gray [ 500 ] ,
11051110 '--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%' ) ,
11091112 '--tw-prose-code' : colors . gray [ 900 ] ,
11101113 '--tw-prose-pre-code' : colors . gray [ 200 ] ,
11111114 '--tw-prose-pre-bg' : colors . gray [ 800 ] ,
@@ -1123,7 +1126,7 @@ let defaultModifiers = {
11231126 '--tw-prose-invert-quote-borders' : colors . gray [ 700 ] ,
11241127 '--tw-prose-invert-captions' : colors . gray [ 400 ] ,
11251128 '--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%' ) ,
11271130 '--tw-prose-invert-code' : colors . white ,
11281131 '--tw-prose-invert-pre-code' : colors . gray [ 300 ] ,
11291132 '--tw-prose-invert-pre-bg' : 'rgb(0 0 0 / 50%)' ,
@@ -1146,9 +1149,7 @@ let defaultModifiers = {
11461149 '--tw-prose-quote-borders' : colors . zinc [ 200 ] ,
11471150 '--tw-prose-captions' : colors . zinc [ 500 ] ,
11481151 '--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%' ) ,
11521153 '--tw-prose-code' : colors . zinc [ 900 ] ,
11531154 '--tw-prose-pre-code' : colors . zinc [ 200 ] ,
11541155 '--tw-prose-pre-bg' : colors . zinc [ 800 ] ,
@@ -1166,7 +1167,7 @@ let defaultModifiers = {
11661167 '--tw-prose-invert-quote-borders' : colors . zinc [ 700 ] ,
11671168 '--tw-prose-invert-captions' : colors . zinc [ 400 ] ,
11681169 '--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%' ) ,
11701171 '--tw-prose-invert-code' : colors . white ,
11711172 '--tw-prose-invert-pre-code' : colors . zinc [ 300 ] ,
11721173 '--tw-prose-invert-pre-bg' : 'rgb(0 0 0 / 50%)' ,
@@ -1189,9 +1190,7 @@ let defaultModifiers = {
11891190 '--tw-prose-quote-borders' : colors . neutral [ 200 ] ,
11901191 '--tw-prose-captions' : colors . neutral [ 500 ] ,
11911192 '--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%' ) ,
11951194 '--tw-prose-code' : colors . neutral [ 900 ] ,
11961195 '--tw-prose-pre-code' : colors . neutral [ 200 ] ,
11971196 '--tw-prose-pre-bg' : colors . neutral [ 800 ] ,
@@ -1209,7 +1208,7 @@ let defaultModifiers = {
12091208 '--tw-prose-invert-quote-borders' : colors . neutral [ 700 ] ,
12101209 '--tw-prose-invert-captions' : colors . neutral [ 400 ] ,
12111210 '--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%' ) ,
12131212 '--tw-prose-invert-code' : colors . white ,
12141213 '--tw-prose-invert-pre-code' : colors . neutral [ 300 ] ,
12151214 '--tw-prose-invert-pre-bg' : 'rgb(0 0 0 / 50%)' ,
@@ -1232,9 +1231,7 @@ let defaultModifiers = {
12321231 '--tw-prose-quote-borders' : colors . stone [ 200 ] ,
12331232 '--tw-prose-captions' : colors . stone [ 500 ] ,
12341233 '--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%' ) ,
12381235 '--tw-prose-code' : colors . stone [ 900 ] ,
12391236 '--tw-prose-pre-code' : colors . stone [ 200 ] ,
12401237 '--tw-prose-pre-bg' : colors . stone [ 800 ] ,
@@ -1252,7 +1249,7 @@ let defaultModifiers = {
12521249 '--tw-prose-invert-quote-borders' : colors . stone [ 700 ] ,
12531250 '--tw-prose-invert-captions' : colors . stone [ 400 ] ,
12541251 '--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%' ) ,
12561253 '--tw-prose-invert-code' : colors . white ,
12571254 '--tw-prose-invert-pre-code' : colors . stone [ 300 ] ,
12581255 '--tw-prose-invert-pre-bg' : 'rgb(0 0 0 / 50%)' ,
0 commit comments