--- 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 {} } ```