Skip to content

Commit d8bd507

Browse files
authored
JIT: Add per-side border colors (#4404)
1 parent 787348b commit d8bd507

5 files changed

+88
-2
lines changed

src/plugins/borderColor.js

+67-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import flattenColorPalette from '../util/flattenColorPalette'
22
import withAlphaVariable from '../util/withAlphaVariable'
33

44
export default function () {
5-
return function ({ addBase, matchUtilities, theme, variants, corePlugins }) {
5+
return function ({ config, addBase, matchUtilities, theme, variants, corePlugins }) {
66
if (!corePlugins('borderOpacity')) {
77
addBase({
88
'*, ::before, ::after': {
@@ -41,5 +41,71 @@ export default function () {
4141
type: 'color',
4242
}
4343
)
44+
45+
if (config('mode') === 'jit') {
46+
matchUtilities(
47+
{
48+
'border-t': (value) => {
49+
if (!corePlugins('borderOpacity')) {
50+
return {
51+
'border-top-color': value,
52+
}
53+
}
54+
55+
return withAlphaVariable({
56+
color: value,
57+
property: 'border-top-color',
58+
variable: '--tw-border-opacity',
59+
})
60+
},
61+
'border-r': (value) => {
62+
if (!corePlugins('borderOpacity')) {
63+
return {
64+
'border-right-color': value,
65+
}
66+
}
67+
68+
return withAlphaVariable({
69+
color: value,
70+
property: 'border-right-color',
71+
variable: '--tw-border-opacity',
72+
})
73+
},
74+
'border-b': (value) => {
75+
if (!corePlugins('borderOpacity')) {
76+
return {
77+
'border-bottom-color': value,
78+
}
79+
}
80+
81+
return withAlphaVariable({
82+
color: value,
83+
property: 'border-bottom-color',
84+
variable: '--tw-border-opacity',
85+
})
86+
},
87+
'border-l': (value) => {
88+
if (!corePlugins('borderOpacity')) {
89+
return {
90+
'border-left-color': value,
91+
}
92+
}
93+
94+
return withAlphaVariable({
95+
color: value,
96+
property: 'border-left-color',
97+
variable: '--tw-border-opacity',
98+
})
99+
},
100+
},
101+
{
102+
values: (({ DEFAULT: _, ...colors }) => colors)(
103+
flattenColorPalette(theme('borderColor'))
104+
),
105+
variants: variants('borderColor'),
106+
type: 'color',
107+
}
108+
)
109+
}
44110
}
45111
}

tests/jit/basic-usage.test.css

+16
Original file line numberDiff line numberDiff line change
@@ -417,6 +417,22 @@
417417
--tw-border-opacity: 1;
418418
border-color: rgba(0, 0, 0, var(--tw-border-opacity));
419419
}
420+
.border-t-black {
421+
--tw-border-opacity: 1;
422+
border-top-color: rgba(0, 0, 0, var(--tw-border-opacity));
423+
}
424+
.border-r-black {
425+
--tw-border-opacity: 1;
426+
border-right-color: rgba(0, 0, 0, var(--tw-border-opacity));
427+
}
428+
.border-b-black {
429+
--tw-border-opacity: 1;
430+
border-bottom-color: rgba(0, 0, 0, var(--tw-border-opacity));
431+
}
432+
.border-l-black {
433+
--tw-border-opacity: 1;
434+
border-left-color: rgba(0, 0, 0, var(--tw-border-opacity));
435+
}
420436
.border-opacity-10 {
421437
--tw-border-opacity: 0.1;
422438
}

tests/jit/basic-usage.test.html

+1-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
<div class="bg-cover"></div>
2626
<div class="bg-origin-border bg-origin-padding bg-origin-content"></div>
2727
<div class="border-collapse"></div>
28-
<div class="border-black"></div>
28+
<div class="border-black border-t-black border-r-black border-b-black border-l-black"></div>
2929
<div class="border-opacity-10"></div>
3030
<div class="rounded-md"></div>
3131
<div class="border-solid"></div>

tests/jit/kitchen-sink.test.css

+3
Original file line numberDiff line numberDiff line change
@@ -535,6 +535,9 @@ div {
535535
box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000),
536536
var(--tw-shadow);
537537
}
538+
.md\:hover\:border-r-blue-500\/30:hover {
539+
border-right-color: rgba(59, 130, 246, 0.3);
540+
}
538541
.md\:hover\:opacity-20:hover {
539542
opacity: 0.2;
540543
}

tests/jit/kitchen-sink.test.html

+1
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
<div class="test-apply-font-variant"></div>
1717
<div class="mt-6"></div>
1818
<div class="bg-black"></div>
19+
<div class="md:hover:border-r-blue-500/30"></div>
1920
<div class="custom-util"></div>
2021
<div class="hover:custom-util"></div>
2122
<div class="group-hover:custom-util"></div>

0 commit comments

Comments
 (0)