Files
ai-agent/frontend/tailwind.config.js
Gabriel Vidal e97cf0c2a0 refactor(ai-agent): unify spawn & resume composers on @gabvdl/ui RichInput
Replace the two bespoke textarea composers (SpawnBox / ResumeBox) with the
shared RichInput from the design system, so both share one input with all
features combined: auto-grow textarea, localStorage draft, file attachments,
prompt-shortcut toggles, project/service #-mention tags, history recall and
reverse-search.

- New lib/richComposer.tsx adapts app concepts to RichInput's GuidelineTag /
  RichFile vocabulary and rebuilds the exact prompt block format via the
  existing composePrompt (thread viewer still strips the attachments block).
- SpawnBox keeps its app-level un-send lifecycle (optimistic You card,
  sync-and-redirect) around RichInput; resume gains file attachments and keeps
  its guidelines master switch (now in the toolbar).
- Bump vendored @gabvdl/ui 0.3.0 -> 0.4.0 (adds RichInput + setFiles handle).
- Add popover/destructive design tokens so RichInput's menus render.
- Drop now-unused lib/useDraft, lib/tagMention and the shortcut chip helpers.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-11 17:14:11 +02:00

48 lines
1.8 KiB
JavaScript

/** @type {import('tailwindcss').Config} */
export default {
darkMode: "class",
content: [
"./index.html",
"./src/**/*.{ts,tsx}",
// Scan the vendored @gabvdl/ui build so utility classes it emits (e.g. the
// ProgressiveList reveal transition) survive Tailwind's purge.
"./node_modules/@gabvdl/ui/dist/**/*.js",
],
theme: {
extend: {
colors: {
border: "hsl(var(--border))",
input: "hsl(var(--input))",
ring: "hsl(var(--ring))",
background: "hsl(var(--background))",
foreground: "hsl(var(--foreground))",
primary: { DEFAULT: "hsl(var(--primary))", foreground: "hsl(var(--primary-foreground))" },
secondary: { DEFAULT: "hsl(var(--secondary))", foreground: "hsl(var(--secondary-foreground))" },
muted: { DEFAULT: "hsl(var(--muted))", foreground: "hsl(var(--muted-foreground))" },
accent: { DEFAULT: "hsl(var(--accent))", foreground: "hsl(var(--accent-foreground))" },
popover: { DEFAULT: "hsl(var(--popover))", foreground: "hsl(var(--popover-foreground))" },
destructive: { DEFAULT: "hsl(var(--destructive))", foreground: "hsl(var(--destructive-foreground))" },
card: { DEFAULT: "hsl(var(--card))", foreground: "hsl(var(--card-foreground))" },
},
borderRadius: {
lg: "var(--radius)",
md: "calc(var(--radius) - 2px)",
sm: "calc(var(--radius) - 4px)",
},
fontFamily: {
mono: ["ui-monospace", "SFMono-Regular", "Menlo", "monospace"],
},
keyframes: {
"wifi-flash": {
"0%, 100%": { color: "#ef4444", opacity: "1" },
"50%": { color: "#0a0a0a", opacity: "0.85" },
},
},
animation: {
"wifi-flash": "wifi-flash 1.6s ease-in-out infinite",
},
},
},
plugins: [require("tailwindcss-animate")],
};