Files
OPEN_CODEX_API/design-system.md
T
2026-05-16 19:29:25 -03:00

15 KiB
Raw Blame History

Design System — HGTX Commander

Referência técnica de tokens e padrões — light + dark.
Fonte da verdade (código): src/index.css + tailwind.config.ts.
Tema aplicado via next-themes (class no <html>, storageKey: hgtx-commander-theme).

Cor de marca (azul HGTX)

Azul institucional usado em botões primários, links, anéis de foco e destaques do Commander.

Papel Light Dark
Primária hsl(210 100% 33%) · #0054A8 hsl(210 90% 52%) · #1685F3
Hover hsl(210 100% 28%) · #00478F hsl(210 95% 46%) · #0675E5
Pressed hsl(210 100% 24%) · #003D7A hsl(210 100% 40%) · #0066CC
Fundo sutil hsl(210 55% 96%) · #EFF5FB hsl(210 50% 14%) · #122033
Focus ring rgba(0, 85, 164, 0.28) rgba(51, 136, 255, 0.35)

Referência histórica de marca: ~#0055A4 / #004080 — no código o token --primary (light) resolve para #0054A8.

Tailwind / shadcn: bg-primary, text-primary, border-primary, ring-ring (usa --ring, alinhado ao primário).


Fonte

Inter — Google Fonts

Pesos: 400, 500, 600, 700

Import: https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap

Token: --font-sans: "Inter", system-ui, -apple-system, "Segoe UI", sans-serif


Cores

Valores em HSL sem vírgula (formato shadcn: hsl(var(--token))). Hex entre parênteses para referência visual.

Primária e estados

Token CSS Light (HSL · HEX) Dark (HSL · HEX) Classe Tailwind Uso
--primary 210 100% 33% · #0054A8 210 90% 52% · #1685F3 bg-primary text-primary CTAs, enviar, links ativos
--primary-foreground 0 0% 100% · #FFFFFF 0 0% 100% · #FFFFFF text-primary-foreground Texto sobre primário
--primary-hover 210 100% 28% · #00478F 210 95% 46% · #0675E5 bg-primary-hover Hover botões primários
--primary-pressed 210 100% 24% · #003D7A 210 100% 40% · #0066CC bg-primary-pressed Active / pressed
--primary-light 210 55% 96% · #EFF5FB 210 50% 14% · #122033 bg-primary-light Fundo de destaque suave
--ring 210 100% 33% 210 90% 52% ring-ring Focus visível (inputs)
--focus-ring rgba(0, 85, 164, 0.28) rgba(51, 136, 255, 0.35) sombra manual Focus em componentes custom

Semânticas (feedback)

Token CSS Light (HSL · HEX) Dark (HSL · HEX) Classe Tailwind Uso
--success 134 61% 41% · #29A847 141 71% 48% · #23D160 bg-success text-success Online, confirmação
--success-foreground 0 0% 100% 216 48% 8% text-success-foreground Texto sobre success
--destructive 0 84% 60% 0 84% 60% bg-destructive Erro, excluir
--destructive-foreground 0 0% 100% 0 0% 100% text-destructive-foreground Texto sobre destructive
--warning 38 92% 50% 38 92% 50% bg-warning text-warning Alertas, badge “Pessoal”
--warning-foreground 209 11% 15% 216 48% 8% text-warning-foreground Texto sobre warning

Superfícies (page, card, sidebar)

