@eduardoalvarez/arrecife 0.11.0 → 0.12.1

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 (42) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/README.md +34 -14
  3. package/dist/brand/index.cjs +2 -2
  4. package/dist/brand/index.d.cts +1 -1
  5. package/dist/brand/index.d.ts +1 -1
  6. package/dist/brand/index.js +3 -3
  7. package/dist/chart/index.cjs +2 -2
  8. package/dist/chart/index.d.cts +3 -3
  9. package/dist/chart/index.d.ts +3 -3
  10. package/dist/chart/index.js +3 -3
  11. package/dist/{chunk-FGFNK72B.js → chunk-5YWGOFDX.js} +17 -4
  12. package/dist/{chunk-5A5GH2PF.js → chunk-6QJQ6K7J.js} +1 -1
  13. package/dist/{chunk-TRPBID2W.js → chunk-BFYNBIVJ.js} +1 -1
  14. package/dist/{chunk-RKGKO2TW.js → chunk-BRDTB44R.js} +2 -2
  15. package/dist/{chunk-XXDATT3A.js → chunk-FF33ARRA.js} +1 -1
  16. package/dist/{chunk-FAAGZG7A.js → chunk-TMUGT3Y3.js} +1 -1
  17. package/dist/{chunk-6IGD5REB.js → chunk-W75O3Z77.js} +1 -1
  18. package/dist/{chunk-ZSCSKCTY.js → chunk-WU66TPJT.js} +1 -1
  19. package/dist/form/index.cjs +2 -2
  20. package/dist/form/index.js +4 -4
  21. package/dist/icons/index.cjs +2 -2
  22. package/dist/icons/index.d.cts +2 -2
  23. package/dist/icons/index.d.ts +2 -2
  24. package/dist/icons/index.js +3 -3
  25. package/dist/index.cjs +86 -18
  26. package/dist/index.d.cts +31 -16
  27. package/dist/index.d.ts +31 -16
  28. package/dist/index.js +83 -28
  29. package/dist/og/index.cjs +1 -2
  30. package/dist/og/index.js +1 -1
  31. package/dist/shiki/index.js +1 -1
  32. package/dist/tokens/index.cjs +17 -4
  33. package/dist/tokens/index.d.cts +20 -5
  34. package/dist/tokens/index.d.ts +20 -5
  35. package/dist/tokens/index.js +2 -2
  36. package/dist/tokens/theme.css +20 -3
  37. package/dist/variants/index.cjs +1 -1
  38. package/dist/variants/index.d.cts +2 -2
  39. package/dist/variants/index.d.ts +2 -2
  40. package/dist/variants/index.js +1 -1
  41. package/llms.txt +39 -13
  42. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -1,23 +1,23 @@
1
1
  'use client';
2
- import { Label } from './chunk-6IGD5REB.js';
3
- export { Label } from './chunk-6IGD5REB.js';
4
- import { Text } from './chunk-TRPBID2W.js';
5
- export { Text } from './chunk-TRPBID2W.js';
6
- export { tokens } from './chunk-5A5GH2PF.js';
2
+ import { Label } from './chunk-W75O3Z77.js';
3
+ export { Label } from './chunk-W75O3Z77.js';
4
+ import { Text } from './chunk-BFYNBIVJ.js';
5
+ export { Text } from './chunk-BFYNBIVJ.js';
6
+ export { tokens } from './chunk-6QJQ6K7J.js';
7
7
  import { toggleTheme, currentTheme, watchTheme } from './chunk-GCRII2KQ.js';
8
8
  export { THEME_ATTRIBUTE, THEME_EVENT, THEME_KEY, applyTheme, currentTheme, preferredTheme, storedTheme, themeScript, toggleTheme, watchTheme } from './chunk-GCRII2KQ.js';
