Skip to content

Tailwind CSS Documentation ​

This document catalogs all sources of Tailwind CSS documentation and patterns that need to be considered for tailwindcss-obfuscator compatibility.

Official Documentation ​

Primary Documentation Site ​

ResourceURLPurpose
Main Docshttps://tailwindcss.com/docsComplete reference for all utilities
Installation Guideshttps://tailwindcss.com/docs/installationFramework-specific setup instructions
Functions & Directiveshttps://tailwindcss.com/docs/functions-and-directives@apply, @layer, @config, etc.
Configurationhttps://tailwindcss.com/docs/configurationtailwind.config.js options
Theme Configurationhttps://tailwindcss.com/docs/themeCustomizing the default theme
Responsive Designhttps://tailwindcss.com/docs/responsive-designBreakpoint prefixes (sm:, md:, etc.)
Dark Modehttps://tailwindcss.com/docs/dark-modedark: variant usage
Hover, Focus & Stateshttps://tailwindcss.com/docs/hover-focus-and-other-statesState variants
Pluginshttps://tailwindcss.com/docs/pluginsOfficial and community plugins

Framework Integration Guides ​

FrameworkURL
Vitehttps://tailwindcss.com/docs/installation/using-vite
Next.jshttps://tailwindcss.com/docs/installation/framework-guides#nextjs
Nuxthttps://tailwindcss.com/docs/installation/framework-guides#nuxt
SvelteKithttps://tailwindcss.com/docs/installation/framework-guides#sveltekit
Astrohttps://tailwindcss.com/docs/installation/framework-guides#astro
Remixhttps://tailwindcss.com/docs/installation/framework-guides#remix
Laravelhttps://tailwindcss.com/docs/installation/framework-guides#laravel

Blog & Changelog ​

ResourceURLPurpose
Bloghttps://tailwindcss.com/blogNew features, announcements
Changeloghttps://tailwindcss.com/plus/changelogDetailed version changes

GitHub Resources ​

Official Repositories ​

RepositoryURLPurpose
Tailwind CSShttps://github.com/tailwindlabs/tailwindcssMain source code
Releaseshttps://github.com/tailwindlabs/tailwindcss/releasesVersion history
Issueshttps://github.com/tailwindlabs/tailwindcss/issuesBug reports, feature requests
Discussionshttps://github.com/tailwindlabs/tailwindcss/discussionsCommunity Q&A
PackageURLPurpose
@tailwindcss/typographyhttps://github.com/tailwindlabs/tailwindcss-typographyProse styling plugin
@tailwindcss/formshttps://github.com/tailwindlabs/tailwindcss-formsForm element styling
@tailwindcss/aspect-ratiohttps://github.com/tailwindlabs/tailwindcss-aspect-ratioAspect ratio utilities
@tailwindcss/container-querieshttps://github.com/tailwindlabs/tailwindcss-container-queriesContainer query support
Headless UIhttps://github.com/tailwindlabs/headlessuiAccessible UI components

Tailwind v4 Specific Resources ​

CSS-First Architecture ​

TopicURLPatterns to Check
v4 Beta Announcementhttps://tailwindcss.com/blog/tailwindcss-v4-betaNew CSS-first approach
v4 Upgrade Guidehttps://tailwindcss.com/docs/upgrade-guideMigration patterns
@theme Directivehttps://tailwindcss.com/docs/functions-and-directives#themeTheme customization in CSS
@import "tailwindcss"https://tailwindcss.com/docs/installationNew import syntax

New v4 Features ​

FeaturePattern Examples
Container Queries@container, @lg:, @container/name
Named Containers@lg/sidebar:hidden
ARIA Variantsaria-disabled:opacity-50
Data Attributesdata-[state=open]:bg-green-500
Group/Peer Naminggroup/item, peer/input

Class Pattern Categories to Support ​

Basic Patterns ​

html
<!-- Static class strings -->
<div class="flex items-center justify-between">
  <div class="bg-blue-500 text-white">
    <!-- Multi-line -->
    <div class="flex items-center bg-blue-500"></div>
  </div>
</div>

JSX/React Patterns ​

jsx
// String literal
<div className="flex items-center">

// Template literal (static)
<div className={`flex items-center`}>

// Ternary
<div className={isActive ? "bg-blue-500" : "bg-gray-500"}>

