@hiscovega/grisso 1.0.4 → 1.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +135 -70
- package/dist/grisso.css +1 -1
- package/lib/build.d.ts +2 -0
- package/lib/build.js +15 -2
- package/lib/cli.d.ts +2 -0
- package/lib/cli.js +197 -0
- package/lib/defaults.js +1 -0
- package/lib/generators.d.ts +0 -4
- package/lib/generators.js +13 -6
- package/lib/partials/borders.js +7 -0
- package/lib/partials/layout.js +13 -9
- package/lib/partials/sizing.js +33 -5
- package/lib/partials/typography.js +10 -3
- package/lib/purge.js +3 -3
- package/lib/resolve-config.d.ts +0 -1
- package/lib/resolve-config.js +5 -2
- package/lib/tokens.d.ts +14 -0
- package/lib/tokens.js +132 -0
- package/lib/types.d.ts +2 -0
- package/package.json +7 -17
- package/plugin.cjs +0 -5
- package/plugin.js +0 -43
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Grisso
|
|
2
2
|
|
|
3
|
-
> Librería de utility CSS de Griddo
|
|
3
|
+
> Librería de utility CSS de Griddo con valores basados en CSS custom properties (design tokens).
|
|
4
4
|
|
|
5
5
|
## Instalación
|
|
6
6
|
|
|
@@ -10,47 +10,92 @@ npm install @hiscovega/grisso
|
|
|
10
10
|
|
|
11
11
|
## Uso
|
|
12
12
|
|
|
13
|
-
###
|
|
13
|
+
### CLI
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
Genera CSS desde la terminal. Forma recomendada de usar Grisso, ideal para scripts de build y CI/CD.
|
|
16
16
|
|
|
17
|
-
```
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
17
|
+
```bash
|
|
18
|
+
# CSS completo a stdout
|
|
19
|
+
npx grisso build
|
|
20
|
+
|
|
21
|
+
# Escribir a archivo
|
|
22
|
+
npx grisso build --output dist/grisso.css
|
|
23
|
+
|
|
24
|
+
# Con config personalizada
|
|
25
|
+
npx grisso build --config grisso.config.mjs --output dist/grisso.css
|
|
26
|
+
|
|
27
|
+
# Tree-shaking (solo clases usadas)
|
|
28
|
+
npx grisso build --content "src/**/*.tsx" --content "src/**/*.css" --output dist/grisso.css
|
|
21
29
|
|
|
22
|
-
|
|
30
|
+
# Proteger clases del tree-shaking
|
|
31
|
+
npx grisso build --content "src/**/*.tsx" --safelist "^p-" --safelist "^m-" --output dist/grisso.css
|
|
23
32
|
|
|
24
|
-
|
|
25
|
-
|
|
33
|
+
# Sin minificar (útil para depuración)
|
|
34
|
+
npx grisso build --no-minify --output dist/grisso.css
|
|
35
|
+
|
|
36
|
+
# Pipear a otro comando
|
|
37
|
+
npx grisso build | pbcopy
|
|
26
38
|
```
|
|
27
39
|
|
|
28
|
-
|
|
40
|
+
**Flags de `grisso build`:**
|
|
29
41
|
|
|
30
|
-
|
|
42
|
+
| Flag | Descripción |
|
|
43
|
+
| -------------------- | ------------------------------------------- |
|
|
44
|
+
| `--config <ruta>` | Ruta a `grisso.config.mjs` |
|
|
45
|
+
| `--content <glob>` | Globs para tree-shaking (repetible) |
|
|
46
|
+
| `--safelist <regex>` | Patrones de clases a preservar (repetible) |
|
|
47
|
+
| `--output <ruta>` | Archivo de salida (sin `--output` → stdout) |
|
|
48
|
+
| `--no-minify` | Deshabilitar minificación |
|
|
49
|
+
| `--help, -h` | Ayuda del comando |
|
|
31
50
|
|
|
32
|
-
|
|
33
|
-
// postcss.config.js
|
|
34
|
-
import grisso from "@hiscovega/grisso/plugin";
|
|
51
|
+
Sin `--output`, el CSS va a stdout y los mensajes de estado a stderr, siguiendo la convención Unix.
|
|
35
52
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
53
|
+
#### `grisso tokens`
|
|
54
|
+
|
|
55
|
+
Genera un scaffold con todas las CSS custom properties (design tokens) que necesitas definir. Extrae dinámicamente los tokens de la config resuelta.
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
# Scaffold CSS a stdout
|
|
59
|
+
npx grisso tokens
|
|
60
|
+
|
|
61
|
+
# Escribir a archivo
|
|
62
|
+
npx grisso tokens --output tokens.css
|
|
63
|
+
|
|
64
|
+
# Con config personalizada (refleja extends/overrides)
|
|
65
|
+
npx grisso tokens --config grisso.config.mjs --output tokens.css
|
|
66
|
+
|
|
67
|
+
# Config resuelta como JSON
|
|
68
|
+
npx grisso tokens --format json
|
|
43
69
|
```
|
|
44
70
|
|
|
45
|
-
|
|
71
|
+
**Flags de `grisso tokens`:**
|
|
46
72
|
|
|
47
|
-
|
|
48
|
-
|
|
73
|
+
| Flag | Descripción |
|
|
74
|
+
| ----------------- | ------------------------------------------------- |
|
|
75
|
+
| `--config <ruta>` | Ruta a `grisso.config.mjs` |
|
|
76
|
+
| `--format <fmt>` | Formato de salida: `css` (default) o `json` |
|
|
77
|
+
| `--output <ruta>` | Archivo de salida (sin `--output` → stdout) |
|
|
78
|
+
| `--help, -h` | Ayuda del comando |
|
|
79
|
+
|
|
80
|
+
El scaffold CSS genera un `:root { }` con todas las properties vacías, agrupadas por sección, listo para rellenar:
|
|
81
|
+
|
|
82
|
+
```css
|
|
83
|
+
:root {
|
|
84
|
+
/* ─── Spacing ─── */
|
|
85
|
+
--spc-4xs: ;
|
|
86
|
+
--spc-3xs: ;
|
|
87
|
+
/* ... */
|
|
88
|
+
|
|
89
|
+
/* ─── Colors: marca ─── */
|
|
90
|
+
--brand-1: ;
|
|
91
|
+
--brand-2: ;
|
|
92
|
+
/* ... */
|
|
93
|
+
}
|
|
49
94
|
```
|
|
50
95
|
|
|
51
|
-
###
|
|
96
|
+
### API programática
|
|
52
97
|
|
|
53
|
-
Usa `buildCSS()` directamente desde Node.js. Genera, purga y optimiza CSS
|
|
98
|
+
Usa `buildCSS()` directamente desde Node.js. Genera, purga y optimiza CSS — ideal para scripts de build, herramientas custom o integración con cualquier bundler.
|
|
54
99
|
|
|
55
100
|
```js
|
|
56
101
|
import { buildCSS } from "@hiscovega/grisso/build";
|
|
@@ -61,11 +106,12 @@ const css = await buildCSS();
|
|
|
61
106
|
|
|
62
107
|
**Opciones de `buildCSS()`:**
|
|
63
108
|
|
|
64
|
-
| Opción
|
|
65
|
-
|
|
66
|
-
| `config`
|
|
67
|
-
| `content`
|
|
68
|
-
| `
|
|
109
|
+
| Opción | Tipo | Default | Descripción |
|
|
110
|
+
| ---------- | ---------------------- | ------- | ---------------------------------------------------------------- |
|
|
111
|
+
| `config` | `string` | — | Ruta a `grisso.config.mjs` personalizado |
|
|
112
|
+
| `content` | `string[]` | — | Globs de archivos a escanear para tree-shaking |
|
|
113
|
+
| `safelist` | `(string \| RegExp)[]` | — | Patrones de clases a preservar (se mergea con `config.safelist`) |
|
|
114
|
+
| `minify` | `boolean` | `true` | Minificar el CSS de salida |
|
|
69
115
|
|
|
70
116
|
Sin `content`, se incluye todo el CSS. Con `content`, se eliminan las clases no usadas via PurgeCSS.
|
|
71
117
|
|
|
@@ -131,6 +177,30 @@ export default {
|
|
|
131
177
|
};
|
|
132
178
|
```
|
|
133
179
|
|
|
180
|
+
#### `extractTokens()` — scaffold de tokens
|
|
181
|
+
|
|
182
|
+
Usa `extractTokens()` para generar programáticamente el scaffold de custom properties (o JSON) desde la config resuelta.
|
|
183
|
+
|
|
184
|
+
```js
|
|
185
|
+
import { extractTokens } from "@hiscovega/grisso/tokens";
|
|
186
|
+
|
|
187
|
+
// Scaffold CSS con todas las custom properties
|
|
188
|
+
const css = await extractTokens();
|
|
189
|
+
|
|
190
|
+
// JSON con los token maps resueltos
|
|
191
|
+
const json = await extractTokens({
|
|
192
|
+
format: "json",
|
|
193
|
+
config: "./grisso.config.mjs",
|
|
194
|
+
});
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
**Opciones de `extractTokens()`:**
|
|
198
|
+
|
|
199
|
+
| Opción | Tipo | Default | Descripción |
|
|
200
|
+
| -------- | ---------------- | ------- | ----------------------------------------- |
|
|
201
|
+
| `config` | `string` | — | Ruta a `grisso.config.mjs` personalizado |
|
|
202
|
+
| `format` | `"css" \| "json"` | `"css"` | Formato de salida |
|
|
203
|
+
|
|
134
204
|
**Servidor de desarrollo** — generar CSS on-the-fly:
|
|
135
205
|
|
|
136
206
|
```js
|
|
@@ -148,7 +218,7 @@ app.get("/grisso.css", async (req, res) => {
|
|
|
148
218
|
|
|
149
219
|
## Configuración personalizada
|
|
150
220
|
|
|
151
|
-
Crea un `grisso.config.mjs` en la raíz de tu proyecto para extender o reemplazar los tokens por defecto.
|
|
221
|
+
Crea un `grisso.config.mjs` en la raíz de tu proyecto para extender o reemplazar los tokens por defecto.
|
|
152
222
|
|
|
153
223
|
```js
|
|
154
224
|
// grisso.config.mjs
|
|
@@ -160,7 +230,7 @@ export default {
|
|
|
160
230
|
lg: "24px",
|
|
161
231
|
},
|
|
162
232
|
|
|
163
|
-
// `extend` MERGEA con los defaults
|
|
233
|
+
// `extend` MERGEA con los defaults (arrays se concatenan)
|
|
164
234
|
extend: {
|
|
165
235
|
foregroundColors: {
|
|
166
236
|
5: "var(--text-5)",
|
|
@@ -168,26 +238,28 @@ export default {
|
|
|
168
238
|
shadows: {
|
|
169
239
|
"2xl": "var(--box-shadow-2xl)",
|
|
170
240
|
},
|
|
241
|
+
// Se concatena con el default []
|
|
242
|
+
safelist: [/^p-/],
|
|
171
243
|
},
|
|
172
244
|
};
|
|
173
245
|
```
|
|
174
246
|
|
|
175
|
-
|
|
247
|
+
La `safelist` controla qué clases se protegen del tree-shaking. Por defecto está vacía. En top-level reemplaza, en `extend` se concatena. Acepta `RegExp` y `string`.
|
|
176
248
|
|
|
177
|
-
|
|
178
|
-
grisso({
|
|
179
|
-
content: ["./src/**/*.{js,ts,jsx,tsx,css}"],
|
|
180
|
-
config: "./grisso.config.mjs",
|
|
181
|
-
});
|
|
182
|
-
```
|
|
183
|
-
|
|
184
|
-
Si no se pasa `config`, el plugin busca automáticamente `grisso.config.mjs` en el directorio de trabajo. Si no existe, usa los defaults.
|
|
249
|
+
Si no se pasa `config` a `buildCSS()`, busca automáticamente `grisso.config.mjs` en el directorio de trabajo. Si no existe, usa los defaults.
|
|
185
250
|
|
|
186
251
|
Los defaults se pueden consultar importando `@hiscovega/grisso/config`.
|
|
187
252
|
|
|
188
253
|
## Design Tokens (CSS custom properties)
|
|
189
254
|
|
|
190
|
-
Grisso usa CSS custom properties para todos los valores.
|
|
255
|
+
Grisso usa CSS custom properties para todos los valores. Genera un scaffold con todas las properties que necesitas definir:
|
|
256
|
+
|
|
257
|
+
```bash
|
|
258
|
+
# Genera scaffold dinámico desde tu config resuelta
|
|
259
|
+
npx grisso tokens --output src/tokens.css
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
Alternativamente, copia el ejemplo estático:
|
|
191
263
|
|
|
192
264
|
```bash
|
|
193
265
|
cp node_modules/@hiscovega/grisso/tokens-example.css src/tokens.css
|
|
@@ -208,7 +280,7 @@ Importa los tokens antes que Grisso en tu CSS global:
|
|
|
208
280
|
|
|
209
281
|
```css
|
|
210
282
|
@import "./tokens.css";
|
|
211
|
-
@import "@hiscovega/grisso";
|
|
283
|
+
@import "@hiscovega/grisso";
|
|
212
284
|
```
|
|
213
285
|
|
|
214
286
|
## Clases disponibles
|
|
@@ -219,7 +291,7 @@ Importa los tokens antes que Grisso en tu CSS global:
|
|
|
219
291
|
{breakpoint}-{propiedad}-{escala}
|
|
220
292
|
```
|
|
221
293
|
|
|
222
|
-
Ejemplos: `flex`, `tablet-flex`, `p-md`, `desktop-mt-lg`, `text-center`
|
|
294
|
+
Ejemplos: `flex`, `tablet-flex`, `p-md`, `desktop-mt-lg`, `text-center`, `w-1/2`, `z-10`, `tracking-tight`
|
|
223
295
|
|
|
224
296
|
### Breakpoints (mobile-first)
|
|
225
297
|
|
|
@@ -232,22 +304,22 @@ Ejemplos: `flex`, `tablet-flex`, `p-md`, `desktop-mt-lg`, `text-center`
|
|
|
232
304
|
|
|
233
305
|
### Categorías
|
|
234
306
|
|
|
235
|
-
| Categoría | Ejemplos
|
|
236
|
-
| -------------- |
|
|
237
|
-
| **Layout** | `flex`, `block`, `hidden`, `relative`, `absolute`, `overflow-hidden` |
|
|
238
|
-
| **Flex/Grid** | `flex-col`, `flex-wrap`, `items-center`, `justify-between`, `gap-md`
|
|
239
|
-
| **Spacing** | `p-sm`, `pt-lg`, `mx-auto`, `mt-xs`, `mb-md`
|
|
240
|
-
| **Sizing** | `w-full`, `h-full`, `w-1`, `max-w-full`
|
|
241
|
-
| **Tipografía** | `text-1`, `text-center`, `font-bold`, `leading-tight`
|
|
242
|
-
| **Fondos** | `bg-1`, `bg-ui`, `bg-cover`, `bg-center`
|
|
243
|
-
| **Bordes** | `border-sm`, `divide-x`, `outline-none`
|
|
244
|
-
| **Efectos** | `shadow-md`, `opacity-3`, `overlay-2`
|
|
245
|
-
| **Iconos** | `icon-1`, `icon-3`
|
|
307
|
+
| Categoría | Ejemplos |
|
|
308
|
+
| -------------- | ----------------------------------------------------------------------------------------------------- |
|
|
309
|
+
| **Layout** | `flex`, `block`, `hidden`, `relative`, `absolute`, `overflow-hidden`, `inset-0`, `inset-x-sm`, `z-10` |
|
|
310
|
+
| **Flex/Grid** | `flex-col`, `flex-wrap`, `items-center`, `justify-between`, `gap-md` |
|
|
311
|
+
| **Spacing** | `p-sm`, `pt-lg`, `mx-auto`, `mt-xs`, `mb-md` |
|
|
312
|
+
| **Sizing** | `w-full`, `h-full`, `w-1/2`, `w-2/3`, `h-1/4`, `max-w-full` |
|
|
313
|
+
| **Tipografía** | `text-1`, `text-center`, `font-bold`, `font-light`, `leading-snug`, `tracking-tight` |
|
|
314
|
+
| **Fondos** | `bg-1`, `bg-ui`, `bg-cover`, `bg-center` |
|
|
315
|
+
| **Bordes** | `border-sm`, `border-1`, `border-t-sm`, `divide-x`, `outline-none` |
|
|
316
|
+
| **Efectos** | `shadow-md`, `opacity-3`, `overlay-2` |
|
|
317
|
+
| **Iconos** | `icon-1`, `icon-3` |
|
|
246
318
|
|
|
247
319
|
## Build
|
|
248
320
|
|
|
249
321
|
```bash
|
|
250
|
-
npm run build # Compila TS + genera dist/grisso.css (~
|
|
322
|
+
npm run build # Compila TS + genera dist/grisso.css (~154 KB)
|
|
251
323
|
npm run typecheck # Type-check sin emitir (tsc --noEmit)
|
|
252
324
|
npm run lint # Lint con Biome
|
|
253
325
|
npm test # Tests con Vitest
|
|
@@ -255,27 +327,20 @@ npm run test:watch # Tests en modo watch
|
|
|
255
327
|
npm run playground # Build + tree-shake + abre playground/index.html
|
|
256
328
|
```
|
|
257
329
|
|
|
258
|
-
###
|
|
330
|
+
### CLI
|
|
259
331
|
|
|
260
|
-
El
|
|
261
|
-
|
|
262
|
-
```bash
|
|
263
|
-
node scripts/build.js # Full build → dist/grisso.css
|
|
264
|
-
node scripts/build.js --config grisso.config.mjs # Con config personalizada
|
|
265
|
-
node scripts/build.js --content "src/**/*.html" --output out.css # Tree-shaken
|
|
266
|
-
node scripts/build.js --config conf.mjs --content "src/**" --output x # Todo junto
|
|
267
|
-
```
|
|
332
|
+
El CLI se usa internamente y está disponible para consumidores via `npx grisso build`. Ver [CLI](#cli) para detalles completos.
|
|
268
333
|
|
|
269
|
-
Con `--content`, se usa PurgeCSS para eliminar clases no usadas (
|
|
334
|
+
Con `--content`, se usa PurgeCSS para eliminar clases no usadas (~154 KB → ~4 KB en el playground).
|
|
270
335
|
|
|
271
336
|
## Desarrollo: Añadir nuevas utilities
|
|
272
337
|
|
|
273
|
-
1. Edita el partial correspondiente en `src/
|
|
338
|
+
1. Edita el partial correspondiente en `src/partials/{category}.ts`
|
|
274
339
|
2. Usa `simpleClass`, `complexClass` o `customClass` con los tokens del config
|
|
275
340
|
3. Ejecuta `npm run build`
|
|
276
341
|
|
|
277
342
|
```ts
|
|
278
|
-
// src/
|
|
343
|
+
// src/partials/layout.ts
|
|
279
344
|
import { simpleClass, complexClass } from "../generators.js";
|
|
280
345
|
|
|
281
346
|
// Clase simple — genera .flex + variantes responsive
|