Patina

Docs

Install, tokens, registry auth, license, reduced motion.

Install

Patina is a namespaced shadcn registry. Add it to components.json, then add items.

pnpm add motion
npx shadcn@latest add @patina/marquee
npx shadcn@latest add @patina/dock

Tokens

Surfaces use CSS variables only — --background, --foreground, --brass. Dark is the default. Light mode remaps the same names. Do not hardcode surface hex.

Fonts: Geist for UI, Instrument Serif for headings via --font-heading.

Registry auth

@patina is public. @patina-pro returns 401 unless you send X-License-Key.

{
  "registries": {
    "@patina": "https://patina-ui.pages.dev/r/{name}.json",
    "@patina-pro": {
      "url": "https://patina-ui.pages.dev/r/{name}.json",
      "headers": {
        "X-License-Key": "${PATINA_LICENSE_KEY}"
      }
    }
  }
}

License

Pro is $49 once. Checkout writes plan=pro and issues a pat_live_… key. See /license. 14-day refund.

Reduced motion

Every animated component reads prefers-reduced-motion. Global CSS also short-circuits animation duration. Marquee becomes a static row. Dock stops magnifying.