// Logical AND
<div className={isVisible && "block"}>

// Array join
<div className={["flex", "items-center"].join(" ")}>

Utility Function Patterns ​

jsx
// clsx / classnames
<div className={clsx("flex", { "bg-blue-500": isActive })}>

// cn (shadcn/ui)
<div className={cn("flex", className)}>

// tailwind-merge
<div className={twMerge("p-4", customPadding)}>

// cva (class-variance-authority)
const button = cva("px-4 py-2", {
  variants: {
    intent: {
      primary: "bg-blue-500",
      secondary: "bg-gray-500"
    }
  }
});

// tailwind-variants (tv)
const button = tv({
  base: "px-4 py-2",
  variants: {
    color: {
      primary: "bg-blue-500"
    }
  }
});

CSS Directive Patterns ​

css
/* @apply directive */
.btn {
  @apply rounded-lg px-4 py-2;
}

/* @layer components */
@layer components {
  .card {
    @apply rounded-xl p-6 shadow-lg;
  }
}

/* @layer utilities */
@layer utilities {
  .text-shadow {
    text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.5);
  }
}

/* Tailwind v4 @theme */
@theme {
  --color-primary: #3b82f6;
  --spacing-18: 4.5rem;
}

Variant Patterns ​

html
<!-- Responsive -->
<div class="sm:flex md:grid lg:hidden xl:block 2xl:inline">

<!-- Dark mode -->
<div class="dark:bg-gray-900 dark:text-white">

<!-- State variants -->
<div class="hover:bg-blue-600 focus:ring-2 active:bg-blue-800">

<!-- Group/Peer -->
<div class="group">
  <span class="group-hover:text-blue-500">
</div>

<!-- First/Last/Odd/Even -->
<li class="first:rounded-t-lg last:rounded-b-lg odd:bg-gray-50">

<!-- Before/After -->
<div class="before:content-[''] after:absolute">

<!-- Arbitrary variants -->
<div class="[&>*]:p-4 [&:nth-child(3)]:bg-blue-500">

Arbitrary Value Patterns ​

html
<!-- Arbitrary colors -->
<div class="bg-[#1da1f2] text-[rgb(255,0,0)]">
  <!-- Arbitrary spacing -->
  <div class="m-[2.5rem] gap-[clamp(1rem,5vw,3rem)] p-[13px]">
    <!-- Arbitrary properties -->
    <div class="[clip-path:circle(50%)] [mask-image:linear-gradient(...)]">
      <!-- CSS variables -->
      <div class="bg-[var(--my-color)] text-[length:var(--font-size)]">
        <!-- calc() -->
        <div class="h-[calc(100vh-64px)] w-[calc(100%-2rem)]"></div>
      </div>
    </div>
  </div>
</div>

Modifier Patterns ​

html
<!-- Important modifier -->
<div class="!mt-0 !bg-blue-500">
  <!-- Negative values -->
  <div class="-ml-4 -mt-2 -translate-x-full -rotate-45">
    <!-- Opacity modifier -->
    <div class="border-white/[.25] bg-blue-500/50 text-black/75">
      <!-- Gradient stops -->
      <div class="from-blue-500 via-purple-500 to-pink-500">
        <div class="from-10% via-30% to-90%"></div>
      </div>
    </div>
  </div>
</div>

Framework-Specific Patterns ​

svelte
<!-- Svelte class: directive -->
<div class:bg-red-500={isActive} class:flex>

<!-- Svelte class:list -->
<div class:list={["flex", isActive && "bg-blue-500"]}>
vue
<!-- Vue :class binding -->
<div :class="{ 'bg-blue-500': isActive }">
<div :class="['flex', isActive ? 'bg-blue' : 'bg-gray']">
astro
<!-- Astro class:list -->
<div class:list={["flex", { "bg-blue-500": isActive }]}>
tsx
// Qwik class attribute
<div class="flex items-center">
<div class={`flex ${isActive ? 'bg-blue-500' : ''}`}>

Community Resources ​

Learning Platforms ​

ResourceURLType
Tailwind Labs YouTubehttps://www.youtube.com/@TailwindLabsVideo tutorials
Tailwind Playhttps://play.tailwindcss.comInteractive playground
Tailwind UIhttps://tailwindui.comComponent examples

