@eduardoalvarez/arrecife 0.2.0 → 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/dist/og/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { RUTA_ASSETS, caras, poses, aletas } from '../chunk-E3OMP2DL.js';
2
- import { fonts, dark, light, naming, gradient, tagline, typeScale } from '../chunk-DHF63QNM.js';
2
+ import { fonts, dark, light, naming, gradient, tagline, typeScale } from '../chunk-I7GYZD2A.js';
3
3
 
4
4
  // src/og/plantillas.ts
5
5
  var OG = {
@@ -1,4 +1,4 @@
1
- import { sintaxis } from '../chunk-DHF63QNM.js';
1
+ import { sintaxis } from '../chunk-I7GYZD2A.js';
2
2
 
3
3
  // src/shiki/tema.ts
4
4
  var arrecife = {
@@ -158,11 +158,11 @@ var control = {
158
158
  icon: 42
159
159
  };
160
160
  var spacing = {
161
- xs: 8,
162
- sm: 12,
163
- md: 16,
164
- lg: 26,
165
- xl: 40,
161
+ stepXs: 8,
162
+ stepSm: 12,
163
+ stepMd: 16,
164
+ stepLg: 26,
165
+ stepXl: 40,
166
166
  section: 96
167
167
  };
168
168
  var size = {
@@ -289,12 +289,34 @@ declare const control: {
289
289
  /** Botón de icono: cuadrado, sin texto. */
290
290
  readonly icon: 42;
291
291
  };
292
+ /**
293
+ * El ritmo de página. Los cinco escalones llevan `step` en el nombre, y no es
294
+ * decoración: es la corrección de un bug que no dio la cara en ningún sitio.
295
+ *
296
+ * En Tailwind v4, `--spacing-*` no alimenta solo `p-*`, `m-*` y `gap-*`:
297
+ * también resuelve `w-*`, `h-*`, `max-w-*`, `min-w-*`, `basis-*` y `size-*`, y
298
+ * ahí GANA a la escala `--container-*`. Los escalones se llamaban `xs, sm, md,
299
+ * lg, xl`, que son exactamente los nombres de esa escala, así que cualquier
300
+ * proyecto que importara `theme.css` se quedaba con `max-w-sm` valiendo 12px en
301
+ * vez de 384px. Nada avisaba: ni el build, ni los tipos, ni Storybook, ni la
302
+ * suite —la librería no usa esas utilidades por dentro—. Se descubrió en
303
+ * producción, con el párrafo de un hero a una palabra por línea.
304
+ *
305
+ * Redeclarar `--container-sm` NO lo arregla: `--spacing-*` gana la resolución.
306
+ * La única salida es que la librería no use esos nombres.
307
+ *
308
+ * El prefijo sigue el patrón que ya tenía `control`: un grupo con nombre propio
309
+ * dentro del espacio `--spacing-*`. `scripts/check-tokens-namespace.mjs` impide
310
+ * la recaída.
311
+ *
312
+ * `section` no lleva prefijo porque no choca con nada de Tailwind.
313
+ */
292
314
  declare const spacing: {
293
- readonly xs: 8;
294
- readonly sm: 12;
295
- readonly md: 16;
296
- readonly lg: 26;
297
- readonly xl: 40;
315
+ readonly stepXs: 8;
316
+ readonly stepSm: 12;
317
+ readonly stepMd: 16;
318
+ readonly stepLg: 26;
319
+ readonly stepXl: 40;
298
320
  readonly section: 96;
299
321
  };
300
322
  declare const size: {
@@ -567,11 +589,11 @@ declare const tokens: {
567
589
  readonly icon: 42;
568
590
  };
569
591
  readonly spacing: {
570
- readonly xs: 8;
571
- readonly sm: 12;
572
- readonly md: 16;
573
- readonly lg: 26;
574
- readonly xl: 40;
592
+ readonly stepXs: 8;
593
+ readonly stepSm: 12;
594
+ readonly stepMd: 16;
595
+ readonly stepLg: 26;
596
+ readonly stepXl: 40;
575
597
  readonly section: 96;
576
598
  };
577
599
  readonly size: {
@@ -289,12 +289,34 @@ declare const control: {
289
289
  /** Botón de icono: cuadrado, sin texto. */
290
290
  readonly icon: 42;
291
291
  };
292
+ /**
293
+ * El ritmo de página. Los cinco escalones llevan `step` en el nombre, y no es
294
+ * decoración: es la corrección de un bug que no dio la cara en ningún sitio.
295
+ *
296
+ * En Tailwind v4, `--spacing-*` no alimenta solo `p-*`, `m-*` y `gap-*`:
297
+ * también resuelve `w-*`, `h-*`, `max-w-*`, `min-w-*`, `basis-*` y `size-*`, y
298
+ * ahí GANA a la escala `--container-*`. Los escalones se llamaban `xs, sm, md,
299
+ * lg, xl`, que son exactamente los nombres de esa escala, así que cualquier
300
+ * proyecto que importara `theme.css` se quedaba con `max-w-sm` valiendo 12px en
301
+ * vez de 384px. Nada avisaba: ni el build, ni los tipos, ni Storybook, ni la
302
+ * suite —la librería no usa esas utilidades por dentro—. Se descubrió en
303
+ * producción, con el párrafo de un hero a una palabra por línea.
304
+ *
305
+ * Redeclarar `--container-sm` NO lo arregla: `--spacing-*` gana la resolución.
306
+ * La única salida es que la librería no use esos nombres.
307
+ *
308
+ * El prefijo sigue el patrón que ya tenía `control`: un grupo con nombre propio
309
+ * dentro del espacio `--spacing-*`. `scripts/check-tokens-namespace.mjs` impide
310
+ * la recaída.
311
+ *
312
+ * `section` no lleva prefijo porque no choca con nada de Tailwind.
313
+ */
292
314
  declare const spacing: {
293
- readonly xs: 8;
294
- readonly sm: 12;
295
- readonly md: 16;
296
- readonly lg: 26;
297
- readonly xl: 40;
315
+ readonly stepXs: 8;
316
+ readonly stepSm: 12;
317
+ readonly stepMd: 16;
318
+ readonly stepLg: 26;
319
+ readonly stepXl: 40;
298
320
  readonly section: 96;
299
321
  };
300
322
  declare const size: {
@@ -567,11 +589,11 @@ declare const tokens: {
567
589
  readonly icon: 42;
568
590
  };
569
591
  readonly spacing: {
570
- readonly xs: 8;
571
- readonly sm: 12;
572
- readonly md: 16;
573
- readonly lg: 26;
574
- readonly xl: 40;
592
+ readonly stepXs: 8;
593
+ readonly stepSm: 12;
594
+ readonly stepMd: 16;
595
+ readonly stepLg: 26;
596
+ readonly stepXl: 40;
575
597
  readonly section: 96;
576
598
  };
577
599
  readonly size: {
@@ -1,2 +1,2 @@
1
- export { tokens } from '../chunk-22OXRTAL.js';
2
- export { brand, colors, control, dark, fonts, gradient, light, limits, motion, naming, radius, shadow, sintaxis, size, spacing, tagline, typeScale } from '../chunk-DHF63QNM.js';
1
+ export { tokens } from '../chunk-VSMW2CT4.js';
2
+ export { brand, colors, control, dark, fonts, gradient, light, limits, motion, naming, radius, shadow, sintaxis, size, spacing, tagline, typeScale } from '../chunk-I7GYZD2A.js';
@@ -100,11 +100,11 @@
100
100
  --radius-panel: 16px;
101
101
  --radius-pill: 999px;
102
102
 
103
- --spacing-xs: 8px;
104
- --spacing-sm: 12px;
105
- --spacing-md: 16px;
106
- --spacing-lg: 26px;
107
- --spacing-xl: 40px;
103
+ --spacing-step-xs: 8px;
104
+ --spacing-step-sm: 12px;
105
+ --spacing-step-md: 16px;
106
+ --spacing-step-lg: 26px;
107
+ --spacing-step-xl: 40px;
108
108
  --spacing-section: 96px;
109
109
 
110
110
  --spacing-control-sm: 14px;
package/llms.txt CHANGED
@@ -82,6 +82,21 @@ Bricolage Grotesque (`font-display`), Geist (`font-sans`) y JetBrains Mono
82
82
  (`font-mono`) como prefiera —`next/font`, `@fontsource`, un `<link>`—. Si no las
83
83
  carga, el navegador cae al fallback y la tipografía se ve mal.
84
84
 
85
+ El nombre tiene que coincidir **exactamente** con el que declaran los tokens, y
86
+ esto ya ha fallado en dos proyectos:
87
+
88
+ | Utilidad | Nombre que pide el token |
89
+ | --- | --- |
90
+ | `font-display` | `"Bricolage Grotesque"` |
91
+ | `font-sans` | `"Geist"` |
92
+ | `font-mono` | `"JetBrains Mono"` |
93
+
94
+ Varios paquetes de fuentes las publican como `"Bricolage Grotesque Variable"` o
95
+ `"Geist Variable"`. Registrar el `@font-face` con ese nombre NO carga lo que los
96
+ tokens piden: la familia cae al sistema en silencio, sin error en consola. El
97
+ `font-family` del `@font-face` es un alias que elige el proyecto, así que se
98
+ escribe con el nombre de la tabla.
99
+
85
100
  ## Qué importar de dónde
86
101
 
87
102
  `exports` tiene cinco subrutas y la elección importa: tres de ellas **no
@@ -122,7 +137,8 @@ mismo valor está disponible en los dos sitios y no pueden discrepar.
122
137
  | `typeScale.h1` | `--text-h1` | `text-h1` (arrastra line-height, weight y tracking) |
123
138
  | `fonts.display` | `--font-display` | `font-display` |
124
139
  | `radius.card` | `--radius-card` | `rounded-card` |
125
- | `spacing.lg` | `--spacing-lg` | `p-lg`, `gap-lg`, `mb-lg` |
140
+ | `spacing.stepLg` | `--spacing-step-lg` | `p-step-lg`, `gap-step-lg`, `mb-step-lg` |
141
+ | `spacing.section` | `--spacing-section` | `py-section`, `mb-section` |
126
142
  | `control.md` | `--spacing-control-md` | `px-control-md` |
127
143
  | `control.icon` | `--spacing-control-icon` | `size-control-icon` (42×42) |
128
144
  | `gradient[modo].hero` | `--gradient-hero` | `degradado-hero` |
@@ -135,6 +151,15 @@ mismo valor está disponible en los dos sitios y no pueden discrepar.
135
151
  `transition-standard` es la única transición del sistema y solo puede animar
136
152
  color y borde: así está escrita la utilidad.
137
153
 
154
+ **Los escalones de espaciado llevan `step` en el nombre y no es opcional.**
155
+ `p-md` no es una clase de Arrecife: en un proyecto con Tailwind v4 cae en la
156
+ escala numérica y no hace nada visible. El ritmo de página es `p-step-md`,
157
+ `gap-step-sm`, `py-step-xl`. Llevan prefijo porque `xs, sm, md, lg, xl` son los
158
+ nombres de la escala `--container-*` de Tailwind, y un `--spacing-md` propio se
159
+ comía `max-w-md` en todo el proyecto sin avisar de nada. `max-w-*`, `w-*` y `h-*`
160
+ son de Tailwind y se usan tal cual. Guía de migración desde la 0.2.0:
161
+ <https://github.com/Proskynete/arrecife/blob/main/docs/migracion-0.3.md>.
162
+
138
163
  ## Reglas del sistema que el código consumidor no debe romper
139
164
 
140
165
  Son decisiones de identidad, ya medidas. Romperlas produce código que compila y
@@ -1151,7 +1176,7 @@ no monta React, esa subruta es la que hay que importar.
1151
1176
  | `shadow` | `{ readonly standard: "0 1px 2px rgba(0, 0, 0, 0.35)"; }` | Un solo nivel. No hay escala de elevación. |
1152
1177
  | `sintaxis` | `{ fondo, identificador, literal, palabraClave, comentario, invalido }` | La paleta del resaltado de sintaxis. |
1153
1178
  | `size` | `{ readonly nav: 64; readonly content: 760; readonly wide: 1180; }` | |
1154
- | `spacing` | `{ readonly xs: 8; readonly sm: 12; readonly md: 16; readonly lg: 26; readonly xl: 40; readonly section: 96; }` | |
1179
+ | `spacing` | `{ readonly stepXs: 8; readonly stepSm: 12; readonly stepMd: 16; readonly stepLg: 26; readonly stepXl: 40; readonly section: 96; }` | El ritmo de página. Los cinco escalones llevan `step` en el nombre, y no es decoración: es la corrección de un bug que no dio la cara en ningún sitio. |
1155
1180
  | `tagline` | `{ largo, corto, en }` | |
1156
1181
  | `tokens` | `{ colors, brand, fonts, typeScale, limits, radius, control, spacing, size, gradient, sintaxis, shadow, motion, tagline, naming }` | Todos los tokens en un solo objeto, para plantillas Satori y generadores. |
1157
1182
  | `typeScale` | `{ display, stat, h1, h2, h3, body, lead, ui, label, tag, chip, meta, eyebrow }` | |
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eduardoalvarez/arrecife",
3
- "version": "0.2.0",
3
+ "version": "0.3.0",
4
4
  "description": "Librería de componentes de la identidad visual de Eduardo Álvarez",
5
5
  "license": "MIT",
6
6
  "author": "Eduardo Esteban Álvarez Castañeda <soy@eduardoalvarez.dev>",
@@ -53,20 +53,22 @@
53
53
  "module": "./dist/index.js",
54
54
  "types": "./dist/index.d.ts",
55
55
  "scripts": {
56
- "build": "pnpm check:tokens && tsup && pnpm build:tokens && pnpm build:llms",
56
+ "build": "pnpm check:tokens && pnpm check:namespace && tsup && pnpm build:tokens && pnpm build:llms",
57
57
  "build:tokens": "node scripts/build-tokens.mjs",
58
58
  "build:llms": "node scripts/build-llms.mjs",
59
59
  "check:tokens": "node scripts/check-tokens-purity.mjs",
60
+ "check:namespace": "node scripts/check-tokens-namespace.mjs",
60
61
  "check:llms": "node scripts/build-llms.mjs --check",
61
62
  "check:exports": "node scripts/check-package-exports.mjs",
62
63
  "check:release": "node scripts/check-release-config.mjs",
63
64
  "typecheck": "tsc --noEmit",
64
65
  "lint": "eslint .",
65
- "test": "pnpm test:oscuro && pnpm test:claro",
66
+ "test": "pnpm test:unidad && pnpm test:oscuro && pnpm test:claro",
66
67
  "test:watch": "vitest --project storybook",
67
68
  "storybook": "pnpm build:tokens && storybook dev -p 6006",
68
69
  "build-storybook": "pnpm build:tokens && storybook build",
69
70
  "prepublishOnly": "pnpm build",
71
+ "test:unidad": "vitest run --project unidad",
70
72
  "test:oscuro": "vitest run --project storybook",
71
73
  "test:claro": "STORYBOOK_THEME=claro vitest run --project storybook"
72
74
  },