GitShow/tailwindlabs/tailwindcss
tailwindlabs

tailwindcss

A utility-first CSS framework for rapid UI development.

by tailwindlabs
csscss-frameworkfunctional-csspostcssresponsivetailwindcssutility-classes
Star on GitHubForkWebsitenpm

TypeScript

97.7k stars7.0k forks376 contributorsActive · 3d agoSince 2017v4.3.3MIT

Meet the team

See all 376 on GitHub →
adamwathan
adamwathan2.9k contributions
RobinMalfait
RobinMalfait1.0k contributions
depfu[bot]Bot
depfu[bot]614 contributions
thecrypticace
thecrypticace444 contributions
dependabot-preview[bot]Bot
dependabot-preview[bot]350 contributions
reinink
reinink342 contributions
philipp-spiess
philipp-spiess295 contributions
bradlc
bradlc55 contributions

Languages

View on GitHub →
TypeScript80.3%
Rust17.8%
CSS0.6%
HTML0.6%
Haml0.4%
JavaScript0.3%

Commit activity

Last 12 weeks · 52 commits

Full graph →

Community health

4 of 6 standards met

Community profile →
62
✓README✓License✓Contributing○Code of Conduct○Issue Template✓PR Template

Recent PRs & issues

Active · Last activity 3d ago
See all on GitHub →
snmsoodan
Ensure `sr-only` hides the caption of a tableOpenPR

Fixes #20510 doesn't hide a `sr-only1pxclip-path: inset(50%)widthheight: 1pxoverflow: hiddenclip-pathclip-pathsr-onlyclip-pathsr-only:where(...)not-sr-onlysr-only md:not-sr-onlypackages/tailwindcss/src/utilities.test.tssr-only.sr-only > caption { clip-path: inset(50%) }packages/tailwindcss/tests/ui.spec.tsclip-pathinset(50%)sr-only md:not-sr-onlymdclip-pathnonedocument.elementFromPoint()inset(50%)inset(50%)--project=firefoxsandbox_extension_issue_file_to_process failed for …/plugin-container.app: 1 (Operation not permitted)browserType.launch` then times out), and no system Firefox is installed. So Firefox itself is the one engine I did not observe; the behaviour above comes from the issue report and the spec. The new test asserts the cascade rule rather than an engine-specific box layout, which is why I'd expect it to hold in Firefox too — it should be confirmed by CI.

snmsoodan · 2h ago
Dextheking1
Merge user resolve.conditions in @tailwindcss/vite CSS @import resolverOpenPR

Fixes #20426. Summary resolves CSS with a custom Vite resolver. That resolver spread the user's config but then overwrote with a hardcoded list (), so user-configured were silently dropped for CSS even though they were honoured for JS imports. This happened in both resolver branches (legacy pre-Environment-API and Environment API). The fix merges instead of overwrites: so the built-in conditions keep priority while user conditions still apply. Test plan Added regression tests in covering both resolver branches: vite (Environment API) and vite (legacy). A fixture package exposes under a export and under /; with the built CSS must contain the custom-condition rule. 2/2 new tests pass; full : 15/15 pass. Verified with the real Vite 8 resolver using the exact option shapes: old shape resolved (bug reproduced), new shape resolves (fixed). Prettier clean on both changed files; reports 0 errors in the changed file (remaining 39 errors elsewhere in the monorepo are pre-existing environmental issues unrelated to this change). Note: the fixture includes in the test CSS (with an explanatory comment) because the plugin returns early for files without Tailwind features, so the resolver under test would never run otherwise.

Dextheking1 · 12h ago
abdelrhmanahmed255
Fix unmet dependency errors by stripping bundledDependencies in WASM package OpenPR

Problem When installing in an environment using strict (especially ), users experience and errors related to the WASM fallback runtime packages (, , , ). The issue stems from listing these packages in both and . Because of how workspaces (which this monorepo uses) handle symlinking, the actual are not fully packed into the published tarball for . When end-users install the package using , expects bundled dependencies to already exist inside the downloaded tarball and skips fetching them from the registry. Since they are missing from the tarball, surfaces unmet dependency errors and blocks strict installations. Solution This PR strips the array from . Since these packages are already correctly listed under standard , removing them from forces , , and to correctly fetch and resolve them from the registry during installation, completely eliminating the errors. Implementation details:** 1. Manually removed from . 2. Updated to automatically strip from the package.json during the lifecycle. This ensures that even if automatically injects during , they are stripped immediately before packing/publishing. Verification Locally verified that the in is correctly mutated post-build and no longer includes , while preserving all functional .

abdelrhmanahmed255 · 1d ago

Recent fixes

View closed PRs →
KipzonderKop101
@tailwindcss/vite Tailwind CSS HMR not working with Vite 7 + SolidStart v2ClosedIssue

What version of Tailwind CSS are you using? Current TailwindCSS: 4.2.1 Current tailwindcss/vite: 4.2.1 What build tool (or framework if it abstracts the build tool) are you using? Vite: 7.3.1 (or any ^7.0.0 release) Solid Start: 2.0.0-alpha.2 What version of Node.js are you using? For example: 25.8.1 npm: 11.11.11 What browser are you using? Firefox Developer Edition: 149.0b8-1 Vivaldi: 7.8.3925.81-1 What operating system are you using? EndeavourOS Linux x86_64 6.19.8-arch1-1 Reproduction URL https://github.com/KipzonderKop101/reproduction-tailwindcss-solid-start Describe your issue** CSS changes made via Tailwind classes are not picked up by HMR. They only apply after a full page refresh. Regular (non-style) hot reload works fine. Downgrading from Vite 7 to Vite 6 resolves the issue. All other behavior is identical between the two versions.

KipzonderKop101 · 14h ago
lazerg
Ensure `@tailwindcss/postcss` rebuilds when the input CSS changes but its mtime is unchangedMergedPR

Summary chooses between an incremental and a full rebuild by comparing the mtimes of the entry file and its resolved // graph. It never looks at the input CSS itself, so when that CSS is produced by an upstream tool (e.g. Sass) and passed to the plugin via , it can change while the file's mtime stays the same. The plugin then re-emits its previously cached output and silently drops the change. This stores the input CSS per cache entry and takes the existing full rebuild path when it differs from the previous compile, mirroring the fix the CLI watcher already has for changed input files. Fixes #20307 Test plan Added a regression test in that compiles two different inputs for the same on-disk file (unchanged mtime) and asserts the second compile reflects the new CSS. Confirmed it fails on (the second compile returns the stale first output) and passes with the fix. Ran the package tests (all green) and checked formatting with Prettier.

lazerg · 1d ago
Structured data for AI agents

Repository: tailwindlabs/tailwindcss. Description: A utility-first CSS framework for rapid UI development. Stars: 97732, Forks: 6999. Primary language: TypeScript. Languages: TypeScript (80.3%), Rust (17.8%), CSS (0.6%), HTML (0.6%), Haml (0.4%). License: MIT. Homepage: https://tailwindcss.com/ Topics: css, css-framework, functional-css, postcss, responsive, tailwindcss, utility-classes. Latest release: v4.3.3 (2mo ago). Open PRs: 52, open issues: 36. Last activity: 3d ago. Community health: 62%. Top contributors: adamwathan, RobinMalfait, depfu[bot], thecrypticace, dependabot-preview[bot], reinink, philipp-spiess, bradlc, dependabot-support, MichaelDeBoey and others.

·@ofershap

Replace github.com with gitshow.dev