@mindtris/ui 0.1.7 → 0.1.9
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/dist/index.d.mts +8 -1
- package/dist/index.mjs +439 -419
- package/dist/index.mjs.map +1 -1
- package/package.json +4 -5
package/dist/index.mjs
CHANGED
|
@@ -2729,7 +2729,7 @@ function useThemeManager() {
|
|
|
2729
2729
|
__name(useThemeManager, "useThemeManager");
|
|
2730
2730
|
|
|
2731
2731
|
// components/theme-customizer/index.tsx
|
|
2732
|
-
import
|
|
2732
|
+
import React45 from "react";
|
|
2733
2733
|
import { Settings, X as X9 } from "lucide-react";
|
|
2734
2734
|
|
|
2735
2735
|
// components/ui/button.tsx
|
|
@@ -10398,7 +10398,7 @@ function FormItem({ className, ...props }) {
|
|
|
10398
10398
|
"div",
|
|
10399
10399
|
{
|
|
10400
10400
|
"data-slot": "form-item",
|
|
10401
|
-
className: cn("grid gap-
|
|
10401
|
+
className: cn("grid gap-1", className),
|
|
10402
10402
|
...props
|
|
10403
10403
|
}
|
|
10404
10404
|
) });
|
|
@@ -10462,7 +10462,7 @@ function FormMessage({ className, ...props }) {
|
|
|
10462
10462
|
{
|
|
10463
10463
|
"data-slot": "form-message",
|
|
10464
10464
|
id: formMessageId,
|
|
10465
|
-
className: cn("text-
|
|
10465
|
+
className: cn("text-xs text-destructive mt-px", className),
|
|
10466
10466
|
...props,
|
|
10467
10467
|
children: body
|
|
10468
10468
|
}
|
|
@@ -10470,9 +10470,28 @@ function FormMessage({ className, ...props }) {
|
|
|
10470
10470
|
}
|
|
10471
10471
|
__name(FormMessage, "FormMessage");
|
|
10472
10472
|
|
|
10473
|
+
// components/ui/error-message.tsx
|
|
10474
|
+
import * as React35 from "react";
|
|
10475
|
+
import { jsx as jsx62 } from "react/jsx-runtime";
|
|
10476
|
+
var ErrorMessage = React35.forwardRef(
|
|
10477
|
+
({ className, ...props }, ref) => {
|
|
10478
|
+
return /* @__PURE__ */ jsx62(
|
|
10479
|
+
"p",
|
|
10480
|
+
{
|
|
10481
|
+
ref,
|
|
10482
|
+
"data-slot": "error-message",
|
|
10483
|
+
role: "alert",
|
|
10484
|
+
className: cn("text-xs text-destructive mt-px", className),
|
|
10485
|
+
...props
|
|
10486
|
+
}
|
|
10487
|
+
);
|
|
10488
|
+
}
|
|
10489
|
+
);
|
|
10490
|
+
ErrorMessage.displayName = "ErrorMessage";
|
|
10491
|
+
|
|
10473
10492
|
// components/ui/navigation-menu.tsx
|
|
10474
10493
|
import * as NavigationMenuPrimitive from "@radix-ui/react-navigation-menu";
|
|
10475
|
-
import { jsx as
|
|
10494
|
+
import { jsx as jsx63, jsxs as jsxs40 } from "react/jsx-runtime";
|
|
10476
10495
|
function NavigationMenuRoot({
|
|
10477
10496
|
className,
|
|
10478
10497
|
children,
|
|
@@ -10491,7 +10510,7 @@ function NavigationMenuRoot({
|
|
|
10491
10510
|
...props,
|
|
10492
10511
|
children: [
|
|
10493
10512
|
children,
|
|
10494
|
-
viewport ? /* @__PURE__ */
|
|
10513
|
+
viewport ? /* @__PURE__ */ jsx63(NavigationMenuViewport, {}) : null
|
|
10495
10514
|
]
|
|
10496
10515
|
}
|
|
10497
10516
|
);
|
|
@@ -10501,7 +10520,7 @@ function NavigationMenuList({
|
|
|
10501
10520
|
className,
|
|
10502
10521
|
...props
|
|
10503
10522
|
}) {
|
|
10504
|
-
return /* @__PURE__ */
|
|
10523
|
+
return /* @__PURE__ */ jsx63(
|
|
10505
10524
|
NavigationMenuPrimitive.List,
|
|
10506
10525
|
{
|
|
10507
10526
|
"data-slot": "navigation-menu-list",
|
|
@@ -10518,7 +10537,7 @@ function NavigationMenuItem({
|
|
|
10518
10537
|
className,
|
|
10519
10538
|
...props
|
|
10520
10539
|
}) {
|
|
10521
|
-
return /* @__PURE__ */
|
|
10540
|
+
return /* @__PURE__ */ jsx63(
|
|
10522
10541
|
NavigationMenuPrimitive.Item,
|
|
10523
10542
|
{
|
|
10524
10543
|
"data-slot": "navigation-menu-item",
|
|
@@ -10542,7 +10561,7 @@ function NavigationMenuTrigger({
|
|
|
10542
10561
|
...props,
|
|
10543
10562
|
children: [
|
|
10544
10563
|
children,
|
|
10545
|
-
/* @__PURE__ */
|
|
10564
|
+
/* @__PURE__ */ jsx63(
|
|
10546
10565
|
ChevronIcon,
|
|
10547
10566
|
{
|
|
10548
10567
|
className: "relative size-3 transition-transform duration-200 group-data-[state=open]:rotate-180",
|
|
@@ -10558,7 +10577,7 @@ function ChevronIcon({
|
|
|
10558
10577
|
className,
|
|
10559
10578
|
...props
|
|
10560
10579
|
}) {
|
|
10561
|
-
return /* @__PURE__ */
|
|
10580
|
+
return /* @__PURE__ */ jsx63(
|
|
10562
10581
|
"svg",
|
|
10563
10582
|
{
|
|
10564
10583
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -10572,7 +10591,7 @@ function ChevronIcon({
|
|
|
10572
10591
|
strokeLinejoin: "round",
|
|
10573
10592
|
className: cn("shrink-0", className),
|
|
10574
10593
|
...props,
|
|
10575
|
-
children: /* @__PURE__ */
|
|
10594
|
+
children: /* @__PURE__ */ jsx63("path", { d: "m6 9 6 6 6-6" })
|
|
10576
10595
|
}
|
|
10577
10596
|
);
|
|
10578
10597
|
}
|
|
@@ -10581,7 +10600,7 @@ function NavigationMenuContent({
|
|
|
10581
10600
|
className,
|
|
10582
10601
|
...props
|
|
10583
10602
|
}) {
|
|
10584
|
-
return /* @__PURE__ */
|
|
10603
|
+
return /* @__PURE__ */ jsx63(
|
|
10585
10604
|
NavigationMenuPrimitive.Content,
|
|
10586
10605
|
{
|
|
10587
10606
|
"data-slot": "navigation-menu-content",
|
|
@@ -10601,7 +10620,7 @@ function NavigationMenuViewport({
|
|
|
10601
10620
|
className,
|
|
10602
10621
|
...props
|
|
10603
10622
|
}) {
|
|
10604
|
-
return /* @__PURE__ */
|
|
10623
|
+
return /* @__PURE__ */ jsx63("div", { className: "absolute left-0 top-full z-50 flex justify-center", children: /* @__PURE__ */ jsx63(
|
|
10605
10624
|
NavigationMenuPrimitive.Viewport,
|
|
10606
10625
|
{
|
|
10607
10626
|
"data-slot": "navigation-menu-viewport",
|
|
@@ -10620,7 +10639,7 @@ function NavigationMenuLink({
|
|
|
10620
10639
|
className,
|
|
10621
10640
|
...props
|
|
10622
10641
|
}) {
|
|
10623
|
-
return /* @__PURE__ */
|
|
10642
|
+
return /* @__PURE__ */ jsx63(
|
|
10624
10643
|
NavigationMenuPrimitive.Link,
|
|
10625
10644
|
{
|
|
10626
10645
|
"data-slot": "navigation-menu-link",
|
|
@@ -10640,7 +10659,7 @@ function NavigationMenuIndicator({
|
|
|
10640
10659
|
className,
|
|
10641
10660
|
...props
|
|
10642
10661
|
}) {
|
|
10643
|
-
return /* @__PURE__ */
|
|
10662
|
+
return /* @__PURE__ */ jsx63(
|
|
10644
10663
|
NavigationMenuPrimitive.Indicator,
|
|
10645
10664
|
{
|
|
10646
10665
|
"data-slot": "navigation-menu-indicator",
|
|
@@ -10650,7 +10669,7 @@ function NavigationMenuIndicator({
|
|
|
10650
10669
|
className
|
|
10651
10670
|
),
|
|
10652
10671
|
...props,
|
|
10653
|
-
children: /* @__PURE__ */
|
|
10672
|
+
children: /* @__PURE__ */ jsx63("div", { className: "relative top-[60%] size-2 rotate-45 rounded-tl-sm border-border bg-border shadow-md" })
|
|
10654
10673
|
}
|
|
10655
10674
|
);
|
|
10656
10675
|
}
|
|
@@ -10677,7 +10696,7 @@ var ICON_SIZES = {
|
|
|
10677
10696
|
};
|
|
10678
10697
|
|
|
10679
10698
|
// components/ui/icon.tsx
|
|
10680
|
-
import { jsx as
|
|
10699
|
+
import { jsx as jsx64 } from "react/jsx-runtime";
|
|
10681
10700
|
function Icon({
|
|
10682
10701
|
icon: IconComponent,
|
|
10683
10702
|
size = "md",
|
|
@@ -10686,7 +10705,7 @@ function Icon({
|
|
|
10686
10705
|
...props
|
|
10687
10706
|
}) {
|
|
10688
10707
|
const sizeValue = typeof size === "number" ? size : ICON_SIZES[size];
|
|
10689
|
-
return /* @__PURE__ */
|
|
10708
|
+
return /* @__PURE__ */ jsx64(
|
|
10690
10709
|
IconComponent,
|
|
10691
10710
|
{
|
|
10692
10711
|
className: cn("shrink-0", className),
|
|
@@ -10704,7 +10723,7 @@ function createIcon(IconComponent, options = {}) {
|
|
|
10704
10723
|
className
|
|
10705
10724
|
} = options;
|
|
10706
10725
|
const sizeValue = typeof size === "number" ? size : ICON_SIZES[size];
|
|
10707
|
-
return /* @__PURE__ */
|
|
10726
|
+
return /* @__PURE__ */ jsx64(
|
|
10708
10727
|
IconComponent,
|
|
10709
10728
|
{
|
|
10710
10729
|
className: cn("shrink-0", className),
|
|
@@ -10716,11 +10735,11 @@ function createIcon(IconComponent, options = {}) {
|
|
|
10716
10735
|
__name(createIcon, "createIcon");
|
|
10717
10736
|
|
|
10718
10737
|
// components/ui/theme-toggle-icon.tsx
|
|
10719
|
-
import { jsx as
|
|
10738
|
+
import { jsx as jsx65, jsxs as jsxs41 } from "react/jsx-runtime";
|
|
10720
10739
|
function ThemeToggleIcon() {
|
|
10721
10740
|
const { theme, setTheme } = useTheme2();
|
|
10722
10741
|
return /* @__PURE__ */ jsxs41("div", { children: [
|
|
10723
|
-
/* @__PURE__ */
|
|
10742
|
+
/* @__PURE__ */ jsx65(
|
|
10724
10743
|
"input",
|
|
10725
10744
|
{
|
|
10726
10745
|
type: "checkbox",
|
|
@@ -10746,7 +10765,7 @@ function ThemeToggleIcon() {
|
|
|
10746
10765
|
htmlFor: "light-switch",
|
|
10747
10766
|
children: [
|
|
10748
10767
|
createIcon(Moon, { size: 16, strokeWidth: 2.25, className: "text-muted-foreground" }),
|
|
10749
|
-
/* @__PURE__ */
|
|
10768
|
+
/* @__PURE__ */ jsx65("span", { className: "sr-only", children: "Switch to light / dark version" })
|
|
10750
10769
|
]
|
|
10751
10770
|
}
|
|
10752
10771
|
)
|
|
@@ -10755,16 +10774,16 @@ function ThemeToggleIcon() {
|
|
|
10755
10774
|
__name(ThemeToggleIcon, "ThemeToggleIcon");
|
|
10756
10775
|
|
|
10757
10776
|
// components/ui/kbd.tsx
|
|
10758
|
-
import * as
|
|
10759
|
-
import { jsx as
|
|
10777
|
+
import * as React36 from "react";
|
|
10778
|
+
import { jsx as jsx66 } from "react/jsx-runtime";
|
|
10760
10779
|
var sizeClasses7 = {
|
|
10761
10780
|
sm: "px-1.5 py-0.5 text-[10px]",
|
|
10762
10781
|
default: "px-2 py-1 text-xs",
|
|
10763
10782
|
lg: "px-2.5 py-1.5 text-sm"
|
|
10764
10783
|
};
|
|
10765
|
-
var Kbd =
|
|
10784
|
+
var Kbd = React36.forwardRef(
|
|
10766
10785
|
({ className, size = "default", children, ...props }, ref) => {
|
|
10767
|
-
return /* @__PURE__ */
|
|
10786
|
+
return /* @__PURE__ */ jsx66(
|
|
10768
10787
|
"kbd",
|
|
10769
10788
|
{
|
|
10770
10789
|
ref,
|
|
@@ -10786,15 +10805,15 @@ var Kbd = React35.forwardRef(
|
|
|
10786
10805
|
Kbd.displayName = "Kbd";
|
|
10787
10806
|
|
|
10788
10807
|
// components/ui/scroll-area.tsx
|
|
10789
|
-
import * as
|
|
10808
|
+
import * as React37 from "react";
|
|
10790
10809
|
import * as ScrollAreaPrimitive from "@radix-ui/react-scroll-area";
|
|
10791
|
-
import { jsx as
|
|
10810
|
+
import { jsx as jsx67, jsxs as jsxs42 } from "react/jsx-runtime";
|
|
10792
10811
|
function isHorizontalScrollBar(child) {
|
|
10793
|
-
return
|
|
10812
|
+
return React37.isValidElement(child) && child.type === ScrollBar && child.props.orientation === "horizontal";
|
|
10794
10813
|
}
|
|
10795
10814
|
__name(isHorizontalScrollBar, "isHorizontalScrollBar");
|
|
10796
|
-
var ScrollArea =
|
|
10797
|
-
const childList =
|
|
10815
|
+
var ScrollArea = React37.forwardRef(({ className, children, ...props }, ref) => {
|
|
10816
|
+
const childList = React37.Children.toArray(children);
|
|
10798
10817
|
const viewportChildren = childList.filter((c) => !isHorizontalScrollBar(c));
|
|
10799
10818
|
const horizontalBars = childList.filter((c) => isHorizontalScrollBar(c));
|
|
10800
10819
|
return /* @__PURE__ */ jsxs42(
|
|
@@ -10805,7 +10824,7 @@ var ScrollArea = React36.forwardRef(({ className, children, ...props }, ref) =>
|
|
|
10805
10824
|
className: cn("relative overflow-hidden", className),
|
|
10806
10825
|
...props,
|
|
10807
10826
|
children: [
|
|
10808
|
-
/* @__PURE__ */
|
|
10827
|
+
/* @__PURE__ */ jsx67(
|
|
10809
10828
|
ScrollAreaPrimitive.Viewport,
|
|
10810
10829
|
{
|
|
10811
10830
|
"data-slot": "scroll-area-viewport",
|
|
@@ -10813,15 +10832,15 @@ var ScrollArea = React36.forwardRef(({ className, children, ...props }, ref) =>
|
|
|
10813
10832
|
children: viewportChildren
|
|
10814
10833
|
}
|
|
10815
10834
|
),
|
|
10816
|
-
/* @__PURE__ */
|
|
10835
|
+
/* @__PURE__ */ jsx67(ScrollBar, {}),
|
|
10817
10836
|
horizontalBars,
|
|
10818
|
-
/* @__PURE__ */
|
|
10837
|
+
/* @__PURE__ */ jsx67(ScrollAreaPrimitive.Corner, { "data-slot": "scroll-area-corner" })
|
|
10819
10838
|
]
|
|
10820
10839
|
}
|
|
10821
10840
|
);
|
|
10822
10841
|
});
|
|
10823
10842
|
ScrollArea.displayName = "ScrollArea";
|
|
10824
|
-
var ScrollBar =
|
|
10843
|
+
var ScrollBar = React37.forwardRef(({ className, orientation = "vertical", ...props }, ref) => /* @__PURE__ */ jsx67(
|
|
10825
10844
|
ScrollAreaPrimitive.Scrollbar,
|
|
10826
10845
|
{
|
|
10827
10846
|
ref,
|
|
@@ -10833,7 +10852,7 @@ var ScrollBar = React36.forwardRef(({ className, orientation = "vertical", ...pr
|
|
|
10833
10852
|
className
|
|
10834
10853
|
),
|
|
10835
10854
|
...props,
|
|
10836
|
-
children: /* @__PURE__ */
|
|
10855
|
+
children: /* @__PURE__ */ jsx67(
|
|
10837
10856
|
ScrollAreaPrimitive.Thumb,
|
|
10838
10857
|
{
|
|
10839
10858
|
"data-slot": "scroll-area-thumb",
|
|
@@ -10847,10 +10866,10 @@ var ScrollBar = React36.forwardRef(({ className, orientation = "vertical", ...pr
|
|
|
10847
10866
|
ScrollBar.displayName = "ScrollBar";
|
|
10848
10867
|
|
|
10849
10868
|
// components/ui/resizable.tsx
|
|
10850
|
-
import * as
|
|
10869
|
+
import * as React38 from "react";
|
|
10851
10870
|
import { Group as Group4, Panel, Separator as Separator6 } from "react-resizable-panels";
|
|
10852
10871
|
import { GripVertical } from "lucide-react";
|
|
10853
|
-
import { jsx as
|
|
10872
|
+
import { jsx as jsx68 } from "react/jsx-runtime";
|
|
10854
10873
|
function ResizablePanelGroup({
|
|
10855
10874
|
className,
|
|
10856
10875
|
direction = "horizontal",
|
|
@@ -10858,7 +10877,7 @@ function ResizablePanelGroup({
|
|
|
10858
10877
|
...props
|
|
10859
10878
|
}) {
|
|
10860
10879
|
const orientation = orientationProp ?? direction;
|
|
10861
|
-
return /* @__PURE__ */
|
|
10880
|
+
return /* @__PURE__ */ jsx68(
|
|
10862
10881
|
Group4,
|
|
10863
10882
|
{
|
|
10864
10883
|
"data-slot": "resizable-panel-group",
|
|
@@ -10874,11 +10893,11 @@ function ResizablePanelGroup({
|
|
|
10874
10893
|
}
|
|
10875
10894
|
__name(ResizablePanelGroup, "ResizablePanelGroup");
|
|
10876
10895
|
function ResizablePanel({ className, ...props }) {
|
|
10877
|
-
return /* @__PURE__ */
|
|
10896
|
+
return /* @__PURE__ */ jsx68(Panel, { "data-slot": "resizable-panel", className: cn(className), ...props });
|
|
10878
10897
|
}
|
|
10879
10898
|
__name(ResizablePanel, "ResizablePanel");
|
|
10880
|
-
var ResizableHandle =
|
|
10881
|
-
return /* @__PURE__ */
|
|
10899
|
+
var ResizableHandle = React38.forwardRef(({ className, withHandle = false, ...props }, ref) => {
|
|
10900
|
+
return /* @__PURE__ */ jsx68(
|
|
10882
10901
|
Separator6,
|
|
10883
10902
|
{
|
|
10884
10903
|
elementRef: ref,
|
|
@@ -10892,7 +10911,7 @@ var ResizableHandle = React37.forwardRef(({ className, withHandle = false, ...pr
|
|
|
10892
10911
|
className
|
|
10893
10912
|
),
|
|
10894
10913
|
...props,
|
|
10895
|
-
children: withHandle ? /* @__PURE__ */
|
|
10914
|
+
children: withHandle ? /* @__PURE__ */ jsx68(
|
|
10896
10915
|
"div",
|
|
10897
10916
|
{
|
|
10898
10917
|
"data-slot": "resizable-handle-grip",
|
|
@@ -10900,7 +10919,7 @@ var ResizableHandle = React37.forwardRef(({ className, withHandle = false, ...pr
|
|
|
10900
10919
|
"z-10 flex h-4 w-3 items-center justify-center rounded-sm border border-border bg-card",
|
|
10901
10920
|
"data-[orientation=horizontal]:h-3 data-[orientation=horizontal]:w-4"
|
|
10902
10921
|
),
|
|
10903
|
-
children: /* @__PURE__ */
|
|
10922
|
+
children: /* @__PURE__ */ jsx68(
|
|
10904
10923
|
GripVertical,
|
|
10905
10924
|
{
|
|
10906
10925
|
className: cn(
|
|
@@ -10918,14 +10937,14 @@ var ResizableHandle = React37.forwardRef(({ className, withHandle = false, ...pr
|
|
|
10918
10937
|
ResizableHandle.displayName = "ResizableHandle";
|
|
10919
10938
|
|
|
10920
10939
|
// components/ui/typography.tsx
|
|
10921
|
-
import { jsx as
|
|
10940
|
+
import { jsx as jsx69 } from "react/jsx-runtime";
|
|
10922
10941
|
function Text({
|
|
10923
10942
|
variant = "default",
|
|
10924
10943
|
className,
|
|
10925
10944
|
as: Component = "p",
|
|
10926
10945
|
...props
|
|
10927
10946
|
}) {
|
|
10928
|
-
return /* @__PURE__ */
|
|
10947
|
+
return /* @__PURE__ */ jsx69(
|
|
10929
10948
|
Component,
|
|
10930
10949
|
{
|
|
10931
10950
|
"data-slot": "text",
|
|
@@ -10957,7 +10976,7 @@ function Heading({
|
|
|
10957
10976
|
...props
|
|
10958
10977
|
}) {
|
|
10959
10978
|
const Tag = as ?? `h${level}`;
|
|
10960
|
-
return /* @__PURE__ */
|
|
10979
|
+
return /* @__PURE__ */ jsx69(
|
|
10961
10980
|
Tag,
|
|
10962
10981
|
{
|
|
10963
10982
|
"data-slot": "heading",
|
|
@@ -10969,7 +10988,7 @@ function Heading({
|
|
|
10969
10988
|
}
|
|
10970
10989
|
__name(Heading, "Heading");
|
|
10971
10990
|
function Lead({ className, ...props }) {
|
|
10972
|
-
return /* @__PURE__ */
|
|
10991
|
+
return /* @__PURE__ */ jsx69(
|
|
10973
10992
|
"p",
|
|
10974
10993
|
{
|
|
10975
10994
|
"data-slot": "lead",
|
|
@@ -10980,7 +10999,7 @@ function Lead({ className, ...props }) {
|
|
|
10980
10999
|
}
|
|
10981
11000
|
__name(Lead, "Lead");
|
|
10982
11001
|
function Small({ className, ...props }) {
|
|
10983
|
-
return /* @__PURE__ */
|
|
11002
|
+
return /* @__PURE__ */ jsx69(
|
|
10984
11003
|
"span",
|
|
10985
11004
|
{
|
|
10986
11005
|
"data-slot": "small",
|
|
@@ -10991,7 +11010,7 @@ function Small({ className, ...props }) {
|
|
|
10991
11010
|
}
|
|
10992
11011
|
__name(Small, "Small");
|
|
10993
11012
|
function Muted({ className, ...props }) {
|
|
10994
|
-
return /* @__PURE__ */
|
|
11013
|
+
return /* @__PURE__ */ jsx69(
|
|
10995
11014
|
"span",
|
|
10996
11015
|
{
|
|
10997
11016
|
"data-slot": "muted",
|
|
@@ -11003,9 +11022,9 @@ function Muted({ className, ...props }) {
|
|
|
11003
11022
|
__name(Muted, "Muted");
|
|
11004
11023
|
|
|
11005
11024
|
// components/ui/toggle.tsx
|
|
11006
|
-
import * as
|
|
11025
|
+
import * as React39 from "react";
|
|
11007
11026
|
import * as TogglePrimitive from "@radix-ui/react-toggle";
|
|
11008
|
-
import { jsx as
|
|
11027
|
+
import { jsx as jsx70 } from "react/jsx-runtime";
|
|
11009
11028
|
var toggleVariants = createVariants({
|
|
11010
11029
|
base: 'inline-flex items-center justify-center gap-2 rounded-md text-sm font-medium whitespace-nowrap [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*="size-"])]:size-4 transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 hover:bg-muted hover:text-foreground',
|
|
11011
11030
|
variants: {
|
|
@@ -11030,8 +11049,8 @@ var toggleVariants = createVariants({
|
|
|
11030
11049
|
activeVariant: "primary"
|
|
11031
11050
|
}
|
|
11032
11051
|
});
|
|
11033
|
-
var Toggle =
|
|
11034
|
-
return /* @__PURE__ */
|
|
11052
|
+
var Toggle = React39.forwardRef(({ className, variant = "default", size = "default", activeVariant = "primary", ...props }, ref) => {
|
|
11053
|
+
return /* @__PURE__ */ jsx70(
|
|
11035
11054
|
TogglePrimitive.Root,
|
|
11036
11055
|
{
|
|
11037
11056
|
ref,
|
|
@@ -11047,7 +11066,7 @@ Toggle.displayName = "Toggle";
|
|
|
11047
11066
|
import { useTheme as useTheme3 } from "next-themes";
|
|
11048
11067
|
|
|
11049
11068
|
// ../../node_modules/.pnpm/sonner@2.0.7_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/sonner/dist/index.mjs
|
|
11050
|
-
import
|
|
11069
|
+
import React40 from "react";
|
|
11051
11070
|
import ReactDOM from "react-dom";
|
|
11052
11071
|
function __insertCSS(code) {
|
|
11053
11072
|
if (!code || typeof document == "undefined") return;
|
|
@@ -11074,64 +11093,64 @@ var getAsset = /* @__PURE__ */ __name((type) => {
|
|
|
11074
11093
|
}, "getAsset");
|
|
11075
11094
|
var bars = Array(12).fill(0);
|
|
11076
11095
|
var Loader = /* @__PURE__ */ __name(({ visible, className }) => {
|
|
11077
|
-
return /* @__PURE__ */
|
|
11096
|
+
return /* @__PURE__ */ React40.createElement("div", {
|
|
11078
11097
|
className: [
|
|
11079
11098
|
"sonner-loading-wrapper",
|
|
11080
11099
|
className
|
|
11081
11100
|
].filter(Boolean).join(" "),
|
|
11082
11101
|
"data-visible": visible
|
|
11083
|
-
}, /* @__PURE__ */
|
|
11102
|
+
}, /* @__PURE__ */ React40.createElement("div", {
|
|
11084
11103
|
className: "sonner-spinner"
|
|
11085
|
-
}, bars.map((_, i) => /* @__PURE__ */
|
|
11104
|
+
}, bars.map((_, i) => /* @__PURE__ */ React40.createElement("div", {
|
|
11086
11105
|
className: "sonner-loading-bar",
|
|
11087
11106
|
key: `spinner-bar-${i}`
|
|
11088
11107
|
}))));
|
|
11089
11108
|
}, "Loader");
|
|
11090
|
-
var SuccessIcon = /* @__PURE__ */
|
|
11109
|
+
var SuccessIcon = /* @__PURE__ */ React40.createElement("svg", {
|
|
11091
11110
|
xmlns: "http://www.w3.org/2000/svg",
|
|
11092
11111
|
viewBox: "0 0 20 20",
|
|
11093
11112
|
fill: "currentColor",
|
|
11094
11113
|
height: "20",
|
|
11095
11114
|
width: "20"
|
|
11096
|
-
}, /* @__PURE__ */
|
|
11115
|
+
}, /* @__PURE__ */ React40.createElement("path", {
|
|
11097
11116
|
fillRule: "evenodd",
|
|
11098
11117
|
d: "M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z",
|
|
11099
11118
|
clipRule: "evenodd"
|
|
11100
11119
|
}));
|
|
11101
|
-
var WarningIcon = /* @__PURE__ */
|
|
11120
|
+
var WarningIcon = /* @__PURE__ */ React40.createElement("svg", {
|
|
11102
11121
|
xmlns: "http://www.w3.org/2000/svg",
|
|
11103
11122
|
viewBox: "0 0 24 24",
|
|
11104
11123
|
fill: "currentColor",
|
|
11105
11124
|
height: "20",
|
|
11106
11125
|
width: "20"
|
|
11107
|
-
}, /* @__PURE__ */
|
|
11126
|
+
}, /* @__PURE__ */ React40.createElement("path", {
|
|
11108
11127
|
fillRule: "evenodd",
|
|
11109
11128
|
d: "M9.401 3.003c1.155-2 4.043-2 5.197 0l7.355 12.748c1.154 2-.29 4.5-2.599 4.5H4.645c-2.309 0-3.752-2.5-2.598-4.5L9.4 3.003zM12 8.25a.75.75 0 01.75.75v3.75a.75.75 0 01-1.5 0V9a.75.75 0 01.75-.75zm0 8.25a.75.75 0 100-1.5.75.75 0 000 1.5z",
|
|
11110
11129
|
clipRule: "evenodd"
|
|
11111
11130
|
}));
|
|
11112
|
-
var InfoIcon = /* @__PURE__ */
|
|
11131
|
+
var InfoIcon = /* @__PURE__ */ React40.createElement("svg", {
|
|
11113
11132
|
xmlns: "http://www.w3.org/2000/svg",
|
|
11114
11133
|
viewBox: "0 0 20 20",
|
|
11115
11134
|
fill: "currentColor",
|
|
11116
11135
|
height: "20",
|
|
11117
11136
|
width: "20"
|
|
11118
|
-
}, /* @__PURE__ */
|
|
11137
|
+
}, /* @__PURE__ */ React40.createElement("path", {
|
|
11119
11138
|
fillRule: "evenodd",
|
|
11120
11139
|
d: "M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a.75.75 0 000 1.5h.253a.25.25 0 01.244.304l-.459 2.066A1.75 1.75 0 0010.747 15H11a.75.75 0 000-1.5h-.253a.25.25 0 01-.244-.304l.459-2.066A1.75 1.75 0 009.253 9H9z",
|
|
11121
11140
|
clipRule: "evenodd"
|
|
11122
11141
|
}));
|
|
11123
|
-
var ErrorIcon = /* @__PURE__ */
|
|
11142
|
+
var ErrorIcon = /* @__PURE__ */ React40.createElement("svg", {
|
|
11124
11143
|
xmlns: "http://www.w3.org/2000/svg",
|
|
11125
11144
|
viewBox: "0 0 20 20",
|
|
11126
11145
|
fill: "currentColor",
|
|
11127
11146
|
height: "20",
|
|
11128
11147
|
width: "20"
|
|
11129
|
-
}, /* @__PURE__ */
|
|
11148
|
+
}, /* @__PURE__ */ React40.createElement("path", {
|
|
11130
11149
|
fillRule: "evenodd",
|
|
11131
11150
|
d: "M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-8-5a.75.75 0 01.75.75v4.5a.75.75 0 01-1.5 0v-4.5A.75.75 0 0110 5zm0 10a1 1 0 100-2 1 1 0 000 2z",
|
|
11132
11151
|
clipRule: "evenodd"
|
|
11133
11152
|
}));
|
|
11134
|
-
var CloseIcon = /* @__PURE__ */
|
|
11153
|
+
var CloseIcon = /* @__PURE__ */ React40.createElement("svg", {
|
|
11135
11154
|
xmlns: "http://www.w3.org/2000/svg",
|
|
11136
11155
|
width: "12",
|
|
11137
11156
|
height: "12",
|
|
@@ -11141,20 +11160,20 @@ var CloseIcon = /* @__PURE__ */ React39.createElement("svg", {
|
|
|
11141
11160
|
strokeWidth: "1.5",
|
|
11142
11161
|
strokeLinecap: "round",
|
|
11143
11162
|
strokeLinejoin: "round"
|
|
11144
|
-
}, /* @__PURE__ */
|
|
11163
|
+
}, /* @__PURE__ */ React40.createElement("line", {
|
|
11145
11164
|
x1: "18",
|
|
11146
11165
|
y1: "6",
|
|
11147
11166
|
x2: "6",
|
|
11148
11167
|
y2: "18"
|
|
11149
|
-
}), /* @__PURE__ */
|
|
11168
|
+
}), /* @__PURE__ */ React40.createElement("line", {
|
|
11150
11169
|
x1: "6",
|
|
11151
11170
|
y1: "6",
|
|
11152
11171
|
x2: "18",
|
|
11153
11172
|
y2: "18"
|
|
11154
11173
|
}));
|
|
11155
11174
|
var useIsDocumentHidden = /* @__PURE__ */ __name(() => {
|
|
11156
|
-
const [isDocumentHidden, setIsDocumentHidden] =
|
|
11157
|
-
|
|
11175
|
+
const [isDocumentHidden, setIsDocumentHidden] = React40.useState(document.hidden);
|
|
11176
|
+
React40.useEffect(() => {
|
|
11158
11177
|
const callback = /* @__PURE__ */ __name(() => {
|
|
11159
11178
|
setIsDocumentHidden(document.hidden);
|
|
11160
11179
|
}, "callback");
|
|
@@ -11306,7 +11325,7 @@ var Observer = class {
|
|
|
11306
11325
|
"resolve",
|
|
11307
11326
|
response
|
|
11308
11327
|
];
|
|
11309
|
-
const isReactElementResponse =
|
|
11328
|
+
const isReactElementResponse = React40.isValidElement(response);
|
|
11310
11329
|
if (isReactElementResponse) {
|
|
11311
11330
|
shouldDismiss = false;
|
|
11312
11331
|
this.create({
|
|
@@ -11318,7 +11337,7 @@ var Observer = class {
|
|
|
11318
11337
|
shouldDismiss = false;
|
|
11319
11338
|
const promiseData = typeof data.error === "function" ? await data.error(`HTTP error! status: ${response.status}`) : data.error;
|
|
11320
11339
|
const description = typeof data.description === "function" ? await data.description(`HTTP error! status: ${response.status}`) : data.description;
|
|
11321
|
-
const isExtendedResult = typeof promiseData === "object" && !
|
|
11340
|
+
const isExtendedResult = typeof promiseData === "object" && !React40.isValidElement(promiseData);
|
|
11322
11341
|
const toastSettings = isExtendedResult ? promiseData : {
|
|
11323
11342
|
message: promiseData
|
|
11324
11343
|
};
|
|
@@ -11332,7 +11351,7 @@ var Observer = class {
|
|
|
11332
11351
|
shouldDismiss = false;
|
|
11333
11352
|
const promiseData = typeof data.error === "function" ? await data.error(response) : data.error;
|
|
11334
11353
|
const description = typeof data.description === "function" ? await data.description(response) : data.description;
|
|
11335
|
-
const isExtendedResult = typeof promiseData === "object" && !
|
|
11354
|
+
const isExtendedResult = typeof promiseData === "object" && !React40.isValidElement(promiseData);
|
|
11336
11355
|
const toastSettings = isExtendedResult ? promiseData : {
|
|
11337
11356
|
message: promiseData
|
|
11338
11357
|
};
|
|
@@ -11346,7 +11365,7 @@ var Observer = class {
|
|
|
11346
11365
|
shouldDismiss = false;
|
|
11347
11366
|
const promiseData = typeof data.success === "function" ? await data.success(response) : data.success;
|
|
11348
11367
|
const description = typeof data.description === "function" ? await data.description(response) : data.description;
|
|
11349
|
-
const isExtendedResult = typeof promiseData === "object" && !
|
|
11368
|
+
const isExtendedResult = typeof promiseData === "object" && !React40.isValidElement(promiseData);
|
|
11350
11369
|
const toastSettings = isExtendedResult ? promiseData : {
|
|
11351
11370
|
message: promiseData
|
|
11352
11371
|
};
|
|
@@ -11366,7 +11385,7 @@ var Observer = class {
|
|
|
11366
11385
|
shouldDismiss = false;
|
|
11367
11386
|
const promiseData = typeof data.error === "function" ? await data.error(error) : data.error;
|
|
11368
11387
|
const description = typeof data.description === "function" ? await data.description(error) : data.description;
|
|
11369
|
-
const isExtendedResult = typeof promiseData === "object" && !
|
|
11388
|
+
const isExtendedResult = typeof promiseData === "object" && !React40.isValidElement(promiseData);
|
|
11370
11389
|
const toastSettings = isExtendedResult ? promiseData : {
|
|
11371
11390
|
message: promiseData
|
|
11372
11391
|
};
|
|
@@ -11395,10 +11414,10 @@ var Observer = class {
|
|
|
11395
11414
|
});
|
|
11396
11415
|
}
|
|
11397
11416
|
};
|
|
11398
|
-
this.custom = (
|
|
11417
|
+
this.custom = (jsx85, data) => {
|
|
11399
11418
|
const id = (data == null ? void 0 : data.id) || toastsCounter++;
|
|
11400
11419
|
this.create({
|
|
11401
|
-
jsx:
|
|
11420
|
+
jsx: jsx85(id),
|
|
11402
11421
|
id,
|
|
11403
11422
|
...data
|
|
11404
11423
|
});
|
|
@@ -11474,45 +11493,45 @@ __name(getDefaultSwipeDirections, "getDefaultSwipeDirections");
|
|
|
11474
11493
|
var Toast = /* @__PURE__ */ __name((props) => {
|
|
11475
11494
|
var _toast_classNames, _toast_classNames1, _toast_classNames2, _toast_classNames3, _toast_classNames4, _toast_classNames5, _toast_classNames6, _toast_classNames7, _toast_classNames8;
|
|
11476
11495
|
const { invert: ToasterInvert, toast: toast2, unstyled, interacting, setHeights, visibleToasts, heights, index, toasts, expanded, removeToast, defaultRichColors, closeButton: closeButtonFromToaster, style, cancelButtonStyle, actionButtonStyle, className = "", descriptionClassName = "", duration: durationFromToaster, position, gap, expandByDefault, classNames, icons, closeButtonAriaLabel = "Close toast" } = props;
|
|
11477
|
-
const [swipeDirection, setSwipeDirection] =
|
|
11478
|
-
const [swipeOutDirection, setSwipeOutDirection] =
|
|
11479
|
-
const [mounted, setMounted] =
|
|
11480
|
-
const [removed, setRemoved] =
|
|
11481
|
-
const [swiping, setSwiping] =
|
|
11482
|
-
const [swipeOut, setSwipeOut] =
|
|
11483
|
-
const [isSwiped, setIsSwiped] =
|
|
11484
|
-
const [offsetBeforeRemove, setOffsetBeforeRemove] =
|
|
11485
|
-
const [initialHeight, setInitialHeight] =
|
|
11486
|
-
const remainingTime =
|
|
11487
|
-
const dragStartTime =
|
|
11488
|
-
const toastRef =
|
|
11496
|
+
const [swipeDirection, setSwipeDirection] = React40.useState(null);
|
|
11497
|
+
const [swipeOutDirection, setSwipeOutDirection] = React40.useState(null);
|
|
11498
|
+
const [mounted, setMounted] = React40.useState(false);
|
|
11499
|
+
const [removed, setRemoved] = React40.useState(false);
|
|
11500
|
+
const [swiping, setSwiping] = React40.useState(false);
|
|
11501
|
+
const [swipeOut, setSwipeOut] = React40.useState(false);
|
|
11502
|
+
const [isSwiped, setIsSwiped] = React40.useState(false);
|
|
11503
|
+
const [offsetBeforeRemove, setOffsetBeforeRemove] = React40.useState(0);
|
|
11504
|
+
const [initialHeight, setInitialHeight] = React40.useState(0);
|
|
11505
|
+
const remainingTime = React40.useRef(toast2.duration || durationFromToaster || TOAST_LIFETIME);
|
|
11506
|
+
const dragStartTime = React40.useRef(null);
|
|
11507
|
+
const toastRef = React40.useRef(null);
|
|
11489
11508
|
const isFront = index === 0;
|
|
11490
11509
|
const isVisible = index + 1 <= visibleToasts;
|
|
11491
11510
|
const toastType = toast2.type;
|
|
11492
11511
|
const dismissible = toast2.dismissible !== false;
|
|
11493
11512
|
const toastClassname = toast2.className || "";
|
|
11494
11513
|
const toastDescriptionClassname = toast2.descriptionClassName || "";
|
|
11495
|
-
const heightIndex =
|
|
11514
|
+
const heightIndex = React40.useMemo(() => heights.findIndex((height) => height.toastId === toast2.id) || 0, [
|
|
11496
11515
|
heights,
|
|
11497
11516
|
toast2.id
|
|
11498
11517
|
]);
|
|
11499
|
-
const closeButton =
|
|
11518
|
+
const closeButton = React40.useMemo(() => {
|
|
11500
11519
|
var _toast_closeButton;
|
|
11501
11520
|
return (_toast_closeButton = toast2.closeButton) != null ? _toast_closeButton : closeButtonFromToaster;
|
|
11502
11521
|
}, [
|
|
11503
11522
|
toast2.closeButton,
|
|
11504
11523
|
closeButtonFromToaster
|
|
11505
11524
|
]);
|
|
11506
|
-
const duration =
|
|
11525
|
+
const duration = React40.useMemo(() => toast2.duration || durationFromToaster || TOAST_LIFETIME, [
|
|
11507
11526
|
toast2.duration,
|
|
11508
11527
|
durationFromToaster
|
|
11509
11528
|
]);
|
|
11510
|
-
const closeTimerStartTimeRef =
|
|
11511
|
-
const offset =
|
|
11512
|
-
const lastCloseTimerStartTimeRef =
|
|
11513
|
-
const pointerStartRef =
|
|
11529
|
+
const closeTimerStartTimeRef = React40.useRef(0);
|
|
11530
|
+
const offset = React40.useRef(0);
|
|
11531
|
+
const lastCloseTimerStartTimeRef = React40.useRef(0);
|
|
11532
|
+
const pointerStartRef = React40.useRef(null);
|
|
11514
11533
|
const [y, x] = position.split("-");
|
|
11515
|
-
const toastsHeightBefore =
|
|
11534
|
+
const toastsHeightBefore = React40.useMemo(() => {
|
|
11516
11535
|
return heights.reduce((prev, curr, reducerIndex) => {
|
|
11517
11536
|
if (reducerIndex >= heightIndex) {
|
|
11518
11537
|
return prev;
|
|
@@ -11526,19 +11545,19 @@ var Toast = /* @__PURE__ */ __name((props) => {
|
|
|
11526
11545
|
const isDocumentHidden = useIsDocumentHidden();
|
|
11527
11546
|
const invert = toast2.invert || ToasterInvert;
|
|
11528
11547
|
const disabled = toastType === "loading";
|
|
11529
|
-
offset.current =
|
|
11548
|
+
offset.current = React40.useMemo(() => heightIndex * gap + toastsHeightBefore, [
|
|
11530
11549
|
heightIndex,
|
|
11531
11550
|
toastsHeightBefore
|
|
11532
11551
|
]);
|
|
11533
|
-
|
|
11552
|
+
React40.useEffect(() => {
|
|
11534
11553
|
remainingTime.current = duration;
|
|
11535
11554
|
}, [
|
|
11536
11555
|
duration
|
|
11537
11556
|
]);
|
|
11538
|
-
|
|
11557
|
+
React40.useEffect(() => {
|
|
11539
11558
|
setMounted(true);
|
|
11540
11559
|
}, []);
|
|
11541
|
-
|
|
11560
|
+
React40.useEffect(() => {
|
|
11542
11561
|
const toastNode = toastRef.current;
|
|
11543
11562
|
if (toastNode) {
|
|
11544
11563
|
const height = toastNode.getBoundingClientRect().height;
|
|
@@ -11557,7 +11576,7 @@ var Toast = /* @__PURE__ */ __name((props) => {
|
|
|
11557
11576
|
setHeights,
|
|
11558
11577
|
toast2.id
|
|
11559
11578
|
]);
|
|
11560
|
-
|
|
11579
|
+
React40.useLayoutEffect(() => {
|
|
11561
11580
|
if (!mounted) return;
|
|
11562
11581
|
const toastNode = toastRef.current;
|
|
11563
11582
|
const originalHeight = toastNode.style.height;
|
|
@@ -11593,7 +11612,7 @@ var Toast = /* @__PURE__ */ __name((props) => {
|
|
|
11593
11612
|
toast2.action,
|
|
11594
11613
|
toast2.cancel
|
|
11595
11614
|
]);
|
|
11596
|
-
const deleteToast =
|
|
11615
|
+
const deleteToast = React40.useCallback(() => {
|
|
11597
11616
|
setRemoved(true);
|
|
11598
11617
|
setOffsetBeforeRemove(offset.current);
|
|
11599
11618
|
setHeights((h) => h.filter((height) => height.toastId !== toast2.id));
|
|
@@ -11606,7 +11625,7 @@ var Toast = /* @__PURE__ */ __name((props) => {
|
|
|
11606
11625
|
setHeights,
|
|
11607
11626
|
offset
|
|
11608
11627
|
]);
|
|
11609
|
-
|
|
11628
|
+
React40.useEffect(() => {
|
|
11610
11629
|
if (toast2.promise && toastType === "loading" || toast2.duration === Infinity || toast2.type === "loading") return;
|
|
11611
11630
|
let timeoutId;
|
|
11612
11631
|
const pauseTimer = /* @__PURE__ */ __name(() => {
|
|
@@ -11638,7 +11657,7 @@ var Toast = /* @__PURE__ */ __name((props) => {
|
|
|
11638
11657
|
isDocumentHidden,
|
|
11639
11658
|
deleteToast
|
|
11640
11659
|
]);
|
|
11641
|
-
|
|
11660
|
+
React40.useEffect(() => {
|
|
11642
11661
|
if (toast2.delete) {
|
|
11643
11662
|
deleteToast();
|
|
11644
11663
|
toast2.onDismiss == null ? void 0 : toast2.onDismiss.call(toast2, toast2);
|
|
@@ -11651,12 +11670,12 @@ var Toast = /* @__PURE__ */ __name((props) => {
|
|
|
11651
11670
|
var _toast_classNames9;
|
|
11652
11671
|
if (icons == null ? void 0 : icons.loading) {
|
|
11653
11672
|
var _toast_classNames12;
|
|
11654
|
-
return /* @__PURE__ */
|
|
11673
|
+
return /* @__PURE__ */ React40.createElement("div", {
|
|
11655
11674
|
className: cn2(classNames == null ? void 0 : classNames.loader, toast2 == null ? void 0 : (_toast_classNames12 = toast2.classNames) == null ? void 0 : _toast_classNames12.loader, "sonner-loader"),
|
|
11656
11675
|
"data-visible": toastType === "loading"
|
|
11657
11676
|
}, icons.loading);
|
|
11658
11677
|
}
|
|
11659
|
-
return /* @__PURE__ */
|
|
11678
|
+
return /* @__PURE__ */ React40.createElement(Loader, {
|
|
11660
11679
|
className: cn2(classNames == null ? void 0 : classNames.loader, toast2 == null ? void 0 : (_toast_classNames9 = toast2.classNames) == null ? void 0 : _toast_classNames9.loader),
|
|
11661
11680
|
visible: toastType === "loading"
|
|
11662
11681
|
});
|
|
@@ -11664,7 +11683,7 @@ var Toast = /* @__PURE__ */ __name((props) => {
|
|
|
11664
11683
|
__name(getLoadingIcon, "getLoadingIcon");
|
|
11665
11684
|
const icon = toast2.icon || (icons == null ? void 0 : icons[toastType]) || getAsset(toastType);
|
|
11666
11685
|
var _toast_richColors, _icons_close;
|
|
11667
|
-
return /* @__PURE__ */
|
|
11686
|
+
return /* @__PURE__ */ React40.createElement("li", {
|
|
11668
11687
|
tabIndex: 0,
|
|
11669
11688
|
ref: toastRef,
|
|
11670
11689
|
className: cn2(className, toastClassname, classNames == null ? void 0 : classNames.toast, toast2 == null ? void 0 : (_toast_classNames = toast2.classNames) == null ? void 0 : _toast_classNames.toast, classNames == null ? void 0 : classNames.default, classNames == null ? void 0 : classNames[toastType], toast2 == null ? void 0 : (_toast_classNames1 = toast2.classNames) == null ? void 0 : _toast_classNames1[toastType]),
|
|
@@ -11789,7 +11808,7 @@ var Toast = /* @__PURE__ */ __name((props) => {
|
|
|
11789
11808
|
(_toastRef_current = toastRef.current) == null ? void 0 : _toastRef_current.style.setProperty("--swipe-amount-x", `${swipeAmount.x}px`);
|
|
11790
11809
|
(_toastRef_current1 = toastRef.current) == null ? void 0 : _toastRef_current1.style.setProperty("--swipe-amount-y", `${swipeAmount.y}px`);
|
|
11791
11810
|
}, "onPointerMove")
|
|
11792
|
-
}, closeButton && !toast2.jsx && toastType !== "loading" ? /* @__PURE__ */
|
|
11811
|
+
}, closeButton && !toast2.jsx && toastType !== "loading" ? /* @__PURE__ */ React40.createElement("button", {
|
|
11793
11812
|
"aria-label": closeButtonAriaLabel,
|
|
11794
11813
|
"data-disabled": disabled,
|
|
11795
11814
|
"data-close-button": true,
|
|
@@ -11799,19 +11818,19 @@ var Toast = /* @__PURE__ */ __name((props) => {
|
|
|
11799
11818
|
toast2.onDismiss == null ? void 0 : toast2.onDismiss.call(toast2, toast2);
|
|
11800
11819
|
},
|
|
11801
11820
|
className: cn2(classNames == null ? void 0 : classNames.closeButton, toast2 == null ? void 0 : (_toast_classNames2 = toast2.classNames) == null ? void 0 : _toast_classNames2.closeButton)
|
|
11802
|
-
}, (_icons_close = icons == null ? void 0 : icons.close) != null ? _icons_close : CloseIcon) : null, (toastType || toast2.icon || toast2.promise) && toast2.icon !== null && ((icons == null ? void 0 : icons[toastType]) !== null || toast2.icon) ? /* @__PURE__ */
|
|
11821
|
+
}, (_icons_close = icons == null ? void 0 : icons.close) != null ? _icons_close : CloseIcon) : null, (toastType || toast2.icon || toast2.promise) && toast2.icon !== null && ((icons == null ? void 0 : icons[toastType]) !== null || toast2.icon) ? /* @__PURE__ */ React40.createElement("div", {
|
|
11803
11822
|
"data-icon": "",
|
|
11804
11823
|
className: cn2(classNames == null ? void 0 : classNames.icon, toast2 == null ? void 0 : (_toast_classNames3 = toast2.classNames) == null ? void 0 : _toast_classNames3.icon)
|
|
11805
|
-
}, toast2.promise || toast2.type === "loading" && !toast2.icon ? toast2.icon || getLoadingIcon() : null, toast2.type !== "loading" ? icon : null) : null, /* @__PURE__ */
|
|
11824
|
+
}, toast2.promise || toast2.type === "loading" && !toast2.icon ? toast2.icon || getLoadingIcon() : null, toast2.type !== "loading" ? icon : null) : null, /* @__PURE__ */ React40.createElement("div", {
|
|
11806
11825
|
"data-content": "",
|
|
11807
11826
|
className: cn2(classNames == null ? void 0 : classNames.content, toast2 == null ? void 0 : (_toast_classNames4 = toast2.classNames) == null ? void 0 : _toast_classNames4.content)
|
|
11808
|
-
}, /* @__PURE__ */
|
|
11827
|
+
}, /* @__PURE__ */ React40.createElement("div", {
|
|
11809
11828
|
"data-title": "",
|
|
11810
11829
|
className: cn2(classNames == null ? void 0 : classNames.title, toast2 == null ? void 0 : (_toast_classNames5 = toast2.classNames) == null ? void 0 : _toast_classNames5.title)
|
|
11811
|
-
}, toast2.jsx ? toast2.jsx : typeof toast2.title === "function" ? toast2.title() : toast2.title), toast2.description ? /* @__PURE__ */
|
|
11830
|
+
}, toast2.jsx ? toast2.jsx : typeof toast2.title === "function" ? toast2.title() : toast2.title), toast2.description ? /* @__PURE__ */ React40.createElement("div", {
|
|
11812
11831
|
"data-description": "",
|
|
11813
11832
|
className: cn2(descriptionClassName, toastDescriptionClassname, classNames == null ? void 0 : classNames.description, toast2 == null ? void 0 : (_toast_classNames6 = toast2.classNames) == null ? void 0 : _toast_classNames6.description)
|
|
11814
|
-
}, typeof toast2.description === "function" ? toast2.description() : toast2.description) : null), /* @__PURE__ */
|
|
11833
|
+
}, typeof toast2.description === "function" ? toast2.description() : toast2.description) : null), /* @__PURE__ */ React40.isValidElement(toast2.cancel) ? toast2.cancel : toast2.cancel && isAction(toast2.cancel) ? /* @__PURE__ */ React40.createElement("button", {
|
|
11815
11834
|
"data-button": true,
|
|
11816
11835
|
"data-cancel": true,
|
|
11817
11836
|
style: toast2.cancelButtonStyle || cancelButtonStyle,
|
|
@@ -11822,7 +11841,7 @@ var Toast = /* @__PURE__ */ __name((props) => {
|
|
|
11822
11841
|
deleteToast();
|
|
11823
11842
|
}, "onClick"),
|
|
11824
11843
|
className: cn2(classNames == null ? void 0 : classNames.cancelButton, toast2 == null ? void 0 : (_toast_classNames7 = toast2.classNames) == null ? void 0 : _toast_classNames7.cancelButton)
|
|
11825
|
-
}, toast2.cancel.label) : null, /* @__PURE__ */
|
|
11844
|
+
}, toast2.cancel.label) : null, /* @__PURE__ */ React40.isValidElement(toast2.action) ? toast2.action : toast2.action && isAction(toast2.action) ? /* @__PURE__ */ React40.createElement("button", {
|
|
11826
11845
|
"data-button": true,
|
|
11827
11846
|
"data-action": true,
|
|
11828
11847
|
style: toast2.actionButtonStyle || actionButtonStyle,
|
|
@@ -11887,13 +11906,13 @@ function assignOffset(defaultOffset, mobileOffset) {
|
|
|
11887
11906
|
return styles;
|
|
11888
11907
|
}
|
|
11889
11908
|
__name(assignOffset, "assignOffset");
|
|
11890
|
-
var Toaster = /* @__PURE__ */
|
|
11909
|
+
var Toaster = /* @__PURE__ */ React40.forwardRef(/* @__PURE__ */ __name(function Toaster2(props, ref) {
|
|
11891
11910
|
const { id, invert, position = "bottom-right", hotkey = [
|
|
11892
11911
|
"altKey",
|
|
11893
11912
|
"KeyT"
|
|
11894
11913
|
], expand, closeButton, className, offset, mobileOffset, theme = "light", richColors, duration, style, visibleToasts = VISIBLE_TOASTS_AMOUNT, toastOptions, dir = getDocumentDirection(), gap = GAP, icons, containerAriaLabel = "Notifications" } = props;
|
|
11895
|
-
const [toasts, setToasts] =
|
|
11896
|
-
const filteredToasts =
|
|
11914
|
+
const [toasts, setToasts] = React40.useState([]);
|
|
11915
|
+
const filteredToasts = React40.useMemo(() => {
|
|
11897
11916
|
if (id) {
|
|
11898
11917
|
return toasts.filter((toast2) => toast2.toasterId === id);
|
|
11899
11918
|
}
|
|
@@ -11902,7 +11921,7 @@ var Toaster = /* @__PURE__ */ React39.forwardRef(/* @__PURE__ */ __name(function
|
|
|
11902
11921
|
toasts,
|
|
11903
11922
|
id
|
|
11904
11923
|
]);
|
|
11905
|
-
const possiblePositions =
|
|
11924
|
+
const possiblePositions = React40.useMemo(() => {
|
|
11906
11925
|
return Array.from(new Set([
|
|
11907
11926
|
position
|
|
11908
11927
|
].concat(filteredToasts.filter((toast2) => toast2.position).map((toast2) => toast2.position))));
|
|
@@ -11910,15 +11929,15 @@ var Toaster = /* @__PURE__ */ React39.forwardRef(/* @__PURE__ */ __name(function
|
|
|
11910
11929
|
filteredToasts,
|
|
11911
11930
|
position
|
|
11912
11931
|
]);
|
|
11913
|
-
const [heights, setHeights] =
|
|
11914
|
-
const [expanded, setExpanded] =
|
|
11915
|
-
const [interacting, setInteracting] =
|
|
11916
|
-
const [actualTheme, setActualTheme] =
|
|
11917
|
-
const listRef =
|
|
11932
|
+
const [heights, setHeights] = React40.useState([]);
|
|
11933
|
+
const [expanded, setExpanded] = React40.useState(false);
|
|
11934
|
+
const [interacting, setInteracting] = React40.useState(false);
|
|
11935
|
+
const [actualTheme, setActualTheme] = React40.useState(theme !== "system" ? theme : typeof window !== "undefined" ? window.matchMedia && window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light" : "light");
|
|
11936
|
+
const listRef = React40.useRef(null);
|
|
11918
11937
|
const hotkeyLabel = hotkey.join("+").replace(/Key/g, "").replace(/Digit/g, "");
|
|
11919
|
-
const lastFocusedElementRef =
|
|
11920
|
-
const isFocusWithinRef =
|
|
11921
|
-
const removeToast =
|
|
11938
|
+
const lastFocusedElementRef = React40.useRef(null);
|
|
11939
|
+
const isFocusWithinRef = React40.useRef(false);
|
|
11940
|
+
const removeToast = React40.useCallback((toastToRemove) => {
|
|
11922
11941
|
setToasts((toasts2) => {
|
|
11923
11942
|
var _toasts_find;
|
|
11924
11943
|
if (!((_toasts_find = toasts2.find((toast2) => toast2.id === toastToRemove.id)) == null ? void 0 : _toasts_find.delete)) {
|
|
@@ -11927,7 +11946,7 @@ var Toaster = /* @__PURE__ */ React39.forwardRef(/* @__PURE__ */ __name(function
|
|
|
11927
11946
|
return toasts2.filter(({ id: id2 }) => id2 !== toastToRemove.id);
|
|
11928
11947
|
});
|
|
11929
11948
|
}, []);
|
|
11930
|
-
|
|
11949
|
+
React40.useEffect(() => {
|
|
11931
11950
|
return ToastState.subscribe((toast2) => {
|
|
11932
11951
|
if (toast2.dismiss) {
|
|
11933
11952
|
requestAnimationFrame(() => {
|
|
@@ -11963,7 +11982,7 @@ var Toaster = /* @__PURE__ */ React39.forwardRef(/* @__PURE__ */ __name(function
|
|
|
11963
11982
|
}, [
|
|
11964
11983
|
toasts
|
|
11965
11984
|
]);
|
|
11966
|
-
|
|
11985
|
+
React40.useEffect(() => {
|
|
11967
11986
|
if (theme !== "system") {
|
|
11968
11987
|
setActualTheme(theme);
|
|
11969
11988
|
return;
|
|
@@ -12001,14 +12020,14 @@ var Toaster = /* @__PURE__ */ React39.forwardRef(/* @__PURE__ */ __name(function
|
|
|
12001
12020
|
}, [
|
|
12002
12021
|
theme
|
|
12003
12022
|
]);
|
|
12004
|
-
|
|
12023
|
+
React40.useEffect(() => {
|
|
12005
12024
|
if (toasts.length <= 1) {
|
|
12006
12025
|
setExpanded(false);
|
|
12007
12026
|
}
|
|
12008
12027
|
}, [
|
|
12009
12028
|
toasts
|
|
12010
12029
|
]);
|
|
12011
|
-
|
|
12030
|
+
React40.useEffect(() => {
|
|
12012
12031
|
const handleKeyDown = /* @__PURE__ */ __name((event) => {
|
|
12013
12032
|
var _listRef_current;
|
|
12014
12033
|
const isHotkeyPressed = hotkey.every((key) => event[key] || event.code === key);
|
|
@@ -12026,7 +12045,7 @@ var Toaster = /* @__PURE__ */ React39.forwardRef(/* @__PURE__ */ __name(function
|
|
|
12026
12045
|
}, [
|
|
12027
12046
|
hotkey
|
|
12028
12047
|
]);
|
|
12029
|
-
|
|
12048
|
+
React40.useEffect(() => {
|
|
12030
12049
|
if (listRef.current) {
|
|
12031
12050
|
return () => {
|
|
12032
12051
|
if (lastFocusedElementRef.current) {
|
|
@@ -12043,7 +12062,7 @@ var Toaster = /* @__PURE__ */ React39.forwardRef(/* @__PURE__ */ __name(function
|
|
|
12043
12062
|
]);
|
|
12044
12063
|
return (
|
|
12045
12064
|
// Remove item from normal navigation flow, only available via hotkey
|
|
12046
|
-
/* @__PURE__ */
|
|
12065
|
+
/* @__PURE__ */ React40.createElement("section", {
|
|
12047
12066
|
ref,
|
|
12048
12067
|
"aria-label": `${containerAriaLabel} ${hotkeyLabel}`,
|
|
12049
12068
|
tabIndex: -1,
|
|
@@ -12055,7 +12074,7 @@ var Toaster = /* @__PURE__ */ React39.forwardRef(/* @__PURE__ */ __name(function
|
|
|
12055
12074
|
var _heights_;
|
|
12056
12075
|
const [y, x] = position2.split("-");
|
|
12057
12076
|
if (!filteredToasts.length) return null;
|
|
12058
|
-
return /* @__PURE__ */
|
|
12077
|
+
return /* @__PURE__ */ React40.createElement("ol", {
|
|
12059
12078
|
key: position2,
|
|
12060
12079
|
dir: dir === "auto" ? getDocumentDirection() : dir,
|
|
12061
12080
|
tabIndex: -1,
|
|
@@ -12107,7 +12126,7 @@ var Toaster = /* @__PURE__ */ React39.forwardRef(/* @__PURE__ */ __name(function
|
|
|
12107
12126
|
onPointerUp: /* @__PURE__ */ __name(() => setInteracting(false), "onPointerUp")
|
|
12108
12127
|
}, filteredToasts.filter((toast2) => !toast2.position && index === 0 || toast2.position === position2).map((toast2, index2) => {
|
|
12109
12128
|
var _toastOptions_duration, _toastOptions_closeButton;
|
|
12110
|
-
return /* @__PURE__ */
|
|
12129
|
+
return /* @__PURE__ */ React40.createElement(Toast, {
|
|
12111
12130
|
key: toast2.id,
|
|
12112
12131
|
icons,
|
|
12113
12132
|
index: index2,
|
|
@@ -12143,7 +12162,7 @@ var Toaster = /* @__PURE__ */ React39.forwardRef(/* @__PURE__ */ __name(function
|
|
|
12143
12162
|
|
|
12144
12163
|
// components/ui/sonner.tsx
|
|
12145
12164
|
import { AlertTriangle, CheckCircle2, Info, Loader2 as Loader22, ServerCrash, X as X7 } from "lucide-react";
|
|
12146
|
-
import { jsx as
|
|
12165
|
+
import { jsx as jsx71 } from "react/jsx-runtime";
|
|
12147
12166
|
function Toaster3(props) {
|
|
12148
12167
|
const { theme = "system" } = useTheme3();
|
|
12149
12168
|
const {
|
|
@@ -12176,7 +12195,7 @@ function Toaster3(props) {
|
|
|
12176
12195
|
"![--warning-bg:color-mix(in srgb, var(--warning,var(--chart-3,var(--secondary))) 18%, var(--popover))] ![--warning-text:var(--foreground)] ![--warning-border:var(--border)]",
|
|
12177
12196
|
"![--error-bg:color-mix(in srgb, var(--destructive) 12%, var(--popover))] ![--error-text:var(--foreground)] ![--error-border:var(--border)]"
|
|
12178
12197
|
] : [];
|
|
12179
|
-
return /* @__PURE__ */
|
|
12198
|
+
return /* @__PURE__ */ jsx71(
|
|
12180
12199
|
Toaster,
|
|
12181
12200
|
{
|
|
12182
12201
|
theme,
|
|
@@ -12197,12 +12216,12 @@ function Toaster3(props) {
|
|
|
12197
12216
|
visibleToasts: visibleToasts ?? 3,
|
|
12198
12217
|
closeButton,
|
|
12199
12218
|
icons: {
|
|
12200
|
-
success: /* @__PURE__ */
|
|
12201
|
-
info: /* @__PURE__ */
|
|
12202
|
-
warning: /* @__PURE__ */
|
|
12203
|
-
error: /* @__PURE__ */
|
|
12204
|
-
loading: /* @__PURE__ */
|
|
12205
|
-
close: /* @__PURE__ */
|
|
12219
|
+
success: /* @__PURE__ */ jsx71(CheckCircle2, { className: "h-4 w-4", "aria-hidden": true }),
|
|
12220
|
+
info: /* @__PURE__ */ jsx71(Info, { className: "h-4 w-4", "aria-hidden": true }),
|
|
12221
|
+
warning: /* @__PURE__ */ jsx71(AlertTriangle, { className: "h-4 w-4", "aria-hidden": true }),
|
|
12222
|
+
error: /* @__PURE__ */ jsx71(ServerCrash, { className: "h-4 w-4", "aria-hidden": true }),
|
|
12223
|
+
loading: /* @__PURE__ */ jsx71(Loader22, { className: "h-4 w-4 animate-spin", "aria-hidden": true }),
|
|
12224
|
+
close: /* @__PURE__ */ jsx71(X7, { className: "h-4 w-4", "aria-hidden": true }),
|
|
12206
12225
|
...icons
|
|
12207
12226
|
},
|
|
12208
12227
|
toastOptions: {
|
|
@@ -12307,7 +12326,7 @@ __name(toastSemantic, "toastSemantic");
|
|
|
12307
12326
|
// components/ui/select-radix.tsx
|
|
12308
12327
|
import * as SelectPrimitive from "@radix-ui/react-select";
|
|
12309
12328
|
import { CircleCheck as CircleCheck2, ChevronDown as ChevronDown7, ChevronUp as ChevronUp2 } from "lucide-react";
|
|
12310
|
-
import { jsx as
|
|
12329
|
+
import { jsx as jsx72, jsxs as jsxs43 } from "react/jsx-runtime";
|
|
12311
12330
|
var SelectRoot = SelectPrimitive.Root;
|
|
12312
12331
|
var SelectGroup = SelectPrimitive.Group;
|
|
12313
12332
|
var SelectValue = SelectPrimitive.Value;
|
|
@@ -12334,7 +12353,7 @@ function SelectTrigger({
|
|
|
12334
12353
|
...props,
|
|
12335
12354
|
children: [
|
|
12336
12355
|
children,
|
|
12337
|
-
/* @__PURE__ */
|
|
12356
|
+
/* @__PURE__ */ jsx72(SelectPrimitive.Icon, { asChild: true, children: /* @__PURE__ */ jsx72(ChevronDown7, { className: "h-4 w-4 text-muted-foreground", "aria-hidden": true }) })
|
|
12338
12357
|
]
|
|
12339
12358
|
}
|
|
12340
12359
|
);
|
|
@@ -12346,7 +12365,7 @@ function SelectContent({
|
|
|
12346
12365
|
position = "popper",
|
|
12347
12366
|
...props
|
|
12348
12367
|
}) {
|
|
12349
|
-
return /* @__PURE__ */
|
|
12368
|
+
return /* @__PURE__ */ jsx72(SelectPrimitive.Portal, { children: /* @__PURE__ */ jsxs43(
|
|
12350
12369
|
SelectPrimitive.Content,
|
|
12351
12370
|
{
|
|
12352
12371
|
"data-slot": "select-content",
|
|
@@ -12361,8 +12380,8 @@ function SelectContent({
|
|
|
12361
12380
|
),
|
|
12362
12381
|
...props,
|
|
12363
12382
|
children: [
|
|
12364
|
-
/* @__PURE__ */
|
|
12365
|
-
/* @__PURE__ */
|
|
12383
|
+
/* @__PURE__ */ jsx72(SelectScrollUpButton, {}),
|
|
12384
|
+
/* @__PURE__ */ jsx72(
|
|
12366
12385
|
SelectPrimitive.Viewport,
|
|
12367
12386
|
{
|
|
12368
12387
|
className: cn(
|
|
@@ -12372,14 +12391,14 @@ function SelectContent({
|
|
|
12372
12391
|
children
|
|
12373
12392
|
}
|
|
12374
12393
|
),
|
|
12375
|
-
/* @__PURE__ */
|
|
12394
|
+
/* @__PURE__ */ jsx72(SelectScrollDownButton, {})
|
|
12376
12395
|
]
|
|
12377
12396
|
}
|
|
12378
12397
|
) });
|
|
12379
12398
|
}
|
|
12380
12399
|
__name(SelectContent, "SelectContent");
|
|
12381
12400
|
function SelectLabel({ className, ...props }) {
|
|
12382
|
-
return /* @__PURE__ */
|
|
12401
|
+
return /* @__PURE__ */ jsx72(
|
|
12383
12402
|
SelectPrimitive.Label,
|
|
12384
12403
|
{
|
|
12385
12404
|
"data-slot": "select-label",
|
|
@@ -12402,15 +12421,15 @@ function SelectItem({ className, children, ...props }) {
|
|
|
12402
12421
|
),
|
|
12403
12422
|
...props,
|
|
12404
12423
|
children: [
|
|
12405
|
-
/* @__PURE__ */
|
|
12406
|
-
/* @__PURE__ */
|
|
12424
|
+
/* @__PURE__ */ jsx72("span", { className: "absolute right-2 flex h-3.5 w-3.5 shrink-0 items-center justify-center", children: /* @__PURE__ */ jsx72(SelectPrimitive.ItemIndicator, { className: "inline-flex", children: /* @__PURE__ */ jsx72(CircleCheck2, { className: "h-4 w-4 text-foreground", "aria-hidden": true }) }) }),
|
|
12425
|
+
/* @__PURE__ */ jsx72(SelectPrimitive.ItemText, { children })
|
|
12407
12426
|
]
|
|
12408
12427
|
}
|
|
12409
12428
|
);
|
|
12410
12429
|
}
|
|
12411
12430
|
__name(SelectItem, "SelectItem");
|
|
12412
12431
|
function SelectSeparator({ className, ...props }) {
|
|
12413
|
-
return /* @__PURE__ */
|
|
12432
|
+
return /* @__PURE__ */ jsx72(
|
|
12414
12433
|
SelectPrimitive.Separator,
|
|
12415
12434
|
{
|
|
12416
12435
|
"data-slot": "select-separator",
|
|
@@ -12424,13 +12443,13 @@ function SelectScrollUpButton({
|
|
|
12424
12443
|
className,
|
|
12425
12444
|
...props
|
|
12426
12445
|
}) {
|
|
12427
|
-
return /* @__PURE__ */
|
|
12446
|
+
return /* @__PURE__ */ jsx72(
|
|
12428
12447
|
SelectPrimitive.ScrollUpButton,
|
|
12429
12448
|
{
|
|
12430
12449
|
"data-slot": "select-scroll-up-button",
|
|
12431
12450
|
className: cn("flex cursor-default items-center justify-center py-1 text-muted-foreground", className),
|
|
12432
12451
|
...props,
|
|
12433
|
-
children: /* @__PURE__ */
|
|
12452
|
+
children: /* @__PURE__ */ jsx72(ChevronUp2, { className: "h-4 w-4", "aria-hidden": true })
|
|
12434
12453
|
}
|
|
12435
12454
|
);
|
|
12436
12455
|
}
|
|
@@ -12439,22 +12458,22 @@ function SelectScrollDownButton({
|
|
|
12439
12458
|
className,
|
|
12440
12459
|
...props
|
|
12441
12460
|
}) {
|
|
12442
|
-
return /* @__PURE__ */
|
|
12461
|
+
return /* @__PURE__ */ jsx72(
|
|
12443
12462
|
SelectPrimitive.ScrollDownButton,
|
|
12444
12463
|
{
|
|
12445
12464
|
"data-slot": "select-scroll-down-button",
|
|
12446
12465
|
className: cn("flex cursor-default items-center justify-center py-1 text-muted-foreground", className),
|
|
12447
12466
|
...props,
|
|
12448
|
-
children: /* @__PURE__ */
|
|
12467
|
+
children: /* @__PURE__ */ jsx72(ChevronDown7, { className: "h-4 w-4", "aria-hidden": true })
|
|
12449
12468
|
}
|
|
12450
12469
|
);
|
|
12451
12470
|
}
|
|
12452
12471
|
__name(SelectScrollDownButton, "SelectScrollDownButton");
|
|
12453
12472
|
|
|
12454
12473
|
// components/ui/button-tooltip.tsx
|
|
12455
|
-
import * as
|
|
12474
|
+
import * as React41 from "react";
|
|
12456
12475
|
import { Transition as Transition2 } from "@headlessui/react";
|
|
12457
|
-
import { jsx as
|
|
12476
|
+
import { jsx as jsx73, jsxs as jsxs44 } from "react/jsx-runtime";
|
|
12458
12477
|
function ButtonTooltip({
|
|
12459
12478
|
children,
|
|
12460
12479
|
content,
|
|
@@ -12464,7 +12483,7 @@ function ButtonTooltip({
|
|
|
12464
12483
|
className,
|
|
12465
12484
|
disabled = false
|
|
12466
12485
|
}) {
|
|
12467
|
-
const [tooltipOpen, setTooltipOpen] =
|
|
12486
|
+
const [tooltipOpen, setTooltipOpen] = React41.useState(false);
|
|
12468
12487
|
const positionOuterClasses = /* @__PURE__ */ __name((pos) => {
|
|
12469
12488
|
switch (pos) {
|
|
12470
12489
|
case "right":
|
|
@@ -12513,7 +12532,7 @@ function ButtonTooltip({
|
|
|
12513
12532
|
}, "colorClasses");
|
|
12514
12533
|
const getArrowElement = /* @__PURE__ */ __name(() => {
|
|
12515
12534
|
if (position !== "bottom") return null;
|
|
12516
|
-
return /* @__PURE__ */
|
|
12535
|
+
return /* @__PURE__ */ jsx73(
|
|
12517
12536
|
"div",
|
|
12518
12537
|
{
|
|
12519
12538
|
className: cn(
|
|
@@ -12533,7 +12552,7 @@ function ButtonTooltip({
|
|
|
12533
12552
|
onBlur: () => setTooltipOpen(false),
|
|
12534
12553
|
children: [
|
|
12535
12554
|
children,
|
|
12536
|
-
/* @__PURE__ */
|
|
12555
|
+
/* @__PURE__ */ jsx73("div", { className: cn("z-50 absolute pointer-events-none", positionOuterClasses(position)), children: /* @__PURE__ */ jsxs44(
|
|
12537
12556
|
Transition2,
|
|
12538
12557
|
{
|
|
12539
12558
|
show: tooltipOpen && !disabled,
|
|
@@ -12568,10 +12587,10 @@ var Tooltip3 = ButtonTooltip;
|
|
|
12568
12587
|
import { Sun, Moon as Moon2, Upload, ExternalLink } from "lucide-react";
|
|
12569
12588
|
|
|
12570
12589
|
// components/theme-customizer/colors-panel.tsx
|
|
12571
|
-
import
|
|
12590
|
+
import React42 from "react";
|
|
12572
12591
|
|
|
12573
12592
|
// components/theme-customizer/color-input.tsx
|
|
12574
|
-
import { jsx as
|
|
12593
|
+
import { jsx as jsx74, jsxs as jsxs45 } from "react/jsx-runtime";
|
|
12575
12594
|
function ColorInput({ label, cssVar, value, onChange, className }) {
|
|
12576
12595
|
const swatchColor = value && value.trim() !== "" ? value : "transparent";
|
|
12577
12596
|
const showBorder = !swatchColor || swatchColor === "transparent";
|
|
@@ -12579,14 +12598,14 @@ function ColorInput({ label, cssVar, value, onChange, className }) {
|
|
|
12579
12598
|
onChange(cssVar, e.target.value);
|
|
12580
12599
|
}, "handleChange");
|
|
12581
12600
|
return /* @__PURE__ */ jsxs45("div", { className: cn("space-y-1.5", className), children: [
|
|
12582
|
-
/* @__PURE__ */
|
|
12601
|
+
/* @__PURE__ */ jsx74("label", { className: "text-xs font-medium text-muted-foreground", children: label }),
|
|
12583
12602
|
/* @__PURE__ */ jsxs45("div", { className: "flex items-center gap-2", children: [
|
|
12584
|
-
/* @__PURE__ */
|
|
12603
|
+
/* @__PURE__ */ jsx74(
|
|
12585
12604
|
"div",
|
|
12586
12605
|
{
|
|
12587
12606
|
className: "h-8 w-8 shrink-0 rounded-md border border-border bg-background overflow-hidden",
|
|
12588
12607
|
title: value,
|
|
12589
|
-
children: /* @__PURE__ */
|
|
12608
|
+
children: /* @__PURE__ */ jsx74(
|
|
12590
12609
|
"div",
|
|
12591
12610
|
{
|
|
12592
12611
|
className: "h-full w-full rounded-[calc(var(--radius)-1px)] border border-border",
|
|
@@ -12598,7 +12617,7 @@ function ColorInput({ label, cssVar, value, onChange, className }) {
|
|
|
12598
12617
|
)
|
|
12599
12618
|
}
|
|
12600
12619
|
),
|
|
12601
|
-
/* @__PURE__ */
|
|
12620
|
+
/* @__PURE__ */ jsx74(
|
|
12602
12621
|
Input,
|
|
12603
12622
|
{
|
|
12604
12623
|
type: "text",
|
|
@@ -12615,7 +12634,7 @@ function ColorInput({ label, cssVar, value, onChange, className }) {
|
|
|
12615
12634
|
__name(ColorInput, "ColorInput");
|
|
12616
12635
|
|
|
12617
12636
|
// components/theme-customizer/colors-panel.tsx
|
|
12618
|
-
import { jsx as
|
|
12637
|
+
import { jsx as jsx75, jsxs as jsxs46 } from "react/jsx-runtime";
|
|
12619
12638
|
function getComputedColorValues() {
|
|
12620
12639
|
if (typeof document === "undefined") return {};
|
|
12621
12640
|
const root = document.documentElement;
|
|
@@ -12633,22 +12652,22 @@ function getComputedColorValues() {
|
|
|
12633
12652
|
__name(getComputedColorValues, "getComputedColorValues");
|
|
12634
12653
|
function ColorsPanel({ selectedTheme, isDarkMode } = {}) {
|
|
12635
12654
|
const { handleColorChange: handleColorChange2 } = useThemeManager();
|
|
12636
|
-
const [colorValues, setColorValues] =
|
|
12637
|
-
const [validationErrors, setValidationErrors] =
|
|
12638
|
-
const [openGroups, setOpenGroups] =
|
|
12655
|
+
const [colorValues, setColorValues] = React42.useState({});
|
|
12656
|
+
const [validationErrors, setValidationErrors] = React42.useState({});
|
|
12657
|
+
const [openGroups, setOpenGroups] = React42.useState(() => {
|
|
12639
12658
|
const o = {};
|
|
12640
12659
|
colorGroups.forEach((g) => {
|
|
12641
12660
|
o[g.title] = true;
|
|
12642
12661
|
});
|
|
12643
12662
|
return o;
|
|
12644
12663
|
});
|
|
12645
|
-
const refreshValues =
|
|
12664
|
+
const refreshValues = React42.useCallback(() => {
|
|
12646
12665
|
setColorValues(getComputedColorValues());
|
|
12647
12666
|
}, []);
|
|
12648
|
-
|
|
12667
|
+
React42.useEffect(() => {
|
|
12649
12668
|
refreshValues();
|
|
12650
12669
|
}, [refreshValues, selectedTheme, isDarkMode]);
|
|
12651
|
-
const handleChange =
|
|
12670
|
+
const handleChange = React42.useCallback(
|
|
12652
12671
|
(cssVar, value) => {
|
|
12653
12672
|
const validation = validateColorValue(value);
|
|
12654
12673
|
if (validation.isValid) {
|
|
@@ -12671,14 +12690,14 @@ function ColorsPanel({ selectedTheme, isDarkMode } = {}) {
|
|
|
12671
12690
|
const toggleGroup = /* @__PURE__ */ __name((title) => {
|
|
12672
12691
|
setOpenGroups((prev) => ({ ...prev, [title]: !prev[title] }));
|
|
12673
12692
|
}, "toggleGroup");
|
|
12674
|
-
return /* @__PURE__ */
|
|
12693
|
+
return /* @__PURE__ */ jsx75("div", { className: "space-y-3 pt-5 pb-2", children: colorGroups.map((group) => /* @__PURE__ */ jsx75(
|
|
12675
12694
|
CollapsibleSection,
|
|
12676
12695
|
{
|
|
12677
12696
|
title: group.title,
|
|
12678
12697
|
open: openGroups[group.title] !== false,
|
|
12679
12698
|
onToggle: () => toggleGroup(group.title),
|
|
12680
12699
|
children: group.colors.map((color) => /* @__PURE__ */ jsxs46("div", { className: "space-y-1", children: [
|
|
12681
|
-
/* @__PURE__ */
|
|
12700
|
+
/* @__PURE__ */ jsx75(
|
|
12682
12701
|
ColorInput,
|
|
12683
12702
|
{
|
|
12684
12703
|
label: color.name,
|
|
@@ -12688,7 +12707,7 @@ function ColorsPanel({ selectedTheme, isDarkMode } = {}) {
|
|
|
12688
12707
|
className: validationErrors[color.cssVar] ? "border-destructive" : ""
|
|
12689
12708
|
}
|
|
12690
12709
|
),
|
|
12691
|
-
validationErrors[color.cssVar] && /* @__PURE__ */
|
|
12710
|
+
validationErrors[color.cssVar] && /* @__PURE__ */ jsx75("p", { className: "text-xs text-destructive px-1", children: validationErrors[color.cssVar] })
|
|
12692
12711
|
] }, color.cssVar))
|
|
12693
12712
|
},
|
|
12694
12713
|
group.title
|
|
@@ -12697,7 +12716,7 @@ function ColorsPanel({ selectedTheme, isDarkMode } = {}) {
|
|
|
12697
12716
|
__name(ColorsPanel, "ColorsPanel");
|
|
12698
12717
|
|
|
12699
12718
|
// components/theme-customizer/theme-tab.tsx
|
|
12700
|
-
import { Fragment as Fragment6, jsx as
|
|
12719
|
+
import { Fragment as Fragment6, jsx as jsx76, jsxs as jsxs47 } from "react/jsx-runtime";
|
|
12701
12720
|
function ThemeTab({
|
|
12702
12721
|
selectedTheme,
|
|
12703
12722
|
setSelectedTheme,
|
|
@@ -12742,24 +12761,24 @@ function ThemeTab({
|
|
|
12742
12761
|
children: [
|
|
12743
12762
|
showPreset && /* @__PURE__ */ jsxs47(Fragment6, { children: [
|
|
12744
12763
|
/* @__PURE__ */ jsxs47("div", { className: "space-y-3", children: [
|
|
12745
|
-
/* @__PURE__ */
|
|
12746
|
-
/* @__PURE__ */
|
|
12764
|
+
/* @__PURE__ */ jsx76("label", { className: "text-sm font-medium", children: "Mindtris UI" }),
|
|
12765
|
+
/* @__PURE__ */ jsx76(
|
|
12747
12766
|
Select,
|
|
12748
12767
|
{
|
|
12749
12768
|
value: selectedTheme,
|
|
12750
12769
|
onChange: (e) => handleThemeSelect(e.target.value),
|
|
12751
|
-
children: colorThemes.map((theme) => /* @__PURE__ */
|
|
12770
|
+
children: colorThemes.map((theme) => /* @__PURE__ */ jsx76("option", { value: theme.value, children: theme.name }, theme.value))
|
|
12752
12771
|
}
|
|
12753
12772
|
)
|
|
12754
12773
|
] }),
|
|
12755
|
-
variant === "full" && /* @__PURE__ */
|
|
12774
|
+
variant === "full" && /* @__PURE__ */ jsx76("div", { className: "border-t border-border" })
|
|
12756
12775
|
] }),
|
|
12757
|
-
showColors && hidePreset && /* @__PURE__ */
|
|
12776
|
+
showColors && hidePreset && /* @__PURE__ */ jsx76(ColorsPanel, { selectedTheme, isDarkMode }),
|
|
12758
12777
|
showOthers && /* @__PURE__ */ jsxs47(Fragment6, { children: [
|
|
12759
|
-
variant === "full" && /* @__PURE__ */
|
|
12778
|
+
variant === "full" && /* @__PURE__ */ jsx76("div", { className: "border-t border-border" }),
|
|
12760
12779
|
/* @__PURE__ */ jsxs47("div", { className: "space-y-3", children: [
|
|
12761
|
-
/* @__PURE__ */
|
|
12762
|
-
/* @__PURE__ */
|
|
12780
|
+
/* @__PURE__ */ jsx76("label", { className: "text-sm font-medium", children: "Radius" }),
|
|
12781
|
+
/* @__PURE__ */ jsx76("div", { className: "grid grid-cols-5 gap-2", children: radiusOptions.map((option) => /* @__PURE__ */ jsx76(
|
|
12763
12782
|
"button",
|
|
12764
12783
|
{
|
|
12765
12784
|
onClick: () => handleRadiusSelect(option.value),
|
|
@@ -12772,9 +12791,9 @@ function ThemeTab({
|
|
|
12772
12791
|
option.value
|
|
12773
12792
|
)) })
|
|
12774
12793
|
] }),
|
|
12775
|
-
/* @__PURE__ */
|
|
12794
|
+
/* @__PURE__ */ jsx76("div", { className: "border-t border-border" }),
|
|
12776
12795
|
/* @__PURE__ */ jsxs47("div", { className: "space-y-3", children: [
|
|
12777
|
-
/* @__PURE__ */
|
|
12796
|
+
/* @__PURE__ */ jsx76("label", { className: "text-sm font-medium", children: "Mode" }),
|
|
12778
12797
|
/* @__PURE__ */ jsxs47("div", { className: "grid grid-cols-2 gap-2", children: [
|
|
12779
12798
|
/* @__PURE__ */ jsxs47(
|
|
12780
12799
|
"button",
|
|
@@ -12785,7 +12804,7 @@ function ThemeTab({
|
|
|
12785
12804
|
${!isDarkMode ? "bg-muted text-foreground" : "bg-card border border-border hover:bg-muted text-foreground"}
|
|
12786
12805
|
`,
|
|
12787
12806
|
children: [
|
|
12788
|
-
/* @__PURE__ */
|
|
12807
|
+
/* @__PURE__ */ jsx76(Sun, { className: "w-4 h-4" }),
|
|
12789
12808
|
"Light"
|
|
12790
12809
|
]
|
|
12791
12810
|
}
|
|
@@ -12799,34 +12818,34 @@ function ThemeTab({
|
|
|
12799
12818
|
${isDarkMode ? "bg-muted text-foreground" : "bg-card border border-border hover:bg-muted text-foreground"}
|
|
12800
12819
|
`,
|
|
12801
12820
|
children: [
|
|
12802
|
-
/* @__PURE__ */
|
|
12821
|
+
/* @__PURE__ */ jsx76(Moon2, { className: "w-4 h-4" }),
|
|
12803
12822
|
"Dark"
|
|
12804
12823
|
]
|
|
12805
12824
|
}
|
|
12806
12825
|
)
|
|
12807
12826
|
] })
|
|
12808
12827
|
] }),
|
|
12809
|
-
/* @__PURE__ */
|
|
12810
|
-
/* @__PURE__ */
|
|
12828
|
+
/* @__PURE__ */ jsx76("div", { className: "border-t border-border" }),
|
|
12829
|
+
/* @__PURE__ */ jsx76("div", { className: "space-y-3", children: /* @__PURE__ */ jsxs47(
|
|
12811
12830
|
"button",
|
|
12812
12831
|
{
|
|
12813
12832
|
onClick: onImportClick,
|
|
12814
12833
|
className: "w-full flex items-center justify-center gap-2 px-4 py-2 border border-border rounded-md hover:bg-muted transition-colors",
|
|
12815
12834
|
children: [
|
|
12816
|
-
/* @__PURE__ */
|
|
12835
|
+
/* @__PURE__ */ jsx76(Upload, { className: "w-4 h-4" }),
|
|
12817
12836
|
"Import Theme"
|
|
12818
12837
|
]
|
|
12819
12838
|
}
|
|
12820
12839
|
) })
|
|
12821
12840
|
] }),
|
|
12822
12841
|
variant === "full" && /* @__PURE__ */ jsxs47(Fragment6, { children: [
|
|
12823
|
-
/* @__PURE__ */
|
|
12842
|
+
/* @__PURE__ */ jsx76("div", { className: "border-t border-border" }),
|
|
12824
12843
|
/* @__PURE__ */ jsxs47("div", { className: "p-4 bg-muted rounded-lg space-y-3", children: [
|
|
12825
|
-
/* @__PURE__ */
|
|
12844
|
+
/* @__PURE__ */ jsx76("div", { className: "flex items-center gap-2", children: /* @__PURE__ */ jsx76("span", { className: "text-sm font-medium", children: "Advanced Customization" }) }),
|
|
12826
12845
|
/* @__PURE__ */ jsxs47("p", { className: "text-xs text-muted-foreground", children: [
|
|
12827
12846
|
"For advanced theme customization with real-time preview, visit",
|
|
12828
12847
|
" ",
|
|
12829
|
-
/* @__PURE__ */
|
|
12848
|
+
/* @__PURE__ */ jsx76(
|
|
12830
12849
|
"a",
|
|
12831
12850
|
{
|
|
12832
12851
|
href: "https://tweakcn.com/editor/theme",
|
|
@@ -12843,7 +12862,7 @@ function ThemeTab({
|
|
|
12843
12862
|
className: "w-full flex items-center justify-center gap-2 px-4 py-2 border border-border rounded-md hover:bg-muted/70 transition-colors text-sm",
|
|
12844
12863
|
onClick: () => typeof window !== "undefined" && window.open("https://tweakcn.com/editor/theme", "_blank"),
|
|
12845
12864
|
children: [
|
|
12846
|
-
/* @__PURE__ */
|
|
12865
|
+
/* @__PURE__ */ jsx76(ExternalLink, { className: "w-4 h-4" }),
|
|
12847
12866
|
"Open Tweakcn"
|
|
12848
12867
|
]
|
|
12849
12868
|
}
|
|
@@ -12857,7 +12876,7 @@ function ThemeTab({
|
|
|
12857
12876
|
__name(ThemeTab, "ThemeTab");
|
|
12858
12877
|
|
|
12859
12878
|
// components/theme-customizer/layout-tab.tsx
|
|
12860
|
-
import { Fragment as Fragment7, jsx as
|
|
12879
|
+
import { Fragment as Fragment7, jsx as jsx77, jsxs as jsxs48 } from "react/jsx-runtime";
|
|
12861
12880
|
function LayoutTab({ sidebarConfig, onSidebarConfigChange }) {
|
|
12862
12881
|
const config = sidebarConfig || {
|
|
12863
12882
|
variant: "inset",
|
|
@@ -12876,21 +12895,21 @@ function LayoutTab({ sidebarConfig, onSidebarConfigChange }) {
|
|
|
12876
12895
|
return /* @__PURE__ */ jsxs48("div", { className: "space-y-4", children: [
|
|
12877
12896
|
/* @__PURE__ */ jsxs48("p", { className: "text-xs text-muted-foreground", children: [
|
|
12878
12897
|
"These options apply only when your app wires ",
|
|
12879
|
-
/* @__PURE__ */
|
|
12898
|
+
/* @__PURE__ */ jsx77("code", { className: "text-[10px]", children: "sidebarConfig" }),
|
|
12880
12899
|
" and ",
|
|
12881
|
-
/* @__PURE__ */
|
|
12900
|
+
/* @__PURE__ */ jsx77("code", { className: "text-[10px]", children: "onSidebarConfigChange" }),
|
|
12882
12901
|
" to the layout."
|
|
12883
12902
|
] }),
|
|
12884
12903
|
/* @__PURE__ */ jsxs48("div", { className: "space-y-3", children: [
|
|
12885
12904
|
/* @__PURE__ */ jsxs48("div", { children: [
|
|
12886
|
-
/* @__PURE__ */
|
|
12905
|
+
/* @__PURE__ */ jsx77("label", { className: "text-sm font-medium", children: "Sidebar Variant" }),
|
|
12887
12906
|
config.variant && /* @__PURE__ */ jsxs48("p", { className: "text-xs text-muted-foreground mt-1", children: [
|
|
12888
12907
|
config.variant === "sidebar" && "Default: Standard sidebar layout",
|
|
12889
12908
|
config.variant === "floating" && "Floating: Floating sidebar with border",
|
|
12890
12909
|
config.variant === "inset" && "Inset: Inset sidebar with rounded corners"
|
|
12891
12910
|
] })
|
|
12892
12911
|
] }),
|
|
12893
|
-
/* @__PURE__ */
|
|
12912
|
+
/* @__PURE__ */ jsx77("div", { className: "grid grid-cols-3 gap-3", children: sidebarVariants.map((variant) => /* @__PURE__ */ jsx77(
|
|
12894
12913
|
"div",
|
|
12895
12914
|
{
|
|
12896
12915
|
onClick: () => handleSidebarVariantSelect(variant.value),
|
|
@@ -12899,21 +12918,21 @@ function LayoutTab({ sidebarConfig, onSidebarConfigChange }) {
|
|
|
12899
12918
|
${config.variant === variant.value ? "border-primary bg-primary/10" : "border-border hover:border-border/80"}
|
|
12900
12919
|
`,
|
|
12901
12920
|
children: /* @__PURE__ */ jsxs48("div", { className: "space-y-2", children: [
|
|
12902
|
-
/* @__PURE__ */
|
|
12921
|
+
/* @__PURE__ */ jsx77("div", { className: "text-xs font-semibold text-center", children: variant.name }),
|
|
12903
12922
|
/* @__PURE__ */ jsxs48("div", { className: `flex h-12 rounded border border-border ${variant.value === "inset" ? "bg-muted" : "bg-card"}`, children: [
|
|
12904
12923
|
/* @__PURE__ */ jsxs48(
|
|
12905
12924
|
"div",
|
|
12906
12925
|
{
|
|
12907
12926
|
className: `w-3 flex-shrink-0 bg-muted/70 flex flex-col gap-0.5 p-1 ${variant.value === "floating" ? "border-r m-1 rounded" : variant.value === "inset" ? "m-1 ms-0 rounded bg-muted/70" : "border-r"}`,
|
|
12908
12927
|
children: [
|
|
12909
|
-
/* @__PURE__ */
|
|
12910
|
-
/* @__PURE__ */
|
|
12911
|
-
/* @__PURE__ */
|
|
12912
|
-
/* @__PURE__ */
|
|
12928
|
+
/* @__PURE__ */ jsx77("div", { className: "h-0.5 w-full bg-muted-foreground/70 rounded" }),
|
|
12929
|
+
/* @__PURE__ */ jsx77("div", { className: "h-0.5 w-3/4 bg-muted-foreground/60 rounded" }),
|
|
12930
|
+
/* @__PURE__ */ jsx77("div", { className: "h-0.5 w-2/3 bg-muted-foreground/50 rounded" }),
|
|
12931
|
+
/* @__PURE__ */ jsx77("div", { className: "h-0.5 w-3/4 bg-muted-foreground/40 rounded" })
|
|
12913
12932
|
]
|
|
12914
12933
|
}
|
|
12915
12934
|
),
|
|
12916
|
-
/* @__PURE__ */
|
|
12935
|
+
/* @__PURE__ */ jsx77("div", { className: `flex-1 ${variant.value === "inset" ? "bg-card ms-0" : "bg-muted"} m-1 rounded-sm border-dashed border border-border` })
|
|
12917
12936
|
] })
|
|
12918
12937
|
] })
|
|
12919
12938
|
},
|
|
@@ -12922,14 +12941,14 @@ function LayoutTab({ sidebarConfig, onSidebarConfigChange }) {
|
|
|
12922
12941
|
] }),
|
|
12923
12942
|
/* @__PURE__ */ jsxs48("div", { className: "space-y-3", children: [
|
|
12924
12943
|
/* @__PURE__ */ jsxs48("div", { children: [
|
|
12925
|
-
/* @__PURE__ */
|
|
12944
|
+
/* @__PURE__ */ jsx77("label", { className: "text-sm font-medium", children: "Sidebar Collapsible Mode" }),
|
|
12926
12945
|
config.collapsible && /* @__PURE__ */ jsxs48("p", { className: "text-xs text-muted-foreground mt-1", children: [
|
|
12927
12946
|
config.collapsible === "offcanvas" && "Off Canvas: Slides out of view",
|
|
12928
12947
|
config.collapsible === "icon" && "Icon: Collapses to icon only",
|
|
12929
12948
|
config.collapsible === "none" && "None: Always visible"
|
|
12930
12949
|
] })
|
|
12931
12950
|
] }),
|
|
12932
|
-
/* @__PURE__ */
|
|
12951
|
+
/* @__PURE__ */ jsx77("div", { className: "grid grid-cols-3 gap-3", children: sidebarCollapsibleOptions.map((option) => /* @__PURE__ */ jsx77(
|
|
12933
12952
|
"div",
|
|
12934
12953
|
{
|
|
12935
12954
|
onClick: () => handleSidebarCollapsibleSelect(option.value),
|
|
@@ -12938,26 +12957,26 @@ function LayoutTab({ sidebarConfig, onSidebarConfigChange }) {
|
|
|
12938
12957
|
${config.collapsible === option.value ? "border-primary bg-primary/10" : "border-border hover:border-border/80"}
|
|
12939
12958
|
`,
|
|
12940
12959
|
children: /* @__PURE__ */ jsxs48("div", { className: "space-y-2", children: [
|
|
12941
|
-
/* @__PURE__ */
|
|
12942
|
-
/* @__PURE__ */
|
|
12943
|
-
/* @__PURE__ */
|
|
12944
|
-
/* @__PURE__ */
|
|
12945
|
-
/* @__PURE__ */
|
|
12960
|
+
/* @__PURE__ */ jsx77("div", { className: "text-xs font-semibold text-center", children: option.name }),
|
|
12961
|
+
/* @__PURE__ */ jsx77("div", { className: "flex h-12 rounded border border-border bg-card", children: option.value === "offcanvas" ? /* @__PURE__ */ jsx77("div", { className: "flex-1 bg-muted m-1 rounded-sm border-dashed border border-border flex items-center justify-start pl-2", children: /* @__PURE__ */ jsxs48("div", { className: "flex flex-col gap-0.5", children: [
|
|
12962
|
+
/* @__PURE__ */ jsx77("div", { className: "w-3 h-0.5 bg-muted-foreground/70 rounded" }),
|
|
12963
|
+
/* @__PURE__ */ jsx77("div", { className: "w-3 h-0.5 bg-muted-foreground/70 rounded" }),
|
|
12964
|
+
/* @__PURE__ */ jsx77("div", { className: "w-3 h-0.5 bg-muted-foreground/70 rounded" })
|
|
12946
12965
|
] }) }) : option.value === "icon" ? /* @__PURE__ */ jsxs48(Fragment7, { children: [
|
|
12947
12966
|
/* @__PURE__ */ jsxs48("div", { className: "w-4 flex-shrink-0 bg-muted/70 flex flex-col gap-1 p-1 border-r border-border items-center", children: [
|
|
12948
|
-
/* @__PURE__ */
|
|
12949
|
-
/* @__PURE__ */
|
|
12950
|
-
/* @__PURE__ */
|
|
12967
|
+
/* @__PURE__ */ jsx77("div", { className: "w-2 h-2 bg-muted-foreground/70 rounded-sm" }),
|
|
12968
|
+
/* @__PURE__ */ jsx77("div", { className: "w-2 h-2 bg-muted-foreground/60 rounded-sm" }),
|
|
12969
|
+
/* @__PURE__ */ jsx77("div", { className: "w-2 h-2 bg-muted-foreground/50 rounded-sm" })
|
|
12951
12970
|
] }),
|
|
12952
|
-
/* @__PURE__ */
|
|
12971
|
+
/* @__PURE__ */ jsx77("div", { className: "flex-1 bg-muted m-1 rounded-sm border-dashed border border-border" })
|
|
12953
12972
|
] }) : /* @__PURE__ */ jsxs48(Fragment7, { children: [
|
|
12954
12973
|
/* @__PURE__ */ jsxs48("div", { className: "w-6 flex-shrink-0 bg-muted/70 flex flex-col gap-0.5 p-1 border-r border-border", children: [
|
|
12955
|
-
/* @__PURE__ */
|
|
12956
|
-
/* @__PURE__ */
|
|
12957
|
-
/* @__PURE__ */
|
|
12958
|
-
/* @__PURE__ */
|
|
12974
|
+
/* @__PURE__ */ jsx77("div", { className: "h-0.5 w-full bg-muted-foreground/70 rounded" }),
|
|
12975
|
+
/* @__PURE__ */ jsx77("div", { className: "h-0.5 w-3/4 bg-muted-foreground/60 rounded" }),
|
|
12976
|
+
/* @__PURE__ */ jsx77("div", { className: "h-0.5 w-2/3 bg-muted-foreground/50 rounded" }),
|
|
12977
|
+
/* @__PURE__ */ jsx77("div", { className: "h-0.5 w-3/4 bg-muted-foreground/40 rounded" })
|
|
12959
12978
|
] }),
|
|
12960
|
-
/* @__PURE__ */
|
|
12979
|
+
/* @__PURE__ */ jsx77("div", { className: "flex-1 bg-muted m-1 rounded-sm border-dashed border border-border" })
|
|
12961
12980
|
] }) })
|
|
12962
12981
|
] })
|
|
12963
12982
|
},
|
|
@@ -12966,13 +12985,13 @@ function LayoutTab({ sidebarConfig, onSidebarConfigChange }) {
|
|
|
12966
12985
|
] }),
|
|
12967
12986
|
/* @__PURE__ */ jsxs48("div", { className: "space-y-3", children: [
|
|
12968
12987
|
/* @__PURE__ */ jsxs48("div", { children: [
|
|
12969
|
-
/* @__PURE__ */
|
|
12988
|
+
/* @__PURE__ */ jsx77("label", { className: "text-sm font-medium", children: "Sidebar Position" }),
|
|
12970
12989
|
config.side && /* @__PURE__ */ jsxs48("p", { className: "text-xs text-muted-foreground mt-1", children: [
|
|
12971
12990
|
config.side === "left" && "Left: Sidebar positioned on the left side",
|
|
12972
12991
|
config.side === "right" && "Right: Sidebar positioned on the right side"
|
|
12973
12992
|
] })
|
|
12974
12993
|
] }),
|
|
12975
|
-
/* @__PURE__ */
|
|
12994
|
+
/* @__PURE__ */ jsx77("div", { className: "grid grid-cols-2 gap-3", children: sidebarSideOptions.map((side) => /* @__PURE__ */ jsx77(
|
|
12976
12995
|
"div",
|
|
12977
12996
|
{
|
|
12978
12997
|
onClick: () => handleSidebarSideSelect(side.value),
|
|
@@ -12981,22 +13000,22 @@ function LayoutTab({ sidebarConfig, onSidebarConfigChange }) {
|
|
|
12981
13000
|
${config.side === side.value ? "border-primary bg-primary/10" : "border-border hover:border-border/80"}
|
|
12982
13001
|
`,
|
|
12983
13002
|
children: /* @__PURE__ */ jsxs48("div", { className: "space-y-2", children: [
|
|
12984
|
-
/* @__PURE__ */
|
|
12985
|
-
/* @__PURE__ */
|
|
13003
|
+
/* @__PURE__ */ jsx77("div", { className: "text-xs font-semibold text-center", children: side.name }),
|
|
13004
|
+
/* @__PURE__ */ jsx77("div", { className: "flex h-12 rounded border border-border bg-card", children: side.value === "left" ? /* @__PURE__ */ jsxs48(Fragment7, { children: [
|
|
12986
13005
|
/* @__PURE__ */ jsxs48("div", { className: "w-6 flex-shrink-0 bg-muted/70 flex flex-col gap-0.5 p-1 border-r border-border", children: [
|
|
12987
|
-
/* @__PURE__ */
|
|
12988
|
-
/* @__PURE__ */
|
|
12989
|
-
/* @__PURE__ */
|
|
12990
|
-
/* @__PURE__ */
|
|
13006
|
+
/* @__PURE__ */ jsx77("div", { className: "h-0.5 w-full bg-muted-foreground/70 rounded" }),
|
|
13007
|
+
/* @__PURE__ */ jsx77("div", { className: "h-0.5 w-3/4 bg-muted-foreground/60 rounded" }),
|
|
13008
|
+
/* @__PURE__ */ jsx77("div", { className: "h-0.5 w-2/3 bg-muted-foreground/50 rounded" }),
|
|
13009
|
+
/* @__PURE__ */ jsx77("div", { className: "h-0.5 w-3/4 bg-muted-foreground/40 rounded" })
|
|
12991
13010
|
] }),
|
|
12992
|
-
/* @__PURE__ */
|
|
13011
|
+
/* @__PURE__ */ jsx77("div", { className: "flex-1 bg-muted m-1 rounded-sm border-dashed border border-border" })
|
|
12993
13012
|
] }) : /* @__PURE__ */ jsxs48(Fragment7, { children: [
|
|
12994
|
-
/* @__PURE__ */
|
|
13013
|
+
/* @__PURE__ */ jsx77("div", { className: "flex-1 bg-muted m-1 rounded-sm border-dashed border border-border" }),
|
|
12995
13014
|
/* @__PURE__ */ jsxs48("div", { className: "w-6 flex-shrink-0 bg-muted/70 flex flex-col gap-0.5 p-1 border-l border-border", children: [
|
|
12996
|
-
/* @__PURE__ */
|
|
12997
|
-
/* @__PURE__ */
|
|
12998
|
-
/* @__PURE__ */
|
|
12999
|
-
/* @__PURE__ */
|
|
13015
|
+
/* @__PURE__ */ jsx77("div", { className: "h-0.5 w-full bg-muted-foreground/70 rounded" }),
|
|
13016
|
+
/* @__PURE__ */ jsx77("div", { className: "h-0.5 w-3/4 bg-muted-foreground/60 rounded" }),
|
|
13017
|
+
/* @__PURE__ */ jsx77("div", { className: "h-0.5 w-2/3 bg-muted-foreground/50 rounded" }),
|
|
13018
|
+
/* @__PURE__ */ jsx77("div", { className: "h-0.5 w-3/4 bg-muted-foreground/40 rounded" })
|
|
13000
13019
|
] })
|
|
13001
13020
|
] }) })
|
|
13002
13021
|
] })
|
|
@@ -13009,8 +13028,8 @@ function LayoutTab({ sidebarConfig, onSidebarConfigChange }) {
|
|
|
13009
13028
|
__name(LayoutTab, "LayoutTab");
|
|
13010
13029
|
|
|
13011
13030
|
// components/theme-customizer/other-panel.tsx
|
|
13012
|
-
import
|
|
13013
|
-
import { jsx as
|
|
13031
|
+
import React43 from "react";
|
|
13032
|
+
import { jsx as jsx78, jsxs as jsxs49 } from "react/jsx-runtime";
|
|
13014
13033
|
function getComputedOtherValues() {
|
|
13015
13034
|
if (typeof document === "undefined") return {};
|
|
13016
13035
|
const root = document.documentElement;
|
|
@@ -13046,21 +13065,21 @@ function OtherPanel({
|
|
|
13046
13065
|
onSidebarConfigChange
|
|
13047
13066
|
}) {
|
|
13048
13067
|
const { applyRadius: applyRadius2, setTheme, isDarkMode, handleColorChange: handleColorChange2 } = useThemeManager();
|
|
13049
|
-
const [hslOpen, setHslOpen] =
|
|
13050
|
-
const [hslPresetsOpen, setHslPresetsOpen] =
|
|
13051
|
-
const [radiusOpen, setRadiusOpen] =
|
|
13052
|
-
const [spacingOpen, setSpacingOpen] =
|
|
13053
|
-
const [shadowOpen, setShadowOpen] =
|
|
13054
|
-
const [values, setValues] =
|
|
13055
|
-
const [uncontrolledRadius, setUncontrolledRadius] =
|
|
13068
|
+
const [hslOpen, setHslOpen] = React43.useState(true);
|
|
13069
|
+
const [hslPresetsOpen, setHslPresetsOpen] = React43.useState(true);
|
|
13070
|
+
const [radiusOpen, setRadiusOpen] = React43.useState(true);
|
|
13071
|
+
const [spacingOpen, setSpacingOpen] = React43.useState(true);
|
|
13072
|
+
const [shadowOpen, setShadowOpen] = React43.useState(true);
|
|
13073
|
+
const [values, setValues] = React43.useState({});
|
|
13074
|
+
const [uncontrolledRadius, setUncontrolledRadius] = React43.useState("");
|
|
13056
13075
|
const effectiveRadius = selectedRadius ?? uncontrolledRadius;
|
|
13057
|
-
|
|
13076
|
+
React43.useEffect(() => {
|
|
13058
13077
|
setValues(getComputedOtherValues());
|
|
13059
13078
|
if (selectedRadius == null) {
|
|
13060
13079
|
setUncontrolledRadius(getComputedRadius());
|
|
13061
13080
|
}
|
|
13062
13081
|
}, [isDarkMode, selectedRadius]);
|
|
13063
|
-
|
|
13082
|
+
React43.useEffect(() => {
|
|
13064
13083
|
if (typeof document === "undefined") return;
|
|
13065
13084
|
const root = document.documentElement;
|
|
13066
13085
|
const refresh = /* @__PURE__ */ __name(() => {
|
|
@@ -13074,7 +13093,7 @@ function OtherPanel({
|
|
|
13074
13093
|
obs.observe(root, { attributes: true, attributeFilter: ["style", "class"] });
|
|
13075
13094
|
return () => obs.disconnect();
|
|
13076
13095
|
}, [selectedRadius]);
|
|
13077
|
-
const [validationErrors, setValidationErrors] =
|
|
13096
|
+
const [validationErrors, setValidationErrors] = React43.useState({});
|
|
13078
13097
|
const handleChange = /* @__PURE__ */ __name((cssVar, value) => {
|
|
13079
13098
|
let validation = { isValid: true };
|
|
13080
13099
|
if (cssVar === "--hue-shift") {
|
|
@@ -13127,7 +13146,7 @@ function OtherPanel({
|
|
|
13127
13146
|
}));
|
|
13128
13147
|
}
|
|
13129
13148
|
}, "handleRadiusSelect");
|
|
13130
|
-
const hslPresets =
|
|
13149
|
+
const hslPresets = React43.useMemo(
|
|
13131
13150
|
() => [
|
|
13132
13151
|
{ name: "Default", hue: 0, sat: 1, light: 1 },
|
|
13133
13152
|
{ name: "Warm", hue: 30, sat: 1.2, light: 1.05 },
|
|
@@ -13142,7 +13161,7 @@ function OtherPanel({
|
|
|
13142
13161
|
],
|
|
13143
13162
|
[]
|
|
13144
13163
|
);
|
|
13145
|
-
const setHsl =
|
|
13164
|
+
const setHsl = React43.useCallback(
|
|
13146
13165
|
(next) => {
|
|
13147
13166
|
const hue = next.hue ?? (parseFloat(values["--hue-shift"] ?? "0") || 0);
|
|
13148
13167
|
const sat = next.sat ?? (parseFloat(values["--saturation-mult"] ?? "1") || 1);
|
|
@@ -13155,9 +13174,9 @@ function OtherPanel({
|
|
|
13155
13174
|
);
|
|
13156
13175
|
return /* @__PURE__ */ jsxs49("div", { className: "space-y-4 pt-5 pb-2", children: [
|
|
13157
13176
|
!hideModeSection && /* @__PURE__ */ jsxs49("div", { className: "space-y-2", children: [
|
|
13158
|
-
/* @__PURE__ */
|
|
13177
|
+
/* @__PURE__ */ jsx78("label", { className: "block text-sm font-medium", children: "Mode" }),
|
|
13159
13178
|
/* @__PURE__ */ jsxs49("div", { className: "grid grid-cols-2 gap-2", children: [
|
|
13160
|
-
/* @__PURE__ */
|
|
13179
|
+
/* @__PURE__ */ jsx78(
|
|
13161
13180
|
Button,
|
|
13162
13181
|
{
|
|
13163
13182
|
type: "button",
|
|
@@ -13168,7 +13187,7 @@ function OtherPanel({
|
|
|
13168
13187
|
children: "Light"
|
|
13169
13188
|
}
|
|
13170
13189
|
),
|
|
13171
|
-
/* @__PURE__ */
|
|
13190
|
+
/* @__PURE__ */ jsx78(
|
|
13172
13191
|
Button,
|
|
13173
13192
|
{
|
|
13174
13193
|
type: "button",
|
|
@@ -13181,8 +13200,8 @@ function OtherPanel({
|
|
|
13181
13200
|
)
|
|
13182
13201
|
] })
|
|
13183
13202
|
] }),
|
|
13184
|
-
/* @__PURE__ */
|
|
13185
|
-
/* @__PURE__ */
|
|
13203
|
+
/* @__PURE__ */ jsx78(CollapsibleSection, { title: "HSL Adjustments", open: hslOpen, onToggle: () => setHslOpen(!hslOpen), children: /* @__PURE__ */ jsxs49("div", { className: "pt-2 space-y-4", children: [
|
|
13204
|
+
/* @__PURE__ */ jsx78("div", { className: "flex items-center justify-center", children: /* @__PURE__ */ jsxs49(
|
|
13186
13205
|
"button",
|
|
13187
13206
|
{
|
|
13188
13207
|
type: "button",
|
|
@@ -13190,11 +13209,11 @@ function OtherPanel({
|
|
|
13190
13209
|
className: "text-sm font-medium text-muted-foreground hover:text-foreground transition-colors inline-flex items-center gap-2",
|
|
13191
13210
|
children: [
|
|
13192
13211
|
hslPresetsOpen ? "Hide presets" : "Show presets",
|
|
13193
|
-
/* @__PURE__ */
|
|
13212
|
+
/* @__PURE__ */ jsx78("span", { className: cn("transition-transform", hslPresetsOpen ? "rotate-180" : ""), children: "^" })
|
|
13194
13213
|
]
|
|
13195
13214
|
}
|
|
13196
13215
|
) }),
|
|
13197
|
-
hslPresetsOpen && /* @__PURE__ */
|
|
13216
|
+
hslPresetsOpen && /* @__PURE__ */ jsx78("div", { className: "flex flex-wrap items-center justify-center gap-2", children: hslPresets.map((p) => /* @__PURE__ */ jsx78(
|
|
13198
13217
|
"button",
|
|
13199
13218
|
{
|
|
13200
13219
|
type: "button",
|
|
@@ -13202,7 +13221,7 @@ function OtherPanel({
|
|
|
13202
13221
|
className: "h-10 w-10 rounded-lg border border-border bg-card shadow-none overflow-hidden",
|
|
13203
13222
|
"aria-label": `HSL preset: ${p.name}`,
|
|
13204
13223
|
title: p.name,
|
|
13205
|
-
children: /* @__PURE__ */
|
|
13224
|
+
children: /* @__PURE__ */ jsx78(
|
|
13206
13225
|
"div",
|
|
13207
13226
|
{
|
|
13208
13227
|
className: "h-full w-full",
|
|
@@ -13217,9 +13236,9 @@ function OtherPanel({
|
|
|
13217
13236
|
/* @__PURE__ */ jsxs49("div", { className: "space-y-5", children: [
|
|
13218
13237
|
/* @__PURE__ */ jsxs49("div", { className: "space-y-2", children: [
|
|
13219
13238
|
/* @__PURE__ */ jsxs49("div", { className: "flex items-center justify-between gap-3", children: [
|
|
13220
|
-
/* @__PURE__ */
|
|
13239
|
+
/* @__PURE__ */ jsx78("label", { className: "text-sm font-medium", children: "Hue Shift" }),
|
|
13221
13240
|
/* @__PURE__ */ jsxs49("div", { className: "flex items-center gap-2", children: [
|
|
13222
|
-
/* @__PURE__ */
|
|
13241
|
+
/* @__PURE__ */ jsx78(
|
|
13223
13242
|
Input,
|
|
13224
13243
|
{
|
|
13225
13244
|
type: "text",
|
|
@@ -13231,10 +13250,10 @@ function OtherPanel({
|
|
|
13231
13250
|
)
|
|
13232
13251
|
}
|
|
13233
13252
|
),
|
|
13234
|
-
/* @__PURE__ */
|
|
13253
|
+
/* @__PURE__ */ jsx78("span", { className: "text-xs text-muted-foreground", children: "deg" })
|
|
13235
13254
|
] })
|
|
13236
13255
|
] }),
|
|
13237
|
-
/* @__PURE__ */
|
|
13256
|
+
/* @__PURE__ */ jsx78(
|
|
13238
13257
|
"input",
|
|
13239
13258
|
{
|
|
13240
13259
|
type: "range",
|
|
@@ -13246,13 +13265,13 @@ function OtherPanel({
|
|
|
13246
13265
|
className: "w-full h-2 rounded-full bg-muted accent-foreground"
|
|
13247
13266
|
}
|
|
13248
13267
|
),
|
|
13249
|
-
validationErrors["--hue-shift"] && /* @__PURE__ */
|
|
13268
|
+
validationErrors["--hue-shift"] && /* @__PURE__ */ jsx78("p", { className: "text-xs text-destructive", children: validationErrors["--hue-shift"] })
|
|
13250
13269
|
] }),
|
|
13251
13270
|
/* @__PURE__ */ jsxs49("div", { className: "space-y-2", children: [
|
|
13252
13271
|
/* @__PURE__ */ jsxs49("div", { className: "flex items-center justify-between gap-3", children: [
|
|
13253
|
-
/* @__PURE__ */
|
|
13272
|
+
/* @__PURE__ */ jsx78("label", { className: "text-sm font-medium", children: "Saturation Multiplier" }),
|
|
13254
13273
|
/* @__PURE__ */ jsxs49("div", { className: "flex items-center gap-2", children: [
|
|
13255
|
-
/* @__PURE__ */
|
|
13274
|
+
/* @__PURE__ */ jsx78(
|
|
13256
13275
|
Input,
|
|
13257
13276
|
{
|
|
13258
13277
|
type: "text",
|
|
@@ -13264,10 +13283,10 @@ function OtherPanel({
|
|
|
13264
13283
|
)
|
|
13265
13284
|
}
|
|
13266
13285
|
),
|
|
13267
|
-
/* @__PURE__ */
|
|
13286
|
+
/* @__PURE__ */ jsx78("span", { className: "text-xs text-muted-foreground", children: "x" })
|
|
13268
13287
|
] })
|
|
13269
13288
|
] }),
|
|
13270
|
-
/* @__PURE__ */
|
|
13289
|
+
/* @__PURE__ */ jsx78(
|
|
13271
13290
|
"input",
|
|
13272
13291
|
{
|
|
13273
13292
|
type: "range",
|
|
@@ -13279,13 +13298,13 @@ function OtherPanel({
|
|
|
13279
13298
|
className: "w-full h-2 rounded-full bg-muted accent-foreground"
|
|
13280
13299
|
}
|
|
13281
13300
|
),
|
|
13282
|
-
validationErrors["--saturation-mult"] && /* @__PURE__ */
|
|
13301
|
+
validationErrors["--saturation-mult"] && /* @__PURE__ */ jsx78("p", { className: "text-xs text-destructive", children: validationErrors["--saturation-mult"] })
|
|
13283
13302
|
] }),
|
|
13284
13303
|
/* @__PURE__ */ jsxs49("div", { className: "space-y-2", children: [
|
|
13285
13304
|
/* @__PURE__ */ jsxs49("div", { className: "flex items-center justify-between gap-3", children: [
|
|
13286
|
-
/* @__PURE__ */
|
|
13305
|
+
/* @__PURE__ */ jsx78("label", { className: "text-sm font-medium", children: "Lightness Multiplier" }),
|
|
13287
13306
|
/* @__PURE__ */ jsxs49("div", { className: "flex items-center gap-2", children: [
|
|
13288
|
-
/* @__PURE__ */
|
|
13307
|
+
/* @__PURE__ */ jsx78(
|
|
13289
13308
|
Input,
|
|
13290
13309
|
{
|
|
13291
13310
|
type: "text",
|
|
@@ -13297,10 +13316,10 @@ function OtherPanel({
|
|
|
13297
13316
|
)
|
|
13298
13317
|
}
|
|
13299
13318
|
),
|
|
13300
|
-
/* @__PURE__ */
|
|
13319
|
+
/* @__PURE__ */ jsx78("span", { className: "text-xs text-muted-foreground", children: "x" })
|
|
13301
13320
|
] })
|
|
13302
13321
|
] }),
|
|
13303
|
-
/* @__PURE__ */
|
|
13322
|
+
/* @__PURE__ */ jsx78(
|
|
13304
13323
|
"input",
|
|
13305
13324
|
{
|
|
13306
13325
|
type: "range",
|
|
@@ -13312,13 +13331,13 @@ function OtherPanel({
|
|
|
13312
13331
|
className: "w-full h-2 rounded-full bg-muted accent-foreground"
|
|
13313
13332
|
}
|
|
13314
13333
|
),
|
|
13315
|
-
validationErrors["--lightness-mult"] && /* @__PURE__ */
|
|
13334
|
+
validationErrors["--lightness-mult"] && /* @__PURE__ */ jsx78("p", { className: "text-xs text-destructive", children: validationErrors["--lightness-mult"] })
|
|
13316
13335
|
] })
|
|
13317
13336
|
] })
|
|
13318
13337
|
] }) }),
|
|
13319
|
-
/* @__PURE__ */
|
|
13320
|
-
/* @__PURE__ */
|
|
13321
|
-
/* @__PURE__ */
|
|
13338
|
+
/* @__PURE__ */ jsx78(CollapsibleSection, { title: "Radius", open: radiusOpen, onToggle: () => setRadiusOpen(!radiusOpen), children: /* @__PURE__ */ jsxs49("div", { className: "pt-2 space-y-2", children: [
|
|
13339
|
+
/* @__PURE__ */ jsx78("label", { className: "text-sm font-medium", children: "Corner radius" }),
|
|
13340
|
+
/* @__PURE__ */ jsx78("div", { className: "flex flex-wrap gap-2", children: radiusOptions.map((opt) => /* @__PURE__ */ jsx78(
|
|
13322
13341
|
Button,
|
|
13323
13342
|
{
|
|
13324
13343
|
type: "button",
|
|
@@ -13330,11 +13349,11 @@ function OtherPanel({
|
|
|
13330
13349
|
},
|
|
13331
13350
|
opt.value
|
|
13332
13351
|
)) }),
|
|
13333
|
-
validationErrors["--radius"] && /* @__PURE__ */
|
|
13352
|
+
validationErrors["--radius"] && /* @__PURE__ */ jsx78("p", { className: "text-xs text-destructive", children: validationErrors["--radius"] })
|
|
13334
13353
|
] }) }),
|
|
13335
|
-
/* @__PURE__ */
|
|
13336
|
-
/* @__PURE__ */
|
|
13337
|
-
/* @__PURE__ */
|
|
13354
|
+
/* @__PURE__ */ jsx78(CollapsibleSection, { title: "Spacing", open: spacingOpen, onToggle: () => setSpacingOpen(!spacingOpen), children: /* @__PURE__ */ jsxs49("div", { className: "pt-2 space-y-1", children: [
|
|
13355
|
+
/* @__PURE__ */ jsx78("label", { className: "block text-xs font-medium text-muted-foreground mb-1.5", children: "Spacing (base scale for layout, rem)" }),
|
|
13356
|
+
/* @__PURE__ */ jsx78(
|
|
13338
13357
|
Input,
|
|
13339
13358
|
{
|
|
13340
13359
|
type: "text",
|
|
@@ -13347,12 +13366,12 @@ function OtherPanel({
|
|
|
13347
13366
|
)
|
|
13348
13367
|
}
|
|
13349
13368
|
),
|
|
13350
|
-
validationErrors["--spacing"] && /* @__PURE__ */
|
|
13369
|
+
validationErrors["--spacing"] && /* @__PURE__ */ jsx78("p", { className: "text-xs text-destructive", children: validationErrors["--spacing"] })
|
|
13351
13370
|
] }) }),
|
|
13352
|
-
/* @__PURE__ */
|
|
13371
|
+
/* @__PURE__ */ jsx78(CollapsibleSection, { title: "Shadow", open: shadowOpen, onToggle: () => setShadowOpen(!shadowOpen), children: /* @__PURE__ */ jsxs49("div", { className: "space-y-3 pt-2", children: [
|
|
13353
13372
|
/* @__PURE__ */ jsxs49("div", { children: [
|
|
13354
|
-
/* @__PURE__ */
|
|
13355
|
-
/* @__PURE__ */
|
|
13373
|
+
/* @__PURE__ */ jsx78("label", { className: "block text-xs font-medium text-muted-foreground mb-1.5", children: "Shadow color" }),
|
|
13374
|
+
/* @__PURE__ */ jsx78(
|
|
13356
13375
|
Input,
|
|
13357
13376
|
{
|
|
13358
13377
|
type: "text",
|
|
@@ -13364,8 +13383,8 @@ function OtherPanel({
|
|
|
13364
13383
|
)
|
|
13365
13384
|
] }),
|
|
13366
13385
|
/* @__PURE__ */ jsxs49("div", { children: [
|
|
13367
|
-
/* @__PURE__ */
|
|
13368
|
-
/* @__PURE__ */
|
|
13386
|
+
/* @__PURE__ */ jsx78("label", { className: "block text-xs font-medium text-muted-foreground mb-1.5", children: "Shadow Opacity" }),
|
|
13387
|
+
/* @__PURE__ */ jsx78(
|
|
13369
13388
|
Input,
|
|
13370
13389
|
{
|
|
13371
13390
|
type: "text",
|
|
@@ -13378,8 +13397,8 @@ function OtherPanel({
|
|
|
13378
13397
|
] }),
|
|
13379
13398
|
/* @__PURE__ */ jsxs49("div", { className: "grid grid-cols-2 gap-2", children: [
|
|
13380
13399
|
/* @__PURE__ */ jsxs49("div", { children: [
|
|
13381
|
-
/* @__PURE__ */
|
|
13382
|
-
/* @__PURE__ */
|
|
13400
|
+
/* @__PURE__ */ jsx78("label", { className: "block text-xs font-medium text-muted-foreground mb-1.5", children: "Blur radius" }),
|
|
13401
|
+
/* @__PURE__ */ jsx78(
|
|
13383
13402
|
Input,
|
|
13384
13403
|
{
|
|
13385
13404
|
type: "text",
|
|
@@ -13391,8 +13410,8 @@ function OtherPanel({
|
|
|
13391
13410
|
)
|
|
13392
13411
|
] }),
|
|
13393
13412
|
/* @__PURE__ */ jsxs49("div", { children: [
|
|
13394
|
-
/* @__PURE__ */
|
|
13395
|
-
/* @__PURE__ */
|
|
13413
|
+
/* @__PURE__ */ jsx78("label", { className: "block text-xs font-medium text-muted-foreground mb-1.5", children: "Spread" }),
|
|
13414
|
+
/* @__PURE__ */ jsx78(
|
|
13396
13415
|
Input,
|
|
13397
13416
|
{
|
|
13398
13417
|
type: "text",
|
|
@@ -13406,8 +13425,8 @@ function OtherPanel({
|
|
|
13406
13425
|
] }),
|
|
13407
13426
|
/* @__PURE__ */ jsxs49("div", { className: "grid grid-cols-2 gap-2", children: [
|
|
13408
13427
|
/* @__PURE__ */ jsxs49("div", { children: [
|
|
13409
|
-
/* @__PURE__ */
|
|
13410
|
-
/* @__PURE__ */
|
|
13428
|
+
/* @__PURE__ */ jsx78("label", { className: "block text-xs font-medium text-muted-foreground mb-1.5", children: "Offset X" }),
|
|
13429
|
+
/* @__PURE__ */ jsx78(
|
|
13411
13430
|
Input,
|
|
13412
13431
|
{
|
|
13413
13432
|
type: "text",
|
|
@@ -13419,8 +13438,8 @@ function OtherPanel({
|
|
|
13419
13438
|
)
|
|
13420
13439
|
] }),
|
|
13421
13440
|
/* @__PURE__ */ jsxs49("div", { children: [
|
|
13422
|
-
/* @__PURE__ */
|
|
13423
|
-
/* @__PURE__ */
|
|
13441
|
+
/* @__PURE__ */ jsx78("label", { className: "block text-xs font-medium text-muted-foreground mb-1.5", children: "Offset Y" }),
|
|
13442
|
+
/* @__PURE__ */ jsx78(
|
|
13424
13443
|
Input,
|
|
13425
13444
|
{
|
|
13426
13445
|
type: "text",
|
|
@@ -13433,15 +13452,15 @@ function OtherPanel({
|
|
|
13433
13452
|
] })
|
|
13434
13453
|
] })
|
|
13435
13454
|
] }) }),
|
|
13436
|
-
!hideLayoutSection && /* @__PURE__ */
|
|
13455
|
+
!hideLayoutSection && /* @__PURE__ */ jsx78(LayoutTab, { sidebarConfig, onSidebarConfigChange })
|
|
13437
13456
|
] });
|
|
13438
13457
|
}
|
|
13439
13458
|
__name(OtherPanel, "OtherPanel");
|
|
13440
13459
|
|
|
13441
13460
|
// components/theme-customizer/import-modal.tsx
|
|
13442
|
-
import
|
|
13461
|
+
import React44 from "react";
|
|
13443
13462
|
import { X as X8, Check as Check6 } from "lucide-react";
|
|
13444
|
-
import { Fragment as Fragment8, jsx as
|
|
13463
|
+
import { Fragment as Fragment8, jsx as jsx79, jsxs as jsxs50 } from "react/jsx-runtime";
|
|
13445
13464
|
function normalizeImportedThemeVars(vars) {
|
|
13446
13465
|
const out = {};
|
|
13447
13466
|
Object.entries(vars).forEach(([key, value]) => {
|
|
@@ -13452,9 +13471,9 @@ function normalizeImportedThemeVars(vars) {
|
|
|
13452
13471
|
}
|
|
13453
13472
|
__name(normalizeImportedThemeVars, "normalizeImportedThemeVars");
|
|
13454
13473
|
function ImportModal({ open, onOpenChange, onImport, onImportArtifact }) {
|
|
13455
|
-
const [importText, setImportText] =
|
|
13456
|
-
const [themeName, setThemeName] =
|
|
13457
|
-
const [error, setError] =
|
|
13474
|
+
const [importText, setImportText] = React44.useState("");
|
|
13475
|
+
const [themeName, setThemeName] = React44.useState("");
|
|
13476
|
+
const [error, setError] = React44.useState(null);
|
|
13458
13477
|
const raw = importText.trim();
|
|
13459
13478
|
const isJsonArtifact = raw.startsWith("{");
|
|
13460
13479
|
const canImport = Boolean(raw) && (isJsonArtifact || Boolean(themeName.trim()));
|
|
@@ -13535,28 +13554,28 @@ function ImportModal({ open, onOpenChange, onImport, onImportArtifact }) {
|
|
|
13535
13554
|
}, "processImport");
|
|
13536
13555
|
if (!open) return null;
|
|
13537
13556
|
return /* @__PURE__ */ jsxs50(Fragment8, { children: [
|
|
13538
|
-
/* @__PURE__ */
|
|
13557
|
+
/* @__PURE__ */ jsx79(
|
|
13539
13558
|
"div",
|
|
13540
13559
|
{
|
|
13541
13560
|
className: "fixed inset-0 bg-foreground/20 z-[60]",
|
|
13542
13561
|
onClick: () => onOpenChange(false)
|
|
13543
13562
|
}
|
|
13544
13563
|
),
|
|
13545
|
-
/* @__PURE__ */
|
|
13546
|
-
/* @__PURE__ */
|
|
13564
|
+
/* @__PURE__ */ jsx79("div", { className: "fixed inset-0 z-[60] flex items-center justify-center p-4", children: /* @__PURE__ */ jsxs50("div", { className: "bg-card text-card-foreground rounded-lg shadow-lg max-w-4xl w-full max-h-[90vh] flex flex-col border border-border", children: [
|
|
13565
|
+
/* @__PURE__ */ jsx79("div", { className: "p-6 border-b border-border", children: /* @__PURE__ */ jsxs50("div", { className: "flex items-center justify-between", children: [
|
|
13547
13566
|
/* @__PURE__ */ jsxs50("div", { children: [
|
|
13548
|
-
/* @__PURE__ */
|
|
13567
|
+
/* @__PURE__ */ jsx79("h3", { className: "text-lg font-semibold", children: "Import Theme" }),
|
|
13549
13568
|
/* @__PURE__ */ jsxs50("p", { className: "text-sm text-muted-foreground mt-1", children: [
|
|
13550
13569
|
"Paste either a standardized ",
|
|
13551
|
-
/* @__PURE__ */
|
|
13570
|
+
/* @__PURE__ */ jsx79("code", { className: "px-1 py-0.5 bg-muted rounded", children: "theme.json" }),
|
|
13552
13571
|
" artifact (recommended) or a CSS theme with ",
|
|
13553
|
-
/* @__PURE__ */
|
|
13572
|
+
/* @__PURE__ */ jsx79("code", { className: "px-1 py-0.5 bg-muted rounded", children: ":root" }),
|
|
13554
13573
|
" and ",
|
|
13555
|
-
/* @__PURE__ */
|
|
13574
|
+
/* @__PURE__ */ jsx79("code", { className: "px-1 py-0.5 bg-muted rounded", children: ".dark" }),
|
|
13556
13575
|
"."
|
|
13557
13576
|
] })
|
|
13558
13577
|
] }),
|
|
13559
|
-
/* @__PURE__ */
|
|
13578
|
+
/* @__PURE__ */ jsx79(
|
|
13560
13579
|
"button",
|
|
13561
13580
|
{
|
|
13562
13581
|
onClick: () => onOpenChange(false),
|
|
@@ -13566,10 +13585,10 @@ function ImportModal({ open, onOpenChange, onImport, onImportArtifact }) {
|
|
|
13566
13585
|
)
|
|
13567
13586
|
] }) }),
|
|
13568
13587
|
/* @__PURE__ */ jsxs50("div", { className: "p-6 flex-1 overflow-y-auto space-y-4", children: [
|
|
13569
|
-
error && /* @__PURE__ */
|
|
13588
|
+
error && /* @__PURE__ */ jsx79("div", { className: "rounded-lg border border-destructive bg-destructive/10 p-3", children: /* @__PURE__ */ jsx79("p", { className: "text-sm text-destructive", children: error }) }),
|
|
13570
13589
|
/* @__PURE__ */ jsxs50("div", { children: [
|
|
13571
|
-
/* @__PURE__ */
|
|
13572
|
-
/* @__PURE__ */
|
|
13590
|
+
/* @__PURE__ */ jsx79("label", { className: "block text-sm font-medium mb-2", children: "Theme name" }),
|
|
13591
|
+
/* @__PURE__ */ jsx79(
|
|
13573
13592
|
Input,
|
|
13574
13593
|
{
|
|
13575
13594
|
type: "text",
|
|
@@ -13583,8 +13602,8 @@ function ImportModal({ open, onOpenChange, onImport, onImportArtifact }) {
|
|
|
13583
13602
|
)
|
|
13584
13603
|
] }),
|
|
13585
13604
|
/* @__PURE__ */ jsxs50("div", { children: [
|
|
13586
|
-
/* @__PURE__ */
|
|
13587
|
-
/* @__PURE__ */
|
|
13605
|
+
/* @__PURE__ */ jsx79("label", { className: "block text-sm font-medium mb-2", children: "Theme content" }),
|
|
13606
|
+
/* @__PURE__ */ jsx79(
|
|
13588
13607
|
"textarea",
|
|
13589
13608
|
{
|
|
13590
13609
|
className: "w-full rounded-lg border border-input bg-background px-3 py-2 text-sm font-mono text-foreground placeholder:text-muted-foreground min-h-[300px] max-h-[400px] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:border-border/80",
|
|
@@ -13619,17 +13638,17 @@ function ImportModal({ open, onOpenChange, onImport, onImportArtifact }) {
|
|
|
13619
13638
|
] })
|
|
13620
13639
|
] }),
|
|
13621
13640
|
/* @__PURE__ */ jsxs50("div", { className: "p-6 border-t border-border flex justify-end gap-2", children: [
|
|
13622
|
-
/* @__PURE__ */
|
|
13641
|
+
/* @__PURE__ */ jsx79(
|
|
13623
13642
|
Button,
|
|
13624
13643
|
{
|
|
13625
13644
|
variant: "icon",
|
|
13626
13645
|
size: "md",
|
|
13627
13646
|
onClick: () => onOpenChange(false),
|
|
13628
13647
|
"aria-label": "Cancel",
|
|
13629
|
-
children: /* @__PURE__ */
|
|
13648
|
+
children: /* @__PURE__ */ jsx79(X8, { className: "w-5 h-5" })
|
|
13630
13649
|
}
|
|
13631
13650
|
),
|
|
13632
|
-
/* @__PURE__ */
|
|
13651
|
+
/* @__PURE__ */ jsx79(
|
|
13633
13652
|
Button,
|
|
13634
13653
|
{
|
|
13635
13654
|
variant: "icon",
|
|
@@ -13637,7 +13656,7 @@ function ImportModal({ open, onOpenChange, onImport, onImportArtifact }) {
|
|
|
13637
13656
|
onClick: processImport,
|
|
13638
13657
|
disabled: !canImport,
|
|
13639
13658
|
"aria-label": "Import theme",
|
|
13640
|
-
children: /* @__PURE__ */
|
|
13659
|
+
children: /* @__PURE__ */ jsx79(Check6, { className: "w-5 h-5" })
|
|
13641
13660
|
}
|
|
13642
13661
|
)
|
|
13643
13662
|
] })
|
|
@@ -13647,7 +13666,7 @@ function ImportModal({ open, onOpenChange, onImport, onImportArtifact }) {
|
|
|
13647
13666
|
__name(ImportModal, "ImportModal");
|
|
13648
13667
|
|
|
13649
13668
|
// components/theme-customizer/index.tsx
|
|
13650
|
-
import { Fragment as Fragment9, jsx as
|
|
13669
|
+
import { Fragment as Fragment9, jsx as jsx80, jsxs as jsxs51 } from "react/jsx-runtime";
|
|
13651
13670
|
function ThemeCustomizer({
|
|
13652
13671
|
open,
|
|
13653
13672
|
onOpenChange,
|
|
@@ -13663,12 +13682,12 @@ function ThemeCustomizer({
|
|
|
13663
13682
|
hideLayoutSection = false
|
|
13664
13683
|
}) {
|
|
13665
13684
|
const { applyImportedTheme: applyImportedTheme2, isDarkMode, resetTheme: resetTheme2, applyRadius: applyRadius2, setBrandColorsValues, applyTheme } = useThemeManager();
|
|
13666
|
-
const [internalTheme, setInternalTheme] =
|
|
13685
|
+
const [internalTheme, setInternalTheme] = React45.useState("mindtris-ui");
|
|
13667
13686
|
const selectedTheme = selectedThemeProp ?? internalTheme;
|
|
13668
13687
|
const setSelectedTheme = setSelectedThemeProp ?? setInternalTheme;
|
|
13669
|
-
const [selectedRadius, setSelectedRadius] =
|
|
13670
|
-
const [importModalOpen, setImportModalOpen] =
|
|
13671
|
-
const [importedTheme, setImportedTheme] =
|
|
13688
|
+
const [selectedRadius, setSelectedRadius] = React45.useState("0.5rem");
|
|
13689
|
+
const [importModalOpen, setImportModalOpen] = React45.useState(false);
|
|
13690
|
+
const [importedTheme, setImportedTheme] = React45.useState(null);
|
|
13672
13691
|
const handleReset = /* @__PURE__ */ __name(() => {
|
|
13673
13692
|
setSelectedTheme("mindtris-ui");
|
|
13674
13693
|
setSelectedRadius("0.5rem");
|
|
@@ -13682,14 +13701,14 @@ function ThemeCustomizer({
|
|
|
13682
13701
|
setSelectedTheme("");
|
|
13683
13702
|
applyImportedTheme2(themeData, isDarkMode);
|
|
13684
13703
|
}, "handleImport");
|
|
13685
|
-
|
|
13704
|
+
React45.useEffect(() => {
|
|
13686
13705
|
if (importedTheme) {
|
|
13687
13706
|
applyImportedTheme2(importedTheme, isDarkMode);
|
|
13688
13707
|
} else if (selectedTheme) {
|
|
13689
13708
|
applyTheme(selectedTheme, isDarkMode);
|
|
13690
13709
|
}
|
|
13691
13710
|
}, [isDarkMode, importedTheme, selectedTheme, applyImportedTheme2, applyTheme]);
|
|
13692
|
-
|
|
13711
|
+
React45.useEffect(() => {
|
|
13693
13712
|
if (importedTheme) {
|
|
13694
13713
|
applyImportedTheme2(importedTheme, isDarkMode);
|
|
13695
13714
|
} else {
|
|
@@ -13703,12 +13722,12 @@ function ThemeCustomizer({
|
|
|
13703
13722
|
{
|
|
13704
13723
|
className: inline ? "flex flex-col h-full" : "fixed inset-y-0 right-0 z-50 w-96 bg-card text-card-foreground border-l border-border shadow-lg flex flex-col",
|
|
13705
13724
|
children: [
|
|
13706
|
-
!hideHeader && /* @__PURE__ */
|
|
13707
|
-
/* @__PURE__ */
|
|
13708
|
-
/* @__PURE__ */
|
|
13725
|
+
!hideHeader && /* @__PURE__ */ jsx80("div", { className: "p-4 border-b border-border", children: /* @__PURE__ */ jsxs51("div", { className: "flex items-center gap-2", children: [
|
|
13726
|
+
/* @__PURE__ */ jsx80("div", { className: "p-2 bg-primary/10 rounded-lg", children: /* @__PURE__ */ jsx80(Settings, { className: "w-4 h-4 text-primary" }) }),
|
|
13727
|
+
/* @__PURE__ */ jsx80("h2", { className: "text-lg font-semibold", children: "Customizer" }),
|
|
13709
13728
|
/* @__PURE__ */ jsxs51("div", { className: "ml-auto flex items-center gap-2", children: [
|
|
13710
|
-
/* @__PURE__ */
|
|
13711
|
-
!inline && /* @__PURE__ */
|
|
13729
|
+
/* @__PURE__ */ jsx80(Button, { variant: "ghost", size: "sm", onClick: handleReset, children: "Reset" }),
|
|
13730
|
+
!inline && /* @__PURE__ */ jsx80(
|
|
13712
13731
|
Button,
|
|
13713
13732
|
{
|
|
13714
13733
|
variant: "ghost",
|
|
@@ -13717,13 +13736,13 @@ function ThemeCustomizer({
|
|
|
13717
13736
|
className: "p-1.5",
|
|
13718
13737
|
"aria-label": "Close",
|
|
13719
13738
|
tooltip: "Close",
|
|
13720
|
-
children: /* @__PURE__ */
|
|
13739
|
+
children: /* @__PURE__ */ jsx80(X9, { className: "w-4 h-4" })
|
|
13721
13740
|
}
|
|
13722
13741
|
)
|
|
13723
13742
|
] })
|
|
13724
13743
|
] }) }),
|
|
13725
13744
|
/* @__PURE__ */ jsxs51("div", { className: "flex-1 overflow-y-auto min-h-0", children: [
|
|
13726
|
-
sectionProp === "colors" && /* @__PURE__ */
|
|
13745
|
+
sectionProp === "colors" && /* @__PURE__ */ jsx80(
|
|
13727
13746
|
ThemeTab,
|
|
13728
13747
|
{
|
|
13729
13748
|
selectedTheme,
|
|
@@ -13736,7 +13755,7 @@ function ThemeCustomizer({
|
|
|
13736
13755
|
hidePreset: presetInHeader
|
|
13737
13756
|
}
|
|
13738
13757
|
),
|
|
13739
|
-
sectionProp === "others" && /* @__PURE__ */
|
|
13758
|
+
sectionProp === "others" && /* @__PURE__ */ jsx80("div", { className: "px-3 pt-2 pb-4", children: /* @__PURE__ */ jsx80(
|
|
13740
13759
|
OtherPanel,
|
|
13741
13760
|
{
|
|
13742
13761
|
selectedRadius,
|
|
@@ -13748,7 +13767,7 @@ function ThemeCustomizer({
|
|
|
13748
13767
|
}
|
|
13749
13768
|
) }),
|
|
13750
13769
|
!sectionProp && /* @__PURE__ */ jsxs51(Fragment9, { children: [
|
|
13751
|
-
/* @__PURE__ */
|
|
13770
|
+
/* @__PURE__ */ jsx80(
|
|
13752
13771
|
ThemeTab,
|
|
13753
13772
|
{
|
|
13754
13773
|
selectedTheme,
|
|
@@ -13760,8 +13779,8 @@ function ThemeCustomizer({
|
|
|
13760
13779
|
variant: "full"
|
|
13761
13780
|
}
|
|
13762
13781
|
),
|
|
13763
|
-
/* @__PURE__ */
|
|
13764
|
-
/* @__PURE__ */
|
|
13782
|
+
/* @__PURE__ */ jsx80("div", { className: "border-t border-border" }),
|
|
13783
|
+
/* @__PURE__ */ jsx80(
|
|
13765
13784
|
LayoutTab,
|
|
13766
13785
|
{
|
|
13767
13786
|
sidebarConfig,
|
|
@@ -13775,14 +13794,14 @@ function ThemeCustomizer({
|
|
|
13775
13794
|
);
|
|
13776
13795
|
return /* @__PURE__ */ jsxs51(Fragment9, { children: [
|
|
13777
13796
|
content,
|
|
13778
|
-
!inline && /* @__PURE__ */
|
|
13797
|
+
!inline && /* @__PURE__ */ jsx80(
|
|
13779
13798
|
"div",
|
|
13780
13799
|
{
|
|
13781
13800
|
className: "fixed inset-0 bg-foreground/20 z-40",
|
|
13782
13801
|
onClick: () => onOpenChange(false)
|
|
13783
13802
|
}
|
|
13784
13803
|
),
|
|
13785
|
-
!hideImportInOthers && /* @__PURE__ */
|
|
13804
|
+
!hideImportInOthers && /* @__PURE__ */ jsx80(
|
|
13786
13805
|
ImportModal,
|
|
13787
13806
|
{
|
|
13788
13807
|
open: importModalOpen,
|
|
@@ -13795,7 +13814,7 @@ function ThemeCustomizer({
|
|
|
13795
13814
|
__name(ThemeCustomizer, "ThemeCustomizer");
|
|
13796
13815
|
|
|
13797
13816
|
// components/theme-customizer/typography-panel.tsx
|
|
13798
|
-
import
|
|
13817
|
+
import React46 from "react";
|
|
13799
13818
|
|
|
13800
13819
|
// theme/google-fonts.ts
|
|
13801
13820
|
var GOOGLE_FONTS_MAP = {
|
|
@@ -13910,7 +13929,7 @@ function loadGoogleFontsForFontValue(value) {
|
|
|
13910
13929
|
__name(loadGoogleFontsForFontValue, "loadGoogleFontsForFontValue");
|
|
13911
13930
|
|
|
13912
13931
|
// components/theme-customizer/typography-panel.tsx
|
|
13913
|
-
import { jsx as
|
|
13932
|
+
import { jsx as jsx81, jsxs as jsxs52 } from "react/jsx-runtime";
|
|
13914
13933
|
function getComputedTypography() {
|
|
13915
13934
|
if (typeof document === "undefined") return {};
|
|
13916
13935
|
const root = document.documentElement;
|
|
@@ -13925,11 +13944,11 @@ function getComputedTypography() {
|
|
|
13925
13944
|
__name(getComputedTypography, "getComputedTypography");
|
|
13926
13945
|
function TypographyPanel() {
|
|
13927
13946
|
const { handleColorChange: handleColorChange2 } = useThemeManager();
|
|
13928
|
-
const [values, setValues] =
|
|
13929
|
-
const [fontOpen, setFontOpen] =
|
|
13930
|
-
const [letterOpen, setLetterOpen] =
|
|
13931
|
-
const [loadingFonts, setLoadingFonts] =
|
|
13932
|
-
|
|
13947
|
+
const [values, setValues] = React46.useState({});
|
|
13948
|
+
const [fontOpen, setFontOpen] = React46.useState(true);
|
|
13949
|
+
const [letterOpen, setLetterOpen] = React46.useState(true);
|
|
13950
|
+
const [loadingFonts, setLoadingFonts] = React46.useState({});
|
|
13951
|
+
React46.useEffect(() => {
|
|
13933
13952
|
setValues(getComputedTypography());
|
|
13934
13953
|
}, []);
|
|
13935
13954
|
const handleChange = /* @__PURE__ */ __name(async (cssVar, value) => {
|
|
@@ -13949,16 +13968,16 @@ function TypographyPanel() {
|
|
|
13949
13968
|
return /* @__PURE__ */ jsxs52("div", { className: "space-y-4 pt-5 pb-2", children: [
|
|
13950
13969
|
/* @__PURE__ */ jsxs52("p", { className: "text-xs text-muted-foreground px-0", children: [
|
|
13951
13970
|
"Fonts use the theme preset and can load from Google Fonts when selected. Letter spacing uses ",
|
|
13952
|
-
/* @__PURE__ */
|
|
13971
|
+
/* @__PURE__ */ jsx81("code", { className: "text-xs", children: "--tracking-normal" }),
|
|
13953
13972
|
"."
|
|
13954
13973
|
] }),
|
|
13955
|
-
/* @__PURE__ */
|
|
13974
|
+
/* @__PURE__ */ jsx81(CollapsibleSection, { title: "Font Family", open: fontOpen, onToggle: () => setFontOpen((o) => !o), children: /* @__PURE__ */ jsxs52("div", { className: "space-y-3 pt-2", children: [
|
|
13956
13975
|
/* @__PURE__ */ jsxs52("div", { children: [
|
|
13957
13976
|
/* @__PURE__ */ jsxs52("div", { className: "flex items-center justify-between mb-1.5", children: [
|
|
13958
|
-
/* @__PURE__ */
|
|
13959
|
-
loadingFonts["--font-sans"] && /* @__PURE__ */
|
|
13977
|
+
/* @__PURE__ */ jsx81("label", { className: "block text-xs font-medium text-muted-foreground", children: "Sans-serif font" }),
|
|
13978
|
+
loadingFonts["--font-sans"] && /* @__PURE__ */ jsx81("span", { className: "text-xs text-muted-foreground", children: "Loading..." })
|
|
13960
13979
|
] }),
|
|
13961
|
-
/* @__PURE__ */
|
|
13980
|
+
/* @__PURE__ */ jsx81(
|
|
13962
13981
|
ClassicDropdown,
|
|
13963
13982
|
{
|
|
13964
13983
|
ariaLabel: "Sans-Serif Font",
|
|
@@ -13971,10 +13990,10 @@ function TypographyPanel() {
|
|
|
13971
13990
|
] }),
|
|
13972
13991
|
/* @__PURE__ */ jsxs52("div", { children: [
|
|
13973
13992
|
/* @__PURE__ */ jsxs52("div", { className: "flex items-center justify-between mb-1.5", children: [
|
|
13974
|
-
/* @__PURE__ */
|
|
13975
|
-
loadingFonts["--font-serif"] && /* @__PURE__ */
|
|
13993
|
+
/* @__PURE__ */ jsx81("label", { className: "block text-xs font-medium text-muted-foreground", children: "Serif font" }),
|
|
13994
|
+
loadingFonts["--font-serif"] && /* @__PURE__ */ jsx81("span", { className: "text-xs text-muted-foreground", children: "Loading..." })
|
|
13976
13995
|
] }),
|
|
13977
|
-
/* @__PURE__ */
|
|
13996
|
+
/* @__PURE__ */ jsx81(
|
|
13978
13997
|
ClassicDropdown,
|
|
13979
13998
|
{
|
|
13980
13999
|
ariaLabel: "Serif Font",
|
|
@@ -13990,10 +14009,10 @@ function TypographyPanel() {
|
|
|
13990
14009
|
] }),
|
|
13991
14010
|
/* @__PURE__ */ jsxs52("div", { children: [
|
|
13992
14011
|
/* @__PURE__ */ jsxs52("div", { className: "flex items-center justify-between mb-1.5", children: [
|
|
13993
|
-
/* @__PURE__ */
|
|
13994
|
-
loadingFonts["--font-mono"] && /* @__PURE__ */
|
|
14012
|
+
/* @__PURE__ */ jsx81("label", { className: "block text-xs font-medium text-muted-foreground", children: "Monospace Font" }),
|
|
14013
|
+
loadingFonts["--font-mono"] && /* @__PURE__ */ jsx81("span", { className: "text-xs text-muted-foreground", children: "Loading..." })
|
|
13995
14014
|
] }),
|
|
13996
|
-
/* @__PURE__ */
|
|
14015
|
+
/* @__PURE__ */ jsx81(
|
|
13997
14016
|
ClassicDropdown,
|
|
13998
14017
|
{
|
|
13999
14018
|
ariaLabel: "Monospace Font",
|
|
@@ -14005,9 +14024,9 @@ function TypographyPanel() {
|
|
|
14005
14024
|
)
|
|
14006
14025
|
] })
|
|
14007
14026
|
] }) }),
|
|
14008
|
-
/* @__PURE__ */
|
|
14009
|
-
/* @__PURE__ */
|
|
14010
|
-
/* @__PURE__ */
|
|
14027
|
+
/* @__PURE__ */ jsx81(CollapsibleSection, { title: "Letter spacing", open: letterOpen, onToggle: () => setLetterOpen((o) => !o), children: /* @__PURE__ */ jsxs52("div", { className: "pt-2", children: [
|
|
14028
|
+
/* @__PURE__ */ jsx81("label", { className: "block text-xs font-medium text-muted-foreground mb-1.5", children: "Letter spacing (em) \u2014 CSS var: --tracking-normal" }),
|
|
14029
|
+
/* @__PURE__ */ jsx81(
|
|
14011
14030
|
Input,
|
|
14012
14031
|
{
|
|
14013
14032
|
type: "text",
|
|
@@ -14023,7 +14042,7 @@ function TypographyPanel() {
|
|
|
14023
14042
|
__name(TypographyPanel, "TypographyPanel");
|
|
14024
14043
|
|
|
14025
14044
|
// layout-primitives.tsx
|
|
14026
|
-
import { jsx as
|
|
14045
|
+
import { jsx as jsx82, jsxs as jsxs53 } from "react/jsx-runtime";
|
|
14027
14046
|
var maxWidthClasses = {
|
|
14028
14047
|
sm: "max-w-screen-sm",
|
|
14029
14048
|
md: "max-w-screen-md",
|
|
@@ -14047,7 +14066,7 @@ function Container({
|
|
|
14047
14066
|
className,
|
|
14048
14067
|
...props
|
|
14049
14068
|
}) {
|
|
14050
|
-
return /* @__PURE__ */
|
|
14069
|
+
return /* @__PURE__ */ jsx82(
|
|
14051
14070
|
"div",
|
|
14052
14071
|
{
|
|
14053
14072
|
className: cn(
|
|
@@ -14072,10 +14091,10 @@ function Page({
|
|
|
14072
14091
|
className,
|
|
14073
14092
|
...props
|
|
14074
14093
|
}) {
|
|
14075
|
-
return /* @__PURE__ */
|
|
14094
|
+
return /* @__PURE__ */ jsx82("div", { className: cn("min-h-screen", className), ...props, children: /* @__PURE__ */ jsxs53(Container, { maxWidth, padding, children: [
|
|
14076
14095
|
(title || description) && /* @__PURE__ */ jsxs53("div", { className: "mb-8", children: [
|
|
14077
|
-
title && /* @__PURE__ */
|
|
14078
|
-
description && /* @__PURE__ */
|
|
14096
|
+
title && /* @__PURE__ */ jsx82("h1", { className: "text-2xl md:text-3xl font-bold text-foreground mb-2", children: title }),
|
|
14097
|
+
description && /* @__PURE__ */ jsx82("p", { className: "text-muted-foreground", children: description })
|
|
14079
14098
|
] }),
|
|
14080
14099
|
children
|
|
14081
14100
|
] }) });
|
|
@@ -14090,10 +14109,10 @@ function Section({
|
|
|
14090
14109
|
className,
|
|
14091
14110
|
...props
|
|
14092
14111
|
}) {
|
|
14093
|
-
return /* @__PURE__ */
|
|
14112
|
+
return /* @__PURE__ */ jsx82("section", { className: cn("py-8 md:py-12", className), ...props, children: /* @__PURE__ */ jsxs53(Container, { maxWidth, padding, children: [
|
|
14094
14113
|
(title || description) && /* @__PURE__ */ jsxs53("div", { className: "mb-6", children: [
|
|
14095
|
-
title && /* @__PURE__ */
|
|
14096
|
-
description && /* @__PURE__ */
|
|
14114
|
+
title && /* @__PURE__ */ jsx82("h2", { className: "text-xl md:text-2xl font-bold text-foreground mb-2", children: title }),
|
|
14115
|
+
description && /* @__PURE__ */ jsx82("p", { className: "text-muted-foreground", children: description })
|
|
14097
14116
|
] }),
|
|
14098
14117
|
children
|
|
14099
14118
|
] }) });
|
|
@@ -14118,7 +14137,7 @@ function Grid({
|
|
|
14118
14137
|
const colsClass = `grid-cols-${cols}`;
|
|
14119
14138
|
const colsSmClass = colsSm ? `sm:grid-cols-${colsSm}` : "";
|
|
14120
14139
|
const colsMdClass = colsMd ? `md:grid-cols-${colsMd}` : "";
|
|
14121
|
-
return /* @__PURE__ */
|
|
14140
|
+
return /* @__PURE__ */ jsx82(
|
|
14122
14141
|
"div",
|
|
14123
14142
|
{
|
|
14124
14143
|
className: cn(
|
|
@@ -14159,7 +14178,7 @@ function Stack({
|
|
|
14159
14178
|
around: "justify-around",
|
|
14160
14179
|
evenly: "justify-evenly"
|
|
14161
14180
|
};
|
|
14162
|
-
return /* @__PURE__ */
|
|
14181
|
+
return /* @__PURE__ */ jsx82(
|
|
14163
14182
|
"div",
|
|
14164
14183
|
{
|
|
14165
14184
|
className: cn(
|
|
@@ -14181,8 +14200,8 @@ __name(Stack, "Stack");
|
|
|
14181
14200
|
// blocks/header/header-block.tsx
|
|
14182
14201
|
import { useState as useState22, useEffect as useEffect15 } from "react";
|
|
14183
14202
|
import { Menu as Menu3, ChevronDown as ChevronDown8 } from "lucide-react";
|
|
14184
|
-
import { jsx as
|
|
14185
|
-
var DefaultLink = /* @__PURE__ */ __name(({ href, className, children, onClick }) => /* @__PURE__ */
|
|
14203
|
+
import { jsx as jsx83, jsxs as jsxs54 } from "react/jsx-runtime";
|
|
14204
|
+
var DefaultLink = /* @__PURE__ */ __name(({ href, className, children, onClick }) => /* @__PURE__ */ jsx83("a", { href, className, onClick, children }), "DefaultLink");
|
|
14186
14205
|
function HeaderBlock({
|
|
14187
14206
|
data,
|
|
14188
14207
|
slots = {},
|
|
@@ -14191,7 +14210,7 @@ function HeaderBlock({
|
|
|
14191
14210
|
}) {
|
|
14192
14211
|
const [isScrolled, setIsScrolled] = useState22(false);
|
|
14193
14212
|
const LinkComponent = slots.linkComponent || DefaultLink;
|
|
14194
|
-
const LogoComponent = slots.logo || /* @__PURE__ */
|
|
14213
|
+
const LogoComponent = slots.logo || /* @__PURE__ */ jsx83(Logo, {});
|
|
14195
14214
|
useEffect15(() => {
|
|
14196
14215
|
const handleScroll = /* @__PURE__ */ __name(() => {
|
|
14197
14216
|
setIsScrolled(window.scrollY > 0);
|
|
@@ -14204,20 +14223,20 @@ function HeaderBlock({
|
|
|
14204
14223
|
return /* @__PURE__ */ jsxs54(DropdownMenu, { children: [
|
|
14205
14224
|
/* @__PURE__ */ jsxs54(DropdownMenuTrigger, { className: "flex items-center gap-1 px-3 py-2 text-sm font-medium text-muted-foreground hover:text-foreground transition-colors outline-none focus-visible:ring-2 focus-visible:ring-ring rounded-md", children: [
|
|
14206
14225
|
item.title,
|
|
14207
|
-
/* @__PURE__ */
|
|
14226
|
+
/* @__PURE__ */ jsx83(ChevronDown8, { className: "w-4 h-4" })
|
|
14208
14227
|
] }),
|
|
14209
|
-
/* @__PURE__ */
|
|
14228
|
+
/* @__PURE__ */ jsx83(DropdownMenuContent, { align: "start", className: "w-56", children: item.children.map((child) => {
|
|
14210
14229
|
if (child.type === "dropdown") {
|
|
14211
14230
|
return /* @__PURE__ */ jsxs54(DropdownMenuSub, { children: [
|
|
14212
|
-
/* @__PURE__ */
|
|
14213
|
-
/* @__PURE__ */
|
|
14231
|
+
/* @__PURE__ */ jsx83(DropdownMenuSubTrigger, { children: child.title }),
|
|
14232
|
+
/* @__PURE__ */ jsx83(DropdownMenuSubContent, { children: child.children?.map((sub) => /* @__PURE__ */ jsx83(DropdownMenuItem, { asChild: true, children: /* @__PURE__ */ jsx83(LinkComponent, { href: sub.href || "#", className: "cursor-pointer w-full", children: sub.title }) }, sub.id)) })
|
|
14214
14233
|
] }, child.id);
|
|
14215
14234
|
}
|
|
14216
|
-
return /* @__PURE__ */
|
|
14235
|
+
return /* @__PURE__ */ jsx83(DropdownMenuItem, { asChild: true, children: /* @__PURE__ */ jsx83(LinkComponent, { href: child.href || "#", className: "cursor-pointer w-full", children: child.title }) }, child.id);
|
|
14217
14236
|
}) })
|
|
14218
14237
|
] }, item.id);
|
|
14219
14238
|
}
|
|
14220
|
-
return /* @__PURE__ */
|
|
14239
|
+
return /* @__PURE__ */ jsx83(
|
|
14221
14240
|
LinkComponent,
|
|
14222
14241
|
{
|
|
14223
14242
|
href: item.href || "#",
|
|
@@ -14227,7 +14246,7 @@ function HeaderBlock({
|
|
|
14227
14246
|
item.id
|
|
14228
14247
|
);
|
|
14229
14248
|
}, "renderDesktopMenuItem");
|
|
14230
|
-
return /* @__PURE__ */
|
|
14249
|
+
return /* @__PURE__ */ jsx83(
|
|
14231
14250
|
"header",
|
|
14232
14251
|
{
|
|
14233
14252
|
className: cn(
|
|
@@ -14235,7 +14254,7 @@ function HeaderBlock({
|
|
|
14235
14254
|
sticky ? "fixed top-0 md:top-6" : "relative",
|
|
14236
14255
|
className
|
|
14237
14256
|
),
|
|
14238
|
-
children: /* @__PURE__ */
|
|
14257
|
+
children: /* @__PURE__ */ jsx83(Container, { children: /* @__PURE__ */ jsxs54(
|
|
14239
14258
|
"div",
|
|
14240
14259
|
{
|
|
14241
14260
|
className: cn(
|
|
@@ -14244,27 +14263,27 @@ function HeaderBlock({
|
|
|
14244
14263
|
"bg-background/80 backdrop-blur-md rounded-2xl border border-border/50 shadow-sm"
|
|
14245
14264
|
),
|
|
14246
14265
|
children: [
|
|
14247
|
-
/* @__PURE__ */
|
|
14248
|
-
/* @__PURE__ */
|
|
14266
|
+
/* @__PURE__ */ jsx83("div", { className: "flex items-center shrink-0", children: LogoComponent }),
|
|
14267
|
+
/* @__PURE__ */ jsx83("nav", { className: "hidden md:flex md:gap-1 lg:gap-2", children: data.items.map(renderDesktopMenuItem) }),
|
|
14249
14268
|
/* @__PURE__ */ jsxs54("div", { className: "flex items-center gap-3", children: [
|
|
14250
14269
|
slots.rightActionSlot,
|
|
14251
|
-
/* @__PURE__ */
|
|
14270
|
+
/* @__PURE__ */ jsx83("div", { className: "hidden md:flex gap-3", children: data.ctaItems?.map((cta, idx) => /* @__PURE__ */ jsx83(
|
|
14252
14271
|
Button,
|
|
14253
14272
|
{
|
|
14254
14273
|
variant: cta.variant || (cta.type === "primary" ? "primary" : "ghost"),
|
|
14255
14274
|
size: "sm",
|
|
14256
14275
|
fullWidth: false,
|
|
14257
|
-
render: /* @__PURE__ */
|
|
14276
|
+
render: /* @__PURE__ */ jsx83(LinkComponent, { href: cta.href, children: cta.title }),
|
|
14258
14277
|
children: cta.title
|
|
14259
14278
|
},
|
|
14260
14279
|
idx
|
|
14261
14280
|
)) }),
|
|
14262
|
-
/* @__PURE__ */
|
|
14263
|
-
/* @__PURE__ */
|
|
14281
|
+
/* @__PURE__ */ jsx83("div", { className: "md:hidden", children: /* @__PURE__ */ jsxs54(Sheet, { children: [
|
|
14282
|
+
/* @__PURE__ */ jsx83(SheetTrigger, { asChild: true, children: /* @__PURE__ */ jsx83("button", { className: "p-2 text-muted-foreground hover:text-foreground", children: slots.menuIcon || /* @__PURE__ */ jsx83(Menu3, { className: "w-5 h-5" }) }) }),
|
|
14264
14283
|
/* @__PURE__ */ jsxs54(SheetContent, { side: "right", className: "w-[300px] sm:w-[400px]", children: [
|
|
14265
|
-
/* @__PURE__ */
|
|
14284
|
+
/* @__PURE__ */ jsx83(SheetHeader, { className: "px-1 text-left", children: /* @__PURE__ */ jsx83(SheetTitle, { className: "text-lg font-bold", children: "Menu" }) }),
|
|
14266
14285
|
/* @__PURE__ */ jsxs54("div", { className: "flex flex-col gap-6 mt-6 overflow-y-auto", children: [
|
|
14267
|
-
/* @__PURE__ */
|
|
14286
|
+
/* @__PURE__ */ jsx83("nav", { className: "flex flex-col space-y-4", children: data.items.map((item) => /* @__PURE__ */ jsx83("div", { className: "flex flex-col gap-2", children: item.type === "link" ? /* @__PURE__ */ jsx83(SheetClose, { asChild: true, children: /* @__PURE__ */ jsx83(
|
|
14268
14287
|
LinkComponent,
|
|
14269
14288
|
{
|
|
14270
14289
|
href: item.href || "#",
|
|
@@ -14272,8 +14291,8 @@ function HeaderBlock({
|
|
|
14272
14291
|
children: item.title
|
|
14273
14292
|
}
|
|
14274
14293
|
) }) : /* @__PURE__ */ jsxs54("div", { className: "flex flex-col gap-2", children: [
|
|
14275
|
-
/* @__PURE__ */
|
|
14276
|
-
/* @__PURE__ */
|
|
14294
|
+
/* @__PURE__ */ jsx83("span", { className: "text-sm font-semibold text-muted-foreground uppercase tracking-wide", children: item.title }),
|
|
14295
|
+
/* @__PURE__ */ jsx83("div", { className: "pl-4 flex flex-col gap-2 border-l border-border ml-1", children: item.children?.map((child) => /* @__PURE__ */ jsx83(SheetClose, { asChild: true, children: /* @__PURE__ */ jsx83(
|
|
14277
14296
|
LinkComponent,
|
|
14278
14297
|
{
|
|
14279
14298
|
href: child.href || "#",
|
|
@@ -14282,12 +14301,12 @@ function HeaderBlock({
|
|
|
14282
14301
|
}
|
|
14283
14302
|
) }, child.id)) })
|
|
14284
14303
|
] }) }, item.id)) }),
|
|
14285
|
-
/* @__PURE__ */
|
|
14304
|
+
/* @__PURE__ */ jsx83("div", { className: "flex flex-col gap-3 pt-4 border-t border-border", children: data.ctaItems?.map((cta, idx) => /* @__PURE__ */ jsx83(SheetClose, { asChild: true, children: /* @__PURE__ */ jsx83(
|
|
14286
14305
|
Button,
|
|
14287
14306
|
{
|
|
14288
14307
|
variant: cta.variant || "primary",
|
|
14289
14308
|
fullWidth: true,
|
|
14290
|
-
render: /* @__PURE__ */
|
|
14309
|
+
render: /* @__PURE__ */ jsx83(LinkComponent, { href: cta.href, children: cta.title }),
|
|
14291
14310
|
children: cta.title
|
|
14292
14311
|
}
|
|
14293
14312
|
) }, idx)) })
|
|
@@ -14304,29 +14323,29 @@ function HeaderBlock({
|
|
|
14304
14323
|
__name(HeaderBlock, "HeaderBlock");
|
|
14305
14324
|
|
|
14306
14325
|
// blocks/footer/footer-block.tsx
|
|
14307
|
-
import
|
|
14326
|
+
import React48 from "react";
|
|
14308
14327
|
import { Twitter, Instagram, Facebook, Youtube, Linkedin, Hash, Github } from "lucide-react";
|
|
14309
|
-
import { jsx as
|
|
14310
|
-
var DefaultLink2 = /* @__PURE__ */ __name(({ href, className, children, target, rel }) => /* @__PURE__ */
|
|
14328
|
+
import { jsx as jsx84, jsxs as jsxs55 } from "react/jsx-runtime";
|
|
14329
|
+
var DefaultLink2 = /* @__PURE__ */ __name(({ href, className, children, target, rel }) => /* @__PURE__ */ jsx84("a", { href, className, target, rel, children }), "DefaultLink");
|
|
14311
14330
|
function SocialIconRenderer({ icon }) {
|
|
14312
|
-
if (
|
|
14331
|
+
if (React48.isValidElement(icon)) return icon;
|
|
14313
14332
|
const props = { size: 24, className: "w-5 h-5" };
|
|
14314
14333
|
switch (icon) {
|
|
14315
14334
|
case "twitter":
|
|
14316
|
-
return /* @__PURE__ */
|
|
14335
|
+
return /* @__PURE__ */ jsx84(Twitter, { ...props });
|
|
14317
14336
|
case "instagram":
|
|
14318
|
-
return /* @__PURE__ */
|
|
14337
|
+
return /* @__PURE__ */ jsx84(Instagram, { ...props });
|
|
14319
14338
|
case "facebook":
|
|
14320
|
-
return /* @__PURE__ */
|
|
14339
|
+
return /* @__PURE__ */ jsx84(Facebook, { ...props });
|
|
14321
14340
|
case "youtube":
|
|
14322
|
-
return /* @__PURE__ */
|
|
14341
|
+
return /* @__PURE__ */ jsx84(Youtube, { ...props });
|
|
14323
14342
|
case "linkedin":
|
|
14324
|
-
return /* @__PURE__ */
|
|
14343
|
+
return /* @__PURE__ */ jsx84(Linkedin, { ...props });
|
|
14325
14344
|
case "github":
|
|
14326
|
-
return /* @__PURE__ */
|
|
14345
|
+
return /* @__PURE__ */ jsx84(Github, { ...props });
|
|
14327
14346
|
// Added github
|
|
14328
14347
|
case "threads":
|
|
14329
|
-
return /* @__PURE__ */
|
|
14348
|
+
return /* @__PURE__ */ jsx84(Hash, { ...props });
|
|
14330
14349
|
default:
|
|
14331
14350
|
return null;
|
|
14332
14351
|
}
|
|
@@ -14339,10 +14358,10 @@ function FooterBlock({
|
|
|
14339
14358
|
border = false
|
|
14340
14359
|
}) {
|
|
14341
14360
|
const LinkComponent = slots.linkComponent || DefaultLink2;
|
|
14342
|
-
const LogoComponent = slots.logo || /* @__PURE__ */
|
|
14361
|
+
const LogoComponent = slots.logo || /* @__PURE__ */ jsx84(Logo, {});
|
|
14343
14362
|
const { branding, columns, social, legal } = data;
|
|
14344
14363
|
return /* @__PURE__ */ jsxs55("footer", { className: cn("bg-background text-foreground", className), children: [
|
|
14345
|
-
/* @__PURE__ */
|
|
14364
|
+
/* @__PURE__ */ jsx84(Container, { children: /* @__PURE__ */ jsxs55(
|
|
14346
14365
|
"div",
|
|
14347
14366
|
{
|
|
14348
14367
|
className: cn(
|
|
@@ -14351,7 +14370,7 @@ function FooterBlock({
|
|
|
14351
14370
|
),
|
|
14352
14371
|
children: [
|
|
14353
14372
|
/* @__PURE__ */ jsxs55("div", { className: "space-y-4 sm:col-span-12 lg:col-span-4", children: [
|
|
14354
|
-
/* @__PURE__ */
|
|
14373
|
+
/* @__PURE__ */ jsx84("div", { className: "-ml-3 flex items-center", children: LogoComponent }),
|
|
14355
14374
|
/* @__PURE__ */ jsxs55("div", { className: "text-sm text-muted-foreground", children: [
|
|
14356
14375
|
"\xA9 ",
|
|
14357
14376
|
(/* @__PURE__ */ new Date()).getFullYear(),
|
|
@@ -14359,7 +14378,7 @@ function FooterBlock({
|
|
|
14359
14378
|
branding.brandName,
|
|
14360
14379
|
" by",
|
|
14361
14380
|
" ",
|
|
14362
|
-
branding.brandUrl ? /* @__PURE__ */
|
|
14381
|
+
branding.brandUrl ? /* @__PURE__ */ jsx84(
|
|
14363
14382
|
LinkComponent,
|
|
14364
14383
|
{
|
|
14365
14384
|
href: branding.brandUrl,
|
|
@@ -14367,18 +14386,18 @@ function FooterBlock({
|
|
|
14367
14386
|
target: "_blank",
|
|
14368
14387
|
children: branding.brandName
|
|
14369
14388
|
}
|
|
14370
|
-
) : /* @__PURE__ */
|
|
14389
|
+
) : /* @__PURE__ */ jsx84("span", { className: "font-medium", children: branding.brandName }),
|
|
14371
14390
|
". ",
|
|
14372
14391
|
branding.copyrightText
|
|
14373
14392
|
] }),
|
|
14374
|
-
legal && legal.length > 0 && /* @__PURE__ */
|
|
14375
|
-
/* @__PURE__ */
|
|
14376
|
-
index < legal.length - 1 && /* @__PURE__ */
|
|
14393
|
+
legal && legal.length > 0 && /* @__PURE__ */ jsx84("div", { className: "text-sm text-muted-foreground flex flex-wrap gap-2", children: legal.map((item, index) => /* @__PURE__ */ jsxs55("span", { className: "flex items-center gap-2", children: [
|
|
14394
|
+
/* @__PURE__ */ jsx84(LinkComponent, { href: item.href, className: "hover:text-foreground transition-colors", children: item.title }),
|
|
14395
|
+
index < legal.length - 1 && /* @__PURE__ */ jsx84("span", { className: "opacity-50", children: "|" })
|
|
14377
14396
|
] }, index)) })
|
|
14378
14397
|
] }),
|
|
14379
14398
|
columns.map((col, idx) => /* @__PURE__ */ jsxs55("div", { className: "space-y-3 sm:col-span-6 md:col-span-3 lg:col-span-2", children: [
|
|
14380
|
-
/* @__PURE__ */
|
|
14381
|
-
/* @__PURE__ */
|
|
14399
|
+
/* @__PURE__ */ jsx84("h3", { className: "text-sm font-semibold tracking-wider uppercase text-foreground", children: col.title }),
|
|
14400
|
+
/* @__PURE__ */ jsx84("ul", { className: "space-y-2.5 text-sm", children: col.links.map((link, lIdx) => /* @__PURE__ */ jsx84("li", { children: /* @__PURE__ */ jsx84(
|
|
14382
14401
|
LinkComponent,
|
|
14383
14402
|
{
|
|
14384
14403
|
href: link.href,
|
|
@@ -14388,8 +14407,8 @@ function FooterBlock({
|
|
|
14388
14407
|
) }, lIdx)) })
|
|
14389
14408
|
] }, idx)),
|
|
14390
14409
|
/* @__PURE__ */ jsxs55("div", { className: "space-y-3 sm:col-span-6 md:col-span-3 lg:col-span-2", children: [
|
|
14391
|
-
/* @__PURE__ */
|
|
14392
|
-
social && /* @__PURE__ */
|
|
14410
|
+
/* @__PURE__ */ jsx84("h3", { className: "text-sm font-semibold tracking-wider uppercase text-foreground", children: "Social" }),
|
|
14411
|
+
social && /* @__PURE__ */ jsx84("ul", { className: "flex flex-wrap gap-3 items-center", children: social.map((item, idx) => /* @__PURE__ */ jsx84("li", { children: /* @__PURE__ */ jsx84(
|
|
14393
14412
|
LinkComponent,
|
|
14394
14413
|
{
|
|
14395
14414
|
href: item.href,
|
|
@@ -14397,14 +14416,14 @@ function FooterBlock({
|
|
|
14397
14416
|
target: "_blank",
|
|
14398
14417
|
rel: "noopener noreferrer",
|
|
14399
14418
|
"aria-label": item.name,
|
|
14400
|
-
children: /* @__PURE__ */
|
|
14419
|
+
children: /* @__PURE__ */ jsx84(SocialIconRenderer, { icon: item.icon })
|
|
14401
14420
|
}
|
|
14402
14421
|
) }, idx)) })
|
|
14403
14422
|
] })
|
|
14404
14423
|
]
|
|
14405
14424
|
}
|
|
14406
14425
|
) }),
|
|
14407
|
-
slots.bottomIllustration && /* @__PURE__ */
|
|
14426
|
+
slots.bottomIllustration && /* @__PURE__ */ jsx84("div", { className: "w-full overflow-hidden", "aria-hidden": "true", children: slots.bottomIllustration })
|
|
14408
14427
|
] });
|
|
14409
14428
|
}
|
|
14410
14429
|
__name(FooterBlock, "FooterBlock");
|
|
@@ -14539,6 +14558,7 @@ export {
|
|
|
14539
14558
|
Empty,
|
|
14540
14559
|
ErrorBoundary,
|
|
14541
14560
|
ErrorFallback,
|
|
14561
|
+
ErrorMessage,
|
|
14542
14562
|
Field,
|
|
14543
14563
|
FileInput,
|
|
14544
14564
|
FooterBlock,
|