@guidoginesi/pow-ui
v0.3.7
Published
POW Design System — tokens, theme y componentes compartidos entre apps POW.
Readme
@guidoginesi/pow-ui — POW Design System
Sistema de diseño compartido entre apps POW. Light mode, marca fija: tinta
#1A1D23 (primary) + naranja #FE722B (brand/accent). Construido sobre
Tailwind v4 + Radix + CVA. Sin dependencias de ninguna app — portable.
- Reglas y patrones:
GUIDELINES.md— color, densidad, cuándo usar Tabs / SegmentedControl / TabNav, Sheet vs Dialog, KPIs, gráficos, etc. - Migrar una app vieja al DS:
MIGRATION-PLAYBOOK.md— proceso con sub-agentes, checklist de 9 criterios, template de prompt.
Instalar
Paquete público en el registry npm. Sin token, sin configuración:
npm i @guidoginesi/pow-uiSetup en tu app
El paquete trae los componentes; necesitás el entorno alrededor.
Tokens / theme
En tu CSS global, después de Tailwind:
@import "tailwindcss";
@import "@guidoginesi/pow-ui/theme.css";Esto te da todos los tokens (bg-primary, text-muted-foreground, bg-brand,
bg-success-subtle, …), la escala tipográfica (type-display … type-micro),
.card, .nums-tabular y los tokens --z-* / --duration-*.
El
html { font-size }y elbodyno vienen en el theme — son shell de cada app; definilos vos.
Componentes
import { Button } from "@guidoginesi/pow-ui/components/ui/button";
import { Stat } from "@guidoginesi/pow-ui/components/ui/stat";
import { BarList } from "@guidoginesi/pow-ui/components/ui/bar-list";Con Next.js, transpilá el paquete (trae .tsx sin compilar):
// next.config.ts
transpilePackages: ["@guidoginesi/pow-ui"],Peer deps
Instalá las que usás (ver package.json): class-variance-authority, clsx,
tailwind-merge, lucide-react, date-fns, cmdk, sonner y los @radix-ui/*.
Fuente de marca (opcional)
Los títulos usan var(--font-display) → --font-helvetica-now. Cargala con
next/font/local y ponela en <html className={helveticaNow.variable}>. Sin
esto, los títulos caen al stack del sistema (funciona, sin la marca).
Publicar una versión nueva (mantenedor)
npm login # una vez, con la cuenta dueña del scope @guidoginesi
# bump de versión en package.json, luego:
npm publish # publishConfig.access = public → npm públicoGovernance
- Nunca colores crudos.
bg-blue-600❌ →bg-primary✅. - Un
primary(tinta) por vista;brand(naranja) es acento, no acción. - Estados con tokens semánticos (success/warning/danger +
-subtle). - Montos con
nums-tabular. - Radius vía
rounded-[var(--radius)].
Detalle completo en GUIDELINES.md.
