Next Generation Utility-First Integration
If you've used Tailwind JIT, you already know the workflow. Write utility classes in your markup, and the utility scanner generates only the CSS you use at build time. The difference: your classes are backed by type-safe factories and your own design tokens — with complete control over syntax, naming, and generation behavior.
Write Classes. The Utility Scanner Handles the Rest
Use utility classes directly in your templates — no need to pre-define every value. The scanner reads your source files, detects your classes, and generates only the CSS you actually use.
Zero Registration
Use utility classes directly in your markup without pre-defining every value. The scanner detects and registers them for you.
Only Used CSS
Unused utilities produce no output. Your stylesheet contains exactly what your templates reference — nothing more, nothing less.
Arbitrary Values
Need a one-off value? Use bracket syntax like
_padding:[2.5rem]. No need to register a design token for every edge case.Stacked Modifiers
Chain modifiers freely.
_dark:hover:color:primary just works — detected and generated automatically.Your Syntax, Your Rules
Unlike fixed utility catalogs, you define the factories behind your classes. Control naming conventions, allowed values, and generation behavior — the scanner adapts to your system.
Instant HMR
Template changes trigger incremental rescans during development. Only changed files are re-processed — your feedback loop stays instant.
Write Classes in Your Templates
Use utility classes in your markup like you would with Tailwind. The scanner reads your source files, extracts every
_property:value class, and generates the matching CSS at build time.12+ File Types
Vue, React, Svelte, Astro, MDX, PHP, ERB, Twig, Blade, and plain HTML — each with a specialized extractor optimized for its syntax.
Custom Extractors
Working with an unsupported file type? Write a custom extractor function in a few lines and plug it in.
Button.vue
<template>
<div class="_display:flex _gap:1rem _padding:lg">
<button class="_background:primary
_hover:background:secondary
_padding:md
_font-weight:bold">
Click me
</button>
<span class="_color:muted _font-size:sm">
Detected and generated automatically.
</span>
</div>
</template>
See Exactly What Gets Generated
Design tokens resolve to CSS custom properties. Arbitrary bracket values produce literal CSS. Modifiers wrap declarations in the correct pseudo-selectors and media queries.
What you write is what you get — predictable, readable output.
Output CSS
/* Only the utilities your templates reference */
._padding\:lg {
padding: var(--spacing-lg);
}
._background\:primary {
background: var(--color-primary);
}
._hover\:background\:secondary:hover {
background: var(--color-secondary);
}
/* Arbitrary values generate literal CSS */
._padding\:\[2\.5rem\] {
padding: 2.5rem;
}
Start Writing Utility Classes Today
Enable the scanner, register your factories, and let your templates drive your CSS output. Type-safe, JIT, and built on your own design tokens.