@@ -7,11 +7,11 @@ export const borderStyles = ['solid', 'dashed', 'dotted', 'double', 'hidden', 'n
77
88export const borders : Rule [ ] = [
99 // compound
10- [ / ^ (?: b o r d e r | b ) ( ) (?: - ( .+ ) ) ? $ / , handlerBorder , { autocomplete : '(border|b)-<directions>' } ] ,
11- [ / ^ (?: b o r d e r | b ) - ( [ x y ] ) (?: - ( .+ ) ) ? $ / , handlerBorder ] ,
12- [ / ^ (?: b o r d e r | b ) - ( [ r l t b s e ] ) (?: - ( .+ ) ) ? $ / , handlerBorder ] ,
13- [ / ^ (?: b o r d e r | b ) - ( b l o c k | i n l i n e ) (?: - ( .+ ) ) ? $ / , handlerBorder ] ,
14- [ / ^ (?: b o r d e r | b ) - ( [ b i ] [ s e ] ) (?: - ( .+ ) ) ? $ / , handlerBorder ] ,
10+ [ / ^ (?: b o r d e r | b ) ( ) (?: - ( .+ ) ) ? $ / , handlerBorderSize , { autocomplete : '(border|b)-<directions>' } ] ,
11+ [ / ^ (?: b o r d e r | b ) - ( [ x y ] ) (?: - ( .+ ) ) ? $ / , handlerBorderSize ] ,
12+ [ / ^ (?: b o r d e r | b ) - ( [ r l t b s e ] ) (?: - ( .+ ) ) ? $ / , handlerBorderSize ] ,
13+ [ / ^ (?: b o r d e r | b ) - ( b l o c k | i n l i n e ) (?: - ( .+ ) ) ? $ / , handlerBorderSize ] ,
14+ [ / ^ (?: b o r d e r | b ) - ( [ b i ] [ s e ] ) (?: - ( .+ ) ) ? $ / , handlerBorderSize ] ,
1515
1616 // size
1717 [ / ^ (?: b o r d e r | b ) - ( ) (?: w i d t h | s i z e ) - ( .+ ) $ / , handlerBorderSize , { autocomplete : [ '(border|b)-<num>' , '(border|b)-<directions>-<num>' ] } ] ,
@@ -21,11 +21,11 @@ export const borders: Rule[] = [
2121 [ / ^ (?: b o r d e r | b ) - ( [ b i ] [ s e ] ) - (?: w i d t h | s i z e ) - ( .+ ) $ / , handlerBorderSize ] ,
2222
2323 // colors
24- [ / ^ (?: b o r d e r | b ) - ( ) (?: c o l o r - ) ? ( .+ ) $ / , handlerBorderColor , { autocomplete : [ '(border|b)-$colors' , '(border|b)-<directions>-$colors' ] } ] ,
25- [ / ^ (?: b o r d e r | b ) - ( [ x y ] ) - (?: c o l o r - ) ? ( .+ ) $ / , handlerBorderColor ] ,
26- [ / ^ (?: b o r d e r | b ) - ( [ r l t b s e ] ) - (?: c o l o r - ) ? ( .+ ) $ / , handlerBorderColor ] ,
27- [ / ^ (?: b o r d e r | b ) - ( b l o c k | i n l i n e ) - (?: c o l o r - ) ? ( .+ ) $ / , handlerBorderColor ] ,
28- [ / ^ (?: b o r d e r | b ) - ( [ b i ] [ s e ] ) - (?: c o l o r - ) ? ( .+ ) $ / , handlerBorderColor ] ,
24+ [ / ^ (?: b o r d e r | b ) - ( ) (?: c o l o r - ) ? ( .+ ) $ / , handlerBorderColorOrSize , { autocomplete : [ '(border|b)-$colors' , '(border|b)-<directions>-$colors' ] } ] ,
25+ [ / ^ (?: b o r d e r | b ) - ( [ x y ] ) - (?: c o l o r - ) ? ( .+ ) $ / , handlerBorderColorOrSize ] ,
26+ [ / ^ (?: b o r d e r | b ) - ( [ r l t b s e ] ) - (?: c o l o r - ) ? ( .+ ) $ / , handlerBorderColorOrSize ] ,
27+ [ / ^ (?: b o r d e r | b ) - ( b l o c k | i n l i n e ) - (?: c o l o r - ) ? ( .+ ) $ / , handlerBorderColorOrSize ] ,
28+ [ / ^ (?: b o r d e r | b ) - ( [ b i ] [ s e ] ) - (?: c o l o r - ) ? ( .+ ) $ / , handlerBorderColorOrSize ] ,
2929
3030 // opacity
3131 [ / ^ (?: b o r d e r | b ) - ( ) o p (?: a c i t y ) ? - ? ( .+ ) $ / , handlerBorderOpacity , { autocomplete : '(border|b)-(op|opacity)-<percent>' } ] ,
@@ -80,35 +80,29 @@ function borderColorResolver(direction: string) {
8080 }
8181 }
8282 else if ( color ) {
83- if ( isCSSMathFn ( color ) ) {
84- return {
85- 'border-width' : color ,
86- }
87- }
88-
8983 return {
9084 [ `border${ direction } -color` ] : colorToString ( color , alpha ) ,
9185 }
9286 }
9387 }
9488}
9589
96- function handlerBorder ( m : string [ ] , ctx : RuleContext ) : CSSEntries | undefined {
97- return handlerBorderSize ( m , ctx )
98- }
99-
10090function handlerBorderSize ( [ , a = '' , b ] : string [ ] , { theme } : RuleContext < Theme > ) : CSSEntries | undefined {
10191 const v = theme . lineWidth ?. [ b || 'DEFAULT' ] ?? h . bracket . cssvar . global . px ( b || '1' )
10292 if ( a in directionMap && v != null )
10393 return directionMap [ a ] . map ( i => [ `border${ i } -width` , v ] )
10494}
10595
106- function handlerBorderColor ( [ , a = '' , c ] : string [ ] , { theme } : RuleContext < Theme > ) : CSSObject | undefined {
107- if ( a in directionMap && hasParseableColor ( c , theme , 'borderColor' ) ) {
108- return Object . assign (
109- { } ,
110- ...directionMap [ a ] . map ( i => borderColorResolver ( i ) ( [ '' , c ] , theme ) ) ,
111- )
96+ function handlerBorderColorOrSize ( [ , a = '' , b ] : string [ ] , ctx : RuleContext < Theme > ) : CSSEntries | undefined {
97+ if ( a in directionMap ) {
98+ if ( isCSSMathFn ( h . bracket ( b ) ) )
99+ return handlerBorderSize ( [ '' , a , b ] , ctx )
100+ if ( hasParseableColor ( b , ctx . theme , 'borderColor' ) ) {
101+ return Object . assign (
102+ { } ,
103+ ...directionMap [ a ] . map ( i => borderColorResolver ( i ) ( [ '' , b ] , ctx . theme ) ) ,
104+ )
105+ }
112106 }
113107}
114108
0 commit comments