@eduardoalvarez/arrecife 0.9.0 → 0.10.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/CHANGELOG.md +42 -0
- package/README.md +99 -69
- package/dist/brand/index.js +2 -3
- package/dist/chart/index.js +0 -1
- package/dist/chunk-ZSCSKCTY.js +26 -0
- package/dist/form/index.js +0 -1
- package/dist/icons/index.d.cts +19 -10
- package/dist/icons/index.d.ts +19 -10
- package/dist/icons/index.js +2 -27
- package/dist/index.cjs +205 -381
- package/dist/index.d.cts +48 -9
- package/dist/index.d.ts +48 -9
- package/dist/index.js +148 -186
- package/dist/og/index.js +0 -1
- package/dist/shiki/index.js +0 -1
- package/dist/theme/index.js +0 -1
- package/dist/tokens/index.js +0 -1
- package/dist/tokens/theme.css +21 -1
- package/dist/variants/index.js +0 -1
- package/llms.txt +63 -134
- package/package.json +18 -30
- package/dist/chunk-HOADZ6GS.js +0 -72
- package/dist/chunk-LXRGQKMG.js +0 -145
- package/dist/chunk-MLKGABMK.js +0 -7
- package/dist/index-BbRplw_B.d.cts +0 -58
- package/dist/index-BbRplw_B.d.ts +0 -58
- package/dist/social/data.cjs +0 -161
- package/dist/social/data.d.cts +0 -161
- package/dist/social/data.d.ts +0 -161
- package/dist/social/data.js +0 -2
- package/dist/social/index.cjs +0 -153
- package/dist/social/index.d.cts +0 -2
- package/dist/social/index.d.ts +0 -2
- package/dist/social/index.js +0 -3
- package/dist/{chunk-MPZBF2TZ.js → chunk-IIT3YLYN.js} +1 -1
package/dist/index.cjs
CHANGED
|
@@ -2,13 +2,14 @@
|
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
4
|
var classVarianceAuthority = require('class-variance-authority');
|
|
5
|
+
var react = require('@phosphor-icons/react');
|
|
5
6
|
var AccordionPrimitive = require('@radix-ui/react-accordion');
|
|
6
7
|
var clsx = require('clsx');
|
|
7
8
|
var tailwindMerge = require('tailwind-merge');
|
|
8
9
|
var jsxRuntime = require('react/jsx-runtime');
|
|
9
10
|
var AlertDialogPrimitive = require('@radix-ui/react-alert-dialog');
|
|
10
11
|
var AvatarPrimitive = require('@radix-ui/react-avatar');
|
|
11
|
-
var react = require('react');
|
|
12
|
+
var react$1 = require('react');
|
|
12
13
|
var reactSlot = require('@radix-ui/react-slot');
|
|
13
14
|
var locale = require('date-fns/locale');
|
|
14
15
|
var reactDayPicker = require('react-day-picker');
|
|
@@ -62,12 +63,6 @@ var TabsPrimitive__namespace = /*#__PURE__*/_interopNamespace(TabsPrimitive);
|
|
|
62
63
|
var ToastPrimitive__namespace = /*#__PURE__*/_interopNamespace(ToastPrimitive);
|
|
63
64
|
var TooltipPrimitive__namespace = /*#__PURE__*/_interopNamespace(TooltipPrimitive);
|
|
64
65
|
|
|
65
|
-
var __defProp = Object.defineProperty;
|
|
66
|
-
var __export = (target, all) => {
|
|
67
|
-
for (var name in all)
|
|
68
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
69
|
-
};
|
|
70
|
-
|
|
71
66
|
// src/tokens/tokens.ts
|
|
72
67
|
var dark = {
|
|
73
68
|
background: "#091319",
|
|
@@ -671,118 +666,27 @@ var twMerge = tailwindMerge.extendTailwindMerge({
|
|
|
671
666
|
function cn(...inputs) {
|
|
672
667
|
return twMerge(clsx.clsx(inputs));
|
|
673
668
|
}
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
fill: "none",
|
|
682
|
-
stroke: "currentColor",
|
|
683
|
-
strokeWidth: 1.75,
|
|
684
|
-
strokeLinecap: "round",
|
|
685
|
-
strokeLinejoin: "round",
|
|
686
|
-
"aria-hidden": "true",
|
|
687
|
-
focusable: "false",
|
|
688
|
-
...props,
|
|
689
|
-
children
|
|
690
|
-
}
|
|
691
|
-
);
|
|
692
|
-
}
|
|
693
|
-
var Check = (props) => /* @__PURE__ */ jsxRuntime.jsx(Glyph, { ...props, children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M3 8.5 6.5 12 13 4.5" }) });
|
|
694
|
-
var Minus = (props) => /* @__PURE__ */ jsxRuntime.jsx(Glyph, { ...props, children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M3.5 8h9" }) });
|
|
695
|
-
var ChevronDown = (props) => /* @__PURE__ */ jsxRuntime.jsx(Glyph, { ...props, children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M4 6l4 4 4-4" }) });
|
|
696
|
-
var ChevronUp = (props) => /* @__PURE__ */ jsxRuntime.jsx(Glyph, { ...props, children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M4 10l4-4 4 4" }) });
|
|
697
|
-
var ChevronLeft = (props) => /* @__PURE__ */ jsxRuntime.jsx(Glyph, { ...props, children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M10 4L6 8l4 4" }) });
|
|
698
|
-
var ChevronRight = (props) => /* @__PURE__ */ jsxRuntime.jsx(Glyph, { ...props, children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M6 4l4 4-4 4" }) });
|
|
699
|
-
var Close = (props) => /* @__PURE__ */ jsxRuntime.jsx(Glyph, { ...props, children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M4 4l8 8M12 4l-8 8" }) });
|
|
700
|
-
var Copy = (props) => /* @__PURE__ */ jsxRuntime.jsxs(Glyph, { ...props, children: [
|
|
701
|
-
/* @__PURE__ */ jsxRuntime.jsx("rect", { x: "5.5", y: "5.5", width: "8", height: "8", rx: "1.5" }),
|
|
702
|
-
/* @__PURE__ */ jsxRuntime.jsx("path", { d: "M10.5 3.5h-7a1.5 1.5 0 0 0-1.5 1.5v7" })
|
|
703
|
-
] });
|
|
704
|
-
var ArrowUpRight = (props) => /* @__PURE__ */ jsxRuntime.jsx(Glyph, { ...props, children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M5 11l6-6M5.5 5h5.5v5.5" }) });
|
|
705
|
-
var Ellipsis = (props) => /* @__PURE__ */ jsxRuntime.jsx(Glyph, { ...props, strokeWidth: 2.25, children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M4 8h.01M8 8h.01M12 8h.01" }) });
|
|
706
|
-
var Spinner = (props) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
707
|
-
"svg",
|
|
708
|
-
{
|
|
709
|
-
viewBox: "0 0 16 16",
|
|
710
|
-
width: "1em",
|
|
711
|
-
height: "1em",
|
|
712
|
-
fill: "none",
|
|
713
|
-
stroke: "currentColor",
|
|
714
|
-
strokeWidth: 2,
|
|
715
|
-
strokeLinecap: "round",
|
|
716
|
-
"aria-hidden": "true",
|
|
717
|
-
focusable: "false",
|
|
718
|
-
className: "motion-safe:animate-spin",
|
|
719
|
-
...props,
|
|
720
|
-
children: [
|
|
721
|
-
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "8", cy: "8", r: "6", opacity: 0.3 }),
|
|
722
|
-
/* @__PURE__ */ jsxRuntime.jsx("path", { d: "M8 2a6 6 0 0 1 6 6" })
|
|
723
|
-
]
|
|
724
|
-
}
|
|
725
|
-
);
|
|
726
|
-
var Camera = (props) => /* @__PURE__ */ jsxRuntime.jsxs(Glyph, { ...props, children: [
|
|
727
|
-
/* @__PURE__ */ jsxRuntime.jsx("path", { d: "M2 5.5h2.6l1-1.5h4.8l1 1.5H14v7.5H2z" }),
|
|
728
|
-
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "8", cy: "9", r: "2.4" })
|
|
729
|
-
] });
|
|
730
|
-
var Sun = (props) => /* @__PURE__ */ jsxRuntime.jsxs(Glyph, { ...props, children: [
|
|
731
|
-
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "8", cy: "8", r: "3" }),
|
|
732
|
-
/* @__PURE__ */ jsxRuntime.jsx("path", { d: "M8 1.5v1.2M8 13.3v1.2M14.5 8h-1.2M2.7 8H1.5M12.6 3.4l-.85.85M4.25 11.75l-.85.85M12.6 12.6l-.85-.85M4.25 4.25l-.85-.85" })
|
|
733
|
-
] });
|
|
734
|
-
var Moon = (props) => /* @__PURE__ */ jsxRuntime.jsx(Glyph, { ...props, children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M13.5 9.4A5.8 5.8 0 0 1 6.6 2.5a5.8 5.8 0 1 0 6.9 6.9Z" }) });
|
|
735
|
-
function MediaGlyph({ children, ...props }) {
|
|
669
|
+
var ICON_WEIGHT = "regular";
|
|
670
|
+
var TONE_WEIGHT = {
|
|
671
|
+
action: ICON_WEIGHT,
|
|
672
|
+
current: "fill",
|
|
673
|
+
quiet: "light"
|
|
674
|
+
};
|
|
675
|
+
function Icon({ as: Glyph, tone = "action", label, className, ...props }) {
|
|
736
676
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
737
|
-
|
|
677
|
+
Glyph,
|
|
738
678
|
{
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
"aria-
|
|
679
|
+
size: "1em",
|
|
680
|
+
weight: TONE_WEIGHT[tone],
|
|
681
|
+
"aria-hidden": label ? void 0 : true,
|
|
682
|
+
"aria-label": label,
|
|
683
|
+
role: label ? "img" : void 0,
|
|
743
684
|
focusable: "false",
|
|
744
|
-
|
|
745
|
-
|
|
685
|
+
className: cn("shrink-0", className),
|
|
686
|
+
...props
|
|
746
687
|
}
|
|
747
688
|
);
|
|
748
689
|
}
|
|
749
|
-
var Play = (props) => /* @__PURE__ */ jsxRuntime.jsx(MediaGlyph, { fill: "currentColor", ...props, children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M8 5v14l11-7z" }) });
|
|
750
|
-
var Pause = (props) => /* @__PURE__ */ jsxRuntime.jsx(MediaGlyph, { fill: "currentColor", ...props, children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M6 4h4v16H6V4zm8 0h4v16h-4V4z" }) });
|
|
751
|
-
var Retry = (props) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
752
|
-
MediaGlyph,
|
|
753
|
-
{
|
|
754
|
-
stroke: "currentColor",
|
|
755
|
-
strokeWidth: 2,
|
|
756
|
-
strokeLinecap: "round",
|
|
757
|
-
strokeLinejoin: "round",
|
|
758
|
-
...props,
|
|
759
|
-
children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15" })
|
|
760
|
-
}
|
|
761
|
-
);
|
|
762
|
-
var GoBackSeconds = (props) => /* @__PURE__ */ jsxRuntime.jsxs(MediaGlyph, { stroke: "currentColor", strokeWidth: 1.5, strokeLinecap: "round", ...props, children: [
|
|
763
|
-
/* @__PURE__ */ jsxRuntime.jsx("path", { d: "M16.5 8.5H13.8604C13.6452 8.5 13.4541 8.63772 13.386 8.84189L12.7194 10.8419C12.6114 11.1657 12.8524 11.5 13.1937 11.5H14.5C15.6046 11.5 16.5 12.3954 16.5 13.5C16.5 14.6046 15.6046 15.5 14.5 15.5H12.5" }),
|
|
764
|
-
/* @__PURE__ */ jsxRuntime.jsx("path", { d: "M7.5 10.5L10 8.5V15.5", strokeLinejoin: "round" }),
|
|
765
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
766
|
-
"path",
|
|
767
|
-
{
|
|
768
|
-
d: "M14 4.5L12 2C17.5228 2 22 6.47715 22 12C22 17.5228 17.5228 22 12 22C8.7288 22 5.82446 20.4293 4 18.001M8 2.83209C6.87754 3.32251 5.86251 4.01303 5 4.85857C3.14864 6.67349 2 9.20261 2 12C2 12.6849 2.06886 13.3538 2.20004 14",
|
|
769
|
-
strokeLinejoin: "round"
|
|
770
|
-
}
|
|
771
|
-
)
|
|
772
|
-
] });
|
|
773
|
-
var AdvanceSeconds = (props) => /* @__PURE__ */ jsxRuntime.jsxs(MediaGlyph, { stroke: "currentColor", strokeWidth: 1.5, strokeLinecap: "round", ...props, children: [
|
|
774
|
-
/* @__PURE__ */ jsxRuntime.jsx("path", { d: "M16.5 8.5H13.8604C13.6452 8.5 13.4541 8.63772 13.386 8.84189L12.7194 10.8419C12.6114 11.1657 12.8524 11.5 13.1937 11.5H14.5C15.6046 11.5 16.5 12.3954 16.5 13.5C16.5 14.6046 15.6046 15.5 14.5 15.5H12.5" }),
|
|
775
|
-
/* @__PURE__ */ jsxRuntime.jsx("path", { d: "M7.5 10.5L10 8.5V15.5", strokeLinejoin: "round" }),
|
|
776
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
777
|
-
"path",
|
|
778
|
-
{
|
|
779
|
-
d: "M10 4.5L12 2C6.47715 2 2 6.47715 2 12C2 12.6849 2.06886 13.3538 2.20004 14M16 2.83209C19.5318 4.3752 22 7.89936 22 12C22 17.5228 17.5228 22 12 22C8.72852 22 5.82443 20.4287 4 18",
|
|
780
|
-
strokeLinejoin: "round"
|
|
781
|
-
}
|
|
782
|
-
)
|
|
783
|
-
] });
|
|
784
|
-
var VolumeOn = (props) => /* @__PURE__ */ jsxRuntime.jsx(MediaGlyph, { fill: "currentColor", ...props, children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M3 9v6h4l5 5V4L7 9H3zm13.5 3c0-1.77-1.02-3.29-2.5-4.03v8.05c1.48-.73 2.5-2.25 2.5-4.02zM14 3.23v2.06c2.89.86 5 3.54 5 6.71s-2.11 5.85-5 6.71v2.06c4.01-.91 7-4.49 7-8.77s-2.99-7.86-7-8.77z" }) });
|
|
785
|
-
var VolumeMuted = (props) => /* @__PURE__ */ jsxRuntime.jsx(MediaGlyph, { fill: "currentColor", ...props, children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M16.5 12c0-1.77-1.02-3.29-2.5-4.03v2.21l2.45 2.45c.03-.2.05-.41.05-.63zm2.5 0c0 .94-.2 1.82-.54 2.64l1.51 1.51C20.63 14.91 21 13.5 21 12c0-4.28-2.99-7.86-7-8.77v2.06c2.89.86 5 3.54 5 6.71zM4.27 3L3 4.27 7.73 9H3v6h4l5 5v-6.73l4.25 4.25c-.67.52-1.42.93-2.25 1.18v2.06c1.38-.31 2.63-.95 3.69-1.81L19.73 21 21 19.73l-9-9L4.27 3zM12 4L9.91 6.09 12 8.18V4z" }) });
|
|
786
690
|
function Accordion({ className, ...props }) {
|
|
787
691
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
788
692
|
AccordionPrimitive__namespace.Root,
|
|
@@ -821,7 +725,7 @@ function AccordionTrigger({
|
|
|
821
725
|
...props,
|
|
822
726
|
children: [
|
|
823
727
|
children,
|
|
824
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
728
|
+
/* @__PURE__ */ jsxRuntime.jsx(Icon, { as: react.CaretDown, className: "text-text-muted shrink-0" })
|
|
825
729
|
]
|
|
826
730
|
}
|
|
827
731
|
) }) });
|
|
@@ -850,10 +754,10 @@ var colorGlyph = {
|
|
|
850
754
|
error: "text-error"
|
|
851
755
|
};
|
|
852
756
|
var GLYPH = {
|
|
853
|
-
accent:
|
|
854
|
-
success:
|
|
855
|
-
warning:
|
|
856
|
-
error:
|
|
757
|
+
accent: react.Info,
|
|
758
|
+
success: react.CheckCircle,
|
|
759
|
+
warning: react.Warning,
|
|
760
|
+
error: react.XCircle
|
|
857
761
|
};
|
|
858
762
|
function Alert({
|
|
859
763
|
className,
|
|
@@ -875,9 +779,8 @@ function Alert({
|
|
|
875
779
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
876
780
|
"span",
|
|
877
781
|
{
|
|
878
|
-
"
|
|
879
|
-
|
|
880
|
-
children: icon ?? GLYPH[tone]
|
|
782
|
+
className: cn("text-ui flex h-[1lh] shrink-0 items-center leading-normal", colorGlyph[tone]),
|
|
783
|
+
children: icon ?? /* @__PURE__ */ jsxRuntime.jsx(Icon, { as: GLYPH[tone] })
|
|
881
784
|
}
|
|
882
785
|
),
|
|
883
786
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0 flex-1", children: [
|
|
@@ -1020,9 +923,9 @@ function AvatarUpload({
|
|
|
1020
923
|
className,
|
|
1021
924
|
...props
|
|
1022
925
|
}) {
|
|
1023
|
-
const id = react.useId();
|
|
1024
|
-
const [preview, setPreview] = react.useState(null);
|
|
1025
|
-
react.useEffect(() => {
|
|
926
|
+
const id = react$1.useId();
|
|
927
|
+
const [preview, setPreview] = react$1.useState(null);
|
|
928
|
+
react$1.useEffect(() => {
|
|
1026
929
|
if (!preview) return;
|
|
1027
930
|
return () => URL.revokeObjectURL(preview);
|
|
1028
931
|
}, [preview]);
|
|
@@ -1053,7 +956,7 @@ function AvatarUpload({
|
|
|
1053
956
|
disabled && "pointer-events-none opacity-50"
|
|
1054
957
|
),
|
|
1055
958
|
children: [
|
|
1056
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
959
|
+
/* @__PURE__ */ jsxRuntime.jsx(Icon, { as: react.Camera, "aria-hidden": "true" }),
|
|
1057
960
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: label }),
|
|
1058
961
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1059
962
|
"input",
|
|
@@ -1115,7 +1018,7 @@ function Button({
|
|
|
1115
1018
|
"aria-busy": loading || void 0,
|
|
1116
1019
|
...props,
|
|
1117
1020
|
children: [
|
|
1118
|
-
loading ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
1021
|
+
loading ? /* @__PURE__ */ jsxRuntime.jsx(Icon, { as: react.CircleNotch, className: "motion-safe:animate-spin" }) : icon,
|
|
1119
1022
|
children
|
|
1120
1023
|
]
|
|
1121
1024
|
}
|
|
@@ -1192,7 +1095,7 @@ function Calendar({
|
|
|
1192
1095
|
...classNames
|
|
1193
1096
|
},
|
|
1194
1097
|
components: {
|
|
1195
|
-
Chevron: ({ orientation, ...rest }) => orientation === "left" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
1098
|
+
Chevron: ({ orientation, ...rest }) => orientation === "left" ? /* @__PURE__ */ jsxRuntime.jsx(Icon, { as: react.CaretLeft, ...rest }) : /* @__PURE__ */ jsxRuntime.jsx(Icon, { as: react.CaretRight, ...rest })
|
|
1196
1099
|
},
|
|
1197
1100
|
...props
|
|
1198
1101
|
}
|
|
@@ -1271,7 +1174,7 @@ function Checkbox({ className, ...props }) {
|
|
|
1271
1174
|
className
|
|
1272
1175
|
),
|
|
1273
1176
|
...props,
|
|
1274
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(CheckboxPrimitive__namespace.Indicator, { className: "flex items-center justify-center text-[13px]", children: props.checked === "indeterminate" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
1177
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(CheckboxPrimitive__namespace.Indicator, { className: "flex items-center justify-center text-[13px]", children: props.checked === "indeterminate" ? /* @__PURE__ */ jsxRuntime.jsx(Icon, { as: react.Minus }) : /* @__PURE__ */ jsxRuntime.jsx(Icon, { as: react.Check }) })
|
|
1275
1178
|
}
|
|
1276
1179
|
);
|
|
1277
1180
|
}
|
|
@@ -1363,7 +1266,7 @@ function DialogContent({
|
|
|
1363
1266
|
"hover:bg-surface-raised hover:text-text-primary",
|
|
1364
1267
|
"focus-ring"
|
|
1365
1268
|
),
|
|
1366
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1269
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(Icon, { as: react.X })
|
|
1367
1270
|
}
|
|
1368
1271
|
)
|
|
1369
1272
|
]
|
|
@@ -1443,7 +1346,7 @@ function DropdownMenuCheckboxItem({
|
|
|
1443
1346
|
...props
|
|
1444
1347
|
}) {
|
|
1445
1348
|
return /* @__PURE__ */ jsxRuntime.jsxs(DropdownMenuPrimitive__namespace.CheckboxItem, { className: cn(item, "pl-8", className), ...props, children: [
|
|
1446
|
-
/* @__PURE__ */ jsxRuntime.jsx(DropdownMenuPrimitive__namespace.ItemIndicator, { className: "text-accent absolute left-2 flex items-center", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1349
|
+
/* @__PURE__ */ jsxRuntime.jsx(DropdownMenuPrimitive__namespace.ItemIndicator, { className: "text-accent absolute left-2 flex items-center", children: /* @__PURE__ */ jsxRuntime.jsx(Icon, { as: react.Check }) }),
|
|
1447
1350
|
children
|
|
1448
1351
|
] });
|
|
1449
1352
|
}
|
|
@@ -1487,7 +1390,7 @@ function DropdownMenuSubTrigger({
|
|
|
1487
1390
|
...props,
|
|
1488
1391
|
children: [
|
|
1489
1392
|
children,
|
|
1490
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1393
|
+
/* @__PURE__ */ jsxRuntime.jsx(Icon, { as: react.CaretRight, className: "text-text-muted ml-auto" })
|
|
1491
1394
|
]
|
|
1492
1395
|
}
|
|
1493
1396
|
);
|
|
@@ -1545,7 +1448,13 @@ function Pagination({ className, ...props }) {
|
|
|
1545
1448
|
);
|
|
1546
1449
|
}
|
|
1547
1450
|
function PaginationContent({ className, ...props }) {
|
|
1548
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1451
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1452
|
+
"ul",
|
|
1453
|
+
{
|
|
1454
|
+
className: cn("gap-step-xs flex flex-row flex-wrap items-center justify-center", className),
|
|
1455
|
+
...props
|
|
1456
|
+
}
|
|
1457
|
+
);
|
|
1549
1458
|
}
|
|
1550
1459
|
function PaginationItem(props) {
|
|
1551
1460
|
return /* @__PURE__ */ jsxRuntime.jsx("li", { ...props });
|
|
@@ -1570,14 +1479,14 @@ function PaginationLink({ className, isActive = false, ...props }) {
|
|
|
1570
1479
|
}
|
|
1571
1480
|
function PaginationPrevious({ className, ...props }) {
|
|
1572
1481
|
return /* @__PURE__ */ jsxRuntime.jsxs(PaginationLink, { "aria-label": "P\xE1gina anterior", className: cn("gap-step-xs", className), ...props, children: [
|
|
1573
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1482
|
+
/* @__PURE__ */ jsxRuntime.jsx(Icon, { as: react.CaretLeft }),
|
|
1574
1483
|
"Anterior"
|
|
1575
1484
|
] });
|
|
1576
1485
|
}
|
|
1577
1486
|
function PaginationNext({ className, ...props }) {
|
|
1578
1487
|
return /* @__PURE__ */ jsxRuntime.jsxs(PaginationLink, { "aria-label": "P\xE1gina siguiente", className: cn("gap-step-xs", className), ...props, children: [
|
|
1579
1488
|
"Siguiente",
|
|
1580
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1489
|
+
/* @__PURE__ */ jsxRuntime.jsx(Icon, { as: react.CaretRight })
|
|
1581
1490
|
] });
|
|
1582
1491
|
}
|
|
1583
1492
|
function PaginationEllipsis({ className, ...props }) {
|
|
@@ -1587,7 +1496,7 @@ function PaginationEllipsis({ className, ...props }) {
|
|
|
1587
1496
|
"aria-hidden": "true",
|
|
1588
1497
|
className: cn("text-text-muted flex size-9 items-center justify-center", className),
|
|
1589
1498
|
...props,
|
|
1590
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1499
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(Icon, { as: react.DotsThree })
|
|
1591
1500
|
}
|
|
1592
1501
|
);
|
|
1593
1502
|
}
|
|
@@ -1680,7 +1589,7 @@ function SelectTrigger({
|
|
|
1680
1589
|
...props,
|
|
1681
1590
|
children: [
|
|
1682
1591
|
children,
|
|
1683
|
-
/* @__PURE__ */ jsxRuntime.jsx(SelectPrimitive__namespace.Icon, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1592
|
+
/* @__PURE__ */ jsxRuntime.jsx(SelectPrimitive__namespace.Icon, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(Icon, { as: react.CaretDown, className: "text-text-muted" }) })
|
|
1684
1593
|
]
|
|
1685
1594
|
}
|
|
1686
1595
|
);
|
|
@@ -1704,9 +1613,9 @@ function SelectContent({
|
|
|
1704
1613
|
),
|
|
1705
1614
|
...props,
|
|
1706
1615
|
children: [
|
|
1707
|
-
/* @__PURE__ */ jsxRuntime.jsx(SelectPrimitive__namespace.ScrollUpButton, { className: "text-text-secondary flex h-6 items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1616
|
+
/* @__PURE__ */ jsxRuntime.jsx(SelectPrimitive__namespace.ScrollUpButton, { className: "text-text-secondary flex h-6 items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(Icon, { as: react.CaretUp }) }),
|
|
1708
1617
|
/* @__PURE__ */ jsxRuntime.jsx(SelectPrimitive__namespace.Viewport, { className: "p-1", children }),
|
|
1709
|
-
/* @__PURE__ */ jsxRuntime.jsx(SelectPrimitive__namespace.ScrollDownButton, { className: "text-text-secondary flex h-6 items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1618
|
+
/* @__PURE__ */ jsxRuntime.jsx(SelectPrimitive__namespace.ScrollDownButton, { className: "text-text-secondary flex h-6 items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(Icon, { as: react.CaretDown }) })
|
|
1710
1619
|
]
|
|
1711
1620
|
}
|
|
1712
1621
|
) });
|
|
@@ -1742,7 +1651,7 @@ function SelectItem({
|
|
|
1742
1651
|
...props,
|
|
1743
1652
|
children: [
|
|
1744
1653
|
/* @__PURE__ */ jsxRuntime.jsx(SelectPrimitive__namespace.ItemText, { children }),
|
|
1745
|
-
/* @__PURE__ */ jsxRuntime.jsx(SelectPrimitive__namespace.ItemIndicator, { className: "text-accent absolute right-2 flex items-center", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1654
|
+
/* @__PURE__ */ jsxRuntime.jsx(SelectPrimitive__namespace.ItemIndicator, { className: "text-accent absolute right-2 flex items-center", children: /* @__PURE__ */ jsxRuntime.jsx(Icon, { as: react.Check }) })
|
|
1746
1655
|
]
|
|
1747
1656
|
}
|
|
1748
1657
|
);
|
|
@@ -1824,7 +1733,7 @@ function SheetContent({ className, side, children, ...props }) {
|
|
|
1824
1733
|
"hover:bg-surface-raised hover:text-text-primary",
|
|
1825
1734
|
"focus-ring"
|
|
1826
1735
|
),
|
|
1827
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1736
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(Icon, { as: react.X })
|
|
1828
1737
|
}
|
|
1829
1738
|
)
|
|
1830
1739
|
] })
|
|
@@ -1987,7 +1896,18 @@ function TabsList({
|
|
|
1987
1896
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1988
1897
|
TabsPrimitive__namespace.List,
|
|
1989
1898
|
{
|
|
1990
|
-
className: cn(
|
|
1899
|
+
className: cn(
|
|
1900
|
+
"rounded-control bg-surface gap-step-xs inline-flex max-w-full items-center p-1",
|
|
1901
|
+
// The triggers are `whitespace-nowrap` — a tab whose label wraps stops
|
|
1902
|
+
// reading as a tab — so on a narrow screen the list is wider than the
|
|
1903
|
+
// page and takes the whole document with it. It SCROLLS instead: the
|
|
1904
|
+
// list keeps hugging its content up to the width available and gives up
|
|
1905
|
+
// the overflow to itself rather than to the page. Every tab stays
|
|
1906
|
+
// reachable, and reaching one by keyboard scrolls it into view on its
|
|
1907
|
+
// own because focus does that.
|
|
1908
|
+
"overflow-x-auto",
|
|
1909
|
+
className
|
|
1910
|
+
),
|
|
1991
1911
|
...props
|
|
1992
1912
|
}
|
|
1993
1913
|
);
|
|
@@ -2000,7 +1920,10 @@ function TabsTrigger({
|
|
|
2000
1920
|
TabsPrimitive__namespace.Trigger,
|
|
2001
1921
|
{
|
|
2002
1922
|
className: cn(
|
|
2003
|
-
|
|
1923
|
+
// `shrink-0` is what makes the list's `overflow-x-auto` work: without it
|
|
1924
|
+
// the triggers give up their width first and the labels run out of their
|
|
1925
|
+
// own pills instead of the row scrolling.
|
|
1926
|
+
"rounded-chip px-step-sm inline-flex h-8 shrink-0 cursor-pointer items-center justify-center whitespace-nowrap",
|
|
2004
1927
|
"font-sans text-label text-text-secondary",
|
|
2005
1928
|
"transition-standard",
|
|
2006
1929
|
"hover:text-text-primary",
|
|
@@ -2077,15 +2000,28 @@ var toast = classVarianceAuthority.cva(
|
|
|
2077
2000
|
variants: {
|
|
2078
2001
|
variant: {
|
|
2079
2002
|
neutral: "border-border",
|
|
2080
|
-
success: "border-success/
|
|
2081
|
-
error: "border-error/
|
|
2003
|
+
success: "border-success bg-linear-to-b from-success/10 to-success/10",
|
|
2004
|
+
error: "border-error bg-linear-to-b from-error/10 to-error/10"
|
|
2082
2005
|
}
|
|
2083
2006
|
},
|
|
2084
2007
|
defaultVariants: { variant: "neutral" }
|
|
2085
2008
|
}
|
|
2086
2009
|
);
|
|
2010
|
+
var GLYPH2 = {
|
|
2011
|
+
neutral: null,
|
|
2012
|
+
success: react.CheckCircle,
|
|
2013
|
+
error: react.WarningCircle
|
|
2014
|
+
};
|
|
2015
|
+
var GLYPH_COLOR = {
|
|
2016
|
+
neutral: "",
|
|
2017
|
+
success: "text-success",
|
|
2018
|
+
error: "text-error"
|
|
2019
|
+
};
|
|
2087
2020
|
function Toast({ className, variant, children, ...props }) {
|
|
2021
|
+
const tone = variant ?? "neutral";
|
|
2022
|
+
const Mark = GLYPH2[tone];
|
|
2088
2023
|
return /* @__PURE__ */ jsxRuntime.jsxs(ToastPrimitive__namespace.Root, { className: cn(toast({ variant }), className), ...props, children: [
|
|
2024
|
+
Mark ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("text-ui flex h-[1lh] shrink-0 items-center leading-normal", GLYPH_COLOR[tone]), children: /* @__PURE__ */ jsxRuntime.jsx(Icon, { as: Mark }) }) : null,
|
|
2089
2025
|
children,
|
|
2090
2026
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2091
2027
|
ToastPrimitive__namespace.Close,
|
|
@@ -2097,7 +2033,7 @@ function Toast({ className, variant, children, ...props }) {
|
|
|
2097
2033
|
"hover:bg-surface-raised hover:text-text-primary",
|
|
2098
2034
|
"focus-ring"
|
|
2099
2035
|
),
|
|
2100
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
2036
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(Icon, { as: react.X })
|
|
2101
2037
|
}
|
|
2102
2038
|
)
|
|
2103
2039
|
] });
|
|
@@ -2166,7 +2102,7 @@ var toast2 = Object.assign(create, {
|
|
|
2166
2102
|
dismiss: discard
|
|
2167
2103
|
});
|
|
2168
2104
|
function Toaster({ duration = 5e3, label = "Avisos" }) {
|
|
2169
|
-
const list = react.useSyncExternalStore(subscribe, read, onServer);
|
|
2105
|
+
const list = react$1.useSyncExternalStore(subscribe, read, onServer);
|
|
2170
2106
|
return /* @__PURE__ */ jsxRuntime.jsxs(ToastProvider, { duration, label, children: [
|
|
2171
2107
|
list.map(({ id, title, description, variant, duration: own, action, open }) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2172
2108
|
Toast,
|
|
@@ -2295,17 +2231,15 @@ function formatTime(seconds) {
|
|
|
2295
2231
|
const secs = Math.floor(seconds % 60);
|
|
2296
2232
|
return `${mins}:${secs.toString().padStart(2, "0")}`;
|
|
2297
2233
|
}
|
|
2298
|
-
var WAVEFORM_HEIGHTS = [35, 65, 100, 65, 35];
|
|
2299
2234
|
var RATES = [1, 1.25, 1.5, 1.75, 2];
|
|
2300
|
-
function Wave({
|
|
2301
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2302
|
-
|
|
2235
|
+
function Wave({ size: size2, playing }) {
|
|
2236
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2237
|
+
Icon,
|
|
2303
2238
|
{
|
|
2304
|
-
|
|
2305
|
-
|
|
2306
|
-
}
|
|
2307
|
-
|
|
2308
|
-
)) });
|
|
2239
|
+
as: react.Waveform,
|
|
2240
|
+
className: cn("text-accent", size2, playing ? "opacity-100" : "opacity-60")
|
|
2241
|
+
}
|
|
2242
|
+
);
|
|
2309
2243
|
}
|
|
2310
2244
|
function ProgressBar({
|
|
2311
2245
|
height,
|
|
@@ -2367,7 +2301,7 @@ function SkipButton({
|
|
|
2367
2301
|
onClick: () => onSkip(seconds),
|
|
2368
2302
|
className: cn("text-text-muted hover:text-text-primary", CONTROL, className),
|
|
2369
2303
|
"aria-label": seconds < 0 ? "Retroceder 15 segundos" : "Adelantar 15 segundos",
|
|
2370
|
-
children: seconds < 0 ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
2304
|
+
children: seconds < 0 ? /* @__PURE__ */ jsxRuntime.jsx(Icon, { as: react.ArrowCounterClockwise, className: size2 }) : /* @__PURE__ */ jsxRuntime.jsx(Icon, { as: react.ArrowClockwise, className: size2 })
|
|
2371
2305
|
}
|
|
2372
2306
|
);
|
|
2373
2307
|
}
|
|
@@ -2412,7 +2346,7 @@ function Volume({
|
|
|
2412
2346
|
onClick: onMute,
|
|
2413
2347
|
className: cn("text-text-muted hover:text-text-primary p-1", CONTROL),
|
|
2414
2348
|
"aria-label": muted ? "Activar sonido" : "Silenciar",
|
|
2415
|
-
children: muted || volume === 0 ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
2349
|
+
children: muted || volume === 0 ? /* @__PURE__ */ jsxRuntime.jsx(Icon, { as: react.SpeakerSlash, className: size2 }) : /* @__PURE__ */ jsxRuntime.jsx(Icon, { as: react.SpeakerHigh, className: size2 })
|
|
2416
2350
|
}
|
|
2417
2351
|
),
|
|
2418
2352
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -2435,10 +2369,11 @@ function Volume({
|
|
|
2435
2369
|
] });
|
|
2436
2370
|
}
|
|
2437
2371
|
function PlayIcon({ className, loading, error, playing }) {
|
|
2438
|
-
if (loading)
|
|
2439
|
-
|
|
2440
|
-
if (
|
|
2441
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2372
|
+
if (loading)
|
|
2373
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Icon, { as: react.CircleNotch, className: cn("motion-safe:animate-spin", className) });
|
|
2374
|
+
if (error) return /* @__PURE__ */ jsxRuntime.jsx(Icon, { as: react.ArrowsClockwise, className });
|
|
2375
|
+
if (playing) return /* @__PURE__ */ jsxRuntime.jsx(Icon, { as: react.Pause, className });
|
|
2376
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Icon, { as: react.Play, className });
|
|
2442
2377
|
}
|
|
2443
2378
|
function PlayButton({
|
|
2444
2379
|
className,
|
|
@@ -2468,21 +2403,21 @@ function PlayButton({
|
|
|
2468
2403
|
);
|
|
2469
2404
|
}
|
|
2470
2405
|
function AudioPlayer({ src, title, mode = "full", onFirstPlay }) {
|
|
2471
|
-
const audioRef = react.useRef(null);
|
|
2472
|
-
const staticRef = react.useRef(null);
|
|
2473
|
-
const isDragging = react.useRef(false);
|
|
2474
|
-
const hasTrackedPlay = react.useRef(false);
|
|
2475
|
-
const [isPlaying, setIsPlaying] = react.useState(false);
|
|
2476
|
-
const [currentTime, setCurrentTime] = react.useState(0);
|
|
2477
|
-
const [duration, setDuration] = react.useState(0);
|
|
2478
|
-
const [isLoading, setIsLoading] = react.useState(false);
|
|
2479
|
-
const [hasError, setHasError] = react.useState(false);
|
|
2480
|
-
const [volume, setVolume] = react.useState(1);
|
|
2481
|
-
const [isMuted, setIsMuted] = react.useState(false);
|
|
2482
|
-
const [playbackRate, setPlaybackRate] = react.useState(1);
|
|
2483
|
-
const [isStaticVisible, setIsStaticVisible] = react.useState(true);
|
|
2406
|
+
const audioRef = react$1.useRef(null);
|
|
2407
|
+
const staticRef = react$1.useRef(null);
|
|
2408
|
+
const isDragging = react$1.useRef(false);
|
|
2409
|
+
const hasTrackedPlay = react$1.useRef(false);
|
|
2410
|
+
const [isPlaying, setIsPlaying] = react$1.useState(false);
|
|
2411
|
+
const [currentTime, setCurrentTime] = react$1.useState(0);
|
|
2412
|
+
const [duration, setDuration] = react$1.useState(0);
|
|
2413
|
+
const [isLoading, setIsLoading] = react$1.useState(false);
|
|
2414
|
+
const [hasError, setHasError] = react$1.useState(false);
|
|
2415
|
+
const [volume, setVolume] = react$1.useState(1);
|
|
2416
|
+
const [isMuted, setIsMuted] = react$1.useState(false);
|
|
2417
|
+
const [playbackRate, setPlaybackRate] = react$1.useState(1);
|
|
2418
|
+
const [isStaticVisible, setIsStaticVisible] = react$1.useState(true);
|
|
2484
2419
|
const floating = mode === "banner" || mode === "compact";
|
|
2485
|
-
react.useEffect(() => {
|
|
2420
|
+
react$1.useEffect(() => {
|
|
2486
2421
|
const audio = audioRef.current;
|
|
2487
2422
|
if (!audio) return;
|
|
2488
2423
|
const handleTimeUpdate = () => setCurrentTime(audio.currentTime);
|
|
@@ -2523,7 +2458,7 @@ function AudioPlayer({ src, title, mode = "full", onFirstPlay }) {
|
|
|
2523
2458
|
audio.removeEventListener("playing", handlePlaying);
|
|
2524
2459
|
};
|
|
2525
2460
|
}, []);
|
|
2526
|
-
react.useEffect(() => {
|
|
2461
|
+
react$1.useEffect(() => {
|
|
2527
2462
|
if (!floating || !staticRef.current) return;
|
|
2528
2463
|
const observer = new IntersectionObserver(
|
|
2529
2464
|
(entries) => {
|
|
@@ -2535,7 +2470,7 @@ function AudioPlayer({ src, title, mode = "full", onFirstPlay }) {
|
|
|
2535
2470
|
observer.observe(staticRef.current);
|
|
2536
2471
|
return () => observer.disconnect();
|
|
2537
2472
|
}, [floating]);
|
|
2538
|
-
const togglePlay = react.useCallback(async () => {
|
|
2473
|
+
const togglePlay = react$1.useCallback(async () => {
|
|
2539
2474
|
const audio = audioRef.current;
|
|
2540
2475
|
if (!audio) return;
|
|
2541
2476
|
if (isPlaying) {
|
|
@@ -2559,7 +2494,7 @@ function AudioPlayer({ src, title, mode = "full", onFirstPlay }) {
|
|
|
2559
2494
|
}
|
|
2560
2495
|
}
|
|
2561
2496
|
}, [isPlaying, onFirstPlay, title]);
|
|
2562
|
-
const seekTo = react.useCallback(
|
|
2497
|
+
const seekTo = react$1.useCallback(
|
|
2563
2498
|
(e) => {
|
|
2564
2499
|
const audio = audioRef.current;
|
|
2565
2500
|
if (!audio) return;
|
|
@@ -2569,7 +2504,7 @@ function AudioPlayer({ src, title, mode = "full", onFirstPlay }) {
|
|
|
2569
2504
|
},
|
|
2570
2505
|
[duration]
|
|
2571
2506
|
);
|
|
2572
|
-
const handlePointerDown = react.useCallback(
|
|
2507
|
+
const handlePointerDown = react$1.useCallback(
|
|
2573
2508
|
(e) => {
|
|
2574
2509
|
e.currentTarget.setPointerCapture(e.pointerId);
|
|
2575
2510
|
isDragging.current = true;
|
|
@@ -2577,18 +2512,18 @@ function AudioPlayer({ src, title, mode = "full", onFirstPlay }) {
|
|
|
2577
2512
|
},
|
|
2578
2513
|
[seekTo]
|
|
2579
2514
|
);
|
|
2580
|
-
const handlePointerMove = react.useCallback(
|
|
2515
|
+
const handlePointerMove = react$1.useCallback(
|
|
2581
2516
|
(e) => {
|
|
2582
2517
|
if (!isDragging.current) return;
|
|
2583
2518
|
seekTo(e);
|
|
2584
2519
|
},
|
|
2585
2520
|
[seekTo]
|
|
2586
2521
|
);
|
|
2587
|
-
const handlePointerUp = react.useCallback((e) => {
|
|
2522
|
+
const handlePointerUp = react$1.useCallback((e) => {
|
|
2588
2523
|
e.currentTarget.releasePointerCapture(e.pointerId);
|
|
2589
2524
|
isDragging.current = false;
|
|
2590
2525
|
}, []);
|
|
2591
|
-
const handleVolumeChange = react.useCallback((e) => {
|
|
2526
|
+
const handleVolumeChange = react$1.useCallback((e) => {
|
|
2592
2527
|
const audio = audioRef.current;
|
|
2593
2528
|
if (!audio) return;
|
|
2594
2529
|
const newVolume = parseFloat(e.target.value);
|
|
@@ -2596,7 +2531,7 @@ function AudioPlayer({ src, title, mode = "full", onFirstPlay }) {
|
|
|
2596
2531
|
audio.volume = newVolume;
|
|
2597
2532
|
setIsMuted(newVolume === 0);
|
|
2598
2533
|
}, []);
|
|
2599
|
-
const toggleMute = react.useCallback(() => {
|
|
2534
|
+
const toggleMute = react$1.useCallback(() => {
|
|
2600
2535
|
const audio = audioRef.current;
|
|
2601
2536
|
if (!audio) return;
|
|
2602
2537
|
if (isMuted) {
|
|
@@ -2607,14 +2542,14 @@ function AudioPlayer({ src, title, mode = "full", onFirstPlay }) {
|
|
|
2607
2542
|
setIsMuted(true);
|
|
2608
2543
|
}
|
|
2609
2544
|
}, [isMuted, volume]);
|
|
2610
|
-
const handlePlaybackRateChange = react.useCallback(() => {
|
|
2545
|
+
const handlePlaybackRateChange = react$1.useCallback(() => {
|
|
2611
2546
|
const audio = audioRef.current;
|
|
2612
2547
|
if (!audio) return;
|
|
2613
2548
|
const nextRate = RATES[(RATES.indexOf(playbackRate) + 1) % RATES.length] ?? 1;
|
|
2614
2549
|
audio.playbackRate = nextRate;
|
|
2615
2550
|
setPlaybackRate(nextRate);
|
|
2616
2551
|
}, [playbackRate]);
|
|
2617
|
-
const skip = react.useCallback(
|
|
2552
|
+
const skip = react$1.useCallback(
|
|
2618
2553
|
(seconds) => {
|
|
2619
2554
|
const audio = audioRef.current;
|
|
2620
2555
|
if (!audio) return;
|
|
@@ -2653,7 +2588,7 @@ function AudioPlayer({ src, title, mode = "full", onFirstPlay }) {
|
|
|
2653
2588
|
),
|
|
2654
2589
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "bg-surface/95 border-accent/25 border-t backdrop-blur-md", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "gap-step-sm px-step-md flex items-center py-5", children: [
|
|
2655
2590
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "gap-step-xs flex shrink-0 items-center", children: [
|
|
2656
|
-
/* @__PURE__ */ jsxRuntime.jsx(Wave, {
|
|
2591
|
+
/* @__PURE__ */ jsxRuntime.jsx(Wave, { size: "size-4", playing: isPlaying }),
|
|
2657
2592
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-eyebrow font-mono text-accent hidden uppercase sm:block", children: "Narraci\xF3n" })
|
|
2658
2593
|
] }),
|
|
2659
2594
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0 flex-1", children: [
|
|
@@ -2695,7 +2630,7 @@ function AudioPlayer({ src, title, mode = "full", onFirstPlay }) {
|
|
|
2695
2630
|
/* @__PURE__ */ jsxRuntime.jsx("audio", { ref: audioRef, src, preload: "metadata" }),
|
|
2696
2631
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { ref: staticRef, children: [
|
|
2697
2632
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "gap-step-sm mb-step-md flex items-center", children: [
|
|
2698
|
-
/* @__PURE__ */ jsxRuntime.jsx(Wave, {
|
|
2633
|
+
/* @__PURE__ */ jsxRuntime.jsx(Wave, { size: "size-5", playing: isPlaying }),
|
|
2699
2634
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-eyebrow font-mono text-accent uppercase", children: "Narraci\xF3n de audio" }),
|
|
2700
2635
|
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-chip font-mono text-text-muted ml-auto tabular-nums", children: [
|
|
2701
2636
|
formatTime(currentTime),
|
|
@@ -2867,9 +2802,9 @@ function Breadcrumb({
|
|
|
2867
2802
|
] }) });
|
|
2868
2803
|
}
|
|
2869
2804
|
function CodeBlock({ children, language, copyText, className, ...props }) {
|
|
2870
|
-
const [copiado, setCopiado] = react.useState(false);
|
|
2871
|
-
const timer = react.useRef(null);
|
|
2872
|
-
const copy = react.useCallback(async () => {
|
|
2805
|
+
const [copiado, setCopiado] = react$1.useState(false);
|
|
2806
|
+
const timer = react$1.useRef(null);
|
|
2807
|
+
const copy = react$1.useCallback(async () => {
|
|
2873
2808
|
if (!copyText) return;
|
|
2874
2809
|
try {
|
|
2875
2810
|
await navigator.clipboard.writeText(copyText);
|
|
@@ -2909,13 +2844,26 @@ function CodeBlock({ children, language, copyText, className, ...props }) {
|
|
|
2909
2844
|
"focus-ring"
|
|
2910
2845
|
),
|
|
2911
2846
|
children: [
|
|
2912
|
-
copiado ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
2847
|
+
copiado ? /* @__PURE__ */ jsxRuntime.jsx(Icon, { as: react.Check, className: "text-accent" }) : /* @__PURE__ */ jsxRuntime.jsx(Icon, { as: react.Copy }),
|
|
2913
2848
|
copiado ? "Copiado" : "Copiar"
|
|
2914
2849
|
]
|
|
2915
2850
|
}
|
|
2916
2851
|
) : null
|
|
2917
2852
|
] }),
|
|
2918
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2853
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2854
|
+
"pre",
|
|
2855
|
+
{
|
|
2856
|
+
tabIndex: 0,
|
|
2857
|
+
className: cn(
|
|
2858
|
+
"p-step-md font-mono text-meta text-text-primary overflow-x-auto leading-relaxed",
|
|
2859
|
+
// `focus-ring-inset` and not the plain ring: the root carries
|
|
2860
|
+
// `overflow-hidden` so its corners hold, and it clips an outward ring
|
|
2861
|
+
// on three sides. See the note beside the utility in build-tokens.mjs.
|
|
2862
|
+
"focus-ring focus-ring-inset"
|
|
2863
|
+
),
|
|
2864
|
+
children
|
|
2865
|
+
}
|
|
2866
|
+
)
|
|
2919
2867
|
]
|
|
2920
2868
|
}
|
|
2921
2869
|
);
|
|
@@ -3071,13 +3019,13 @@ function EventCalendar({
|
|
|
3071
3019
|
className,
|
|
3072
3020
|
...props
|
|
3073
3021
|
}) {
|
|
3074
|
-
const id = react.useId();
|
|
3075
|
-
const [diaInterno, setDiaInterno] = react.useState(() => selected ?? /* @__PURE__ */ new Date());
|
|
3022
|
+
const id = react$1.useId();
|
|
3023
|
+
const [diaInterno, setDiaInterno] = react$1.useState(() => selected ?? /* @__PURE__ */ new Date());
|
|
3076
3024
|
const day = selected ?? diaInterno;
|
|
3077
|
-
const [month, setMonth] = react.useState(() => day);
|
|
3078
|
-
const [editing, setEditing] = react.useState(null);
|
|
3079
|
-
const [title, setTitle] = react.useState("");
|
|
3080
|
-
const [when, setWhen] = react.useState("");
|
|
3025
|
+
const [month, setMonth] = react$1.useState(() => day);
|
|
3026
|
+
const [editing, setEditing] = react$1.useState(null);
|
|
3027
|
+
const [title, setTitle] = react$1.useState("");
|
|
3028
|
+
const [when, setWhen] = react$1.useState("");
|
|
3081
3029
|
const editable = Boolean(onCreateEvent ?? onUpdateEvent);
|
|
3082
3030
|
const ofTheDay = events.filter((e) => sameDay(e.start, day)).sort((a, b) => a.start.getTime() - b.start.getTime());
|
|
3083
3031
|
function pickDay(nuevo) {
|
|
@@ -3239,7 +3187,7 @@ function EventCalendar({
|
|
|
3239
3187
|
] });
|
|
3240
3188
|
}
|
|
3241
3189
|
function SocialRow({ social }) {
|
|
3242
|
-
return /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "flex flex-wrap items-center gap-[18px]", children: social.map((socialLink) => /* @__PURE__ */ jsxRuntime.jsx("li", { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
3190
|
+
return /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "flex flex-wrap items-center justify-center gap-[18px] sm:justify-start", children: social.map((socialLink) => /* @__PURE__ */ jsxRuntime.jsx("li", { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
3243
3191
|
"a",
|
|
3244
3192
|
{
|
|
3245
3193
|
href: socialLink.href,
|
|
@@ -3337,16 +3285,23 @@ function Footer({
|
|
|
3337
3285
|
};
|
|
3338
3286
|
return /* @__PURE__ */ jsxRuntime.jsxs(Shell, { className, ...rest, children: [
|
|
3339
3287
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "gap-step-xl flex flex-col md:flex-row md:justify-between", children: [
|
|
3340
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "gap-step-md flex max-w-xs flex-col", children: [
|
|
3288
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "gap-step-md flex max-w-xs flex-col items-center text-center md:items-start md:text-left", children: [
|
|
3341
3289
|
brand2,
|
|
3342
3290
|
description ? /* @__PURE__ */ jsxRuntime.jsx(Text, { variant: "ui", tone: "secondary", as: "p", children: description }) : null,
|
|
3343
3291
|
social && social.length > 0 ? /* @__PURE__ */ jsxRuntime.jsx(SocialRow, { social }) : null,
|
|
3344
3292
|
action
|
|
3345
3293
|
] }),
|
|
3346
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "gap-step-lg grid grid-cols-2 sm:grid-cols-3", children: columns.map((column) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
3347
|
-
|
|
3348
|
-
|
|
3349
|
-
|
|
3294
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "gap-step-lg grid grid-cols-1 min-[420px]:grid-cols-2 sm:grid-cols-3", children: columns.map((column) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
3295
|
+
"div",
|
|
3296
|
+
{
|
|
3297
|
+
className: "gap-step-sm flex flex-col items-center text-center md:items-start md:text-left",
|
|
3298
|
+
children: [
|
|
3299
|
+
/* @__PURE__ */ jsxRuntime.jsx(Text, { variant: "eyebrow", tone: "muted", as: "h3", children: column.title }),
|
|
3300
|
+
/* @__PURE__ */ jsxRuntime.jsx("ul", { className: "gap-step-xs flex flex-col", children: column.links.map((columnLink) => /* @__PURE__ */ jsxRuntime.jsx("li", { children: link(columnLink.href, columnLink.external, columnLink.label) }, columnLink.href)) })
|
|
3301
|
+
]
|
|
3302
|
+
},
|
|
3303
|
+
column.title
|
|
3304
|
+
)) })
|
|
3350
3305
|
] }),
|
|
3351
3306
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "border-hairline mt-step-xl pt-step-lg border-t", children: /* @__PURE__ */ jsxRuntime.jsx(Signature, { year, href: signatureHref, domain, className: "text-center sm:text-right" }) })
|
|
3352
3307
|
] });
|
|
@@ -3357,9 +3312,9 @@ function Footer({
|
|
|
3357
3312
|
].filter(Boolean);
|
|
3358
3313
|
const [first, ...others] = rows;
|
|
3359
3314
|
return /* @__PURE__ */ jsxRuntime.jsxs(Shell, { className, contentClassName: "gap-step-lg", ...rest, children: [
|
|
3360
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "gap-step-md flex flex-
|
|
3315
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "gap-step-md flex flex-col items-center sm:flex-row sm:flex-wrap", children: [
|
|
3361
3316
|
first ?? null,
|
|
3362
|
-
/* @__PURE__ */ jsxRuntime.jsx(Signature, { year, href: signatureHref, domain, className: "ml-auto" })
|
|
3317
|
+
/* @__PURE__ */ jsxRuntime.jsx(Signature, { year, href: signatureHref, domain, className: "sm:ml-auto" })
|
|
3363
3318
|
] }),
|
|
3364
3319
|
others
|
|
3365
3320
|
] });
|
|
@@ -3460,8 +3415,9 @@ function LinkRow({
|
|
|
3460
3415
|
description ? /* @__PURE__ */ jsxRuntime.jsx(Text, { as: "span", variant: "label", tone: "muted", className: "block truncate", children: description }) : null
|
|
3461
3416
|
] }),
|
|
3462
3417
|
external ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
3463
|
-
|
|
3418
|
+
Icon,
|
|
3464
3419
|
{
|
|
3420
|
+
as: react.ArrowUpRight,
|
|
3465
3421
|
className: "text-text-muted group-hover:text-accent transition-standard shrink-0",
|
|
3466
3422
|
"aria-hidden": "true"
|
|
3467
3423
|
}
|
|
@@ -3487,15 +3443,35 @@ function Nav({ brand: brand2, children, actions, size: size2 = "default", classN
|
|
|
3487
3443
|
"div",
|
|
3488
3444
|
{
|
|
3489
3445
|
className: cn(
|
|
3490
|
-
"max-w-wide px-step-md gap-step-lg mx-auto flex items-center",
|
|
3446
|
+
"max-w-wide px-step-md gap-step-sm sm:gap-step-lg mx-auto flex items-center",
|
|
3491
3447
|
size2 === "compact" ? "h-nav-compact" : "h-nav"
|
|
3492
3448
|
),
|
|
3493
3449
|
children: [
|
|
3494
3450
|
brand2 ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "shrink-0", children: brand2 }) : null,
|
|
3495
|
-
children ?
|
|
3496
|
-
/*
|
|
3497
|
-
|
|
3498
|
-
|
|
3451
|
+
children ? (
|
|
3452
|
+
/*
|
|
3453
|
+
THE ITEM ROW SCROLLS instead of pushing the page sideways.
|
|
3454
|
+
|
|
3455
|
+
`min-w-0` was already here and on its own it does nothing: it lets the
|
|
3456
|
+
nav shrink below its content, and the content then simply overflows
|
|
3457
|
+
the bar. Six mono items at 13px plus the `~/` is around 300px, which
|
|
3458
|
+
fits nowhere under a brand and a theme switch on a 360px screen, and
|
|
3459
|
+
what the reader got was a horizontal scrollbar on the whole document.
|
|
3460
|
+
|
|
3461
|
+
It does NOT hide them below a breakpoint, which is the other obvious
|
|
3462
|
+
answer and the wrong one for a library: hiding the navigation is only
|
|
3463
|
+
safe if something else exposes it, and that something is a drawer the
|
|
3464
|
+
project owns — `eduardoalvarez.dev` composes one out of `Sheet` and
|
|
3465
|
+
puts it in `actions`. A `Nav` that hid its own items would leave every
|
|
3466
|
+
consumer without a drawer with no navigation at all, silently.
|
|
3467
|
+
|
|
3468
|
+
See `docs/decisions/0.10.md` § 54.
|
|
3469
|
+
*/
|
|
3470
|
+
/* @__PURE__ */ jsxRuntime.jsx("nav", { "aria-label": "Principal", className: "ml-auto min-w-0 overflow-x-auto", children: /* @__PURE__ */ jsxRuntime.jsxs("ul", { className: "gap-step-md flex w-max items-center", children: [
|
|
3471
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { "aria-hidden": "true", className: "text-text-muted font-mono text-meta select-none", children: "~/" }),
|
|
3472
|
+
children
|
|
3473
|
+
] }) })
|
|
3474
|
+
) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-1" }),
|
|
3499
3475
|
actions ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "gap-step-sm flex shrink-0 items-center", children: actions }) : null
|
|
3500
3476
|
]
|
|
3501
3477
|
}
|
|
@@ -3549,13 +3525,13 @@ function NewsletterForm({
|
|
|
3549
3525
|
className,
|
|
3550
3526
|
...props
|
|
3551
3527
|
}) {
|
|
3552
|
-
const id = react.useId();
|
|
3553
|
-
const form = react.useRef(null);
|
|
3528
|
+
const id = react$1.useId();
|
|
3529
|
+
const form = react$1.useRef(null);
|
|
3554
3530
|
const sending = state === "sending";
|
|
3555
3531
|
const error = state === "error";
|
|
3556
3532
|
const nameError = fieldErrors?.name;
|
|
3557
3533
|
const emailError = fieldErrors?.email;
|
|
3558
|
-
react.useEffect(() => {
|
|
3534
|
+
react$1.useEffect(() => {
|
|
3559
3535
|
if (state === "success" && resetOnSuccess) form.current?.reset();
|
|
3560
3536
|
}, [state, resetOnSuccess]);
|
|
3561
3537
|
function submit(event) {
|
|
@@ -3684,9 +3660,9 @@ function ScrollingProgressBar({
|
|
|
3684
3660
|
className,
|
|
3685
3661
|
...props
|
|
3686
3662
|
}) {
|
|
3687
|
-
const [seek, setAvance] = react.useState(0);
|
|
3688
|
-
const pendingOne = react.useRef(0);
|
|
3689
|
-
react.useEffect(() => {
|
|
3663
|
+
const [seek, setAvance] = react$1.useState(0);
|
|
3664
|
+
const pendingOne = react$1.useRef(0);
|
|
3665
|
+
react$1.useEffect(() => {
|
|
3690
3666
|
const measure = () => {
|
|
3691
3667
|
pendingOne.current = 0;
|
|
3692
3668
|
const element = target?.current;
|
|
@@ -3734,9 +3710,9 @@ function ScrollingProgressBar({
|
|
|
3734
3710
|
);
|
|
3735
3711
|
}
|
|
3736
3712
|
var DELTA = {
|
|
3737
|
-
up: { glyph:
|
|
3738
|
-
down: { glyph:
|
|
3739
|
-
flat: { glyph: Minus, label: "sin cambio" }
|
|
3713
|
+
up: { glyph: react.TrendUp, label: "sube" },
|
|
3714
|
+
down: { glyph: react.TrendDown, label: "baja" },
|
|
3715
|
+
flat: { glyph: react.Minus, label: "sin cambio" }
|
|
3740
3716
|
};
|
|
3741
3717
|
function Stat({
|
|
3742
3718
|
value,
|
|
@@ -3777,7 +3753,7 @@ function Stat({
|
|
|
3777
3753
|
DELTA[delta.direction].label,
|
|
3778
3754
|
" "
|
|
3779
3755
|
] }),
|
|
3780
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3756
|
+
/* @__PURE__ */ jsxRuntime.jsx(Icon, { as: DeltaGlyph }),
|
|
3781
3757
|
delta.value
|
|
3782
3758
|
] }) : null,
|
|
3783
3759
|
description ? /* @__PURE__ */ jsxRuntime.jsx(Text, { variant: "ui", tone: "secondary", as: "p", children: description }) : null,
|
|
@@ -3867,17 +3843,20 @@ function ThemeToggle({
|
|
|
3867
3843
|
size: size2,
|
|
3868
3844
|
"aria-label": label,
|
|
3869
3845
|
className: cn("[&_svg]:size-[19px]", className),
|
|
3870
|
-
onClick: () =>
|
|
3846
|
+
onClick: () => {
|
|
3847
|
+
const theme = toggleTheme();
|
|
3848
|
+
onThemeChange?.(theme);
|
|
3849
|
+
},
|
|
3871
3850
|
...props,
|
|
3872
3851
|
children: [
|
|
3873
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3874
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3852
|
+
/* @__PURE__ */ jsxRuntime.jsx(Icon, { as: react.Sun, className: "light:hidden" }),
|
|
3853
|
+
/* @__PURE__ */ jsxRuntime.jsx(Icon, { as: react.Moon, className: "hidden light:block" })
|
|
3875
3854
|
]
|
|
3876
3855
|
}
|
|
3877
3856
|
);
|
|
3878
3857
|
}
|
|
3879
3858
|
function useTheme() {
|
|
3880
|
-
return react.useSyncExternalStore(subscribe2, currentTheme, server);
|
|
3859
|
+
return react$1.useSyncExternalStore(subscribe2, currentTheme, server);
|
|
3881
3860
|
}
|
|
3882
3861
|
var subscribe2 = (warn) => watchTheme(() => warn());
|
|
3883
3862
|
var server = () => "dark";
|
|
@@ -3966,160 +3945,6 @@ function Logo({
|
|
|
3966
3945
|
] });
|
|
3967
3946
|
}
|
|
3968
3947
|
|
|
3969
|
-
// src/social/index.tsx
|
|
3970
|
-
var social_exports = {};
|
|
3971
|
-
__export(social_exports, {
|
|
3972
|
-
Discord: () => Discord,
|
|
3973
|
-
Email: () => Email,
|
|
3974
|
-
GitHub: () => GitHub,
|
|
3975
|
-
Instagram: () => Instagram,
|
|
3976
|
-
LinkedIn: () => LinkedIn,
|
|
3977
|
-
Newsletter: () => Newsletter,
|
|
3978
|
-
Rss: () => Rss,
|
|
3979
|
-
Website: () => Website,
|
|
3980
|
-
X: () => X,
|
|
3981
|
-
YouTube: () => YouTube
|
|
3982
|
-
});
|
|
3983
|
-
|
|
3984
|
-
// src/social/data.ts
|
|
3985
|
-
var SOCIAL_STROKE_WIDTH = 1.6;
|
|
3986
|
-
var SOCIAL_VIEW_BOX = "0 0 24 24";
|
|
3987
|
-
var gitHubGlyph = {
|
|
3988
|
-
kind: "brand",
|
|
3989
|
-
shapes: [
|
|
3990
|
-
{
|
|
3991
|
-
tag: "path",
|
|
3992
|
-
d: "M12 .5C5.73.5.5 5.73.5 12a11.5 11.5 0 0 0 7.86 10.91c.58.1.79-.25.79-.55 0-.27-.01-1.18-.02-2.14-3.2.7-3.88-1.36-3.88-1.36-.52-1.33-1.28-1.68-1.28-1.68-1.05-.72.08-.7.08-.7 1.16.08 1.77 1.19 1.77 1.19 1.03 1.77 2.7 1.26 3.36.96.1-.75.4-1.26.73-1.55-2.55-.29-5.24-1.28-5.24-5.69 0-1.26.45-2.29 1.19-3.09-.12-.29-.52-1.46.11-3.05 0 0 .97-.31 3.18 1.18a11 11 0 0 1 5.79 0c2.2-1.49 3.17-1.18 3.17-1.18.63 1.59.23 2.76.12 3.05.74.8 1.18 1.83 1.18 3.09 0 4.42-2.69 5.39-5.25 5.68.41.36.78 1.06.78 2.14 0 1.55-.01 2.79-.01 3.17 0 .3.2.66.79.55A11.5 11.5 0 0 0 23.5 12C23.5 5.73 18.27.5 12 .5Z"
|
|
3993
|
-
}
|
|
3994
|
-
]
|
|
3995
|
-
};
|
|
3996
|
-
var linkedInGlyph = {
|
|
3997
|
-
kind: "brand",
|
|
3998
|
-
shapes: [
|
|
3999
|
-
{
|
|
4000
|
-
tag: "path",
|
|
4001
|
-
d: "M4.98 3.5a2.5 2.5 0 1 1 0 5 2.5 2.5 0 0 1 0-5ZM3 9h4v12H3V9Zm7 0h3.8v1.71h.05a4.17 4.17 0 0 1 3.75-2.06c4.01 0 4.75 2.64 4.75 6.07V21h-4v-5.4c0-1.29-.02-2.95-1.8-2.95-1.8 0-2.08 1.4-2.08 2.85V21h-3.97V9Z"
|
|
4002
|
-
}
|
|
4003
|
-
]
|
|
4004
|
-
};
|
|
4005
|
-
var xGlyph = {
|
|
4006
|
-
kind: "brand",
|
|
4007
|
-
shapes: [
|
|
4008
|
-
{
|
|
4009
|
-
tag: "path",
|
|
4010
|
-
d: "M17.53 3h3.06l-6.69 7.64L21.75 21h-6.16l-4.83-6.3L5.25 21H2.19l7.15-8.17L2.5 3h6.32l4.36 5.77L17.53 3Zm-1.07 16.17h1.7L7.62 4.74H5.8l10.66 14.43Z"
|
|
4011
|
-
}
|
|
4012
|
-
]
|
|
4013
|
-
};
|
|
4014
|
-
var instagramGlyph = {
|
|
4015
|
-
kind: "brand",
|
|
4016
|
-
shapes: [
|
|
4017
|
-
{
|
|
4018
|
-
tag: "path",
|
|
4019
|
-
d: "M12 2.16c3.2 0 3.58.01 4.85.07 1.17.05 1.8.25 2.23.41.56.22.96.48 1.38.9.42.42.68.82.9 1.38.16.42.36 1.06.41 2.23.06 1.27.07 1.65.07 4.85s-.01 3.58-.07 4.85c-.05 1.17-.25 1.8-.41 2.23-.22.56-.48.96-.9 1.38-.42.42-.82.68-1.38.9-.42.16-1.06.36-2.23.41-1.27.06-1.65.07-4.85.07s-3.58-.01-4.85-.07c-1.17-.05-1.8-.25-2.23-.41-.56-.22-.96-.48-1.38-.9-.42-.42-.68-.82-.9-1.38-.16-.42-.36-1.06-.41-2.23C2.17 15.58 2.16 15.2 2.16 12s.01-3.58.07-4.85c.05-1.17.25-1.8.41-2.23.22-.56.48-.96.9-1.38.42-.42.82-.68 1.38-.9.42-.16 1.06-.36 2.23-.41C8.42 2.17 8.8 2.16 12 2.16Zm0 3.68a6.16 6.16 0 1 0 0 12.32 6.16 6.16 0 0 0 0-12.32Zm0 10.16a4 4 0 1 1 0-8 4 4 0 0 1 0 8Zm7.85-10.4a1.44 1.44 0 1 1-2.88 0 1.44 1.44 0 0 1 2.88 0Z"
|
|
4020
|
-
}
|
|
4021
|
-
]
|
|
4022
|
-
};
|
|
4023
|
-
var discordGlyph = {
|
|
4024
|
-
kind: "brand",
|
|
4025
|
-
shapes: [
|
|
4026
|
-
{
|
|
4027
|
-
tag: "path",
|
|
4028
|
-
d: "M20.32 5.56A18.5 18.5 0 0 0 15.7 4.1a.07.07 0 0 0-.07.04c-.2.36-.42.82-.58 1.19a17 17 0 0 0-5.1 0c-.16-.38-.39-.83-.59-1.19a.07.07 0 0 0-.07-.04c-1.6.28-3.15.77-4.62 1.46a.06.06 0 0 0-.03.03C1.66 10 .9 14.28 1.28 18.5a.08.08 0 0 0 .03.05 18.6 18.6 0 0 0 5.6 2.84.07.07 0 0 0 .08-.03c.43-.59.81-1.21 1.14-1.86a.07.07 0 0 0-.04-.1c-.6-.23-1.18-.51-1.74-.83a.07.07 0 0 1-.01-.12l.35-.27a.07.07 0 0 1 .07-.01 13.3 13.3 0 0 0 11.3 0 .07.07 0 0 1 .08.01l.34.27c.04.04.04.1-.01.12-.55.33-1.13.6-1.74.83a.07.07 0 0 0-.04.1c.34.65.72 1.27 1.14 1.86a.07.07 0 0 0 .08.03 18.5 18.5 0 0 0 5.6-2.84.07.07 0 0 0 .04-.05c.45-4.88-.75-9.12-3.18-12.88a.06.06 0 0 0-.03-.03ZM8.4 15.93c-1.1 0-2.01-1.01-2.01-2.25 0-1.24.89-2.25 2.01-2.25 1.13 0 2.03 1.02 2.02 2.25 0 1.24-.9 2.25-2.02 2.25Zm7.22 0c-1.1 0-2.01-1.01-2.01-2.25 0-1.24.89-2.25 2.01-2.25 1.13 0 2.03 1.02 2.02 2.25 0 1.24-.89 2.25-2.02 2.25Z"
|
|
4029
|
-
}
|
|
4030
|
-
]
|
|
4031
|
-
};
|
|
4032
|
-
var youTubeGlyph = {
|
|
4033
|
-
kind: "brand",
|
|
4034
|
-
shapes: [
|
|
4035
|
-
{
|
|
4036
|
-
tag: "path",
|
|
4037
|
-
d: "M23.5 6.9a3 3 0 0 0-2.12-2.12C19.5 4.27 12 4.27 12 4.27s-7.5 0-9.38.51A3 3 0 0 0 .5 6.9 31.3 31.3 0 0 0 0 12a31.3 31.3 0 0 0 .5 5.1 3 3 0 0 0 2.12 2.12c1.88.51 9.38.51 9.38.51s7.5 0 9.38-.51a3 3 0 0 0 2.12-2.12A31.3 31.3 0 0 0 24 12a31.3 31.3 0 0 0-.5-5.1ZM9.6 15.6V8.4l6.24 3.6-6.24 3.6Z"
|
|
4038
|
-
}
|
|
4039
|
-
]
|
|
4040
|
-
};
|
|
4041
|
-
var rssGlyph = {
|
|
4042
|
-
kind: "functional",
|
|
4043
|
-
shapes: [
|
|
4044
|
-
{ tag: "path", d: "M4 11a9 9 0 0 1 9 9M4 4a16 16 0 0 1 16 16" },
|
|
4045
|
-
{ tag: "circle", cx: 5, cy: 19, r: 1.6, solid: true }
|
|
4046
|
-
]
|
|
4047
|
-
};
|
|
4048
|
-
var emailGlyph = {
|
|
4049
|
-
kind: "functional",
|
|
4050
|
-
shapes: [
|
|
4051
|
-
{ tag: "rect", x: 2.75, y: 4.75, width: 18.5, height: 14.5, rx: 2 },
|
|
4052
|
-
{ tag: "path", d: "m3.5 7.5 7.4 5.2a2 2 0 0 0 2.2 0l7.4-5.2" }
|
|
4053
|
-
]
|
|
4054
|
-
};
|
|
4055
|
-
var newsletterGlyph = {
|
|
4056
|
-
kind: "functional",
|
|
4057
|
-
shapes: [
|
|
4058
|
-
{ tag: "path", d: "M18 8.5a6 6 0 1 0-12 0c0 5-2 6.5-2 6.5h16s-2-1.5-2-6.5" },
|
|
4059
|
-
{ tag: "path", d: "M13.7 19a2 2 0 0 1-3.4 0" }
|
|
4060
|
-
]
|
|
4061
|
-
};
|
|
4062
|
-
var websiteGlyph = {
|
|
4063
|
-
kind: "functional",
|
|
4064
|
-
shapes: [
|
|
4065
|
-
{ tag: "circle", cx: 12, cy: 12, r: 9.25 },
|
|
4066
|
-
{ tag: "path", d: "M2.75 12h18.5" },
|
|
4067
|
-
{ tag: "path", d: "M12 2.75a14 14 0 0 1 0 18.5a14 14 0 0 1 0-18.5" }
|
|
4068
|
-
]
|
|
4069
|
-
};
|
|
4070
|
-
var SOLID = { fill: "currentColor", stroke: "none" };
|
|
4071
|
-
function drawShape(shape, index) {
|
|
4072
|
-
if (shape.tag === "path") {
|
|
4073
|
-
return /* @__PURE__ */ jsxRuntime.jsx("path", { d: shape.d, ...shape.solid ? SOLID : {} }, index);
|
|
4074
|
-
}
|
|
4075
|
-
if (shape.tag === "circle") {
|
|
4076
|
-
return /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: shape.cx, cy: shape.cy, r: shape.r, ...shape.solid ? SOLID : {} }, index);
|
|
4077
|
-
}
|
|
4078
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
4079
|
-
"rect",
|
|
4080
|
-
{
|
|
4081
|
-
x: shape.x,
|
|
4082
|
-
y: shape.y,
|
|
4083
|
-
width: shape.width,
|
|
4084
|
-
height: shape.height,
|
|
4085
|
-
rx: shape.rx
|
|
4086
|
-
},
|
|
4087
|
-
index
|
|
4088
|
-
);
|
|
4089
|
-
}
|
|
4090
|
-
function Glyph2({ glyph, ...props }) {
|
|
4091
|
-
const brand2 = glyph.kind === "brand";
|
|
4092
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
4093
|
-
"svg",
|
|
4094
|
-
{
|
|
4095
|
-
viewBox: SOCIAL_VIEW_BOX,
|
|
4096
|
-
width: "1em",
|
|
4097
|
-
height: "1em",
|
|
4098
|
-
fill: brand2 ? "currentColor" : "none",
|
|
4099
|
-
...brand2 ? {} : {
|
|
4100
|
-
stroke: "currentColor",
|
|
4101
|
-
strokeWidth: SOCIAL_STROKE_WIDTH,
|
|
4102
|
-
strokeLinecap: "round",
|
|
4103
|
-
strokeLinejoin: "round"
|
|
4104
|
-
},
|
|
4105
|
-
"aria-hidden": "true",
|
|
4106
|
-
focusable: "false",
|
|
4107
|
-
...props,
|
|
4108
|
-
children: glyph.shapes.map(drawShape)
|
|
4109
|
-
}
|
|
4110
|
-
);
|
|
4111
|
-
}
|
|
4112
|
-
var GitHub = (props) => /* @__PURE__ */ jsxRuntime.jsx(Glyph2, { glyph: gitHubGlyph, ...props });
|
|
4113
|
-
var LinkedIn = (props) => /* @__PURE__ */ jsxRuntime.jsx(Glyph2, { glyph: linkedInGlyph, ...props });
|
|
4114
|
-
var X = (props) => /* @__PURE__ */ jsxRuntime.jsx(Glyph2, { glyph: xGlyph, ...props });
|
|
4115
|
-
var Instagram = (props) => /* @__PURE__ */ jsxRuntime.jsx(Glyph2, { glyph: instagramGlyph, ...props });
|
|
4116
|
-
var Discord = (props) => /* @__PURE__ */ jsxRuntime.jsx(Glyph2, { glyph: discordGlyph, ...props });
|
|
4117
|
-
var YouTube = (props) => /* @__PURE__ */ jsxRuntime.jsx(Glyph2, { glyph: youTubeGlyph, ...props });
|
|
4118
|
-
var Rss = (props) => /* @__PURE__ */ jsxRuntime.jsx(Glyph2, { glyph: rssGlyph, ...props });
|
|
4119
|
-
var Email = (props) => /* @__PURE__ */ jsxRuntime.jsx(Glyph2, { glyph: emailGlyph, ...props });
|
|
4120
|
-
var Newsletter = (props) => /* @__PURE__ */ jsxRuntime.jsx(Glyph2, { glyph: newsletterGlyph, ...props });
|
|
4121
|
-
var Website = (props) => /* @__PURE__ */ jsxRuntime.jsx(Glyph2, { glyph: websiteGlyph, ...props });
|
|
4122
|
-
|
|
4123
3948
|
exports.ASSETS_PATH = ASSETS_PATH;
|
|
4124
3949
|
exports.Accordion = Accordion;
|
|
4125
3950
|
exports.AccordionContent = AccordionContent;
|
|
@@ -4293,7 +4118,6 @@ exports.radius = radius;
|
|
|
4293
4118
|
exports.series = series;
|
|
4294
4119
|
exports.shadow = shadow;
|
|
4295
4120
|
exports.size = size;
|
|
4296
|
-
exports.social = social_exports;
|
|
4297
4121
|
exports.spacing = spacing;
|
|
4298
4122
|
exports.storedTheme = storedTheme;
|
|
4299
4123
|
exports.syntax = syntax;
|