Pular para o conteúdo
ColliePWA

Temas: escolha um visual ou traga o seu.

Um tema é um arquivo JSON pequeno. Ele contém cores, tipografia, forma, aparência e uma paleta de terminal. O ColliePWA vem com quatro temas, e você pode importar outros a partir de um arquivo no seu telefone.

01/O que é

Um tema é um arquivo de aparências.

Um tema define as cores do aplicativo, uma vez para uma metade clara e outra para uma metade escura. Ele também pode definir uma fonte, uma fonte para títulos, uma forma, uma aparência e as cores do espelho do terminal. Forma e aparência são dez palavras, como radius, shadow e density. O layout, os tamanhos de toque e o significado de um status continuam como estão, de modo que bloqueado continua bloqueado em qualquer tema.

Cada valor em um arquivo é uma palavra fechada ou uma cor validada. O arquivo não pode executar código e não pode carregar um arquivo, uma fonte ou uma imagem.

Um tema e Aparência são duas configurações. O tema define quais cores usar. Aparência define qual metade mostrar: Sistema, Claro ou Escuro.

02/Escolha

Escolha um tema em Configurações.

Abra Configurações, depois Aparência, e toque em um tema. Ele é aplicado na hora, sem recarregar a página, e na próxima vez que você abrir o ColliePWA o primeiro quadro já estará nesse tema. Um toque em Collie restaura o padrão.

Um tema que define uma tipografia ajusta a sua tipografia uma vez. Você ainda pode alterá-la depois no cartão Tipografia.

Collie

Tipografia: Aldrich

O visual que você conhece: cinzas neutros, com Aldrich para a tipografia.

Nightwatch

Tipografia: IBM Plex Sans

flat · bold · strong · band · heavy

Para o telefone de plantão à noite. Uma metade escura em preto puro, plana e quadrada, com linhas pesadas, um destaque em âmbar suave e uma faixa âmbar suave atrás do cabeçalho e das barras.

Paleta do terminal

Daylight

Tipografia: Geist

Títulos: Atkinson Hyperlegible Next

round · lifted · roomy · gradient · cards · sentence

Para sol forte e baixa visão. Texto de corpo com contraste AAA, cartões arredondados e espaçosos, uma página que se desloca em direção ao rodapé e cores de status que vão do azul ao laranja, e não do vermelho ao verde.

Paleta do terminal

Harbour

Tipografia: Atkinson Hyperlegible Next

Títulos: Space Grotesk

soft · lifted · grain · thin

Para quem vem do terminal. Cinza-azulado frio com um destaque em verde-petróleo, cantos suaves, granulado fino e ícones finos, além de uma paleta de terminal baseada em Solarized sobre um azul quase preto.

Paleta do terminal

03/Importe

Importe um tema de um arquivo.

  1. 1Coloque um arquivo de tema no seu telefone. Ele termina em .json e tem menos de 64 KiB.
  2. 2Em Configurações, abra o cartão Tema sob Aparência, toque em Importar e escolha o arquivo.
  3. 3Leia a prévia. Ela mostra as cores de ambas as metades, a forma, as cores do terminal e um relatório de contraste. Um contraste fraco exibe um aviso, e você ainda pode aplicar o tema. Um arquivo que viola as regras é recusado, e nada é alterado.

Um tema altera a aparência do aplicativo e nada mais. Ele não pode executar código, carregar arquivos ou se comunicar com um servidor.

Um dispositivo mantém até oito temas importados. Não há importação por link, e os temas não são sincronizados entre dispositivos.

04/Escreva

Escreva o seu.

O caminho mais rápido é começar com um tema nativo. Exporte o tema, altere id e name, edite as cores, as palavras de forma ou a paleta do terminal e importe-o novamente. Um tema importado não pode usar o id de um tema nativo.

Este é um harbour.json simplificado, um arquivo de versão 2. As linhas ... representam as partes omitidas.

{
  "version": 2,
  "id": "harbour",
  "name": "Harbour",
  "author": "Collie",
  "light": {
    "background": "oklch(0.95 0.01 235)",
    "foreground": "oklch(0.26 0.025 250)",
    "card": "oklch(0.985 0.004 235)",
    "...": "..."
  },
  "dark": {
    "background": "oklch(0.21 0.018 250)",
    "foreground": "oklch(0.93 0.012 240)",
    "card": "oklch(0.255 0.02 252)",
    "...": "..."
  },
  "fonts": { "ui": "atkinson", "display": "grotesk" },
  "surface": {
    "radius": "soft",
    "shadow": "lifted",
    "density": "default",
    "weight": "default",
    "border": "default",
    "ground": "grain",
    "chrome": "page",
    "rows": "rules",
    "icons": "thin",
    "labels": "caps"
  },
  "ansi": {
    "0": "#073642",
    "1": "#f0504a",
    "2": "#859900",
    "...": "..."
  }
}