9
- import { alert, button, avatar, badge, category, metric, CARD_SURFACE, CARD } from './chunk-XXDATT3A.js';
10
- export { CARD, CARD_HOVER, CARD_SURFACE, alert as alertVariants, avatar as avatarVariants, badge as badgeVariants, button as buttonVariants, category as categoryBadgeVariants, metric as metricBadgeVariants } from './chunk-XXDATT3A.js';
9
+ import { alert, button, avatar, badge, category, metric, CARD_SURFACE, CARD } from './chunk-FF33ARRA.js';
10
+ export { CARD, CARD_HOVER, CARD_SURFACE, alert as alertVariants, avatar as avatarVariants, badge as badgeVariants, button as buttonVariants, category as categoryBadgeVariants, metric as metricBadgeVariants } from './chunk-FF33ARRA.js';
11
11
  export { text as textVariants } from './chunk-ODBFN44D.js';
12
- import { MascotFace, Mascot } from './chunk-RKGKO2TW.js';
13
- export { Isotype, Logo, Mascot, MascotFace } from './chunk-RKGKO2TW.js';
14
- import { Icon } from './chunk-ZSCSKCTY.js';
15
- import { cn } from './chunk-FAAGZG7A.js';
16
- export { cn } from './chunk-FAAGZG7A.js';
12
+ import { MascotFace, Mascot } from './chunk-BRDTB44R.js';
13
+ export { Isotype, Logo, Mascot, MascotFace } from './chunk-BRDTB44R.js';
14
+ import { Icon } from './chunk-WU66TPJT.js';
15
+ import { cn } from './chunk-TMUGT3Y3.js';
16
+ export { cn } from './chunk-TMUGT3Y3.js';
17
17
  export { ASSETS_PATH, faceList, faceUsage, faces, fins, poseList, poses } from './chunk-CKRSQPTX.js';
18
- import { naming } from './chunk-FGFNK72B.js';
19
- export { brand, colors, control, dark, fonts, gradient, light, limits, motion, naming, radius, series, shadow, size, spacing, syntax, tagline, typeScale } from './chunk-FGFNK72B.js';
20
- import { CaretDown, XCircle, Warning, CheckCircle, Info, Camera, CircleNotch, CaretLeft, CaretRight, Minus, Check, X, DotsThree, CaretUp, Copy, ArrowUpRight, TrendDown, TrendUp, Sun, Moon, WarningCircle, Waveform, ArrowCounterClockwise, ArrowClockwise, SpeakerSlash, SpeakerHigh, ArrowsClockwise, Pause, Play } from '@phosphor-icons/react';
18
+ import { naming } from './chunk-5YWGOFDX.js';
19
+ export { brand, colors, control, dark, fonts, gradient, light, limits, motion, naming, radius, series, shadow, size, spacing, syntax, tagline, typeScale } from './chunk-5YWGOFDX.js';
20
+ import { CaretDown, XCircle, Warning, CheckCircle, Info, Camera, CircleNotch, CaretLeft, CaretRight, Minus, Check, X, DotsThree, CaretUp, Copy, ArrowUpRight, TrendDown, TrendUp, Sun, Moon, WarningCircle, Waveform, ArrowCounterClockwise, ArrowClockwise, SpeakerSlash, SpeakerHigh, ArrowsClockwise, Pause, Play, Heart } from '@phosphor-icons/react';
21
21
  import * as AccordionPrimitive from '@radix-ui/react-accordion';
22
22
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
23
23
  import { cva } from 'class-variance-authority';
