vite-plugin-tailwind-shadowdom
v1.0.0
Published
Vite plugin to normalize Tailwind CSS for Shadow DOM usage
Maintainers
Readme
vite-plugin-tailwind-shadowdom
A Vite plugin that normalizes Tailwind CSS for Shadow DOM usage.
The Problem
When using Tailwind CSS inside Shadow DOM (web components), two issues occur:
:rootdoesn't work - CSS custom properties defined on:rootaren't accessible inside Shadow DOM-webkit-hyphens: nonebreaks - Tailwind's@supportsconditions with-webkit-hyphens: nonedon't work properly in Shadow DOM context
See tailwindlabs/tailwindcss#15005 for more details.
Installation
npm install vite-plugin-tailwind-shadowdom -D
# or
yarn add vite-plugin-tailwind-shadowdom -D
# or
pnpm add vite-plugin-tailwind-shadowdom -DUsage
// vite.config.ts
import { defineConfig } from 'vite';
import tailwindShadowDOM from 'vite-plugin-tailwind-shadowdom';
export default defineConfig({
plugins: [tailwindShadowDOM()],
});What It Does
This plugin runs after Tailwind processes your CSS and:
- Converts
:rootto:host- Ensures CSS custom properties work within Shadow DOM - Removes problematic
@supportsconditions - Strips-webkit-hyphens: noneconditions that break in Shadow DOM
Before
:root {
--color-primary: #3b82f6;
}
@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) {
.truncate {
text-overflow: ellipsis;
}
}After
:host {
--color-primary: #3b82f6;
}
@supports (not (margin-trim: inline)) {
.truncate {
text-overflow: ellipsis;
}
}When to Use
This plugin is useful when:
- Building web components with Shadow DOM
- Embedding widgets/microfrontends that use Shadow DOM isolation
- Using Tailwind CSS with
?inlineCSS imports for Shadow DOM injection
Compatibility
- Vite 4.x, 5.x, 6.x, 7.x
- Tailwind CSS 3.x, 4.x
License
MIT © Maximilian Förster
