@eduardoalvarez/arrecife 0.1.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 (44) hide show
  1. package/CHANGELOG.md +55 -0
  2. package/LICENSE +21 -0
  3. package/README.md +520 -0
  4. package/assets/brand/face-annoyed.png +0 -0
  5. package/assets/brand/face-confused.png +0 -0
  6. package/assets/brand/face-hearts.png +0 -0
  7. package/assets/brand/face-laughing.png +0 -0
  8. package/assets/brand/face-shades.png +0 -0
  9. package/assets/brand/face-waiting.png +0 -0
  10. package/assets/brand/face-wink.png +0 -0
  11. package/assets/brand/fin-foam.png +0 -0
  12. package/assets/brand/fin.png +0 -0
  13. package/assets/brand/pose-desk.png +0 -0
  14. package/assets/brand/pose-laptop-coffee.png +0 -0
  15. package/assets/brand/pose-peek.png +0 -0
  16. package/assets/brand/pose-surf.png +0 -0
  17. package/dist/brand/index.cjs +228 -0
  18. package/dist/brand/index.d.cts +63 -0
  19. package/dist/brand/index.d.ts +63 -0
  20. package/dist/brand/index.js +3 -0
  21. package/dist/catalogo-Du5ID-Hi.d.cts +77 -0
  22. package/dist/catalogo-Du5ID-Hi.d.ts +77 -0
  23. package/dist/chunk-22OXRTAL.js +22 -0
  24. package/dist/chunk-DHF63QNM.js +231 -0
  25. package/dist/chunk-E3OMP2DL.js +36 -0
  26. package/dist/chunk-ZL5X6XO7.js +102 -0
  27. package/dist/index.cjs +3191 -0
  28. package/dist/index.d.cts +1024 -0
  29. package/dist/index.d.ts +1024 -0
  30. package/dist/index.js +2624 -0
  31. package/dist/og/index.cjs +322 -0
  32. package/dist/og/index.d.cts +164 -0
  33. package/dist/og/index.d.ts +164 -0
  34. package/dist/og/index.js +242 -0
  35. package/dist/shiki/index.cjs +127 -0
  36. package/dist/shiki/index.d.cts +16 -0
  37. package/dist/shiki/index.d.ts +16 -0
  38. package/dist/shiki/index.js +95 -0
  39. package/dist/tokens/index.cjs +263 -0
  40. package/dist/tokens/index.d.cts +623 -0
  41. package/dist/tokens/index.d.ts +623 -0
  42. package/dist/tokens/index.js +2 -0
  43. package/dist/tokens/theme.css +266 -0
  44. package/package.json +128 -0
