GingaGinga design system

Marca

Ginga transforma um Galaxy Tab em segunda tela do Mac. O nome carrega as duas leituras da marca: 銀河, galáxia em japonês, e a ginga da capoeira. A interface inteira segue essa ideia: um céu calmo e escuro, um tablet levemente inclinado fora do eixo, e movimentos que passam um pouco do ponto e voltam, como um balanço.

Ginga é também o nome do código: módulos, a ferramenta de linha de comando ginga, logs e bundle id.

Conteúdo e voz

  • Português do Brasil primeiro, inglês como segunda língua. Frases curtas, voz ativa, “você” implícito: “Ligue o Ginga no Mac.”, não “O usuário deve habilitar…”.
  • Botões são verbos no infinitivo: Criar display, Conectar, Parear, Não parear, Esquecer, Desconectar.
  • Estados dizem o que está acontecendo, não o mecanismo: “Anunciando na rede”, “Aguardando código”, “Conectado · 60 Hz”, “Pausado: nada na tela do tablet”. Detalhe técnico (adb reverse tcp:47800 tcp:47800, portas, codec) fica recolhido em Avançado ou Diagnóstico.
  • Números e specs sempre em mono: 2560×1600, 60 Hz, 482 913. Use “×”, não “x”.
  • “Galaxy”, “Samsung”, “Mac” e “Sidecar” são marcas de terceiros: só uso descritivo (“para Mac”, “funciona com Galaxy Tab”), nunca no nome nem no logo.
  • Sem emoji na interface. A única “ilustração” é a estrela de quatro pontas.

Fundamentos visuais

Temas. Os apps têm três, escolhidos pela pessoa (Claro / Escuro / Black espacial) ou seguindo o sistema. O site usa só Claro e Escuro, com as telas de marca em cosmos:

  • Claro: bg Névoa, surface branco, texto ink Noite.
  • Escuro: bg Noite, surface Superfície escura, primária Cobalto noturno.
  • Black espacial (só na UI interna dos apps, Mac e Android; nunca no site): preto puro predominante para telas AMOLED e mini‑LED (pixels apagados, zonas desligadas, menos energia e contraste infinito). bg é #000 e toma o lugar de cosmos nas telas de marca dos apps; tudo que é área (bg, surface, surface-2, fundo do stream) é #000000 exato; cartões e controles existem só pelo contorno line de 1px e pelo brilho glow-cobalt, sem nenhum cinza‑escuro; detalhes espaciais pequenos: poeira de estrelas no canto de cada grupo, halo no toggle ligado e no status, código de pareamento com leve brilho. Nunca fundos grandes em cinza: se não for preto, é pequeno.