Third-Party Documentation ​

ResourceURLPurpose
shadcn/uihttps://ui.shadcn.comComponent library patterns
Flowbitehttps://flowbite.comComponent patterns
DaisyUIhttps://daisyui.comComponent plugin
Headless UIhttps://headlessui.comAccessible components

IDE Integration ​

IDEResource
VS CodeTailwind CSS IntelliSense extension
WebStormBuilt-in Tailwind support
Neovimtailwindcss-language-server

Pattern Compatibility Checklist ​

Must Support (Critical) ​

  • [x] Static class strings (single/double quotes)
  • [x] className attribute (React)
  • [x] class attribute (HTML, Vue, Svelte, Qwik, Astro)
  • [x] @apply directive
  • [x] @layer components/utilities
  • [x] All responsive prefixes
  • [x] Dark mode variants
  • [x] Hover/Focus/Active states
  • [x] Arbitrary values [...]
  • [x] Opacity modifiers /50
  • [x] Negative values -ml-4
  • [x] Important modifier !

Should Support (Important) ​

  • [x] Template literals (static parts)
  • [x] Ternary expressions
  • [x] clsx/classnames arguments
  • [x] cn() function (shadcn/ui)
  • [x] twMerge() function
  • [x] cva() patterns
  • [x] Svelte class: directive
  • [x] Group/Peer variants
  • [x] Container queries

Nice to Have ​

  • [ ] Dynamic class construction (limited support)
  • [ ] tailwind-variants (tv)
  • [ ] Computed class objects
  • [ ] classList.add/remove

Testing Strategy ​

For Each Pattern Category ​

  1. Extraction Test: Can we find these classes in source files?
  2. Transformation Test: Can we replace them in output?
  3. CSS Selector Test: Are CSS selectors updated correctly?
  4. Source Map Test: Do source maps remain accurate?

Test Files Needed ​

tests/
├── patterns/
│   ├── html-patterns.test.ts
│   ├── jsx-patterns.test.ts
│   ├── vue-patterns.test.ts
│   ├── svelte-patterns.test.ts
│   ├── css-directives.test.ts
│   ├── utility-functions.test.ts
│   ├── arbitrary-values.test.ts
│   └── variants.test.ts

Resources to Monitor ​

For New Features ​

For Community Patterns ​


Advanced Pattern Discovery ​

Layout Patterns (from docs) ​

PatternClassesSource
Centered Containermax-w-4xl mx-autostaticmania.com
Flex Layoutflex items-center justify-between gap-4kombai.com
Grid Layoutgrid grid-cols-3 gap-6telerik.com
Absolute Positioningabsolute top-0 right-0 bottom-0 left-0telerik.com
Fixed Headerfixed top-0 inset-x-0tailwindcss.com
Sticky Sidebarsticky top-0tailwindcss.com

Typography Patterns ​

PatternClasses
Prose (Typography plugin)prose prose-lg prose-blue
Text truncationtruncate, line-clamp-3
Text gradientsbg-gradient-to-r from-purple-400 to-pink-600 bg-clip-text text-transparent
Writing modes[writing-mode:vertical-rl]
Text shadows[text-shadow:2px_2px_4px_rgba(0,0,0,0.5)]

Animation Patterns ​

PatternClasses
Transitionstransition-all duration-300 ease-in-out
Transformstransform hover:scale-105 hover:-translate-y-1
Keyframe animationsanimate-spin, animate-pulse, animate-bounce
Custom animationsanimate-[wiggle_1s_ease-in-out_infinite]

Form Patterns ​

PatternClasses
Input stylingborder rounded-lg px-4 py-2 focus:ring-2 focus:ring-blue-500
Checkbox customappearance-none checked:bg-blue-500
Range slideraccent-blue-500
Form validationinvalid:border-red-500 valid:border-green-500

Interactive Patterns ​

PatternClasses
Dropdown menusgroup, group-hover:block, invisible group-hover:visible
Modalsfixed inset-0 bg-black/50 backdrop-blur-sm
Tooltipspeer, peer-hover:opacity-100
Accordionsopen:rotate-180, details, summary

Pseudo-Element Patterns ​

