Skip to content

Commit 80f9578

Browse files
Fix multi-value arbitrary inset shadow (#17523)
Fixes #17520 Fixes multi-value inset shadows to apply the `inset` prefix to each component instead of only the first. Feel free to make the code nicer 😄 ## Test plan Ensure that a multi-value inset shadow now applies each shadow _inset_: <img width="505" alt="Screenshot 2025-04-03 at 10 50 29" src="https://github.com/user-attachments/assets/5d38de45-a16f-48fd-8e3c-b50d2740eb49" /> --------- Co-authored-by: Philipp Spiess <[email protected]>
1 parent 4484192 commit 80f9578

File tree

3 files changed

+30
-3
lines changed

3 files changed

+30
-3
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1010
### Fixed
1111

1212
- Don't rely on `@layer base` for the `@property` polyfills ([#17506](https://github.com/tailwindlabs/tailwindcss/pull/17506))
13+
- Fix multi-value inset shadow ([#17523](https://github.com/tailwindlabs/tailwindcss/pull/17523))
1314

1415
## [4.1.1] - 2025-04-02
1516

packages/tailwindcss/src/utilities.test.ts

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23263,11 +23263,13 @@ test('inset-shadow', async () => {
2326323263
'inset-shadow-[10px_10px]',
2326423264
'inset-shadow-[var(--value)]',
2326523265
'inset-shadow-[shadow:var(--value)]',
23266+
'inset-shadow-[12px_12px_#0088cc,12px_12px_var(--value,#0088cc)]',
2326623267

2326723268
'inset-shadow-sm/25',
2326823269
'inset-shadow-[12px_12px_#0088cc]/25',
2326923270
'inset-shadow-[12px_12px_var(--value)]/25',
2327023271
'inset-shadow-[10px_10px]/25',
23272+
'inset-shadow-[12px_12px_#0088cc,12px_12px_var(--value,#0088cc)]/25',
2327123273

2327223274
// Colors
2327323275
'inset-shadow-red-500',
@@ -23319,6 +23321,18 @@ test('inset-shadow', async () => {
2331923321
--color-red-500: #ef4444;
2332023322
}
2332123323

23324+
.inset-shadow-\\[12px_12px_\\#0088cc\\,12px_12px_var\\(--value\\,\\#0088cc\\)\\]\\/25 {
23325+
--tw-inset-shadow-alpha: 25%;
23326+
--tw-inset-shadow: inset 12px 12px var(--tw-inset-shadow-color, #08c), inset 12px 12px var(--tw-inset-shadow-color, var(--value, #08c));
23327+
box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
23328+
}
23329+
23330+
@supports (color: lab(from red l a b)) {
23331+
.inset-shadow-\\[12px_12px_\\#0088cc\\,12px_12px_var\\(--value\\,\\#0088cc\\)\\]\\/25 {
23332+
--tw-inset-shadow: inset 12px 12px var(--tw-inset-shadow-color, oklab(59.9824% -.067 -.124 / .25)), inset 12px 12px var(--tw-inset-shadow-color, oklab(from var(--value, #08c) l a b / 25%));
23333+
}
23334+
}
23335+
2332223336
.inset-shadow-\\[12px_12px_var\\(--value\\)\\]\\/25 {
2332323337
--tw-inset-shadow-alpha: 25%;
2332423338
--tw-inset-shadow: inset 12px 12px var(--tw-inset-shadow-color, var(--value));
@@ -23359,6 +23373,11 @@ test('inset-shadow', async () => {
2335923373
box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
2336023374
}
2336123375

23376+
.inset-shadow-\\[12px_12px_\\#0088cc\\,12px_12px_var\\(--value\\,\\#0088cc\\)\\] {
23377+
--tw-inset-shadow: inset 12px 12px var(--tw-inset-shadow-color, #08c), inset 12px 12px var(--tw-inset-shadow-color, var(--value, #08c));
23378+
box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
23379+
}
23380+
2336223381
.inset-shadow-\\[12px_12px_\\#0088cc\\] {
2336323382
--tw-inset-shadow: inset 12px 12px var(--tw-inset-shadow-color, #08c);
2336423383
box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);

packages/tailwindcss/src/utilities.ts

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6183,13 +6183,20 @@ function alphaReplacedShadowProperties(
61836183
return varInjector(replaceAlpha(color, alpha))
61846184
})
61856185

6186+
function applyPrefix(x: string) {
6187+
if (!prefix) return x
6188+
return segment(x, ',')
6189+
.map((value) => prefix + value)
6190+
.join(',')
6191+
}
6192+
61866193
if (requiresFallback) {
61876194
return [
6188-
decl(property, prefix + replaceShadowColors(value, varInjector)),
6189-
rule('@supports (color: lab(from red l a b))', [decl(property, prefix + replacedValue)]),
6195+
decl(property, applyPrefix(replaceShadowColors(value, varInjector))),
6196+
rule('@supports (color: lab(from red l a b))', [decl(property, applyPrefix(replacedValue))]),
61906197
]
61916198
} else {
6192-
return [decl(property, prefix + replacedValue)]
6199+
return [decl(property, applyPrefix(replacedValue))]
61936200
}
61946201
}
61956202

0 commit comments

Comments
 (0)