Cor. Use cobalt para a única ação principal da tela, toggles ligados, links e o anel de foco; texto sobre ele em on-cobalt. star é só a estrela e faíscas, nunca texto. Estados: success, warning, danger aparecem como ponto ou ícone ao lado de texto em ink (no tema claro, success e warning ficam abaixo de 4.5:1 como texto). cobalt-brand é fixo e pinta a placa do ícone e o cometa. Fique longe do azul da Samsung (#1428A0) e de degradês à la Apple: a marca não pode parecer afiliada a nenhuma das duas.

Tipo. display e title em Unbounded, só SemiBold (600) ou ExtraBold (800), e só em títulos de tela, estados grandes e marca. Todo o resto em Figtree (headline, body, label, caption). Números, specs e códigos em IBM Plex Mono (mono, code-digits). No Mac, a UI nativa pode seguir com SF Pro e usar Unbounded só no título da janela e na marca.

Espaço e forma. Grade de 4px: space-3/space-4 dentro das linhas, space-6 entre grupos, space-8 de margem. Cantos: radius-md em botões e campos, radius-lg em grupos, radius-xl em sheets e alertas, radius-pill em toggles, status e botões do tablet (toque de 44px).

Profundidade. Claro: shadow-card suave. Escuro: borda de luz no topo. Black espacial: sem sombra, só contorno e brilho. Alertas e sheets usam shadow-float sobre um véu cosmos a 40%.

Foco. Anel sólido de 2px em cobalt, afastado 2px, em todo controle focável. Passa de 3:1 em todas as superfícies dos três temas.

Movimento e microinterações

O movimento é o “espacial” da marca, e é barato: só transform e opacity, um único canvas para o céu, nada animando fora da tela.

  • Balanço (ease-ginga): toggles, dígitos surgindo, o tablet encaixando. Passa ~6% do ponto e volta.
  • Toque: tudo que é clicável encolhe para 0.97 em dur-tap.
  • Faísca: ao ligar um toggle ou confirmar uma ação principal, sete pontinhos star saem do centro (Ginga.spark). Nunca ao desligar.
  • Órbita: status “Procurando” e o radar do tablet giram em dur-orbit, ease-orbit.
  • Cometa: ao conectar por Wi‑Fi, uma cauda star atravessa de Mac para tablet em dur-warp, termina num anel que se expande e o tablet entra em warp (estrelas esticando) até o primeiro quadro.
  • Cabo: por USB, um pulso cobalt corre pelo cabo no lugar do cometa.
  • Céu: Ginga.starfield (suave) ou Ginga.pixelSky (em pixels) em telas de marca apenas.
  • Dithering espacial: buraco negro e galáxia em pixels de 4 px, Bayer 4×4, só nas 6 cores da paleta (componente DitherSpace). Buraco negro na espera do stream e no topo do site (colapsa com o ponteiro, explode no clique); galáxia na conexão sem roteador e na faixa de download. Nunca atrás de texto corrido.
  • Movimento reduzido: sem órbitas, cometa, warp ou faíscas; estados trocam por fade de 1ms. Toda animação precisa ter um equivalente estático que diga a mesma coisa em texto.

Iconografia

  • A · Órbita (contorno de tela, tablet inclinado, estrela) é o ícone dos apps no Mac e no Android, favicon e lojas: ginga-app-icon.png (placa cobalt-brand), ginga-orbit.png / ginga-orbit-dark.png sem placa.
  • B · Monograma “g” (bojo em forma de tela, cauda de S Pen) é detalhe: cabeçalho da janela e da home do tablet, marcadores, loading, avatares. Não é ícone de app.
  • C · Logotipo (“ginga” em Unbounded ExtraBold, o tablet como pingo do i) é a marca no site: header, footer, hero.
  • Use as versões -dark em fundos mais escuros que #6F82FF (temas Escuro e Black espacial e todo fundo cosmos).
  • Área de respiro: A e B, a largura da estrela de cada lado; C, a altura do pingo‑tablet. Mínimos: A 16px, B 20px, C 80px de largura.
  • Não endireite o tablet, não recolora a estrela, não aplique sombra ou degradê, não escreva “ginga” em outra fonte.
  • Ícones de interface: traço de 1.5px, cantos arredondados, desenhados no grid de 16px, na cor do texto ou cobalt dentro de g-row__icon. No Mac, SF Symbols equivalentes são aceitos. A barra de menus usa o mark A em modelo (template) monocromático.

Os apps

Veja a seção Fluxos de UI/UX para as telas de cada app e o componente ConnectDemo para a demo clicável (Mac + tablet) com a animação de conexão.

Fluxos de UI/UX

Como os dois apps mudam com a marca Ginga. Base: a UI atual de 26/09/2026 (painel SwiftUI com 9 seções soltas; tela Android em Views XML com instruções longas e radio buttons). Objetivo: uma decisão por tela, o técnico recolhido, o estado sempre visível.

Princípios

  1. O estado vem primeiro. Um StatusOrbit no topo de cada tela diz onde a conexão está. Hoje “Virtual display / Capture / Connection” são três linhas que a pessoa precisa cruzar.
  2. Um caminho recomendado por vez. Wi‑Fi pareado é o padrão; Cabo USB é a alternativa; Sem roteador aparece só quando não há rede. adb sai da tela inicial e vai para Avançado.
  3. Configurar ≠ conectar. Ajustes de display (resolução, taxa, orientação) ficam numa tela de Ajustes; o painel principal só conecta e mostra o que está acontecendo.
  4. O que vale na hora é toggle; o que demora é botão com status.

Mac

Barra de menus (ponto de entrada do dia a dia)

EstadoÍcone (mark A, template)Menu
Desligadocontorno“Ginga está desligado” · Aceitar tablets · Abrir Ginga… · Sair
Procurandoestrela pisca“Anunciando na rede” · tablets pareados (com ponto de estado) · Parar
Conectadoponto success no canto“Galaxy Tab S11 · 60 Hz · Wi‑Fi” · Pausar display · Desconectar · Ajustes de Telas…
Erroponto dangera causa em palavras + a ação (“Cabo desconectado · Tentar de novo”)

Janela principal (substitui o painel de 9 seções)

  1. Cabeçalho: monograma B + “Ginga” (title) + StatusOrbit.
  2. Conexão: Aceitar tablets por Wi‑Fi (toggle) · Aceitar tablet por USB, sem modo desenvolvedor (toggle) · Sem roteador (linha que abre uma sheet explicando que o Mac sai do Wi‑Fi atual).
  3. Tablets: DeviceRow por tablet pareado (nome amigável, meta em mono, Esquecer). Vazio: “Nenhum tablet pareado ainda.”
  4. Ações: um primário que muda com o estado: Criar display → Desconectar (destrutivo). Secundário fantasma: Ajustes….
  5. Diagnóstico: recolhido, mono.

Ajustes (janela separada, grupos): Display (resolução, HiDPI, taxa 60/120 Hz como Segmented, posição, alinhamento) · Toque e S Pen (um dedo, ⌘ no teclado do tablet, permissão de Acessibilidade) · Captura (cursor, downscale) · Energia (codificador) · Aparência (Claro / Escuro / Black espacial / Sistema) · Avançado (adb, porta, prévia de debug).

Pareamento

Sheet presa à janela (não NSAlert solto): ícone A, “Parear com Galaxy Tab S11?”, PairingCode em dois grupos, “O tablet mostra o mesmo código? Pareie só tablets seus.”, Não parear / Parear. Ao parear: faísca, sheet fecha, cometa.

Tablet (Android)

Início

  • Procurando: monograma + “Procurando seu Mac” + radar orbitando. Chips de método: Wi‑Fi · Cabo USB · Sem roteador.
  • Mac encontrado: DeviceRow “MacBook Pro do Kelvin” com Conectar (primeira vez) ou Reconectar (pareado).
  • Pareando: “Confirme no Mac” + PairingCode + status Aguardando o Mac.
  • Cabo USB: o diálogo do Android (“Abrir Ginga para ‘Segunda tela para seu Mac’?” + Sempre) é o único passo.
  • Conectado/Pausado: display “Conectado” ou “Pausado”, explicação curta (“Nada do Mac está nesta tela, então ele parou de enviar.”), Mostrar tela (primário) e Desconectar.

Stream

  • Antes do primeiro quadro: céu cosmos com o buraco negro em dithering (DitherSpace) centralizado, “Transmitindo de MacBook Pro do Kelvin” em stardust e status Conectando…. Tocar no horizonte explode as partículas (microinteração). Quando chega o primeiro quadro: warp e o stream.
  • Conexão direta (sem roteador): tela própria com a galáxia em dithering girando, o nome da rede em mono/star (“DIRECT‑Ginga‑4F2A”), “O Mac está entrando na órbita deste tablet.” e Encerrar.
  • Primeiro quadro: toast StatusOrbit “Conectado · 60 Hz · Wi‑Fi” por 3 s e some. Overlay de diagnóstico só se ligado em Ajustes.
  • No Black espacial (tema só dos apps), a espera do stream e toda moldura são #000 em vez de cosmos.

Ajustes

Reconectar automaticamente (toggle) · Taxa preferida (Segmented: Mac decide / 60 Hz / 120 Hz) · Decodificação rápida (toggle, “usa mais bateria”) · Aparência (Claro / Escuro / Black espacial / Sistema) · Diagnóstico (toggle) · Avançado (instruções adb).

Mapa do fluxo de conexão

PassoMacTabletMovimento
1 LigarToggle Wi‑Fi ou USBRadar procurandoFaísca no toggle; órbita no status
2 Encontrar“Anunciando na rede”DeviceRow entra subindog-rise 420ms
3 Parear (1ª vez)Sheet com códigoMesmo códigoDígitos surgem como estrelas
4 EstenderStatus Conectado, tablet na lista, primário vira DesconectarWarp → área de trabalho estendidaCometa (Wi‑Fi) ou pulso no cabo (USB), anel no tablet, tablet encaixa
Sem roteadorSheet explica que o Mac sai do Wi‑FiGaláxia em dithering + nome da redeGaláxia girando devagar
PausadoStatus Pausado“Pausado” + Mostrar telaÓrbita para
ErroPonto danger + causa + açãoMesmo textoSem animação

Cores

Os valores de cada tema: Claro, Escuro e Black espacial. O quadrado grande segue o tema escolhido no topo.

cobalt

#2E47F5#6F82FF#6F82FF

Primária (Cobalto / Cobalto noturno). Botões principais, toggles ligados, links, anel de foco, o tablet da marca. Como texto: 5.7:1 em bg e 6.3:1 em surface no claro; 5.1:1 em surface no escuro. Black espacial: Cobalto noturno, 5.9:1 sobre preto.

on-cobalt

#FFFFFF#141830#000000

Texto e ícones sobre um preenchimento cobalt. Branco no claro (6.3:1), Noite no escuro (5.3:1): branco sobre o Cobalto noturno fica em 3.2:1 e não passa. Black espacial: preto.

cobalt-brand

#2E47F5#2E47F5#2E47F5

Cobalto fixo, igual nos dois temas: a placa do ícone do app, o tablet do logotipo, o cometa da animação de conexão. Nunca como texto no escuro.

cobalt-soft

#E3E7FE#252C66#161B45

Adição intencional. Fundo de estado selecionado (segmento ativo, linha em foco, halo do toggle). Texto sobre ele: ink. Black espacial: único tom não preto permitido em área, e só em elementos pequenos (segmento ativo, chip).

bg

#F2F3F8#141830#000000

Fundo da janela e da tela: Névoa no claro, Noite no escuro, preto puro #000000 no Black espacial (pixels apagados em AMOLED, zonas desligadas em mini‑LED).

surface

#FFFFFF#171A33#000000

Cartões e grupos de configurações sobre bg (Superfície escura no escuro). Black espacial: também #000000; o cartão existe só pelo contorno line e pelo brilho, nunca por um cinza.

surface-2

#E8EAF3#20244A#000000

Adição intencional. Trilho do segmented control, blocos de código (adb reverse …), trilho do toggle desligado. Black espacial: #000000 com contorno line.

ink

#141830#F2F3F8#F2F3F8

Texto principal sobre bg, surface, surface-2 e cobalt-soft (15:1 ou mais nos dois temas).

ink-muted

#565B78#A4A9C8#9EA3C2

Adição intencional. Valores à direita das linhas, legendas, ajuda. Sobre bg, surface e surface-2: 5.5:1 ou mais no claro, 6.4:1 ou mais no escuro. Black espacial: 7.1:1 ou mais.

line

#DCDFEA#2A2E4D#1C2040

Divisórias entre linhas de um grupo e contorno de cartões. Decorativa: nunca é a única coisa que separa um controle. No Black espacial é o que desenha os cartões sobre o preto.

star

#F2A900#FFC43D#FFC43D

Estrela. Só a estrela da marca, a faísca dos microinterações e pequenos destaques (o selo “120 Hz”). Nunca texto longo: 2:1 sobre branco no claro.

success

#138A52#4FD08E#4FD08E

Conectado / transmitindo. No claro fica 4.4:1 sobre branco (valor da marca, mantido): use como ponto ou ícone ao lado de texto em ink, não como texto corrido.

warning

#B26A00#F2B24C#F2B24C

Pausado / aguardando pareamento. No claro fica 4.2:1 sobre branco (valor da marca, mantido): ponto ou ícone com rótulo em ink.

danger

#C23B3B#F07474#F07474

Erro, “Esquecer tablet”, “Desconectar” destrutivo. 5.3:1 sobre branco, 6:1 sobre surface no escuro. Sempre com palavra, nunca só a cor.

cosmos

#0A0C1C#0A0C1C#0A0C1C

Adição intencional. O céu da marca: site, onboarding, a demo de conexão, espera do stream nos temas Claro e Escuro. Igual nos temas; no Black espacial os apps usam bg (#000) no lugar dele. Texto: stardust.

stardust

#F2F3F8#F2F3F8#F2F3F8

Adição intencional. Texto e estrelas sobre cosmos (17.5:1). Estrelas pequenas a 30–90% de opacidade.

Tipografia

Marca · Unbounded

display-xl56px/60px · 800 · -0.02em

Só em telas de marca (onboarding, site). Uma linha por tela.

Seu tablet, sua órbita.
display34px/40px · 600 · -0.01em

Estado grande no tablet (Conectado, Pausado).

Conectado
title20px/26px · 600

Título de tela e de janela. Unbounded só em SemiBold ou ExtraBold.

Tablets

Texto · Figtree

headline17px/24px · 600

Cabeçalho de grupo, título de alerta.

Parear com Galaxy Tab S11?
body15px/22px · 400

Rótulos de linha e texto corrido.

Aceitar tablets pareados por Wi‑Fi
label13px/18px · 500

Botões, segmentos, pílulas de status.

Criar display
caption12px/16px · 400

Ajuda sob um grupo, em ink-muted.

Criptografado com TLS.

Números · IBM Plex Mono

mono13px/18px · 400

Specs, resoluções, portas, diagnósticos.

2560×1600 · hevc · 60 fps
code-digits36px/40px · 500 · 0.08em

Código de pareamento, sempre em dois grupos de três.

482 913

Espaçamento

space-14px

Entre ícone e rótulo.

space-28px

Entre botões vizinhos, dentro de pílulas.

space-312px

Padding vertical de uma linha de configuração.

space-416px

Padding horizontal de linhas e cartões.

space-624px

Entre grupos de configurações.

space-832px

Margem da janela no Mac, margem da tela no tablet.

space-1248px

Respiro de telas de marca e do stage da demo.

Raios

radius-sm8px

Botões pequenos, chips, blocos de código.

radius-md12px

Botões, campos, segmented control.

radius-lg18px

Grupos de configurações e cartões.

radius-xl28px

Folhas (sheets) no tablet, alerta de pareamento, janela da demo.

radius-pill999px

Toggles, pílulas de status, botões do tablet.

Sombras e brilhos

No Black espacial não há sombra (preto não projeta sombra em preto): elevação vira contorno fino de luz cobalto e brilho.

shadow-card

Grupos e cartões. No escuro a borda de luz de cima substitui a sombra.

shadow-float

Alertas, sheets, popovers.

glow-cobalt

Halo de hover/foco do botão primário e do toggle ligado.

glow-star

Brilho da estrela e da faísca. Nunca em texto.

Movimento

Clique numa trilha para ver a duração ou a curva.

dur-tap120ms

Pressionar: escala 0.97 de botões e linhas.

dur-ui220ms

Toggles, segmentos, troca de estado.

dur-sheet420ms

Abrir alertas e sheets; entrada de cartões.

dur-orbit2400ms

Uma volta do satélite no status “Procurando”.

dur-warp1400ms

Viagem do cometa Mac → tablet ao conectar.

ease-gingacubic-bezier(0.34,1.36,0.64,1)

O balanço: leve passada do ponto e volta. Toggles, estrelas surgindo, o tablet encaixando.

ease-outcubic-bezier(0.2,0.8,0.2,1)

Entradas, sheets, fades.

ease-orbitlinear

Rotações contínuas (órbitas, radar).

Logos

Exports PNG oficiais da marca (os SVGs vivem em design/brand/ no repositório).

  • ginga-app-icon.png — mark A na placa cobalt-brand (1024 px). Ícone dos apps, lojas, favicon.
  • ginga-orbit.png / ginga-orbit-dark.png — mark A sem placa. Tinta Noite + tablet Cobalto no claro; branco + Cobalto noturno no escuro.
  • ginga-monogram.png / ginga-monogram-dark.png — mark B, o “g”. Detalhes: cabeçalhos, loading, avatares. Nunca ícone de app.
  • ginga-wordmark.png / ginga-wordmark-dark.png — mark C, o logotipo. Header, footer, hero.

Use as -dark sobre fundos mais escuros que #6F82FF: temas Escuro, Black espacial e cosmos. Não recolorir, endireitar o tablet, sombrear ou aplicar degradê.

Componentes

Fluxos

ConnectDemo

Demo interativa: clique na UI do Mac e do tablet para conectar. O seletor de tema muda só a UI dos apps; o site fica igual.

Demo clicável do fluxo de conexão: um MacBook e um Galaxy Tab lado a lado sob um céu, com a UI nova dos dois apps.

O consumidor fornece nada: é uma página de vitrine (site, apresentação, testes de usabilidade). Carrega tokens.css, bundle.css e bundle.js.

  • Caminho Wi‑Fi: ligar o toggle no Mac → o tablet encontra o Mac → Conectar → código nas duas telas → Parear → cometa, warp, área de trabalho estendida. Desconectar e Reconectar mostra o atalho de tablet já pareado.
  • Caminho USB: “Prefiro o cabo USB” ou o toggle USB → o cabo se desenha, o Android pede para abrir o Ginga → Abrir → pulso no cabo, warp.
  • Um anel star pulsante com rótulo aponta sempre o próximo clique; a narração embaixo explica o passo.
  • Seletor Claro / Escuro / Black espacial no topo troca o tema das duas UIs.
  • Performance: um canvas de céu (pausa fora da tela), cometa e warp só durante a conexão, resto em transform/opacity. Movimento reduzido pula cometa e warp.

Ações

Button

Primário, secundário, fantasma, destrutivo

Botão de ação: uma ação primária por tela, o resto secundário ou fantasma.

O consumidor fornece o rótulo (verbo no infinitivo: “Criar display”, “Conectar”) e, se quiser, a estrela g-btn__star só no primário.

  • g-btn--primary: fundo cobalt, texto on-cobalt, halo glow-cobalt no hover. Uma por tela (Mac: “Criar display”/“Remover display”; tablet: “Conectar”).
  • sem modificador: secundário em surface-2.
  • g-btn--ghost: links de ação (“Mostrar prévia”, “Ajustes de Telas…”).
  • g-btn--danger: “Esquecer”, “Desconectar” quando encerra uma sessão ativa. Texto danger, contorno line.
  • g-btn--pill (44px) no tablet, para toque; g-btn--sm (28px) em linhas do Mac.
  • Pressionar encolhe para 0.97 em dur-tap. Desativado: 45% de opacidade, sem hover.
  • Não use mais de um primário por tela; não pinte botões de star.

Controles

Segmented

Orientação e taxa de atualização

Escolha entre 2 a 4 opções curtas, visíveis ao mesmo tempo (orientação, taxa de atualização).

O consumidor fornece div.g-seg com um span.g-seg__thumb e botões com aria-pressed; liga com Ginga.segmented(root, onChange).

  • Trilho surface-2, polegar surface com shadow-card que desliza com ease-ginga.
  • Rótulos de uma ou duas palavras. Mais de 4 opções: use um menu.
  • No tablet, substitui os radio buttons de “Taxa preferida”.

Switch

Toggle com faísca ao ligar

Toggle liga/desliga para opções que valem na hora (sem “Aplicar”).

O consumidor fornece um <input type="checkbox" role="switch"> dentro de label.g-switch, seguido de g-switch__track e g-switch__thumb; o rótulo fica na linha (g-row__label), não no switch.

  • Ligado: trilho cobalt, polegar branco desliza com ease-ginga (passa um pouco e volta).
  • Ao ligar, chame Ginga.spark(switchEl): sete pontinhos star saem do centro. Só ao ligar, nunca ao desligar.
  • Pressionar alarga o polegar (feedback de toque).
  • Foco: anel cobalt de 2px. Com movimento reduzido não há faísca.
  • Não use para ações que demoram (criar display): isso é botão, com status.

Status

PairingCode

Código de 6 dígitos em dois grupos

Os seis dígitos de pareamento, iguais no Mac e no tablet, surgindo um a um como estrelas.

O consumidor fornece os dígitos: el.innerHTML = Ginga.pairingCode("482913").

  • Sempre dois grupos de três (“482 913”), estilo code-digits em ink.
  • Entrada escalonada de 60ms por dígito com ease-ginga; com movimento reduzido aparecem direto.
  • Leitores de tela recebem “Código 4 8 2 9 1 3” pelo aria-label.
  • Mostre ao lado a pergunta (headline) e os botões “Parear” (primário) / “Não parear”.

StatusOrbit

Seis estados de conexão

Pílula de estado da conexão: um “planeta” colorido com uma órbita animada, e o estado em palavras.

O consumidor fornece o estado (g-status--searching|pairing|connected|paused|error, nenhum = desligado) e o texto.

  • Procurando: arco cobalt girando (ease-orbit). Aguardando código e Conectado: pulso que se expande. Pausado e Erro: parados.
  • Cor nunca sozinha: o texto sempre diz o estado. O texto fica em ink (os tons de estado no claro não chegam a 4.5:1 como texto).
  • Specs dentro da pílula em mono (“60 Hz”, “2560×1600”).
  • Um só StatusOrbit por tela, no topo (Mac: cabeçalho da janela e barra de menus; tablet: topo da home).

Estrutura

DeviceRow

Tablet pareado ou Mac encontrado

Uma linha por aparelho: tablets pareados no Mac, Macs encontrados no tablet.

O consumidor fornece o nome amigável (nunca só o modelo cru: “Galaxy Tab S11”, com “SM‑X730” no meta), o meta em mono (estado · via) e uma ação.

  • A miniatura é o tablet inclinado da marca com a estrela: cobalt-brand e star.
  • Linhas novas entram subindo (g-rise, dur-sheet), escalonadas 120ms, como estrelas aparecendo.
  • Ação: “Conectar” (primário, tablet) ou “Esquecer” (destrutivo, Mac).

SettingsGroup

Grupo de linhas, substitui o Form do Mac

Grupo de linhas em cartão: a unidade de toda tela de ajustes, no Mac e no tablet.

O consumidor fornece um título curto (g-group-title, fora do cartão), as linhas (g-row) e, se preciso, uma ajuda (g-help) abaixo.

  • Cartão surface com radius-lg e shadow-card sobre bg; divisórias line recuadas space-4.
  • Linha: ícone opcional (g-row__icon, 28px, cobalt sobre cobalt-soft), rótulo body, subtítulo caption em ink-muted, e à direita um valor (g-row__value, números em mono), um Switch, um Segmented ou um Button --sm.
  • Altura mínima 48px; no tablet use linhas de 56px (toque).
  • Máximo de 6 linhas por grupo; mais que isso, divida.
  • Ordem das seções no Mac: Status → Tablets → Display → Captura → Energia → Diagnóstico (este recolhido).

Marca

DitherSpace

Buraco negro e galáxia em dithering, nas telas de espera dos apps

Espaço em dithering pixelizado: um buraco negro com disco de acreção e uma galáxia espiral, desenhados em baixa resolução com matriz de Bayer 4×4 sobre a paleta da marca e ampliados sem suavização.

O consumidor fornece um <canvas> com resolução interna baixa (1 pixel de canvas = 4 px de tela, por exemplo width="190" height="122" para 760×486) e CSS image-rendering: pixelated, e chama:

  • Ginga.ditherLoop(canvas, Ginga.blackHole()): gás espiralando para dentro com Doppler (lado esquerdo dourado), anel de fótons, arco lenteado, estrelas deformadas pela lente e ~700 partículas em órbita. O retorno expõe shade.pullT (0–1, colapso das órbitas: ligue à distância do ponteiro ou do dedo) e shade.tb = loop.now() (explosão das partículas: ligue a um <button> sobre o horizonte).
  • Ginga.ditherLoop(canvas, Ginga.galaxy({ cx, cy, s, spin })): espiral inclinada, núcleo star, braços cobalt-brand/cobalt.
  • Ginga.pixelSky(canvas): céu inteiro em pixels de 4 px, com cintilação e estrela cadente. Redimensiona sozinho.

Paleta (do escuro ao quente): cosmos (transparente), Noite, cobalt-brand, Cobalto noturno, stardust, star. Não use outras cores.

Onde usar

  • Site: topo (buraco negro + céu em pixels), faixa de download (galáxia), 404.
  • Apps: espera do stream no tablet (buraco negro, até o primeiro quadro), conexão sem roteador (galáxia), fundo de pareamento. No Black espacial o fundo é #000 e o nível mais escuro fica transparente, então os pixels apagados continuam apagados.
  • Nunca atrás de texto corrido ou formulários.

Desempenho: ~24 fps, só putImageData numa imagem de ~20 mil pixels; pausa fora da tela, com a aba oculta e com movimento reduzido (desenha um quadro parado). No Android: um Bitmap pequeno + drawBitmap com isFilterBitmap = false; no SwiftUI: CGImage num Image(...).interpolation(.none) atualizado por TimelineView(.animation(minimumInterval: 1/24)).

Starfield

Céu em canvas, pausa fora da tela

O céu da marca: fundo cosmos com estrelas stardust, algumas cobalt e star, cintilando e derivando devagar.

O consumidor fornece um contêiner .g-sky com um <canvas> e chama Ginga.starfield(canvas).

  • Só em telas de marca: onboarding, espera do stream no tablet, conexão direta, site. Nunca atrás de formulários.
  • Performance: uma camada, DPR até 1.5, ~0.22 estrela por 1000 px²; pausa com a aba oculta ou fora da tela; movimento reduzido desenha um quadro parado.
  • Texto por cima em stardust (17.5:1 em cosmos).