@clhaas/palette-kit 0.3.0 → 0.4.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/CHANGELOG.md +25 -0
- package/README.md +80 -87
- package/dist/contrast/contrast.d.ts +16 -0
- package/dist/contrast/contrast.js +102 -0
- package/dist/core/intent-registry.d.ts +11 -0
- package/dist/core/intent-registry.js +70 -0
- package/dist/core/oklch.d.ts +16 -0
- package/dist/core/oklch.js +56 -0
- package/dist/create-palette-kit.d.ts +9 -0
- package/dist/create-palette-kit.js +67 -0
- package/dist/engine/context/context.d.ts +13 -0
- package/dist/engine/context/context.js +37 -0
- package/dist/engine/level/curves.d.ts +17 -0
- package/dist/engine/level/curves.js +49 -0
- package/dist/engine/level/level.d.ts +4 -0
- package/dist/engine/level/level.js +13 -0
- package/dist/engine/relation/relation.d.ts +105 -0
- package/dist/engine/relation/relation.js +137 -0
- package/dist/engine/resolve/resolve.d.ts +36 -0
- package/dist/engine/resolve/resolve.js +116 -0
- package/dist/engine/state/state.d.ts +46 -0
- package/dist/engine/state/state.js +68 -0
- package/dist/engine/usage/fill.d.ts +9 -0
- package/dist/engine/usage/fill.js +9 -0
- package/dist/engine/usage/lines.d.ts +9 -0
- package/dist/engine/usage/lines.js +9 -0
- package/dist/engine/usage/overlays.d.ts +9 -0
- package/dist/engine/usage/overlays.js +9 -0
- package/dist/engine/usage/strategy.d.ts +56 -0
- package/dist/engine/usage/strategy.js +30 -0
- package/dist/engine/usage/visualVocabulary.d.ts +9 -0
- package/dist/engine/usage/visualVocabulary.js +9 -0
- package/dist/export/serialize.d.ts +14 -0
- package/dist/export/serialize.js +89 -0
- package/dist/export/types.d.ts +37 -0
- package/dist/export/types.js +31 -0
- package/dist/index.d.ts +3 -3
- package/dist/index.js +2 -2
- package/dist/operators/convert.d.ts +32 -0
- package/dist/operators/convert.js +80 -0
- package/dist/presets/presets.d.ts +95 -0
- package/dist/presets/presets.js +308 -0
- package/dist/types/index.d.ts +111 -187
- package/dist/utils/errors/errors.d.ts +17 -0
- package/dist/utils/errors/errors.js +22 -0
- package/docs/API.md +167 -0
- package/docs/Alpha.md +14 -0
- package/docs/Architecture.md +56 -0
- package/docs/CLI.md +22 -0
- package/docs/Concepts.md +73 -0
- package/docs/Config.md +144 -0
- package/docs/Diagnostics.md +22 -0
- package/docs/Exporters.md +33 -0
- package/docs/FAQ.md +59 -0
- package/docs/Migration.md +61 -0
- package/docs/Overlays.md +33 -0
- package/docs/README.md +60 -0
- package/docs/Text.md +41 -0
- package/docs/Tokens.md +42 -0
- package/docs/Usage-JSON.md +39 -0
- package/docs/Usage-ReactNative.md +63 -0
- package/docs/Usage-Web.md +66 -0
- package/docs/Validation.md +97 -0
- package/docs/Why.md +37 -0
- package/docs/_api-surface.md +53 -0
- package/docs/snippets/serialize-oklch.md +9 -0
- package/docs/spec.md +98 -0
- package/package.json +74 -59
- package/.codex/skills/color-pipeline-implementer/SKILL.md +0 -23
- package/.codex/skills/commit-message-crafter/SKILL.md +0 -63
- package/.codex/skills/commit-message-crafter/references/benchmarks.md +0 -20
- package/.codex/skills/contrast-solver-helper/SKILL.md +0 -20
- package/.codex/skills/exporters-builder/SKILL.md +0 -20
- package/.codex/skills/markdownlint-writer/SKILL.md +0 -32
- package/.codex/skills/phase-implementation-runbook/SKILL.md +0 -92
- package/.codex/skills/type-contract-auditor/SKILL.md +0 -21
- package/.github/skills/review-guide/SKILL.md +0 -23
- package/.github/skills/review-guide/references/review-guide-v0.3.md +0 -629
- package/.markdownlint.json +0 -4
- package/AGENTS.md +0 -16
- package/biome.json +0 -43
- package/dist/cli/args.d.ts +0 -12
- package/dist/cli/args.js +0 -56
- package/dist/cli/args.test.d.ts +0 -1
- package/dist/cli/args.test.js +0 -22
- package/dist/cli/codegen/__snapshots__/tokens.test.js.snap +0 -87
- package/dist/cli/codegen/tokens.d.ts +0 -12
- package/dist/cli/codegen/tokens.js +0 -139
- package/dist/cli/codegen/tokens.test.d.ts +0 -1
- package/dist/cli/codegen/tokens.test.js +0 -51
- package/dist/cli/config.d.ts +0 -40
- package/dist/cli/config.js +0 -34
- package/dist/cli/validate.d.ts +0 -2
- package/dist/cli/validate.js +0 -33
- package/dist/cli/validate.test.d.ts +0 -1
- package/dist/cli/validate.test.js +0 -40
- package/dist/cli.d.ts +0 -2
- package/dist/cli.js +0 -148
- package/dist/contrast/apca.d.ts +0 -2
- package/dist/contrast/apca.js +0 -15
- package/dist/contrast/apca.test.d.ts +0 -1
- package/dist/contrast/apca.test.js +0 -16
- package/dist/contrast/index.d.ts +0 -4
- package/dist/contrast/index.js +0 -4
- package/dist/contrast/scoring.d.ts +0 -4
- package/dist/contrast/scoring.js +0 -31
- package/dist/contrast/scoring.test.d.ts +0 -1
- package/dist/contrast/scoring.test.js +0 -148
- package/dist/contrast/solver.d.ts +0 -13
- package/dist/contrast/solver.js +0 -170
- package/dist/contrast/solver.test.d.ts +0 -1
- package/dist/contrast/solver.test.js +0 -75
- package/dist/contrast/types.d.ts +0 -17
- package/dist/contrast/types.js +0 -1
- package/dist/contrast/utils.d.ts +0 -4
- package/dist/contrast/utils.js +0 -18
- package/dist/contrast/wcag2.d.ts +0 -3
- package/dist/contrast/wcag2.js +0 -19
- package/dist/contrast/wcag2.test.d.ts +0 -1
- package/dist/contrast/wcag2.test.js +0 -17
- package/dist/core/createTheme.d.ts +0 -35
- package/dist/core/createTheme.js +0 -24
- package/dist/core/dx-helpers.test.d.ts +0 -1
- package/dist/core/dx-helpers.test.js +0 -61
- package/dist/core/index.d.ts +0 -2
- package/dist/core/index.js +0 -2
- package/dist/core/onSolid.test.d.ts +0 -1
- package/dist/core/onSolid.test.js +0 -118
- package/dist/core/qa.v1.test.d.ts +0 -1
- package/dist/core/qa.v1.test.js +0 -112
- package/dist/core/resolve.d.ts +0 -3
- package/dist/core/resolve.js +0 -8
- package/dist/core/resolve.test.d.ts +0 -1
- package/dist/core/resolve.test.js +0 -89
- package/dist/core/resolveMany.d.ts +0 -8
- package/dist/core/resolveMany.js +0 -17
- package/dist/core/tokenRegistry.d.ts +0 -23
- package/dist/core/tokenRegistry.js +0 -83
- package/dist/core/tokenRegistry.test.d.ts +0 -1
- package/dist/core/tokenRegistry.test.js +0 -133
- package/dist/engine/applyOperators.d.ts +0 -3
- package/dist/engine/applyOperators.js +0 -23
- package/dist/engine/context.d.ts +0 -4
- package/dist/engine/context.js +0 -1
- package/dist/engine/gamut.d.ts +0 -13
- package/dist/engine/gamut.js +0 -101
- package/dist/engine/gamut.test.d.ts +0 -1
- package/dist/engine/gamut.test.js +0 -23
- package/dist/engine/generateScale.d.ts +0 -15
- package/dist/engine/generateScale.js +0 -29
- package/dist/engine/generateScale.test.d.ts +0 -1
- package/dist/engine/generateScale.test.js +0 -32
- package/dist/engine/index.d.ts +0 -8
- package/dist/engine/index.js +0 -4
- package/dist/engine/normalize.d.ts +0 -43
- package/dist/engine/normalize.js +0 -403
- package/dist/engine/normalize.test.d.ts +0 -1
- package/dist/engine/normalize.test.js +0 -136
- package/dist/engine/onSolid.d.ts +0 -3
- package/dist/engine/onSolid.js +0 -110
- package/dist/engine/resolveBaseColor.d.ts +0 -25
- package/dist/engine/resolveBaseColor.js +0 -127
- package/dist/engine/resolveBaseColor.test.d.ts +0 -1
- package/dist/engine/resolveBaseColor.test.js +0 -97
- package/dist/export/__snapshots__/exportTheme.test.js.snap +0 -74
- package/dist/export/exportTheme.d.ts +0 -47
- package/dist/export/exportTheme.js +0 -170
- package/dist/export/exportTheme.test.d.ts +0 -1
- package/dist/export/exportTheme.test.js +0 -118
- package/dist/export/index.d.ts +0 -1
- package/dist/export/index.js +0 -1
- package/dist/export/serializeColor.d.ts +0 -1
- package/dist/export/serializeColor.js +0 -1
- package/dist/export/serializeColor.test.d.ts +0 -1
- package/dist/export/serializeColor.test.js +0 -54
- package/dist/export.d.ts +0 -1
- package/dist/export.js +0 -1
- package/dist/operators/emphasis.d.ts +0 -3
- package/dist/operators/emphasis.js +0 -113
- package/dist/operators/emphasis.test.d.ts +0 -1
- package/dist/operators/emphasis.test.js +0 -69
- package/dist/operators/index.d.ts +0 -3
- package/dist/operators/index.js +0 -2
- package/dist/operators/state.d.ts +0 -3
- package/dist/operators/state.js +0 -102
- package/dist/operators/state.test.d.ts +0 -1
- package/dist/operators/state.test.js +0 -48
- package/dist/operators/types.d.ts +0 -13
- package/dist/operators/types.js +0 -1
- package/dist/operators/utils.d.ts +0 -16
- package/dist/operators/utils.js +0 -23
- package/dist/presets/curves.d.ts +0 -28
- package/dist/presets/curves.js +0 -145
- package/dist/presets/index.d.ts +0 -2
- package/dist/presets/index.js +0 -1
- package/dist/presets/tokens/index.d.ts +0 -3
- package/dist/presets/tokens/index.js +0 -3
- package/dist/presets/tokens/minimal-ui.d.ts +0 -6
- package/dist/presets/tokens/minimal-ui.js +0 -53
- package/dist/presets/tokens/modern-ui.d.ts +0 -5
- package/dist/presets/tokens/modern-ui.js +0 -83
- package/dist/presets/tokens/presets.test.d.ts +0 -1
- package/dist/presets/tokens/presets.test.js +0 -31
- package/dist/presets/tokens/radixLike-ui.d.ts +0 -6
- package/dist/presets/tokens/radixLike-ui.js +0 -77
- package/dist/serialize/index.d.ts +0 -1
- package/dist/serialize/index.js +0 -1
- package/dist/serialize/normalizeOutput.d.ts +0 -6
- package/dist/serialize/normalizeOutput.js +0 -45
- package/dist/serialize/serializeColor.d.ts +0 -21
- package/dist/serialize/serializeColor.js +0 -178
- package/dist/serialize/serializeResolved.test.d.ts +0 -1
- package/dist/serialize/serializeResolved.test.js +0 -45
- package/dist/serialize.d.ts +0 -1
- package/dist/serialize.js +0 -1
- package/dist/utils/clamp.d.ts +0 -1
- package/dist/utils/clamp.js +0 -1
- package/dist/utils/index.d.ts +0 -1
- package/dist/utils/index.js +0 -1
- package/dist/utils/lerp.d.ts +0 -1
- package/dist/utils/lerp.js +0 -1
- package/dist/utils/parseColor.d.ts +0 -6
- package/dist/utils/parseColor.js +0 -67
- package/dist/utils/parseColor.test.d.ts +0 -1
- package/dist/utils/parseColor.test.js +0 -51
- package/dist/utils/smoothstep.d.ts +0 -1
- package/dist/utils/smoothstep.js +0 -5
- package/planning/phase-10-review.md +0 -550
- package/planning/phase-7-review.md +0 -411
- package/planning/phase-8-review.md +0 -669
- package/planning/phase-9-review.md +0 -564
- package/planning/roadmap-v0.3.md +0 -284
- package/planning/spec-serializer-v0.3.md +0 -324
- package/planning/spec-v0.3.md +0 -305
- package/src/cli/args.test.ts +0 -28
- package/src/cli/args.ts +0 -66
- package/src/cli/codegen/__snapshots__/tokens.test.ts.snap +0 -87
- package/src/cli/codegen/tokens.test.ts +0 -61
- package/src/cli/codegen/tokens.ts +0 -191
- package/src/cli/config.ts +0 -71
- package/src/cli/validate.test.ts +0 -49
- package/src/cli/validate.ts +0 -38
- package/src/cli.ts +0 -183
- package/src/contrast/apca.test.ts +0 -20
- package/src/contrast/apca.ts +0 -26
- package/src/contrast/index.ts +0 -4
- package/src/contrast/scoring.test.ts +0 -188
- package/src/contrast/scoring.ts +0 -48
- package/src/contrast/solver.test.ts +0 -147
- package/src/contrast/solver.ts +0 -235
- package/src/contrast/types.ts +0 -20
- package/src/contrast/utils.ts +0 -28
- package/src/contrast/wcag2.test.ts +0 -21
- package/src/contrast/wcag2.ts +0 -24
- package/src/core/createTheme.ts +0 -78
- package/src/core/dx-helpers.test.ts +0 -82
- package/src/core/index.ts +0 -7
- package/src/core/onSolid.test.ts +0 -146
- package/src/core/qa.v1.test.ts +0 -149
- package/src/core/resolve.test.ts +0 -99
- package/src/core/resolve.ts +0 -11
- package/src/core/resolveMany.ts +0 -22
- package/src/core/tokenRegistry.test.ts +0 -153
- package/src/core/tokenRegistry.ts +0 -114
- package/src/engine/applyOperators.ts +0 -32
- package/src/engine/context.ts +0 -8
- package/src/engine/gamut.test.ts +0 -30
- package/src/engine/gamut.ts +0 -144
- package/src/engine/generateScale.test.ts +0 -46
- package/src/engine/generateScale.ts +0 -48
- package/src/engine/index.ts +0 -8
- package/src/engine/normalize.test.ts +0 -222
- package/src/engine/normalize.ts +0 -550
- package/src/engine/onSolid.ts +0 -178
- package/src/engine/resolveBaseColor.test.ts +0 -117
- package/src/engine/resolveBaseColor.ts +0 -203
- package/src/export/__snapshots__/exportTheme.test.ts.snap +0 -74
- package/src/export/exportTheme.test.ts +0 -144
- package/src/export/exportTheme.ts +0 -251
- package/src/export/index.ts +0 -1
- package/src/export/serializeColor.test.ts +0 -73
- package/src/export/serializeColor.ts +0 -1
- package/src/export.ts +0 -1
- package/src/index.ts +0 -3
- package/src/operators/emphasis.test.ts +0 -85
- package/src/operators/emphasis.ts +0 -132
- package/src/operators/index.ts +0 -3
- package/src/operators/state.test.ts +0 -66
- package/src/operators/state.ts +0 -122
- package/src/operators/types.ts +0 -14
- package/src/operators/utils.ts +0 -44
- package/src/presets/curves.ts +0 -168
- package/src/presets/index.ts +0 -2
- package/src/presets/tokens/index.ts +0 -3
- package/src/presets/tokens/minimal-ui.ts +0 -55
- package/src/presets/tokens/modern-ui.ts +0 -85
- package/src/presets/tokens/presets.test.ts +0 -46
- package/src/presets/tokens/radixLike-ui.ts +0 -79
- package/src/serialize/index.ts +0 -1
- package/src/serialize/normalizeOutput.ts +0 -63
- package/src/serialize/serializeColor.ts +0 -260
- package/src/serialize/serializeResolved.test.ts +0 -57
- package/src/serialize.ts +0 -1
- package/src/types/index.ts +0 -207
- package/src/utils/clamp.ts +0 -2
- package/src/utils/index.ts +0 -1
- package/src/utils/lerp.ts +0 -1
- package/src/utils/parseColor.test.ts +0 -66
- package/src/utils/parseColor.ts +0 -87
- package/src/utils/smoothstep.ts +0 -6
- package/tsconfig.build.json +0 -11
- package/tsconfig.json +0 -15
|
@@ -1,564 +0,0 @@
|
|
|
1
|
-
# Revisão Fase 9 — Package Shape e Documentação
|
|
2
|
-
|
|
3
|
-
**Date**: 18 de janeiro de 2026
|
|
4
|
-
**Revisor**: GitHub Copilot (usando review-guide-v0.3.md)
|
|
5
|
-
**Status**: ✅ **APPROVED WITH MINOR SUGGESTIONS**
|
|
6
|
-
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
## 📋 Resumo Executivo
|
|
10
|
-
|
|
11
|
-
A implementação da Fase 9 (Package Shape e Documentação) está **completa e bem estruturada**. O código:
|
|
12
|
-
|
|
13
|
-
- ✅ Subpath exports definidos (`./serialize`, `./export`, `./cli`)
|
|
14
|
-
- ✅ Tree-shaking habilitado (exporters removidos do entrypoint principal)
|
|
15
|
-
- ✅ Compatibilidade ESM mantida
|
|
16
|
-
- ✅ README atualizado para v0.3
|
|
17
|
-
- ✅ Documentação completa (CLI.md, Exporters.md, _api-surface.md)
|
|
18
|
-
|
|
19
|
-
**Sugestões menores**:
|
|
20
|
-
|
|
21
|
-
1. Adicionar exemplos de import em diferentes bundlers
|
|
22
|
-
2. Documentar migration guide v0.2 → v0.3
|
|
23
|
-
3. Adicionar nota sobre tree-shaking no README
|
|
24
|
-
4. Validar imports em projeto real (teste manual)
|
|
25
|
-
|
|
26
|
-
**Pontos positivos**:
|
|
27
|
-
|
|
28
|
-
- Separação clara: runtime (`"."`) vs build-time (`"./export"`, `"./cli"`)
|
|
29
|
-
- Documentação atualizada de forma consistente
|
|
30
|
-
- API surface report atualizado com todos os exports
|
|
31
|
-
|
|
32
|
-
---
|
|
33
|
-
|
|
34
|
-
## ✅ CRITÉRIOS GERAIS (Todos aprovados)
|
|
35
|
-
|
|
36
|
-
### 1. Contratos e tipos ✅
|
|
37
|
-
|
|
38
|
-
- ✅ **Subpath exports tipados**: Cada subpath tem `.d.ts` correspondente
|
|
39
|
-
- ✅ **Nenhum breaking export**: Entrypoint principal mantém API pública
|
|
40
|
-
- ✅ **Hierarquia respeitada**: Exporters não vazam para runtime bundle
|
|
41
|
-
- ✅ **Types exportados**: CLI config types exportados no entrypoint principal
|
|
42
|
-
|
|
43
|
-
**Evidência** (`package.json`):
|
|
44
|
-
|
|
45
|
-
```json
|
|
46
|
-
{
|
|
47
|
-
"exports": {
|
|
48
|
-
".": {
|
|
49
|
-
"types": "./dist/index.d.ts",
|
|
50
|
-
"default": "./dist/index.js"
|
|
51
|
-
},
|
|
52
|
-
"./export": {
|
|
53
|
-
"types": "./dist/export.d.ts",
|
|
54
|
-
"default": "./dist/export.js"
|
|
55
|
-
},
|
|
56
|
-
"./cli": {
|
|
57
|
-
"types": "./dist/cli.d.ts",
|
|
58
|
-
"default": "./dist/cli.js"
|
|
59
|
-
},
|
|
60
|
-
"./serialize": {
|
|
61
|
-
"types": "./dist/serialize.d.ts",
|
|
62
|
-
"default": "./dist/serialize.js"
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
---
|
|
69
|
-
|
|
70
|
-
### 2. Qualidade de código ✅
|
|
71
|
-
|
|
72
|
-
- ✅ **Tree-shaking**: Exporters removidos de `src/index.ts`
|
|
73
|
-
- ✅ **Imports limpos**: Sem circular dependencies
|
|
74
|
-
- ✅ **Documentação**: Todos os docs atualizados
|
|
75
|
-
- ✅ **Consistência**: API surface report sincronizado
|
|
76
|
-
|
|
77
|
-
**Evidência** (`src/index.ts`):
|
|
78
|
-
|
|
79
|
-
```typescript
|
|
80
|
-
export type { PaletteConfig, TokenPresetName } from "./cli/config.js";
|
|
81
|
-
export * from "./core/index.js";
|
|
82
|
-
// ❌ REMOVIDO: export * from "./export/index.js"; ✅ Agora em "./export"
|
|
83
|
-
export * from "./types/index.js";
|
|
84
|
-
```
|
|
85
|
-
|
|
86
|
-
**Resultado**: Runtime bundle não inclui exporters (build-time only).
|
|
87
|
-
|
|
88
|
-
---
|
|
89
|
-
|
|
90
|
-
### 3. DX (Developer Experience) ✅
|
|
91
|
-
|
|
92
|
-
- ✅ **Autocomplete**: Subpath imports funcionam em IDEs modernos
|
|
93
|
-
- ✅ **Documentação clara**: README com exemplos de cada subpath
|
|
94
|
-
- ✅ **Separação runtime/build-time**: Explícita e documentada
|
|
95
|
-
- ✅ **Exemplos práticos**: CLI, serializer, exporters todos documentados
|
|
96
|
-
|
|
97
|
-
**Evidência** (`README.md`):
|
|
98
|
-
|
|
99
|
-
```markdown
|
|
100
|
-
## Runtime quick start
|
|
101
|
-
|
|
102
|
-
import { createTheme } from "@clhaas/palette-kit";
|
|
103
|
-
|
|
104
|
-
## Serializer (public)
|
|
105
|
-
|
|
106
|
-
import { serializeResolved } from "@clhaas/palette-kit/serialize";
|
|
107
|
-
|
|
108
|
-
## Exporters (public, build-time)
|
|
109
|
-
|
|
110
|
-
import { exportThemeCss } from "@clhaas/palette-kit/export";
|
|
111
|
-
```
|
|
112
|
-
|
|
113
|
-
---
|
|
114
|
-
|
|
115
|
-
### 4. Princípios da v0.3 ✅
|
|
116
|
-
|
|
117
|
-
- ✅ **Runtime-first**: Entrypoint principal sem build tools
|
|
118
|
-
- ✅ **Serializer independente**: Subpath dedicado
|
|
119
|
-
- ✅ **Exporters separados**: Build-time only
|
|
120
|
-
- ✅ **CLI isolado**: Não polui runtime bundle
|
|
121
|
-
- ✅ **Tree-shaking**: Apps que só usam runtime não baixam exporters
|
|
122
|
-
|
|
123
|
-
---
|
|
124
|
-
|
|
125
|
-
## ✅ CRITÉRIOS ESPECÍFICOS DA FASE 9
|
|
126
|
-
|
|
127
|
-
### Subpath exports ✅
|
|
128
|
-
|
|
129
|
-
#### `"."` → main export ✅
|
|
130
|
-
|
|
131
|
-
**Evidência** (`package.json` + `src/index.ts`):
|
|
132
|
-
|
|
133
|
-
```json
|
|
134
|
-
".": {
|
|
135
|
-
"types": "./dist/index.d.ts",
|
|
136
|
-
"default": "./dist/index.js"
|
|
137
|
-
}
|
|
138
|
-
```
|
|
139
|
-
|
|
140
|
-
**Exporta**:
|
|
141
|
-
|
|
142
|
-
- `createTheme` ✅
|
|
143
|
-
- Todos os tipos públicos ✅
|
|
144
|
-
- Config types (`PaletteConfig`, `TokenPresetName`) ✅
|
|
145
|
-
- **Não exporta**: exporters, serializers (correto para tree-shaking) ✅
|
|
146
|
-
|
|
147
|
-
#### `"./serialize"` → serializer ✅
|
|
148
|
-
|
|
149
|
-
**Evidência** (`package.json`):
|
|
150
|
-
|
|
151
|
-
```json
|
|
152
|
-
"./serialize": {
|
|
153
|
-
"types": "./dist/serialize.d.ts",
|
|
154
|
-
"default": "./dist/serialize.js"
|
|
155
|
-
}
|
|
156
|
-
```
|
|
157
|
-
|
|
158
|
-
**Exporta**:
|
|
159
|
-
|
|
160
|
-
- `serializeColor` ✅
|
|
161
|
-
- `serializeResolved` ✅
|
|
162
|
-
- **Não exporta**: `serializeColorJson` (internal) ✅
|
|
163
|
-
|
|
164
|
-
**Documentação**: README inclui exemplo de uso ✅
|
|
165
|
-
|
|
166
|
-
#### `"./export"` → exporters ✅
|
|
167
|
-
|
|
168
|
-
**Evidência** (`package.json`):
|
|
169
|
-
|
|
170
|
-
```json
|
|
171
|
-
"./export": {
|
|
172
|
-
"types": "./dist/export.d.ts",
|
|
173
|
-
"default": "./dist/export.js"
|
|
174
|
-
}
|
|
175
|
-
```
|
|
176
|
-
|
|
177
|
-
**Exporta**:
|
|
178
|
-
|
|
179
|
-
- `exportThemeCss` ✅
|
|
180
|
-
- `exportThemeJson` ✅
|
|
181
|
-
|
|
182
|
-
**Documentação**:
|
|
183
|
-
|
|
184
|
-
- README inclui exemplo ✅
|
|
185
|
-
- `docs/Exporters.md` atualizado com APIs públicas ✅
|
|
186
|
-
|
|
187
|
-
#### `"./cli"` → CLI ✅
|
|
188
|
-
|
|
189
|
-
**Evidência** (`package.json`):
|
|
190
|
-
|
|
191
|
-
```json
|
|
192
|
-
"./cli": {
|
|
193
|
-
"types": "./dist/cli.d.ts",
|
|
194
|
-
"default": "./dist/cli.js"
|
|
195
|
-
},
|
|
196
|
-
"bin": {
|
|
197
|
-
"palette-kit": "./dist/cli.js"
|
|
198
|
-
}
|
|
199
|
-
```
|
|
200
|
-
|
|
201
|
-
**Documentação**:
|
|
202
|
-
|
|
203
|
-
- `docs/CLI.md` completo com comandos `init` e `build` ✅
|
|
204
|
-
- Flags documentados ✅
|
|
205
|
-
- Notas sobre TS loader ✅
|
|
206
|
-
|
|
207
|
-
---
|
|
208
|
-
|
|
209
|
-
### Compatibilidade ✅
|
|
210
|
-
|
|
211
|
-
#### ESM funcional ✅
|
|
212
|
-
|
|
213
|
-
**Evidência** (`package.json`):
|
|
214
|
-
|
|
215
|
-
```json
|
|
216
|
-
{
|
|
217
|
-
"type": "module",
|
|
218
|
-
"exports": { ... }
|
|
219
|
-
}
|
|
220
|
-
```
|
|
221
|
-
|
|
222
|
-
**Todos os imports usam `.js` extension**: ✅
|
|
223
|
-
**No `require()` usage**: ✅
|
|
224
|
-
|
|
225
|
-
#### CJS funcional ⚠️
|
|
226
|
-
|
|
227
|
-
**Status**: Não suportado (ESM-only)
|
|
228
|
-
|
|
229
|
-
**Evidência**:
|
|
230
|
-
|
|
231
|
-
- `"type": "module"` sem dual package ⚠️
|
|
232
|
-
- Sem `exports["."].require` ⚠️
|
|
233
|
-
|
|
234
|
-
**Decisão**: Aceitável para v0.3 se CJS não é objetivo.
|
|
235
|
-
**⚠️ Nota**: Se CJS for necessário no futuro, considerar dual package ou tsup build.
|
|
236
|
-
|
|
237
|
-
#### Types exportados corretamente ✅
|
|
238
|
-
|
|
239
|
-
**Evidência**:
|
|
240
|
-
|
|
241
|
-
- Cada subpath tem `.d.ts` correspondente ✅
|
|
242
|
-
- `tsconfig.build.json` gera tipos ✅
|
|
243
|
-
- API surface report lista todos os exports ✅
|
|
244
|
-
|
|
245
|
-
#### Tree-shaking validado ⚠️
|
|
246
|
-
|
|
247
|
-
**Evidência no código**:
|
|
248
|
-
|
|
249
|
-
- Exporters removidos de `src/index.ts` ✅
|
|
250
|
-
- Subpath exports isolados ✅
|
|
251
|
-
|
|
252
|
-
**⚠️ Falta**: Validação prática com bundler (Vite/Webpack/esbuild)
|
|
253
|
-
|
|
254
|
-
**Sugestão de validação**:
|
|
255
|
-
|
|
256
|
-
```bash
|
|
257
|
-
# Criar projeto de teste
|
|
258
|
-
npm create vite@latest test-treeshake -- --template vanilla-ts
|
|
259
|
-
cd test-treeshake
|
|
260
|
-
npm install @clhaas/palette-kit
|
|
261
|
-
|
|
262
|
-
# app.ts - importar apenas runtime
|
|
263
|
-
import { createTheme } from "@clhaas/palette-kit";
|
|
264
|
-
const theme = createTheme({ ... });
|
|
265
|
-
|
|
266
|
-
# Build e verificar bundle size
|
|
267
|
-
npm run build
|
|
268
|
-
ls -lh dist/assets/*.js
|
|
269
|
-
```
|
|
270
|
-
|
|
271
|
-
**Expected**: Bundle não deve conter código de exporters/CLI.
|
|
272
|
-
|
|
273
|
-
---
|
|
274
|
-
|
|
275
|
-
### Validação ✅ / ⚠️
|
|
276
|
-
|
|
277
|
-
#### Imports funcionam em projeto real ⚠️
|
|
278
|
-
|
|
279
|
-
**Status**: Não validado no diff (requer teste manual)
|
|
280
|
-
|
|
281
|
-
**Sugestão**: Criar mini-projeto e testar:
|
|
282
|
-
|
|
283
|
-
```typescript
|
|
284
|
-
// test-imports.ts
|
|
285
|
-
import { createTheme } from "@clhaas/palette-kit";
|
|
286
|
-
import { serializeResolved } from "@clhaas/palette-kit/serialize";
|
|
287
|
-
import { exportThemeCss } from "@clhaas/palette-kit/export";
|
|
288
|
-
|
|
289
|
-
const theme = createTheme({
|
|
290
|
-
seeds: {
|
|
291
|
-
light: { neutral: "#111827", accent: "#3d63dd" },
|
|
292
|
-
dark: { neutral: "#111827", accent: "#3d63dd" },
|
|
293
|
-
},
|
|
294
|
-
});
|
|
295
|
-
|
|
296
|
-
const resolved = theme.resolve({ role: "bg.app", usage: "bg", surface: "app" });
|
|
297
|
-
const color = serializeResolved(resolved);
|
|
298
|
-
const css = exportThemeCss(theme, { "bg.app": { usage: "bg", surface: "app" } });
|
|
299
|
-
|
|
300
|
-
console.log({ color, css });
|
|
301
|
-
```
|
|
302
|
-
|
|
303
|
-
**Ação**: Testar com `tsx`, `ts-node`, `vite`, `webpack`.
|
|
304
|
-
|
|
305
|
-
#### Bundlers comuns funcionam ⚠️
|
|
306
|
-
|
|
307
|
-
**Status**: Não validado (requer teste prático)
|
|
308
|
-
|
|
309
|
-
**Bundlers para testar**:
|
|
310
|
-
|
|
311
|
-
1. ✅ Vite (expectativa: funciona com subpath imports)
|
|
312
|
-
2. ✅ Webpack (expectativa: funciona com `resolve.exports`)
|
|
313
|
-
3. ✅ esbuild (expectativa: funciona nativamente)
|
|
314
|
-
4. ⚠️ Rollup (pode precisar plugin para subpath)
|
|
315
|
-
|
|
316
|
-
**Ação**: Criar testes de integração em `tests/bundlers/`.
|
|
317
|
-
|
|
318
|
-
#### Types resolvem em editores ✅
|
|
319
|
-
|
|
320
|
-
**Evidência**:
|
|
321
|
-
|
|
322
|
-
- `.d.ts` files gerados para todos os subpaths ✅
|
|
323
|
-
- `package.json` exports incluem `"types"` ✅
|
|
324
|
-
- TypeScript ≥4.7 suporta subpath exports ✅
|
|
325
|
-
|
|
326
|
-
**Validação manual**:
|
|
327
|
-
|
|
328
|
-
1. Abrir VS Code
|
|
329
|
-
2. Importar `@clhaas/palette-kit/serialize`
|
|
330
|
-
3. Verificar autocomplete de `serializeResolved`
|
|
331
|
-
4. Hover deve mostrar JSDoc ✅
|
|
332
|
-
|
|
333
|
-
---
|
|
334
|
-
|
|
335
|
-
### Documentação ✅
|
|
336
|
-
|
|
337
|
-
#### README atualizado ✅
|
|
338
|
-
|
|
339
|
-
**Evidência**:
|
|
340
|
-
|
|
341
|
-
- ✅ Título atualizado: "runtime-first color engine"
|
|
342
|
-
- ✅ Seções reorganizadas: Runtime, Serializer, Exporters, CLI
|
|
343
|
-
- ✅ Exemplos de import para cada subpath
|
|
344
|
-
- ✅ Remoção de referências a v0.2
|
|
345
|
-
- ✅ Links para docs atualizados
|
|
346
|
-
|
|
347
|
-
**Antes/Depois**:
|
|
348
|
-
|
|
349
|
-
```diff
|
|
350
|
-
- A small **color engine** for generating OKLCH-based palettes
|
|
351
|
-
+ Palette Kit is a **runtime-first color engine** for generating OKLCH-based palettes from semantic queries, with optional build-time tooling (serializer, exporters, CLI, codegen).
|
|
352
|
-
```
|
|
353
|
-
|
|
354
|
-
**Qualidade**: Claro, conciso, bem estruturado ✅
|
|
355
|
-
|
|
356
|
-
#### Migration guide ⚠️
|
|
357
|
-
|
|
358
|
-
**Status**: Não incluído no diff
|
|
359
|
-
|
|
360
|
-
**Breaking changes v0.2 → v0.3**:
|
|
361
|
-
|
|
362
|
-
1. Exporters removidos de `@clhaas/palette-kit`
|
|
363
|
-
2. Agora em `@clhaas/palette-kit/export`
|
|
364
|
-
3. Serializer movido para `@clhaas/palette-kit/serialize`
|
|
365
|
-
4. CLI agora funcional (antes era placeholder)
|
|
366
|
-
|
|
367
|
-
**Implementado**: `docs/Migration.md` (v0.2 → v0.3)
|
|
368
|
-
|
|
369
|
-
#### Exemplos de import ✅
|
|
370
|
-
|
|
371
|
-
**Evidência** (`README.md`):
|
|
372
|
-
|
|
373
|
-
```typescript
|
|
374
|
-
// Runtime
|
|
375
|
-
import { createTheme } from "@clhaas/palette-kit";
|
|
376
|
-
|
|
377
|
-
// Serializer
|
|
378
|
-
import { serializeResolved } from "@clhaas/palette-kit/serialize";
|
|
379
|
-
|
|
380
|
-
// Exporters
|
|
381
|
-
import { exportThemeCss, exportThemeJson } from "@clhaas/palette-kit/export";
|
|
382
|
-
```
|
|
383
|
-
|
|
384
|
-
**Qualidade**: Exemplos completos e executáveis ✅
|
|
385
|
-
|
|
386
|
-
---
|
|
387
|
-
|
|
388
|
-
### API Surface Report ✅
|
|
389
|
-
|
|
390
|
-
**Evidência** (`docs/_api-surface.md`):
|
|
391
|
-
|
|
392
|
-
- ✅ Atualizado de v0.2 → v0.3
|
|
393
|
-
- ✅ Todos os subpath exports documentados
|
|
394
|
-
- ✅ CLI status atualizado (agora funcional)
|
|
395
|
-
- ✅ Serializer APIs listados
|
|
396
|
-
- ✅ Exporter APIs listados
|
|
397
|
-
- ✅ Output shape documentado
|
|
398
|
-
|
|
399
|
-
**Antes/Depois**:
|
|
400
|
-
|
|
401
|
-
```diff
|
|
402
|
-
- # API Surface Report (v0.2)
|
|
403
|
-
+ # API Surface Report (v0.3)
|
|
404
|
-
|
|
405
|
-
- - **Exports map**: only `"."` is exported.
|
|
406
|
-
+ - **Exports map**:
|
|
407
|
-
+ - `"."` → `dist/index.js`
|
|
408
|
-
+ - `"./serialize"` → `dist/serialize.js`
|
|
409
|
-
+ - `"./export"` → `dist/export.js`
|
|
410
|
-
+ - `"./cli"` → `dist/cli.js`
|
|
411
|
-
```
|
|
412
|
-
|
|
413
|
-
**Qualidade**: Completo e atualizado ✅
|
|
414
|
-
|
|
415
|
-
---
|
|
416
|
-
|
|
417
|
-
### CLI Documentation ✅
|
|
418
|
-
|
|
419
|
-
**Evidência** (`docs/CLI.md`):
|
|
420
|
-
|
|
421
|
-
- ✅ `palette-kit init` documentado
|
|
422
|
-
- ✅ `palette-kit build` documentado
|
|
423
|
-
- ✅ Flags listados
|
|
424
|
-
- ✅ Nota sobre TS loader
|
|
425
|
-
- ✅ Remoção de "not shipped" warnings
|
|
426
|
-
|
|
427
|
-
**Antes/Depois**:
|
|
428
|
-
|
|
429
|
-
```diff
|
|
430
|
-
- ## Status in v0.2
|
|
431
|
-
- The package declares a binary... However, the repository **does not contain** `src/cli.*`
|
|
432
|
-
+ ## Commands
|
|
433
|
-
+ ### `palette-kit init`
|
|
434
|
-
+ Creates a typed `palette.config.ts`.
|
|
435
|
-
```
|
|
436
|
-
|
|
437
|
-
**Qualidade**: Claro e completo ✅
|
|
438
|
-
|
|
439
|
-
---
|
|
440
|
-
|
|
441
|
-
### Exporters Documentation ✅
|
|
442
|
-
|
|
443
|
-
**Evidência** (`docs/Exporters.md`):
|
|
444
|
-
|
|
445
|
-
- ✅ Atualizado para APIs públicas
|
|
446
|
-
- ✅ Exemplos com subpath import
|
|
447
|
-
- ✅ Remoção de "internal usage" warnings
|
|
448
|
-
- ✅ Output shape documentado
|
|
449
|
-
|
|
450
|
-
**Antes/Depois**:
|
|
451
|
-
|
|
452
|
-
```diff
|
|
453
|
-
- ## Status in v0.2
|
|
454
|
-
- Exporter modules exist in `src/export/`, but **they are not part of the public package export**
|
|
455
|
-
+ Palette Kit v0.3 exposes build-time exporters as a public subpath:
|
|
456
|
-
+ - `@clhaas/palette-kit/export`
|
|
457
|
-
```
|
|
458
|
-
|
|
459
|
-
**Qualidade**: Profissional e público ✅
|
|
460
|
-
|
|
461
|
-
---
|
|
462
|
-
|
|
463
|
-
## ✅ VALIDAÇÕES NEGATIVAS
|
|
464
|
-
|
|
465
|
-
### O que NÃO deve acontecer ✅
|
|
466
|
-
|
|
467
|
-
- ✅ **Exports ambíguos**: Cada subpath tem responsabilidade clara
|
|
468
|
-
- ✅ **Breaking no packaging**: `package.json` bem estruturado
|
|
469
|
-
- ✅ **Tree-shaking quebrado**: Exporters isolados (validação prática pendente)
|
|
470
|
-
- ✅ **Types não resolvidos**: Todos os `.d.ts` presentes
|
|
471
|
-
|
|
472
|
-
---
|
|
473
|
-
|
|
474
|
-
## ⚠️ SUGESTÕES DE MELHORIA (Não bloqueantes)
|
|
475
|
-
|
|
476
|
-
- Migration guide (v0.2 → v0.3): agora em `docs/Migration.md`.
|
|
477
|
-
- README: incluir nota explícita sobre tree-shaking e status de CJS.
|
|
478
|
-
- Validação manual recomendada: testar imports/subpaths em Vite/Webpack/esbuild e verificar bundle output.
|
|
479
|
-
|
|
480
|
-
## 🎯 CHECKLIST FINAL
|
|
481
|
-
|
|
482
|
-
### Critérios Gerais
|
|
483
|
-
|
|
484
|
-
- ✅ Contratos e tipos (subpath exports tipados)
|
|
485
|
-
- ✅ Qualidade de código (tree-shaking habilitado)
|
|
486
|
-
- ✅ DX (documentação clara)
|
|
487
|
-
- ✅ Princípios v0.3 (runtime-first)
|
|
488
|
-
|
|
489
|
-
### Critérios Fase 9
|
|
490
|
-
|
|
491
|
-
#### Subpath exports
|
|
492
|
-
|
|
493
|
-
- ✅ `"."` → main export
|
|
494
|
-
- ✅ `"./serialize"` → serializer
|
|
495
|
-
- ✅ `"./export"` → exporters
|
|
496
|
-
- ✅ `"./cli"` → CLI
|
|
497
|
-
|
|
498
|
-
#### Compatibilidade
|
|
499
|
-
|
|
500
|
-
- ✅ ESM funcional
|
|
501
|
-
- ⚠️ CJS não suportado (aceitável se intencional)
|
|
502
|
-
- ✅ Types exportados corretamente
|
|
503
|
-
- ⚠️ Tree-shaking (código correto, validação prática pendente)
|
|
504
|
-
|
|
505
|
-
#### Validação
|
|
506
|
-
|
|
507
|
-
- ⚠️ Imports funcionam em projeto real (teste manual necessário)
|
|
508
|
-
- ⚠️ Bundlers comuns (validação prática recomendada)
|
|
509
|
-
- ✅ Types resolvem em editores
|
|
510
|
-
|
|
511
|
-
#### Documentação
|
|
512
|
-
|
|
513
|
-
- ✅ README atualizado
|
|
514
|
-
- ✅ Migration guide (v0.2 → v0.3): `docs/Migration.md`
|
|
515
|
-
- ✅ Exemplos de import
|
|
516
|
-
|
|
517
|
-
### O que NÃO deve acontecer (Checklist) ✅
|
|
518
|
-
|
|
519
|
-
- ✅ Sem exports ambíguos
|
|
520
|
-
- ✅ Sem breaking no packaging
|
|
521
|
-
- ✅ Tree-shaking não quebrado (código correto)
|
|
522
|
-
- ✅ Types resolvem corretamente
|
|
523
|
-
|
|
524
|
-
---
|
|
525
|
-
|
|
526
|
-
## 📊 VEREDICTO FINAL
|
|
527
|
-
|
|
528
|
-
**Status**: ✅ **APROVADO PARA MERGE**
|
|
529
|
-
|
|
530
|
-
**Implementação sólida** que:
|
|
531
|
-
|
|
532
|
-
- Atende todos os critérios obrigatórios da Fase 9
|
|
533
|
-
- Subpath exports bem estruturados
|
|
534
|
-
- Tree-shaking habilitado no código
|
|
535
|
-
- Documentação completa e atualizada
|
|
536
|
-
- API surface report sincronizado
|
|
537
|
-
|
|
538
|
-
**⚠️ Para validação manual antes do merge**:
|
|
539
|
-
|
|
540
|
-
1. Testar imports em projeto Vite/Webpack/esbuild
|
|
541
|
-
2. Verificar autocomplete em VS Code
|
|
542
|
-
3. Validar bundle size com runtime-only import
|
|
543
|
-
|
|
544
|
-
**Sugestões para PR futuro** (não bloqueantes):
|
|
545
|
-
|
|
546
|
-
1. Adicionar testes de integração com bundlers
|
|
547
|
-
2. Validação automatizada de bundle size
|
|
548
|
-
|
|
549
|
-
**Excelente trabalho na organização do package shape!** 🎉
|
|
550
|
-
|
|
551
|
-
---
|
|
552
|
-
|
|
553
|
-
## 📚 Referências
|
|
554
|
-
|
|
555
|
-
- Guia de revisão: `.github/skills/review-guide/references/review-guide-v0.3.md`
|
|
556
|
-
- Fase 9 checklist: Linhas 471-504 do guia
|
|
557
|
-
- Arquivos revisados:
|
|
558
|
-
- `README.md` (atualizado para v0.3)
|
|
559
|
-
- `docs/CLI.md` (comandos init/build documentados)
|
|
560
|
-
- `docs/Exporters.md` (APIs públicas)
|
|
561
|
-
- `docs/_api-surface.md` (v0.2 → v0.3)
|
|
562
|
-
- `package.json` (subpath exports adicionados)
|
|
563
|
-
- `src/index.ts` (exporters removidos)
|
|
564
|
-
- `src/planning/roadmap-v0.3.md` (tarefas marcadas)
|