Os 43 tokens

Um arquivo de tema pode nomear apenas estes tokens, divididos em quatro grupos. Um arquivo com qualquer outra chave é recusado.

GrupoO que ele pintaTokens
Superfícies e cores de texto21A página, cartões, cabeçalho e barras, texto, botões, bordas e o anel de foco.
  • background
  • foreground
  • card
  • card-foreground
  • chrome
  • primary
  • primary-foreground
  • secondary
  • secondary-foreground
  • muted
  • muted-foreground
  • accent
  • accent-foreground
  • control-on
  • control-on-foreground
  • destructive
  • destructive-foreground
  • border
  • input
  • rule
  • ring
Status6Os estados do agente e a cor de informação.
  • status-blocked
  • status-working
  • status-done
  • status-idle
  • status-unknown
  • status-info
Sintaxe6As cores de texto em diffs e código.
  • syntax-keyword
  • syntax-string
  • syntax-constant
  • syntax-property
  • syntax-entity
  • syntax-comment
Identidade do host10As cores que diferenciam as suas máquinas.
  • host-0
  • host-1
  • host-2
  • host-3
  • host-4
  • host-5
  • host-6
  • host-7
  • host-8
  • host-9

Forma e aparência

O bloco surface contém dez palavras. Cada uma vem de uma lista fechada, e um token omitido mantém seu padrão, a primeira palavra da sua lista. Um número avulso nunca é aceito, logo um tema não pode quebrar um tamanho de toque.

radius
O canto de um cartão, de uma linha, de um campo e de um botão.
  • sharp
  • soft
  • round
shadow
A sombra sob painéis elevados.
  • default
  • flat
  • lifted
density
Quanto espaço existe dentro e entre os controles.
  • default
  • roomy
weight
O peso com que o texto em medium e semibold é renderizado.
  • default
  • bold
border
A espessura de uma linha fina.
  • default
  • strong
ground
A página por trás de tudo: plana, um gradiente suave ou um granulado fino.
  • flat
  • gradient
  • grain
chrome
O cabeçalho e as barras: na cor da página ou em uma faixa própria.
  • page
  • band
rows
Uma lista como um grupo emoldurado com regras, ou como um cartão para cada linha.
  • rules
  • cards
icons
A espessura do traço de cada ícone.
  • default
  • thin
  • heavy
labels
Rótulos pequenos de seção, em maiúsculas ou em estilo frase.
  • caps
  • sentence

Paleta do terminal

O bloco ansi contém 18 cores ou nenhuma: as 16 cores do terminal, ink e ground. Cada uma é #rrggbb ou oklch(L C H), e cada uma passa por uma validação.

Valores
Um valor é uma cor: #rrggbb, #rrggbbaa ou oklch(L C H), com / A para opacidade. L varia de 0 a 1, C de 0 a 0.5 e H de 0 a 360, todos como números simples.
Metades
Forneça light, dark ou ambos. A metade que você omitir é preenchida a partir do Collie, token por token.
Fontes
O campo opcional fonts.ui define uma das fontes que o ColliePWA inclui. O campo opcional fonts.display define uma fonte para títulos. Nenhuma outra fonte é aceita.
O que é recusado
Uma chave fora da lista, uma versão diferente de 1 ou 2, um valor que não seja uma cor ou palavra de forma, var(), url() ou qualquer outra função, o id de um tema nativo e um arquivo com mais de 64 KiB. A mensagem indica a causa, e nada é aplicado.
Versão
version é 1 ou 2. Um arquivo com um bloco surface, uma fonte fonts.display ou um bloco ansi indica 2. Um arquivo version 2 requer o ColliePWA 1.22.0 ou mais recente.

05/Compartilhar

Exporte e compartilhe.

A exportação grava o tema ativo como um arquivo .collie-theme.json. Envie para alguém, ou mantenha em um repositório, e essa pessoa importa da mesma forma que você fez.

Detalhes em Temas