Skip to content

Commit 0daaaeb

Browse files
authored
Include --default-transition-* variables in transition-* utility output (#14482)
Fixes #14479. Back in March we made a change to the `transition-*` utilities that inlined the values of the `--default-transition-*` variables to fix a bug where things would break if those variables didn't exist in your CSS. At the time though we weren't outputting CSS variables as part of the values of any utilities, for example `bg-red-500` didn't actually reference the `--color-red-500` variable. We later changed that but missed this situation, so these variables were still inlined even though nothing else was. This PR fixes that and makes things more consistent, so these variables will be used as expected unless using the `@theme inline` option, like with everything else. --------- Co-authored-by: Adam Wathan <4323180+adamwathan@users.noreply.github.com>
1 parent fe2610e commit 0daaaeb

File tree

3 files changed

+56
-18
lines changed

3 files changed

+56
-18
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
2424
- Allow `anchor-size(…)` in arbitrary values ([#14394](https://github.com/tailwindlabs/tailwindcss/pull/14394))
2525
- Skip candidates with invalid `theme()` calls ([#14437](https://github.com/tailwindlabs/tailwindcss/pull/14437))
2626
- Don't generate `inset-*` utilities for `--inset-shadow-*` and `--inset-ring-*` theme values ([#14447](https://github.com/tailwindlabs/tailwindcss/pull/14447))
27+
- Include `--default-transition-*` variables in `transition-*` utility output ([#14482](https://github.com/tailwindlabs/tailwindcss/pull/14482))
2728

2829
### Changed
2930

packages/tailwindcss/src/utilities.test.ts

Lines changed: 52 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -12898,54 +12898,90 @@ test('transition', async () => {
1289812898
1289912899
.transition {
1290012900
transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, translate, scale, rotate, filter, -webkit-backdrop-filter, -webkit-backdrop-filter, backdrop-filter;
12901-
transition-duration: .1s;
12902-
transition-timing-function: ease;
12901+
transition-timing-function: var(--default-transition-timing-function, ease);
12902+
transition-duration: var(--default-transition-duration, .1s);
1290312903
}
1290412904
1290512905
.transition-\\[--value\\] {
1290612906
transition-property: var(--value);
12907-
transition-duration: .1s;
12908-
transition-timing-function: ease;
12907+
transition-timing-function: var(--default-transition-timing-function, ease);
12908+
transition-duration: var(--default-transition-duration, .1s);
1290912909
}
1291012910
1291112911
.transition-all {
1291212912
transition-property: all;
12913-
transition-duration: .1s;
12914-
transition-timing-function: ease;
12913+
transition-timing-function: var(--default-transition-timing-function, ease);
12914+
transition-duration: var(--default-transition-duration, .1s);
1291512915
}
1291612916
1291712917
.transition-colors {
1291812918
transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;
12919-
transition-duration: .1s;
12920-
transition-timing-function: ease;
12919+
transition-timing-function: var(--default-transition-timing-function, ease);
12920+
transition-duration: var(--default-transition-duration, .1s);
1292112921
}
1292212922
1292312923
.transition-opacity {
1292412924
transition-property: opacity;
12925-
transition-duration: .1s;
12926-
transition-timing-function: ease;
12925+
transition-timing-function: var(--default-transition-timing-function, ease);
12926+
transition-duration: var(--default-transition-duration, .1s);
1292712927
transition-property: var(--transition-property-opacity, opacity);
12928-
transition-duration: .1s;
12929-
transition-timing-function: ease;
12928+
transition-timing-function: var(--default-transition-timing-function, ease);
12929+
transition-duration: var(--default-transition-duration, .1s);
1293012930
}
1293112931
1293212932
.transition-shadow {
1293312933
transition-property: box-shadow;
12934-
transition-duration: .1s;
12935-
transition-timing-function: ease;
12934+
transition-timing-function: var(--default-transition-timing-function, ease);
12935+
transition-duration: var(--default-transition-duration, .1s);
1293612936
}
1293712937
1293812938
.transition-transform {
1293912939
transition-property: transform, translate, scale, rotate;
12940-
transition-duration: .1s;
12941-
transition-timing-function: ease;
12940+
transition-timing-function: var(--default-transition-timing-function, ease);
12941+
transition-duration: var(--default-transition-duration, .1s);
1294212942
}
1294312943
1294412944
.transition-none {
1294512945
transition-property: none;
1294612946
}"
1294712947
`)
1294812948

12949+
expect(
12950+
await compileCss(
12951+
css`
12952+
@theme inline {
12953+
--default-transition-timing-function: ease;
12954+
--default-transition-duration: 100ms;
12955+
}
12956+
@tailwind utilities;
12957+
`,
12958+
['transition', 'transition-all', 'transition-colors'],
12959+
),
12960+
).toMatchInlineSnapshot(`
12961+
":root {
12962+
--default-transition-timing-function: ease;
12963+
--default-transition-duration: .1s;
12964+
}
12965+
12966+
.transition {
12967+
transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, translate, scale, rotate, filter, -webkit-backdrop-filter, -webkit-backdrop-filter, backdrop-filter;
12968+
transition-duration: .1s;
12969+
transition-timing-function: ease;
12970+
}
12971+
12972+
.transition-all {
12973+
transition-property: all;
12974+
transition-duration: .1s;
12975+
transition-timing-function: ease;
12976+
}
12977+
12978+
.transition-colors {
12979+
transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;
12980+
transition-duration: .1s;
12981+
transition-timing-function: ease;
12982+
}"
12983+
`)
12984+
1294912985
expect(
1295012986
await compileCss(
1295112987
css`

packages/tailwindcss/src/utilities.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3703,8 +3703,9 @@ export function createUtilities(theme: Theme) {
37033703
}
37043704

37053705
{
3706-
let defaultTimingFunction = theme.get(['--default-transition-timing-function']) ?? 'ease'
3707-
let defaultDuration = theme.get(['--default-transition-duration']) ?? '0s'
3706+
let defaultTimingFunction =
3707+
theme.resolve(null, ['--default-transition-timing-function']) ?? 'ease'
3708+
let defaultDuration = theme.resolve(null, ['--default-transition-duration']) ?? '0s'
37083709

37093710
staticUtility('transition-none', [['transition-property', 'none']])
37103711
staticUtility('transition-all', [

0 commit comments

Comments
 (0)