Token CSS Light (HSL · HEX) Dark (HSL · HEX) Classe Tailwind Uso
--background 0 0% 100% · #FFFFFF 216 48% 8% · #0B121E bg-background Fundo principal / chat
--foreground 209 11% 15% · #22262A 0 0% 100% · #FFFFFF text-foreground Texto principal
--card 0 0% 100% · #FFFFFF 216 42% 11% · #101A28 bg-card Cards, modais, composer
--card-foreground 209 11% 15% 0 0% 100% text-card-foreground Texto em cards
--popover 0 0% 100% 216 42% 11% bg-popover Dropdowns, selects
--sidebar-background 210 17% 98% · #F8FAFB 216 50% 9% · #0B1522 bg-sidebar Sidebar Commander / módulos
--sidebar-foreground 209 11% 15% 0 0% 100% text-sidebar-foreground Texto na sidebar
--sidebar-border 220 13% 91% · #E5E7EB 212 12% 21% · #2F363F border-sidebar-border Divisor da sidebar
--sidebar-accent 210 70% 94% · #E3EEFC 210 45% 16% · #16283D bg-sidebar-accent Item de nav ativo / hover
--sidebar-accent-foreground 210 100% 33% 210 85% 62% · #5BA3EB text-sidebar-accent-foreground Texto no item ativo
--muted 210 17% 96% · #F3F6F8 216 38% 13% · #15202E bg-muted Fundos secundários
--accent 210 70% 94% 210 45% 16% bg-accent Hover suave, chips
--accent-foreground 210 100% 33% 210 85% 62% text-accent-foreground Texto em accent

Tokens extras (chat e UI)

Token CSS Light (HSL · HEX) Dark (HSL · HEX) Uso
--bubble-bot 209 36% 96% 216 36% 14% Bolha do assistente
--nav-active 210 70% 94% 210 45% 16% Nav ativo (alias visual do accent)
--input-bg 0 0% 100% 216 40% 10% Fundo de campos (referência)
--secondary 210 6% 60% 216 38% 13% Neutro secundário (evitar texto em badge dark)
--secondary-foreground 209 11% 15% 0 0% 100% Texto sobre secondary

Bordas e inputs (shadcn)

No shadcn, --input é a cor da borda de Input / Select / Textarea, não o fundo do campo.

Token CSS Light (HSL · HEX) Dark (HSL · HEX) Classe Tailwind Uso
--border 220 13% 91% · #E5E7EB 216 18% 26% · #36404E border-border Divisores, cards
--input 220 9% 83% · #D0D2D8 216 16% 30% · #404A59 border-input Borda de inputs
--border-subtle 220 13% 95% 216 22% 20% custom Bordas muito suaves
--btn-secondary-border 220 9% 83% 216 16% 30% custom Outline secundário

Texto secundário

Token CSS Light (HSL · HEX) Dark (HSL · HEX) Classe Tailwind Uso
--muted-foreground 209 7% 46% · #6D767E 212 9% 58% · #8B949E text-muted-foreground Subtítulos, hints
--placeholder 220 9% 66% 212 10% 31% text-placeholder / placeholder: Placeholders

Gradientes e glow (efeitos)

Token Light Dark
--gradient-cyber 135deg, hsl(210 100% 33%) → hsl(210 90% 42%) hsl(210 90% 52%) → hsl(210 100% 40%)
--gradient-subtle #FFF → hsl(210 17% 98%) hsl(216 42% 11%) → hsl(216 48% 8%)
--glow-cyan / --glow-blue sombra azul suave 1215% opac. sombra azul 2835% opac.

Classes utilitárias: .gradient-text, .cyber-glow, .glass-effect em src/index.css.


Tipografia

Mesma escala em light e dark.

Nível Tamanho Peso Line Height Classe Semântica
Display / Commander 32px (--fs-display) 700 1.25 (--lh-tight) text-display
Heading 1 — Modal 24px (--fs-h1) 600 1.25 text-h1
Heading 2 — Seção 18px (--fs-h2) 600 1.5 (--lh-body) text-h2
Heading 3 15px (--fs-h3) text-h3
Body 14px (--fs-body) 400 1.5 text-body
Small / Timestamp 12px (--fs-small) 400 text-small
Caption 11px (--fs-caption) 500 text-caption
Nav link 13px 500 (--fw-medium) text-nav-link
Nav brand 15px 700 (--fw-bold) text-nav-brand
Brand lockup (tagline) 10px 600 text-brand-tag
Brand lockup (nome) 16px 700 text-brand-name
Hero título (catálogo) clamp(28px, 4vw, 42px) 700 1.25 text-hero
Section title 28px 700 text-section-title

