From 7e20c3b58750f769d9b6e35bf283689c86341b1d Mon Sep 17 00:00:00 2001 From: Justin Wong <11310624+wongjn@users.noreply.github.com> Date: Sat, 25 Jan 2025 17:04:55 +0000 Subject: [PATCH 01/29] Remove `min-w/h-none` (#15845) `none` is not a valid value for `min-width` or `min-height` according to [the CSS spec](https://www.w3.org/TR/css-sizing-3/#min-size-properties): > | | | > | --- | --- | > | [Value](https://www.w3.org/TR/css-values/#value-defs): | auto \| [<length-percentage>](https://www.w3.org/TR/css-values-4/#typedef-length-percentage) \| min-content \| max-content \| fit-content([<length-percentage>](https://www.w3.org/TR/css-values-4/#typedef-length-percentage)) | I believe we should be able to remove the `min-w-none` and `min-h-none` class candidates since they wouldn't have done anything anyway and thus should not affect backwards compatibility. Indeed, these did not exist in v3 either: https://github.com/tailwindlabs/tailwindcss/blob/4f9f603e12b51cc53b8a09c7739b8f88c8eb87eb/stubs/config.full.js#L674-L684 https://github.com/tailwindlabs/tailwindcss/blob/4f9f603e12b51cc53b8a09c7739b8f88c8eb87eb/stubs/config.full.js#L685-L691 --- Credit to `@i` on Discord for spotting this[^1], fixes #15846 [^1]: https://discord.com/channels/486935104384532500/486935104384532502/1332680061144403968 --------- Co-authored-by: Adam Wathan --- CHANGELOG.md | 5 ++++- .../tailwindcss/src/__snapshots__/intellisense.test.ts.snap | 2 -- packages/tailwindcss/src/utilities.ts | 2 -- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2cf05bf19e3e..49fff091e19f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,9 +7,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] -- Nothing yet +### Fixed + +- Remove invalid `min-w/h-none` utilities ([#15845](https://github.com/tailwindlabs/tailwindcss/pull/15845)) ## [4.0.0] - 2025-01-21 + ## [4.0.0-beta.10] - 2025-01-21 ### Added diff --git a/packages/tailwindcss/src/__snapshots__/intellisense.test.ts.snap b/packages/tailwindcss/src/__snapshots__/intellisense.test.ts.snap index 3f95c9fafcb1..203e52712f55 100644 --- a/packages/tailwindcss/src/__snapshots__/intellisense.test.ts.snap +++ b/packages/tailwindcss/src/__snapshots__/intellisense.test.ts.snap @@ -4719,7 +4719,6 @@ exports[`getClassList 1`] = ` "min-h-lvw", "min-h-max", "min-h-min", - "min-h-none", "min-h-px", "min-h-screen", "min-h-svh", @@ -4767,7 +4766,6 @@ exports[`getClassList 1`] = ` "min-w-lvw", "min-w-max", "min-w-min", - "min-w-none", "min-w-px", "min-w-screen", "min-w-svh", diff --git a/packages/tailwindcss/src/utilities.ts b/packages/tailwindcss/src/utilities.ts index 8de82f4cbbad..99c8b4282a40 100644 --- a/packages/tailwindcss/src/utilities.ts +++ b/packages/tailwindcss/src/utilities.ts @@ -896,9 +896,7 @@ export function createUtilities(theme: Theme) { staticUtility(`min-h-screen`, [['min-height', '100vh']]) staticUtility(`max-h-screen`, [['max-height', '100vh']]) - staticUtility(`min-w-none`, [['min-width', 'none']]) staticUtility(`max-w-none`, [['max-width', 'none']]) - staticUtility(`min-h-none`, [['min-height', 'none']]) staticUtility(`max-h-none`, [['max-height', 'none']]) spacingUtility( From 79541c94d92afbf37c1b861f1f80e667af43f01f Mon Sep 17 00:00:00 2001 From: Robin Malfait Date: Mon, 27 Jan 2025 12:54:26 +0100 Subject: [PATCH 02/29] Merge changelogs (#15698) This PR makes sure all v3 and earlier versions are visible in the changelog as well as the v4 changelog entries. --- CHANGELOG.md | 2754 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 2754 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 49fff091e19f..3660f0795799 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,31 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [4.0.0] - 2025-01-21 +### Added + +- [New high-performance engine](https://tailwindcss.com/blog/tailwindcss-v4#new-high-performance-engine) — where full builds are up to 5x faster, and incremental builds are over 100x faster — and measured in microseconds. +- [Designed for the modern web](https://tailwindcss.com/blog/tailwindcss-v4#designed-for-the-modern-web) — built on cutting-edge CSS features like cascade layers, registered custom properties with `@property`, and `color-mix()`. +- [Simplified installation](https://tailwindcss.com/blog/tailwindcss-v4#simplified-installation) — fewer dependencies, zero configuration, and just a single line of code in your CSS file. +- [First-party Vite plugin](https://tailwindcss.com/blog/tailwindcss-v4#first-party-vite-plugin) — tight integration for maximum performance and minimum configuration. +- [Automatic content detection](https://tailwindcss.com/blog/tailwindcss-v4#automatic-content-detection) — all of your template files are discovered automatically, with no configuration required. +- [Built-in import support](https://tailwindcss.com/blog/tailwindcss-v4#built-in-import-support) — no additional tooling necessary to bundle multiple CSS files. +- [CSS-first configuration](https://tailwindcss.com/blog/tailwindcss-v4#css-first-configuration) — a reimagined developer experience where you customize and extend the framework directly in CSS instead of a JavaScript configuration file. +- [CSS theme variables](https://tailwindcss.com/blog/tailwindcss-v4#css-theme-variables) — all of your design tokens exposed as native CSS variables so you can access them anywhere. +- [Dynamic utility values and variants](https://tailwindcss.com/blog/tailwindcss-v4#dynamic-utility-values-and-variants) — stop guessing what values exist in your spacing scale, or extending your configuration for things like basic data attributes. +- [Modernized P3 color palette](https://tailwindcss.com/blog/tailwindcss-v4#modernized-p3-color-palette) — a redesigned, more vivid color palette that takes full advantage of modern display technology. +- [Container queries](https://tailwindcss.com/blog/tailwindcss-v4#container-queries) — first-class APIs for styling elements based on their container size, no plugins required. +- [New 3D transform utilities](https://tailwindcss.com/blog/tailwindcss-v4#new-3d-transform-utilities) — transform elements in 3D space directly in your HTML. +- [Expanded gradient APIs](https://tailwindcss.com/blog/tailwindcss-v4#expanded-gradient-apis) — radial and conic gradients, interpolation modes, and more. +- [@starting-style support](https://tailwindcss.com/blog/tailwindcss-v4#starting-style-support) — a new variant you can use to create enter and exit transitions, without the need for JavaScript. +- [not-\* variant](https://tailwindcss.com/blog/tailwindcss-v4#not-variant) — style an element only when it doesn't match another variant, custom selector, or media or feature query. +- [Even more new utilities and variants](https://tailwindcss.com/blog/tailwindcss-v4#even-more-new-utilities-and-variants) — including support for `color-scheme`, `field-sizing`, complex shadows, `inert`, and more. + +Start using Tailwind CSS v4.0 today by [installing it in a new project](https://tailwindcss.com/docs/installation/), or playing with it directly in the browser on [Tailwind Play](https://play.tailwindcss.com/). + +For existing projects, we've published a comprehensive [upgrade guide](https://tailwindcss.com/docs/upgrade-guide) and built an [automated upgrade tool](https://tailwindcss.com/docs/upgrade-guide#using-the-upgrade-tool) to get you on the latest version as quickly and painlessly as possible. + +For a deep-dive into everything that's new, [check out the announcement post](https://tailwindcss.com/blog/tailwindcss-v4). + ## [4.0.0-beta.10] - 2025-01-21 ### Added @@ -830,3 +855,2732 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [4.0.0-alpha.1] - 2024-03-06 - First 4.0.0-alpha.1 release + +## [3.4.17] - 2024-12-17 + +### Fixed + +- Work around Node v22.12+ issue ([#15421](https://github.com/tailwindlabs/tailwindcss/pull/15421)) + +## [3.4.16] - 2024-12-03 + +### Fixed + +- Ensure the TypeScript types for `PluginsConfig` allow `undefined` values ([#14668](https://github.com/tailwindlabs/tailwindcss/pull/14668)) + +# Changed + +- Bumped lilconfig to v3.x ([#15289](https://github.com/tailwindlabs/tailwindcss/pull/15289)) + +## [3.4.15] - 2024-11-14 + +- Bump versions for security vulnerabilities ([#14697](https://github.com/tailwindlabs/tailwindcss/pull/14697)) +- Ensure the TypeScript types for the `boxShadow` theme configuration allows arrays ([#14856](https://github.com/tailwindlabs/tailwindcss/pull/14856)) +- Set fallback for opacity variables to ensure setting colors with the `selection:*` variant works in Chrome 131 ([#15003](https://github.com/tailwindlabs/tailwindcss/pull/15003)) + +## [3.4.14] - 2024-10-15 + +### Fixed + +- Don't set `display: none` on elements that use `hidden="until-found"` ([#14625](https://github.com/tailwindlabs/tailwindcss/pull/14625)) + +## [3.4.13] - 2024-09-23 + +### Fixed + +- Improve source glob verification performance ([#14481](https://github.com/tailwindlabs/tailwindcss/pull/14481)) + +## [3.4.12] - 2024-09-17 + +### Fixed + +- Ensure using `@apply` with utilities that use `@defaults` works with rules defined in the base layer when using `optimizeUniversalDefaults` ([#14427](https://github.com/tailwindlabs/tailwindcss/pull/14427)) + +## [3.4.11] - 2024-09-11 + +### Fixed + +- Allow `anchor-size(…)` in arbitrary values ([#14393](https://github.com/tailwindlabs/tailwindcss/pull/14393)) + +## [3.4.10] - 2024-08-13 + +### Fixed + +- Bump versions of plugins in the Standalone CLI ([#14185](https://github.com/tailwindlabs/tailwindcss/pull/14185)) + +## [3.4.9] - 2024-08-08 + +### Fixed + +- No longer warns when broad glob patterns are detecting `vendor` folders + +## [3.4.8] - 2024-08-07 + +### Fixed + +- Fix minification when using nested CSS ([#14105](https://github.com/tailwindlabs/tailwindcss/pull/14105)) +- Warn when broad glob patterns are used in the content configuration ([#14140](https://github.com/tailwindlabs/tailwindcss/pull/14140)) + +## [3.4.7] - 2024-07-25 + +### Fixed + +- Fix class detection in Slim templates with attached attributes and ID ([#14019](https://github.com/tailwindlabs/tailwindcss/pull/14019)) +- Ensure attribute values in `data-*` and `aria-*` modifiers are always quoted in the generated CSS ([#14037](https://github.com/tailwindlabs/tailwindcss/pull/14037)) + +## [3.4.6] - 2024-07-16 + +### Fixed + +- Fix detection of some utilities in Slim/Pug templates ([#14006](https://github.com/tailwindlabs/tailwindcss/pull/14006)) + +### Changed + +- Loosen `:is()` wrapping rules when using an important selector ([#13900](https://github.com/tailwindlabs/tailwindcss/pull/13900)) + +## [3.4.5] - 2024-07-15 + +### Fixed + +- Disable automatic `var()` injection for anchor properties ([#13826](https://github.com/tailwindlabs/tailwindcss/pull/13826)) +- Use no value instead of `blur(0px)` for `backdrop-blur-none` and `blur-none` utilities ([#13830](https://github.com/tailwindlabs/tailwindcss/pull/13830)) +- Add `.mts` and `.cts` config file detection ([#13940](https://github.com/tailwindlabs/tailwindcss/pull/13940)) +- Don't generate utilities like `px-1` unnecessarily when using utilities like `px-1.5` ([#13959](https://github.com/tailwindlabs/tailwindcss/pull/13959)) +- Always generate `-webkit-backdrop-filter` for `backdrop-*` utilities ([#13997](https://github.com/tailwindlabs/tailwindcss/pull/13997)) + +## [3.4.4] - 2024-06-05 + +### Fixed + +- Make it possible to use multiple `` placeholders in a single color definition ([#13740](https://github.com/tailwindlabs/tailwindcss/pull/13740)) +- Don't prefix classes in arbitrary values of `has-*`, `group-has-*`, and `peer-has-*` variants ([#13770](https://github.com/tailwindlabs/tailwindcss/pull/13770)) +- Support negative values for `{col,row}-{start,end}` utilities ([#13781](https://github.com/tailwindlabs/tailwindcss/pull/13781)) +- Update embedded browserslist database ([#13792](https://github.com/tailwindlabs/tailwindcss/pull/13792)) + +## [3.4.3] - 2024-03-27 + +### Fixed + +- Revert changes to glob handling ([#13384](https://github.com/tailwindlabs/tailwindcss/pull/13384)) + +## [3.4.2] - 2024-03-27 + +### Fixed + +- Ensure max specificity of `0,0,1` for button and input Preflight rules ([#12735](https://github.com/tailwindlabs/tailwindcss/pull/12735)) +- Improve glob handling for folders with `(`, `)`, `[` or `]` in the file path ([#12715](https://github.com/tailwindlabs/tailwindcss/pull/12715)) +- Split `:has` rules when using `experimental.optimizeUniversalDefaults` ([#12736](https://github.com/tailwindlabs/tailwindcss/pull/12736)) +- Sort arbitrary properties alphabetically across multiple class lists ([#12911](https://github.com/tailwindlabs/tailwindcss/pull/12911)) +- Add `mix-blend-plus-darker` utility ([#12923](https://github.com/tailwindlabs/tailwindcss/pull/12923)) +- Ensure dashes are allowed in variant modifiers ([#13303](https://github.com/tailwindlabs/tailwindcss/pull/13303)) +- Fix crash showing completions in Intellisense when using a custom separator ([#13306](https://github.com/tailwindlabs/tailwindcss/pull/13306)) +- Transpile `import.meta.url` in config files ([#13322](https://github.com/tailwindlabs/tailwindcss/pull/13322)) +- Reset letter spacing for form elements ([#13150](https://github.com/tailwindlabs/tailwindcss/pull/13150)) +- Fix missing `xx-large` and remove double `x-large` absolute size ([#13324](https://github.com/tailwindlabs/tailwindcss/pull/13324)) +- Don't error when encountering nested CSS unless trying to `@apply` a class that uses nesting ([#13325](https://github.com/tailwindlabs/tailwindcss/pull/13325)) +- Ensure that arbitrary properties respect `important` configuration ([#13353](https://github.com/tailwindlabs/tailwindcss/pull/13353)) +- Change dark mode selector so `@apply` works correctly with pseudo elements ([#13379](https://github.com/tailwindlabs/tailwindcss/pull/13379)) + +## [3.4.1] - 2024-01-05 + +### Fixed + +- Don't remove keyframe stops when using important utilities ([#12639](https://github.com/tailwindlabs/tailwindcss/pull/12639)) +- Don't add spaces to gradients and grid track names when followed by `calc()` ([#12704](https://github.com/tailwindlabs/tailwindcss/pull/12704)) +- Restore old behavior for `class` dark mode strategy ([#12717](https://github.com/tailwindlabs/tailwindcss/pull/12717)) +- Improve glob handling for folders with `(`, `)`, `[` or `]` in the file path ([#12715](https://github.com/tailwindlabs/tailwindcss/pull/12715)) + +### Added + +- Add new `selector` and `variant` strategies for dark mode ([#12717](https://github.com/tailwindlabs/tailwindcss/pull/12717)) + +### Changed + +- Support `rtl` and `ltr` variants on same element as `dir` attribute ([#12717](https://github.com/tailwindlabs/tailwindcss/pull/12717)) + +## [3.4.0] - 2023-12-19 + +### Added + +- Add `svh`, `lvh`, and `dvh` values to default `height`/`min-height`/`max-height` theme ([#11317](https://github.com/tailwindlabs/tailwindcss/pull/11317)) +- Add `has-*` variants for `:has(...)` pseudo-class ([#11318](https://github.com/tailwindlabs/tailwindcss/pull/11318)) +- Add `text-wrap` utilities including `text-balance` and `text-pretty` ([#11320](https://github.com/tailwindlabs/tailwindcss/pull/11320), [#12031](https://github.com/tailwindlabs/tailwindcss/pull/12031)) +- Extend default `opacity` scale to include all steps of 5 ([#11832](https://github.com/tailwindlabs/tailwindcss/pull/11832)) +- Update Preflight `html` styles to include shadow DOM `:host` pseudo-class ([#11200](https://github.com/tailwindlabs/tailwindcss/pull/11200)) +- Increase default values for `grid-rows-*` utilities from 1–6 to 1–12 ([#12180](https://github.com/tailwindlabs/tailwindcss/pull/12180)) +- Add `size-*` utilities ([#12287](https://github.com/tailwindlabs/tailwindcss/pull/12287)) +- Add utilities for CSS subgrid ([#12298](https://github.com/tailwindlabs/tailwindcss/pull/12298)) +- Add spacing scale to `min-w-*`, `min-h-*`, and `max-w-*` utilities ([#12300](https://github.com/tailwindlabs/tailwindcss/pull/12300)) +- Add `forced-color-adjust` utilities ([#11931](https://github.com/tailwindlabs/tailwindcss/pull/11931)) +- Add `forced-colors` variant ([#11694](https://github.com/tailwindlabs/tailwindcss/pull/11694), [#12582](https://github.com/tailwindlabs/tailwindcss/pull/12582)) +- Add `appearance-auto` utility ([#12404](https://github.com/tailwindlabs/tailwindcss/pull/12404)) +- Add logical property values for `float` and `clear` utilities ([#12480](https://github.com/tailwindlabs/tailwindcss/pull/12480)) +- Add `*` variant for targeting direct children ([#12551](https://github.com/tailwindlabs/tailwindcss/pull/12551)) + +### Changed + +- Simplify the `sans` font-family stack ([#11748](https://github.com/tailwindlabs/tailwindcss/pull/11748)) +- Disable the tap highlight overlay on iOS ([#12299](https://github.com/tailwindlabs/tailwindcss/pull/12299)) +- Improve relative precedence of `rtl`, `ltr`, `forced-colors`, and `dark` variants ([#12584](https://github.com/tailwindlabs/tailwindcss/pull/12584)) + +## [3.3.7] - 2023-12-18 + +### Fixed + +- Fix support for container query utilities with arbitrary values ([#12534](https://github.com/tailwindlabs/tailwindcss/pull/12534)) +- Fix custom config loading in Standalone CLI ([#12616](https://github.com/tailwindlabs/tailwindcss/pull/12616)) + +## [3.3.6] - 2023-12-04 + +### Fixed + +- Don’t add spaces to negative numbers following a comma ([#12324](https://github.com/tailwindlabs/tailwindcss/pull/12324)) +- Don't emit `@config` in CSS when watching via the CLI ([#12327](https://github.com/tailwindlabs/tailwindcss/pull/12327)) +- Improve types for `resolveConfig` ([#12272](https://github.com/tailwindlabs/tailwindcss/pull/12272)) +- Ensure configured `font-feature-settings` for `mono` are included in Preflight ([#12342](https://github.com/tailwindlabs/tailwindcss/pull/12342)) +- Improve candidate detection in minified JS arrays (without spaces) ([#12396](https://github.com/tailwindlabs/tailwindcss/pull/12396)) +- Don't crash when given applying a variant to a negated version of a simple utility ([#12514](https://github.com/tailwindlabs/tailwindcss/pull/12514)) +- Fix support for slashes in arbitrary modifiers ([#12515](https://github.com/tailwindlabs/tailwindcss/pull/12515)) +- Fix source maps of variant utilities that come from an `@layer` rule ([#12508](https://github.com/tailwindlabs/tailwindcss/pull/12508)) +- Fix loading of built-in plugins when using an ESM or TypeScript config with the Standalone CLI ([#12506](https://github.com/tailwindlabs/tailwindcss/pull/12506)) + +## [3.3.5] - 2023-10-25 + +### Fixed + +- Fix incorrect spaces around `-` in `calc()` expression ([#12283](https://github.com/tailwindlabs/tailwindcss/pull/12283)) + +## [3.3.4] - 2023-10-24 + +### Fixed + +- Improve normalisation of `calc()`-like functions ([#11686](https://github.com/tailwindlabs/tailwindcss/pull/11686)) +- Skip `calc()` normalisation in nested `theme()` calls ([#11705](https://github.com/tailwindlabs/tailwindcss/pull/11705)) +- Fix incorrectly generated CSS when using square brackets inside arbitrary properties ([#11709](https://github.com/tailwindlabs/tailwindcss/pull/11709)) +- Make `content` optional for presets in TypeScript types ([#11730](https://github.com/tailwindlabs/tailwindcss/pull/11730)) +- Handle variable colors that have variable fallback values ([#12049](https://github.com/tailwindlabs/tailwindcss/pull/12049)) +- Batch reading content files to prevent `too many open files` error ([#12079](https://github.com/tailwindlabs/tailwindcss/pull/12079)) +- Skip over classes inside `:not(…)` when nested in an at-rule ([#12105](https://github.com/tailwindlabs/tailwindcss/pull/12105)) +- Update types to work with `Node16` module resolution ([#12097](https://github.com/tailwindlabs/tailwindcss/pull/12097)) +- Don’t crash when important and parent selectors are equal in `@apply` ([#12112](https://github.com/tailwindlabs/tailwindcss/pull/12112)) +- Eliminate irrelevant rules when applying variants ([#12113](https://github.com/tailwindlabs/tailwindcss/pull/12113)) +- Improve RegEx parser, reduce possibilities as the key for arbitrary properties ([#12121](https://github.com/tailwindlabs/tailwindcss/pull/12121)) +- Fix sorting of utilities that share multiple candidates ([#12173](https://github.com/tailwindlabs/tailwindcss/pull/12173)) +- Ensure variants with arbitrary values and a modifier are correctly matched in the RegEx based parser ([#12179](https://github.com/tailwindlabs/tailwindcss/pull/12179)) +- Fix crash when watching renamed files on FreeBSD ([#12193](https://github.com/tailwindlabs/tailwindcss/pull/12193)) +- Allow plugins from a parent document to be used in an iframe ([#12208](https://github.com/tailwindlabs/tailwindcss/pull/12208)) +- Add types for `tailwindcss/nesting` ([#12269](https://github.com/tailwindlabs/tailwindcss/pull/12269)) +- Bump `jiti`, `fast-glob`, and `browserlist` dependencies ([#11550](https://github.com/tailwindlabs/tailwindcss/pull/11550)) +- Improve automatic `var` injection for properties that accept a `` ([#12236](https://github.com/tailwindlabs/tailwindcss/pull/12236)) + +## [3.3.3] - 2023-07-13 + +### Fixed + +- Fix issue where some pseudo-element variants generated the wrong selector ([#10943](https://github.com/tailwindlabs/tailwindcss/pull/10943), [#10962](https://github.com/tailwindlabs/tailwindcss/pull/10962), [#11111](https://github.com/tailwindlabs/tailwindcss/pull/11111)) +- Make font settings propagate into buttons, inputs, etc. ([#10940](https://github.com/tailwindlabs/tailwindcss/pull/10940)) +- Fix parsing of `theme()` inside `calc()` when there are no spaces around operators ([#11157](https://github.com/tailwindlabs/tailwindcss/pull/11157)) +- Ensure `repeating-conic-gradient` is detected as an image ([#11180](https://github.com/tailwindlabs/tailwindcss/pull/11180)) +- Move unknown pseudo-elements outside of `:is` by default ([#11345](https://github.com/tailwindlabs/tailwindcss/pull/11345)) +- Escape animation names when prefixes contain special characters ([#11470](https://github.com/tailwindlabs/tailwindcss/pull/11470)) +- Don't prefix arbitrary classes in `group` and `peer` variants ([#11454](https://github.com/tailwindlabs/tailwindcss/pull/11454)) +- Sort classes using position of first matching rule ([#11504](https://github.com/tailwindlabs/tailwindcss/pull/11504)) +- Allow variant to be an at-rule without a prelude ([#11589](https://github.com/tailwindlabs/tailwindcss/pull/11589)) +- Make PostCSS plugin async to improve performance ([#11548](https://github.com/tailwindlabs/tailwindcss/pull/11548)) +- Don’t error when a config file is missing ([f97759f](https://github.com/tailwindlabs/tailwindcss/commit/f97759f808d15ace66647b1405744fcf95a392e5)) + +### Added + +- Add `aria-busy` utility ([#10966](https://github.com/tailwindlabs/tailwindcss/pull/10966)) + +### Changed + +- Reset padding for `` elements in preflight ([#11069](https://github.com/tailwindlabs/tailwindcss/pull/11069)) + +## [3.3.2] - 2023-04-25 + +### Fixed + +- Don’t move unknown pseudo-elements to the end of selectors ([#10943](https://github.com/tailwindlabs/tailwindcss/pull/10943), [#10962](https://github.com/tailwindlabs/tailwindcss/pull/10962)) +- Inherit gradient stop positions when using variants ([#11002](https://github.com/tailwindlabs/tailwindcss/pull/11002)) +- Honor default `to` position of gradient when using implicit transparent colors ([#11002](https://github.com/tailwindlabs/tailwindcss/pull/11002)) +- Ensure `@tailwindcss/oxide` doesn't leak in the stable engine ([#10988](https://github.com/tailwindlabs/tailwindcss/pull/10988)) +- Ensure multiple `theme(spacing[5])` calls with bracket notation in arbitrary properties work ([#11039](https://github.com/tailwindlabs/tailwindcss/pull/11039)) +- Normalize arbitrary modifiers ([#11057](https://github.com/tailwindlabs/tailwindcss/pull/11057)) + +### Changed + +- Drop support for Node.js v12 ([#11089](https://github.com/tailwindlabs/tailwindcss/pull/11089)) + +## [3.3.1] - 2023-03-30 + +### Fixed + +- Fix edge case bug when loading a TypeScript config file with webpack ([#10898](https://github.com/tailwindlabs/tailwindcss/pull/10898)) +- Fix variant, `@apply`, and `important` selectors when using `:is()` or `:has()` with pseudo-elements ([#10903](https://github.com/tailwindlabs/tailwindcss/pull/10903)) +- Fix `safelist` config types ([#10901](https://github.com/tailwindlabs/tailwindcss/pull/10901)) +- Fix build errors caused by `@tailwindcss/line-clamp` warning ([#10915](https://github.com/tailwindlabs/tailwindcss/pull/10915), [#10919](https://github.com/tailwindlabs/tailwindcss/pull/10919)) +- Fix "process is not defined" error ([#10919](https://github.com/tailwindlabs/tailwindcss/pull/10919)) + +## [3.3.0] - 2023-03-27 + +### Added + +- Support ESM and TypeScript config files ([#10785](https://github.com/tailwindlabs/tailwindcss/pull/10785)) +- Extend default color palette with new 950 shades ([#10879](https://github.com/tailwindlabs/tailwindcss/pull/10879)) +- Add `line-height` modifier support to `font-size` utilities ([#9875](https://github.com/tailwindlabs/tailwindcss/pull/9875)) +- Add support for using variables as arbitrary values without `var(...)` ([#9880](https://github.com/tailwindlabs/tailwindcss/pull/9880), [#9962](https://github.com/tailwindlabs/tailwindcss/pull/9962)) +- Add logical properties support for inline direction ([#10166](https://github.com/tailwindlabs/tailwindcss/pull/10166)) +- Add `hyphens` utilities ([#10071](https://github.com/tailwindlabs/tailwindcss/pull/10071)) +- Add `from-{position}`, `via-{position}` and `to-{position}` utilities ([#10886](https://github.com/tailwindlabs/tailwindcss/pull/10886)) +- Add `list-style-image` utilities ([#10817](https://github.com/tailwindlabs/tailwindcss/pull/10817)) +- Add `caption-side` utilities ([#10470](https://github.com/tailwindlabs/tailwindcss/pull/10470)) +- Add `line-clamp` utilities from `@tailwindcss/line-clamp` to core ([#10768](https://github.com/tailwindlabs/tailwindcss/pull/10768), [#10876](https://github.com/tailwindlabs/tailwindcss/pull/10876), [#10862](https://github.com/tailwindlabs/tailwindcss/pull/10862)) +- Add `delay-0` and `duration-0` utilities ([#10294](https://github.com/tailwindlabs/tailwindcss/pull/10294)) +- Add `justify-normal` and `justify-stretch` utilities ([#10560](https://github.com/tailwindlabs/tailwindcss/pull/10560)) +- Add `content-normal` and `content-stretch` utilities ([#10645](https://github.com/tailwindlabs/tailwindcss/pull/10645)) +- Add `whitespace-break-spaces` utility ([#10729](https://github.com/tailwindlabs/tailwindcss/pull/10729)) +- Add support for configuring default `font-variation-settings` for a `font-family` ([#10034](https://github.com/tailwindlabs/tailwindcss/pull/10034), [#10515](https://github.com/tailwindlabs/tailwindcss/pull/10515)) + +### Fixed + +- Disallow using multiple selectors in arbitrary variants ([#10655](https://github.com/tailwindlabs/tailwindcss/pull/10655)) +- Sort class lists deterministically for Prettier plugin ([#10672](https://github.com/tailwindlabs/tailwindcss/pull/10672)) +- Ensure CLI builds have a non-zero exit code on failure ([#10703](https://github.com/tailwindlabs/tailwindcss/pull/10703)) +- Ensure module dependencies for value `null`, is an empty `Set` ([#10877](https://github.com/tailwindlabs/tailwindcss/pull/10877)) +- Fix format assumption when resolving module dependencies ([#10878](https://github.com/tailwindlabs/tailwindcss/pull/10878)) + +### Changed + +- Mark `rtl` and `ltr` variants as stable and remove warnings ([#10764](https://github.com/tailwindlabs/tailwindcss/pull/10764)) +- Use `inset` instead of `top`, `right`, `bottom`, and `left` properties ([#10765](https://github.com/tailwindlabs/tailwindcss/pull/10765)) +- Make `dark` and `rtl`/`ltr` variants insensitive to DOM order ([#10766](https://github.com/tailwindlabs/tailwindcss/pull/10766)) +- Use `:is` to make important selector option insensitive to DOM order ([#10835](https://github.com/tailwindlabs/tailwindcss/pull/10835)) + +## [3.2.7] - 2023-02-16 + +### Fixed + +- Fix use of `:where(.btn)` when matching `!btn` ([#10601](https://github.com/tailwindlabs/tailwindcss/pull/10601)) +- Revert including `outline-color` in `transition` and `transition-colors` by default ([#10604](https://github.com/tailwindlabs/tailwindcss/pull/10604)) + +## [3.2.6] - 2023-02-08 + +### Fixed + +- Fix installation failing with yarn and pnpm by dropping `oxide-api-shim` ([add1636](https://github.com/tailwindlabs/tailwindcss/commit/add16364b4b1100e1af23ad1ca6900a0b53cbba0)) + +## [3.2.5] - 2023-02-08 + +### Added + +- Add standalone CLI build for 64-bit Windows on ARM (`node16-win-arm64`) ([#10001](https://github.com/tailwindlabs/tailwindcss/pull/10001)) + +### Fixed + +- Cleanup unused `variantOrder` ([#9829](https://github.com/tailwindlabs/tailwindcss/pull/9829)) +- Fix `foo-[abc]/[def]` not being handled correctly ([#9866](https://github.com/tailwindlabs/tailwindcss/pull/9866)) +- Add container queries plugin to standalone CLI ([#9865](https://github.com/tailwindlabs/tailwindcss/pull/9865)) +- Support renaming of output files by PostCSS plugins in CLI ([#9944](https://github.com/tailwindlabs/tailwindcss/pull/9944)) +- Improve return value of `resolveConfig`, unwrap `ResolvableTo` ([#9972](https://github.com/tailwindlabs/tailwindcss/pull/9972)) +- Clip unbalanced brackets in arbitrary values ([#9973](https://github.com/tailwindlabs/tailwindcss/pull/9973)) +- Don’t reorder webkit scrollbar pseudo elements ([#9991](https://github.com/tailwindlabs/tailwindcss/pull/9991)) +- Deterministic sorting of arbitrary variants ([#10016](https://github.com/tailwindlabs/tailwindcss/pull/10016)) +- Add `data` key to theme types ([#10023](https://github.com/tailwindlabs/tailwindcss/pull/10023)) +- Prevent invalid arbitrary variant selectors from failing the build ([#10059](https://github.com/tailwindlabs/tailwindcss/pull/10059)) +- Properly handle subtraction followed by a variable ([#10074](https://github.com/tailwindlabs/tailwindcss/pull/10074)) +- Fix missing `string[]` in the `theme.dropShadow` types ([#10072](https://github.com/tailwindlabs/tailwindcss/pull/10072)) +- Update list of length units ([#10100](https://github.com/tailwindlabs/tailwindcss/pull/10100)) +- Fix not matching arbitrary properties when closely followed by square brackets ([#10212](https://github.com/tailwindlabs/tailwindcss/pull/10212)) +- Allow direct nesting in `root` or `@layer` nodes ([#10229](https://github.com/tailwindlabs/tailwindcss/pull/10229)) +- Don't prefix classes in arbitrary variants ([#10214](https://github.com/tailwindlabs/tailwindcss/pull/10214)) +- Fix perf regression when checking for changed content ([#10234](https://github.com/tailwindlabs/tailwindcss/pull/10234)) +- Fix missing `blocklist` member in the `Config` type ([#10239](https://github.com/tailwindlabs/tailwindcss/pull/10239)) +- Escape group names in selectors ([#10276](https://github.com/tailwindlabs/tailwindcss/pull/10276)) +- Consider earlier variants before sorting functions ([#10288](https://github.com/tailwindlabs/tailwindcss/pull/10288)) +- Allow variants with slashes ([#10336](https://github.com/tailwindlabs/tailwindcss/pull/10336)) +- Ensure generated CSS is always sorted in the same order for a given set of templates ([#10382](https://github.com/tailwindlabs/tailwindcss/pull/10382)) +- Handle variants when the same class appears multiple times in a selector ([#10397](https://github.com/tailwindlabs/tailwindcss/pull/10397)) +- Handle group/peer variants with quoted strings ([#10400](https://github.com/tailwindlabs/tailwindcss/pull/10400)) +- Parse alpha value from rgba/hsla colors when using variables ([#10429](https://github.com/tailwindlabs/tailwindcss/pull/10429)) +- Sort by `layer` inside `variants` layer ([#10505](https://github.com/tailwindlabs/tailwindcss/pull/10505)) +- Add `--watch=always` option to prevent exit when stdin closes ([#9966](https://github.com/tailwindlabs/tailwindcss/pull/9966)) + +### Changed + +- Alphabetize `theme` keys in default config ([#9953](https://github.com/tailwindlabs/tailwindcss/pull/9953)) +- Update esbuild to v17 ([#10368](https://github.com/tailwindlabs/tailwindcss/pull/10368)) +- Include `outline-color` in `transition` and `transition-colors` utilities ([#10385](https://github.com/tailwindlabs/tailwindcss/pull/10385)) + +## [3.2.4] - 2022-11-11 + +### Added + +- Add `blocklist` option to prevent generating unwanted CSS ([#9812](https://github.com/tailwindlabs/tailwindcss/pull/9812)) + +### Fixed + +- Fix watching of files on Linux when renames are involved ([#9796](https://github.com/tailwindlabs/tailwindcss/pull/9796)) +- Make sure errors are always displayed when watching for changes ([#9810](https://github.com/tailwindlabs/tailwindcss/pull/9810)) + +## [3.2.3] - 2022-11-09 + +### Fixed + +- Fixed use of `raw` content in the CLI ([#9773](https://github.com/tailwindlabs/tailwindcss/pull/9773)) +- Pick up changes from files that are both context and content deps ([#9787](https://github.com/tailwindlabs/tailwindcss/pull/9787)) +- Sort pseudo-elements ONLY after classes when using variants and `@apply` ([#9765](https://github.com/tailwindlabs/tailwindcss/pull/9765)) +- Support important utilities in the safelist (pattern must include a `!`) ([#9791](https://github.com/tailwindlabs/tailwindcss/pull/9791)) + +## [3.2.2] - 2022-11-04 + +### Fixed + +- Escape special characters in resolved content base paths ([#9650](https://github.com/tailwindlabs/tailwindcss/pull/9650)) +- Don't reuse container for array returning variant functions ([#9644](https://github.com/tailwindlabs/tailwindcss/pull/9644)) +- Exclude non-relevant selectors when generating rules with the important modifier ([#9677](https://github.com/tailwindlabs/tailwindcss/issues/9677)) +- Fix merging of arrays during config resolution ([#9706](https://github.com/tailwindlabs/tailwindcss/issues/9706)) +- Ensure configured `font-feature-settings` are included in Preflight ([#9707](https://github.com/tailwindlabs/tailwindcss/pull/9707)) +- Fix fractional values not being parsed properly inside arbitrary properties ([#9705](https://github.com/tailwindlabs/tailwindcss/pull/9705)) +- Fix incorrect selectors when using `@apply` in selectors with combinators and pseudos ([#9722](https://github.com/tailwindlabs/tailwindcss/pull/9722)) +- Fix cannot read properties of undefined (reading 'modifier') ([#9656](https://github.com/tailwindlabs/tailwindcss/pull/9656), [aa979d6](https://github.com/tailwindlabs/tailwindcss/commit/aa979d645f8bf4108c5fc938d7c0ba085b654c31)) + +## [3.2.1] - 2022-10-21 + +### Fixed + +- Fix missing `supports` in types ([#9616](https://github.com/tailwindlabs/tailwindcss/pull/9616)) +- Fix missing PostCSS dependencies in the CLI ([#9617](https://github.com/tailwindlabs/tailwindcss/pull/9617)) +- Ensure `micromatch` is a proper CLI dependency ([#9620](https://github.com/tailwindlabs/tailwindcss/pull/9620)) +- Ensure modifier values exist when using a `modifiers` object for `matchVariant` ([ba6551d](https://github.com/tailwindlabs/tailwindcss/commit/ba6551db0f2726461371b4f3c6cd4c7090888504)) + +## [3.2.0] - 2022-10-19 + +### Added + +- Add new `@config` directive ([#9405](https://github.com/tailwindlabs/tailwindcss/pull/9405)) +- Add new `relative: true` option to resolve content paths relative to the config file ([#9396](https://github.com/tailwindlabs/tailwindcss/pull/9396)) +- Add new `supports-*` variant ([#9453](https://github.com/tailwindlabs/tailwindcss/pull/9453)) +- Add new `min-*` and `max-*` variants ([#9558](https://github.com/tailwindlabs/tailwindcss/pull/9558)) +- Add new `aria-*` variants ([#9557](https://github.com/tailwindlabs/tailwindcss/pull/9557), [#9588](https://github.com/tailwindlabs/tailwindcss/pull/9588)) +- Add new `data-*` variants ([#9559](https://github.com/tailwindlabs/tailwindcss/pull/9559), [#9588](https://github.com/tailwindlabs/tailwindcss/pull/9588)) +- Add new `break-keep` utility for `word-break: keep-all` ([#9393](https://github.com/tailwindlabs/tailwindcss/pull/9393)) +- Add new `collapse` utility for `visibility: collapse` ([#9181](https://github.com/tailwindlabs/tailwindcss/pull/9181)) +- Add new `fill-none` utility for `fill: none` ([#9403](https://github.com/tailwindlabs/tailwindcss/pull/9403)) +- Add new `stroke-none` utility for `stroke: none` ([#9403](https://github.com/tailwindlabs/tailwindcss/pull/9403)) +- Add new `place-content-baseline` utility for `place-content: baseline` ([#9498](https://github.com/tailwindlabs/tailwindcss/pull/9498)) +- Add new `place-items-baseline` utility for `place-items: baseline` ([#9507](https://github.com/tailwindlabs/tailwindcss/pull/9507)) +- Add new `content-baseline` utility for `align-content: baseline` ([#9507](https://github.com/tailwindlabs/tailwindcss/pull/9507)) +- Add support for configuring default `font-feature-settings` for a font family ([#9039](https://github.com/tailwindlabs/tailwindcss/pull/9039)) +- Add standalone CLI build for 32-bit Linux on ARM (`node16-linux-armv7`) ([#9084](https://github.com/tailwindlabs/tailwindcss/pull/9084)) +- Add future flag to disable color opacity utility plugins ([#9088](https://github.com/tailwindlabs/tailwindcss/pull/9088)) +- Add negative value support for `outline-offset` ([#9136](https://github.com/tailwindlabs/tailwindcss/pull/9136)) +- Add support for modifiers to `matchUtilities` ([#9541](https://github.com/tailwindlabs/tailwindcss/pull/9541)) +- Allow negating utilities using `min`/`max`/`clamp` ([#9237](https://github.com/tailwindlabs/tailwindcss/pull/9237)) +- Implement fallback plugins when there is ambiguity between plugins when using arbitrary values ([#9376](https://github.com/tailwindlabs/tailwindcss/pull/9376)) +- Support `sort` function in `matchVariant` ([#9423](https://github.com/tailwindlabs/tailwindcss/pull/9423)) +- Upgrade to `postcss-nested` v6.0 ([#9546](https://github.com/tailwindlabs/tailwindcss/pull/9546)) + +### Fixed + +- Use absolute paths when resolving changed files for resilience against working directory changes ([#9032](https://github.com/tailwindlabs/tailwindcss/pull/9032)) +- Fix ring color utility generation when using `respectDefaultRingColorOpacity` ([#9070](https://github.com/tailwindlabs/tailwindcss/pull/9070)) +- Sort tags before classes when `@apply`-ing a selector with joined classes ([#9107](https://github.com/tailwindlabs/tailwindcss/pull/9107)) +- Remove invalid `outline-hidden` utility ([#9147](https://github.com/tailwindlabs/tailwindcss/pull/9147)) +- Honor the `hidden` attribute on elements in preflight ([#9174](https://github.com/tailwindlabs/tailwindcss/pull/9174)) +- Don't stop watching atomically renamed files ([#9173](https://github.com/tailwindlabs/tailwindcss/pull/9173), [#9215](https://github.com/tailwindlabs/tailwindcss/pull/9215)) +- Fix duplicate utilities issue causing memory leaks ([#9208](https://github.com/tailwindlabs/tailwindcss/pull/9208)) +- Fix `fontFamily` config TypeScript types ([#9214](https://github.com/tailwindlabs/tailwindcss/pull/9214)) +- Handle variants on complex selector utilities ([#9262](https://github.com/tailwindlabs/tailwindcss/pull/9262)) +- Fix shared config mutation issue ([#9294](https://github.com/tailwindlabs/tailwindcss/pull/9294)) +- Fix ordering of parallel variants ([#9282](https://github.com/tailwindlabs/tailwindcss/pull/9282)) +- Handle variants in utility selectors using `:where()` and `:has()` ([#9309](https://github.com/tailwindlabs/tailwindcss/pull/9309)) +- Improve data type analysis for arbitrary values ([#9320](https://github.com/tailwindlabs/tailwindcss/pull/9320)) +- Don't emit generated utilities with invalid uses of theme functions ([#9319](https://github.com/tailwindlabs/tailwindcss/pull/9319)) +- Revert change that only listened for stdin close on TTYs ([#9331](https://github.com/tailwindlabs/tailwindcss/pull/9331)) +- Ignore unset values (like `null` or `undefined`) when resolving the classList for intellisense ([#9385](https://github.com/tailwindlabs/tailwindcss/pull/9385)) +- Improve type checking for formal syntax ([#9349](https://github.com/tailwindlabs/tailwindcss/pull/9349), [#9448](https://github.com/tailwindlabs/tailwindcss/pull/9448)) +- Fix incorrect required `content` key in custom plugin configs ([#9502](https://github.com/tailwindlabs/tailwindcss/pull/9502), [#9545](https://github.com/tailwindlabs/tailwindcss/pull/9545)) +- Fix content path detection on Windows ([#9569](https://github.com/tailwindlabs/tailwindcss/pull/9569)) +- Ensure `--content` is used in the CLI when passed ([#9587](https://github.com/tailwindlabs/tailwindcss/pull/9587)) + +## [3.1.8] - 2022-08-05 + +### Fixed + +- Don’t prefix classes within reused arbitrary variants ([#8992](https://github.com/tailwindlabs/tailwindcss/pull/8992)) +- Fix usage of alpha values inside single-named colors that are functions ([#9008](https://github.com/tailwindlabs/tailwindcss/pull/9008)) +- Fix `@apply` of user utilities when negative and non-negative versions both exist ([#9027](https://github.com/tailwindlabs/tailwindcss/pull/9027)) + +## [3.1.7] - 2022-07-29 + +### Fixed + +- Don't rewrite source maps for `@layer` rules ([#8971](https://github.com/tailwindlabs/tailwindcss/pull/8971)) + +### Added + +- Added types for `resolveConfig` ([#8924](https://github.com/tailwindlabs/tailwindcss/pull/8924)) + +## [3.1.6] - 2022-07-11 + +### Fixed + +- Fix usage on Node 12.x ([b4e637e](https://github.com/tailwindlabs/tailwindcss/commit/b4e637e2e096a9d6f2210efba9541f6fd4f28e56)) +- Handle theme keys with slashes when using `theme()` in CSS ([#8831](https://github.com/tailwindlabs/tailwindcss/pull/8831)) + +## [3.1.5] - 2022-07-07 + +### Added + +- Support configuring a default `font-weight` for each font size utility ([#8763](https://github.com/tailwindlabs/tailwindcss/pull/8763)) +- Add support for alpha values in safe list ([#8774](https://github.com/tailwindlabs/tailwindcss/pull/8774)) + +### Fixed + +- Improve types to support fallback values in the CSS-in-JS syntax used in plugin APIs ([#8762](https://github.com/tailwindlabs/tailwindcss/pull/8762)) +- Support including `tailwindcss` and `autoprefixer` in `postcss.config.js` in standalone CLI ([#8769](https://github.com/tailwindlabs/tailwindcss/pull/8769)) +- Fix using special-characters as prefixes ([#8772](https://github.com/tailwindlabs/tailwindcss/pull/8772)) +- Don’t prefix classes used within arbitrary variants ([#8773](https://github.com/tailwindlabs/tailwindcss/pull/8773)) +- Add more explicit types for the default theme ([#8780](https://github.com/tailwindlabs/tailwindcss/pull/8780)) + +## [3.1.4] - 2022-06-21 + +### Fixed + +- Provide default to `` when using `theme()` ([#8652](https://github.com/tailwindlabs/tailwindcss/pull/8652)) +- Detect arbitrary variants with quotes ([#8687](https://github.com/tailwindlabs/tailwindcss/pull/8687)) +- Don’t add spaces around raw `/` that are preceded by numbers ([#8688](https://github.com/tailwindlabs/tailwindcss/pull/8688)) + +## [3.1.3] - 2022-06-14 + +### Fixed + +- Fix extraction of multi-word utilities with arbitrary values and quotes ([#8604](https://github.com/tailwindlabs/tailwindcss/pull/8604)) +- Fix casing of import of `corePluginList` type definition ([#8587](https://github.com/tailwindlabs/tailwindcss/pull/8587)) +- Ignore PostCSS nodes returned by `addVariant` ([#8608](https://github.com/tailwindlabs/tailwindcss/pull/8608)) +- Fix missing spaces around arithmetic operators ([#8615](https://github.com/tailwindlabs/tailwindcss/pull/8615)) +- Detect alpha value in CSS `theme()` function when using quotes ([#8625](https://github.com/tailwindlabs/tailwindcss/pull/8625)) +- Fix "Maximum call stack size exceeded" bug ([#8636](https://github.com/tailwindlabs/tailwindcss/pull/8636)) +- Allow functions returning parallel variants to mutate the container ([#8622](https://github.com/tailwindlabs/tailwindcss/pull/8622)) +- Remove text opacity CSS variables from `::marker` ([#8622](https://github.com/tailwindlabs/tailwindcss/pull/8622)) + +## [3.1.2] - 2022-06-10 + +### Fixed + +- Ensure `\` is a valid arbitrary variant token ([#8576](https://github.com/tailwindlabs/tailwindcss/pull/8576)) +- Enable `postcss-import` in the CLI by default in watch mode ([#8574](https://github.com/tailwindlabs/tailwindcss/pull/8574), [#8580](https://github.com/tailwindlabs/tailwindcss/pull/8580)) + +## [3.1.1] - 2022-06-09 + +### Fixed + +- Fix candidate extractor regression ([#8558](https://github.com/tailwindlabs/tailwindcss/pull/8558)) +- Split `::backdrop` into separate defaults group ([#8567](https://github.com/tailwindlabs/tailwindcss/pull/8567)) +- Fix postcss plugin type ([#8564](https://github.com/tailwindlabs/tailwindcss/pull/8564)) +- Fix class detection in markdown code fences and slim templates ([#8569](https://github.com/tailwindlabs/tailwindcss/pull/8569)) + +## [3.1.0] - 2022-06-08 + +### Fixed + +- Types: allow for arbitrary theme values (for 3rd party plugins) ([#7926](https://github.com/tailwindlabs/tailwindcss/pull/7926)) +- Don’t split vars with numbers in them inside arbitrary values ([#8091](https://github.com/tailwindlabs/tailwindcss/pull/8091)) +- Require matching prefix when detecting negatives ([#8121](https://github.com/tailwindlabs/tailwindcss/pull/8121)) +- Handle duplicate At Rules without children ([#8122](https://github.com/tailwindlabs/tailwindcss/pull/8122)) +- Allow arbitrary values with commas in `@apply` ([#8125](https://github.com/tailwindlabs/tailwindcss/pull/8125)) +- Fix intellisense for plugins with multiple `@apply` rules ([#8213](https://github.com/tailwindlabs/tailwindcss/pull/8213)) +- Improve type detection for arbitrary color values ([#8201](https://github.com/tailwindlabs/tailwindcss/pull/8201)) +- Support PostCSS config options in config file in CLI ([#8226](https://github.com/tailwindlabs/tailwindcss/pull/8226)) +- Remove default `[hidden]` style in preflight ([#8248](https://github.com/tailwindlabs/tailwindcss/pull/8248)) +- Only check selectors containing base apply candidates for circular dependencies ([#8222](https://github.com/tailwindlabs/tailwindcss/pull/8222)) +- Rewrite default class extractor ([#8204](https://github.com/tailwindlabs/tailwindcss/pull/8204)) +- Move `important` selector to the front when `@apply`-ing selector-modifying variants in custom utilities ([#8313](https://github.com/tailwindlabs/tailwindcss/pull/8313)) +- Error when registering an invalid custom variant ([#8345](https://github.com/tailwindlabs/tailwindcss/pull/8345)) +- Create tailwind.config.cjs file in ESM package when running init ([#8363](https://github.com/tailwindlabs/tailwindcss/pull/8363)) +- Fix `matchVariant` that use at-rules and placeholders ([#8392](https://github.com/tailwindlabs/tailwindcss/pull/8392)) +- Improve types of the `tailwindcss/plugin` ([#8400](https://github.com/tailwindlabs/tailwindcss/pull/8400)) +- Allow returning parallel variants from `addVariant` or `matchVariant` callback functions ([#8455](https://github.com/tailwindlabs/tailwindcss/pull/8455)) +- Try using local `postcss` installation first in the CLI ([#8270](https://github.com/tailwindlabs/tailwindcss/pull/8270)) +- Allow default ring color to be a function ([#7587](https://github.com/tailwindlabs/tailwindcss/pull/7587)) +- Don't inherit `to` value from parent gradients ([#8489](https://github.com/tailwindlabs/tailwindcss/pull/8489)) +- Remove process dependency from log functions ([#8530](https://github.com/tailwindlabs/tailwindcss/pull/8530)) +- Ensure we can use `@import 'tailwindcss/...'` without node_modules ([#8537](https://github.com/tailwindlabs/tailwindcss/pull/8537)) + +### Changed + +- Only apply hover styles when supported (future) ([#8394](https://github.com/tailwindlabs/tailwindcss/pull/8394)) +- Respect default ring color opacity (future) ([#8448](https://github.com/tailwindlabs/tailwindcss/pull/8448), [3f4005e](https://github.com/tailwindlabs/tailwindcss/commit/3f4005e833445f7549219eb5ae89728cbb3a2630)) + +### Added + +- Support PostCSS `Document` nodes ([#7291](https://github.com/tailwindlabs/tailwindcss/pull/7291)) +- Add `text-start` and `text-end` utilities ([#6656](https://github.com/tailwindlabs/tailwindcss/pull/6656)) +- Support customizing class name when using `darkMode: 'class'` ([#5800](https://github.com/tailwindlabs/tailwindcss/pull/5800)) +- Add `--poll` option to the CLI ([#7725](https://github.com/tailwindlabs/tailwindcss/pull/7725)) +- Add new `border-spacing` utilities ([#7102](https://github.com/tailwindlabs/tailwindcss/pull/7102)) +- Add `enabled` variant ([#7905](https://github.com/tailwindlabs/tailwindcss/pull/7905)) +- Add TypeScript types for the `tailwind.config.js` file ([#7891](https://github.com/tailwindlabs/tailwindcss/pull/7891)) +- Add `backdrop` variant ([#7924](https://github.com/tailwindlabs/tailwindcss/pull/7924), [#8526](https://github.com/tailwindlabs/tailwindcss/pull/8526)) +- Add `grid-flow-dense` utility ([#8193](https://github.com/tailwindlabs/tailwindcss/pull/8193)) +- Add `mix-blend-plus-lighter` utility ([#8288](https://github.com/tailwindlabs/tailwindcss/pull/8288)) +- Add arbitrary variants ([#8299](https://github.com/tailwindlabs/tailwindcss/pull/8299)) +- Add experimental `matchVariant` API ([#8310](https://github.com/tailwindlabs/tailwindcss/pull/8310), [34fd0fb8](https://github.com/tailwindlabs/tailwindcss/commit/34fd0fb82aa574cddc5c7aa3ad7d1af5e3735e5d)) +- Add `prefers-contrast` media query variants ([#8410](https://github.com/tailwindlabs/tailwindcss/pull/8410)) +- Add opacity support when referencing colors with `theme` function ([#8416](https://github.com/tailwindlabs/tailwindcss/pull/8416)) +- Add `postcss-import` support to the CLI ([#8437](https://github.com/tailwindlabs/tailwindcss/pull/8437)) +- Add `optional` variant ([#8486](https://github.com/tailwindlabs/tailwindcss/pull/8486)) +- Add `` placeholder support for custom colors ([#8501](https://github.com/tailwindlabs/tailwindcss/pull/8501)) + +## [3.0.24] - 2022-04-12 + +### Fixed + +- Prevent nesting plugin from breaking other plugins ([#7563](https://github.com/tailwindlabs/tailwindcss/pull/7563)) +- Recursively collapse adjacent rules ([#7565](https://github.com/tailwindlabs/tailwindcss/pull/7565)) +- Preserve source maps for generated CSS ([#7588](https://github.com/tailwindlabs/tailwindcss/pull/7588)) +- Split box shadows on top-level commas only ([#7479](https://github.com/tailwindlabs/tailwindcss/pull/7479)) +- Use local user CSS cache for `@apply` ([#7524](https://github.com/tailwindlabs/tailwindcss/pull/7524)) +- Invalidate context when main CSS changes ([#7626](https://github.com/tailwindlabs/tailwindcss/pull/7626)) +- Only add `!` to selector class matching template candidate when using important modifier with multi-class selectors ([#7664](https://github.com/tailwindlabs/tailwindcss/pull/7664)) +- Correctly parse and prefix animation names with dots ([#7163](https://github.com/tailwindlabs/tailwindcss/pull/7163)) +- Fix extraction from template literal/function with array ([#7481](https://github.com/tailwindlabs/tailwindcss/pull/7481)) +- Don't output unparsable arbitrary values ([#7789](https://github.com/tailwindlabs/tailwindcss/pull/7789)) +- Fix generation of `div:not(.foo)` if `.foo` is never defined ([#7815](https://github.com/tailwindlabs/tailwindcss/pull/7815)) +- Allow for custom properties in `rgb`, `rgba`, `hsl` and `hsla` colors ([#7933](https://github.com/tailwindlabs/tailwindcss/pull/7933)) +- Remove autoprefixer as explicit peer-dependency to avoid invalid warnings in situations where it isn't actually needed ([#7949](https://github.com/tailwindlabs/tailwindcss/pull/7949)) +- Ensure the `percentage` data type is validated correctly ([#8015](https://github.com/tailwindlabs/tailwindcss/pull/8015)) +- Make sure `font-weight` is inherited by form controls in all browsers ([#8078](https://github.com/tailwindlabs/tailwindcss/pull/8078)) + +### Changed + +- Replace `chalk` with `picocolors` ([#6039](https://github.com/tailwindlabs/tailwindcss/pull/6039)) +- Replace `cosmiconfig` with `lilconfig` ([#6039](https://github.com/tailwindlabs/tailwindcss/pull/6038)) +- Update `cssnano` to avoid removing empty variables when minifying ([#7818](https://github.com/tailwindlabs/tailwindcss/pull/7818)) + +## [3.0.23] - 2022-02-16 + +### Fixed + +- Remove opacity variables from `:visited` pseudo class ([#7458](https://github.com/tailwindlabs/tailwindcss/pull/7458)) +- Support arbitrary values + calc + theme with quotes ([#7462](https://github.com/tailwindlabs/tailwindcss/pull/7462)) +- Don't duplicate layer output when scanning content with variants + wildcards ([#7478](https://github.com/tailwindlabs/tailwindcss/pull/7478)) +- Implement `getClassOrder` instead of `sortClassList` ([#7459](https://github.com/tailwindlabs/tailwindcss/pull/7459)) + +## [3.0.22] - 2022-02-11 + +### Fixed + +- Temporarily move `postcss` to dependencies ([#7424](https://github.com/tailwindlabs/tailwindcss/pull/7424)) + +## [3.0.21] - 2022-02-10 + +### Fixed + +- Move prettier plugin to dev dependencies ([#7418](https://github.com/tailwindlabs/tailwindcss/pull/7418)) + +## [3.0.20] - 2022-02-10 + +### Added + +- Expose `context.sortClassList(classes)` ([#7412](https://github.com/tailwindlabs/tailwindcss/pull/7412)) + +## [3.0.19] - 2022-02-07 + +### Fixed + +- Fix preflight border color fallback ([#7288](https://github.com/tailwindlabs/tailwindcss/pull/7288)) +- Correctly parse shadow lengths without a leading zero ([#7289](https://github.com/tailwindlabs/tailwindcss/pull/7289)) +- Don't crash when scanning extremely long class candidates ([#7331](https://github.com/tailwindlabs/tailwindcss/pull/7331)) +- Use less hacky fix for URLs detected as custom properties ([#7275](https://github.com/tailwindlabs/tailwindcss/pull/7275)) +- Correctly generate negative utilities when dash is before the prefix ([#7295](https://github.com/tailwindlabs/tailwindcss/pull/7295)) +- Detect prefixed negative utilities in the safelist ([#7295](https://github.com/tailwindlabs/tailwindcss/pull/7295)) + +## [3.0.18] - 2022-01-28 + +### Fixed + +- Fix `@apply` order regression (in `addComponents`, `addUtilities`, ...) ([#7232](https://github.com/tailwindlabs/tailwindcss/pull/7232)) +- Quick fix for incorrect arbitrary properties when using URLs ([#7252](https://github.com/tailwindlabs/tailwindcss/pull/7252)) + +## [3.0.17] - 2022-01-26 + +### Fixed + +- Remove false positive warning in CLI when using the `--content` option ([#7220](https://github.com/tailwindlabs/tailwindcss/pull/7220)) + +## [3.0.16] - 2022-01-24 + +### Fixed + +- Ensure to transpile the PostCSS Nesting plugin (tailwindcss/nesting) ([#7080](https://github.com/tailwindlabs/tailwindcss/pull/7080)) +- Improve various warnings ([#7118](https://github.com/tailwindlabs/tailwindcss/pull/7118)) +- Fix grammatical mistake ([cca5a38](https://github.com/tailwindlabs/tailwindcss/commit/cca5a3804e1d3ee0214491921e1aec35bf62a813)) + +## [3.0.15] - 2022-01-15 + +### Fixed + +- Temporarily remove optional chaining in nesting plugin ([#7077](https://github.com/tailwindlabs/tailwindcss/pull/7077)) + +## [3.0.14] - 2022-01-14 + +### Added + +- Show warnings for invalid content config ([#7065](https://github.com/tailwindlabs/tailwindcss/pull/7065)) + +### Fixed + +- Only emit utility/component variants when those layers exist ([#7066](https://github.com/tailwindlabs/tailwindcss/pull/7066)) +- Ensure nesting plugins can receive options ([#7016](https://github.com/tailwindlabs/tailwindcss/pull/7016)) + +## [3.0.13] - 2022-01-11 + +### Fixed + +- Fix consecutive builds with at apply producing different CSS ([#6999](https://github.com/tailwindlabs/tailwindcss/pull/6999)) + +## [3.0.12] - 2022-01-07 + +### Fixed + +- Allow use of falsy values in theme config ([#6917](https://github.com/tailwindlabs/tailwindcss/pull/6917)) +- Ensure we can apply classes that are grouped with non-class selectors ([#6922](https://github.com/tailwindlabs/tailwindcss/pull/6922)) +- Improve standalone CLI compatibility on Linux by switching to the `linuxstatic` build target ([#6914](https://github.com/tailwindlabs/tailwindcss/pull/6914)) +- Ensure `@apply` works consistently with or without `@layer` ([#6938](https://github.com/tailwindlabs/tailwindcss/pull/6938)) +- Only emit defaults when using base layer ([#6926](https://github.com/tailwindlabs/tailwindcss/pull/6926)) +- Emit plugin defaults regardless of usage ([#6926](https://github.com/tailwindlabs/tailwindcss/pull/6926)) +- Move default border color back to preflight ([#6926](https://github.com/tailwindlabs/tailwindcss/pull/6926)) +- Change `experimental.optimizeUniversalDefaults` to only work with `@tailwind base` ([#6926](https://github.com/tailwindlabs/tailwindcss/pull/6926)) + +## [3.0.11] - 2022-01-05 + +### Fixed + +- Preserve casing of CSS variables added by plugins ([#6888](https://github.com/tailwindlabs/tailwindcss/pull/6888)) +- Ignore content paths that are passed in but don't actually exist ([#6901](https://github.com/tailwindlabs/tailwindcss/pull/6901)) +- Revert change that applies Tailwind's defaults in isolated environments like CSS modules ([9fdc391](https://github.com/tailwindlabs/tailwindcss/commit/9fdc391d4ff93e7e350f5ce439060176b1f0162f)) + +## [3.0.10] - 2022-01-04 + +### Fixed + +- Fix `@apply` in files without `@tailwind` directives ([#6580](https://github.com/tailwindlabs/tailwindcss/pull/6580), [#6875](https://github.com/tailwindlabs/tailwindcss/pull/6875)) +- CLI: avoid unnecessary writes to output files ([#6550](https://github.com/tailwindlabs/tailwindcss/pull/6550)) + +### Added + +- Allow piping data into the CLI ([#6876](https://github.com/tailwindlabs/tailwindcss/pull/6876)) + +## [3.0.9] - 2022-01-03 + +### Fixed + +- Improve `DEBUG` flag ([#6797](https://github.com/tailwindlabs/tailwindcss/pull/6797), [#6804](https://github.com/tailwindlabs/tailwindcss/pull/6804)) +- Ensure we can use `<` and `>` characters in modifiers ([#6851](https://github.com/tailwindlabs/tailwindcss/pull/6851)) +- Validate `theme()` works in arbitrary values ([#6852](https://github.com/tailwindlabs/tailwindcss/pull/6852)) +- Properly detect `theme()` value usage in arbitrary properties ([#6854](https://github.com/tailwindlabs/tailwindcss/pull/6854)) +- Improve collapsing of duplicate declarations ([#6856](https://github.com/tailwindlabs/tailwindcss/pull/6856)) +- Remove support for `TAILWIND_MODE=watch` ([#6858](https://github.com/tailwindlabs/tailwindcss/pull/6858)) + +## [3.0.8] - 2021-12-28 + +### Fixed + +- Reduce specificity of `abbr` rule in preflight ([#6671](https://github.com/tailwindlabs/tailwindcss/pull/6671)) +- Support HSL with hue units in arbitrary values ([#6726](https://github.com/tailwindlabs/tailwindcss/pull/6726)) +- Add `node16-linux-arm64` target for standalone CLI ([#6693](https://github.com/tailwindlabs/tailwindcss/pull/6693)) + +## [3.0.7] - 2021-12-17 + +### Fixed + +- Don't mutate custom color palette when overriding per-plugin colors ([#6546](https://github.com/tailwindlabs/tailwindcss/pull/6546)) +- Improve circular dependency detection when using `@apply` ([#6588](https://github.com/tailwindlabs/tailwindcss/pull/6588)) +- Only generate variants for non-`user` layers ([#6589](https://github.com/tailwindlabs/tailwindcss/pull/6589)) +- Properly extract classes with arbitrary values in arrays and classes followed by escaped quotes ([#6590](https://github.com/tailwindlabs/tailwindcss/pull/6590)) +- Improve jsx interpolation candidate matching ([#6593](https://github.com/tailwindlabs/tailwindcss/pull/6593)) +- Ensure `@apply` of a rule inside an AtRule works ([#6594](https://github.com/tailwindlabs/tailwindcss/pull/6594)) + +## [3.0.6] - 2021-12-16 + +### Fixed + +- Support square bracket notation in paths ([#6519](https://github.com/tailwindlabs/tailwindcss/pull/6519)) +- Ensure all plugins are executed for a given candidate ([#6540](https://github.com/tailwindlabs/tailwindcss/pull/6540)) + +## [3.0.5] - 2021-12-15 + +### Fixed + +- Revert: add `li` to list-style reset ([9777562d](https://github.com/tailwindlabs/tailwindcss/commit/9777562da37ee631bbf77374c0d14825f09ef9af)) + +## [3.0.4] - 2021-12-15 + +### Fixed + +- Insert always-on defaults layer in correct spot ([#6526](https://github.com/tailwindlabs/tailwindcss/pull/6526)) + +## [3.0.3] - 2021-12-15 + +### Added + +- Warn about invalid globs in `content` ([#6449](https://github.com/tailwindlabs/tailwindcss/pull/6449)) +- Add standalone tailwindcss CLI ([#6506](https://github.com/tailwindlabs/tailwindcss/pull/6506)) +- Add `li` to list-style reset ([00f60e6](https://github.com/tailwindlabs/tailwindcss/commit/00f60e61013c6e4e3419e4b699371a13eb30b75d)) + +### Fixed + +- Don't output unparsable values ([#6469](https://github.com/tailwindlabs/tailwindcss/pull/6469)) +- Fix text decoration utilities from overriding the new text decoration color/style/thickness utilities when used with a modifier ([#6378](https://github.com/tailwindlabs/tailwindcss/pull/6378)) +- Move defaults to their own always-on layer ([#6500](https://github.com/tailwindlabs/tailwindcss/pull/6500)) +- Support negative values in safelist patterns ([#6480](https://github.com/tailwindlabs/tailwindcss/pull/6480)) + +## [3.0.2] - 2021-12-13 + +### Fixed + +- Temporarily disable optimize universal defaults, fixes issue with transforms/filters/rings not being `@apply`-able in CSS modules/Svelte components/Vue components ([#6461](https://github.com/tailwindlabs/tailwindcss/pull/6461)) + +## [3.0.1] - 2021-12-10 + +### Fixed + +- Ensure complex variants with multiple classes work ([#6311](https://github.com/tailwindlabs/tailwindcss/pull/6311)) +- Re-add `default` interop to public available functions ([#6348](https://github.com/tailwindlabs/tailwindcss/pull/6348)) +- Detect circular dependencies when using `@apply` ([#6365](https://github.com/tailwindlabs/tailwindcss/pull/6365)) +- Fix defaults optimization when vendor prefixes are involved ([#6369](https://github.com/tailwindlabs/tailwindcss/pull/6369)) + +## [3.0.0] - 2021-12-09 + +### Fixed + +- Enforce the order of some variants (like `before` and `after`) ([#6018](https://github.com/tailwindlabs/tailwindcss/pull/6018)) + +### Added + +- Add `placeholder` variant ([#6106](https://github.com/tailwindlabs/tailwindcss/pull/6106)) +- Add composable `touch-action` utilities ([#6115](https://github.com/tailwindlabs/tailwindcss/pull/6115)) +- Add support for "arbitrary properties" ([#6161](https://github.com/tailwindlabs/tailwindcss/pull/6161)) +- Add `portrait` and `landscape` variants ([#6046](https://github.com/tailwindlabs/tailwindcss/pull/6046)) +- Add `text-decoration-style`, `text-decoration-thickness`, and `text-underline-offset` utilities ([#6004](https://github.com/tailwindlabs/tailwindcss/pull/6004)) +- Add `menu` reset to preflight ([#6213](https://github.com/tailwindlabs/tailwindcss/pull/6213)) +- Allow `0` as a valid `length` value ([#6233](https://github.com/tailwindlabs/tailwindcss/pull/6233), [#6259](https://github.com/tailwindlabs/tailwindcss/pull/6259)) +- Add CSS functions to data types ([#6258](https://github.com/tailwindlabs/tailwindcss/pull/6258)) +- Support negative values for `scale-*` utilities ([c48e629](https://github.com/tailwindlabs/tailwindcss/commit/c48e629955585ad18dadba9f470fda59cc448ab7)) +- Improve `length` data type, by validating each value individually ([#6283](https://github.com/tailwindlabs/tailwindcss/pull/6283)) + +### Changed + +- Deprecate `decoration-slice` and `decoration-break` in favor `box-decoration-slice` and `box-decoration-break` _(non-breaking)_ ([#6004](https://github.com/tailwindlabs/tailwindcss/pull/6004)) + +## [3.0.0-alpha.2] - 2021-11-08 + +### Changed + +- Don't use pointer cursor on disabled buttons by default ([#5772](https://github.com/tailwindlabs/tailwindcss/pull/5772)) +- Set default content value in preflight instead of within each before/after utility ([#5820](https://github.com/tailwindlabs/tailwindcss/pull/5820)) +- Remove `prefix` as a function ([#5829](https://github.com/tailwindlabs/tailwindcss/pull/5829)) + +### Added + +- Add `flex-basis` utilities ([#5671](https://github.com/tailwindlabs/tailwindcss/pull/5671)) +- Make negative values a first-class feature ([#5709](https://github.com/tailwindlabs/tailwindcss/pull/5709)) +- Add `fit-content` values for `min/max-width/height` utilities ([#5638](https://github.com/tailwindlabs/tailwindcss/pull/5638)) +- Add `min/max-content` values for `min/max-height` utilities ([#5729](https://github.com/tailwindlabs/tailwindcss/pull/5729)) +- Add all standard `cursor-*` values by default ([#5734](https://github.com/tailwindlabs/tailwindcss/pull/5734)) +- Add `grow-*` and `shrink-*` utilities, deprecate `flex-grow-*` and `flex-shrink-*` ([#5733](https://github.com/tailwindlabs/tailwindcss/pull/5733)) +- Add `text-decoration-color` utilities ([#5760](https://github.com/tailwindlabs/tailwindcss/pull/5760)) +- Add new declarative `addVariant` API ([#5809](https://github.com/tailwindlabs/tailwindcss/pull/5809)) +- Add first-class `print` variant for targeting printed media ([#5885](https://github.com/tailwindlabs/tailwindcss/pull/5885)) +- Add `outline-style`, `outline-color`, `outline-width` and `outline-offset` utilities ([#5887](https://github.com/tailwindlabs/tailwindcss/pull/5887)) +- Add full color palette for `fill-*` and `stroke-*` utilities (#5933[](https://github.com/tailwindlabs/tailwindcss/pull/5933)) +- Add composable API for colored box shadows ([#5979](https://github.com/tailwindlabs/tailwindcss/pull/5979)) + +### Fixed + +- Configure chokidar's `awaitWriteFinish` setting to avoid occasional stale builds on Windows ([#5774](https://github.com/tailwindlabs/tailwindcss/pull/5774)) +- Fix CLI `--content` option ([#5775](https://github.com/tailwindlabs/tailwindcss/pull/5775)) +- Fix before/after utilities overriding custom content values at larger breakpoints ([#5820](https://github.com/tailwindlabs/tailwindcss/pull/5820)) +- Cleanup duplicate properties ([#5830](https://github.com/tailwindlabs/tailwindcss/pull/5830)) +- Allow `_` inside `url()` when using arbitrary values ([#5853](https://github.com/tailwindlabs/tailwindcss/pull/5853)) +- Prevent crashes when using comments in `@layer` AtRules ([#5854](https://github.com/tailwindlabs/tailwindcss/pull/5854)) +- Handle color transformations properly with `theme(...)` for all relevant plugins ([#4533](https://github.com/tailwindlabs/tailwindcss/pull/4533), [#5871](https://github.com/tailwindlabs/tailwindcss/pull/5871)) +- Ensure `@apply`-ing a utility with multiple definitions works ([#5870](https://github.com/tailwindlabs/tailwindcss/pull/5870)) + +## [3.0.0-alpha.1] - 2021-10-01 + +### Changed + +- Remove AOT engine, make JIT the default ([#5340](https://github.com/tailwindlabs/tailwindcss/pull/5340)) +- Throw when trying to `@apply` the `group` class ([#4666](https://github.com/tailwindlabs/tailwindcss/pull/4666)) +- Remove dependency on `modern-normalize`, inline and consolidate with Preflight ([#5358](https://github.com/tailwindlabs/tailwindcss/pull/5358)) +- Enable extended color palette by default with updated color names ([#5384](https://github.com/tailwindlabs/tailwindcss/pull/5384)) +- Move `vertical-align` values to config file instead of hard-coding ([#5487](https://github.com/tailwindlabs/tailwindcss/pull/5487)) +- Rename `overflow-clip` to `text-clip` and `overflow-ellipsis` to `text-ellipsis` ([#5630](https://github.com/tailwindlabs/tailwindcss/pull/5630)) + +### Added + +- Add native `aspect-ratio` utilities ([#5359](https://github.com/tailwindlabs/tailwindcss/pull/5359)) +- Unify config callback helpers into single object ([#5382](https://github.com/tailwindlabs/tailwindcss/pull/5382)) +- Preserve original color format when adding opacity whenever possible ([#5154](https://github.com/tailwindlabs/tailwindcss/pull/5154)) +- Add `accent-color` utilities ([#5387](https://github.com/tailwindlabs/tailwindcss/pull/5387)) +- Add `scroll-behavior` utilities ([#5388](https://github.com/tailwindlabs/tailwindcss/pull/5388)) +- Add `will-change` utilities ([#5448](https://github.com/tailwindlabs/tailwindcss/pull/5448)) +- Add `text-indent` utilities ([#5449](https://github.com/tailwindlabs/tailwindcss/pull/5449)) +- Add `column` utilities ([#5457](https://github.com/tailwindlabs/tailwindcss/pull/5457)) +- Add `border-hidden` utility ([#5485](https://github.com/tailwindlabs/tailwindcss/pull/5485)) +- Add `align-sub` and `align-super` utilities by default ([#5486](https://github.com/tailwindlabs/tailwindcss/pull/5486)) +- Add `break-before`, `break-inside` and `break-after` utilities ([#5530](https://github.com/tailwindlabs/tailwindcss/pull/5530)) +- Add `file` variant for `::file-selector-button` pseudo element ([#4936](https://github.com/tailwindlabs/tailwindcss/pull/4936)) +- Add comprehensive arbitrary value support ([#5568](https://github.com/tailwindlabs/tailwindcss/pull/5568)) +- Add `touch-action` utilities ([#5603](https://github.com/tailwindlabs/tailwindcss/pull/5603)) +- Add `inherit` to default color palette ([#5597](https://github.com/tailwindlabs/tailwindcss/pull/5597)) +- Add `overflow-clip`, `overflow-x-clip` and `overflow-y-clip` utilities ([#5630](https://github.com/tailwindlabs/tailwindcss/pull/5630)) +- Add `[open]` variant ([#5627](https://github.com/tailwindlabs/tailwindcss/pull/5627)) +- Add `scroll-snap` utilities ([#5637](https://github.com/tailwindlabs/tailwindcss/pull/5637)) +- Add `border-x` and `border-y` width and color utilities ([#5639](https://github.com/tailwindlabs/tailwindcss/pull/5639)) + +### Fixed + +- Fix defining colors as functions when color opacity plugins are disabled ([#5470](https://github.com/tailwindlabs/tailwindcss/pull/5470)) +- Fix using negated `content` globs ([#5625](https://github.com/tailwindlabs/tailwindcss/pull/5625)) +- Fix using backslashes in `content` globs ([#5628](https://github.com/tailwindlabs/tailwindcss/pull/5628)) + +## [2.2.19] - 2021-10-29 + +### Fixed + +- Ensure `corePlugins` order is consistent in AOT mode ([#5928](https://github.com/tailwindlabs/tailwindcss/pull/5928)) + +## [2.2.18] - 2021-10-29 + +### Fixed + +- Bump versions for security vulnerabilities ([#5924](https://github.com/tailwindlabs/tailwindcss/pull/5924)) + +## [2.2.17] - 2021-10-13 + +### Fixed + +- Configure chokidar's `awaitWriteFinish` setting to avoid occasional stale builds on Windows ([#5758](https://github.com/tailwindlabs/tailwindcss/pull/5758)) + +## [2.2.16] - 2021-09-26 + +### Fixed + +- JIT: Properly handle animations that use CSS custom properties ([#5602](https://github.com/tailwindlabs/tailwindcss/pull/5602)) + +## [2.2.15] - 2021-09-10 + +### Fixed + +- Ensure using CLI without `-i` for input file continues to work even though deprecated ([#5464](https://github.com/tailwindlabs/tailwindcss/pull/5464)) + +## [2.2.14] - 2021-09-08 + +### Fixed + +- Only use `@defaults` in JIT, switch back to `clean-css` in case there's any meaningful differences in the output ([bf248cb](https://github.com/tailwindlabs/tailwindcss/commit/bf248cb0de889d48854fbdd26536f4a492556efd)) + +## [2.2.13] - 2021-09-08 + +### Fixed + +- Replace `clean-css` with `cssnano` for CDN builds to fix minified builds ([75cc3ca](https://github.com/tailwindlabs/tailwindcss/commit/75cc3ca305aedddc8a85f3df1a420fefad3fb5c4)) + +## [2.2.12] - 2021-09-08 + +### Fixed + +- Ensure that divide utilities inject a default border color ([#5438](https://github.com/tailwindlabs/tailwindcss/pull/5438)) + +## [2.2.11] - 2021-09-07 + +### Fixed + +- Rebundle to fix missing CLI peer dependencies + +## [2.2.10] - 2021-09-06 + +### Fixed + +- Fix build error when using `presets: []` in config file ([#4903](https://github.com/tailwindlabs/tailwindcss/pull/4903)) + +### Added + +- Reintroduce universal selector optimizations under experimental `optimizeUniversalDefaults` flag ([a9e160c](https://github.com/tailwindlabs/tailwindcss/commit/a9e160cf9acb75a2bbac34f8864568b12940f89a)) + +## [2.2.9] - 2021-08-30 + +### Fixed + +- JIT: Fix `@apply`ing utilities that contain variants + the important modifier ([#4854](https://github.com/tailwindlabs/tailwindcss/pull/4854)) +- JIT: Don't strip "null" when parsing tracked file paths ([#5008](https://github.com/tailwindlabs/tailwindcss/pull/5008)) +- Pin `clean-css` to v5.1.4 to fix empty CSS variables in CDN builds ([#5338](https://github.com/tailwindlabs/tailwindcss/pull/5338)) + +## [2.2.8] - 2021-08-27 + +### Fixed + +- Improve accessibility of default link focus styles in Firefox ([#5082](https://github.com/tailwindlabs/tailwindcss/pull/5082)) +- JIT: Fix animation variants corrupting keyframes rules ([#5223](https://github.com/tailwindlabs/tailwindcss/pull/5223)) +- JIT: Ignore escaped commas when splitting selectors to apply prefixes ([#5239](https://github.com/tailwindlabs/tailwindcss/pull/5239/)) +- Nesting: Maintain PostCSS node sources when handling `@apply` ([#5249](https://github.com/tailwindlabs/tailwindcss/pull/5249)) +- JIT: Fix support for animation lists ([#5252](https://github.com/tailwindlabs/tailwindcss/pull/5252)) +- JIT: Fix arbitrary value support for `object-position` utilities ([#5245](https://github.com/tailwindlabs/tailwindcss/pull/5245)) +- CLI: Abort watcher if stdin is closed to avoid zombie processes ([#4997](https://github.com/tailwindlabs/tailwindcss/pull/4997)) +- JIT: Ignore arbitrary values with unbalanced brackets ([#5293](https://github.com/tailwindlabs/tailwindcss/pull/5293)) + +## [2.2.7] - 2021-07-23 + +### Fixed + +- Temporarily revert runtime performance optimizations introduced in v2.2.5, use universal selector again ([#5060](https://github.com/tailwindlabs/tailwindcss/pull/5060)) + +## [2.2.6] - 2021-07-21 + +### Fixed + +- Fix issue where base styles not generated for translate transforms in JIT ([#5038](https://github.com/tailwindlabs/tailwindcss/pull/5038)) + +## [2.2.5] - 2021-07-21 + +### Added + +- Added `self-baseline` utility (I know this is a patch release, no one's going to die relax) ([#5000](https://github.com/tailwindlabs/tailwindcss/pull/5000)) + +### Changed + +- JIT: Optimize universal selector usage by inlining only the relevant selectors ([#4850](https://github.com/tailwindlabs/tailwindcss/pull/4850))) + + This provides a very significant performance boost on pages with a huge number of DOM nodes, but there's a chance it could be a breaking change in very rare edge cases we haven't thought of. Please open an issue if anything related to shadows, rings, transforms, filters, or backdrop-filters seems to be behaving differently after upgrading. + +### Fixed + +- Fix support for `step-start` and `step-end` in animation utilities ([#4795](https://github.com/tailwindlabs/tailwindcss/pull/4795))) +- JIT: Prevent presence of `!*` in templates from ruining everything ([#4816](https://github.com/tailwindlabs/tailwindcss/pull/4816))) +- JIT: Improve support for quotes in arbitrary values ([#4817](https://github.com/tailwindlabs/tailwindcss/pull/4817))) +- Fix filter/backdrop-filter/transform utilities being inserted into the wrong position if not all core plugins are enabled ([#4852](https://github.com/tailwindlabs/tailwindcss/pull/4852))) +- JIT: Fix `@layer` rules being mistakenly inserted during incremental rebuilds ([#4853](https://github.com/tailwindlabs/tailwindcss/pull/4853))) +- Improve build performance for projects with many small non-Tailwind stylesheets ([#4644](https://github.com/tailwindlabs/tailwindcss/pull/4644)) +- Ensure `[hidden]` works as expected on elements where we override the default `display` value in Preflight ([#4873](https://github.com/tailwindlabs/tailwindcss/pull/4873)) +- Fix variant configuration not being applied to `backdropOpacity` utilities ([#4892](https://github.com/tailwindlabs/tailwindcss/pull/4892)) + +## [2.2.4] - 2021-06-23 + +### Fixed + +- Remove `postinstall` script that was preventing people from installing the library ([1eacfb9](https://github.com/tailwindlabs/tailwindcss/commit/1eacfb98849c0d4737e0af3595ddec8c73addaac)) + +## [2.2.3] - 2021-06-23 + +### Added + +- Pass extended color palette to theme closures so it can be used without installing Tailwind when using `npx tailwindcss` ([359252c](https://github.com/tailwindlabs/tailwindcss/commit/359252c9b429e81217c28eb3ca7bab73d8f81e6d)) + +### Fixed + +- JIT: Explicitly error when `-` is used as a custom separator ([#4704](https://github.com/tailwindlabs/tailwindcss/pull/4704)) +- JIT: Don't add multiple `~` when stacking `peer-*` variants ([#4757](https://github.com/tailwindlabs/tailwindcss/pull/4757)) +- Remove outdated focus style fix in Preflight ([#4780](https://github.com/tailwindlabs/tailwindcss/pull/4780)) +- Enable `purge` if provided on the CLI ([#4772](https://github.com/tailwindlabs/tailwindcss/pull/4772)) +- JIT: Fix error when not using a config file with postcss-cli ([#4773](https://github.com/tailwindlabs/tailwindcss/pull/4773)) +- Fix issue with `resolveConfig` not being importable in Next.js pages ([#4725](https://github.com/tailwindlabs/tailwindcss/pull/4725)) + +## [2.2.2] - 2021-06-18 + +### Fixed + +- JIT: Reintroduce `transform`, `filter`, and `backdrop-filter` classes purely to create stacking contexts to minimize the impact of the breaking change ([#4700](https://github.com/tailwindlabs/tailwindcss/pull/4700)) + +## [2.2.1] - 2021-06-18 + +### Fixed + +- Recover from errors gracefully in CLI watch mode ([#4693](https://github.com/tailwindlabs/tailwindcss/pull/4693)) +- Fix issue with media queries not being generated properly when using PostCSS 7 ([#4695](https://github.com/tailwindlabs/tailwindcss/pull/4695)) + +## [2.2.0] - 2021-06-17 + +### Changed + +- JIT: Use "tracking" context by default instead of "watching" context for improved reliability with most bundlers ([#4514](https://github.com/tailwindlabs/tailwindcss/pull/4514)) + + Depending on which tooling you use, you may need to explicitly set `TAILWIND_MODE=watch` until your build runner has been updated to support PostCSS's `dir-dependency` message type. + +### Added + +- Add `background-origin` utilities ([#4117](https://github.com/tailwindlabs/tailwindcss/pull/4117)) +- Improve `@apply` performance in projects that process many CSS sources ([#3178](https://github.com/tailwindlabs/tailwindcss/pull/3718)) +- JIT: Don't use CSS variables for color utilities if color opacity utilities are disabled ([#3984](https://github.com/tailwindlabs/tailwindcss/pull/3984)) +- JIT: Redesign `matchUtilities` API to make it more suitable for third-party use ([#4232](https://github.com/tailwindlabs/tailwindcss/pull/4232)) +- JIT: Support applying important utility variants ([#4260](https://github.com/tailwindlabs/tailwindcss/pull/4260)) +- JIT: Support coercing arbitrary values when the type isn't detectable ([#4263](https://github.com/tailwindlabs/tailwindcss/pull/4263)) +- JIT: Support for `raw` syntax in `purge` config ([#4272](https://github.com/tailwindlabs/tailwindcss/pull/4272)) +- Add `empty` variant ([#3298](https://github.com/tailwindlabs/tailwindcss/pull/3298)) +- Update `modern-normalize` to v1.1 ([#4287](https://github.com/tailwindlabs/tailwindcss/pull/4287)) +- Implement `theme` function internally, remove `postcss-functions` dependency ([#4317](https://github.com/tailwindlabs/tailwindcss/pull/4317)) +- Add `screen` function to improve nesting plugin compatibility ([#4318](https://github.com/tailwindlabs/tailwindcss/pull/4318)) +- JIT: Add universal shorthand color opacity syntax ([#4348](https://github.com/tailwindlabs/tailwindcss/pull/4348)) +- JIT: Add `@tailwind variants` directive to replace `@tailwind screens` ([#4356](https://github.com/tailwindlabs/tailwindcss/pull/4356)) +- JIT: Add support for PostCSS `dir-dependency` messages in `TAILWIND_DISABLE_TOUCH` mode ([#4388](https://github.com/tailwindlabs/tailwindcss/pull/4388)) +- JIT: Add per-side border color utilities ([#4404](https://github.com/tailwindlabs/tailwindcss/pull/4404)) +- JIT: Add support for `before` and `after` pseudo-element variants and `content` utilities ([#4461](https://github.com/tailwindlabs/tailwindcss/pull/4461)) +- Add new `transform` and `extract` APIs to simplify PurgeCSS/JIT customization ([#4469](https://github.com/tailwindlabs/tailwindcss/pull/4469)) +- JIT: Add exhaustive pseudo-class and pseudo-element variant support ([#4482](https://github.com/tailwindlabs/tailwindcss/pull/4482)) +- JIT: Add `caret-color` utilities ([#4499](https://github.com/tailwindlabs/tailwindcss/pull/4499)) +- Rename `lightBlue` to `sky`, emit console warning when using deprecated name ([#4513](https://github.com/tailwindlabs/tailwindcss/pull/4513)) +- New CLI with improved JIT support, `--watch` mode, and more ([#4526](https://github.com/tailwindlabs/tailwindcss/pull/4526), [4558](https://github.com/tailwindlabs/tailwindcss/pull/4558)) +- JIT: Add new `peer-*` variants for styling based on sibling state ([#4556](https://github.com/tailwindlabs/tailwindcss/pull/4556)) +- Expose `safelist` as a top-level option under `purge` for both JIT and classic engines ([#4580](https://github.com/tailwindlabs/tailwindcss/pull/4580)) +- JIT: Remove need for `transform` class when using classes like `scale-*`, `rotate-*`, etc. ([#4604](https://github.com/tailwindlabs/tailwindcss/pull/4604)) +- JIT: Remove need for `filter` and `backdrop-filter` classes when using classes like `contrast-*`, `backdrop-blur-*`, etc. ([#4614](https://github.com/tailwindlabs/tailwindcss/pull/4614)) +- Support passing a custom path for your PostCSS configuration in the Tailwind CLI ([#4607](https://github.com/tailwindlabs/tailwindcss/pull/4607)) +- Add `blur-none` by default with intent to deprecate `blur-0` ([#4614](https://github.com/tailwindlabs/tailwindcss/pull/4614)) + +### Fixed + +- JIT: Improve support for Svelte class bindings ([#4187](https://github.com/tailwindlabs/tailwindcss/pull/4187)) +- JIT: Improve support for `calc` and `var` in arbitrary values ([#4147](https://github.com/tailwindlabs/tailwindcss/pull/4147)) +- Convert `hsl` colors to `hsla` when transforming for opacity support instead of `rgba` ([#3850](https://github.com/tailwindlabs/tailwindcss/pull/3850)) +- Fix `backdropBlur` variants not being generated ([#4188](https://github.com/tailwindlabs/tailwindcss/pull/4188)) +- Improve animation value parsing ([#4250](https://github.com/tailwindlabs/tailwindcss/pull/4250)) +- Ignore unknown object types when hashing config ([82f4eaa](https://github.com/tailwindlabs/tailwindcss/commit/82f4eaa6832ef8a4e3fd90869e7068efdf6e34f2)) +- Ensure variants are grouped properly for plugins with order-dependent utilities ([#4273](https://github.com/tailwindlabs/tailwindcss/pull/4273)) +- JIT: Fix temp file storage when node temp directories are kept on a different drive than the project itself ([#4044](https://github.com/tailwindlabs/tailwindcss/pull/4044)) +- Support border-opacity utilities alongside default `border` utility ([#4277](https://github.com/tailwindlabs/tailwindcss/pull/4277)) +- JIT: Fix source maps for expanded `@tailwind` directives ([2f15411](https://github.com/tailwindlabs/tailwindcss/commit/2f1541123dea29d8a2ab0f1411bf60c79eeb96b4)) +- JIT: Ignore whitespace when collapsing adjacent rules ([15642fb](https://github.com/tailwindlabs/tailwindcss/commit/15642fbcc885eba9cc50b7678a922b09c90d6b51)) +- JIT: Generate group parent classes correctly when using custom separator ([#4508](https://github.com/tailwindlabs/tailwindcss/pull/4508)) +- JIT: Fix incorrect stacking of multiple `group` variants ([#4551](https://github.com/tailwindlabs/tailwindcss/pull/4551)) +- JIT: Fix memory leak due to holding on to unused contexts ([#4571](https://github.com/tailwindlabs/tailwindcss/pull/4571)) + +### Internals + +- Add integration tests for popular build runners ([#4354](https://github.com/tailwindlabs/tailwindcss/pull/4354)) + +## [2.1.4] - 2021-06-02 + +### Fixed + +- Skip `raw` PurgeCSS sources when registering template dependencies ([#4542](https://github.com/tailwindlabs/tailwindcss/pull/4542)) + +## [2.1.3] - 2021-06-01 + +### Fixed + +- Register PurgeCSS paths as PostCSS dependencies to guarantee proper cache-busting in webpack 5 ([#4530](https://github.com/tailwindlabs/tailwindcss/pull/4530)) + +## [2.1.2] - 2021-04-23 + +### Fixed + +- Fix issue where JIT engine would generate the wrong CSS when using PostCSS 7 ([#4078](https://github.com/tailwindlabs/tailwindcss/pull/4078)) + +## [2.1.1] - 2021-04-05 + +### Fixed + +- Fix issue where JIT engine would fail to compile when a source path isn't provided by the build runner for the current input file ([#3978](https://github.com/tailwindlabs/tailwindcss/pull/3978)) + +## [2.1.0] - 2021-04-05 + +### Added + +- Add alternate JIT engine (in preview) ([#3905](https://github.com/tailwindlabs/tailwindcss/pull/3905)) +- Add new `mix-blend-mode` and `background-blend-mode` utilities ([#3920](https://github.com/tailwindlabs/tailwindcss/pull/3920)) +- Add new `box-decoration-break` utilities ([#3911](https://github.com/tailwindlabs/tailwindcss/pull/3911)) +- Add new `isolation` utilities ([#3914](https://github.com/tailwindlabs/tailwindcss/pull/3914)) +- Add `inline-table` display utility ([#3563](https://github.com/tailwindlabs/tailwindcss/pull/3563)) +- Add `list-item` display utility ([#3929](https://github.com/tailwindlabs/tailwindcss/pull/3929)) +- Add new `filter` and `backdrop-filter` utilities ([#3923](https://github.com/tailwindlabs/tailwindcss/pull/3923)) + +## [2.0.4] - 2021-03-17 + +### Fixed + +- Pass full `var(--bg-opacity)` value as `opacityValue` when defining colors as functions + +## [2.0.3] - 2021-02-07 + +### Fixed + +- Ensure sourcemap input is deterministic when using `@apply` in Vue components ([#3356](https://github.com/tailwindlabs/tailwindcss/pull/3356)) +- Ensure placeholder opacity is consistent across browsers ([#3308](https://github.com/tailwindlabs/tailwindcss/pull/3308)) +- Fix issue where `theme()` didn't work with colors defined as functions ([#2919](https://github.com/tailwindlabs/tailwindcss/pull/2919)) +- Enable `dark` variants by default for color opacity utilities ([#2975](https://github.com/tailwindlabs/tailwindcss/pull/2975)) + +### Added + +- Add support for a `tailwind.config.cjs` file in Node ESM projects ([#3181](https://github.com/tailwindlabs/tailwindcss/pull/3181)) +- Add version comment to Preflight ([#3255](https://github.com/tailwindlabs/tailwindcss/pull/3255)) +- Add `cursor-help` by default ([#3199](https://github.com/tailwindlabs/tailwindcss/pull/3199)) + +## [2.0.2] - 2020-12-11 + +### Fixed + +- Fix issue with `@apply` not working as expected with `!important` inside an at-rule ([#2824](https://github.com/tailwindlabs/tailwindcss/pull/2824)) +- Fix issue with `@apply` not working as expected with defined classes ([#2832](https://github.com/tailwindlabs/tailwindcss/pull/2832)) +- Fix memory leak, and broken `@apply` when splitting up files ([#3032](https://github.com/tailwindlabs/tailwindcss/pull/3032)) + +### Added + +- Add default values for the `ring` utility ([#2951](https://github.com/tailwindlabs/tailwindcss/pull/2951)) + +## [2.0.1] - 2020-11-18 + +- Nothing, just the only thing I could do when I found out npm won't let me publish the same version under two tags. + +## [2.0.0] - 2020-11-18 + +### Added + +- Add redesigned color palette ([#2623](https://github.com/tailwindlabs/tailwindcss/pull/2623), [700866c](https://github.com/tailwindlabs/tailwindcss/commit/700866ce5e0c0b8d140be161c4d07fc6f31242bc), [#2633](https://github.com/tailwindlabs/tailwindcss/pull/2633)) +- Add dark mode support ([#2279](https://github.com/tailwindlabs/tailwindcss/pull/2279), [#2631](https://github.com/tailwindlabs/tailwindcss/pull/2631)) +- Add `overflow-ellipsis` and `overflow-clip` utilities ([#1289](https://github.com/tailwindlabs/tailwindcss/pull/1289)) +- Add `transform-gpu` to force hardware acceleration on transforms when desired ([#1380](https://github.com/tailwindlabs/tailwindcss/pull/1380)) +- Extend default spacing scale ([#2630](https://github.com/tailwindlabs/tailwindcss/pull/2630), [7f05204](https://github.com/tailwindlabs/tailwindcss/commit/7f05204ce7a5581b6845591448265c3c21afde86)) +- Add spacing scale to `inset` plugin ([#2630](https://github.com/tailwindlabs/tailwindcss/pull/2630)) +- Add percentage sizes to `translate`, `inset`, and `height` plugins ([#2630](https://github.com/tailwindlabs/tailwindcss/pull/2630), [5259560](https://github.com/tailwindlabs/tailwindcss/commit/525956065272dc53e8f8395f55f9ad13077a38d1)) +- Extend default font size scale ([#2609](https://github.com/tailwindlabs/tailwindcss/pull/2609), [#2619](https://github.com/tailwindlabs/tailwindcss/pull/2619)) +- Support using `@apply` with complex classes, including variants like `lg:hover:bg-blue-500` ([#2159](https://github.com/tailwindlabs/tailwindcss/pull/2159)) +- Add new `2xl` breakpoint at 1536px by default ([#2609](https://github.com/tailwindlabs/tailwindcss/pull/2609)) +- Add default line-height values for font-size utilities ([#2609](https://github.com/tailwindlabs/tailwindcss/pull/2609)) +- Support defining theme values using arrays for CSS properties that support comma separated values ([e13f083c4](https://github.com/tailwindlabs/tailwindcss/commit/e13f083c4bc48bf9870d27c966136a9584943127)) +- Enable `group-hover` for color plugins, `boxShadow`, and `textDecoration` by default ([28985b6](https://github.com/tailwindlabs/tailwindcss/commit/28985b6cd592e72d4849fdb9ce97eb045744e09c), [f6923b1](https://github.com/tailwindlabs/tailwindcss/commit/f6923b1)) +- Enable `focus` for z-index utilities by default ([ae5b3d3](https://github.com/tailwindlabs/tailwindcss/commit/ae5b3d312d5000ae9c2065001f3df7add72dc365)) +- Support `extend` in `variants` configuration ([#2651](https://github.com/tailwindlabs/tailwindcss/pull/2651)) +- Add `max-w-prose` class by default ([#2574](https://github.com/tailwindlabs/tailwindcss/pull/2574)) +- Support flattening deeply nested color objects ([#2148](https://github.com/tailwindlabs/tailwindcss/pull/2148)) +- Support defining presets as functions ([#2680](https://github.com/tailwindlabs/tailwindcss/pull/2680)) +- Support deep merging of objects under `extend` ([#2679](https://github.com/tailwindlabs/tailwindcss/pull/2679), [#2700](https://github.com/tailwindlabs/tailwindcss/pull/2700)) +- Enable `focus-within` for all plugins that have `focus` enabled by default ([1a21f072](https://github.com/tailwindlabs/tailwindcss/commit/1a21f0721c7368d61fa3feef33d616de3f78c7d7), [f6923b1](https://github.com/tailwindlabs/tailwindcss/commit/f6923b1)) +- Added new `ring` utilities for creating outline/focus rings using box shadows ([#2747](https://github.com/tailwindlabs/tailwindcss/pull/2747), [879f088](https://github.com/tailwindlabs/tailwindcss/commit/879f088), [e0788ef](https://github.com/tailwindlabs/tailwindcss/commit/879f088)) +- Added `5` and `95` to opacity scale ([#2747](https://github.com/tailwindlabs/tailwindcss/pull/2747)) +- Add support for default duration and timing function values whenever enabling transitions ([#2755](https://github.com/tailwindlabs/tailwindcss/pull/2755)) + +### Changed + +- Completely redesign color palette ([#2623](https://github.com/tailwindlabs/tailwindcss/pull/2623), [700866c](https://github.com/tailwindlabs/tailwindcss/commit/700866ce5e0c0b8d140be161c4d07fc6f31242bc), [#2633](https://github.com/tailwindlabs/tailwindcss/pull/2633)) +- Drop support for Node 8 and 10 ([#2582](https://github.com/tailwindlabs/tailwindcss/pull/2582)) +- Removed `target` feature and dropped any compatibility with IE 11 ([#2571](https://github.com/tailwindlabs/tailwindcss/pull/2571)) +- Upgrade to PostCSS 8 (but include PostCSS 7 compatibility build) ([729b400](https://github.com/tailwindlabs/tailwindcss/commit/729b400a685973f46af73c8a68b364f20f7c5e1e), [1d8679d](https://github.com/tailwindlabs/tailwindcss/commit/1d8679d37e0eb1ba8281b2076bade5fc754f47dd), [c238ed1](https://github.com/tailwindlabs/tailwindcss/commit/c238ed15b5c02ff51978965511312018f2bc2cae)) +- Removed `shadow-outline`, `shadow-solid`, and `shadow-xs` by default in favor of new `ring` API ([#2747](https://github.com/tailwindlabs/tailwindcss/pull/2747)) +- Switch `normalize.css` to `modern-normalize` ([#2572](https://github.com/tailwindlabs/tailwindcss/pull/2572)) +- Rename `whitespace-no-wrap` to `whitespace-nowrap` ([#2664](https://github.com/tailwindlabs/tailwindcss/pull/2664)) +- Rename `flex-no-wrap` to `flex-nowrap` ([#2676](https://github.com/tailwindlabs/tailwindcss/pull/2676)) +- Remove `clearfix` utility, recommend `flow-root` instead ([#2766](https://github.com/tailwindlabs/tailwindcss/pull/2766)) +- Disable `hover` and `focus` for `fontWeight` utilities by default ([f6923b1](https://github.com/tailwindlabs/tailwindcss/commit/f6923b1)) +- Remove `grid-gap` fallbacks needed for old versions of Safari ([5ec45fa](https://github.com/tailwindlabs/tailwindcss/commit/5ec45fa)) +- Change special use of 'default' in config to 'DEFAULT' ([#2580](https://github.com/tailwindlabs/tailwindcss/pull/2580)) +- New `@apply` implementation, slight backwards incompatibilities with previous behavior ([#2159](https://github.com/tailwindlabs/tailwindcss/pull/2159)) +- Make `theme` retrieve the expected resolved value when theme value is complex ([e13f083c4](https://github.com/tailwindlabs/tailwindcss/commit/e13f083c4bc48bf9870d27c966136a9584943127)) +- Move `truncate` class to `textOverflow` core plugin ([#2562](https://github.com/tailwindlabs/tailwindcss/pull/2562)) +- Remove `scrolling-touch` and `scrolling-auto` utilities ([#2573](https://github.com/tailwindlabs/tailwindcss/pull/2573)) +- Modernize default system font stacks ([#1711](https://github.com/tailwindlabs/tailwindcss/pull/1711)) +- Upgrade to PurgeCSS 3.0 ([8e4e0a0](https://github.com/tailwindlabs/tailwindcss/commit/8e4e0a0eb8dcbf84347c7562988b4f9afd344081)) +- Change default `text-6xl` font-size to 3.75rem instead of 4rem ([#2619](https://github.com/tailwindlabs/tailwindcss/pull/2619)) +- Ignore `[hidden]` elements within `space` and `divide` utilities instead of `template` elements ([#2642](https://github.com/tailwindlabs/tailwindcss/pull/2642)) +- Automatically prefix keyframes and animation names when a prefix is configured ([#2621](https://github.com/tailwindlabs/tailwindcss/pull/2621), [#2641](https://github.com/tailwindlabs/tailwindcss/pull/2641)) +- Merge `extend` objects deeply by default ([#2679](https://github.com/tailwindlabs/tailwindcss/pull/2679)) +- Respect `preserveHtmlElements` option even when using custom PurgeCSS extractor ([#2704](https://github.com/tailwindlabs/tailwindcss/pull/2704)) +- Namespace all internal custom properties under `tw-` to avoid collisions with end-user custom properties ([#2771](https://github.com/tailwindlabs/tailwindcss/pull/2771)) + +## [2.0.0-alpha.25] - 2020-11-17 + +### Fixed + +- Fix issue where `ring-offset-0` didn't work due to unitless `0` in `calc` function ([3de0c48](https://github.com/tailwindlabs/tailwindcss/commit/3de0c48)) + +## [2.0.0-alpha.24] - 2020-11-16 + +### Changed + +- Don't override ring color when overriding ring width with a variant ([e40079a](https://github.com/tailwindlabs/tailwindcss/commit/e40079a)) + +### Fixed + +- Prevent shadow/ring styles from cascading to children ([e40079a](https://github.com/tailwindlabs/tailwindcss/commit/e40079a)) +- Ensure rings have a default color even if `colors.blue.500` is not present in config ([e40079a](https://github.com/tailwindlabs/tailwindcss/commit/e40079a)) + +## [2.0.0-alpha.23] - 2020-11-16 + +### Added + +- Add scripts for generating a PostCSS 7 compatible build alongside PostCSS 8 version ([#2773](https://github.com/tailwindlabs/tailwindcss/pull/2773)) + +### Changed + +- All custom properties have been internally namespaced under `tw-` to avoid collisions with end-user custom properties ([#2771](https://github.com/tailwindlabs/tailwindcss/pull/2771)) + +## [2.0.0-alpha.22] - 2020-11-16 + +### Changed + +- ~~All custom properties have been internally namespaced under `tw-` to avoid collisions with end-user custom properties ([#2771](https://github.com/tailwindlabs/tailwindcss/pull/2771))~~ I made a git boo-boo, check alpha.23 instead + +## [2.0.0-alpha.21] - 2020-11-15 + +### Changed + +- Upgrade to PostCSS 8, Autoprefixer 10, move `postcss` and `autoprefixer` to peerDependencies ([729b400](https://github.com/tailwindlabs/tailwindcss/commit/729b400)) + +## [2.0.0-alpha.20] - 2020-11-13 + +### Changed + +- Remove `clearfix` utility, recommend `flow-root` instead ([#2766](https://github.com/tailwindlabs/tailwindcss/pull/2766)) + +## [2.0.0-alpha.19] - 2020-11-13 + +### Fixed + +- Don't crash when color palette is empty ([278c203](https://github.com/tailwindlabs/tailwindcss/commit/278c203)) + +## [2.0.0-alpha.18] - 2020-11-13 + +### Changed + +- `black` and `white` have been added to `colors.js` ([b3ed724](https://github.com/tailwindlabs/tailwindcss/commit/b3ed724)) + +### Fixed + +- Add support for colors as closures to `ringColor` and `ringOffsetColor`, previously would crash build ([62a47f9](https://github.com/tailwindlabs/tailwindcss/commit/62a47f9)) + +## [2.0.0-alpha.17] - 2020-11-13 + +### Changed + +- Remove `grid-gap` fallbacks needed for old versions of Safari ([5ec45fa](https://github.com/tailwindlabs/tailwindcss/commit/5ec45fa)) + +## [2.0.0-alpha.16] - 2020-11-12 + +### Added + +- Enable `focus`, `focus-within`, and `dark` variants (when enabled) for all ring utilities by default ([e0788ef](https://github.com/tailwindlabs/tailwindcss/commit/879f088)) + +## [2.0.0-alpha.15] - 2020-11-11 + +### Added + +- Added `ring-inset` utility for rendering rings as inset shadows ([879f088](https://github.com/tailwindlabs/tailwindcss/commit/879f088)) + +### Changed + +- `ringWidth` utilities always reset ring styles to ensure no accidental variable inheritance through the cascade ([879f088](https://github.com/tailwindlabs/tailwindcss/commit/879f088)) + +## [2.0.0-alpha.14] - 2020-11-11 + +### Added + +- Enable `focus-within` for `outline` utilities by default ([f6923b1](https://github.com/tailwindlabs/tailwindcss/commit/f6923b1)) +- Enable `focus-within` for `ringWidth` utilities by default ([f6923b1](https://github.com/tailwindlabs/tailwindcss/commit/f6923b1)) +- Enable `group-hover` for `boxShadow` utilities by default ([f6923b1](https://github.com/tailwindlabs/tailwindcss/commit/f6923b1)) +- Enable `group-hover` and `focus-within` for `textDecoration` utilities by default ([f6923b1](https://github.com/tailwindlabs/tailwindcss/commit/f6923b1)) + +### Changed + +- Disable `hover` and `focus` for `fontWeight` utilities by default ([f6923b1](https://github.com/tailwindlabs/tailwindcss/commit/f6923b1)) + +## [2.0.0-alpha.13] - 2020-11-11 + +### Added + +- Add support for default duration and timing function values whenever enabling transitions ([#2755](https://github.com/tailwindlabs/tailwindcss/pull/2755)) + +## [2.0.0-alpha.12] - 2020-11-10 + +### Fixed + +- Prevent `boxShadow` utilities from overriding ring shadows added by components like in the custom forms plugin ([c3dd3b6](https://github.com/tailwindlabs/tailwindcss/commit/c3dd3b68454ad418833a9edf7f3409cad66fb5b0)) + +## [2.0.0-alpha.11] - 2020-11-09 + +### Fixed + +- Convert `none` to `0 0 #0000` when used for shadows to ensure compatibility with `ring` utilities ([4eecc27](https://github.com/tailwindlabs/tailwindcss/commit/4eecc2751ca0c461e8da5bd5772ae650197a2e5d)) + +## [2.0.0-alpha.10] - 2020-11-09 + +### Added + +- Added new `ring` utilities ([#2747](https://github.com/tailwindlabs/tailwindcss/pull/2747)) +- Added `5` and `95` to opacity scale ([#2747](https://github.com/tailwindlabs/tailwindcss/pull/2747)) + +### Changed + +- Removed `shadow-outline`, `shadow-solid`, and `shadow-xs` in favor of new `ring` API ([#2747](https://github.com/tailwindlabs/tailwindcss/pull/2747)) + +## [2.0.0-alpha.9] - 2020-11-07 + +### Added + +- Added `shadow-solid` utility, a 2px solid shadow that uses the current text color ([369cfae](https://github.com/tailwindlabs/tailwindcss/commit/369cfae2905a577033529c46a5e8ca58c69f5623)) +- Enable `focus-within` where useful by default ([1a21f072](https://github.com/tailwindlabs/tailwindcss/commit/1a21f0721c7368d61fa3feef33d616de3f78c7d7)) + +### Changed + +- Update `shadow-outline` to use the new blue ([b078238](https://github.com/tailwindlabs/tailwindcss/commit/b0782385c9832d35a10929b38b4fcaf27e055d6b)) + +## [2.0.0-alpha.8] - 2020-11-06 + +### Added + +- Add `11` to spacing scale ([7f05204](https://github.com/tailwindlabs/tailwindcss/commit/7f05204ce7a5581b6845591448265c3c21afde86)) +- Add percentage-based height values ([5259560](https://github.com/tailwindlabs/tailwindcss/commit/525956065272dc53e8f8395f55f9ad13077a38d1)) +- Add indigo to the color palette by default ([700866c](https://github.com/tailwindlabs/tailwindcss/commit/700866ce5e0c0b8d140be161c4d07fc6f31242bc)) + +### Changed + +- Use `coolGray` as the default gray ([700866c](https://github.com/tailwindlabs/tailwindcss/commit/700866ce5e0c0b8d140be161c4d07fc6f31242bc)) + +## [2.0.0-alpha.7] - 2020-11-05 + +### Changed + +- Revert upgrading to PostCSS 8 lol + +## [2.0.0-alpha.6] - 2020-11-04 + +### Changed + +- Respect `preserveHtmlElements` option even when using custom PurgeCSS extractor ([#2704](https://github.com/tailwindlabs/tailwindcss/pull/2704)) +- Set font-family and line-height to `inherit` on `body` to behave more like v1.x ([#2729](https://github.com/tailwindlabs/tailwindcss/pull/2729)) + +## [2.0.0-alpha.5] - 2020-10-30 + +### Changed + +- Upgrade to PostCSS 8 ([59aa484](https://github.com/tailwindlabs/tailwindcss/commit/59aa484dfea0607d96bff6ef41b1150c78576c37)) + +## [2.0.0-alpha.4] - 2020-10-29 + +### Added + +- Support deep merging of arrays of objects under `extend` ([#2700](https://github.com/tailwindlabs/tailwindcss/pull/2700)) + +## [2.0.0-alpha.3] - 2020-10-27 + +### Added + +- Support flattening deeply nested color objects ([#2148](https://github.com/tailwindlabs/tailwindcss/pull/2148)) +- Support defining presets as functions ([#2680](https://github.com/tailwindlabs/tailwindcss/pull/2680)) + +### Changed + +- Merge `extend` objects deeply by default ([#2679](https://github.com/tailwindlabs/tailwindcss/pull/2679)) +- Rename `flex-no-wrap` to `flex-nowrap` ([#2676](https://github.com/tailwindlabs/tailwindcss/pull/2676)) + +## [2.0.0-alpha.2] - 2020-10-25 + +### Added + +- Support `extend` in `variants` configuration ([#2651](https://github.com/tailwindlabs/tailwindcss/pull/2651)) +- Add `max-w-prose` class by default ([#2574](https://github.com/tailwindlabs/tailwindcss/pull/2574)) + +### Changed + +- Revert use of logical properties for `space` and `divide` utilities ([#2644](https://github.com/tailwindlabs/tailwindcss/pull/2644)) +- `space` and `divide` utilities ignore elements with `[hidden]` now instead of only ignoring `template` elements ([#2642](https://github.com/tailwindlabs/tailwindcss/pull/2642)) +- Set default font on `body`, not just `html` ([#2643](https://github.com/tailwindlabs/tailwindcss/pull/2643)) +- Automatically prefix keyframes and animation names when a prefix is configured ([#2621](https://github.com/tailwindlabs/tailwindcss/pull/2621), [#2641](https://github.com/tailwindlabs/tailwindcss/pull/2641)) +- Rename `whitespace-no-wrap` to `whitespace-nowrap` ([#2664](https://github.com/tailwindlabs/tailwindcss/pull/2664)) + +## [1.9.6] - 2020-10-23 + +### Changed + +- The `presets` feature had unexpected behavior where a preset config without its own `presets` key would not extend the default config. ([#2662](https://github.com/tailwindlabs/tailwindcss/pull/2662)) + + If you were depending on this unexpected behavior, just add `presets: []` to your own preset to exclude the default configuration. + +## [2.0.0-alpha.1] - 2020-10-20 + +### Added + +- Added dark mode support ([#2279](https://github.com/tailwindlabs/tailwindcss/pull/2279), [#2631](https://github.com/tailwindlabs/tailwindcss/pull/2631)) +- Added `overflow-ellipsis` and `overflow-clip` utilities ([#1289](https://github.com/tailwindlabs/tailwindcss/pull/1289)) +- Add `transform-gpu` to force hardware acceleration on transforms when beneficial ([#1380](https://github.com/tailwindlabs/tailwindcss/pull/1380)) +- Extended spacing scale ([#2630](https://github.com/tailwindlabs/tailwindcss/pull/2630)) +- Add spacing scale to `inset` plugin ([#2630](https://github.com/tailwindlabs/tailwindcss/pull/2630)) +- Enable useful relative sizes for more plugins ([#2630](https://github.com/tailwindlabs/tailwindcss/pull/2630)) +- Extend font size scale ([#2609](https://github.com/tailwindlabs/tailwindcss/pull/2609), [#2619](https://github.com/tailwindlabs/tailwindcss/pull/2619)) +- Support using `@apply` with complex classes ([#2159](https://github.com/tailwindlabs/tailwindcss/pull/2159)) +- Add new `2xl` breakpoint ([#2609](https://github.com/tailwindlabs/tailwindcss/pull/2609)) +- Add default line-height values for font-size utilities ([#2609](https://github.com/tailwindlabs/tailwindcss/pull/2609)) +- Support defining theme values using arrays wherever it makes sense (box-shadow, transition-property, etc.) ([e13f083c4](https://github.com/tailwindlabs/tailwindcss/commit/e13f083c4bc48bf9870d27c966136a9584943127)) +- Enable `group-hover` for color utilities by default ([28985b6](https://github.com/tailwindlabs/tailwindcss/commit/28985b6cd592e72d4849fdb9ce97eb045744e09c)) +- Enable `focus` for z-index utilities by default ([ae5b3d3](https://github.com/tailwindlabs/tailwindcss/commit/ae5b3d312d5000ae9c2065001f3df7add72dc365)) + +### Changed + +- New `@apply` implementation, slight backwards incompatibilities with previous behavior ([#2159](https://github.com/tailwindlabs/tailwindcss/pull/2159)) +- Move `truncate` class to `textOverflow` core plugin ([#2562](https://github.com/tailwindlabs/tailwindcss/pull/2562)) +- Removed `target` feature and dropped any compatibility with IE 11 ([#2571](https://github.com/tailwindlabs/tailwindcss/pull/2571)) +- Switch `normalize.css` to `modern-normalize` ([#2572](https://github.com/tailwindlabs/tailwindcss/pull/2572)) +- Remove `scrolling-touch` and `scrolling-auto` utilities ([#2573](https://github.com/tailwindlabs/tailwindcss/pull/2573)) +- Change special use of 'default' in config to 'DEFAULT' ([#2580](https://github.com/tailwindlabs/tailwindcss/pull/2580)) +- Drop support for Node 8 and 10 ([#2582](https://github.com/tailwindlabs/tailwindcss/pull/2582)) +- Modernize default system font stacks ([#1711](https://github.com/tailwindlabs/tailwindcss/pull/1711)) +- Upgrade to PurgeCSS 3.0 +- ~~Upgrade to PostCSS 8.0~~ Reverted for now +- Use logical properties for `space` and `divide` utilities ([#1883](https://github.com/tailwindlabs/tailwindcss/pull/1883)) +- Make `theme` retrieve the expected resolved value when theme value is complex ([e13f083c4](https://github.com/tailwindlabs/tailwindcss/commit/e13f083c4bc48bf9870d27c966136a9584943127)) +- Adjust default font-size scale to include 60px instead of 64px ([#2619](https://github.com/tailwindlabs/tailwindcss/pull/2619)) +- Update default colors in Preflight to match new color palette ([#2633](https://github.com/tailwindlabs/tailwindcss/pull/2633)) + +## [1.9.5] - 2020-10-19 + +### Fixed + +- Fix issue where using `theme` with default line-heights did not resolve correctly + +## [1.9.4] - 2020-10-17 + +### Fixed + +- Fix issue changing plugins defined using the `withOptions` API would not trigger rebuilds in watch processes + +## [1.9.3] - 2020-10-16 + +### Fixed + +- Fix issue where `tailwindcss init --full` scaffolded a corrupt config file (https://github.com/tailwindlabs/tailwindcss/issues/2556) + +### Changed + +- Remove console warnings about upcoming breaking changes + +## [1.9.2] - 2020-10-14 + +### Fixed + +- Merge plugins when merging config with preset ([#2561](https://github.com/tailwindlabs/tailwindcss/pulls/#2561) +- Use `word-wrap` and `overflow-wrap` together, not one or the other since `word-wrap` is IE-only + +## [1.9.1] - 2020-10-14 + +### Fixed + +- Don't import `corePlugins` in `resolveConfig` to avoid bundling browser-incompatible code ([#2548](https://github.com/tailwindlabs/tailwindcss/pull/2548)) + +## [1.9.0] - 2020-10-12 + +### Added + +- Add new `presets` config option ([#2474](https://github.com/tailwindlabs/tailwindcss/pull/2474)) +- Scaffold new `tailwind.config.js` files with available `future` flags commented out ([#2379](https://github.com/tailwindlabs/tailwindcss/pull/2379)) +- Add `col-span-full` and `row-span-full` ([#2471](https://github.com/tailwindlabs/tailwindcss/pull/2471)) +- Make `outline` configurable, `outline-none` more accessible by default, and add `outline-black` and `outline-white` ([#2460](https://github.com/tailwindlabs/tailwindcss/pull/2460)) +- Add additional small `rotate` and `skew` values ([#2528](https://github.com/tailwindlabs/tailwindcss/pull/2528)) +- Add `xl`, `2xl`, and `3xl` border radius values ([#2529](https://github.com/tailwindlabs/tailwindcss/pull/2529)) +- Add new utilities for `grid-auto-columns` and `grid-auto-rows` ([#2531](https://github.com/tailwindlabs/tailwindcss/pull/2531)) +- Promote `defaultLineHeights` and `standardFontWeights` from experimental to future + +### Fixed + +- Don't escape keyframe values ([#2432](https://github.com/tailwindlabs/tailwindcss/pull/2432)) +- Use `word-wrap` instead of `overflow-wrap` in `ie11` target mode ([#2391](https://github.com/tailwindlabs/tailwindcss/pull/2391)) + +### Experimental + +- Add experimental `2xl` breakpoint ([#2468](https://github.com/tailwindlabs/tailwindcss/pull/2468)) +- Rename `{u}-max-content` and `{u}-min-content` utilities to `{u}-max` and `{u}-min` in experimental extended spacing scale ([#2532](https://github.com/tailwindlabs/tailwindcss/pull/2532)) +- Support disabling dark mode variants globally ([#2530](https://github.com/tailwindlabs/tailwindcss/pull/2530)) + +## [1.8.13] - 2020-10-09 + +### Fixed + +- Support defining colors as closures even when opacity variables are not supported ([#2536](https://github.com/tailwindlabs/tailwindcss/pull/2515)) + +## [1.8.12] - 2020-10-07 + +### Fixed + +- Reset color opacity variable in utilities generated using closure colors ([#2515](https://github.com/tailwindlabs/tailwindcss/pull/2515)) + +## [1.8.11] - 2020-10-06 + +- Make `tailwindcss.plugin` work in ESM environments for reasons + +## [1.8.10] - 2020-09-14 + +### Fixed + +- Prevent new `dark` experiment from causing third-party `dark` variants to inherit stacking behavior ([#2382](https://github.com/tailwindlabs/tailwindcss/pull/2382)) + +## [1.8.9] - 2020-09-13 + +### Fixed + +- Add negative spacing values to inset plugin in the `extendedSpacingScale` experiment ([#2358](https://github.com/tailwindlabs/tailwindcss/pull/2358)) +- Fix issue where `!important` was stripped from declarations within rules that used `@apply` with `applyComplexClasses` ([#2376](https://github.com/tailwindlabs/tailwindcss/pull/2376)) + +### Changed + +- Add `future` section to config stubs ([#2372](https://github.com/tailwindlabs/tailwindcss/pull/2372), [3090b98](https://github.com/tailwindlabs/tailwindcss/commit/3090b98ece766b1046abe5bbaa94204e811f7fac)) + +## [1.8.8] - 2020-09-11 + +### Fixed + +- Register dark mode plugin outside of `resolveConfig` code path ([#2368](https://github.com/tailwindlabs/tailwindcss/pull/2368)) + +## [1.8.7] - 2020-09-10 + +### Fixed + +- Fix issue where classes in escaped strings (like `class=\"block\"`) weren't extracted properly for purging ([#2364](https://github.com/tailwindlabs/tailwindcss/pull/2364)) + +## [1.8.6] - 2020-09-09 + +### Fixed + +- Fix issue where container padding not applied when using object syntax ([#2353](https://github.com/tailwindlabs/tailwindcss/pull/2353)) + +## [1.8.5] - 2020-09-07 + +### Fixed + +- Fix issue where `resolveConfig` didn't take into account configs added by feature flags ([#2347](https://github.com/tailwindlabs/tailwindcss/pull/2347)) + +## [1.8.4] - 2020-09-06 + +### Fixed + +- Fix [issue](https://github.com/tailwindlabs/tailwindcss/issues/2258) where inserting extra PurgeCSS control comments could break integrated PurgeCSS support +- Fix issue where dark variant in 'class' mode was incompatible with 'group-hover' variant ([#2337](https://github.com/tailwindlabs/tailwindcss/pull/2337)) +- Support basic nesting structure with `@apply` when using the `applyComplexClasses` experiment ([#2271](https://github.com/tailwindlabs/tailwindcss/pull/2271)) + +### Changed + +- Rename `font-hairline` and `font-thin` to `font-thin` and `font-extralight` behind `standardFontWeights` flag (experimental until v1.9.0) ([#2333](https://github.com/tailwindlabs/tailwindcss/pull/2333)) + +## [1.8.3] - 2020-09-05 + +### Fixed + +- Fix issue where `font-variant-numeric` utilities would break in combination with most CSS minifier configurations ([f3660ce](https://github.com/tailwindlabs/tailwindcss/commit/f3660ceed391cfc9390ca4ea1a729a955e64b895)) +- Only warn about `conservative` purge mode being deprecated once per process ([58781b5](https://github.com/tailwindlabs/tailwindcss/commit/58781b517daffbaf80fc5c0791d311f53b2d67d8)) + +## [1.8.2] - 2020-09-04 + +### Fixed + +- Fix bug where dark mode variants would cause an error if you had a `plugins` array in your config ([#2322](https://github.com/tailwindlabs/tailwindcss/pull/2322)) + +## [1.8.1] - 2020-09-04 + +### Fixed + +- Fix bug in the new font-variant-numeric utilities which broke the whole rule ([#2318](https://github.com/tailwindlabs/tailwindcss/pull/2318)) +- Fix bug while purging ([#2320](https://github.com/tailwindlabs/tailwindcss/pull/2320)) + +## [1.8.0] - 2020-09-04 + +### Added + +- Dark mode variant (experimental) ([#2279](https://github.com/tailwindlabs/tailwindcss/pull/2279)) +- New `preserveHtmlElements` option for `purge` ([#2283](https://github.com/tailwindlabs/tailwindcss/pull/2283)) +- New `layers` mode for `purge` ([#2288](https://github.com/tailwindlabs/tailwindcss/pull/2288)) +- New `font-variant-numeric` utilities ([#2305](https://github.com/tailwindlabs/tailwindcss/pull/2305)) +- New `place-items`, `place-content`, `place-self`, `justify-items`, and `justify-self` utilities ([#2306](https://github.com/tailwindlabs/tailwindcss/pull/2306)) +- Support configuring variants as functions ([#2309](https://github.com/tailwindlabs/tailwindcss/pull/2309)) + +### Changed + +- CSS within `@layer` at-rules are now grouped with the corresponding `@tailwind` at-rule ([#2312](https://github.com/tailwindlabs/tailwindcss/pull/2312)) + +### Deprecated + +- `conservative` purge mode, deprecated in favor of `layers` + +## [1.7.6] - 2020-08-29 + +### Fixed + +- Fix bug where the new experimental `@apply` implementation broke when applying a variant class with the important option globally enabled + +## [1.7.5] - 2020-08-28 + +### Changed + +- Update lodash to latest to silence security warnings + +## [1.7.4] - 2020-08-26 + +### Added + +- Add new -p flag to CLI to quickly scaffold a `postcss.config.js` file + +### Changed + +- Make `@apply` insensitive to whitespace in the new `applyComplexClasses` experiment + +### Fixed + +- Fix bug where the new `applyComplexClasses` experiment didn't behave as expected with rules with multiple selectors, like `.foo, .bar { color: red }` + +## [1.7.3] - 2020-08-20 + +### Changed + +- Log feature flag notices to stderr instead of stdout to preserve compatibility with pipe-based build systems +- Add missing bg-none utility for disabling background images + +### Fixed + +- Fix bug that prevented defining colors as closures when the `gradientColorStops` plugin was enabled + +## [1.7.2] - 2020-08-19 + +### Added + +- Reuse generated CSS as much as possible in long-running processes instead of needlessly recalculating + +## [1.7.1] - 2020-08-28 + +### Changed + +- Don't issue duplicate flag notices in long-running build processes + +## [1.7.0] - 2020-08-28 + +### Added + +- Gradients +- New background-clip utilities +- New `contents` display utility +- Default letter-spacing per font-size +- Divide border styles +- Access entire config object from plugins +- Define colors as closures +- Use `@apply` with variants and other complex classes (experimental) +- New additional color-palette (experimental) +- Extended spacing scale (experimental) +- Default line-heights per font-size by default (experimental) +- Extended font size scale (experimental) + +### Deprecated + +- Deprecated gap utilities + +## [1.6.3] - 2020-08-18 + +### Fixed + +- Fixes issue where motion-safe and motion-reduce variants didn't stack correctly with group-hover variants + +## [1.6.2] - 2020-08-03 + +### Fixed + +- Fixes issue where `@keyframes` respecting the important option would break animations in Chrome + +## [1.6.1] - 2020-08-02 + +### Fixed + +- Fixes an issue where animation keyframes weren't included in the build without @tailwind base (#2108) + +## [1.6.0] - 2020-07-28 + +### Added + +- Animation support +- New `prefers-reduced-motion` variants +- New `overscroll-behaviour` utilities +- Generate CSS without an input file + +## [1.5.2] - 2020-07-21 + +### Fixed + +- Fixes issue where you could no longer use `@apply` with unprefixed class names if you had configured a prefix + +## [1.5.1] - 2020-07-15 + +### Fixed + +- Fixes accidental breaking change where adding component variants using the old manual syntax (as recommended in the docs) stopped working + +## [1.5.0] - 2020-07-15 + +### Added + +- Component `variants` support +- Responsive `container` variants +- New `focus-visible` variant +- New `checked` variant + +## v0.0.0-658250a96 - 2020-07-12 [YANKED] + +No release notes + +## [1.4.6] - 2020-05-08 + +### Changed + +- Explicitly error when using a class as the important config option instead of just generating the wrong CSS + +## [1.4.5] - 2020-05-06 + +### Fixed + +- Fix bug where the `divideColor` plugin was using the wrong '' in IE11 target mode + +## [1.4.4] - 2020-05-01 + +### Fixed + +- Fix bug where target: 'browserslist' didn't work, only `target: ['browserslist', {...}]` did + +## [1.4.3] - 2020-05-01 + +### Changed + +- Don't generate unnecessary CSS in color plugins when color opacity utilities are disabled + +## [1.4.2] - 2020-05-01 + +### Fixed + +- Fix issue where `purge: { enabled: false }` was ignored, add `purge: false` shorthand + +## [1.4.1] - 2020-04-30 + +### Changed + +- Improve built-in PurgeCSS extractor to better support Haml and Slim templates + +## [1.4.0] - 2020-04-29 + +### Added + +- New color opacity utilities +- Built-in PurgeCSS +- IE 11 target mode (experimental) + +## [1.3.5] - 2020-04-23 + +### Removed + +- Drop `fs-extra` dependency to `^8.0.0` to preserve Node 8 compatibility until Tailwind 2.0 + +### Fixed + +- Fix missing unit in calc bug in space plugin (`space-x-0` didn't work for example) + +## [1.3.4] - 2020-04-21 + +### Fixed + +- Fix bug where `divide-{x/y}-0` utilities didn't work due to missing unit in `calc` call + +## [1.3.3] - 2020-04-21 + +### Added + +- Add forgotten responsive variants for `space`, `divideWidth`, and `divideColor` utilities + +## [1.3.1] - 2020-04-21 + +### Fixed + +- Fix bug where the `space-x` utilities were not being applied correctly due to referencing `--space-y-reverse` instead of `--space-x-reverse` + +## [1.3.0] - 2020-04-21 + +### Added + +- New `space` and `divide` layout utilities +- New `transition-delay` utilities +- New `group-focus` variant +- Support for specifying a default line-height for each font-size utility +- Support for breakpoint-specific padding for `container` class +- Added `current` to the default color palette +- New `inline-grid` utility +- New `flow-root` display utility +- New `clear-none` utility + +## [1.2.0] - 2020-02-05 + +### Added + +- CSS Transition support +- CSS Transform support +- CSS Grid support +- Added `max-w-{screen}` utilities +- Added `max-w-none` utility +- Added `rounded-md` utility +- Added `shadow-sm` utility +- Added `shadow-xs` utility +- Added `stroke-width` utilities +- Added fixed line-height utilities +- Added additional display utilities for table elements +- Added box-sizing utilities +- Added clear utilities +- Config file dependencies are now watchable +- Added new `plugin` and `plugin.withOptions` APIs + +### Changed + +- Allow plugins to extend the user's config + +## [1.2.0-canary.8] - 2020-02-05 + +### Added + +- Add additional fixed-size line-height utilities + +## [1.2.0-canary.7] - 2020-02-04 + +### Removed + +- Remove Inter from font-sans, plan to add later under new class + +## [1.2.0-canary.6] - 2020-02-03 + +### Added + +- Add system-ui to default font stack +- Add shadow-xs, increase shadow-sm alpha to 0.05 +- Support import syntax even without postcss-import +- Alias tailwind bin to tailwindcss +- Add fill/stroke to transition-colors +- Add transition-shadow, add box-shadow to default transition +- Combine gap/columnGap/rowGap +- Add grid row utilities +- Add skew utilities + +### Changed + +- Use font-sans as default font + +## [1.2.0-canary.5] - 2020-01-08 + +### Added + +- Adds missing dependency `resolve` which is required for making config dependencies watchable + +## [1.2.0-canary.4] - 2020-01-08 + +### Added + +- CSS Transition support +- CSS Transform support +- CSS Grid support +- New `max-w-{screen}` utilities +- Added `max-w-none` utility +- Added "Inter" to the default sans-serif font stack +- Add `rounded-md` utility +- Add `shadow-sm` utility +- Added stroke-width utilities +- Added additional display utilities for table elements +- Added box-sizing utilities +- Added clear utilities +- Config file dependencies are now watchable +- Allow plugins to extend the user's config +- Add new `plugin` and `plugin.withOptions` APIs + +## [v1.2.0-canary.3] - 2020-01-08 [YANKED] + +No release notes + +## [1.1.4] - 2019-11-25 + +### Changed + +- Note: Although this is a bugfix it could affect your site if you were working around the bug in your own code by not prefixing the `.group` class. I'm sorry 😞 + +### Fixed + +- Fixes a bug where the `.group` class was not receiving the user's configured prefix when using the `prefix` option + +## [1.2.0-canary.1] - 2019-10-22 + +### Changed + +- Don't watch `node_modules` files for changes + +### Fixed + +- Fixes significant build performance regression in `v1.2.0-canary.0` + +## [1.1.3] - 2019-10-22 + +### Fixed + +- Fixes an issue where in some cases function properties in the user's `theme` config didn't receive the second utils argument + +## [1.2.0-canary.0] - 2019-10-14 + +### Added + +- Automatically watch all config file dependencies (plugins, design tokens imported from other files, etc.) for changes when build watcher is running +- Add `justify-evenly` utility + +### Changed + +- Allow plugins to add their own config file to be resolved with the user's custom config + +## [1.1.2] - 2019-08-14 + +### Fixed + +- Fixes a bug with horizontal rules where they were displayed with a 2px border instead of a 1px border +- Fixes a bug with horizontal rules where they were rendered with default top/bottom margin + +## [1.1.1] - 2019-08-09 + +### Fixed + +- Fixes issue where values like `auto` would fail to make it through the default negative margin config + +## [1.1.0] - 2019-08-06 + +### Added + +- Added utilities for screenreader visibility +- Added utilities for placeholder color +- First, last, even, and odd child variants +- Disabled variant +- Visited variant +- Increase utility specificity using a scope instead of !important +- Add hover/focus variants for opacity by default +- Added `border-double` utility +- Support negative prefix for boxShadow and letterSpacing plugins +- Support passing config path via object + +### Fixed + +- Placeholders no longer have a default opacity +- Make horizontal rules visible by default +- Generate correct negative margins when using calc + +## [1.0.6] - 2019-08-01 + +### Fixed + +- Fixes issue where modifiers would mutate nested rules + +## [1.0.5] - 2019-07-11 + +### Added + +- Support built-in variants for utilities that include pseudo-elements + +### Changed + +- Update several dependencies, including postcss-js which fixes an issue with using `!important` directly in Tailwind utility plugins + +## [1.0.4] - 2019-06-11 + +### Changed + +- Increase precision of percentage width values to avoid 1px rounding issues in grid layouts + +## [1.0.3] - 2019-06-01 + +### Changed + +- Throws an error when someone tries to use `@tailwind preflight` instead of `@tailwind base`, this is the source of many support requests + +## [1.0.2] - 2019-05-27 + +### Fixed + +- Fixes a bug where `@screen` rules weren't bubbled properly when nested in plugins + +## [1.0.1] - 2019-05-13 + +### Fixed + +- Fixes a bug where global variants weren't properly merged + +## [1.0.0] - 2019-05-13 + +No release notes + +## [1.0.0-beta.10] - 2019-05-12 + +### Changed + +- Use `9999` and `-9999` for `order-last` and `order-first` utilities respectively + +## [1.0.0-beta.9] - 2019-05-12 + +### Added + +- Add `bg-repeat-round` and `bg-repeat-space` utilities +- Add `select-all` and `select-auto` utilities + +### Changed + +- Make all utilities responsive by default + +## [1.0.0-beta.8] - 2019-04-28 + +### Added + +- Adds `responsive` variants for the new order utilities by default, should have been there all along + +## [1.0.0-beta.7] - 2019-04-27 + +### Fixed + +- Fixes a bug where you couldn't extend the margin config + +## [1.0.0-beta.6] - 2019-04-27 + +### Added + +- Added support for negative inset (`-top-6`, `-right-4`) and z-index (`-z-10`) utilities, using the same negative key syntax supported by the margin plugin +- Add missing fractions as well as x/12 fractions to width scale +- Add `order` utilities +- Add `cursor-text` class by default + +### Changed + +- Make it possible to access your fully merged config file in JS + +### Removed + +- Removed `negativeMargin` plugin, now the regular `margin` plugin supports generating negative classes (like `-mx-6`) by using negative keys in the config, like `-6` + +## [1.0.0-beta.5] - 2019-04-18 + +### Changed + +- Make it possible to disable all core plugins using `corePlugins: false` +- Make it possible to configure a single list of variants that applies to all utility plugins +- Make it possible to safelist which core plugins should be enabled + +### Fixed + +- Fix a bug where stroke and fill plugins didn't properly handle the next object syntax for color definitions +- Fix a bug where you couldn't have comments near `@apply` directives + +## [1.0.0-beta.4] - 2019-03-29 + +### Added + +- Add the `container` key to the scaffolded config file when generated with `--full` + +### Changed + +- Bumps node dependency to 8.9.0 so we can keep our default config file clean, 6.9.0 is EOL next month anyways + +### Removed + +- Removes `SFMono-Regular` from the beginning of the default monospace font stack, it has no italic support and Menlo looks better anyways + +### Fixed + +- Fixes an issue where the user's config object was being mutated during processing (only affects @bradlc 😅) +- Fixes an issue where you couldn't use a closure to define theme sections under `extend` + +## [1.0.0-beta.3] - 2019-03-18 + +### Added + +- Support lazy evaluation in `theme.extend` + +### Changed + +- Use lighter default border color +- Revert #745 and use `bolder` for strong tags by default instead of `fontWeight.bold` + +## [1.0.0-beta.2] - 2019-03-17 + +### Changed + +- Closures in the `theme` section of the config file are now passed a `theme` function instead of an object + +### Fixed + +- Fix issue where `@screen` didn't work at all 🙃 + +## [1.0.0-beta.1] - 2019-03-17 + +### Added + +- New config file structure +- New expanded default color palette +- New default `maxWidth` scale +- Added utilities for `list-style-type` and `list-style-position` +- Added `break-all` utility + +### Changed + +- `object-position` utilities are now customizable under `theme.objectPosition` +- `cursor` utilities are now customizable under `theme.cursors` +- `flex-grow/shrink` utilities are now customizable under `theme.flexGrow/flexShrink` +- Default variant output position can be customized +- Extended default line-height scale +- Extended default letter-spacing scale + +## [0.7.4] - 2019-01-23 + +### Changed + +- Update our PostCSS related dependencies + +### Fixed + +- Fix bug where class names containing a `.`character had the responsive prefix added in the wrong place + +## [0.7.3] - 2018-12-03 + +### Changed + +- Update Normalize to v8.0.1 + +## [0.7.2] - 2018-11-05 + +### Added + +- Add `--no-autoprefixer` option to CLI `build` command + +## [0.7.1] - 2018-11-05 + +### Changed + +- Update autoprefixer dependency + +## [0.7.0] - 2018-10-31 + +### Added + +- Registering new variants from plugins +- Variant order can be customized per module +- Added focus-within variant +- Fancy CLI updates +- Option to generate config without comments +- Make configured prefix optional when using @apply +- Improve Flexbox behavior in IE 10/11 + +### Changed + +- Variant order in modules is now significant +- Normalize.css updated to v8.0.0 +- Removed CSS fix for Chrome 62 button border radius change + +## [0.6.6] - 2018-09-21 + +### Changed + +- Promote `shadowLookup` from experiment to official feature + +## [0.6.5] - 2018-08-18 + +### Fixed + +- Fixes an issue where units were stripped from zero value properties + +## [0.6.4] - 2018-07-16 + +### Fixed + +- Fixes an issue where changes to your configuration file were ignored when using `webpack --watch` + +## [0.6.3] - 2018-07-11 + +### Fixed + +- Fixes an issue where `@tailwind utilities` generated no output + +## [0.6.2] - 2018-03-11 + +### Added + +- Added table layout utilities for styling tables +- Configuration can now be passed as an object +- Registering new variants from plugins (experimental) +- Allow `@apply`-ing classes that aren't defined but would be generated (experimental) + +### Changed + +- Default config file changes + +## [0.6.1] - 2018-06-22 + +### Fixed + +- Fix incorrect box-shadow syntax for the `.shadow-outline` utility 🤦‍♂️ + +## [0.6.0] - 2018-06-21 + +### Added + +- Added border collapse utilities for styling tables +- Added more axis-specific overflow utilities +- Added `.outline-none` utility for suppressing focus styles +- Added `.shadow-outline` utility as an alternative to default browser focus styles +- Extended default padding, margin, negative margin, width, and height scales +- Enable focus and hover variants for more modules by default + +### Changed + +- Removed default `outline: none !important` styles from focusable but keyboard-inaccessible elements +- Moved screen prefix for responsive `group-hover` variants +- Default config file changes + +## [0.5.3] - 2018-05-07 + +### Changed + +- Improve sourcemaps for replaced styles like `preflight` + +### Fixed + +- Fix bug where informational messages were being logged to stdout during build, preventing the ability to use Tailwind's output in Unix pipelines + +## [0.5.2] - 2018-03-29 + +### Fixed + +- Fixes an issue with a dependency that had a security vulnerability + +## [0.5.1] - 2018-03-13 + +### Removed + +- Reverts a change that renamed the `.roman` class to `.not-italic` due to the fact that it breaks compatibility with cssnext: [postcss/postcss-selector-not#10](https://github.com/postcss/postcss-selector-not/issues/10). We'll stick with `.roman` for now with a plan to switch to `.not-italic` in another breaking version should that issue get resolved in postcss-selector-not. + +## [0.5.0] - 2018-03-13 + +### Added + +- Plugin system +- Added `.sticky position` utility +- Added `.cursor-wait` and `.cursor-move` utilities +- Added `.bg-auto` background size utility +- Background sizes are now customizable +- Support for active variants +- Better postcss-import support +- Configuration options for the `.container` component + +### Changed + +- The `.container` component is now a built-in plugin +- State variant precedence changes +- New config file keys +- `.overflow-x/y-scroll` now set `overflow: scroll` instead of `overflow: auto` +- `.roman` renamed to `.not-italic` + +## [0.4.3] - 2018-03-13 + +### Changed + +- Use `global.Object` to avoid issues with polyfills when importing the Tailwind config into other JS + +## [0.4.2] - 2018-03-01 + +### Added + +- Add support for using a function to define class prefixes in addition to a simple string + +### Changed + +- Improve the performance of @apply by using a lookup table instead of searching + +### Fixed + +- Fix an issue where borders couldn't be applied to `img` tags without specifying a border style + +## [0.4.1] - 2018-01-22 + +### Changed + +- Make default sans-serif font stack more future proof and safe to use with CSS `font` shorthand +- Replace stylefmt with Perfectionist to avoid weird stylelint conflicts + +## [0.4.0] - 2017-12-15 + +### Added + +- `@apply`'d classes can now be made `!important` explicitly + +### Changed + +- `@apply` now strips `!important` from any mixed in classes +- Default color palette tweaks + +## [0.3.0] - 2017-12-01 + +### Added + +- Enable/disable modules and control which variants are generated for each +- Focus variants +- Group hover variants +- New `@variants` at-rule +- Customize the separator character +- Missing config keys now fallback to their default values +- New utilities + +### Changed + +- Lists now have no margins by default +- `.pin` no longer sets width and height to 100% +- SVG `fill` no longer defaults to currentColor + +## [0.2.2] - 2017-11-19 + +### Fixed + +- Fix issue with dist files not being published due to bug in latest npm + +## [0.2.1] - 2017-11-18 + +### Fixed + +- Fix overly specific border-radius reset for Chrome 62 button styles + +## [0.2.0] - 2017-11-17 + +### Added + +- Add a custom prefix to all utilities +- Optionally make all utilities `!important` +- Round element corners independently +- Cascading border colors and styles + +### Changed + +- `auto` is no longer a hard-coded margin value +- The `defaultConfig` function is now a separate module +- Rounded utilities now combine position and radius size +- Border width utilities no longer affect border color/style +- `@apply` is now very strict about what classes can be applied +- Add `options` key to your config +- Spacing, radius, and border width utility declaration order changes + +## [0.1.6] - 2017-11-09 + +### Fixed + +- Fix CDN files not being published to npm + +## [0.1.5] - 2017-11-08 + +### Changed + +- Apply the same default placeholder styling that's applied to inputs to textareas + +### Fixed + +- Fix CLI tool not loading config files properly + +## [0.1.4] - 2017-11-06 + +### Added + +- Autoprefix dist assets for quick hacking and prototyping +- Add `my-auto`, `mt-auto`, and `mb-auto` margin utilities +- Add `sans-serif` to end of default `sans` font stack + +### Changed + +- If using Webpack, it will now watch your config file changes +- When running `tailwind init [filename]`, automatically append `.js` to filename if not present +- Support default fallback value in `config(...)` function, ie. `config('colors.blue', #0000ff)` +- Don't output empty media queries if Tailwind processes a file that doesn't use Tailwind + +### Fixed + +- Move list utilities earlier in stylesheet to allow overriding with spacing utilities + +## [0.1.3] - 2017-11-02 + +### Added + +- Add new `.scrolling-touch` and `.scrolling-auto` utilities for controlling inertial scroll behavior on WebKit touch devices +- Generate separate dist files for preflight, utilities, and tailwind for CDN usage + +## [0.1.2] - 2017-11-01 + +### Changed + +- Target Node 6.9.0 explicitly (instead of 8.6 implicitly) to support more users + +### Fixed + +- Fix issue with config option not being respected in `tailwind build` + +## [0.1.1] - 2017-11-01 + +### Fixed + +- Fix `tailwind build` CLI command not writing output files + +## [0.1.0] - 2017-11-01 + +### Added + +- Everything! + +[unreleased]: https://github.com/tailwindlabs/tailwindcss/compare/v4.0.0...HEAD +[4.0.0]: https://github.com/tailwindlabs/tailwindcss/compare/v4.0.0-beta.10...v4.0.0 +[4.0.0-beta.10]: https://github.com/tailwindlabs/tailwindcss/compare/v4.0.0-beta.9...v4.0.0-beta.10 +[4.0.0-beta.9]: https://github.com/tailwindlabs/tailwindcss/compare/v4.0.0-beta.8...v4.0.0-beta.9 +[4.0.0-beta.8]: https://github.com/tailwindlabs/tailwindcss/compare/v4.0.0-beta.7...v4.0.0-beta.8 +[4.0.0-beta.7]: https://github.com/tailwindlabs/tailwindcss/compare/v4.0.0-beta.6...v4.0.0-beta.7 +[4.0.0-beta.6]: https://github.com/tailwindlabs/tailwindcss/compare/v4.0.0-beta.5...v4.0.0-beta.6 +[4.0.0-beta.5]: https://github.com/tailwindlabs/tailwindcss/compare/v4.0.0-beta.4...v4.0.0-beta.5 +[4.0.0-beta.4]: https://github.com/tailwindlabs/tailwindcss/compare/v4.0.0-beta.3...v4.0.0-beta.4 +[4.0.0-beta.3]: https://github.com/tailwindlabs/tailwindcss/compare/v4.0.0-beta.2...v4.0.0-beta.3 +[4.0.0-beta.2]: https://github.com/tailwindlabs/tailwindcss/compare/v4.0.0-beta.1...v4.0.0-beta.2 +[4.0.0-beta.1]: https://github.com/tailwindlabs/tailwindcss/compare/v4.0.0-alpha.36...v4.0.0-beta.1 +[4.0.0-alpha.36]: https://github.com/tailwindlabs/tailwindcss/compare/v4.0.0-alpha.35...v4.0.0-alpha.36 +[4.0.0-alpha.35]: https://github.com/tailwindlabs/tailwindcss/compare/v4.0.0-alpha.34...v4.0.0-alpha.35 +[4.0.0-alpha.34]: https://github.com/tailwindlabs/tailwindcss/compare/v4.0.0-alpha.33...v4.0.0-alpha.34 +[4.0.0-alpha.33]: https://github.com/tailwindlabs/tailwindcss/compare/v4.0.0-alpha.32...v4.0.0-alpha.33 +[4.0.0-alpha.32]: https://github.com/tailwindlabs/tailwindcss/compare/v4.0.0-alpha.31...v4.0.0-alpha.32 +[4.0.0-alpha.31]: https://github.com/tailwindlabs/tailwindcss/compare/v4.0.0-alpha.30...v4.0.0-alpha.31 +[4.0.0-alpha.30]: https://github.com/tailwindlabs/tailwindcss/compare/v4.0.0-alpha.29...v4.0.0-alpha.30 +[4.0.0-alpha.29]: https://github.com/tailwindlabs/tailwindcss/compare/v4.0.0-alpha.28...v4.0.0-alpha.29 +[4.0.0-alpha.28]: https://github.com/tailwindlabs/tailwindcss/compare/v4.0.0-alpha.27...v4.0.0-alpha.28 +[4.0.0-alpha.27]: https://github.com/tailwindlabs/tailwindcss/compare/v4.0.0-alpha.26...v4.0.0-alpha.27 +[4.0.0-alpha.26]: https://github.com/tailwindlabs/tailwindcss/compare/v4.0.0-alpha.25...v4.0.0-alpha.26 +[4.0.0-alpha.25]: https://github.com/tailwindlabs/tailwindcss/compare/v4.0.0-alpha.24...v4.0.0-alpha.25 +[4.0.0-alpha.24]: https://github.com/tailwindlabs/tailwindcss/compare/v4.0.0-alpha.23...v4.0.0-alpha.24 +[4.0.0-alpha.23]: https://github.com/tailwindlabs/tailwindcss/compare/v4.0.0-alpha.22...v4.0.0-alpha.23 +[4.0.0-alpha.22]: https://github.com/tailwindlabs/tailwindcss/compare/v3.4.17...v4.0.0-alpha.22 +[3.4.17]: https://github.com/tailwindlabs/tailwindcss/compare/v3.4.16...v3.4.17 +[3.4.16]: https://github.com/tailwindlabs/tailwindcss/compare/v3.4.15...v3.4.16 +[3.4.15]: https://github.com/tailwindlabs/tailwindcss/compare/v3.4.14...v3.4.15 +[3.4.14]: https://github.com/tailwindlabs/tailwindcss/compare/v3.4.13...v3.4.14 +[3.4.13]: https://github.com/tailwindlabs/tailwindcss/compare/v3.4.12...v3.4.13 +[3.4.12]: https://github.com/tailwindlabs/tailwindcss/compare/v3.4.11...v3.4.12 +[3.4.11]: https://github.com/tailwindlabs/tailwindcss/compare/v3.4.10...v3.4.11 +[3.4.10]: https://github.com/tailwindlabs/tailwindcss/compare/v3.4.9...v3.4.10 +[3.4.9]: https://github.com/tailwindlabs/tailwindcss/compare/v3.4.8...v3.4.9 +[3.4.8]: https://github.com/tailwindlabs/tailwindcss/compare/v3.4.7...v3.4.8 +[3.4.7]: https://github.com/tailwindlabs/tailwindcss/compare/v3.4.6...v3.4.7 +[3.4.6]: https://github.com/tailwindlabs/tailwindcss/compare/v3.4.5...v3.4.6 +[3.4.5]: https://github.com/tailwindlabs/tailwindcss/compare/v3.4.4...v3.4.5 +[3.4.4]: https://github.com/tailwindlabs/tailwindcss/compare/v3.4.3...v3.4.4 +[3.4.3]: https://github.com/tailwindlabs/tailwindcss/compare/v3.4.2...v3.4.3 +[3.4.2]: https://github.com/tailwindlabs/tailwindcss/compare/v3.4.1...v3.4.2 +[3.4.1]: https://github.com/tailwindlabs/tailwindcss/compare/v3.4.0...v3.4.1 +[3.4.0]: https://github.com/tailwindlabs/tailwindcss/compare/v3.3.7...v3.4.0 +[3.3.7]: https://github.com/tailwindlabs/tailwindcss/compare/v3.3.6...v3.3.7 +[3.3.6]: https://github.com/tailwindlabs/tailwindcss/compare/v3.3.5...v3.3.6 +[3.3.5]: https://github.com/tailwindlabs/tailwindcss/compare/v3.3.4...v3.3.5 +[3.3.4]: https://github.com/tailwindlabs/tailwindcss/compare/v3.3.3...v3.3.4 +[3.3.3]: https://github.com/tailwindlabs/tailwindcss/compare/v3.3.2...v3.3.3 +[3.3.2]: https://github.com/tailwindlabs/tailwindcss/compare/v3.3.1...v3.3.2 +[3.3.1]: https://github.com/tailwindlabs/tailwindcss/compare/v3.3.0...v3.3.1 +[3.3.0]: https://github.com/tailwindlabs/tailwindcss/compare/v3.2.7...v3.3.0 +[3.2.7]: https://github.com/tailwindlabs/tailwindcss/compare/v3.2.6...v3.2.7 +[3.2.6]: https://github.com/tailwindlabs/tailwindcss/compare/v3.2.5...v3.2.6 +[3.2.5]: https://github.com/tailwindlabs/tailwindcss/compare/v3.2.4...v3.2.5 +[3.2.4]: https://github.com/tailwindlabs/tailwindcss/compare/v3.2.3...v3.2.4 +[3.2.3]: https://github.com/tailwindlabs/tailwindcss/compare/v3.2.2...v3.2.3 +[3.2.2]: https://github.com/tailwindlabs/tailwindcss/compare/v3.2.1...v3.2.2 +[3.2.1]: https://github.com/tailwindlabs/tailwindcss/compare/v3.2.0...v3.2.1 +[3.2.0]: https://github.com/tailwindlabs/tailwindcss/compare/v3.1.8...v3.2.0 +[3.1.8]: https://github.com/tailwindlabs/tailwindcss/compare/v3.1.7...v3.1.8 +[3.1.7]: https://github.com/tailwindlabs/tailwindcss/compare/v3.1.6...v3.1.7 +[3.1.6]: https://github.com/tailwindlabs/tailwindcss/compare/v3.1.5...v3.1.6 +[3.1.5]: https://github.com/tailwindlabs/tailwindcss/compare/v3.1.4...v3.1.5 +[3.1.4]: https://github.com/tailwindlabs/tailwindcss/compare/v3.1.3...v3.1.4 +[3.1.3]: https://github.com/tailwindlabs/tailwindcss/compare/v3.1.2...v3.1.3 +[3.1.2]: https://github.com/tailwindlabs/tailwindcss/compare/v3.1.1...v3.1.2 +[3.1.1]: https://github.com/tailwindlabs/tailwindcss/compare/v3.1.0...v3.1.1 +[3.1.0]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.24...v3.1.0 +[3.0.24]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.23...v3.0.24 +[3.0.23]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.22...v3.0.23 +[3.0.22]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.21...v3.0.22 +[3.0.21]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.20...v3.0.21 +[3.0.20]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.19...v3.0.20 +[3.0.19]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.18...v3.0.19 +[3.0.18]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.17...v3.0.18 +[3.0.17]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.16...v3.0.17 +[3.0.16]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.15...v3.0.16 +[3.0.15]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.14...v3.0.15 +[3.0.14]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.13...v3.0.14 +[3.0.13]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.12...v3.0.13 +[3.0.12]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.11...v3.0.12 +[3.0.11]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.10...v3.0.11 +[3.0.10]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.9...v3.0.10 +[3.0.9]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.8...v3.0.9 +[3.0.8]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.7...v3.0.8 +[3.0.7]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.6...v3.0.7 +[3.0.6]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.5...v3.0.6 +[3.0.5]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.4...v3.0.5 +[3.0.4]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.3...v3.0.4 +[3.0.3]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.2...v3.0.3 +[3.0.2]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.1...v3.0.2 +[3.0.1]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.0...v3.0.1 +[3.0.0]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.0-alpha.2...v3.0.0 +[3.0.0-alpha.2]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.0-alpha.1...v3.0.0-alpha.2 +[3.0.0-alpha.1]: https://github.com/tailwindlabs/tailwindcss/compare/v2.2.19...v3.0.0-alpha.1 +[2.2.19]: https://github.com/tailwindlabs/tailwindcss/compare/v2.2.18...v2.2.19 +[2.2.18]: https://github.com/tailwindlabs/tailwindcss/compare/v2.2.17...v2.2.18 +[2.2.17]: https://github.com/tailwindlabs/tailwindcss/compare/v2.2.16...v2.2.17 +[2.2.16]: https://github.com/tailwindlabs/tailwindcss/compare/v2.2.15...v2.2.16 +[2.2.15]: https://github.com/tailwindlabs/tailwindcss/compare/v2.2.14...v2.2.15 +[2.2.14]: https://github.com/tailwindlabs/tailwindcss/compare/v2.2.13...v2.2.14 +[2.2.13]: https://github.com/tailwindlabs/tailwindcss/compare/v2.2.12...v2.2.13 +[2.2.12]: https://github.com/tailwindlabs/tailwindcss/compare/v2.2.11...v2.2.12 +[2.2.11]: https://github.com/tailwindlabs/tailwindcss/compare/v2.2.10...v2.2.11 +[2.2.10]: https://github.com/tailwindlabs/tailwindcss/compare/v2.2.9...v2.2.10 +[2.2.9]: https://github.com/tailwindlabs/tailwindcss/compare/v2.2.8...v2.2.9 +[2.2.8]: https://github.com/tailwindlabs/tailwindcss/compare/v2.2.7...v2.2.8 +[2.2.7]: https://github.com/tailwindlabs/tailwindcss/compare/v2.2.6...v2.2.7 +[2.2.6]: https://github.com/tailwindlabs/tailwindcss/compare/v2.2.5...v2.2.6 +[2.2.5]: https://github.com/tailwindlabs/tailwindcss/compare/v2.2.4...v2.2.5 +[2.2.4]: https://github.com/tailwindlabs/tailwindcss/compare/v2.2.3...v2.2.4 +[2.2.3]: https://github.com/tailwindlabs/tailwindcss/compare/v2.2.2...v2.2.3 +[2.2.2]: https://github.com/tailwindlabs/tailwindcss/compare/v2.2.1...v2.2.2 +[2.2.1]: https://github.com/tailwindlabs/tailwindcss/compare/v2.2.0...v2.2.1 +[2.2.0]: https://github.com/tailwindlabs/tailwindcss/compare/v2.1.4...v2.2.0 +[2.1.4]: https://github.com/tailwindlabs/tailwindcss/compare/v2.1.3...v2.1.4 +[2.1.3]: https://github.com/tailwindlabs/tailwindcss/compare/v2.1.2...v2.1.3 +[2.1.2]: https://github.com/tailwindlabs/tailwindcss/compare/v2.1.1...v2.1.2 +[2.1.1]: https://github.com/tailwindlabs/tailwindcss/compare/v2.1.0...v2.1.1 +[2.1.0]: https://github.com/tailwindlabs/tailwindcss/compare/v2.0.4...v2.1.0 +[2.0.4]: https://github.com/tailwindlabs/tailwindcss/compare/v2.0.3...v2.0.4 +[2.0.3]: https://github.com/tailwindlabs/tailwindcss/compare/v2.0.2...v2.0.3 +[2.0.2]: https://github.com/tailwindlabs/tailwindcss/compare/v2.0.1...v2.0.2 +[2.0.1]: https://github.com/tailwindlabs/tailwindcss/compare/v2.0.0...v2.0.1 +[2.0.0]: https://github.com/tailwindlabs/tailwindcss/compare/v1.9.6...v2.0.0 +[2.0.0-alpha.25]: https://github.com/tailwindlabs/tailwindcss/compare/v2.0.0-alpha.24...v2.0.0-alpha.25 +[2.0.0-alpha.24]: https://github.com/tailwindlabs/tailwindcss/compare/v2.0.0-alpha.23...v2.0.0-alpha.24 +[2.0.0-alpha.23]: https://github.com/tailwindlabs/tailwindcss/compare/v2.0.0-alpha.22...v2.0.0-alpha.23 +[2.0.0-alpha.22]: https://github.com/tailwindlabs/tailwindcss/compare/v2.0.0-alpha.21...v2.0.0-alpha.22 +[2.0.0-alpha.21]: https://github.com/tailwindlabs/tailwindcss/compare/v2.0.0-alpha.20...v2.0.0-alpha.21 +[2.0.0-alpha.20]: https://github.com/tailwindlabs/tailwindcss/compare/v2.0.0-alpha.19...v2.0.0-alpha.20 +[2.0.0-alpha.19]: https://github.com/tailwindlabs/tailwindcss/compare/v2.0.0-alpha.18...v2.0.0-alpha.19 +[2.0.0-alpha.18]: https://github.com/tailwindlabs/tailwindcss/compare/v2.0.0-alpha.17...v2.0.0-alpha.18 +[2.0.0-alpha.17]: https://github.com/tailwindlabs/tailwindcss/compare/v2.0.0-alpha.16...v2.0.0-alpha.17 +[2.0.0-alpha.16]: https://github.com/tailwindlabs/tailwindcss/compare/v2.0.0-alpha.15...v2.0.0-alpha.16 +[2.0.0-alpha.15]: https://github.com/tailwindlabs/tailwindcss/compare/v2.0.0-alpha.14...v2.0.0-alpha.15 +[2.0.0-alpha.14]: https://github.com/tailwindlabs/tailwindcss/compare/v2.0.0-alpha.13...v2.0.0-alpha.14 +[2.0.0-alpha.13]: https://github.com/tailwindlabs/tailwindcss/compare/v2.0.0-alpha.12...v2.0.0-alpha.13 +[2.0.0-alpha.12]: https://github.com/tailwindlabs/tailwindcss/compare/v2.0.0-alpha.11...v2.0.0-alpha.12 +[2.0.0-alpha.11]: https://github.com/tailwindlabs/tailwindcss/compare/v2.0.0-alpha.10...v2.0.0-alpha.11 +[2.0.0-alpha.10]: https://github.com/tailwindlabs/tailwindcss/compare/v2.0.0-alpha.9...v2.0.0-alpha.10 +[2.0.0-alpha.9]: https://github.com/tailwindlabs/tailwindcss/compare/v2.0.0-alpha.8...v2.0.0-alpha.9 +[2.0.0-alpha.8]: https://github.com/tailwindlabs/tailwindcss/compare/v2.0.0-alpha.7...v2.0.0-alpha.8 +[2.0.0-alpha.7]: https://github.com/tailwindlabs/tailwindcss/compare/v2.0.0-alpha.6...v2.0.0-alpha.7 +[2.0.0-alpha.6]: https://github.com/tailwindlabs/tailwindcss/compare/v2.0.0-alpha.5...v2.0.0-alpha.6 +[2.0.0-alpha.5]: https://github.com/tailwindlabs/tailwindcss/compare/v2.0.0-alpha.4...v2.0.0-alpha.5 +[2.0.0-alpha.4]: https://github.com/tailwindlabs/tailwindcss/compare/v2.0.0-alpha.3...v2.0.0-alpha.4 +[2.0.0-alpha.3]: https://github.com/tailwindlabs/tailwindcss/compare/v2.0.0-alpha.2...v2.0.0-alpha.3 +[2.0.0-alpha.2]: https://github.com/tailwindlabs/tailwindcss/compare/v2.0.0-alpha.1...v2.0.0-alpha.2 +[1.9.6]: https://github.com/tailwindlabs/tailwindcss/compare/v1.9.5...v1.9.6 +[2.0.0-alpha.1]: https://github.com/tailwindlabs/tailwindcss/compare/v1.9.5...v2.0.0-alpha.1 +[1.9.5]: https://github.com/tailwindlabs/tailwindcss/compare/v1.9.4...v1.9.5 +[1.9.4]: https://github.com/tailwindlabs/tailwindcss/compare/v1.9.3...v1.9.4 +[1.9.3]: https://github.com/tailwindlabs/tailwindcss/compare/v1.9.2...v1.9.3 +[1.9.2]: https://github.com/tailwindlabs/tailwindcss/compare/v1.9.1...v1.9.2 +[1.9.1]: https://github.com/tailwindlabs/tailwindcss/compare/v1.9.0...v1.9.1 +[1.9.0]: https://github.com/tailwindlabs/tailwindcss/compare/v1.8.13...v1.9.0 +[1.8.13]: https://github.com/tailwindlabs/tailwindcss/compare/v1.8.12...v1.8.13 +[1.8.12]: https://github.com/tailwindlabs/tailwindcss/compare/v1.8.11...v1.8.12 +[1.8.11]: https://github.com/tailwindlabs/tailwindcss/compare/v1.8.10...v1.8.11 +[1.8.10]: https://github.com/tailwindlabs/tailwindcss/compare/v1.8.9...v1.8.10 +[1.8.9]: https://github.com/tailwindlabs/tailwindcss/compare/v1.8.8...v1.8.9 +[1.8.8]: https://github.com/tailwindlabs/tailwindcss/compare/v1.8.7...v1.8.8 +[1.8.7]: https://github.com/tailwindlabs/tailwindcss/compare/v1.8.6...v1.8.7 +[1.8.6]: https://github.com/tailwindlabs/tailwindcss/compare/v1.8.5...v1.8.6 +[1.8.5]: https://github.com/tailwindlabs/tailwindcss/compare/v1.8.4...v1.8.5 +[1.8.4]: https://github.com/tailwindlabs/tailwindcss/compare/v1.8.3...v1.8.4 +[1.8.3]: https://github.com/tailwindlabs/tailwindcss/compare/v1.8.2...v1.8.3 +[1.8.2]: https://github.com/tailwindlabs/tailwindcss/compare/v1.8.1...v1.8.2 +[1.8.1]: https://github.com/tailwindlabs/tailwindcss/compare/v1.8.0...v1.8.1 +[1.8.0]: https://github.com/tailwindlabs/tailwindcss/compare/v1.7.6...v1.8.0 +[1.7.6]: https://github.com/tailwindlabs/tailwindcss/compare/v1.7.5...v1.7.6 +[1.7.5]: https://github.com/tailwindlabs/tailwindcss/compare/v1.7.4...v1.7.5 +[1.7.4]: https://github.com/tailwindlabs/tailwindcss/compare/v1.7.3...v1.7.4 +[1.7.3]: https://github.com/tailwindlabs/tailwindcss/compare/v1.7.2...v1.7.3 +[1.7.2]: https://github.com/tailwindlabs/tailwindcss/compare/v1.7.1...v1.7.2 +[1.7.1]: https://github.com/tailwindlabs/tailwindcss/compare/v1.7.0...v1.7.1 +[1.7.0]: https://github.com/tailwindlabs/tailwindcss/compare/v1.6.3...v1.7.0 +[1.6.3]: https://github.com/tailwindlabs/tailwindcss/compare/v1.6.2...v1.6.3 +[1.6.2]: https://github.com/tailwindlabs/tailwindcss/compare/v1.6.1...v1.6.2 +[1.6.1]: https://github.com/tailwindlabs/tailwindcss/compare/v1.6.0...v1.6.1 +[1.6.0]: https://github.com/tailwindlabs/tailwindcss/compare/v1.5.2...v1.6.0 +[1.5.2]: https://github.com/tailwindlabs/tailwindcss/compare/v1.5.1...v1.5.2 +[1.5.1]: https://github.com/tailwindlabs/tailwindcss/compare/v1.5.0...v1.5.1 +[1.5.0]: https://github.com/tailwindlabs/tailwindcss/compare/v1.4.6...v1.5.0 +[1.4.6]: https://github.com/tailwindlabs/tailwindcss/compare/v1.4.5...v1.4.6 +[1.4.5]: https://github.com/tailwindlabs/tailwindcss/compare/v1.4.4...v1.4.5 +[1.4.4]: https://github.com/tailwindlabs/tailwindcss/compare/v1.4.3...v1.4.4 +[1.4.3]: https://github.com/tailwindlabs/tailwindcss/compare/v1.4.2...v1.4.3 +[1.4.2]: https://github.com/tailwindlabs/tailwindcss/compare/v1.4.1...v1.4.2 +[1.4.1]: https://github.com/tailwindlabs/tailwindcss/compare/v1.4.0...v1.4.1 +[1.4.0]: https://github.com/tailwindlabs/tailwindcss/compare/v1.3.5...v1.4.0 +[1.3.5]: https://github.com/tailwindlabs/tailwindcss/compare/v1.3.4...v1.3.5 +[1.3.4]: https://github.com/tailwindlabs/tailwindcss/compare/v1.3.3...v1.3.4 +[1.3.3]: https://github.com/tailwindlabs/tailwindcss/compare/v1.3.1...v1.3.3 +[1.3.1]: https://github.com/tailwindlabs/tailwindcss/compare/v1.3.0...v1.3.1 +[1.3.0]: https://github.com/tailwindlabs/tailwindcss/compare/v1.2.0...v1.3.0 +[1.2.0]: https://github.com/tailwindlabs/tailwindcss/compare/v1.1.4...v1.2.0 +[1.2.0-canary.8]: https://github.com/tailwindlabs/tailwindcss/compare/v1.2.0-canary.7...v1.2.0-canary.8 +[1.2.0-canary.7]: https://github.com/tailwindlabs/tailwindcss/compare/v1.2.0-canary.6...v1.2.0-canary.7 +[1.2.0-canary.6]: https://github.com/tailwindlabs/tailwindcss/compare/v1.2.0-canary.5...v1.2.0-canary.6 +[1.2.0-canary.5]: https://github.com/tailwindlabs/tailwindcss/compare/v1.2.0-canary.4...v1.2.0-canary.5 +[1.2.0-canary.4]: https://github.com/tailwindlabs/tailwindcss/compare/v1.2.0-canary.3...v1.2.0-canary.4 +[1.1.4]: https://github.com/tailwindlabs/tailwindcss/compare/v1.1.3...v1.1.4 +[1.2.0-canary.1]: https://github.com/tailwindlabs/tailwindcss/compare/v1.2.0-canary.0...v1.2.0-canary.1 +[1.1.3]: https://github.com/tailwindlabs/tailwindcss/compare/v1.1.2...v1.1.3 +[1.2.0-canary.0]: https://github.com/tailwindlabs/tailwindcss/compare/v1.1.2...v1.2.0-canary.0 +[1.1.2]: https://github.com/tailwindlabs/tailwindcss/compare/v1.1.1...v1.1.2 +[1.1.1]: https://github.com/tailwindlabs/tailwindcss/compare/v1.1.0...v1.1.1 +[1.1.0]: https://github.com/tailwindlabs/tailwindcss/compare/v1.0.6...v1.1.0 +[1.0.6]: https://github.com/tailwindlabs/tailwindcss/compare/v1.0.5...v1.0.6 +[1.0.5]: https://github.com/tailwindlabs/tailwindcss/compare/v1.0.4...v1.0.5 +[1.0.4]: https://github.com/tailwindlabs/tailwindcss/compare/v1.0.3...v1.0.4 +[1.0.3]: https://github.com/tailwindlabs/tailwindcss/compare/v1.0.2...v1.0.3 +[1.0.2]: https://github.com/tailwindlabs/tailwindcss/compare/v1.0.1...v1.0.2 +[1.0.1]: https://github.com/tailwindlabs/tailwindcss/compare/v1.0.0...v1.0.1 +[1.0.0]: https://github.com/tailwindlabs/tailwindcss/compare/v1.0.0-beta.10...v1.0.0 +[1.0.0-beta.10]: https://github.com/tailwindlabs/tailwindcss/compare/v1.0.0-beta.9...v1.0.0-beta.10 +[1.0.0-beta.9]: https://github.com/tailwindlabs/tailwindcss/compare/v1.0.0-beta.8...v1.0.0-beta.9 +[1.0.0-beta.8]: https://github.com/tailwindlabs/tailwindcss/compare/v1.0.0-beta.7...v1.0.0-beta.8 +[1.0.0-beta.7]: https://github.com/tailwindlabs/tailwindcss/compare/v1.0.0-beta.6...v1.0.0-beta.7 +[1.0.0-beta.6]: https://github.com/tailwindlabs/tailwindcss/compare/v1.0.0-beta.5...v1.0.0-beta.6 +[1.0.0-beta.5]: https://github.com/tailwindlabs/tailwindcss/compare/v1.0.0-beta.4...v1.0.0-beta.5 +[1.0.0-beta.4]: https://github.com/tailwindlabs/tailwindcss/compare/v1.0.0-beta.3...v1.0.0-beta.4 +[1.0.0-beta.3]: https://github.com/tailwindlabs/tailwindcss/compare/v1.0.0-beta.2...v1.0.0-beta.3 +[1.0.0-beta.2]: https://github.com/tailwindlabs/tailwindcss/compare/v1.0.0-beta.1...v1.0.0-beta.2 +[1.0.0-beta.1]: https://github.com/tailwindlabs/tailwindcss/compare/v0.7.4...v1.0.0-beta.1 +[0.7.4]: https://github.com/tailwindlabs/tailwindcss/compare/v0.7.3...v0.7.4 +[0.7.3]: https://github.com/tailwindlabs/tailwindcss/compare/v0.7.2...v0.7.3 +[0.7.2]: https://github.com/tailwindlabs/tailwindcss/compare/v0.7.1...v0.7.2 +[0.7.1]: https://github.com/tailwindlabs/tailwindcss/compare/v0.7.0...v0.7.1 +[0.7.0]: https://github.com/tailwindlabs/tailwindcss/compare/v0.6.6...v0.7.0 +[0.6.6]: https://github.com/tailwindlabs/tailwindcss/compare/v0.6.5...v0.6.6 +[0.6.5]: https://github.com/tailwindlabs/tailwindcss/compare/v0.6.4...v0.6.5 +[0.6.4]: https://github.com/tailwindlabs/tailwindcss/compare/v0.6.3...v0.6.4 +[0.6.3]: https://github.com/tailwindlabs/tailwindcss/compare/v0.6.2...v0.6.3 +[0.6.2]: https://github.com/tailwindlabs/tailwindcss/compare/v0.6.1...v0.6.2 +[0.6.1]: https://github.com/tailwindlabs/tailwindcss/compare/v0.6.0...v0.6.1 +[0.6.0]: https://github.com/tailwindlabs/tailwindcss/compare/v0.5.3...v0.6.0 +[0.5.3]: https://github.com/tailwindlabs/tailwindcss/compare/v0.5.2...v0.5.3 +[0.5.2]: https://github.com/tailwindlabs/tailwindcss/compare/v0.5.1...v0.5.2 +[0.5.1]: https://github.com/tailwindlabs/tailwindcss/compare/v0.5.0...v0.5.1 +[0.5.0]: https://github.com/tailwindlabs/tailwindcss/compare/v0.4.3...v0.5.0 +[0.4.3]: https://github.com/tailwindlabs/tailwindcss/compare/v0.4.2...v0.4.3 +[0.4.2]: https://github.com/tailwindlabs/tailwindcss/compare/v0.4.1...v0.4.2 +[0.4.1]: https://github.com/tailwindlabs/tailwindcss/compare/v0.4.0...v0.4.1 +[0.4.0]: https://github.com/tailwindlabs/tailwindcss/compare/v0.3.0...v0.4.0 +[0.3.0]: https://github.com/tailwindlabs/tailwindcss/compare/v0.2.2...v0.3.0 +[0.2.2]: https://github.com/tailwindlabs/tailwindcss/compare/v0.2.1...v0.2.2 +[0.2.1]: https://github.com/tailwindlabs/tailwindcss/compare/v0.2.0...v0.2.1 +[0.2.0]: https://github.com/tailwindlabs/tailwindcss/compare/v0.1.6...v0.2.0 +[0.1.6]: https://github.com/tailwindlabs/tailwindcss/compare/v0.1.5...v0.1.6 +[0.1.5]: https://github.com/tailwindlabs/tailwindcss/compare/v0.1.4...v0.1.5 +[0.1.4]: https://github.com/tailwindlabs/tailwindcss/compare/v0.1.3...v0.1.4 +[0.1.3]: https://github.com/tailwindlabs/tailwindcss/compare/v0.1.2...v0.1.3 +[0.1.2]: https://github.com/tailwindlabs/tailwindcss/compare/v0.1.1...v0.1.2 +[0.1.1]: https://github.com/tailwindlabs/tailwindcss/compare/v0.1.0...v0.1.1 +[0.1.0]: https://github.com/tailwindlabs/tailwindcss/releases/tag/v0.1.0 From 193fc609899cf0c2146178b107fff08fdaab415e Mon Sep 17 00:00:00 2001 From: Robin Malfait Date: Mon, 27 Jan 2025 12:55:10 +0100 Subject: [PATCH 03/29] Ensure CSS variable shorthand uses valid CSS variables (#15738) This PR fixes an issue where we didn't always correctly validated invalid CSS variables when using the CSS variable shorthand syntax. This PR fixes that by ensuring we start with `--`. We can't validate that the variable exists at runtime, but we can validate if it looks like a valid CSS variable. We can go a step further by validating if the CSS variable is valid syntax (e.g.: all characters are valid), but we can introduce this if this is causing actual issues in projects. ``` p-(a-b) ``` Used to compile to: ```css .p-\(a-b\) { padding: var(a-b); } ``` But not anymore. --- CHANGELOG.md | 1 + packages/tailwindcss/src/candidate.test.ts | 23 ++++++++++++++++++++++ packages/tailwindcss/src/candidate.ts | 6 ++++++ 3 files changed, 30 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3660f0795799..7c86bbd08a00 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed - Remove invalid `min-w/h-none` utilities ([#15845](https://github.com/tailwindlabs/tailwindcss/pull/15845)) +- Ensure CSS variable shorthand uses valid CSS variables ([#15738](https://github.com/tailwindlabs/tailwindcss/pull/15738)) ## [4.0.0] - 2025-01-21 diff --git a/packages/tailwindcss/src/candidate.test.ts b/packages/tailwindcss/src/candidate.test.ts index 723ae0fc8e08..20f89a940d3c 100644 --- a/packages/tailwindcss/src/candidate.test.ts +++ b/packages/tailwindcss/src/candidate.test.ts @@ -570,6 +570,13 @@ it('should parse a utility with an arbitrary value with parens', () => { `) }) +it('should not parse a utility with an arbitrary value with parens that does not start with --', () => { + let utilities = new Utilities() + utilities.functional('bg', () => []) + + expect(run('bg-(my-color)', { utilities })).toMatchInlineSnapshot(`[]`) +}) + it('should parse a utility with an arbitrary value including a typehint', () => { let utilities = new Utilities() utilities.functional('bg', () => []) @@ -616,6 +623,13 @@ it('should parse a utility with an arbitrary value with parens including a typeh `) }) +it('should not parse a utility with an arbitrary value with parens including a typehint that does not start with --', () => { + let utilities = new Utilities() + utilities.functional('bg', () => []) + + expect(run('bg-(color:my-color)', { utilities })).toMatchInlineSnapshot(`[]`) +}) + it('should parse a utility with an arbitrary value with parens and a fallback', () => { let utilities = new Utilities() utilities.functional('bg', () => []) @@ -888,6 +902,8 @@ it('should not parse invalid arbitrary values in variants', () => { 'data-foo-(--value)/(number:--mod):flex', 'data-foo(--value)/(number:--mod):flex', + + 'data-(value):flex', ]) { expect(run(candidate, { utilities, variants })).toEqual([]) } @@ -945,6 +961,13 @@ it('should parse a utility with an implicit variable as the modifier using the s `) }) +it('should not parse a utility with an implicit invalid variable as the modifier using the shorthand', () => { + let utilities = new Utilities() + utilities.functional('bg', () => []) + + expect(run('bg-red-500/(value)', { utilities })).toMatchInlineSnapshot(`[]`) +}) + it('should parse a utility with an implicit variable as the modifier that is important', () => { let utilities = new Utilities() utilities.functional('bg', () => []) diff --git a/packages/tailwindcss/src/candidate.ts b/packages/tailwindcss/src/candidate.ts index abb230da005d..8238dfc2f0e9 100644 --- a/packages/tailwindcss/src/candidate.ts +++ b/packages/tailwindcss/src/candidate.ts @@ -517,6 +517,9 @@ function parseModifier(modifier: string): CandidateModifier | null { // ^^ if (arbitraryValue.length === 0 || arbitraryValue.trim().length === 0) return null + // Arbitrary values must start with `--` since it represents a CSS variable. + if (arbitraryValue[0] !== '-' && arbitraryValue[1] !== '-') return null + return { kind: 'arbitrary', value: `var(${arbitraryValue})`, @@ -651,6 +654,9 @@ export function parseVariant(variant: string, designSystem: DesignSystem): Varia // ^^ if (arbitraryValue.length === 0 || arbitraryValue.trim().length === 0) return null + // Arbitrary values must start with `--` since it represents a CSS variable. + if (arbitraryValue[0] !== '-' && arbitraryValue[1] !== '-') return null + return { kind: 'functional', root, From 14fea72016dac3feb6235c50fe232e99c976e8e5 Mon Sep 17 00:00:00 2001 From: "depfu[bot]" <23717796+depfu[bot]@users.noreply.github.com> Date: Mon, 27 Jan 2025 13:28:43 +0100 Subject: [PATCH 04/29] =?UTF-8?q?Update=20@types/react=2019.0.2=20?= =?UTF-8?q?=E2=86=92=2019.0.7=20(patch)=20(#15682)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- playgrounds/nextjs/package.json | 2 +- playgrounds/v3/package.json | 2 +- playgrounds/vite/package.json | 2 +- pnpm-lock.yaml | 28 ++++++++++++++-------------- 4 files changed, 17 insertions(+), 17 deletions(-) diff --git a/playgrounds/nextjs/package.json b/playgrounds/nextjs/package.json index 21748143e110..5128394c6cd0 100644 --- a/playgrounds/nextjs/package.json +++ b/playgrounds/nextjs/package.json @@ -18,7 +18,7 @@ }, "devDependencies": { "@types/node": "catalog:", - "@types/react": "^19.0.2", + "@types/react": "^19.0.7", "@types/react-dom": "^19.0.2", "eslint": "^9.17.0", "eslint-config-next": "^15.1.3", diff --git a/playgrounds/v3/package.json b/playgrounds/v3/package.json index e3117cd0c974..66b8b43b3c3e 100644 --- a/playgrounds/v3/package.json +++ b/playgrounds/v3/package.json @@ -16,7 +16,7 @@ }, "devDependencies": { "@types/node": "^20.14.8", - "@types/react": "^19.0.2", + "@types/react": "^19.0.7", "@types/react-dom": "^19.0.2", "autoprefixer": "^10.4.20", "eslint": "^9.17.0", diff --git a/playgrounds/vite/package.json b/playgrounds/vite/package.json index 4144e52a2293..f21424ef8a4d 100644 --- a/playgrounds/vite/package.json +++ b/playgrounds/vite/package.json @@ -16,7 +16,7 @@ "tailwindcss": "workspace:^" }, "devDependencies": { - "@types/react": "^19.0.2", + "@types/react": "^19.0.7", "@types/react-dom": "^19.0.2", "bun": "^1.1.29", "vite": "catalog:" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e5f8d934cd99..b2169e4e68a2 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -421,11 +421,11 @@ importers: specifier: 'catalog:' version: 20.14.13 '@types/react': - specifier: ^19.0.2 - version: 19.0.2 + specifier: ^19.0.7 + version: 19.0.7 '@types/react-dom': specifier: ^19.0.2 - version: 19.0.2(@types/react@19.0.2) + version: 19.0.2(@types/react@19.0.7) eslint: specifier: ^9.17.0 version: 9.17.0(jiti@2.4.2) @@ -455,11 +455,11 @@ importers: specifier: ^20.14.8 version: 20.14.13 '@types/react': - specifier: ^19.0.2 - version: 19.0.2 + specifier: ^19.0.7 + version: 19.0.7 '@types/react-dom': specifier: ^19.0.2 - version: 19.0.2(@types/react@19.0.2) + version: 19.0.2(@types/react@19.0.7) autoprefixer: specifier: ^10.4.20 version: 10.4.20(postcss@8.4.47) @@ -492,11 +492,11 @@ importers: version: link:../../packages/tailwindcss devDependencies: '@types/react': - specifier: ^19.0.2 - version: 19.0.2 + specifier: ^19.0.7 + version: 19.0.7 '@types/react-dom': specifier: ^19.0.2 - version: 19.0.2(@types/react@19.0.2) + version: 19.0.2(@types/react@19.0.7) bun: specifier: ^1.1.29 version: 1.1.29 @@ -1862,8 +1862,8 @@ packages: peerDependencies: '@types/react': ^19.0.0 - '@types/react@19.0.2': - resolution: {integrity: sha512-USU8ZI/xyKJwFTpjSVIrSeHBVAGagkHQKPNbxeWwql/vDmnTIBgx+TJnhFnj1NXgz8XfprU0egV2dROLGpsBEg==} + '@types/react@19.0.7': + resolution: {integrity: sha512-MoFsEJKkAtZCrC1r6CM8U22GzhG7u2Wir8ons/aCKH6MBdD1ibV24zOSSkdZVUKqN5i396zG5VKLYZ3yaUZdLA==} '@types/ws@8.5.12': resolution: {integrity: sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ==} @@ -4971,11 +4971,11 @@ snapshots: dependencies: postcss: 8.4.41 - '@types/react-dom@19.0.2(@types/react@19.0.2)': + '@types/react-dom@19.0.2(@types/react@19.0.7)': dependencies: - '@types/react': 19.0.2 + '@types/react': 19.0.7 - '@types/react@19.0.2': + '@types/react@19.0.7': dependencies: csstype: 3.1.3 From a707fed089c40dad629d322688f58f332ab41a47 Mon Sep 17 00:00:00 2001 From: "depfu[bot]" <23717796+depfu[bot]@users.noreply.github.com> Date: Mon, 27 Jan 2025 13:30:56 +0100 Subject: [PATCH 05/29] =?UTF-8?q?Update=20eslint=209.17.0=20=E2=86=92=209.?= =?UTF-8?q?18.0=20(minor)=20(#15664)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- playgrounds/nextjs/package.json | 2 +- playgrounds/v3/package.json | 2 +- pnpm-lock.yaml | 195 ++++++++++++++++---------------- 3 files changed, 101 insertions(+), 98 deletions(-) diff --git a/playgrounds/nextjs/package.json b/playgrounds/nextjs/package.json index 5128394c6cd0..b6f17878d8cd 100644 --- a/playgrounds/nextjs/package.json +++ b/playgrounds/nextjs/package.json @@ -20,7 +20,7 @@ "@types/node": "catalog:", "@types/react": "^19.0.7", "@types/react-dom": "^19.0.2", - "eslint": "^9.17.0", + "eslint": "^9.18.0", "eslint-config-next": "^15.1.3", "typescript": "^5.5.4" } diff --git a/playgrounds/v3/package.json b/playgrounds/v3/package.json index 66b8b43b3c3e..d79780ecfd5b 100644 --- a/playgrounds/v3/package.json +++ b/playgrounds/v3/package.json @@ -19,7 +19,7 @@ "@types/react": "^19.0.7", "@types/react-dom": "^19.0.2", "autoprefixer": "^10.4.20", - "eslint": "^9.17.0", + "eslint": "^9.18.0", "eslint-config-next": "^15.1.3", "typescript": "^5.5.4" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b2169e4e68a2..4c6ebc066794 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -427,11 +427,11 @@ importers: specifier: ^19.0.2 version: 19.0.2(@types/react@19.0.7) eslint: - specifier: ^9.17.0 - version: 9.17.0(jiti@2.4.2) + specifier: ^9.18.0 + version: 9.18.0(jiti@2.4.2) eslint-config-next: specifier: ^15.1.3 - version: 15.1.3(eslint@9.17.0(jiti@2.4.2))(typescript@5.5.4) + version: 15.1.3(eslint@9.18.0(jiti@2.4.2))(typescript@5.5.4) typescript: specifier: ^5.5.4 version: 5.5.4 @@ -464,11 +464,11 @@ importers: specifier: ^10.4.20 version: 10.4.20(postcss@8.4.47) eslint: - specifier: ^9.17.0 - version: 9.17.0(jiti@2.4.2) + specifier: ^9.18.0 + version: 9.18.0(jiti@2.4.2) eslint-config-next: specifier: ^15.1.3 - version: 15.1.3(eslint@9.17.0(jiti@2.4.2))(typescript@5.6.3) + version: 15.1.3(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3) typescript: specifier: ^5.5.4 version: 5.6.3 @@ -1180,24 +1180,24 @@ packages: resolution: {integrity: sha512-zdHg2FPIFNKPdcHWtiNT+jEFCHYVplAXRDlQDyqy0zGx/q2parwh7brGJSiTxRk/TSMkbM//zt/f5CHgyTyaSQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/core@0.9.0': - resolution: {integrity: sha512-7ATR9F0e4W85D/0w7cU0SNj7qkAexMG+bAHEZOjo9akvGuhHE2m7umzWzfnpa0XAg5Kxc1BWmtPMV67jJ+9VUg==} + '@eslint/core@0.10.0': + resolution: {integrity: sha512-gFHJ+xBOo4G3WRlR1e/3G8A6/KZAH6zcE/hkLRCZTi/B9avAG365QhFA8uOGzTMqgTghpn7/fSnscW++dpMSAw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/eslintrc@3.2.0': resolution: {integrity: sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@9.17.0': - resolution: {integrity: sha512-Sxc4hqcs1kTu0iID3kcZDW3JHq2a77HO9P8CP6YEA/FpH3Ll8UXE2r/86Rz9YJLKme39S9vU5OWNjC6Xl0Cr3w==} + '@eslint/js@9.18.0': + resolution: {integrity: sha512-fK6L7rxcq6/z+AaQMtiFTkvbHkBLNlwyRxHpKawP0x3u9+NC6MQTnFW+AdpwC6gfHTW0051cokQgtTN2FqlxQA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/object-schema@2.1.4': resolution: {integrity: sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/plugin-kit@0.2.3': - resolution: {integrity: sha512-2b/g5hRmpbb1o4GnTZax9N9m0FXzz9OV42ZzI4rDDMDuHUqigAiQCEWChBWCY4ztAGVRjoWT19v0yMmc5/L5kA==} + '@eslint/plugin-kit@0.2.5': + resolution: {integrity: sha512-lB05FkqEdUg2AA0xEbUz0SnkXT1LcCTa438W4IWTUh4hdOnVbQyOJ81OrDXsJk/LSiJHubgGEFoR5EHq1NsH1A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@humanfs/core@0.19.1': @@ -2458,8 +2458,8 @@ packages: resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint@9.17.0: - resolution: {integrity: sha512-evtlNcpJg+cZLcnVKwsai8fExnqjGPicK7gnUtlNuzu+Fv9bI0aLpND5T44VLQtoMEnI57LoXO9XAkIXwohKrA==} + eslint@9.18.0: + resolution: {integrity: sha512-+waTfRWQlSbpt3KWE+CjrPPYnbq9kfZIYUqapc0uBXyjTp8aYXZDsUH16m39Ryq3NjAVP4tjuF7KaukeqoCoaA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true peerDependencies: @@ -4466,9 +4466,9 @@ snapshots: '@esbuild/win32-x64@0.24.0': optional: true - '@eslint-community/eslint-utils@4.4.0(eslint@9.17.0(jiti@2.4.2))': + '@eslint-community/eslint-utils@4.4.0(eslint@9.18.0(jiti@2.4.2))': dependencies: - eslint: 9.17.0(jiti@2.4.2) + eslint: 9.18.0(jiti@2.4.2) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.1': {} @@ -4481,7 +4481,9 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/core@0.9.0': {} + '@eslint/core@0.10.0': + dependencies: + '@types/json-schema': 7.0.15 '@eslint/eslintrc@3.2.0': dependencies: @@ -4497,12 +4499,13 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@9.17.0': {} + '@eslint/js@9.18.0': {} '@eslint/object-schema@2.1.4': {} - '@eslint/plugin-kit@0.2.3': + '@eslint/plugin-kit@0.2.5': dependencies: + '@eslint/core': 0.10.0 levn: 0.4.1 '@humanfs/core@0.19.1': {} @@ -4983,15 +4986,15 @@ snapshots: dependencies: '@types/node': 20.14.13 - '@typescript-eslint/eslint-plugin@8.11.0(@typescript-eslint/parser@8.11.0(eslint@9.17.0(jiti@2.4.2))(typescript@5.5.4))(eslint@9.17.0(jiti@2.4.2))(typescript@5.5.4)': + '@typescript-eslint/eslint-plugin@8.11.0(@typescript-eslint/parser@8.11.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.5.4))(eslint@9.18.0(jiti@2.4.2))(typescript@5.5.4)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.11.0(eslint@9.17.0(jiti@2.4.2))(typescript@5.5.4) + '@typescript-eslint/parser': 8.11.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.5.4) '@typescript-eslint/scope-manager': 8.11.0 - '@typescript-eslint/type-utils': 8.11.0(eslint@9.17.0(jiti@2.4.2))(typescript@5.5.4) - '@typescript-eslint/utils': 8.11.0(eslint@9.17.0(jiti@2.4.2))(typescript@5.5.4) + '@typescript-eslint/type-utils': 8.11.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.5.4) + '@typescript-eslint/utils': 8.11.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.5.4) '@typescript-eslint/visitor-keys': 8.11.0 - eslint: 9.17.0(jiti@2.4.2) + eslint: 9.18.0(jiti@2.4.2) graphemer: 1.4.0 ignore: 5.3.2 natural-compare: 1.4.0 @@ -5001,15 +5004,15 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/eslint-plugin@8.11.0(@typescript-eslint/parser@8.11.0(eslint@9.17.0(jiti@2.4.2))(typescript@5.6.3))(eslint@9.17.0(jiti@2.4.2))(typescript@5.6.3)': + '@typescript-eslint/eslint-plugin@8.11.0(@typescript-eslint/parser@8.11.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3))(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.11.0(eslint@9.17.0(jiti@2.4.2))(typescript@5.6.3) + '@typescript-eslint/parser': 8.11.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3) '@typescript-eslint/scope-manager': 8.11.0 - '@typescript-eslint/type-utils': 8.11.0(eslint@9.17.0(jiti@2.4.2))(typescript@5.6.3) - '@typescript-eslint/utils': 8.11.0(eslint@9.17.0(jiti@2.4.2))(typescript@5.6.3) + '@typescript-eslint/type-utils': 8.11.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3) + '@typescript-eslint/utils': 8.11.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3) '@typescript-eslint/visitor-keys': 8.11.0 - eslint: 9.17.0(jiti@2.4.2) + eslint: 9.18.0(jiti@2.4.2) graphemer: 1.4.0 ignore: 5.3.2 natural-compare: 1.4.0 @@ -5019,27 +5022,27 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.11.0(eslint@9.17.0(jiti@2.4.2))(typescript@5.5.4)': + '@typescript-eslint/parser@8.11.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.5.4)': dependencies: '@typescript-eslint/scope-manager': 8.11.0 '@typescript-eslint/types': 8.11.0 '@typescript-eslint/typescript-estree': 8.11.0(typescript@5.5.4) '@typescript-eslint/visitor-keys': 8.11.0 debug: 4.3.7 - eslint: 9.17.0(jiti@2.4.2) + eslint: 9.18.0(jiti@2.4.2) optionalDependencies: typescript: 5.5.4 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.11.0(eslint@9.17.0(jiti@2.4.2))(typescript@5.6.3)': + '@typescript-eslint/parser@8.11.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3)': dependencies: '@typescript-eslint/scope-manager': 8.11.0 '@typescript-eslint/types': 8.11.0 '@typescript-eslint/typescript-estree': 8.11.0(typescript@5.6.3) '@typescript-eslint/visitor-keys': 8.11.0 debug: 4.3.7 - eslint: 9.17.0(jiti@2.4.2) + eslint: 9.18.0(jiti@2.4.2) optionalDependencies: typescript: 5.6.3 transitivePeerDependencies: @@ -5050,10 +5053,10 @@ snapshots: '@typescript-eslint/types': 8.11.0 '@typescript-eslint/visitor-keys': 8.11.0 - '@typescript-eslint/type-utils@8.11.0(eslint@9.17.0(jiti@2.4.2))(typescript@5.5.4)': + '@typescript-eslint/type-utils@8.11.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.5.4)': dependencies: '@typescript-eslint/typescript-estree': 8.11.0(typescript@5.5.4) - '@typescript-eslint/utils': 8.11.0(eslint@9.17.0(jiti@2.4.2))(typescript@5.5.4) + '@typescript-eslint/utils': 8.11.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.5.4) debug: 4.3.7 ts-api-utils: 1.3.0(typescript@5.5.4) optionalDependencies: @@ -5062,10 +5065,10 @@ snapshots: - eslint - supports-color - '@typescript-eslint/type-utils@8.11.0(eslint@9.17.0(jiti@2.4.2))(typescript@5.6.3)': + '@typescript-eslint/type-utils@8.11.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3)': dependencies: '@typescript-eslint/typescript-estree': 8.11.0(typescript@5.6.3) - '@typescript-eslint/utils': 8.11.0(eslint@9.17.0(jiti@2.4.2))(typescript@5.6.3) + '@typescript-eslint/utils': 8.11.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3) debug: 4.3.7 ts-api-utils: 1.3.0(typescript@5.6.3) optionalDependencies: @@ -5106,24 +5109,24 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.11.0(eslint@9.17.0(jiti@2.4.2))(typescript@5.5.4)': + '@typescript-eslint/utils@8.11.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.5.4)': dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.17.0(jiti@2.4.2)) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.18.0(jiti@2.4.2)) '@typescript-eslint/scope-manager': 8.11.0 '@typescript-eslint/types': 8.11.0 '@typescript-eslint/typescript-estree': 8.11.0(typescript@5.5.4) - eslint: 9.17.0(jiti@2.4.2) + eslint: 9.18.0(jiti@2.4.2) transitivePeerDependencies: - supports-color - typescript - '@typescript-eslint/utils@8.11.0(eslint@9.17.0(jiti@2.4.2))(typescript@5.6.3)': + '@typescript-eslint/utils@8.11.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3)': dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.17.0(jiti@2.4.2)) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.18.0(jiti@2.4.2)) '@typescript-eslint/scope-manager': 8.11.0 '@typescript-eslint/types': 8.11.0 '@typescript-eslint/typescript-estree': 8.11.0(typescript@5.6.3) - eslint: 9.17.0(jiti@2.4.2) + eslint: 9.18.0(jiti@2.4.2) transitivePeerDependencies: - supports-color - typescript @@ -5758,19 +5761,19 @@ snapshots: escape-string-regexp@4.0.0: {} - eslint-config-next@15.1.3(eslint@9.17.0(jiti@2.4.2))(typescript@5.5.4): + eslint-config-next@15.1.3(eslint@9.18.0(jiti@2.4.2))(typescript@5.5.4): dependencies: '@next/eslint-plugin-next': 15.1.3 '@rushstack/eslint-patch': 1.10.4 - '@typescript-eslint/eslint-plugin': 8.11.0(@typescript-eslint/parser@8.11.0(eslint@9.17.0(jiti@2.4.2))(typescript@5.5.4))(eslint@9.17.0(jiti@2.4.2))(typescript@5.5.4) - '@typescript-eslint/parser': 8.11.0(eslint@9.17.0(jiti@2.4.2))(typescript@5.5.4) - eslint: 9.17.0(jiti@2.4.2) + '@typescript-eslint/eslint-plugin': 8.11.0(@typescript-eslint/parser@8.11.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.5.4))(eslint@9.18.0(jiti@2.4.2))(typescript@5.5.4) + '@typescript-eslint/parser': 8.11.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.5.4) + eslint: 9.18.0(jiti@2.4.2) eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.11.0(eslint@9.17.0(jiti@2.4.2))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@9.17.0(jiti@2.4.2)) - eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.11.0(eslint@9.17.0(jiti@2.4.2))(typescript@5.5.4))(eslint@9.17.0(jiti@2.4.2)) - eslint-plugin-jsx-a11y: 6.10.1(eslint@9.17.0(jiti@2.4.2)) - eslint-plugin-react: 7.37.2(eslint@9.17.0(jiti@2.4.2)) - eslint-plugin-react-hooks: 5.0.0(eslint@9.17.0(jiti@2.4.2)) + eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.11.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@9.18.0(jiti@2.4.2)) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.11.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.5.4))(eslint@9.18.0(jiti@2.4.2)) + eslint-plugin-jsx-a11y: 6.10.1(eslint@9.18.0(jiti@2.4.2)) + eslint-plugin-react: 7.37.2(eslint@9.18.0(jiti@2.4.2)) + eslint-plugin-react-hooks: 5.0.0(eslint@9.18.0(jiti@2.4.2)) optionalDependencies: typescript: 5.5.4 transitivePeerDependencies: @@ -5778,19 +5781,19 @@ snapshots: - eslint-plugin-import-x - supports-color - eslint-config-next@15.1.3(eslint@9.17.0(jiti@2.4.2))(typescript@5.6.3): + eslint-config-next@15.1.3(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3): dependencies: '@next/eslint-plugin-next': 15.1.3 '@rushstack/eslint-patch': 1.10.4 - '@typescript-eslint/eslint-plugin': 8.11.0(@typescript-eslint/parser@8.11.0(eslint@9.17.0(jiti@2.4.2))(typescript@5.6.3))(eslint@9.17.0(jiti@2.4.2))(typescript@5.6.3) - '@typescript-eslint/parser': 8.11.0(eslint@9.17.0(jiti@2.4.2))(typescript@5.6.3) - eslint: 9.17.0(jiti@2.4.2) + '@typescript-eslint/eslint-plugin': 8.11.0(@typescript-eslint/parser@8.11.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3))(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3) + '@typescript-eslint/parser': 8.11.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3) + eslint: 9.18.0(jiti@2.4.2) eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.11.0(eslint@9.17.0(jiti@2.4.2))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@9.17.0(jiti@2.4.2)) - eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.11.0(eslint@9.17.0(jiti@2.4.2))(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.17.0(jiti@2.4.2)) - eslint-plugin-jsx-a11y: 6.10.1(eslint@9.17.0(jiti@2.4.2)) - eslint-plugin-react: 7.37.2(eslint@9.17.0(jiti@2.4.2)) - eslint-plugin-react-hooks: 5.0.0(eslint@9.17.0(jiti@2.4.2)) + eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.11.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@9.18.0(jiti@2.4.2)) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.11.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.18.0(jiti@2.4.2)) + eslint-plugin-jsx-a11y: 6.10.1(eslint@9.18.0(jiti@2.4.2)) + eslint-plugin-react: 7.37.2(eslint@9.18.0(jiti@2.4.2)) + eslint-plugin-react-hooks: 5.0.0(eslint@9.18.0(jiti@2.4.2)) optionalDependencies: typescript: 5.6.3 transitivePeerDependencies: @@ -5806,67 +5809,67 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.11.0(eslint@9.17.0(jiti@2.4.2))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@9.17.0(jiti@2.4.2)): + eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.11.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@9.18.0(jiti@2.4.2)): dependencies: '@nolyfill/is-core-module': 1.0.39 debug: 4.3.7 enhanced-resolve: 5.18.0 - eslint: 9.17.0(jiti@2.4.2) - eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.11.0(eslint@9.17.0(jiti@2.4.2))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@9.17.0(jiti@2.4.2)) + eslint: 9.18.0(jiti@2.4.2) + eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.11.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@9.18.0(jiti@2.4.2)) fast-glob: 3.3.3 get-tsconfig: 4.8.1 is-bun-module: 1.2.1 is-glob: 4.0.3 optionalDependencies: - eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.11.0(eslint@9.17.0(jiti@2.4.2))(typescript@5.5.4))(eslint@9.17.0(jiti@2.4.2)) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.11.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.5.4))(eslint@9.18.0(jiti@2.4.2)) transitivePeerDependencies: - '@typescript-eslint/parser' - eslint-import-resolver-node - eslint-import-resolver-webpack - supports-color - eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.11.0(eslint@9.17.0(jiti@2.4.2))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@9.17.0(jiti@2.4.2)): + eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.11.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@9.18.0(jiti@2.4.2)): dependencies: '@nolyfill/is-core-module': 1.0.39 debug: 4.3.7 enhanced-resolve: 5.18.0 - eslint: 9.17.0(jiti@2.4.2) - eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.11.0(eslint@9.17.0(jiti@2.4.2))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@9.17.0(jiti@2.4.2)) + eslint: 9.18.0(jiti@2.4.2) + eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.11.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@9.18.0(jiti@2.4.2)) fast-glob: 3.3.3 get-tsconfig: 4.8.1 is-bun-module: 1.2.1 is-glob: 4.0.3 optionalDependencies: - eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.11.0(eslint@9.17.0(jiti@2.4.2))(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.17.0(jiti@2.4.2)) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.11.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.18.0(jiti@2.4.2)) transitivePeerDependencies: - '@typescript-eslint/parser' - eslint-import-resolver-node - eslint-import-resolver-webpack - supports-color - eslint-module-utils@2.12.0(@typescript-eslint/parser@8.11.0(eslint@9.17.0(jiti@2.4.2))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@9.17.0(jiti@2.4.2)): + eslint-module-utils@2.12.0(@typescript-eslint/parser@8.11.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@9.18.0(jiti@2.4.2)): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.11.0(eslint@9.17.0(jiti@2.4.2))(typescript@5.5.4) - eslint: 9.17.0(jiti@2.4.2) + '@typescript-eslint/parser': 8.11.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.5.4) + eslint: 9.18.0(jiti@2.4.2) eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.11.0(eslint@9.17.0(jiti@2.4.2))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@9.17.0(jiti@2.4.2)) + eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.11.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@9.18.0(jiti@2.4.2)) transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.0(@typescript-eslint/parser@8.11.0(eslint@9.17.0(jiti@2.4.2))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@9.17.0(jiti@2.4.2)): + eslint-module-utils@2.12.0(@typescript-eslint/parser@8.11.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@9.18.0(jiti@2.4.2)): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.11.0(eslint@9.17.0(jiti@2.4.2))(typescript@5.6.3) - eslint: 9.17.0(jiti@2.4.2) + '@typescript-eslint/parser': 8.11.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3) + eslint: 9.18.0(jiti@2.4.2) eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.11.0(eslint@9.17.0(jiti@2.4.2))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@9.17.0(jiti@2.4.2)) + eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.11.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@9.18.0(jiti@2.4.2)) transitivePeerDependencies: - supports-color - eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.11.0(eslint@9.17.0(jiti@2.4.2))(typescript@5.5.4))(eslint@9.17.0(jiti@2.4.2)): + eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.11.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.5.4))(eslint@9.18.0(jiti@2.4.2)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.8 @@ -5875,9 +5878,9 @@ snapshots: array.prototype.flatmap: 1.3.2 debug: 3.2.7 doctrine: 2.1.0 - eslint: 9.17.0(jiti@2.4.2) + eslint: 9.18.0(jiti@2.4.2) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.11.0(eslint@9.17.0(jiti@2.4.2))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@9.17.0(jiti@2.4.2)) + eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.11.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@9.18.0(jiti@2.4.2)) hasown: 2.0.2 is-core-module: 2.15.1 is-glob: 4.0.3 @@ -5889,13 +5892,13 @@ snapshots: string.prototype.trimend: 1.0.8 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.11.0(eslint@9.17.0(jiti@2.4.2))(typescript@5.5.4) + '@typescript-eslint/parser': 8.11.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.5.4) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.11.0(eslint@9.17.0(jiti@2.4.2))(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.17.0(jiti@2.4.2)): + eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.11.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.18.0(jiti@2.4.2)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.8 @@ -5904,9 +5907,9 @@ snapshots: array.prototype.flatmap: 1.3.2 debug: 3.2.7 doctrine: 2.1.0 - eslint: 9.17.0(jiti@2.4.2) + eslint: 9.18.0(jiti@2.4.2) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.11.0(eslint@9.17.0(jiti@2.4.2))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@9.17.0(jiti@2.4.2)) + eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.11.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@9.18.0(jiti@2.4.2)) hasown: 2.0.2 is-core-module: 2.15.1 is-glob: 4.0.3 @@ -5918,13 +5921,13 @@ snapshots: string.prototype.trimend: 1.0.8 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.11.0(eslint@9.17.0(jiti@2.4.2))(typescript@5.6.3) + '@typescript-eslint/parser': 8.11.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - eslint-plugin-jsx-a11y@6.10.1(eslint@9.17.0(jiti@2.4.2)): + eslint-plugin-jsx-a11y@6.10.1(eslint@9.18.0(jiti@2.4.2)): dependencies: aria-query: 5.3.2 array-includes: 3.1.8 @@ -5935,7 +5938,7 @@ snapshots: damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 es-iterator-helpers: 1.1.0 - eslint: 9.17.0(jiti@2.4.2) + eslint: 9.18.0(jiti@2.4.2) hasown: 2.0.2 jsx-ast-utils: 3.3.5 language-tags: 1.0.9 @@ -5944,11 +5947,11 @@ snapshots: safe-regex-test: 1.0.3 string.prototype.includes: 2.0.1 - eslint-plugin-react-hooks@5.0.0(eslint@9.17.0(jiti@2.4.2)): + eslint-plugin-react-hooks@5.0.0(eslint@9.18.0(jiti@2.4.2)): dependencies: - eslint: 9.17.0(jiti@2.4.2) + eslint: 9.18.0(jiti@2.4.2) - eslint-plugin-react@7.37.2(eslint@9.17.0(jiti@2.4.2)): + eslint-plugin-react@7.37.2(eslint@9.18.0(jiti@2.4.2)): dependencies: array-includes: 3.1.8 array.prototype.findlast: 1.2.5 @@ -5956,7 +5959,7 @@ snapshots: array.prototype.tosorted: 1.1.4 doctrine: 2.1.0 es-iterator-helpers: 1.1.0 - eslint: 9.17.0(jiti@2.4.2) + eslint: 9.18.0(jiti@2.4.2) estraverse: 5.3.0 hasown: 2.0.2 jsx-ast-utils: 3.3.5 @@ -5979,15 +5982,15 @@ snapshots: eslint-visitor-keys@4.2.0: {} - eslint@9.17.0(jiti@2.4.2): + eslint@9.18.0(jiti@2.4.2): dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.17.0(jiti@2.4.2)) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.18.0(jiti@2.4.2)) '@eslint-community/regexpp': 4.12.1 '@eslint/config-array': 0.19.0 - '@eslint/core': 0.9.0 + '@eslint/core': 0.10.0 '@eslint/eslintrc': 3.2.0 - '@eslint/js': 9.17.0 - '@eslint/plugin-kit': 0.2.3 + '@eslint/js': 9.18.0 + '@eslint/plugin-kit': 0.2.5 '@humanfs/node': 0.16.6 '@humanwhocodes/module-importer': 1.0.1 '@humanwhocodes/retry': 0.4.1 From 6dd4c334c2062714869ecdd3f2604a5070aa5b8a Mon Sep 17 00:00:00 2001 From: Luke Warlow Date: Mon, 27 Jan 2025 12:43:12 +0000 Subject: [PATCH 06/29] Include `:open` in the open variant (#15349) Update the `open` variant to addtionally match the new `:open` pseudo class. See spec at https://drafts.csswg.org/selectors-4/#open-state See Chromium intent to ship: https://groups.google.com/a/chromium.org/g/blink-dev/c/Pdo4oOXYKcA `:open` matches open `
` and `` elements (already covered by [open]), but also matches select elements with their picker open and inputs with their picker open. Thanks to `:is()` taking a forgiving selector list, this is safe to add even with limited browser support. Co-authored-by: Robin Malfait --- CHANGELOG.md | 4 ++++ packages/tailwindcss/src/variants.test.ts | 6 +++--- packages/tailwindcss/src/variants.ts | 2 +- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7c86bbd08a00..e19f9243476d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Added + +- Target `:open` in existing `open` variant ([#15349](https://github.com/tailwindlabs/tailwindcss/pull/15349)) + ### Fixed - Remove invalid `min-w/h-none` utilities ([#15845](https://github.com/tailwindlabs/tailwindcss/pull/15845)) diff --git a/packages/tailwindcss/src/variants.test.ts b/packages/tailwindcss/src/variants.test.ts index e70970a92bed..cc600b9cedaf 100644 --- a/packages/tailwindcss/src/variants.test.ts +++ b/packages/tailwindcss/src/variants.test.ts @@ -233,7 +233,7 @@ test('target', async () => { test('open', async () => { expect(await run(['open:flex', 'group-open:flex', 'peer-open:flex'])).toMatchInlineSnapshot(` - ".group-open\\:flex:is(:where(.group):is([open], :popover-open) *), .peer-open\\:flex:is(:where(.peer):is([open], :popover-open) ~ *), .open\\:flex:is([open], :popover-open) { + ".group-open\\:flex:is(:where(.group):is([open], :popover-open, :open) *), .peer-open\\:flex:is(:where(.peer):is([open], :popover-open, :open) ~ *), .open\\:flex:is([open], :popover-open, :open) { display: flex; }" `) @@ -1473,7 +1473,7 @@ test('not', async () => { display: flex; } - .not-open\\:flex:not([open], :popover-open) { + .not-open\\:flex:not([open], :popover-open, :open) { display: flex; } @@ -2214,7 +2214,7 @@ test('variant order', async () => { display: flex; } - .first\\:flex:first-child, .last\\:flex:last-child, .only\\:flex:only-child, .odd\\:flex:nth-child(odd), .even\\:flex:nth-child(2n), .first-of-type\\:flex:first-of-type, .last-of-type\\:flex:last-of-type, .only-of-type\\:flex:only-of-type, .visited\\:flex:visited, .target\\:flex:target, .open\\:flex:is([open], :popover-open), .default\\:flex:default, .checked\\:flex:checked, .indeterminate\\:flex:indeterminate, .placeholder-shown\\:flex:placeholder-shown, .autofill\\:flex:autofill, .optional\\:flex:optional, .required\\:flex:required, .valid\\:flex:valid, .invalid\\:flex:invalid, .in-range\\:flex:in-range, .out-of-range\\:flex:out-of-range, .read-only\\:flex:read-only, .empty\\:flex:empty, .focus-within\\:flex:focus-within { + .first\\:flex:first-child, .last\\:flex:last-child, .only\\:flex:only-child, .odd\\:flex:nth-child(odd), .even\\:flex:nth-child(2n), .first-of-type\\:flex:first-of-type, .last-of-type\\:flex:last-of-type, .only-of-type\\:flex:only-of-type, .visited\\:flex:visited, .target\\:flex:target, .open\\:flex:is([open], :popover-open, :open), .default\\:flex:default, .checked\\:flex:checked, .indeterminate\\:flex:indeterminate, .placeholder-shown\\:flex:placeholder-shown, .autofill\\:flex:autofill, .optional\\:flex:optional, .required\\:flex:required, .valid\\:flex:valid, .invalid\\:flex:invalid, .in-range\\:flex:in-range, .out-of-range\\:flex:out-of-range, .read-only\\:flex:read-only, .empty\\:flex:empty, .focus-within\\:flex:focus-within { display: flex; } diff --git a/packages/tailwindcss/src/variants.ts b/packages/tailwindcss/src/variants.ts index d7a1ab5b1390..8ccacce3af63 100644 --- a/packages/tailwindcss/src/variants.ts +++ b/packages/tailwindcss/src/variants.ts @@ -681,7 +681,7 @@ export function createVariants(theme: Theme): Variants { // State staticVariant('visited', ['&:visited']) staticVariant('target', ['&:target']) - staticVariant('open', ['&:is([open], :popover-open)']) + staticVariant('open', ['&:is([open], :popover-open, :open)']) // Forms staticVariant('default', ['&:default']) From f1221b3fce5028b232a9b7005350e9a1edfc7304 Mon Sep 17 00:00:00 2001 From: Robin Malfait Date: Mon, 27 Jan 2025 14:10:09 +0100 Subject: [PATCH 07/29] Ensure font-size utilities with `none` modifier works e.g.: `text-sm/none` (#15921) This PR fixes an issue where classes such as `text-sm/none` don't work as expected. The reason for this is that `leading-none` is the only hardcoded leading utility and is not coming from the `@theme`. This means that `text-sm/none` tries to do a lookup for `none` but it won't resolve. This PR fixes that by allowing `none` as a modifier. While working on this, I noticed that `text-sm/none` _did_ generate CSS: ```css .text-sm\/none { font-size: var(--text-sm); } ``` Notice that the `line-height` is missing. This means that any modifier that can't be resolved doesn't get the `line-height` set, but it _will_ generate CSS. In this case, no CSS should have been generated. Otherwise, all of these generate CSS which will only bloat your CSS and won't work as expected. E.g.: `text-sm/foo`, `text-sm/bar`, and `text-sm/baz`: ```css .text-sm\/bar { font-size: var(--text-sm); } .text-sm\/baz { font-size: var(--text-sm); } .text-sm\/foo { font-size: var(--text-sm); } ``` Fixes: #15911 --- CHANGELOG.md | 4 +- packages/tailwindcss/src/utilities.test.ts | 76 +++++++++++++++------- packages/tailwindcss/src/utilities.ts | 16 +++++ 3 files changed, 72 insertions(+), 24 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e19f9243476d..d1fce67b58f2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Remove invalid `min-w/h-none` utilities ([#15845](https://github.com/tailwindlabs/tailwindcss/pull/15845)) - Ensure CSS variable shorthand uses valid CSS variables ([#15738](https://github.com/tailwindlabs/tailwindcss/pull/15738)) +- Ensure font-size utilities with `none` modifier have a line-height set e.g.: `text-sm/none` ([#15921](https://github.com/tailwindlabs/tailwindcss/pull/15921)) +- Ensure font-size utilities with unknown modifier don't generate CSS ([#15921](https://github.com/tailwindlabs/tailwindcss/pull/15921)) ## [4.0.0] - 2025-01-21 @@ -334,7 +336,7 @@ For a deep-dive into everything that's new, [check out the announcement post](ht - Rename `drop-shadow` to `drop-shadow-sm` and `drop-shadow-sm` to `drop-shadow-xs` ([#14849](https://github.com/tailwindlabs/tailwindcss/pull/14849)) - Rename `rounded` to `rounded-sm` and `rounded-sm` to `rounded-xs` ([#14849](https://github.com/tailwindlabs/tailwindcss/pull/14849)) - Rename `blur` to `blur-sm` and `blur-sm` to `blur-xs` ([#14849](https://github.com/tailwindlabs/tailwindcss/pull/14849)) -- Remove fixed line-height theme values and derive `leading-*` utilites from `--spacing-*` scale ([#14857](https://github.com/tailwindlabs/tailwindcss/pull/14857)) +- Remove fixed line-height theme values and derive `leading-*` utilities from `--spacing-*` scale ([#14857](https://github.com/tailwindlabs/tailwindcss/pull/14857)) - Remove `--transition-timing-function-linear` from the default theme in favor of a static `ease-linear` utility ([#14880](https://github.com/tailwindlabs/tailwindcss/pull/14880)) - Remove default `--spacing-*` scale in favor of `--spacing` multiplier ([#14857](https://github.com/tailwindlabs/tailwindcss/pull/14857)) - Remove `var(…)` fallbacks from theme values in utilities ([#14881](https://github.com/tailwindlabs/tailwindcss/pull/14881)) diff --git a/packages/tailwindcss/src/utilities.test.ts b/packages/tailwindcss/src/utilities.test.ts index 9ecf38882316..e235777b2c98 100644 --- a/packages/tailwindcss/src/utilities.test.ts +++ b/packages/tailwindcss/src/utilities.test.ts @@ -14927,6 +14927,7 @@ test('text', async () => { --color-red-500: #ef4444; --text-sm: 0.875rem; --text-sm--line-height: 1.25rem; + --leading-snug: 1.375; } @tailwind utilities; `, @@ -14962,6 +14963,9 @@ test('text', async () => { // font-size / line-height / letter-spacing / font-weight 'text-sm', 'text-sm/6', + 'text-sm/none', + 'text-[10px]/none', + 'text-sm/snug', 'text-sm/[4px]', 'text-[12px]', 'text-[12px]/6', @@ -14986,6 +14990,7 @@ test('text', async () => { --color-red-500: #ef4444; --text-sm: .875rem; --text-sm--line-height: 1.25rem; + --leading-snug: 1.375; } .text-sm { @@ -14993,6 +14998,11 @@ test('text', async () => { line-height: var(--tw-leading, var(--text-sm--line-height)); } + .text-\\[10px\\]\\/none { + font-size: 10px; + line-height: 1; + } + .text-\\[12px\\]\\/6 { font-size: 12px; line-height: calc(var(--spacing) * 6); @@ -15028,6 +15038,16 @@ test('text', async () => { line-height: 4px; } + .text-sm\\/none { + font-size: var(--text-sm); + line-height: 1; + } + + .text-sm\\/snug { + font-size: var(--text-sm); + line-height: var(--leading-snug); + } + .text-\\[12px\\] { font-size: 12px; } @@ -15121,29 +15141,39 @@ test('text', async () => { }" `) expect( - await run([ - 'text', - // color - '-text-red-500', - '-text-red-500/50', - '-text-red-500/[0.5]', - '-text-red-500/[50%]', - '-text-current', - '-text-current/50', - '-text-current/[0.5]', - '-text-current/[50%]', - '-text-inherit', - '-text-transparent', - '-text-[#0088cc]', - '-text-[#0088cc]/50', - '-text-[#0088cc]/[0.5]', - '-text-[#0088cc]/[50%]', - - // font-size / line-height / letter-spacing / font-weight - '-text-sm', - '-text-sm/6', - '-text-sm/[4px]', - ]), + await compileCss( + css` + @theme inline reference { + --text-sm: 0.875rem; + } + @tailwind utilities; + `, + [ + 'text', + // color + '-text-red-500', + '-text-red-500/50', + '-text-red-500/[0.5]', + '-text-red-500/[50%]', + '-text-current', + '-text-current/50', + '-text-current/[0.5]', + '-text-current/[50%]', + '-text-inherit', + '-text-transparent', + '-text-[#0088cc]', + '-text-[#0088cc]/50', + '-text-[#0088cc]/[0.5]', + '-text-[#0088cc]/[50%]', + + // font-size / line-height / letter-spacing / font-weight + '-text-sm', + '-text-sm/6', + 'text-sm/foo', + '-text-sm/[4px]', + 'text-[10px]/foo', + ], + ), ).toEqual('') }) diff --git a/packages/tailwindcss/src/utilities.ts b/packages/tailwindcss/src/utilities.ts index 99c8b4282a40..66caeb4ee006 100644 --- a/packages/tailwindcss/src/utilities.ts +++ b/packages/tailwindcss/src/utilities.ts @@ -4040,9 +4040,16 @@ export function createUtilities(theme: Theme) { modifier = `calc(${multiplier} * ${candidate.modifier.value})` } + // Shorthand for `leading-none` + if (!modifier && candidate.modifier.value === 'none') { + modifier = '1' + } + if (modifier) { return [decl('font-size', value), decl('line-height', modifier)] } + + return null } return [decl('font-size', value)] @@ -4086,6 +4093,15 @@ export function createUtilities(theme: Theme) { modifier = `calc(${multiplier} * ${candidate.modifier.value})` } + // Shorthand for `leading-none` + if (!modifier && candidate.modifier.value === 'none') { + modifier = '1' + } + + if (!modifier) { + return null + } + let declarations = [decl('font-size', fontSize)] modifier && declarations.push(decl('line-height', modifier)) return declarations From 2c1dea4c1aefc8b95bef224135aec47c1bb0c107 Mon Sep 17 00:00:00 2001 From: Philipp Spiess Date: Tue, 28 Jan 2025 12:42:30 +0100 Subject: [PATCH 08/29] Fix handling of absolute config files in upgrade tool (#15927) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Closes #15220 This PR fixes an issue where the upgrade tool would not be able to load some JavaScript config files across different drive letters on Windows. The issue in detail is that `path.relative(…)` tries to build a relative path but if the file is inside the same folder, it won't start the relative path with a `./` so we manually appended it in case that it isn't there. The issue on Windows specifically is that `file.relative(…)` can also return a legit absolute path, e.g. when the file is on a different drive. In this case we obviously don't want to prefix a path with `./`. ## Test plan To reproduce this issue, I checked out a Tailwind v3 project _on a different drive letter than my Windows installation_. In that case, I was adding a repo inside `D:` while `npm` was installed in `C:`. I then run `npx @tailwindcss/upgrade` to reproduce the issue. The fix was validated with a local `bun` run of the upgrade tool: ![telegram-cloud-photo-size-4-5818901845756725194-y](https://github.com/user-attachments/assets/d32b21e3-a08d-4608-b65a-93dddc04f890) --- CHANGELOG.md | 1 + packages/@tailwindcss-upgrade/src/migrate.ts | 2 +- packages/@tailwindcss-upgrade/src/template/prepare-config.ts | 4 ++-- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d1fce67b58f2..e2c5767ce59b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Ensure CSS variable shorthand uses valid CSS variables ([#15738](https://github.com/tailwindlabs/tailwindcss/pull/15738)) - Ensure font-size utilities with `none` modifier have a line-height set e.g.: `text-sm/none` ([#15921](https://github.com/tailwindlabs/tailwindcss/pull/15921)) - Ensure font-size utilities with unknown modifier don't generate CSS ([#15921](https://github.com/tailwindlabs/tailwindcss/pull/15921)) +- _Upgrade_: Ensure JavaScript config files on different drives are correctly migrated ([#15927](https://github.com/tailwindlabs/tailwindcss/pull/15927)) ## [4.0.0] - 2025-01-21 diff --git a/packages/@tailwindcss-upgrade/src/migrate.ts b/packages/@tailwindcss-upgrade/src/migrate.ts index 53b2282561c5..45e75849622d 100644 --- a/packages/@tailwindcss-upgrade/src/migrate.ts +++ b/packages/@tailwindcss-upgrade/src/migrate.ts @@ -435,7 +435,7 @@ export async function linkConfigs( // If the path points to a file in the same directory, `path.relative` will // remove the leading `./` and we need to add it back in order to still // consider the path relative - if (!relative.startsWith('.')) { + if (!relative.startsWith('.') && !path.isAbsolute(relative)) { relative = './' + relative } diff --git a/packages/@tailwindcss-upgrade/src/template/prepare-config.ts b/packages/@tailwindcss-upgrade/src/template/prepare-config.ts index f5a817d40ea3..e936df6a3332 100644 --- a/packages/@tailwindcss-upgrade/src/template/prepare-config.ts +++ b/packages/@tailwindcss-upgrade/src/template/prepare-config.ts @@ -40,7 +40,7 @@ export async function prepareConfig( // If the path points to a file in the same directory, `path.relative` will // remove the leading `./` and we need to add it back in order to still // consider the path relative - if (!relative.startsWith('.')) { + if (!relative.startsWith('.') && !path.isAbsolute(relative)) { relative = './' + relative } @@ -49,7 +49,7 @@ export async function prepareConfig( let newPrefix = userConfig.prefix ? migratePrefix(userConfig.prefix) : null let input = css` @import 'tailwindcss' ${newPrefix ? `prefix(${newPrefix})` : ''}; - @config './${relative}'; + @config '${relative}'; ` let [compiler, designSystem] = await Promise.all([ From 515a9bdc5ff77291d6f41cd1d4c22e9d24ea91bc Mon Sep 17 00:00:00 2001 From: Robin Malfait Date: Tue, 28 Jan 2025 12:51:34 +0100 Subject: [PATCH 09/29] Setup v4 releases (#15961) Now that Tailwind CSS v4 is released, we can setup a proper release workflow again. This setup mimics the workflow of how we did it in v3, but adjusted to make it work on the v4 codebase. Whenever a PR is merged into the `next` branch, we will publish an insiders release to npm using the following version number: `0.0.0-insiders.`. Note: insiders releases will not have a GitHub release associated with them, therefore the `standalone-cli` won't be available as an insiders release. For the normal release procedure, the following steps are required: 1. Manually version the packages (e.g.: `pnpm run version-packages`) 2. Create a git tag for the version you want to release 3. Push the updated package.json files and the git tag to the repository Next, a GitHub action will kick in once a `tag` is being pushed. The GitHub action will run a build, and create a draft release on GitHub that will contain: 1. The CHANGELOG.md contents for the last version 2. The `standalone-cli` artifacts attached to the drafted release Once you are happy with the draft, you can publish the draft on GitHub. This in turn will trigger another GitHub action that will publish the packages to npm. Whenever an insiders release or a normal release completes, we will also trigger Tailwind Play, to update its dependencies to the latest version of Tailwind CSS. --- Note: some of the GitHub Action workflows still refer to the `next` branch instead of the `main` branch. If we later today want to get a new release out, we can merge `next` into `main` and update the workflows accordingly. --- This is hard to test, but I started from the existing release.yml file and adjusted things accordingly. The biggest change is related to the insiders version. If you look at this temporary [commit](https://github.com/tailwindlabs/tailwindcss/pull/15961/commits/572dddfc33ec95f87f7e31f57ef73ae7c7235510), you can see that the publishing (dry-run) seems to work as expected: image --- .github/workflows/prepare-release.yml | 248 +++++++++++++++++++++++- .github/workflows/release-insiders.yml | 249 +++++++++++++++++++++++++ .github/workflows/release.yml | 67 ++----- scripts/release-channel.js | 20 ++ scripts/version-packages.mjs | 29 +++ 5 files changed, 560 insertions(+), 53 deletions(-) create mode 100644 .github/workflows/release-insiders.yml create mode 100644 scripts/release-channel.js diff --git a/.github/workflows/prepare-release.yml b/.github/workflows/prepare-release.yml index 0c4979b2bd55..f1387d570f17 100644 --- a/.github/workflows/prepare-release.yml +++ b/.github/workflows/prepare-release.yml @@ -2,21 +2,257 @@ name: Prepare Release on: workflow_dispatch: + push: + tags: + - 'v*' env: - CI: true + APP_NAME: tailwindcss-oxide + NODE_VERSION: 20 + OXIDE_LOCATION: ./crates/node permissions: contents: read jobs: build: - runs-on: macos-12 - timeout-minutes: 15 - strategy: matrix: - node-version: [16] + include: + # Windows + - os: windows-latest + target: x86_64-pc-windows-msvc + - os: windows-latest + target: aarch64-pc-windows-msvc + # macOS + - os: macos-latest + target: x86_64-apple-darwin + strip: strip -x # Must use -x on macOS. This produces larger results on linux. + - os: macos-latest + target: aarch64-apple-darwin + page-size: 14 + strip: strip -x # Must use -x on macOS. This produces larger results on linux. + # Android + - os: ubuntu-latest + target: aarch64-linux-android + strip: ${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-strip + - os: ubuntu-latest + target: armv7-linux-androideabi + strip: ${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-strip + # Linux + - os: ubuntu-latest + target: x86_64-unknown-linux-gnu + strip: strip + container: + image: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-debian + - os: ubuntu-latest + target: aarch64-unknown-linux-gnu + strip: llvm-strip + container: + image: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-debian-aarch64 + - os: ubuntu-latest + target: armv7-unknown-linux-gnueabihf + strip: llvm-strip + container: + image: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-debian-zig + - os: ubuntu-latest + target: aarch64-unknown-linux-musl + strip: aarch64-linux-musl-strip + download: true + container: + image: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-alpine + - os: ubuntu-latest + target: x86_64-unknown-linux-musl + strip: strip + download: true + container: + image: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-alpine + + name: Build ${{ matrix.target }} (OXIDE) + runs-on: ${{ matrix.os }} + container: ${{ matrix.container }} + timeout-minutes: 15 + steps: + - uses: actions/checkout@v4 + - uses: pnpm/action-setup@v4 + + - name: Use Node.js ${{ env.NODE_VERSION }} + uses: actions/setup-node@v4 + with: + node-version: ${{ env.NODE_VERSION }} + cache: 'pnpm' + + # Cargo already skips downloading dependencies if they already exist + - name: Cache cargo + uses: actions/cache@v4 + with: + path: | + ~/.cargo/bin/ + ~/.cargo/registry/index/ + ~/.cargo/registry/cache/ + ~/.cargo/git/db/ + target/ + key: ${{ runner.os }}-${{ matrix.target }}-cargo-${{ hashFiles('**/Cargo.lock') }} + + # Cache the `oxide` Rust build + - name: Cache oxide build + uses: actions/cache@v4 + with: + path: | + ./oxide/target/ + ./crates/node/*.node + ./crates/node/index.js + ./crates/node/index.d.ts + key: ${{ runner.os }}-${{ matrix.target }}-oxide-${{ hashFiles('./crates/**/*') }} + + - name: Install Node.JS + uses: actions/setup-node@v4 + with: + node-version: ${{ env.NODE_VERSION }} + + - name: Install Rust (Stable) + if: ${{ matrix.download }} + run: | + rustup default stable + + - name: Setup rust target + run: rustup target add ${{ matrix.target }} + + - name: Install dependencies + run: pnpm install --ignore-scripts --filter=!./playgrounds/* + + - name: Build release + run: pnpm run --filter ${{ env.OXIDE_LOCATION }} build + env: + RUST_TARGET: ${{ matrix.target }} + JEMALLOC_SYS_WITH_LG_PAGE: ${{ matrix.page-size }} + + - name: Strip debug symbols # https://github.com/rust-lang/rust/issues/46034 + if: ${{ matrix.strip }} + run: ${{ matrix.strip }} ${{ env.OXIDE_LOCATION }}/*.node + + - name: Upload artifacts + uses: actions/upload-artifact@v4 + with: + name: bindings-${{ matrix.target }} + path: ${{ env.OXIDE_LOCATION }}/*.node + + prepare: + runs-on: macos-14 + timeout-minutes: 15 + name: Build and release Tailwind CSS + + permissions: + contents: write # for softprops/action-gh-release to create GitHub release + # https://docs.npmjs.com/generating-provenance-statements#publishing-packages-with-provenance-via-github-actions + id-token: write + + needs: + - build steps: - - run: echo "stub" + - uses: actions/checkout@v4 + with: + fetch-tags: true + fetch-depth: 20 + + - run: git fetch --tags -f + + - name: Resolve version + id: vars + run: | + echo "TAG_NAME=$(git describe --tags --abbrev=0)" >> $GITHUB_ENV + + - uses: pnpm/action-setup@v4 + + - name: Use Node.js ${{ env.NODE_VERSION }} + uses: actions/setup-node@v4 + with: + node-version: ${{ env.NODE_VERSION }} + cache: 'pnpm' + registry-url: 'https://registry.npmjs.org' + + # Cargo already skips downloading dependencies if they already exist + - name: Cache cargo + uses: actions/cache@v4 + with: + path: | + ~/.cargo/bin/ + ~/.cargo/registry/index/ + ~/.cargo/registry/cache/ + ~/.cargo/git/db/ + target/ + key: ${{ runner.os }}-${{ matrix.target }}-cargo-${{ hashFiles('**/Cargo.lock') }} + + # Cache the `oxide` Rust build + - name: Cache oxide build + uses: actions/cache@v4 + with: + path: | + ./oxide/target/ + ./crates/node/*.node + ./crates/node/index.js + ./crates/node/index.d.ts + key: ${{ runner.os }}-${{ matrix.target }}-oxide-${{ hashFiles('./crates/**/*') }} + + - name: Install dependencies + run: pnpm --filter=!./playgrounds/* install + + - name: Download artifacts + uses: actions/download-artifact@v4 + with: + path: ${{ env.OXIDE_LOCATION }} + + - name: Move artifacts + run: | + cd ${{ env.OXIDE_LOCATION }} + cp bindings-x86_64-pc-windows-msvc/* ./npm/win32-x64-msvc/ + cp bindings-aarch64-pc-windows-msvc/* ./npm/win32-arm64-msvc/ + cp bindings-x86_64-apple-darwin/* ./npm/darwin-x64/ + cp bindings-aarch64-apple-darwin/* ./npm/darwin-arm64/ + cp bindings-aarch64-linux-android/* ./npm/android-arm64/ + cp bindings-armv7-linux-androideabi/* ./npm/android-arm-eabi/ + cp bindings-aarch64-unknown-linux-gnu/* ./npm/linux-arm64-gnu/ + cp bindings-aarch64-unknown-linux-musl/* ./npm/linux-arm64-musl/ + cp bindings-armv7-unknown-linux-gnueabihf/* ./npm/linux-arm-gnueabihf/ + cp bindings-x86_64-unknown-linux-gnu/* ./npm/linux-x64-gnu/ + cp bindings-x86_64-unknown-linux-musl/* ./npm/linux-x64-musl/ + + - name: Build Tailwind CSS + run: pnpm run build + + - name: Run pre-publish optimizations scripts + run: node ./scripts/pre-publish-optimizations.mjs + + - name: Lock pre-release versions + run: node ./scripts/lock-pre-release-versions.mjs + + - name: Get release notes + run: | + RELEASE_NOTES=$(node ./scripts/release-notes.mjs) + echo "RELEASE_NOTES<> $GITHUB_ENV + echo "$RELEASE_NOTES" >> $GITHUB_ENV + echo "EOF" >> $GITHUB_ENV + + - name: Upload Standalone Artifacts + uses: actions/upload-artifact@v4 + with: + name: tailwindcss-standalone + path: packages/@tailwindcss-standalone/dist/ + + - name: Prepare GitHub Release + uses: softprops/action-gh-release@v2 + with: + draft: true + tag_name: ${{ env.TAG_NAME }} + body: | + ${{ env.RELEASE_NOTES }} + files: | + packages/@tailwindcss-standalone/dist/sha256sums.txt + packages/@tailwindcss-standalone/dist/tailwindcss-linux-arm64 + packages/@tailwindcss-standalone/dist/tailwindcss-linux-arm64-musl + packages/@tailwindcss-standalone/dist/tailwindcss-linux-x64 + packages/@tailwindcss-standalone/dist/tailwindcss-linux-x64-musl + packages/@tailwindcss-standalone/dist/tailwindcss-macos-arm64 + packages/@tailwindcss-standalone/dist/tailwindcss-macos-x64 + packages/@tailwindcss-standalone/dist/tailwindcss-windows-x64.exe diff --git a/.github/workflows/release-insiders.yml b/.github/workflows/release-insiders.yml new file mode 100644 index 000000000000..e7f564df2b1a --- /dev/null +++ b/.github/workflows/release-insiders.yml @@ -0,0 +1,249 @@ +name: Release Insiders + +on: + push: + # TODO: Rename to `main`, once merged + branches: [next] + +permissions: + contents: read + +env: + APP_NAME: tailwindcss-oxide + NODE_VERSION: 20 + OXIDE_LOCATION: ./crates/node + RELEASE_CHANNEL: insiders + +jobs: + build: + strategy: + matrix: + include: + # Windows + - os: windows-latest + target: x86_64-pc-windows-msvc + - os: windows-latest + target: aarch64-pc-windows-msvc + # macOS + - os: macos-latest + target: x86_64-apple-darwin + strip: strip -x # Must use -x on macOS. This produces larger results on linux. + - os: macos-latest + target: aarch64-apple-darwin + page-size: 14 + strip: strip -x # Must use -x on macOS. This produces larger results on linux. + # Android + - os: ubuntu-latest + target: aarch64-linux-android + strip: ${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-strip + - os: ubuntu-latest + target: armv7-linux-androideabi + strip: ${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-strip + # Linux + - os: ubuntu-latest + target: x86_64-unknown-linux-gnu + strip: strip + container: + image: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-debian + - os: ubuntu-latest + target: aarch64-unknown-linux-gnu + strip: llvm-strip + container: + image: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-debian-aarch64 + - os: ubuntu-latest + target: armv7-unknown-linux-gnueabihf + strip: llvm-strip + container: + image: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-debian-zig + - os: ubuntu-latest + target: aarch64-unknown-linux-musl + strip: aarch64-linux-musl-strip + download: true + container: + image: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-alpine + - os: ubuntu-latest + target: x86_64-unknown-linux-musl + strip: strip + download: true + container: + image: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-alpine + + name: Build ${{ matrix.target }} (OXIDE) + runs-on: ${{ matrix.os }} + container: ${{ matrix.container }} + timeout-minutes: 15 + steps: + - uses: actions/checkout@v4 + - uses: pnpm/action-setup@v4 + + - name: Use Node.js ${{ env.NODE_VERSION }} + uses: actions/setup-node@v4 + with: + node-version: ${{ env.NODE_VERSION }} + cache: 'pnpm' + + # Cargo already skips downloading dependencies if they already exist + - name: Cache cargo + uses: actions/cache@v4 + with: + path: | + ~/.cargo/bin/ + ~/.cargo/registry/index/ + ~/.cargo/registry/cache/ + ~/.cargo/git/db/ + target/ + key: ${{ runner.os }}-${{ matrix.target }}-cargo-${{ hashFiles('**/Cargo.lock') }} + + # Cache the `oxide` Rust build + - name: Cache oxide build + uses: actions/cache@v4 + with: + path: | + ./oxide/target/ + ./crates/node/*.node + ./crates/node/index.js + ./crates/node/index.d.ts + key: ${{ runner.os }}-${{ matrix.target }}-oxide-${{ hashFiles('./crates/**/*') }} + + - name: Install Node.JS + uses: actions/setup-node@v4 + with: + node-version: ${{ env.NODE_VERSION }} + + - name: Install Rust (Stable) + if: ${{ matrix.download }} + run: | + rustup default stable + + - name: Setup rust target + run: rustup target add ${{ matrix.target }} + + - name: Install dependencies + run: pnpm install --ignore-scripts --filter=!./playgrounds/* + + - name: Build release + run: pnpm run --filter ${{ env.OXIDE_LOCATION }} build + env: + RUST_TARGET: ${{ matrix.target }} + JEMALLOC_SYS_WITH_LG_PAGE: ${{ matrix.page-size }} + + - name: Strip debug symbols # https://github.com/rust-lang/rust/issues/46034 + if: ${{ matrix.strip }} + run: ${{ matrix.strip }} ${{ env.OXIDE_LOCATION }}/*.node + + - name: Upload artifacts + uses: actions/upload-artifact@v4 + with: + name: bindings-${{ matrix.target }} + path: ${{ env.OXIDE_LOCATION }}/*.node + + release: + runs-on: macos-14 + timeout-minutes: 15 + name: Build and release Tailwind CSS insiders + + permissions: + contents: write # for softprops/action-gh-release to create GitHub release + # https://docs.npmjs.com/generating-provenance-statements#publishing-packages-with-provenance-via-github-actions + id-token: write + + needs: + - build + + steps: + - uses: actions/checkout@v4 + with: + fetch-tags: true + fetch-depth: 20 + + - name: Resolve version + id: vars + run: | + echo "SHA_SHORT=$(git rev-parse --short HEAD)" >> $GITHUB_ENV + + - uses: pnpm/action-setup@v4 + + - name: Use Node.js ${{ env.NODE_VERSION }} + uses: actions/setup-node@v4 + with: + node-version: ${{ env.NODE_VERSION }} + cache: 'pnpm' + registry-url: 'https://registry.npmjs.org' + + # Cargo already skips downloading dependencies if they already exist + - name: Cache cargo + uses: actions/cache@v4 + with: + path: | + ~/.cargo/bin/ + ~/.cargo/registry/index/ + ~/.cargo/registry/cache/ + ~/.cargo/git/db/ + target/ + key: ${{ runner.os }}-${{ matrix.target }}-cargo-${{ hashFiles('**/Cargo.lock') }} + + # Cache the `oxide` Rust build + - name: Cache oxide build + uses: actions/cache@v4 + with: + path: | + ./oxide/target/ + ./crates/node/*.node + ./crates/node/index.js + ./crates/node/index.d.ts + key: ${{ runner.os }}-${{ matrix.target }}-oxide-${{ hashFiles('./crates/**/*') }} + + - name: Install dependencies + run: pnpm --filter=!./playgrounds/* install + + - name: Download artifacts + uses: actions/download-artifact@v4 + with: + path: ${{ env.OXIDE_LOCATION }} + + - name: Move artifacts + run: | + cd ${{ env.OXIDE_LOCATION }} + cp bindings-x86_64-pc-windows-msvc/* ./npm/win32-x64-msvc/ + cp bindings-aarch64-pc-windows-msvc/* ./npm/win32-arm64-msvc/ + cp bindings-x86_64-apple-darwin/* ./npm/darwin-x64/ + cp bindings-aarch64-apple-darwin/* ./npm/darwin-arm64/ + cp bindings-aarch64-linux-android/* ./npm/android-arm64/ + cp bindings-armv7-linux-androideabi/* ./npm/android-arm-eabi/ + cp bindings-aarch64-unknown-linux-gnu/* ./npm/linux-arm64-gnu/ + cp bindings-aarch64-unknown-linux-musl/* ./npm/linux-arm64-musl/ + cp bindings-armv7-unknown-linux-gnueabihf/* ./npm/linux-arm-gnueabihf/ + cp bindings-x86_64-unknown-linux-gnu/* ./npm/linux-x64-gnu/ + cp bindings-x86_64-unknown-linux-musl/* ./npm/linux-x64-musl/ + + - name: Build Tailwind CSS + run: pnpm run build + + - name: 'Version based on commit: 0.0.0-${{ env.RELEASE_CHANNEL }}.${{ env.SHA_SHORT }}' + run: pnpm run version-packages 0.0.0-${{ env.RELEASE_CHANNEL }}.${{ env.SHA_SHORT }} + + - name: Run pre-publish optimizations scripts + run: node ./scripts/pre-publish-optimizations.mjs + + - name: Lock pre-release versions + run: node ./scripts/lock-pre-release-versions.mjs + + - name: Publish + run: pnpm --recursive publish --tag ${{ env.RELEASE_CHANNEL }} --no-git-checks + env: + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} + + - name: Trigger Tailwind Play update + uses: actions/github-script@v7 + with: + github-token: ${{ secrets.TAILWIND_PLAY_TOKEN }} + script: | + await github.rest.actions.createWorkflowDispatch({ + owner: 'tailwindlabs', + repo: 'play.tailwindcss.com', + ref: 'master', + workflow_id: 'upgrade-tailwindcss.yml', + inputs: { + insidersVersion: '0.0.0-${{ env.RELEASE_CHANNEL }}.${{ env.SHA_SHORT }}' + } + }) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index faa4a8271342..c9a21abc892a 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,13 +1,9 @@ name: Release on: + release: + types: [published] workflow_dispatch: - inputs: - release_channel: - description: 'Release channel' - required: false - default: 'next' - type: string permissions: contents: read @@ -159,13 +155,6 @@ jobs: fetch-tags: true fetch-depth: 20 - - run: git fetch --tags -f - - - name: Resolve version - id: vars - run: | - echo "TAG_NAME=$(git describe --tags --abbrev=0)" >> $GITHUB_ENV - - uses: pnpm/action-setup@v4 - name: Use Node.js ${{ env.NODE_VERSION }} @@ -230,44 +219,28 @@ jobs: - name: Lock pre-release versions run: node ./scripts/lock-pre-release-versions.mjs - - name: Get release notes + - name: Calculate environment variables run: | - RELEASE_NOTES=$(node ./scripts/release-notes.mjs) - echo "RELEASE_NOTES<> $GITHUB_ENV - echo "$RELEASE_NOTES" >> $GITHUB_ENV - echo "EOF" >> $GITHUB_ENV - - - name: Upload Standalone Artifacts - uses: actions/upload-artifact@v4 - with: - name: tailwindcss-standalone - path: packages/@tailwindcss-standalone/dist/ + echo "RELEASE_CHANNEL=$(node ./scripts/release-channel.js)" >> $GITHUB_ENV + echo "TAILWINDCSS_VERSION=$(node -e 'console.log(require(`./packages/tailwindcss/package.json`).version);')" >> $GITHUB_ENV - name: Publish - run: pnpm --recursive publish --tag ${{ inputs.release_channel }} --no-git-checks - env: - NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} - - - name: Alias packages to `latest` - if: ${{ inputs.release_channel == 'next' }} - run: | - npm dist-tag add @tailwindcss/upgrade@${{ env.TAG_NAME }} latest + run: pnpm --recursive publish --tag ${{ env.RELEASE_CHANNEL }} --no-git-checks env: NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} - - name: Release - uses: softprops/action-gh-release@v2 + - name: Trigger Tailwind Play update + if: env.RELEASE_CHANNEL == 'latest' + uses: actions/github-script@v7 with: - draft: true - tag_name: ${{ env.TAG_NAME }} - body: | - ${{ env.RELEASE_NOTES }} - files: | - packages/@tailwindcss-standalone/dist/sha256sums.txt - packages/@tailwindcss-standalone/dist/tailwindcss-linux-arm64 - packages/@tailwindcss-standalone/dist/tailwindcss-linux-arm64-musl - packages/@tailwindcss-standalone/dist/tailwindcss-linux-x64 - packages/@tailwindcss-standalone/dist/tailwindcss-linux-x64-musl - packages/@tailwindcss-standalone/dist/tailwindcss-macos-arm64 - packages/@tailwindcss-standalone/dist/tailwindcss-macos-x64 - packages/@tailwindcss-standalone/dist/tailwindcss-windows-x64.exe + github-token: ${{ secrets.TAILWIND_PLAY_TOKEN }} + script: | + await github.rest.actions.createWorkflowDispatch({ + owner: 'tailwindlabs', + repo: 'play.tailwindcss.com', + ref: 'master', + workflow_id: 'upgrade-tailwindcss.yml', + inputs: { + version: '${{ env.TAILWINDCSS_VERSION }}' + } + }) diff --git a/scripts/release-channel.js b/scripts/release-channel.js new file mode 100644 index 000000000000..15dc7df8213e --- /dev/null +++ b/scripts/release-channel.js @@ -0,0 +1,20 @@ +// Given a version, figure out what the release channel is so that we can publish to the correct +// channel on npm. +// +// E.g.: +// +// 1.2.3 -> latest (default) +// 0.0.0-insiders.ffaa88 -> insiders +// 4.1.0-alpha.4 -> alpha + +let version = + process.argv[2] || + process.env.npm_package_version || + require('../packages/tailwindcss/package.json').version + +let match = /\d+\.\d+\.\d+-(.*)\.\d+/g.exec(version) +if (match) { + console.log(match[1]) +} else { + console.log('latest') +} diff --git a/scripts/version-packages.mjs b/scripts/version-packages.mjs index 2e3d93a3e668..6215c8451437 100644 --- a/scripts/version-packages.mjs +++ b/scripts/version-packages.mjs @@ -8,6 +8,7 @@ import prettier from 'prettier' const __dirname = path.dirname(url.fileURLToPath(import.meta.url)) const root = path.resolve(__dirname, '..') +const version = process.argv[2] || null // The known workspace is: @tailwindcss/oxide // All the workspaces in `crates/node/npm/*` should always be in sync with @@ -52,6 +53,34 @@ exec('pnpm --silent --filter=!./playgrounds/* -r exec pwd', async (err, stdout) process.exit(1) } + if (version !== null) { + for (let pkgPath of stdout + .trim() + .split('\n') + .map((x) => path.resolve(x, 'package.json'))) { + let pkg = await fs.readFile(pkgPath, 'utf8').then(JSON.parse) + let name = pkg.name + if (version !== '') { + // Ensure the version is set after the name and before everything else + delete pkg.name + delete pkg.version + + // This allows us to keep the order of the keys in the package.json + pkg = { name, version, ...pkg } + } + + await fs.writeFile( + pkgPath, + await prettier + .format(JSON.stringify(pkg, null, 2), { filepath: pkgPath }) + .then((x) => `${x.trim()}\n`), + ) + } + + console.log('Done.') + return + } + let paths = stdout .trim() .split('\n') From 35bc28b16b3fa43fe8c19d8f607141d8be5558cf Mon Sep 17 00:00:00 2001 From: Robin Malfait Date: Tue, 28 Jan 2025 16:21:18 +0100 Subject: [PATCH 10/29] Ensure we set the version before running build (#15971) This PR ensures we set the version before running the build. Otherwise the embedded version number is incorrect. --- .github/workflows/release-insiders.yml | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/.github/workflows/release-insiders.yml b/.github/workflows/release-insiders.yml index e7f564df2b1a..3815e0731ddb 100644 --- a/.github/workflows/release-insiders.yml +++ b/.github/workflows/release-insiders.yml @@ -121,6 +121,9 @@ jobs: - name: Install dependencies run: pnpm install --ignore-scripts --filter=!./playgrounds/* + - name: 'Version based on commit: 0.0.0-${{ env.RELEASE_CHANNEL }}.${{ env.SHA_SHORT }}' + run: pnpm run version-packages 0.0.0-${{ env.RELEASE_CHANNEL }}.${{ env.SHA_SHORT }} + - name: Build release run: pnpm run --filter ${{ env.OXIDE_LOCATION }} build env: @@ -216,12 +219,12 @@ jobs: cp bindings-x86_64-unknown-linux-gnu/* ./npm/linux-x64-gnu/ cp bindings-x86_64-unknown-linux-musl/* ./npm/linux-x64-musl/ - - name: Build Tailwind CSS - run: pnpm run build - - name: 'Version based on commit: 0.0.0-${{ env.RELEASE_CHANNEL }}.${{ env.SHA_SHORT }}' run: pnpm run version-packages 0.0.0-${{ env.RELEASE_CHANNEL }}.${{ env.SHA_SHORT }} + - name: Build Tailwind CSS + run: pnpm run build + - name: Run pre-publish optimizations scripts run: node ./scripts/pre-publish-optimizations.mjs From 28008f1571060bcdf979063219accfe51973bb1a Mon Sep 17 00:00:00 2001 From: Robin Malfait Date: Tue, 28 Jan 2025 16:34:01 +0100 Subject: [PATCH 11/29] remove unnecessary version step My bad. --- .github/workflows/release-insiders.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/.github/workflows/release-insiders.yml b/.github/workflows/release-insiders.yml index 3815e0731ddb..31f3444d559e 100644 --- a/.github/workflows/release-insiders.yml +++ b/.github/workflows/release-insiders.yml @@ -121,9 +121,6 @@ jobs: - name: Install dependencies run: pnpm install --ignore-scripts --filter=!./playgrounds/* - - name: 'Version based on commit: 0.0.0-${{ env.RELEASE_CHANNEL }}.${{ env.SHA_SHORT }}' - run: pnpm run version-packages 0.0.0-${{ env.RELEASE_CHANNEL }}.${{ env.SHA_SHORT }} - - name: Build release run: pnpm run --filter ${{ env.OXIDE_LOCATION }} build env: From 1eb29806788767958d4ce50308c4b189660baa36 Mon Sep 17 00:00:00 2001 From: Jordan Pittman Date: Tue, 28 Jan 2025 10:35:11 -0500 Subject: [PATCH 12/29] Fix IntelliSense class suggestions (#15857) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR fixes a few problems with IntelliSense: - Default installs suggest font weight utilities twice - When setting `--font-weight-*: initial;` the default weights are still suggested - Setting `--spacing-*: initial;` still shows suggestions for utilities using the spacing scale assuming it's multiplier-based. Removing the `--spacing: …` key should make them entirely theme driven instead. - The default container query variants like `@sm`, `@md`, etc… aren't suggested. Only the `@min-sm` and `@max-sm` style ones are. Fixes https://github.com/tailwindlabs/tailwindcss-intellisense/issues/1133 Fixes https://github.com/tailwindlabs/tailwindcss-intellisense/issues/1136 Fixes #15811 --------- Co-authored-by: Robin Malfait --- CHANGELOG.md | 4 + .../__snapshots__/intellisense.test.ts.snap | 2589 +++++++++-------- packages/tailwindcss/src/intellisense.test.ts | 25 +- packages/tailwindcss/src/intellisense.ts | 12 +- packages/tailwindcss/src/utilities.ts | 86 +- packages/tailwindcss/src/variants.ts | 5 + 6 files changed, 1379 insertions(+), 1342 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e2c5767ce59b..d2170c400940 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Ensure CSS variable shorthand uses valid CSS variables ([#15738](https://github.com/tailwindlabs/tailwindcss/pull/15738)) - Ensure font-size utilities with `none` modifier have a line-height set e.g.: `text-sm/none` ([#15921](https://github.com/tailwindlabs/tailwindcss/pull/15921)) - Ensure font-size utilities with unknown modifier don't generate CSS ([#15921](https://github.com/tailwindlabs/tailwindcss/pull/15921)) +- Don’t suggest font weight utilities more than once ([#15857](https://github.com/tailwindlabs/tailwindcss/pull/15857)) +- Suggest container query variants ([#15857](https://github.com/tailwindlabs/tailwindcss/pull/15857)) +- Disable bare value suggestions when not using the `--spacing` variable ([#15857](https://github.com/tailwindlabs/tailwindcss/pull/15857)) +- Ensure suggested classes are properly sorted ([#15857](https://github.com/tailwindlabs/tailwindcss/pull/15857)) - _Upgrade_: Ensure JavaScript config files on different drives are correctly migrated ([#15927](https://github.com/tailwindlabs/tailwindcss/pull/15927)) ## [4.0.0] - 2025-01-21 diff --git a/packages/tailwindcss/src/__snapshots__/intellisense.test.ts.snap b/packages/tailwindcss/src/__snapshots__/intellisense.test.ts.snap index 203e52712f55..c65d54b102fd 100644 --- a/packages/tailwindcss/src/__snapshots__/intellisense.test.ts.snap +++ b/packages/tailwindcss/src/__snapshots__/intellisense.test.ts.snap @@ -11,6 +11,33 @@ exports[`getClassList 1`] = ` "-bg-conic-0/shorter", "-bg-conic-0/increasing", "-bg-conic-0/decreasing", + "-bg-conic-30", + "-bg-conic-30/oklab", + "-bg-conic-30/oklch", + "-bg-conic-30/srgb", + "-bg-conic-30/hsl", + "-bg-conic-30/longer", + "-bg-conic-30/shorter", + "-bg-conic-30/increasing", + "-bg-conic-30/decreasing", + "-bg-conic-60", + "-bg-conic-60/oklab", + "-bg-conic-60/oklch", + "-bg-conic-60/srgb", + "-bg-conic-60/hsl", + "-bg-conic-60/longer", + "-bg-conic-60/shorter", + "-bg-conic-60/increasing", + "-bg-conic-60/decreasing", + "-bg-conic-90", + "-bg-conic-90/oklab", + "-bg-conic-90/oklch", + "-bg-conic-90/srgb", + "-bg-conic-90/hsl", + "-bg-conic-90/longer", + "-bg-conic-90/shorter", + "-bg-conic-90/increasing", + "-bg-conic-90/decreasing", "-bg-conic-120", "-bg-conic-120/oklab", "-bg-conic-120/oklch", @@ -65,15 +92,6 @@ exports[`getClassList 1`] = ` "-bg-conic-270/shorter", "-bg-conic-270/increasing", "-bg-conic-270/decreasing", - "-bg-conic-30", - "-bg-conic-30/oklab", - "-bg-conic-30/oklch", - "-bg-conic-30/srgb", - "-bg-conic-30/hsl", - "-bg-conic-30/longer", - "-bg-conic-30/shorter", - "-bg-conic-30/increasing", - "-bg-conic-30/decreasing", "-bg-conic-300", "-bg-conic-300/oklab", "-bg-conic-300/oklch", @@ -92,24 +110,6 @@ exports[`getClassList 1`] = ` "-bg-conic-330/shorter", "-bg-conic-330/increasing", "-bg-conic-330/decreasing", - "-bg-conic-60", - "-bg-conic-60/oklab", - "-bg-conic-60/oklch", - "-bg-conic-60/srgb", - "-bg-conic-60/hsl", - "-bg-conic-60/longer", - "-bg-conic-60/shorter", - "-bg-conic-60/increasing", - "-bg-conic-60/decreasing", - "-bg-conic-90", - "-bg-conic-90/oklab", - "-bg-conic-90/oklch", - "-bg-conic-90/srgb", - "-bg-conic-90/hsl", - "-bg-conic-90/longer", - "-bg-conic-90/shorter", - "-bg-conic-90/increasing", - "-bg-conic-90/decreasing", "-bg-linear-0", "-bg-linear-0/oklab", "-bg-linear-0/oklch", @@ -119,6 +119,33 @@ exports[`getClassList 1`] = ` "-bg-linear-0/shorter", "-bg-linear-0/increasing", "-bg-linear-0/decreasing", + "-bg-linear-30", + "-bg-linear-30/oklab", + "-bg-linear-30/oklch", + "-bg-linear-30/srgb", + "-bg-linear-30/hsl", + "-bg-linear-30/longer", + "-bg-linear-30/shorter", + "-bg-linear-30/increasing", + "-bg-linear-30/decreasing", + "-bg-linear-60", + "-bg-linear-60/oklab", + "-bg-linear-60/oklch", + "-bg-linear-60/srgb", + "-bg-linear-60/hsl", + "-bg-linear-60/longer", + "-bg-linear-60/shorter", + "-bg-linear-60/increasing", + "-bg-linear-60/decreasing", + "-bg-linear-90", + "-bg-linear-90/oklab", + "-bg-linear-90/oklch", + "-bg-linear-90/srgb", + "-bg-linear-90/hsl", + "-bg-linear-90/longer", + "-bg-linear-90/shorter", + "-bg-linear-90/increasing", + "-bg-linear-90/decreasing", "-bg-linear-120", "-bg-linear-120/oklab", "-bg-linear-120/oklch", @@ -173,15 +200,6 @@ exports[`getClassList 1`] = ` "-bg-linear-270/shorter", "-bg-linear-270/increasing", "-bg-linear-270/decreasing", - "-bg-linear-30", - "-bg-linear-30/oklab", - "-bg-linear-30/oklch", - "-bg-linear-30/srgb", - "-bg-linear-30/hsl", - "-bg-linear-30/longer", - "-bg-linear-30/shorter", - "-bg-linear-30/increasing", - "-bg-linear-30/decreasing", "-bg-linear-300", "-bg-linear-300/oklab", "-bg-linear-300/oklch", @@ -200,65 +218,43 @@ exports[`getClassList 1`] = ` "-bg-linear-330/shorter", "-bg-linear-330/increasing", "-bg-linear-330/decreasing", - "-bg-linear-60", - "-bg-linear-60/oklab", - "-bg-linear-60/oklch", - "-bg-linear-60/srgb", - "-bg-linear-60/hsl", - "-bg-linear-60/longer", - "-bg-linear-60/shorter", - "-bg-linear-60/increasing", - "-bg-linear-60/decreasing", - "-bg-linear-90", - "-bg-linear-90/oklab", - "-bg-linear-90/oklch", - "-bg-linear-90/srgb", - "-bg-linear-90/hsl", - "-bg-linear-90/longer", - "-bg-linear-90/shorter", - "-bg-linear-90/increasing", - "-bg-linear-90/decreasing", "-bottom-0", "-bottom-0.5", "-bottom-1", "-bottom-1.5", + "-bottom-2", + "-bottom-2.5", + "-bottom-3", + "-bottom-3.5", + "-bottom-4", + "-bottom-5", + "-bottom-6", + "-bottom-7", + "-bottom-8", + "-bottom-9", "-bottom-10", "-bottom-11", "-bottom-12", "-bottom-14", "-bottom-16", - "-bottom-2", - "-bottom-2.5", "-bottom-20", "-bottom-24", "-bottom-28", - "-bottom-3", - "-bottom-3.5", "-bottom-32", "-bottom-36", - "-bottom-4", "-bottom-40", "-bottom-44", "-bottom-48", - "-bottom-5", "-bottom-52", "-bottom-56", - "-bottom-6", "-bottom-60", "-bottom-64", - "-bottom-7", "-bottom-72", - "-bottom-8", "-bottom-80", - "-bottom-9", "-bottom-96", "-bottom-full", "-bottom-px", "-col-end-1", - "-col-end-10", - "-col-end-11", - "-col-end-12", - "-col-end-13", "-col-end-2", "-col-end-3", "-col-end-4", @@ -267,11 +263,11 @@ exports[`getClassList 1`] = ` "-col-end-7", "-col-end-8", "-col-end-9", + "-col-end-10", + "-col-end-11", + "-col-end-12", + "-col-end-13", "-col-start-1", - "-col-start-10", - "-col-start-11", - "-col-start-12", - "-col-start-13", "-col-start-2", "-col-start-3", "-col-start-4", @@ -280,39 +276,43 @@ exports[`getClassList 1`] = ` "-col-start-7", "-col-start-8", "-col-start-9", + "-col-start-10", + "-col-start-11", + "-col-start-12", + "-col-start-13", "-end-0", "-end-0.5", "-end-1", "-end-1.5", + "-end-2", + "-end-2.5", + "-end-3", + "-end-3.5", + "-end-4", + "-end-5", + "-end-6", + "-end-7", + "-end-8", + "-end-9", "-end-10", "-end-11", "-end-12", "-end-14", "-end-16", - "-end-2", - "-end-2.5", "-end-20", "-end-24", "-end-28", - "-end-3", - "-end-3.5", "-end-32", "-end-36", - "-end-4", "-end-40", "-end-44", "-end-48", - "-end-5", "-end-52", "-end-56", - "-end-6", "-end-60", "-end-64", - "-end-7", "-end-72", - "-end-8", "-end-80", - "-end-9", "-end-96", "-end-full", "-end-px", @@ -320,70 +320,70 @@ exports[`getClassList 1`] = ` "-indent-0.5", "-indent-1", "-indent-1.5", + "-indent-2", + "-indent-2.5", + "-indent-3", + "-indent-3.5", + "-indent-4", + "-indent-5", + "-indent-6", + "-indent-7", + "-indent-8", + "-indent-9", "-indent-10", "-indent-11", "-indent-12", "-indent-14", "-indent-16", - "-indent-2", - "-indent-2.5", "-indent-20", "-indent-24", "-indent-28", - "-indent-3", - "-indent-3.5", "-indent-32", "-indent-36", - "-indent-4", "-indent-40", "-indent-44", "-indent-48", - "-indent-5", "-indent-52", "-indent-56", - "-indent-6", "-indent-60", "-indent-64", - "-indent-7", "-indent-72", - "-indent-8", "-indent-80", - "-indent-9", "-indent-96", "-indent-px", "-inset-0", "-inset-0.5", "-inset-1", "-inset-1.5", + "-inset-2", + "-inset-2.5", + "-inset-3", + "-inset-3.5", + "-inset-4", + "-inset-5", + "-inset-6", + "-inset-7", + "-inset-8", + "-inset-9", "-inset-10", "-inset-11", "-inset-12", "-inset-14", "-inset-16", - "-inset-2", - "-inset-2.5", "-inset-20", "-inset-24", "-inset-28", - "-inset-3", - "-inset-3.5", "-inset-32", "-inset-36", - "-inset-4", "-inset-40", "-inset-44", "-inset-48", - "-inset-5", "-inset-52", "-inset-56", - "-inset-6", "-inset-60", "-inset-64", - "-inset-7", "-inset-72", - "-inset-8", "-inset-80", - "-inset-9", "-inset-96", "-inset-full", "-inset-px", @@ -391,35 +391,35 @@ exports[`getClassList 1`] = ` "-inset-x-0.5", "-inset-x-1", "-inset-x-1.5", + "-inset-x-2", + "-inset-x-2.5", + "-inset-x-3", + "-inset-x-3.5", + "-inset-x-4", + "-inset-x-5", + "-inset-x-6", + "-inset-x-7", + "-inset-x-8", + "-inset-x-9", "-inset-x-10", "-inset-x-11", "-inset-x-12", "-inset-x-14", "-inset-x-16", - "-inset-x-2", - "-inset-x-2.5", "-inset-x-20", "-inset-x-24", "-inset-x-28", - "-inset-x-3", - "-inset-x-3.5", "-inset-x-32", "-inset-x-36", - "-inset-x-4", "-inset-x-40", "-inset-x-44", "-inset-x-48", - "-inset-x-5", "-inset-x-52", "-inset-x-56", - "-inset-x-6", "-inset-x-60", "-inset-x-64", - "-inset-x-7", "-inset-x-72", - "-inset-x-8", "-inset-x-80", - "-inset-x-9", "-inset-x-96", "-inset-x-full", "-inset-x-px", @@ -427,35 +427,35 @@ exports[`getClassList 1`] = ` "-inset-y-0.5", "-inset-y-1", "-inset-y-1.5", + "-inset-y-2", + "-inset-y-2.5", + "-inset-y-3", + "-inset-y-3.5", + "-inset-y-4", + "-inset-y-5", + "-inset-y-6", + "-inset-y-7", + "-inset-y-8", + "-inset-y-9", "-inset-y-10", "-inset-y-11", "-inset-y-12", "-inset-y-14", "-inset-y-16", - "-inset-y-2", - "-inset-y-2.5", "-inset-y-20", "-inset-y-24", "-inset-y-28", - "-inset-y-3", - "-inset-y-3.5", "-inset-y-32", "-inset-y-36", - "-inset-y-4", "-inset-y-40", "-inset-y-44", "-inset-y-48", - "-inset-y-5", "-inset-y-52", "-inset-y-56", - "-inset-y-6", "-inset-y-60", "-inset-y-64", - "-inset-y-7", "-inset-y-72", - "-inset-y-8", "-inset-y-80", - "-inset-y-9", "-inset-y-96", "-inset-y-full", "-inset-y-px", @@ -463,35 +463,35 @@ exports[`getClassList 1`] = ` "-left-0.5", "-left-1", "-left-1.5", + "-left-2", + "-left-2.5", + "-left-3", + "-left-3.5", + "-left-4", + "-left-5", + "-left-6", + "-left-7", + "-left-8", + "-left-9", "-left-10", "-left-11", "-left-12", "-left-14", "-left-16", - "-left-2", - "-left-2.5", "-left-20", "-left-24", "-left-28", - "-left-3", - "-left-3.5", "-left-32", "-left-36", - "-left-4", "-left-40", "-left-44", "-left-48", - "-left-5", "-left-52", "-left-56", - "-left-6", "-left-60", "-left-64", - "-left-7", "-left-72", - "-left-8", "-left-80", - "-left-9", "-left-96", "-left-full", "-left-px", @@ -499,321 +499,318 @@ exports[`getClassList 1`] = ` "-m-0.5", "-m-1", "-m-1.5", + "-m-2", + "-m-2.5", + "-m-3", + "-m-3.5", + "-m-4", + "-m-5", + "-m-6", + "-m-7", + "-m-8", + "-m-9", "-m-10", "-m-11", "-m-12", "-m-14", "-m-16", - "-m-2", - "-m-2.5", "-m-20", "-m-24", "-m-28", - "-m-3", - "-m-3.5", "-m-32", "-m-36", - "-m-4", "-m-40", "-m-44", "-m-48", - "-m-5", "-m-52", "-m-56", - "-m-6", "-m-60", "-m-64", - "-m-7", "-m-72", - "-m-8", "-m-80", - "-m-9", "-m-96", "-m-px", "-mb-0", "-mb-0.5", "-mb-1", "-mb-1.5", + "-mb-2", + "-mb-2.5", + "-mb-3", + "-mb-3.5", + "-mb-4", + "-mb-5", + "-mb-6", + "-mb-7", + "-mb-8", + "-mb-9", "-mb-10", "-mb-11", "-mb-12", "-mb-14", "-mb-16", - "-mb-2", - "-mb-2.5", "-mb-20", "-mb-24", "-mb-28", - "-mb-3", - "-mb-3.5", "-mb-32", "-mb-36", - "-mb-4", "-mb-40", "-mb-44", "-mb-48", - "-mb-5", "-mb-52", "-mb-56", - "-mb-6", "-mb-60", "-mb-64", - "-mb-7", "-mb-72", - "-mb-8", "-mb-80", - "-mb-9", "-mb-96", "-mb-px", "-me-0", "-me-0.5", "-me-1", "-me-1.5", + "-me-2", + "-me-2.5", + "-me-3", + "-me-3.5", + "-me-4", + "-me-5", + "-me-6", + "-me-7", + "-me-8", + "-me-9", "-me-10", "-me-11", "-me-12", "-me-14", "-me-16", - "-me-2", - "-me-2.5", "-me-20", "-me-24", "-me-28", - "-me-3", - "-me-3.5", "-me-32", "-me-36", - "-me-4", "-me-40", "-me-44", "-me-48", - "-me-5", "-me-52", "-me-56", - "-me-6", "-me-60", "-me-64", - "-me-7", "-me-72", - "-me-8", "-me-80", - "-me-9", "-me-96", "-me-px", "-ml-0", "-ml-0.5", "-ml-1", "-ml-1.5", + "-ml-2", + "-ml-2.5", + "-ml-3", + "-ml-3.5", + "-ml-4", + "-ml-5", + "-ml-6", + "-ml-7", + "-ml-8", + "-ml-9", "-ml-10", "-ml-11", "-ml-12", "-ml-14", "-ml-16", - "-ml-2", - "-ml-2.5", "-ml-20", "-ml-24", "-ml-28", - "-ml-3", - "-ml-3.5", "-ml-32", "-ml-36", - "-ml-4", "-ml-40", "-ml-44", "-ml-48", - "-ml-5", "-ml-52", "-ml-56", - "-ml-6", "-ml-60", "-ml-64", - "-ml-7", "-ml-72", - "-ml-8", "-ml-80", - "-ml-9", "-ml-96", "-ml-px", "-mr-0", "-mr-0.5", "-mr-1", "-mr-1.5", + "-mr-2", + "-mr-2.5", + "-mr-3", + "-mr-3.5", + "-mr-4", + "-mr-5", + "-mr-6", + "-mr-7", + "-mr-8", + "-mr-9", "-mr-10", "-mr-11", "-mr-12", "-mr-14", "-mr-16", - "-mr-2", - "-mr-2.5", "-mr-20", "-mr-24", "-mr-28", - "-mr-3", - "-mr-3.5", "-mr-32", "-mr-36", - "-mr-4", "-mr-40", "-mr-44", "-mr-48", - "-mr-5", "-mr-52", "-mr-56", - "-mr-6", "-mr-60", "-mr-64", - "-mr-7", "-mr-72", - "-mr-8", "-mr-80", - "-mr-9", "-mr-96", "-mr-px", "-ms-0", "-ms-0.5", "-ms-1", "-ms-1.5", + "-ms-2", + "-ms-2.5", + "-ms-3", + "-ms-3.5", + "-ms-4", + "-ms-5", + "-ms-6", + "-ms-7", + "-ms-8", + "-ms-9", "-ms-10", "-ms-11", "-ms-12", "-ms-14", "-ms-16", - "-ms-2", - "-ms-2.5", "-ms-20", "-ms-24", "-ms-28", - "-ms-3", - "-ms-3.5", "-ms-32", "-ms-36", - "-ms-4", "-ms-40", "-ms-44", "-ms-48", - "-ms-5", "-ms-52", "-ms-56", - "-ms-6", "-ms-60", "-ms-64", - "-ms-7", "-ms-72", - "-ms-8", "-ms-80", - "-ms-9", "-ms-96", "-ms-px", "-mt-0", "-mt-0.5", "-mt-1", "-mt-1.5", + "-mt-2", + "-mt-2.5", + "-mt-3", + "-mt-3.5", + "-mt-4", + "-mt-5", + "-mt-6", + "-mt-7", + "-mt-8", + "-mt-9", "-mt-10", "-mt-11", "-mt-12", "-mt-14", "-mt-16", - "-mt-2", - "-mt-2.5", "-mt-20", "-mt-24", "-mt-28", - "-mt-3", - "-mt-3.5", "-mt-32", "-mt-36", - "-mt-4", "-mt-40", "-mt-44", "-mt-48", - "-mt-5", "-mt-52", "-mt-56", - "-mt-6", "-mt-60", "-mt-64", - "-mt-7", "-mt-72", - "-mt-8", "-mt-80", - "-mt-9", "-mt-96", "-mt-px", "-mx-0", "-mx-0.5", "-mx-1", "-mx-1.5", + "-mx-2", + "-mx-2.5", + "-mx-3", + "-mx-3.5", + "-mx-4", + "-mx-5", + "-mx-6", + "-mx-7", + "-mx-8", + "-mx-9", "-mx-10", "-mx-11", "-mx-12", "-mx-14", "-mx-16", - "-mx-2", - "-mx-2.5", "-mx-20", "-mx-24", "-mx-28", - "-mx-3", - "-mx-3.5", "-mx-32", "-mx-36", - "-mx-4", "-mx-40", "-mx-44", "-mx-48", - "-mx-5", "-mx-52", "-mx-56", - "-mx-6", "-mx-60", "-mx-64", - "-mx-7", "-mx-72", - "-mx-8", "-mx-80", - "-mx-9", "-mx-96", "-mx-px", "-my-0", "-my-0.5", "-my-1", "-my-1.5", + "-my-2", + "-my-2.5", + "-my-3", + "-my-3.5", + "-my-4", + "-my-5", + "-my-6", + "-my-7", + "-my-8", + "-my-9", "-my-10", "-my-11", "-my-12", "-my-14", "-my-16", - "-my-2", - "-my-2.5", "-my-20", "-my-24", "-my-28", - "-my-3", - "-my-3.5", "-my-32", "-my-36", - "-my-4", "-my-40", "-my-44", "-my-48", - "-my-5", "-my-52", "-my-56", - "-my-6", "-my-60", "-my-64", - "-my-7", "-my-72", - "-my-8", "-my-80", - "-my-9", "-my-96", "-my-px", "-order-1", - "-order-10", - "-order-11", - "-order-12", "-order-2", "-order-3", "-order-4", @@ -822,6 +819,9 @@ exports[`getClassList 1`] = ` "-order-7", "-order-8", "-order-9", + "-order-10", + "-order-11", + "-order-12", "-outline-offset-0", "-outline-offset-1", "-outline-offset-2", @@ -831,79 +831,75 @@ exports[`getClassList 1`] = ` "-right-0.5", "-right-1", "-right-1.5", + "-right-2", + "-right-2.5", + "-right-3", + "-right-3.5", + "-right-4", + "-right-5", + "-right-6", + "-right-7", + "-right-8", + "-right-9", "-right-10", "-right-11", "-right-12", "-right-14", "-right-16", - "-right-2", - "-right-2.5", "-right-20", "-right-24", "-right-28", - "-right-3", - "-right-3.5", "-right-32", "-right-36", - "-right-4", "-right-40", "-right-44", "-right-48", - "-right-5", "-right-52", "-right-56", - "-right-6", "-right-60", "-right-64", - "-right-7", "-right-72", - "-right-8", "-right-80", - "-right-9", "-right-96", "-right-full", "-right-px", "-rotate-0", "-rotate-1", - "-rotate-12", - "-rotate-180", "-rotate-2", "-rotate-3", - "-rotate-45", "-rotate-6", + "-rotate-12", + "-rotate-45", "-rotate-90", + "-rotate-180", "-rotate-x-0", "-rotate-x-1", - "-rotate-x-12", - "-rotate-x-180", "-rotate-x-2", "-rotate-x-3", - "-rotate-x-45", "-rotate-x-6", + "-rotate-x-12", + "-rotate-x-45", "-rotate-x-90", + "-rotate-x-180", "-rotate-y-0", "-rotate-y-1", - "-rotate-y-12", - "-rotate-y-180", "-rotate-y-2", "-rotate-y-3", - "-rotate-y-45", "-rotate-y-6", + "-rotate-y-12", + "-rotate-y-45", "-rotate-y-90", + "-rotate-y-180", "-rotate-z-0", "-rotate-z-1", - "-rotate-z-12", - "-rotate-z-180", "-rotate-z-2", "-rotate-z-3", - "-rotate-z-45", "-rotate-z-6", + "-rotate-z-12", + "-rotate-z-45", "-rotate-z-90", + "-rotate-z-180", "-row-end-1", - "-row-end-10", - "-row-end-11", - "-row-end-12", - "-row-end-13", "-row-end-2", "-row-end-3", "-row-end-4", @@ -912,11 +908,11 @@ exports[`getClassList 1`] = ` "-row-end-7", "-row-end-8", "-row-end-9", + "-row-end-10", + "-row-end-11", + "-row-end-12", + "-row-end-13", "-row-start-1", - "-row-start-10", - "-row-start-11", - "-row-start-12", - "-row-start-13", "-row-start-2", "-row-start-3", "-row-start-4", @@ -925,486 +921,490 @@ exports[`getClassList 1`] = ` "-row-start-7", "-row-start-8", "-row-start-9", + "-row-start-10", + "-row-start-11", + "-row-start-12", + "-row-start-13", "-scale-0", - "-scale-100", - "-scale-105", - "-scale-110", - "-scale-125", - "-scale-150", - "-scale-200", "-scale-50", "-scale-75", "-scale-90", "-scale-95", + "-scale-100", + "-scale-105", + "-scale-110", + "-scale-125", + "-scale-150", + "-scale-200", "-scale-x-0", + "-scale-x-50", + "-scale-x-75", + "-scale-x-90", + "-scale-x-95", "-scale-x-100", "-scale-x-105", "-scale-x-110", "-scale-x-125", "-scale-x-150", "-scale-x-200", - "-scale-x-50", - "-scale-x-75", - "-scale-x-90", - "-scale-x-95", "-scale-y-0", + "-scale-y-50", + "-scale-y-75", + "-scale-y-90", + "-scale-y-95", "-scale-y-100", "-scale-y-105", "-scale-y-110", "-scale-y-125", "-scale-y-150", "-scale-y-200", - "-scale-y-50", - "-scale-y-75", - "-scale-y-90", - "-scale-y-95", "-scale-z-0", + "-scale-z-50", + "-scale-z-75", + "-scale-z-90", + "-scale-z-95", "-scale-z-100", "-scale-z-105", "-scale-z-110", "-scale-z-125", "-scale-z-150", "-scale-z-200", - "-scale-z-50", - "-scale-z-75", - "-scale-z-90", - "-scale-z-95", "-scroll-m-0", "-scroll-m-0.5", "-scroll-m-1", "-scroll-m-1.5", + "-scroll-m-2", + "-scroll-m-2.5", + "-scroll-m-3", + "-scroll-m-3.5", + "-scroll-m-4", + "-scroll-m-5", + "-scroll-m-6", + "-scroll-m-7", + "-scroll-m-8", + "-scroll-m-9", "-scroll-m-10", "-scroll-m-11", "-scroll-m-12", "-scroll-m-14", "-scroll-m-16", - "-scroll-m-2", - "-scroll-m-2.5", "-scroll-m-20", "-scroll-m-24", "-scroll-m-28", - "-scroll-m-3", - "-scroll-m-3.5", "-scroll-m-32", "-scroll-m-36", - "-scroll-m-4", "-scroll-m-40", "-scroll-m-44", "-scroll-m-48", - "-scroll-m-5", "-scroll-m-52", "-scroll-m-56", - "-scroll-m-6", "-scroll-m-60", "-scroll-m-64", - "-scroll-m-7", "-scroll-m-72", - "-scroll-m-8", "-scroll-m-80", - "-scroll-m-9", "-scroll-m-96", "-scroll-m-px", "-scroll-mb-0", "-scroll-mb-0.5", "-scroll-mb-1", "-scroll-mb-1.5", + "-scroll-mb-2", + "-scroll-mb-2.5", + "-scroll-mb-3", + "-scroll-mb-3.5", + "-scroll-mb-4", + "-scroll-mb-5", + "-scroll-mb-6", + "-scroll-mb-7", + "-scroll-mb-8", + "-scroll-mb-9", "-scroll-mb-10", "-scroll-mb-11", "-scroll-mb-12", "-scroll-mb-14", "-scroll-mb-16", - "-scroll-mb-2", - "-scroll-mb-2.5", "-scroll-mb-20", "-scroll-mb-24", "-scroll-mb-28", - "-scroll-mb-3", - "-scroll-mb-3.5", "-scroll-mb-32", "-scroll-mb-36", - "-scroll-mb-4", "-scroll-mb-40", "-scroll-mb-44", "-scroll-mb-48", - "-scroll-mb-5", "-scroll-mb-52", "-scroll-mb-56", - "-scroll-mb-6", "-scroll-mb-60", "-scroll-mb-64", - "-scroll-mb-7", "-scroll-mb-72", - "-scroll-mb-8", "-scroll-mb-80", - "-scroll-mb-9", "-scroll-mb-96", "-scroll-mb-px", "-scroll-me-0", "-scroll-me-0.5", "-scroll-me-1", "-scroll-me-1.5", + "-scroll-me-2", + "-scroll-me-2.5", + "-scroll-me-3", + "-scroll-me-3.5", + "-scroll-me-4", + "-scroll-me-5", + "-scroll-me-6", + "-scroll-me-7", + "-scroll-me-8", + "-scroll-me-9", "-scroll-me-10", "-scroll-me-11", "-scroll-me-12", "-scroll-me-14", "-scroll-me-16", - "-scroll-me-2", - "-scroll-me-2.5", "-scroll-me-20", "-scroll-me-24", "-scroll-me-28", - "-scroll-me-3", - "-scroll-me-3.5", "-scroll-me-32", "-scroll-me-36", - "-scroll-me-4", "-scroll-me-40", "-scroll-me-44", "-scroll-me-48", - "-scroll-me-5", "-scroll-me-52", "-scroll-me-56", - "-scroll-me-6", "-scroll-me-60", "-scroll-me-64", - "-scroll-me-7", "-scroll-me-72", - "-scroll-me-8", "-scroll-me-80", - "-scroll-me-9", "-scroll-me-96", "-scroll-me-px", "-scroll-ml-0", "-scroll-ml-0.5", "-scroll-ml-1", "-scroll-ml-1.5", + "-scroll-ml-2", + "-scroll-ml-2.5", + "-scroll-ml-3", + "-scroll-ml-3.5", + "-scroll-ml-4", + "-scroll-ml-5", + "-scroll-ml-6", + "-scroll-ml-7", + "-scroll-ml-8", + "-scroll-ml-9", "-scroll-ml-10", "-scroll-ml-11", "-scroll-ml-12", "-scroll-ml-14", "-scroll-ml-16", - "-scroll-ml-2", - "-scroll-ml-2.5", "-scroll-ml-20", "-scroll-ml-24", "-scroll-ml-28", - "-scroll-ml-3", - "-scroll-ml-3.5", "-scroll-ml-32", "-scroll-ml-36", - "-scroll-ml-4", "-scroll-ml-40", "-scroll-ml-44", "-scroll-ml-48", - "-scroll-ml-5", "-scroll-ml-52", "-scroll-ml-56", - "-scroll-ml-6", "-scroll-ml-60", "-scroll-ml-64", - "-scroll-ml-7", "-scroll-ml-72", - "-scroll-ml-8", "-scroll-ml-80", - "-scroll-ml-9", "-scroll-ml-96", "-scroll-ml-px", "-scroll-mr-0", "-scroll-mr-0.5", "-scroll-mr-1", "-scroll-mr-1.5", + "-scroll-mr-2", + "-scroll-mr-2.5", + "-scroll-mr-3", + "-scroll-mr-3.5", + "-scroll-mr-4", + "-scroll-mr-5", + "-scroll-mr-6", + "-scroll-mr-7", + "-scroll-mr-8", + "-scroll-mr-9", "-scroll-mr-10", "-scroll-mr-11", "-scroll-mr-12", "-scroll-mr-14", "-scroll-mr-16", - "-scroll-mr-2", - "-scroll-mr-2.5", "-scroll-mr-20", "-scroll-mr-24", "-scroll-mr-28", - "-scroll-mr-3", - "-scroll-mr-3.5", "-scroll-mr-32", "-scroll-mr-36", - "-scroll-mr-4", "-scroll-mr-40", "-scroll-mr-44", "-scroll-mr-48", - "-scroll-mr-5", "-scroll-mr-52", "-scroll-mr-56", - "-scroll-mr-6", "-scroll-mr-60", "-scroll-mr-64", - "-scroll-mr-7", "-scroll-mr-72", - "-scroll-mr-8", "-scroll-mr-80", - "-scroll-mr-9", "-scroll-mr-96", "-scroll-mr-px", "-scroll-ms-0", "-scroll-ms-0.5", "-scroll-ms-1", "-scroll-ms-1.5", + "-scroll-ms-2", + "-scroll-ms-2.5", + "-scroll-ms-3", + "-scroll-ms-3.5", + "-scroll-ms-4", + "-scroll-ms-5", + "-scroll-ms-6", + "-scroll-ms-7", + "-scroll-ms-8", + "-scroll-ms-9", "-scroll-ms-10", "-scroll-ms-11", "-scroll-ms-12", "-scroll-ms-14", "-scroll-ms-16", - "-scroll-ms-2", - "-scroll-ms-2.5", "-scroll-ms-20", "-scroll-ms-24", "-scroll-ms-28", - "-scroll-ms-3", - "-scroll-ms-3.5", "-scroll-ms-32", "-scroll-ms-36", - "-scroll-ms-4", "-scroll-ms-40", "-scroll-ms-44", "-scroll-ms-48", - "-scroll-ms-5", "-scroll-ms-52", "-scroll-ms-56", - "-scroll-ms-6", "-scroll-ms-60", "-scroll-ms-64", - "-scroll-ms-7", "-scroll-ms-72", - "-scroll-ms-8", "-scroll-ms-80", - "-scroll-ms-9", "-scroll-ms-96", "-scroll-ms-px", "-scroll-mt-0", "-scroll-mt-0.5", "-scroll-mt-1", "-scroll-mt-1.5", + "-scroll-mt-2", + "-scroll-mt-2.5", + "-scroll-mt-3", + "-scroll-mt-3.5", + "-scroll-mt-4", + "-scroll-mt-5", + "-scroll-mt-6", + "-scroll-mt-7", + "-scroll-mt-8", + "-scroll-mt-9", "-scroll-mt-10", "-scroll-mt-11", "-scroll-mt-12", "-scroll-mt-14", "-scroll-mt-16", - "-scroll-mt-2", - "-scroll-mt-2.5", "-scroll-mt-20", "-scroll-mt-24", "-scroll-mt-28", - "-scroll-mt-3", - "-scroll-mt-3.5", "-scroll-mt-32", "-scroll-mt-36", - "-scroll-mt-4", "-scroll-mt-40", "-scroll-mt-44", "-scroll-mt-48", - "-scroll-mt-5", "-scroll-mt-52", "-scroll-mt-56", - "-scroll-mt-6", "-scroll-mt-60", "-scroll-mt-64", - "-scroll-mt-7", "-scroll-mt-72", - "-scroll-mt-8", "-scroll-mt-80", - "-scroll-mt-9", "-scroll-mt-96", "-scroll-mt-px", "-scroll-mx-0", "-scroll-mx-0.5", "-scroll-mx-1", "-scroll-mx-1.5", + "-scroll-mx-2", + "-scroll-mx-2.5", + "-scroll-mx-3", + "-scroll-mx-3.5", + "-scroll-mx-4", + "-scroll-mx-5", + "-scroll-mx-6", + "-scroll-mx-7", + "-scroll-mx-8", + "-scroll-mx-9", "-scroll-mx-10", "-scroll-mx-11", "-scroll-mx-12", "-scroll-mx-14", "-scroll-mx-16", - "-scroll-mx-2", - "-scroll-mx-2.5", "-scroll-mx-20", "-scroll-mx-24", "-scroll-mx-28", - "-scroll-mx-3", - "-scroll-mx-3.5", "-scroll-mx-32", "-scroll-mx-36", - "-scroll-mx-4", "-scroll-mx-40", "-scroll-mx-44", "-scroll-mx-48", - "-scroll-mx-5", "-scroll-mx-52", "-scroll-mx-56", - "-scroll-mx-6", "-scroll-mx-60", "-scroll-mx-64", - "-scroll-mx-7", "-scroll-mx-72", - "-scroll-mx-8", "-scroll-mx-80", - "-scroll-mx-9", "-scroll-mx-96", "-scroll-mx-px", "-scroll-my-0", "-scroll-my-0.5", "-scroll-my-1", "-scroll-my-1.5", + "-scroll-my-2", + "-scroll-my-2.5", + "-scroll-my-3", + "-scroll-my-3.5", + "-scroll-my-4", + "-scroll-my-5", + "-scroll-my-6", + "-scroll-my-7", + "-scroll-my-8", + "-scroll-my-9", "-scroll-my-10", "-scroll-my-11", "-scroll-my-12", "-scroll-my-14", "-scroll-my-16", - "-scroll-my-2", - "-scroll-my-2.5", "-scroll-my-20", "-scroll-my-24", "-scroll-my-28", - "-scroll-my-3", - "-scroll-my-3.5", "-scroll-my-32", "-scroll-my-36", - "-scroll-my-4", "-scroll-my-40", "-scroll-my-44", "-scroll-my-48", - "-scroll-my-5", "-scroll-my-52", "-scroll-my-56", - "-scroll-my-6", "-scroll-my-60", "-scroll-my-64", - "-scroll-my-7", "-scroll-my-72", - "-scroll-my-8", "-scroll-my-80", - "-scroll-my-9", "-scroll-my-96", "-scroll-my-px", "-skew-0", "-skew-1", - "-skew-12", "-skew-2", "-skew-3", "-skew-6", + "-skew-12", "-skew-x-0", "-skew-x-1", - "-skew-x-12", "-skew-x-2", "-skew-x-3", "-skew-x-6", + "-skew-x-12", "-skew-y-0", "-skew-y-1", - "-skew-y-12", "-skew-y-2", "-skew-y-3", "-skew-y-6", + "-skew-y-12", "-space-x-0", "-space-x-0.5", "-space-x-1", "-space-x-1.5", + "-space-x-2", + "-space-x-2.5", + "-space-x-3", + "-space-x-3.5", + "-space-x-4", + "-space-x-5", + "-space-x-6", + "-space-x-7", + "-space-x-8", + "-space-x-9", "-space-x-10", "-space-x-11", "-space-x-12", "-space-x-14", "-space-x-16", - "-space-x-2", - "-space-x-2.5", "-space-x-20", "-space-x-24", "-space-x-28", - "-space-x-3", - "-space-x-3.5", "-space-x-32", "-space-x-36", - "-space-x-4", "-space-x-40", "-space-x-44", "-space-x-48", - "-space-x-5", "-space-x-52", "-space-x-56", - "-space-x-6", "-space-x-60", "-space-x-64", - "-space-x-7", "-space-x-72", - "-space-x-8", "-space-x-80", - "-space-x-9", "-space-x-96", "-space-x-px", "-space-y-0", "-space-y-0.5", "-space-y-1", "-space-y-1.5", + "-space-y-2", + "-space-y-2.5", + "-space-y-3", + "-space-y-3.5", + "-space-y-4", + "-space-y-5", + "-space-y-6", + "-space-y-7", + "-space-y-8", + "-space-y-9", "-space-y-10", "-space-y-11", "-space-y-12", "-space-y-14", "-space-y-16", - "-space-y-2", - "-space-y-2.5", "-space-y-20", "-space-y-24", "-space-y-28", - "-space-y-3", - "-space-y-3.5", "-space-y-32", "-space-y-36", - "-space-y-4", "-space-y-40", "-space-y-44", "-space-y-48", - "-space-y-5", "-space-y-52", "-space-y-56", - "-space-y-6", "-space-y-60", "-space-y-64", - "-space-y-7", "-space-y-72", - "-space-y-8", "-space-y-80", - "-space-y-9", "-space-y-96", "-space-y-px", "-start-0", "-start-0.5", "-start-1", "-start-1.5", + "-start-2", + "-start-2.5", + "-start-3", + "-start-3.5", + "-start-4", + "-start-5", + "-start-6", + "-start-7", + "-start-8", + "-start-9", "-start-10", "-start-11", "-start-12", "-start-14", "-start-16", - "-start-2", - "-start-2.5", "-start-20", "-start-24", "-start-28", - "-start-3", - "-start-3.5", "-start-32", "-start-36", - "-start-4", "-start-40", "-start-44", "-start-48", - "-start-5", "-start-52", "-start-56", - "-start-6", "-start-60", "-start-64", - "-start-7", "-start-72", - "-start-8", "-start-80", - "-start-9", "-start-96", "-start-full", "-start-px", @@ -1412,35 +1412,35 @@ exports[`getClassList 1`] = ` "-top-0.5", "-top-1", "-top-1.5", + "-top-2", + "-top-2.5", + "-top-3", + "-top-3.5", + "-top-4", + "-top-5", + "-top-6", + "-top-7", + "-top-8", + "-top-9", "-top-10", "-top-11", "-top-12", "-top-14", "-top-16", - "-top-2", - "-top-2.5", "-top-20", "-top-24", "-top-28", - "-top-3", - "-top-3.5", "-top-32", "-top-36", - "-top-4", "-top-40", "-top-44", "-top-48", - "-top-5", "-top-52", "-top-56", - "-top-6", "-top-60", "-top-64", - "-top-7", "-top-72", - "-top-8", "-top-80", - "-top-9", "-top-96", "-top-full", "-top-px", @@ -1448,35 +1448,35 @@ exports[`getClassList 1`] = ` "-translate-0.5", "-translate-1", "-translate-1.5", + "-translate-2", + "-translate-2.5", + "-translate-3", + "-translate-3.5", + "-translate-4", + "-translate-5", + "-translate-6", + "-translate-7", + "-translate-8", + "-translate-9", "-translate-10", "-translate-11", "-translate-12", "-translate-14", "-translate-16", - "-translate-2", - "-translate-2.5", "-translate-20", "-translate-24", "-translate-28", - "-translate-3", - "-translate-3.5", "-translate-32", "-translate-36", - "-translate-4", "-translate-40", "-translate-44", "-translate-48", - "-translate-5", "-translate-52", "-translate-56", - "-translate-6", "-translate-60", "-translate-64", - "-translate-7", "-translate-72", - "-translate-8", "-translate-80", - "-translate-9", "-translate-96", "-translate-full", "-translate-px", @@ -1484,35 +1484,35 @@ exports[`getClassList 1`] = ` "-translate-x-0.5", "-translate-x-1", "-translate-x-1.5", + "-translate-x-2", + "-translate-x-2.5", + "-translate-x-3", + "-translate-x-3.5", + "-translate-x-4", + "-translate-x-5", + "-translate-x-6", + "-translate-x-7", + "-translate-x-8", + "-translate-x-9", "-translate-x-10", "-translate-x-11", "-translate-x-12", "-translate-x-14", "-translate-x-16", - "-translate-x-2", - "-translate-x-2.5", "-translate-x-20", "-translate-x-24", "-translate-x-28", - "-translate-x-3", - "-translate-x-3.5", "-translate-x-32", "-translate-x-36", - "-translate-x-4", "-translate-x-40", "-translate-x-44", "-translate-x-48", - "-translate-x-5", "-translate-x-52", "-translate-x-56", - "-translate-x-6", "-translate-x-60", "-translate-x-64", - "-translate-x-7", "-translate-x-72", - "-translate-x-8", "-translate-x-80", - "-translate-x-9", "-translate-x-96", "-translate-x-full", "-translate-x-px", @@ -1520,35 +1520,35 @@ exports[`getClassList 1`] = ` "-translate-y-0.5", "-translate-y-1", "-translate-y-1.5", + "-translate-y-2", + "-translate-y-2.5", + "-translate-y-3", + "-translate-y-3.5", + "-translate-y-4", + "-translate-y-5", + "-translate-y-6", + "-translate-y-7", + "-translate-y-8", + "-translate-y-9", "-translate-y-10", "-translate-y-11", "-translate-y-12", "-translate-y-14", "-translate-y-16", - "-translate-y-2", - "-translate-y-2.5", "-translate-y-20", "-translate-y-24", "-translate-y-28", - "-translate-y-3", - "-translate-y-3.5", "-translate-y-32", "-translate-y-36", - "-translate-y-4", "-translate-y-40", "-translate-y-44", "-translate-y-48", - "-translate-y-5", "-translate-y-52", "-translate-y-56", - "-translate-y-6", "-translate-y-60", "-translate-y-64", - "-translate-y-7", "-translate-y-72", - "-translate-y-8", "-translate-y-80", - "-translate-y-9", "-translate-y-96", "-translate-y-full", "-translate-y-px", @@ -1556,35 +1556,35 @@ exports[`getClassList 1`] = ` "-translate-z-0.5", "-translate-z-1", "-translate-z-1.5", + "-translate-z-2", + "-translate-z-2.5", + "-translate-z-3", + "-translate-z-3.5", + "-translate-z-4", + "-translate-z-5", + "-translate-z-6", + "-translate-z-7", + "-translate-z-8", + "-translate-z-9", "-translate-z-10", "-translate-z-11", "-translate-z-12", "-translate-z-14", "-translate-z-16", - "-translate-z-2", - "-translate-z-2.5", "-translate-z-20", "-translate-z-24", "-translate-z-28", - "-translate-z-3", - "-translate-z-3.5", "-translate-z-32", "-translate-z-36", - "-translate-z-4", "-translate-z-40", "-translate-z-44", "-translate-z-48", - "-translate-z-5", "-translate-z-52", "-translate-z-56", - "-translate-z-6", "-translate-z-60", "-translate-z-64", - "-translate-z-7", "-translate-z-72", - "-translate-z-8", "-translate-z-80", - "-translate-z-9", "-translate-z-96", "-translate-z-px", "-underline-offset-0", @@ -1693,44 +1693,44 @@ exports[`getClassList 1`] = ` "auto-rows-min", "backdrop-blur-none", "backdrop-brightness-0", + "backdrop-brightness-50", + "backdrop-brightness-75", + "backdrop-brightness-90", + "backdrop-brightness-95", "backdrop-brightness-100", "backdrop-brightness-105", "backdrop-brightness-110", "backdrop-brightness-125", "backdrop-brightness-150", "backdrop-brightness-200", - "backdrop-brightness-50", - "backdrop-brightness-75", - "backdrop-brightness-90", - "backdrop-brightness-95", "backdrop-contrast-0", + "backdrop-contrast-50", + "backdrop-contrast-75", "backdrop-contrast-100", "backdrop-contrast-125", "backdrop-contrast-150", "backdrop-contrast-200", - "backdrop-contrast-50", - "backdrop-contrast-75", "backdrop-grayscale", "backdrop-grayscale-0", - "backdrop-grayscale-100", "backdrop-grayscale-25", "backdrop-grayscale-50", "backdrop-grayscale-75", + "backdrop-grayscale-100", "backdrop-hue-rotate-0", "backdrop-hue-rotate-15", - "backdrop-hue-rotate-180", "backdrop-hue-rotate-30", "backdrop-hue-rotate-60", "backdrop-hue-rotate-90", + "backdrop-hue-rotate-180", "backdrop-invert", "backdrop-invert-0", - "backdrop-invert-100", "backdrop-invert-25", "backdrop-invert-50", "backdrop-invert-75", + "backdrop-invert-100", "backdrop-opacity-0", + "backdrop-opacity-5", "backdrop-opacity-10", - "backdrop-opacity-100", "backdrop-opacity-15", "backdrop-opacity-20", "backdrop-opacity-25", @@ -1738,7 +1738,6 @@ exports[`getClassList 1`] = ` "backdrop-opacity-35", "backdrop-opacity-40", "backdrop-opacity-45", - "backdrop-opacity-5", "backdrop-opacity-50", "backdrop-opacity-55", "backdrop-opacity-60", @@ -1749,54 +1748,57 @@ exports[`getClassList 1`] = ` "backdrop-opacity-85", "backdrop-opacity-90", "backdrop-opacity-95", + "backdrop-opacity-100", "backdrop-opacity-background", "backdrop-saturate-0", + "backdrop-saturate-50", "backdrop-saturate-100", "backdrop-saturate-150", "backdrop-saturate-200", - "backdrop-saturate-50", "backdrop-sepia", "backdrop-sepia-0", - "backdrop-sepia-100", "backdrop-sepia-50", + "backdrop-sepia-100", "backface-hidden", "backface-visible", "basis-0", "basis-0.5", "basis-1", "basis-1.5", + "basis-2", + "basis-2.5", + "basis-3", + "basis-3.5", + "basis-4", + "basis-5", + "basis-6", + "basis-7", + "basis-8", + "basis-9", "basis-10", "basis-11", "basis-12", "basis-14", "basis-16", - "basis-2", - "basis-2.5", "basis-20", "basis-24", "basis-28", - "basis-3", - "basis-3.5", "basis-32", "basis-36", - "basis-4", "basis-40", "basis-44", "basis-48", - "basis-5", "basis-52", "basis-56", - "basis-6", "basis-60", "basis-64", - "basis-7", "basis-72", - "basis-8", "basis-80", - "basis-9", "basis-96", "basis-auto", "basis-full", + "basis-lg", + "basis-md", "basis-px", "bg-auto", "bg-blend-color", @@ -1839,6 +1841,33 @@ exports[`getClassList 1`] = ` "bg-conic-0/shorter", "bg-conic-0/increasing", "bg-conic-0/decreasing", + "bg-conic-30", + "bg-conic-30/oklab", + "bg-conic-30/oklch", + "bg-conic-30/srgb", + "bg-conic-30/hsl", + "bg-conic-30/longer", + "bg-conic-30/shorter", + "bg-conic-30/increasing", + "bg-conic-30/decreasing", + "bg-conic-60", + "bg-conic-60/oklab", + "bg-conic-60/oklch", + "bg-conic-60/srgb", + "bg-conic-60/hsl", + "bg-conic-60/longer", + "bg-conic-60/shorter", + "bg-conic-60/increasing", + "bg-conic-60/decreasing", + "bg-conic-90", + "bg-conic-90/oklab", + "bg-conic-90/oklch", + "bg-conic-90/srgb", + "bg-conic-90/hsl", + "bg-conic-90/longer", + "bg-conic-90/shorter", + "bg-conic-90/increasing", + "bg-conic-90/decreasing", "bg-conic-120", "bg-conic-120/oklab", "bg-conic-120/oklch", @@ -1893,15 +1922,6 @@ exports[`getClassList 1`] = ` "bg-conic-270/shorter", "bg-conic-270/increasing", "bg-conic-270/decreasing", - "bg-conic-30", - "bg-conic-30/oklab", - "bg-conic-30/oklch", - "bg-conic-30/srgb", - "bg-conic-30/hsl", - "bg-conic-30/longer", - "bg-conic-30/shorter", - "bg-conic-30/increasing", - "bg-conic-30/decreasing", "bg-conic-300", "bg-conic-300/oklab", "bg-conic-300/oklch", @@ -1920,24 +1940,6 @@ exports[`getClassList 1`] = ` "bg-conic-330/shorter", "bg-conic-330/increasing", "bg-conic-330/decreasing", - "bg-conic-60", - "bg-conic-60/oklab", - "bg-conic-60/oklch", - "bg-conic-60/srgb", - "bg-conic-60/hsl", - "bg-conic-60/longer", - "bg-conic-60/shorter", - "bg-conic-60/increasing", - "bg-conic-60/decreasing", - "bg-conic-90", - "bg-conic-90/oklab", - "bg-conic-90/oklch", - "bg-conic-90/srgb", - "bg-conic-90/hsl", - "bg-conic-90/longer", - "bg-conic-90/shorter", - "bg-conic-90/increasing", - "bg-conic-90/decreasing", "bg-contain", "bg-cover", "bg-current", @@ -1997,6 +1999,33 @@ exports[`getClassList 1`] = ` "bg-linear-0/shorter", "bg-linear-0/increasing", "bg-linear-0/decreasing", + "bg-linear-30", + "bg-linear-30/oklab", + "bg-linear-30/oklch", + "bg-linear-30/srgb", + "bg-linear-30/hsl", + "bg-linear-30/longer", + "bg-linear-30/shorter", + "bg-linear-30/increasing", + "bg-linear-30/decreasing", + "bg-linear-60", + "bg-linear-60/oklab", + "bg-linear-60/oklch", + "bg-linear-60/srgb", + "bg-linear-60/hsl", + "bg-linear-60/longer", + "bg-linear-60/shorter", + "bg-linear-60/increasing", + "bg-linear-60/decreasing", + "bg-linear-90", + "bg-linear-90/oklab", + "bg-linear-90/oklch", + "bg-linear-90/srgb", + "bg-linear-90/hsl", + "bg-linear-90/longer", + "bg-linear-90/shorter", + "bg-linear-90/increasing", + "bg-linear-90/decreasing", "bg-linear-120", "bg-linear-120/oklab", "bg-linear-120/oklch", @@ -2051,15 +2080,6 @@ exports[`getClassList 1`] = ` "bg-linear-270/shorter", "bg-linear-270/increasing", "bg-linear-270/decreasing", - "bg-linear-30", - "bg-linear-30/oklab", - "bg-linear-30/oklch", - "bg-linear-30/srgb", - "bg-linear-30/hsl", - "bg-linear-30/longer", - "bg-linear-30/shorter", - "bg-linear-30/increasing", - "bg-linear-30/decreasing", "bg-linear-300", "bg-linear-300/oklab", "bg-linear-300/oklch", @@ -2078,24 +2098,6 @@ exports[`getClassList 1`] = ` "bg-linear-330/shorter", "bg-linear-330/increasing", "bg-linear-330/decreasing", - "bg-linear-60", - "bg-linear-60/oklab", - "bg-linear-60/oklch", - "bg-linear-60/srgb", - "bg-linear-60/hsl", - "bg-linear-60/longer", - "bg-linear-60/shorter", - "bg-linear-60/increasing", - "bg-linear-60/decreasing", - "bg-linear-90", - "bg-linear-90/oklab", - "bg-linear-90/oklch", - "bg-linear-90/srgb", - "bg-linear-90/hsl", - "bg-linear-90/longer", - "bg-linear-90/shorter", - "bg-linear-90/increasing", - "bg-linear-90/decreasing", "bg-linear-to-b", "bg-linear-to-b/oklab", "bg-linear-to-b/oklch", @@ -2759,105 +2761,105 @@ exports[`getClassList 1`] = ` "border-spacing-0.5", "border-spacing-1", "border-spacing-1.5", + "border-spacing-2", + "border-spacing-2.5", + "border-spacing-3", + "border-spacing-3.5", + "border-spacing-4", + "border-spacing-5", + "border-spacing-6", + "border-spacing-7", + "border-spacing-8", + "border-spacing-9", "border-spacing-10", "border-spacing-11", "border-spacing-12", "border-spacing-14", "border-spacing-16", - "border-spacing-2", - "border-spacing-2.5", "border-spacing-20", "border-spacing-24", "border-spacing-28", - "border-spacing-3", - "border-spacing-3.5", "border-spacing-32", "border-spacing-36", - "border-spacing-4", "border-spacing-40", "border-spacing-44", "border-spacing-48", - "border-spacing-5", "border-spacing-52", "border-spacing-56", - "border-spacing-6", "border-spacing-60", "border-spacing-64", - "border-spacing-7", "border-spacing-72", - "border-spacing-8", "border-spacing-80", - "border-spacing-9", "border-spacing-96", "border-spacing-px", "border-spacing-x-0", "border-spacing-x-0.5", "border-spacing-x-1", "border-spacing-x-1.5", + "border-spacing-x-2", + "border-spacing-x-2.5", + "border-spacing-x-3", + "border-spacing-x-3.5", + "border-spacing-x-4", + "border-spacing-x-5", + "border-spacing-x-6", + "border-spacing-x-7", + "border-spacing-x-8", + "border-spacing-x-9", "border-spacing-x-10", "border-spacing-x-11", "border-spacing-x-12", "border-spacing-x-14", "border-spacing-x-16", - "border-spacing-x-2", - "border-spacing-x-2.5", "border-spacing-x-20", "border-spacing-x-24", "border-spacing-x-28", - "border-spacing-x-3", - "border-spacing-x-3.5", "border-spacing-x-32", "border-spacing-x-36", - "border-spacing-x-4", "border-spacing-x-40", "border-spacing-x-44", "border-spacing-x-48", - "border-spacing-x-5", "border-spacing-x-52", "border-spacing-x-56", - "border-spacing-x-6", "border-spacing-x-60", "border-spacing-x-64", - "border-spacing-x-7", "border-spacing-x-72", - "border-spacing-x-8", "border-spacing-x-80", - "border-spacing-x-9", "border-spacing-x-96", "border-spacing-x-px", "border-spacing-y-0", "border-spacing-y-0.5", "border-spacing-y-1", "border-spacing-y-1.5", + "border-spacing-y-2", + "border-spacing-y-2.5", + "border-spacing-y-3", + "border-spacing-y-3.5", + "border-spacing-y-4", + "border-spacing-y-5", + "border-spacing-y-6", + "border-spacing-y-7", + "border-spacing-y-8", + "border-spacing-y-9", "border-spacing-y-10", "border-spacing-y-11", "border-spacing-y-12", "border-spacing-y-14", "border-spacing-y-16", - "border-spacing-y-2", - "border-spacing-y-2.5", "border-spacing-y-20", "border-spacing-y-24", "border-spacing-y-28", - "border-spacing-y-3", - "border-spacing-y-3.5", "border-spacing-y-32", "border-spacing-y-36", - "border-spacing-y-4", "border-spacing-y-40", "border-spacing-y-44", "border-spacing-y-48", - "border-spacing-y-5", "border-spacing-y-52", "border-spacing-y-56", - "border-spacing-y-6", "border-spacing-y-60", "border-spacing-y-64", - "border-spacing-y-7", "border-spacing-y-72", - "border-spacing-y-8", "border-spacing-y-80", - "border-spacing-y-9", "border-spacing-y-96", "border-spacing-y-px", "border-t", @@ -3162,35 +3164,35 @@ exports[`getClassList 1`] = ` "bottom-0.5", "bottom-1", "bottom-1.5", + "bottom-2", + "bottom-2.5", + "bottom-3", + "bottom-3.5", + "bottom-4", + "bottom-5", + "bottom-6", + "bottom-7", + "bottom-8", + "bottom-9", "bottom-10", "bottom-11", "bottom-12", "bottom-14", "bottom-16", - "bottom-2", - "bottom-2.5", "bottom-20", "bottom-24", "bottom-28", - "bottom-3", - "bottom-3.5", "bottom-32", "bottom-36", - "bottom-4", "bottom-40", "bottom-44", "bottom-48", - "bottom-5", "bottom-52", "bottom-56", - "bottom-6", "bottom-60", "bottom-64", - "bottom-7", "bottom-72", - "bottom-8", "bottom-80", - "bottom-9", "bottom-96", "bottom-auto", "bottom-full", @@ -3224,16 +3226,16 @@ exports[`getClassList 1`] = ` "break-normal", "break-words", "brightness-0", + "brightness-50", + "brightness-75", + "brightness-90", + "brightness-95", "brightness-100", "brightness-105", "brightness-110", "brightness-125", "brightness-150", "brightness-200", - "brightness-50", - "brightness-75", - "brightness-90", - "brightness-95", "capitalize", "caption-bottom", "caption-top", @@ -3311,10 +3313,6 @@ exports[`getClassList 1`] = ` "clear-start", "col-auto", "col-end-1", - "col-end-10", - "col-end-11", - "col-end-12", - "col-end-13", "col-end-2", "col-end-3", "col-end-4", @@ -3323,11 +3321,12 @@ exports[`getClassList 1`] = ` "col-end-7", "col-end-8", "col-end-9", + "col-end-10", + "col-end-11", + "col-end-12", + "col-end-13", "col-end-auto", "col-span-1", - "col-span-10", - "col-span-11", - "col-span-12", "col-span-2", "col-span-3", "col-span-4", @@ -3336,12 +3335,11 @@ exports[`getClassList 1`] = ` "col-span-7", "col-span-8", "col-span-9", + "col-span-10", + "col-span-11", + "col-span-12", "col-span-full", "col-start-1", - "col-start-10", - "col-start-11", - "col-start-12", - "col-start-13", "col-start-2", "col-start-3", "col-start-4", @@ -3350,12 +3348,13 @@ exports[`getClassList 1`] = ` "col-start-7", "col-start-8", "col-start-9", + "col-start-10", + "col-start-11", + "col-start-12", + "col-start-13", "col-start-auto", "collapse", "columns-1", - "columns-10", - "columns-11", - "columns-12", "columns-2", "columns-3", "columns-4", @@ -3364,7 +3363,12 @@ exports[`getClassList 1`] = ` "columns-7", "columns-8", "columns-9", + "columns-10", + "columns-11", + "columns-12", "columns-auto", + "columns-lg", + "columns-md", "contain-content", "contain-inline-size", "contain-layout", @@ -3386,12 +3390,12 @@ exports[`getClassList 1`] = ` "content-stretch", "contents", "contrast-0", + "contrast-50", + "contrast-75", "contrast-100", "contrast-125", "contrast-150", "contrast-200", - "contrast-50", - "contrast-75", "cursor-alias", "cursor-all-scroll", "cursor-auto", @@ -3504,14 +3508,14 @@ exports[`getClassList 1`] = ` "decoration-transparent/95", "decoration-transparent/100", "decoration-wavy", + "delay-75", "delay-100", - "delay-1000", "delay-150", "delay-200", "delay-300", "delay-500", "delay-700", - "delay-75", + "delay-1000", "diagonal-fractions", "divide-current", "divide-current/0", @@ -3598,14 +3602,14 @@ exports[`getClassList 1`] = ` "divide-y-reverse", "drop-shadow-none", "drop-shadow-sm", + "duration-75", "duration-100", - "duration-1000", "duration-150", "duration-200", "duration-300", "duration-500", "duration-700", - "duration-75", + "duration-1000", "duration-initial", "ease-initial", "ease-linear", @@ -3613,35 +3617,35 @@ exports[`getClassList 1`] = ` "end-0.5", "end-1", "end-1.5", + "end-2", + "end-2.5", + "end-3", + "end-3.5", + "end-4", + "end-5", + "end-6", + "end-7", + "end-8", + "end-9", "end-10", "end-11", "end-12", "end-14", "end-16", - "end-2", - "end-2.5", "end-20", "end-24", "end-28", - "end-3", - "end-3.5", "end-32", "end-36", - "end-4", "end-40", "end-44", "end-48", - "end-5", "end-52", "end-56", - "end-6", "end-60", "end-64", - "end-7", "end-72", - "end-8", "end-80", - "end-9", "end-96", "end-auto", "end-full", @@ -3733,25 +3737,18 @@ exports[`getClassList 1`] = ` "float-right", "float-start", "flow-root", - "font-black", "font-bold", - "font-extrabold", - "font-extralight", - "font-light", - "font-medium", - "font-normal", "font-sans", - "font-semibold", + "font-stretch-50%", + "font-stretch-75%", + "font-stretch-90%", + "font-stretch-95%", "font-stretch-100%", "font-stretch-105%", "font-stretch-110%", "font-stretch-125%", "font-stretch-150%", "font-stretch-200%", - "font-stretch-50%", - "font-stretch-75%", - "font-stretch-90%", - "font-stretch-95%", "font-stretch-condensed", "font-stretch-expanded", "font-stretch-extra-condensed", @@ -3762,12 +3759,11 @@ exports[`getClassList 1`] = ` "font-stretch-ultra-condensed", "font-stretch-ultra-expanded", "font-superbold", - "font-thin", "forced-color-adjust-auto", "forced-color-adjust-none", "from-0%", + "from-5%", "from-10%", - "from-100%", "from-15%", "from-20%", "from-25%", @@ -3775,7 +3771,6 @@ exports[`getClassList 1`] = ` "from-35%", "from-40%", "from-45%", - "from-5%", "from-50%", "from-55%", "from-60%", @@ -3786,6 +3781,7 @@ exports[`getClassList 1`] = ` "from-85%", "from-90%", "from-95%", + "from-100%", "from-current", "from-current/0", "from-current/5", @@ -3856,118 +3852,115 @@ exports[`getClassList 1`] = ` "gap-0.5", "gap-1", "gap-1.5", + "gap-2", + "gap-2.5", + "gap-3", + "gap-3.5", + "gap-4", + "gap-5", + "gap-6", + "gap-7", + "gap-8", + "gap-9", "gap-10", "gap-11", "gap-12", "gap-14", "gap-16", - "gap-2", - "gap-2.5", "gap-20", "gap-24", "gap-28", - "gap-3", - "gap-3.5", "gap-32", "gap-36", - "gap-4", "gap-40", "gap-44", "gap-48", - "gap-5", "gap-52", "gap-56", - "gap-6", "gap-60", "gap-64", - "gap-7", "gap-72", - "gap-8", "gap-80", - "gap-9", "gap-96", "gap-px", "gap-x-0", "gap-x-0.5", "gap-x-1", "gap-x-1.5", + "gap-x-2", + "gap-x-2.5", + "gap-x-3", + "gap-x-3.5", + "gap-x-4", + "gap-x-5", + "gap-x-6", + "gap-x-7", + "gap-x-8", + "gap-x-9", "gap-x-10", "gap-x-11", "gap-x-12", "gap-x-14", "gap-x-16", - "gap-x-2", - "gap-x-2.5", "gap-x-20", "gap-x-24", "gap-x-28", - "gap-x-3", - "gap-x-3.5", "gap-x-32", "gap-x-36", - "gap-x-4", "gap-x-40", "gap-x-44", "gap-x-48", - "gap-x-5", "gap-x-52", "gap-x-56", - "gap-x-6", "gap-x-60", "gap-x-64", - "gap-x-7", "gap-x-72", - "gap-x-8", "gap-x-80", - "gap-x-9", "gap-x-96", "gap-x-px", "gap-y-0", "gap-y-0.5", "gap-y-1", "gap-y-1.5", + "gap-y-2", + "gap-y-2.5", + "gap-y-3", + "gap-y-3.5", + "gap-y-4", + "gap-y-5", + "gap-y-6", + "gap-y-7", + "gap-y-8", + "gap-y-9", "gap-y-10", "gap-y-11", "gap-y-12", "gap-y-14", "gap-y-16", - "gap-y-2", - "gap-y-2.5", "gap-y-20", "gap-y-24", "gap-y-28", - "gap-y-3", - "gap-y-3.5", "gap-y-32", "gap-y-36", - "gap-y-4", "gap-y-40", "gap-y-44", "gap-y-48", - "gap-y-5", "gap-y-52", "gap-y-56", - "gap-y-6", "gap-y-60", "gap-y-64", - "gap-y-7", "gap-y-72", - "gap-y-8", "gap-y-80", - "gap-y-9", "gap-y-96", "gap-y-px", "grayscale", "grayscale-0", - "grayscale-100", "grayscale-25", "grayscale-50", "grayscale-75", + "grayscale-100", "grid", "grid-cols-1", - "grid-cols-10", - "grid-cols-11", - "grid-cols-12", "grid-cols-2", "grid-cols-3", "grid-cols-4", @@ -3976,6 +3969,9 @@ exports[`getClassList 1`] = ` "grid-cols-7", "grid-cols-8", "grid-cols-9", + "grid-cols-10", + "grid-cols-11", + "grid-cols-12", "grid-cols-none", "grid-cols-subgrid", "grid-flow-col", @@ -3984,9 +3980,6 @@ exports[`getClassList 1`] = ` "grid-flow-row", "grid-flow-row-dense", "grid-rows-1", - "grid-rows-10", - "grid-rows-11", - "grid-rows-12", "grid-rows-2", "grid-rows-3", "grid-rows-4", @@ -3995,6 +3988,9 @@ exports[`getClassList 1`] = ` "grid-rows-7", "grid-rows-8", "grid-rows-9", + "grid-rows-10", + "grid-rows-11", + "grid-rows-12", "grid-rows-none", "grid-rows-subgrid", "grow", @@ -4003,35 +3999,35 @@ exports[`getClassList 1`] = ` "h-0.5", "h-1", "h-1.5", + "h-2", + "h-2.5", + "h-3", + "h-3.5", + "h-4", + "h-5", + "h-6", + "h-7", + "h-8", + "h-9", "h-10", "h-11", "h-12", "h-14", "h-16", - "h-2", - "h-2.5", "h-20", "h-24", "h-28", - "h-3", - "h-3.5", "h-32", "h-36", - "h-4", "h-40", "h-44", "h-48", - "h-5", "h-52", "h-56", - "h-6", "h-60", "h-64", - "h-7", "h-72", - "h-8", "h-80", - "h-9", "h-96", "h-auto", "h-dvh", @@ -4049,10 +4045,10 @@ exports[`getClassList 1`] = ` "hidden", "hue-rotate-0", "hue-rotate-15", - "hue-rotate-180", "hue-rotate-30", "hue-rotate-60", "hue-rotate-90", + "hue-rotate-180", "hyphens-auto", "hyphens-manual", "hyphens-none", @@ -4060,35 +4056,35 @@ exports[`getClassList 1`] = ` "indent-0.5", "indent-1", "indent-1.5", + "indent-2", + "indent-2.5", + "indent-3", + "indent-3.5", + "indent-4", + "indent-5", + "indent-6", + "indent-7", + "indent-8", + "indent-9", "indent-10", "indent-11", "indent-12", "indent-14", "indent-16", - "indent-2", - "indent-2.5", "indent-20", "indent-24", "indent-28", - "indent-3", - "indent-3.5", "indent-32", "indent-36", - "indent-4", "indent-40", "indent-44", "indent-48", - "indent-5", "indent-52", "indent-56", - "indent-6", "indent-60", "indent-64", - "indent-7", "indent-72", - "indent-8", "indent-80", - "indent-9", "indent-96", "indent-px", "inline", @@ -4100,35 +4096,35 @@ exports[`getClassList 1`] = ` "inset-0.5", "inset-1", "inset-1.5", + "inset-2", + "inset-2.5", + "inset-3", + "inset-3.5", + "inset-4", + "inset-5", + "inset-6", + "inset-7", + "inset-8", + "inset-9", "inset-10", "inset-11", "inset-12", "inset-14", "inset-16", - "inset-2", - "inset-2.5", "inset-20", "inset-24", "inset-28", - "inset-3", - "inset-3.5", "inset-32", "inset-36", - "inset-4", "inset-40", "inset-44", "inset-48", - "inset-5", "inset-52", "inset-56", - "inset-6", "inset-60", "inset-64", - "inset-7", "inset-72", - "inset-8", "inset-80", - "inset-9", "inset-96", "inset-auto", "inset-full", @@ -4278,35 +4274,35 @@ exports[`getClassList 1`] = ` "inset-x-0.5", "inset-x-1", "inset-x-1.5", + "inset-x-2", + "inset-x-2.5", + "inset-x-3", + "inset-x-3.5", + "inset-x-4", + "inset-x-5", + "inset-x-6", + "inset-x-7", + "inset-x-8", + "inset-x-9", "inset-x-10", "inset-x-11", "inset-x-12", "inset-x-14", "inset-x-16", - "inset-x-2", - "inset-x-2.5", "inset-x-20", "inset-x-24", "inset-x-28", - "inset-x-3", - "inset-x-3.5", "inset-x-32", "inset-x-36", - "inset-x-4", "inset-x-40", "inset-x-44", "inset-x-48", - "inset-x-5", "inset-x-52", "inset-x-56", - "inset-x-6", "inset-x-60", "inset-x-64", - "inset-x-7", "inset-x-72", - "inset-x-8", "inset-x-80", - "inset-x-9", "inset-x-96", "inset-x-auto", "inset-x-full", @@ -4315,45 +4311,45 @@ exports[`getClassList 1`] = ` "inset-y-0.5", "inset-y-1", "inset-y-1.5", + "inset-y-2", + "inset-y-2.5", + "inset-y-3", + "inset-y-3.5", + "inset-y-4", + "inset-y-5", + "inset-y-6", + "inset-y-7", + "inset-y-8", + "inset-y-9", "inset-y-10", "inset-y-11", "inset-y-12", "inset-y-14", "inset-y-16", - "inset-y-2", - "inset-y-2.5", "inset-y-20", "inset-y-24", "inset-y-28", - "inset-y-3", - "inset-y-3.5", "inset-y-32", "inset-y-36", - "inset-y-4", "inset-y-40", "inset-y-44", "inset-y-48", - "inset-y-5", "inset-y-52", "inset-y-56", - "inset-y-6", "inset-y-60", "inset-y-64", - "inset-y-7", "inset-y-72", - "inset-y-8", "inset-y-80", - "inset-y-9", "inset-y-96", "inset-y-auto", "inset-y-full", "inset-y-px", "invert", "invert-0", - "invert-100", "invert-25", "invert-50", "invert-75", + "invert-100", "invisible", "isolate", "isolation-auto", @@ -4386,35 +4382,35 @@ exports[`getClassList 1`] = ` "leading-0.5", "leading-1", "leading-1.5", + "leading-2", + "leading-2.5", + "leading-3", + "leading-3.5", + "leading-4", + "leading-5", + "leading-6", + "leading-7", + "leading-8", + "leading-9", "leading-10", "leading-11", "leading-12", "leading-14", "leading-16", - "leading-2", - "leading-2.5", "leading-20", "leading-24", "leading-28", - "leading-3", - "leading-3.5", "leading-32", "leading-36", - "leading-4", "leading-40", "leading-44", "leading-48", - "leading-5", "leading-52", "leading-56", - "leading-6", "leading-60", "leading-64", - "leading-7", "leading-72", - "leading-8", "leading-80", - "leading-9", "leading-96", "leading-none", "leading-px", @@ -4422,35 +4418,35 @@ exports[`getClassList 1`] = ` "left-0.5", "left-1", "left-1.5", + "left-2", + "left-2.5", + "left-3", + "left-3.5", + "left-4", + "left-5", + "left-6", + "left-7", + "left-8", + "left-9", "left-10", "left-11", "left-12", "left-14", "left-16", - "left-2", - "left-2.5", "left-20", "left-24", "left-28", - "left-3", - "left-3.5", "left-32", "left-36", - "left-4", "left-40", "left-44", "left-48", - "left-5", "left-52", "left-56", - "left-6", "left-60", "left-64", - "left-7", "left-72", - "left-8", "left-80", - "left-9", "left-96", "left-auto", "left-full", @@ -4476,35 +4472,35 @@ exports[`getClassList 1`] = ` "m-0.5", "m-1", "m-1.5", + "m-2", + "m-2.5", + "m-3", + "m-3.5", + "m-4", + "m-5", + "m-6", + "m-7", + "m-8", + "m-9", "m-10", "m-11", "m-12", "m-14", "m-16", - "m-2", - "m-2.5", "m-20", "m-24", "m-28", - "m-3", - "m-3.5", "m-32", "m-36", - "m-4", "m-40", "m-44", "m-48", - "m-5", "m-52", "m-56", - "m-6", "m-60", "m-64", - "m-7", "m-72", - "m-8", "m-80", - "m-9", "m-96", "m-auto", "m-px", @@ -4512,35 +4508,35 @@ exports[`getClassList 1`] = ` "max-h-0.5", "max-h-1", "max-h-1.5", + "max-h-2", + "max-h-2.5", + "max-h-3", + "max-h-3.5", + "max-h-4", + "max-h-5", + "max-h-6", + "max-h-7", + "max-h-8", + "max-h-9", "max-h-10", "max-h-11", "max-h-12", "max-h-14", "max-h-16", - "max-h-2", - "max-h-2.5", "max-h-20", "max-h-24", "max-h-28", - "max-h-3", - "max-h-3.5", "max-h-32", "max-h-36", - "max-h-4", "max-h-40", "max-h-44", "max-h-48", - "max-h-5", "max-h-52", "max-h-56", - "max-h-6", "max-h-60", "max-h-64", - "max-h-7", "max-h-72", - "max-h-8", "max-h-80", - "max-h-9", "max-h-96", "max-h-auto", "max-h-dvh", @@ -4560,44 +4556,46 @@ exports[`getClassList 1`] = ` "max-w-0.5", "max-w-1", "max-w-1.5", + "max-w-2", + "max-w-2.5", + "max-w-3", + "max-w-3.5", + "max-w-4", + "max-w-5", + "max-w-6", + "max-w-7", + "max-w-8", + "max-w-9", "max-w-10", "max-w-11", "max-w-12", "max-w-14", "max-w-16", - "max-w-2", - "max-w-2.5", "max-w-20", "max-w-24", "max-w-28", - "max-w-3", - "max-w-3.5", "max-w-32", "max-w-36", - "max-w-4", "max-w-40", "max-w-44", "max-w-48", - "max-w-5", "max-w-52", "max-w-56", - "max-w-6", "max-w-60", "max-w-64", - "max-w-7", "max-w-72", - "max-w-8", "max-w-80", - "max-w-9", "max-w-96", "max-w-auto", "max-w-dvh", "max-w-dvw", "max-w-fit", "max-w-full", + "max-w-lg", "max-w-lvh", "max-w-lvw", "max-w-max", + "max-w-md", "max-w-min", "max-w-none", "max-w-px", @@ -4608,35 +4606,35 @@ exports[`getClassList 1`] = ` "mb-0.5", "mb-1", "mb-1.5", + "mb-2", + "mb-2.5", + "mb-3", + "mb-3.5", + "mb-4", + "mb-5", + "mb-6", + "mb-7", + "mb-8", + "mb-9", "mb-10", "mb-11", "mb-12", "mb-14", "mb-16", - "mb-2", - "mb-2.5", "mb-20", "mb-24", "mb-28", - "mb-3", - "mb-3.5", "mb-32", "mb-36", - "mb-4", "mb-40", "mb-44", "mb-48", - "mb-5", "mb-52", "mb-56", - "mb-6", "mb-60", "mb-64", - "mb-7", "mb-72", - "mb-8", "mb-80", - "mb-9", "mb-96", "mb-auto", "mb-px", @@ -4644,35 +4642,35 @@ exports[`getClassList 1`] = ` "me-0.5", "me-1", "me-1.5", + "me-2", + "me-2.5", + "me-3", + "me-3.5", + "me-4", + "me-5", + "me-6", + "me-7", + "me-8", + "me-9", "me-10", "me-11", "me-12", "me-14", "me-16", - "me-2", - "me-2.5", "me-20", "me-24", "me-28", - "me-3", - "me-3.5", "me-32", "me-36", - "me-4", "me-40", "me-44", "me-48", - "me-5", "me-52", "me-56", - "me-6", "me-60", "me-64", - "me-7", "me-72", - "me-8", "me-80", - "me-9", "me-96", "me-auto", "me-px", @@ -4680,35 +4678,35 @@ exports[`getClassList 1`] = ` "min-h-0.5", "min-h-1", "min-h-1.5", + "min-h-2", + "min-h-2.5", + "min-h-3", + "min-h-3.5", + "min-h-4", + "min-h-5", + "min-h-6", + "min-h-7", + "min-h-8", + "min-h-9", "min-h-10", "min-h-11", "min-h-12", "min-h-14", "min-h-16", - "min-h-2", - "min-h-2.5", "min-h-20", "min-h-24", "min-h-28", - "min-h-3", - "min-h-3.5", "min-h-32", "min-h-36", - "min-h-4", "min-h-40", "min-h-44", "min-h-48", - "min-h-5", "min-h-52", "min-h-56", - "min-h-6", "min-h-60", "min-h-64", - "min-h-7", "min-h-72", - "min-h-8", "min-h-80", - "min-h-9", "min-h-96", "min-h-auto", "min-h-dvh", @@ -4727,44 +4725,46 @@ exports[`getClassList 1`] = ` "min-w-0.5", "min-w-1", "min-w-1.5", + "min-w-2", + "min-w-2.5", + "min-w-3", + "min-w-3.5", + "min-w-4", + "min-w-5", + "min-w-6", + "min-w-7", + "min-w-8", + "min-w-9", "min-w-10", "min-w-11", "min-w-12", "min-w-14", "min-w-16", - "min-w-2", - "min-w-2.5", "min-w-20", "min-w-24", "min-w-28", - "min-w-3", - "min-w-3.5", "min-w-32", "min-w-36", - "min-w-4", "min-w-40", "min-w-44", "min-w-48", - "min-w-5", "min-w-52", "min-w-56", - "min-w-6", "min-w-60", "min-w-64", - "min-w-7", "min-w-72", - "min-w-8", "min-w-80", - "min-w-9", "min-w-96", "min-w-auto", "min-w-dvh", "min-w-dvw", "min-w-fit", "min-w-full", + "min-w-lg", "min-w-lvh", "min-w-lvw", "min-w-max", + "min-w-md", "min-w-min", "min-w-px", "min-w-screen", @@ -4792,35 +4792,35 @@ exports[`getClassList 1`] = ` "ml-0.5", "ml-1", "ml-1.5", + "ml-2", + "ml-2.5", + "ml-3", + "ml-3.5", + "ml-4", + "ml-5", + "ml-6", + "ml-7", + "ml-8", + "ml-9", "ml-10", "ml-11", "ml-12", "ml-14", "ml-16", - "ml-2", - "ml-2.5", "ml-20", "ml-24", "ml-28", - "ml-3", - "ml-3.5", "ml-32", "ml-36", - "ml-4", "ml-40", "ml-44", "ml-48", - "ml-5", "ml-52", "ml-56", - "ml-6", "ml-60", "ml-64", - "ml-7", "ml-72", - "ml-8", "ml-80", - "ml-9", "ml-96", "ml-auto", "ml-px", @@ -4828,35 +4828,35 @@ exports[`getClassList 1`] = ` "mr-0.5", "mr-1", "mr-1.5", + "mr-2", + "mr-2.5", + "mr-3", + "mr-3.5", + "mr-4", + "mr-5", + "mr-6", + "mr-7", + "mr-8", + "mr-9", "mr-10", "mr-11", "mr-12", "mr-14", "mr-16", - "mr-2", - "mr-2.5", "mr-20", "mr-24", "mr-28", - "mr-3", - "mr-3.5", "mr-32", "mr-36", - "mr-4", "mr-40", "mr-44", "mr-48", - "mr-5", "mr-52", "mr-56", - "mr-6", "mr-60", "mr-64", - "mr-7", "mr-72", - "mr-8", "mr-80", - "mr-9", "mr-96", "mr-auto", "mr-px", @@ -4864,35 +4864,35 @@ exports[`getClassList 1`] = ` "ms-0.5", "ms-1", "ms-1.5", + "ms-2", + "ms-2.5", + "ms-3", + "ms-3.5", + "ms-4", + "ms-5", + "ms-6", + "ms-7", + "ms-8", + "ms-9", "ms-10", "ms-11", "ms-12", "ms-14", "ms-16", - "ms-2", - "ms-2.5", "ms-20", "ms-24", "ms-28", - "ms-3", - "ms-3.5", "ms-32", "ms-36", - "ms-4", "ms-40", "ms-44", "ms-48", - "ms-5", "ms-52", "ms-56", - "ms-6", "ms-60", "ms-64", - "ms-7", "ms-72", - "ms-8", "ms-80", - "ms-9", "ms-96", "ms-auto", "ms-px", @@ -4900,35 +4900,35 @@ exports[`getClassList 1`] = ` "mt-0.5", "mt-1", "mt-1.5", + "mt-2", + "mt-2.5", + "mt-3", + "mt-3.5", + "mt-4", + "mt-5", + "mt-6", + "mt-7", + "mt-8", + "mt-9", "mt-10", "mt-11", "mt-12", "mt-14", "mt-16", - "mt-2", - "mt-2.5", "mt-20", "mt-24", "mt-28", - "mt-3", - "mt-3.5", "mt-32", "mt-36", - "mt-4", "mt-40", "mt-44", "mt-48", - "mt-5", "mt-52", "mt-56", - "mt-6", "mt-60", "mt-64", - "mt-7", "mt-72", - "mt-8", "mt-80", - "mt-9", "mt-96", "mt-auto", "mt-px", @@ -4936,35 +4936,35 @@ exports[`getClassList 1`] = ` "mx-0.5", "mx-1", "mx-1.5", + "mx-2", + "mx-2.5", + "mx-3", + "mx-3.5", + "mx-4", + "mx-5", + "mx-6", + "mx-7", + "mx-8", + "mx-9", "mx-10", "mx-11", "mx-12", "mx-14", "mx-16", - "mx-2", - "mx-2.5", "mx-20", "mx-24", "mx-28", - "mx-3", - "mx-3.5", "mx-32", "mx-36", - "mx-4", "mx-40", "mx-44", "mx-48", - "mx-5", "mx-52", "mx-56", - "mx-6", "mx-60", "mx-64", - "mx-7", "mx-72", - "mx-8", "mx-80", - "mx-9", "mx-96", "mx-auto", "mx-px", @@ -4972,35 +4972,35 @@ exports[`getClassList 1`] = ` "my-0.5", "my-1", "my-1.5", + "my-2", + "my-2.5", + "my-3", + "my-3.5", + "my-4", + "my-5", + "my-6", + "my-7", + "my-8", + "my-9", "my-10", "my-11", "my-12", "my-14", "my-16", - "my-2", - "my-2.5", "my-20", "my-24", "my-28", - "my-3", - "my-3.5", "my-32", "my-36", - "my-4", "my-40", "my-44", "my-48", - "my-5", "my-52", "my-56", - "my-6", "my-60", "my-64", - "my-7", "my-72", - "my-8", "my-80", - "my-9", "my-96", "my-auto", "my-px", @@ -5025,8 +5025,8 @@ exports[`getClassList 1`] = ` "object-top", "oldstyle-nums", "opacity-0", + "opacity-5", "opacity-10", - "opacity-100", "opacity-15", "opacity-20", "opacity-25", @@ -5034,7 +5034,6 @@ exports[`getClassList 1`] = ` "opacity-35", "opacity-40", "opacity-45", - "opacity-5", "opacity-50", "opacity-55", "opacity-60", @@ -5045,11 +5044,9 @@ exports[`getClassList 1`] = ` "opacity-85", "opacity-90", "opacity-95", + "opacity-100", "opacity-background", "order-1", - "order-10", - "order-11", - "order-12", "order-2", "order-3", "order-4", @@ -5058,6 +5055,9 @@ exports[`getClassList 1`] = ` "order-7", "order-8", "order-9", + "order-10", + "order-11", + "order-12", "order-first", "order-last", "order-none", @@ -5204,105 +5204,105 @@ exports[`getClassList 1`] = ` "p-0.5", "p-1", "p-1.5", + "p-2", + "p-2.5", + "p-3", + "p-3.5", + "p-4", + "p-5", + "p-6", + "p-7", + "p-8", + "p-9", "p-10", "p-11", "p-12", "p-14", "p-16", - "p-2", - "p-2.5", "p-20", "p-24", "p-28", - "p-3", - "p-3.5", "p-32", "p-36", - "p-4", "p-40", "p-44", "p-48", - "p-5", "p-52", "p-56", - "p-6", "p-60", "p-64", - "p-7", "p-72", - "p-8", "p-80", - "p-9", "p-96", "p-px", "pb-0", "pb-0.5", "pb-1", "pb-1.5", + "pb-2", + "pb-2.5", + "pb-3", + "pb-3.5", + "pb-4", + "pb-5", + "pb-6", + "pb-7", + "pb-8", + "pb-9", "pb-10", "pb-11", "pb-12", "pb-14", "pb-16", - "pb-2", - "pb-2.5", "pb-20", "pb-24", "pb-28", - "pb-3", - "pb-3.5", "pb-32", "pb-36", - "pb-4", "pb-40", "pb-44", "pb-48", - "pb-5", "pb-52", "pb-56", - "pb-6", "pb-60", "pb-64", - "pb-7", "pb-72", - "pb-8", "pb-80", - "pb-9", "pb-96", "pb-px", "pe-0", "pe-0.5", "pe-1", "pe-1.5", + "pe-2", + "pe-2.5", + "pe-3", + "pe-3.5", + "pe-4", + "pe-5", + "pe-6", + "pe-7", + "pe-8", + "pe-9", "pe-10", "pe-11", "pe-12", "pe-14", "pe-16", - "pe-2", - "pe-2.5", "pe-20", "pe-24", "pe-28", - "pe-3", - "pe-3.5", "pe-32", "pe-36", - "pe-4", "pe-40", "pe-44", "pe-48", - "pe-5", "pe-52", "pe-56", - "pe-6", "pe-60", "pe-64", - "pe-7", "pe-72", - "pe-8", "pe-80", - "pe-9", "pe-96", "pe-px", "perspective-dramatic", @@ -5321,35 +5321,35 @@ exports[`getClassList 1`] = ` "pl-0.5", "pl-1", "pl-1.5", + "pl-2", + "pl-2.5", + "pl-3", + "pl-3.5", + "pl-4", + "pl-5", + "pl-6", + "pl-7", + "pl-8", + "pl-9", "pl-10", "pl-11", "pl-12", "pl-14", "pl-16", - "pl-2", - "pl-2.5", "pl-20", "pl-24", "pl-28", - "pl-3", - "pl-3.5", "pl-32", "pl-36", - "pl-4", "pl-40", "pl-44", "pl-48", - "pl-5", "pl-52", "pl-56", - "pl-6", "pl-60", "pl-64", - "pl-7", "pl-72", - "pl-8", "pl-80", - "pl-9", "pl-96", "pl-px", "place-content-around", @@ -5442,35 +5442,35 @@ exports[`getClassList 1`] = ` "pr-0.5", "pr-1", "pr-1.5", + "pr-2", + "pr-2.5", + "pr-3", + "pr-3.5", + "pr-4", + "pr-5", + "pr-6", + "pr-7", + "pr-8", + "pr-9", "pr-10", "pr-11", "pr-12", "pr-14", "pr-16", - "pr-2", - "pr-2.5", "pr-20", "pr-24", "pr-28", - "pr-3", - "pr-3.5", "pr-32", "pr-36", - "pr-4", "pr-40", "pr-44", "pr-48", - "pr-5", "pr-52", "pr-56", - "pr-6", "pr-60", "pr-64", - "pr-7", "pr-72", - "pr-8", "pr-80", - "pr-9", "pr-96", "pr-px", "proportional-nums", @@ -5478,140 +5478,140 @@ exports[`getClassList 1`] = ` "ps-0.5", "ps-1", "ps-1.5", + "ps-2", + "ps-2.5", + "ps-3", + "ps-3.5", + "ps-4", + "ps-5", + "ps-6", + "ps-7", + "ps-8", + "ps-9", "ps-10", "ps-11", "ps-12", "ps-14", "ps-16", - "ps-2", - "ps-2.5", "ps-20", "ps-24", "ps-28", - "ps-3", - "ps-3.5", "ps-32", "ps-36", - "ps-4", "ps-40", "ps-44", "ps-48", - "ps-5", "ps-52", "ps-56", - "ps-6", "ps-60", "ps-64", - "ps-7", "ps-72", - "ps-8", "ps-80", - "ps-9", "ps-96", "ps-px", "pt-0", "pt-0.5", "pt-1", "pt-1.5", + "pt-2", + "pt-2.5", + "pt-3", + "pt-3.5", + "pt-4", + "pt-5", + "pt-6", + "pt-7", + "pt-8", + "pt-9", "pt-10", "pt-11", "pt-12", "pt-14", "pt-16", - "pt-2", - "pt-2.5", "pt-20", "pt-24", "pt-28", - "pt-3", - "pt-3.5", "pt-32", "pt-36", - "pt-4", "pt-40", "pt-44", "pt-48", - "pt-5", "pt-52", "pt-56", - "pt-6", "pt-60", "pt-64", - "pt-7", "pt-72", - "pt-8", "pt-80", - "pt-9", "pt-96", "pt-px", "px-0", "px-0.5", "px-1", "px-1.5", + "px-2", + "px-2.5", + "px-3", + "px-3.5", + "px-4", + "px-5", + "px-6", + "px-7", + "px-8", + "px-9", "px-10", "px-11", "px-12", "px-14", "px-16", - "px-2", - "px-2.5", "px-20", "px-24", "px-28", - "px-3", - "px-3.5", "px-32", "px-36", - "px-4", "px-40", "px-44", "px-48", - "px-5", "px-52", "px-56", - "px-6", "px-60", "px-64", - "px-7", "px-72", - "px-8", "px-80", - "px-9", "px-96", "px-px", "py-0", "py-0.5", "py-1", "py-1.5", + "py-2", + "py-2.5", + "py-3", + "py-3.5", + "py-4", + "py-5", + "py-6", + "py-7", + "py-8", + "py-9", "py-10", "py-11", "py-12", "py-14", "py-16", - "py-2", - "py-2.5", "py-20", "py-24", "py-28", - "py-3", - "py-3.5", "py-32", "py-36", - "py-4", "py-40", "py-44", "py-48", - "py-5", "py-52", "py-56", - "py-6", "py-60", "py-64", - "py-7", "py-72", - "py-8", "py-80", - "py-9", "py-96", "py-px", "relative", @@ -5623,35 +5623,35 @@ exports[`getClassList 1`] = ` "right-0.5", "right-1", "right-1.5", + "right-2", + "right-2.5", + "right-3", + "right-3.5", + "right-4", + "right-5", + "right-6", + "right-7", + "right-8", + "right-9", "right-10", "right-11", "right-12", "right-14", "right-16", - "right-2", - "right-2.5", "right-20", "right-24", "right-28", - "right-3", - "right-3.5", "right-32", "right-36", - "right-4", "right-40", "right-44", "right-48", - "right-5", "right-52", "right-56", - "right-6", "right-60", "right-64", - "right-7", "right-72", - "right-8", "right-80", - "right-9", "right-96", "right-auto", "right-full", @@ -5802,41 +5802,41 @@ exports[`getClassList 1`] = ` "ring-transparent/100", "rotate-0", "rotate-1", - "rotate-12", - "rotate-180", "rotate-2", "rotate-3", - "rotate-45", "rotate-6", + "rotate-12", + "rotate-45", "rotate-90", + "rotate-180", "rotate-none", "rotate-x-0", "rotate-x-1", - "rotate-x-12", - "rotate-x-180", "rotate-x-2", "rotate-x-3", - "rotate-x-45", "rotate-x-6", + "rotate-x-12", + "rotate-x-45", "rotate-x-90", + "rotate-x-180", "rotate-y-0", "rotate-y-1", - "rotate-y-12", - "rotate-y-180", "rotate-y-2", "rotate-y-3", - "rotate-y-45", "rotate-y-6", + "rotate-y-12", + "rotate-y-45", "rotate-y-90", + "rotate-y-180", "rotate-z-0", "rotate-z-1", - "rotate-z-12", - "rotate-z-180", "rotate-z-2", "rotate-z-3", - "rotate-z-45", "rotate-z-6", + "rotate-z-12", + "rotate-z-45", "rotate-z-90", + "rotate-z-180", "rounded-b-full", "rounded-b-none", "rounded-bl-full", @@ -5869,10 +5869,6 @@ exports[`getClassList 1`] = ` "rounded-tr-none", "row-auto", "row-end-1", - "row-end-10", - "row-end-11", - "row-end-12", - "row-end-13", "row-end-2", "row-end-3", "row-end-4", @@ -5881,11 +5877,12 @@ exports[`getClassList 1`] = ` "row-end-7", "row-end-8", "row-end-9", + "row-end-10", + "row-end-11", + "row-end-12", + "row-end-13", "row-end-auto", "row-span-1", - "row-span-10", - "row-span-11", - "row-span-12", "row-span-2", "row-span-3", "row-span-4", @@ -5894,12 +5891,11 @@ exports[`getClassList 1`] = ` "row-span-7", "row-span-8", "row-span-9", + "row-span-10", + "row-span-11", + "row-span-12", "row-span-full", "row-start-1", - "row-start-10", - "row-start-11", - "row-start-12", - "row-start-13", "row-start-2", "row-start-3", "row-start-4", @@ -5908,58 +5904,62 @@ exports[`getClassList 1`] = ` "row-start-7", "row-start-8", "row-start-9", + "row-start-10", + "row-start-11", + "row-start-12", + "row-start-13", "row-start-auto", "saturate-0", + "saturate-50", "saturate-100", "saturate-150", "saturate-200", - "saturate-50", "scale-0", + "scale-3d", + "scale-50", + "scale-75", + "scale-90", + "scale-95", "scale-100", "scale-105", "scale-110", "scale-125", "scale-150", "scale-200", - "scale-3d", - "scale-50", - "scale-75", - "scale-90", - "scale-95", "scale-none", "scale-x-0", + "scale-x-50", + "scale-x-75", + "scale-x-90", + "scale-x-95", "scale-x-100", "scale-x-105", "scale-x-110", "scale-x-125", "scale-x-150", "scale-x-200", - "scale-x-50", - "scale-x-75", - "scale-x-90", - "scale-x-95", "scale-y-0", + "scale-y-50", + "scale-y-75", + "scale-y-90", + "scale-y-95", "scale-y-100", "scale-y-105", "scale-y-110", "scale-y-125", "scale-y-150", "scale-y-200", - "scale-y-50", - "scale-y-75", - "scale-y-90", - "scale-y-95", "scale-z-0", + "scale-z-50", + "scale-z-75", + "scale-z-90", + "scale-z-95", "scale-z-100", "scale-z-105", "scale-z-110", "scale-z-125", "scale-z-150", "scale-z-200", - "scale-z-50", - "scale-z-75", - "scale-z-90", - "scale-z-95", "scheme-dark", "scheme-light", "scheme-light-dark", @@ -5971,630 +5971,630 @@ exports[`getClassList 1`] = ` "scroll-m-0.5", "scroll-m-1", "scroll-m-1.5", + "scroll-m-2", + "scroll-m-2.5", + "scroll-m-3", + "scroll-m-3.5", + "scroll-m-4", + "scroll-m-5", + "scroll-m-6", + "scroll-m-7", + "scroll-m-8", + "scroll-m-9", "scroll-m-10", "scroll-m-11", "scroll-m-12", "scroll-m-14", "scroll-m-16", - "scroll-m-2", - "scroll-m-2.5", "scroll-m-20", "scroll-m-24", "scroll-m-28", - "scroll-m-3", - "scroll-m-3.5", "scroll-m-32", "scroll-m-36", - "scroll-m-4", "scroll-m-40", "scroll-m-44", "scroll-m-48", - "scroll-m-5", "scroll-m-52", "scroll-m-56", - "scroll-m-6", "scroll-m-60", "scroll-m-64", - "scroll-m-7", "scroll-m-72", - "scroll-m-8", "scroll-m-80", - "scroll-m-9", "scroll-m-96", "scroll-m-px", "scroll-mb-0", "scroll-mb-0.5", "scroll-mb-1", "scroll-mb-1.5", + "scroll-mb-2", + "scroll-mb-2.5", + "scroll-mb-3", + "scroll-mb-3.5", + "scroll-mb-4", + "scroll-mb-5", + "scroll-mb-6", + "scroll-mb-7", + "scroll-mb-8", + "scroll-mb-9", "scroll-mb-10", "scroll-mb-11", "scroll-mb-12", "scroll-mb-14", "scroll-mb-16", - "scroll-mb-2", - "scroll-mb-2.5", "scroll-mb-20", "scroll-mb-24", "scroll-mb-28", - "scroll-mb-3", - "scroll-mb-3.5", "scroll-mb-32", "scroll-mb-36", - "scroll-mb-4", "scroll-mb-40", "scroll-mb-44", "scroll-mb-48", - "scroll-mb-5", "scroll-mb-52", "scroll-mb-56", - "scroll-mb-6", "scroll-mb-60", "scroll-mb-64", - "scroll-mb-7", "scroll-mb-72", - "scroll-mb-8", "scroll-mb-80", - "scroll-mb-9", "scroll-mb-96", "scroll-mb-px", "scroll-me-0", "scroll-me-0.5", "scroll-me-1", "scroll-me-1.5", + "scroll-me-2", + "scroll-me-2.5", + "scroll-me-3", + "scroll-me-3.5", + "scroll-me-4", + "scroll-me-5", + "scroll-me-6", + "scroll-me-7", + "scroll-me-8", + "scroll-me-9", "scroll-me-10", "scroll-me-11", "scroll-me-12", "scroll-me-14", "scroll-me-16", - "scroll-me-2", - "scroll-me-2.5", "scroll-me-20", "scroll-me-24", "scroll-me-28", - "scroll-me-3", - "scroll-me-3.5", "scroll-me-32", "scroll-me-36", - "scroll-me-4", "scroll-me-40", "scroll-me-44", "scroll-me-48", - "scroll-me-5", "scroll-me-52", "scroll-me-56", - "scroll-me-6", "scroll-me-60", "scroll-me-64", - "scroll-me-7", "scroll-me-72", - "scroll-me-8", "scroll-me-80", - "scroll-me-9", "scroll-me-96", "scroll-me-px", "scroll-ml-0", "scroll-ml-0.5", "scroll-ml-1", "scroll-ml-1.5", + "scroll-ml-2", + "scroll-ml-2.5", + "scroll-ml-3", + "scroll-ml-3.5", + "scroll-ml-4", + "scroll-ml-5", + "scroll-ml-6", + "scroll-ml-7", + "scroll-ml-8", + "scroll-ml-9", "scroll-ml-10", "scroll-ml-11", "scroll-ml-12", "scroll-ml-14", "scroll-ml-16", - "scroll-ml-2", - "scroll-ml-2.5", "scroll-ml-20", "scroll-ml-24", "scroll-ml-28", - "scroll-ml-3", - "scroll-ml-3.5", "scroll-ml-32", "scroll-ml-36", - "scroll-ml-4", "scroll-ml-40", "scroll-ml-44", "scroll-ml-48", - "scroll-ml-5", "scroll-ml-52", "scroll-ml-56", - "scroll-ml-6", "scroll-ml-60", "scroll-ml-64", - "scroll-ml-7", "scroll-ml-72", - "scroll-ml-8", "scroll-ml-80", - "scroll-ml-9", "scroll-ml-96", "scroll-ml-px", "scroll-mr-0", "scroll-mr-0.5", "scroll-mr-1", "scroll-mr-1.5", + "scroll-mr-2", + "scroll-mr-2.5", + "scroll-mr-3", + "scroll-mr-3.5", + "scroll-mr-4", + "scroll-mr-5", + "scroll-mr-6", + "scroll-mr-7", + "scroll-mr-8", + "scroll-mr-9", "scroll-mr-10", "scroll-mr-11", "scroll-mr-12", "scroll-mr-14", "scroll-mr-16", - "scroll-mr-2", - "scroll-mr-2.5", "scroll-mr-20", "scroll-mr-24", "scroll-mr-28", - "scroll-mr-3", - "scroll-mr-3.5", "scroll-mr-32", "scroll-mr-36", - "scroll-mr-4", "scroll-mr-40", "scroll-mr-44", "scroll-mr-48", - "scroll-mr-5", "scroll-mr-52", "scroll-mr-56", - "scroll-mr-6", "scroll-mr-60", "scroll-mr-64", - "scroll-mr-7", "scroll-mr-72", - "scroll-mr-8", "scroll-mr-80", - "scroll-mr-9", "scroll-mr-96", "scroll-mr-px", "scroll-ms-0", "scroll-ms-0.5", "scroll-ms-1", "scroll-ms-1.5", + "scroll-ms-2", + "scroll-ms-2.5", + "scroll-ms-3", + "scroll-ms-3.5", + "scroll-ms-4", + "scroll-ms-5", + "scroll-ms-6", + "scroll-ms-7", + "scroll-ms-8", + "scroll-ms-9", "scroll-ms-10", "scroll-ms-11", "scroll-ms-12", "scroll-ms-14", "scroll-ms-16", - "scroll-ms-2", - "scroll-ms-2.5", "scroll-ms-20", "scroll-ms-24", "scroll-ms-28", - "scroll-ms-3", - "scroll-ms-3.5", "scroll-ms-32", "scroll-ms-36", - "scroll-ms-4", "scroll-ms-40", "scroll-ms-44", "scroll-ms-48", - "scroll-ms-5", "scroll-ms-52", "scroll-ms-56", - "scroll-ms-6", "scroll-ms-60", "scroll-ms-64", - "scroll-ms-7", "scroll-ms-72", - "scroll-ms-8", "scroll-ms-80", - "scroll-ms-9", "scroll-ms-96", "scroll-ms-px", "scroll-mt-0", "scroll-mt-0.5", "scroll-mt-1", "scroll-mt-1.5", + "scroll-mt-2", + "scroll-mt-2.5", + "scroll-mt-3", + "scroll-mt-3.5", + "scroll-mt-4", + "scroll-mt-5", + "scroll-mt-6", + "scroll-mt-7", + "scroll-mt-8", + "scroll-mt-9", "scroll-mt-10", "scroll-mt-11", "scroll-mt-12", "scroll-mt-14", "scroll-mt-16", - "scroll-mt-2", - "scroll-mt-2.5", "scroll-mt-20", "scroll-mt-24", "scroll-mt-28", - "scroll-mt-3", - "scroll-mt-3.5", "scroll-mt-32", "scroll-mt-36", - "scroll-mt-4", "scroll-mt-40", "scroll-mt-44", "scroll-mt-48", - "scroll-mt-5", "scroll-mt-52", "scroll-mt-56", - "scroll-mt-6", "scroll-mt-60", "scroll-mt-64", - "scroll-mt-7", "scroll-mt-72", - "scroll-mt-8", "scroll-mt-80", - "scroll-mt-9", "scroll-mt-96", "scroll-mt-px", "scroll-mx-0", "scroll-mx-0.5", "scroll-mx-1", "scroll-mx-1.5", + "scroll-mx-2", + "scroll-mx-2.5", + "scroll-mx-3", + "scroll-mx-3.5", + "scroll-mx-4", + "scroll-mx-5", + "scroll-mx-6", + "scroll-mx-7", + "scroll-mx-8", + "scroll-mx-9", "scroll-mx-10", "scroll-mx-11", "scroll-mx-12", "scroll-mx-14", "scroll-mx-16", - "scroll-mx-2", - "scroll-mx-2.5", "scroll-mx-20", "scroll-mx-24", "scroll-mx-28", - "scroll-mx-3", - "scroll-mx-3.5", "scroll-mx-32", "scroll-mx-36", - "scroll-mx-4", "scroll-mx-40", "scroll-mx-44", "scroll-mx-48", - "scroll-mx-5", "scroll-mx-52", "scroll-mx-56", - "scroll-mx-6", "scroll-mx-60", "scroll-mx-64", - "scroll-mx-7", "scroll-mx-72", - "scroll-mx-8", "scroll-mx-80", - "scroll-mx-9", "scroll-mx-96", "scroll-mx-px", "scroll-my-0", "scroll-my-0.5", "scroll-my-1", "scroll-my-1.5", + "scroll-my-2", + "scroll-my-2.5", + "scroll-my-3", + "scroll-my-3.5", + "scroll-my-4", + "scroll-my-5", + "scroll-my-6", + "scroll-my-7", + "scroll-my-8", + "scroll-my-9", "scroll-my-10", "scroll-my-11", "scroll-my-12", "scroll-my-14", "scroll-my-16", - "scroll-my-2", - "scroll-my-2.5", "scroll-my-20", "scroll-my-24", "scroll-my-28", - "scroll-my-3", - "scroll-my-3.5", "scroll-my-32", "scroll-my-36", - "scroll-my-4", "scroll-my-40", "scroll-my-44", "scroll-my-48", - "scroll-my-5", "scroll-my-52", "scroll-my-56", - "scroll-my-6", "scroll-my-60", "scroll-my-64", - "scroll-my-7", "scroll-my-72", - "scroll-my-8", "scroll-my-80", - "scroll-my-9", "scroll-my-96", "scroll-my-px", "scroll-p-0", "scroll-p-0.5", "scroll-p-1", "scroll-p-1.5", + "scroll-p-2", + "scroll-p-2.5", + "scroll-p-3", + "scroll-p-3.5", + "scroll-p-4", + "scroll-p-5", + "scroll-p-6", + "scroll-p-7", + "scroll-p-8", + "scroll-p-9", "scroll-p-10", "scroll-p-11", "scroll-p-12", "scroll-p-14", "scroll-p-16", - "scroll-p-2", - "scroll-p-2.5", "scroll-p-20", "scroll-p-24", "scroll-p-28", - "scroll-p-3", - "scroll-p-3.5", "scroll-p-32", "scroll-p-36", - "scroll-p-4", "scroll-p-40", "scroll-p-44", "scroll-p-48", - "scroll-p-5", "scroll-p-52", "scroll-p-56", - "scroll-p-6", "scroll-p-60", "scroll-p-64", - "scroll-p-7", "scroll-p-72", - "scroll-p-8", "scroll-p-80", - "scroll-p-9", "scroll-p-96", "scroll-p-px", "scroll-pb-0", "scroll-pb-0.5", "scroll-pb-1", "scroll-pb-1.5", + "scroll-pb-2", + "scroll-pb-2.5", + "scroll-pb-3", + "scroll-pb-3.5", + "scroll-pb-4", + "scroll-pb-5", + "scroll-pb-6", + "scroll-pb-7", + "scroll-pb-8", + "scroll-pb-9", "scroll-pb-10", "scroll-pb-11", "scroll-pb-12", "scroll-pb-14", "scroll-pb-16", - "scroll-pb-2", - "scroll-pb-2.5", "scroll-pb-20", "scroll-pb-24", "scroll-pb-28", - "scroll-pb-3", - "scroll-pb-3.5", "scroll-pb-32", "scroll-pb-36", - "scroll-pb-4", "scroll-pb-40", "scroll-pb-44", "scroll-pb-48", - "scroll-pb-5", "scroll-pb-52", "scroll-pb-56", - "scroll-pb-6", "scroll-pb-60", "scroll-pb-64", - "scroll-pb-7", "scroll-pb-72", - "scroll-pb-8", "scroll-pb-80", - "scroll-pb-9", "scroll-pb-96", "scroll-pb-px", "scroll-pe-0", "scroll-pe-0.5", "scroll-pe-1", "scroll-pe-1.5", + "scroll-pe-2", + "scroll-pe-2.5", + "scroll-pe-3", + "scroll-pe-3.5", + "scroll-pe-4", + "scroll-pe-5", + "scroll-pe-6", + "scroll-pe-7", + "scroll-pe-8", + "scroll-pe-9", "scroll-pe-10", "scroll-pe-11", "scroll-pe-12", "scroll-pe-14", "scroll-pe-16", - "scroll-pe-2", - "scroll-pe-2.5", "scroll-pe-20", "scroll-pe-24", "scroll-pe-28", - "scroll-pe-3", - "scroll-pe-3.5", "scroll-pe-32", "scroll-pe-36", - "scroll-pe-4", "scroll-pe-40", "scroll-pe-44", "scroll-pe-48", - "scroll-pe-5", "scroll-pe-52", "scroll-pe-56", - "scroll-pe-6", "scroll-pe-60", "scroll-pe-64", - "scroll-pe-7", "scroll-pe-72", - "scroll-pe-8", "scroll-pe-80", - "scroll-pe-9", "scroll-pe-96", "scroll-pe-px", "scroll-pl-0", "scroll-pl-0.5", "scroll-pl-1", "scroll-pl-1.5", + "scroll-pl-2", + "scroll-pl-2.5", + "scroll-pl-3", + "scroll-pl-3.5", + "scroll-pl-4", + "scroll-pl-5", + "scroll-pl-6", + "scroll-pl-7", + "scroll-pl-8", + "scroll-pl-9", "scroll-pl-10", "scroll-pl-11", "scroll-pl-12", "scroll-pl-14", "scroll-pl-16", - "scroll-pl-2", - "scroll-pl-2.5", "scroll-pl-20", "scroll-pl-24", "scroll-pl-28", - "scroll-pl-3", - "scroll-pl-3.5", "scroll-pl-32", "scroll-pl-36", - "scroll-pl-4", "scroll-pl-40", "scroll-pl-44", "scroll-pl-48", - "scroll-pl-5", "scroll-pl-52", "scroll-pl-56", - "scroll-pl-6", "scroll-pl-60", "scroll-pl-64", - "scroll-pl-7", "scroll-pl-72", - "scroll-pl-8", "scroll-pl-80", - "scroll-pl-9", "scroll-pl-96", "scroll-pl-px", "scroll-pr-0", "scroll-pr-0.5", "scroll-pr-1", "scroll-pr-1.5", + "scroll-pr-2", + "scroll-pr-2.5", + "scroll-pr-3", + "scroll-pr-3.5", + "scroll-pr-4", + "scroll-pr-5", + "scroll-pr-6", + "scroll-pr-7", + "scroll-pr-8", + "scroll-pr-9", "scroll-pr-10", "scroll-pr-11", "scroll-pr-12", "scroll-pr-14", "scroll-pr-16", - "scroll-pr-2", - "scroll-pr-2.5", "scroll-pr-20", "scroll-pr-24", "scroll-pr-28", - "scroll-pr-3", - "scroll-pr-3.5", "scroll-pr-32", "scroll-pr-36", - "scroll-pr-4", "scroll-pr-40", "scroll-pr-44", "scroll-pr-48", - "scroll-pr-5", "scroll-pr-52", "scroll-pr-56", - "scroll-pr-6", "scroll-pr-60", "scroll-pr-64", - "scroll-pr-7", "scroll-pr-72", - "scroll-pr-8", "scroll-pr-80", - "scroll-pr-9", "scroll-pr-96", "scroll-pr-px", "scroll-ps-0", "scroll-ps-0.5", "scroll-ps-1", "scroll-ps-1.5", + "scroll-ps-2", + "scroll-ps-2.5", + "scroll-ps-3", + "scroll-ps-3.5", + "scroll-ps-4", + "scroll-ps-5", + "scroll-ps-6", + "scroll-ps-7", + "scroll-ps-8", + "scroll-ps-9", "scroll-ps-10", "scroll-ps-11", "scroll-ps-12", "scroll-ps-14", "scroll-ps-16", - "scroll-ps-2", - "scroll-ps-2.5", "scroll-ps-20", "scroll-ps-24", "scroll-ps-28", - "scroll-ps-3", - "scroll-ps-3.5", "scroll-ps-32", "scroll-ps-36", - "scroll-ps-4", "scroll-ps-40", "scroll-ps-44", "scroll-ps-48", - "scroll-ps-5", "scroll-ps-52", "scroll-ps-56", - "scroll-ps-6", "scroll-ps-60", "scroll-ps-64", - "scroll-ps-7", "scroll-ps-72", - "scroll-ps-8", "scroll-ps-80", - "scroll-ps-9", "scroll-ps-96", "scroll-ps-px", "scroll-pt-0", "scroll-pt-0.5", "scroll-pt-1", "scroll-pt-1.5", + "scroll-pt-2", + "scroll-pt-2.5", + "scroll-pt-3", + "scroll-pt-3.5", + "scroll-pt-4", + "scroll-pt-5", + "scroll-pt-6", + "scroll-pt-7", + "scroll-pt-8", + "scroll-pt-9", "scroll-pt-10", "scroll-pt-11", "scroll-pt-12", "scroll-pt-14", "scroll-pt-16", - "scroll-pt-2", - "scroll-pt-2.5", "scroll-pt-20", "scroll-pt-24", "scroll-pt-28", - "scroll-pt-3", - "scroll-pt-3.5", "scroll-pt-32", "scroll-pt-36", - "scroll-pt-4", "scroll-pt-40", "scroll-pt-44", "scroll-pt-48", - "scroll-pt-5", "scroll-pt-52", "scroll-pt-56", - "scroll-pt-6", "scroll-pt-60", "scroll-pt-64", - "scroll-pt-7", "scroll-pt-72", - "scroll-pt-8", "scroll-pt-80", - "scroll-pt-9", "scroll-pt-96", "scroll-pt-px", "scroll-px-0", "scroll-px-0.5", "scroll-px-1", "scroll-px-1.5", + "scroll-px-2", + "scroll-px-2.5", + "scroll-px-3", + "scroll-px-3.5", + "scroll-px-4", + "scroll-px-5", + "scroll-px-6", + "scroll-px-7", + "scroll-px-8", + "scroll-px-9", "scroll-px-10", "scroll-px-11", "scroll-px-12", "scroll-px-14", "scroll-px-16", - "scroll-px-2", - "scroll-px-2.5", "scroll-px-20", "scroll-px-24", "scroll-px-28", - "scroll-px-3", - "scroll-px-3.5", "scroll-px-32", "scroll-px-36", - "scroll-px-4", "scroll-px-40", "scroll-px-44", "scroll-px-48", - "scroll-px-5", "scroll-px-52", "scroll-px-56", - "scroll-px-6", "scroll-px-60", "scroll-px-64", - "scroll-px-7", "scroll-px-72", - "scroll-px-8", "scroll-px-80", - "scroll-px-9", "scroll-px-96", "scroll-px-px", "scroll-py-0", "scroll-py-0.5", "scroll-py-1", "scroll-py-1.5", + "scroll-py-2", + "scroll-py-2.5", + "scroll-py-3", + "scroll-py-3.5", + "scroll-py-4", + "scroll-py-5", + "scroll-py-6", + "scroll-py-7", + "scroll-py-8", + "scroll-py-9", "scroll-py-10", "scroll-py-11", "scroll-py-12", "scroll-py-14", "scroll-py-16", - "scroll-py-2", - "scroll-py-2.5", "scroll-py-20", "scroll-py-24", "scroll-py-28", - "scroll-py-3", - "scroll-py-3.5", "scroll-py-32", "scroll-py-36", - "scroll-py-4", "scroll-py-40", "scroll-py-44", "scroll-py-48", - "scroll-py-5", "scroll-py-52", "scroll-py-56", - "scroll-py-6", "scroll-py-60", "scroll-py-64", - "scroll-py-7", "scroll-py-72", - "scroll-py-8", "scroll-py-80", - "scroll-py-9", "scroll-py-96", "scroll-py-px", "scroll-smooth", @@ -6610,8 +6610,8 @@ exports[`getClassList 1`] = ` "self-stretch", "sepia", "sepia-0", - "sepia-100", "sepia-50", + "sepia-100", "shadow", "shadow-current", "shadow-current/0", @@ -6687,35 +6687,35 @@ exports[`getClassList 1`] = ` "size-0.5", "size-1", "size-1.5", + "size-2", + "size-2.5", + "size-3", + "size-3.5", + "size-4", + "size-5", + "size-6", + "size-7", + "size-8", + "size-9", "size-10", "size-11", "size-12", "size-14", "size-16", - "size-2", - "size-2.5", "size-20", "size-24", "size-28", - "size-3", - "size-3.5", "size-32", "size-36", - "size-4", "size-40", "size-44", "size-48", - "size-5", "size-52", "size-56", - "size-6", "size-60", "size-64", - "size-7", "size-72", - "size-8", "size-80", - "size-9", "size-96", "size-auto", "size-dvh", @@ -6731,22 +6731,22 @@ exports[`getClassList 1`] = ` "size-svw", "skew-0", "skew-1", - "skew-12", "skew-2", "skew-3", "skew-6", + "skew-12", "skew-x-0", "skew-x-1", - "skew-x-12", "skew-x-2", "skew-x-3", "skew-x-6", + "skew-x-12", "skew-y-0", "skew-y-1", - "skew-y-12", "skew-y-2", "skew-y-3", "skew-y-6", + "skew-y-12", "slashed-zero", "snap-align-none", "snap-always", @@ -6764,35 +6764,35 @@ exports[`getClassList 1`] = ` "space-x-0.5", "space-x-1", "space-x-1.5", + "space-x-2", + "space-x-2.5", + "space-x-3", + "space-x-3.5", + "space-x-4", + "space-x-5", + "space-x-6", + "space-x-7", + "space-x-8", + "space-x-9", "space-x-10", "space-x-11", "space-x-12", "space-x-14", "space-x-16", - "space-x-2", - "space-x-2.5", "space-x-20", "space-x-24", "space-x-28", - "space-x-3", - "space-x-3.5", "space-x-32", "space-x-36", - "space-x-4", "space-x-40", "space-x-44", "space-x-48", - "space-x-5", "space-x-52", "space-x-56", - "space-x-6", "space-x-60", "space-x-64", - "space-x-7", "space-x-72", - "space-x-8", "space-x-80", - "space-x-9", "space-x-96", "space-x-px", "space-x-reverse", @@ -6800,35 +6800,35 @@ exports[`getClassList 1`] = ` "space-y-0.5", "space-y-1", "space-y-1.5", + "space-y-2", + "space-y-2.5", + "space-y-3", + "space-y-3.5", + "space-y-4", + "space-y-5", + "space-y-6", + "space-y-7", + "space-y-8", + "space-y-9", "space-y-10", "space-y-11", "space-y-12", "space-y-14", "space-y-16", - "space-y-2", - "space-y-2.5", "space-y-20", "space-y-24", "space-y-28", - "space-y-3", - "space-y-3.5", "space-y-32", "space-y-36", - "space-y-4", "space-y-40", "space-y-44", "space-y-48", - "space-y-5", "space-y-52", "space-y-56", - "space-y-6", "space-y-60", "space-y-64", - "space-y-7", "space-y-72", - "space-y-8", "space-y-80", - "space-y-9", "space-y-96", "space-y-px", "space-y-reverse", @@ -6838,35 +6838,35 @@ exports[`getClassList 1`] = ` "start-0.5", "start-1", "start-1.5", + "start-2", + "start-2.5", + "start-3", + "start-3.5", + "start-4", + "start-5", + "start-6", + "start-7", + "start-8", + "start-9", "start-10", "start-11", "start-12", "start-14", "start-16", - "start-2", - "start-2.5", "start-20", "start-24", "start-28", - "start-3", - "start-3.5", "start-32", "start-36", - "start-4", "start-40", "start-44", "start-48", - "start-5", "start-52", "start-56", - "start-6", "start-60", "start-64", - "start-7", "start-72", - "start-8", "start-80", - "start-9", "start-96", "start-auto", "start-full", @@ -7037,8 +7037,8 @@ exports[`getClassList 1`] = ` "text-wrap", "text-xs", "to-0%", + "to-5%", "to-10%", - "to-100%", "to-15%", "to-20%", "to-25%", @@ -7046,7 +7046,6 @@ exports[`getClassList 1`] = ` "to-35%", "to-40%", "to-45%", - "to-5%", "to-50%", "to-55%", "to-60%", @@ -7057,6 +7056,7 @@ exports[`getClassList 1`] = ` "to-85%", "to-90%", "to-95%", + "to-100%", "to-current", "to-current/0", "to-current/5", @@ -7127,35 +7127,35 @@ exports[`getClassList 1`] = ` "top-0.5", "top-1", "top-1.5", + "top-2", + "top-2.5", + "top-3", + "top-3.5", + "top-4", + "top-5", + "top-6", + "top-7", + "top-8", + "top-9", "top-10", "top-11", "top-12", "top-14", "top-16", - "top-2", - "top-2.5", "top-20", "top-24", "top-28", - "top-3", - "top-3.5", "top-32", "top-36", - "top-4", "top-40", "top-44", "top-48", - "top-5", "top-52", "top-56", - "top-6", "top-60", "top-64", - "top-7", "top-72", - "top-8", "top-80", - "top-9", "top-96", "top-auto", "top-full", @@ -7194,36 +7194,36 @@ exports[`getClassList 1`] = ` "translate-0.5", "translate-1", "translate-1.5", + "translate-2", + "translate-2.5", + "translate-3", + "translate-3.5", + "translate-3d", + "translate-4", + "translate-5", + "translate-6", + "translate-7", + "translate-8", + "translate-9", "translate-10", "translate-11", "translate-12", "translate-14", "translate-16", - "translate-2", - "translate-2.5", "translate-20", "translate-24", "translate-28", - "translate-3", - "translate-3.5", "translate-32", "translate-36", - "translate-3d", - "translate-4", "translate-40", "translate-44", "translate-48", - "translate-5", "translate-52", "translate-56", - "translate-6", "translate-60", "translate-64", - "translate-7", "translate-72", - "translate-8", "translate-80", - "translate-9", "translate-96", "translate-full", "translate-none", @@ -7232,35 +7232,35 @@ exports[`getClassList 1`] = ` "translate-x-0.5", "translate-x-1", "translate-x-1.5", + "translate-x-2", + "translate-x-2.5", + "translate-x-3", + "translate-x-3.5", + "translate-x-4", + "translate-x-5", + "translate-x-6", + "translate-x-7", + "translate-x-8", + "translate-x-9", "translate-x-10", "translate-x-11", "translate-x-12", "translate-x-14", "translate-x-16", - "translate-x-2", - "translate-x-2.5", "translate-x-20", "translate-x-24", "translate-x-28", - "translate-x-3", - "translate-x-3.5", "translate-x-32", "translate-x-36", - "translate-x-4", "translate-x-40", "translate-x-44", "translate-x-48", - "translate-x-5", "translate-x-52", "translate-x-56", - "translate-x-6", "translate-x-60", "translate-x-64", - "translate-x-7", "translate-x-72", - "translate-x-8", "translate-x-80", - "translate-x-9", "translate-x-96", "translate-x-full", "translate-x-px", @@ -7268,35 +7268,35 @@ exports[`getClassList 1`] = ` "translate-y-0.5", "translate-y-1", "translate-y-1.5", + "translate-y-2", + "translate-y-2.5", + "translate-y-3", + "translate-y-3.5", + "translate-y-4", + "translate-y-5", + "translate-y-6", + "translate-y-7", + "translate-y-8", + "translate-y-9", "translate-y-10", "translate-y-11", "translate-y-12", "translate-y-14", "translate-y-16", - "translate-y-2", - "translate-y-2.5", "translate-y-20", "translate-y-24", "translate-y-28", - "translate-y-3", - "translate-y-3.5", "translate-y-32", "translate-y-36", - "translate-y-4", "translate-y-40", "translate-y-44", "translate-y-48", - "translate-y-5", "translate-y-52", "translate-y-56", - "translate-y-6", "translate-y-60", "translate-y-64", - "translate-y-7", "translate-y-72", - "translate-y-8", "translate-y-80", - "translate-y-9", "translate-y-96", "translate-y-full", "translate-y-px", @@ -7304,35 +7304,35 @@ exports[`getClassList 1`] = ` "translate-z-0.5", "translate-z-1", "translate-z-1.5", + "translate-z-2", + "translate-z-2.5", + "translate-z-3", + "translate-z-3.5", + "translate-z-4", + "translate-z-5", + "translate-z-6", + "translate-z-7", + "translate-z-8", + "translate-z-9", "translate-z-10", "translate-z-11", "translate-z-12", "translate-z-14", "translate-z-16", - "translate-z-2", - "translate-z-2.5", "translate-z-20", "translate-z-24", "translate-z-28", - "translate-z-3", - "translate-z-3.5", "translate-z-32", "translate-z-36", - "translate-z-4", "translate-z-40", "translate-z-44", "translate-z-48", - "translate-z-5", "translate-z-52", "translate-z-56", - "translate-z-6", "translate-z-60", "translate-z-64", - "translate-z-7", "translate-z-72", - "translate-z-8", "translate-z-80", - "translate-z-9", "translate-z-96", "translate-z-px", "truncate", @@ -7345,8 +7345,8 @@ exports[`getClassList 1`] = ` "underline-offset-auto", "uppercase", "via-0%", + "via-5%", "via-10%", - "via-100%", "via-15%", "via-20%", "via-25%", @@ -7354,7 +7354,6 @@ exports[`getClassList 1`] = ` "via-35%", "via-40%", "via-45%", - "via-5%", "via-50%", "via-55%", "via-60%", @@ -7365,6 +7364,7 @@ exports[`getClassList 1`] = ` "via-85%", "via-90%", "via-95%", + "via-100%", "via-current", "via-current/0", "via-current/5", @@ -7437,44 +7437,46 @@ exports[`getClassList 1`] = ` "w-0.5", "w-1", "w-1.5", + "w-2", + "w-2.5", + "w-3", + "w-3.5", + "w-4", + "w-5", + "w-6", + "w-7", + "w-8", + "w-9", "w-10", "w-11", "w-12", "w-14", "w-16", - "w-2", - "w-2.5", "w-20", "w-24", "w-28", - "w-3", - "w-3.5", "w-32", "w-36", - "w-4", "w-40", "w-44", "w-48", - "w-5", "w-52", "w-56", - "w-6", "w-60", "w-64", - "w-7", "w-72", - "w-8", "w-80", - "w-9", "w-96", "w-auto", "w-dvh", "w-dvw", "w-fit", "w-full", + "w-lg", "w-lvh", "w-lvw", "w-max", + "w-md", "w-min", "w-px", "w-screen", @@ -8208,21 +8210,30 @@ exports[`getVariants 1`] = ` "isArbitrary": true, "name": "@max", "selectors": [Function], - "values": [], + "values": [ + "md", + "lg", + ], }, { - "hasDash": true, + "hasDash": false, "isArbitrary": true, "name": "@", "selectors": [Function], - "values": [], + "values": [ + "md", + "lg", + ], }, { "hasDash": true, "isArbitrary": true, "name": "@min", "selectors": [Function], - "values": [], + "values": [ + "md", + "lg", + ], }, { "hasDash": true, diff --git a/packages/tailwindcss/src/intellisense.test.ts b/packages/tailwindcss/src/intellisense.test.ts index 48a30a80d7b4..b95c843fd9d0 100644 --- a/packages/tailwindcss/src/intellisense.test.ts +++ b/packages/tailwindcss/src/intellisense.test.ts @@ -2,12 +2,13 @@ import { expect, test } from 'vitest' import { __unstable__loadDesignSystem } from '.' import { buildDesignSystem } from './design-system' import plugin from './plugin' -import { Theme } from './theme' +import { Theme, ThemeOptions } from './theme' const css = String.raw function loadDesignSystem() { let theme = new Theme() + theme.add('--spacing', '0.25rem') theme.add('--colors-red-500', 'red') theme.add('--colors-blue-500', 'blue') theme.add('--breakpoint-sm', '640px') @@ -21,6 +22,9 @@ function loadDesignSystem() { theme.add('--opacity-background', '0.3') theme.add('--drop-shadow-sm', '0 1px 1px rgb(0 0 0 / 0.05)') theme.add('--inset-shadow-sm', 'inset 0 1px 1px rgb(0 0 0 / 0.05)') + theme.add('--font-weight-bold', '700') + theme.add('--container-md', '768px') + theme.add('--container-lg', '1024px') return buildDesignSystem(theme) } @@ -35,6 +39,25 @@ test('getClassList', () => { expect(classNames).toMatchSnapshot() }) +test('Spacing utilities do not suggest bare values when not using the multiplier-based spacing scale', () => { + let design = loadDesignSystem() + + // Remove spacing scale + design.theme.clearNamespace('--spacing', ThemeOptions.NONE) + + let classList = design.getClassList() + let classNames = classList.flatMap(([name, meta]) => [ + name, + ...meta.modifiers.map((m) => `${name}/${m}`), + ]) + + expect(classNames).not.toContain('p-0') + expect(classNames).not.toContain('p-1') + expect(classNames).not.toContain('p-2') + expect(classNames).not.toContain('p-3') + expect(classNames).not.toContain('p-4') +}) + test('Theme values with underscores are converted back to decimal points', () => { let design = loadDesignSystem() let classes = design.getClassList() diff --git a/packages/tailwindcss/src/intellisense.ts b/packages/tailwindcss/src/intellisense.ts index 5713afda43cd..006a0195e953 100644 --- a/packages/tailwindcss/src/intellisense.ts +++ b/packages/tailwindcss/src/intellisense.ts @@ -1,6 +1,7 @@ import { styleRule, walkDepth } from './ast' import { applyVariant } from './compile' import type { DesignSystem } from './design-system' +import { compare } from './utils/compare' interface ClassMetadata { modifiers: string[] @@ -33,7 +34,7 @@ export function getClassList(design: DesignSystem): ClassEntry[] { } } - list.sort((a, b) => (a[0] === b[0] ? 0 : a[0] < b[0] ? -1 : 1)) + list.sort((a, b) => compare(a[0], b[0])) return list } @@ -57,11 +58,12 @@ export function getVariants(design: DesignSystem) { for (let [root, variant] of design.variants.entries()) { if (variant.kind === 'arbitrary') continue + let hasDash = root !== '@' let values = design.variants.getCompletions(root) function selectors({ value, modifier }: SelectorOptions = {}) { let name = root - if (value) name += `-${value}` + if (value) name += hasDash ? `-${value}` : value if (modifier) name += `/${modifier}` let variant = design.parseVariant(name) @@ -128,7 +130,7 @@ export function getVariants(design: DesignSystem) { name: root, values, isArbitrary: false, - hasDash: true, + hasDash, selectors, }) break @@ -138,7 +140,7 @@ export function getVariants(design: DesignSystem) { name: root, values, isArbitrary: true, - hasDash: true, + hasDash, selectors, }) break @@ -148,7 +150,7 @@ export function getVariants(design: DesignSystem) { name: root, values, isArbitrary: true, - hasDash: true, + hasDash, selectors, }) break diff --git a/packages/tailwindcss/src/utilities.ts b/packages/tailwindcss/src/utilities.ts index 66caeb4ee006..2fb717fae418 100644 --- a/packages/tailwindcss/src/utilities.ts +++ b/packages/tailwindcss/src/utilities.ts @@ -427,42 +427,44 @@ export function createUtilities(theme: Theme) { suggest(name, () => [ { - values: [ - '0', - '0.5', - '1', - '1.5', - '2', - '2.5', - '3', - '3.5', - '4', - '5', - '6', - '7', - '8', - '9', - '10', - '11', - '12', - '14', - '16', - '20', - '24', - '28', - '32', - '36', - '40', - '44', - '48', - '52', - '56', - '60', - '64', - '72', - '80', - '96', - ], + values: theme.get(['--spacing']) + ? [ + '0', + '0.5', + '1', + '1.5', + '2', + '2.5', + '3', + '3.5', + '4', + '5', + '6', + '7', + '8', + '9', + '10', + '11', + '12', + '14', + '16', + '20', + '24', + '28', + '32', + '36', + '40', + '44', + '48', + '52', + '56', + '60', + '64', + '72', + '80', + '96', + ] + : [], supportsNegative, valueThemeKeys: themeKeys, }, @@ -2934,17 +2936,7 @@ export function createUtilities(theme: Theme) { valueThemeKeys: ['--font'], }, { - values: [ - 'thin', - 'extralight', - 'light', - 'normal', - 'medium', - 'semibold', - 'bold', - 'extrabold', - 'black', - ], + values: [], valueThemeKeys: ['--font-weight'], }, ]) diff --git a/packages/tailwindcss/src/variants.ts b/packages/tailwindcss/src/variants.ts index 8ccacce3af63..3d3e145c629f 100644 --- a/packages/tailwindcss/src/variants.ts +++ b/packages/tailwindcss/src/variants.ts @@ -1117,6 +1117,11 @@ export function createVariants(theme: Theme): Variants { '@min', () => Array.from(widths.keys()).filter((key) => key !== null) as string[], ) + + variants.suggest( + '@', + () => Array.from(widths.keys()).filter((key) => key !== null) as string[], + ) } } From e1c084c1b13d0deaba95e971b2531909f6aeb3c5 Mon Sep 17 00:00:00 2001 From: "depfu[bot]" <23717796+depfu[bot]@users.noreply.github.com> Date: Tue, 28 Jan 2025 16:37:57 +0100 Subject: [PATCH 13/29] =?UTF-8?q?Update=20all=20of=20nextjs=2015.1.3=20?= =?UTF-8?q?=E2=86=92=2015.1.4=20(patch)=20(#15630)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Here is everything you need to know about this update. Please take a good look at what changed and the test results before merging this pull request. ### What changed? #### ✳️ eslint-config-next (15.1.3 → 15.1.4) Sorry, we couldn't find anything useful about this release. #### ✳️ next (15.1.3 → 15.1.4) · [Repo](https://github.com/vercel/next.js)
Release Notes

15.1.4

Note

This release is backporting bug fixes. It does not include all pending features/changes on canary.

Core Changes

  • backport: force module format for virtual client-proxy (#74608)
  • Fix prerender tags when notFound is called (#74607)
  • Use provided waitUntil for pending revalidates (#74604)
  • Feature: next/image: add support for images.qualities in next.config (#74588)
  • Chore: docs: add missing search: '' on remotePatterns (#74587)
  • Chore: docs: update version history of next/image (#73923) (#74570)
  • Chore: next/image: improve imgopt api bypass detection for unsupported images (#74569)

Credits

Huge thanks to @ and @ for helping!

Does any of this look wrong? Please let us know.

Commits

See the full diff on Github. The new version differs by 8 commits:

--- ![Depfu Status](https://depfu.com/badges/edd6acd35d74c8d41cbb540c30442adf/stats.svg) [Depfu](https://depfu.com) will automatically keep this PR conflict-free, as long as you don't add any commits to this branch yourself. You can also trigger a rebase manually by commenting with `@depfu rebase`.
All Depfu comment commands
@​depfu rebase
Rebases against your default branch and redoes this update
@​depfu recreate
Recreates this PR, overwriting any edits that you've made to it
@​depfu merge
Merges this PR once your tests are passing and conflicts are resolved
@​depfu cancel merge
Cancels automatic merging of this PR
@​depfu close
Closes this PR and deletes the branch
@​depfu reopen
Restores the branch and reopens this PR (if it's closed)
@​depfu pause
Ignores all future updates for this dependency and closes this PR
@​depfu pause [minor|major]
Ignores all future minor/major updates for this dependency and closes this PR
@​depfu resume
Future versions of this dependency will create PRs again (leaves this PR as is)
Co-authored-by: depfu[bot] <23717796+depfu[bot]@users.noreply.github.com> Co-authored-by: Philipp Spiess --- playgrounds/nextjs/package.json | 4 +- playgrounds/v3/package.json | 4 +- pnpm-lock.yaml | 116 ++++++++++++++++---------------- 3 files changed, 62 insertions(+), 62 deletions(-) diff --git a/playgrounds/nextjs/package.json b/playgrounds/nextjs/package.json index b6f17878d8cd..ee014d80692a 100644 --- a/playgrounds/nextjs/package.json +++ b/playgrounds/nextjs/package.json @@ -11,7 +11,7 @@ "dependencies": { "@tailwindcss/postcss": "workspace:^", "fast-glob": "^3.3.3", - "next": "15.1.3", + "next": "15.1.4", "react": "^19.0.0", "react-dom": "^19.0.0", "tailwindcss": "workspace:^" @@ -21,7 +21,7 @@ "@types/react": "^19.0.7", "@types/react-dom": "^19.0.2", "eslint": "^9.18.0", - "eslint-config-next": "^15.1.3", + "eslint-config-next": "^15.1.4", "typescript": "^5.5.4" } } diff --git a/playgrounds/v3/package.json b/playgrounds/v3/package.json index d79780ecfd5b..c73a33dd8c82 100644 --- a/playgrounds/v3/package.json +++ b/playgrounds/v3/package.json @@ -9,7 +9,7 @@ "upgrade": "node scripts/upgrade.mjs" }, "dependencies": { - "next": "15.1.3", + "next": "15.1.4", "react": "^19.0.0", "react-dom": "^19.0.0", "tailwindcss": "^3" @@ -20,7 +20,7 @@ "@types/react-dom": "^19.0.2", "autoprefixer": "^10.4.20", "eslint": "^9.18.0", - "eslint-config-next": "^15.1.3", + "eslint-config-next": "^15.1.4", "typescript": "^5.5.4" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4c6ebc066794..d08967ddad3e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -405,8 +405,8 @@ importers: specifier: ^3.3.3 version: 3.3.3 next: - specifier: 15.1.3 - version: 15.1.3(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + specifier: 15.1.4 + version: 15.1.4(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) react: specifier: ^19.0.0 version: 19.0.0 @@ -430,8 +430,8 @@ importers: specifier: ^9.18.0 version: 9.18.0(jiti@2.4.2) eslint-config-next: - specifier: ^15.1.3 - version: 15.1.3(eslint@9.18.0(jiti@2.4.2))(typescript@5.5.4) + specifier: ^15.1.4 + version: 15.1.4(eslint@9.18.0(jiti@2.4.2))(typescript@5.5.4) typescript: specifier: ^5.5.4 version: 5.5.4 @@ -439,8 +439,8 @@ importers: playgrounds/v3: dependencies: next: - specifier: 15.1.3 - version: 15.1.3(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + specifier: 15.1.4 + version: 15.1.4(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) react: specifier: ^19.0.0 version: 19.0.0 @@ -467,8 +467,8 @@ importers: specifier: ^9.18.0 version: 9.18.0(jiti@2.4.2) eslint-config-next: - specifier: ^15.1.3 - version: 15.1.3(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3) + specifier: ^15.1.4 + version: 15.1.4(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3) typescript: specifier: ^5.5.4 version: 5.6.3 @@ -1355,56 +1355,56 @@ packages: engines: {node: '>= 10'} hasBin: true - '@next/env@15.1.3': - resolution: {integrity: sha512-Q1tXwQCGWyA3ehMph3VO+E6xFPHDKdHFYosadt0F78EObYxPio0S09H9UGYznDe6Wc8eLKLG89GqcFJJDiK5xw==} + '@next/env@15.1.4': + resolution: {integrity: sha512-2fZ5YZjedi5AGaeoaC0B20zGntEHRhi2SdWcu61i48BllODcAmmtj8n7YarSPt4DaTsJaBFdxQAVEVzgmx2Zpw==} - '@next/eslint-plugin-next@15.1.3': - resolution: {integrity: sha512-oeP1vnc5Cq9UoOb8SYHAEPbCXMzOgG70l+Zfd+Ie00R25FOm+CCVNrcIubJvB1tvBgakXE37MmqSycksXVPRqg==} + '@next/eslint-plugin-next@15.1.4': + resolution: {integrity: sha512-HwlEXwCK3sr6zmVGEvWBjW9tBFs1Oe6hTmTLoFQtpm4As5HCdu8jfSE0XJOp7uhfEGLniIx8yrGxEWwNnY0fmQ==} - '@next/swc-darwin-arm64@15.1.3': - resolution: {integrity: sha512-aZtmIh8jU89DZahXQt1La0f2EMPt/i7W+rG1sLtYJERsP7GRnNFghsciFpQcKHcGh4dUiyTB5C1X3Dde/Gw8gg==} + '@next/swc-darwin-arm64@15.1.4': + resolution: {integrity: sha512-wBEMBs+np+R5ozN1F8Y8d/Dycns2COhRnkxRc+rvnbXke5uZBHkUGFgWxfTXn5rx7OLijuUhyfB+gC/ap58dDw==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] - '@next/swc-darwin-x64@15.1.3': - resolution: {integrity: sha512-aw8901rjkVBK5mbq5oV32IqkJg+CQa6aULNlN8zyCWSsePzEG3kpDkAFkkTOh3eJ0p95KbkLyWBzslQKamXsLA==} + '@next/swc-darwin-x64@15.1.4': + resolution: {integrity: sha512-7sgf5rM7Z81V9w48F02Zz6DgEJulavC0jadab4ZsJ+K2sxMNK0/BtF8J8J3CxnsJN3DGcIdC260wEKssKTukUw==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] - '@next/swc-linux-arm64-gnu@15.1.3': - resolution: {integrity: sha512-YbdaYjyHa4fPK4GR4k2XgXV0p8vbU1SZh7vv6El4bl9N+ZSiMfbmqCuCuNU1Z4ebJMumafaz6UCC2zaJCsdzjw==} + '@next/swc-linux-arm64-gnu@15.1.4': + resolution: {integrity: sha512-JaZlIMNaJenfd55kjaLWMfok+vWBlcRxqnRoZrhFQrhM1uAehP3R0+Aoe+bZOogqlZvAz53nY/k3ZyuKDtT2zQ==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@next/swc-linux-arm64-musl@15.1.3': - resolution: {integrity: sha512-qgH/aRj2xcr4BouwKG3XdqNu33SDadqbkqB6KaZZkozar857upxKakbRllpqZgWl/NDeSCBYPmUAZPBHZpbA0w==} + '@next/swc-linux-arm64-musl@15.1.4': + resolution: {integrity: sha512-7EBBjNoyTO2ipMDgCiORpwwOf5tIueFntKjcN3NK+GAQD7OzFJe84p7a2eQUeWdpzZvhVXuAtIen8QcH71ZCOQ==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@next/swc-linux-x64-gnu@15.1.3': - resolution: {integrity: sha512-uzafnTFwZCPN499fNVnS2xFME8WLC9y7PLRs/yqz5lz1X/ySoxfaK2Hbz74zYUdEg+iDZPd8KlsWaw9HKkLEVw==} + '@next/swc-linux-x64-gnu@15.1.4': + resolution: {integrity: sha512-9TGEgOycqZFuADyFqwmK/9g6S0FYZ3tphR4ebcmCwhL8Y12FW8pIBKJvSwV+UBjMkokstGNH+9F8F031JZKpHw==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@next/swc-linux-x64-musl@15.1.3': - resolution: {integrity: sha512-el6GUFi4SiDYnMTTlJJFMU+GHvw0UIFnffP1qhurrN1qJV3BqaSRUjkDUgVV44T6zpw1Lc6u+yn0puDKHs+Sbw==} + '@next/swc-linux-x64-musl@15.1.4': + resolution: {integrity: sha512-0578bLRVDJOh+LdIoKvgNDz77+Bd85c5JrFgnlbI1SM3WmEQvsjxTA8ATu9Z9FCiIS/AliVAW2DV/BDwpXbtiQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@next/swc-win32-arm64-msvc@15.1.3': - resolution: {integrity: sha512-6RxKjvnvVMM89giYGI1qye9ODsBQpHSHVo8vqA8xGhmRPZHDQUE4jcDbhBwK0GnFMqBnu+XMg3nYukNkmLOLWw==} + '@next/swc-win32-arm64-msvc@15.1.4': + resolution: {integrity: sha512-JgFCiV4libQavwII+kncMCl30st0JVxpPOtzWcAI2jtum4HjYaclobKhj+JsRu5tFqMtA5CJIa0MvYyuu9xjjQ==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] - '@next/swc-win32-x64-msvc@15.1.3': - resolution: {integrity: sha512-VId/f5blObG7IodwC5Grf+aYP0O8Saz1/aeU3YcWqNdIUAmFQY3VEPKPaIzfv32F/clvanOb2K2BR5DtDs6XyQ==} + '@next/swc-win32-x64-msvc@15.1.4': + resolution: {integrity: sha512-xxsJy9wzq7FR5SqPCUqdgSXiNXrMuidgckBa8nH9HtjjxsilgcN6VgXF6tZ3uEWuVEadotQJI8/9EQ6guTC4Yw==} engines: {node: '>= 10'} cpu: [x64] os: [win32] @@ -2372,8 +2372,8 @@ packages: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} - eslint-config-next@15.1.3: - resolution: {integrity: sha512-wGYlNuWnh4ujuKtZvH+7B2Z2vy9nONZE6ztd+DKF7hAsIabkrxmD4TzYHzASHENo42lmz2tnT2B+zN2sOHvpJg==} + eslint-config-next@15.1.4: + resolution: {integrity: sha512-u9+7lFmfhKNgGjhQ9tBeyCFsPJyq0SvGioMJBngPC7HXUpR0U+ckEwQR48s7TrRNHra1REm6evGL2ie38agALg==} peerDependencies: eslint: ^7.23.0 || ^8.0.0 || ^9.0.0 typescript: '>=3.3.1' @@ -3113,8 +3113,8 @@ packages: natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - next@15.1.3: - resolution: {integrity: sha512-5igmb8N8AEhWDYzogcJvtcRDU6n4cMGtBklxKD4biYv4LXN8+awc/bbQ2IM2NQHdVPgJ6XumYXfo3hBtErg1DA==} + next@15.1.4: + resolution: {integrity: sha512-mTaq9dwaSuwwOrcu3ebjDYObekkxRnXpuVL21zotM8qE2W0HBOdVIdg2Li9QjMEZrj73LN96LcWcz62V19FjAg==} engines: {node: ^18.18.0 || ^19.8.0 || >= 20.0.0} hasBin: true peerDependencies: @@ -4630,34 +4630,34 @@ snapshots: '@napi-rs/cli@2.18.4': {} - '@next/env@15.1.3': {} + '@next/env@15.1.4': {} - '@next/eslint-plugin-next@15.1.3': + '@next/eslint-plugin-next@15.1.4': dependencies: fast-glob: 3.3.1 - '@next/swc-darwin-arm64@15.1.3': + '@next/swc-darwin-arm64@15.1.4': optional: true - '@next/swc-darwin-x64@15.1.3': + '@next/swc-darwin-x64@15.1.4': optional: true - '@next/swc-linux-arm64-gnu@15.1.3': + '@next/swc-linux-arm64-gnu@15.1.4': optional: true - '@next/swc-linux-arm64-musl@15.1.3': + '@next/swc-linux-arm64-musl@15.1.4': optional: true - '@next/swc-linux-x64-gnu@15.1.3': + '@next/swc-linux-x64-gnu@15.1.4': optional: true - '@next/swc-linux-x64-musl@15.1.3': + '@next/swc-linux-x64-musl@15.1.4': optional: true - '@next/swc-win32-arm64-msvc@15.1.3': + '@next/swc-win32-arm64-msvc@15.1.4': optional: true - '@next/swc-win32-x64-msvc@15.1.3': + '@next/swc-win32-x64-msvc@15.1.4': optional: true '@nodelib/fs.scandir@2.1.5': @@ -5761,9 +5761,9 @@ snapshots: escape-string-regexp@4.0.0: {} - eslint-config-next@15.1.3(eslint@9.18.0(jiti@2.4.2))(typescript@5.5.4): + eslint-config-next@15.1.4(eslint@9.18.0(jiti@2.4.2))(typescript@5.5.4): dependencies: - '@next/eslint-plugin-next': 15.1.3 + '@next/eslint-plugin-next': 15.1.4 '@rushstack/eslint-patch': 1.10.4 '@typescript-eslint/eslint-plugin': 8.11.0(@typescript-eslint/parser@8.11.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.5.4))(eslint@9.18.0(jiti@2.4.2))(typescript@5.5.4) '@typescript-eslint/parser': 8.11.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.5.4) @@ -5781,9 +5781,9 @@ snapshots: - eslint-plugin-import-x - supports-color - eslint-config-next@15.1.3(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3): + eslint-config-next@15.1.4(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3): dependencies: - '@next/eslint-plugin-next': 15.1.3 + '@next/eslint-plugin-next': 15.1.4 '@rushstack/eslint-patch': 1.10.4 '@typescript-eslint/eslint-plugin': 8.11.0(@typescript-eslint/parser@8.11.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3))(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3) '@typescript-eslint/parser': 8.11.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3) @@ -6077,7 +6077,7 @@ snapshots: '@nodelib/fs.walk': 1.2.8 glob-parent: 5.1.2 merge2: 1.4.1 - micromatch: 4.0.7 + micromatch: 4.0.8 fast-glob@3.3.3: dependencies: @@ -6632,9 +6632,9 @@ snapshots: natural-compare@1.4.0: {} - next@15.1.3(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0): + next@15.1.4(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: - '@next/env': 15.1.3 + '@next/env': 15.1.4 '@swc/counter': 0.1.3 '@swc/helpers': 0.5.15 busboy: 1.6.0 @@ -6644,14 +6644,14 @@ snapshots: react-dom: 19.0.0(react@19.0.0) styled-jsx: 5.1.6(react@19.0.0) optionalDependencies: - '@next/swc-darwin-arm64': 15.1.3 - '@next/swc-darwin-x64': 15.1.3 - '@next/swc-linux-arm64-gnu': 15.1.3 - '@next/swc-linux-arm64-musl': 15.1.3 - '@next/swc-linux-x64-gnu': 15.1.3 - '@next/swc-linux-x64-musl': 15.1.3 - '@next/swc-win32-arm64-msvc': 15.1.3 - '@next/swc-win32-x64-msvc': 15.1.3 + '@next/swc-darwin-arm64': 15.1.4 + '@next/swc-darwin-x64': 15.1.4 + '@next/swc-linux-arm64-gnu': 15.1.4 + '@next/swc-linux-arm64-musl': 15.1.4 + '@next/swc-linux-x64-gnu': 15.1.4 + '@next/swc-linux-x64-musl': 15.1.4 + '@next/swc-win32-arm64-msvc': 15.1.4 + '@next/swc-win32-x64-msvc': 15.1.4 '@playwright/test': 1.49.1 sharp: 0.33.5 transitivePeerDependencies: @@ -6874,7 +6874,7 @@ snapshots: postcss@8.4.31: dependencies: - nanoid: 3.3.7 + nanoid: 3.3.8 picocolors: 1.1.1 source-map-js: 1.2.1 From d66d7aba6f2fe6f73f748bb208ebb9beb03ddab2 Mon Sep 17 00:00:00 2001 From: "depfu[bot]" <23717796+depfu[bot]@users.noreply.github.com> Date: Tue, 28 Jan 2025 15:40:09 +0000 Subject: [PATCH 14/29] =?UTF-8?q?Update=20bun=201.1.43=20=E2=86=92=201.2.0?= =?UTF-8?q?=20(minor)=20(#15922)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Here is everything you need to know about this upgrade. Please take a good look at what changed and the test results before merging this pull request. ### What changed? #### ✳️ bun (1.1.43 → 1.2.0) · [Repo](https://github.com/oven-sh/bun) Sorry, we couldn't find anything useful about this release. --- ![Depfu Status](https://depfu.com/badges/edd6acd35d74c8d41cbb540c30442adf/stats.svg) [Depfu](https://depfu.com) will automatically keep this PR conflict-free, as long as you don't add any commits to this branch yourself. You can also trigger a rebase manually by commenting with `@depfu rebase`.
All Depfu comment commands
@​depfu rebase
Rebases against your default branch and redoes this update
@​depfu recreate
Recreates this PR, overwriting any edits that you've made to it
@​depfu merge
Merges this PR once your tests are passing and conflicts are resolved
@​depfu cancel merge
Cancels automatic merging of this PR
@​depfu close
Closes this PR and deletes the branch
@​depfu reopen
Restores the branch and reopens this PR (if it's closed)
@​depfu pause
Ignores all future updates for this dependency and closes this PR
@​depfu pause [minor|major]
Ignores all future minor/major updates for this dependency and closes this PR
@​depfu resume
Future versions of this dependency will create PRs again (leaves this PR as is)
Co-authored-by: depfu[bot] <23717796+depfu[bot]@users.noreply.github.com> --- packages/@tailwindcss-standalone/package.json | 2 +- pnpm-lock.yaml | 110 ++++++++---------- 2 files changed, 51 insertions(+), 61 deletions(-) diff --git a/packages/@tailwindcss-standalone/package.json b/packages/@tailwindcss-standalone/package.json index 8705696e58cb..89983e529062 100644 --- a/packages/@tailwindcss-standalone/package.json +++ b/packages/@tailwindcss-standalone/package.json @@ -43,7 +43,7 @@ "@parcel/watcher-linux-x64-musl": "^2.5.0", "@parcel/watcher-win32-x64": "^2.5.0", "@types/bun": "^1.1.16", - "bun": "1.1.43", + "bun": "1.2.0", "lightningcss-darwin-arm64": "^1.29.1", "lightningcss-darwin-x64": "^1.29.1", "lightningcss-linux-arm64-gnu": "^1.29.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d08967ddad3e..54a08f906957 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -272,8 +272,8 @@ importers: specifier: ^1.1.16 version: 1.1.16 bun: - specifier: 1.1.43 - version: 1.1.43 + specifier: 1.2.0 + version: 1.2.0 lightningcss-darwin-arm64: specifier: ^1.29.1 version: 1.29.1 @@ -1430,8 +1430,8 @@ packages: cpu: [arm64] os: [darwin] - '@oven/bun-darwin-aarch64@1.1.43': - resolution: {integrity: sha512-hOlLk6m/6Lfb5IV6LWDbuMNQHu6kP0f6HMDdLmsdlIBClgDhR0wRVLfeMuaZnUAdzLfWSJpHlsGn9wOp/ePB0g==} + '@oven/bun-darwin-aarch64@1.2.0': + resolution: {integrity: sha512-51gx0Q7MJshZn554VEHj599/TVW+IDcYITWDzxeRyBN96vrbnYT9sGT58tCvN/yVrJBcTH83aHgjsOefM/egrQ==} cpu: [arm64] os: [darwin] @@ -1440,8 +1440,8 @@ packages: cpu: [x64] os: [darwin] - '@oven/bun-darwin-x64-baseline@1.1.43': - resolution: {integrity: sha512-J4MNzMef+uqJdNTlRfeKOhQ9DSCyls3LeGeDBGrgsc+b3SqH8tW3hrHjMChl+oRj4TGl3tRzBvUItUFqStvKtw==} + '@oven/bun-darwin-x64-baseline@1.2.0': + resolution: {integrity: sha512-ZgtE37T6ogQjp25JZRYbxy4Iziw7+THEnm2Mb+SyjimLSmU10d0fgYsPrT5ZIWfsMh42IXPgUFksG7IY7CmR/A==} cpu: [x64] os: [darwin] @@ -1450,13 +1450,13 @@ packages: cpu: [x64] os: [darwin] - '@oven/bun-darwin-x64@1.1.43': - resolution: {integrity: sha512-6jR/FpiIb9+qEep0FVaaap7enSuTDKKJt6BApHTPoV5TcZddZUeBxnDLiUjB4WiIEqv4JroGy0WmaCI8tXxawA==} + '@oven/bun-darwin-x64@1.2.0': + resolution: {integrity: sha512-LxbuMT5h5IgBbBpCzUCz9JlAIRcVy9tLJ54s+X6H8qpaDNf4TL+bmZQEog/VZMHdyFVQignSiTI6zPkPnoF+Kw==} cpu: [x64] os: [darwin] - '@oven/bun-linux-aarch64-musl@1.1.43': - resolution: {integrity: sha512-PqzSC/+vk6HtVRBq/uSU3Xozw7uixk8ATLXiSImlL0kvrrL/aQJ+GVmlJxAN045+dJhnAXDsy3tkPITqWiQOsw==} + '@oven/bun-linux-aarch64-musl@1.2.0': + resolution: {integrity: sha512-sXfkddLwsOF6x2YfDkmbfuwV5BgaI53G1nh2/cq7iLf1HhdWDhbmB4i9Dw68Gy3tXTrezOOQqZ5+un5OOOXXxg==} cpu: [aarch64] os: [linux] @@ -1465,8 +1465,8 @@ packages: cpu: [arm64] os: [linux] - '@oven/bun-linux-aarch64@1.1.43': - resolution: {integrity: sha512-tVAbBN53tDvweeV2rT0j37jOBgYNhFTC6JtOHZjlP8bETaVH4CikLQQGJLKclkqmOFROb00FpIS1ef/jxSqumA==} + '@oven/bun-linux-aarch64@1.2.0': + resolution: {integrity: sha512-1N10z7tQE1CwrSHuhdQFxl1vUd86VKqt1258a++m9EUwZ+uQMYnoevKyDc2TiwJF4yXG1AHc1STz7biQ1q/wNA==} cpu: [arm64] os: [linux] @@ -1475,18 +1475,18 @@ packages: cpu: [x64] os: [linux] - '@oven/bun-linux-x64-baseline@1.1.43': - resolution: {integrity: sha512-/eDhCXS7Jl34LGSYAcg53hCPeUyhKGzA7FDFAA8lYeUkqchZkEJoBtqcT/bKjQBrEMDlZHsdvmYwkckqjmdpvw==} + '@oven/bun-linux-x64-baseline@1.2.0': + resolution: {integrity: sha512-eXxEbZxUO02EAofgMW1SCiMlGgS0F8NSvF7xTgSAxl8WYYDAR9GVu37DIwGokXBKBuysgdZuBUb7IpWzB+n6IQ==} cpu: [x64] os: [linux] - '@oven/bun-linux-x64-musl-baseline@1.1.43': - resolution: {integrity: sha512-GiO280I+agtsGKF7xv0GqLPowOuT48x1n+Pd/FehqmUG2UwbWFQ3LCvGfSpuiJPg7+LGK+ZYC7FZnJLWNO5btQ==} + '@oven/bun-linux-x64-musl-baseline@1.2.0': + resolution: {integrity: sha512-/M53/WHnhKjgFxQXljapXMnQvkdZ9EzK9LuWjZ0Kw3WCx9n2v7MS2803vjpiVwUxoDYpq1+wSyXIaEloZQ/R5w==} cpu: [x64] os: [linux] - '@oven/bun-linux-x64-musl@1.1.43': - resolution: {integrity: sha512-eSK7TYBQBGoSErD9clZhM1XGdUryCRr4J0qX/SpV2KHUGTq04wah0r6do2qnG4ijH5+2m9Kz3kc72bt7EM97mg==} + '@oven/bun-linux-x64-musl@1.2.0': + resolution: {integrity: sha512-pJjVzEiS9HXuWy4LdbmiOLUmU1l2pUAWbbd43OocJRYvZL54cZpE+x0yUyEb38vd+jkHQu0ty8jHMyl+fBNUZA==} cpu: [x64] os: [linux] @@ -1495,8 +1495,8 @@ packages: cpu: [x64] os: [linux] - '@oven/bun-linux-x64@1.1.43': - resolution: {integrity: sha512-vuvBcPbygUZQggLjj1MAt4telEllv2+4k5O6IkYHdkytRqqtBrMSvwh4Rb4pdu0LyCxFF5eTm5sUew7tZMBvfw==} + '@oven/bun-linux-x64@1.2.0': + resolution: {integrity: sha512-QGXdeY0zkTSMYqIJ1crDF8gvRx0JeRYjd/nmfpxnuxyVNjUUVZHaQKMHvGGptPmkzvhEvCYnWmh2wmCFQmCZBw==} cpu: [x64] os: [linux] @@ -1505,8 +1505,8 @@ packages: cpu: [x64] os: [win32] - '@oven/bun-windows-x64-baseline@1.1.43': - resolution: {integrity: sha512-Fj1yGoK9ki0KdSAkWLlF41BzLeaohGSEEYPnxIDDULVhD3zFqPzqdqEQ1/NBsH3px/dJmB22vmM4BOMCYuFAiQ==} + '@oven/bun-windows-x64-baseline@1.2.0': + resolution: {integrity: sha512-A+U0PGh0twPTbUNwK2BZcFR8fWDumWOAiTReTWTK0wOIcQIy9DCTzKhxBffYNwLhf8BxLkJpoEag7wL1AWiejg==} cpu: [x64] os: [win32] @@ -1515,8 +1515,8 @@ packages: cpu: [x64] os: [win32] - '@oven/bun-windows-x64@1.1.43': - resolution: {integrity: sha512-FesAYHGCWOJ+28041NgVsxPmqCIx1xXJwXJykpAczk1iaLKGHftSTprE1JV0vp2R/mPHFewV2Ktn5rQuExpiGg==} + '@oven/bun-windows-x64@1.2.0': + resolution: {integrity: sha512-inCrG8tQJ9Sz5N8uVoDwoR+QFDLbOcfAkGtjEvnn6djeyDx8PbO8IErhbrpkb+10vtGDFWaOr0XVS7kuSu08Fw==} cpu: [x64] os: [win32] @@ -2091,8 +2091,8 @@ packages: os: [darwin, linux, win32] hasBin: true - bun@1.1.43: - resolution: {integrity: sha512-8Acq5NuECRXx62jVera3rnLcsaHh4/k5Res3dOQFv783nyRKo39W3DHlenGlXB9bNWbtRybBEvkKaH+zdwzLHw==} + bun@1.2.0: + resolution: {integrity: sha512-QUt9418MMPgylSsfOjGABV0aodlVZmQ6goCn/o0tf6jVKkPFgaMw643iv+Uo5uqEKtECaDCbCmssqofq1nVgvw==} cpu: [arm64, x64, aarch64] os: [darwin, linux, win32] hasBin: true @@ -3396,10 +3396,6 @@ packages: resolution: {integrity: sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==} engines: {node: ^10 || ^12 || >=14} - postcss@8.4.49: - resolution: {integrity: sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==} - engines: {node: ^10 || ^12 || >=14} - postcss@8.5.1: resolution: {integrity: sha512-6oz2beyjc5VMn/KV1pPw8fliQkhBXrVn1Z3TVyqZxU8kZpzEKhBdmCFqI6ZbmGtamQvQGuU1sgPTk8ZrXDD7jQ==} engines: {node: ^10 || ^12 || >=14} @@ -4677,58 +4673,58 @@ snapshots: '@oven/bun-darwin-aarch64@1.1.29': optional: true - '@oven/bun-darwin-aarch64@1.1.43': + '@oven/bun-darwin-aarch64@1.2.0': optional: true '@oven/bun-darwin-x64-baseline@1.1.29': optional: true - '@oven/bun-darwin-x64-baseline@1.1.43': + '@oven/bun-darwin-x64-baseline@1.2.0': optional: true '@oven/bun-darwin-x64@1.1.29': optional: true - '@oven/bun-darwin-x64@1.1.43': + '@oven/bun-darwin-x64@1.2.0': optional: true - '@oven/bun-linux-aarch64-musl@1.1.43': + '@oven/bun-linux-aarch64-musl@1.2.0': optional: true '@oven/bun-linux-aarch64@1.1.29': optional: true - '@oven/bun-linux-aarch64@1.1.43': + '@oven/bun-linux-aarch64@1.2.0': optional: true '@oven/bun-linux-x64-baseline@1.1.29': optional: true - '@oven/bun-linux-x64-baseline@1.1.43': + '@oven/bun-linux-x64-baseline@1.2.0': optional: true - '@oven/bun-linux-x64-musl-baseline@1.1.43': + '@oven/bun-linux-x64-musl-baseline@1.2.0': optional: true - '@oven/bun-linux-x64-musl@1.1.43': + '@oven/bun-linux-x64-musl@1.2.0': optional: true '@oven/bun-linux-x64@1.1.29': optional: true - '@oven/bun-linux-x64@1.1.43': + '@oven/bun-linux-x64@1.2.0': optional: true '@oven/bun-windows-x64-baseline@1.1.29': optional: true - '@oven/bun-windows-x64-baseline@1.1.43': + '@oven/bun-windows-x64-baseline@1.2.0': optional: true '@oven/bun-windows-x64@1.1.29': optional: true - '@oven/bun-windows-x64@1.1.43': + '@oven/bun-windows-x64@1.2.0': optional: true '@parcel/watcher-android-arm64@2.5.0': @@ -5348,19 +5344,19 @@ snapshots: '@oven/bun-windows-x64': 1.1.29 '@oven/bun-windows-x64-baseline': 1.1.29 - bun@1.1.43: + bun@1.2.0: optionalDependencies: - '@oven/bun-darwin-aarch64': 1.1.43 - '@oven/bun-darwin-x64': 1.1.43 - '@oven/bun-darwin-x64-baseline': 1.1.43 - '@oven/bun-linux-aarch64': 1.1.43 - '@oven/bun-linux-aarch64-musl': 1.1.43 - '@oven/bun-linux-x64': 1.1.43 - '@oven/bun-linux-x64-baseline': 1.1.43 - '@oven/bun-linux-x64-musl': 1.1.43 - '@oven/bun-linux-x64-musl-baseline': 1.1.43 - '@oven/bun-windows-x64': 1.1.43 - '@oven/bun-windows-x64-baseline': 1.1.43 + '@oven/bun-darwin-aarch64': 1.2.0 + '@oven/bun-darwin-x64': 1.2.0 + '@oven/bun-darwin-x64-baseline': 1.2.0 + '@oven/bun-linux-aarch64': 1.2.0 + '@oven/bun-linux-aarch64-musl': 1.2.0 + '@oven/bun-linux-x64': 1.2.0 + '@oven/bun-linux-x64-baseline': 1.2.0 + '@oven/bun-linux-x64-musl': 1.2.0 + '@oven/bun-linux-x64-musl-baseline': 1.2.0 + '@oven/bun-windows-x64': 1.2.0 + '@oven/bun-windows-x64-baseline': 1.2.0 bundle-require@5.0.0(esbuild@0.23.0): dependencies: @@ -6890,12 +6886,6 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 - postcss@8.4.49: - dependencies: - nanoid: 3.3.7 - picocolors: 1.1.1 - source-map-js: 1.2.1 - postcss@8.5.1: dependencies: nanoid: 3.3.8 @@ -7532,7 +7522,7 @@ snapshots: vite@6.0.0(@types/node@20.14.13)(jiti@2.4.2)(lightningcss@1.29.1(patch_hash=gkqcezdn4goium3e3s43dhy4by))(terser@5.31.6)(tsx@4.19.1)(yaml@2.6.0): dependencies: esbuild: 0.24.0 - postcss: 8.4.49 + postcss: 8.5.1 rollup: 4.27.4 optionalDependencies: '@types/node': 20.14.13 From b009afa4ae85597182b64fbc38dedcf985668460 Mon Sep 17 00:00:00 2001 From: "depfu[bot]" <23717796+depfu[bot]@users.noreply.github.com> Date: Tue, 28 Jan 2025 16:55:56 +0100 Subject: [PATCH 15/29] =?UTF-8?q?Update=20@types/react-dom=2019.0.2=20?= =?UTF-8?q?=E2=86=92=2019.0.3=20(patch)=20(#15669)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Here is everything you need to know about this update. Please take a good look at what changed and the test results before merging this pull request. ### What changed? #### ✳️ @​types/react-dom (19.0.2 → 19.0.3) · [Repo](https://github.com/DefinitelyTyped/DefinitelyTyped) Sorry, we couldn't find anything useful about this release. --- ![Depfu Status](https://depfu.com/badges/edd6acd35d74c8d41cbb540c30442adf/stats.svg) [Depfu](https://depfu.com) will automatically keep this PR conflict-free, as long as you don't add any commits to this branch yourself. You can also trigger a rebase manually by commenting with `@depfu rebase`.
All Depfu comment commands
@​depfu rebase
Rebases against your default branch and redoes this update
@​depfu recreate
Recreates this PR, overwriting any edits that you've made to it
@​depfu merge
Merges this PR once your tests are passing and conflicts are resolved
@​depfu cancel merge
Cancels automatic merging of this PR
@​depfu close
Closes this PR and deletes the branch
@​depfu reopen
Restores the branch and reopens this PR (if it's closed)
@​depfu pause
Ignores all future updates for this dependency and closes this PR
@​depfu pause [minor|major]
Ignores all future minor/major updates for this dependency and closes this PR
@​depfu resume
Future versions of this dependency will create PRs again (leaves this PR as is)
Co-authored-by: depfu[bot] <23717796+depfu[bot]@users.noreply.github.com> --- playgrounds/nextjs/package.json | 2 +- playgrounds/v3/package.json | 2 +- playgrounds/vite/package.json | 2 +- pnpm-lock.yaml | 18 +++++++++--------- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/playgrounds/nextjs/package.json b/playgrounds/nextjs/package.json index ee014d80692a..ccfbe6f500b9 100644 --- a/playgrounds/nextjs/package.json +++ b/playgrounds/nextjs/package.json @@ -19,7 +19,7 @@ "devDependencies": { "@types/node": "catalog:", "@types/react": "^19.0.7", - "@types/react-dom": "^19.0.2", + "@types/react-dom": "^19.0.3", "eslint": "^9.18.0", "eslint-config-next": "^15.1.4", "typescript": "^5.5.4" diff --git a/playgrounds/v3/package.json b/playgrounds/v3/package.json index c73a33dd8c82..2e727f46cc38 100644 --- a/playgrounds/v3/package.json +++ b/playgrounds/v3/package.json @@ -17,7 +17,7 @@ "devDependencies": { "@types/node": "^20.14.8", "@types/react": "^19.0.7", - "@types/react-dom": "^19.0.2", + "@types/react-dom": "^19.0.3", "autoprefixer": "^10.4.20", "eslint": "^9.18.0", "eslint-config-next": "^15.1.4", diff --git a/playgrounds/vite/package.json b/playgrounds/vite/package.json index f21424ef8a4d..742893ef8b07 100644 --- a/playgrounds/vite/package.json +++ b/playgrounds/vite/package.json @@ -17,7 +17,7 @@ }, "devDependencies": { "@types/react": "^19.0.7", - "@types/react-dom": "^19.0.2", + "@types/react-dom": "^19.0.3", "bun": "^1.1.29", "vite": "catalog:" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 54a08f906957..2876e8555483 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -424,8 +424,8 @@ importers: specifier: ^19.0.7 version: 19.0.7 '@types/react-dom': - specifier: ^19.0.2 - version: 19.0.2(@types/react@19.0.7) + specifier: ^19.0.3 + version: 19.0.3(@types/react@19.0.7) eslint: specifier: ^9.18.0 version: 9.18.0(jiti@2.4.2) @@ -458,8 +458,8 @@ importers: specifier: ^19.0.7 version: 19.0.7 '@types/react-dom': - specifier: ^19.0.2 - version: 19.0.2(@types/react@19.0.7) + specifier: ^19.0.3 + version: 19.0.3(@types/react@19.0.7) autoprefixer: specifier: ^10.4.20 version: 10.4.20(postcss@8.4.47) @@ -495,8 +495,8 @@ importers: specifier: ^19.0.7 version: 19.0.7 '@types/react-dom': - specifier: ^19.0.2 - version: 19.0.2(@types/react@19.0.7) + specifier: ^19.0.3 + version: 19.0.3(@types/react@19.0.7) bun: specifier: ^1.1.29 version: 1.1.29 @@ -1857,8 +1857,8 @@ packages: '@types/postcss-import@14.0.3': resolution: {integrity: sha512-raZhRVTf6Vw5+QbmQ7LOHSDML71A5rj4+EqDzAbrZPfxfoGzFxMHRCq16VlddGIZpHELw0BG4G0YE2ANkdZiIQ==} - '@types/react-dom@19.0.2': - resolution: {integrity: sha512-c1s+7TKFaDRRxr1TxccIX2u7sfCnc3RxkVyBIUA2lCpyqCF+QoAwQ/CBg7bsMdVwP120HEH143VQezKtef5nCg==} + '@types/react-dom@19.0.3': + resolution: {integrity: sha512-0Knk+HJiMP/qOZgMyNFamlIjw9OFCsyC2ZbigmEEyXXixgre6IQpm/4V+r3qH4GC1JPvRJKInw+on2rV6YZLeA==} peerDependencies: '@types/react': ^19.0.0 @@ -4970,7 +4970,7 @@ snapshots: dependencies: postcss: 8.4.41 - '@types/react-dom@19.0.2(@types/react@19.0.7)': + '@types/react-dom@19.0.3(@types/react@19.0.7)': dependencies: '@types/react': 19.0.7 From 82ddc249c3d46756f4e9b33b1803f6adee2bbbc8 Mon Sep 17 00:00:00 2001 From: Philipp Spiess Date: Tue, 28 Jan 2025 16:58:08 +0100 Subject: [PATCH 16/29] Ensure browser package does not pollute global namespace (#15978) Resolves #15977 Our `@tailwindcss/browser` build is intended to run inside a ` + + + `, + ) + + let gap = await page.evaluate(() => { + let shadowRoot = document.querySelector('#shadow')!.shadowRoot! + let x = shadowRoot.querySelector('#x')! + return window.getComputedStyle(x).getPropertyValue('gap') + }) + + expect(gap).toBe('8px') +}) + // --- const preflight = fs.readFileSync(path.resolve(__dirname, '..', 'preflight.css'), 'utf-8') @@ -673,14 +712,13 @@ async function render(page: Page, content: string, extraCss: string = '') { // mouse to before running the tests. content = `
${content}` - await page.setContent(content) - let scanner = new Scanner({}) let candidates = scanner.scanFiles([{ content, extension: 'html' }]) - await page.addStyleTag({ - content: optimizeCss(build(candidates)), - }) + let styles = optimizeCss(build(candidates)) + + content = `${content}` + await page.setContent(content) await page.locator('#mouse-park').hover() From a4761ea9674b2bf3c4f3062ac2928554a04185ec Mon Sep 17 00:00:00 2001 From: Philipp Spiess Date: Wed, 29 Jan 2025 17:32:06 +0100 Subject: [PATCH 28/29] Do not scan `tailwind-merge` sources for candidates (#16005) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Resolves #15722 This PR adds a list of ignored dependencies (in the current form only `tailwind-merge`) to the Vite extension which, when included in the dependency tree, are no longer scanned by the Tailwind CSS compiler for candidates. This is to work around an issue where some dependencies contain vast lists of valid Tailwind CSS class names which would otherwise always be inlined in the build. ## Test plan This was tested in our Vite playground on both dev and prod builds across macOS and Windows: ### Windows prod build before ![telegram-cloud-photo-size-4-5823632138052944949-y](https://github.com/user-attachments/assets/a2bca1c7-cef3-4f04-a588-cbf1afdbdd37) ### Windows prod build after This includes a debug `console.log(…)` to make sure it matches the right module. ![telegram-cloud-photo-size-4-5823632138052944951-y](https://github.com/user-attachments/assets/109b82c5-1946-4d44-b812-d68474686eb7) ### Windows dev build after This includes a debug `console.log(…)` to make sure it matches the right module. ![telegram-cloud-photo-size-4-5823632138052944948-y](https://github.com/user-attachments/assets/41cbe7f1-f997-4c6c-b5fe-01d574f7a999) --- CHANGELOG.md | 1 + integrations/vite/ignored-packages.test.ts | 81 ++++++++++++++++++++++ packages/@tailwindcss-vite/src/index.ts | 14 ++++ 3 files changed, 96 insertions(+) create mode 100644 integrations/vite/ignored-packages.test.ts diff --git a/CHANGELOG.md b/CHANGELOG.md index 6c3837abf85c..5428fa88f59f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -26,6 +26,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Find utilities when using the Angular class shorthand syntax ([#15974](https://github.com/tailwindlabs/tailwindcss/pull/15974)) - Find utilities when using functions inside arrays ([#15974](https://github.com/tailwindlabs/tailwindcss/pull/15974)) - Ensure that `@tailwindcss/browser` does not pollute the global namespace ([#15978](https://github.com/tailwindlabs/tailwindcss/pull/15978)) +- Ensure that `tailwind-merge` is not scanned when using the Vite plugin ([#16005](https://github.com/tailwindlabs/tailwindcss/pull/16005)) - Ensure CSS theme variables are available within shadow roots ([#15975](https://github.com/tailwindlabs/tailwindcss/pull/15975)) - Fix crash when project lives in the `/` directory ([#15988](https://github.com/tailwindlabs/tailwindcss/pull/15988)) - Ensure `@custom-variant` has a non-empty selector list ([#16009](https://github.com/tailwindlabs/tailwindcss/pull/16009)) diff --git a/integrations/vite/ignored-packages.test.ts b/integrations/vite/ignored-packages.test.ts new file mode 100644 index 000000000000..f7f85ff14975 --- /dev/null +++ b/integrations/vite/ignored-packages.test.ts @@ -0,0 +1,81 @@ +import { candidate, css, fetchStyles, html, js, retryAssertion, test, ts, txt } from '../utils' + +const WORKSPACE = { + fs: { + 'package.json': txt` + { + "type": "module", + "dependencies": { + "tailwind-merge": "^2", + "@tailwindcss/vite": "workspace:^", + "tailwindcss": "workspace:^" + }, + "devDependencies": { + "vite": "^6" + } + } + `, + 'vite.config.ts': ts` + import tailwindcss from '@tailwindcss/vite' + import { defineConfig } from 'vite' + + export default defineConfig({ + build: { cssMinify: false }, + plugins: [tailwindcss()], + }) + `, + 'index.html': html` + + + + + `, + 'src/index.js': js` + import { twMerge } from 'tailwind-merge' + + twMerge('underline') + + console.log('underline') + `, + 'src/index.css': css`@import 'tailwindcss/utilities' layer(utilities);`, + }, +} + +test( + 'does not scan tailwind-merge in production builds', + WORKSPACE, + async ({ fs, exec, expect }) => { + await exec('pnpm vite build') + + let files = await fs.glob('dist/**/*.css') + expect(files).toHaveLength(1) + let [, content] = files[0] + + expect(content).toMatchInlineSnapshot(` + "@layer utilities { + .underline { + text-decoration-line: underline; + } + } + " + `) + }, +) + +test('does not scan tailwind-merge in dev builds', WORKSPACE, async ({ spawn, expect }) => { + let process = await spawn('pnpm vite dev') + await process.onStdout((m) => m.includes('ready in')) + + let url = '' + await process.onStdout((m) => { + let match = /Local:\s*(http.*)\//.exec(m) + if (match) url = match[1] + return Boolean(url) + }) + + await retryAssertion(async () => { + let styles = await fetchStyles(url, '/index.html') + + expect(styles).not.toContain(candidate`flex`) + }) +}) diff --git a/packages/@tailwindcss-vite/src/index.ts b/packages/@tailwindcss-vite/src/index.ts index 2fedf73231f2..c8976c0276da 100644 --- a/packages/@tailwindcss-vite/src/index.ts +++ b/packages/@tailwindcss-vite/src/index.ts @@ -9,6 +9,8 @@ import type { Plugin, ResolvedConfig, Rollup, Update, ViteDevServer } from 'vite const DEBUG = env.DEBUG const SPECIAL_QUERY_RE = /[?&](raw|url)\b/ +const IGNORED_DEPENDENCIES = ['tailwind-merge'] + export default function tailwindcss(): Plugin[] { let servers: ViteDevServer[] = [] let config: ResolvedConfig | null = null @@ -62,6 +64,18 @@ export default function tailwindcss(): Plugin[] { }) function scanFile(id: string, content: string, extension: string, isSSR: boolean) { + for (let dependency of IGNORED_DEPENDENCIES) { + // We validated that Vite IDs always use posix style path separators, even on Windows. + // In dev build, Vite precompiles dependencies + if (id.includes(`.vite/deps/${dependency}.js`)) { + return + } + // In prod builds, use the node_modules path + if (id.includes(`/node_modules/${dependency}/`)) { + return + } + } + let updated = false for (let candidate of moduleGraphScanner.scanFiles([{ content, extension }])) { updated = true From 06552092bd03c72f384d4b1095b0e7997519f33f Mon Sep 17 00:00:00 2001 From: Philipp Spiess Date: Wed, 29 Jan 2025 20:14:35 +0100 Subject: [PATCH 29/29] Prepare v4.0.1 release (#16018) Co-authored-by: Adam Wathan --- CHANGELOG.md | 19 +- crates/node/npm/android-arm-eabi/package.json | 2 +- crates/node/npm/android-arm64/package.json | 2 +- crates/node/npm/darwin-arm64/package.json | 2 +- crates/node/npm/darwin-x64/package.json | 2 +- crates/node/npm/freebsd-x64/package.json | 2 +- .../node/npm/linux-arm-gnueabihf/package.json | 2 +- crates/node/npm/linux-arm64-gnu/package.json | 2 +- crates/node/npm/linux-arm64-musl/package.json | 2 +- crates/node/npm/linux-x64-gnu/package.json | 2 +- crates/node/npm/linux-x64-musl/package.json | 2 +- crates/node/npm/win32-arm64-msvc/package.json | 2 +- crates/node/npm/win32-x64-msvc/package.json | 2 +- crates/node/package.json | 2 +- packages/@tailwindcss-browser/package.json | 2 +- packages/@tailwindcss-cli/package.json | 2 +- packages/@tailwindcss-node/package.json | 2 +- packages/@tailwindcss-postcss/package.json | 2 +- packages/@tailwindcss-standalone/package.json | 2 +- packages/@tailwindcss-upgrade/package.json | 2 +- packages/@tailwindcss-vite/package.json | 2 +- packages/tailwindcss/package.json | 2 +- scripts/version-packages.mjs | 209 +++++++++--------- 23 files changed, 139 insertions(+), 131 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5428fa88f59f..c60d4490700e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,21 +7,25 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +- Nothing yet! + +## [4.0.1] - 2025-01-29 + ### Added -- Target `:open` in existing `open` variant ([#15349](https://github.com/tailwindlabs/tailwindcss/pull/15349)) +- Include `:open` pseudo-class in existing `open` variant ([#15349](https://github.com/tailwindlabs/tailwindcss/pull/15349)) ### Fixed - Remove invalid `min-w/h-none` utilities ([#15845](https://github.com/tailwindlabs/tailwindcss/pull/15845)) -- Ensure CSS variable shorthand uses valid CSS variables ([#15738](https://github.com/tailwindlabs/tailwindcss/pull/15738)) -- Ensure font-size utilities with `none` modifier have a line-height set e.g.: `text-sm/none` ([#15921](https://github.com/tailwindlabs/tailwindcss/pull/15921)) +- Discard CSS variable shorthand utilities that don't use valid CSS variables ([#15738](https://github.com/tailwindlabs/tailwindcss/pull/15738)) +- Ensure font-size utilities with `none` modifier have a line-height set e.g. `text-sm/none` ([#15921](https://github.com/tailwindlabs/tailwindcss/pull/15921)) - Ensure font-size utilities with unknown modifier don't generate CSS ([#15921](https://github.com/tailwindlabs/tailwindcss/pull/15921)) - Don’t suggest font weight utilities more than once ([#15857](https://github.com/tailwindlabs/tailwindcss/pull/15857)) - Suggest container query variants ([#15857](https://github.com/tailwindlabs/tailwindcss/pull/15857)) - Disable bare value suggestions when not using the `--spacing` variable ([#15857](https://github.com/tailwindlabs/tailwindcss/pull/15857)) - Ensure suggested classes are properly sorted ([#15857](https://github.com/tailwindlabs/tailwindcss/pull/15857)) -- Don’t look at ignore files outside initialized repos ([#15941](https://github.com/tailwindlabs/tailwindcss/pull/15941)) +- Don’t look at .gitignore files outside initialized repos ([#15941](https://github.com/tailwindlabs/tailwindcss/pull/15941)) - Find utilities when using the Svelte class shorthand syntax across multiple lines ([#15974](https://github.com/tailwindlabs/tailwindcss/pull/15974)) - Find utilities when using the Angular class shorthand syntax ([#15974](https://github.com/tailwindlabs/tailwindcss/pull/15974)) - Find utilities when using functions inside arrays ([#15974](https://github.com/tailwindlabs/tailwindcss/pull/15974)) @@ -29,10 +33,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Ensure that `tailwind-merge` is not scanned when using the Vite plugin ([#16005](https://github.com/tailwindlabs/tailwindcss/pull/16005)) - Ensure CSS theme variables are available within shadow roots ([#15975](https://github.com/tailwindlabs/tailwindcss/pull/15975)) - Fix crash when project lives in the `/` directory ([#15988](https://github.com/tailwindlabs/tailwindcss/pull/15988)) -- Ensure `@custom-variant` has a non-empty selector list ([#16009](https://github.com/tailwindlabs/tailwindcss/pull/16009)) +- Ensure custom variants have a non-empty selector list ([#16009](https://github.com/tailwindlabs/tailwindcss/pull/16009)) - _Upgrade_: Ensure JavaScript config files on different drives are correctly migrated ([#15927](https://github.com/tailwindlabs/tailwindcss/pull/15927)) - _Upgrade_: Migrate `leading-[1]` to `leading-none` ([#16004](https://github.com/tailwindlabs/tailwindcss/pull/16004)) -- _Upgrade_: Do not migrate arbitrary leading utilities to bare utilities ([#16004](https://github.com/tailwindlabs/tailwindcss/pull/16004)) +- _Upgrade_: Do not migrate arbitrary leading utilities to bare values ([#16004](https://github.com/tailwindlabs/tailwindcss/pull/16004)) ## [4.0.0] - 2025-01-21 @@ -3347,7 +3351,8 @@ No release notes - Everything! -[unreleased]: https://github.com/tailwindlabs/tailwindcss/compare/v4.0.0...HEAD +[unreleased]: https://github.com/tailwindlabs/tailwindcss/compare/v4.0.1...HEAD +[4.0.1]: https://github.com/tailwindlabs/tailwindcss/compare/v4.0.0...v4.0.1 [4.0.0]: https://github.com/tailwindlabs/tailwindcss/compare/v4.0.0-beta.10...v4.0.0 [4.0.0-beta.10]: https://github.com/tailwindlabs/tailwindcss/compare/v4.0.0-beta.9...v4.0.0-beta.10 [4.0.0-beta.9]: https://github.com/tailwindlabs/tailwindcss/compare/v4.0.0-beta.8...v4.0.0-beta.9 diff --git a/crates/node/npm/android-arm-eabi/package.json b/crates/node/npm/android-arm-eabi/package.json index d8ec4ab95d00..f786a9acea9e 100644 --- a/crates/node/npm/android-arm-eabi/package.json +++ b/crates/node/npm/android-arm-eabi/package.json @@ -1,6 +1,6 @@ { "name": "@tailwindcss/oxide-android-arm-eabi", - "version": "4.0.0", + "version": "4.0.1", "repository": { "type": "git", "url": "git+https://github.com/tailwindlabs/tailwindcss.git", diff --git a/crates/node/npm/android-arm64/package.json b/crates/node/npm/android-arm64/package.json index 5eb9a0fa19d6..adc7a56c43c6 100644 --- a/crates/node/npm/android-arm64/package.json +++ b/crates/node/npm/android-arm64/package.json @@ -1,6 +1,6 @@ { "name": "@tailwindcss/oxide-android-arm64", - "version": "4.0.0", + "version": "4.0.1", "repository": { "type": "git", "url": "git+https://github.com/tailwindlabs/tailwindcss.git", diff --git a/crates/node/npm/darwin-arm64/package.json b/crates/node/npm/darwin-arm64/package.json index 619f1c8b779d..2f20b3232fa0 100644 --- a/crates/node/npm/darwin-arm64/package.json +++ b/crates/node/npm/darwin-arm64/package.json @@ -1,6 +1,6 @@ { "name": "@tailwindcss/oxide-darwin-arm64", - "version": "4.0.0", + "version": "4.0.1", "repository": { "type": "git", "url": "git+https://github.com/tailwindlabs/tailwindcss.git", diff --git a/crates/node/npm/darwin-x64/package.json b/crates/node/npm/darwin-x64/package.json index 2c7b5ab1a824..3169e58dc9fc 100644 --- a/crates/node/npm/darwin-x64/package.json +++ b/crates/node/npm/darwin-x64/package.json @@ -1,6 +1,6 @@ { "name": "@tailwindcss/oxide-darwin-x64", - "version": "4.0.0", + "version": "4.0.1", "repository": { "type": "git", "url": "git+https://github.com/tailwindlabs/tailwindcss.git", diff --git a/crates/node/npm/freebsd-x64/package.json b/crates/node/npm/freebsd-x64/package.json index 6090f34618db..1d7f1390bd64 100644 --- a/crates/node/npm/freebsd-x64/package.json +++ b/crates/node/npm/freebsd-x64/package.json @@ -1,6 +1,6 @@ { "name": "@tailwindcss/oxide-freebsd-x64", - "version": "4.0.0", + "version": "4.0.1", "repository": { "type": "git", "url": "git+https://github.com/tailwindlabs/tailwindcss.git", diff --git a/crates/node/npm/linux-arm-gnueabihf/package.json b/crates/node/npm/linux-arm-gnueabihf/package.json index 4c8dc4a44d90..38a82b6baa62 100644 --- a/crates/node/npm/linux-arm-gnueabihf/package.json +++ b/crates/node/npm/linux-arm-gnueabihf/package.json @@ -1,6 +1,6 @@ { "name": "@tailwindcss/oxide-linux-arm-gnueabihf", - "version": "4.0.0", + "version": "4.0.1", "repository": { "type": "git", "url": "git+https://github.com/tailwindlabs/tailwindcss.git", diff --git a/crates/node/npm/linux-arm64-gnu/package.json b/crates/node/npm/linux-arm64-gnu/package.json index f70d59c02fac..25f2012c7744 100644 --- a/crates/node/npm/linux-arm64-gnu/package.json +++ b/crates/node/npm/linux-arm64-gnu/package.json @@ -1,6 +1,6 @@ { "name": "@tailwindcss/oxide-linux-arm64-gnu", - "version": "4.0.0", + "version": "4.0.1", "repository": { "type": "git", "url": "git+https://github.com/tailwindlabs/tailwindcss.git", diff --git a/crates/node/npm/linux-arm64-musl/package.json b/crates/node/npm/linux-arm64-musl/package.json index 7fd9e903b78d..eec1330699b2 100644 --- a/crates/node/npm/linux-arm64-musl/package.json +++ b/crates/node/npm/linux-arm64-musl/package.json @@ -1,6 +1,6 @@ { "name": "@tailwindcss/oxide-linux-arm64-musl", - "version": "4.0.0", + "version": "4.0.1", "repository": { "type": "git", "url": "git+https://github.com/tailwindlabs/tailwindcss.git", diff --git a/crates/node/npm/linux-x64-gnu/package.json b/crates/node/npm/linux-x64-gnu/package.json index d5d66ee0d1a1..8df51808885c 100644 --- a/crates/node/npm/linux-x64-gnu/package.json +++ b/crates/node/npm/linux-x64-gnu/package.json @@ -1,6 +1,6 @@ { "name": "@tailwindcss/oxide-linux-x64-gnu", - "version": "4.0.0", + "version": "4.0.1", "repository": { "type": "git", "url": "git+https://github.com/tailwindlabs/tailwindcss.git", diff --git a/crates/node/npm/linux-x64-musl/package.json b/crates/node/npm/linux-x64-musl/package.json index 3e8d92d99259..0013c4b287b5 100644 --- a/crates/node/npm/linux-x64-musl/package.json +++ b/crates/node/npm/linux-x64-musl/package.json @@ -1,6 +1,6 @@ { "name": "@tailwindcss/oxide-linux-x64-musl", - "version": "4.0.0", + "version": "4.0.1", "repository": { "type": "git", "url": "git+https://github.com/tailwindlabs/tailwindcss.git", diff --git a/crates/node/npm/win32-arm64-msvc/package.json b/crates/node/npm/win32-arm64-msvc/package.json index b73a264cd1ba..c8721d3ba78c 100644 --- a/crates/node/npm/win32-arm64-msvc/package.json +++ b/crates/node/npm/win32-arm64-msvc/package.json @@ -1,6 +1,6 @@ { "name": "@tailwindcss/oxide-win32-arm64-msvc", - "version": "4.0.0", + "version": "4.0.1", "repository": { "type": "git", "url": "git+https://github.com/tailwindlabs/tailwindcss.git", diff --git a/crates/node/npm/win32-x64-msvc/package.json b/crates/node/npm/win32-x64-msvc/package.json index 3119f85b1927..b135728598b5 100644 --- a/crates/node/npm/win32-x64-msvc/package.json +++ b/crates/node/npm/win32-x64-msvc/package.json @@ -1,6 +1,6 @@ { "name": "@tailwindcss/oxide-win32-x64-msvc", - "version": "4.0.0", + "version": "4.0.1", "repository": { "type": "git", "url": "git+https://github.com/tailwindlabs/tailwindcss.git", diff --git a/crates/node/package.json b/crates/node/package.json index ac069ef8e1b2..d1588c89247b 100644 --- a/crates/node/package.json +++ b/crates/node/package.json @@ -1,6 +1,6 @@ { "name": "@tailwindcss/oxide", - "version": "4.0.0", + "version": "4.0.1", "repository": { "type": "git", "url": "git+https://github.com/tailwindlabs/tailwindcss.git", diff --git a/packages/@tailwindcss-browser/package.json b/packages/@tailwindcss-browser/package.json index aef639cf3f8d..5758c89547eb 100644 --- a/packages/@tailwindcss-browser/package.json +++ b/packages/@tailwindcss-browser/package.json @@ -1,6 +1,6 @@ { "name": "@tailwindcss/browser", - "version": "4.0.0", + "version": "4.0.1", "description": "A utility-first CSS framework for rapidly building custom user interfaces.", "license": "MIT", "main": "./dist/index.global.js", diff --git a/packages/@tailwindcss-cli/package.json b/packages/@tailwindcss-cli/package.json index 90ad3b80dcbe..63b35d2fb3c8 100644 --- a/packages/@tailwindcss-cli/package.json +++ b/packages/@tailwindcss-cli/package.json @@ -1,6 +1,6 @@ { "name": "@tailwindcss/cli", - "version": "4.0.0", + "version": "4.0.1", "description": "A utility-first CSS framework for rapidly building custom user interfaces.", "license": "MIT", "repository": { diff --git a/packages/@tailwindcss-node/package.json b/packages/@tailwindcss-node/package.json index 1978c69f7935..fb5333b8e72b 100644 --- a/packages/@tailwindcss-node/package.json +++ b/packages/@tailwindcss-node/package.json @@ -1,6 +1,6 @@ { "name": "@tailwindcss/node", - "version": "4.0.0", + "version": "4.0.1", "description": "A utility-first CSS framework for rapidly building custom user interfaces.", "license": "MIT", "repository": { diff --git a/packages/@tailwindcss-postcss/package.json b/packages/@tailwindcss-postcss/package.json index 98f23e318c35..00b49bdf5783 100644 --- a/packages/@tailwindcss-postcss/package.json +++ b/packages/@tailwindcss-postcss/package.json @@ -1,6 +1,6 @@ { "name": "@tailwindcss/postcss", - "version": "4.0.0", + "version": "4.0.1", "description": "PostCSS plugin for Tailwind CSS, a utility-first CSS framework for rapidly building custom user interfaces", "license": "MIT", "repository": { diff --git a/packages/@tailwindcss-standalone/package.json b/packages/@tailwindcss-standalone/package.json index 8705696e58cb..d45ad2037f5e 100644 --- a/packages/@tailwindcss-standalone/package.json +++ b/packages/@tailwindcss-standalone/package.json @@ -1,6 +1,6 @@ { "name": "@tailwindcss/standalone", - "version": "4.0.0", + "version": "4.0.1", "private": true, "description": "Standalone CLI for Tailwind CSS", "license": "MIT", diff --git a/packages/@tailwindcss-upgrade/package.json b/packages/@tailwindcss-upgrade/package.json index b3b7bbedfe9b..2274dd358018 100644 --- a/packages/@tailwindcss-upgrade/package.json +++ b/packages/@tailwindcss-upgrade/package.json @@ -1,6 +1,6 @@ { "name": "@tailwindcss/upgrade", - "version": "4.0.0", + "version": "4.0.1", "description": "A utility-first CSS framework for rapidly building custom user interfaces.", "license": "MIT", "repository": { diff --git a/packages/@tailwindcss-vite/package.json b/packages/@tailwindcss-vite/package.json index 2fb5e0e8b046..bd8682a9ddfb 100644 --- a/packages/@tailwindcss-vite/package.json +++ b/packages/@tailwindcss-vite/package.json @@ -1,6 +1,6 @@ { "name": "@tailwindcss/vite", - "version": "4.0.0", + "version": "4.0.1", "description": "A utility-first CSS framework for rapidly building custom user interfaces.", "license": "MIT", "repository": { diff --git a/packages/tailwindcss/package.json b/packages/tailwindcss/package.json index 14e47b358d3d..29b92bef2394 100644 --- a/packages/tailwindcss/package.json +++ b/packages/tailwindcss/package.json @@ -1,6 +1,6 @@ { "name": "tailwindcss", - "version": "4.0.0", + "version": "4.0.1", "description": "A utility-first CSS framework for rapidly building custom user interfaces.", "license": "MIT", "repository": { diff --git a/scripts/version-packages.mjs b/scripts/version-packages.mjs index 6215c8451437..36f412cc377f 100644 --- a/scripts/version-packages.mjs +++ b/scripts/version-packages.mjs @@ -47,108 +47,19 @@ for (let [name, paths] of syncedWorkspaces) { } } -exec('pnpm --silent --filter=!./playgrounds/* -r exec pwd', async (err, stdout) => { - if (err) { - console.error(err) - process.exit(1) - } - - if (version !== null) { - for (let pkgPath of stdout - .trim() - .split('\n') - .map((x) => path.resolve(x, 'package.json'))) { - let pkg = await fs.readFile(pkgPath, 'utf8').then(JSON.parse) - let name = pkg.name - if (version !== '') { - // Ensure the version is set after the name and before everything else - delete pkg.name - delete pkg.version - - // This allows us to keep the order of the keys in the package.json - pkg = { name, version, ...pkg } - } - - await fs.writeFile( - pkgPath, - await prettier - .format(JSON.stringify(pkg, null, 2), { filepath: pkgPath }) - .then((x) => `${x.trim()}\n`), - ) +exec( + "pnpm --silent --filter='!./playgrounds/*' --filter='!./integrations' --filter='!./packages/internal-example-plugin' -r exec pwd", + async (err, stdout) => { + if (err) { + console.error(err) + process.exit(1) } - console.log('Done.') - return - } - - let paths = stdout - .trim() - .split('\n') - .map((x) => path.resolve(x, 'package.json')) - // Workspaces that are in sync with another workspace should not be updated - // manually, they should be updated by updating the main workspace. - .filter((x) => !inverseSyncedWorkspaces.has(x)) - - let workspaces = new Map() - - // Track all the workspaces - for (let path of paths) { - let pkg = await fs.readFile(path, 'utf8').then(JSON.parse) - if (pkg.private) continue - workspaces.set(pkg.name, { version: pkg.version ?? '', path }) - } - - // Build the editable output - let lines = ['# Update the versions of the packages you want to change', ''] - for (let [name, info] of workspaces) { - lines.push(`${name}: ${info.version}`) - } - let output = lines.join('\n') - - // Edit the file - { - // Figure out which editor to use. - // - // In this case we still split on whitespace, because it can happen that the - // EDITOR env variable is configured as `code --wait`. This means that we - // want `code` as the editor, but `--wait` is one of the arguments. - let args = process.env.EDITOR.split(' ') - let editor = args.shift() - - // Create a temporary file which will be edited - let filepath = path.resolve(tmpdir(), `version-${randomUUID()}.txt`) - await fs.writeFile(filepath, output) - - // Edit the file, once the editor is closed, the file will be saved and we - // can read the changes - spawnSync(editor, [...args, filepath], { - stdio: 'inherit', - }) - - let newOutput = await fs.readFile(filepath, 'utf8').then((x) => x.trim().split('\n')) - - // Cleanup temporary file - await fs.unlink(filepath) - - // Update the package.json files - for (let line of newOutput) { - if (line[0] === '#') continue // Skip comment lines - if (line.trim() === '') continue // Skip empty lines - - let [name, version = ''] = line.split(':').map((x) => x.trim()) - - // Figure out all the paths to the package.json files that need to be - // updated with the new version - let paths = [ - // The package.json file of the main workspace - workspaces.get(name).path, - - // The package.json files of the workspaces that are in sync with the - // main workspace - ...(syncedWorkspaces.get(name) ?? []), - ] - - for (let pkgPath of paths) { + if (version !== null) { + for (let pkgPath of stdout + .trim() + .split('\n') + .map((x) => path.resolve(x, 'package.json'))) { let pkg = await fs.readFile(pkgPath, 'utf8').then(JSON.parse) let name = pkg.name if (version !== '') { @@ -167,8 +78,100 @@ exec('pnpm --silent --filter=!./playgrounds/* -r exec pwd', async (err, stdout) .then((x) => `${x.trim()}\n`), ) } + + console.log('Done.') + return + } + + let paths = stdout + .trim() + .split('\n') + .map((x) => path.resolve(x, 'package.json')) + // Workspaces that are in sync with another workspace should not be updated + // manually, they should be updated by updating the main workspace. + .filter((x) => !inverseSyncedWorkspaces.has(x)) + + let workspaces = new Map() + + // Track all the workspaces + for (let path of paths) { + let pkg = await fs.readFile(path, 'utf8').then(JSON.parse) + if (pkg.private) continue + workspaces.set(pkg.name, { version: pkg.version ?? '', path }) } - } - console.log('Done.') -}) + // Build the editable output + let lines = ['# Update the versions of the packages you want to change', ''] + for (let [name, info] of workspaces) { + lines.push(`${name}: ${info.version}`) + } + let output = lines.join('\n') + + // Edit the file + { + // Figure out which editor to use. + // + // In this case we still split on whitespace, because it can happen that the + // EDITOR env variable is configured as `code --wait`. This means that we + // want `code` as the editor, but `--wait` is one of the arguments. + let args = process.env.EDITOR.split(' ') + let editor = args.shift() + + // Create a temporary file which will be edited + let filepath = path.resolve(tmpdir(), `version-${randomUUID()}.txt`) + await fs.writeFile(filepath, output) + + // Edit the file, once the editor is closed, the file will be saved and we + // can read the changes + spawnSync(editor, [...args, filepath], { + stdio: 'inherit', + }) + + let newOutput = await fs.readFile(filepath, 'utf8').then((x) => x.trim().split('\n')) + + // Cleanup temporary file + await fs.unlink(filepath) + + // Update the package.json files + for (let line of newOutput) { + if (line[0] === '#') continue // Skip comment lines + if (line.trim() === '') continue // Skip empty lines + + let [name, version = ''] = line.split(':').map((x) => x.trim()) + + // Figure out all the paths to the package.json files that need to be + // updated with the new version + let paths = [ + // The package.json file of the main workspace + workspaces.get(name).path, + + // The package.json files of the workspaces that are in sync with the + // main workspace + ...(syncedWorkspaces.get(name) ?? []), + ] + + for (let pkgPath of paths) { + let pkg = await fs.readFile(pkgPath, 'utf8').then(JSON.parse) + let name = pkg.name + if (version !== '') { + // Ensure the version is set after the name and before everything else + delete pkg.name + delete pkg.version + + // This allows us to keep the order of the keys in the package.json + pkg = { name, version, ...pkg } + } + + await fs.writeFile( + pkgPath, + await prettier + .format(JSON.stringify(pkg, null, 2), { filepath: pkgPath }) + .then((x) => `${x.trim()}\n`), + ) + } + } + } + + console.log('Done.') + }, +)