@snksergio/design-system 0.34.0 → 0.35.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.
package/README.md
CHANGED
|
@@ -131,6 +131,45 @@ Cria o projeto já conectado ao registry, com tema/`cn`/`tv` configurados, tela
|
|
|
131
131
|
> vez de copy-in. Modelo e versionamento em `DISTRIBUICAO.md` e na página
|
|
132
132
|
> **Distribution** do catálogo.
|
|
133
133
|
|
|
134
|
+
### Consumindo por `npm install` — setup completo
|
|
135
|
+
|
|
136
|
+
⚠️ **A linha `@source` é obrigatória.** O Tailwind v4 **não escaneia `node_modules`**, então
|
|
137
|
+
sem ela nenhuma classe do DS é gerada e os componentes renderizam **sem estilo nenhum** —
|
|
138
|
+
não parcialmente: medido em 2026-08-07, **9 regras CSS** contra as milhares do showcase, com
|
|
139
|
+
o `<Button>` saindo transparente, 24px de altura e radius 0. Não há erro, e é fácil concluir
|
|
140
|
+
que "o pacote está quebrado".
|
|
141
|
+
|
|
142
|
+
```css
|
|
143
|
+
/* seu src/index.css */
|
|
144
|
+
@import "tailwindcss";
|
|
145
|
+
@source "../node_modules/@snksergio/design-system/dist-lib/**/*.mjs";
|
|
146
|
+
@import "@snksergio/design-system/theme.css";
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
O `@source` precisa cobrir `dist-lib/**`, não só o `index.mjs`: as classes dos componentes
|
|
150
|
+
flutuantes (Modal, Panel, dropdown, popover) vivem nos **chunks**.
|
|
151
|
+
|
|
152
|
+
O `theme.css` já traz tudo que o runtime precisa — `@font-face` do Geist, `--font-sans`,
|
|
153
|
+
`@custom-variant dark` (dark por classe, não por `prefers-color-scheme`), `body` e as
|
|
154
|
+
utilities do DS. Antes da v0.35.0 nada disso viajava e o canal ficava com fundo branco no
|
|
155
|
+
dark, tipografia em system-ui e `dark:` amarrado ao tema do sistema operacional.
|
|
156
|
+
|
|
157
|
+
**Fontes.** O `@font-face` aponta pra `/fonts/*.woff2` — caminho relativo à **raiz do site**,
|
|
158
|
+
não ao pacote. Copie os dois arquivos pro seu `public/fonts/`:
|
|
159
|
+
|
|
160
|
+
```bash
|
|
161
|
+
cp node_modules/@snksergio/design-system/dist-lib/fonts/*.woff2 public/fonts/
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
Sem isso a tipografia cai em `system-ui` e os 27 presets do DS renderizam na fonte errada.
|
|
165
|
+
|
|
166
|
+
**Animações.** Overlays (dropdown, popover, dialog, sheet) usam `animate-in`/`fade-in`/
|
|
167
|
+
`zoom-in`, que vêm do `tw-animate-css`. Sem ele funcionam, mas sem transição:
|
|
168
|
+
|
|
169
|
+
```css
|
|
170
|
+
@import "tw-animate-css"; /* opcional — só as animações de entrada/saída */
|
|
171
|
+
```
|
|
172
|
+
|
|
134
173
|
**O que NÃO vem no copy-in:** o pipeline interno do DS (`.claude/agents|skills|hooks`, `.ai/context`, lições) vive só neste repositório. O **kit do consumidor** (orquestrador `ds-kit` + skills de tela + `DESIGN.md` + proteção por hook) vem via CLI no scaffold.
|
|
135
174
|
|
|
136
175
|
### Trocar o tema de marca
|
|
Binary file
|
|
Binary file
|
package/dist-lib/theme.css
CHANGED
|
@@ -7,6 +7,50 @@
|
|
|
7
7
|
* Customize na composição da tela (props/variantes + classes DS), não nos tokens.
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
|
+
/* ── Runtime base (fonte, dark-variant, body) — ver buildRuntimeBase ──────── */
|
|
11
|
+
|
|
12
|
+
@font-face {
|
|
13
|
+
font-family: 'Geist';
|
|
14
|
+
src: url('/fonts/Geist-Variable.woff2') format('woff2');
|
|
15
|
+
font-weight: 100 900;
|
|
16
|
+
font-style: normal;
|
|
17
|
+
font-display: swap;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
@font-face {
|
|
21
|
+
font-family: 'Geist Mono';
|
|
22
|
+
src: url('/fonts/GeistMono-Variable.woff2') format('woff2');
|
|
23
|
+
font-weight: 100 900;
|
|
24
|
+
font-style: normal;
|
|
25
|
+
font-display: swap;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
@theme inline {
|
|
29
|
+
--font-sans: 'Geist', system-ui, -apple-system, sans-serif;
|
|
30
|
+
--font-mono: 'Geist Mono', 'Fira Code', monospace;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/* Dark por CLASSE, nunca por prefers-color-scheme: sem isto o tema do SO vaza
|
|
34
|
+
* pro app nos dois sentidos (app claro com SO escuro dispara `dark:`). */
|
|
35
|
+
@custom-variant dark (&:where(.dark, .dark *));
|
|
36
|
+
|
|
37
|
+
html {
|
|
38
|
+
font-family: var(--font-sans);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
body {
|
|
42
|
+
min-height: 100vh;
|
|
43
|
+
background-color: var(--color-bg-canvas);
|
|
44
|
+
color: var(--color-fg-default);
|
|
45
|
+
transition: background-color 0.2s ease, color 0.2s ease;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
@layer base {
|
|
49
|
+
button {
|
|
50
|
+
cursor: pointer;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
10
54
|
@theme {
|
|
11
55
|
--color-bg-canvas: oklch(1 0 0);
|
|
12
56
|
--color-bg-surface: oklch(1 0 0);
|
|
@@ -633,4 +677,33 @@
|
|
|
633
677
|
&::-webkit-scrollbar-thumb:hover {
|
|
634
678
|
background-color: var(--color-fg-muted);
|
|
635
679
|
}
|
|
680
|
+
}
|
|
681
|
+
|
|
682
|
+
/* ── Superfície flutuante (usadas por 14 componentes distribuídos) ────────── */
|
|
683
|
+
|
|
684
|
+
@utility outline-float {
|
|
685
|
+
outline: 6px solid var(--color-overlay-float);
|
|
686
|
+
outline-offset: 0;
|
|
687
|
+
}
|
|
688
|
+
|
|
689
|
+
/* Bottom-sheet mobile de DropdownMenu/Popover (L-030/L-031).
|
|
690
|
+
*
|
|
691
|
+
* O Radix Popper envolve o Content num wrapper posicionado por `transform`
|
|
692
|
+
* inline, fora do alcance do className do Content — só dá pra alcançá-lo por
|
|
693
|
+
* seletor global. Sem este bloco, um menu marcado `mobileSheet` abre flutuando
|
|
694
|
+
* na posição calculada pelo Popper em vez de colar no rodapé.
|
|
695
|
+
*
|
|
696
|
+
* z-60 é load-bearing: acima de qualquer surface z-50 (drawer do sidebar mobile,
|
|
697
|
+
* dialog, sheet). Sem isso, um sheet aberto DE DENTRO do drawer empata em z-50 e
|
|
698
|
+
* renderiza atrás de forma intermitente, e o backdrop não captura o clique-fora. */
|
|
699
|
+
@media (width < 768px) {
|
|
700
|
+
[data-radix-popper-content-wrapper]:has(> [data-mobile-sheet]) {
|
|
701
|
+
position: fixed !important;
|
|
702
|
+
inset: auto 0 0 0 !important;
|
|
703
|
+
transform: none !important;
|
|
704
|
+
min-width: 0 !important;
|
|
705
|
+
width: 100% !important;
|
|
706
|
+
max-width: 100% !important;
|
|
707
|
+
z-index: 60 !important;
|
|
708
|
+
}
|
|
636
709
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@snksergio/design-system",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.35.0",
|
|
4
4
|
"//distribuicao": "Canal PRIMARIO = registry shadcn (copy-in) + CLI @snksergio/create-design-system; sobe sozinho no merge (Vercel). Canal SECUNDARIO = este pacote npm (@snksergio/design-system), funcional (build:lib gera ESM+CJS+types+theme.css) e publicado por passo MANUAL do mantenedor, entao costuma ficar atras do registry. NAO e depreciado — o texto anterior dizia isso e estava errado. Publish so pelo Passo 7 do .claude/skills/ds-dev/release.md (valida com `npm run lib:verify`, pede o token, publica, revoga). Ver DISTRIBUICAO.md.",
|
|
5
5
|
"description": "iGreen Design System — internal library for SaaS CRM, admin panels and dashboards. React 19 + Tailwind v4 + Shadcn + Radix.",
|
|
6
6
|
"license": "UNLICENSED",
|
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
"dist-lib/tokens.*",
|
|
14
14
|
"dist-lib/theme.css",
|
|
15
15
|
"dist-lib/theme/**",
|
|
16
|
+
"dist-lib/fonts/**",
|
|
16
17
|
"dist-lib/preview/**",
|
|
17
18
|
"dist-lib/chunks/**",
|
|
18
19
|
"dist-lib/src/**",
|