Tokens de peso: --fw-regular 400, --fw-medium 500, --fw-semibold 600, --fw-bold 700. Tokens de line-height: --lh-tight 1.25, --lh-body 1.5, --lh-relaxed 1.65.


Espaçamento

Base unit: 4px

Token Valor Classe Semântica
--space-1 4px p-1 / m-1 / gap-1
--space-2 8px p-2 / m-2 / gap-2
--space-3 12px p-3 / m-3 / gap-3
--space-4 16px p-4 / m-4 / gap-4
--space-5 20px p-5 / m-5 / gap-5
--space-6 24px p-6 / m-6 / gap-6
--space-7 32px p-7 / m-7 / gap-7
--space-8 48px p-8 / m-8 / gap-8
--space-9 64px p-9 / m-9 / gap-9
--section-y 64px py-section
--section-x 40px px-section
--nav-h 56px h-nav
--container 1200px max-w-container

Border Radius

Token Valor Classe Semântica Uso
--radius-sm 6px rounded-sm Chat items, detalhes
--radius-md 8px rounded-md Botões, inputs, nav items, badges
--radius-lg 12px rounded-lg Cards, bolhas, demo wrap
--radius-xl 16px rounded-xl Modal Personalidade
--radius-pill 999px rounded-pill Chat bar (composer)
50% rounded-full Botão send circular

Sombras

Token CSS Light Dark Classe Tailwind Uso
--shadow-card 0 4px 12px rgba(0,0,0,0.06) 0 4px 16px rgba(0,0,0,0.35) shadow-card Cards elevados
--shadow-modal 0 16px 40px rgba(0,0,0,0.12) 0 24px 48px rgba(0,0,0,0.55) shadow-modal Modais, dialogs

Glow Online (badge): box-shadow: 0 0 8px hsl(var(--success) / 0.5).


Componentes

Use referências a tokens — valores resolvem para light/dark conforme o tema ativo.

Botão Primary (HGTX — Nova Sessão / Salvar Perfil)

bg-primary hover:bg-primary-hover active:bg-primary-pressed
text-white rounded-md px-[18px] py-[10px]
text-[13px] font-semibold inline-flex items-center gap-2
border-none cursor-pointer transition-[background] duration-200
disabled:opacity-45 disabled:cursor-not-allowed

Botão Primary (catálogo / hero)

bg-primary hover:bg-primary-hover active:bg-primary-pressed active:translate-y-px
text-white rounded-md px-6 py-3 text-sm font-semibold
border-none cursor-pointer transition-all duration-200

Botão Outline (Nova Pasta)

bg-transparent text-primary border border-btn-secondary
rounded-md px-[18px] py-[10px] text-[13px] font-medium
inline-flex items-center gap-2 cursor-pointer
hover:border-secondary transition-[border-color] duration-200
bg-transparent text-primary border border-btn-secondary
rounded-md px-6 py-3 text-sm font-medium
hover:border-secondary hover:bg-black/[0.03] (light) / hover:bg-white/[0.04] (dark)
transition-all duration-200 cursor-pointer

Botão Ghost (Cancelar)

bg-transparent text-secondary border-none rounded-md px-[14px] py-2
text-[13px] cursor-pointer
hover:text-primary hover:bg-black/[0.04] (light) / hover:bg-white/[0.05] (dark)
transition-all duration-200

Botão Send (circular)

w-10 h-10 rounded-full bg-primary text-white border-none
flex items-center justify-center text-base cursor-pointer

Nav Sticky (catálogo DS)

sticky top-0 z-[100] h-nav flex items-center justify-between px-section
bg-nav backdrop-blur-[12px] border-b border-divider

Nav CTA

bg-primary hover:bg-primary-hover text-white rounded-md
px-[18px] py-2 text-[13px] font-semibold border-none cursor-pointer

