@eduardoalvarez/arrecife 0.12.2 → 0.12.4
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 +20 -0
- package/README.md +1 -1
- package/dist/brand/index.cjs +2 -2
- package/dist/brand/index.js +3 -3
- package/dist/chart/index.js +3 -3
- package/dist/{chunk-WU66TPJT.js → chunk-5V6ORCV5.js} +1 -1
- package/dist/{chunk-TMUGT3Y3.js → chunk-CHHN7NBY.js} +1 -1
- package/dist/{chunk-5YWGOFDX.js → chunk-EYBN76H6.js} +21 -10
- package/dist/{chunk-BFYNBIVJ.js → chunk-IBX7VFDS.js} +1 -1
- package/dist/{chunk-W75O3Z77.js → chunk-NGVEMBLN.js} +1 -1
- package/dist/{chunk-6QJQ6K7J.js → chunk-QE7NGR7I.js} +1 -1
- package/dist/{chunk-BRDTB44R.js → chunk-YZ4VVECJ.js} +2 -2
- package/dist/form/index.js +4 -4
- package/dist/icons/index.js +3 -3
- package/dist/index.cjs +90 -38
- package/dist/index.d.cts +30 -6
- package/dist/index.d.ts +30 -6
- package/dist/index.js +81 -40
- package/dist/og/index.cjs +9 -8
- package/dist/og/index.d.cts +1 -1
- package/dist/og/index.d.ts +1 -1
- package/dist/og/index.js +2 -2
- package/dist/shiki/index.js +1 -1
- package/dist/tokens/index.cjs +21 -10
- package/dist/tokens/index.d.cts +27 -15
- package/dist/tokens/index.d.ts +27 -15
- package/dist/tokens/index.js +2 -2
- package/dist/tokens/theme.css +7 -4
- package/llms.txt +11 -6
- package/package.json +1 -1
package/dist/tokens/index.d.ts
CHANGED
|
@@ -446,7 +446,7 @@ declare const size: {
|
|
|
446
446
|
* invalid error 4.97:1
|
|
447
447
|
*
|
|
448
448
|
* `brand.body` (#3E7CB1) is NOT here: the system restricts it to fill, never
|
|
449
|
-
* text, and it measures 4.
|
|
449
|
+
* text, and it measures 4.12:1 in this context.
|
|
450
450
|
*
|
|
451
451
|
* Numeric and boolean literals ride with strings in biolume. The document does
|
|
452
452
|
* not assign them, and grouping them with strings — all three are literals — is
|
|
@@ -497,14 +497,24 @@ declare const series: {
|
|
|
497
497
|
declare const gradient: {
|
|
498
498
|
readonly dark: {
|
|
499
499
|
readonly hero: "linear-gradient(160deg, #091319 60%, #0D2129 100%)";
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
500
|
+
/**
|
|
501
|
+
* Flat, on purpose. The document drew it #10202B → #0D2129, a 0.11 L* sweep
|
|
502
|
+
* nobody can see; the author chose a flat fosa over inventing a second stop
|
|
503
|
+
* (§ 9). It stays a `linear-gradient` so `gradient-section`, which sets
|
|
504
|
+
* `background-image`, keeps working unchanged in every project.
|
|
505
|
+
*/
|
|
506
|
+
readonly section: "linear-gradient(#10202B, #10202B)";
|
|
507
|
+
/** The article OG template. 145°, from the document. */
|
|
508
|
+
readonly og: "linear-gradient(145deg, #091319 58%, #0E2A30 100%)";
|
|
509
|
+
/** The talk OG template. 150°, from the document. */
|
|
510
|
+
readonly ogTalk: "linear-gradient(150deg, #091319 55%, #0E2A30 100%)";
|
|
503
511
|
};
|
|
504
512
|
readonly light: {
|
|
505
513
|
readonly hero: "linear-gradient(160deg, #F6F2EA 60%, #FFFFFF 100%)";
|
|
506
514
|
readonly section: "linear-gradient(150deg, #FFFFFF 0%, #F6F2EA 100%)";
|
|
507
515
|
readonly og: "linear-gradient(145deg, #F6F2EA 55%, #FFFFFF 100%)";
|
|
516
|
+
/** No light talk card exists; the key mirrors dark so both modes carry it. */
|
|
517
|
+
readonly ogTalk: "linear-gradient(150deg, #F6F2EA 55%, #FFFFFF 100%)";
|
|
508
518
|
};
|
|
509
519
|
};
|
|
510
520
|
/** A single level. There is no elevation scale. */
|
|
@@ -522,12 +532,12 @@ declare const motion: {
|
|
|
522
532
|
readonly properties: "color, background-color, border-color, fill, stroke";
|
|
523
533
|
};
|
|
524
534
|
declare const tagline: {
|
|
525
|
-
/** Hero. */
|
|
526
|
-
readonly long: "
|
|
527
|
-
/** Header, one line. */
|
|
528
|
-
readonly short: "
|
|
529
|
-
/**
|
|
530
|
-
readonly en: "
|
|
535
|
+
/** Hero. The bajada approved in § 65. */
|
|
536
|
+
readonly long: "Enseño a construir software con IA sin dejar de entender lo que hacemos.";
|
|
537
|
+
/** Header, one line. Role and method, as in § 65. */
|
|
538
|
+
readonly short: "Technical Lead · Spec-Driven Development";
|
|
539
|
+
/** English surfaces. */
|
|
540
|
+
readonly en: "I teach how to build software with AI without losing sight of what we build.";
|
|
531
541
|
};
|
|
532
542
|
/**
|
|
533
543
|
* The wordmark always reads «Eduardo Álvarez». The mascot is called Tiburoncín
|
|
@@ -757,13 +767,15 @@ declare const tokens: {
|
|
|
757
767
|
readonly gradient: {
|
|
758
768
|
readonly dark: {
|
|
759
769
|
readonly hero: "linear-gradient(160deg, #091319 60%, #0D2129 100%)";
|
|
760
|
-
readonly section: "linear-gradient(
|
|
761
|
-
readonly og: "linear-gradient(145deg, #091319
|
|
770
|
+
readonly section: "linear-gradient(#10202B, #10202B)";
|
|
771
|
+
readonly og: "linear-gradient(145deg, #091319 58%, #0E2A30 100%)";
|
|
772
|
+
readonly ogTalk: "linear-gradient(150deg, #091319 55%, #0E2A30 100%)";
|
|
762
773
|
};
|
|
763
774
|
readonly light: {
|
|
764
775
|
readonly hero: "linear-gradient(160deg, #F6F2EA 60%, #FFFFFF 100%)";
|
|
765
776
|
readonly section: "linear-gradient(150deg, #FFFFFF 0%, #F6F2EA 100%)";
|
|
766
777
|
readonly og: "linear-gradient(145deg, #F6F2EA 55%, #FFFFFF 100%)";
|
|
778
|
+
readonly ogTalk: "linear-gradient(150deg, #F6F2EA 55%, #FFFFFF 100%)";
|
|
767
779
|
};
|
|
768
780
|
};
|
|
769
781
|
readonly syntax: {
|
|
@@ -787,9 +799,9 @@ declare const tokens: {
|
|
|
787
799
|
readonly properties: "color, background-color, border-color, fill, stroke";
|
|
788
800
|
};
|
|
789
801
|
readonly tagline: {
|
|
790
|
-
readonly long: "
|
|
791
|
-
readonly short: "
|
|
792
|
-
readonly en: "
|
|
802
|
+
readonly long: "Enseño a construir software con IA sin dejar de entender lo que hacemos.";
|
|
803
|
+
readonly short: "Technical Lead · Spec-Driven Development";
|
|
804
|
+
readonly en: "I teach how to build software with AI without losing sight of what we build.";
|
|
793
805
|
};
|
|
794
806
|
readonly naming: {
|
|
795
807
|
readonly wordmark: "Eduardo Álvarez";
|
package/dist/tokens/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { tokens } from '../chunk-
|
|
2
|
-
export { brand, colors, control, dark, fonts, gradient, light, limits, motion, naming, radius, series, shadow, size, spacing, syntax, tagline, typeScale } from '../chunk-
|
|
1
|
+
export { tokens } from '../chunk-QE7NGR7I.js';
|
|
2
|
+
export { brand, colors, control, dark, fonts, gradient, light, limits, motion, naming, radius, series, shadow, size, spacing, syntax, tagline, typeScale } from '../chunk-EYBN76H6.js';
|
package/dist/tokens/theme.css
CHANGED
|
@@ -154,8 +154,9 @@
|
|
|
154
154
|
|
|
155
155
|
/* --- gradients · dark mode (default) ----------------------------------- */
|
|
156
156
|
--gradient-hero: linear-gradient(160deg, #091319 60%, #0D2129 100%);
|
|
157
|
-
--gradient-section: linear-gradient(
|
|
158
|
-
--gradient-og: linear-gradient(145deg, #091319
|
|
157
|
+
--gradient-section: linear-gradient(#10202B, #10202B);
|
|
158
|
+
--gradient-og: linear-gradient(145deg, #091319 58%, #0E2A30 100%);
|
|
159
|
+
--gradient-og-talk: linear-gradient(150deg, #091319 55%, #0E2A30 100%);
|
|
159
160
|
}
|
|
160
161
|
|
|
161
162
|
/* --- color per mode, nestable ----------------------------------------------
|
|
@@ -192,8 +193,9 @@
|
|
|
192
193
|
--color-series-4: #71919C;
|
|
193
194
|
|
|
194
195
|
--gradient-hero: linear-gradient(160deg, #091319 60%, #0D2129 100%);
|
|
195
|
-
--gradient-section: linear-gradient(
|
|
196
|
-
--gradient-og: linear-gradient(145deg, #091319
|
|
196
|
+
--gradient-section: linear-gradient(#10202B, #10202B);
|
|
197
|
+
--gradient-og: linear-gradient(145deg, #091319 58%, #0E2A30 100%);
|
|
198
|
+
--gradient-og-talk: linear-gradient(150deg, #091319 55%, #0E2A30 100%);
|
|
197
199
|
}
|
|
198
200
|
|
|
199
201
|
[data-theme='light'] {
|
|
@@ -227,6 +229,7 @@
|
|
|
227
229
|
--gradient-hero: linear-gradient(160deg, #F6F2EA 60%, #FFFFFF 100%);
|
|
228
230
|
--gradient-section: linear-gradient(150deg, #FFFFFF 0%, #F6F2EA 100%);
|
|
229
231
|
--gradient-og: linear-gradient(145deg, #F6F2EA 55%, #FFFFFF 100%);
|
|
232
|
+
--gradient-og-talk: linear-gradient(150deg, #F6F2EA 55%, #FFFFFF 100%);
|
|
230
233
|
}
|
|
231
234
|
|
|
232
235
|
/* --- the system's two gradients, as utilities -------------------------------
|
package/llms.txt
CHANGED
|
@@ -685,7 +685,7 @@ import { Text, Button, Badge, cn } from '@eduardoalvarez/arrecife';
|
|
|
685
685
|
import type { TextProps } from '@eduardoalvarez/arrecife';
|
|
686
686
|
|
|
687
687
|
<Text variant="eyebrow" tone="muted">charlas</Text>
|
|
688
|
-
<Text as="h2" variant="h1">
|
|
688
|
+
<Text as="h2" variant="h1">Entender antes de construir</Text>
|
|
689
689
|
<Text variant="body">Clamps itself to 68ch.</Text>
|
|
690
690
|
<Text variant="ui" measure={false}>No clamp, for a narrow cell.</Text>
|
|
691
691
|
```
|
|
@@ -1071,6 +1071,8 @@ Source: `src/primitives/pagination.tsx`
|
|
|
1071
1071
|
- No own props: it passes through those of the element or primitive it wraps.
|
|
1072
1072
|
|
|
1073
1073
|
**PaginationLink**
|
|
1074
|
+
Mono, bordered, and the current page in solid biolume, as the document draws it: «paginación mono, página actual en bioluz sólido». The page is where you are, so it is the one control that carries the accent fill.
|
|
1075
|
+
|
|
1074
1076
|
- Extends: `ComponentPropsWithoutRef<'a'>`
|
|
1075
1077
|
|
|
1076
1078
|
| prop | type | req. | default | what it does |
|
|
@@ -1312,6 +1314,8 @@ Mount it ONCE, as high in the tree as possible. Two mounted `Toaster`s paint eve
|
|
|
1312
1314
|
Source: `src/primitives/tooltip.tsx`
|
|
1313
1315
|
|
|
1314
1316
|
**TooltipContent**
|
|
1317
|
+
Inverted on purpose: the document draws it «espuma sobre oscuro, texto casco 13px/500 — se invierte a propósito para que destaque». `bg-text-primary` with `text-background` is that inversion in both modes: foam on the abyss page in dark, ink on paper in light. It is the one layer that does not sit on a surface token, which is exactly what makes it read as a layer.
|
|
1318
|
+
|
|
1315
1319
|
- No own props: it passes through those of the element or primitive it wraps.
|
|
1316
1320
|
|
|
1317
1321
|
**TooltipProvider**
|
|
@@ -1394,7 +1398,7 @@ The byline at the foot of the article: 52px avatar, 15/500 name and the role in
|
|
|
1394
1398
|
|
|
1395
1399
|
Source: `src/components/blockquote/index.tsx`
|
|
1396
1400
|
|
|
1397
|
-
The side bar is `
|
|
1401
|
+
The side bar is `warm`, 3px, and the text is italic, as the document draws it: «cita con borde arena 3px, cursiva, sin fondo». Sand is the human accent — quotes, categories, conversion — and biolume is the interactive one; a quote in biolume read as a link that could not be clicked. It carries no decorative quote marks: the border and the italic already say it is somebody's voice.
|
|
1398
1402
|
|
|
1399
1403
|
- Extends: `Omit<ComponentPropsWithoutRef<'blockquote'>, 'cite'>`
|
|
1400
1404
|
|
|
@@ -1575,7 +1579,7 @@ Source: `src/components/newsletter-form/index.tsx`
|
|
|
1575
1579
|
| `description` | `ReactNode` | | | |
|
|
1576
1580
|
| `disclaimer` | `ReactNode` | | | The small print. It is the «sin spam», which is why it accepts a face. |
|
|
1577
1581
|
| `errorMessage` | `ReactNode` | | `No se pudo suscribir ese correo. Revísalo y vuelve a intentar.` | |
|
|
1578
|
-
| `expression` | `"annoyed" \| "confused" \| "hearts" \| "laughing" \| "shades" \| "waiting" \| "wink"` | | |
|
|
1582
|
+
| `expression` | `"annoyed" \| "confused" \| "hearts" \| "laughing" \| "shades" \| "waiting" \| "wink"` | | | The face beside the disclaimer. It is dropped when `aside` is set: the manual allows one mascot per piece («Dos mascotas en la misma pieza. Compiten entre sí y ninguna gana»), and the aside is the illustration. |
|
|
1579
1583
|
| `fieldErrors` | `{ name?: ReactNode; email?: ReactNode; }` | | | A message under one specific field, instead of the single alert. |
|
|
1580
1584
|
| `fieldLabel` | `string` | | `Correo electrónico` | |
|
|
1581
1585
|
| `nameField` | `boolean` | | `false` | Adds the name field ahead of the email one. |
|
|
@@ -1584,11 +1588,11 @@ Source: `src/components/newsletter-form/index.tsx`
|
|
|
1584
1588
|
| `namePlaceholder` | `string` | | `Cómo te llamas` | |
|
|
1585
1589
|
| `onFieldChange` | `(field: "email" \| "name", value: string) => void` | | | Fires when either field changes. It is where the project clears its error. |
|
|
1586
1590
|
| `onSubmitEmail` | `(email: string, name?: string \| undefined) => void` | | | Fires with the email already read from the field, and with the name if that field is enabled. |
|
|
1587
|
-
| `placeholder` | `string` | | `tu@
|
|
1591
|
+
| `placeholder` | `string` | | `tu@correo.dev` | |
|
|
1588
1592
|
| `resetOnSuccess` | `boolean` | | `true` | Empties the fields after a successful subscription. On by default. |
|
|
1589
1593
|
| `state` | `"success" \| "error" \| "idle" \| "sending"` | | `idle` | |
|
|
1590
1594
|
| `submitLabel` | `string` | | `Suscribirme` | |
|
|
1591
|
-
| `successMessage` | `ReactNode` | | `Ya estás dentro. Te llega un correo
|
|
1595
|
+
| `successMessage` | `ReactNode` | | `Ya estás dentro. Te llega un correo al mes, y nada más.` | |
|
|
1592
1596
|
| `title` | `ReactNode` | yes | | |
|
|
1593
1597
|
|
|
1594
1598
|
### PageHeader
|
|
@@ -1638,6 +1642,7 @@ A large metric: the number in the `stat` scale and its name underneath.
|
|
|
1638
1642
|
| `icon` | `ReactNode` | | | Glyph in a tinted circle, in the corner opposite the title. At 1em, and it inherits `currentColor` from the badge, so it takes the tone without being tinted separately. |
|
|
1639
1643
|
| `label` | `ReactNode` | yes | | What is being counted. It goes in mono small caps. |
|
|
1640
1644
|
| `progress` | `number` | | | With `progress`, the metric reads as progress and adds the bar. |
|
|
1645
|
+
| `progressLabel` | `string` | | | The bar's accessible name. It defaults to `label` when `label` is a string; a `label` that is markup has to spell it here, or the bar would announce «[object Object]: 38%». |
|
|
1641
1646
|
| `spark` | `ReactNode` | | | The number's shape over time, under it. A `ReactNode` and not a data prop: a sparkline needs a charting library, and this component lives in the barrel that four projects install. The one project that draws them passes its own, exactly like `icon`. |
|
|
1642
1647
|
| `tone` | `"neutral" \| "alert" \| "achievement"` | | `neutral` | `alert` ONLY when the number is the problem, and `achievement` when it is the opposite — the diplomas issued, the modules finished. The two paint the same sand today and they are still two names: a system that names by meaning cannot make «this is bad» the only way to say «this stands out». See `docs/decisions/` § 28. |
|
|
1643
1648
|
| `value` | `ReactNode` | yes | | The number, already formatted. The library imposes no locale. |
|
|
@@ -2036,7 +2041,7 @@ Types (10): `AreaChartProps`, `BarChartProps`, `ChartContainerProps`, `ChartDatu
|
|
|
2036
2041
|
| `defaultTemplate` | `(data?: DefaultData): SatoriNode` | Default · the document's declared exception. |
|
|
2037
2042
|
| `OG` | `{ readonly width: 1200; readonly height: 630; readonly margin: 64; readonly mascot: 430; readonly signatureFin: 34; readonly mascotReserve: 560; }` | The canvas and the grid. These are the production measurements. |
|
|
2038
2043
|
| `plantillaBase` | `(options: { mode: "dark" \| "light"; background: string; eyebrow: { text: string; color: string; }; title: string; bajada?: string \| undefined; signature: string; firmaColor: string; base: string; mascot?: SatoriNode \| ... 1 more ... \| undefined; mascotaIzquierda?: boolean \| undefined; tinta: string; tintaSecundaria: string; }): SatoriNode` | |
|
|
2039
|
-
| `talkTemplate` | `(data: TalkData): SatoriNode` | Talk · eyebrow in biolume with the event and year, pose bleeding off the corner. |
|
|
2044
|
+
| `talkTemplate` | `(data: TalkData): SatoriNode` | Talk · 150° gradient, eyebrow in biolume with the event and year, pose bleeding off the corner. |
|
|
2040
2045
|
|
|
2041
2046
|
Types (6): `ArticleData`, `BaseData`, `CourseData`, `DefaultData`, `SatoriNode`, `TalkData`.
|
|
2042
2047
|
|
package/package.json
CHANGED