No description
Find a file
Casey Corcoran 7a836d8495
Fix negation of theme() in arbitrary values (#19928)
## Problem

Using a negative modifier with `theme()` inside an arbitrary value
produces no CSS output.

- ✅ `ms-[theme(margin.1)]` — works
- ✅ `-ms-[10px]` — works
- ❌ `-ms-[theme(margin.1)]` — no output

## Cause

`negateValue()` in `src/util/negateValue.js` doesn't recognize `theme()`
as a negatable function. It falls through all conditions and returns
`undefined`, causing the utility to be silently dropped.

## Fix

Added `'theme'` to the `numericFunctions` list so `theme()` values get
wrapped in `calc(... * -1)`, which the PostCSS `theme()` resolver then
processes downstream.

## Tests

- **Unit test** (`negateValue.test.js`):
`negateValue('theme(margin.1)')` returns `calc(theme(margin.1) * -1)`
- **Integration test** (`arbitrary-values.test.js`):
`-mt-[theme(spacing.1)]` produces `margin-top: -0.25rem`

---------

Co-authored-by: Casey Corcoran <casecorc@amazon.com>
Co-authored-by: Robin Malfait <malfait.robin@gmail.com>
2026-08-03 16:11:32 +02:00
.github Fix prepare release workflow 2025-12-10 11:00:34 -05:00
integrations Fix native ESM config loading in v3 (#18938) 2025-09-16 14:03:09 -04:00
jest Print eventual lightning CSS parsing errors when the CSS matcher fail (#14034) 2024-07-23 14:40:11 +02:00
nesting Add types for the nesting plugin (#12269) 2023-10-23 15:49:22 -04:00
perf Performance improvements + memory leak fix (#3032) 2020-12-11 15:03:49 +01:00
scripts Cleanup oxide — Part #1 (#13304) 2024-03-21 18:23:31 +01:00
src Fix negation of theme() in arbitrary values (#19928) 2026-08-03 16:11:32 +02:00
standalone-cli 3.4.19 2025-12-10 10:52:55 -05:00
stubs Use no value instead of blur(0px) for backdrop-blur-none and blur-none utilities (#13830) 2024-06-13 15:49:59 +02:00
tests Fix negation of theme() in arbitrary values (#19928) 2026-08-03 16:11:32 +02:00
types Fix Plugin type issue (#14668) 2024-11-28 11:12:08 +01:00
.editorconfig Convert new stuff to use ES6 modules 2017-08-27 18:02:41 -04:00
.eslintignore Separate stable and oxide engines (#10359) 2023-01-19 11:58:25 -05:00
.eslintrc.json Remove duplicate prettier.config.js settings from .eslintrc.json (#5087) 2021-09-01 17:41:43 +02:00
.gitignore Add script for running integration tests 2023-01-21 11:28:24 -05:00
.swcrc Disable SWC “unused” minification 2023-04-25 17:42:58 -04:00
base.css Remove preflight CSS export in favor of base 2019-02-11 12:38:46 -05:00
CHANGELOG.md Fix negation of theme() in arbitrary values (#19928) 2026-08-03 16:11:32 +02:00
colors.d.ts Add TypeScript types for the tailwind.config.js file (#7891) 2022-03-22 10:24:28 +01:00
colors.js Add default interop to public available functions (#6348) 2021-12-10 11:25:10 +01:00
components.css Move CSS files to root for easier imports 2018-03-13 10:05:24 -04:00
defaultConfig.d.ts Add TypeScript types for the tailwind.config.js file (#7891) 2022-03-22 10:24:28 +01:00
defaultConfig.js Add default interop to public available functions (#6348) 2021-12-10 11:25:10 +01:00
defaultTheme.d.ts Add more explicit types for the default theme (#8780) 2022-07-07 09:05:38 -04:00
defaultTheme.js Add default interop to public available functions (#6348) 2021-12-10 11:25:10 +01:00
LICENSE Update LICENSE 2022-02-05 15:22:47 -05:00
loadConfig.d.ts Enable ESM and TS based config files (#10785) 2023-03-15 17:04:18 -04:00
loadConfig.js Enable ESM and TS based config files (#10785) 2023-03-15 17:04:18 -04:00
package-lock.json 3.4.19 2025-12-10 10:52:55 -05:00
package.json 3.4.19 2025-12-10 10:52:55 -05:00
plugin.d.ts Make Config completely optional for plugins (#9502) 2022-10-07 10:45:22 -04:00
plugin.js Add default interop to public available functions (#6348) 2021-12-10 11:25:10 +01:00
prettier.config.js Add Prettier configuration file (prettier.config.js) (#3713) 2021-05-13 09:07:24 -04:00
README.md rename master to main 2024-08-07 17:18:38 +02:00
resolveConfig.d.ts Improve resolveConfig return type: merge themes (#12272) 2023-10-30 14:55:42 -04:00
resolveConfig.js Add default interop to public available functions (#6348) 2021-12-10 11:25:10 +01:00
screens.css Add screen.css file for postcss-import convenience 2019-05-12 10:36:59 -04:00
tailwind.css Undo accidental changes to CDN build process 2019-12-25 13:54:09 -05:00
turbo.json Cleanup oxide — Part #2 (#13312) 2024-03-22 17:12:14 +01:00
utilities.css Move CSS files to root for easier imports 2018-03-13 10:05:24 -04:00
variants.css JIT: Replace @tailwind screens with @tailwind variants (#4356) 2021-05-14 13:58:52 -04:00

Tailwind CSS

A utility-first CSS framework for rapidly building custom user interfaces.

Build Status Total Downloads Latest Release License


Documentation

For full documentation, visit tailwindcss.com.

Community

For help, discussion about best practices, or any other conversation that would benefit from being searchable:

Discuss Tailwind CSS on GitHub

For casual chit-chat with others using the framework:

Join the Tailwind CSS Discord Server

Contributing

If you're interested in contributing to Tailwind CSS, please read our contributing docs before submitting a pull request.