pswex-design-system 7.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,166 @@
1
+ # Cor e tipografia
2
+
3
+ 47 tokens em quatro famílias. A divisão não é estética, é funcional:
4
+ o que o tema escuro redefine é de tema, o que fica em cima de cor de marca é de sobre-cor.
5
+ Dentro da marca vale a divisão da casa: principais, secundárias, variações e neutros.
6
+
7
+ ### Cor da marca (20)
8
+
9
+ Iguais nos dois temas. Cor de marca nunca vai direto em texto de corpo.
10
+
11
+ **Principais**
12
+
13
+ | | Valor | Token |
14
+ |---|---|---|
15
+ | Navy | `#232F3E` | `--navy` |
16
+ | Vermelho | `#C7273E` | `--red` |
17
+ | Teal | `#1F4768` | `--teal` |
18
+
19
+ **Secundárias**
20
+
21
+ | | Valor | Token |
22
+ |---|---|---|
23
+ | Mint | `#C1EDCC` | `--mint` |
24
+ | Sky | `#7CCFDB` | `--sky` |
25
+ | Leaf *(sem uso no CSS)* | `#669933` | `--leaf` |
26
+ | Lime, o CTA | `#99CC33` | `--lime` |
27
+
28
+ **Variações**
29
+
30
+ | | Valor | Token |
31
+ |---|---|---|
32
+ | Navy 700 *(sem uso no CSS)* | `#35485F` | `--navy-700` |
33
+ | Navy 800 | `#2B3A4D` | `--navy-800` |
34
+ | Navy 900 *(sem uso no CSS)* | `#1B2531` | `--navy-900` |
35
+ | Navy 950 | `#19212C` | `--navy-950` |
36
+ | Vermelho 600 | `#A92135` | `--red-600` |
37
+ | Vermelho 700 | `#941D2E` | `--red-700` |
38
+ | Sky 800 | `#267F8C` | `--sky-800` |
39
+ | Leaf 800 *(sem uso no CSS)* | `#4A6F25` | `--leaf-800` |
40
+
41
+ **Neutros**
42
+
43
+ | | Valor | Token |
44
+ |---|---|---|
45
+ | Carvão *(sem uso no CSS)* | `#353437` | `--charcoal` |
46
+ | Cinza escuro | `#4D4D4C` | `--gray-dark` |
47
+ | Cinza médio | `#656565` | `--gray-mid` |
48
+ | Gelo *(sem uso no CSS)* | `#FFFCF1` | `--ice` |
49
+ | Off-white *(sem uso no CSS)* | `#F4F4EE` | `--offwhite` |
50
+
51
+ ### Tema (16)
52
+
53
+ Inverte inteira no tema escuro. Todo texto de tela e todo fundo de tela sai daqui.
54
+
55
+ **Fundo e superfície**
56
+
57
+ | | Claro | Escuro | Token |
58
+ |---|---|---|---|
59
+ | Fundo | `#FFFAFA` | `#12181F` | `--bg` |
60
+ | Superfície *(sem uso no CSS)* | `#FFFFFF` | `#1B242F` | `--surface` |
61
+ | Papel, superfície de card | `#FFFFFF` | `#1B242F` | `--paper` |
62
+ | Snow | `#FFFAFA` | `#151D26` | `--snow` |
63
+ | Bege | `#F8F4E3` | `#1E2732` | `--beige` |
64
+ | Light *(sem uso no CSS)* | `#F2F3F4` | `#1A222C` | `--light` |
65
+ | Teal claro | `#E9F0F7` | `#17222E` | `--teal-50` |
66
+
67
+ **Texto**
68
+
69
+ | | Claro | Escuro | Token |
70
+ |---|---|---|---|
71
+ | Texto principal | `#232F3E` | `#EEF3F8` | `--fg` |
72
+ | Título | `#232F3E` | `#EEF3F8` | `--ink` |
73
+ | Texto de apoio | `#4D4D4C` | `#C3CFDC` | `--ink-2` |
74
+ | Texto terciário *(sem uso no CSS)* | `#656565` | `#A3B2C2` | `--ink-3` |
75
+ | Texto discreto | `#656565` | `#9FB0C2` | `--muted` |
76
+
77
+ **Acento**
78
+
79
+ | | Claro | Escuro | Token |
80
+ |---|---|---|---|
81
+ | Acento | `#C7273E` | `#F4808F` | `--accent-txt` |
82
+ | Acento secundário | `#1F4768` | `#8FC5DE` | `--accent-2-txt` |
83
+
84
+ **Linha**
85
+
86
+ | | Claro | Escuro | Token |
87
+ |---|---|---|---|
88
+ | Linha | `#D5DBE2` | `#2C3947` | `--line` |
89
+ | Linha 300 | `#9CA7B4` | `#44566A` | `--line-300` |
90
+
91
+ ### Texto sobre cor (6)
92
+
93
+ Fica em cima de cor de marca, por isso não inverte: o fundo também não inverte.
94
+
95
+ **Texto**
96
+
97
+ | | Valor | Token |
98
+ |---|---|---|
99
+ | Sobre lime e mint | `#232F3E` | `--lime-ink` |
100
+ | Sobre cor clara da marca | `#232F3E` | `--on-bright` |
101
+ | Apoio sobre fundo escuro | `#AFBCCC` | `--ondark-200` |
102
+ | Texto menor sobre fundo escuro | `#94A6BC` | `--ondark-400` |
103
+ | Vermelho sobre escuro | `#F4808F` | `--red-ondark` |
104
+
105
+ **Linha**
106
+
107
+ | | Valor | Token |
108
+ |---|---|---|
109
+ | Linha sobre fundo escuro | `rgba(196,219,241,.24)` | `--line-inv` |
110
+
111
+ ### Layout (5)
112
+
113
+ **Medida**
114
+
115
+ | | Valor | Token |
116
+ |---|---|---|
117
+ | Largura máxima do conteúdo | `1200px` | `--shell` |
118
+
119
+ **Raio**
120
+
121
+ | | Valor | Token |
122
+ |---|---|---|
123
+ | Raio padrão | `14px` | `--r` |
124
+ | Raio grande | `22px` | `--r-lg` |
125
+
126
+ **Sombra**
127
+
128
+ | | Valor | Token |
129
+ |---|---|---|
130
+ | Sombra padrão | `0 1px 3px rgba(35,47,62,.08),0 6px 14px -8px rgba(35,47,62,.12)` | `--shadow` |
131
+ | Sombra elevada | `0 2px 6px rgba(35,47,62,.10),0 14px 28px -14px rgba(35,47,62,.18)` | `--shadow-lg` |
132
+
133
+ ### A regra
134
+
135
+ Texto sobre cor da família marca usa a família fixa.
136
+ Texto sobre fundo de tela usa a semântica.
137
+ Cor de marca nunca vai direto em texto.
138
+
139
+ Dois casos que já custaram caro aqui:
140
+
141
+ - Botão lime leva `--lime-ink`, que é navy. Branco no lime dá 1,90:1 e reprova.
142
+ Navy no lime dá 7,13:1. Se o branco for inegociável, o fundo tem que virar
143
+ `--leaf-800`, que dá 5,85:1, e aí o botão perde força de chamada.
144
+ - Vermelho em cima de navy usa `--red-ondark`. O `--red` puro some no escuro.
145
+
146
+ `guia/contraste.md` traz os pares medidos.
147
+
148
+ ## Tipografia
149
+
150
+ Gilroy, cinco pesos, em `css/fonts/`. A pilha é `Gilroy, 'Segoe UI', system-ui, sans-serif`.
151
+
152
+ | Papel | Tamanho | Peso | Detalhe |
153
+ |---|---|---|---|
154
+ | corpo | `17px` | 400 | `line-height:1.62` |
155
+ | h1 | `clamp(2.3rem, 5.4vw, 4.05rem)` | 800 | |
156
+ | h2 | `clamp(1.85rem, 3.5vw, 2.85rem)` | 800 | |
157
+ | h3 | `clamp(1.12rem, 1.8vw, 1.4rem)` | 700 | `letter-spacing:-.015em` |
158
+ | `.lead` | `clamp(1.06rem, 1.5vw, 1.24rem)` | 400 | `line-height:1.55` |
159
+ | `.eyebrow` | `.73rem` | 700 | caixa alta, `letter-spacing:.15em` |
160
+ | `.tag` | `.72rem` | 700 | caixa alta, `letter-spacing:.08em` |
161
+ | `.sm` | `.93rem` | 400 | |
162
+ | `.xs` | `.82rem` | 400 | |
163
+ | navegação | `.875rem` | 600 | |
164
+
165
+ Gilroy é fonte licenciada e não está no catálogo hospedado do Figma. Num arquivo do Figma
166
+ ela precisa estar instalada na máquina de quem abre, senão o texto cai para o fallback.
@@ -0,0 +1,43 @@
1
+ # Fundos
2
+
3
+ `grad` é a arte da casa: SVG vetorial, azul e ciano de um lado, navy quase preto no meio,
4
+ magenta e vermelho do outro, com uma fita de luz atravessando e detalhe de circuito nas bordas.
5
+ Ele já entra com o tratamento de texto do `dark`.
6
+
7
+ Não existe um arquivo só escalado. Existe um arquivo por proporção, e o CSS escolhe:
8
+ `grad` puxa a larga, `grad-v` a de retrato, `grad-card` a de card. O `Hero` troca sozinho
9
+ em 1400px e em 980px.
10
+
11
+ A regra do desenho, que é o que faz a fita não achatar numa peça alta:
12
+
13
+ - X segue a largura
14
+ - Y segue a altura
15
+ - traço, desfoque e raio seguem o menor lado
16
+
17
+ `fundos/gerar-fundo.py` gera qualquer formato novo seguindo essa regra.
18
+ `grad-azul` e `grad-vermelho` são de um tom só e feitos em CSS, não são a arte vetorial.
19
+
20
+ ### Temas
21
+
22
+ Existe uma segunda composição, a diagonal, com seis temas de cor. Escuro em cima à
23
+ esquerda, a cor do tema no meio do quadro, o acento preso no canto de baixo à direita.
24
+ `fundos/temas.json` traz cada tema com os tokens de que ele é feito e para que serve,
25
+ e `fundos/gerar-tema.py` gera qualquer tema em qualquer tamanho.
26
+
27
+ A regra de cor dos temas: o gradiente só anda entre cores vizinhas. Navy para teal,
28
+ teal para sky, sky para mint, e navy para verde passando pelo teal, tudo isso pode ir
29
+ direto. Navy para vermelho não pode, a passagem vira roxo sujo, então nos temas marca
30
+ e vermelho os dois nunca se encostam, tem um trecho escuro separando.
31
+
32
+ | Tema | O caminho |
33
+ |---|---|
34
+ | marca | navy, azul da identidade, escuro, vermelho |
35
+ | azul | navy, teal, sky-800, sky |
36
+ | vermelho | navy, escuro, red-700, red, red-ondark |
37
+ | verde | navy, teal, leaf-800, leaf, lime |
38
+ | menta | teal, sky-800, sky, mint |
39
+ | grafite | navy-950, navy-800, line-300, ondark-200 |
40
+
41
+ `fundos/temas/` traz os arquivos limpos, para quem vai compor por cima.
42
+ `fundos/temas/com-marca-dagua/` traz os mesmos com a marca embutida na lateral,
43
+ para quando o fundo vai sozinho. A flag é `--marca`.
@@ -0,0 +1,71 @@
1
+ # Ícones
2
+
3
+ 46 ícones no catálogo, cada um com uma versão `-compact` para 20px ou menos,
4
+ o que dá 72 arquivos. Todos 24 por 24, `stroke="currentColor"`, sem fill.
5
+ A cor vem do texto ao redor e troca sozinha no tema escuro.
6
+
7
+ Dentro de `Card` e `Caso` use a prop `icone`. Para uma grade de serviço use `Servicos`,
8
+ que já monta o card com o ícone.
9
+
10
+ Card de serviço sem ícone fica só texto, e uma grade de seis cards de texto puro não se lê.
11
+
12
+ **Serviços, um por serviço da casa** (14)
13
+
14
+ | Nome | Para que serve |
15
+ |---|---|
16
+ | `agentes-ia` | Agente de inteligência artificial que atende e qualifica sozinho. |
17
+ | `aplicativos` | Aplicativo de celular, Android e iPhone. |
18
+ | `aplicativos-maquininhas` | Aplicativo que roda dentro da maquininha de cartão. |
19
+ | `automacao-ia` | Automação de processo, o trabalho repetido que a empresa paga duas vezes. |
20
+ | `consultoria-mentoria` | Consultoria e mentoria, acompanhamento direto. |
21
+ | `criacao-de-sites` | Site institucional, a presença principal da empresa na internet. |
22
+ | `funis-de-vendas` | Funil e operação de vendas, do primeiro contato ao fechamento. |
23
+ | `hospedagem` | Hospedagem e manutenção do que já está no ar. |
24
+ | `landing-pages` | Página de campanha, feita para uma oferta só e uma ação só. |
25
+ | `lojas-virtuais` | Loja virtual, venda de produto direto pelo site. |
26
+ | `pagamentos` | Pagamento e checkout. |
27
+ | `sistemas` | Sistema sob medida e integração entre sistemas que já existem. |
28
+ | `trafego-pago` | Anúncio pago, Google e Meta. |
29
+ | `whatsapp` | Atendimento e venda pelo WhatsApp. |
30
+
31
+ **Campanhas** (12)
32
+
33
+ | Nome | Para que serve |
34
+ |---|---|
35
+ | `apps-sob-medida` | Campanha Apps Sob Medida: aplicativo construído para um negócio específico. |
36
+ | `certificado-digital` | Certificado Digital PJ: emissão para pessoa jurídica. |
37
+ | `crescer` | Crescer precisa valer a pena: crescimento que sobra dinheiro no fim. |
38
+ | `embaixador-ai` | Embaixador AI: programa de indicação e parceria. |
39
+ | `empresa-do-tempo` | A Empresa do Tempo: o tempo que some dentro da própria operação. |
40
+ | `empurra-a-vaca` | Empurra a Vaca: tirar do lugar o que está parado há tempo demais. |
41
+ | `ia-bio` | IA.BIO: página de links com inteligência artificial. |
42
+ | `kit-negocio-do-zero` | Kit Negócio do Zero: para quem está abrindo a empresa agora. |
43
+ | `parceria-contadores` | Parceria com Contadores: indicação vinda de escritório contábil. |
44
+ | `plataforma-upro` | Plataforma UPro: o método virando ferramenta que o cliente usa. |
45
+ | `upro` | Método UPro: o jeito da casa de achar e cortar trabalho que volta. |
46
+ | `whatsappx` | WhatsAppX: disparo e automação em escala no WhatsApp. |
47
+
48
+ **Interface** (20)
49
+
50
+ | Nome | Para que serve |
51
+ |---|---|
52
+ | `alert` | Atenção: algo que o leitor precisa notar antes de seguir. |
53
+ | `arrow-left` | Voltar ao passo anterior. |
54
+ | `arrow-right` | Avançar para o próximo passo. |
55
+ | `arrow-up-right` | Sair para um destino fora daqui. |
56
+ | `check` | Item incluído ou concluído. |
57
+ | `check-circle` | Sucesso: a operação deu certo. |
58
+ | `chevron-down` | Abrir o que está fechado, menu ou acordeão. |
59
+ | `chevron-right` | Entrar num item de lista. |
60
+ | `close` | Fechar modal, painel ou aviso. |
61
+ | `copy` | Copiar o conteúdo. |
62
+ | `download` | Baixar arquivo. |
63
+ | `edit` | Editar o conteúdo. |
64
+ | `external-link` | Link que abre fora do site. |
65
+ | `file` | Arquivo ou material para consulta. |
66
+ | `filter` | Refinar uma listagem. |
67
+ | `info` | Informação complementar, que dá para pular sem perder o fio. |
68
+ | `menu` | Abrir a navegação no celular. |
69
+ | `play` | Iniciar vídeo ou demonstração. |
70
+ | `search` | Buscar conteúdo. |
71
+ | `whatsapp-chat` | Começar uma conversa no WhatsApp agora. É a ação, não o serviço. |
@@ -0,0 +1,76 @@
1
+ # Voz e escrita
2
+
3
+ O design system manda na forma. Isto manda no texto que vai dentro dela.
4
+
5
+ ## Quem é
6
+
7
+ PSWEX Tecnologia, Belo Horizonte, mais de 10 anos. Fundador Lourenço Avelar,
8
+ cientista da computação, especialista em IA, pós graduado em neurociência.
9
+ Assinatura: **Nós fazemos seu negócio dar certo.**
10
+
11
+ Tese central: a PSWEX não começa indicando IA. Começa achando o trabalho que a
12
+ empresa paga duas vezes. Frase da casa: *"Seu time faz o trabalho. O processo faz
13
+ o trabalho voltar. E você paga pelas duas vezes."*
14
+ Método: elimina, simplifica, automatiza, ou continua com uma pessoa. Nessa ordem.
15
+
16
+ ## Regras que não se quebram
17
+
18
+ 1. **Nunca use travessão.** Vírgula, ponto ou dois pontos.
19
+ 2. **Nunca invente número.** Sem "+45%", sem "3x mais vendas". Sem fonte, não escreve.
20
+ 3. **Sem preço publicado.** Preço só em proposta comercial.
21
+ 4. **Google Ads AI, nunca Google Partner.**
22
+ 5. **Linguagem de dono, não de agência.**
23
+
24
+ ## Copy que se defende
25
+
26
+ O briefing não vira texto de página. O padrão a evitar é a frase que responde a uma
27
+ acusação que o leitor não fez, e que planta a dúvida que não existia. Ninguém escreve
28
+ no próprio site que não inventa número, que o depoimento é verdadeiro ou que o
29
+ resultado é real: dizer isso é o que faz o leitor desconfiar.
30
+
31
+ O certo é só **Projetos** e os projetos. Só **Depoimentos** e os vídeos.
32
+
33
+ **Teste antes de publicar qualquer linha de apoio:** essa frase informa alguma coisa,
34
+ ou está se defendendo? Se está se defendendo, apaga.
35
+
36
+ ## Ritmo
37
+
38
+ - Varia o tamanho do bloco. Um bloco de 4 palavras ao lado de um de 40. Se todos ficam
39
+ entre 7 e 10 palavras, o texto virou metrônomo.
40
+ - Deixa frase longa existir. Gente fala frase longa, com vírgula no meio, emendando ideia.
41
+ - Um parágrafo pode ter três frases. Não precisa quebrar tudo.
42
+ - A construção "não é X, é Y" é a muleta mais visível de texto gerado.
43
+ Uma por peça, no máximo.
44
+
45
+ **Muletas proibidas:** de verdade, isso muda tudo, e faz sentido, por um motivo prático,
46
+ a régua é sempre a mesma, o sinal é sempre o mesmo, vale ressaltar, na verdade,
47
+ basicamente, é importante entender.
48
+
49
+ **Palavras proibidas:** transformação digital, potencializar resultados, soluções
50
+ inovadoras, eficiência impulsionada por IA, jornada de inovação, desbloquear potencial,
51
+ escalar com inteligência, levar ao próximo nível, sinergia, ecossistema fora de contexto
52
+ técnico.
53
+
54
+ ## Arquétipo
55
+
56
+ Criador. Mais Tony Stark, menos professor. Sincero, direto, sem cerimônia, zero mimimi.
57
+
58
+ 1. Fala de dentro. "Eu fiz", "eu quebrei a cara nisso", "já vi isso dar errado assim".
59
+ Nunca "você deve", "é importante que", "muitos empreendedores erram ao".
60
+ 2. Ironia mira no problema, nunca em quem lê. Essa linha não se cruza.
61
+ 3. Admite o que não sabe e o que deu errado. É isso que separa sincero de arrogante.
62
+ 4. Primeira pessoa. "A gente" soa como agência quando quem vende é o dono.
63
+
64
+ **Termômetro:** se a frase cabe na boca de um professor de curso online, reescreve.
65
+ Se cabe na boca de alguém explicando pro sócio no bar, está certa.
66
+
67
+ ## Clientes citáveis
68
+
69
+ Ford Consórcio Nacional, Rodobens, Unimed, CDL, ACE, Líder, Clube Líder, Liberty
70
+ Colchões, Supermercado Cícero, Rei do Frango, Grupo Cimentão, Laboratório Mansoni,
71
+ UniAnálises, Carmo Clínica, Vital Clínicas, Construmarla, Móveis da Cunha, Nexo
72
+ Imobiliária, Innovar Imóveis, Mais Sollar, Loja do Prematuro, Yaçaí, HabilitaBH,
73
+ Cliex, FlyApp, Divino Ticket, Evenmart, PsPag, Ificha, Falaí, e 6 autoescolas.
74
+
75
+ **Nunca cite Sebrae, Soluti, Conversion, Rock Content ou G4 como cliente.**
76
+ São referência de pesquisa.