CommunityImagemgithub.com

Pixel HUD UI

Pixel HUD UI é um framework UI completo no estilo retro de computador de voo / HUD de jogo (fonte CJK pixel, painéis quadrados com réguas de 1px, barras de título, scanlines CRT, teclas coloridas por intenção, interruptores de lâmpada, medidores segmentados), com especificação de design para cada controle e um kit CSS pronto para uso.

O que é Pixel HUD UI?

Pixel HUD UI é um framework de interface de usuário completo, não apenas um tema de cores, que implementa um estilo retro de computador de voo e HUD de jogo (8-bit, pixel art). Ele fornece três camadas integradas: fundamentos (grade de 4px, escala tipográfica para fonte pixel de 12px, papéis de cores semânticas, regras de 1px em vez de sombras, animação em passos), controles (painéis, botões, abas, campos de formulário, interruptores, medidores, menus, diálogos, tabelas, blocos de código e muito mais, cada um com tamanhos fixos e modelo de estados compartilhado) e paletas (variáveis CSS `--hud-*` que permitem usar qualquer esquema de cores, incluindo as cores da marca do aplicativo). O framework é útil para desenvolvedores que desejam criar ou transformar uma interface web (HTML puro, React, Next.js, Vue, Svelte, Tailwind, shadcn/ui) em um visual retrô de HUD de jogo, terminal, cockpit ou console sci-fi, sempre que o usuário mencionar estilos como pixel art, 8-bit, HUD de jogo, terminal retrô, 像素风, 像素 HUD, 复古终端, 游戏 HUD 风格, 飞行计算机界面. O kit inclui um arquivo de especificação detalhado (`design-system.md`), CSS de implementação, fontes pixel (Fusion Pixel 12px), paletas predefinidas (starward, terminal, paper), um seletor de cursor opcional, um guia de integração por stack e um script de verificação de contraste WCAG. O fluxo de trabalho recomendado envolve ler a especificação, analisar o projeto atual, copiar os arquivos do kit, escolher ou mapear as cores, ativar o skin com atributos HTML, construir a interface usando as classes de controle e verificar o resultado visual e de acessibilidade.

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/dodio12138/pixel-hud-ui/tree/HEAD

Installed? Explore more Imagem skills: steipete/songsee, affaan-m/frontend-design, mattpocock/improve-codebase-architecture · View all 6 →

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

O que Pixel HUD UI faz?

Um framework de UI, não apenas um tema de cores. Possui três camadas, e um bom resultado usa todas elas:

  1. Fundações: uma grade de 4px, uma escala tipográfica ajustada para uma face pixel de 12px, papéis de cores (cada cor significa uma coisa), regras de 1px em vez de sombras, movimento em passos.
  2. Controles: painéis e barras de título, teclas (botões) com intenções, teclas de ícone, abas, controles segmentados, linhas de lista, campos de formulário, entradas, selects, caixas de seleção e rádios quadrados, interruptores de lâmpada, controles deslizantes de medidor, medidores de progresso, lâmpadas, tags, badges, teclas, menus, tooltips, diálogos, toasts, tabelas, blocos de código, prosa, carregadores, estados vazios. Cada um tem tamanhos fixos e um modelo de estados compartilhado (hover, pressionado, foco, selecionado, desabilitado, carregando, erro).
  3. Paletas: tokens --hud-*, para que o framework funcione com qualquer cor, incluindo a própria marca do aplicativo.

Arquivos

ArquivoO que é
references/design-system.mdA especificação. Princípios, fundações e a anatomia de cada controle, tamanhos, estados, quando usar e acessibilidade. Leia antes de projetar.
assets/pixel-hud.cssA implementação: tokens, globais claras sob [data-skin="pixel"] e as classes de controle hud-*
assets/palettes.cssstarward (espaço profundo, escuro), terminal (cinza-esverdeado, escuro), paper (areia quente, claro)
assets/fonts.cssFusion Pixel 12px (OFL), fixado no jsDelivr; ou auto-hospedado via @fontsource
assets/pixel-caret.jsCursor de bloco de 3px opcional para campos de texto (data-pixel-caret)
assets/demo.htmlTodos os controles em todos os estados, com um alternador de paleta: a referência visual
references/integration.mdReceitas por stack: mapeamento das cores de um app, Tailwind, shadcn/ui, React/Next, Vue, escopo, alternância sem flash, fontes auto-hospedadas
scripts/check-contrast.mjsVerificação WCAG para qualquer paleta: node scripts/check-contrast.mjs my.css

Fluxo de trabalho

1. Leia a especificação e o demo

Leia references/design-system.md (pelo menos Princípios, Fundações e os controles que a tarefa precisa) e veja assets/demo.html. A especificação diz por que cada controle se parece daquela forma; segui-la é o que faz uma tela ser lida como este framework em vez de "um tema escuro com uma fonte pixel".

2. Analise o projeto

Antes de copiar qualquer coisa, descubra:

  • a stack e onde o CSS global é carregado (arquivo de layout, main.ts, index.html, entrada do Tailwind);
  • como as cores são definidas atualmente (propriedades customizadas CSS, tema Tailwind, variáveis HSL do shadcn, hex em componentes);
  • se é uma nova UI ou um restilo, se é a única aparência do app ou um tema alternável, a página inteira ou uma área.

Isso determina o mapeamento de cores (passo 4) e evita que você lute contra os estilos do aplicativo.

3. Adicione o kit

Copie pixel-hud.css, fonts.css, palettes.css (se uma paleta empacotada for usada) e pixel-caret.js (se o app tiver campos de texto) para o projeto. Ordem de carregamento: fonts → paletas → pixel-hud.css, após os estilos base do próprio app.

