diff --git a/.npmrc b/.npmrc index 6df6def..031ca5d 100644 --- a/.npmrc +++ b/.npmrc @@ -1,7 +1,7 @@ @etus:registry=https://registry.npmjs.org/ //registry.npmjs.org/:_authToken=${NODE_AUTH_TOKEN} -# Resolve internal workspace deps (e.g. create-bhono -> @etus/bhono) to the local -# package instead of the registry. Without this, a release bump points the dep at -# a version that isn't published yet, so `pnpm install` can't resolve it and every -# release stalls on the lockfile (ERR_PNPM_NO_MATCHING_VERSION / OUTDATED_LOCKFILE). -link-workspace-packages=true +# Internal monorepo deps (create-bhono -> @etus/bhono) use the `workspace:` +# protocol (see packages/create-bhono/package.json) so they always resolve to the +# local package, never the registry — @etus/bhono is unpublished. This replaces the +# deprecated `link-workspace-packages`, which pnpm 10 ignores: after a release bump +# any re-resolution 404'd on the registry instead of linking the workspace package. 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 `