@snksergio/design-system 0.55.0 → 0.56.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.
Files changed (43) hide show
  1. package/dist-lib/index.cjs +2517 -3
  2. package/dist-lib/index.cjs.map +1 -1
  3. package/dist-lib/index.mjs +2530 -16
  4. package/dist-lib/index.mjs.map +1 -1
  5. package/dist-lib/src/components/index.d.ts +1 -0
  6. package/dist-lib/src/components/index.d.ts.map +1 -1
  7. package/dist-lib/src/components/ui/Scheduler/hooks/layout.d.ts +165 -0
  8. package/dist-lib/src/components/ui/Scheduler/hooks/layout.d.ts.map +1 -0
  9. package/dist-lib/src/components/ui/Scheduler/hooks/use-media-query.d.ts +21 -0
  10. package/dist-lib/src/components/ui/Scheduler/hooks/use-media-query.d.ts.map +1 -0
  11. package/dist-lib/src/components/ui/Scheduler/hooks/use-scheduler-dnd.d.ts +41 -0
  12. package/dist-lib/src/components/ui/Scheduler/hooks/use-scheduler-dnd.d.ts.map +1 -0
  13. package/dist-lib/src/components/ui/Scheduler/hooks/use-scheduler-filter.d.ts +35 -0
  14. package/dist-lib/src/components/ui/Scheduler/hooks/use-scheduler-filter.d.ts.map +1 -0
  15. package/dist-lib/src/components/ui/Scheduler/hooks/use-scheduler-keyboard.d.ts +47 -0
  16. package/dist-lib/src/components/ui/Scheduler/hooks/use-scheduler-keyboard.d.ts.map +1 -0
  17. package/dist-lib/src/components/ui/Scheduler/hooks/use-scheduler-state.d.ts +44 -0
  18. package/dist-lib/src/components/ui/Scheduler/hooks/use-scheduler-state.d.ts.map +1 -0
  19. package/dist-lib/src/components/ui/Scheduler/index.d.ts +14 -0
  20. package/dist-lib/src/components/ui/Scheduler/index.d.ts.map +1 -0
  21. package/dist-lib/src/components/ui/Scheduler/parts/draggable-event.d.ts +30 -0
  22. package/dist-lib/src/components/ui/Scheduler/parts/draggable-event.d.ts.map +1 -0
  23. package/dist-lib/src/components/ui/Scheduler/parts/mini-month.d.ts +28 -0
  24. package/dist-lib/src/components/ui/Scheduler/parts/mini-month.d.ts.map +1 -0
  25. package/dist-lib/src/components/ui/Scheduler/parts/scheduler-event.d.ts +53 -0
  26. package/dist-lib/src/components/ui/Scheduler/parts/scheduler-event.d.ts.map +1 -0
  27. package/dist-lib/src/components/ui/Scheduler/parts/scheduler-filter-panel.d.ts +41 -0
  28. package/dist-lib/src/components/ui/Scheduler/parts/scheduler-filter-panel.d.ts.map +1 -0
  29. package/dist-lib/src/components/ui/Scheduler/parts/scheduler-toolbar.d.ts +31 -0
  30. package/dist-lib/src/components/ui/Scheduler/parts/scheduler-toolbar.d.ts.map +1 -0
  31. package/dist-lib/src/components/ui/Scheduler/scheduler.d.ts +44 -0
  32. package/dist-lib/src/components/ui/Scheduler/scheduler.d.ts.map +1 -0
  33. package/dist-lib/src/components/ui/Scheduler/scheduler.styles.d.ts +820 -0
  34. package/dist-lib/src/components/ui/Scheduler/scheduler.styles.d.ts.map +1 -0
  35. package/dist-lib/src/components/ui/Scheduler/scheduler.types.d.ts +285 -0
  36. package/dist-lib/src/components/ui/Scheduler/scheduler.types.d.ts.map +1 -0
  37. package/dist-lib/src/components/ui/Scheduler/views/list.d.ts +33 -0
  38. package/dist-lib/src/components/ui/Scheduler/views/list.d.ts.map +1 -0
  39. package/dist-lib/src/components/ui/Scheduler/views/month.d.ts +47 -0
  40. package/dist-lib/src/components/ui/Scheduler/views/month.d.ts.map +1 -0
  41. package/dist-lib/src/components/ui/Scheduler/views/time-grid.d.ts +48 -0
  42. package/dist-lib/src/components/ui/Scheduler/views/time-grid.d.ts.map +1 -0
  43. package/package.json +210 -210
