@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.
Files changed (312) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/README.md +80 -87
  3. package/dist/contrast/contrast.d.ts +16 -0
  4. package/dist/contrast/contrast.js +102 -0
  5. package/dist/core/intent-registry.d.ts +11 -0
  6. package/dist/core/intent-registry.js +70 -0
  7. package/dist/core/oklch.d.ts +16 -0
  8. package/dist/core/oklch.js +56 -0
  9. package/dist/create-palette-kit.d.ts +9 -0
  10. package/dist/create-palette-kit.js +67 -0
  11. package/dist/engine/context/context.d.ts +13 -0
  12. package/dist/engine/context/context.js +37 -0
  13. package/dist/engine/level/curves.d.ts +17 -0
  14. package/dist/engine/level/curves.js +49 -0
  15. package/dist/engine/level/level.d.ts +4 -0
  16. package/dist/engine/level/level.js +13 -0
  17. package/dist/engine/relation/relation.d.ts +105 -0
  18. package/dist/engine/relation/relation.js +137 -0
  19. package/dist/engine/resolve/resolve.d.ts +36 -0
  20. package/dist/engine/resolve/resolve.js +116 -0
  21. package/dist/engine/state/state.d.ts +46 -0
  22. package/dist/engine/state/state.js +68 -0
  23. package/dist/engine/usage/fill.d.ts +9 -0
  24. package/dist/engine/usage/fill.js +9 -0
  25. package/dist/engine/usage/lines.d.ts +9 -0
  26. package/dist/engine/usage/lines.js +9 -0
  27. package/dist/engine/usage/overlays.d.ts +9 -0
  28. package/dist/engine/usage/overlays.js +9 -0
  29. package/dist/engine/usage/strategy.d.ts +56 -0
  30. package/dist/engine/usage/strategy.js +30 -0
  31. package/dist/engine/usage/visualVocabulary.d.ts +9 -0
  32. package/dist/engine/usage/visualVocabulary.js +9 -0
  33. package/dist/export/serialize.d.ts +14 -0
  34. package/dist/export/serialize.js +89 -0
  35. package/dist/export/types.d.ts +37 -0
  36. package/dist/export/types.js +31 -0
  37. package/dist/index.d.ts +3 -3
  38. package/dist/index.js +2 -2
  39. package/dist/operators/convert.d.ts +32 -0
  40. package/dist/operators/convert.js +80 -0
  41. package/dist/presets/presets.d.ts +95 -0
  42. package/dist/presets/presets.js +308 -0
  43. package/dist/types/index.d.ts +111 -187
  44. package/dist/utils/errors/errors.d.ts +17 -0
  45. package/dist/utils/errors/errors.js +22 -0
  46. package/docs/API.md +167 -0
  47. package/docs/Alpha.md +14 -0
  48. package/docs/Architecture.md +56 -0
  49. package/docs/CLI.md +22 -0
  50. package/docs/Concepts.md +73 -0
  51. package/docs/Config.md +144 -0
  52. package/docs/Diagnostics.md +22 -0
  53. package/docs/Exporters.md +33 -0
  54. package/docs/FAQ.md +59 -0
  55. package/docs/Migration.md +61 -0
  56. package/docs/Overlays.md +33 -0
  57. package/docs/README.md +60 -0
  58. package/docs/Text.md +41 -0
  59. package/docs/Tokens.md +42 -0
  60. package/docs/Usage-JSON.md +39 -0
  61. package/docs/Usage-ReactNative.md +63 -0
  62. package/docs/Usage-Web.md +66 -0
  63. package/docs/Validation.md +97 -0
  64. package/docs/Why.md +37 -0
  65. package/docs/_api-surface.md +53 -0
  66. package/docs/snippets/serialize-oklch.md +9 -0
  67. package/docs/spec.md +98 -0
  68. package/package.json +74 -59
  69. package/.codex/skills/color-pipeline-implementer/SKILL.md +0 -23
  70. package/.codex/skills/commit-message-crafter/SKILL.md +0 -63
  71. package/.codex/skills/commit-message-crafter/references/benchmarks.md +0 -20
  72. package/.codex/skills/contrast-solver-helper/SKILL.md +0 -20
  73. package/.codex/skills/exporters-builder/SKILL.md +0 -20
  74. package/.codex/skills/markdownlint-writer/SKILL.md +0 -32
  75. package/.codex/skills/phase-implementation-runbook/SKILL.md +0 -92
  76. package/.codex/skills/type-contract-auditor/SKILL.md +0 -21
  77. package/.github/skills/review-guide/SKILL.md +0 -23
  78. package/.github/skills/review-guide/references/review-guide-v0.3.md +0 -629
  79. package/.markdownlint.json +0 -4
  80. package/AGENTS.md +0 -16
  81. package/biome.json +0 -43
  82. package/dist/cli/args.d.ts +0 -12
  83. package/dist/cli/args.js +0 -56
  84. package/dist/cli/args.test.d.ts +0 -1
  85. package/dist/cli/args.test.js +0 -22
  86. package/dist/cli/codegen/__snapshots__/tokens.test.js.snap +0 -87
  87. package/dist/cli/codegen/tokens.d.ts +0 -12
  88. package/dist/cli/codegen/tokens.js +0 -139
  89. package/dist/cli/codegen/tokens.test.d.ts +0 -1
  90. package/dist/cli/codegen/tokens.test.js +0 -51
  91. package/dist/cli/config.d.ts +0 -40
  92. package/dist/cli/config.js +0 -34
  93. package/dist/cli/validate.d.ts +0 -2
  94. package/dist/cli/validate.js +0 -33
  95. package/dist/cli/validate.test.d.ts +0 -1
  96. package/dist/cli/validate.test.js +0 -40
  97. package/dist/cli.d.ts +0 -2
  98. package/dist/cli.js +0 -148
  99. package/dist/contrast/apca.d.ts +0 -2
  100. package/dist/contrast/apca.js +0 -15
  101. package/dist/contrast/apca.test.d.ts +0 -1
  102. package/dist/contrast/apca.test.js +0 -16
  103. package/dist/contrast/index.d.ts +0 -4
  104. package/dist/contrast/index.js +0 -4
  105. package/dist/contrast/scoring.d.ts +0 -4
  106. package/dist/contrast/scoring.js +0 -31
  107. package/dist/contrast/scoring.test.d.ts +0 -1
  108. package/dist/contrast/scoring.test.js +0 -148
  109. package/dist/contrast/solver.d.ts +0 -13
  110. package/dist/contrast/solver.js +0 -170
  111. package/dist/contrast/solver.test.d.ts +0 -1
  112. package/dist/contrast/solver.test.js +0 -75
  113. package/dist/contrast/types.d.ts +0 -17
  114. package/dist/contrast/types.js +0 -1
  115. package/dist/contrast/utils.d.ts +0 -4
  116. package/dist/contrast/utils.js +0 -18
  117. package/dist/contrast/wcag2.d.ts +0 -3
  118. package/dist/contrast/wcag2.js +0 -19
  119. package/dist/contrast/wcag2.test.d.ts +0 -1
  120. package/dist/contrast/wcag2.test.js +0 -17
  121. package/dist/core/createTheme.d.ts +0 -35
  122. package/dist/core/createTheme.js +0 -24
  123. package/dist/core/dx-helpers.test.d.ts +0 -1
  124. package/dist/core/dx-helpers.test.js +0 -61
  125. package/dist/core/index.d.ts +0 -2
  126. package/dist/core/index.js +0 -2
  127. package/dist/core/onSolid.test.d.ts +0 -1
  128. package/dist/core/onSolid.test.js +0 -118
  129. package/dist/core/qa.v1.test.d.ts +0 -1
  130. package/dist/core/qa.v1.test.js +0 -112
  131. package/dist/core/resolve.d.ts +0 -3
  132. package/dist/core/resolve.js +0 -8
  133. package/dist/core/resolve.test.d.ts +0 -1
  134. package/dist/core/resolve.test.js +0 -89
  135. package/dist/core/resolveMany.d.ts +0 -8
  136. package/dist/core/resolveMany.js +0 -17
  137. package/dist/core/tokenRegistry.d.ts +0 -23
  138. package/dist/core/tokenRegistry.js +0 -83
  139. package/dist/core/tokenRegistry.test.d.ts +0 -1
  140. package/dist/core/tokenRegistry.test.js +0 -133
  141. package/dist/engine/applyOperators.d.ts +0 -3
  142. package/dist/engine/applyOperators.js +0 -23
  143. package/dist/engine/context.d.ts +0 -4
  144. package/dist/engine/context.js +0 -1
  145. package/dist/engine/gamut.d.ts +0 -13
  146. package/dist/engine/gamut.js +0 -101
  147. package/dist/engine/gamut.test.d.ts +0 -1
  148. package/dist/engine/gamut.test.js +0 -23
  149. package/dist/engine/generateScale.d.ts +0 -15
  150. package/dist/engine/generateScale.js +0 -29
  151. package/dist/engine/generateScale.test.d.ts +0 -1
  152. package/dist/engine/generateScale.test.js +0 -32
  153. package/dist/engine/index.d.ts +0 -8
  154. package/dist/engine/index.js +0 -4
  155. package/dist/engine/normalize.d.ts +0 -43
  156. package/dist/engine/normalize.js +0 -403
  157. package/dist/engine/normalize.test.d.ts +0 -1
  158. package/dist/engine/normalize.test.js +0 -136
  159. package/dist/engine/onSolid.d.ts +0 -3
  160. package/dist/engine/onSolid.js +0 -110
  161. package/dist/engine/resolveBaseColor.d.ts +0 -25
  162. package/dist/engine/resolveBaseColor.js +0 -127
  163. package/dist/engine/resolveBaseColor.test.d.ts +0 -1
  164. package/dist/engine/resolveBaseColor.test.js +0 -97
  165. package/dist/export/__snapshots__/exportTheme.test.js.snap +0 -74
  166. package/dist/export/exportTheme.d.ts +0 -47
  167. package/dist/export/exportTheme.js +0 -170
  168. package/dist/export/exportTheme.test.d.ts +0 -1
  169. package/dist/export/exportTheme.test.js +0 -118
  170. package/dist/export/index.d.ts +0 -1
  171. package/dist/export/index.js +0 -1
  172. package/dist/export/serializeColor.d.ts +0 -1
  173. package/dist/export/serializeColor.js +0 -1
  174. package/dist/export/serializeColor.test.d.ts +0 -1
  175. package/dist/export/serializeColor.test.js +0 -54
  176. package/dist/export.d.ts +0 -1
  177. package/dist/export.js +0 -1
  178. package/dist/operators/emphasis.d.ts +0 -3
  179. package/dist/operators/emphasis.js +0 -113
  180. package/dist/operators/emphasis.test.d.ts +0 -1
  181. package/dist/operators/emphasis.test.js +0 -69
  182. package/dist/operators/index.d.ts +0 -3
  183. package/dist/operators/index.js +0 -2
  184. package/dist/operators/state.d.ts +0 -3
  185. package/dist/operators/state.js +0 -102
  186. package/dist/operators/state.test.d.ts +0 -1
  187. package/dist/operators/state.test.js +0 -48
  188. package/dist/operators/types.d.ts +0 -13
  189. package/dist/operators/types.js +0 -1
  190. package/dist/operators/utils.d.ts +0 -16
  191. package/dist/operators/utils.js +0 -23
  192. package/dist/presets/curves.d.ts +0 -28
  193. package/dist/presets/curves.js +0 -145
  194. package/dist/presets/index.d.ts +0 -2
  195. package/dist/presets/index.js +0 -1
  196. package/dist/presets/tokens/index.d.ts +0 -3
  197. package/dist/presets/tokens/index.js +0 -3
  198. package/dist/presets/tokens/minimal-ui.d.ts +0 -6
  199. package/dist/presets/tokens/minimal-ui.js +0 -53
  200. package/dist/presets/tokens/modern-ui.d.ts +0 -5
  201. package/dist/presets/tokens/modern-ui.js +0 -83
  202. package/dist/presets/tokens/presets.test.d.ts +0 -1
  203. package/dist/presets/tokens/presets.test.js +0 -31
  204. package/dist/presets/tokens/radixLike-ui.d.ts +0 -6
  205. package/dist/presets/tokens/radixLike-ui.js +0 -77
  206. package/dist/serialize/index.d.ts +0 -1
  207. package/dist/serialize/index.js +0 -1
  208. package/dist/serialize/normalizeOutput.d.ts +0 -6
  209. package/dist/serialize/normalizeOutput.js +0 -45
  210. package/dist/serialize/serializeColor.d.ts +0 -21
  211. package/dist/serialize/serializeColor.js +0 -178
  212. package/dist/serialize/serializeResolved.test.d.ts +0 -1
  213. package/dist/serialize/serializeResolved.test.js +0 -45
  214. package/dist/serialize.d.ts +0 -1
  215. package/dist/serialize.js +0 -1
  216. package/dist/utils/clamp.d.ts +0 -1
  217. package/dist/utils/clamp.js +0 -1
  218. package/dist/utils/index.d.ts +0 -1
  219. package/dist/utils/index.js +0 -1
  220. package/dist/utils/lerp.d.ts +0 -1
  221. package/dist/utils/lerp.js +0 -1
  222. package/dist/utils/parseColor.d.ts +0 -6
  223. package/dist/utils/parseColor.js +0 -67
  224. package/dist/utils/parseColor.test.d.ts +0 -1
  225. package/dist/utils/parseColor.test.js +0 -51
  226. package/dist/utils/smoothstep.d.ts +0 -1
  227. package/dist/utils/smoothstep.js +0 -5
  228. package/planning/phase-10-review.md +0 -550
  229. package/planning/phase-7-review.md +0 -411
  230. package/planning/phase-8-review.md +0 -669
  231. package/planning/phase-9-review.md +0 -564
  232. package/planning/roadmap-v0.3.md +0 -284
  233. package/planning/spec-serializer-v0.3.md +0 -324
  234. package/planning/spec-v0.3.md +0 -305
  235. package/src/cli/args.test.ts +0 -28
  236. package/src/cli/args.ts +0 -66
  237. package/src/cli/codegen/__snapshots__/tokens.test.ts.snap +0 -87
  238. package/src/cli/codegen/tokens.test.ts +0 -61
  239. package/src/cli/codegen/tokens.ts +0 -191
  240. package/src/cli/config.ts +0 -71
  241. package/src/cli/validate.test.ts +0 -49
  242. package/src/cli/validate.ts +0 -38
  243. package/src/cli.ts +0 -183
  244. package/src/contrast/apca.test.ts +0 -20
  245. package/src/contrast/apca.ts +0 -26
  246. package/src/contrast/index.ts +0 -4
  247. package/src/contrast/scoring.test.ts +0 -188
  248. package/src/contrast/scoring.ts +0 -48
  249. package/src/contrast/solver.test.ts +0 -147
  250. package/src/contrast/solver.ts +0 -235
  251. package/src/contrast/types.ts +0 -20
  252. package/src/contrast/utils.ts +0 -28
  253. package/src/contrast/wcag2.test.ts +0 -21
  254. package/src/contrast/wcag2.ts +0 -24
  255. package/src/core/createTheme.ts +0 -78
  256. package/src/core/dx-helpers.test.ts +0 -82
  257. package/src/core/index.ts +0 -7
  258. package/src/core/onSolid.test.ts +0 -146
  259. package/src/core/qa.v1.test.ts +0 -149
  260. package/src/core/resolve.test.ts +0 -99
  261. package/src/core/resolve.ts +0 -11
  262. package/src/core/resolveMany.ts +0 -22
  263. package/src/core/tokenRegistry.test.ts +0 -153
  264. package/src/core/tokenRegistry.ts +0 -114
  265. package/src/engine/applyOperators.ts +0 -32
  266. package/src/engine/context.ts +0 -8
  267. package/src/engine/gamut.test.ts +0 -30
  268. package/src/engine/gamut.ts +0 -144
  269. package/src/engine/generateScale.test.ts +0 -46
  270. package/src/engine/generateScale.ts +0 -48
  271. package/src/engine/index.ts +0 -8
  272. package/src/engine/normalize.test.ts +0 -222
  273. package/src/engine/normalize.ts +0 -550
  274. package/src/engine/onSolid.ts +0 -178
  275. package/src/engine/resolveBaseColor.test.ts +0 -117
  276. package/src/engine/resolveBaseColor.ts +0 -203
  277. package/src/export/__snapshots__/exportTheme.test.ts.snap +0 -74
  278. package/src/export/exportTheme.test.ts +0 -144
  279. package/src/export/exportTheme.ts +0 -251
  280. package/src/export/index.ts +0 -1
  281. package/src/export/serializeColor.test.ts +0 -73
  282. package/src/export/serializeColor.ts +0 -1
  283. package/src/export.ts +0 -1
  284. package/src/index.ts +0 -3
  285. package/src/operators/emphasis.test.ts +0 -85
  286. package/src/operators/emphasis.ts +0 -132
  287. package/src/operators/index.ts +0 -3
  288. package/src/operators/state.test.ts +0 -66
  289. package/src/operators/state.ts +0 -122
  290. package/src/operators/types.ts +0 -14
  291. package/src/operators/utils.ts +0 -44
  292. package/src/presets/curves.ts +0 -168
  293. package/src/presets/index.ts +0 -2
  294. package/src/presets/tokens/index.ts +0 -3
  295. package/src/presets/tokens/minimal-ui.ts +0 -55
  296. package/src/presets/tokens/modern-ui.ts +0 -85
  297. package/src/presets/tokens/presets.test.ts +0 -46
  298. package/src/presets/tokens/radixLike-ui.ts +0 -79
  299. package/src/serialize/index.ts +0 -1
  300. package/src/serialize/normalizeOutput.ts +0 -63
  301. package/src/serialize/serializeColor.ts +0 -260
  302. package/src/serialize/serializeResolved.test.ts +0 -57
  303. package/src/serialize.ts +0 -1
  304. package/src/types/index.ts +0 -207
  305. package/src/utils/clamp.ts +0 -2
  306. package/src/utils/index.ts +0 -1
  307. package/src/utils/lerp.ts +0 -1
  308. package/src/utils/parseColor.test.ts +0 -66
  309. package/src/utils/parseColor.ts +0 -87
  310. package/src/utils/smoothstep.ts +0 -6
  311. package/tsconfig.build.json +0 -11
  312. 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)