@eduardoalvarez/arrecife 0.7.0 → 0.9.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 (56) hide show
  1. package/CHANGELOG.md +51 -0
  2. package/README.md +115 -41
  3. package/dist/brand/index.cjs +2 -2
  4. package/dist/brand/index.js +3 -3
  5. package/dist/chart/index.cjs +155 -2
  6. package/dist/chart/index.d.cts +136 -4
  7. package/dist/chart/index.d.ts +136 -4
  8. package/dist/chart/index.js +155 -5
  9. package/dist/{chunk-TA7TLWW4.js → chunk-5A5GH2PF.js} +1 -1
  10. package/dist/{chunk-727HCBD4.js → chunk-6IGD5REB.js} +1 -1
  11. package/dist/{chunk-2WPWEIMD.js → chunk-FAAGZG7A.js} +1 -1
  12. package/dist/{chunk-OMKSESQB.js → chunk-FGFNK72B.js} +3 -3
  13. package/dist/chunk-HOADZ6GS.js +72 -0
  14. package/dist/chunk-LXRGQKMG.js +145 -0
  15. package/dist/{chunk-JN3IS5OS.js → chunk-MPZBF2TZ.js} +2 -2
  16. package/dist/{chunk-WGNIRIN7.js → chunk-TRPBID2W.js} +1 -1
  17. package/dist/{chunk-E6KFUSKB.js → chunk-XXDATT3A.js} +1 -1
  18. package/dist/doctor.mjs +95 -13
  19. package/dist/form/index.cjs +2 -2
  20. package/dist/form/index.d.cts +1 -1
  21. package/dist/form/index.d.ts +1 -1
  22. package/dist/form/index.js +4 -4
  23. package/dist/icons/index.cjs +2 -2
  24. package/dist/icons/index.d.cts +2 -2
  25. package/dist/icons/index.d.ts +2 -2
  26. package/dist/icons/index.js +2 -2
  27. package/dist/{index-DlAO2JZs.d.cts → index-BbRplw_B.d.cts} +15 -4
  28. package/dist/{index-DlAO2JZs.d.ts → index-BbRplw_B.d.ts} +15 -4
  29. package/dist/index.cjs +264 -264
  30. package/dist/index.d.cts +212 -126
  31. package/dist/index.d.ts +212 -126
  32. package/dist/index.js +153 -236
  33. package/dist/{label-MgHFKnFy.d.ts → label-DJ4HuD-R.d.cts} +3 -2
  34. package/dist/{label-MgHFKnFy.d.cts → label-DJ4HuD-R.d.ts} +3 -2
  35. package/dist/og/index.js +1 -1
  36. package/dist/shiki/index.js +1 -1
  37. package/dist/social/data.cjs +161 -0
  38. package/dist/social/data.d.cts +161 -0
  39. package/dist/social/data.d.ts +161 -0
  40. package/dist/social/data.js +2 -0
  41. package/dist/social/index.cjs +124 -38
  42. package/dist/social/index.d.cts +1 -1
  43. package/dist/social/index.d.ts +1 -1
  44. package/dist/social/index.js +2 -1
  45. package/dist/tokens/index.cjs +3 -3
  46. package/dist/tokens/index.d.cts +5 -5
  47. package/dist/tokens/index.d.ts +5 -5
  48. package/dist/tokens/index.js +2 -2
  49. package/dist/tokens/theme.css +46 -19
  50. package/dist/variants/index.cjs +1 -1
  51. package/dist/variants/index.d.cts +2 -2
  52. package/dist/variants/index.d.ts +2 -2
  53. package/dist/variants/index.js +1 -1
  54. package/llms.txt +264 -140
  55. package/package.json +6 -1
  56. package/dist/chunk-45HVCTB7.js +0 -70
package/dist/index.js CHANGED
@@ -1,30 +1,31 @@
1
1
  'use client';
2
- import { Label } from './chunk-727HCBD4.js';
3
- export { Label } from './chunk-727HCBD4.js';
4
- import { Text } from './chunk-WGNIRIN7.js';
5
- export { Text } from './chunk-WGNIRIN7.js';
6
- export { tokens } from './chunk-TA7TLWW4.js';
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';
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-E6KFUSKB.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-E6KFUSKB.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';
11
11
  export { text as textVariants } from './chunk-ODBFN44D.js';