package/package.json CHANGED
@@ -1,210 +1,210 @@
1
- {
2
- "name": "@snksergio/design-system",
3
- "version": "0.55.0",
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), publicado por passo MANUAL do mantenedor, entao costuma ficar atras do registry. SECUNDARIO descreve a ORDEM DE PUBLICACAO, nao o nivel de suporte: NAO e depreciado, e desde a 0.37.0 entrega 41 dos 42 componentes ui/ no barrel raiz + os 41 primitivos shadcn no subpath ./shadcn (so TabelaTeste, demo interno, fica de fora). 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
- "description": "iGreen Design System — internal library for SaaS CRM, admin panels and dashboards. React 19 + Tailwind v4 + Shadcn + Radix.",
6
- "license": "UNLICENSED",
7
- "type": "module",
8
- "main": "./dist-lib/index.cjs",
9
- "module": "./dist-lib/index.mjs",
10
- "types": "./dist-lib/index.d.ts",
11
- "files": [
12
- "dist-lib/index.*",
13
- "dist-lib/shadcn.*",
14
- "dist-lib/tokens.*",
15
- "dist-lib/theme.css",
16
- "dist-lib/theme/**",
17
- "dist-lib/fonts/**",
18
- "dist-lib/preview/**",
19
- "dist-lib/chunks/**",
20
- "dist-lib/src/**",
21
- "dist-lib/tokens/**",
22
- "README.md"
23
- ],
24
- "engines": {
25
- "node": ">=20.0.0"
26
- },
27
- "repository": {
28
- "type": "git",
29
- "url": "git+https://github.com/igreenlab/igreen-desingsystem-admin.git"
30
- },
31
- "bugs": {
32
- "url": "https://github.com/igreenlab/igreen-desingsystem-admin/issues"
33
- },
34
- "homepage": "https://github.com/igreenlab/igreen-desingsystem-admin#readme",
35
- "//exports-theme-marcas": "Os overlays de marca (./theme/brand-*.css) são enumerados um por um DE PROPÓSITO, não por wildcard: o pack-contract extrai cada path prometido no exports e o lib-verify confere no disco — um './theme/*' prometeria nada e não seria verificado, que é justo o modo de falha da L-017. Marca nova exige entrada aqui, e o build:lib FALHA se achar brand-*.css sem export correspondente (gate no vite.lib.config.ts). Nunca colocar chave de comentário DENTRO de exports: lá toda chave é subpath e o Node/pack-contract tentam resolvê-la.",
36
- "exports": {
37
- ".": {
38
- "types": "./dist-lib/index.d.ts",
39
- "import": "./dist-lib/index.mjs",
40
- "require": "./dist-lib/index.cjs"
41
- },
42
- "./shadcn": {
43
- "types": "./dist-lib/shadcn.d.ts",
44
- "import": "./dist-lib/shadcn.mjs",
45
- "require": "./dist-lib/shadcn.cjs"
46
- },
47
- "./theme.css": "./dist-lib/theme.css",
48
- "./theme/brand-blue.css": "./dist-lib/theme/brand-blue.css",
49
- "./theme/brand-green.css": "./dist-lib/theme/brand-green.css",
50
- "./theme/brand-pay.css": "./dist-lib/theme/brand-pay.css",
51
- "./theme/brand-vibrant.css": "./dist-lib/theme/brand-vibrant.css",
52
- "./tokens": {
53
- "types": "./dist-lib/tokens.d.ts",
54
- "import": "./dist-lib/tokens.mjs",
55
- "require": "./dist-lib/tokens.cjs"
56
- },
57
- "./preview/chat": {
58
- "types": "./dist-lib/preview/chat.d.ts",
59
- "import": "./dist-lib/preview/chat.mjs",
60
- "require": "./dist-lib/preview/chat.cjs"
61
- },
62
- "./preview/clientes": {
63
- "types": "./dist-lib/preview/clientes.d.ts",
64
- "import": "./dist-lib/preview/clientes.mjs",
65
- "require": "./dist-lib/preview/clientes.cjs"
66
- },
67
- "./preview/dashboard": {
68
- "types": "./dist-lib/preview/dashboard.d.ts",
69
- "import": "./dist-lib/preview/dashboard.mjs",
70
- "require": "./dist-lib/preview/dashboard.cjs"
71
- },
72
- "./preview/mocks": {
73
- "types": "./dist-lib/preview/mocks.d.ts",
74
- "import": "./dist-lib/preview/mocks.mjs",
75
- "require": "./dist-lib/preview/mocks.cjs"
76
- }
77
- },
78
- "publishConfig": {
79
- "access": "public"
80
- },
81
- "scripts": {
82
- "dev": "npm run tokens:tw4 && vite",
83
- "build": "npm run tokens:tw4 && tsc -b && vite build",
84
- "build:showcase": "npm run build && npm --prefix projeto/virtual-proposta install --no-audit --no-fund && npm --prefix projeto/virtual-proposta run build && cp -r projeto/virtual-proposta/dist dist/demo",
85
- "build:lib": "npm run tokens:tw4 && vite build --config vite.lib.config.ts",
86
- "preview": "vite preview",
87
- "prepublishOnly": "npm run build:lib",
88
- "lib:verify": "node scripts/lib-verify.mjs --build",
89
- "lib:publish:patch": "echo '⛔ Use o /ds-release: ele bumpa, valida com lib:verify e PARA pedindo o token. Publicar por aqui pula o gate (Regra 7 / L-020).' && exit 1",
90
- "lib:publish:minor": "echo '⛔ Use o /ds-release: ele bumpa, valida com lib:verify e PARA pedindo o token. Publicar por aqui pula o gate (Regra 7 / L-020).' && exit 1",
91
- "lib:publish:major": "echo '⛔ Use o /ds-release: ele bumpa, valida com lib:verify e PARA pedindo o token. Publicar por aqui pula o gate (Regra 7 / L-020).' && exit 1",
92
- "tokens:tw4": "tsx tokens/transforms/to-tailwind-v4.ts > src/styles/theme/tailwind-theme.css",
93
- "tokens:brand:blue": "tsx tokens/transforms/to-brand-overlay.ts blue > src/styles/theme/brand-blue.css",
94
- "tokens:brand:green": "tsx tokens/transforms/to-brand-overlay.ts green > src/styles/theme/brand-green.css",
95
- "tokens:brand:pay": "tsx tokens/transforms/to-brand-overlay.ts pay > src/styles/theme/brand-pay.css",
96
- "tokens:brand:vibrant": "tsx tokens/transforms/to-brand-overlay.ts vibrant > src/styles/theme/brand-vibrant.css",
97
- "tokens:css": "tsx tokens/transforms/to-css-vars.ts > dist/tokens.css",
98
- "tokens:dtcg": "tsx tokens/transforms/to-dtcg.ts > dist/tokens.tokens.json",
99
- "tokens:all": "npm run tokens:tw4 && npm run tokens:css && npm run tokens:dtcg",
100
- "tokens:check": "tsc --noEmit",
101
- "brand:check": "node scripts/brand-check.mjs",
102
- "brand:contrast": "node scripts/brand-contrast.mjs",
103
- "audit:token-docs": "node scripts/audit-token-docs.mjs",
104
- "registry:stamp": "node scripts/registry-stamp.mjs",
105
- "blocks:build": "node scripts/blocks-build.mjs",
106
- "blocks:check": "node scripts/blocks-build.mjs --check",
107
- "registry:build": "npm run examples:drift && npm run tokens:tw4 && npm run registry:stamp && npx shadcn@4.17.0 build",
108
- "release:check": "node scripts/registry-check.mjs --ci && node scripts/brand-check.mjs && node scripts/distribution-debt.mjs --ci && node scripts/examples-drift-check.mjs --ci && node scripts/version-claims-check.mjs --release && npm run blocks:check && npm run registry-app:audit",
109
- "pronto": "npm test && npm run release:check",
110
- "registry-app:audit": "npm audit --audit-level=high --prefix registry-app",
111
- "distribution:debt": "node scripts/distribution-debt.mjs",
112
- "lint:styles": "node scripts/lint-styles.mjs --ratchet",
113
- "cli:rebake": "node scripts/cli-rebake-foundationals.mjs",
114
- "doc:index": "node scripts/doc-index.mjs --write",
115
- "typecheck": "tsc --noEmit",
116
- "test": "npm run typecheck && vitest run",
117
- "test:watch": "vitest",
118
- "test:ui": "vitest --ui",
119
- "sync:agents": "node .claude/scripts/sync-agents-to-cursor.cjs",
120
- "examples:drift": "node scripts/examples-drift-check.mjs",
121
- "ds:link": "node scripts/ds-link.mjs"
122
- },
123
- "//test-inclui-typecheck": "O `test` roda `typecheck` ANTES do vitest de proposito. Medido em 2026-08-14 por dogfood: um componente que NAO compilava passou 413/413 no `npm test`, porque o `tsc --noEmit` era step separado so no CI. Quem valida local com o comando natural (`npm test`) recebia falso verde e so descobria na PR. Custo: ~10s no caminho de sucesso. No CI o Typecheck ja roda em step proprio ANTES dos testes (falha rapida com sinal claro na UI de Checks), entao o job so paga esses 10s quando tudo passa. `tokens:check` e o MESMO comando sob um nome que sugere escopo de tokens — mantido porque ha registro historico apontando pra ele; o nome canonico e `typecheck`.",
124
- "//deps-de-tipo": "Os 3 `@types/*` abaixo estao em dependencies (nao devDependencies) DE PROPOSITO: os `.d.ts` publicados os referenciam no tipo PUBLICO. `dist-lib/src/components/ui/ChoroplethMap/choropleth-map.types.d.ts` faz `import { Feature } from 'geojson'` e `import { Topology } from 'topojson-specification'`, e `GeoProjection` vem de `@types/d3-geo` (o `d3-geo` nao embute tipos). Em devDependencies o consumidor npm instala o pacote, recebe os `.d.ts`, e o `tsc` DELE quebra com 'Cannot find module geojson' — o DS compila porque tem os @types localmente. Criterio: se um pacote aparece num `from '...'` de `.d.ts` sob `dist-lib/`, ele e dependency. Gate: `scripts/lib/deps-declared.mjs`. `@types/topojson-client` fica em devDeps porque o topojson-client so e importado como VALOR, e o tipo nao vaza pra superficie publica.",
125
- "dependencies": {
126
- "@dnd-kit/core": "^6.3.1",
127
- "@dnd-kit/modifiers": "^9.0.0",
128
- "@dnd-kit/sortable": "^10.0.0",
129
- "@dnd-kit/utilities": "^3.2.2",
130
- "@hello-pangea/dnd": "^18.0.1",
131
- "@radix-ui/react-accordion": "^1.2.12",
132
- "@radix-ui/react-alert-dialog": "^1.1.15",
133
- "@radix-ui/react-aspect-ratio": "^1.1.10",
134
- "@radix-ui/react-avatar": "^1.1.11",
135
- "@radix-ui/react-checkbox": "^1.3.3",
136
- "@radix-ui/react-collapsible": "^1.1.14",
137
- "@radix-ui/react-context-menu": "^2.3.1",
138
- "@radix-ui/react-dialog": "^1.1.17",
139
- "@radix-ui/react-dropdown-menu": "^2.1.16",
140
- "@radix-ui/react-hover-card": "^1.1.17",
141
- "@radix-ui/react-label": "^2.1.8",
142
- "@radix-ui/react-menubar": "^1.1.18",
143
- "@radix-ui/react-navigation-menu": "^1.2.16",
144
- "@radix-ui/react-popover": "^1.1.15",
145
- "@radix-ui/react-progress": "^1.1.8",
146
- "@radix-ui/react-radio-group": "^1.3.8",
147
- "@radix-ui/react-scroll-area": "^1.2.12",
148
- "@radix-ui/react-select": "^2.2.6",
149
- "@radix-ui/react-separator": "^1.1.8",
150
- "@radix-ui/react-slider": "^1.3.6",
151
- "@radix-ui/react-slot": "^1.3.0",
152
- "@radix-ui/react-switch": "^1.2.6",
153
- "@radix-ui/react-tabs": "^1.1.13",
154
- "@radix-ui/react-toggle": "^1.1.12",
155
- "@radix-ui/react-toggle-group": "^1.1.13",
156
- "@radix-ui/react-tooltip": "^1.2.10",
157
- "@tanstack/react-virtual": "^3.13.24",
158
- "@types/d3-geo": "^3.1.0",
159
- "@types/geojson": "^7946.0.14",
160
- "@types/topojson-specification": "^1.0.5",
161
- "class-variance-authority": "^0.7.1",
162
- "clsx": "^2.1.1",
163
- "cmdk": "^1.1.1",
164
- "d3-geo": "^3.1.1",
165
- "date-fns": "^4.1.0",
166
- "embla-carousel-react": "^8.6.0",
167
- "geist": "^1.7.0",
168
- "input-otp": "^1.4.2",
169
- "lucide-react": "^1.7.0",
170
- "react-day-picker": "^9.14.0",
171
- "recharts": "^3.8.1",
172
- "sonner": "^2.0.7",
173
- "tailwind-merge": "^3.0.0",
174
- "tailwind-variants": "^3.0.0",
175
- "topojson-client": "^3.1.0",
176
- "tw-animate-css": "^1.4.0",
177
- "vaul": "^1.1.2"
178
- },
179
- "devDependencies": {
180
- "@tailwindcss/vite": "^4.0.0",
181
- "@testing-library/dom": "^10.4.1",
182
- "@testing-library/jest-dom": "^6.9.1",
183
- "@testing-library/react": "^16.3.2",
184
- "@testing-library/user-event": "^14.6.3",
185
- "@types/react": "^19.0.0",
186
- "@types/react-dom": "^19.0.0",
187
- "@types/topojson-client": "^3.1.5",
188
- "@vitejs/plugin-react": "^4.3.0",
189
- "@vitest/ui": "^4.1.6",
190
- "jsdom": "^29.1.1",
191
- "react-router-dom": "^7.18.2",
192
- "tailwindcss": "^4.0.0",
193
- "tsx": "^4.19.0",
194
- "typescript": "^5.6.0",
195
- "vite": "^6.0.0",
196
- "vite-plugin-dts": "^5.0.0",
197
- "vitest": "^4.1.6"
198
- },
199
- "peerDependencies": {
200
- "react": "^19.0.0",
201
- "react-dom": "^19.0.0",
202
- "tailwindcss": "^4.0.0"
203
- },
204
- "peerDependenciesMeta": {
205
- "tailwindcss": {
206
- "optional": false
207
- }
208
- },
209
- "//exports-shadcn": "O subpath ./shadcn e um ENTRY SEPARADO (nao um re-export do barrel raiz) de proposito: 41 arquivos / 233 nomes exportados contra 3-4 que o consumidor tipico usa. No mesmo entry, qualquer import do pacote arrastaria Radix + cmdk + vaul + embla + input-otp + sonner antes do tree-shaking do consumidor. Deps desses primitivos ficam em rollupOptions.external (vite.lib.config.ts) — sem isso o Rollup as embute e sonner/@hello-pangea-dnd rodam com contexto React duplicado."
210
- }
1
+ {
2
+ "name": "@snksergio/design-system",
3
+ "version": "0.56.0",
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), publicado por passo MANUAL do mantenedor, entao costuma ficar atras do registry. SECUNDARIO descreve a ORDEM DE PUBLICACAO, nao o nivel de suporte: NAO e depreciado, e desde a 0.37.0 entrega 41 dos 42 componentes ui/ no barrel raiz + os 41 primitivos shadcn no subpath ./shadcn (so TabelaTeste, demo interno, fica de fora). 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
+ "description": "iGreen Design System — internal library for SaaS CRM, admin panels and dashboards. React 19 + Tailwind v4 + Shadcn + Radix.",
6
+ "license": "UNLICENSED",
7
+ "type": "module",
8
+ "main": "./dist-lib/index.cjs",
9
+ "module": "./dist-lib/index.mjs",
10
+ "types": "./dist-lib/index.d.ts",
11
+ "files": [
12
+ "dist-lib/index.*",
13
+ "dist-lib/shadcn.*",
14
+ "dist-lib/tokens.*",
15
+ "dist-lib/theme.css",
16
+ "dist-lib/theme/**",
17
+ "dist-lib/fonts/**",
18
+ "dist-lib/preview/**",
19
+ "dist-lib/chunks/**",
20
+ "dist-lib/src/**",
21
+ "dist-lib/tokens/**",
22
+ "README.md"
23
+ ],
24
+ "engines": {
25
+ "node": ">=20.0.0"
26
+ },
27
+ "repository": {
28
+ "type": "git",
29
+ "url": "git+https://github.com/igreenlab/igreen-desingsystem-admin.git"
30
+ },
31
+ "bugs": {
32
+ "url": "https://github.com/igreenlab/igreen-desingsystem-admin/issues"
33
+ },
34
+ "homepage": "https://github.com/igreenlab/igreen-desingsystem-admin#readme",
35
+ "//exports-theme-marcas": "Os overlays de marca (./theme/brand-*.css) são enumerados um por um DE PROPÓSITO, não por wildcard: o pack-contract extrai cada path prometido no exports e o lib-verify confere no disco — um './theme/*' prometeria nada e não seria verificado, que é justo o modo de falha da L-017. Marca nova exige entrada aqui, e o build:lib FALHA se achar brand-*.css sem export correspondente (gate no vite.lib.config.ts). Nunca colocar chave de comentário DENTRO de exports: lá toda chave é subpath e o Node/pack-contract tentam resolvê-la.",
36
+ "exports": {
37
+ ".": {
38
+ "types": "./dist-lib/index.d.ts",
39
+ "import": "./dist-lib/index.mjs",
40
+ "require": "./dist-lib/index.cjs"
41
+ },
42
+ "./shadcn": {
43
+ "types": "./dist-lib/shadcn.d.ts",
44
+ "import": "./dist-lib/shadcn.mjs",
45
+ "require": "./dist-lib/shadcn.cjs"
46
+ },
47
+ "./theme.css": "./dist-lib/theme.css",
48
+ "./theme/brand-blue.css": "./dist-lib/theme/brand-blue.css",
49
+ "./theme/brand-green.css": "./dist-lib/theme/brand-green.css",
50
+ "./theme/brand-pay.css": "./dist-lib/theme/brand-pay.css",
51
+ "./theme/brand-vibrant.css": "./dist-lib/theme/brand-vibrant.css",
52
+ "./tokens": {
53
+ "types": "./dist-lib/tokens.d.ts",
54
+ "import": "./dist-lib/tokens.mjs",
55
+ "require": "./dist-lib/tokens.cjs"
56
+ },
57
+ "./preview/chat": {
58
+ "types": "./dist-lib/preview/chat.d.ts",
59
+ "import": "./dist-lib/preview/chat.mjs",
60
+ "require": "./dist-lib/preview/chat.cjs"
61
+ },
62
+ "./preview/clientes": {
63
+ "types": "./dist-lib/preview/clientes.d.ts",
64
+ "import": "./dist-lib/preview/clientes.mjs",
65
+ "require": "./dist-lib/preview/clientes.cjs"
66
+ },
67
+ "./preview/dashboard": {
68
+ "types": "./dist-lib/preview/dashboard.d.ts",
69
+ "import": "./dist-lib/preview/dashboard.mjs",
70
+ "require": "./dist-lib/preview/dashboard.cjs"
71
+ },
72
+ "./preview/mocks": {
73
+ "types": "./dist-lib/preview/mocks.d.ts",
74
+ "import": "./dist-lib/preview/mocks.mjs",
75
+ "require": "./dist-lib/preview/mocks.cjs"
76
+ }
77
+ },
78
+ "publishConfig": {
79
+ "access": "public"
80
+ },
81
+ "scripts": {
82
+ "dev": "npm run tokens:tw4 && vite",
83
+ "build": "npm run tokens:tw4 && tsc -b && vite build",
84
+ "build:showcase": "npm run build && npm --prefix projeto/virtual-proposta install --no-audit --no-fund && npm --prefix projeto/virtual-proposta run build && cp -r projeto/virtual-proposta/dist dist/demo",
85
+ "build:lib": "npm run tokens:tw4 && vite build --config vite.lib.config.ts",
86
+ "preview": "vite preview",
87
+ "prepublishOnly": "npm run build:lib",
88
+ "lib:verify": "node scripts/lib-verify.mjs --build",
89
+ "lib:publish:patch": "echo '⛔ Use o /ds-release: ele bumpa, valida com lib:verify e PARA pedindo o token. Publicar por aqui pula o gate (Regra 7 / L-020).' && exit 1",
90
+ "lib:publish:minor": "echo '⛔ Use o /ds-release: ele bumpa, valida com lib:verify e PARA pedindo o token. Publicar por aqui pula o gate (Regra 7 / L-020).' && exit 1",
91
+ "lib:publish:major": "echo '⛔ Use o /ds-release: ele bumpa, valida com lib:verify e PARA pedindo o token. Publicar por aqui pula o gate (Regra 7 / L-020).' && exit 1",
92
+ "tokens:tw4": "tsx tokens/transforms/to-tailwind-v4.ts > src/styles/theme/tailwind-theme.css",
93
+ "tokens:brand:blue": "tsx tokens/transforms/to-brand-overlay.ts blue > src/styles/theme/brand-blue.css",
94
+ "tokens:brand:green": "tsx tokens/transforms/to-brand-overlay.ts green > src/styles/theme/brand-green.css",
95
+ "tokens:brand:pay": "tsx tokens/transforms/to-brand-overlay.ts pay > src/styles/theme/brand-pay.css",
96
+ "tokens:brand:vibrant": "tsx tokens/transforms/to-brand-overlay.ts vibrant > src/styles/theme/brand-vibrant.css",
97
+ "tokens:css": "tsx tokens/transforms/to-css-vars.ts > dist/tokens.css",
98
+ "tokens:dtcg": "tsx tokens/transforms/to-dtcg.ts > dist/tokens.tokens.json",
99
+ "tokens:all": "npm run tokens:tw4 && npm run tokens:css && npm run tokens:dtcg",
100
+ "tokens:check": "tsc --noEmit",
101
+ "brand:check": "node scripts/brand-check.mjs",
102
+ "brand:contrast": "node scripts/brand-contrast.mjs",
103
+ "audit:token-docs": "node scripts/audit-token-docs.mjs",
104
+ "registry:stamp": "node scripts/registry-stamp.mjs",
105
+ "blocks:build": "node scripts/blocks-build.mjs",
106
+ "blocks:check": "node scripts/blocks-build.mjs --check",
107
+ "registry:build": "npm run examples:drift && npm run tokens:tw4 && npm run registry:stamp && npx shadcn@4.17.0 build",
108
+ "release:check": "node scripts/registry-check.mjs --ci && node scripts/brand-check.mjs && node scripts/distribution-debt.mjs --ci && node scripts/examples-drift-check.mjs --ci && node scripts/version-claims-check.mjs --release && npm run blocks:check && npm run registry-app:audit",
109
+ "pronto": "npm test && npm run release:check",
110
+ "registry-app:audit": "npm audit --audit-level=high --prefix registry-app",
111
+ "distribution:debt": "node scripts/distribution-debt.mjs",
112
+ "lint:styles": "node scripts/lint-styles.mjs --ratchet",
113
+ "cli:rebake": "node scripts/cli-rebake-foundationals.mjs",
114
+ "doc:index": "node scripts/doc-index.mjs --write",
115
+ "typecheck": "tsc --noEmit",
116
+ "test": "npm run typecheck && vitest run",
117
+ "test:watch": "vitest",
118
+ "test:ui": "vitest --ui",
119
+ "sync:agents": "node .claude/scripts/sync-agents-to-cursor.cjs",
120
+ "examples:drift": "node scripts/examples-drift-check.mjs",
121
+ "ds:link": "node scripts/ds-link.mjs"
122
+ },
123
+ "//test-inclui-typecheck": "O `test` roda `typecheck` ANTES do vitest de proposito. Medido em 2026-08-14 por dogfood: um componente que NAO compilava passou 413/413 no `npm test`, porque o `tsc --noEmit` era step separado so no CI. Quem valida local com o comando natural (`npm test`) recebia falso verde e so descobria na PR. Custo: ~10s no caminho de sucesso. No CI o Typecheck ja roda em step proprio ANTES dos testes (falha rapida com sinal claro na UI de Checks), entao o job so paga esses 10s quando tudo passa. `tokens:check` e o MESMO comando sob um nome que sugere escopo de tokens — mantido porque ha registro historico apontando pra ele; o nome canonico e `typecheck`.",
124
+ "//deps-de-tipo": "Os 3 `@types/*` abaixo estao em dependencies (nao devDependencies) DE PROPOSITO: os `.d.ts` publicados os referenciam no tipo PUBLICO. `dist-lib/src/components/ui/ChoroplethMap/choropleth-map.types.d.ts` faz `import { Feature } from 'geojson'` e `import { Topology } from 'topojson-specification'`, e `GeoProjection` vem de `@types/d3-geo` (o `d3-geo` nao embute tipos). Em devDependencies o consumidor npm instala o pacote, recebe os `.d.ts`, e o `tsc` DELE quebra com 'Cannot find module geojson' — o DS compila porque tem os @types localmente. Criterio: se um pacote aparece num `from '...'` de `.d.ts` sob `dist-lib/`, ele e dependency. Gate: `scripts/lib/deps-declared.mjs`. `@types/topojson-client` fica em devDeps porque o topojson-client so e importado como VALOR, e o tipo nao vaza pra superficie publica.",
125
+ "dependencies": {
126
+ "@dnd-kit/core": "^6.3.1",
127
+ "@dnd-kit/modifiers": "^9.0.0",
128
+ "@dnd-kit/sortable": "^10.0.0",
129
+ "@dnd-kit/utilities": "^3.2.2",
130
+ "@hello-pangea/dnd": "^18.0.1",
131
+ "@radix-ui/react-accordion": "^1.2.12",
132
+ "@radix-ui/react-alert-dialog": "^1.1.15",
133
+ "@radix-ui/react-aspect-ratio": "^1.1.10",
134
+ "@radix-ui/react-avatar": "^1.1.11",
135
+ "@radix-ui/react-checkbox": "^1.3.3",
136
+ "@radix-ui/react-collapsible": "^1.1.14",
137
+ "@radix-ui/react-context-menu": "^2.3.1",
138
+ "@radix-ui/react-dialog": "^1.1.17",
139
+ "@radix-ui/react-dropdown-menu": "^2.1.16",
140
+ "@radix-ui/react-hover-card": "^1.1.17",
141
+ "@radix-ui/react-label": "^2.1.8",
142
+ "@radix-ui/react-menubar": "^1.1.18",
143
+ "@radix-ui/react-navigation-menu": "^1.2.16",
144
+ "@radix-ui/react-popover": "^1.1.15",
145
+ "@radix-ui/react-progress": "^1.1.8",
146
+ "@radix-ui/react-radio-group": "^1.3.8",
147
+ "@radix-ui/react-scroll-area": "^1.2.12",
148
+ "@radix-ui/react-select": "^2.2.6",
149
+ "@radix-ui/react-separator": "^1.1.8",
150
+ "@radix-ui/react-slider": "^1.3.6",
151
+ "@radix-ui/react-slot": "^1.3.0",
152
+ "@radix-ui/react-switch": "^1.2.6",
153
+ "@radix-ui/react-tabs": "^1.1.13",
154
+ "@radix-ui/react-toggle": "^1.1.12",
155
+ "@radix-ui/react-toggle-group": "^1.1.13",
156
+ "@radix-ui/react-tooltip": "^1.2.10",
157
+ "@tanstack/react-virtual": "^3.13.24",
158
+ "@types/d3-geo": "^3.1.0",
159
+ "@types/geojson": "^7946.0.14",
160
+ "@types/topojson-specification": "^1.0.5",
161
+ "class-variance-authority": "^0.7.1",
162
+ "clsx": "^2.1.1",
163
+ "cmdk": "^1.1.1",
164
+ "d3-geo": "^3.1.1",
165
+ "date-fns": "^4.1.0",
166
+ "embla-carousel-react": "^8.6.0",
167
+ "geist": "^1.7.0",
168
+ "input-otp": "^1.4.2",
169
+ "lucide-react": "^1.7.0",
170
+ "react-day-picker": "^9.14.0",
171
+ "recharts": "^3.8.1",
172
+ "sonner": "^2.0.7",
173
+ "tailwind-merge": "^3.0.0",
174
+ "tailwind-variants": "^3.0.0",
175
+ "topojson-client": "^3.1.0",
176
+ "tw-animate-css": "^1.4.0",
177
+ "vaul": "^1.1.2"
178
+ },
179
+ "devDependencies": {
180
+ "@tailwindcss/vite": "^4.0.0",
181
+ "@testing-library/dom": "^10.4.1",
182
+ "@testing-library/jest-dom": "^6.9.1",
183
+ "@testing-library/react": "^16.3.2",
184
+ "@testing-library/user-event": "^14.6.3",
185
+ "@types/react": "^19.0.0",
186
+ "@types/react-dom": "^19.0.0",
187
+ "@types/topojson-client": "^3.1.5",
188
+ "@vitejs/plugin-react": "^4.3.0",
189
+ "@vitest/ui": "^4.1.6",
190
+ "jsdom": "^29.1.1",
191
+ "react-router-dom": "^7.18.2",
192
+ "tailwindcss": "^4.0.0",
193
+ "tsx": "^4.19.0",
194
+ "typescript": "^5.6.0",
195
+ "vite": "^6.0.0",
196
+ "vite-plugin-dts": "^5.0.0",
197
+ "vitest": "^4.1.6"
198
+ },
199
+ "peerDependencies": {
200
+ "react": "^19.0.0",
201
+ "react-dom": "^19.0.0",
202
+ "tailwindcss": "^4.0.0"
203
+ },
204
+ "peerDependenciesMeta": {
205
+ "tailwindcss": {
206
+ "optional": false
207
+ }
208
+ },
209
+ "//exports-shadcn": "O subpath ./shadcn e um ENTRY SEPARADO (nao um re-export do barrel raiz) de proposito: 41 arquivos / 233 nomes exportados contra 3-4 que o consumidor tipico usa. No mesmo entry, qualquer import do pacote arrastaria Radix + cmdk + vaul + embla + input-otp + sonner antes do tree-shaking do consumidor. Deps desses primitivos ficam em rollupOptions.external (vite.lib.config.ts) — sem isso o Rollup as embute e sonner/@hello-pangea-dnd rodam com contexto React duplicado."
210
+ }