ferro-json-ui 0.2.12

JSON-based server-driven UI schema types for Ferro
Documentation
@import "tailwindcss";

/* Scan ferro-json-ui and framework Rust source files for utility class literals. */
@source "../../ferro-json-ui/src";
@source "../../framework/src";

/*
 * Register ferro's custom design tokens as inline theme variables.
 *
 * @theme inline tells Tailwind v4 to generate utility classes (bg-background,
 * text-text, border-border, etc.) as var() references. The actual values come
 * from the theme CSS injected at runtime by ThemeMiddleware, so dark mode and
 * per-tenant themes continue to work without rebuilding the CSS.
 *
 * @source inline() cannot generate utilities for unknown color tokens — it only
 * safelists classes Tailwind already knows about. @theme inline is required.
 */
@theme inline {
  /* Surface tokens */
  --color-background: var(--color-background);
  --color-surface: var(--color-surface);
  --color-card: var(--color-card);
  --color-border: var(--color-border);
  --color-text: var(--color-text);
  --color-text-muted: var(--color-text-muted);

  /* Role tokens */
  --color-primary: var(--color-primary);
  --color-primary-foreground: var(--color-primary-foreground);
  --color-secondary: var(--color-secondary);
  --color-secondary-foreground: var(--color-secondary-foreground);
  --color-accent: var(--color-accent);
  --color-destructive: var(--color-destructive);
  --color-success: var(--color-success);
  --color-warning: var(--color-warning);

  /* Shape tokens */
  --radius-sm: var(--radius-sm);
  --radius-md: var(--radius-md);
  --radius-lg: var(--radius-lg);
  --radius-full: var(--radius-full);

  /* Shadow tokens */
  --shadow-sm: var(--shadow-sm);
  --shadow-md: var(--shadow-md);
  --shadow-lg: var(--shadow-lg);
}

/*
 * Safelist classes emitted via runtime string concatenation
 * (e.g., `format!("bg-{}", variant)`).
 */
@source inline("font-sans font-mono");

/*
 * Responsive grid-cols variants — generated at runtime via format!() in render_grid,
 * so the Tailwind scanner cannot detect them as literals.
 */
@source inline("grid-cols-1 grid-cols-2 grid-cols-3 grid-cols-4 grid-cols-5 grid-cols-6 grid-cols-7 grid-cols-8 grid-cols-9 grid-cols-10 grid-cols-11 grid-cols-12 md:grid-cols-1 md:grid-cols-2 md:grid-cols-3 md:grid-cols-4 md:grid-cols-5 md:grid-cols-6 md:grid-cols-7 md:grid-cols-8 md:grid-cols-9 md:grid-cols-10 md:grid-cols-11 md:grid-cols-12 lg:grid-cols-1 lg:grid-cols-2 lg:grid-cols-3 lg:grid-cols-4 lg:grid-cols-5 lg:grid-cols-6 lg:grid-cols-7 lg:grid-cols-8 lg:grid-cols-9 lg:grid-cols-10 lg:grid-cols-11 lg:grid-cols-12");