12
- import { MascotFace, Mascot } from './chunk-JN3IS5OS.js';
13
- export { Isotype, Logo, Mascot, MascotFace } from './chunk-JN3IS5OS.js';
14
- export { social_exports as social } from './chunk-45HVCTB7.js';
15
- import { cn } from './chunk-2WPWEIMD.js';
16
- export { cn } from './chunk-2WPWEIMD.js';
12
+ import { MascotFace, Mascot } from './chunk-MPZBF2TZ.js';
13
+ export { Isotype, Logo, Mascot, MascotFace } from './chunk-MPZBF2TZ.js';
17
14
  export { ASSETS_PATH, faceList, faceUsage, faces, fins, poseList, poses } from './chunk-CKRSQPTX.js';
18
- import { naming } from './chunk-OMKSESQB.js';
19
- export { brand, colors, control, dark, fonts, gradient, light, limits, motion, naming, radius, series, shadow, size, spacing, syntax, tagline, typeScale } from './chunk-OMKSESQB.js';
15
+ export { social_exports as social } from './chunk-HOADZ6GS.js';
16
+ import './chunk-LXRGQKMG.js';
17
+ import { cn } from './chunk-FAAGZG7A.js';
18
+ export { cn } from './chunk-FAAGZG7A.js';
19
+ import { naming } from './chunk-FGFNK72B.js';
20
+ export { brand, colors, control, dark, fonts, gradient, light, limits, motion, naming, radius, series, shadow, size, spacing, syntax, tagline, typeScale } from './chunk-FGFNK72B.js';
20
21
  import './chunk-MLKGABMK.js';
21
22
  import * as AccordionPrimitive from '@radix-ui/react-accordion';
22
23
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
23
24
  import { cva } from 'class-variance-authority';
24
25
  import * as AlertDialogPrimitive from '@radix-ui/react-alert-dialog';
25
26
  import * as AvatarPrimitive from '@radix-ui/react-avatar';
26
- import { createContext, useId, useState, useEffect, useSyncExternalStore, useRef, useCallback, useContext } from 'react';
27
- import { Slot } from '@radix-ui/react-slot';
27
+ import { useId, useState, useEffect, useSyncExternalStore, useRef, useCallback } from 'react';
28
+ import { Slot, Slottable } from '@radix-ui/react-slot';
28
29
  import { es } from 'date-fns/locale';
29
30
  import { DayPicker } from 'react-day-picker';
30
31
  import * as CheckboxPrimitive from '@radix-ui/react-checkbox';
@@ -1239,7 +1240,7 @@ function Switch({ className, ...props }) {
1239
1240
  );
1240
1241
  }