4. Escolha as cores

  • Uma paleta empacotada: data-hud-palette="starward" | "terminal" | "paper".
  • As próprias cores do app: um bloco mapeia suas variáveis para --hud-* (references/integration.md › Mapeando as cores de um app). Mantém a marca, adiciona o framework.
  • Uma nova paleta: siga "新建一套配色" na especificação.

Em seguida, execute node scripts/check-contrast.mjs <arquivo> em qualquer paleta que você escreveu ou mapeou, e corrija cada FALHA: os controles dependem das cores barra, texto e verde serem legíveis em todas as superfícies.

5. Ative-o

<html data-skin="pixel" data-hud-palette="starward">

Um tema alternável define estes antes da primeira pintura (references/integration.md › Alternância sem flash). Para estilizar apenas uma área, coloque ambos os atributos em seu contêiner.

6. Construa com os controles

Os globais já lidam com tipo, cantos quadrados, inputs nativos, selects, range sliders, checkboxes, scrollbars, anéis de foco, seleção e scanlines. Dê a cada elemento seu papel com uma classe, seguindo a especificação para tamanho e estado:

NecessidadeControle (classe)
Agrupar informações relacionadas.hud-panel + .hud-titlebar (+ .hud-titlebar__actions), corpo .hud-panel__body, seções .hud-subhead
Ação principal.hud-btn.is-solid (intenção: accent, go, warn, info, danger)
Ação secundária.hud-btn
Ação apenas com ícone.hud-icon-btn + aria-label
Alternar visualizações.hud-tabs > .hud-tab[aria-selected]
Escolher um entre 2 a 5 valores.hud-segmented > button[aria-pressed]
Lista navegável.hud-row[aria-current]
Entrada rotulada.hud-field > .hud-label + input/select + .hud-help / .hud-error
Dropdown.hud-select > select
Sim/não, um de muitos.hud-check, .hud-radio (marcas quadradas)
Ligar/desligar instantâneobutton.hud-switch[role=switch][aria-checked] > .hud-switch__knob
Nível / progresso.hud-gauge + --value (data-state warn/alert)
Status.hud-lamp[data-state]
Valor, ID, parâmetro.hud-tag; contagens .hud-badge; teclas kbd
Menus, dicas, modal, feedback.hud-menu, .hud-tooltip, .hud-backdrop > .hud-dialog, .hud-toasts > .hud-toast
Dados, código, artigostable.hud-table, .hud-code, .hud-prose
Entrada de comando / chat.hud-input + data-pixel-caret
Aguardando, nada a mostrar.hud-loader, aria-busy em uma tecla, .hud-empty

Coloque as classes no código-fonte do componente (JSX, templates), passando-as através da propriedade className/class de uma biblioteca de componentes, em vez de escrever seletores contra elementos internos do framework: elas sobrevivem a refatorações e são lidas claramente.

Ao fazer restilo de um aplicativo existente, primeiro mapeie cada componente existente para a tabela acima (uma lista curta em sua resposta ajuda o usuário a acompanhar), depois aplique.

7. Verifique o resultado

  • Tire um print da página (ou abra-a) e compare com assets/demo.html.
  • Confirme que a fonte pixel carregou (document.fonts, aba Network); uma CSP pode bloquear o jsDelivr, então auto-hospede.
  • Navegue por tab: todos os controles alcançáveis, anéis de foco verdes de 1px visíveis.
  • Percorra o modelo de estados nos controles principais: hover, pressionado, desabilitado, carregando, erro.
  • O script de contraste passa para a paleta em uso.

As regras que mais importam

A especificação tem a explicação completa; estas são as mais frequentemente quebradas:

  • Quadrados e planos. Sem raio, sem sombras de desfoque, sem gradientes exceto scanlines. Apenas sobreposições recebem a sombra de deslocamento rígida.
  • As cores mantêm seus trabalhos. Barra = estrutura e seleção; verde = ligado, ênfase, foco; amarelo = valores; laranja = notas e avisos; vermelho = perigo. Verde usado como decoração deixa de significar "ligado".
  • Selecionado = invertido. Preenchimento da barra com texto escuro; linhas adicionam uma borda verde de 3px. Em um fundo de cor de barra, hover inverte ao contrário.
  • Uma ação principal sólida por área; ações lado a lado recebem cada uma sua própria cor de intenção e mantêm-na quando desabilitadas (esmaecer, não contornar).
  • Barras de título encabeçam apenas painéis. Cabeçalhos de tabela e código usam o tom suave --hud-bar-soft.
  • Os tamanhos vêm da escala: controles 24/28/32px, espaçamento na grade de 4px, texto 12/14/16/24/36px.

Armadilhas

  • O framework força border-radius: 0 !important em seu escopo. Mantenha algo redondo (um avatar) delimitando o skin a um contêiner que o exclua.
  • color-mix() precisa Chrome/Edge 111, Safari 16.2, Firefox 113; para navegadores mais antigos, defina --hud-bar-soft / --hud-bar-line como cores sólidas.
  • Uma classe que define display pode mostrar elementos hidden; o framework re-oculta [hidden] dentro de seu escopo, então prefira o atributo hidden para alternar.
  • Frameworks que definem o valor de um campo por código não disparam input; chame field.__pixelCaret.update() após tal mudança se o cursor precisar se mover imediatamente.
  • Scanlines ficam em um z-index muito alto com pointer-events: none; desligue-as com data-hud-scanlines="off" onde elas atrapalharem (prints, aplicações canvas).

Habilidades Relacionadas