--- name: transformer-attributify-jsx description: Support valueless attributify in JSX/TSX --- # Transformer Attributify JSX Fixes valueless attributify mode in JSX where `
` becomes `
`. ## The Problem In JSX, valueless attributes are transformed: ```jsx // You write
// JSX compiles to
``` The `={true}` breaks UnoCSS attributify detection. ## Installation ```ts import { defineConfig, presetAttributify, transformerAttributifyJsx } from 'unocss'; export default defineConfig({ presets: [presetAttributify()], transformers: [transformerAttributifyJsx()], }); ``` ## How It Works The transformer converts JSX boolean attributes back to strings: ```jsx // Input (after JSX compilation)
// Output (transformed)
``` Now UnoCSS can properly extract the attributify classes. ## Options ```ts transformerAttributifyJsx({ // Only transform specific attributes // Default: transforms all that match attributify patterns blocklist: ['text', 'font'], }); ``` ## When to Use Required when using: - React - Preact - Solid - Any JSX-based framework With valueless attributify syntax: ```jsx // This needs the transformer
// This works without transformer (has values)
``` ## Framework Setup ### React ```ts // vite.config.ts import React from '@vitejs/plugin-react'; import UnoCSS from 'unocss/vite'; export default { plugins: [ UnoCSS(), // Must be before React React(), ], }; ``` ```ts // uno.config.ts import { defineConfig, presetAttributify, presetWind3, transformerAttributifyJsx } from 'unocss'; export default defineConfig({ presets: [presetWind3(), presetAttributify()], transformers: [transformerAttributifyJsx()], }); ``` ### Preact Same as React, use `@preact/preset-vite` or `@prefresh/vite`. ### Solid ```ts import UnoCSS from 'unocss/vite'; import solidPlugin from 'vite-plugin-solid'; export default { plugins: [UnoCSS(), solidPlugin()], }; ``` ## TypeScript Support Add type declarations: ```ts // shims.d.ts import type { AttributifyAttributes } from '@unocss/preset-attributify'; declare module 'react' { interface HTMLAttributes extends AttributifyAttributes {} } ```