1241
1242
  function Table({ className, ...props }) {
1242
- return /* @__PURE__ */ jsx("div", { className: "w-full overflow-x-auto", children: /* @__PURE__ */ jsx(
1243
+ return /* @__PURE__ */ jsx("div", { tabIndex: 0, className: "rounded-card border-hairline focus-ring w-full overflow-x-auto border", children: /* @__PURE__ */ jsx(
1243
1244
  "table",
1244
1245
  {
1245
1246
  className: cn("w-full caption-bottom border-collapse font-sans text-ui", className),
@@ -1292,7 +1293,13 @@ function TableCell({ className, ...props }) {
1292
1293
  return /* @__PURE__ */ jsx("td", { className: cn("px-step-sm py-step-sm text-text-secondary align-middle", className), ...props });
1293
1294
  }
1294
1295
  function TableCaption({ className, ...props }) {
1295
- return /* @__PURE__ */ jsx("caption", { className: cn("mt-step-sm text-label text-text-muted", className), ...props });
1296
+ return /* @__PURE__ */ jsx(
1297
+ "caption",
1298
+ {
1299
+ className: cn("px-step-sm pt-step-sm pb-step-sm text-label text-text-muted", className),
1300
+ ...props
1301
+ }
1302
+ );
1296
1303
  }
1297
1304
  function Tabs({ className, ...props }) {
1298
1305
  return /* @__PURE__ */ jsx(TabsPrimitive.Root, { className: cn("gap-step-md flex flex-col", className), ...props });
@@ -1552,11 +1559,20 @@ function ArticleCard({
1552
1559
  " min de lectura"
1553
1560
  ] }, "lectura") : null
1554
1561
  ].filter(Boolean);
1555
- return /* @__PURE__ */ jsx(CardShell, { className: cn("p-step-lg", className), ...props, children: /* @__PURE__ */ jsxs("article", { className: "gap-step-sm flex h-full flex-col", children: [
1556
- meta.length > 0 ? /* @__PURE__ */ jsx(Text, { variant: "meta", tone: "muted", as: "p", className: "gap-step-xs flex items-center", children: meta.map((m, i) => /* @__PURE__ */ jsxs("span", { className: "gap-step-xs flex items-center", children: [
1557
- i > 0 ? /* @__PURE__ */ jsx("span", { "aria-hidden": "true", children: "\xB7" }) : null,
1558
- m
1559
- ] }, i)) }) : null,
1562
+ return /* @__PURE__ */ jsx(CardShell, { className: cn("p-step-lg", className), ...props, children: /* @__PURE__ */ jsxs("article", { className: "flex flex-col h-full gap-step-sm", children: [
1563
+ meta.length > 0 ? /* @__PURE__ */ jsx(
1564
+ Text,
1565
+ {
1566
+ variant: "meta",
1567
+ tone: "muted",
1568
+ as: "p",
1569
+ className: "flex items-center gap-step-xs",
1570
+ children: meta.map((m, i) => /* @__PURE__ */ jsxs("span", { className: "flex items-center gap-step-xs", children: [
1571
+ i > 0 ? /* @__PURE__ */ jsx("span", { "aria-hidden": "true", children: "\xB7" }) : null,
1572
+ m
1573
+ ] }, i))
1574
+ }
1575
+ ) : null,
1560
1576
  /* @__PURE__ */ jsx(
1561
1577
  Text,
1562
1578
  {
@@ -1567,8 +1583,15 @@ function ArticleCard({
1567
1583
  }
1568
1584
  ),
1569
1585
  excerpt ? /* @__PURE__ */ jsx(Text, { variant: "ui", tone: "secondary", className: "line-clamp-2", children: excerpt }) : null,
1570
- tags && tags.length > 0 ? /* @__PURE__ */ jsx("div", { className: "gap-step-xs mt-auto flex flex-wrap pt-step-sm", children: tags.map(
1571
- (t) => tagAsChild ? /* @__PURE__ */ jsx(Slot, { className: category({ active: false }), children: tagAsChild({ tag: t, children: t }) }, t) : /* @__PURE__ */ jsx(CategoryBadge, { children: t }, t)
1586
+ tags && tags.length > 0 ? /* @__PURE__ */ jsx("div", { className: "flex flex-wrap mt-auto gap-step-xs pt-step-sm", children: tags.map(
1587
+ (t) => tagAsChild ? /* @__PURE__ */ jsx(
1588
+ Slot,
1589
+ {
1590
+ className: category({ active: false }),
1591
+ children: tagAsChild({ tag: t, children: t })
1592
+ },
1593
+ t
1594
+ ) : /* @__PURE__ */ jsx(CategoryBadge, { children: t }, t)
1572
1595
  ) }) : null
1573
1596
  ] }) });
1574
1597
  }
@@ -2470,73 +2493,131 @@ function EventCalendar({
2470
2493
  )
2471
2494
  ] });
2472
2495
  }
2473
- function Footer({
2474
- social,
2475
- year = (/* @__PURE__ */ new Date()).getFullYear(),
2476
- children,
2477
- brand: brand2,
2478
- className,
2479
- ...props
2496
+ function SocialRow({ social }) {
2497
+ return /* @__PURE__ */ jsx("ul", { className: "flex flex-wrap items-center gap-[18px]", children: social.map((socialLink) => /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsx(
2498
+ "a",
2499
+ {
2500
+ href: socialLink.href,
2501
+ "aria-label": socialLink.label,
2502
+ className: cn(
2503
+ "text-text-muted hover:text-accent transition-standard block cursor-pointer text-[19px]",
2504
+ "rounded-chip focus-ring"
2505
+ ),
2506
+ children: socialLink.icon
2507
+ }
2508
+ ) }, socialLink.href)) });
2509
+ }
2510
+ function Signature({
2511
+ year,
2512
+ href,
2513
+ domain: domainName = naming.domain,
2514
+ className
2480
2515
  }) {
2481
- const signature = /* @__PURE__ */ jsxs(Text, { variant: "meta", tone: "muted", as: "p", className: "ml-auto shrink-0", children: [
2516
+ const domain = href ? /* @__PURE__ */ jsx(
2517
+ "a",
2518
+ {
2519
+ href,
2520
+ className: "text-accent hover:text-text-primary transition-standard rounded-chip focus-ring cursor-pointer",
2521
+ children: domainName
2522
+ }
2523
+ ) : domainName;
2524
+ return /* @__PURE__ */ jsxs(Text, { variant: "meta", tone: "muted", as: "p", className: cn("shrink-0", className), children: [
2482
2525
  /* @__PURE__ */ jsxs("span", { "aria-hidden": "true", className: "text-accent", children: [
2483
2526
  "$",
2484
2527
  " "
2485
2528
  ] }),
2486
2529
  "cd ~/",
2487
- naming.domain,
2530
+ domain,
2488
2531
  "/",
2489
2532
  year,
2490
2533
  /* @__PURE__ */ jsx(
2491
2534
  "span",
2492
2535
  {
2493
2536
  "aria-hidden": "true",
2494
- className: "bg-accent motion-safe:caret ml-[0.2em] inline-block h-[1em] w-[0.5em] translate-y-[0.15em]"
2537
+ className: "bg-accent motion-safe:pulse-accent rounded-pill ml-1 inline-block h-[1em] w-[2px] align-middle"
2495
2538
  }
2496
2539
  )
2497
2540
  ] });
2498
- const rows = [
2499
- brand2 ? /* @__PURE__ */ jsx("div", { className: "flex items-center", children: brand2 }, "marca") : null,
2500
- children ? /* @__PURE__ */ jsx("div", { className: "gap-step-md flex flex-wrap items-center", children }, "enlaces") : null,
2501
- social && social.length > 0 ? (
2502
- // 18px of separation, from the document. It is not a `spacing` step: it is
2503
- // the rhythm of a row of icons, not that of a page.
2504
- /* @__PURE__ */ jsx("ul", { className: "flex items-center gap-[18px]", children: social.map((socialLink) => /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsx(
2541
+ }
2542
+ function Shell({
2543
+ className,
2544
+ contentClassName,
2545
+ children,
2546
+ ...props
2547
+ }) {
2548
+ return /* @__PURE__ */ jsx("footer", { className: cn("border-hairline w-full border-t", className), ...props, children: /* @__PURE__ */ jsx(
2549
+ "div",
2550
+ {
2551
+ className: cn("max-w-wide px-step-md py-step-xl mx-auto flex flex-col", contentClassName),
2552
+ children
2553
+ }
2554
+ ) });
2555
+ }
2556
+ function Footer({
2557
+ variant,
2558
+ columns,
2559
+ description,
2560
+ action,
2561
+ linkAsChild,
2562
+ social,
2563
+ brand: brand2,
2564
+ year = (/* @__PURE__ */ new Date()).getFullYear(),
2565
+ signatureHref,
2566
+ domain,
2567
+ className,
2568
+ ...rest
2569
+ }) {
2570
+ if (variant === "full") {
2571
+ const link = (href, external, content) => {
2572
+ const classes = cn(
2573
+ "font-mono text-meta text-text-secondary hover:text-accent transition-standard cursor-pointer",
2574
+ "rounded-chip focus-ring"
2575
+ );
2576
+ const inner = /* @__PURE__ */ jsxs(Fragment, { children: [
2577
+ /* @__PURE__ */ jsx("span", { "aria-hidden": "true", className: "text-text-muted", children: "./" }),
2578
+ content
2579
+ ] });
2580
+ if (linkAsChild) {
2581
+ return /* @__PURE__ */ jsx(Slot, { className: classes, children: linkAsChild({ href, children: inner }) });
2582
+ }
2583
+ return /* @__PURE__ */ jsx(
2505
2584
  "a",
2506
2585
  {
2507
- href: socialLink.href,
2508
- "aria-label": socialLink.label,
2509
- className: cn(
2510
- "text-text-muted hover:text-accent transition-standard block cursor-pointer text-[19px]",
2511
- "rounded-chip focus-ring"
2512
- ),
2513
- children: socialLink.icon
2586
+ href,
2587
+ className: classes,
2588
+ ...external ? { target: "_blank", rel: "noopener noreferrer" } : {},
2589
+ children: inner
2514
2590
  }
2515
- ) }, socialLink.href)) }, "socialLinks")
2516
- ) : null
2591
+ );
2592
+ };
2593
+ return /* @__PURE__ */ jsxs(Shell, { className, ...rest, children: [
2594
+ /* @__PURE__ */ jsxs("div", { className: "gap-step-xl flex flex-col md:flex-row md:justify-between", children: [
2595
+ /* @__PURE__ */ jsxs("div", { className: "gap-step-md flex max-w-xs flex-col", children: [
2596
+ brand2,
2597
+ description ? /* @__PURE__ */ jsx(Text, { variant: "ui", tone: "secondary", as: "p", children: description }) : null,
2598
+ social && social.length > 0 ? /* @__PURE__ */ jsx(SocialRow, { social }) : null,
2599
+ action
2600
+ ] }),
2601
+ /* @__PURE__ */ jsx("div", { className: "gap-step-lg grid grid-cols-2 sm:grid-cols-3", children: columns.map((column) => /* @__PURE__ */ jsxs("div", { className: "gap-step-sm flex flex-col", children: [
2602
+ /* @__PURE__ */ jsx(Text, { variant: "eyebrow", tone: "muted", as: "h3", children: column.title }),
2603
+ /* @__PURE__ */ jsx("ul", { className: "gap-step-xs flex flex-col", children: column.links.map((columnLink) => /* @__PURE__ */ jsx("li", { children: link(columnLink.href, columnLink.external, columnLink.label) }, columnLink.href)) })
2604
+ ] }, column.title)) })
2605
+ ] }),
2606
+ /* @__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" }) })
2607
+ ] });
2608
+ }
2609
+ const rows = [
2610
+ brand2 ? /* @__PURE__ */ jsx("div", { className: "flex items-center", children: brand2 }, "brand") : null,
2611
+ social && social.length > 0 ? /* @__PURE__ */ jsx(SocialRow, { social }, "social") : null
2517
2612
  ].filter(Boolean);
2518
- const [first, ...rest] = rows;
2519
- return /* @__PURE__ */ jsx("footer", { className: cn("border-hairline w-full border-t", className), ...props, children: /* @__PURE__ */ jsxs("div", { className: "max-w-wide px-step-md py-step-xl gap-step-lg mx-auto flex flex-col", children: [
2613
+ const [first, ...others] = rows;
2614
+ return /* @__PURE__ */ jsxs(Shell, { className, contentClassName: "gap-step-lg", ...rest, children: [
2520
2615
  /* @__PURE__ */ jsxs("div", { className: "gap-step-md flex flex-wrap items-center", children: [
2521
2616
  first ?? null,
2522
- signature
2617
+ /* @__PURE__ */ jsx(Signature, { year, href: signatureHref, domain, className: "ml-auto" })
2523
2618
  ] }),
2524
- rest
2525
- ] }) });
2526
- }
2527
- function FooterLink({ asChild = false, className, ...props }) {
2528
- const Root17 = asChild ? Slot : "a";
2529
- return /* @__PURE__ */ jsx(
2530
- Root17,
2531
- {
2532
- className: cn(
2533
- "font-mono text-meta text-text-secondary hover:text-accent transition-standard cursor-pointer",
2534
- "rounded-chip focus-ring",
2535
- className
2536
- ),
2537
- ...props
2538
- }
2539
- );
2619
+ others
2620
+ ] });
2540
2621
  }
2541
2622
  function Hero({
2542
2623
  title,
@@ -2693,7 +2774,7 @@ function NavItem({ active = false, asChild = false, className, children, ...prop
2693
2774
  children: [
2694
2775
  active ? /* @__PURE__ */ jsx("span", { "aria-hidden": "true", className: "text-accent", children: "[" }) : null,
2695
2776
  /* @__PURE__ */ jsx("span", { "aria-hidden": "true", className: active ? "text-accent" : "text-text-muted", children: "./" }),
2696
- children,
2777
+ /* @__PURE__ */ jsx(Slottable, { children }),
2697
2778
  active ? /* @__PURE__ */ jsx("span", { "aria-hidden": "true", className: "text-accent", children: "]" }) : null
2698
2779
  ]
2699
2780
  }
@@ -2907,170 +2988,6 @@ function ScrollingProgressBar({
2907
2988
  }
2908
2989
  );
2909
2990
  }
2910
- var Collapsed = createContext(false);
2911
- function SidebarItem({
2912
- active = false,
2913
- asChild = false,
2914
- badge: badge2,
2915
- icon,
2916
- className,
2917
- children,
2918
- ...props
2919
- }) {
2920
- const Root17 = asChild ? Slot : "a";
2921
- const collapsed = useContext(Collapsed);
2922
- return /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsxs(
2923
- Root17,
2924
- {
2925
- "aria-current": active ? "page" : void 0,
2926
- className: cn(
2927
- "rounded-chip px-step-sm gap-step-xs flex cursor-pointer items-center py-1.5",
2928
- collapsed && "justify-center",
2929
- "font-mono text-meta transition-standard",
2930
- "focus-ring",
2931
- // The active item is `surfaceRaised` with primary ink, same as
2932
- // `TabsTrigger`. NOT biolume: `tokens.ts` says so explicitly — light
2933
- // accent passes over background and over surface, but over
2934
- // surfaceRaised it measures 4.2 and is not a text color there. The
2935
- // accent stays on the `▸`, which is decorative and gets the 3:1
2936
- // threshold.
2937
- active ? "bg-surface-raised text-text-primary" : "text-text-secondary hover:text-text-primary hover:bg-surface-raised",
2938
- className
2939
- ),
2940
- ...props,
2941
- children: [
2942
- icon ? (
2943
- // A shade bigger than the 13px mono label, which is what keeps it
2944
- // reading as a glyph rather than as a character in the word.
2945
- /* @__PURE__ */ jsx("span", { "aria-hidden": "true", className: "text-body shrink-0", children: icon })
2946
- ) : /* @__PURE__ */ jsx("span", { "aria-hidden": "true", className: active ? "text-accent" : "text-text-muted", children: "\u25B8" }),
2947
- /* @__PURE__ */ jsx("span", { className: collapsed ? "sr-only" : "min-w-0 flex-1 truncate", children }),
2948
- badge2 ? /* @__PURE__ */ jsx("span", { className: cn("text-text-muted", collapsed ? "sr-only" : "shrink-0"), children: badge2 }) : null
2949
- ]
2950
- }
2951
- ) });
2952
- }
2953
- function SidebarGroup({ label, children, className, ...props }) {
2954
- const id = useId();
2955
- const collapsed = useContext(Collapsed);
2956
- return /* @__PURE__ */ jsxs(
2957
- "li",
2958
- {
2959
- className: cn(
2960
- "mt-step-md first:mt-0",
2961
- // In a rail the label has nowhere to go, so the block becomes a rule.
2962
- // The label itself stays in the accessibility tree naming the list.
2963
- collapsed && "border-hairline pt-step-md mt-step-sm border-t first:border-t-0",
2964
- className
2965
- ),
2966
- ...props,
2967
- children: [
2968
- /* @__PURE__ */ jsx(
2969
- Text,
2970
- {
2971
- variant: "meta",
2972
- tone: "muted",
2973
- as: "p",
2974
- id,
2975
- className: collapsed ? "sr-only" : "px-step-sm pb-step-xs",
2976
- children: label
2977
- }
2978
- ),
2979
- /* @__PURE__ */ jsx("ul", { "aria-labelledby": id, className: "gap-0.5 flex flex-col", children })
2980
- ]
2981
- }
2982
- );
2983
- }
2984
- function SidebarNav({
2985
- title,
2986
- brand: brand2,
2987
- mark,
2988
- user,
2989
- collapsed = false,
2990
- onCollapsedChange,
2991
- collapseLabel = "Plegar el panel",
2992
- expandLabel = "Desplegar el panel",
2993
- version,
2994
- branch,
2995
- children,
2996
- className,
2997
- ...props
2998
- }) {
2999
- const footer = [version, branch].filter(Boolean);
3000
- const top = collapsed ? mark : brand2;
3001
- return /* @__PURE__ */ jsx(Collapsed.Provider, { value: collapsed, children: /* @__PURE__ */ jsxs(
3002
- "nav",
3003
- {
3004
- "aria-label": typeof title === "string" ? title : "Administraci\xF3n",
3005
- className: cn(
3006
- "border-hairline bg-surface p-step-sm gap-step-sm flex h-full flex-col border-r",
3007
- // The width is the component's only when it can collapse: the layout
3008
- // beside it has to reserve one of the two, and it cannot know which.
3009
- // It does NOT transition. The system's only transition animates colour
3010
- // and border, and a rail that slides is the entrance animation this
3011
- // library does not have — same call as the `Switch` knob, which changes
3012
- // position without moving.
3013
- onCollapsedChange && (collapsed ? "w-sidebar-rail" : "w-sidebar"),
3014
- className
3015
- ),
3016
- ...props,
3017
- children: [
3018
- top || onCollapsedChange ? /* @__PURE__ */ jsxs(
3019
- "div",
3020
- {
3021
- className: cn(
3022
- "border-hairline px-step-sm pb-step-sm mb-step-xs gap-step-xs flex items-center border-b",
3023
- collapsed ? "justify-center" : "justify-between"
3024
- ),
3025
- children: [
3026
- top ? /* @__PURE__ */ jsx("span", { className: "min-w-0", children: top }) : null,
3027
- onCollapsedChange ? /* @__PURE__ */ jsx(
3028
- "button",
3029
- {
3030
- type: "button",
3031
- onClick: () => onCollapsedChange(!collapsed),
3032
- "aria-expanded": !collapsed,
3033
- "aria-label": collapsed ? expandLabel : collapseLabel,
3034
- className: cn(
3035
- "rounded-chip transition-standard shrink-0 cursor-pointer p-1",
3036
- "text-text-muted hover:text-text-primary hover:bg-surface-raised",
3037
- "focus-ring"
3038
- ),
3039
- children: collapsed ? /* @__PURE__ */ jsx(ChevronRight, {}) : /* @__PURE__ */ jsx(ChevronLeft, {})
3040
- }
3041
- ) : null
3042
- ]
3043
- }
3044
- ) : null,
3045
- title && !collapsed ? /* @__PURE__ */ jsx(Text, { variant: "eyebrow", tone: "muted", as: "p", className: "px-step-sm", children: title }) : null,
3046
- /* @__PURE__ */ jsx("ul", { className: "gap-0.5 flex flex-1 flex-col", children }),
3047
- user ? /* @__PURE__ */ jsx(
3048
- "div",
3049
- {
3050
- className: cn(
3051
- "border-hairline px-step-sm pt-step-sm border-t",
3052
- collapsed && "flex justify-center"
3053
- ),
3054
- children: user
3055
- }
3056
- ) : null,
3057
- footer.length > 0 && !collapsed ? /* @__PURE__ */ jsx(
3058
- Text,
3059
- {
3060
- variant: "meta",
3061
- tone: "muted",
3062
- as: "p",
3063
- className: cn("px-step-sm", user ? "" : "border-hairline pt-step-sm border-t"),
3064
- children: footer.map((p, i) => /* @__PURE__ */ jsxs("span", { children: [
3065
- i > 0 ? /* @__PURE__ */ jsx("span", { "aria-hidden": "true", children: " \xB7 " }) : null,
3066
- p
3067
- ] }, i))
3068
- }
3069
- ) : null
3070
- ]
3071
- }
3072
- ) });
3073
- }
3074
2991
  var DELTA = {
3075
2992
  up: { glyph: ChevronUp, label: "sube" },
3076
2993
  down: { glyph: ChevronDown, label: "baja" },
@@ -3248,4 +3165,4 @@ function TableOfContents({
3248
3165
  ] });
3249
3166
  }
3250
3167
 
3251
- export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, Alert, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogTitle, AlertDialogTrigger, ArticleCard, AudioPlayer, AuthorCard, Avatar, AvatarFallback, AvatarImage, AvatarUpload, Badge, Blockquote, Breadcrumb, Button, Calendar, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, CategoryBadge, Checkbox, Code, CodeBlock, CourseCard, DateField, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogTitle, DialogTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EmptyState, EventCalendar, Footer, FooterLink, Hero, Input, LinkRow, MetricBadge, Nav, NavItem, NewsletterForm, PageHeader, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, Progress, RadioGroup2 as RadioGroup, RadioGroupItem, ScrollingProgressBar, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectSeparator, SelectTrigger, SelectValue, Separator3 as Separator, Sheet, SheetBody, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, SheetTrigger, SidebarGroup, SidebarItem, SidebarNav, Skeleton, Stat, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableOfContents, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, TalkCard, Textarea, ThemeToggle, ToastAction, Toaster, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, toast2 as toast, useTheme };
3168
+ export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, Alert, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogTitle, AlertDialogTrigger, ArticleCard, AudioPlayer, AuthorCard, Avatar, AvatarFallback, AvatarImage, AvatarUpload, Badge, Blockquote, Breadcrumb, Button, Calendar, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, CategoryBadge, Checkbox, Code, CodeBlock, CourseCard, DateField, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogTitle, DialogTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EmptyState, EventCalendar, Footer, Hero, Input, LinkRow, MetricBadge, Nav, NavItem, NewsletterForm, PageHeader, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, Progress, RadioGroup2 as RadioGroup, RadioGroupItem, ScrollingProgressBar, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectSeparator, SelectTrigger, SelectValue, Separator3 as Separator, Sheet, SheetBody, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, SheetTrigger, Skeleton, Stat, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableOfContents, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, TalkCard, Textarea, ThemeToggle, ToastAction, Toaster, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, toast2 as toast, useTheme };
@@ -1,8 +1,9 @@
1
1
  import * as react from 'react';
2
- import { ComponentPropsWithoutRef } from 'react';
2
+ import { ComponentProps } from 'react';
3
3
  import * as LabelPrimitive from '@radix-ui/react-label';
4
4
 
5
- type LabelProps = ComponentPropsWithoutRef<typeof LabelPrimitive.Root>;
5
+ /** `ComponentProps` carries `ref`, which React 19 passes as a prop. See `InputProps`. */
6
+ type LabelProps = ComponentProps<typeof LabelPrimitive.Root>;
6
7
  /**
7
8
  * The `label` scale: 13px, which is the system's absolute minimum on screen.
8
9
  *
@@ -1,8 +1,9 @@
1
1
  import * as react from 'react';
2
- import { ComponentPropsWithoutRef } from 'react';
2
+ import { ComponentProps } from 'react';
3
3
  import * as LabelPrimitive from '@radix-ui/react-label';
4
4
 
5
- type LabelProps = ComponentPropsWithoutRef<typeof LabelPrimitive.Root>;
5
+ /** `ComponentProps` carries `ref`, which React 19 passes as a prop. See `InputProps`. */
6
+ type LabelProps = ComponentProps<typeof LabelPrimitive.Root>;
6
7
  /**
7
8
  * The `label` scale: 13px, which is the system's absolute minimum on screen.
8
9
  *
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-OMKSESQB.js';
2
+ import { fonts, dark, light, naming, gradient, tagline, typeScale } from '../chunk-FGFNK72B.js';
3
3
  import '../chunk-MLKGABMK.js';
4
4
 
5
5
  // src/og/templates.ts
@@ -1,4 +1,4 @@
1
- import { syntax } from '../chunk-OMKSESQB.js';
1
+ import { syntax } from '../chunk-FGFNK72B.js';
2
2
  import '../chunk-MLKGABMK.js';
3
3
 
4
4
  // src/shiki/theme.ts