@opencosmos/ui 1.3.1 → 1.3.3
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/.claude/CLAUDE.md +47 -47
- package/README.md +21 -21
- package/dist/{hooks-CKW8vE9H.d.ts → hooks-CFPKFXhH.d.ts} +1 -1
- package/dist/{hooks-1b8WaQf1.d.mts → hooks-CeAuZ0i5.d.mts} +1 -1
- package/dist/hooks.d.mts +1 -1
- package/dist/hooks.d.ts +1 -1
- package/dist/hooks.js.map +1 -1
- package/dist/hooks.mjs.map +1 -1
- package/dist/index.d.mts +78 -11
- package/dist/index.d.ts +78 -11
- package/dist/index.js +585 -342
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +548 -312
- package/dist/index.mjs.map +1 -1
- package/dist/{providers-CXPDMsl7.d.mts → providers-CzKisd2T.d.mts} +1 -1
- package/dist/{providers-Dn_Msjvz.d.ts → providers-D39-kwai.d.ts} +1 -1
- package/dist/providers.d.mts +1 -1
- package/dist/providers.d.ts +1 -1
- package/dist/providers.js.map +1 -1
- package/dist/providers.mjs.map +1 -1
- package/dist/tokens.js.map +1 -1
- package/dist/{utils-Cs04sxth.d.mts → utils-CkatYLG4.d.mts} +1 -1
- package/dist/{utils-CIIM7dAC.d.ts → utils-Y1Zi7biA.d.ts} +1 -1
- package/dist/utils.d.mts +1 -1
- package/dist/utils.d.ts +1 -1
- package/dist/utils.js.map +1 -1
- package/dist/utils.mjs.map +1 -1
- package/package.json +257 -257
- package/src/component-registry.ts +4 -4
- package/src/components/data-display/CollapsibleCodeBlock.tsx +1 -1
- package/src/components/data-display/OpenCosmosIcon.tsx +39 -0
- package/src/components/data-display/index.ts +1 -0
- package/src/components/layout/AppSidebar.tsx +277 -0
- package/src/components/layout/CustomizerPanel.tsx +2 -2
- package/src/components/layout/index.ts +1 -0
- package/src/hooks/useTheme.ts +1 -1
- package/src/hooks.ts +1 -1
- package/src/index.ts +6 -4
- package/src/lib/store/customizer.ts +1 -1
- package/src/lib/store/theme.ts +1 -1
- package/src/lib/syntax-parser/index.ts +1 -1
- package/src/providers/ThemeProvider.tsx +2 -2
- package/src/providers.ts +1 -1
- package/src/tokens.ts +3 -3
- package/src/utils.ts +1 -1
package/dist/index.mjs
CHANGED
|
@@ -8267,6 +8267,34 @@ var GitHubIcon = ({
|
|
|
8267
8267
|
);
|
|
8268
8268
|
};
|
|
8269
8269
|
|
|
8270
|
+
// src/components/data-display/OpenCosmosIcon.tsx
|
|
8271
|
+
import { jsx as jsx68, jsxs as jsxs40 } from "react/jsx-runtime";
|
|
8272
|
+
var OpenCosmosIcon = ({
|
|
8273
|
+
ref,
|
|
8274
|
+
size = 20,
|
|
8275
|
+
className = ""
|
|
8276
|
+
}) => /* @__PURE__ */ jsxs40(
|
|
8277
|
+
"svg",
|
|
8278
|
+
{
|
|
8279
|
+
ref,
|
|
8280
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
8281
|
+
width: size,
|
|
8282
|
+
height: size,
|
|
8283
|
+
viewBox: "0 0 24 24",
|
|
8284
|
+
fill: "none",
|
|
8285
|
+
stroke: "currentColor",
|
|
8286
|
+
strokeLinecap: "round",
|
|
8287
|
+
strokeLinejoin: "round",
|
|
8288
|
+
className,
|
|
8289
|
+
"aria-hidden": "true",
|
|
8290
|
+
children: [
|
|
8291
|
+
/* @__PURE__ */ jsx68("circle", { cx: "12", cy: "12", r: "9.5", strokeWidth: "1.5" }),
|
|
8292
|
+
/* @__PURE__ */ jsx68("ellipse", { cx: "12", cy: "12", rx: "9.5", ry: "3.2", strokeWidth: "1.25", transform: "rotate(-35 12 12)" }),
|
|
8293
|
+
/* @__PURE__ */ jsx68("circle", { cx: "12", cy: "12", r: "1.75", fill: "currentColor", stroke: "none" })
|
|
8294
|
+
]
|
|
8295
|
+
}
|
|
8296
|
+
);
|
|
8297
|
+
|
|
8270
8298
|
// src/components/data-display/Heading.tsx
|
|
8271
8299
|
import React16 from "react";
|
|
8272
8300
|
var Heading = ({
|
|
@@ -8374,7 +8402,7 @@ var Text = ({
|
|
|
8374
8402
|
|
|
8375
8403
|
// src/components/data-display/VariableWeightText.tsx
|
|
8376
8404
|
import { motion as motion2 } from "framer-motion";
|
|
8377
|
-
import { jsx as
|
|
8405
|
+
import { jsx as jsx69 } from "react/jsx-runtime";
|
|
8378
8406
|
var VariableWeightText = ({
|
|
8379
8407
|
children,
|
|
8380
8408
|
minWeight = 200,
|
|
@@ -8390,7 +8418,7 @@ var VariableWeightText = ({
|
|
|
8390
8418
|
const effectiveIntensity = intensity ?? motionIntensity;
|
|
8391
8419
|
const scaledDuration = effectiveIntensity > 0 ? duration * (5 / effectiveIntensity) : duration;
|
|
8392
8420
|
if (effectiveIntensity === 0) {
|
|
8393
|
-
return /* @__PURE__ */
|
|
8421
|
+
return /* @__PURE__ */ jsx69(
|
|
8394
8422
|
"div",
|
|
8395
8423
|
{
|
|
8396
8424
|
className,
|
|
@@ -8409,7 +8437,7 @@ var VariableWeightText = ({
|
|
|
8409
8437
|
}
|
|
8410
8438
|
);
|
|
8411
8439
|
}
|
|
8412
|
-
return /* @__PURE__ */
|
|
8440
|
+
return /* @__PURE__ */ jsx69(
|
|
8413
8441
|
motion2.div,
|
|
8414
8442
|
{
|
|
8415
8443
|
initial: {
|
|
@@ -8446,7 +8474,7 @@ var VariableWeightText = ({
|
|
|
8446
8474
|
// src/components/data-display/Typewriter.tsx
|
|
8447
8475
|
import { motion as motion3 } from "framer-motion";
|
|
8448
8476
|
import { useEffect as useEffect8, useState as useState13 } from "react";
|
|
8449
|
-
import { jsx as
|
|
8477
|
+
import { jsx as jsx70, jsxs as jsxs41 } from "react/jsx-runtime";
|
|
8450
8478
|
function Typewriter({
|
|
8451
8479
|
text,
|
|
8452
8480
|
speed = 0.05,
|
|
@@ -8509,9 +8537,9 @@ function Typewriter({
|
|
|
8509
8537
|
clearTimeout(timeoutId);
|
|
8510
8538
|
};
|
|
8511
8539
|
}, [text, speed, delay, loop, loopDelay, shouldAnimate, scale]);
|
|
8512
|
-
return /* @__PURE__ */
|
|
8513
|
-
/* @__PURE__ */
|
|
8514
|
-
showCursor && /* @__PURE__ */
|
|
8540
|
+
return /* @__PURE__ */ jsxs41(Component, { className: cn("inline", className), children: [
|
|
8541
|
+
/* @__PURE__ */ jsx70("span", { children: displayedText }),
|
|
8542
|
+
showCursor && /* @__PURE__ */ jsx70(
|
|
8515
8543
|
motion3.span,
|
|
8516
8544
|
{
|
|
8517
8545
|
initial: { opacity: 0 },
|
|
@@ -8526,7 +8554,7 @@ function Typewriter({
|
|
|
8526
8554
|
|
|
8527
8555
|
// src/components/data-display/StatCard.tsx
|
|
8528
8556
|
import { cva as cva12 } from "class-variance-authority";
|
|
8529
|
-
import { jsx as
|
|
8557
|
+
import { jsx as jsx71, jsxs as jsxs42 } from "react/jsx-runtime";
|
|
8530
8558
|
var statCardVariants = cva12(
|
|
8531
8559
|
"rounded-2xl border bg-surface text-foreground shadow-xs p-6",
|
|
8532
8560
|
{
|
|
@@ -8575,7 +8603,7 @@ var statCardChangeVariants = cva12(
|
|
|
8575
8603
|
}
|
|
8576
8604
|
}
|
|
8577
8605
|
);
|
|
8578
|
-
var TrendUpIcon = () => /* @__PURE__ */
|
|
8606
|
+
var TrendUpIcon = () => /* @__PURE__ */ jsxs42(
|
|
8579
8607
|
"svg",
|
|
8580
8608
|
{
|
|
8581
8609
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -8589,12 +8617,12 @@ var TrendUpIcon = () => /* @__PURE__ */ jsxs41(
|
|
|
8589
8617
|
strokeLinejoin: "round",
|
|
8590
8618
|
"aria-hidden": "true",
|
|
8591
8619
|
children: [
|
|
8592
|
-
/* @__PURE__ */
|
|
8593
|
-
/* @__PURE__ */
|
|
8620
|
+
/* @__PURE__ */ jsx71("polyline", { points: "22 7 13.5 15.5 8.5 10.5 2 17" }),
|
|
8621
|
+
/* @__PURE__ */ jsx71("polyline", { points: "16 7 22 7 22 13" })
|
|
8594
8622
|
]
|
|
8595
8623
|
}
|
|
8596
8624
|
);
|
|
8597
|
-
var TrendDownIcon = () => /* @__PURE__ */
|
|
8625
|
+
var TrendDownIcon = () => /* @__PURE__ */ jsxs42(
|
|
8598
8626
|
"svg",
|
|
8599
8627
|
{
|
|
8600
8628
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -8608,12 +8636,12 @@ var TrendDownIcon = () => /* @__PURE__ */ jsxs41(
|
|
|
8608
8636
|
strokeLinejoin: "round",
|
|
8609
8637
|
"aria-hidden": "true",
|
|
8610
8638
|
children: [
|
|
8611
|
-
/* @__PURE__ */
|
|
8612
|
-
/* @__PURE__ */
|
|
8639
|
+
/* @__PURE__ */ jsx71("polyline", { points: "22 17 13.5 8.5 8.5 13.5 2 7" }),
|
|
8640
|
+
/* @__PURE__ */ jsx71("polyline", { points: "16 17 22 17 22 11" })
|
|
8613
8641
|
]
|
|
8614
8642
|
}
|
|
8615
8643
|
);
|
|
8616
|
-
var MinusIcon = () => /* @__PURE__ */
|
|
8644
|
+
var MinusIcon = () => /* @__PURE__ */ jsx71(
|
|
8617
8645
|
"svg",
|
|
8618
8646
|
{
|
|
8619
8647
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -8626,7 +8654,7 @@ var MinusIcon = () => /* @__PURE__ */ jsx70(
|
|
|
8626
8654
|
strokeLinecap: "round",
|
|
8627
8655
|
strokeLinejoin: "round",
|
|
8628
8656
|
"aria-hidden": "true",
|
|
8629
|
-
children: /* @__PURE__ */
|
|
8657
|
+
children: /* @__PURE__ */ jsx71("line", { x1: "5", y1: "12", x2: "19", y2: "12" })
|
|
8630
8658
|
}
|
|
8631
8659
|
);
|
|
8632
8660
|
function StatCard({
|
|
@@ -8642,31 +8670,31 @@ function StatCard({
|
|
|
8642
8670
|
...props
|
|
8643
8671
|
}) {
|
|
8644
8672
|
const resolvedTrend = trend ?? (change !== void 0 ? change > 0 ? "up" : change < 0 ? "down" : "flat" : void 0);
|
|
8645
|
-
return /* @__PURE__ */
|
|
8673
|
+
return /* @__PURE__ */ jsx71(
|
|
8646
8674
|
"div",
|
|
8647
8675
|
{
|
|
8648
8676
|
"data-slot": "stat-card",
|
|
8649
8677
|
role: "article",
|
|
8650
8678
|
className: cn(statCardVariants({ variant, size }), className),
|
|
8651
8679
|
...props,
|
|
8652
|
-
children: /* @__PURE__ */
|
|
8653
|
-
/* @__PURE__ */
|
|
8654
|
-
/* @__PURE__ */
|
|
8655
|
-
icon && /* @__PURE__ */
|
|
8680
|
+
children: /* @__PURE__ */ jsxs42("dl", { className: "space-y-1", children: [
|
|
8681
|
+
/* @__PURE__ */ jsxs42("div", { className: "flex items-center justify-between", children: [
|
|
8682
|
+
/* @__PURE__ */ jsx71("dt", { className: "text-sm font-medium text-foreground-secondary", children: label }),
|
|
8683
|
+
icon && /* @__PURE__ */ jsx71("div", { className: "text-foreground-secondary", "aria-hidden": "true", children: icon })
|
|
8656
8684
|
] }),
|
|
8657
|
-
/* @__PURE__ */
|
|
8658
|
-
(change !== void 0 || description) && /* @__PURE__ */
|
|
8659
|
-
change !== void 0 && resolvedTrend && /* @__PURE__ */
|
|
8660
|
-
resolvedTrend === "up" && /* @__PURE__ */
|
|
8661
|
-
resolvedTrend === "down" && /* @__PURE__ */
|
|
8662
|
-
resolvedTrend === "flat" && /* @__PURE__ */
|
|
8663
|
-
/* @__PURE__ */
|
|
8685
|
+
/* @__PURE__ */ jsx71("dd", { className: cn(statCardValueVariants({ size })), children: value }),
|
|
8686
|
+
(change !== void 0 || description) && /* @__PURE__ */ jsxs42("dd", { className: "flex items-center gap-2 pt-1", children: [
|
|
8687
|
+
change !== void 0 && resolvedTrend && /* @__PURE__ */ jsxs42("span", { className: cn(statCardChangeVariants({ trend: resolvedTrend })), children: [
|
|
8688
|
+
resolvedTrend === "up" && /* @__PURE__ */ jsx71(TrendUpIcon, {}),
|
|
8689
|
+
resolvedTrend === "down" && /* @__PURE__ */ jsx71(TrendDownIcon, {}),
|
|
8690
|
+
resolvedTrend === "flat" && /* @__PURE__ */ jsx71(MinusIcon, {}),
|
|
8691
|
+
/* @__PURE__ */ jsxs42("span", { children: [
|
|
8664
8692
|
change > 0 ? "+" : "",
|
|
8665
8693
|
change,
|
|
8666
8694
|
"%"
|
|
8667
8695
|
] })
|
|
8668
8696
|
] }),
|
|
8669
|
-
description && /* @__PURE__ */
|
|
8697
|
+
description && /* @__PURE__ */ jsx71("span", { className: "text-sm text-foreground-secondary", children: description })
|
|
8670
8698
|
] })
|
|
8671
8699
|
] })
|
|
8672
8700
|
}
|
|
@@ -8676,7 +8704,7 @@ function StatCardGroup({
|
|
|
8676
8704
|
className,
|
|
8677
8705
|
...props
|
|
8678
8706
|
}) {
|
|
8679
|
-
return /* @__PURE__ */
|
|
8707
|
+
return /* @__PURE__ */ jsx71(
|
|
8680
8708
|
"div",
|
|
8681
8709
|
{
|
|
8682
8710
|
"data-slot": "stat-card-group",
|
|
@@ -8688,7 +8716,7 @@ function StatCardGroup({
|
|
|
8688
8716
|
|
|
8689
8717
|
// src/components/data-display/Timeline.tsx
|
|
8690
8718
|
import { cva as cva13 } from "class-variance-authority";
|
|
8691
|
-
import { jsx as
|
|
8719
|
+
import { jsx as jsx72, jsxs as jsxs43 } from "react/jsx-runtime";
|
|
8692
8720
|
var timelineVariants = cva13("relative", {
|
|
8693
8721
|
variants: {
|
|
8694
8722
|
orientation: {
|
|
@@ -8722,7 +8750,7 @@ var timelineItemStatusVariants = cva13(
|
|
|
8722
8750
|
}
|
|
8723
8751
|
}
|
|
8724
8752
|
);
|
|
8725
|
-
var CheckIcon3 = () => /* @__PURE__ */
|
|
8753
|
+
var CheckIcon3 = () => /* @__PURE__ */ jsx72(
|
|
8726
8754
|
"svg",
|
|
8727
8755
|
{
|
|
8728
8756
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -8735,10 +8763,10 @@ var CheckIcon3 = () => /* @__PURE__ */ jsx71(
|
|
|
8735
8763
|
strokeLinecap: "round",
|
|
8736
8764
|
strokeLinejoin: "round",
|
|
8737
8765
|
"aria-hidden": "true",
|
|
8738
|
-
children: /* @__PURE__ */
|
|
8766
|
+
children: /* @__PURE__ */ jsx72("polyline", { points: "20 6 9 17 4 12" })
|
|
8739
8767
|
}
|
|
8740
8768
|
);
|
|
8741
|
-
var XIcon4 = () => /* @__PURE__ */
|
|
8769
|
+
var XIcon4 = () => /* @__PURE__ */ jsxs43(
|
|
8742
8770
|
"svg",
|
|
8743
8771
|
{
|
|
8744
8772
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -8752,12 +8780,12 @@ var XIcon4 = () => /* @__PURE__ */ jsxs42(
|
|
|
8752
8780
|
strokeLinejoin: "round",
|
|
8753
8781
|
"aria-hidden": "true",
|
|
8754
8782
|
children: [
|
|
8755
|
-
/* @__PURE__ */
|
|
8756
|
-
/* @__PURE__ */
|
|
8783
|
+
/* @__PURE__ */ jsx72("line", { x1: "18", y1: "6", x2: "6", y2: "18" }),
|
|
8784
|
+
/* @__PURE__ */ jsx72("line", { x1: "6", y1: "6", x2: "18", y2: "18" })
|
|
8757
8785
|
]
|
|
8758
8786
|
}
|
|
8759
8787
|
);
|
|
8760
|
-
var CircleIcon = () => /* @__PURE__ */
|
|
8788
|
+
var CircleIcon = () => /* @__PURE__ */ jsx72(
|
|
8761
8789
|
"svg",
|
|
8762
8790
|
{
|
|
8763
8791
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -8766,7 +8794,7 @@ var CircleIcon = () => /* @__PURE__ */ jsx71(
|
|
|
8766
8794
|
viewBox: "0 0 24 24",
|
|
8767
8795
|
fill: "currentColor",
|
|
8768
8796
|
"aria-hidden": "true",
|
|
8769
|
-
children: /* @__PURE__ */
|
|
8797
|
+
children: /* @__PURE__ */ jsx72("circle", { cx: "12", cy: "12", r: "6" })
|
|
8770
8798
|
}
|
|
8771
8799
|
);
|
|
8772
8800
|
function Timeline({
|
|
@@ -8775,7 +8803,7 @@ function Timeline({
|
|
|
8775
8803
|
children,
|
|
8776
8804
|
...props
|
|
8777
8805
|
}) {
|
|
8778
|
-
return /* @__PURE__ */
|
|
8806
|
+
return /* @__PURE__ */ jsx72(
|
|
8779
8807
|
"ol",
|
|
8780
8808
|
{
|
|
8781
8809
|
"data-slot": "timeline",
|
|
@@ -8799,16 +8827,16 @@ function TimelineItem({
|
|
|
8799
8827
|
const defaultIcon = (() => {
|
|
8800
8828
|
switch (status) {
|
|
8801
8829
|
case "completed":
|
|
8802
|
-
return /* @__PURE__ */
|
|
8830
|
+
return /* @__PURE__ */ jsx72(CheckIcon3, {});
|
|
8803
8831
|
case "error":
|
|
8804
|
-
return /* @__PURE__ */
|
|
8832
|
+
return /* @__PURE__ */ jsx72(XIcon4, {});
|
|
8805
8833
|
case "active":
|
|
8806
|
-
return /* @__PURE__ */
|
|
8834
|
+
return /* @__PURE__ */ jsx72(CircleIcon, {});
|
|
8807
8835
|
default:
|
|
8808
|
-
return /* @__PURE__ */
|
|
8836
|
+
return /* @__PURE__ */ jsx72(CircleIcon, {});
|
|
8809
8837
|
}
|
|
8810
8838
|
})();
|
|
8811
|
-
return /* @__PURE__ */
|
|
8839
|
+
return /* @__PURE__ */ jsxs43(
|
|
8812
8840
|
"li",
|
|
8813
8841
|
{
|
|
8814
8842
|
"data-slot": "timeline-item",
|
|
@@ -8816,8 +8844,8 @@ function TimelineItem({
|
|
|
8816
8844
|
"aria-current": status === "active" ? "step" : void 0,
|
|
8817
8845
|
...props,
|
|
8818
8846
|
children: [
|
|
8819
|
-
/* @__PURE__ */
|
|
8820
|
-
/* @__PURE__ */
|
|
8847
|
+
/* @__PURE__ */ jsxs43("div", { className: "flex flex-col items-center", children: [
|
|
8848
|
+
/* @__PURE__ */ jsx72(
|
|
8821
8849
|
"div",
|
|
8822
8850
|
{
|
|
8823
8851
|
"data-slot": "timeline-icon",
|
|
@@ -8826,7 +8854,7 @@ function TimelineItem({
|
|
|
8826
8854
|
children: icon ?? defaultIcon
|
|
8827
8855
|
}
|
|
8828
8856
|
),
|
|
8829
|
-
!isLast && /* @__PURE__ */
|
|
8857
|
+
!isLast && /* @__PURE__ */ jsx72(
|
|
8830
8858
|
"div",
|
|
8831
8859
|
{
|
|
8832
8860
|
"data-slot": "timeline-connector",
|
|
@@ -8837,12 +8865,12 @@ function TimelineItem({
|
|
|
8837
8865
|
}
|
|
8838
8866
|
)
|
|
8839
8867
|
] }),
|
|
8840
|
-
/* @__PURE__ */
|
|
8841
|
-
/* @__PURE__ */
|
|
8842
|
-
/* @__PURE__ */
|
|
8843
|
-
timestamp && /* @__PURE__ */
|
|
8868
|
+
/* @__PURE__ */ jsxs43("div", { className: cn("pb-6", isLast && "pb-0"), children: [
|
|
8869
|
+
/* @__PURE__ */ jsxs43("div", { className: "flex items-center gap-2", children: [
|
|
8870
|
+
/* @__PURE__ */ jsx72("p", { className: "font-medium text-foreground leading-none", children: title }),
|
|
8871
|
+
timestamp && /* @__PURE__ */ jsx72("time", { className: "text-xs text-foreground-secondary", children: timestamp })
|
|
8844
8872
|
] }),
|
|
8845
|
-
description && /* @__PURE__ */
|
|
8873
|
+
description && /* @__PURE__ */ jsx72("p", { className: "mt-1 text-sm text-foreground-secondary", children: description })
|
|
8846
8874
|
] })
|
|
8847
8875
|
]
|
|
8848
8876
|
}
|
|
@@ -8852,7 +8880,7 @@ function TimelineItem({
|
|
|
8852
8880
|
// src/components/data-display/TreeView.tsx
|
|
8853
8881
|
import * as React18 from "react";
|
|
8854
8882
|
import { cva as cva14 } from "class-variance-authority";
|
|
8855
|
-
import { jsx as
|
|
8883
|
+
import { jsx as jsx73, jsxs as jsxs44 } from "react/jsx-runtime";
|
|
8856
8884
|
var treeNodeVariants = cva14(
|
|
8857
8885
|
"flex items-center gap-2 py-1 px-2 rounded-md text-sm cursor-pointer select-none transition-colors",
|
|
8858
8886
|
{
|
|
@@ -8868,7 +8896,7 @@ var treeNodeVariants = cva14(
|
|
|
8868
8896
|
}
|
|
8869
8897
|
}
|
|
8870
8898
|
);
|
|
8871
|
-
var ChevronIcon = ({ expanded }) => /* @__PURE__ */
|
|
8899
|
+
var ChevronIcon = ({ expanded }) => /* @__PURE__ */ jsx73(
|
|
8872
8900
|
"svg",
|
|
8873
8901
|
{
|
|
8874
8902
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -8885,7 +8913,7 @@ var ChevronIcon = ({ expanded }) => /* @__PURE__ */ jsx72(
|
|
|
8885
8913
|
"shrink-0 transition-transform",
|
|
8886
8914
|
expanded ? "rotate-90" : "rotate-0"
|
|
8887
8915
|
),
|
|
8888
|
-
children: /* @__PURE__ */
|
|
8916
|
+
children: /* @__PURE__ */ jsx73("polyline", { points: "9 18 15 12 9 6" })
|
|
8889
8917
|
}
|
|
8890
8918
|
);
|
|
8891
8919
|
var TreeViewContext = React18.createContext({
|
|
@@ -8937,14 +8965,14 @@ function TreeView({
|
|
|
8937
8965
|
},
|
|
8938
8966
|
[controlledSelected, onSelectChange]
|
|
8939
8967
|
);
|
|
8940
|
-
return /* @__PURE__ */
|
|
8968
|
+
return /* @__PURE__ */ jsx73(TreeViewContext.Provider, { value: { expanded, selected, toggleExpand, selectNode }, children: /* @__PURE__ */ jsx73(
|
|
8941
8969
|
"div",
|
|
8942
8970
|
{
|
|
8943
8971
|
"data-slot": "tree-view",
|
|
8944
8972
|
role: "tree",
|
|
8945
8973
|
className: cn("space-y-0.5", className),
|
|
8946
8974
|
...props,
|
|
8947
|
-
children: nodes.map((node) => /* @__PURE__ */
|
|
8975
|
+
children: nodes.map((node) => /* @__PURE__ */ jsx73(TreeViewNodeComponent, { node, level: 1 }, node.id))
|
|
8948
8976
|
}
|
|
8949
8977
|
) });
|
|
8950
8978
|
}
|
|
@@ -8983,8 +9011,8 @@ function TreeViewNodeComponent({ node, level }) {
|
|
|
8983
9011
|
break;
|
|
8984
9012
|
}
|
|
8985
9013
|
};
|
|
8986
|
-
return /* @__PURE__ */
|
|
8987
|
-
/* @__PURE__ */
|
|
9014
|
+
return /* @__PURE__ */ jsxs44("div", { "data-slot": "tree-view-node", role: "treeitem", "aria-expanded": hasChildren ? isExpanded : void 0, "aria-level": level, "aria-selected": isSelected, children: [
|
|
9015
|
+
/* @__PURE__ */ jsxs44(
|
|
8988
9016
|
"div",
|
|
8989
9017
|
{
|
|
8990
9018
|
className: cn(treeNodeVariants({ state })),
|
|
@@ -8993,18 +9021,18 @@ function TreeViewNodeComponent({ node, level }) {
|
|
|
8993
9021
|
onKeyDown: handleKeyDown,
|
|
8994
9022
|
tabIndex: node.disabled ? -1 : 0,
|
|
8995
9023
|
children: [
|
|
8996
|
-
hasChildren ? /* @__PURE__ */
|
|
8997
|
-
node.icon && /* @__PURE__ */
|
|
8998
|
-
/* @__PURE__ */
|
|
9024
|
+
hasChildren ? /* @__PURE__ */ jsx73(ChevronIcon, { expanded: isExpanded }) : /* @__PURE__ */ jsx73("span", { className: "w-3.5 shrink-0", "aria-hidden": "true" }),
|
|
9025
|
+
node.icon && /* @__PURE__ */ jsx73("span", { className: "shrink-0 text-foreground-secondary", "aria-hidden": "true", children: node.icon }),
|
|
9026
|
+
/* @__PURE__ */ jsx73("span", { className: "truncate", children: node.label })
|
|
8999
9027
|
]
|
|
9000
9028
|
}
|
|
9001
9029
|
),
|
|
9002
|
-
hasChildren && isExpanded && /* @__PURE__ */
|
|
9030
|
+
hasChildren && isExpanded && /* @__PURE__ */ jsx73("div", { role: "group", children: node.children.map((child) => /* @__PURE__ */ jsx73(TreeViewNodeComponent, { node: child, level: level + 1 }, child.id)) })
|
|
9003
9031
|
] });
|
|
9004
9032
|
}
|
|
9005
9033
|
|
|
9006
9034
|
// src/components/blocks/social/OpenGraphCard.tsx
|
|
9007
|
-
import { jsx as
|
|
9035
|
+
import { jsx as jsx74, jsxs as jsxs45 } from "react/jsx-runtime";
|
|
9008
9036
|
function buildGradientCSS(config) {
|
|
9009
9037
|
const { type, angle = 135, position = "circle at 50% 50%", colors, stops } = config;
|
|
9010
9038
|
const colorStops = colors.map((color, index) => {
|
|
@@ -9072,7 +9100,7 @@ function OpenGraphCard({
|
|
|
9072
9100
|
const activeStyle = backgroundStyles[variant] || backgroundStyles.sage;
|
|
9073
9101
|
const firstColor = gradient?.colors[0] || primaryColor || "#0a0a0a";
|
|
9074
9102
|
const isLight = variant === "secondary" || isLightColor(firstColor);
|
|
9075
|
-
return /* @__PURE__ */
|
|
9103
|
+
return /* @__PURE__ */ jsxs45(
|
|
9076
9104
|
"div",
|
|
9077
9105
|
{
|
|
9078
9106
|
className: cn(className),
|
|
@@ -9093,7 +9121,7 @@ function OpenGraphCard({
|
|
|
9093
9121
|
},
|
|
9094
9122
|
...props,
|
|
9095
9123
|
children: [
|
|
9096
|
-
!isLight && /* @__PURE__ */
|
|
9124
|
+
!isLight && /* @__PURE__ */ jsx74(
|
|
9097
9125
|
"div",
|
|
9098
9126
|
{
|
|
9099
9127
|
style: {
|
|
@@ -9109,7 +9137,7 @@ function OpenGraphCard({
|
|
|
9109
9137
|
}
|
|
9110
9138
|
}
|
|
9111
9139
|
),
|
|
9112
|
-
/* @__PURE__ */
|
|
9140
|
+
/* @__PURE__ */ jsxs45(
|
|
9113
9141
|
"div",
|
|
9114
9142
|
{
|
|
9115
9143
|
style: {
|
|
@@ -9123,7 +9151,7 @@ function OpenGraphCard({
|
|
|
9123
9151
|
textAlign: "center"
|
|
9124
9152
|
},
|
|
9125
9153
|
children: [
|
|
9126
|
-
icon !== null && (icon !== void 0 ? /* @__PURE__ */
|
|
9154
|
+
icon !== null && (icon !== void 0 ? /* @__PURE__ */ jsx74(
|
|
9127
9155
|
"div",
|
|
9128
9156
|
{
|
|
9129
9157
|
style: {
|
|
@@ -9134,7 +9162,7 @@ function OpenGraphCard({
|
|
|
9134
9162
|
},
|
|
9135
9163
|
children: icon
|
|
9136
9164
|
}
|
|
9137
|
-
) : /* @__PURE__ */
|
|
9165
|
+
) : /* @__PURE__ */ jsx74(
|
|
9138
9166
|
"div",
|
|
9139
9167
|
{
|
|
9140
9168
|
style: {
|
|
@@ -9148,10 +9176,10 @@ function OpenGraphCard({
|
|
|
9148
9176
|
boxShadow: "0 4px 12px rgba(0, 0, 0, 0.1)",
|
|
9149
9177
|
marginBottom: "16px"
|
|
9150
9178
|
},
|
|
9151
|
-
children: /* @__PURE__ */
|
|
9179
|
+
children: /* @__PURE__ */ jsx74("div", { style: { width: "24px", height: "24px", borderRadius: "50%", background: isLight ? "white" : activeStyle.accentColor } })
|
|
9152
9180
|
}
|
|
9153
9181
|
)),
|
|
9154
|
-
/* @__PURE__ */
|
|
9182
|
+
/* @__PURE__ */ jsx74(
|
|
9155
9183
|
"h1",
|
|
9156
9184
|
{
|
|
9157
9185
|
style: {
|
|
@@ -9165,7 +9193,7 @@ function OpenGraphCard({
|
|
|
9165
9193
|
children: title
|
|
9166
9194
|
}
|
|
9167
9195
|
),
|
|
9168
|
-
description && /* @__PURE__ */
|
|
9196
|
+
description && /* @__PURE__ */ jsx74(
|
|
9169
9197
|
"p",
|
|
9170
9198
|
{
|
|
9171
9199
|
style: {
|
|
@@ -9191,13 +9219,13 @@ function OpenGraphCard({
|
|
|
9191
9219
|
// src/components/layout/Accordion.tsx
|
|
9192
9220
|
import * as AccordionPrimitive from "@radix-ui/react-accordion";
|
|
9193
9221
|
import { ChevronDown as ChevronDown3 } from "lucide-react";
|
|
9194
|
-
import { jsx as
|
|
9222
|
+
import { jsx as jsx75, jsxs as jsxs46 } from "react/jsx-runtime";
|
|
9195
9223
|
var Accordion = AccordionPrimitive.Root;
|
|
9196
9224
|
var AccordionItem = ({
|
|
9197
9225
|
ref,
|
|
9198
9226
|
className,
|
|
9199
9227
|
...props
|
|
9200
|
-
}) => /* @__PURE__ */
|
|
9228
|
+
}) => /* @__PURE__ */ jsx75(
|
|
9201
9229
|
AccordionPrimitive.Item,
|
|
9202
9230
|
{
|
|
9203
9231
|
ref,
|
|
@@ -9210,7 +9238,7 @@ var AccordionTrigger = ({
|
|
|
9210
9238
|
className,
|
|
9211
9239
|
children,
|
|
9212
9240
|
...props
|
|
9213
|
-
}) => /* @__PURE__ */
|
|
9241
|
+
}) => /* @__PURE__ */ jsx75(AccordionPrimitive.Header, { className: "flex", children: /* @__PURE__ */ jsxs46(
|
|
9214
9242
|
AccordionPrimitive.Trigger,
|
|
9215
9243
|
{
|
|
9216
9244
|
ref,
|
|
@@ -9221,7 +9249,7 @@ var AccordionTrigger = ({
|
|
|
9221
9249
|
...props,
|
|
9222
9250
|
children: [
|
|
9223
9251
|
children,
|
|
9224
|
-
/* @__PURE__ */
|
|
9252
|
+
/* @__PURE__ */ jsx75(ChevronDown3, { className: "pointer-events-none h-4 w-4 shrink-0 translate-y-0.5 text-muted-foreground transition-transform duration-200" })
|
|
9225
9253
|
]
|
|
9226
9254
|
}
|
|
9227
9255
|
) });
|
|
@@ -9230,13 +9258,13 @@ var AccordionContent = ({
|
|
|
9230
9258
|
className,
|
|
9231
9259
|
children,
|
|
9232
9260
|
...props
|
|
9233
|
-
}) => /* @__PURE__ */
|
|
9261
|
+
}) => /* @__PURE__ */ jsx75(
|
|
9234
9262
|
AccordionPrimitive.Content,
|
|
9235
9263
|
{
|
|
9236
9264
|
ref,
|
|
9237
9265
|
className: "overflow-hidden text-sm data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down",
|
|
9238
9266
|
...props,
|
|
9239
|
-
children: /* @__PURE__ */
|
|
9267
|
+
children: /* @__PURE__ */ jsx75("div", { className: cn("pb-4 pt-0", className), children })
|
|
9240
9268
|
}
|
|
9241
9269
|
);
|
|
9242
9270
|
|
|
@@ -9248,7 +9276,7 @@ var AspectRatio = AspectRatioPrimitive.Root;
|
|
|
9248
9276
|
import * as React19 from "react";
|
|
9249
9277
|
import useEmblaCarousel from "embla-carousel-react";
|
|
9250
9278
|
import { ArrowLeft, ArrowRight } from "lucide-react";
|
|
9251
|
-
import { jsx as
|
|
9279
|
+
import { jsx as jsx76, jsxs as jsxs47 } from "react/jsx-runtime";
|
|
9252
9280
|
var CarouselContext = React19.createContext(null);
|
|
9253
9281
|
function useCarousel() {
|
|
9254
9282
|
const context = React19.useContext(CarouselContext);
|
|
@@ -9318,7 +9346,7 @@ var Carousel = ({
|
|
|
9318
9346
|
api?.off("select", onSelect);
|
|
9319
9347
|
};
|
|
9320
9348
|
}, [api, onSelect]);
|
|
9321
|
-
return /* @__PURE__ */
|
|
9349
|
+
return /* @__PURE__ */ jsx76(
|
|
9322
9350
|
CarouselContext.Provider,
|
|
9323
9351
|
{
|
|
9324
9352
|
value: {
|
|
@@ -9331,7 +9359,7 @@ var Carousel = ({
|
|
|
9331
9359
|
canScrollPrev,
|
|
9332
9360
|
canScrollNext
|
|
9333
9361
|
},
|
|
9334
|
-
children: /* @__PURE__ */
|
|
9362
|
+
children: /* @__PURE__ */ jsx76(
|
|
9335
9363
|
"div",
|
|
9336
9364
|
{
|
|
9337
9365
|
ref,
|
|
@@ -9352,7 +9380,7 @@ var CarouselContent = ({
|
|
|
9352
9380
|
...props
|
|
9353
9381
|
}) => {
|
|
9354
9382
|
const { carouselRef, orientation } = useCarousel();
|
|
9355
|
-
return /* @__PURE__ */
|
|
9383
|
+
return /* @__PURE__ */ jsx76("div", { ref: carouselRef, className: "overflow-hidden", children: /* @__PURE__ */ jsx76(
|
|
9356
9384
|
"div",
|
|
9357
9385
|
{
|
|
9358
9386
|
ref,
|
|
@@ -9371,7 +9399,7 @@ var CarouselItem = ({
|
|
|
9371
9399
|
...props
|
|
9372
9400
|
}) => {
|
|
9373
9401
|
const { orientation } = useCarousel();
|
|
9374
|
-
return /* @__PURE__ */
|
|
9402
|
+
return /* @__PURE__ */ jsx76(
|
|
9375
9403
|
"div",
|
|
9376
9404
|
{
|
|
9377
9405
|
ref,
|
|
@@ -9394,7 +9422,7 @@ var CarouselPrevious = ({
|
|
|
9394
9422
|
...props
|
|
9395
9423
|
}) => {
|
|
9396
9424
|
const { orientation, scrollPrev, canScrollPrev } = useCarousel();
|
|
9397
|
-
return /* @__PURE__ */
|
|
9425
|
+
return /* @__PURE__ */ jsxs47(
|
|
9398
9426
|
Button,
|
|
9399
9427
|
{
|
|
9400
9428
|
ref,
|
|
@@ -9409,8 +9437,8 @@ var CarouselPrevious = ({
|
|
|
9409
9437
|
onClick: scrollPrev,
|
|
9410
9438
|
...props,
|
|
9411
9439
|
children: [
|
|
9412
|
-
/* @__PURE__ */
|
|
9413
|
-
/* @__PURE__ */
|
|
9440
|
+
/* @__PURE__ */ jsx76(ArrowLeft, { className: "h-4 w-4" }),
|
|
9441
|
+
/* @__PURE__ */ jsx76("span", { className: "sr-only", children: "Previous slide" })
|
|
9414
9442
|
]
|
|
9415
9443
|
}
|
|
9416
9444
|
);
|
|
@@ -9423,7 +9451,7 @@ var CarouselNext = ({
|
|
|
9423
9451
|
...props
|
|
9424
9452
|
}) => {
|
|
9425
9453
|
const { orientation, scrollNext, canScrollNext } = useCarousel();
|
|
9426
|
-
return /* @__PURE__ */
|
|
9454
|
+
return /* @__PURE__ */ jsxs47(
|
|
9427
9455
|
Button,
|
|
9428
9456
|
{
|
|
9429
9457
|
ref,
|
|
@@ -9438,8 +9466,8 @@ var CarouselNext = ({
|
|
|
9438
9466
|
onClick: scrollNext,
|
|
9439
9467
|
...props,
|
|
9440
9468
|
children: [
|
|
9441
|
-
/* @__PURE__ */
|
|
9442
|
-
/* @__PURE__ */
|
|
9469
|
+
/* @__PURE__ */ jsx76(ArrowRight, { className: "h-4 w-4" }),
|
|
9470
|
+
/* @__PURE__ */ jsx76("span", { className: "sr-only", children: "Next slide" })
|
|
9443
9471
|
]
|
|
9444
9472
|
}
|
|
9445
9473
|
);
|
|
@@ -9447,7 +9475,7 @@ var CarouselNext = ({
|
|
|
9447
9475
|
|
|
9448
9476
|
// src/components/layout/Collapsible.tsx
|
|
9449
9477
|
import * as CollapsiblePrimitive from "@radix-ui/react-collapsible";
|
|
9450
|
-
import { jsx as
|
|
9478
|
+
import { jsx as jsx77 } from "react/jsx-runtime";
|
|
9451
9479
|
var Collapsible = CollapsiblePrimitive.Root;
|
|
9452
9480
|
var CollapsibleTrigger2 = CollapsiblePrimitive.CollapsibleTrigger;
|
|
9453
9481
|
var CollapsibleContent2 = ({
|
|
@@ -9455,7 +9483,7 @@ var CollapsibleContent2 = ({
|
|
|
9455
9483
|
className,
|
|
9456
9484
|
children,
|
|
9457
9485
|
...props
|
|
9458
|
-
}) => /* @__PURE__ */
|
|
9486
|
+
}) => /* @__PURE__ */ jsx77(
|
|
9459
9487
|
CollapsiblePrimitive.CollapsibleContent,
|
|
9460
9488
|
{
|
|
9461
9489
|
ref,
|
|
@@ -9500,12 +9528,12 @@ var Container = ({
|
|
|
9500
9528
|
// src/components/layout/CustomizerPanel.tsx
|
|
9501
9529
|
import React21 from "react";
|
|
9502
9530
|
import { SlidersHorizontal, Sun, Moon, SunMoon, Building2, Leaf, Zap, Rocket, X as X3, Palette } from "lucide-react";
|
|
9503
|
-
import { jsx as
|
|
9531
|
+
import { jsx as jsx78, jsxs as jsxs48 } from "react/jsx-runtime";
|
|
9504
9532
|
var allThemeOptions = [
|
|
9505
|
-
{ id: "studio", label: "Studio", icon: /* @__PURE__ */
|
|
9506
|
-
{ id: "terra", label: "Terra", icon: /* @__PURE__ */
|
|
9507
|
-
{ id: "volt", label: "Volt", icon: /* @__PURE__ */
|
|
9508
|
-
{ id: "speedboat", label: "Speedboat", icon: /* @__PURE__ */
|
|
9533
|
+
{ id: "studio", label: "Studio", icon: /* @__PURE__ */ jsx78(Building2, { className: "w-4 h-4" }) },
|
|
9534
|
+
{ id: "terra", label: "Terra", icon: /* @__PURE__ */ jsx78(Leaf, { className: "w-4 h-4" }) },
|
|
9535
|
+
{ id: "volt", label: "Volt", icon: /* @__PURE__ */ jsx78(Zap, { className: "w-4 h-4" }) },
|
|
9536
|
+
{ id: "speedboat", label: "Speedboat", icon: /* @__PURE__ */ jsx78(Rocket, { className: "w-4 h-4" }) }
|
|
9509
9537
|
];
|
|
9510
9538
|
var CustomizerPanel = ({ mode = "full", showMotionIntensity = false, themes }) => {
|
|
9511
9539
|
const [mounted, setMounted] = React21.useState(false);
|
|
@@ -9584,7 +9612,7 @@ var CustomizerPanel = ({ mode = "full", showMotionIntensity = false, themes }) =
|
|
|
9584
9612
|
}, [isOpen]);
|
|
9585
9613
|
if (!mounted) return null;
|
|
9586
9614
|
if (!isOpen) {
|
|
9587
|
-
return /* @__PURE__ */
|
|
9615
|
+
return /* @__PURE__ */ jsxs48(
|
|
9588
9616
|
"button",
|
|
9589
9617
|
{
|
|
9590
9618
|
onClick: () => setIsOpen(true),
|
|
@@ -9592,13 +9620,13 @@ var CustomizerPanel = ({ mode = "full", showMotionIntensity = false, themes }) =
|
|
|
9592
9620
|
className: "fixed bottom-4 right-4 bg-background text-foreground px-4 py-2 rounded-full shadow-lg border border-[var(--color-glass-border)] font-medium hover:opacity-80 transition-all z-50 flex items-center gap-2",
|
|
9593
9621
|
style: { backdropFilter: "var(--effect-blur-sm)" },
|
|
9594
9622
|
children: [
|
|
9595
|
-
mode === "lightweight" ? /* @__PURE__ */
|
|
9623
|
+
mode === "lightweight" ? /* @__PURE__ */ jsx78(SunMoon, { className: "w-5 h-5" }) : /* @__PURE__ */ jsx78(SlidersHorizontal, { className: "w-5 h-5" }),
|
|
9596
9624
|
mode === "lightweight" ? "Theme" : "Customizer"
|
|
9597
9625
|
]
|
|
9598
9626
|
}
|
|
9599
9627
|
);
|
|
9600
9628
|
}
|
|
9601
|
-
return /* @__PURE__ */
|
|
9629
|
+
return /* @__PURE__ */ jsxs48(
|
|
9602
9630
|
"div",
|
|
9603
9631
|
{
|
|
9604
9632
|
ref: panelRef,
|
|
@@ -9617,25 +9645,25 @@ var CustomizerPanel = ({ mode = "full", showMotionIntensity = false, themes }) =
|
|
|
9617
9645
|
backgroundColor: "var(--color-glass)"
|
|
9618
9646
|
},
|
|
9619
9647
|
children: [
|
|
9620
|
-
/* @__PURE__ */
|
|
9621
|
-
/* @__PURE__ */
|
|
9622
|
-
/* @__PURE__ */
|
|
9648
|
+
/* @__PURE__ */ jsxs48("div", { className: "flex justify-between items-center mb-6", children: [
|
|
9649
|
+
/* @__PURE__ */ jsx78("h3", { className: "font-bold text-lg", children: mode === "lightweight" ? "Theme Settings" : "Experience Customizer" }),
|
|
9650
|
+
/* @__PURE__ */ jsx78(
|
|
9623
9651
|
"button",
|
|
9624
9652
|
{
|
|
9625
9653
|
onClick: () => setIsOpen(false),
|
|
9626
9654
|
"aria-label": "Close customizer",
|
|
9627
9655
|
className: "text-foreground opacity-60 hover:opacity-100 transition-opacity p-1",
|
|
9628
|
-
children: /* @__PURE__ */
|
|
9656
|
+
children: /* @__PURE__ */ jsx78(X3, { className: "w-5 h-5", "aria-hidden": "true" })
|
|
9629
9657
|
}
|
|
9630
9658
|
)
|
|
9631
9659
|
] }),
|
|
9632
|
-
/* @__PURE__ */
|
|
9633
|
-
mode === "full" && showMotionIntensity && /* @__PURE__ */
|
|
9634
|
-
/* @__PURE__ */
|
|
9635
|
-
/* @__PURE__ */
|
|
9636
|
-
/* @__PURE__ */
|
|
9660
|
+
/* @__PURE__ */ jsxs48("div", { className: "space-y-6", children: [
|
|
9661
|
+
mode === "full" && showMotionIntensity && /* @__PURE__ */ jsxs48("div", { children: [
|
|
9662
|
+
/* @__PURE__ */ jsxs48("div", { className: "flex justify-between mb-2", children: [
|
|
9663
|
+
/* @__PURE__ */ jsx78("label", { className: "text-sm font-medium opacity-80", children: "Motion Intensity" }),
|
|
9664
|
+
/* @__PURE__ */ jsx78("span", { className: "text-sm opacity-60", children: motion6 })
|
|
9637
9665
|
] }),
|
|
9638
|
-
/* @__PURE__ */
|
|
9666
|
+
/* @__PURE__ */ jsx78(
|
|
9639
9667
|
"input",
|
|
9640
9668
|
{
|
|
9641
9669
|
type: "range",
|
|
@@ -9651,9 +9679,9 @@ var CustomizerPanel = ({ mode = "full", showMotionIntensity = false, themes }) =
|
|
|
9651
9679
|
}
|
|
9652
9680
|
)
|
|
9653
9681
|
] }),
|
|
9654
|
-
mode === "full" && showThemeSelector && /* @__PURE__ */
|
|
9655
|
-
/* @__PURE__ */
|
|
9656
|
-
/* @__PURE__ */
|
|
9682
|
+
mode === "full" && showThemeSelector && /* @__PURE__ */ jsxs48("div", { children: [
|
|
9683
|
+
/* @__PURE__ */ jsx78("label", { className: "block text-sm font-medium opacity-80 mb-3", children: "Theme" }),
|
|
9684
|
+
/* @__PURE__ */ jsx78("div", { className: `grid gap-2 mb-3 ${visibleThemes.length <= 3 ? "grid-cols-3" : "grid-cols-4"}`, children: visibleThemes.map((t) => /* @__PURE__ */ jsxs48(
|
|
9657
9685
|
"button",
|
|
9658
9686
|
{
|
|
9659
9687
|
onClick: () => setTheme(t.id),
|
|
@@ -9668,31 +9696,31 @@ var CustomizerPanel = ({ mode = "full", showMotionIntensity = false, themes }) =
|
|
|
9668
9696
|
borderColor: "var(--color-primary)"
|
|
9669
9697
|
} : {},
|
|
9670
9698
|
children: [
|
|
9671
|
-
/* @__PURE__ */
|
|
9672
|
-
/* @__PURE__ */
|
|
9699
|
+
/* @__PURE__ */ jsx78("span", { className: "text-base", children: t.icon }),
|
|
9700
|
+
/* @__PURE__ */ jsx78("span", { children: t.label })
|
|
9673
9701
|
]
|
|
9674
9702
|
},
|
|
9675
9703
|
t.id
|
|
9676
9704
|
)) }),
|
|
9677
|
-
/* @__PURE__ */
|
|
9678
|
-
/* @__PURE__ */
|
|
9679
|
-
/* @__PURE__ */
|
|
9705
|
+
/* @__PURE__ */ jsxs48("div", { className: "text-xs opacity-60 space-y-1", children: [
|
|
9706
|
+
/* @__PURE__ */ jsxs48("div", { children: [
|
|
9707
|
+
/* @__PURE__ */ jsx78("span", { className: "font-heading", children: "Heading:" }),
|
|
9680
9708
|
" ",
|
|
9681
9709
|
theme === "studio" ? "Outfit" : theme === "terra" ? "Lora" : theme === "speedboat" ? "Montserrat" : "Space Grotesk"
|
|
9682
9710
|
] }),
|
|
9683
|
-
/* @__PURE__ */
|
|
9684
|
-
/* @__PURE__ */
|
|
9711
|
+
/* @__PURE__ */ jsxs48("div", { children: [
|
|
9712
|
+
/* @__PURE__ */ jsx78("span", { className: "font-body", children: "Body:" }),
|
|
9685
9713
|
" ",
|
|
9686
9714
|
theme === "studio" ? "Manrope" : theme === "terra" ? "Instrument Sans" : theme === "speedboat" ? "Roboto" : "Space Grotesk"
|
|
9687
9715
|
] })
|
|
9688
9716
|
] })
|
|
9689
9717
|
] }),
|
|
9690
|
-
/* @__PURE__ */
|
|
9691
|
-
/* @__PURE__ */
|
|
9692
|
-
/* @__PURE__ */
|
|
9693
|
-
{ id: "light", label: "Light", icon: /* @__PURE__ */
|
|
9694
|
-
{ id: "dark", label: "Dark", icon: /* @__PURE__ */
|
|
9695
|
-
].map((m) => /* @__PURE__ */
|
|
9718
|
+
/* @__PURE__ */ jsxs48("div", { children: [
|
|
9719
|
+
/* @__PURE__ */ jsx78("label", { className: "block text-sm font-medium opacity-80 mb-3", children: "Mode" }),
|
|
9720
|
+
/* @__PURE__ */ jsx78("div", { className: "grid grid-cols-2 gap-2", children: [
|
|
9721
|
+
{ id: "light", label: "Light", icon: /* @__PURE__ */ jsx78(Sun, { className: "w-4 h-4" }) },
|
|
9722
|
+
{ id: "dark", label: "Dark", icon: /* @__PURE__ */ jsx78(Moon, { className: "w-4 h-4" }) }
|
|
9723
|
+
].map((m) => /* @__PURE__ */ jsxs48(
|
|
9696
9724
|
"button",
|
|
9697
9725
|
{
|
|
9698
9726
|
onClick: () => setMode(m.id),
|
|
@@ -9707,21 +9735,21 @@ var CustomizerPanel = ({ mode = "full", showMotionIntensity = false, themes }) =
|
|
|
9707
9735
|
borderColor: "var(--color-primary)"
|
|
9708
9736
|
} : {},
|
|
9709
9737
|
children: [
|
|
9710
|
-
/* @__PURE__ */
|
|
9711
|
-
/* @__PURE__ */
|
|
9738
|
+
/* @__PURE__ */ jsx78("span", { children: m.icon }),
|
|
9739
|
+
/* @__PURE__ */ jsx78("span", { children: m.label })
|
|
9712
9740
|
]
|
|
9713
9741
|
},
|
|
9714
9742
|
m.id
|
|
9715
9743
|
)) })
|
|
9716
9744
|
] }),
|
|
9717
|
-
mode === "full" && /* @__PURE__ */
|
|
9718
|
-
/* @__PURE__ */
|
|
9719
|
-
/* @__PURE__ */
|
|
9720
|
-
/* @__PURE__ */
|
|
9721
|
-
/* @__PURE__ */
|
|
9745
|
+
mode === "full" && /* @__PURE__ */ jsxs48("div", { className: "pt-4 border-t border-[var(--color-border)]", children: [
|
|
9746
|
+
/* @__PURE__ */ jsxs48("div", { className: "flex items-center justify-between mb-4", children: [
|
|
9747
|
+
/* @__PURE__ */ jsxs48("div", { className: "flex items-center gap-2", children: [
|
|
9748
|
+
/* @__PURE__ */ jsx78(Palette, { className: "w-4 h-4 opacity-80" }),
|
|
9749
|
+
/* @__PURE__ */ jsx78("label", { className: "text-sm font-medium opacity-80", children: "Color Customization" })
|
|
9722
9750
|
] }),
|
|
9723
|
-
/* @__PURE__ */
|
|
9724
|
-
/* @__PURE__ */
|
|
9751
|
+
/* @__PURE__ */ jsxs48("div", { className: "flex gap-1 bg-[var(--color-surface)] rounded-md p-0.5", children: [
|
|
9752
|
+
/* @__PURE__ */ jsx78(
|
|
9725
9753
|
"button",
|
|
9726
9754
|
{
|
|
9727
9755
|
onClick: () => setCustomizationMode("simple"),
|
|
@@ -9733,7 +9761,7 @@ var CustomizerPanel = ({ mode = "full", showMotionIntensity = false, themes }) =
|
|
|
9733
9761
|
children: "Simple"
|
|
9734
9762
|
}
|
|
9735
9763
|
),
|
|
9736
|
-
/* @__PURE__ */
|
|
9764
|
+
/* @__PURE__ */ jsx78(
|
|
9737
9765
|
"button",
|
|
9738
9766
|
{
|
|
9739
9767
|
onClick: () => setCustomizationMode("advanced"),
|
|
@@ -9747,10 +9775,10 @@ var CustomizerPanel = ({ mode = "full", showMotionIntensity = false, themes }) =
|
|
|
9747
9775
|
)
|
|
9748
9776
|
] })
|
|
9749
9777
|
] }),
|
|
9750
|
-
/* @__PURE__ */
|
|
9751
|
-
/* @__PURE__ */
|
|
9752
|
-
/* @__PURE__ */
|
|
9753
|
-
/* @__PURE__ */
|
|
9778
|
+
/* @__PURE__ */ jsxs48("div", { className: "space-y-4", children: [
|
|
9779
|
+
/* @__PURE__ */ jsxs48("div", { children: [
|
|
9780
|
+
/* @__PURE__ */ jsx78("label", { className: "text-xs font-medium opacity-70 mb-2 block", children: "Primary Color" }),
|
|
9781
|
+
/* @__PURE__ */ jsx78(
|
|
9754
9782
|
ColorPicker,
|
|
9755
9783
|
{
|
|
9756
9784
|
value: tempPrimaryColor,
|
|
@@ -9758,9 +9786,9 @@ var CustomizerPanel = ({ mode = "full", showMotionIntensity = false, themes }) =
|
|
|
9758
9786
|
}
|
|
9759
9787
|
)
|
|
9760
9788
|
] }),
|
|
9761
|
-
customizationMode === "advanced" && /* @__PURE__ */
|
|
9762
|
-
/* @__PURE__ */
|
|
9763
|
-
/* @__PURE__ */
|
|
9789
|
+
customizationMode === "advanced" && /* @__PURE__ */ jsxs48("div", { children: [
|
|
9790
|
+
/* @__PURE__ */ jsx78("label", { className: "text-xs font-medium opacity-70 mb-2 block", children: "Secondary Color" }),
|
|
9791
|
+
/* @__PURE__ */ jsx78(
|
|
9764
9792
|
ColorPicker,
|
|
9765
9793
|
{
|
|
9766
9794
|
value: tempSecondaryColor,
|
|
@@ -9768,9 +9796,9 @@ var CustomizerPanel = ({ mode = "full", showMotionIntensity = false, themes }) =
|
|
|
9768
9796
|
}
|
|
9769
9797
|
)
|
|
9770
9798
|
] }),
|
|
9771
|
-
customizationMode === "advanced" && /* @__PURE__ */
|
|
9772
|
-
/* @__PURE__ */
|
|
9773
|
-
/* @__PURE__ */
|
|
9799
|
+
customizationMode === "advanced" && /* @__PURE__ */ jsxs48("div", { children: [
|
|
9800
|
+
/* @__PURE__ */ jsx78("label", { className: "text-xs font-medium opacity-70 mb-2 block", children: "Accent Color" }),
|
|
9801
|
+
/* @__PURE__ */ jsx78(
|
|
9774
9802
|
ColorPicker,
|
|
9775
9803
|
{
|
|
9776
9804
|
value: tempAccentColor,
|
|
@@ -9779,8 +9807,8 @@ var CustomizerPanel = ({ mode = "full", showMotionIntensity = false, themes }) =
|
|
|
9779
9807
|
)
|
|
9780
9808
|
] })
|
|
9781
9809
|
] }),
|
|
9782
|
-
/* @__PURE__ */
|
|
9783
|
-
/* @__PURE__ */
|
|
9810
|
+
/* @__PURE__ */ jsxs48("div", { className: "flex gap-2 mt-4", children: [
|
|
9811
|
+
/* @__PURE__ */ jsx78(
|
|
9784
9812
|
Button,
|
|
9785
9813
|
{
|
|
9786
9814
|
onClick: handleApplyColor,
|
|
@@ -9790,7 +9818,7 @@ var CustomizerPanel = ({ mode = "full", showMotionIntensity = false, themes }) =
|
|
|
9790
9818
|
children: "Apply Colors"
|
|
9791
9819
|
}
|
|
9792
9820
|
),
|
|
9793
|
-
currentPalette && /* @__PURE__ */
|
|
9821
|
+
currentPalette && /* @__PURE__ */ jsx78(
|
|
9794
9822
|
Button,
|
|
9795
9823
|
{
|
|
9796
9824
|
onClick: handleResetColors,
|
|
@@ -9800,7 +9828,7 @@ var CustomizerPanel = ({ mode = "full", showMotionIntensity = false, themes }) =
|
|
|
9800
9828
|
}
|
|
9801
9829
|
)
|
|
9802
9830
|
] }),
|
|
9803
|
-
currentPalette && /* @__PURE__ */
|
|
9831
|
+
currentPalette && /* @__PURE__ */ jsxs48("p", { className: "text-xs opacity-60 mt-2", children: [
|
|
9804
9832
|
"Custom colors active for ",
|
|
9805
9833
|
theme,
|
|
9806
9834
|
" ",
|
|
@@ -9817,7 +9845,7 @@ var CustomizerPanel = ({ mode = "full", showMotionIntensity = false, themes }) =
|
|
|
9817
9845
|
// src/components/layout/DatePicker.tsx
|
|
9818
9846
|
import { format } from "date-fns";
|
|
9819
9847
|
import { Calendar as CalendarIcon } from "lucide-react";
|
|
9820
|
-
import { jsx as
|
|
9848
|
+
import { jsx as jsx79, jsxs as jsxs49 } from "react/jsx-runtime";
|
|
9821
9849
|
function DatePicker({
|
|
9822
9850
|
date,
|
|
9823
9851
|
onDateChange,
|
|
@@ -9825,8 +9853,8 @@ function DatePicker({
|
|
|
9825
9853
|
className,
|
|
9826
9854
|
disabled = false
|
|
9827
9855
|
}) {
|
|
9828
|
-
return /* @__PURE__ */
|
|
9829
|
-
/* @__PURE__ */
|
|
9856
|
+
return /* @__PURE__ */ jsxs49(Popover, { children: [
|
|
9857
|
+
/* @__PURE__ */ jsx79(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsxs49(
|
|
9830
9858
|
Button,
|
|
9831
9859
|
{
|
|
9832
9860
|
variant: "outline",
|
|
@@ -9837,12 +9865,12 @@ function DatePicker({
|
|
|
9837
9865
|
),
|
|
9838
9866
|
disabled,
|
|
9839
9867
|
children: [
|
|
9840
|
-
/* @__PURE__ */
|
|
9841
|
-
date ? format(date, "PPP") : /* @__PURE__ */
|
|
9868
|
+
/* @__PURE__ */ jsx79(CalendarIcon, { className: "mr-2 h-4 w-4" }),
|
|
9869
|
+
date ? format(date, "PPP") : /* @__PURE__ */ jsx79("span", { children: placeholder })
|
|
9842
9870
|
]
|
|
9843
9871
|
}
|
|
9844
9872
|
) }),
|
|
9845
|
-
/* @__PURE__ */
|
|
9873
|
+
/* @__PURE__ */ jsx79(PopoverContent, { className: "w-auto p-0", children: /* @__PURE__ */ jsx79(
|
|
9846
9874
|
Calendar,
|
|
9847
9875
|
{
|
|
9848
9876
|
mode: "single",
|
|
@@ -9855,7 +9883,7 @@ function DatePicker({
|
|
|
9855
9883
|
}
|
|
9856
9884
|
|
|
9857
9885
|
// src/components/layout/Footer/Footer.tsx
|
|
9858
|
-
import { jsx as
|
|
9886
|
+
import { jsx as jsx80, jsxs as jsxs50 } from "react/jsx-runtime";
|
|
9859
9887
|
var Footer = ({
|
|
9860
9888
|
ref,
|
|
9861
9889
|
logo,
|
|
@@ -9865,7 +9893,7 @@ var Footer = ({
|
|
|
9865
9893
|
className = ""
|
|
9866
9894
|
}) => {
|
|
9867
9895
|
const currentYear = (/* @__PURE__ */ new Date()).getFullYear();
|
|
9868
|
-
return /* @__PURE__ */
|
|
9896
|
+
return /* @__PURE__ */ jsxs50(
|
|
9869
9897
|
"footer",
|
|
9870
9898
|
{
|
|
9871
9899
|
ref,
|
|
@@ -9875,11 +9903,11 @@ var Footer = ({
|
|
|
9875
9903
|
${className}
|
|
9876
9904
|
`,
|
|
9877
9905
|
children: [
|
|
9878
|
-
/* @__PURE__ */
|
|
9879
|
-
/* @__PURE__ */
|
|
9880
|
-
sections.map((section, index) => /* @__PURE__ */
|
|
9881
|
-
/* @__PURE__ */
|
|
9882
|
-
/* @__PURE__ */
|
|
9906
|
+
/* @__PURE__ */ jsx80("div", { className: "max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-16 sm:py-20 lg:py-24", children: /* @__PURE__ */ jsxs50("div", { className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-12 gap-12 lg:gap-8", children: [
|
|
9907
|
+
/* @__PURE__ */ jsx80("div", { className: "lg:col-span-4", children: logo && /* @__PURE__ */ jsx80("div", { className: "mb-6 text-2xl font-bold text-[var(--color-text-primary)]", children: logo }) }),
|
|
9908
|
+
sections.map((section, index) => /* @__PURE__ */ jsxs50("div", { className: "lg:col-span-2", children: [
|
|
9909
|
+
/* @__PURE__ */ jsx80("h3", { className: "text-sm font-semibold text-[var(--color-text-primary)] uppercase tracking-wider mb-4", children: section.title }),
|
|
9910
|
+
/* @__PURE__ */ jsx80("ul", { className: "space-y-3", children: section.links.map((link) => /* @__PURE__ */ jsx80("li", { children: /* @__PURE__ */ jsx80(
|
|
9883
9911
|
"a",
|
|
9884
9912
|
{
|
|
9885
9913
|
href: link.href,
|
|
@@ -9890,10 +9918,10 @@ var Footer = ({
|
|
|
9890
9918
|
}
|
|
9891
9919
|
) }, link.label)) })
|
|
9892
9920
|
] }, section.title)),
|
|
9893
|
-
socialLinks && /* @__PURE__ */
|
|
9894
|
-
/* @__PURE__ */
|
|
9895
|
-
/* @__PURE__ */
|
|
9896
|
-
socialLinks.github && /* @__PURE__ */
|
|
9921
|
+
socialLinks && /* @__PURE__ */ jsxs50("div", { className: "lg:col-span-2", children: [
|
|
9922
|
+
/* @__PURE__ */ jsx80("h3", { className: "text-sm font-semibold text-[var(--color-text-primary)] uppercase tracking-wider mb-4", children: "Connect" }),
|
|
9923
|
+
/* @__PURE__ */ jsxs50("ul", { className: "space-y-3", children: [
|
|
9924
|
+
socialLinks.github && /* @__PURE__ */ jsx80("li", { children: /* @__PURE__ */ jsxs50(
|
|
9897
9925
|
"a",
|
|
9898
9926
|
{
|
|
9899
9927
|
href: socialLinks.github,
|
|
@@ -9901,12 +9929,12 @@ var Footer = ({
|
|
|
9901
9929
|
rel: "noopener noreferrer",
|
|
9902
9930
|
className: "text-[var(--color-text-secondary)] hover:text-[var(--color-primary)] transition-colors duration-200 text-sm flex items-center gap-2",
|
|
9903
9931
|
children: [
|
|
9904
|
-
/* @__PURE__ */
|
|
9932
|
+
/* @__PURE__ */ jsx80(GitHubIcon, { size: 16 }),
|
|
9905
9933
|
"GitHub"
|
|
9906
9934
|
]
|
|
9907
9935
|
}
|
|
9908
9936
|
) }),
|
|
9909
|
-
socialLinks.linkedin && /* @__PURE__ */
|
|
9937
|
+
socialLinks.linkedin && /* @__PURE__ */ jsx80("li", { children: /* @__PURE__ */ jsx80(
|
|
9910
9938
|
"a",
|
|
9911
9939
|
{
|
|
9912
9940
|
href: socialLinks.linkedin,
|
|
@@ -9916,7 +9944,7 @@ var Footer = ({
|
|
|
9916
9944
|
children: "LinkedIn"
|
|
9917
9945
|
}
|
|
9918
9946
|
) }),
|
|
9919
|
-
socialLinks.email && /* @__PURE__ */
|
|
9947
|
+
socialLinks.email && /* @__PURE__ */ jsx80("li", { children: /* @__PURE__ */ jsx80(
|
|
9920
9948
|
"a",
|
|
9921
9949
|
{
|
|
9922
9950
|
href: `mailto:${socialLinks.email}`,
|
|
@@ -9927,14 +9955,14 @@ var Footer = ({
|
|
|
9927
9955
|
] })
|
|
9928
9956
|
] })
|
|
9929
9957
|
] }) }),
|
|
9930
|
-
/* @__PURE__ */
|
|
9958
|
+
/* @__PURE__ */ jsx80("div", { className: "border-t border-[var(--color-border)]", children: /* @__PURE__ */ jsx80("div", { className: "max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-6", children: /* @__PURE__ */ jsx80("p", { className: "text-sm text-[var(--color-text-secondary)] text-center", children: copyright || `\xA9 ${currentYear} All rights reserved.` }) }) })
|
|
9931
9959
|
]
|
|
9932
9960
|
}
|
|
9933
9961
|
);
|
|
9934
9962
|
};
|
|
9935
9963
|
|
|
9936
9964
|
// src/components/layout/Grid.tsx
|
|
9937
|
-
import { jsx as
|
|
9965
|
+
import { jsx as jsx81 } from "react/jsx-runtime";
|
|
9938
9966
|
var mapResponsive = (prop, prefix, mapFunc) => {
|
|
9939
9967
|
if (typeof prop === "number") {
|
|
9940
9968
|
return mapFunc(prop);
|
|
@@ -9976,7 +10004,7 @@ var Grid = ({
|
|
|
9976
10004
|
const getGapClass = (n) => `gap-${n}`;
|
|
9977
10005
|
const colClasses = mapResponsive(columns, "grid-cols", getColClass);
|
|
9978
10006
|
const gapClasses = mapResponsive(gap, "gap", getGapClass);
|
|
9979
|
-
return /* @__PURE__ */
|
|
10007
|
+
return /* @__PURE__ */ jsx81(
|
|
9980
10008
|
Component,
|
|
9981
10009
|
{
|
|
9982
10010
|
ref,
|
|
@@ -10031,13 +10059,13 @@ var GridItem = ({
|
|
|
10031
10059
|
colStart ? mapResponsive(colStart, "col-start", getColStartClass) : "",
|
|
10032
10060
|
className
|
|
10033
10061
|
].filter(Boolean).join(" ");
|
|
10034
|
-
return /* @__PURE__ */
|
|
10062
|
+
return /* @__PURE__ */ jsx81(Component, { ref, className: classes, ...props, children });
|
|
10035
10063
|
};
|
|
10036
10064
|
|
|
10037
10065
|
// src/components/layout/Header/Header.tsx
|
|
10038
10066
|
import { useState as useState16, useEffect as useEffect10 } from "react";
|
|
10039
10067
|
import { Menu as Menu2, X as X4, ChevronDown as ChevronDown4 } from "lucide-react";
|
|
10040
|
-
import { Fragment as Fragment3, jsx as
|
|
10068
|
+
import { Fragment as Fragment3, jsx as jsx82, jsxs as jsxs51 } from "react/jsx-runtime";
|
|
10041
10069
|
var Header2 = ({
|
|
10042
10070
|
ref,
|
|
10043
10071
|
logo,
|
|
@@ -10092,16 +10120,16 @@ var Header2 = ({
|
|
|
10092
10120
|
return "absolute left-1/2 -translate-x-1/2";
|
|
10093
10121
|
}
|
|
10094
10122
|
};
|
|
10095
|
-
return /* @__PURE__ */
|
|
10096
|
-
/* @__PURE__ */
|
|
10123
|
+
return /* @__PURE__ */ jsxs51(Fragment3, { children: [
|
|
10124
|
+
/* @__PURE__ */ jsx82(
|
|
10097
10125
|
"header",
|
|
10098
10126
|
{
|
|
10099
10127
|
ref,
|
|
10100
10128
|
className: `${baseStyles} ${positionStyles} ${transitionStyles} ${backgroundStyles} ${className}`,
|
|
10101
10129
|
style: { transitionDuration },
|
|
10102
|
-
children: /* @__PURE__ */
|
|
10103
|
-
logo && /* @__PURE__ */
|
|
10104
|
-
navLinks.length > 0 && /* @__PURE__ */
|
|
10130
|
+
children: /* @__PURE__ */ jsx82("div", { className: `${maxWidth} mx-auto px-4 sm:px-6 lg:px-8`, children: /* @__PURE__ */ jsxs51("div", { className: "flex items-center justify-between h-16 lg:h-20 relative", children: [
|
|
10131
|
+
logo && /* @__PURE__ */ jsx82("div", { className: "flex-shrink-0 z-10", children: logo }),
|
|
10132
|
+
navLinks.length > 0 && /* @__PURE__ */ jsx82(
|
|
10105
10133
|
"nav",
|
|
10106
10134
|
{
|
|
10107
10135
|
className: `hidden lg:flex items-center gap-8 ${getNavClasses()}`,
|
|
@@ -10110,14 +10138,14 @@ var Header2 = ({
|
|
|
10110
10138
|
const hasDropdown = link.children && link.children.length > 0;
|
|
10111
10139
|
const isOpen = openDropdown === link.label;
|
|
10112
10140
|
if (hasDropdown) {
|
|
10113
|
-
return /* @__PURE__ */
|
|
10141
|
+
return /* @__PURE__ */ jsxs51(
|
|
10114
10142
|
"div",
|
|
10115
10143
|
{
|
|
10116
10144
|
className: "relative group",
|
|
10117
10145
|
onMouseEnter: () => setOpenDropdown(link.label),
|
|
10118
10146
|
onMouseLeave: () => setOpenDropdown(null),
|
|
10119
10147
|
children: [
|
|
10120
|
-
/* @__PURE__ */
|
|
10148
|
+
/* @__PURE__ */ jsxs51(
|
|
10121
10149
|
"button",
|
|
10122
10150
|
{
|
|
10123
10151
|
className: `
|
|
@@ -10138,18 +10166,18 @@ var Header2 = ({
|
|
|
10138
10166
|
"aria-haspopup": "true",
|
|
10139
10167
|
children: [
|
|
10140
10168
|
link.label,
|
|
10141
|
-
/* @__PURE__ */
|
|
10169
|
+
/* @__PURE__ */ jsx82(ChevronDown4, { className: `w-3 h-3 ${shouldAnimate ? "transition-transform" : ""} ${isOpen ? "rotate-180" : ""}`, style: { transitionDuration } })
|
|
10142
10170
|
]
|
|
10143
10171
|
}
|
|
10144
10172
|
),
|
|
10145
|
-
isOpen && /* @__PURE__ */
|
|
10146
|
-
isOpen && /* @__PURE__ */
|
|
10173
|
+
isOpen && /* @__PURE__ */ jsx82("div", { className: "absolute top-full left-1/2 -translate-x-1/2 w-[200px] h-2" }),
|
|
10174
|
+
isOpen && /* @__PURE__ */ jsx82("div", { className: `
|
|
10147
10175
|
absolute top-full left-1/2 -translate-x-1/2 mt-2 min-w-[200px] z-50
|
|
10148
10176
|
bg-[var(--color-surface)] border border-[var(--color-border)]
|
|
10149
10177
|
rounded-lg shadow-xl py-1 p-1
|
|
10150
10178
|
backdrop-blur-3xl bg-[var(--color-surface)]/95
|
|
10151
10179
|
${shouldAnimate ? "animate-fade-in" : ""}
|
|
10152
|
-
`, style: { animationDuration: `${0.2 * motionFactor}s` }, children: link.children?.map((child) => /* @__PURE__ */
|
|
10180
|
+
`, style: { animationDuration: `${0.2 * motionFactor}s` }, children: link.children?.map((child) => /* @__PURE__ */ jsx82(
|
|
10153
10181
|
NavLink,
|
|
10154
10182
|
{
|
|
10155
10183
|
href: child.href,
|
|
@@ -10165,7 +10193,7 @@ var Header2 = ({
|
|
|
10165
10193
|
link.label
|
|
10166
10194
|
);
|
|
10167
10195
|
}
|
|
10168
|
-
return /* @__PURE__ */
|
|
10196
|
+
return /* @__PURE__ */ jsx82(
|
|
10169
10197
|
NavLink,
|
|
10170
10198
|
{
|
|
10171
10199
|
href: link.href,
|
|
@@ -10180,8 +10208,8 @@ var Header2 = ({
|
|
|
10180
10208
|
})
|
|
10181
10209
|
}
|
|
10182
10210
|
),
|
|
10183
|
-
actions && /* @__PURE__ */
|
|
10184
|
-
/* @__PURE__ */
|
|
10211
|
+
actions && /* @__PURE__ */ jsx82("div", { className: "hidden lg:flex items-center gap-4 z-10", children: actions }),
|
|
10212
|
+
/* @__PURE__ */ jsx82(
|
|
10185
10213
|
"button",
|
|
10186
10214
|
{
|
|
10187
10215
|
onClick: () => setIsMenuOpen(!isMenuOpen),
|
|
@@ -10200,13 +10228,13 @@ var Header2 = ({
|
|
|
10200
10228
|
style: { transitionDuration },
|
|
10201
10229
|
"aria-label": isMenuOpen ? "Close menu" : "Open menu",
|
|
10202
10230
|
"aria-expanded": isMenuOpen,
|
|
10203
|
-
children: isMenuOpen ? /* @__PURE__ */
|
|
10231
|
+
children: isMenuOpen ? /* @__PURE__ */ jsx82(X4, { className: "w-6 h-6" }) : /* @__PURE__ */ jsx82(Menu2, { className: "w-6 h-6" })
|
|
10204
10232
|
}
|
|
10205
10233
|
)
|
|
10206
10234
|
] }) })
|
|
10207
10235
|
}
|
|
10208
10236
|
),
|
|
10209
|
-
/* @__PURE__ */
|
|
10237
|
+
/* @__PURE__ */ jsx82(
|
|
10210
10238
|
"div",
|
|
10211
10239
|
{
|
|
10212
10240
|
className: `
|
|
@@ -10216,13 +10244,13 @@ var Header2 = ({
|
|
|
10216
10244
|
`,
|
|
10217
10245
|
style: { transitionDuration },
|
|
10218
10246
|
"aria-hidden": !isMenuOpen,
|
|
10219
|
-
children: /* @__PURE__ */
|
|
10247
|
+
children: /* @__PURE__ */ jsx82("div", { className: "absolute inset-0 bg-[var(--color-background)]", children: /* @__PURE__ */ jsxs51("div", { className: "flex flex-col items-center justify-center h-full gap-8 px-4", children: [
|
|
10220
10248
|
navLinks.map((link, index) => {
|
|
10221
10249
|
const hasDropdown = link.children && link.children.length > 0;
|
|
10222
10250
|
const isExpanded = expandedMobileSection === link.label;
|
|
10223
10251
|
if (hasDropdown) {
|
|
10224
|
-
return /* @__PURE__ */
|
|
10225
|
-
/* @__PURE__ */
|
|
10252
|
+
return /* @__PURE__ */ jsxs51("div", { className: "w-full max-w-xs", children: [
|
|
10253
|
+
/* @__PURE__ */ jsx82(
|
|
10226
10254
|
"button",
|
|
10227
10255
|
{
|
|
10228
10256
|
onClick: () => setExpandedMobileSection(isExpanded ? null : link.label),
|
|
@@ -10246,7 +10274,7 @@ var Header2 = ({
|
|
|
10246
10274
|
children: link.label
|
|
10247
10275
|
}
|
|
10248
10276
|
),
|
|
10249
|
-
isExpanded && /* @__PURE__ */
|
|
10277
|
+
isExpanded && /* @__PURE__ */ jsx82("div", { className: "flex flex-col gap-3 mt-4", children: link.children?.map((child) => /* @__PURE__ */ jsx82(
|
|
10250
10278
|
"a",
|
|
10251
10279
|
{
|
|
10252
10280
|
href: child.href,
|
|
@@ -10269,7 +10297,7 @@ var Header2 = ({
|
|
|
10269
10297
|
)) })
|
|
10270
10298
|
] }, link.label);
|
|
10271
10299
|
}
|
|
10272
|
-
return /* @__PURE__ */
|
|
10300
|
+
return /* @__PURE__ */ jsx82(
|
|
10273
10301
|
"a",
|
|
10274
10302
|
{
|
|
10275
10303
|
href: link.href,
|
|
@@ -10296,7 +10324,7 @@ var Header2 = ({
|
|
|
10296
10324
|
link.label
|
|
10297
10325
|
);
|
|
10298
10326
|
}),
|
|
10299
|
-
actions && /* @__PURE__ */
|
|
10327
|
+
actions && /* @__PURE__ */ jsx82(
|
|
10300
10328
|
"div",
|
|
10301
10329
|
{
|
|
10302
10330
|
className: "flex flex-col gap-4 mt-8 w-full max-w-xs",
|
|
@@ -10310,7 +10338,7 @@ var Header2 = ({
|
|
|
10310
10338
|
] }) })
|
|
10311
10339
|
}
|
|
10312
10340
|
),
|
|
10313
|
-
shouldAnimate && /* @__PURE__ */
|
|
10341
|
+
shouldAnimate && /* @__PURE__ */ jsx82("style", { children: `
|
|
10314
10342
|
@keyframes fadeInUp {
|
|
10315
10343
|
from {
|
|
10316
10344
|
opacity: 0;
|
|
@@ -10326,7 +10354,7 @@ var Header2 = ({
|
|
|
10326
10354
|
};
|
|
10327
10355
|
|
|
10328
10356
|
// src/components/layout/PageLayout.tsx
|
|
10329
|
-
import { jsx as
|
|
10357
|
+
import { jsx as jsx83, jsxs as jsxs52 } from "react/jsx-runtime";
|
|
10330
10358
|
function PageLayout({
|
|
10331
10359
|
header,
|
|
10332
10360
|
stickyHeader = false,
|
|
@@ -10349,9 +10377,9 @@ function PageLayout({
|
|
|
10349
10377
|
const titleAreaBottomSpacing = swissGridSpacing && showBreadcrumbsBelowTitle ? "pb-3" : swissGridSpacing ? "pb-12 lg:pb-16" : "pb-8";
|
|
10350
10378
|
const titleBottomMargin = swissGridSpacing ? "mb-4" : "mb-3";
|
|
10351
10379
|
const breadcrumbsAreaSpacing = swissGridSpacing ? "pt-4 pb-8" : "pt-3 pb-6";
|
|
10352
|
-
return /* @__PURE__ */
|
|
10380
|
+
return /* @__PURE__ */ jsxs52("div", { className: "min-h-screen flex flex-col w-full min-w-0", children: [
|
|
10353
10381
|
header,
|
|
10354
|
-
breadcrumbs && showBreadcrumbsAtTop && /* @__PURE__ */
|
|
10382
|
+
breadcrumbs && showBreadcrumbsAtTop && /* @__PURE__ */ jsx83(
|
|
10355
10383
|
"div",
|
|
10356
10384
|
{
|
|
10357
10385
|
className: `
|
|
@@ -10362,23 +10390,23 @@ function PageLayout({
|
|
|
10362
10390
|
${stickyHeaderSpacing}
|
|
10363
10391
|
`,
|
|
10364
10392
|
style: { zIndex: 45 },
|
|
10365
|
-
children: /* @__PURE__ */
|
|
10393
|
+
children: /* @__PURE__ */ jsx83("div", { className: `${contentMaxWidth} mx-auto px-4 sm:px-6 lg:px-8 py-3`, children: breadcrumbs })
|
|
10366
10394
|
}
|
|
10367
10395
|
),
|
|
10368
|
-
(title || subtitle) && /* @__PURE__ */
|
|
10369
|
-
title && /* @__PURE__ */
|
|
10370
|
-
subtitle && /* @__PURE__ */
|
|
10396
|
+
(title || subtitle) && /* @__PURE__ */ jsx83("div", { className: `${titleAreaTopSpacing} ${titleAreaBottomSpacing} ${!showBreadcrumbsAtTop ? stickyHeaderSpacing : ""} bg-[var(--color-background)]`, children: /* @__PURE__ */ jsxs52("div", { className: `${contentMaxWidth} mx-auto px-4 sm:px-6 lg:px-8`, children: [
|
|
10397
|
+
title && /* @__PURE__ */ jsx83("div", { className: titleBottomMargin, children: title }),
|
|
10398
|
+
subtitle && /* @__PURE__ */ jsx83("div", { children: subtitle })
|
|
10371
10399
|
] }) }),
|
|
10372
|
-
breadcrumbs && showBreadcrumbsBelowTitle && /* @__PURE__ */
|
|
10400
|
+
breadcrumbs && showBreadcrumbsBelowTitle && /* @__PURE__ */ jsx83("div", { className: `${breadcrumbsAreaSpacing} bg-[var(--color-background)]`, children: /* @__PURE__ */ jsx83("div", { className: `${contentMaxWidth} mx-auto px-4 sm:px-6 lg:px-8`, children: breadcrumbs }) }),
|
|
10373
10401
|
secondaryNav,
|
|
10374
10402
|
tertiaryNav,
|
|
10375
|
-
/* @__PURE__ */
|
|
10403
|
+
/* @__PURE__ */ jsx83("main", { className: `flex-1 ${className}`, children: /* @__PURE__ */ jsx83("div", { className: `${contentMaxWidth} mx-auto px-4 sm:px-6 lg:px-8 py-12`, children }) }),
|
|
10376
10404
|
footer
|
|
10377
10405
|
] });
|
|
10378
10406
|
}
|
|
10379
10407
|
|
|
10380
10408
|
// src/components/layout/PageTemplate.tsx
|
|
10381
|
-
import { Fragment as Fragment4, jsx as
|
|
10409
|
+
import { Fragment as Fragment4, jsx as jsx84, jsxs as jsxs53 } from "react/jsx-runtime";
|
|
10382
10410
|
function PageTemplate({
|
|
10383
10411
|
header,
|
|
10384
10412
|
title,
|
|
@@ -10398,11 +10426,11 @@ function PageTemplate({
|
|
|
10398
10426
|
narrow: "max-w-4xl"
|
|
10399
10427
|
// 896px - for reading-focused pages
|
|
10400
10428
|
}[variant];
|
|
10401
|
-
return /* @__PURE__ */
|
|
10402
|
-
/* @__PURE__ */
|
|
10429
|
+
return /* @__PURE__ */ jsxs53(Fragment4, { children: [
|
|
10430
|
+
/* @__PURE__ */ jsx84(
|
|
10403
10431
|
PageLayout,
|
|
10404
10432
|
{
|
|
10405
|
-
header: /* @__PURE__ */
|
|
10433
|
+
header: /* @__PURE__ */ jsx84(
|
|
10406
10434
|
Header2,
|
|
10407
10435
|
{
|
|
10408
10436
|
logo: header.logo,
|
|
@@ -10414,10 +10442,10 @@ function PageTemplate({
|
|
|
10414
10442
|
),
|
|
10415
10443
|
stickyHeader: header.sticky ?? true,
|
|
10416
10444
|
breadcrumbsPosition: "below-title",
|
|
10417
|
-
breadcrumbs: /* @__PURE__ */
|
|
10418
|
-
title: /* @__PURE__ */
|
|
10419
|
-
subtitle: subtitle ? /* @__PURE__ */
|
|
10420
|
-
secondaryNav: secondaryNav ? /* @__PURE__ */
|
|
10445
|
+
breadcrumbs: /* @__PURE__ */ jsx84(Breadcrumbs, { items: breadcrumbs, variant: "subtle" }),
|
|
10446
|
+
title: /* @__PURE__ */ jsx84(Heading, { level: 1, children: title }),
|
|
10447
|
+
subtitle: subtitle ? /* @__PURE__ */ jsx84(Text, { size: "lg", variant: "secondary", children: subtitle }) : void 0,
|
|
10448
|
+
secondaryNav: secondaryNav ? /* @__PURE__ */ jsx84(
|
|
10421
10449
|
SecondaryNav,
|
|
10422
10450
|
{
|
|
10423
10451
|
items: secondaryNav.items,
|
|
@@ -10432,19 +10460,19 @@ function PageTemplate({
|
|
|
10432
10460
|
children
|
|
10433
10461
|
}
|
|
10434
10462
|
),
|
|
10435
|
-
showCustomizer && /* @__PURE__ */
|
|
10463
|
+
showCustomizer && /* @__PURE__ */ jsx84(CustomizerPanel, {})
|
|
10436
10464
|
] });
|
|
10437
10465
|
}
|
|
10438
10466
|
|
|
10439
10467
|
// src/components/layout/Resizable.tsx
|
|
10440
10468
|
import { GripVertical as GripVertical2 } from "lucide-react";
|
|
10441
10469
|
import { Group as PanelGroup, Panel, Separator as PanelResizeHandle } from "react-resizable-panels";
|
|
10442
|
-
import { jsx as
|
|
10470
|
+
import { jsx as jsx85 } from "react/jsx-runtime";
|
|
10443
10471
|
var ResizablePanelGroup = ({
|
|
10444
10472
|
className,
|
|
10445
10473
|
...props
|
|
10446
10474
|
}) => {
|
|
10447
|
-
return /* @__PURE__ */
|
|
10475
|
+
return /* @__PURE__ */ jsx85(
|
|
10448
10476
|
PanelGroup,
|
|
10449
10477
|
{
|
|
10450
10478
|
className: cn(
|
|
@@ -10461,7 +10489,7 @@ var ResizableHandle = ({
|
|
|
10461
10489
|
className,
|
|
10462
10490
|
...props
|
|
10463
10491
|
}) => {
|
|
10464
|
-
return /* @__PURE__ */
|
|
10492
|
+
return /* @__PURE__ */ jsx85(
|
|
10465
10493
|
PanelResizeHandle,
|
|
10466
10494
|
{
|
|
10467
10495
|
className: cn(
|
|
@@ -10469,29 +10497,29 @@ var ResizableHandle = ({
|
|
|
10469
10497
|
className
|
|
10470
10498
|
),
|
|
10471
10499
|
...props,
|
|
10472
|
-
children: withHandle && /* @__PURE__ */
|
|
10500
|
+
children: withHandle && /* @__PURE__ */ jsx85("div", { className: "z-10 flex h-4 w-3 items-center justify-center rounded-xs border bg-border", children: /* @__PURE__ */ jsx85(GripVertical2, { className: "h-2.5 w-2.5" }) })
|
|
10473
10501
|
}
|
|
10474
10502
|
);
|
|
10475
10503
|
};
|
|
10476
10504
|
|
|
10477
10505
|
// src/components/layout/ScrollArea.tsx
|
|
10478
10506
|
import * as ScrollAreaPrimitive from "@radix-ui/react-scroll-area";
|
|
10479
|
-
import { jsx as
|
|
10507
|
+
import { jsx as jsx86, jsxs as jsxs54 } from "react/jsx-runtime";
|
|
10480
10508
|
var ScrollArea = ({
|
|
10481
10509
|
ref,
|
|
10482
10510
|
className,
|
|
10483
10511
|
children,
|
|
10484
10512
|
...props
|
|
10485
|
-
}) => /* @__PURE__ */
|
|
10513
|
+
}) => /* @__PURE__ */ jsxs54(
|
|
10486
10514
|
ScrollAreaPrimitive.Root,
|
|
10487
10515
|
{
|
|
10488
10516
|
ref,
|
|
10489
10517
|
className: cn("relative overflow-hidden", className),
|
|
10490
10518
|
...props,
|
|
10491
10519
|
children: [
|
|
10492
|
-
/* @__PURE__ */
|
|
10493
|
-
/* @__PURE__ */
|
|
10494
|
-
/* @__PURE__ */
|
|
10520
|
+
/* @__PURE__ */ jsx86(ScrollAreaPrimitive.Viewport, { className: "h-full w-full rounded-[inherit]", children }),
|
|
10521
|
+
/* @__PURE__ */ jsx86(ScrollBar, {}),
|
|
10522
|
+
/* @__PURE__ */ jsx86(ScrollAreaPrimitive.Corner, {})
|
|
10495
10523
|
]
|
|
10496
10524
|
}
|
|
10497
10525
|
);
|
|
@@ -10500,7 +10528,7 @@ var ScrollBar = ({
|
|
|
10500
10528
|
className,
|
|
10501
10529
|
orientation = "vertical",
|
|
10502
10530
|
...props
|
|
10503
|
-
}) => /* @__PURE__ */
|
|
10531
|
+
}) => /* @__PURE__ */ jsx86(
|
|
10504
10532
|
ScrollAreaPrimitive.Scrollbar,
|
|
10505
10533
|
{
|
|
10506
10534
|
ref,
|
|
@@ -10512,20 +10540,20 @@ var ScrollBar = ({
|
|
|
10512
10540
|
className
|
|
10513
10541
|
),
|
|
10514
10542
|
...props,
|
|
10515
|
-
children: /* @__PURE__ */
|
|
10543
|
+
children: /* @__PURE__ */ jsx86(ScrollAreaPrimitive.Thumb, { className: "relative flex-1 rounded-full bg-border" })
|
|
10516
10544
|
}
|
|
10517
10545
|
);
|
|
10518
10546
|
|
|
10519
10547
|
// src/components/layout/Separator.tsx
|
|
10520
10548
|
import * as SeparatorPrimitive from "@radix-ui/react-separator";
|
|
10521
|
-
import { jsx as
|
|
10549
|
+
import { jsx as jsx87 } from "react/jsx-runtime";
|
|
10522
10550
|
var Separator4 = ({
|
|
10523
10551
|
ref,
|
|
10524
10552
|
className,
|
|
10525
10553
|
orientation = "horizontal",
|
|
10526
10554
|
decorative = true,
|
|
10527
10555
|
...props
|
|
10528
|
-
}) => /* @__PURE__ */
|
|
10556
|
+
}) => /* @__PURE__ */ jsx87(
|
|
10529
10557
|
SeparatorPrimitive.Root,
|
|
10530
10558
|
{
|
|
10531
10559
|
ref,
|
|
@@ -10542,14 +10570,14 @@ var Separator4 = ({
|
|
|
10542
10570
|
|
|
10543
10571
|
// src/components/layout/Sidebar.tsx
|
|
10544
10572
|
import { Slot as Slot3 } from "@radix-ui/react-slot";
|
|
10545
|
-
import { jsx as
|
|
10573
|
+
import { jsx as jsx88, jsxs as jsxs55 } from "react/jsx-runtime";
|
|
10546
10574
|
var Sidebar = ({
|
|
10547
10575
|
ref,
|
|
10548
10576
|
className,
|
|
10549
10577
|
children,
|
|
10550
10578
|
isOpen = true,
|
|
10551
10579
|
...props
|
|
10552
|
-
}) => /* @__PURE__ */
|
|
10580
|
+
}) => /* @__PURE__ */ jsx88(
|
|
10553
10581
|
"aside",
|
|
10554
10582
|
{
|
|
10555
10583
|
ref,
|
|
@@ -10559,7 +10587,7 @@ var Sidebar = ({
|
|
|
10559
10587
|
className
|
|
10560
10588
|
),
|
|
10561
10589
|
...props,
|
|
10562
|
-
children: /* @__PURE__ */
|
|
10590
|
+
children: /* @__PURE__ */ jsx88("div", { className: "flex flex-col h-full", children })
|
|
10563
10591
|
}
|
|
10564
10592
|
);
|
|
10565
10593
|
var SidebarOverlay = ({
|
|
@@ -10570,7 +10598,7 @@ var SidebarOverlay = ({
|
|
|
10570
10598
|
...props
|
|
10571
10599
|
}) => {
|
|
10572
10600
|
if (!isOpen) return null;
|
|
10573
|
-
return /* @__PURE__ */
|
|
10601
|
+
return /* @__PURE__ */ jsx88(
|
|
10574
10602
|
"div",
|
|
10575
10603
|
{
|
|
10576
10604
|
ref,
|
|
@@ -10587,7 +10615,7 @@ var SidebarHeader = ({
|
|
|
10587
10615
|
ref,
|
|
10588
10616
|
className,
|
|
10589
10617
|
...props
|
|
10590
|
-
}) => /* @__PURE__ */
|
|
10618
|
+
}) => /* @__PURE__ */ jsx88(
|
|
10591
10619
|
"div",
|
|
10592
10620
|
{
|
|
10593
10621
|
ref,
|
|
@@ -10599,7 +10627,7 @@ var SidebarContent = ({
|
|
|
10599
10627
|
ref,
|
|
10600
10628
|
className,
|
|
10601
10629
|
...props
|
|
10602
|
-
}) => /* @__PURE__ */
|
|
10630
|
+
}) => /* @__PURE__ */ jsx88(
|
|
10603
10631
|
"div",
|
|
10604
10632
|
{
|
|
10605
10633
|
ref,
|
|
@@ -10611,7 +10639,7 @@ var SidebarFooter = ({
|
|
|
10611
10639
|
ref,
|
|
10612
10640
|
className,
|
|
10613
10641
|
...props
|
|
10614
|
-
}) => /* @__PURE__ */
|
|
10642
|
+
}) => /* @__PURE__ */ jsx88(
|
|
10615
10643
|
"div",
|
|
10616
10644
|
{
|
|
10617
10645
|
ref,
|
|
@@ -10633,7 +10661,7 @@ var SidebarItem = ({
|
|
|
10633
10661
|
...props
|
|
10634
10662
|
}) => {
|
|
10635
10663
|
const Comp = asChild ? Slot3 : "button";
|
|
10636
|
-
return /* @__PURE__ */
|
|
10664
|
+
return /* @__PURE__ */ jsxs55(
|
|
10637
10665
|
Comp,
|
|
10638
10666
|
{
|
|
10639
10667
|
ref,
|
|
@@ -10646,7 +10674,7 @@ var SidebarItem = ({
|
|
|
10646
10674
|
style: { paddingLeft: `${12 + depth * 16}px` },
|
|
10647
10675
|
...props,
|
|
10648
10676
|
children: [
|
|
10649
|
-
hasChildren && /* @__PURE__ */
|
|
10677
|
+
hasChildren && /* @__PURE__ */ jsx88(
|
|
10650
10678
|
"svg",
|
|
10651
10679
|
{
|
|
10652
10680
|
className: cn(
|
|
@@ -10656,7 +10684,7 @@ var SidebarItem = ({
|
|
|
10656
10684
|
fill: "none",
|
|
10657
10685
|
stroke: "currentColor",
|
|
10658
10686
|
viewBox: "0 0 24 24",
|
|
10659
|
-
children: /* @__PURE__ */
|
|
10687
|
+
children: /* @__PURE__ */ jsx88(
|
|
10660
10688
|
"path",
|
|
10661
10689
|
{
|
|
10662
10690
|
strokeLinecap: "round",
|
|
@@ -10667,16 +10695,210 @@ var SidebarItem = ({
|
|
|
10667
10695
|
)
|
|
10668
10696
|
}
|
|
10669
10697
|
),
|
|
10670
|
-
!hasChildren && depth > 0 && /* @__PURE__ */
|
|
10671
|
-
showIcon && icon && /* @__PURE__ */
|
|
10672
|
-
/* @__PURE__ */
|
|
10698
|
+
!hasChildren && depth > 0 && /* @__PURE__ */ jsx88("span", { className: "w-4 flex-shrink-0" }),
|
|
10699
|
+
showIcon && icon && /* @__PURE__ */ jsx88("span", { className: "flex-shrink-0", children: icon }),
|
|
10700
|
+
/* @__PURE__ */ jsx88("span", { className: "flex-1 text-left truncate", children })
|
|
10673
10701
|
]
|
|
10674
10702
|
}
|
|
10675
10703
|
);
|
|
10676
10704
|
};
|
|
10677
10705
|
|
|
10706
|
+
// src/components/layout/AppSidebar.tsx
|
|
10707
|
+
import { createContext as createContext8, useContext as useContext9, useState as useState17, useEffect as useEffect11 } from "react";
|
|
10708
|
+
import { PanelLeftClose } from "lucide-react";
|
|
10709
|
+
import { jsx as jsx89, jsxs as jsxs56 } from "react/jsx-runtime";
|
|
10710
|
+
var STORAGE_KEY = "appsidebar:state";
|
|
10711
|
+
var APP_SIDEBAR_WIDTH = 280;
|
|
10712
|
+
var APP_SIDEBAR_WIDTH_COLLAPSED = 60;
|
|
10713
|
+
var AppSidebarContext = createContext8(null);
|
|
10714
|
+
var DEFAULT_CONTEXT = {
|
|
10715
|
+
isOpen: true,
|
|
10716
|
+
toggle: () => {
|
|
10717
|
+
},
|
|
10718
|
+
open: () => {
|
|
10719
|
+
},
|
|
10720
|
+
close: () => {
|
|
10721
|
+
}
|
|
10722
|
+
};
|
|
10723
|
+
function useAppSidebar() {
|
|
10724
|
+
return useContext9(AppSidebarContext) ?? DEFAULT_CONTEXT;
|
|
10725
|
+
}
|
|
10726
|
+
function AppSidebarProvider({ children, defaultOpen = true }) {
|
|
10727
|
+
const [isOpen, setIsOpen] = useState17(defaultOpen);
|
|
10728
|
+
useEffect11(() => {
|
|
10729
|
+
const stored = localStorage.getItem(STORAGE_KEY);
|
|
10730
|
+
if (stored !== null) setIsOpen(stored === "true");
|
|
10731
|
+
}, []);
|
|
10732
|
+
const persist3 = (value) => localStorage.setItem(STORAGE_KEY, String(value));
|
|
10733
|
+
const toggle = () => setIsOpen((prev) => {
|
|
10734
|
+
const next = !prev;
|
|
10735
|
+
persist3(next);
|
|
10736
|
+
return next;
|
|
10737
|
+
});
|
|
10738
|
+
const open = () => {
|
|
10739
|
+
setIsOpen(true);
|
|
10740
|
+
persist3(true);
|
|
10741
|
+
};
|
|
10742
|
+
const close = () => {
|
|
10743
|
+
setIsOpen(false);
|
|
10744
|
+
persist3(false);
|
|
10745
|
+
};
|
|
10746
|
+
return /* @__PURE__ */ jsx89(AppSidebarContext.Provider, { value: { isOpen, toggle, open, close }, children });
|
|
10747
|
+
}
|
|
10748
|
+
function AppSidebarInset({
|
|
10749
|
+
children,
|
|
10750
|
+
className
|
|
10751
|
+
}) {
|
|
10752
|
+
const { isOpen } = useAppSidebar();
|
|
10753
|
+
const { shouldAnimate, scale } = useMotionPreference();
|
|
10754
|
+
const duration = shouldAnimate ? Math.round(300 * (5 / Math.max(scale, 0.1))) : 0;
|
|
10755
|
+
return /* @__PURE__ */ jsx89(
|
|
10756
|
+
"div",
|
|
10757
|
+
{
|
|
10758
|
+
className: cn("min-h-screen", className),
|
|
10759
|
+
style: {
|
|
10760
|
+
marginLeft: isOpen ? APP_SIDEBAR_WIDTH : APP_SIDEBAR_WIDTH_COLLAPSED,
|
|
10761
|
+
transition: shouldAnimate ? `margin-left ${duration}ms ease-out` : "none"
|
|
10762
|
+
},
|
|
10763
|
+
children
|
|
10764
|
+
}
|
|
10765
|
+
);
|
|
10766
|
+
}
|
|
10767
|
+
function AppSidebar({
|
|
10768
|
+
logo,
|
|
10769
|
+
title,
|
|
10770
|
+
items = [],
|
|
10771
|
+
children,
|
|
10772
|
+
footer,
|
|
10773
|
+
className
|
|
10774
|
+
}) {
|
|
10775
|
+
const { isOpen, toggle } = useAppSidebar();
|
|
10776
|
+
const { shouldAnimate, scale } = useMotionPreference();
|
|
10777
|
+
const duration = shouldAnimate ? Math.round(300 * (5 / Math.max(scale, 0.1))) : 0;
|
|
10778
|
+
return /* @__PURE__ */ jsxs56(
|
|
10779
|
+
"aside",
|
|
10780
|
+
{
|
|
10781
|
+
className: cn(
|
|
10782
|
+
"fixed left-0 top-0 bottom-0 z-40 flex flex-col",
|
|
10783
|
+
"bg-background border-r border-foreground/8 overflow-hidden",
|
|
10784
|
+
className
|
|
10785
|
+
),
|
|
10786
|
+
style: {
|
|
10787
|
+
width: isOpen ? APP_SIDEBAR_WIDTH : APP_SIDEBAR_WIDTH_COLLAPSED,
|
|
10788
|
+
transition: shouldAnimate ? `width ${duration}ms ease-out` : "none"
|
|
10789
|
+
},
|
|
10790
|
+
children: [
|
|
10791
|
+
/* @__PURE__ */ jsxs56("div", { className: "flex items-center h-16 px-[10px] shrink-0", children: [
|
|
10792
|
+
/* @__PURE__ */ jsxs56(
|
|
10793
|
+
"button",
|
|
10794
|
+
{
|
|
10795
|
+
onClick: toggle,
|
|
10796
|
+
className: cn(
|
|
10797
|
+
"flex items-center gap-2.5 flex-1 min-w-0",
|
|
10798
|
+
"rounded-lg p-1.5",
|
|
10799
|
+
"hover:bg-foreground/5 transition-colors duration-150",
|
|
10800
|
+
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-focus)]"
|
|
10801
|
+
),
|
|
10802
|
+
"aria-label": isOpen ? title ?? "OpenCosmos" : "Expand sidebar",
|
|
10803
|
+
children: [
|
|
10804
|
+
/* @__PURE__ */ jsx89("span", { className: "w-8 h-8 shrink-0 flex items-center justify-center", children: logo }),
|
|
10805
|
+
/* @__PURE__ */ jsx89(
|
|
10806
|
+
"span",
|
|
10807
|
+
{
|
|
10808
|
+
className: "font-semibold text-sm text-foreground whitespace-nowrap",
|
|
10809
|
+
style: {
|
|
10810
|
+
opacity: isOpen ? 1 : 0,
|
|
10811
|
+
width: isOpen ? "auto" : 0,
|
|
10812
|
+
overflow: "hidden",
|
|
10813
|
+
pointerEvents: isOpen ? "auto" : "none",
|
|
10814
|
+
transition: shouldAnimate ? `opacity ${Math.round(duration * 0.6)}ms ease-out` : "none"
|
|
10815
|
+
},
|
|
10816
|
+
children: title
|
|
10817
|
+
}
|
|
10818
|
+
)
|
|
10819
|
+
]
|
|
10820
|
+
}
|
|
10821
|
+
),
|
|
10822
|
+
/* @__PURE__ */ jsx89(
|
|
10823
|
+
"button",
|
|
10824
|
+
{
|
|
10825
|
+
onClick: toggle,
|
|
10826
|
+
tabIndex: isOpen ? 0 : -1,
|
|
10827
|
+
className: cn(
|
|
10828
|
+
"shrink-0 w-8 h-8 flex items-center justify-center rounded-lg",
|
|
10829
|
+
"text-foreground/35 hover:text-foreground/65 hover:bg-foreground/5",
|
|
10830
|
+
"transition-colors duration-150",
|
|
10831
|
+
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-focus)]"
|
|
10832
|
+
),
|
|
10833
|
+
style: {
|
|
10834
|
+
opacity: isOpen ? 1 : 0,
|
|
10835
|
+
pointerEvents: isOpen ? "auto" : "none",
|
|
10836
|
+
transition: shouldAnimate ? `opacity ${Math.round(duration * 0.5)}ms ease-out` : "none"
|
|
10837
|
+
},
|
|
10838
|
+
"aria-label": "Collapse sidebar",
|
|
10839
|
+
children: /* @__PURE__ */ jsx89(PanelLeftClose, { className: "w-4 h-4" })
|
|
10840
|
+
}
|
|
10841
|
+
)
|
|
10842
|
+
] }),
|
|
10843
|
+
items.length > 0 && /* @__PURE__ */ jsx89("nav", { className: "px-2 py-2 space-y-1 shrink-0", "aria-label": "Main navigation", children: items.map((item) => /* @__PURE__ */ jsxs56(
|
|
10844
|
+
"a",
|
|
10845
|
+
{
|
|
10846
|
+
href: item.href,
|
|
10847
|
+
target: item.external ? "_blank" : void 0,
|
|
10848
|
+
rel: item.external ? "noopener noreferrer" : void 0,
|
|
10849
|
+
title: !isOpen ? item.label : void 0,
|
|
10850
|
+
"aria-label": !isOpen ? item.label : void 0,
|
|
10851
|
+
className: cn(
|
|
10852
|
+
"flex items-center rounded-lg transition-colors duration-150",
|
|
10853
|
+
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-focus)]",
|
|
10854
|
+
isOpen ? "gap-3 px-3 py-3" : "justify-center w-9 h-9 mx-auto",
|
|
10855
|
+
item.active ? "bg-foreground/8 text-foreground font-medium" : "text-[var(--color-text-secondary)] hover:bg-foreground/5 hover:text-[var(--color-text-primary)]"
|
|
10856
|
+
),
|
|
10857
|
+
children: [
|
|
10858
|
+
/* @__PURE__ */ jsx89("span", { className: "shrink-0 flex items-center justify-center w-4 h-4", children: item.icon }),
|
|
10859
|
+
/* @__PURE__ */ jsx89(
|
|
10860
|
+
"span",
|
|
10861
|
+
{
|
|
10862
|
+
className: "text-sm whitespace-nowrap",
|
|
10863
|
+
style: {
|
|
10864
|
+
opacity: isOpen ? 1 : 0,
|
|
10865
|
+
width: isOpen ? "auto" : 0,
|
|
10866
|
+
overflow: "hidden",
|
|
10867
|
+
pointerEvents: isOpen ? "auto" : "none",
|
|
10868
|
+
transition: shouldAnimate ? `opacity ${Math.round(duration * 0.55)}ms ease-out` : "none"
|
|
10869
|
+
},
|
|
10870
|
+
children: item.label
|
|
10871
|
+
}
|
|
10872
|
+
)
|
|
10873
|
+
]
|
|
10874
|
+
},
|
|
10875
|
+
item.label
|
|
10876
|
+
)) }),
|
|
10877
|
+
/* @__PURE__ */ jsx89(
|
|
10878
|
+
"div",
|
|
10879
|
+
{
|
|
10880
|
+
className: "flex-1 overflow-y-auto overflow-x-hidden min-h-0",
|
|
10881
|
+
style: { opacity: isOpen ? 1 : 0, pointerEvents: isOpen ? "auto" : "none" },
|
|
10882
|
+
children
|
|
10883
|
+
}
|
|
10884
|
+
),
|
|
10885
|
+
footer && /* @__PURE__ */ jsx89(
|
|
10886
|
+
"div",
|
|
10887
|
+
{
|
|
10888
|
+
className: cn(
|
|
10889
|
+
"shrink-0 border-t border-foreground/8",
|
|
10890
|
+
isOpen ? "px-4 py-4 space-y-3" : "px-2 py-3 flex justify-center"
|
|
10891
|
+
),
|
|
10892
|
+
children: footer
|
|
10893
|
+
}
|
|
10894
|
+
)
|
|
10895
|
+
]
|
|
10896
|
+
}
|
|
10897
|
+
);
|
|
10898
|
+
}
|
|
10899
|
+
|
|
10678
10900
|
// src/components/layout/Stack.tsx
|
|
10679
|
-
import { jsx as
|
|
10901
|
+
import { jsx as jsx90 } from "react/jsx-runtime";
|
|
10680
10902
|
var Stack = ({
|
|
10681
10903
|
ref,
|
|
10682
10904
|
children,
|
|
@@ -10712,7 +10934,7 @@ var Stack = ({
|
|
|
10712
10934
|
evenly: "justify-evenly"
|
|
10713
10935
|
}
|
|
10714
10936
|
};
|
|
10715
|
-
return /* @__PURE__ */
|
|
10937
|
+
return /* @__PURE__ */ jsx90(
|
|
10716
10938
|
Component,
|
|
10717
10939
|
{
|
|
10718
10940
|
ref,
|
|
@@ -10724,7 +10946,7 @@ var Stack = ({
|
|
|
10724
10946
|
};
|
|
10725
10947
|
|
|
10726
10948
|
// src/components/layout/GlassSurface.tsx
|
|
10727
|
-
import { jsx as
|
|
10949
|
+
import { jsx as jsx91 } from "react/jsx-runtime";
|
|
10728
10950
|
var TINT_COLORS = {
|
|
10729
10951
|
0: "255, 255, 255",
|
|
10730
10952
|
1: "227, 227, 227",
|
|
@@ -10765,7 +10987,7 @@ function GlassSurface({
|
|
|
10765
10987
|
} : void 0,
|
|
10766
10988
|
...style
|
|
10767
10989
|
};
|
|
10768
|
-
return /* @__PURE__ */
|
|
10990
|
+
return /* @__PURE__ */ jsx91("div", { ref, className: classes, style: inlineStyles, children });
|
|
10769
10991
|
}
|
|
10770
10992
|
|
|
10771
10993
|
// src/lib/webgl/Renderer.ts
|
|
@@ -10954,8 +11176,8 @@ var Color = class {
|
|
|
10954
11176
|
};
|
|
10955
11177
|
|
|
10956
11178
|
// src/components/backgrounds/WarpBackground.tsx
|
|
10957
|
-
import { useEffect as
|
|
10958
|
-
import { jsx as
|
|
11179
|
+
import { useEffect as useEffect12, useRef as useRef4 } from "react";
|
|
11180
|
+
import { jsx as jsx92 } from "react/jsx-runtime";
|
|
10959
11181
|
var vertexShader = `
|
|
10960
11182
|
attribute vec2 uv;
|
|
10961
11183
|
attribute vec2 position;
|
|
@@ -11147,7 +11369,7 @@ function WarpBackground({
|
|
|
11147
11369
|
const smoothMousePos = useRef4({ x: 0.5, y: 0.5 });
|
|
11148
11370
|
const targetMouseActive = useRef4(0);
|
|
11149
11371
|
const smoothMouseActive = useRef4(0);
|
|
11150
|
-
|
|
11372
|
+
useEffect12(() => {
|
|
11151
11373
|
if (!ctnDom.current) return;
|
|
11152
11374
|
const ctn = ctnDom.current;
|
|
11153
11375
|
const renderer = new Renderer({
|
|
@@ -11268,12 +11490,12 @@ function WarpBackground({
|
|
|
11268
11490
|
autoCenterRepulsion,
|
|
11269
11491
|
transparent
|
|
11270
11492
|
]);
|
|
11271
|
-
return /* @__PURE__ */
|
|
11493
|
+
return /* @__PURE__ */ jsx92("div", { ref: ctnDom, className: `w-full h-full relative ${className}`, ...rest });
|
|
11272
11494
|
}
|
|
11273
11495
|
|
|
11274
11496
|
// src/components/backgrounds/FaultyTerminal.tsx
|
|
11275
|
-
import { useEffect as
|
|
11276
|
-
import { jsx as
|
|
11497
|
+
import { useEffect as useEffect13, useRef as useRef5, useMemo as useMemo3, useCallback as useCallback7 } from "react";
|
|
11498
|
+
import { jsx as jsx93 } from "react/jsx-runtime";
|
|
11277
11499
|
var vertexShader2 = `
|
|
11278
11500
|
attribute vec2 position;
|
|
11279
11501
|
attribute vec2 uv;
|
|
@@ -11528,7 +11750,7 @@ function FaultyTerminal({
|
|
|
11528
11750
|
const y = 1 - (e.clientY - rect.top) / rect.height;
|
|
11529
11751
|
mouseRef.current = { x, y };
|
|
11530
11752
|
}, []);
|
|
11531
|
-
|
|
11753
|
+
useEffect13(() => {
|
|
11532
11754
|
const ctn = containerRef.current;
|
|
11533
11755
|
if (!ctn) return;
|
|
11534
11756
|
const renderer = new Renderer({ dpr });
|
|
@@ -11644,13 +11866,13 @@ function FaultyTerminal({
|
|
|
11644
11866
|
brightness,
|
|
11645
11867
|
handleMouseMove
|
|
11646
11868
|
]);
|
|
11647
|
-
return /* @__PURE__ */
|
|
11869
|
+
return /* @__PURE__ */ jsx93("div", { ref: containerRef, className: `w-full h-full relative overflow-hidden ${className}`, style, ...rest });
|
|
11648
11870
|
}
|
|
11649
11871
|
|
|
11650
11872
|
// src/components/motion/AnimatedBeam.tsx
|
|
11651
11873
|
import { motion as motion4 } from "framer-motion";
|
|
11652
11874
|
import { useId as useId2 } from "react";
|
|
11653
|
-
import { jsx as
|
|
11875
|
+
import { jsx as jsx94, jsxs as jsxs57 } from "react/jsx-runtime";
|
|
11654
11876
|
var AnimatedBeam = ({
|
|
11655
11877
|
className,
|
|
11656
11878
|
containerRef,
|
|
@@ -11686,7 +11908,7 @@ var AnimatedBeam = ({
|
|
|
11686
11908
|
const controlY = y1;
|
|
11687
11909
|
const controlX = x2;
|
|
11688
11910
|
const path = `M ${x1},${y1} C ${x1 + curvature},${y1} ${x2 - curvature},${y2} ${x2},${y2}`;
|
|
11689
|
-
return /* @__PURE__ */
|
|
11911
|
+
return /* @__PURE__ */ jsxs57(
|
|
11690
11912
|
"svg",
|
|
11691
11913
|
{
|
|
11692
11914
|
fill: "none",
|
|
@@ -11695,16 +11917,16 @@ var AnimatedBeam = ({
|
|
|
11695
11917
|
xmlns: "http://www.w3.org/2000/svg",
|
|
11696
11918
|
className: cn("pointer-events-none absolute inset-0 transform-gpu overflow-visible", className),
|
|
11697
11919
|
children: [
|
|
11698
|
-
/* @__PURE__ */
|
|
11699
|
-
/* @__PURE__ */
|
|
11700
|
-
/* @__PURE__ */
|
|
11701
|
-
/* @__PURE__ */
|
|
11702
|
-
/* @__PURE__ */
|
|
11703
|
-
/* @__PURE__ */
|
|
11920
|
+
/* @__PURE__ */ jsxs57("defs", { children: [
|
|
11921
|
+
/* @__PURE__ */ jsxs57("linearGradient", { id: gradientId, gradientUnits: "userSpaceOnUse", x1: "0%", y1: "0%", x2: "100%", y2: "0%", children: [
|
|
11922
|
+
/* @__PURE__ */ jsx94("stop", { stopColor: gradientStartColor, stopOpacity: "0" }),
|
|
11923
|
+
/* @__PURE__ */ jsx94("stop", { stopColor: gradientStartColor }),
|
|
11924
|
+
/* @__PURE__ */ jsx94("stop", { offset: "32.5%", stopColor: gradientStopColor }),
|
|
11925
|
+
/* @__PURE__ */ jsx94("stop", { offset: "100%", stopColor: gradientStopColor, stopOpacity: "0" })
|
|
11704
11926
|
] }),
|
|
11705
|
-
/* @__PURE__ */
|
|
11927
|
+
/* @__PURE__ */ jsx94("marker", { id: `arrow-${id}`, markerWidth: "5", markerHeight: "5", refX: "2.5", refY: "2.5", orient: "auto", markerUnits: "strokeWidth", children: /* @__PURE__ */ jsx94("circle", { cx: "2.5", cy: "2.5", r: "2.5", fill: gradientStopColor }) })
|
|
11706
11928
|
] }),
|
|
11707
|
-
/* @__PURE__ */
|
|
11929
|
+
/* @__PURE__ */ jsx94(
|
|
11708
11930
|
"path",
|
|
11709
11931
|
{
|
|
11710
11932
|
d: path,
|
|
@@ -11714,7 +11936,7 @@ var AnimatedBeam = ({
|
|
|
11714
11936
|
strokeLinecap: "round"
|
|
11715
11937
|
}
|
|
11716
11938
|
),
|
|
11717
|
-
shouldAnimate && /* @__PURE__ */
|
|
11939
|
+
shouldAnimate && /* @__PURE__ */ jsx94(
|
|
11718
11940
|
"path",
|
|
11719
11941
|
{
|
|
11720
11942
|
d: path,
|
|
@@ -11722,7 +11944,7 @@ var AnimatedBeam = ({
|
|
|
11722
11944
|
strokeWidth: pathWidth,
|
|
11723
11945
|
strokeLinecap: "round",
|
|
11724
11946
|
fill: "none",
|
|
11725
|
-
children: /* @__PURE__ */
|
|
11947
|
+
children: /* @__PURE__ */ jsx94(
|
|
11726
11948
|
"animate",
|
|
11727
11949
|
{
|
|
11728
11950
|
attributeName: "stroke-dasharray",
|
|
@@ -11733,7 +11955,7 @@ var AnimatedBeam = ({
|
|
|
11733
11955
|
)
|
|
11734
11956
|
}
|
|
11735
11957
|
),
|
|
11736
|
-
shouldAnimate && /* @__PURE__ */
|
|
11958
|
+
shouldAnimate && /* @__PURE__ */ jsx94(
|
|
11737
11959
|
motion4.circle,
|
|
11738
11960
|
{
|
|
11739
11961
|
r: pathWidth * 1.5,
|
|
@@ -11750,7 +11972,7 @@ var AnimatedBeam = ({
|
|
|
11750
11972
|
style: { offsetPath: `path('${path}')` }
|
|
11751
11973
|
}
|
|
11752
11974
|
),
|
|
11753
|
-
shouldAnimate && /* @__PURE__ */
|
|
11975
|
+
shouldAnimate && /* @__PURE__ */ jsx94(
|
|
11754
11976
|
motion4.circle,
|
|
11755
11977
|
{
|
|
11756
11978
|
r: pathWidth,
|
|
@@ -11773,8 +11995,8 @@ var AnimatedBeam = ({
|
|
|
11773
11995
|
};
|
|
11774
11996
|
|
|
11775
11997
|
// src/components/backgrounds/OrbBackground.tsx
|
|
11776
|
-
import { useEffect as
|
|
11777
|
-
import { jsx as
|
|
11998
|
+
import { useEffect as useEffect14, useRef as useRef6 } from "react";
|
|
11999
|
+
import { jsx as jsx95 } from "react/jsx-runtime";
|
|
11778
12000
|
function hexToRgb4(hex) {
|
|
11779
12001
|
const result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
|
|
11780
12002
|
if (!result) return [0, 0, 0];
|
|
@@ -11985,7 +12207,7 @@ function OrbBackground({
|
|
|
11985
12207
|
}
|
|
11986
12208
|
`
|
|
11987
12209
|
);
|
|
11988
|
-
|
|
12210
|
+
useEffect14(() => {
|
|
11989
12211
|
const container = ctnDom.current;
|
|
11990
12212
|
if (!container) return;
|
|
11991
12213
|
const bgColor = backgroundColor || getCSSVariable2("--color-background", "#000000");
|
|
@@ -12088,13 +12310,13 @@ function OrbBackground({
|
|
|
12088
12310
|
gl.getExtension("WEBGL_lose_context")?.loseContext();
|
|
12089
12311
|
};
|
|
12090
12312
|
}, [hue, hoverIntensity, rotateOnHover, forceHoverState, backgroundColor]);
|
|
12091
|
-
return /* @__PURE__ */
|
|
12313
|
+
return /* @__PURE__ */ jsx95("div", { ref: ctnDom, className: cn("w-full h-full pointer-events-auto", className) });
|
|
12092
12314
|
}
|
|
12093
12315
|
|
|
12094
12316
|
// src/components/blocks/Hero.tsx
|
|
12095
12317
|
import { ArrowRight as ArrowRight2 } from "lucide-react";
|
|
12096
12318
|
import { motion as motion5 } from "framer-motion";
|
|
12097
|
-
import { jsx as
|
|
12319
|
+
import { jsx as jsx96, jsxs as jsxs58 } from "react/jsx-runtime";
|
|
12098
12320
|
function HeroBlock({
|
|
12099
12321
|
className,
|
|
12100
12322
|
badge,
|
|
@@ -12132,12 +12354,12 @@ function HeroBlock({
|
|
|
12132
12354
|
} : { duration: 0 }
|
|
12133
12355
|
}
|
|
12134
12356
|
};
|
|
12135
|
-
return /* @__PURE__ */
|
|
12136
|
-
background && /* @__PURE__ */
|
|
12137
|
-
/* @__PURE__ */
|
|
12138
|
-
/* @__PURE__ */
|
|
12357
|
+
return /* @__PURE__ */ jsxs58("div", { className: cn("relative min-h-[80vh] flex flex-col items-center justify-center overflow-hidden w-full", className), children: [
|
|
12358
|
+
background && /* @__PURE__ */ jsxs58("div", { className: "absolute inset-0 z-0 select-none pointer-events-none", children: [
|
|
12359
|
+
/* @__PURE__ */ jsx96("div", { className: "absolute inset-0", children: background }),
|
|
12360
|
+
/* @__PURE__ */ jsx96("div", { className: "absolute inset-0 bg-gradient-to-b from-transparent via-transparent to-[var(--color-background)] z-10" })
|
|
12139
12361
|
] }),
|
|
12140
|
-
/* @__PURE__ */
|
|
12362
|
+
/* @__PURE__ */ jsxs58(
|
|
12141
12363
|
motion5.div,
|
|
12142
12364
|
{
|
|
12143
12365
|
className: "relative z-20 container max-w-4xl px-4 text-center space-y-8",
|
|
@@ -12146,8 +12368,8 @@ function HeroBlock({
|
|
|
12146
12368
|
whileInView: "visible",
|
|
12147
12369
|
viewport: { once: true },
|
|
12148
12370
|
children: [
|
|
12149
|
-
badge && /* @__PURE__ */
|
|
12150
|
-
/* @__PURE__ */
|
|
12371
|
+
badge && /* @__PURE__ */ jsx96(motion5.div, { variants: itemVariants, className: "flex justify-center", children: /* @__PURE__ */ jsx96(Badge, { variant: "outline", className: "backdrop-blur-md bg-[var(--color-surface)]/30 border-[var(--color-border)] px-4 py-1.5", children: badge }) }),
|
|
12372
|
+
/* @__PURE__ */ jsx96(
|
|
12151
12373
|
motion5.h1,
|
|
12152
12374
|
{
|
|
12153
12375
|
variants: itemVariants,
|
|
@@ -12155,14 +12377,14 @@ function HeroBlock({
|
|
|
12155
12377
|
children: headline
|
|
12156
12378
|
}
|
|
12157
12379
|
),
|
|
12158
|
-
/* @__PURE__ */
|
|
12159
|
-
children && /* @__PURE__ */
|
|
12160
|
-
/* @__PURE__ */
|
|
12161
|
-
primaryCta && /* @__PURE__ */
|
|
12380
|
+
/* @__PURE__ */ jsx96(motion5.div, { variants: itemVariants, children: /* @__PURE__ */ jsx96(Text, { variant: "secondary", className: "text-xl md:text-2xl max-w-2xl mx-auto", children: description }) }),
|
|
12381
|
+
children && /* @__PURE__ */ jsx96(motion5.div, { variants: itemVariants, className: "flex justify-center", children }),
|
|
12382
|
+
/* @__PURE__ */ jsxs58(motion5.div, { variants: itemVariants, className: "flex flex-col sm:flex-row gap-4 justify-center items-center pt-4", children: [
|
|
12383
|
+
primaryCta && /* @__PURE__ */ jsxs58(Button, { size: "lg", variant: primaryCta.variant || "default", onClick: primaryCta.onClick, children: [
|
|
12162
12384
|
primaryCta.label,
|
|
12163
|
-
/* @__PURE__ */
|
|
12385
|
+
/* @__PURE__ */ jsx96(ArrowRight2, { className: "w-4 h-4 ml-2" })
|
|
12164
12386
|
] }),
|
|
12165
|
-
secondaryCta && /* @__PURE__ */
|
|
12387
|
+
secondaryCta && /* @__PURE__ */ jsx96(Button, { size: "lg", variant: "outline", className: "bg-[var(--color-surface)]/50 backdrop-blur-md", onClick: secondaryCta.onClick, children: secondaryCta.label })
|
|
12166
12388
|
] })
|
|
12167
12389
|
]
|
|
12168
12390
|
}
|
|
@@ -12171,8 +12393,8 @@ function HeroBlock({
|
|
|
12171
12393
|
}
|
|
12172
12394
|
|
|
12173
12395
|
// src/components/cursor/SplashCursor.tsx
|
|
12174
|
-
import { useEffect as
|
|
12175
|
-
import { jsx as
|
|
12396
|
+
import { useEffect as useEffect15, useRef as useRef7 } from "react";
|
|
12397
|
+
import { jsx as jsx97 } from "react/jsx-runtime";
|
|
12176
12398
|
function pointerPrototype() {
|
|
12177
12399
|
return {
|
|
12178
12400
|
id: -1,
|
|
@@ -12206,7 +12428,7 @@ function SplashCursor({
|
|
|
12206
12428
|
style
|
|
12207
12429
|
}) {
|
|
12208
12430
|
const canvasRef = useRef7(null);
|
|
12209
|
-
|
|
12431
|
+
useEffect15(() => {
|
|
12210
12432
|
const canvas = canvasRef.current;
|
|
12211
12433
|
if (!canvas) return;
|
|
12212
12434
|
const pointers = [pointerPrototype()];
|
|
@@ -13252,7 +13474,7 @@ function SplashCursor({
|
|
|
13252
13474
|
BACK_COLOR,
|
|
13253
13475
|
TRANSPARENT
|
|
13254
13476
|
]);
|
|
13255
|
-
return /* @__PURE__ */
|
|
13477
|
+
return /* @__PURE__ */ jsx97(
|
|
13256
13478
|
"div",
|
|
13257
13479
|
{
|
|
13258
13480
|
style: {
|
|
@@ -13266,7 +13488,7 @@ function SplashCursor({
|
|
|
13266
13488
|
...style
|
|
13267
13489
|
},
|
|
13268
13490
|
className,
|
|
13269
|
-
children: /* @__PURE__ */
|
|
13491
|
+
children: /* @__PURE__ */ jsx97(
|
|
13270
13492
|
"canvas",
|
|
13271
13493
|
{
|
|
13272
13494
|
ref: canvasRef,
|
|
@@ -13283,8 +13505,8 @@ function SplashCursor({
|
|
|
13283
13505
|
}
|
|
13284
13506
|
|
|
13285
13507
|
// src/components/cursor/TargetCursor.tsx
|
|
13286
|
-
import { useEffect as
|
|
13287
|
-
import { Fragment as Fragment5, jsx as
|
|
13508
|
+
import { useEffect as useEffect16, useRef as useRef8, useState as useState18 } from "react";
|
|
13509
|
+
import { Fragment as Fragment5, jsx as jsx98, jsxs as jsxs59 } from "react/jsx-runtime";
|
|
13288
13510
|
function TargetCursor({
|
|
13289
13511
|
color = "255, 255, 255",
|
|
13290
13512
|
outerSize = 40,
|
|
@@ -13303,10 +13525,10 @@ function TargetCursor({
|
|
|
13303
13525
|
const endY = useRef8(0);
|
|
13304
13526
|
const _x = useRef8(0);
|
|
13305
13527
|
const _y = useRef8(0);
|
|
13306
|
-
const [isActive, setIsActive] =
|
|
13307
|
-
const [isActiveClickable, setIsActiveClickable] =
|
|
13308
|
-
const [isVisible, setIsVisible] =
|
|
13309
|
-
|
|
13528
|
+
const [isActive, setIsActive] = useState18(false);
|
|
13529
|
+
const [isActiveClickable, setIsActiveClickable] = useState18(false);
|
|
13530
|
+
const [isVisible, setIsVisible] = useState18(false);
|
|
13531
|
+
useEffect16(() => {
|
|
13310
13532
|
const onMouseMove = (e) => {
|
|
13311
13533
|
endX.current = e.clientX;
|
|
13312
13534
|
endY.current = e.clientY;
|
|
@@ -13354,11 +13576,11 @@ function TargetCursor({
|
|
|
13354
13576
|
previousTimeRef.current = time;
|
|
13355
13577
|
requestRef.current = requestAnimationFrame(animateCursor);
|
|
13356
13578
|
};
|
|
13357
|
-
|
|
13579
|
+
useEffect16(() => {
|
|
13358
13580
|
requestRef.current = requestAnimationFrame(animateCursor);
|
|
13359
13581
|
return () => cancelAnimationFrame(requestRef.current);
|
|
13360
13582
|
}, []);
|
|
13361
|
-
|
|
13583
|
+
useEffect16(() => {
|
|
13362
13584
|
if (isVisible) {
|
|
13363
13585
|
const style = document.createElement("style");
|
|
13364
13586
|
style.innerHTML = `body, a, button, input, [role="button"] { cursor: none !important; }`;
|
|
@@ -13392,8 +13614,8 @@ function TargetCursor({
|
|
|
13392
13614
|
}
|
|
13393
13615
|
};
|
|
13394
13616
|
if (!isVisible) return null;
|
|
13395
|
-
return /* @__PURE__ */
|
|
13396
|
-
/* @__PURE__ */
|
|
13617
|
+
return /* @__PURE__ */ jsxs59(Fragment5, { children: [
|
|
13618
|
+
/* @__PURE__ */ jsx98(
|
|
13397
13619
|
"div",
|
|
13398
13620
|
{
|
|
13399
13621
|
ref: cursorOuterRef,
|
|
@@ -13410,7 +13632,7 @@ function TargetCursor({
|
|
|
13410
13632
|
}
|
|
13411
13633
|
}
|
|
13412
13634
|
),
|
|
13413
|
-
/* @__PURE__ */
|
|
13635
|
+
/* @__PURE__ */ jsx98(
|
|
13414
13636
|
"div",
|
|
13415
13637
|
{
|
|
13416
13638
|
ref: cursorInnerRef,
|
|
@@ -13429,8 +13651,8 @@ function TargetCursor({
|
|
|
13429
13651
|
}
|
|
13430
13652
|
|
|
13431
13653
|
// src/providers/ThemeProvider.tsx
|
|
13432
|
-
import { useEffect as
|
|
13433
|
-
import { Fragment as Fragment6, jsx as
|
|
13654
|
+
import { useEffect as useEffect17, useState as useState19 } from "react";
|
|
13655
|
+
import { Fragment as Fragment6, jsx as jsx99 } from "react/jsx-runtime";
|
|
13434
13656
|
var themeTokens = {
|
|
13435
13657
|
studio: studioTokens,
|
|
13436
13658
|
terra: terraTokens,
|
|
@@ -13655,19 +13877,19 @@ function ThemeProvider({ children, defaultTheme, defaultMode }) {
|
|
|
13655
13877
|
const { theme, mode, setTheme, setMode } = useThemeStore();
|
|
13656
13878
|
const customPalette = useCustomizer((state) => state.customColors?.[theme]?.[mode]);
|
|
13657
13879
|
const motionIntensity = useCustomizer((state) => state.motion);
|
|
13658
|
-
const [isTransitioning, setIsTransitioning] =
|
|
13659
|
-
const [mounted, setMounted] =
|
|
13660
|
-
|
|
13880
|
+
const [isTransitioning, setIsTransitioning] = useState19(false);
|
|
13881
|
+
const [mounted, setMounted] = useState19(false);
|
|
13882
|
+
useEffect17(() => {
|
|
13661
13883
|
if (!defaultTheme && !defaultMode) return;
|
|
13662
13884
|
const persisted = typeof window !== "undefined" && localStorage.getItem("ecosystem-theme");
|
|
13663
13885
|
if (persisted) return;
|
|
13664
13886
|
if (defaultTheme) setTheme(defaultTheme);
|
|
13665
13887
|
if (defaultMode) setMode(defaultMode);
|
|
13666
13888
|
}, []);
|
|
13667
|
-
|
|
13889
|
+
useEffect17(() => {
|
|
13668
13890
|
setMounted(true);
|
|
13669
13891
|
}, []);
|
|
13670
|
-
|
|
13892
|
+
useEffect17(() => {
|
|
13671
13893
|
if (!mounted) return;
|
|
13672
13894
|
setIsTransitioning(true);
|
|
13673
13895
|
const root = document.documentElement;
|
|
@@ -13702,7 +13924,7 @@ function ThemeProvider({ children, defaultTheme, defaultMode }) {
|
|
|
13702
13924
|
}, 400);
|
|
13703
13925
|
return () => clearTimeout(timeout);
|
|
13704
13926
|
}, [theme, mode, mounted, customPalette, motionIntensity]);
|
|
13705
|
-
return /* @__PURE__ */
|
|
13927
|
+
return /* @__PURE__ */ jsx99(Fragment6, { children });
|
|
13706
13928
|
}
|
|
13707
13929
|
|
|
13708
13930
|
// src/lib/animations.ts
|
|
@@ -13988,7 +14210,7 @@ function generateBreadcrumbs(hash, routeConfig, baseUrl = "#") {
|
|
|
13988
14210
|
|
|
13989
14211
|
// src/component-registry.ts
|
|
13990
14212
|
var BRAND = {
|
|
13991
|
-
productName: "
|
|
14213
|
+
productName: "OpenCosmos UI",
|
|
13992
14214
|
productNameShort: "Sage",
|
|
13993
14215
|
themeNames: {
|
|
13994
14216
|
organic: "Terra",
|
|
@@ -14000,7 +14222,7 @@ var BRAND = {
|
|
|
14000
14222
|
};
|
|
14001
14223
|
var COMPONENT_REGISTRY = {
|
|
14002
14224
|
/**
|
|
14003
|
-
* Total count of all exported UI components from @
|
|
14225
|
+
* Total count of all exported UI components from @opencosmos/ui
|
|
14004
14226
|
*/
|
|
14005
14227
|
totalCount: 100,
|
|
14006
14228
|
/**
|
|
@@ -14359,6 +14581,7 @@ __export(data_display_exports, {
|
|
|
14359
14581
|
DescriptionList: () => DescriptionList,
|
|
14360
14582
|
GitHubIcon: () => GitHubIcon,
|
|
14361
14583
|
Heading: () => Heading,
|
|
14584
|
+
OpenCosmosIcon: () => OpenCosmosIcon,
|
|
14362
14585
|
StatCard: () => StatCard,
|
|
14363
14586
|
StatCardGroup: () => StatCardGroup,
|
|
14364
14587
|
Table: () => Table,
|
|
@@ -14385,10 +14608,15 @@ __export(data_display_exports, {
|
|
|
14385
14608
|
// src/components/layout/index.ts
|
|
14386
14609
|
var layout_exports = {};
|
|
14387
14610
|
__export(layout_exports, {
|
|
14611
|
+
APP_SIDEBAR_WIDTH: () => APP_SIDEBAR_WIDTH,
|
|
14612
|
+
APP_SIDEBAR_WIDTH_COLLAPSED: () => APP_SIDEBAR_WIDTH_COLLAPSED,
|
|
14388
14613
|
Accordion: () => Accordion,
|
|
14389
14614
|
AccordionContent: () => AccordionContent,
|
|
14390
14615
|
AccordionItem: () => AccordionItem,
|
|
14391
14616
|
AccordionTrigger: () => AccordionTrigger,
|
|
14617
|
+
AppSidebar: () => AppSidebar,
|
|
14618
|
+
AppSidebarInset: () => AppSidebarInset,
|
|
14619
|
+
AppSidebarProvider: () => AppSidebarProvider,
|
|
14392
14620
|
AspectRatio: () => AspectRatio,
|
|
14393
14621
|
Carousel: () => Carousel,
|
|
14394
14622
|
CarouselContent: () => CarouselContent,
|
|
@@ -14420,7 +14648,8 @@ __export(layout_exports, {
|
|
|
14420
14648
|
SidebarHeader: () => SidebarHeader,
|
|
14421
14649
|
SidebarItem: () => SidebarItem,
|
|
14422
14650
|
SidebarOverlay: () => SidebarOverlay,
|
|
14423
|
-
Stack: () => Stack
|
|
14651
|
+
Stack: () => Stack,
|
|
14652
|
+
useAppSidebar: () => useAppSidebar
|
|
14424
14653
|
});
|
|
14425
14654
|
|
|
14426
14655
|
// src/components/backgrounds/index.ts
|
|
@@ -14444,6 +14673,8 @@ __export(providers_exports, {
|
|
|
14444
14673
|
ThemeProvider: () => ThemeProvider
|
|
14445
14674
|
});
|
|
14446
14675
|
export {
|
|
14676
|
+
APP_SIDEBAR_WIDTH,
|
|
14677
|
+
APP_SIDEBAR_WIDTH_COLLAPSED,
|
|
14447
14678
|
Accordion,
|
|
14448
14679
|
AccordionContent,
|
|
14449
14680
|
AccordionItem,
|
|
@@ -14464,6 +14695,9 @@ export {
|
|
|
14464
14695
|
AlertDialogTrigger,
|
|
14465
14696
|
AlertTitle,
|
|
14466
14697
|
AnimatedBeam,
|
|
14698
|
+
AppSidebar,
|
|
14699
|
+
AppSidebarInset,
|
|
14700
|
+
AppSidebarProvider,
|
|
14467
14701
|
AspectImage,
|
|
14468
14702
|
AspectRatio,
|
|
14469
14703
|
Avatar,
|
|
@@ -14633,6 +14867,7 @@ export {
|
|
|
14633
14867
|
NavigationMenuTrigger,
|
|
14634
14868
|
NavigationMenuViewport,
|
|
14635
14869
|
NotificationCenter,
|
|
14870
|
+
OpenCosmosIcon,
|
|
14636
14871
|
OpenGraphCard,
|
|
14637
14872
|
OrbBackground,
|
|
14638
14873
|
overlays_exports as Overlays,
|
|
@@ -14789,6 +15024,7 @@ export {
|
|
|
14789
15024
|
transitions,
|
|
14790
15025
|
treeNodeVariants,
|
|
14791
15026
|
typographySystem,
|
|
15027
|
+
useAppSidebar,
|
|
14792
15028
|
useCustomizer,
|
|
14793
15029
|
useForm,
|
|
14794
15030
|
useFormField,
|