@clhaas/palette-kit 0.1.7 → 0.3.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/.codex/skills/color-pipeline-implementer/SKILL.md +23 -0
- package/.codex/skills/commit-message-crafter/SKILL.md +63 -0
- package/.codex/skills/commit-message-crafter/references/benchmarks.md +20 -0
- package/.codex/skills/contrast-solver-helper/SKILL.md +20 -0
- package/.codex/skills/exporters-builder/SKILL.md +20 -0
- package/.codex/skills/markdownlint-writer/SKILL.md +32 -0
- package/.codex/skills/phase-implementation-runbook/SKILL.md +92 -0
- package/.codex/skills/type-contract-auditor/SKILL.md +21 -0
- package/.github/skills/review-guide/SKILL.md +23 -0
- package/.github/skills/review-guide/references/review-guide-v0.3.md +629 -0
- package/.markdownlint.json +4 -0
- package/AGENTS.md +16 -0
- package/CHANGELOG.md +34 -0
- package/README.md +79 -169
- package/biome.json +43 -0
- package/dist/cli/args.d.ts +12 -0
- package/dist/cli/args.js +56 -0
- package/dist/cli/args.test.js +22 -0
- package/dist/cli/codegen/__snapshots__/tokens.test.js.snap +87 -0
- package/dist/cli/codegen/tokens.d.ts +12 -0
- package/dist/cli/codegen/tokens.js +139 -0
- package/dist/cli/codegen/tokens.test.d.ts +1 -0
- package/dist/cli/codegen/tokens.test.js +51 -0
- package/dist/cli/config.d.ts +40 -0
- package/dist/cli/config.js +34 -0
- package/dist/cli/validate.d.ts +2 -0
- package/dist/cli/validate.js +33 -0
- package/dist/cli/validate.test.d.ts +1 -0
- package/dist/cli/validate.test.js +40 -0
- package/dist/cli.js +138 -140
- package/dist/contrast/apca.d.ts +2 -2
- package/dist/contrast/apca.js +14 -4
- package/dist/contrast/apca.test.d.ts +1 -0
- package/dist/contrast/apca.test.js +16 -0
- package/dist/contrast/index.d.ts +4 -0
- package/dist/contrast/index.js +4 -0
- package/dist/contrast/scoring.d.ts +4 -0
- package/dist/contrast/scoring.js +31 -0
- package/dist/contrast/scoring.test.d.ts +1 -0
- package/dist/contrast/scoring.test.js +148 -0
- package/dist/contrast/solver.d.ts +13 -0
- package/dist/contrast/solver.js +170 -0
- package/dist/contrast/solver.test.d.ts +1 -0
- package/dist/contrast/solver.test.js +75 -0
- package/dist/contrast/types.d.ts +17 -0
- package/dist/contrast/types.js +1 -0
- package/dist/contrast/utils.d.ts +4 -0
- package/dist/contrast/utils.js +18 -0
- package/dist/contrast/wcag2.d.ts +3 -0
- package/dist/contrast/wcag2.js +19 -0
- package/dist/contrast/wcag2.test.d.ts +1 -0
- package/dist/contrast/wcag2.test.js +17 -0
- package/dist/core/createTheme.d.ts +35 -0
- package/dist/core/createTheme.js +24 -0
- package/dist/core/dx-helpers.test.d.ts +1 -0
- package/dist/core/dx-helpers.test.js +61 -0
- package/dist/core/index.d.ts +2 -0
- package/dist/core/index.js +2 -0
- package/dist/core/onSolid.test.d.ts +1 -0
- package/dist/core/onSolid.test.js +118 -0
- package/dist/core/qa.v1.test.d.ts +1 -0
- package/dist/core/qa.v1.test.js +112 -0
- package/dist/core/resolve.d.ts +3 -0
- package/dist/core/resolve.js +8 -0
- package/dist/core/resolve.test.d.ts +1 -0
- package/dist/core/resolve.test.js +89 -0
- package/dist/core/resolveMany.d.ts +8 -0
- package/dist/core/resolveMany.js +17 -0
- package/dist/core/tokenRegistry.d.ts +23 -0
- package/dist/core/tokenRegistry.js +83 -0
- package/dist/core/tokenRegistry.test.d.ts +1 -0
- package/dist/core/tokenRegistry.test.js +133 -0
- package/dist/engine/applyOperators.d.ts +3 -0
- package/dist/engine/applyOperators.js +23 -0
- package/dist/engine/context.d.ts +4 -0
- package/dist/engine/context.js +1 -0
- package/dist/engine/gamut.d.ts +13 -0
- package/dist/engine/gamut.js +101 -0
- package/dist/engine/gamut.test.d.ts +1 -0
- package/dist/engine/gamut.test.js +23 -0
- package/dist/engine/generateScale.d.ts +15 -0
- package/dist/engine/generateScale.js +29 -0
- package/dist/engine/generateScale.test.d.ts +1 -0
- package/dist/engine/generateScale.test.js +32 -0
- package/dist/engine/index.d.ts +8 -0
- package/dist/engine/index.js +4 -0
- package/dist/engine/normalize.d.ts +43 -0
- package/dist/engine/normalize.js +403 -0
- package/dist/engine/normalize.test.d.ts +1 -0
- package/dist/engine/normalize.test.js +136 -0
- package/dist/engine/onSolid.d.ts +3 -0
- package/dist/engine/onSolid.js +110 -0
- package/dist/engine/resolveBaseColor.d.ts +25 -0
- package/dist/engine/resolveBaseColor.js +127 -0
- package/dist/engine/resolveBaseColor.test.d.ts +1 -0
- package/dist/engine/resolveBaseColor.test.js +97 -0
- package/dist/export/__snapshots__/exportTheme.test.js.snap +74 -0
- package/dist/export/exportTheme.d.ts +47 -0
- package/dist/export/exportTheme.js +170 -0
- package/dist/export/exportTheme.test.d.ts +1 -0
- package/dist/export/exportTheme.test.js +118 -0
- package/dist/export/index.d.ts +1 -0
- package/dist/export/index.js +1 -0
- package/dist/export/serializeColor.d.ts +1 -0
- package/dist/export/serializeColor.js +1 -0
- package/dist/export/serializeColor.test.d.ts +1 -0
- package/dist/export/serializeColor.test.js +54 -0
- package/dist/export.d.ts +1 -0
- package/dist/export.js +1 -0
- package/dist/index.d.ts +3 -20
- package/dist/index.js +2 -17
- package/dist/operators/emphasis.d.ts +3 -0
- package/dist/operators/emphasis.js +113 -0
- package/dist/operators/emphasis.test.d.ts +1 -0
- package/dist/operators/emphasis.test.js +69 -0
- package/dist/operators/index.d.ts +3 -0
- package/dist/operators/index.js +2 -0
- package/dist/operators/state.d.ts +3 -0
- package/dist/operators/state.js +102 -0
- package/dist/operators/state.test.d.ts +1 -0
- package/dist/operators/state.test.js +48 -0
- package/dist/operators/types.d.ts +13 -0
- package/dist/operators/types.js +1 -0
- package/dist/operators/utils.d.ts +16 -0
- package/dist/operators/utils.js +23 -0
- package/dist/presets/curves.d.ts +28 -0
- package/dist/presets/curves.js +145 -0
- package/dist/presets/index.d.ts +2 -0
- package/dist/presets/index.js +1 -0
- package/dist/presets/tokens/index.d.ts +3 -0
- package/dist/presets/tokens/index.js +3 -0
- package/dist/presets/tokens/minimal-ui.d.ts +6 -0
- package/dist/presets/tokens/minimal-ui.js +53 -0
- package/dist/presets/tokens/modern-ui.d.ts +5 -0
- package/dist/presets/tokens/modern-ui.js +83 -0
- package/dist/presets/tokens/presets.test.d.ts +1 -0
- package/dist/presets/tokens/presets.test.js +31 -0
- package/dist/presets/tokens/radixLike-ui.d.ts +6 -0
- package/dist/presets/tokens/radixLike-ui.js +77 -0
- package/dist/serialize/index.d.ts +1 -0
- package/dist/serialize/index.js +1 -0
- package/dist/serialize/normalizeOutput.d.ts +6 -0
- package/dist/serialize/normalizeOutput.js +45 -0
- package/dist/serialize/serializeColor.d.ts +21 -0
- package/dist/serialize/serializeColor.js +178 -0
- package/dist/serialize/serializeResolved.test.d.ts +1 -0
- package/dist/serialize/serializeResolved.test.js +45 -0
- package/dist/serialize.d.ts +1 -0
- package/dist/serialize.js +1 -0
- package/dist/types/index.d.ts +187 -0
- package/dist/types/index.js +1 -0
- package/dist/utils/clamp.d.ts +1 -0
- package/dist/utils/clamp.js +1 -0
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.js +1 -0
- package/dist/utils/lerp.d.ts +1 -0
- package/dist/utils/lerp.js +1 -0
- package/dist/utils/parseColor.d.ts +6 -0
- package/dist/utils/parseColor.js +67 -0
- package/dist/utils/parseColor.test.d.ts +1 -0
- package/dist/utils/parseColor.test.js +51 -0
- package/dist/utils/smoothstep.d.ts +1 -0
- package/dist/utils/smoothstep.js +5 -0
- package/package.json +19 -12
- package/planning/phase-10-review.md +550 -0
- package/planning/phase-7-review.md +411 -0
- package/planning/phase-8-review.md +669 -0
- package/planning/phase-9-review.md +564 -0
- package/planning/roadmap-v0.3.md +284 -0
- package/planning/spec-serializer-v0.3.md +324 -0
- package/planning/spec-v0.3.md +305 -0
- package/src/cli/args.test.ts +28 -0
- package/src/cli/args.ts +66 -0
- package/src/cli/codegen/__snapshots__/tokens.test.ts.snap +87 -0
- package/src/cli/codegen/tokens.test.ts +61 -0
- package/src/cli/codegen/tokens.ts +191 -0
- package/src/cli/config.ts +71 -0
- package/src/cli/validate.test.ts +49 -0
- package/src/cli/validate.ts +38 -0
- package/src/cli.ts +183 -0
- package/src/contrast/apca.test.ts +20 -0
- package/src/contrast/apca.ts +26 -0
- package/src/contrast/index.ts +4 -0
- package/src/contrast/scoring.test.ts +188 -0
- package/src/contrast/scoring.ts +48 -0
- package/src/contrast/solver.test.ts +147 -0
- package/src/contrast/solver.ts +235 -0
- package/src/contrast/types.ts +20 -0
- package/src/contrast/utils.ts +28 -0
- package/src/contrast/wcag2.test.ts +21 -0
- package/src/contrast/wcag2.ts +24 -0
- package/src/core/createTheme.ts +78 -0
- package/src/core/dx-helpers.test.ts +82 -0
- package/src/core/index.ts +7 -0
- package/src/core/onSolid.test.ts +146 -0
- package/src/core/qa.v1.test.ts +149 -0
- package/src/core/resolve.test.ts +99 -0
- package/src/core/resolve.ts +11 -0
- package/src/core/resolveMany.ts +22 -0
- package/src/core/tokenRegistry.test.ts +153 -0
- package/src/core/tokenRegistry.ts +114 -0
- package/src/engine/applyOperators.ts +32 -0
- package/src/engine/context.ts +8 -0
- package/src/engine/gamut.test.ts +30 -0
- package/src/engine/gamut.ts +144 -0
- package/src/engine/generateScale.test.ts +46 -0
- package/src/engine/generateScale.ts +48 -0
- package/src/engine/index.ts +8 -0
- package/src/engine/normalize.test.ts +222 -0
- package/src/engine/normalize.ts +550 -0
- package/src/engine/onSolid.ts +178 -0
- package/src/engine/resolveBaseColor.test.ts +117 -0
- package/src/engine/resolveBaseColor.ts +203 -0
- package/src/export/__snapshots__/exportTheme.test.ts.snap +74 -0
- package/src/export/exportTheme.test.ts +144 -0
- package/src/export/exportTheme.ts +251 -0
- package/src/export/index.ts +1 -0
- package/src/export/serializeColor.test.ts +73 -0
- package/src/export/serializeColor.ts +1 -0
- package/src/export.ts +1 -0
- package/src/index.ts +3 -0
- package/src/operators/emphasis.test.ts +85 -0
- package/src/operators/emphasis.ts +132 -0
- package/src/operators/index.ts +3 -0
- package/src/operators/state.test.ts +66 -0
- package/src/operators/state.ts +122 -0
- package/src/operators/types.ts +14 -0
- package/src/operators/utils.ts +44 -0
- package/src/presets/curves.ts +168 -0
- package/src/presets/index.ts +2 -0
- package/src/presets/tokens/index.ts +3 -0
- package/src/presets/tokens/minimal-ui.ts +55 -0
- package/src/presets/tokens/modern-ui.ts +85 -0
- package/src/presets/tokens/presets.test.ts +46 -0
- package/src/presets/tokens/radixLike-ui.ts +79 -0
- package/src/serialize/index.ts +1 -0
- package/src/serialize/normalizeOutput.ts +63 -0
- package/src/serialize/serializeColor.ts +260 -0
- package/src/serialize/serializeResolved.test.ts +57 -0
- package/src/serialize.ts +1 -0
- package/src/types/index.ts +207 -0
- package/src/utils/clamp.ts +2 -0
- package/src/utils/index.ts +1 -0
- package/src/utils/lerp.ts +1 -0
- package/src/utils/parseColor.test.ts +66 -0
- package/src/utils/parseColor.ts +87 -0
- package/src/utils/smoothstep.ts +6 -0
- package/tsconfig.build.json +11 -0
- package/tsconfig.json +15 -0
- package/dist/alpha/generateAlphaScale.d.ts +0 -5
- package/dist/alpha/generateAlphaScale.js +0 -34
- package/dist/contrast/onSolid.d.ts +0 -6
- package/dist/contrast/onSolid.js +0 -28
- package/dist/contrast/solveText.d.ts +0 -2
- package/dist/contrast/solveText.js +0 -31
- package/dist/createTheme.d.ts +0 -38
- package/dist/createTheme.js +0 -137
- package/dist/data/radixSeeds.d.ts +0 -3
- package/dist/data/radixSeeds.js +0 -34
- package/dist/diagnostics/analyzeScale.d.ts +0 -2
- package/dist/diagnostics/analyzeScale.js +0 -7
- package/dist/diagnostics/analyzeTheme.d.ts +0 -2
- package/dist/diagnostics/analyzeTheme.js +0 -35
- package/dist/diagnostics/warnings.d.ts +0 -2
- package/dist/diagnostics/warnings.js +0 -20
- package/dist/engine/curves.d.ts +0 -9
- package/dist/engine/curves.js +0 -48
- package/dist/engine/oklch.d.ts +0 -8
- package/dist/engine/oklch.js +0 -40
- package/dist/engine/templates.d.ts +0 -14
- package/dist/engine/templates.js +0 -45
- package/dist/exporters/selectColorMode.d.ts +0 -2
- package/dist/exporters/selectColorMode.js +0 -19
- package/dist/exporters/toCssVars.d.ts +0 -13
- package/dist/exporters/toCssVars.js +0 -108
- package/dist/exporters/toJson.d.ts +0 -3
- package/dist/exporters/toJson.js +0 -25
- package/dist/exporters/toReactNative.d.ts +0 -54
- package/dist/exporters/toReactNative.js +0 -33
- package/dist/exporters/toTailwind.d.ts +0 -17
- package/dist/exporters/toTailwind.js +0 -111
- package/dist/exporters/toTs.d.ts +0 -3
- package/dist/exporters/toTs.js +0 -43
- package/dist/generateScale.d.ts +0 -48
- package/dist/generateScale.js +0 -274
- package/dist/overlays/generateOverlayScale.d.ts +0 -2
- package/dist/overlays/generateOverlayScale.js +0 -34
- package/dist/text/generateTextScale.d.ts +0 -8
- package/dist/text/generateTextScale.js +0 -18
- package/dist/tokens/presetRadixLikeUi.d.ts +0 -5
- package/dist/tokens/presetRadixLikeUi.js +0 -55
- package/dist/types.d.ts +0 -69
- /package/dist/{types.js → cli/args.test.d.ts} +0 -0
|
@@ -0,0 +1,629 @@
|
|
|
1
|
+
<!-- markdownlint-disable MD024 -->
|
|
2
|
+
|
|
3
|
+
# Palette Kit v0.3 — Guia de Revisao para Copilot
|
|
4
|
+
|
|
5
|
+
> Skill de revisao para validar a implementacao incremental da v0.3.
|
|
6
|
+
> Este documento serve como checklist tecnico para code reviews automatizadas ou assistidas.
|
|
7
|
+
|
|
8
|
+
## Como usar este guia
|
|
9
|
+
|
|
10
|
+
- Use este documento como referencia durante revisoes de PR/commits
|
|
11
|
+
- Cada fase possui criterios especificos que devem ser validados
|
|
12
|
+
- Todos os criterios gerais aplicam-se a todas as fases
|
|
13
|
+
- Falhas devem gerar feedback acionavel e especifico
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## Criterios gerais (aplicam-se a todas as fases)
|
|
18
|
+
|
|
19
|
+
### 1. Contratos e tipos
|
|
20
|
+
|
|
21
|
+
- [ ] Nenhum tipo publico usa `any` ou `unknown` sem justificativa
|
|
22
|
+
- [ ] Tipos exportados tem JSDoc completo
|
|
23
|
+
- [ ] Nao ha circular imports
|
|
24
|
+
- [ ] Imports seguem a hierarquia: `types` -> `utils` -> `core` -> `engine` -> features
|
|
25
|
+
- [ ] Shape de `BaseResolvedColor` permanece estavel
|
|
26
|
+
- [ ] Nenhum breaking change nao documentado
|
|
27
|
+
|
|
28
|
+
### 2. Qualidade de codigo
|
|
29
|
+
|
|
30
|
+
- [ ] Build passa sem erros nem warnings
|
|
31
|
+
- [ ] Testes existem para novos comportamentos publicos
|
|
32
|
+
- [ ] Nenhum TODO ou FIXME em codigo production
|
|
33
|
+
- [ ] Funcoes complexas tem comentarios explicativos
|
|
34
|
+
- [ ] Codigo segue o style do Biome configurado
|
|
35
|
+
|
|
36
|
+
### 3. DX (Developer Experience)
|
|
37
|
+
|
|
38
|
+
- [ ] APIs publicas tem JSDoc com:
|
|
39
|
+
|
|
40
|
+
- Descricao clara do proposito
|
|
41
|
+
- Exemplos de uso
|
|
42
|
+
- Parametros documentados
|
|
43
|
+
- Trade-offs quando relevantes
|
|
44
|
+
- [ ] Erros possuem mensagens claras e acionaveis
|
|
45
|
+
- [ ] Nenhum comportamento "magico" nao documentado
|
|
46
|
+
- [ ] Autocomplete funcional (validar com TypeScript language server)
|
|
47
|
+
|
|
48
|
+
### 4. Principios da v0.3
|
|
49
|
+
|
|
50
|
+
- [ ] Runtime-first: core nao depende de tooling
|
|
51
|
+
- [ ] Serializer nao altera intencao visual
|
|
52
|
+
- [ ] Resolver nao retorna strings diretamente
|
|
53
|
+
- [ ] Nenhuma decisao visual oculta do desenvolvedor
|
|
54
|
+
- [ ] Determinismo: mesma entrada + opcoes = mesma saida
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
## Fase 0 — Preparacao
|
|
59
|
+
|
|
60
|
+
### Checklist especifico
|
|
61
|
+
|
|
62
|
+
- [ ] Branch `v0.3` criado e isolado
|
|
63
|
+
- [ ] v0.2 congelada com tag
|
|
64
|
+
- [ ] Specs tecnicas criadas em `src/planning/`
|
|
65
|
+
- [ ] Build limpo (sem alteracao funcional)
|
|
66
|
+
- [ ] CI verde
|
|
67
|
+
- [ ] `package.json` exports revisado
|
|
68
|
+
|
|
69
|
+
### O que NAO deve acontecer
|
|
70
|
+
|
|
71
|
+
- Mudanca de comportamento publico
|
|
72
|
+
- Alteracao de APIs existentes
|
|
73
|
+
- Refactors profundos
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
## Fase 1 — Serializer publico
|
|
78
|
+
|
|
79
|
+
### Checklist especifico
|
|
80
|
+
|
|
81
|
+
#### Estrutura
|
|
82
|
+
|
|
83
|
+
- [ ] Modulo `src/serialize/` criado
|
|
84
|
+
- [ ] Exports publicos definidos em `src/serialize/index.ts`
|
|
85
|
+
- [ ] Tipos publicos em `src/types/index.ts`
|
|
86
|
+
|
|
87
|
+
#### Tipos
|
|
88
|
+
|
|
89
|
+
- [ ] `ResolvedColor` definido e exportado
|
|
90
|
+
- [ ] `SerializeOptions` definido com defaults claros
|
|
91
|
+
- [ ] Propriedades opcionais claramente marcadas
|
|
92
|
+
|
|
93
|
+
#### Funcoes publicas
|
|
94
|
+
|
|
95
|
+
- [ ] `serializeColor(oklch, options?)` implementado
|
|
96
|
+
- [ ] `serializeResolved(baseResolved, options?)` implementado
|
|
97
|
+
- [ ] `theme.serialize(query, options?)` implementado
|
|
98
|
+
|
|
99
|
+
#### Espacos de cor
|
|
100
|
+
|
|
101
|
+
- [ ] OKLCH: formato `oklch(L% C H / A)` correto
|
|
102
|
+
- [ ] sRGB: suporte a hex, rgb(), rgba()
|
|
103
|
+
- [ ] Display-P3: formato `color(display-p3 r g b / a)` correto
|
|
104
|
+
- [ ] Conversoes preservam intencao perceptual
|
|
105
|
+
|
|
106
|
+
#### Gamut mapping
|
|
107
|
+
|
|
108
|
+
- [ ] Estrategia `clip` implementada
|
|
109
|
+
- [ ] Estrategia `compressChroma` implementada
|
|
110
|
+
- [ ] Estrategia `preferP3ThenCompress` (default) implementada
|
|
111
|
+
- [ ] Warnings claros quando clipping ocorre
|
|
112
|
+
|
|
113
|
+
#### Precision
|
|
114
|
+
|
|
115
|
+
- [ ] Arredondamento so no output final
|
|
116
|
+
- [ ] Defaults definidos: `{ l: 1, c: 3, h: 1, alpha: 2 }`
|
|
117
|
+
- [ ] Configuravel por canal
|
|
118
|
+
- [ ] Sem drift cumulativo
|
|
119
|
+
|
|
120
|
+
#### Strict mode
|
|
121
|
+
|
|
122
|
+
- [ ] `strict: false` (default): best-effort com warnings
|
|
123
|
+
- [ ] `strict: true`: erros claros e acionaveis
|
|
124
|
+
- [ ] Mensagens sem jargao matematico
|
|
125
|
+
- [ ] Erros incluem contexto e sugestoes
|
|
126
|
+
|
|
127
|
+
#### Metadata
|
|
128
|
+
|
|
129
|
+
- [ ] `includeMeta` opcional e false por default
|
|
130
|
+
- [ ] Meta contem: `spaceUsed`, `gamutMapping`, flags de transformacao
|
|
131
|
+
- [ ] Meta nunca influencia `value`
|
|
132
|
+
|
|
133
|
+
#### Testes
|
|
134
|
+
|
|
135
|
+
- [ ] Testes unitarios por espaco de cor
|
|
136
|
+
- [ ] Testes de gamut mapping
|
|
137
|
+
- [ ] Snapshots de serializacoes completas
|
|
138
|
+
- [ ] Testes de precision edge cases
|
|
139
|
+
- [ ] Testes de strict mode (erros + warnings)
|
|
140
|
+
|
|
141
|
+
#### Documentacao
|
|
142
|
+
|
|
143
|
+
- [ ] JSDoc explica trade-offs entre espacos
|
|
144
|
+
- [ ] Exemplos de uso para cada API
|
|
145
|
+
- [ ] Documentacao de gamut mapping
|
|
146
|
+
- [ ] Guia de quando usar cada espaco
|
|
147
|
+
|
|
148
|
+
### O que NAO deve acontecer
|
|
149
|
+
|
|
150
|
+
- Resolver cores dentro do serializer
|
|
151
|
+
- Decidir contraste
|
|
152
|
+
- Alterar L/C/H sem pedido explicito
|
|
153
|
+
- Comportamento implicito nao documentado
|
|
154
|
+
- Serializer acoplado ao core
|
|
155
|
+
|
|
156
|
+
---
|
|
157
|
+
|
|
158
|
+
## Fase 2 — Helpers DX no runtime
|
|
159
|
+
|
|
160
|
+
### Checklist especifico
|
|
161
|
+
|
|
162
|
+
#### APIs implementadas
|
|
163
|
+
|
|
164
|
+
- [ ] `resolveMany(queries[])` funcional
|
|
165
|
+
- [ ] `theme.withContext(context)` retorna tema bound
|
|
166
|
+
- [ ] `theme.colorCss(...)` wrapper conveniente
|
|
167
|
+
- [ ] `theme.onSolidCss(...)` wrapper conveniente
|
|
168
|
+
|
|
169
|
+
#### Comportamento
|
|
170
|
+
|
|
171
|
+
- [ ] Helpers nao escondem o core
|
|
172
|
+
- [ ] Typings inferem corretamente
|
|
173
|
+
- [ ] Performance nao degradada
|
|
174
|
+
- [ ] Helpers sao opcionais (core funciona sem eles)
|
|
175
|
+
|
|
176
|
+
#### Testes
|
|
177
|
+
|
|
178
|
+
- [ ] `resolveMany` com arrays vazios/grandes
|
|
179
|
+
- [ ] Tema bound mantem estado correto
|
|
180
|
+
- [ ] Helpers CSS retornam strings validas
|
|
181
|
+
|
|
182
|
+
#### Documentacao
|
|
183
|
+
|
|
184
|
+
- [ ] JSDoc focado em casos de uso
|
|
185
|
+
- [ ] Exemplos praticos
|
|
186
|
+
- [ ] Relacao clara com APIs core
|
|
187
|
+
|
|
188
|
+
### O que NAO deve acontecer
|
|
189
|
+
|
|
190
|
+
- Duplicacao de logica do core
|
|
191
|
+
- Comportamento diferente do core
|
|
192
|
+
- Magia ou inferencia excessiva
|
|
193
|
+
|
|
194
|
+
---
|
|
195
|
+
|
|
196
|
+
## Fase 3 — Token Registry
|
|
197
|
+
|
|
198
|
+
### Checklist especifico
|
|
199
|
+
|
|
200
|
+
#### Estrutura
|
|
201
|
+
|
|
202
|
+
- [ ] `TokenDefinition` interface definida
|
|
203
|
+
- [ ] `TokenRegistry` estrutura definida
|
|
204
|
+
- [ ] Validacao de queries implementada
|
|
205
|
+
|
|
206
|
+
#### Modelo declarativo
|
|
207
|
+
|
|
208
|
+
- [ ] Tokens nao carregam valores de cor
|
|
209
|
+
- [ ] Tokens apenas descrevem queries
|
|
210
|
+
- [ ] Registry independente do runtime
|
|
211
|
+
- [ ] Resolucao sempre via `theme.resolve`
|
|
212
|
+
|
|
213
|
+
#### Campos obrigatorios
|
|
214
|
+
|
|
215
|
+
- [ ] `name`: string unica
|
|
216
|
+
- [ ] `query`: ColorQuery valido
|
|
217
|
+
- [ ] `description`: string informativa
|
|
218
|
+
- [ ] `category`: agrupamento logico
|
|
219
|
+
|
|
220
|
+
#### Validacao
|
|
221
|
+
|
|
222
|
+
- [ ] Queries validadas na criacao
|
|
223
|
+
- [ ] Nomes unicos enforcados
|
|
224
|
+
- [ ] Categorias consistentes
|
|
225
|
+
- [ ] Erros claros em caso de duplicacao
|
|
226
|
+
|
|
227
|
+
#### Testes
|
|
228
|
+
|
|
229
|
+
- [ ] Registry com tokens validos
|
|
230
|
+
- [ ] Registry rejeita tokens invalidos
|
|
231
|
+
- [ ] Resolucao atraves do registry
|
|
232
|
+
- [ ] Validacao de queries
|
|
233
|
+
|
|
234
|
+
### O que NAO deve acontecer
|
|
235
|
+
|
|
236
|
+
- Tokens com valores hardcoded
|
|
237
|
+
- Registry acoplado a exporters
|
|
238
|
+
- Duplicacao de logica de resolucao
|
|
239
|
+
- Estados hardcoded (sao operadores)
|
|
240
|
+
|
|
241
|
+
---
|
|
242
|
+
|
|
243
|
+
## Fase 4 — Presets oficiais
|
|
244
|
+
|
|
245
|
+
### Checklist especifico
|
|
246
|
+
|
|
247
|
+
#### Presets implementados
|
|
248
|
+
|
|
249
|
+
- [ ] `minimal-ui` completo
|
|
250
|
+
- [ ] `radixLike-ui` completo
|
|
251
|
+
- [ ] `modern-ui` completo
|
|
252
|
+
|
|
253
|
+
#### Cada preset deve ter
|
|
254
|
+
|
|
255
|
+
- [ ] Tokens base documentados
|
|
256
|
+
- [ ] Categorias claras
|
|
257
|
+
- [ ] Estados suportados definidos
|
|
258
|
+
- [ ] Intencao semantica explicada
|
|
259
|
+
- [ ] Exemplos de uso
|
|
260
|
+
|
|
261
|
+
#### Coerencia
|
|
262
|
+
|
|
263
|
+
- [ ] Nomenclatura consistente entre presets
|
|
264
|
+
- [ ] Categorias alinhadas
|
|
265
|
+
- [ ] Documentacao padronizada
|
|
266
|
+
- [ ] Queries validos testados
|
|
267
|
+
|
|
268
|
+
#### Testes
|
|
269
|
+
|
|
270
|
+
- [ ] Cada preset exportavel
|
|
271
|
+
- [ ] Cada preset usavel em runtime
|
|
272
|
+
- [ ] Tokens resolvem corretamente
|
|
273
|
+
- [ ] Snapshots de exports
|
|
274
|
+
|
|
275
|
+
### O que NAO deve acontecer
|
|
276
|
+
|
|
277
|
+
- Tokens conflitantes
|
|
278
|
+
- Nomenclatura inconsistente
|
|
279
|
+
- Presets acoplados ao CLI
|
|
280
|
+
- Documentacao incompleta
|
|
281
|
+
|
|
282
|
+
---
|
|
283
|
+
|
|
284
|
+
## Fase 5 — Exporters publicos
|
|
285
|
+
|
|
286
|
+
### Checklist especifico
|
|
287
|
+
|
|
288
|
+
#### APIs
|
|
289
|
+
|
|
290
|
+
- [ ] `exportThemeCss(theme, tokenMap, options)` implementado
|
|
291
|
+
- [ ] `exportThemeJson(theme, tokenMap, options)` implementado
|
|
292
|
+
|
|
293
|
+
#### CSS output
|
|
294
|
+
|
|
295
|
+
- [ ] CSS variables com nomenclatura clara
|
|
296
|
+
- [ ] Fallbacks sRGB
|
|
297
|
+
- [ ] Override progressivo via `@supports`
|
|
298
|
+
- [ ] Ordem deterministica
|
|
299
|
+
|
|
300
|
+
#### JSON output
|
|
301
|
+
|
|
302
|
+
- [ ] Estrutura estavel
|
|
303
|
+
- [ ] Separacao por contexto (light/dark)
|
|
304
|
+
- [ ] Metadata opcional
|
|
305
|
+
- [ ] Schema documentado
|
|
306
|
+
|
|
307
|
+
#### Determinismo
|
|
308
|
+
|
|
309
|
+
- [ ] Mesma entrada = mesma saida
|
|
310
|
+
- [ ] Propriedades ordenadas
|
|
311
|
+
- [ ] Formatting consistente
|
|
312
|
+
- [ ] Reproduzivel em CI
|
|
313
|
+
|
|
314
|
+
#### Testes
|
|
315
|
+
|
|
316
|
+
- [ ] Snapshots de CSS
|
|
317
|
+
- [ ] Snapshots de JSON
|
|
318
|
+
- [ ] Export com diferentes opcoes
|
|
319
|
+
- [ ] Export de presets
|
|
320
|
+
|
|
321
|
+
#### Documentacao
|
|
322
|
+
|
|
323
|
+
- [ ] Opcoes de export documentadas
|
|
324
|
+
- [ ] Exemplos de uso
|
|
325
|
+
- [ ] Estrutura do output explicada
|
|
326
|
+
|
|
327
|
+
### O que NAO deve acontecer
|
|
328
|
+
|
|
329
|
+
- Output nao deterministico
|
|
330
|
+
- Dependencia do CLI
|
|
331
|
+
- Logica de resolucao duplicada
|
|
332
|
+
- Formatacao magica
|
|
333
|
+
|
|
334
|
+
---
|
|
335
|
+
|
|
336
|
+
## Fase 6 — CLI tooling
|
|
337
|
+
|
|
338
|
+
### Checklist especifico
|
|
339
|
+
|
|
340
|
+
#### Comandos
|
|
341
|
+
|
|
342
|
+
- [ ] `palette-kit init` implementado
|
|
343
|
+
- [ ] `palette-kit build` implementado
|
|
344
|
+
|
|
345
|
+
#### `init` behavior
|
|
346
|
+
|
|
347
|
+
- [ ] Cria `palette.config.ts` tipado
|
|
348
|
+
- [ ] JSDoc explicativo
|
|
349
|
+
- [ ] Sem comportamento magico
|
|
350
|
+
- [ ] Nao gera tokens automaticamente
|
|
351
|
+
|
|
352
|
+
#### `build` behavior
|
|
353
|
+
|
|
354
|
+
- [ ] Le config corretamente
|
|
355
|
+
- [ ] Integra exporters
|
|
356
|
+
- [ ] Gera em `dist/palette/`
|
|
357
|
+
- [ ] Outputs: `tokens.css`, `tokens.json`, `tokens.ts`, `tokens.d.ts`
|
|
358
|
+
|
|
359
|
+
#### Flags
|
|
360
|
+
|
|
361
|
+
- [ ] Flags documentadas
|
|
362
|
+
- [ ] Nenhuma flag oculta
|
|
363
|
+
- [ ] Validacao de argumentos
|
|
364
|
+
- [ ] Help text util
|
|
365
|
+
|
|
366
|
+
#### Erros
|
|
367
|
+
|
|
368
|
+
- [ ] Mensagens claras
|
|
369
|
+
- [ ] Exit codes corretos
|
|
370
|
+
- [ ] Sugestoes acionaveis
|
|
371
|
+
|
|
372
|
+
#### Testes
|
|
373
|
+
|
|
374
|
+
- [ ] CLI em projeto limpo
|
|
375
|
+
- [ ] CLI com config existente
|
|
376
|
+
- [ ] Build com diferentes configs
|
|
377
|
+
- [ ] Flags validadas
|
|
378
|
+
|
|
379
|
+
### O que NAO deve acontecer
|
|
380
|
+
|
|
381
|
+
- Comportamento implicito
|
|
382
|
+
- Sobrescrever arquivos sem aviso
|
|
383
|
+
- Flags magicas
|
|
384
|
+
- Defaults ocultos
|
|
385
|
+
|
|
386
|
+
---
|
|
387
|
+
|
|
388
|
+
## Fase 7 — Codegen de types
|
|
389
|
+
|
|
390
|
+
### Checklist especifico
|
|
391
|
+
|
|
392
|
+
#### Outputs
|
|
393
|
+
|
|
394
|
+
- [ ] `tokens.ts` com objeto navegavel
|
|
395
|
+
- [ ] `tokens.d.ts` com types
|
|
396
|
+
- [ ] Unions: `TokenName`, `ColorRole`, etc.
|
|
397
|
+
|
|
398
|
+
#### Autocomplete
|
|
399
|
+
|
|
400
|
+
- [ ] Navegacao por objeto funciona
|
|
401
|
+
- [ ] Unions inferem corretamente
|
|
402
|
+
- [ ] JSDoc por token presente
|
|
403
|
+
- [ ] Compativel com VS Code, WebStorm
|
|
404
|
+
|
|
405
|
+
#### Performance
|
|
406
|
+
|
|
407
|
+
- [ ] Zero custo em runtime
|
|
408
|
+
- [ ] Tree-shaking funcional
|
|
409
|
+
- [ ] Bundle size nao explode
|
|
410
|
+
|
|
411
|
+
#### Integracao
|
|
412
|
+
|
|
413
|
+
- [ ] Gerado por `palette-kit build`
|
|
414
|
+
- [ ] Core continua aceitando `string`
|
|
415
|
+
- [ ] Types sao opcional enhancement
|
|
416
|
+
|
|
417
|
+
#### Testes
|
|
418
|
+
|
|
419
|
+
- [ ] Codegen de preset simples
|
|
420
|
+
- [ ] Codegen de preset complexo
|
|
421
|
+
- [ ] Validacao de types gerados
|
|
422
|
+
|
|
423
|
+
### O que NAO deve acontecer
|
|
424
|
+
|
|
425
|
+
- Runtime acoplado a types gerados
|
|
426
|
+
- Types obrigatorios para uso
|
|
427
|
+
- Codegen quebra tree-shaking
|
|
428
|
+
|
|
429
|
+
---
|
|
430
|
+
|
|
431
|
+
## Fase 8 — Inferencia e validacoes
|
|
432
|
+
|
|
433
|
+
### Checklist especifico
|
|
434
|
+
|
|
435
|
+
#### Inferencia implementada
|
|
436
|
+
|
|
437
|
+
- [ ] `usage` inferido por prefixo de role
|
|
438
|
+
- [ ] `surface` inferido quando obvio
|
|
439
|
+
- [ ] `variant` inferido se omitido
|
|
440
|
+
|
|
441
|
+
#### Strict mode
|
|
442
|
+
|
|
443
|
+
- [ ] `strict: false`: warnings + fallback
|
|
444
|
+
- [ ] `strict: true`: erros claros
|
|
445
|
+
- [ ] Mensagens didaticas
|
|
446
|
+
- [ ] Sugestoes de correcao
|
|
447
|
+
|
|
448
|
+
#### Validacoes
|
|
449
|
+
|
|
450
|
+
- [ ] Queries invalidos detectados
|
|
451
|
+
- [ ] Conflitos de inferencia apontados
|
|
452
|
+
- [ ] Fallbacks documentados
|
|
453
|
+
|
|
454
|
+
#### Testes
|
|
455
|
+
|
|
456
|
+
- [ ] Inferencia correta em casos comuns
|
|
457
|
+
- [ ] Inferencia falha gracefully
|
|
458
|
+
- [ ] Strict mode valida edge cases
|
|
459
|
+
- [ ] Mensagens de erro testadas
|
|
460
|
+
|
|
461
|
+
### O que NAO deve acontecer
|
|
462
|
+
|
|
463
|
+
- Inferencia silenciosa incorreta
|
|
464
|
+
- Erros cripticos
|
|
465
|
+
- Strict mode muito permissivo
|
|
466
|
+
- Fallbacks inesperados
|
|
467
|
+
|
|
468
|
+
---
|
|
469
|
+
|
|
470
|
+
## Fase 9 — Packaging e exports
|
|
471
|
+
|
|
472
|
+
### Checklist especifico
|
|
473
|
+
|
|
474
|
+
#### Subpath exports
|
|
475
|
+
|
|
476
|
+
- [ ] "." -> main export
|
|
477
|
+
- [ ] "./serialize" -> serializer
|
|
478
|
+
- [ ] "./export" -> exporters
|
|
479
|
+
- [ ] "./cli" -> CLI (se relevante)
|
|
480
|
+
|
|
481
|
+
#### Compatibilidade
|
|
482
|
+
|
|
483
|
+
- [ ] ESM funcional
|
|
484
|
+
- [ ] CJS funcional (se suportado)
|
|
485
|
+
- [ ] Types exportados corretamente
|
|
486
|
+
- [ ] Tree-shaking validado
|
|
487
|
+
|
|
488
|
+
#### Validacao
|
|
489
|
+
|
|
490
|
+
- [ ] Imports funcionam em projeto real
|
|
491
|
+
- [ ] Bundlers comuns (Vite, Webpack, esbuild) funcionam
|
|
492
|
+
- [ ] Types resolvem em editores
|
|
493
|
+
|
|
494
|
+
#### Documentacao
|
|
495
|
+
|
|
496
|
+
- [ ] README atualizado
|
|
497
|
+
- [ ] Migration guide (se breaking)
|
|
498
|
+
- [ ] Exemplos de import
|
|
499
|
+
|
|
500
|
+
### O que NAO deve acontecer
|
|
501
|
+
|
|
502
|
+
- Exports ambiguos
|
|
503
|
+
- Breaking no packaging
|
|
504
|
+
- Tree-shaking quebrado
|
|
505
|
+
- Types nao resolvidos
|
|
506
|
+
|
|
507
|
+
---
|
|
508
|
+
|
|
509
|
+
## Fase 10 — QA final e release
|
|
510
|
+
|
|
511
|
+
### Checklist especifico
|
|
512
|
+
|
|
513
|
+
#### Testes
|
|
514
|
+
|
|
515
|
+
- [ ] Todos os testes unitarios passam
|
|
516
|
+
- [ ] Snapshots atualizados e validados
|
|
517
|
+
- [ ] Testes de integracao (se houver)
|
|
518
|
+
- [ ] Performance nao regrediu
|
|
519
|
+
|
|
520
|
+
#### DX validation
|
|
521
|
+
|
|
522
|
+
- [ ] Autocomplete funcional em VS Code
|
|
523
|
+
- [ ] Hover docs aparecem
|
|
524
|
+
- [ ] Go-to-definition funciona
|
|
525
|
+
- [ ] Nenhum erro TypeScript no workspace
|
|
526
|
+
|
|
527
|
+
#### Documentacao
|
|
528
|
+
|
|
529
|
+
- [ ] Changelog atualizado
|
|
530
|
+
- [ ] Migration guide completo (se breaking)
|
|
531
|
+
- [ ] README reflete v0.3
|
|
532
|
+
- [ ] Exemplos funcionam
|
|
533
|
+
|
|
534
|
+
#### Pre-release
|
|
535
|
+
|
|
536
|
+
- [ ] Versao bumped corretamente
|
|
537
|
+
- [ ] Git tags criados
|
|
538
|
+
- [ ] Build CI verde
|
|
539
|
+
- [ ] Dry-run de publish OK
|
|
540
|
+
|
|
541
|
+
#### Release
|
|
542
|
+
|
|
543
|
+
- [ ] Publicado no npm
|
|
544
|
+
- [ ] GitHub release criado
|
|
545
|
+
- [ ] Announcement preparado
|
|
546
|
+
|
|
547
|
+
### O que NAO deve acontecer
|
|
548
|
+
|
|
549
|
+
- Release com testes falhando
|
|
550
|
+
- Documentacao desatualizada
|
|
551
|
+
- Breaking changes nao documentados
|
|
552
|
+
- Versao errada
|
|
553
|
+
|
|
554
|
+
---
|
|
555
|
+
|
|
556
|
+
## Comandos uteis para validacao
|
|
557
|
+
|
|
558
|
+
```bash
|
|
559
|
+
# Build limpo
|
|
560
|
+
npm run build
|
|
561
|
+
|
|
562
|
+
# Testes
|
|
563
|
+
npm test
|
|
564
|
+
npm run test:watch
|
|
565
|
+
|
|
566
|
+
# Linting
|
|
567
|
+
npm run lint
|
|
568
|
+
|
|
569
|
+
# Type checking
|
|
570
|
+
npm run typecheck
|
|
571
|
+
|
|
572
|
+
# Dry-run publish
|
|
573
|
+
npm pack
|
|
574
|
+
npm publish --dry-run
|
|
575
|
+
|
|
576
|
+
# Validar exports
|
|
577
|
+
node -e "import('palette-kit')"
|
|
578
|
+
node -e "import('palette-kit/serialize')"
|
|
579
|
+
```
|
|
580
|
+
|
|
581
|
+
---
|
|
582
|
+
|
|
583
|
+
## Feedback estruturado em revisoes
|
|
584
|
+
|
|
585
|
+
### Template de feedback
|
|
586
|
+
|
|
587
|
+
```markdown
|
|
588
|
+
## Aprovado / Necessita correcoes / Bloqueado
|
|
589
|
+
|
|
590
|
+
### Criterios gerais
|
|
591
|
+
- [x] Item OK
|
|
592
|
+
- [ ] Item pendente: [explicacao + sugestao]
|
|
593
|
+
|
|
594
|
+
### Criterios da fase X
|
|
595
|
+
- [x] Item OK
|
|
596
|
+
- [ ] Item pendente: [explicacao + sugestao]
|
|
597
|
+
|
|
598
|
+
### Comentarios adicionais
|
|
599
|
+
- Observacao 1
|
|
600
|
+
- Observacao 2
|
|
601
|
+
|
|
602
|
+
### Proximos passos sugeridos
|
|
603
|
+
1. Acao 1
|
|
604
|
+
2. Acao 2
|
|
605
|
+
```
|
|
606
|
+
|
|
607
|
+
---
|
|
608
|
+
|
|
609
|
+
## Referencias
|
|
610
|
+
|
|
611
|
+
- `src/planning/spec-v0.3.md` — Spec geral
|
|
612
|
+
- `src/planning/spec-serializer-v0.3.md` — Spec do serializer
|
|
613
|
+
- `src/planning/roadmap-v0.3.md` — Roadmap de implementacao
|
|
614
|
+
- `AGENTS.md` — Guidance geral
|
|
615
|
+
|
|
616
|
+
---
|
|
617
|
+
|
|
618
|
+
## Principios de feedback
|
|
619
|
+
|
|
620
|
+
1. Acionavel: sempre sugerir correcao ou alternativa
|
|
621
|
+
2. Especifico: apontar linha/arquivo quando relevante
|
|
622
|
+
3. Construtivo: explicar o "porque", nao apenas o "o que"
|
|
623
|
+
4. Priorizado: separar blockers de nice-to-haves
|
|
624
|
+
5. Consistente: seguir sempre este guia
|
|
625
|
+
|
|
626
|
+
---
|
|
627
|
+
|
|
628
|
+
Versao do guia: 1.0
|
|
629
|
+
Ultima atualizacao: 18 de janeiro de 2026
|
package/AGENTS.md
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# AGENTS
|
|
2
|
+
|
|
3
|
+
Guidance for agents working in this repo, derived from `docs/spec.md` (phases 0 and 1).
|
|
4
|
+
|
|
5
|
+
## Phase 0: Structure and dependencies
|
|
6
|
+
|
|
7
|
+
- Keep the folder layout under `src/` aligned with the spec: `core`, `engine`, `contrast`, `operators`, `export`, `presets`, `types`, `utils`.
|
|
8
|
+
- Keep the required dependencies available: `culori` and an APCA implementation (`apca-w3` is acceptable).
|
|
9
|
+
|
|
10
|
+
## Phase 1: Types and contracts
|
|
11
|
+
|
|
12
|
+
- Public types live in `src/types`. Implement these without business logic:
|
|
13
|
+
`ColorContext`, `SurfaceIntent`, `ColorState`, `ColorEmphasis`, `SemanticVariant`,
|
|
14
|
+
`ColorUsage`, `ColorRole`, `BackgroundHint`, `ContrastRequirement`, `AlphaStrategy`,
|
|
15
|
+
`OutputOptions`, `ColorQuery`, `OnSolidQuery`, `ResolvedColor`, `ColorMeta`.
|
|
16
|
+
- Acceptance criteria: build must pass and there must be no circular imports.
|
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## v0.3.0
|
|
4
|
+
|
|
5
|
+
### Breaking changes
|
|
6
|
+
|
|
7
|
+
- ESM-only package (`"type": "module"`), no `require()` support.
|
|
8
|
+
- Public API is split into subpath exports:
|
|
9
|
+
- `@clhaas/palette-kit` (runtime)
|
|
10
|
+
- `@clhaas/palette-kit/serialize` (serializer)
|
|
11
|
+
- `@clhaas/palette-kit/export` (exporters)
|
|
12
|
+
- `@clhaas/palette-kit/cli` and bin `palette-kit` (CLI)
|
|
13
|
+
- Exporters are not re-exported from the main entrypoint to keep the runtime lean and tree-shakeable.
|
|
14
|
+
|
|
15
|
+
### Features
|
|
16
|
+
|
|
17
|
+
- Public serializer (`serializeColor`, `serializeResolved`, `theme.serialize`) with OKLCH/sRGB/P3 output options.
|
|
18
|
+
- Public exporters: `exportThemeCss` (progressive `@supports` fallbacks) and `exportThemeJson` (stable `{ light, dark }` structure).
|
|
19
|
+
- Declarative Token Registry + official token presets (`minimal-ui`, `radixLike-ui`, `modern-ui`).
|
|
20
|
+
- CLI tooling:
|
|
21
|
+
- `palette-kit init` (typed config template)
|
|
22
|
+
- `palette-kit build` (deterministic `dist/palette/` artifacts: CSS/JSON/TS + d.ts)
|
|
23
|
+
- Strong inference and DX validation improvements (strict vs non-strict behavior, clearer errors).
|
|
24
|
+
|
|
25
|
+
### Migration
|
|
26
|
+
|
|
27
|
+
- See `docs/Migration.md` for upgrade notes and updated import paths.
|
|
28
|
+
|
|
29
|
+
## v0.2.0
|
|
30
|
+
|
|
31
|
+
- Public API limited to `createTheme` and public types.
|
|
32
|
+
- Resolver returns OKLCH channel data, not CSS strings.
|
|
33
|
+
- Internal serializers/exporters exist but are not exported.
|
|
34
|
+
- CLI is declared but not implemented in this tag.
|