@@ -2478,8 +2478,7 @@ function SocialRow({ social }) {
2478
2478
  function Signature({
2479
2479
  year,
2480
2480
  href,
2481
- domain: domainName = naming.domain,
2482
- className
2481
+ domain: domainName = naming.domain
2483
2482
  }) {
2484
2483
  const domain = href ? /* @__PURE__ */ jsx(
2485
2484
  "a",
@@ -2489,7 +2488,7 @@ function Signature({
2489
2488
  children: domainName
2490
2489
  }
2491
2490
  ) : domainName;
2492
- return /* @__PURE__ */ jsxs(Text, { variant: "meta", tone: "muted", as: "p", className: cn("shrink-0", className), children: [
2491
+ return /* @__PURE__ */ jsxs(Text, { variant: "meta", tone: "muted", as: "p", children: [
2493
2492
  /* @__PURE__ */ jsxs("span", { "aria-hidden": "true", className: "text-accent", children: [
2494
2493
  "$",
2495
2494
  " "
@@ -2507,6 +2506,40 @@ function Signature({
2507
2506
  )
2508
2507
  ] });
2509
2508
  }
2509
+ function BuiltWith() {
2510
+ return /* @__PURE__ */ jsxs(Text, { variant: "meta", tone: "muted", as: "p", children: [
2511
+ "Creado con",
2512
+ " ",
2513
+ /* @__PURE__ */ jsx(
2514
+ "a",
2515
+ {
2516
+ href: naming.libraryUrl,
2517
+ target: "_blank",
2518
+ rel: "noopener noreferrer",
2519
+ className: cn(
2520
+ "text-accent hover:text-text-primary transition-standard cursor-pointer",
2521
+ "underline decoration-1 underline-offset-4",
2522
+ "rounded-chip focus-ring"
2523
+ ),
2524
+ children: naming.library
2525
+ }
2526
+ ),
2527
+ " ",
2528
+ /* @__PURE__ */ jsx(Icon, { as: Heart, tone: "current", className: "text-accent inline align-middle" })
2529
+ ] });
2530
+ }
2531
+ function SignatureBlock({
2532
+ year,
2533
+ href,
2534
+ domain,
2535
+ builtWith,
2536
+ className
2537
+ }) {
2538
+ return /* @__PURE__ */ jsxs("div", { className: cn("flex shrink-0 flex-col items-center sm:items-end", className), children: [
2539
+ /* @__PURE__ */ jsx(Signature, { year, href, domain }),
2540
+ builtWith ? /* @__PURE__ */ jsx(BuiltWith, {}) : null
2541
+ ] });
2542
+ }
2510
2543
  function Shell({
2511
2544
  className,
2512
2545
  contentClassName,
@@ -2529,6 +2562,7 @@ function Footer({
2529
2562
  linkAsChild,
2530
2563
  social,
2531
2564
  brand: brand2,
2565
+ builtWith,
2532
2566
  year = (/* @__PURE__ */ new Date()).getFullYear(),
2533
2567
  signatureHref,
2534
2568
  domain,
@@ -2578,21 +2612,42 @@ function Footer({
2578
2612
  column.title
2579
2613
  )) })
2580
2614
  ] }),
2581
- /* @__PURE__ */ jsx("div", { className: "border-hairline mt-step-xl pt-step-lg border-t", children: /* @__PURE__ */ jsx(Signature, { year, href: signatureHref, domain, className: "text-center sm:text-right" }) })
2615
+ /* @__PURE__ */ jsx("div", { className: "border-hairline mt-step-xl pt-step-lg border-t", children: /* @__PURE__ */ jsx(
2616
+ SignatureBlock,
2617
+ {
2618
+ year,
2619
+ href: signatureHref,
2620
+ domain,
2621
+ builtWith
2622
+ }
2623
+ ) })
2582
2624
  ] });
2583
2625
  }
2584
2626
  const rows = [
2585
2627
  brand2 ? /* @__PURE__ */ jsx("div", { className: "flex items-center", children: brand2 }, "brand") : null,
2586
2628
  social && social.length > 0 ? /* @__PURE__ */ jsx(SocialRow, { social }, "social") : null
2587
2629
  ].filter(Boolean);
2588
- const [first, ...others] = rows;
2589
- return /* @__PURE__ */ jsxs(Shell, { className, contentClassName: "gap-step-lg", ...rest, children: [
2590
- /* @__PURE__ */ jsxs("div", { className: "gap-step-md flex flex-col items-center sm:flex-row sm:flex-wrap", children: [
2591
- first ?? null,
2592
- /* @__PURE__ */ jsx(Signature, { year, href: signatureHref, domain, className: "sm:ml-auto" })
2593
- ] }),
2594
- others
2595
- ] });
2630
+ return /* @__PURE__ */ jsxs(
2631
+ Shell,
2632
+ {
2633
+ className,
2634
+ contentClassName: "gap-step-lg items-center sm:flex-row sm:items-start",
2635
+ ...rest,
2636
+ children: [
2637
+ rows.length > 0 ? /* @__PURE__ */ jsx("div", { className: "gap-step-lg flex flex-col items-center sm:items-start", children: rows }) : null,
2638
+ /* @__PURE__ */ jsx(
2639
+ SignatureBlock,
2640
+ {
2641
+ year,
2642
+ href: signatureHref,
2643
+ domain,
2644
+ builtWith,
2645
+ className: "sm:ml-auto"
2646
+ }
2647
+ )
2648
+ ]
2649
+ }
2650
+ );
2596
2651
  }
2597
2652
  function Hero({
2598
2653
  title,
@@ -2740,7 +2795,7 @@ function Nav({ brand: brand2, children, actions, size: size2 = "default", classN
2740
2795
  puts it in `actions`. A `Nav` that hid its own items would leave every
2741
2796
  consumer without a drawer with no navigation at all, silently.
2742
2797
 
2743
- See `docs/decisions/0.10.md` § 54.
2798
+ See `docs/decisions/` § 54.
2744
2799
  */
2745
2800
  /* @__PURE__ */ jsx("nav", { "aria-label": "Principal", className: "ml-auto min-w-0 overflow-x-auto", children: /* @__PURE__ */ jsxs("ul", { className: "gap-step-md flex w-max items-center", children: [
2746
2801
  /* @__PURE__ */ jsx("span", { "aria-hidden": "true", className: "text-text-muted font-mono text-meta select-none", children: "~/" }),
package/dist/og/index.cjs CHANGED
@@ -74,8 +74,7 @@ var tagline = {
74
74
  var naming = {
75
75
  wordmark: "Eduardo \xC1lvarez",
76
76
  /** The domain, for the footer CLI signature: `$ cd ~/eduardoalvarez.dev/2026`. */
77
- domain: "eduardoalvarez.dev"
78
- };
77
+ domain: "eduardoalvarez.dev"};
79
78
 
80
79
  // src/og/templates.ts
81
80
  var OG = {
package/dist/og/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { ASSETS_PATH, faces, poses, fins } from '../chunk-CKRSQPTX.js';
2
- import { fonts, dark, light, naming, gradient, tagline, typeScale } from '../chunk-FGFNK72B.js';
2
+ import { fonts, dark, light, naming, gradient, tagline, typeScale } from '../chunk-5YWGOFDX.js';
3
3
 
4
4
  // src/og/templates.ts
5
5
  var OG = {
@@ -1,4 +1,4 @@
1
- import { syntax } from '../chunk-FGFNK72B.js';
1
+ import { syntax } from '../chunk-5YWGOFDX.js';
2
2
 
3
3
  // src/shiki/theme.ts
4
4
  var arrecife = {
@@ -146,7 +146,7 @@ var typeScale = {
146
146
  * (plankton 5.57:1 over abyss), which is the part that is not negotiable.
147
147
  *
148
148
  * At 13 the three badge families grew past the size of a small button and
149
- * outweighed the title they accompany. See `docs/decisions/`.
149
+ * outweighed the title they accompany. See `docs/decisions/` § 10.
150
150
  */
151
151
  chip: { family: "mono", size: 11.5, lineHeight: 1.4, weight: 400 },
152
152
  /**
@@ -200,7 +200,7 @@ var control = {
200
200
  * baseline; 28 would have been a fifth height that matches nothing.
201
201
  *
202
202
  * It does not replace `icon`. A page's primary action stays at 42; this is for
203
- * a row of a table. See `docs/decisions/0.6.md` § 22.
203
+ * a row of a table. See `docs/decisions/` § 22.
204
204
  */
205
205
  iconSm: 32
206
206
  };
@@ -223,7 +223,7 @@ var size = {
223
223
  * together eat the top of the content area. 56 is what `cursos` had arrived at
224
224
  * on its own, and it is the same reasoning as `control.iconSm`: the one admin
225
225
  * app of the five is denser than the four reading sites. See
226
- * `docs/decisions/0.7.md` § 30.
226
+ * `docs/decisions/` § 30.
227
227
  */
228
228
  navCompact: 56,
229
229
  /**
@@ -296,7 +296,20 @@ var naming = {
296
296
  wordmark: "Eduardo \xC1lvarez",
297
297
  mascot: "Tiburonc\xEDn",
298
298
  /** The domain, for the footer CLI signature: `$ cd ~/eduardoalvarez.dev/2026`. */
299
- domain: "eduardoalvarez.dev"
299
+ domain: "eduardoalvarez.dev",
300
+ /** The library's own name, for a footer that credits it. */
301
+ library: "Arrecife",
302
+ /**
303
+ * Where the library is published, for `Footer builtWith`.
304
+ *
305
+ * It is here and not written into the component for the reason the domain is:
306
+ * one string, five projects. It is the same URL as `homepage` in
307
+ * `package.json` and it cannot be derived from it — this file imports nothing
308
+ * — so `check:exports` compares the two on every build. Without that, moving
309
+ * the Storybook would update what npm prints and leave five production
310
+ * footers linking at the old address.
311
+ */
312
+ libraryUrl: "https://arrecife.eduardoalvarez.dev"
300
313
  };
301
314
 
302
315
  // src/tokens/index.ts
@@ -280,7 +280,7 @@ declare const typeScale: {
280
280
  * (plankton 5.57:1 over abyss), which is the part that is not negotiable.
281
281
  *
282
282
  * At 13 the three badge families grew past the size of a small button and
283
- * outweighed the title they accompany. See `docs/decisions/`.
283
+ * outweighed the title they accompany. See `docs/decisions/` § 10.
284
284
  */
285
285
  readonly chip: {
286
286
  readonly family: "mono";
@@ -336,7 +336,7 @@ declare const radius: {
336
336
  *
337
337
  * Only the horizontal padding and the icon button's square. Height comes from
338
338
  * the type scale, and there is a single radius for all three sizes: see
339
- * `docs/decisions/`.
339
+ * `docs/decisions/` § 1.
340
340
  *
341
341
  * They are not in `spacing` because they are not page rhythm: 14, 22 and 30 do
342
342
  * not compose with 8/12/16/26/40 and must not be offered as margins.
@@ -360,7 +360,7 @@ declare const control: {
360
360
  * baseline; 28 would have been a fifth height that matches nothing.
361
361
  *
362
362
  * It does not replace `icon`. A page's primary action stays at 42; this is for
363
- * a row of a table. See `docs/decisions/0.6.md` § 22.
363
+ * a row of a table. See `docs/decisions/` § 22.
364
364
  */
365
365
  readonly iconSm: 32;
366
366
  };
@@ -405,7 +405,7 @@ declare const size: {
405
405
  * together eat the top of the content area. 56 is what `cursos` had arrived at
406
406
  * on its own, and it is the same reasoning as `control.iconSm`: the one admin
407
407
  * app of the five is denser than the four reading sites. See
408
- * `docs/decisions/0.7.md` § 30.
408
+ * `docs/decisions/` § 30.
409
409
  */
410
410
  readonly navCompact: 56;
411
411
  /**
@@ -488,7 +488,7 @@ declare const syntax: {
488
488
  *
489
489
  * A fifth series is not added by inventing a hue. If a chart needs five
490
490
  * categories, either there are too many categories or they need an «other»
491
- * bucket: see `docs/decisions/`.
491
+ * bucket: see `docs/decisions/` § 18.
492
492
  */
493
493
  declare const series: {
494
494
  readonly dark: readonly ["#35D6C0", "#F2A65A", "#3E7CB1", "#71919C"];
@@ -538,6 +538,19 @@ declare const naming: {
538
538
  readonly mascot: "Tiburoncín";
539
539
  /** The domain, for the footer CLI signature: `$ cd ~/eduardoalvarez.dev/2026`. */
540
540
  readonly domain: "eduardoalvarez.dev";
541
+ /** The library's own name, for a footer that credits it. */
542
+ readonly library: "Arrecife";
543
+ /**
544
+ * Where the library is published, for `Footer builtWith`.
545
+ *
546
+ * It is here and not written into the component for the reason the domain is:
547
+ * one string, five projects. It is the same URL as `homepage` in
548
+ * `package.json` and it cannot be derived from it — this file imports nothing
549
+ * — so `check:exports` compares the two on every build. Without that, moving
550
+ * the Storybook would update what npm prints and leave five production
551
+ * footers linking at the old address.
552
+ */
553
+ readonly libraryUrl: "https://arrecife.eduardoalvarez.dev";
541
554
  };
542
555
  type ColorMode = keyof typeof colors;
543
556
  type ColorToken = keyof typeof dark;
@@ -782,6 +795,8 @@ declare const tokens: {
782
795
  readonly wordmark: "Eduardo Álvarez";
783
796
  readonly mascot: "Tiburoncín";
784
797
  readonly domain: "eduardoalvarez.dev";
798
+ readonly library: "Arrecife";
799
+ readonly libraryUrl: "https://arrecife.eduardoalvarez.dev";
785
800
  };
786
801
  };
787
802
  type Tokens = typeof tokens;
@@ -280,7 +280,7 @@ declare const typeScale: {
280
280
  * (plankton 5.57:1 over abyss), which is the part that is not negotiable.
281
281
  *
282
282
  * At 13 the three badge families grew past the size of a small button and
283
- * outweighed the title they accompany. See `docs/decisions/`.
283
+ * outweighed the title they accompany. See `docs/decisions/` § 10.
284
284
  */
285
285
  readonly chip: {
286
286
  readonly family: "mono";
@@ -336,7 +336,7 @@ declare const radius: {
336
336
  *
337
337
  * Only the horizontal padding and the icon button's square. Height comes from
338
338
  * the type scale, and there is a single radius for all three sizes: see
339
- * `docs/decisions/`.
339
+ * `docs/decisions/` § 1.
340
340
  *
341
341
  * They are not in `spacing` because they are not page rhythm: 14, 22 and 30 do
342
342
  * not compose with 8/12/16/26/40 and must not be offered as margins.
@@ -360,7 +360,7 @@ declare const control: {
360
360
  * baseline; 28 would have been a fifth height that matches nothing.
361
361
  *
362
362
  * It does not replace `icon`. A page's primary action stays at 42; this is for
363
- * a row of a table. See `docs/decisions/0.6.md` § 22.
363
+ * a row of a table. See `docs/decisions/` § 22.
364
364
  */
365
365
  readonly iconSm: 32;
366
366
  };
@@ -405,7 +405,7 @@ declare const size: {
405
405
  * together eat the top of the content area. 56 is what `cursos` had arrived at
406
406
  * on its own, and it is the same reasoning as `control.iconSm`: the one admin
407
407
  * app of the five is denser than the four reading sites. See
408
- * `docs/decisions/0.7.md` § 30.
408
+ * `docs/decisions/` § 30.
409
409
  */
410
410
  readonly navCompact: 56;
411
411
  /**
@@ -488,7 +488,7 @@ declare const syntax: {
488
488
  *
489
489
  * A fifth series is not added by inventing a hue. If a chart needs five
490
490
  * categories, either there are too many categories or they need an «other»
491
- * bucket: see `docs/decisions/`.
491
+ * bucket: see `docs/decisions/` § 18.
492
492
  */
493
493
  declare const series: {
494
494
  readonly dark: readonly ["#35D6C0", "#F2A65A", "#3E7CB1", "#71919C"];
@@ -538,6 +538,19 @@ declare const naming: {
538
538
  readonly mascot: "Tiburoncín";
539
539
  /** The domain, for the footer CLI signature: `$ cd ~/eduardoalvarez.dev/2026`. */
540
540
  readonly domain: "eduardoalvarez.dev";
541
+ /** The library's own name, for a footer that credits it. */
542
+ readonly library: "Arrecife";
543
+ /**
544
+ * Where the library is published, for `Footer builtWith`.
545
+ *
546
+ * It is here and not written into the component for the reason the domain is:
547
+ * one string, five projects. It is the same URL as `homepage` in
548
+ * `package.json` and it cannot be derived from it — this file imports nothing
549
+ * — so `check:exports` compares the two on every build. Without that, moving
550
+ * the Storybook would update what npm prints and leave five production
551
+ * footers linking at the old address.
552
+ */
553
+ readonly libraryUrl: "https://arrecife.eduardoalvarez.dev";
541
554
  };
542
555
  type ColorMode = keyof typeof colors;
543
556
  type ColorToken = keyof typeof dark;
@@ -782,6 +795,8 @@ declare const tokens: {
782
795
  readonly wordmark: "Eduardo Álvarez";
783
796
  readonly mascot: "Tiburoncín";
784
797
  readonly domain: "eduardoalvarez.dev";
798
+ readonly library: "Arrecife";
799
+ readonly libraryUrl: "https://arrecife.eduardoalvarez.dev";
785
800
  };
786
801
  };
787
802
  type Tokens = typeof tokens;
@@ -1,2 +1,2 @@
1
- export { tokens } from '../chunk-5A5GH2PF.js';
2
- export { brand, colors, control, dark, fonts, gradient, light, limits, motion, naming, radius, series, shadow, size, spacing, syntax, tagline, typeScale } from '../chunk-FGFNK72B.js';
1
+ export { tokens } from '../chunk-6QJQ6K7J.js';
2
+ export { brand, colors, control, dark, fonts, gradient, light, limits, motion, naming, radius, series, shadow, size, spacing, syntax, tagline, typeScale } from '../chunk-5YWGOFDX.js';
@@ -18,7 +18,24 @@
18
18
  @custom-variant dark (&:where([data-theme="dark"], [data-theme="dark"] *));
19
19
  @custom-variant light (&:where([data-theme="light"], [data-theme="light"] *));
20
20
 
21
- @theme {
21
+ /* STATIC, and that word is the whole of a bug fix. Tailwind v4 emits a theme
22
+ variable only if some utility it generated uses it, and a token read with
23
+ var() from JS is asked for by no utility at all: seriesColor(i) returns
24
+ var(--color-series-N) on purpose, so the color follows the mode instead of
25
+ freezing to whichever one was live when the chart mounted. No project writes
26
+ bg-series-1, so Tailwind dropped all four as unused, the var() resolved to
27
+ nothing, and a fill that resolves to nothing is black — on a dark page,
28
+ indistinguishable from «no data». No error in the console and none in the
29
+ build; the report that arrived was «the information is not showing».
30
+
31
+ With static, every token this file declares reaches :root whether a class
32
+ asks for it or not, which is what a published token set is: a contract, not
33
+ a subset of itself discovered by usage. It costs CSS — measured at +1.6 KB
34
+ raw / +234 B gzipped for a project using the library's whole vocabulary, and
35
+ +3.2 KB / +579 B for one that writes almost nothing — and it buys the
36
+ removal of a whole class of silent failure rather than of one instance.
37
+ See docs/decisions/ § 61. */
38
+ @theme static {
22
39
  /* --- color · dark mode (default) ------------------------------------- */
23
40
  --color-background: #091319;
24
41
  --color-surface: #10202B;
@@ -265,7 +282,7 @@
265
282
  written from first principles about terminals rather than read off the two
266
283
  sites that already had a signature. A utility with no consumer and no origin
267
284
  is not a feature, it is the invention still sitting there under a new label.
268
- See docs/decisions/0.8.md § 45.
285
+ See docs/decisions/ § 45.
269
286
 
270
287
  Its reason is the one the other four exceptions share: it is feedback about
271
288
  PROGRESS. A prompt that radiates says the terminal is live, which is the same
@@ -283,7 +300,7 @@
283
300
  Behind motion-safe at the call site — the half NOT copied from cursos, whose
284
301
  span animates regardless. The blog guarded it, every other exception here is
285
302
  guarded, and at rest the bar is simply solid.
286
- See docs/decisions/0.8.md § 45. */
303
+ See docs/decisions/ § 45. */
287
304
  @keyframes arrecife-pulse {
288
305
  0%, 100% {
289
306
  box-shadow: 0 0 0 0 color-mix(in oklab, var(--color-accent) 70%, transparent);
@@ -21,7 +21,7 @@ var button = classVarianceAuthority.cva(
21
21
  ],
22
22
  // The one control whose focus ring is not biolume. It is the system's
23
23
  // only sand fill, and a biolume ring three pixels off a sand button puts
24
- // both of the brand's accents in the same glance. See `docs/decisions/0.7.md` § 37.
24
+ // both of the brand's accents in the same glance. See `docs/decisions/` § 37.
25
25
  conversion: "bg-warm text-warm-on hover:bg-warm-hover focus-ring-warm",
26
26
  secondary: [
27
27
  "border-hairline-hover border bg-transparent text-text-primary",
@@ -32,7 +32,7 @@ import * as class_variance_authority_types from 'class-variance-authority/types'
32
32
  * actions and toolbars, next to «Editar» and «Duplicar», with no context to tell
33
33
  * them apart: with every one rendered as `secondary`, «Eliminar curso» looked
34
34
  * exactly like «Cancelar» and only the word separated them. See
35
- * `docs/decisions/0.6.md` § 21.
35
+ * `docs/decisions/` § 21.
36
36
  *
37
37
  * `destructiveOutline` fills on hover, and that IS an exception to «secondary is
38
38
  * never filled» — declared here rather than discovered later. A destructive
@@ -151,7 +151,7 @@ declare const text: (props?: ({
151
151
  *
152
152
  * The radius: the document says 12, which is none of the system's five radii. It
153
153
  * uses the card radius rather than introducing a sixth — see
154
- * `docs/decisions/`.
154
+ * `docs/decisions/` § 3.
155
155
  */
156
156
  declare const alert: (props?: ({
157
157
  variant?: "error" | "accent" | "success" | "warning" | null | undefined;
@@ -32,7 +32,7 @@ import * as class_variance_authority_types from 'class-variance-authority/types'
32
32
  * actions and toolbars, next to «Editar» and «Duplicar», with no context to tell
33
33
  * them apart: with every one rendered as `secondary`, «Eliminar curso» looked
34
34
  * exactly like «Cancelar» and only the word separated them. See
35
- * `docs/decisions/0.6.md` § 21.
35
+ * `docs/decisions/` § 21.
36
36
  *
37
37
  * `destructiveOutline` fills on hover, and that IS an exception to «secondary is
38
38
  * never filled» — declared here rather than discovered later. A destructive
@@ -151,7 +151,7 @@ declare const text: (props?: ({
151
151
  *
152
152
  * The radius: the document says 12, which is none of the system's five radii. It
153
153
  * uses the card radius rather than introducing a sixth — see
154
- * `docs/decisions/`.
154
+ * `docs/decisions/` § 3.
155
155
  */
156
156
  declare const alert: (props?: ({
157
157
  variant?: "error" | "accent" | "success" | "warning" | null | undefined;
@@ -1,2 +1,2 @@
1
- export { CARD, CARD_HOVER, CARD_SURFACE, alert as alertVariants, avatar as avatarVariants, badge as badgeVariants, button as buttonVariants, category as categoryBadgeVariants, metric as metricBadgeVariants } from '../chunk-XXDATT3A.js';
1
+ export { CARD, CARD_HOVER, CARD_SURFACE, alert as alertVariants, avatar as avatarVariants, badge as badgeVariants, button as buttonVariants, category as categoryBadgeVariants, metric as metricBadgeVariants } from '../chunk-FF33ARRA.js';
2
2
  export { text as textVariants } from '../chunk-ODBFN44D.js';