Tailwind, généré par Rust.
Chaque élément de cette page est stylisé par bext-css, un générateur Tailwind natif Rust construit sur encre-css. Pas de PostCSS, pas de bundle Bun, pas de watcher — bext-server analyse le HTML rendu par SSR et injecte <style data-bext-css> dans <head>.
Composants en direct
Rendu côté serveur. Consultez le source — chaque élément stylisé ci-dessous provient d'une classe utilitaire Tailwind. (chargement des octets…)
25
↑ 3 cette semaine
1,284
stable
42 ms
5 dernières min
Boutons
Palette de couleurs bext (defined in crates/bext-css/src/lib.rs)
bext-accent-2
#10b981
bext-cloud
#8b5cf6
bext-companion
#6366f1
bext-info
#3b82f6
bext-warning
#f59e0b
bext-error
#ef4444
bext-success
#10b981
bext-black
#0a0a0a
Info
bg-bext-info, text-blue-900 — les utilitaires et les tokens bext-* se composent de la même façon.
Note CPU
Les sites sans route_css = true ignorent totalement le scan — aucune surcharge.
Pas d'étape de build
Ni PostCSS, ni CLI tailwindcss, ni tailwind.config.js.
Attention
Le preflight de Tailwind réinitialise h1, etc. Stylisez votre mise en page avec des utilitaires ou des sélecteurs de classe délimités.
Contrôles de formulaire
Domaines
- demo.bext.devactif
- cloud.bext.devopt-in
- docs.bext.devignoré
CSS généré pour cette page
Extrait de document.querySelector('style[data-bext-css]') au chargement de la page. Contient exactement les utilitaires utilisés ci-dessus — rien d'autre.
(ouvrez cette page dans un navigateur pour voir la feuille de style intégrée)Fonctionnement
Activer via toml
[build.css] route_css = true dans bext.config.toml. Mis en cache par site au démarrage.
Analyser le HTML SSR
Après le rendu de la page, bext-server parcourt le corps et extrait chaque token class="…" par balayage d'octets.
Injecter la feuille de style
encre-css génère le CSS minimal, et nous injectons <style data-bext-css> juste après <head>.
bext.config.toml
# bext.config.toml
[build.css]
route_css = true # opt this site into per-route Tailwind injection
Source de la page (cette page)
// Just write Tailwind utility classes — the Rust route-css pipeline
// scans the rendered HTML and inlines a <style data-bext-css> block
// into <head>. No build step, no PostCSS, no tailwind.config.js.
export default function Page() {
return (
<div class="rounded-2xl bg-gradient-to-br from-bext-cloud to-bext-companion p-8 text-white shadow-lg">
<h1 class="text-4xl font-bold tracking-tight">Hello, Tailwind</h1>
<p class="mt-2 text-white/80">
Generated by Rust at SSR time. No Node, no PostCSS.
</p>
<button class="mt-4 rounded-lg bg-white/10 hover:bg-white/20
px-4 py-2 font-medium transition-colors">
Click me
</button>
</div>
);
}crates/bext-css/src/lib.rs
// crates/bext-css/src/lib.rs
pub fn inject_route_css_if_enabled(site_root: &Path, html: String) -> String {
if route_css_enabled(site_root) { // cached per-site toml lookup
inject_route_css(html) // scan classes → encre-css → inline
} else {
html // zero CPU for non-Tailwind sites
}
}Un projet exécutable de cet exemple, ouvert dans l'éditeur bext play — modifiez le code, l'aperçu se met à jour.