diff --git a/CLAUDE.md b/CLAUDE.md index 1a38c9f..31b53b5 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -222,6 +222,16 @@ Defined in `config/wrangler.json`: 2. Use `createFileRoute` from TanStack Router 3. Access auth via `useAuth()` hook +### Frontend UI — Design System (Seven) + +Every UI element comes from **Seven** (`@etus/seven-react`, which re-exports `@etus/ui` + `@etus/tokens`). Do not build controls with raw HTML or local UI components. + +- **Components:** `import { Button, TextInput, Card, Dialog, Switch, Checkbox, Divider, SkeletonLoader, Toaster, Sidebar } from '@etus/seven-react'`. Names are not shadcn's (e.g. `TextInput` not `Input`; `Divider` not `Separator`) — verify exports at **runtime** (`Object.keys(await import('@etus/ui'))`), not from the `.d.ts`. +- **Tokens:** `@etus/tokens` is the source for color/radius/spacing/typography (via `@import "@etus/seven-react/styles.css"` in `src/client/index.css`). The local `@theme` only keeps what Seven does not provide. +- **Brand (`DESIGN.md` in the Seven repo):** Inter + JetBrains Mono; only `mint`/`lime` are brand (fuchsia is charts-only); no decoration; sentence-case pt-BR; Tailwind v4 type hints (`bg-[color:var(--token)]`). +- **Guard-rail:** ESLint bans raw `