PatternExample
Before/Afterbefore:content-[''] before:absolute
First-letterfirst-letter:text-7xl first-letter:font-bold
Selectionselection:bg-blue-500 selection:text-white
Placeholderplaceholder:text-gray-400 placeholder:italic
File inputfile:mr-4 file:py-2 file:px-4 file:rounded-full
Marker (lists)marker:text-blue-500

State Patterns ​

StateVariants
User interactionhover:, focus:, active:, visited:
Form statesdisabled:, enabled:, checked:, indeterminate:
Validityvalid:, invalid:, required:, optional:
Parent statesgroup-hover:, group-focus:, group-active:
Sibling statespeer-hover:, peer-focus:, peer-checked:
Child stateshas-[:checked]:, has-[>img]:
PatternClasses
Print stylesprint:hidden, print:text-black
Motion preferencesmotion-reduce:transition-none, motion-safe:animate-spin
Contrastcontrast-more:border-2, contrast-less:opacity-75
Portrait/Landscapeportrait:hidden, landscape:flex

RTL/LTR Patterns ​

PatternClasses
Logical propertiesms-4 (margin-start), me-4 (margin-end)
Direction-awarertl:space-x-reverse, ltr:ml-4
Start/Endstart-0, end-0, ps-4, pe-4

Container Query Patterns (v4) ​

html
<!-- Named containers -->
<div class="@container/main">
  <div class="@lg/main:flex @md/main:grid">
    <!-- Size containers -->
    <div class="@container">
      <div class="@lg:text-xl @md:text-lg @sm:text-base">
        <!-- Container with min/max -->
        <div class="@[320px]:flex @[768px]:grid"></div>
      </div>
    </div>
  </div>
</div>

Data Attribute Patterns (v4) ​

html
<!-- State-based -->
<div data-state="open" class="data-[state=open]:bg-green-500">
  <div data-selected class="data-[selected]:ring-2">
    <!-- Boolean attributes -->
    <button data-loading class="data-[loading]:opacity-50">
      <!-- Parent data attributes -->
      <div data-theme="dark" class="group">
        <span class="group-data-[theme=dark]:text-white"></span>
      </div>
    </button>
  </div>
</div>

ARIA Patterns (v4) ​

html
<button aria-pressed="true" class="aria-pressed:bg-blue-500">
  <input aria-invalid="true" class="aria-invalid:border-red-500" />
  <div aria-hidden="true" class="aria-hidden:opacity-0">
    <nav aria-current="page" class="aria-[current=page]:font-bold"></nav>
  </div>
</button>

Supports Patterns ​

html
<!-- Feature detection -->
<div class="supports-[display:grid]:grid">
  <div class="supports-[backdrop-filter]:backdrop-blur-sm">
    <!-- Not supports -->
    <div class="not-supports-[display:grid]:flex"></div>
  </div>
</div>

Regex Patterns for Extraction ​

HTML/JSX Class Detection ​

javascript
// Double/single quotes
/class(?:Name)?=["']([^"']+)["']/g

// Template literals
/class(?:Name)?=\{`([^`]+)`\}/g

// Ternary in braces
/class(?:Name)?=\{[^}]*\?[\s]*["']([^"']+)["'][\s]*:[\s]*["']([^"']+)["'][^}]*\}/g

CSS Directive Detection ​

javascript
// @apply
/@apply\s+([^;]+);/g

// @layer components/utilities
/@layer\s+(components|utilities)\s*\{([^}]+)\}/g

// @theme
/@theme\s*\{([^}]+)\}/g

Utility Function Detection ​

javascript
// clsx, classnames, cn, twMerge
/(?:clsx|classnames|cn|twMerge)\s*\(\s*["'`]([^"'`]+)["'`]/g

// cva base classes
/cva\s*\(\s*["'`]([^"'`]+)["'`]/g

Documentation Update Workflow ​

  1. Weekly: Check https://github.com/tailwindlabs/tailwindcss/releases
  2. Monthly: Review https://tailwindcss.com/blog for new patterns
  3. Per release: Update compatibility matrix
  4. Quarterly: Audit all pattern categories

Next Steps ​

  1. Audit each pattern category against our current implementation
  2. Add missing pattern tests to our test suite
  3. Document unsupported patterns with workarounds
  4. Monitor new releases for new syntax/patterns
  5. Create automated pattern discovery from Tailwind docs