@@ -0,0 +1,263 @@
1
+ 'use strict';
2
+
3
+ // src/tokens/tokens.ts
4
+ var dark = {
5
+ background: "#091319",
6
+ // abismo · fondo de página
7
+ surface: "#10202B",
8
+ // fosa · tarjetas y paneles
9
+ surfaceRaised: "#17303E",
10
+ // corriente · menús, tabs activos
11
+ border: "#22414F",
12
+ // bordes de control
13
+ hairline: "#1E3441",
14
+ // divisiones sutiles
15
+ hairlineHover: "#2C4D5D",
16
+ // hairline en hover de tarjeta
17
+ textPrimary: "#EDF4F3",
18
+ // espuma 16.84:1
19
+ textSecondary: "#A7BCC4",
20
+ // bruma 9.50:1
21
+ textMuted: "#71919C",
22
+ // plancton 5.57:1 nunca bajo 13px
23
+ accent: "#35D6C0",
24
+ // bioluz 10.31:1 interactivo
25
+ accentHover: "#5FE3D1",
26
+ accentOn: "#06171A",
27
+ // tinta sobre bioluz
28
+ warm: "#F2A65A",
29
+ // arena 9.28:1 humano y conversión
30
+ warmHover: "#F7BB7D",
31
+ warmOn: "#2A1605",
32
+ // tinta sobre arena
33
+ success: "#4FB477",
34
+ warning: "#E8A33D",
35
+ error: "#E15757"
36
+ // 4.51:1 sobre surface
37
+ };
38
+ var light = {
39
+ background: "#F6F2EA",
40
+ // papel
41
+ surface: "#FFFFFF",
42
+ surfaceRaised: "#EFE9DE",
43
+ border: "#E6DFD2",
44
+ hairline: "#EBE6DC",
45
+ hairlineHover: "#D3C8B2",
46
+ // hairline en hover de tarjeta
47
+ textPrimary: "#0B1524",
48
+ // 16.40:1
49
+ textSecondary: "#3D4B58",
50
+ textMuted: "#626A75",
51
+ // 4.53:1 sobre surfaceRaised
52
+ accent: "#0D7C6F",
53
+ // bioluz oscura 4.55:1
54
+ accentHover: "#0C7466",
55
+ accentOn: "#FFFFFF",
56
+ warm: "#A65B27",
57
+ // arena oscura 4.54:1
58
+ warmHover: "#96511F",
59
+ warmOn: "#FFF7EE",
60
+ success: "#0F6B52",
61
+ warning: "#8D6111",
62
+ // 4.51:1 sobre surfaceRaised
63
+ error: "#C0392B"
64
+ };
65
+ var colors = { dark, light };
66
+ var brand = {
67
+ /** Cuerpo de la mascota. 4.22:1 → SOLO relleno, NUNCA texto. */
68
+ body: "#3E7CB1",
69
+ /** Patrón de manchas. */
70
+ spots: "#C2D7E7",
71
+ /** Casco · contorno y fondo de bloques de código. */
72
+ hull: "#0B1524"
73
+ };
74
+ var fonts = {
75
+ /** SOLO titulares y números grandes. Nunca cuerpo. */
76
+ display: '"Bricolage Grotesque", ui-sans-serif, system-ui, sans-serif',
77
+ /** Cuerpo e interfaz. */
78
+ sans: '"Geist", ui-sans-serif, system-ui, sans-serif',
79
+ /** Código, rutas, etiquetas, metadatos, firma CLI. */
80
+ mono: '"JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace'
81
+ };
82
+ var typeScale = {
83
+ display: { family: "display", size: 76, lineHeight: 0.96, weight: 800, tracking: "-0.035em" },
84
+ /** Métricas grandes. Números, no prosa: interlineado 1 y sin descendentes. */
85
+ stat: { family: "display", size: 46, lineHeight: 1, weight: 800, tracking: "-0.035em" },
86
+ h1: { family: "display", size: 44, lineHeight: 1.05, weight: 700, tracking: "-0.03em" },
87
+ h2: { family: "display", size: 30, lineHeight: 1.1, weight: 600, tracking: "-0.02em" },
88
+ h3: { family: "display", size: 25, lineHeight: 1.15, weight: 600, tracking: "-0.02em" },
89
+ body: { family: "sans", size: 18, lineHeight: 1.75, weight: 400 },
90
+ /**
91
+ * 17px. El botón grande y la bajada de las páginas internas.
92
+ *
93
+ * Entra como escalón propio porque el documento lo usa DOS veces y en piezas
94
+ * distintas: «lg 15px 30px r12» con texto de 17, y «h1 44/700 · bajada 17px ·
95
+ * párrafo de contexto 15px». Un solo uso no habría justificado partir la
96
+ * distancia entre `ui` (15) y `body` (18); dos sí.
97
+ */
98
+ lead: { family: "sans", size: 17, lineHeight: 1.5, weight: 400 },
99
+ ui: { family: "sans", size: 15, lineHeight: 1.6, weight: 400 },
100
+ label: { family: "sans", size: 13, lineHeight: 1.5, weight: 500 },
101
+ /**
102
+ * La escala de las etiquetas de estado: sans 12.5/500, cuadrada.
103
+ *
104
+ * Es medio píxel por debajo de `label`, y esta vez el medio píxel sí importa:
105
+ * una etiqueta de estado va dentro de una tabla o al lado de un título, y a 13
106
+ * competía con el texto que acompaña. El documento la da en 12.5 y se ve.
107
+ */
108
+ tag: { family: "sans", size: 12.5, lineHeight: 1.4, weight: 500 },
109
+ /**
110
+ * La escala de categoría y métrica: mono 11.5.
111
+ *
112
+ * Rompe el suelo de `limits.minScreenPx`, y es a propósito. Ese suelo protege
113
+ * al TEXTO —lo que se lee en una frase—, y una píldora de una palabra no es
114
+ * texto corrido: es una marca. El contraste sigue medido y pasa AA (plancton
115
+ * 5.57:1 sobre abismo), que es la parte que no se negocia.
116
+ *
117
+ * A 13 las tres familias de etiqueta salían del tamaño de un botón pequeño y
118
+ * pesaban más que el título que acompañan. Ver `docs/decisiones.md`.
119
+ */
120
+ chip: { family: "mono", size: 11.5, lineHeight: 1.4, weight: 400 },
121
+ /**
122
+ * Mono SIN transformar: fechas, rutas, versiones, nombres de archivo, la firma
123
+ * del footer y las métricas de etiqueta. Es la mayoría del mono del sistema.
124
+ *
125
+ * Existe porque `eyebrow` lleva `uppercase` de fábrica y no es una preferencia
126
+ * que se pueda apagar: es la escala del eyebrow. Un `18 ago 2026` en versalitas
127
+ * o un `pose-laptop-coffee.png` en mayúsculas están mal, y sin este escalón la
128
+ * única salida era un `normal-case` en cada sitio de uso.
129
+ *
130
+ * El documento dice 12.5. Son 13 por la misma razón por la que `textMuted` se
131
+ * corrigió: `limits.minScreenPx` es 13 y plancton «nunca bajo 13px». Esta
132
+ * escala es justo donde se escriben las metas en muted, así que ponerla en
133
+ * 12.5 habría dejado ilegible su uso más común por medio píxel.
134
+ */
135
+ meta: { family: "mono", size: 13, lineHeight: 1.6, weight: 400 },
136
+ eyebrow: { family: "mono", size: 12, tracking: "0.12em", transform: "uppercase" }
137
+ };
138
+ var limits = {
139
+ /** Mínimo absoluto en pantalla. */
140
+ minScreenPx: 13,
141
+ /** Mínimo absoluto impreso. */
142
+ minPrintPt: 12,
143
+ /** Medida máxima de cuerpo. */
144
+ measure: "68ch"
145
+ };
146
+ var radius = {
147
+ chip: 6,
148
+ control: 10,
149
+ card: 14,
150
+ panel: 16,
151
+ pill: 999
152
+ };
153
+ var control = {
154
+ sm: 14,
155
+ md: 22,
156
+ lg: 30,
157
+ /** Botón de icono: cuadrado, sin texto. */
158
+ icon: 42
159
+ };
160
+ var spacing = {
161
+ xs: 8,
162
+ sm: 12,
163
+ md: 16,
164
+ lg: 26,
165
+ xl: 40,
166
+ section: 96
167
+ };
168
+ var size = {
169
+ /** Alto de la barra de navegación. */
170
+ nav: 64,
171
+ /** Ancho de columna de lectura. */
172
+ content: 760,
173
+ /** Ancho máximo de página. */
174
+ wide: 1180
175
+ };
176
+ var sintaxis = {
177
+ /** El casco. Es el fondo del bloque en los dos modos. */
178
+ fondo: brand.hull,
179
+ /** Identificadores, funciones, tipos, variables. */
180
+ identificador: dark.textPrimary,
181
+ /** Cadenas, números, booleanos, null. */
182
+ literal: dark.accent,
183
+ /** Palabras clave, control de flujo, `import`, `this`. */
184
+ palabraClave: dark.warm,
185
+ /** Comentarios y puntuación. */
186
+ comentario: dark.textMuted,
187
+ /** `markup.deleted`, `invalid`. */
188
+ invalido: dark.error
189
+ };
190
+ var profundo = "#0D2129";
191
+ var gradient = {
192
+ dark: {
193
+ hero: `linear-gradient(160deg, ${dark.background} 60%, ${profundo} 100%)`,
194
+ seccion: `linear-gradient(150deg, ${dark.surface} 0%, ${profundo} 100%)`,
195
+ /** El de la plantilla OG de artículo. 145°, del documento. */
196
+ og: `linear-gradient(145deg, ${dark.background} 55%, ${profundo} 100%)`
197
+ },
198
+ light: {
199
+ hero: `linear-gradient(160deg, ${light.background} 60%, ${light.surfaceRaised} 100%)`,
200
+ seccion: `linear-gradient(150deg, ${light.surface} 0%, ${light.surfaceRaised} 100%)`,
201
+ og: `linear-gradient(145deg, ${light.background} 55%, ${light.surfaceRaised} 100%)`
202
+ }
203
+ };
204
+ var shadow = {
205
+ standard: "0 1px 2px rgba(0, 0, 0, 0.35)"
206
+ };
207
+ var motion = {
208
+ duration: "150ms",
209
+ easing: "ease-out",
210
+ properties: "color, background-color, border-color, fill, stroke"
211
+ };
212
+ var tagline = {
213
+ /** Hero. */
214
+ largo: "Ayudo a equipos de ingenier\xEDa a escalar con criterio",
215
+ /** Header, una línea. */
216
+ corto: "Ayudo a equipos a escalar con criterio",
217
+ /** LinkedIn. */
218
+ en: "Helping engineering teams scale with judgment"
219
+ };
220
+ var naming = {
221
+ wordmark: "Eduardo \xC1lvarez",
222
+ mascot: "Tiburonc\xEDn",
223
+ /** El dominio, para la firma CLI del footer: `$ cd ~/eduardoalvarez.dev/2026`. */
224
+ domain: "eduardoalvarez.dev"
225
+ };
226
+
227
+ // src/tokens/index.ts
228
+ var tokens = {
229
+ colors,
230
+ brand,
231
+ fonts,
232
+ typeScale,
233
+ limits,
234
+ radius,
235
+ control,
236
+ spacing,
237
+ size,
238
+ gradient,
239
+ sintaxis,
240
+ shadow,
241
+ motion,
242
+ tagline,
243
+ naming
244
+ };
245
+
246
+ exports.brand = brand;
247
+ exports.colors = colors;
248
+ exports.control = control;
249
+ exports.dark = dark;
250
+ exports.fonts = fonts;
251
+ exports.gradient = gradient;
252
+ exports.light = light;
253
+ exports.limits = limits;
254
+ exports.motion = motion;
255
+ exports.naming = naming;
256
+ exports.radius = radius;
257
+ exports.shadow = shadow;
258
+ exports.sintaxis = sintaxis;
259
+ exports.size = size;
260
+ exports.spacing = spacing;
261
+ exports.tagline = tagline;
262
+ exports.tokens = tokens;
263
+ exports.typeScale = typeScale;