Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/konnorrogers/tailwindcss-plugin-custom-elements

A set of tailwind plugins for working with custom element selects such as ::part() and :state()
https://github.com/konnorrogers/tailwindcss-plugin-custom-elements

Last synced: 5 days ago
JSON representation

A set of tailwind plugins for working with custom element selects such as ::part() and :state()

Awesome Lists containing this project

README

        

# Purpose

Make the `::part()` and `::state()` CSS selectors for Shadow DOM easier to work with.

`::part()`:

`:state()`:

Here's a primer as to why this is nice:

## Installation

```bash
npm install tailwindcss-plugin-custom-elements
```

## Adding the plugin

```js
import {
PartPlugin,
StatePlugin
} from 'tailwindcss-plugin-custom-elements'

export default {
plugins: [
PartPlugin(), // Adds `part-[name]:` pseudo-selector
StatePlugin(), // Adds `state-[name]:` pseudo-selector
]
}
```

## Syntax

The basic syntaxes are:

`part-[{{ partName }}]:{{ otherStuff }}`

`state-[{{ stateName }}]:{{ otherStuff }}`

## Example

Here's an example where we set the background-color to `red-500` on a shadow root part with the name of `"base"`,
and then on `:hover`, we change the background color to `blue-500`

```html



```

Generated selectors:

```css
&::part(base).bg-red-500 { background-color: theme("colors.red.500"); }
&::state(valid):bg-green-600 { background-color: theme("colors.green.600"); }
```

## Additional notes

Order matters. If for some reason a part isn't being applied as expected, make sure things are in the correct order.
`::state()` and `::part()` is a pseudo-element and does not accept all possible pseudo-selectors / pseudo-elements.