Nav Item (sidebar)

flex items-center gap-3 px-3 py-2 rounded-md text-[13px] text-secondary

Nav Item Ativo

bg-nav-active text-primary

Nav Chat Item (lista conversas)

flex justify-between items-center px-3 py-2 text-xs text-secondary rounded-sm
/* timestamp */ text-[11px] text-placeholder

Input / Select / Textarea

font-sans text-sm px-[14px] py-[10px] rounded-md
border border-divider bg-input text-primary outline-none w-full
placeholder:text-placeholder
transition-[border-color,box-shadow] duration-200
focus:border-primary focus:shadow-[0_0_0_3px_var(--color-focus-ring)]
disabled:opacity-50 disabled:cursor-not-allowed

Textarea (modal)

[classes input] min-h-[120px] resize-y

Input Search (com ícone)

relative /* wrap */
[input] pl-9
/* ícone */ absolute left-3 top-1/2 -translate-y-1/2 text-placeholder text-sm

Chat Composer Bar

flex items-center gap-3 py-2 pr-2 pl-5
border border-divider rounded-pill bg-input max-w-[560px]
/* input interno */ flex-1 border-none bg-transparent text-sm text-primary outline-none placeholder:text-placeholder
/* + btn-send */

Badge Online

inline-flex items-center gap-2 text-small font-medium text-secondary
/* dot */ w-2 h-2 rounded-full bg-success shadow-[0_0_8px_rgba(35,209,96,0.5)]

Badge Self-Hosted

inline-flex items-center gap-2 text-caption text-placeholder
px-3 py-2 border border-divider rounded-md

Card Modal (Personalidade)

max-w-[480px] p-6 bg-surface-card border border-divider rounded-xl shadow-modal

Card Modal Header

flex justify-between items-start mb-4
/* título */ text-h2 font-semibold

Card Modal Close

w-8 h-8 border-none rounded-md bg-transparent text-secondary text-lg cursor-pointer
hover:text-primary hover:bg-black/[0.05] (light) / hover:bg-white/[0.06] (dark)

Card Modal Actions

flex justify-end gap-3 mt-5
/* Cancelar: btn-hgtx-ghost | Salvar: btn-hgtx-primary */

Bolha Bot (boas-vindas)

max-w-[420px] px-5 py-4 bg-bubble-bot rounded-lg
text-sm text-secondary leading-relaxed

Layout Demo (3 colunas)

grid grid-cols-[200px_280px_1fr] border border-divider rounded-lg overflow-hidden min-h-[320px]
/* sidebars */ bg-sidebar p-4 border-r border-divider
/* main */ bg-page p-5 flex flex-col items-center justify-center

Brand Lockup (sidebar)

text-[10px] font-bold uppercase tracking-[0.12em] text-secondary mb-4
/* nome */ block text-sm text-primary tracking-[0.06em]

Folder Label (sidebar)

text-xs font-medium text-secondary py-2 mt-3

Tema — como aplicar

  1. Tokens light em :root e tokens dark em .dark — ver src/index.css.
  2. App: ThemeProvider (next-themes) com attribute="class", storageKey="hgtx-commander-theme", temas light | dark.
  3. Tailwind: cores semânticas em tailwind.config.tshsl(var(--primary)), etc.

Tokens compartilhados (não mudam com o tema): --fs-*, --space-*, --radius-*, --fw-*, --lh-*, --section-*, --nav-h, --container.

Texto sobre botões primários: sempre --primary-foreground (#FFFFFF).

Mapeamento rápido (legado → atual)

Doc / HTML antigo Token atual
#0061ff / #1a73e8 --primary → #0054A8 (light) / #1685F3 (dark)
bg-page bg-background
bg-sidebar bg-sidebar (--sidebar-background)
text-secondary (corpo) text-muted-foreground
border-divider border-border

Atualizado para refletir src/index.css (HGTX Commander redesign).
Para uso como referência no Cursor e agentes de código.