@braintwopoint0/playback-commons 0.1.10 → 0.1.11
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/ui/index.d.ts +45 -1
- package/dist/ui/index.js +575 -25
- package/dist/ui/index.js.map +1 -1
- package/package.json +5 -2
package/dist/ui/index.d.ts
CHANGED
|
@@ -6,6 +6,8 @@ import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
|
6
6
|
import * as LabelPrimitive from '@radix-ui/react-label';
|
|
7
7
|
import * as DialogPrimitive from '@radix-ui/react-dialog';
|
|
8
8
|
import * as SelectPrimitive from '@radix-ui/react-select';
|
|
9
|
+
import * as PopoverPrimitive from '@radix-ui/react-popover';
|
|
10
|
+
import { DayPicker, DayButton } from 'react-day-picker';
|
|
9
11
|
import * as RechartsPrimitive from 'recharts';
|
|
10
12
|
|
|
11
13
|
declare const buttonVariants: (props?: ({
|
|
@@ -113,6 +115,48 @@ declare const Highlight: ({ children, className, }: {
|
|
|
113
115
|
className?: string;
|
|
114
116
|
}) => react_jsx_runtime.JSX.Element;
|
|
115
117
|
|
|
118
|
+
declare const Popover: React$1.FC<PopoverPrimitive.PopoverProps>;
|
|
119
|
+
declare const PopoverTrigger: React$1.ForwardRefExoticComponent<PopoverPrimitive.PopoverTriggerProps & React$1.RefAttributes<HTMLButtonElement>>;
|
|
120
|
+
declare const PopoverAnchor: React$1.ForwardRefExoticComponent<PopoverPrimitive.PopoverAnchorProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
121
|
+
declare const PopoverContent: React$1.ForwardRefExoticComponent<Omit<PopoverPrimitive.PopoverContentProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
|
|
122
|
+
|
|
123
|
+
declare function Calendar({ className, classNames, showOutsideDays, captionLayout, buttonVariant, formatters, components, ...props }: React$1.ComponentProps<typeof DayPicker> & {
|
|
124
|
+
buttonVariant?: React$1.ComponentProps<typeof Button>['variant'];
|
|
125
|
+
}): react_jsx_runtime.JSX.Element;
|
|
126
|
+
declare function CalendarDayButton({ className, day, modifiers, ...props }: React$1.ComponentProps<typeof DayButton>): react_jsx_runtime.JSX.Element;
|
|
127
|
+
|
|
128
|
+
interface DatePickerProps {
|
|
129
|
+
value: string;
|
|
130
|
+
onChange: (value: string) => void;
|
|
131
|
+
min?: string;
|
|
132
|
+
max?: string;
|
|
133
|
+
className?: string;
|
|
134
|
+
id?: string;
|
|
135
|
+
placeholder?: string;
|
|
136
|
+
}
|
|
137
|
+
declare function DatePicker({ value, onChange, min, max, className, id, placeholder, }: DatePickerProps): react_jsx_runtime.JSX.Element;
|
|
138
|
+
|
|
139
|
+
interface TimePickerProps {
|
|
140
|
+
value?: string;
|
|
141
|
+
onChange?: (value: string) => void;
|
|
142
|
+
placeholder?: string;
|
|
143
|
+
className?: string;
|
|
144
|
+
disabled?: boolean;
|
|
145
|
+
min?: string;
|
|
146
|
+
max?: string;
|
|
147
|
+
}
|
|
148
|
+
declare function TimePicker({ value, onChange, placeholder, className, disabled, min, max, }: TimePickerProps): react_jsx_runtime.JSX.Element;
|
|
149
|
+
|
|
150
|
+
interface DateTimePickerProps {
|
|
151
|
+
value: string;
|
|
152
|
+
onChange: (value: string) => void;
|
|
153
|
+
placeholder?: string;
|
|
154
|
+
className?: string;
|
|
155
|
+
disabled?: boolean;
|
|
156
|
+
required?: boolean;
|
|
157
|
+
}
|
|
158
|
+
declare function DateTimePicker({ value, onChange, placeholder, className, disabled, required, }: DateTimePickerProps): react_jsx_runtime.JSX.Element;
|
|
159
|
+
|
|
116
160
|
declare const THEMES: {
|
|
117
161
|
readonly light: "";
|
|
118
162
|
readonly dark: ".dark";
|
|
@@ -151,4 +195,4 @@ declare function ChartLegendContent({ className, hideIcon, payload, verticalAlig
|
|
|
151
195
|
nameKey?: string;
|
|
152
196
|
}): react_jsx_runtime.JSX.Element | null;
|
|
153
197
|
|
|
154
|
-
export { AnimatedTooltip, Badge, type BadgeProps, Button, type ButtonProps, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, type ChartConfig, ChartContainer, ChartLegend, ChartLegendContent, ChartStyle, ChartTooltip, ChartTooltipContent, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, FlipWords, HeroHighlight, Highlight, HoverCard, HoverCardDescription, HoverCardTitle, HoverEffect, Input, type InputProps, Label, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, badgeVariants, buttonVariants };
|
|
198
|
+
export { AnimatedTooltip, Badge, type BadgeProps, Button, type ButtonProps, Calendar, CalendarDayButton, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, type ChartConfig, ChartContainer, ChartLegend, ChartLegendContent, ChartStyle, ChartTooltip, ChartTooltipContent, DatePicker, DateTimePicker, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, FlipWords, HeroHighlight, Highlight, HoverCard, HoverCardDescription, HoverCardTitle, HoverEffect, Input, type InputProps, Label, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, TimePicker, badgeVariants, buttonVariants };
|
package/dist/ui/index.js
CHANGED
|
@@ -15,7 +15,7 @@ function cn(...inputs) {
|
|
|
15
15
|
// src/ui/button.tsx
|
|
16
16
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
17
17
|
var buttonVariants = cva(
|
|
18
|
-
"inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",
|
|
18
|
+
"inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium cursor-pointer ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",
|
|
19
19
|
{
|
|
20
20
|
variants: {
|
|
21
21
|
variant: {
|
|
@@ -899,14 +899,555 @@ var Highlight = ({
|
|
|
899
899
|
);
|
|
900
900
|
};
|
|
901
901
|
|
|
902
|
-
// src/ui/
|
|
902
|
+
// src/ui/popover.tsx
|
|
903
903
|
import * as React10 from "react";
|
|
904
|
+
import * as PopoverPrimitive from "@radix-ui/react-popover";
|
|
905
|
+
import { jsx as jsx12 } from "react/jsx-runtime";
|
|
906
|
+
var Popover = PopoverPrimitive.Root;
|
|
907
|
+
var PopoverTrigger = PopoverPrimitive.Trigger;
|
|
908
|
+
var PopoverAnchor = PopoverPrimitive.Anchor;
|
|
909
|
+
var PopoverContent = React10.forwardRef(({ className, align = "center", sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx12(PopoverPrimitive.Portal, { children: /* @__PURE__ */ jsx12(
|
|
910
|
+
PopoverPrimitive.Content,
|
|
911
|
+
{
|
|
912
|
+
ref,
|
|
913
|
+
align,
|
|
914
|
+
sideOffset,
|
|
915
|
+
className: cn(
|
|
916
|
+
"z-50 w-72 rounded-md border border-zinc-800 bg-zinc-950 p-4 text-zinc-50 shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-popover-content-transform-origin]",
|
|
917
|
+
className
|
|
918
|
+
),
|
|
919
|
+
...props
|
|
920
|
+
}
|
|
921
|
+
) }));
|
|
922
|
+
PopoverContent.displayName = PopoverPrimitive.Content.displayName;
|
|
923
|
+
|
|
924
|
+
// src/ui/calendar.tsx
|
|
925
|
+
import * as React11 from "react";
|
|
926
|
+
import {
|
|
927
|
+
ChevronDownIcon,
|
|
928
|
+
ChevronLeftIcon,
|
|
929
|
+
ChevronRightIcon
|
|
930
|
+
} from "lucide-react";
|
|
931
|
+
import { DayPicker, getDefaultClassNames } from "react-day-picker";
|
|
932
|
+
import { jsx as jsx13 } from "react/jsx-runtime";
|
|
933
|
+
function Calendar({
|
|
934
|
+
className,
|
|
935
|
+
classNames,
|
|
936
|
+
showOutsideDays = true,
|
|
937
|
+
captionLayout = "label",
|
|
938
|
+
buttonVariant = "ghost",
|
|
939
|
+
formatters,
|
|
940
|
+
components,
|
|
941
|
+
...props
|
|
942
|
+
}) {
|
|
943
|
+
const defaultClassNames = getDefaultClassNames();
|
|
944
|
+
return /* @__PURE__ */ jsx13(
|
|
945
|
+
DayPicker,
|
|
946
|
+
{
|
|
947
|
+
showOutsideDays,
|
|
948
|
+
className: cn(
|
|
949
|
+
"bg-zinc-950 group/calendar p-3 [--cell-size:2rem] [[data-slot=card-content]_&]:bg-transparent [[data-slot=popover-content]_&]:bg-transparent",
|
|
950
|
+
String.raw`rtl:**:[.rdp-button\_next>svg]:rotate-180`,
|
|
951
|
+
String.raw`rtl:**:[.rdp-button\_previous>svg]:rotate-180`,
|
|
952
|
+
className
|
|
953
|
+
),
|
|
954
|
+
captionLayout,
|
|
955
|
+
formatters: {
|
|
956
|
+
formatMonthDropdown: (date) => date.toLocaleString("default", { month: "short" }),
|
|
957
|
+
...formatters
|
|
958
|
+
},
|
|
959
|
+
classNames: {
|
|
960
|
+
root: cn("w-fit", defaultClassNames.root),
|
|
961
|
+
months: cn(
|
|
962
|
+
"relative flex flex-col gap-4 md:flex-row",
|
|
963
|
+
defaultClassNames.months
|
|
964
|
+
),
|
|
965
|
+
month: cn("flex w-full flex-col gap-4", defaultClassNames.month),
|
|
966
|
+
nav: cn(
|
|
967
|
+
"absolute inset-x-0 top-0 flex w-full items-center justify-between gap-1",
|
|
968
|
+
defaultClassNames.nav
|
|
969
|
+
),
|
|
970
|
+
button_previous: cn(
|
|
971
|
+
buttonVariants({ variant: buttonVariant }),
|
|
972
|
+
"h-[--cell-size] w-[--cell-size] select-none p-0 aria-disabled:opacity-50",
|
|
973
|
+
defaultClassNames.button_previous
|
|
974
|
+
),
|
|
975
|
+
button_next: cn(
|
|
976
|
+
buttonVariants({ variant: buttonVariant }),
|
|
977
|
+
"h-[--cell-size] w-[--cell-size] select-none p-0 aria-disabled:opacity-50",
|
|
978
|
+
defaultClassNames.button_next
|
|
979
|
+
),
|
|
980
|
+
month_caption: cn(
|
|
981
|
+
"flex h-[--cell-size] w-full items-center justify-center px-[--cell-size]",
|
|
982
|
+
defaultClassNames.month_caption
|
|
983
|
+
),
|
|
984
|
+
dropdowns: cn(
|
|
985
|
+
"flex h-[--cell-size] w-full items-center justify-center gap-1.5 text-sm font-medium",
|
|
986
|
+
defaultClassNames.dropdowns
|
|
987
|
+
),
|
|
988
|
+
dropdown_root: cn(
|
|
989
|
+
"has-focus:border-zinc-300 border-zinc-800 shadow-xs has-focus:ring-zinc-300/50 has-focus:ring-[3px] relative rounded-md border",
|
|
990
|
+
defaultClassNames.dropdown_root
|
|
991
|
+
),
|
|
992
|
+
dropdown: cn("absolute inset-0 opacity-0", defaultClassNames.dropdown),
|
|
993
|
+
caption_label: cn(
|
|
994
|
+
"select-none font-medium",
|
|
995
|
+
captionLayout === "label" ? "text-sm" : "[&>svg]:text-zinc-400 flex h-8 items-center gap-1 rounded-md pl-2 pr-1 text-sm [&>svg]:size-3.5",
|
|
996
|
+
defaultClassNames.caption_label
|
|
997
|
+
),
|
|
998
|
+
table: "w-full border-collapse",
|
|
999
|
+
weekdays: cn("flex", defaultClassNames.weekdays),
|
|
1000
|
+
weekday: cn(
|
|
1001
|
+
"text-zinc-400 flex-1 select-none rounded-md text-[0.8rem] font-normal",
|
|
1002
|
+
defaultClassNames.weekday
|
|
1003
|
+
),
|
|
1004
|
+
week: cn("mt-2 flex w-full", defaultClassNames.week),
|
|
1005
|
+
week_number_header: cn(
|
|
1006
|
+
"w-[--cell-size] select-none",
|
|
1007
|
+
defaultClassNames.week_number_header
|
|
1008
|
+
),
|
|
1009
|
+
week_number: cn(
|
|
1010
|
+
"text-zinc-400 select-none text-[0.8rem]",
|
|
1011
|
+
defaultClassNames.week_number
|
|
1012
|
+
),
|
|
1013
|
+
day: cn(
|
|
1014
|
+
"group/day relative aspect-square h-full w-full select-none p-0 text-center [&:first-child[data-selected=true]_button]:rounded-l-md [&:last-child[data-selected=true]_button]:rounded-r-md",
|
|
1015
|
+
defaultClassNames.day
|
|
1016
|
+
),
|
|
1017
|
+
range_start: cn(
|
|
1018
|
+
"bg-zinc-800 rounded-l-md",
|
|
1019
|
+
defaultClassNames.range_start
|
|
1020
|
+
),
|
|
1021
|
+
range_middle: cn("rounded-none", defaultClassNames.range_middle),
|
|
1022
|
+
range_end: cn("bg-zinc-800 rounded-r-md", defaultClassNames.range_end),
|
|
1023
|
+
today: cn(
|
|
1024
|
+
"bg-zinc-800 text-zinc-50 rounded-md data-[selected=true]:rounded-none",
|
|
1025
|
+
defaultClassNames.today
|
|
1026
|
+
),
|
|
1027
|
+
outside: cn(
|
|
1028
|
+
"text-zinc-400 aria-selected:text-zinc-400",
|
|
1029
|
+
defaultClassNames.outside
|
|
1030
|
+
),
|
|
1031
|
+
disabled: cn("text-zinc-400 opacity-50", defaultClassNames.disabled),
|
|
1032
|
+
hidden: cn("invisible", defaultClassNames.hidden),
|
|
1033
|
+
...classNames
|
|
1034
|
+
},
|
|
1035
|
+
components: {
|
|
1036
|
+
Root: ({ className: className2, rootRef, ...props2 }) => {
|
|
1037
|
+
return /* @__PURE__ */ jsx13(
|
|
1038
|
+
"div",
|
|
1039
|
+
{
|
|
1040
|
+
"data-slot": "calendar",
|
|
1041
|
+
ref: rootRef,
|
|
1042
|
+
className: cn(className2),
|
|
1043
|
+
...props2
|
|
1044
|
+
}
|
|
1045
|
+
);
|
|
1046
|
+
},
|
|
1047
|
+
Chevron: ({ className: className2, orientation, ...props2 }) => {
|
|
1048
|
+
if (orientation === "left") {
|
|
1049
|
+
return /* @__PURE__ */ jsx13(ChevronLeftIcon, { className: cn("size-4", className2), ...props2 });
|
|
1050
|
+
}
|
|
1051
|
+
if (orientation === "right") {
|
|
1052
|
+
return /* @__PURE__ */ jsx13(
|
|
1053
|
+
ChevronRightIcon,
|
|
1054
|
+
{
|
|
1055
|
+
className: cn("size-4", className2),
|
|
1056
|
+
...props2
|
|
1057
|
+
}
|
|
1058
|
+
);
|
|
1059
|
+
}
|
|
1060
|
+
return /* @__PURE__ */ jsx13(ChevronDownIcon, { className: cn("size-4", className2), ...props2 });
|
|
1061
|
+
},
|
|
1062
|
+
DayButton: CalendarDayButton,
|
|
1063
|
+
WeekNumber: ({ children, ...props2 }) => {
|
|
1064
|
+
return /* @__PURE__ */ jsx13("td", { ...props2, children: /* @__PURE__ */ jsx13("div", { className: "flex size-[--cell-size] items-center justify-center text-center", children }) });
|
|
1065
|
+
},
|
|
1066
|
+
...components
|
|
1067
|
+
},
|
|
1068
|
+
...props
|
|
1069
|
+
}
|
|
1070
|
+
);
|
|
1071
|
+
}
|
|
1072
|
+
function CalendarDayButton({
|
|
1073
|
+
className,
|
|
1074
|
+
day,
|
|
1075
|
+
modifiers,
|
|
1076
|
+
...props
|
|
1077
|
+
}) {
|
|
1078
|
+
const defaultClassNames = getDefaultClassNames();
|
|
1079
|
+
const ref = React11.useRef(null);
|
|
1080
|
+
React11.useEffect(() => {
|
|
1081
|
+
if (modifiers.focused) ref.current?.focus();
|
|
1082
|
+
}, [modifiers.focused]);
|
|
1083
|
+
return /* @__PURE__ */ jsx13(
|
|
1084
|
+
Button,
|
|
1085
|
+
{
|
|
1086
|
+
ref,
|
|
1087
|
+
variant: "ghost",
|
|
1088
|
+
size: "icon",
|
|
1089
|
+
"data-day": day.date.toLocaleDateString(),
|
|
1090
|
+
"data-selected-single": modifiers.selected && !modifiers.range_start && !modifiers.range_end && !modifiers.range_middle,
|
|
1091
|
+
"data-range-start": modifiers.range_start,
|
|
1092
|
+
"data-range-end": modifiers.range_end,
|
|
1093
|
+
"data-range-middle": modifiers.range_middle,
|
|
1094
|
+
className: cn(
|
|
1095
|
+
"data-[selected-single=true]:bg-zinc-50 data-[selected-single=true]:text-zinc-900 data-[range-middle=true]:bg-zinc-800 data-[range-middle=true]:text-zinc-50 data-[range-start=true]:bg-zinc-50 data-[range-start=true]:text-zinc-900 data-[range-end=true]:bg-zinc-50 data-[range-end=true]:text-zinc-900 group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-ring/50 flex aspect-square h-auto w-full min-w-[--cell-size] flex-col gap-1 font-normal leading-none data-[range-end=true]:rounded-md data-[range-middle=true]:rounded-none data-[range-start=true]:rounded-md group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:ring-[3px] [&>span]:text-xs [&>span]:opacity-70",
|
|
1096
|
+
defaultClassNames.day,
|
|
1097
|
+
className
|
|
1098
|
+
),
|
|
1099
|
+
...props
|
|
1100
|
+
}
|
|
1101
|
+
);
|
|
1102
|
+
}
|
|
1103
|
+
|
|
1104
|
+
// src/ui/date-picker.tsx
|
|
1105
|
+
import * as React12 from "react";
|
|
1106
|
+
import { CalendarIcon } from "lucide-react";
|
|
1107
|
+
import { jsx as jsx14, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
1108
|
+
function DatePicker({
|
|
1109
|
+
value,
|
|
1110
|
+
onChange,
|
|
1111
|
+
min,
|
|
1112
|
+
max,
|
|
1113
|
+
className,
|
|
1114
|
+
id,
|
|
1115
|
+
placeholder = "Pick a date"
|
|
1116
|
+
}) {
|
|
1117
|
+
const [open, setOpen] = React12.useState(false);
|
|
1118
|
+
const selectedDate = value ? /* @__PURE__ */ new Date(value + "T00:00:00") : void 0;
|
|
1119
|
+
const minDate = min ? /* @__PURE__ */ new Date(min + "T00:00:00") : void 0;
|
|
1120
|
+
const maxDate = max ? /* @__PURE__ */ new Date(max + "T00:00:00") : void 0;
|
|
1121
|
+
const formatDate2 = (date) => {
|
|
1122
|
+
return date.toLocaleDateString("en-GB", {
|
|
1123
|
+
day: "2-digit",
|
|
1124
|
+
month: "short",
|
|
1125
|
+
year: "numeric"
|
|
1126
|
+
});
|
|
1127
|
+
};
|
|
1128
|
+
const handleDateSelect = (date) => {
|
|
1129
|
+
if (date) {
|
|
1130
|
+
const year = date.getFullYear();
|
|
1131
|
+
const month = String(date.getMonth() + 1).padStart(2, "0");
|
|
1132
|
+
const day = String(date.getDate()).padStart(2, "0");
|
|
1133
|
+
onChange(`${year}-${month}-${day}`);
|
|
1134
|
+
setOpen(false);
|
|
1135
|
+
}
|
|
1136
|
+
};
|
|
1137
|
+
return /* @__PURE__ */ jsxs8(Popover, { open, onOpenChange: setOpen, children: [
|
|
1138
|
+
/* @__PURE__ */ jsx14(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsxs8(
|
|
1139
|
+
Button,
|
|
1140
|
+
{
|
|
1141
|
+
id,
|
|
1142
|
+
variant: "outline",
|
|
1143
|
+
className: cn(
|
|
1144
|
+
"w-full justify-start text-left font-normal h-10 bg-zinc-800 border-none text-white shadow-input rounded-md px-3 py-2 text-sm",
|
|
1145
|
+
"focus-visible:outline-none focus-visible:ring-[2px] focus-visible:ring-neutral-600",
|
|
1146
|
+
"shadow-[0px_0px_1px_1px_var(--neutral-700)]",
|
|
1147
|
+
"hover:shadow-none transition duration-400",
|
|
1148
|
+
!selectedDate && "text-neutral-400",
|
|
1149
|
+
className
|
|
1150
|
+
),
|
|
1151
|
+
children: [
|
|
1152
|
+
/* @__PURE__ */ jsx14(CalendarIcon, { className: "mr-2 h-4 w-4" }),
|
|
1153
|
+
selectedDate ? formatDate2(selectedDate) : /* @__PURE__ */ jsx14("span", { children: placeholder })
|
|
1154
|
+
]
|
|
1155
|
+
}
|
|
1156
|
+
) }),
|
|
1157
|
+
/* @__PURE__ */ jsx14(PopoverContent, { className: "w-auto p-0", align: "start", children: /* @__PURE__ */ jsx14(
|
|
1158
|
+
Calendar,
|
|
1159
|
+
{
|
|
1160
|
+
mode: "single",
|
|
1161
|
+
selected: selectedDate,
|
|
1162
|
+
onSelect: handleDateSelect,
|
|
1163
|
+
disabled: (date) => {
|
|
1164
|
+
const dateAtMidnight = new Date(
|
|
1165
|
+
date.getFullYear(),
|
|
1166
|
+
date.getMonth(),
|
|
1167
|
+
date.getDate()
|
|
1168
|
+
);
|
|
1169
|
+
if (minDate) {
|
|
1170
|
+
const minDateAtMidnight = new Date(
|
|
1171
|
+
minDate.getFullYear(),
|
|
1172
|
+
minDate.getMonth(),
|
|
1173
|
+
minDate.getDate()
|
|
1174
|
+
);
|
|
1175
|
+
if (dateAtMidnight < minDateAtMidnight) return true;
|
|
1176
|
+
}
|
|
1177
|
+
if (maxDate) {
|
|
1178
|
+
const maxDateAtMidnight = new Date(
|
|
1179
|
+
maxDate.getFullYear(),
|
|
1180
|
+
maxDate.getMonth(),
|
|
1181
|
+
maxDate.getDate()
|
|
1182
|
+
);
|
|
1183
|
+
if (dateAtMidnight > maxDateAtMidnight) return true;
|
|
1184
|
+
}
|
|
1185
|
+
return false;
|
|
1186
|
+
},
|
|
1187
|
+
initialFocus: true
|
|
1188
|
+
}
|
|
1189
|
+
) })
|
|
1190
|
+
] });
|
|
1191
|
+
}
|
|
1192
|
+
|
|
1193
|
+
// src/ui/time-picker.tsx
|
|
1194
|
+
import * as React13 from "react";
|
|
1195
|
+
import { ClockIcon } from "lucide-react";
|
|
1196
|
+
import { jsx as jsx15, jsxs as jsxs9 } from "react/jsx-runtime";
|
|
1197
|
+
function TimePicker({
|
|
1198
|
+
value,
|
|
1199
|
+
onChange,
|
|
1200
|
+
placeholder = "Select time",
|
|
1201
|
+
className,
|
|
1202
|
+
disabled = false,
|
|
1203
|
+
min,
|
|
1204
|
+
max
|
|
1205
|
+
}) {
|
|
1206
|
+
const [open, setOpen] = React13.useState(false);
|
|
1207
|
+
const [hours, setHours] = React13.useState(
|
|
1208
|
+
value ? parseInt(value.split(":")[0]) : 9
|
|
1209
|
+
);
|
|
1210
|
+
const [minutes, setMinutes] = React13.useState(
|
|
1211
|
+
value ? parseInt(value.split(":")[1]) : 0
|
|
1212
|
+
);
|
|
1213
|
+
const formatTime = (h, m) => {
|
|
1214
|
+
return `${h.toString().padStart(2, "0")}:${m.toString().padStart(2, "0")}`;
|
|
1215
|
+
};
|
|
1216
|
+
const handleTimeSelect = (h, m) => {
|
|
1217
|
+
const timeString = formatTime(h, m);
|
|
1218
|
+
setHours(h);
|
|
1219
|
+
setMinutes(m);
|
|
1220
|
+
onChange?.(timeString);
|
|
1221
|
+
setOpen(false);
|
|
1222
|
+
};
|
|
1223
|
+
const generateTimeOptions = () => {
|
|
1224
|
+
const options = [];
|
|
1225
|
+
for (let h = 6; h <= 23; h++) {
|
|
1226
|
+
for (let m = 0; m < 60; m += 15) {
|
|
1227
|
+
const timeString = formatTime(h, m);
|
|
1228
|
+
if (min && timeString < min) continue;
|
|
1229
|
+
if (max && timeString > max) continue;
|
|
1230
|
+
options.push({ hours: h, minutes: m, display: timeString });
|
|
1231
|
+
}
|
|
1232
|
+
}
|
|
1233
|
+
return options;
|
|
1234
|
+
};
|
|
1235
|
+
const timeOptions = generateTimeOptions();
|
|
1236
|
+
const displayValue = value || "";
|
|
1237
|
+
return /* @__PURE__ */ jsxs9(Popover, { open, onOpenChange: setOpen, children: [
|
|
1238
|
+
/* @__PURE__ */ jsx15(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsxs9(
|
|
1239
|
+
Button,
|
|
1240
|
+
{
|
|
1241
|
+
variant: "outline",
|
|
1242
|
+
className: cn(
|
|
1243
|
+
"w-full justify-start text-left font-normal h-10 bg-zinc-800 border-none text-white shadow-input rounded-md px-3 py-2 text-sm",
|
|
1244
|
+
"focus-visible:outline-none focus-visible:ring-[2px] focus-visible:ring-neutral-600",
|
|
1245
|
+
"shadow-[0px_0px_1px_1px_var(--neutral-700)]",
|
|
1246
|
+
"hover:shadow-none transition duration-400",
|
|
1247
|
+
!value && "text-neutral-400",
|
|
1248
|
+
className
|
|
1249
|
+
),
|
|
1250
|
+
disabled,
|
|
1251
|
+
children: [
|
|
1252
|
+
/* @__PURE__ */ jsx15(ClockIcon, { className: "mr-2 h-4 w-4" }),
|
|
1253
|
+
displayValue || placeholder
|
|
1254
|
+
]
|
|
1255
|
+
}
|
|
1256
|
+
) }),
|
|
1257
|
+
/* @__PURE__ */ jsx15(PopoverContent, { className: "w-auto p-0", align: "start", children: /* @__PURE__ */ jsx15("div", { className: "max-h-60 overflow-y-auto", children: /* @__PURE__ */ jsx15("div", { className: "grid grid-cols-1 gap-1 p-2", children: timeOptions.map(({ hours: h, minutes: m, display }) => /* @__PURE__ */ jsx15(
|
|
1258
|
+
Button,
|
|
1259
|
+
{
|
|
1260
|
+
variant: value === display ? "default" : "ghost",
|
|
1261
|
+
className: "justify-start text-left h-8 text-sm",
|
|
1262
|
+
onClick: () => handleTimeSelect(h, m),
|
|
1263
|
+
children: display
|
|
1264
|
+
},
|
|
1265
|
+
display
|
|
1266
|
+
)) }) }) })
|
|
1267
|
+
] });
|
|
1268
|
+
}
|
|
1269
|
+
|
|
1270
|
+
// src/ui/datetime-picker.tsx
|
|
1271
|
+
import * as React14 from "react";
|
|
1272
|
+
import { CalendarIcon as CalendarIcon2 } from "lucide-react";
|
|
1273
|
+
import { jsx as jsx16, jsxs as jsxs10 } from "react/jsx-runtime";
|
|
1274
|
+
function DateTimePicker({
|
|
1275
|
+
value,
|
|
1276
|
+
onChange,
|
|
1277
|
+
placeholder = "Pick date & time",
|
|
1278
|
+
className,
|
|
1279
|
+
disabled = false,
|
|
1280
|
+
required = false
|
|
1281
|
+
}) {
|
|
1282
|
+
const [open, setOpen] = React14.useState(false);
|
|
1283
|
+
const hourRef = React14.useRef(null);
|
|
1284
|
+
const minuteRef = React14.useRef(null);
|
|
1285
|
+
const datePart = value ? value.split("T")[0] : "";
|
|
1286
|
+
const timePart = value ? value.split("T")[1] || "" : "";
|
|
1287
|
+
const selectedHour = timePart ? parseInt(timePart.split(":")[0]) : -1;
|
|
1288
|
+
const selectedMinute = timePart ? parseInt(timePart.split(":")[1]) : -1;
|
|
1289
|
+
const selectedDate = datePart ? /* @__PURE__ */ new Date(datePart + "T00:00:00") : void 0;
|
|
1290
|
+
const formatDisplay = (val) => {
|
|
1291
|
+
if (!val) return "";
|
|
1292
|
+
const [d, t] = val.split("T");
|
|
1293
|
+
if (!d) return "";
|
|
1294
|
+
const date = /* @__PURE__ */ new Date(d + "T00:00:00");
|
|
1295
|
+
const dateStr = date.toLocaleDateString("en-GB", {
|
|
1296
|
+
day: "2-digit",
|
|
1297
|
+
month: "short",
|
|
1298
|
+
year: "numeric"
|
|
1299
|
+
});
|
|
1300
|
+
if (!t) return dateStr;
|
|
1301
|
+
return `${dateStr}, ${t}`;
|
|
1302
|
+
};
|
|
1303
|
+
const buildValue = (date, hour, minute) => {
|
|
1304
|
+
const h = hour.toString().padStart(2, "0");
|
|
1305
|
+
const m = minute.toString().padStart(2, "0");
|
|
1306
|
+
return `${date}T${h}:${m}`;
|
|
1307
|
+
};
|
|
1308
|
+
const handleDateSelect = (date) => {
|
|
1309
|
+
if (!date) return;
|
|
1310
|
+
const year = date.getFullYear();
|
|
1311
|
+
const month = String(date.getMonth() + 1).padStart(2, "0");
|
|
1312
|
+
const day = String(date.getDate()).padStart(2, "0");
|
|
1313
|
+
const newDate = `${year}-${month}-${day}`;
|
|
1314
|
+
const h = selectedHour >= 0 ? selectedHour : 12;
|
|
1315
|
+
const m = selectedMinute >= 0 ? selectedMinute : 0;
|
|
1316
|
+
onChange(buildValue(newDate, h, m));
|
|
1317
|
+
};
|
|
1318
|
+
const handleHourSelect = (h) => {
|
|
1319
|
+
if (!datePart) {
|
|
1320
|
+
const now = /* @__PURE__ */ new Date();
|
|
1321
|
+
const year = now.getFullYear();
|
|
1322
|
+
const month = String(now.getMonth() + 1).padStart(2, "0");
|
|
1323
|
+
const day = String(now.getDate()).padStart(2, "0");
|
|
1324
|
+
const m = selectedMinute >= 0 ? selectedMinute : 0;
|
|
1325
|
+
onChange(buildValue(`${year}-${month}-${day}`, h, m));
|
|
1326
|
+
} else {
|
|
1327
|
+
const m = selectedMinute >= 0 ? selectedMinute : 0;
|
|
1328
|
+
onChange(buildValue(datePart, h, m));
|
|
1329
|
+
}
|
|
1330
|
+
};
|
|
1331
|
+
const handleMinuteSelect = (m) => {
|
|
1332
|
+
if (!datePart) {
|
|
1333
|
+
const now = /* @__PURE__ */ new Date();
|
|
1334
|
+
const year = now.getFullYear();
|
|
1335
|
+
const month = String(now.getMonth() + 1).padStart(2, "0");
|
|
1336
|
+
const day = String(now.getDate()).padStart(2, "0");
|
|
1337
|
+
const h = selectedHour >= 0 ? selectedHour : 12;
|
|
1338
|
+
onChange(buildValue(`${year}-${month}-${day}`, h, m));
|
|
1339
|
+
} else {
|
|
1340
|
+
const h = selectedHour >= 0 ? selectedHour : 12;
|
|
1341
|
+
onChange(buildValue(datePart, h, m));
|
|
1342
|
+
}
|
|
1343
|
+
};
|
|
1344
|
+
React14.useEffect(() => {
|
|
1345
|
+
if (open) {
|
|
1346
|
+
setTimeout(() => {
|
|
1347
|
+
if (hourRef.current && selectedHour >= 0) {
|
|
1348
|
+
const el = hourRef.current.querySelector(`[data-hour="${selectedHour}"]`);
|
|
1349
|
+
el?.scrollIntoView({ block: "center" });
|
|
1350
|
+
}
|
|
1351
|
+
if (minuteRef.current && selectedMinute >= 0) {
|
|
1352
|
+
const el = minuteRef.current.querySelector(`[data-minute="${selectedMinute}"]`);
|
|
1353
|
+
el?.scrollIntoView({ block: "center" });
|
|
1354
|
+
}
|
|
1355
|
+
}, 50);
|
|
1356
|
+
}
|
|
1357
|
+
}, [open, selectedHour, selectedMinute]);
|
|
1358
|
+
return /* @__PURE__ */ jsxs10(Popover, { open, onOpenChange: setOpen, children: [
|
|
1359
|
+
/* @__PURE__ */ jsx16(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsxs10(
|
|
1360
|
+
Button,
|
|
1361
|
+
{
|
|
1362
|
+
type: "button",
|
|
1363
|
+
variant: "outline",
|
|
1364
|
+
disabled,
|
|
1365
|
+
className: cn(
|
|
1366
|
+
"w-full justify-start text-left font-normal h-10 bg-zinc-800 border-none text-white shadow-input rounded-md px-3 py-2 text-sm",
|
|
1367
|
+
"focus-visible:outline-none focus-visible:ring-[2px] focus-visible:ring-neutral-600",
|
|
1368
|
+
"shadow-[0px_0px_1px_1px_var(--neutral-700)]",
|
|
1369
|
+
"hover:shadow-none transition duration-400",
|
|
1370
|
+
!value && "text-neutral-400",
|
|
1371
|
+
className
|
|
1372
|
+
),
|
|
1373
|
+
children: [
|
|
1374
|
+
/* @__PURE__ */ jsx16(CalendarIcon2, { className: "mr-2 h-4 w-4 shrink-0" }),
|
|
1375
|
+
value ? formatDisplay(value) : /* @__PURE__ */ jsx16("span", { children: placeholder })
|
|
1376
|
+
]
|
|
1377
|
+
}
|
|
1378
|
+
) }),
|
|
1379
|
+
/* @__PURE__ */ jsx16(PopoverContent, { className: "w-auto p-0", align: "start", children: /* @__PURE__ */ jsxs10("div", { className: "flex", children: [
|
|
1380
|
+
/* @__PURE__ */ jsx16(
|
|
1381
|
+
Calendar,
|
|
1382
|
+
{
|
|
1383
|
+
mode: "single",
|
|
1384
|
+
selected: selectedDate,
|
|
1385
|
+
onSelect: handleDateSelect,
|
|
1386
|
+
initialFocus: true
|
|
1387
|
+
}
|
|
1388
|
+
),
|
|
1389
|
+
/* @__PURE__ */ jsxs10("div", { className: "flex border-l border-zinc-800", children: [
|
|
1390
|
+
/* @__PURE__ */ jsxs10(
|
|
1391
|
+
"div",
|
|
1392
|
+
{
|
|
1393
|
+
ref: hourRef,
|
|
1394
|
+
className: "h-[280px] w-16 overflow-y-auto p-1",
|
|
1395
|
+
children: [
|
|
1396
|
+
/* @__PURE__ */ jsx16("div", { className: "px-1 py-1.5 text-center text-xs text-zinc-400 font-medium", children: "Hr" }),
|
|
1397
|
+
Array.from({ length: 24 }, (_, i) => /* @__PURE__ */ jsx16(
|
|
1398
|
+
"button",
|
|
1399
|
+
{
|
|
1400
|
+
"data-hour": i,
|
|
1401
|
+
type: "button",
|
|
1402
|
+
onClick: () => handleHourSelect(i),
|
|
1403
|
+
className: cn(
|
|
1404
|
+
"w-full rounded-md px-2 py-1.5 text-sm text-center cursor-pointer transition-colors",
|
|
1405
|
+
selectedHour === i ? "bg-zinc-50 text-zinc-900 font-medium" : "text-zinc-300 hover:bg-zinc-800"
|
|
1406
|
+
),
|
|
1407
|
+
children: i.toString().padStart(2, "0")
|
|
1408
|
+
},
|
|
1409
|
+
i
|
|
1410
|
+
))
|
|
1411
|
+
]
|
|
1412
|
+
}
|
|
1413
|
+
),
|
|
1414
|
+
/* @__PURE__ */ jsxs10(
|
|
1415
|
+
"div",
|
|
1416
|
+
{
|
|
1417
|
+
ref: minuteRef,
|
|
1418
|
+
className: "h-[280px] w-16 overflow-y-auto border-l border-zinc-800 p-1",
|
|
1419
|
+
children: [
|
|
1420
|
+
/* @__PURE__ */ jsx16("div", { className: "px-1 py-1.5 text-center text-xs text-zinc-400 font-medium", children: "Min" }),
|
|
1421
|
+
Array.from({ length: 12 }, (_, i) => i * 5).map((m) => /* @__PURE__ */ jsx16(
|
|
1422
|
+
"button",
|
|
1423
|
+
{
|
|
1424
|
+
"data-minute": m,
|
|
1425
|
+
type: "button",
|
|
1426
|
+
onClick: () => handleMinuteSelect(m),
|
|
1427
|
+
className: cn(
|
|
1428
|
+
"w-full rounded-md px-2 py-1.5 text-sm text-center cursor-pointer transition-colors",
|
|
1429
|
+
selectedMinute === m ? "bg-zinc-50 text-zinc-900 font-medium" : "text-zinc-300 hover:bg-zinc-800"
|
|
1430
|
+
),
|
|
1431
|
+
children: m.toString().padStart(2, "0")
|
|
1432
|
+
},
|
|
1433
|
+
m
|
|
1434
|
+
))
|
|
1435
|
+
]
|
|
1436
|
+
}
|
|
1437
|
+
)
|
|
1438
|
+
] })
|
|
1439
|
+
] }) })
|
|
1440
|
+
] });
|
|
1441
|
+
}
|
|
1442
|
+
|
|
1443
|
+
// src/ui/chart.tsx
|
|
1444
|
+
import * as React15 from "react";
|
|
904
1445
|
import * as RechartsPrimitive from "recharts";
|
|
905
|
-
import { Fragment as Fragment3, jsx as
|
|
1446
|
+
import { Fragment as Fragment3, jsx as jsx17, jsxs as jsxs11 } from "react/jsx-runtime";
|
|
906
1447
|
var THEMES = { light: "", dark: ".dark" };
|
|
907
|
-
var ChartContext =
|
|
1448
|
+
var ChartContext = React15.createContext(null);
|
|
908
1449
|
function useChart() {
|
|
909
|
-
const context =
|
|
1450
|
+
const context = React15.useContext(ChartContext);
|
|
910
1451
|
if (!context) {
|
|
911
1452
|
throw new Error("useChart must be used within a <ChartContainer />");
|
|
912
1453
|
}
|
|
@@ -919,9 +1460,9 @@ function ChartContainer({
|
|
|
919
1460
|
config,
|
|
920
1461
|
...props
|
|
921
1462
|
}) {
|
|
922
|
-
const uniqueId =
|
|
1463
|
+
const uniqueId = React15.useId();
|
|
923
1464
|
const chartId = `chart-${id || uniqueId.replace(/:/g, "")}`;
|
|
924
|
-
return /* @__PURE__ */
|
|
1465
|
+
return /* @__PURE__ */ jsx17(ChartContext.Provider, { value: { config }, children: /* @__PURE__ */ jsxs11(
|
|
925
1466
|
"div",
|
|
926
1467
|
{
|
|
927
1468
|
"data-slot": "chart",
|
|
@@ -932,8 +1473,8 @@ function ChartContainer({
|
|
|
932
1473
|
),
|
|
933
1474
|
...props,
|
|
934
1475
|
children: [
|
|
935
|
-
/* @__PURE__ */
|
|
936
|
-
/* @__PURE__ */
|
|
1476
|
+
/* @__PURE__ */ jsx17(ChartStyle, { id: chartId, config }),
|
|
1477
|
+
/* @__PURE__ */ jsx17(RechartsPrimitive.ResponsiveContainer, { children })
|
|
937
1478
|
]
|
|
938
1479
|
}
|
|
939
1480
|
) });
|
|
@@ -945,7 +1486,7 @@ var ChartStyle = ({ id, config }) => {
|
|
|
945
1486
|
if (!colorConfig.length) {
|
|
946
1487
|
return null;
|
|
947
1488
|
}
|
|
948
|
-
return /* @__PURE__ */
|
|
1489
|
+
return /* @__PURE__ */ jsx17(
|
|
949
1490
|
"style",
|
|
950
1491
|
{
|
|
951
1492
|
dangerouslySetInnerHTML: {
|
|
@@ -980,7 +1521,7 @@ function ChartTooltipContent({
|
|
|
980
1521
|
labelKey
|
|
981
1522
|
}) {
|
|
982
1523
|
const { config } = useChart();
|
|
983
|
-
const tooltipLabel =
|
|
1524
|
+
const tooltipLabel = React15.useMemo(() => {
|
|
984
1525
|
if (hideLabel || !payload?.length) {
|
|
985
1526
|
return null;
|
|
986
1527
|
}
|
|
@@ -989,12 +1530,12 @@ function ChartTooltipContent({
|
|
|
989
1530
|
const itemConfig = getPayloadConfigFromPayload(config, item, key);
|
|
990
1531
|
const value = !labelKey && typeof label === "string" ? config[label]?.label || label : itemConfig?.label;
|
|
991
1532
|
if (labelFormatter) {
|
|
992
|
-
return /* @__PURE__ */
|
|
1533
|
+
return /* @__PURE__ */ jsx17("div", { className: cn("font-medium", labelClassName), children: labelFormatter(value, payload) });
|
|
993
1534
|
}
|
|
994
1535
|
if (!value) {
|
|
995
1536
|
return null;
|
|
996
1537
|
}
|
|
997
|
-
return /* @__PURE__ */
|
|
1538
|
+
return /* @__PURE__ */ jsx17("div", { className: cn("font-medium", labelClassName), children: value });
|
|
998
1539
|
}, [
|
|
999
1540
|
label,
|
|
1000
1541
|
labelFormatter,
|
|
@@ -1008,7 +1549,7 @@ function ChartTooltipContent({
|
|
|
1008
1549
|
return null;
|
|
1009
1550
|
}
|
|
1010
1551
|
const nestLabel = payload.length === 1 && indicator !== "dot";
|
|
1011
|
-
return /* @__PURE__ */
|
|
1552
|
+
return /* @__PURE__ */ jsxs11(
|
|
1012
1553
|
"div",
|
|
1013
1554
|
{
|
|
1014
1555
|
className: cn(
|
|
@@ -1017,19 +1558,19 @@ function ChartTooltipContent({
|
|
|
1017
1558
|
),
|
|
1018
1559
|
children: [
|
|
1019
1560
|
!nestLabel ? tooltipLabel : null,
|
|
1020
|
-
/* @__PURE__ */
|
|
1561
|
+
/* @__PURE__ */ jsx17("div", { className: "grid gap-1.5", children: payload.filter((item) => item.type !== "none").map((item, index) => {
|
|
1021
1562
|
const key = `${nameKey || item.name || item.dataKey || "value"}`;
|
|
1022
1563
|
const itemConfig = getPayloadConfigFromPayload(config, item, key);
|
|
1023
1564
|
const indicatorColor = color || item.payload.fill || item.color;
|
|
1024
|
-
return /* @__PURE__ */
|
|
1565
|
+
return /* @__PURE__ */ jsx17(
|
|
1025
1566
|
"div",
|
|
1026
1567
|
{
|
|
1027
1568
|
className: cn(
|
|
1028
1569
|
"flex w-full flex-wrap items-stretch gap-2",
|
|
1029
1570
|
indicator === "dot" && "items-center"
|
|
1030
1571
|
),
|
|
1031
|
-
children: formatter && item?.value !== void 0 && item.name ? formatter(item.value, item.name, item, index, item.payload) : /* @__PURE__ */
|
|
1032
|
-
itemConfig?.icon ? /* @__PURE__ */
|
|
1572
|
+
children: formatter && item?.value !== void 0 && item.name ? formatter(item.value, item.name, item, index, item.payload) : /* @__PURE__ */ jsxs11(Fragment3, { children: [
|
|
1573
|
+
itemConfig?.icon ? /* @__PURE__ */ jsx17(itemConfig.icon, {}) : !hideIndicator && /* @__PURE__ */ jsx17(
|
|
1033
1574
|
"div",
|
|
1034
1575
|
{
|
|
1035
1576
|
className: cn(
|
|
@@ -1047,7 +1588,7 @@ function ChartTooltipContent({
|
|
|
1047
1588
|
}
|
|
1048
1589
|
}
|
|
1049
1590
|
),
|
|
1050
|
-
/* @__PURE__ */
|
|
1591
|
+
/* @__PURE__ */ jsxs11(
|
|
1051
1592
|
"div",
|
|
1052
1593
|
{
|
|
1053
1594
|
className: cn(
|
|
@@ -1055,11 +1596,11 @@ function ChartTooltipContent({
|
|
|
1055
1596
|
nestLabel ? "items-end" : "items-center"
|
|
1056
1597
|
),
|
|
1057
1598
|
children: [
|
|
1058
|
-
/* @__PURE__ */
|
|
1599
|
+
/* @__PURE__ */ jsxs11("div", { className: "grid gap-1.5", children: [
|
|
1059
1600
|
nestLabel ? tooltipLabel : null,
|
|
1060
|
-
/* @__PURE__ */
|
|
1601
|
+
/* @__PURE__ */ jsx17("span", { className: "text-[var(--ash-grey)]", children: itemConfig?.label || item.name })
|
|
1061
1602
|
] }),
|
|
1062
|
-
item.value && /* @__PURE__ */
|
|
1603
|
+
item.value && /* @__PURE__ */ jsx17("span", { className: "text-[var(--timberwolf)] font-mono font-medium tabular-nums", children: item.value.toLocaleString() })
|
|
1063
1604
|
]
|
|
1064
1605
|
}
|
|
1065
1606
|
)
|
|
@@ -1084,7 +1625,7 @@ function ChartLegendContent({
|
|
|
1084
1625
|
if (!payload?.length) {
|
|
1085
1626
|
return null;
|
|
1086
1627
|
}
|
|
1087
|
-
return /* @__PURE__ */
|
|
1628
|
+
return /* @__PURE__ */ jsx17(
|
|
1088
1629
|
"div",
|
|
1089
1630
|
{
|
|
1090
1631
|
className: cn(
|
|
@@ -1095,14 +1636,14 @@ function ChartLegendContent({
|
|
|
1095
1636
|
children: payload.filter((item) => item.type !== "none").map((item) => {
|
|
1096
1637
|
const key = `${nameKey || item.dataKey || "value"}`;
|
|
1097
1638
|
const itemConfig = getPayloadConfigFromPayload(config, item, key);
|
|
1098
|
-
return /* @__PURE__ */
|
|
1639
|
+
return /* @__PURE__ */ jsxs11(
|
|
1099
1640
|
"div",
|
|
1100
1641
|
{
|
|
1101
1642
|
className: cn(
|
|
1102
1643
|
"flex items-center gap-1.5 text-[var(--ash-grey)]"
|
|
1103
1644
|
),
|
|
1104
1645
|
children: [
|
|
1105
|
-
itemConfig?.icon && !hideIcon ? /* @__PURE__ */
|
|
1646
|
+
itemConfig?.icon && !hideIcon ? /* @__PURE__ */ jsx17(itemConfig.icon, {}) : /* @__PURE__ */ jsx17(
|
|
1106
1647
|
"div",
|
|
1107
1648
|
{
|
|
1108
1649
|
className: "h-2 w-2 shrink-0 rounded-[2px]",
|
|
@@ -1137,6 +1678,8 @@ export {
|
|
|
1137
1678
|
AnimatedTooltip,
|
|
1138
1679
|
Badge,
|
|
1139
1680
|
Button,
|
|
1681
|
+
Calendar,
|
|
1682
|
+
CalendarDayButton,
|
|
1140
1683
|
Card,
|
|
1141
1684
|
CardContent,
|
|
1142
1685
|
CardDescription,
|
|
@@ -1149,6 +1692,8 @@ export {
|
|
|
1149
1692
|
ChartStyle,
|
|
1150
1693
|
ChartTooltip,
|
|
1151
1694
|
ChartTooltipContent,
|
|
1695
|
+
DatePicker,
|
|
1696
|
+
DateTimePicker,
|
|
1152
1697
|
Dialog,
|
|
1153
1698
|
DialogClose,
|
|
1154
1699
|
DialogContent,
|
|
@@ -1168,6 +1713,10 @@ export {
|
|
|
1168
1713
|
HoverEffect,
|
|
1169
1714
|
Input,
|
|
1170
1715
|
Label,
|
|
1716
|
+
Popover,
|
|
1717
|
+
PopoverAnchor,
|
|
1718
|
+
PopoverContent,
|
|
1719
|
+
PopoverTrigger,
|
|
1171
1720
|
Select,
|
|
1172
1721
|
SelectContent,
|
|
1173
1722
|
SelectGroup,
|
|
@@ -1178,6 +1727,7 @@ export {
|
|
|
1178
1727
|
SelectSeparator,
|
|
1179
1728
|
SelectTrigger,
|
|
1180
1729
|
SelectValue,
|
|
1730
|
+
TimePicker,
|
|
1181
1731
|
badgeVariants,
|
|
1182
1732
|
buttonVariants
|
|
1183
1733
|
};
|
package/dist/ui/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/ui/button.tsx","../../src/utils/cn.ts","../../src/ui/card.tsx","../../src/ui/badge.tsx","../../src/ui/label.tsx","../../src/ui/input.tsx","../../src/ui/dialog.tsx","../../src/ui/select.tsx","../../src/ui/animated-tooltip.tsx","../../src/ui/card-hover-effect.tsx","../../src/ui/flip-words.tsx","../../src/ui/hero-highlight.tsx","../../src/ui/chart.tsx"],"sourcesContent":["import * as React from 'react'\nimport { Slot } from '@radix-ui/react-slot'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { cn } from '../utils/cn'\n\nconst buttonVariants = cva(\n 'inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50',\n {\n variants: {\n variant: {\n default: 'bg-primary text-primary-foreground hover:bg-primary/90',\n destructive:\n 'bg-destructive text-destructive-foreground hover:bg-destructive/90',\n outline:\n 'border border-input bg-background hover:bg-accent hover:text-accent-foreground',\n secondary:\n 'bg-secondary text-secondary-foreground hover:bg-secondary/80',\n ghost: 'hover:bg-accent hover:text-accent-foreground',\n link: 'text-primary underline-offset-4 hover:underline',\n playback:\n 'relative group/btn bg-gradient-to-br from-[var(--night)] to-[var(--night)] bg-[var(--night)] border border-neutral-400/[0.5] text-white shadow-[0px_1px_0px_0px_var(--zinc-800)_inset,0px_-1px_0px_0px_var(--zinc-800)_inset]',\n },\n size: {\n default: 'h-10 px-4 py-2',\n sm: 'h-9 rounded-md px-3',\n lg: 'h-11 rounded-md px-8',\n icon: 'h-10 w-10',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n },\n }\n)\n\nfunction BottomGradient() {\n return (\n <>\n <span className=\"group-hover/btn:opacity-100 block transition duration-500 opacity-0 absolute h-px w-full -bottom-px inset-x-0 bg-gradient-to-r from-transparent via-[var(--timberwolf)] to-transparent\" />\n <span className=\"group-hover/btn:opacity-100 blur-sm block transition duration-500 opacity-0 absolute h-px w-1/2 mx-auto -bottom-px inset-x-10 bg-gradient-to-r from-transparent via-[var(--timberwolf)] to-transparent\" />\n </>\n )\n}\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n asChild?: boolean\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({ className, variant, size, asChild = false, children, ...props }, ref) => {\n const Comp = asChild ? Slot : 'button'\n return (\n <Comp\n className={cn(buttonVariants({ variant, size, className }))}\n ref={ref}\n {...props}\n >\n {children}\n {variant === 'playback' && <BottomGradient />}\n </Comp>\n )\n }\n)\nButton.displayName = 'Button'\n\nexport { Button, buttonVariants }\n","import { clsx, type ClassValue } from 'clsx'\nimport { twMerge } from 'tailwind-merge'\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n","import * as React from 'react'\nimport { cn } from '../utils/cn'\n\nconst Card = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n 'rounded-lg border bg-card text-card-foreground shadow-sm',\n className\n )}\n {...props}\n />\n))\nCard.displayName = 'Card'\n\nconst CardHeader = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn('flex flex-col space-y-1.5 p-6', className)}\n {...props}\n />\n))\nCardHeader.displayName = 'CardHeader'\n\nconst CardTitle = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => (\n <h3\n ref={ref}\n className={cn(\n 'text-2xl font-semibold leading-none tracking-tight',\n className\n )}\n {...props}\n />\n))\nCardTitle.displayName = 'CardTitle'\n\nconst CardDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <p\n ref={ref}\n className={cn('text-sm text-muted-foreground', className)}\n {...props}\n />\n))\nCardDescription.displayName = 'CardDescription'\n\nconst CardContent = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div ref={ref} className={cn('p-6 pt-0', className)} {...props} />\n))\nCardContent.displayName = 'CardContent'\n\nconst CardFooter = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn('flex items-center p-6 pt-0', className)}\n {...props}\n />\n))\nCardFooter.displayName = 'CardFooter'\n\nexport { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent }\n","import * as React from 'react'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { cn } from '../utils/cn'\n\nconst badgeVariants = cva(\n 'inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2',\n {\n variants: {\n variant: {\n default:\n 'border-transparent bg-primary text-primary-foreground hover:bg-primary/80',\n secondary:\n 'border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80',\n destructive:\n 'border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80',\n outline: 'text-foreground',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n }\n)\n\nexport interface BadgeProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof badgeVariants> {}\n\nfunction Badge({ className, variant, ...props }: BadgeProps) {\n return (\n <div className={cn(badgeVariants({ variant }), className)} {...props} />\n )\n}\n\nexport { Badge, badgeVariants }\n","'use client'\n\nimport * as React from 'react'\nimport * as LabelPrimitive from '@radix-ui/react-label'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { cn } from '../utils/cn'\n\nconst labelVariants = cva(\n 'text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70'\n)\n\nconst Label = React.forwardRef<\n React.ElementRef<typeof LabelPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root> &\n VariantProps<typeof labelVariants>\n>(({ className, ...props }, ref) => (\n <LabelPrimitive.Root\n ref={ref}\n className={cn(labelVariants(), className)}\n {...props}\n />\n))\nLabel.displayName = LabelPrimitive.Root.displayName\n\nexport { Label }\n","'use client'\n\nimport * as React from 'react'\nimport { cn } from '../utils/cn'\nimport { useMotionTemplate, useMotionValue, motion } from 'motion/react'\n\nexport interface InputProps\n extends React.InputHTMLAttributes<HTMLInputElement> {}\n\nconst Input = React.forwardRef<HTMLInputElement, InputProps>(\n ({ className, type, ...props }, ref) => {\n const radius = 100\n const [visible, setVisible] = React.useState(false)\n\n let mouseX = useMotionValue(0)\n let mouseY = useMotionValue(0)\n\n function handleMouseMove({ currentTarget, clientX, clientY }: any) {\n let { left, top } = currentTarget.getBoundingClientRect()\n\n mouseX.set(clientX - left)\n mouseY.set(clientY - top)\n }\n return (\n <motion.div\n style={{\n background: useMotionTemplate`\n radial-gradient(\n ${visible ? radius + 'px' : '0px'} circle at ${mouseX}px ${mouseY}px,\n var(--timberwolf),\n transparent 80%\n )\n `,\n }}\n onMouseMove={handleMouseMove}\n onMouseEnter={() => setVisible(true)}\n onMouseLeave={() => setVisible(false)}\n className=\"p-[2px] rounded-lg transition duration-300 group/input\"\n >\n <input\n type={type}\n className={cn(\n `flex h-10 w-full border-none bg-zinc-800 text-white shadow-input rounded-lg px-3 py-2 text-sm file:border-0 file:bg-transparent\n file:text-sm file:font-medium placeholder:text-neutral-500\n focus-visible:outline-none focus-visible:ring-[2px] focus-visible:ring-neutral-600\n disabled:cursor-not-allowed disabled:opacity-50\n shadow-[0px_0px_1px_1px_var(--neutral-700)]\n group-hover/input:shadow-none transition duration-400\n `,\n className\n )}\n ref={ref}\n {...props}\n />\n </motion.div>\n )\n }\n)\nInput.displayName = 'Input'\n\nexport { Input }\n","'use client'\n\nimport * as React from 'react'\nimport * as DialogPrimitive from '@radix-ui/react-dialog'\nimport { cn } from '../utils/cn'\nimport { Cross2Icon } from '@radix-ui/react-icons'\n\nconst Dialog = DialogPrimitive.Root\n\nconst DialogTrigger = DialogPrimitive.Trigger\n\nconst DialogPortal = DialogPrimitive.Portal\n\nconst DialogClose = DialogPrimitive.Close\n\nconst DialogOverlay = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Overlay\n ref={ref}\n className={cn(\n 'fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0',\n className\n )}\n {...props}\n />\n))\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName\n\nconst DialogContent = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n <DialogPortal>\n <DialogOverlay />\n <DialogPrimitive.Content\n ref={ref}\n className={cn(\n 'fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border border-zinc-800 bg-zinc-950 p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg',\n className\n )}\n {...props}\n >\n {children}\n <DialogPrimitive.Close className=\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-zinc-950 transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-zinc-300 focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-zinc-800 data-[state=open]:text-zinc-400\">\n <Cross2Icon className=\"h-4 w-4\" />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n </DialogPrimitive.Content>\n </DialogPortal>\n))\nDialogContent.displayName = DialogPrimitive.Content.displayName\n\nconst DialogHeader = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n 'flex flex-col space-y-1.5 text-center sm:text-left',\n className\n )}\n {...props}\n />\n)\nDialogHeader.displayName = 'DialogHeader'\n\nconst DialogFooter = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n 'flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2',\n className\n )}\n {...props}\n />\n)\nDialogFooter.displayName = 'DialogFooter'\n\nconst DialogTitle = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Title\n ref={ref}\n className={cn(\n 'text-lg font-semibold leading-none tracking-tight',\n className\n )}\n {...props}\n />\n))\nDialogTitle.displayName = DialogPrimitive.Title.displayName\n\nconst DialogDescription = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Description\n ref={ref}\n className={cn('text-sm text-zinc-400', className)}\n {...props}\n />\n))\nDialogDescription.displayName = DialogPrimitive.Description.displayName\n\nexport {\n Dialog,\n DialogPortal,\n DialogOverlay,\n DialogTrigger,\n DialogClose,\n DialogContent,\n DialogHeader,\n DialogFooter,\n DialogTitle,\n DialogDescription,\n}\n","'use client'\n\nimport * as React from 'react'\nimport * as SelectPrimitive from '@radix-ui/react-select'\nimport { cn } from '../utils/cn'\nimport { useMotionTemplate, useMotionValue, motion } from 'motion/react'\n\nconst Select = SelectPrimitive.Root\nconst SelectGroup = SelectPrimitive.Group\nconst SelectValue = SelectPrimitive.Value\n\nconst SelectTrigger = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => {\n const radius = 100\n const [visible, setVisible] = React.useState(false)\n let mouseX = useMotionValue(0)\n let mouseY = useMotionValue(0)\n\n function handleMouseMove({ currentTarget, clientX, clientY }: any) {\n let { left, top } = currentTarget.getBoundingClientRect()\n mouseX.set(clientX - left)\n mouseY.set(clientY - top)\n }\n\n return (\n <motion.div\n style={{\n background: useMotionTemplate`\n radial-gradient(\n ${visible ? radius + 'px' : '0px'} circle at ${mouseX}px ${mouseY}px,\n var(--timberwolf),\n transparent 80%\n )\n `,\n }}\n onMouseMove={handleMouseMove}\n onMouseEnter={() => setVisible(true)}\n onMouseLeave={() => setVisible(false)}\n className=\"p-[2px] rounded-lg transition duration-300 group/input\"\n >\n <SelectPrimitive.Trigger\n ref={ref}\n className={cn(\n 'flex h-10 w-full items-center justify-between whitespace-nowrap rounded-md bg-zinc-800 text-white px-3 py-2 text-sm border-none shadow-[0px_0px_1px_1px_var(--neutral-700)] group-hover/input:shadow-none transition duration-400 disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1',\n className\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon asChild>\n <svg\n className=\"h-4 w-4 opacity-50\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"m6 9 6 6 6-6\" />\n </svg>\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n </motion.div>\n )\n})\nSelectTrigger.displayName = SelectPrimitive.Trigger.displayName\n\nconst SelectScrollUpButton = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.ScrollUpButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollUpButton>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.ScrollUpButton\n ref={ref}\n className={cn(\n 'flex cursor-default items-center justify-center py-1',\n className\n )}\n {...props}\n >\n <svg\n className=\"h-4 w-4\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"m18 15-6-6-6 6\" />\n </svg>\n </SelectPrimitive.ScrollUpButton>\n))\nSelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName\n\nconst SelectScrollDownButton = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.ScrollDownButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollDownButton>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.ScrollDownButton\n ref={ref}\n className={cn(\n 'flex cursor-default items-center justify-center py-1',\n className\n )}\n {...props}\n >\n <svg\n className=\"h-4 w-4\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"m6 9 6 6 6-6\" />\n </svg>\n </SelectPrimitive.ScrollDownButton>\n))\nSelectScrollDownButton.displayName =\n SelectPrimitive.ScrollDownButton.displayName\n\nconst SelectContent = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Content>\n>(({ className, children, position = 'popper', ...props }, ref) => (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n ref={ref}\n className={cn(\n 'relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border border-neutral-700 bg-zinc-800 text-white shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2',\n position === 'popper' &&\n 'data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1',\n className\n )}\n position={position}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.Viewport\n className={cn(\n 'p-1',\n position === 'popper' &&\n 'h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]'\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n <SelectScrollDownButton />\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n))\nSelectContent.displayName = SelectPrimitive.Content.displayName\n\nconst SelectItem = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Item>\n>(({ className, children, ...props }, ref) => (\n <SelectPrimitive.Item\n ref={ref}\n className={cn(\n 'relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-2 pr-8 text-sm outline-none focus:bg-white/10 focus:text-white data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n className\n )}\n {...props}\n >\n <span className=\"absolute right-2 flex h-3.5 w-3.5 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n <svg\n className=\"h-4 w-4\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M20 6 9 17l-5-5\" />\n </svg>\n </SelectPrimitive.ItemIndicator>\n </span>\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n))\nSelectItem.displayName = SelectPrimitive.Item.displayName\n\nconst SelectSeparator = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Separator\n ref={ref}\n className={cn('-mx-1 my-1 h-px bg-neutral-700', className)}\n {...props}\n />\n))\nSelectSeparator.displayName = SelectPrimitive.Separator.displayName\n\nconst SelectLabel = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Label>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Label\n ref={ref}\n className={cn('px-2 py-1.5 text-sm font-semibold', className)}\n {...props}\n />\n))\nSelectLabel.displayName = SelectPrimitive.Label.displayName\n\nexport {\n Select,\n SelectGroup,\n SelectValue,\n SelectTrigger,\n SelectContent,\n SelectLabel,\n SelectItem,\n SelectSeparator,\n SelectScrollUpButton,\n SelectScrollDownButton,\n}\n","'use client'\n\nimport React, { useState } from 'react'\nimport {\n motion,\n useTransform,\n AnimatePresence,\n useMotionValue,\n useSpring,\n} from 'motion/react'\n\nexport const AnimatedTooltip = ({\n items,\n}: {\n items: {\n id: number\n name: string\n designation: string\n image: string\n }[]\n}) => {\n const [hoveredIndex, setHoveredIndex] = useState<number | null>(null)\n const springConfig = { stiffness: 100, damping: 5 }\n const x = useMotionValue(0)\n const rotate = useSpring(\n useTransform(x, [-100, 100], [-45, 45]),\n springConfig\n )\n const translateX = useSpring(\n useTransform(x, [-100, 100], [-50, 50]),\n springConfig\n )\n const handleMouseMove = (event: any) => {\n const halfWidth = event.target.offsetWidth / 2\n x.set(event.nativeEvent.offsetX - halfWidth)\n }\n\n return (\n <>\n {items.map((item, idx) => (\n <div\n className=\"-mr-4 relative group\"\n key={item.name}\n onMouseEnter={() => setHoveredIndex(item.id)}\n onMouseLeave={() => setHoveredIndex(null)}\n >\n {hoveredIndex === item.id && (\n <motion.div\n initial={{ opacity: 0, y: 20, scale: 0.6 }}\n animate={{\n opacity: 1,\n y: 0,\n scale: 1,\n transition: {\n type: 'spring',\n stiffness: 260,\n damping: 10,\n },\n }}\n exit={{ opacity: 0, y: 20, scale: 0.6 }}\n style={{\n translateX: translateX,\n rotate: rotate,\n whiteSpace: 'nowrap',\n }}\n className=\"absolute -top-16 -left-1/2 translate-x-1/2 flex text-xs flex-col items-center justify-center rounded-md bg-black z-50 shadow-xl px-4 py-2\"\n >\n <div className=\"absolute inset-x-10 z-30 w-[20%] -bottom-px bg-gradient-to-r from-transparent via-emerald-500 to-transparent h-px \" />\n <div className=\"absolute left-10 w-[40%] z-30 -bottom-px bg-gradient-to-r from-transparent via-sky-500 to-transparent h-px \" />\n <div className=\"font-bold text-white relative z-30 text-base\">\n {item.name}\n </div>\n <div className=\"text-white text-xs\">{item.designation}</div>\n </motion.div>\n )}\n <img\n onMouseMove={handleMouseMove}\n height={100}\n width={100}\n src={item.image}\n alt={item.name}\n className=\"object-cover !m-0 !p-0 object-top rounded-full h-16 w-16 border-2 group-hover:scale-105 group-hover:z-30 border-[var(--ash-grey)] relative transition duration-500\"\n />\n </div>\n ))}\n </>\n )\n}\n","'use client'\n\nimport { cn } from '../utils/cn'\nimport { AnimatePresence, motion } from 'motion/react'\nimport Link from 'next/link'\nimport { useState } from 'react'\n\nexport const HoverEffect = ({\n items,\n className,\n}: {\n items: {\n title: string\n description: string\n link: string\n logoUrl: string\n }[]\n className?: string\n}) => {\n let [hoveredIndex, setHoveredIndex] = useState<number | null>(null)\n\n return (\n <div\n className={cn(\n 'flex flex-wrap justify-center items-center pb-10',\n className\n )}\n >\n {items.map((item, idx) => (\n <Link\n href={item?.link}\n key={item?.link}\n className=\"relative group block p-2 h-72 w-80\"\n onMouseEnter={() => setHoveredIndex(idx)}\n onMouseLeave={() => setHoveredIndex(null)}\n >\n <AnimatePresence>\n {hoveredIndex === idx && (\n <motion.span\n className=\"absolute inset-0 h-full w-full bg-neutral-400/[0.5] block rounded-3xl\"\n layoutId=\"hoverBackground\"\n initial={{ opacity: 0 }}\n animate={{\n opacity: 1,\n transition: { duration: 0.15 },\n }}\n exit={{\n opacity: 0,\n transition: { duration: 0.15, delay: 0.2 },\n }}\n />\n )}\n </AnimatePresence>\n <HoverCard logoUrl={item.logoUrl}>\n <HoverCardTitle>{item.title}</HoverCardTitle>\n <HoverCardDescription>{item.description}</HoverCardDescription>\n </HoverCard>\n </Link>\n ))}\n </div>\n )\n}\n\nexport const HoverCard = ({\n className,\n children,\n logoUrl,\n}: {\n className?: string\n children: React.ReactNode\n logoUrl: string\n}) => {\n return (\n <div\n className={cn(\n 'rounded-2xl h-full w-full p-4 overflow-hidden bg-black border border-white/[0.2] group-hover:border-[var(--timberwolf)] relative z-20',\n className\n )}\n >\n <div\n className=\"absolute bottom-[-3rem] left-[-5rem] h-56 w-56 opacity-50\"\n style={{\n backgroundImage: `url(${logoUrl})`,\n backgroundPosition: 'bottom left',\n backgroundSize: 'contain',\n backgroundRepeat: 'no-repeat',\n maskImage: 'linear-gradient(to bottom left, transparent, black)',\n }}\n />\n <div className=\"relative z-50\">\n <div className=\"p-4\">{children}</div>\n </div>\n </div>\n )\n}\nexport const HoverCardTitle = ({\n className,\n children,\n}: {\n className?: string\n children: React.ReactNode\n}) => {\n return (\n <h4 className={cn('text-zinc-100 font-bold tracking-wide mt-4', className)}>\n {children}\n </h4>\n )\n}\nexport const HoverCardDescription = ({\n className,\n children,\n}: {\n className?: string\n children: React.ReactNode\n}) => {\n return (\n <p\n className={cn(\n 'mt-8 text-zinc-400 tracking-wide leading-relaxed text-sm',\n className\n )}\n >\n {children}\n </p>\n )\n}\n","'use client'\n\nimport React, { useCallback, useEffect, useRef, useState } from 'react'\nimport { AnimatePresence, motion, LayoutGroup } from 'motion/react'\nimport { cn } from '../utils/cn'\n\nexport const FlipWords = ({\n words,\n duration = 3000,\n className,\n}: {\n words: string[]\n duration?: number\n className?: string\n}) => {\n const [currentWord, setCurrentWord] = useState(words[0])\n const [isAnimating, setIsAnimating] = useState<boolean>(false)\n\n const startAnimation = useCallback(() => {\n const word = words[words.indexOf(currentWord) + 1] || words[0]\n setCurrentWord(word)\n setIsAnimating(true)\n }, [currentWord, words])\n\n useEffect(() => {\n if (!isAnimating)\n setTimeout(() => {\n startAnimation()\n }, duration)\n }, [isAnimating, duration, startAnimation])\n\n return (\n <AnimatePresence\n onExitComplete={() => {\n setIsAnimating(false)\n }}\n >\n <motion.div\n initial={{\n opacity: 0,\n y: 10,\n }}\n animate={{\n opacity: 1,\n y: 0,\n }}\n transition={{\n type: 'spring',\n stiffness: 100,\n damping: 10,\n }}\n exit={{\n opacity: 0,\n y: -40,\n x: 40,\n filter: 'blur(8px)',\n scale: 2,\n position: 'absolute',\n }}\n className={cn(\n 'z-10 inline-block relative text-left text-neutral-100 px-2',\n className\n )}\n key={currentWord}\n >\n {currentWord.split(' ').map((word, wordIndex) => (\n <motion.span\n key={word + wordIndex}\n initial={{ opacity: 0, y: 10, filter: 'blur(8px)' }}\n animate={{ opacity: 1, y: 0, filter: 'blur(0px)' }}\n transition={{\n delay: wordIndex * 0.3,\n duration: 0.3,\n }}\n className=\"inline-block whitespace-nowrap\"\n >\n {word.split('').map((letter, letterIndex) => (\n <motion.span\n key={word + letterIndex}\n initial={{ opacity: 0, y: 10, filter: 'blur(8px)' }}\n animate={{ opacity: 1, y: 0, filter: 'blur(0px)' }}\n transition={{\n delay: wordIndex * 0.3 + letterIndex * 0.05,\n duration: 0.2,\n }}\n className=\"inline-block\"\n >\n {letter}\n </motion.span>\n ))}\n <span className=\"inline-block\"> </span>\n </motion.span>\n ))}\n </motion.div>\n </AnimatePresence>\n )\n}\n","'use client'\n\nimport { cn } from '../utils/cn'\nimport {\n useMotionValue,\n motion,\n useMotionTemplate,\n animate,\n} from 'motion/react'\nimport React, { useEffect, useState } from 'react'\n\nexport const HeroHighlight = ({\n children,\n className,\n containerClassName,\n}: {\n children: React.ReactNode\n className?: string\n containerClassName?: string\n}) => {\n let mouseX = useMotionValue(0)\n let mouseY = useMotionValue(0)\n const [isHoverable, setIsHoverable] = useState(false)\n\n useEffect(() => {\n const mediaQuery = window.matchMedia('(pointer: fine)')\n setIsHoverable(mediaQuery.matches)\n\n const handleChange = (e: MediaQueryListEvent) => {\n setIsHoverable(e.matches)\n }\n\n mediaQuery.addEventListener('change', handleChange)\n\n return () => {\n mediaQuery.removeEventListener('change', handleChange)\n }\n }, [])\n\n useEffect(() => {\n if (!isHoverable) {\n const updatePosition = () => {\n const randomX = Math.random() * window.innerWidth\n const randomY = Math.random() * window.innerHeight\n animate(mouseX, randomX, { duration: 2 })\n animate(mouseY, randomY, { duration: 2 })\n }\n\n const interval = setInterval(updatePosition, 2000)\n updatePosition()\n\n return () => clearInterval(interval)\n }\n }, [isHoverable, mouseX, mouseY])\n\n const handleMouseMove = (event: React.MouseEvent<HTMLDivElement>) => {\n if (!isHoverable || !event.currentTarget) return\n const { left, top } = event.currentTarget.getBoundingClientRect()\n mouseX.set(event.clientX - left)\n mouseY.set(event.clientY - top)\n }\n\n return (\n <div\n className={cn(\n 'relative h-[40rem] flex items-center bg-[var(--night)] justify-center w-full group',\n containerClassName\n )}\n onMouseMove={handleMouseMove}\n >\n <div className=\"absolute inset-0 bg-dot-thick-neutral-800 pointer-events-none\" />\n <motion.div\n className=\"pointer-events-none bg-dot-thick-gray-100 absolute inset-0 opacity-0 transition duration-300 group-hover:opacity-100\"\n style={{\n WebkitMaskImage: useMotionTemplate`\n radial-gradient(\n 200px circle at ${mouseX}px ${mouseY}px,\n black 0%,\n transparent 100%\n )\n `,\n maskImage: useMotionTemplate`\n radial-gradient(\n 200px circle at ${mouseX}px ${mouseY}px,\n black 0%,\n transparent 100%\n )\n `,\n }}\n />\n\n <div className={cn('relative z-20', className)}>{children}</div>\n </div>\n )\n}\n\nexport const Highlight = ({\n children,\n className,\n}: {\n children: React.ReactNode\n className?: string\n}) => {\n return (\n <motion.span\n initial={{\n backgroundSize: '0% 100%',\n }}\n animate={{\n backgroundSize: '100% 100%',\n }}\n transition={{\n duration: 2,\n ease: 'linear',\n delay: 0.5,\n }}\n style={{\n backgroundRepeat: 'no-repeat',\n backgroundPosition: 'left center',\n display: 'inline',\n }}\n className={cn(\n `relative inline-block pb-1 px-1 rounded-lg bg-gradient-to-r from-[var(--ash-grey)] to-[var(--timberwolf)]`,\n className\n )}\n >\n {children}\n </motion.span>\n )\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as RechartsPrimitive from \"recharts\"\n\nimport { cn } from \"../utils\"\n\n// Format: { THEME_NAME: CSS_SELECTOR }\nconst THEMES = { light: \"\", dark: \".dark\" } as const\n\nexport type ChartConfig = {\n [k in string]: {\n label?: React.ReactNode\n icon?: React.ComponentType\n } & (\n | { color?: string; theme?: never }\n | { color?: never; theme: Record<keyof typeof THEMES, string> }\n )\n}\n\ntype ChartContextProps = {\n config: ChartConfig\n}\n\nconst ChartContext = React.createContext<ChartContextProps | null>(null)\n\nfunction useChart() {\n const context = React.useContext(ChartContext)\n\n if (!context) {\n throw new Error(\"useChart must be used within a <ChartContainer />\")\n }\n\n return context\n}\n\nfunction ChartContainer({\n id,\n className,\n children,\n config,\n ...props\n}: React.ComponentProps<\"div\"> & {\n config: ChartConfig\n children: React.ComponentProps<\n typeof RechartsPrimitive.ResponsiveContainer\n >[\"children\"]\n}) {\n const uniqueId = React.useId()\n const chartId = `chart-${id || uniqueId.replace(/:/g, \"\")}`\n\n return (\n <ChartContext.Provider value={{ config }}>\n <div\n data-slot=\"chart\"\n data-chart={chartId}\n className={cn(\n \"[&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border flex aspect-video justify-center text-xs [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-hidden [&_.recharts-sector]:outline-hidden [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-surface]:outline-hidden\",\n className\n )}\n {...props}\n >\n <ChartStyle id={chartId} config={config} />\n <RechartsPrimitive.ResponsiveContainer>\n {children}\n </RechartsPrimitive.ResponsiveContainer>\n </div>\n </ChartContext.Provider>\n )\n}\n\nconst ChartStyle = ({ id, config }: { id: string; config: ChartConfig }) => {\n const colorConfig = Object.entries(config).filter(\n ([, config]) => config.theme || config.color\n )\n\n if (!colorConfig.length) {\n return null\n }\n\n return (\n <style\n dangerouslySetInnerHTML={{\n __html: Object.entries(THEMES)\n .map(\n ([theme, prefix]) => `\n${prefix} [data-chart=${id}] {\n${colorConfig\n .map(([key, itemConfig]) => {\n const color =\n itemConfig.theme?.[theme as keyof typeof itemConfig.theme] ||\n itemConfig.color\n return color ? ` --color-${key}: ${color};` : null\n })\n .join(\"\\n\")}\n}\n`\n )\n .join(\"\\n\"),\n }}\n />\n )\n}\n\nconst ChartTooltip = RechartsPrimitive.Tooltip\n\nfunction ChartTooltipContent({\n active,\n payload,\n className,\n indicator = \"dot\",\n hideLabel = false,\n hideIndicator = false,\n label,\n labelFormatter,\n labelClassName,\n formatter,\n color,\n nameKey,\n labelKey,\n}: React.ComponentProps<typeof RechartsPrimitive.Tooltip> &\n React.ComponentProps<\"div\"> & {\n hideLabel?: boolean\n hideIndicator?: boolean\n indicator?: \"line\" | \"dot\" | \"dashed\"\n nameKey?: string\n labelKey?: string\n }) {\n const { config } = useChart()\n\n const tooltipLabel = React.useMemo(() => {\n if (hideLabel || !payload?.length) {\n return null\n }\n\n const [item] = payload\n const key = `${labelKey || item?.dataKey || item?.name || \"value\"}`\n const itemConfig = getPayloadConfigFromPayload(config, item, key)\n const value =\n !labelKey && typeof label === \"string\"\n ? config[label as keyof typeof config]?.label || label\n : itemConfig?.label\n\n if (labelFormatter) {\n return (\n <div className={cn(\"font-medium\", labelClassName)}>\n {labelFormatter(value, payload)}\n </div>\n )\n }\n\n if (!value) {\n return null\n }\n\n return <div className={cn(\"font-medium\", labelClassName)}>{value}</div>\n }, [\n label,\n labelFormatter,\n payload,\n hideLabel,\n labelClassName,\n config,\n labelKey,\n ])\n\n if (!active || !payload?.length) {\n return null\n }\n\n const nestLabel = payload.length === 1 && indicator !== \"dot\"\n\n return (\n <div\n className={cn(\n \"grid min-w-[8rem] items-start gap-1.5 rounded-lg border border-[var(--ash-grey)]/20 bg-[#1a1f1c] px-2.5 py-1.5 text-xs shadow-xl\",\n className\n )}\n >\n {!nestLabel ? tooltipLabel : null}\n <div className=\"grid gap-1.5\">\n {payload\n .filter((item) => item.type !== \"none\")\n .map((item, index) => {\n const key = `${nameKey || item.name || item.dataKey || \"value\"}`\n const itemConfig = getPayloadConfigFromPayload(config, item, key)\n const indicatorColor = color || item.payload.fill || item.color\n\n return (\n <div\n key={item.dataKey}\n className={cn(\n \"flex w-full flex-wrap items-stretch gap-2\",\n indicator === \"dot\" && \"items-center\"\n )}\n >\n {formatter && item?.value !== undefined && item.name ? (\n formatter(item.value, item.name, item, index, item.payload)\n ) : (\n <>\n {itemConfig?.icon ? (\n <itemConfig.icon />\n ) : (\n !hideIndicator && (\n <div\n className={cn(\n \"shrink-0 rounded-[2px]\",\n {\n \"h-2.5 w-2.5\": indicator === \"dot\",\n \"w-1\": indicator === \"line\",\n \"w-0 border-[1.5px] border-dashed bg-transparent\":\n indicator === \"dashed\",\n \"my-0.5\": nestLabel && indicator === \"dashed\",\n }\n )}\n style={\n {\n backgroundColor: indicatorColor,\n borderColor: indicatorColor,\n } as React.CSSProperties\n }\n />\n )\n )}\n <div\n className={cn(\n \"flex flex-1 justify-between leading-none\",\n nestLabel ? \"items-end\" : \"items-center\"\n )}\n >\n <div className=\"grid gap-1.5\">\n {nestLabel ? tooltipLabel : null}\n <span className=\"text-[var(--ash-grey)]\">\n {itemConfig?.label || item.name}\n </span>\n </div>\n {item.value && (\n <span className=\"text-[var(--timberwolf)] font-mono font-medium tabular-nums\">\n {item.value.toLocaleString()}\n </span>\n )}\n </div>\n </>\n )}\n </div>\n )\n })}\n </div>\n </div>\n )\n}\n\nconst ChartLegend = RechartsPrimitive.Legend\n\nfunction ChartLegendContent({\n className,\n hideIcon = false,\n payload,\n verticalAlign = \"bottom\",\n nameKey,\n}: React.ComponentProps<\"div\"> &\n Pick<RechartsPrimitive.LegendProps, \"payload\" | \"verticalAlign\"> & {\n hideIcon?: boolean\n nameKey?: string\n }) {\n const { config } = useChart()\n\n if (!payload?.length) {\n return null\n }\n\n return (\n <div\n className={cn(\n \"flex items-center justify-center gap-4\",\n verticalAlign === \"top\" ? \"pb-3\" : \"pt-3\",\n className\n )}\n >\n {payload\n .filter((item) => item.type !== \"none\")\n .map((item) => {\n const key = `${nameKey || item.dataKey || \"value\"}`\n const itemConfig = getPayloadConfigFromPayload(config, item, key)\n\n return (\n <div\n key={item.value}\n className={cn(\n \"flex items-center gap-1.5 text-[var(--ash-grey)]\"\n )}\n >\n {itemConfig?.icon && !hideIcon ? (\n <itemConfig.icon />\n ) : (\n <div\n className=\"h-2 w-2 shrink-0 rounded-[2px]\"\n style={{\n backgroundColor: item.color,\n }}\n />\n )}\n {itemConfig?.label}\n </div>\n )\n })}\n </div>\n )\n}\n\nfunction getPayloadConfigFromPayload(\n config: ChartConfig,\n payload: unknown,\n key: string\n) {\n if (typeof payload !== \"object\" || payload === null) {\n return undefined\n }\n\n const payloadPayload =\n \"payload\" in payload &&\n typeof payload.payload === \"object\" &&\n payload.payload !== null\n ? payload.payload\n : undefined\n\n let configLabelKey: string = key\n\n if (\n key in payload &&\n typeof payload[key as keyof typeof payload] === \"string\"\n ) {\n configLabelKey = payload[key as keyof typeof payload] as string\n } else if (\n payloadPayload &&\n key in payloadPayload &&\n typeof payloadPayload[key as keyof typeof payloadPayload] === \"string\"\n ) {\n configLabelKey = payloadPayload[\n key as keyof typeof payloadPayload\n ] as string\n }\n\n return configLabelKey in config\n ? config[configLabelKey]\n : config[key as keyof typeof config]\n}\n\nexport {\n ChartContainer,\n ChartTooltip,\n ChartTooltipContent,\n ChartLegend,\n ChartLegendContent,\n ChartStyle,\n}\n"],"mappings":"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","names":["React","jsx","cva","jsx","cva","React","cva","jsx","cva","React","jsx","React","jsx","jsxs","React","useMotionTemplate","useMotionValue","motion","jsx","jsxs","useState","motion","useMotionValue","Fragment","jsx","jsxs","AnimatePresence","motion","useState","jsx","jsxs","useState","AnimatePresence","motion","jsx","jsxs","useState","AnimatePresence","motion","useMotionValue","motion","useMotionTemplate","useEffect","useState","jsx","jsxs","React","Fragment","jsx","jsxs","config"]}
|
|
1
|
+
{"version":3,"sources":["../../src/ui/button.tsx","../../src/utils/cn.ts","../../src/ui/card.tsx","../../src/ui/badge.tsx","../../src/ui/label.tsx","../../src/ui/input.tsx","../../src/ui/dialog.tsx","../../src/ui/select.tsx","../../src/ui/animated-tooltip.tsx","../../src/ui/card-hover-effect.tsx","../../src/ui/flip-words.tsx","../../src/ui/hero-highlight.tsx","../../src/ui/popover.tsx","../../src/ui/calendar.tsx","../../src/ui/date-picker.tsx","../../src/ui/time-picker.tsx","../../src/ui/datetime-picker.tsx","../../src/ui/chart.tsx"],"sourcesContent":["import * as React from 'react'\nimport { Slot } from '@radix-ui/react-slot'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { cn } from '../utils/cn'\n\nconst buttonVariants = cva(\n 'inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium cursor-pointer ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50',\n {\n variants: {\n variant: {\n default: 'bg-primary text-primary-foreground hover:bg-primary/90',\n destructive:\n 'bg-destructive text-destructive-foreground hover:bg-destructive/90',\n outline:\n 'border border-input bg-background hover:bg-accent hover:text-accent-foreground',\n secondary:\n 'bg-secondary text-secondary-foreground hover:bg-secondary/80',\n ghost: 'hover:bg-accent hover:text-accent-foreground',\n link: 'text-primary underline-offset-4 hover:underline',\n playback:\n 'relative group/btn bg-gradient-to-br from-[var(--night)] to-[var(--night)] bg-[var(--night)] border border-neutral-400/[0.5] text-white shadow-[0px_1px_0px_0px_var(--zinc-800)_inset,0px_-1px_0px_0px_var(--zinc-800)_inset]',\n },\n size: {\n default: 'h-10 px-4 py-2',\n sm: 'h-9 rounded-md px-3',\n lg: 'h-11 rounded-md px-8',\n icon: 'h-10 w-10',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n },\n }\n)\n\nfunction BottomGradient() {\n return (\n <>\n <span className=\"group-hover/btn:opacity-100 block transition duration-500 opacity-0 absolute h-px w-full -bottom-px inset-x-0 bg-gradient-to-r from-transparent via-[var(--timberwolf)] to-transparent\" />\n <span className=\"group-hover/btn:opacity-100 blur-sm block transition duration-500 opacity-0 absolute h-px w-1/2 mx-auto -bottom-px inset-x-10 bg-gradient-to-r from-transparent via-[var(--timberwolf)] to-transparent\" />\n </>\n )\n}\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n asChild?: boolean\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({ className, variant, size, asChild = false, children, ...props }, ref) => {\n const Comp = asChild ? Slot : 'button'\n return (\n <Comp\n className={cn(buttonVariants({ variant, size, className }))}\n ref={ref}\n {...props}\n >\n {children}\n {variant === 'playback' && <BottomGradient />}\n </Comp>\n )\n }\n)\nButton.displayName = 'Button'\n\nexport { Button, buttonVariants }\n","import { clsx, type ClassValue } from 'clsx'\nimport { twMerge } from 'tailwind-merge'\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n","import * as React from 'react'\nimport { cn } from '../utils/cn'\n\nconst Card = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n 'rounded-lg border bg-card text-card-foreground shadow-sm',\n className\n )}\n {...props}\n />\n))\nCard.displayName = 'Card'\n\nconst CardHeader = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn('flex flex-col space-y-1.5 p-6', className)}\n {...props}\n />\n))\nCardHeader.displayName = 'CardHeader'\n\nconst CardTitle = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => (\n <h3\n ref={ref}\n className={cn(\n 'text-2xl font-semibold leading-none tracking-tight',\n className\n )}\n {...props}\n />\n))\nCardTitle.displayName = 'CardTitle'\n\nconst CardDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <p\n ref={ref}\n className={cn('text-sm text-muted-foreground', className)}\n {...props}\n />\n))\nCardDescription.displayName = 'CardDescription'\n\nconst CardContent = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div ref={ref} className={cn('p-6 pt-0', className)} {...props} />\n))\nCardContent.displayName = 'CardContent'\n\nconst CardFooter = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn('flex items-center p-6 pt-0', className)}\n {...props}\n />\n))\nCardFooter.displayName = 'CardFooter'\n\nexport { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent }\n","import * as React from 'react'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { cn } from '../utils/cn'\n\nconst badgeVariants = cva(\n 'inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2',\n {\n variants: {\n variant: {\n default:\n 'border-transparent bg-primary text-primary-foreground hover:bg-primary/80',\n secondary:\n 'border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80',\n destructive:\n 'border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80',\n outline: 'text-foreground',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n }\n)\n\nexport interface BadgeProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof badgeVariants> {}\n\nfunction Badge({ className, variant, ...props }: BadgeProps) {\n return (\n <div className={cn(badgeVariants({ variant }), className)} {...props} />\n )\n}\n\nexport { Badge, badgeVariants }\n","'use client'\n\nimport * as React from 'react'\nimport * as LabelPrimitive from '@radix-ui/react-label'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { cn } from '../utils/cn'\n\nconst labelVariants = cva(\n 'text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70'\n)\n\nconst Label = React.forwardRef<\n React.ElementRef<typeof LabelPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root> &\n VariantProps<typeof labelVariants>\n>(({ className, ...props }, ref) => (\n <LabelPrimitive.Root\n ref={ref}\n className={cn(labelVariants(), className)}\n {...props}\n />\n))\nLabel.displayName = LabelPrimitive.Root.displayName\n\nexport { Label }\n","'use client'\n\nimport * as React from 'react'\nimport { cn } from '../utils/cn'\nimport { useMotionTemplate, useMotionValue, motion } from 'motion/react'\n\nexport interface InputProps\n extends React.InputHTMLAttributes<HTMLInputElement> {}\n\nconst Input = React.forwardRef<HTMLInputElement, InputProps>(\n ({ className, type, ...props }, ref) => {\n const radius = 100\n const [visible, setVisible] = React.useState(false)\n\n let mouseX = useMotionValue(0)\n let mouseY = useMotionValue(0)\n\n function handleMouseMove({ currentTarget, clientX, clientY }: any) {\n let { left, top } = currentTarget.getBoundingClientRect()\n\n mouseX.set(clientX - left)\n mouseY.set(clientY - top)\n }\n return (\n <motion.div\n style={{\n background: useMotionTemplate`\n radial-gradient(\n ${visible ? radius + 'px' : '0px'} circle at ${mouseX}px ${mouseY}px,\n var(--timberwolf),\n transparent 80%\n )\n `,\n }}\n onMouseMove={handleMouseMove}\n onMouseEnter={() => setVisible(true)}\n onMouseLeave={() => setVisible(false)}\n className=\"p-[2px] rounded-lg transition duration-300 group/input\"\n >\n <input\n type={type}\n className={cn(\n `flex h-10 w-full border-none bg-zinc-800 text-white shadow-input rounded-lg px-3 py-2 text-sm file:border-0 file:bg-transparent\n file:text-sm file:font-medium placeholder:text-neutral-500\n focus-visible:outline-none focus-visible:ring-[2px] focus-visible:ring-neutral-600\n disabled:cursor-not-allowed disabled:opacity-50\n shadow-[0px_0px_1px_1px_var(--neutral-700)]\n group-hover/input:shadow-none transition duration-400\n `,\n className\n )}\n ref={ref}\n {...props}\n />\n </motion.div>\n )\n }\n)\nInput.displayName = 'Input'\n\nexport { Input }\n","'use client'\n\nimport * as React from 'react'\nimport * as DialogPrimitive from '@radix-ui/react-dialog'\nimport { cn } from '../utils/cn'\nimport { Cross2Icon } from '@radix-ui/react-icons'\n\nconst Dialog = DialogPrimitive.Root\n\nconst DialogTrigger = DialogPrimitive.Trigger\n\nconst DialogPortal = DialogPrimitive.Portal\n\nconst DialogClose = DialogPrimitive.Close\n\nconst DialogOverlay = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Overlay\n ref={ref}\n className={cn(\n 'fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0',\n className\n )}\n {...props}\n />\n))\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName\n\nconst DialogContent = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n <DialogPortal>\n <DialogOverlay />\n <DialogPrimitive.Content\n ref={ref}\n className={cn(\n 'fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border border-zinc-800 bg-zinc-950 p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg',\n className\n )}\n {...props}\n >\n {children}\n <DialogPrimitive.Close className=\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-zinc-950 transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-zinc-300 focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-zinc-800 data-[state=open]:text-zinc-400\">\n <Cross2Icon className=\"h-4 w-4\" />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n </DialogPrimitive.Content>\n </DialogPortal>\n))\nDialogContent.displayName = DialogPrimitive.Content.displayName\n\nconst DialogHeader = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n 'flex flex-col space-y-1.5 text-center sm:text-left',\n className\n )}\n {...props}\n />\n)\nDialogHeader.displayName = 'DialogHeader'\n\nconst DialogFooter = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n 'flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2',\n className\n )}\n {...props}\n />\n)\nDialogFooter.displayName = 'DialogFooter'\n\nconst DialogTitle = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Title\n ref={ref}\n className={cn(\n 'text-lg font-semibold leading-none tracking-tight',\n className\n )}\n {...props}\n />\n))\nDialogTitle.displayName = DialogPrimitive.Title.displayName\n\nconst DialogDescription = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Description\n ref={ref}\n className={cn('text-sm text-zinc-400', className)}\n {...props}\n />\n))\nDialogDescription.displayName = DialogPrimitive.Description.displayName\n\nexport {\n Dialog,\n DialogPortal,\n DialogOverlay,\n DialogTrigger,\n DialogClose,\n DialogContent,\n DialogHeader,\n DialogFooter,\n DialogTitle,\n DialogDescription,\n}\n","'use client'\n\nimport * as React from 'react'\nimport * as SelectPrimitive from '@radix-ui/react-select'\nimport { cn } from '../utils/cn'\nimport { useMotionTemplate, useMotionValue, motion } from 'motion/react'\n\nconst Select = SelectPrimitive.Root\nconst SelectGroup = SelectPrimitive.Group\nconst SelectValue = SelectPrimitive.Value\n\nconst SelectTrigger = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => {\n const radius = 100\n const [visible, setVisible] = React.useState(false)\n let mouseX = useMotionValue(0)\n let mouseY = useMotionValue(0)\n\n function handleMouseMove({ currentTarget, clientX, clientY }: any) {\n let { left, top } = currentTarget.getBoundingClientRect()\n mouseX.set(clientX - left)\n mouseY.set(clientY - top)\n }\n\n return (\n <motion.div\n style={{\n background: useMotionTemplate`\n radial-gradient(\n ${visible ? radius + 'px' : '0px'} circle at ${mouseX}px ${mouseY}px,\n var(--timberwolf),\n transparent 80%\n )\n `,\n }}\n onMouseMove={handleMouseMove}\n onMouseEnter={() => setVisible(true)}\n onMouseLeave={() => setVisible(false)}\n className=\"p-[2px] rounded-lg transition duration-300 group/input\"\n >\n <SelectPrimitive.Trigger\n ref={ref}\n className={cn(\n 'flex h-10 w-full items-center justify-between whitespace-nowrap rounded-md bg-zinc-800 text-white px-3 py-2 text-sm border-none shadow-[0px_0px_1px_1px_var(--neutral-700)] group-hover/input:shadow-none transition duration-400 disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1',\n className\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon asChild>\n <svg\n className=\"h-4 w-4 opacity-50\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"m6 9 6 6 6-6\" />\n </svg>\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n </motion.div>\n )\n})\nSelectTrigger.displayName = SelectPrimitive.Trigger.displayName\n\nconst SelectScrollUpButton = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.ScrollUpButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollUpButton>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.ScrollUpButton\n ref={ref}\n className={cn(\n 'flex cursor-default items-center justify-center py-1',\n className\n )}\n {...props}\n >\n <svg\n className=\"h-4 w-4\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"m18 15-6-6-6 6\" />\n </svg>\n </SelectPrimitive.ScrollUpButton>\n))\nSelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName\n\nconst SelectScrollDownButton = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.ScrollDownButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollDownButton>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.ScrollDownButton\n ref={ref}\n className={cn(\n 'flex cursor-default items-center justify-center py-1',\n className\n )}\n {...props}\n >\n <svg\n className=\"h-4 w-4\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"m6 9 6 6 6-6\" />\n </svg>\n </SelectPrimitive.ScrollDownButton>\n))\nSelectScrollDownButton.displayName =\n SelectPrimitive.ScrollDownButton.displayName\n\nconst SelectContent = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Content>\n>(({ className, children, position = 'popper', ...props }, ref) => (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n ref={ref}\n className={cn(\n 'relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border border-neutral-700 bg-zinc-800 text-white shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2',\n position === 'popper' &&\n 'data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1',\n className\n )}\n position={position}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.Viewport\n className={cn(\n 'p-1',\n position === 'popper' &&\n 'h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]'\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n <SelectScrollDownButton />\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n))\nSelectContent.displayName = SelectPrimitive.Content.displayName\n\nconst SelectItem = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Item>\n>(({ className, children, ...props }, ref) => (\n <SelectPrimitive.Item\n ref={ref}\n className={cn(\n 'relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-2 pr-8 text-sm outline-none focus:bg-white/10 focus:text-white data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n className\n )}\n {...props}\n >\n <span className=\"absolute right-2 flex h-3.5 w-3.5 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n <svg\n className=\"h-4 w-4\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M20 6 9 17l-5-5\" />\n </svg>\n </SelectPrimitive.ItemIndicator>\n </span>\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n))\nSelectItem.displayName = SelectPrimitive.Item.displayName\n\nconst SelectSeparator = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Separator\n ref={ref}\n className={cn('-mx-1 my-1 h-px bg-neutral-700', className)}\n {...props}\n />\n))\nSelectSeparator.displayName = SelectPrimitive.Separator.displayName\n\nconst SelectLabel = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Label>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Label\n ref={ref}\n className={cn('px-2 py-1.5 text-sm font-semibold', className)}\n {...props}\n />\n))\nSelectLabel.displayName = SelectPrimitive.Label.displayName\n\nexport {\n Select,\n SelectGroup,\n SelectValue,\n SelectTrigger,\n SelectContent,\n SelectLabel,\n SelectItem,\n SelectSeparator,\n SelectScrollUpButton,\n SelectScrollDownButton,\n}\n","'use client'\n\nimport React, { useState } from 'react'\nimport {\n motion,\n useTransform,\n AnimatePresence,\n useMotionValue,\n useSpring,\n} from 'motion/react'\n\nexport const AnimatedTooltip = ({\n items,\n}: {\n items: {\n id: number\n name: string\n designation: string\n image: string\n }[]\n}) => {\n const [hoveredIndex, setHoveredIndex] = useState<number | null>(null)\n const springConfig = { stiffness: 100, damping: 5 }\n const x = useMotionValue(0)\n const rotate = useSpring(\n useTransform(x, [-100, 100], [-45, 45]),\n springConfig\n )\n const translateX = useSpring(\n useTransform(x, [-100, 100], [-50, 50]),\n springConfig\n )\n const handleMouseMove = (event: any) => {\n const halfWidth = event.target.offsetWidth / 2\n x.set(event.nativeEvent.offsetX - halfWidth)\n }\n\n return (\n <>\n {items.map((item, idx) => (\n <div\n className=\"-mr-4 relative group\"\n key={item.name}\n onMouseEnter={() => setHoveredIndex(item.id)}\n onMouseLeave={() => setHoveredIndex(null)}\n >\n {hoveredIndex === item.id && (\n <motion.div\n initial={{ opacity: 0, y: 20, scale: 0.6 }}\n animate={{\n opacity: 1,\n y: 0,\n scale: 1,\n transition: {\n type: 'spring',\n stiffness: 260,\n damping: 10,\n },\n }}\n exit={{ opacity: 0, y: 20, scale: 0.6 }}\n style={{\n translateX: translateX,\n rotate: rotate,\n whiteSpace: 'nowrap',\n }}\n className=\"absolute -top-16 -left-1/2 translate-x-1/2 flex text-xs flex-col items-center justify-center rounded-md bg-black z-50 shadow-xl px-4 py-2\"\n >\n <div className=\"absolute inset-x-10 z-30 w-[20%] -bottom-px bg-gradient-to-r from-transparent via-emerald-500 to-transparent h-px \" />\n <div className=\"absolute left-10 w-[40%] z-30 -bottom-px bg-gradient-to-r from-transparent via-sky-500 to-transparent h-px \" />\n <div className=\"font-bold text-white relative z-30 text-base\">\n {item.name}\n </div>\n <div className=\"text-white text-xs\">{item.designation}</div>\n </motion.div>\n )}\n <img\n onMouseMove={handleMouseMove}\n height={100}\n width={100}\n src={item.image}\n alt={item.name}\n className=\"object-cover !m-0 !p-0 object-top rounded-full h-16 w-16 border-2 group-hover:scale-105 group-hover:z-30 border-[var(--ash-grey)] relative transition duration-500\"\n />\n </div>\n ))}\n </>\n )\n}\n","'use client'\n\nimport { cn } from '../utils/cn'\nimport { AnimatePresence, motion } from 'motion/react'\nimport Link from 'next/link'\nimport { useState } from 'react'\n\nexport const HoverEffect = ({\n items,\n className,\n}: {\n items: {\n title: string\n description: string\n link: string\n logoUrl: string\n }[]\n className?: string\n}) => {\n let [hoveredIndex, setHoveredIndex] = useState<number | null>(null)\n\n return (\n <div\n className={cn(\n 'flex flex-wrap justify-center items-center pb-10',\n className\n )}\n >\n {items.map((item, idx) => (\n <Link\n href={item?.link}\n key={item?.link}\n className=\"relative group block p-2 h-72 w-80\"\n onMouseEnter={() => setHoveredIndex(idx)}\n onMouseLeave={() => setHoveredIndex(null)}\n >\n <AnimatePresence>\n {hoveredIndex === idx && (\n <motion.span\n className=\"absolute inset-0 h-full w-full bg-neutral-400/[0.5] block rounded-3xl\"\n layoutId=\"hoverBackground\"\n initial={{ opacity: 0 }}\n animate={{\n opacity: 1,\n transition: { duration: 0.15 },\n }}\n exit={{\n opacity: 0,\n transition: { duration: 0.15, delay: 0.2 },\n }}\n />\n )}\n </AnimatePresence>\n <HoverCard logoUrl={item.logoUrl}>\n <HoverCardTitle>{item.title}</HoverCardTitle>\n <HoverCardDescription>{item.description}</HoverCardDescription>\n </HoverCard>\n </Link>\n ))}\n </div>\n )\n}\n\nexport const HoverCard = ({\n className,\n children,\n logoUrl,\n}: {\n className?: string\n children: React.ReactNode\n logoUrl: string\n}) => {\n return (\n <div\n className={cn(\n 'rounded-2xl h-full w-full p-4 overflow-hidden bg-black border border-white/[0.2] group-hover:border-[var(--timberwolf)] relative z-20',\n className\n )}\n >\n <div\n className=\"absolute bottom-[-3rem] left-[-5rem] h-56 w-56 opacity-50\"\n style={{\n backgroundImage: `url(${logoUrl})`,\n backgroundPosition: 'bottom left',\n backgroundSize: 'contain',\n backgroundRepeat: 'no-repeat',\n maskImage: 'linear-gradient(to bottom left, transparent, black)',\n }}\n />\n <div className=\"relative z-50\">\n <div className=\"p-4\">{children}</div>\n </div>\n </div>\n )\n}\nexport const HoverCardTitle = ({\n className,\n children,\n}: {\n className?: string\n children: React.ReactNode\n}) => {\n return (\n <h4 className={cn('text-zinc-100 font-bold tracking-wide mt-4', className)}>\n {children}\n </h4>\n )\n}\nexport const HoverCardDescription = ({\n className,\n children,\n}: {\n className?: string\n children: React.ReactNode\n}) => {\n return (\n <p\n className={cn(\n 'mt-8 text-zinc-400 tracking-wide leading-relaxed text-sm',\n className\n )}\n >\n {children}\n </p>\n )\n}\n","'use client'\n\nimport React, { useCallback, useEffect, useRef, useState } from 'react'\nimport { AnimatePresence, motion, LayoutGroup } from 'motion/react'\nimport { cn } from '../utils/cn'\n\nexport const FlipWords = ({\n words,\n duration = 3000,\n className,\n}: {\n words: string[]\n duration?: number\n className?: string\n}) => {\n const [currentWord, setCurrentWord] = useState(words[0])\n const [isAnimating, setIsAnimating] = useState<boolean>(false)\n\n const startAnimation = useCallback(() => {\n const word = words[words.indexOf(currentWord) + 1] || words[0]\n setCurrentWord(word)\n setIsAnimating(true)\n }, [currentWord, words])\n\n useEffect(() => {\n if (!isAnimating)\n setTimeout(() => {\n startAnimation()\n }, duration)\n }, [isAnimating, duration, startAnimation])\n\n return (\n <AnimatePresence\n onExitComplete={() => {\n setIsAnimating(false)\n }}\n >\n <motion.div\n initial={{\n opacity: 0,\n y: 10,\n }}\n animate={{\n opacity: 1,\n y: 0,\n }}\n transition={{\n type: 'spring',\n stiffness: 100,\n damping: 10,\n }}\n exit={{\n opacity: 0,\n y: -40,\n x: 40,\n filter: 'blur(8px)',\n scale: 2,\n position: 'absolute',\n }}\n className={cn(\n 'z-10 inline-block relative text-left text-neutral-100 px-2',\n className\n )}\n key={currentWord}\n >\n {currentWord.split(' ').map((word, wordIndex) => (\n <motion.span\n key={word + wordIndex}\n initial={{ opacity: 0, y: 10, filter: 'blur(8px)' }}\n animate={{ opacity: 1, y: 0, filter: 'blur(0px)' }}\n transition={{\n delay: wordIndex * 0.3,\n duration: 0.3,\n }}\n className=\"inline-block whitespace-nowrap\"\n >\n {word.split('').map((letter, letterIndex) => (\n <motion.span\n key={word + letterIndex}\n initial={{ opacity: 0, y: 10, filter: 'blur(8px)' }}\n animate={{ opacity: 1, y: 0, filter: 'blur(0px)' }}\n transition={{\n delay: wordIndex * 0.3 + letterIndex * 0.05,\n duration: 0.2,\n }}\n className=\"inline-block\"\n >\n {letter}\n </motion.span>\n ))}\n <span className=\"inline-block\"> </span>\n </motion.span>\n ))}\n </motion.div>\n </AnimatePresence>\n )\n}\n","'use client'\n\nimport { cn } from '../utils/cn'\nimport {\n useMotionValue,\n motion,\n useMotionTemplate,\n animate,\n} from 'motion/react'\nimport React, { useEffect, useState } from 'react'\n\nexport const HeroHighlight = ({\n children,\n className,\n containerClassName,\n}: {\n children: React.ReactNode\n className?: string\n containerClassName?: string\n}) => {\n let mouseX = useMotionValue(0)\n let mouseY = useMotionValue(0)\n const [isHoverable, setIsHoverable] = useState(false)\n\n useEffect(() => {\n const mediaQuery = window.matchMedia('(pointer: fine)')\n setIsHoverable(mediaQuery.matches)\n\n const handleChange = (e: MediaQueryListEvent) => {\n setIsHoverable(e.matches)\n }\n\n mediaQuery.addEventListener('change', handleChange)\n\n return () => {\n mediaQuery.removeEventListener('change', handleChange)\n }\n }, [])\n\n useEffect(() => {\n if (!isHoverable) {\n const updatePosition = () => {\n const randomX = Math.random() * window.innerWidth\n const randomY = Math.random() * window.innerHeight\n animate(mouseX, randomX, { duration: 2 })\n animate(mouseY, randomY, { duration: 2 })\n }\n\n const interval = setInterval(updatePosition, 2000)\n updatePosition()\n\n return () => clearInterval(interval)\n }\n }, [isHoverable, mouseX, mouseY])\n\n const handleMouseMove = (event: React.MouseEvent<HTMLDivElement>) => {\n if (!isHoverable || !event.currentTarget) return\n const { left, top } = event.currentTarget.getBoundingClientRect()\n mouseX.set(event.clientX - left)\n mouseY.set(event.clientY - top)\n }\n\n return (\n <div\n className={cn(\n 'relative h-[40rem] flex items-center bg-[var(--night)] justify-center w-full group',\n containerClassName\n )}\n onMouseMove={handleMouseMove}\n >\n <div className=\"absolute inset-0 bg-dot-thick-neutral-800 pointer-events-none\" />\n <motion.div\n className=\"pointer-events-none bg-dot-thick-gray-100 absolute inset-0 opacity-0 transition duration-300 group-hover:opacity-100\"\n style={{\n WebkitMaskImage: useMotionTemplate`\n radial-gradient(\n 200px circle at ${mouseX}px ${mouseY}px,\n black 0%,\n transparent 100%\n )\n `,\n maskImage: useMotionTemplate`\n radial-gradient(\n 200px circle at ${mouseX}px ${mouseY}px,\n black 0%,\n transparent 100%\n )\n `,\n }}\n />\n\n <div className={cn('relative z-20', className)}>{children}</div>\n </div>\n )\n}\n\nexport const Highlight = ({\n children,\n className,\n}: {\n children: React.ReactNode\n className?: string\n}) => {\n return (\n <motion.span\n initial={{\n backgroundSize: '0% 100%',\n }}\n animate={{\n backgroundSize: '100% 100%',\n }}\n transition={{\n duration: 2,\n ease: 'linear',\n delay: 0.5,\n }}\n style={{\n backgroundRepeat: 'no-repeat',\n backgroundPosition: 'left center',\n display: 'inline',\n }}\n className={cn(\n `relative inline-block pb-1 px-1 rounded-lg bg-gradient-to-r from-[var(--ash-grey)] to-[var(--timberwolf)]`,\n className\n )}\n >\n {children}\n </motion.span>\n )\n}\n","'use client'\n\nimport * as React from 'react'\nimport * as PopoverPrimitive from '@radix-ui/react-popover'\n\nimport { cn } from '../utils/cn'\n\nconst Popover = PopoverPrimitive.Root\n\nconst PopoverTrigger = PopoverPrimitive.Trigger\n\nconst PopoverAnchor = PopoverPrimitive.Anchor\n\nconst PopoverContent = React.forwardRef<\n React.ElementRef<typeof PopoverPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content>\n>(({ className, align = 'center', sideOffset = 4, ...props }, ref) => (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n ref={ref}\n align={align}\n sideOffset={sideOffset}\n className={cn(\n 'z-50 w-72 rounded-md border border-zinc-800 bg-zinc-950 p-4 text-zinc-50 shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-popover-content-transform-origin]',\n className\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n))\nPopoverContent.displayName = PopoverPrimitive.Content.displayName\n\nexport { Popover, PopoverTrigger, PopoverContent, PopoverAnchor }\n","'use client'\n\nimport * as React from 'react'\nimport {\n ChevronDownIcon,\n ChevronLeftIcon,\n ChevronRightIcon,\n} from 'lucide-react'\nimport { DayButton, DayPicker, getDefaultClassNames } from 'react-day-picker'\n\nimport { cn } from '../utils/cn'\nimport { Button, buttonVariants } from './button'\n\nfunction Calendar({\n className,\n classNames,\n showOutsideDays = true,\n captionLayout = 'label',\n buttonVariant = 'ghost',\n formatters,\n components,\n ...props\n}: React.ComponentProps<typeof DayPicker> & {\n buttonVariant?: React.ComponentProps<typeof Button>['variant']\n}) {\n const defaultClassNames = getDefaultClassNames()\n\n return (\n <DayPicker\n showOutsideDays={showOutsideDays}\n className={cn(\n 'bg-zinc-950 group/calendar p-3 [--cell-size:2rem] [[data-slot=card-content]_&]:bg-transparent [[data-slot=popover-content]_&]:bg-transparent',\n String.raw`rtl:**:[.rdp-button\\_next>svg]:rotate-180`,\n String.raw`rtl:**:[.rdp-button\\_previous>svg]:rotate-180`,\n className\n )}\n captionLayout={captionLayout}\n formatters={{\n formatMonthDropdown: (date) =>\n date.toLocaleString('default', { month: 'short' }),\n ...formatters,\n }}\n classNames={{\n root: cn('w-fit', defaultClassNames.root),\n months: cn(\n 'relative flex flex-col gap-4 md:flex-row',\n defaultClassNames.months\n ),\n month: cn('flex w-full flex-col gap-4', defaultClassNames.month),\n nav: cn(\n 'absolute inset-x-0 top-0 flex w-full items-center justify-between gap-1',\n defaultClassNames.nav\n ),\n button_previous: cn(\n buttonVariants({ variant: buttonVariant }),\n 'h-[--cell-size] w-[--cell-size] select-none p-0 aria-disabled:opacity-50',\n defaultClassNames.button_previous\n ),\n button_next: cn(\n buttonVariants({ variant: buttonVariant }),\n 'h-[--cell-size] w-[--cell-size] select-none p-0 aria-disabled:opacity-50',\n defaultClassNames.button_next\n ),\n month_caption: cn(\n 'flex h-[--cell-size] w-full items-center justify-center px-[--cell-size]',\n defaultClassNames.month_caption\n ),\n dropdowns: cn(\n 'flex h-[--cell-size] w-full items-center justify-center gap-1.5 text-sm font-medium',\n defaultClassNames.dropdowns\n ),\n dropdown_root: cn(\n 'has-focus:border-zinc-300 border-zinc-800 shadow-xs has-focus:ring-zinc-300/50 has-focus:ring-[3px] relative rounded-md border',\n defaultClassNames.dropdown_root\n ),\n dropdown: cn('absolute inset-0 opacity-0', defaultClassNames.dropdown),\n caption_label: cn(\n 'select-none font-medium',\n captionLayout === 'label'\n ? 'text-sm'\n : '[&>svg]:text-zinc-400 flex h-8 items-center gap-1 rounded-md pl-2 pr-1 text-sm [&>svg]:size-3.5',\n defaultClassNames.caption_label\n ),\n table: 'w-full border-collapse',\n weekdays: cn('flex', defaultClassNames.weekdays),\n weekday: cn(\n 'text-zinc-400 flex-1 select-none rounded-md text-[0.8rem] font-normal',\n defaultClassNames.weekday\n ),\n week: cn('mt-2 flex w-full', defaultClassNames.week),\n week_number_header: cn(\n 'w-[--cell-size] select-none',\n defaultClassNames.week_number_header\n ),\n week_number: cn(\n 'text-zinc-400 select-none text-[0.8rem]',\n defaultClassNames.week_number\n ),\n day: cn(\n 'group/day relative aspect-square h-full w-full select-none p-0 text-center [&:first-child[data-selected=true]_button]:rounded-l-md [&:last-child[data-selected=true]_button]:rounded-r-md',\n defaultClassNames.day\n ),\n range_start: cn(\n 'bg-zinc-800 rounded-l-md',\n defaultClassNames.range_start\n ),\n range_middle: cn('rounded-none', defaultClassNames.range_middle),\n range_end: cn('bg-zinc-800 rounded-r-md', defaultClassNames.range_end),\n today: cn(\n 'bg-zinc-800 text-zinc-50 rounded-md data-[selected=true]:rounded-none',\n defaultClassNames.today\n ),\n outside: cn(\n 'text-zinc-400 aria-selected:text-zinc-400',\n defaultClassNames.outside\n ),\n disabled: cn('text-zinc-400 opacity-50', defaultClassNames.disabled),\n hidden: cn('invisible', defaultClassNames.hidden),\n ...classNames,\n }}\n components={{\n Root: ({ className, rootRef, ...props }) => {\n return (\n <div\n data-slot=\"calendar\"\n ref={rootRef}\n className={cn(className)}\n {...props}\n />\n )\n },\n Chevron: ({ className, orientation, ...props }) => {\n if (orientation === 'left') {\n return (\n <ChevronLeftIcon className={cn('size-4', className)} {...props} />\n )\n }\n\n if (orientation === 'right') {\n return (\n <ChevronRightIcon\n className={cn('size-4', className)}\n {...props}\n />\n )\n }\n\n return (\n <ChevronDownIcon className={cn('size-4', className)} {...props} />\n )\n },\n DayButton: CalendarDayButton,\n WeekNumber: ({ children, ...props }) => {\n return (\n <td {...props}>\n <div className=\"flex size-[--cell-size] items-center justify-center text-center\">\n {children}\n </div>\n </td>\n )\n },\n ...components,\n }}\n {...props}\n />\n )\n}\n\nfunction CalendarDayButton({\n className,\n day,\n modifiers,\n ...props\n}: React.ComponentProps<typeof DayButton>) {\n const defaultClassNames = getDefaultClassNames()\n\n const ref = React.useRef<HTMLButtonElement>(null)\n React.useEffect(() => {\n if (modifiers.focused) ref.current?.focus()\n }, [modifiers.focused])\n\n return (\n <Button\n ref={ref}\n variant=\"ghost\"\n size=\"icon\"\n data-day={day.date.toLocaleDateString()}\n data-selected-single={\n modifiers.selected &&\n !modifiers.range_start &&\n !modifiers.range_end &&\n !modifiers.range_middle\n }\n data-range-start={modifiers.range_start}\n data-range-end={modifiers.range_end}\n data-range-middle={modifiers.range_middle}\n className={cn(\n 'data-[selected-single=true]:bg-zinc-50 data-[selected-single=true]:text-zinc-900 data-[range-middle=true]:bg-zinc-800 data-[range-middle=true]:text-zinc-50 data-[range-start=true]:bg-zinc-50 data-[range-start=true]:text-zinc-900 data-[range-end=true]:bg-zinc-50 data-[range-end=true]:text-zinc-900 group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-ring/50 flex aspect-square h-auto w-full min-w-[--cell-size] flex-col gap-1 font-normal leading-none data-[range-end=true]:rounded-md data-[range-middle=true]:rounded-none data-[range-start=true]:rounded-md group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:ring-[3px] [&>span]:text-xs [&>span]:opacity-70',\n defaultClassNames.day,\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Calendar, CalendarDayButton }\n","'use client'\n\nimport * as React from 'react'\nimport { CalendarIcon } from 'lucide-react'\n\nimport { cn } from '../utils/cn'\nimport { Button } from './button'\nimport { Calendar } from './calendar'\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from './popover'\n\ninterface DatePickerProps {\n value: string\n onChange: (value: string) => void\n min?: string\n max?: string\n className?: string\n id?: string\n placeholder?: string\n}\n\nexport function DatePicker({\n value,\n onChange,\n min,\n max,\n className,\n id,\n placeholder = 'Pick a date',\n}: DatePickerProps) {\n const [open, setOpen] = React.useState(false)\n\n // Convert string value to Date object (ensure consistent timezone handling)\n const selectedDate = value ? new Date(value + 'T00:00:00') : undefined\n\n // Convert min string to Date object (ensure consistent timezone handling)\n const minDate = min ? new Date(min + 'T00:00:00') : undefined\n\n // Convert max string to Date object (ensure consistent timezone handling)\n const maxDate = max ? new Date(max + 'T00:00:00') : undefined\n\n const formatDate = (date: Date) => {\n return date.toLocaleDateString('en-GB', {\n day: '2-digit',\n month: 'short',\n year: 'numeric',\n })\n }\n\n const handleDateSelect = (date: Date | undefined) => {\n if (date) {\n // Convert Date back to YYYY-MM-DD string format\n const year = date.getFullYear()\n const month = String(date.getMonth() + 1).padStart(2, '0')\n const day = String(date.getDate()).padStart(2, '0')\n onChange(`${year}-${month}-${day}`)\n setOpen(false)\n }\n }\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n id={id}\n variant=\"outline\"\n className={cn(\n 'w-full justify-start text-left font-normal h-10 bg-zinc-800 border-none text-white shadow-input rounded-md px-3 py-2 text-sm',\n 'focus-visible:outline-none focus-visible:ring-[2px] focus-visible:ring-neutral-600',\n 'shadow-[0px_0px_1px_1px_var(--neutral-700)]',\n 'hover:shadow-none transition duration-400',\n !selectedDate && 'text-neutral-400',\n className\n )}\n >\n <CalendarIcon className=\"mr-2 h-4 w-4\" />\n {selectedDate ? formatDate(selectedDate) : <span>{placeholder}</span>}\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto p-0\" align=\"start\">\n <Calendar\n mode=\"single\"\n selected={selectedDate}\n onSelect={handleDateSelect}\n disabled={(date) => {\n // Compare dates by normalizing to start of day\n const dateAtMidnight = new Date(\n date.getFullYear(),\n date.getMonth(),\n date.getDate()\n )\n\n // Check min date\n if (minDate) {\n const minDateAtMidnight = new Date(\n minDate.getFullYear(),\n minDate.getMonth(),\n minDate.getDate()\n )\n if (dateAtMidnight < minDateAtMidnight) return true\n }\n\n // Check max date\n if (maxDate) {\n const maxDateAtMidnight = new Date(\n maxDate.getFullYear(),\n maxDate.getMonth(),\n maxDate.getDate()\n )\n if (dateAtMidnight > maxDateAtMidnight) return true\n }\n\n return false\n }}\n initialFocus\n />\n </PopoverContent>\n </Popover>\n )\n}\n","'use client'\n\nimport * as React from 'react'\nimport { Button } from './button'\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from './popover'\nimport { cn } from '../utils/cn'\nimport { ClockIcon } from 'lucide-react'\n\ninterface TimePickerProps {\n value?: string\n onChange?: (value: string) => void\n placeholder?: string\n className?: string\n disabled?: boolean\n min?: string\n max?: string\n}\n\nexport function TimePicker({\n value,\n onChange,\n placeholder = 'Select time',\n className,\n disabled = false,\n min,\n max,\n}: TimePickerProps) {\n const [open, setOpen] = React.useState(false)\n const [hours, setHours] = React.useState(\n value ? parseInt(value.split(':')[0]) : 9\n )\n const [minutes, setMinutes] = React.useState(\n value ? parseInt(value.split(':')[1]) : 0\n )\n\n const formatTime = (h: number, m: number) => {\n return `${h.toString().padStart(2, '0')}:${m.toString().padStart(2, '0')}`\n }\n\n const handleTimeSelect = (h: number, m: number) => {\n const timeString = formatTime(h, m)\n setHours(h)\n setMinutes(m)\n onChange?.(timeString)\n setOpen(false)\n }\n\n const generateTimeOptions = () => {\n const options = []\n for (let h = 6; h <= 23; h++) {\n for (let m = 0; m < 60; m += 15) {\n const timeString = formatTime(h, m)\n\n // Check against min/max constraints\n if (min && timeString < min) continue\n if (max && timeString > max) continue\n\n options.push({ hours: h, minutes: m, display: timeString })\n }\n }\n return options\n }\n\n const timeOptions = generateTimeOptions()\n const displayValue = value || ''\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n variant=\"outline\"\n className={cn(\n 'w-full justify-start text-left font-normal h-10 bg-zinc-800 border-none text-white shadow-input rounded-md px-3 py-2 text-sm',\n 'focus-visible:outline-none focus-visible:ring-[2px] focus-visible:ring-neutral-600',\n 'shadow-[0px_0px_1px_1px_var(--neutral-700)]',\n 'hover:shadow-none transition duration-400',\n !value && 'text-neutral-400',\n className\n )}\n disabled={disabled}\n >\n <ClockIcon className=\"mr-2 h-4 w-4\" />\n {displayValue || placeholder}\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto p-0\" align=\"start\">\n <div className=\"max-h-60 overflow-y-auto\">\n <div className=\"grid grid-cols-1 gap-1 p-2\">\n {timeOptions.map(({ hours: h, minutes: m, display }) => (\n <Button\n key={display}\n variant={value === display ? 'default' : 'ghost'}\n className=\"justify-start text-left h-8 text-sm\"\n onClick={() => handleTimeSelect(h, m)}\n >\n {display}\n </Button>\n ))}\n </div>\n </div>\n </PopoverContent>\n </Popover>\n )\n}\n","'use client'\n\nimport * as React from 'react'\nimport { CalendarIcon } from 'lucide-react'\n\nimport { cn } from '../utils/cn'\nimport { Button } from './button'\nimport { Calendar } from './calendar'\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from './popover'\n\ninterface DateTimePickerProps {\n value: string // YYYY-MM-DDTHH:mm\n onChange: (value: string) => void\n placeholder?: string\n className?: string\n disabled?: boolean\n required?: boolean\n}\n\nexport function DateTimePicker({\n value,\n onChange,\n placeholder = 'Pick date & time',\n className,\n disabled = false,\n required = false,\n}: DateTimePickerProps) {\n const [open, setOpen] = React.useState(false)\n const hourRef = React.useRef<HTMLDivElement>(null)\n const minuteRef = React.useRef<HTMLDivElement>(null)\n\n // Parse value into date and time parts\n const datePart = value ? value.split('T')[0] : ''\n const timePart = value ? value.split('T')[1] || '' : ''\n const selectedHour = timePart ? parseInt(timePart.split(':')[0]) : -1\n const selectedMinute = timePart ? parseInt(timePart.split(':')[1]) : -1\n const selectedDate = datePart ? new Date(datePart + 'T00:00:00') : undefined\n\n const formatDisplay = (val: string) => {\n if (!val) return ''\n const [d, t] = val.split('T')\n if (!d) return ''\n const date = new Date(d + 'T00:00:00')\n const dateStr = date.toLocaleDateString('en-GB', {\n day: '2-digit',\n month: 'short',\n year: 'numeric',\n })\n if (!t) return dateStr\n return `${dateStr}, ${t}`\n }\n\n const buildValue = (date: string, hour: number, minute: number) => {\n const h = hour.toString().padStart(2, '0')\n const m = minute.toString().padStart(2, '0')\n return `${date}T${h}:${m}`\n }\n\n const handleDateSelect = (date: Date | undefined) => {\n if (!date) return\n const year = date.getFullYear()\n const month = String(date.getMonth() + 1).padStart(2, '0')\n const day = String(date.getDate()).padStart(2, '0')\n const newDate = `${year}-${month}-${day}`\n\n // Keep existing time, default to 12:00 if none set\n const h = selectedHour >= 0 ? selectedHour : 12\n const m = selectedMinute >= 0 ? selectedMinute : 0\n onChange(buildValue(newDate, h, m))\n }\n\n const handleHourSelect = (h: number) => {\n if (!datePart) {\n // Auto-pick today if no date selected\n const now = new Date()\n const year = now.getFullYear()\n const month = String(now.getMonth() + 1).padStart(2, '0')\n const day = String(now.getDate()).padStart(2, '0')\n const m = selectedMinute >= 0 ? selectedMinute : 0\n onChange(buildValue(`${year}-${month}-${day}`, h, m))\n } else {\n const m = selectedMinute >= 0 ? selectedMinute : 0\n onChange(buildValue(datePart, h, m))\n }\n }\n\n const handleMinuteSelect = (m: number) => {\n if (!datePart) {\n const now = new Date()\n const year = now.getFullYear()\n const month = String(now.getMonth() + 1).padStart(2, '0')\n const day = String(now.getDate()).padStart(2, '0')\n const h = selectedHour >= 0 ? selectedHour : 12\n onChange(buildValue(`${year}-${month}-${day}`, h, m))\n } else {\n const h = selectedHour >= 0 ? selectedHour : 12\n onChange(buildValue(datePart, h, m))\n }\n }\n\n // Scroll to selected hour/minute when popover opens\n React.useEffect(() => {\n if (open) {\n setTimeout(() => {\n if (hourRef.current && selectedHour >= 0) {\n const el = hourRef.current.querySelector(`[data-hour=\"${selectedHour}\"]`)\n el?.scrollIntoView({ block: 'center' })\n }\n if (minuteRef.current && selectedMinute >= 0) {\n const el = minuteRef.current.querySelector(`[data-minute=\"${selectedMinute}\"]`)\n el?.scrollIntoView({ block: 'center' })\n }\n }, 50)\n }\n }, [open, selectedHour, selectedMinute])\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n type=\"button\"\n variant=\"outline\"\n disabled={disabled}\n className={cn(\n 'w-full justify-start text-left font-normal h-10 bg-zinc-800 border-none text-white shadow-input rounded-md px-3 py-2 text-sm',\n 'focus-visible:outline-none focus-visible:ring-[2px] focus-visible:ring-neutral-600',\n 'shadow-[0px_0px_1px_1px_var(--neutral-700)]',\n 'hover:shadow-none transition duration-400',\n !value && 'text-neutral-400',\n className\n )}\n >\n <CalendarIcon className=\"mr-2 h-4 w-4 shrink-0\" />\n {value ? formatDisplay(value) : <span>{placeholder}</span>}\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto p-0\" align=\"start\">\n <div className=\"flex\">\n {/* Calendar */}\n <Calendar\n mode=\"single\"\n selected={selectedDate}\n onSelect={handleDateSelect}\n initialFocus\n />\n\n {/* Time selectors */}\n <div className=\"flex border-l border-zinc-800\">\n {/* Hours */}\n <div\n ref={hourRef}\n className=\"h-[280px] w-16 overflow-y-auto p-1\"\n >\n <div className=\"px-1 py-1.5 text-center text-xs text-zinc-400 font-medium\">\n Hr\n </div>\n {Array.from({ length: 24 }, (_, i) => (\n <button\n key={i}\n data-hour={i}\n type=\"button\"\n onClick={() => handleHourSelect(i)}\n className={cn(\n 'w-full rounded-md px-2 py-1.5 text-sm text-center cursor-pointer transition-colors',\n selectedHour === i\n ? 'bg-zinc-50 text-zinc-900 font-medium'\n : 'text-zinc-300 hover:bg-zinc-800'\n )}\n >\n {i.toString().padStart(2, '0')}\n </button>\n ))}\n </div>\n\n {/* Minutes */}\n <div\n ref={minuteRef}\n className=\"h-[280px] w-16 overflow-y-auto border-l border-zinc-800 p-1\"\n >\n <div className=\"px-1 py-1.5 text-center text-xs text-zinc-400 font-medium\">\n Min\n </div>\n {Array.from({ length: 12 }, (_, i) => i * 5).map((m) => (\n <button\n key={m}\n data-minute={m}\n type=\"button\"\n onClick={() => handleMinuteSelect(m)}\n className={cn(\n 'w-full rounded-md px-2 py-1.5 text-sm text-center cursor-pointer transition-colors',\n selectedMinute === m\n ? 'bg-zinc-50 text-zinc-900 font-medium'\n : 'text-zinc-300 hover:bg-zinc-800'\n )}\n >\n {m.toString().padStart(2, '0')}\n </button>\n ))}\n </div>\n </div>\n </div>\n </PopoverContent>\n </Popover>\n )\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as RechartsPrimitive from \"recharts\"\n\nimport { cn } from \"../utils\"\n\n// Format: { THEME_NAME: CSS_SELECTOR }\nconst THEMES = { light: \"\", dark: \".dark\" } as const\n\nexport type ChartConfig = {\n [k in string]: {\n label?: React.ReactNode\n icon?: React.ComponentType\n } & (\n | { color?: string; theme?: never }\n | { color?: never; theme: Record<keyof typeof THEMES, string> }\n )\n}\n\ntype ChartContextProps = {\n config: ChartConfig\n}\n\nconst ChartContext = React.createContext<ChartContextProps | null>(null)\n\nfunction useChart() {\n const context = React.useContext(ChartContext)\n\n if (!context) {\n throw new Error(\"useChart must be used within a <ChartContainer />\")\n }\n\n return context\n}\n\nfunction ChartContainer({\n id,\n className,\n children,\n config,\n ...props\n}: React.ComponentProps<\"div\"> & {\n config: ChartConfig\n children: React.ComponentProps<\n typeof RechartsPrimitive.ResponsiveContainer\n >[\"children\"]\n}) {\n const uniqueId = React.useId()\n const chartId = `chart-${id || uniqueId.replace(/:/g, \"\")}`\n\n return (\n <ChartContext.Provider value={{ config }}>\n <div\n data-slot=\"chart\"\n data-chart={chartId}\n className={cn(\n \"[&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border flex aspect-video justify-center text-xs [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-hidden [&_.recharts-sector]:outline-hidden [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-surface]:outline-hidden\",\n className\n )}\n {...props}\n >\n <ChartStyle id={chartId} config={config} />\n <RechartsPrimitive.ResponsiveContainer>\n {children}\n </RechartsPrimitive.ResponsiveContainer>\n </div>\n </ChartContext.Provider>\n )\n}\n\nconst ChartStyle = ({ id, config }: { id: string; config: ChartConfig }) => {\n const colorConfig = Object.entries(config).filter(\n ([, config]) => config.theme || config.color\n )\n\n if (!colorConfig.length) {\n return null\n }\n\n return (\n <style\n dangerouslySetInnerHTML={{\n __html: Object.entries(THEMES)\n .map(\n ([theme, prefix]) => `\n${prefix} [data-chart=${id}] {\n${colorConfig\n .map(([key, itemConfig]) => {\n const color =\n itemConfig.theme?.[theme as keyof typeof itemConfig.theme] ||\n itemConfig.color\n return color ? ` --color-${key}: ${color};` : null\n })\n .join(\"\\n\")}\n}\n`\n )\n .join(\"\\n\"),\n }}\n />\n )\n}\n\nconst ChartTooltip = RechartsPrimitive.Tooltip\n\nfunction ChartTooltipContent({\n active,\n payload,\n className,\n indicator = \"dot\",\n hideLabel = false,\n hideIndicator = false,\n label,\n labelFormatter,\n labelClassName,\n formatter,\n color,\n nameKey,\n labelKey,\n}: React.ComponentProps<typeof RechartsPrimitive.Tooltip> &\n React.ComponentProps<\"div\"> & {\n hideLabel?: boolean\n hideIndicator?: boolean\n indicator?: \"line\" | \"dot\" | \"dashed\"\n nameKey?: string\n labelKey?: string\n }) {\n const { config } = useChart()\n\n const tooltipLabel = React.useMemo(() => {\n if (hideLabel || !payload?.length) {\n return null\n }\n\n const [item] = payload\n const key = `${labelKey || item?.dataKey || item?.name || \"value\"}`\n const itemConfig = getPayloadConfigFromPayload(config, item, key)\n const value =\n !labelKey && typeof label === \"string\"\n ? config[label as keyof typeof config]?.label || label\n : itemConfig?.label\n\n if (labelFormatter) {\n return (\n <div className={cn(\"font-medium\", labelClassName)}>\n {labelFormatter(value, payload)}\n </div>\n )\n }\n\n if (!value) {\n return null\n }\n\n return <div className={cn(\"font-medium\", labelClassName)}>{value}</div>\n }, [\n label,\n labelFormatter,\n payload,\n hideLabel,\n labelClassName,\n config,\n labelKey,\n ])\n\n if (!active || !payload?.length) {\n return null\n }\n\n const nestLabel = payload.length === 1 && indicator !== \"dot\"\n\n return (\n <div\n className={cn(\n \"grid min-w-[8rem] items-start gap-1.5 rounded-lg border border-[var(--ash-grey)]/20 bg-[#1a1f1c] px-2.5 py-1.5 text-xs shadow-xl\",\n className\n )}\n >\n {!nestLabel ? tooltipLabel : null}\n <div className=\"grid gap-1.5\">\n {payload\n .filter((item) => item.type !== \"none\")\n .map((item, index) => {\n const key = `${nameKey || item.name || item.dataKey || \"value\"}`\n const itemConfig = getPayloadConfigFromPayload(config, item, key)\n const indicatorColor = color || item.payload.fill || item.color\n\n return (\n <div\n key={item.dataKey}\n className={cn(\n \"flex w-full flex-wrap items-stretch gap-2\",\n indicator === \"dot\" && \"items-center\"\n )}\n >\n {formatter && item?.value !== undefined && item.name ? (\n formatter(item.value, item.name, item, index, item.payload)\n ) : (\n <>\n {itemConfig?.icon ? (\n <itemConfig.icon />\n ) : (\n !hideIndicator && (\n <div\n className={cn(\n \"shrink-0 rounded-[2px]\",\n {\n \"h-2.5 w-2.5\": indicator === \"dot\",\n \"w-1\": indicator === \"line\",\n \"w-0 border-[1.5px] border-dashed bg-transparent\":\n indicator === \"dashed\",\n \"my-0.5\": nestLabel && indicator === \"dashed\",\n }\n )}\n style={\n {\n backgroundColor: indicatorColor,\n borderColor: indicatorColor,\n } as React.CSSProperties\n }\n />\n )\n )}\n <div\n className={cn(\n \"flex flex-1 justify-between leading-none\",\n nestLabel ? \"items-end\" : \"items-center\"\n )}\n >\n <div className=\"grid gap-1.5\">\n {nestLabel ? tooltipLabel : null}\n <span className=\"text-[var(--ash-grey)]\">\n {itemConfig?.label || item.name}\n </span>\n </div>\n {item.value && (\n <span className=\"text-[var(--timberwolf)] font-mono font-medium tabular-nums\">\n {item.value.toLocaleString()}\n </span>\n )}\n </div>\n </>\n )}\n </div>\n )\n })}\n </div>\n </div>\n )\n}\n\nconst ChartLegend = RechartsPrimitive.Legend\n\nfunction ChartLegendContent({\n className,\n hideIcon = false,\n payload,\n verticalAlign = \"bottom\",\n nameKey,\n}: React.ComponentProps<\"div\"> &\n Pick<RechartsPrimitive.LegendProps, \"payload\" | \"verticalAlign\"> & {\n hideIcon?: boolean\n nameKey?: string\n }) {\n const { config } = useChart()\n\n if (!payload?.length) {\n return null\n }\n\n return (\n <div\n className={cn(\n \"flex items-center justify-center gap-4\",\n verticalAlign === \"top\" ? \"pb-3\" : \"pt-3\",\n className\n )}\n >\n {payload\n .filter((item) => item.type !== \"none\")\n .map((item) => {\n const key = `${nameKey || item.dataKey || \"value\"}`\n const itemConfig = getPayloadConfigFromPayload(config, item, key)\n\n return (\n <div\n key={item.value}\n className={cn(\n \"flex items-center gap-1.5 text-[var(--ash-grey)]\"\n )}\n >\n {itemConfig?.icon && !hideIcon ? (\n <itemConfig.icon />\n ) : (\n <div\n className=\"h-2 w-2 shrink-0 rounded-[2px]\"\n style={{\n backgroundColor: item.color,\n }}\n />\n )}\n {itemConfig?.label}\n </div>\n )\n })}\n </div>\n )\n}\n\nfunction getPayloadConfigFromPayload(\n config: ChartConfig,\n payload: unknown,\n key: string\n) {\n if (typeof payload !== \"object\" || payload === null) {\n return undefined\n }\n\n const payloadPayload =\n \"payload\" in payload &&\n typeof payload.payload === \"object\" &&\n payload.payload !== null\n ? payload.payload\n : undefined\n\n let configLabelKey: string = key\n\n if (\n key in payload &&\n typeof payload[key as keyof typeof payload] === \"string\"\n ) {\n configLabelKey = payload[key as keyof typeof payload] as string\n } else if (\n payloadPayload &&\n key in payloadPayload &&\n typeof payloadPayload[key as keyof typeof payloadPayload] === \"string\"\n ) {\n configLabelKey = payloadPayload[\n key as keyof typeof payloadPayload\n ] as string\n }\n\n return configLabelKey in config\n ? config[configLabelKey]\n : config[key as keyof typeof config]\n}\n\nexport {\n ChartContainer,\n ChartTooltip,\n ChartTooltipContent,\n ChartLegend,\n ChartLegendContent,\n ChartStyle,\n}\n"],"mappings":";;;AAAA,YAAY,WAAW;AACvB,SAAS,YAAY;AACrB,SAAS,WAA8B;;;ACFvC,SAAS,YAA6B;AACtC,SAAS,eAAe;AAEjB,SAAS,MAAM,QAAsB;AAC1C,SAAO,QAAQ,KAAK,MAAM,CAAC;AAC7B;;;ADiCI,mBACE,KADF;AAjCJ,IAAM,iBAAiB;AAAA,EACrB;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SAAS;AAAA,QACT,aACE;AAAA,QACF,SACE;AAAA,QACF,WACE;AAAA,QACF,OAAO;AAAA,QACP,MAAM;AAAA,QACN,UACE;AAAA,MACJ;AAAA,MACA,MAAM;AAAA,QACJ,SAAS;AAAA,QACT,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,SAAS;AAAA,MACT,MAAM;AAAA,IACR;AAAA,EACF;AACF;AAEA,SAAS,iBAAiB;AACxB,SACE,iCACE;AAAA,wBAAC,UAAK,WAAU,0LAAyL;AAAA,IACzM,oBAAC,UAAK,WAAU,0MAAyM;AAAA,KAC3N;AAEJ;AAQA,IAAM,SAAe;AAAA,EACnB,CAAC,EAAE,WAAW,SAAS,MAAM,UAAU,OAAO,UAAU,GAAG,MAAM,GAAG,QAAQ;AAC1E,UAAM,OAAO,UAAU,OAAO;AAC9B,WACE;AAAA,MAAC;AAAA;AAAA,QACC,WAAW,GAAG,eAAe,EAAE,SAAS,MAAM,UAAU,CAAC,CAAC;AAAA,QAC1D;AAAA,QACC,GAAG;AAAA,QAEH;AAAA;AAAA,UACA,YAAY,cAAc,oBAAC,kBAAe;AAAA;AAAA;AAAA,IAC7C;AAAA,EAEJ;AACF;AACA,OAAO,cAAc;;;AElErB,YAAYA,YAAW;AAOrB,gBAAAC,YAAA;AAJF,IAAM,OAAa,kBAGjB,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QAC1B,gBAAAA;AAAA,EAAC;AAAA;AAAA,IACC;AAAA,IACA,WAAW;AAAA,MACT;AAAA,MACA;AAAA,IACF;AAAA,IACC,GAAG;AAAA;AACN,CACD;AACD,KAAK,cAAc;AAEnB,IAAM,aAAmB,kBAGvB,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QAC1B,gBAAAA;AAAA,EAAC;AAAA;AAAA,IACC;AAAA,IACA,WAAW,GAAG,iCAAiC,SAAS;AAAA,IACvD,GAAG;AAAA;AACN,CACD;AACD,WAAW,cAAc;AAEzB,IAAM,YAAkB,kBAGtB,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QAC1B,gBAAAA;AAAA,EAAC;AAAA;AAAA,IACC;AAAA,IACA,WAAW;AAAA,MACT;AAAA,MACA;AAAA,IACF;AAAA,IACC,GAAG;AAAA;AACN,CACD;AACD,UAAU,cAAc;AAExB,IAAM,kBAAwB,kBAG5B,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QAC1B,gBAAAA;AAAA,EAAC;AAAA;AAAA,IACC;AAAA,IACA,WAAW,GAAG,iCAAiC,SAAS;AAAA,IACvD,GAAG;AAAA;AACN,CACD;AACD,gBAAgB,cAAc;AAE9B,IAAM,cAAoB,kBAGxB,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QAC1B,gBAAAA,KAAC,SAAI,KAAU,WAAW,GAAG,YAAY,SAAS,GAAI,GAAG,OAAO,CACjE;AACD,YAAY,cAAc;AAE1B,IAAM,aAAmB,kBAGvB,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QAC1B,gBAAAA;AAAA,EAAC;AAAA;AAAA,IACC;AAAA,IACA,WAAW,GAAG,8BAA8B,SAAS;AAAA,IACpD,GAAG;AAAA;AACN,CACD;AACD,WAAW,cAAc;;;AC1EzB,SAAS,OAAAC,YAA8B;AA6BnC,gBAAAC,YAAA;AA1BJ,IAAM,gBAAgBC;AAAA,EACpB;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SACE;AAAA,QACF,WACE;AAAA,QACF,aACE;AAAA,QACF,SAAS;AAAA,MACX;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,SAAS;AAAA,IACX;AAAA,EACF;AACF;AAMA,SAAS,MAAM,EAAE,WAAW,SAAS,GAAG,MAAM,GAAe;AAC3D,SACE,gBAAAD,KAAC,SAAI,WAAW,GAAG,cAAc,EAAE,QAAQ,CAAC,GAAG,SAAS,GAAI,GAAG,OAAO;AAE1E;;;AC9BA,YAAYE,YAAW;AACvB,YAAY,oBAAoB;AAChC,SAAS,OAAAC,YAA8B;AAYrC,gBAAAC,YAAA;AATF,IAAM,gBAAgBC;AAAA,EACpB;AACF;AAEA,IAAM,QAAc,kBAIlB,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QAC1B,gBAAAD;AAAA,EAAgB;AAAA,EAAf;AAAA,IACC;AAAA,IACA,WAAW,GAAG,cAAc,GAAG,SAAS;AAAA,IACvC,GAAG;AAAA;AACN,CACD;AACD,MAAM,cAA6B,oBAAK;;;ACpBxC,YAAYE,YAAW;AAEvB,SAAS,mBAAmB,gBAAgB,cAAc;AAmClD,gBAAAC,YAAA;AA9BR,IAAM,QAAc;AAAA,EAClB,CAAC,EAAE,WAAW,MAAM,GAAG,MAAM,GAAG,QAAQ;AACtC,UAAM,SAAS;AACf,UAAM,CAAC,SAAS,UAAU,IAAU,gBAAS,KAAK;AAElD,QAAI,SAAS,eAAe,CAAC;AAC7B,QAAI,SAAS,eAAe,CAAC;AAE7B,aAAS,gBAAgB,EAAE,eAAe,SAAS,QAAQ,GAAQ;AACjE,UAAI,EAAE,MAAM,IAAI,IAAI,cAAc,sBAAsB;AAExD,aAAO,IAAI,UAAU,IAAI;AACzB,aAAO,IAAI,UAAU,GAAG;AAAA,IAC1B;AACA,WACE,gBAAAA;AAAA,MAAC,OAAO;AAAA,MAAP;AAAA,QACC,OAAO;AAAA,UACL,YAAY;AAAA;AAAA,YAEV,UAAU,SAAS,OAAO,KAAK,cAAc,MAAM,MAAM,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA,QAKnE;AAAA,QACA,aAAa;AAAA,QACb,cAAc,MAAM,WAAW,IAAI;AAAA,QACnC,cAAc,MAAM,WAAW,KAAK;AAAA,QACpC,WAAU;AAAA,QAEV,0BAAAA;AAAA,UAAC;AAAA;AAAA,YACC;AAAA,YACA,WAAW;AAAA,cACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAOA;AAAA,YACF;AAAA,YACA;AAAA,YACC,GAAG;AAAA;AAAA,QACN;AAAA;AAAA,IACF;AAAA,EAEJ;AACF;AACA,MAAM,cAAc;;;ACxDpB,YAAYC,YAAW;AACvB,YAAY,qBAAqB;AAEjC,SAAS,kBAAkB;AAczB,gBAAAC,MA0BI,QAAAC,aA1BJ;AAZF,IAAM,SAAyB;AAE/B,IAAM,gBAAgC;AAEtC,IAAM,eAA+B;AAErC,IAAM,cAA8B;AAEpC,IAAM,gBAAsB,kBAG1B,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QAC1B,gBAAAD;AAAA,EAAiB;AAAA,EAAhB;AAAA,IACC;AAAA,IACA,WAAW;AAAA,MACT;AAAA,MACA;AAAA,IACF;AAAA,IACC,GAAG;AAAA;AACN,CACD;AACD,cAAc,cAA8B,wBAAQ;AAEpD,IAAM,gBAAsB,kBAG1B,CAAC,EAAE,WAAW,UAAU,GAAG,MAAM,GAAG,QACpC,gBAAAC,MAAC,gBACC;AAAA,kBAAAD,KAAC,iBAAc;AAAA,EACf,gBAAAC;AAAA,IAAiB;AAAA,IAAhB;AAAA,MACC;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEH;AAAA;AAAA,QACD,gBAAAA,MAAiB,uBAAhB,EAAsB,WAAU,6QAC/B;AAAA,0BAAAD,KAAC,cAAW,WAAU,WAAU;AAAA,UAChC,gBAAAA,KAAC,UAAK,WAAU,WAAU,mBAAK;AAAA,WACjC;AAAA;AAAA;AAAA,EACF;AAAA,GACF,CACD;AACD,cAAc,cAA8B,wBAAQ;AAEpD,IAAM,eAAe,CAAC;AAAA,EACpB;AAAA,EACA,GAAG;AACL,MACE,gBAAAA;AAAA,EAAC;AAAA;AAAA,IACC,WAAW;AAAA,MACT;AAAA,MACA;AAAA,IACF;AAAA,IACC,GAAG;AAAA;AACN;AAEF,aAAa,cAAc;AAE3B,IAAM,eAAe,CAAC;AAAA,EACpB;AAAA,EACA,GAAG;AACL,MACE,gBAAAA;AAAA,EAAC;AAAA;AAAA,IACC,WAAW;AAAA,MACT;AAAA,MACA;AAAA,IACF;AAAA,IACC,GAAG;AAAA;AACN;AAEF,aAAa,cAAc;AAE3B,IAAM,cAAoB,kBAGxB,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QAC1B,gBAAAA;AAAA,EAAiB;AAAA,EAAhB;AAAA,IACC;AAAA,IACA,WAAW;AAAA,MACT;AAAA,MACA;AAAA,IACF;AAAA,IACC,GAAG;AAAA;AACN,CACD;AACD,YAAY,cAA8B,sBAAM;AAEhD,IAAM,oBAA0B,kBAG9B,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QAC1B,gBAAAA;AAAA,EAAiB;AAAA,EAAhB;AAAA,IACC;AAAA,IACA,WAAW,GAAG,yBAAyB,SAAS;AAAA,IAC/C,GAAG;AAAA;AACN,CACD;AACD,kBAAkB,cAA8B,4BAAY;;;ACzG5D,YAAYE,YAAW;AACvB,YAAY,qBAAqB;AAEjC,SAAS,qBAAAC,oBAAmB,kBAAAC,iBAAgB,UAAAC,eAAc;AAqCpD,SAoBM,OAAAC,MApBN,QAAAC,aAAA;AAnCN,IAAM,SAAyB;AAC/B,IAAM,cAA8B;AACpC,IAAM,cAA8B;AAEpC,IAAM,gBAAsB,kBAG1B,CAAC,EAAE,WAAW,UAAU,GAAG,MAAM,GAAG,QAAQ;AAC5C,QAAM,SAAS;AACf,QAAM,CAAC,SAAS,UAAU,IAAU,gBAAS,KAAK;AAClD,MAAI,SAASH,gBAAe,CAAC;AAC7B,MAAI,SAASA,gBAAe,CAAC;AAE7B,WAAS,gBAAgB,EAAE,eAAe,SAAS,QAAQ,GAAQ;AACjE,QAAI,EAAE,MAAM,IAAI,IAAI,cAAc,sBAAsB;AACxD,WAAO,IAAI,UAAU,IAAI;AACzB,WAAO,IAAI,UAAU,GAAG;AAAA,EAC1B;AAEA,SACE,gBAAAE;AAAA,IAACD,QAAO;AAAA,IAAP;AAAA,MACC,OAAO;AAAA,QACL,YAAYF;AAAA;AAAA,cAEN,UAAU,SAAS,OAAO,KAAK,cAAc,MAAM,MAAM,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA,MAKvE;AAAA,MACA,aAAa;AAAA,MACb,cAAc,MAAM,WAAW,IAAI;AAAA,MACnC,cAAc,MAAM,WAAW,KAAK;AAAA,MACpC,WAAU;AAAA,MAEV,0BAAAI;AAAA,QAAiB;AAAA,QAAhB;AAAA,UACC;AAAA,UACA,WAAW;AAAA,YACT;AAAA,YACA;AAAA,UACF;AAAA,UACC,GAAG;AAAA,UAEH;AAAA;AAAA,YACD,gBAAAD,KAAiB,sBAAhB,EAAqB,SAAO,MAC3B,0BAAAA;AAAA,cAAC;AAAA;AAAA,gBACC,WAAU;AAAA,gBACV,OAAM;AAAA,gBACN,SAAQ;AAAA,gBACR,MAAK;AAAA,gBACL,QAAO;AAAA,gBACP,aAAY;AAAA,gBACZ,eAAc;AAAA,gBACd,gBAAe;AAAA,gBAEf,0BAAAA,KAAC,UAAK,GAAE,gBAAe;AAAA;AAAA,YACzB,GACF;AAAA;AAAA;AAAA,MACF;AAAA;AAAA,EACF;AAEJ,CAAC;AACD,cAAc,cAA8B,wBAAQ;AAEpD,IAAM,uBAA6B,kBAGjC,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QAC1B,gBAAAA;AAAA,EAAiB;AAAA,EAAhB;AAAA,IACC;AAAA,IACA,WAAW;AAAA,MACT;AAAA,MACA;AAAA,IACF;AAAA,IACC,GAAG;AAAA,IAEJ,0BAAAA;AAAA,MAAC;AAAA;AAAA,QACC,WAAU;AAAA,QACV,OAAM;AAAA,QACN,SAAQ;AAAA,QACR,MAAK;AAAA,QACL,QAAO;AAAA,QACP,aAAY;AAAA,QACZ,eAAc;AAAA,QACd,gBAAe;AAAA,QAEf,0BAAAA,KAAC,UAAK,GAAE,kBAAiB;AAAA;AAAA,IAC3B;AAAA;AACF,CACD;AACD,qBAAqB,cAA8B,+BAAe;AAElE,IAAM,yBAA+B,kBAGnC,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QAC1B,gBAAAA;AAAA,EAAiB;AAAA,EAAhB;AAAA,IACC;AAAA,IACA,WAAW;AAAA,MACT;AAAA,MACA;AAAA,IACF;AAAA,IACC,GAAG;AAAA,IAEJ,0BAAAA;AAAA,MAAC;AAAA;AAAA,QACC,WAAU;AAAA,QACV,OAAM;AAAA,QACN,SAAQ;AAAA,QACR,MAAK;AAAA,QACL,QAAO;AAAA,QACP,aAAY;AAAA,QACZ,eAAc;AAAA,QACd,gBAAe;AAAA,QAEf,0BAAAA,KAAC,UAAK,GAAE,gBAAe;AAAA;AAAA,IACzB;AAAA;AACF,CACD;AACD,uBAAuB,cACL,iCAAiB;AAEnC,IAAM,gBAAsB,kBAG1B,CAAC,EAAE,WAAW,UAAU,WAAW,UAAU,GAAG,MAAM,GAAG,QACzD,gBAAAA,KAAiB,wBAAhB,EACC,0BAAAC;AAAA,EAAiB;AAAA,EAAhB;AAAA,IACC;AAAA,IACA,WAAW;AAAA,MACT;AAAA,MACA,aAAa,YACX;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,IACC,GAAG;AAAA,IAEJ;AAAA,sBAAAD,KAAC,wBAAqB;AAAA,MACtB,gBAAAA;AAAA,QAAiB;AAAA,QAAhB;AAAA,UACC,WAAW;AAAA,YACT;AAAA,YACA,aAAa,YACX;AAAA,UACJ;AAAA,UAEC;AAAA;AAAA,MACH;AAAA,MACA,gBAAAA,KAAC,0BAAuB;AAAA;AAAA;AAC1B,GACF,CACD;AACD,cAAc,cAA8B,wBAAQ;AAEpD,IAAM,aAAmB,kBAGvB,CAAC,EAAE,WAAW,UAAU,GAAG,MAAM,GAAG,QACpC,gBAAAC;AAAA,EAAiB;AAAA,EAAhB;AAAA,IACC;AAAA,IACA,WAAW;AAAA,MACT;AAAA,MACA;AAAA,IACF;AAAA,IACC,GAAG;AAAA,IAEJ;AAAA,sBAAAD,KAAC,UAAK,WAAU,iEACd,0BAAAA,KAAiB,+BAAhB,EACC,0BAAAA;AAAA,QAAC;AAAA;AAAA,UACC,WAAU;AAAA,UACV,OAAM;AAAA,UACN,SAAQ;AAAA,UACR,MAAK;AAAA,UACL,QAAO;AAAA,UACP,aAAY;AAAA,UACZ,eAAc;AAAA,UACd,gBAAe;AAAA,UAEf,0BAAAA,KAAC,UAAK,GAAE,mBAAkB;AAAA;AAAA,MAC5B,GACF,GACF;AAAA,MACA,gBAAAA,KAAiB,0BAAhB,EAA0B,UAAS;AAAA;AAAA;AACtC,CACD;AACD,WAAW,cAA8B,qBAAK;AAE9C,IAAM,kBAAwB,kBAG5B,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QAC1B,gBAAAA;AAAA,EAAiB;AAAA,EAAhB;AAAA,IACC;AAAA,IACA,WAAW,GAAG,kCAAkC,SAAS;AAAA,IACxD,GAAG;AAAA;AACN,CACD;AACD,gBAAgB,cAA8B,0BAAU;AAExD,IAAM,cAAoB,kBAGxB,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QAC1B,gBAAAA;AAAA,EAAiB;AAAA,EAAhB;AAAA,IACC;AAAA,IACA,WAAW,GAAG,qCAAqC,SAAS;AAAA,IAC3D,GAAG;AAAA;AACN,CACD;AACD,YAAY,cAA8B,sBAAM;;;ACrNhD,SAAgB,YAAAE,iBAAgB;AAChC;AAAA,EACE,UAAAC;AAAA,EACA;AAAA,EAEA,kBAAAC;AAAA,EACA;AAAA,OACK;AA6BH,qBAAAC,WA6BU,OAAAC,MApBF,QAAAC,aATR;AA3BG,IAAM,kBAAkB,CAAC;AAAA,EAC9B;AACF,MAOM;AACJ,QAAM,CAAC,cAAc,eAAe,IAAIL,UAAwB,IAAI;AACpE,QAAM,eAAe,EAAE,WAAW,KAAK,SAAS,EAAE;AAClD,QAAM,IAAIE,gBAAe,CAAC;AAC1B,QAAM,SAAS;AAAA,IACb,aAAa,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC;AAAA,IACtC;AAAA,EACF;AACA,QAAM,aAAa;AAAA,IACjB,aAAa,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC;AAAA,IACtC;AAAA,EACF;AACA,QAAM,kBAAkB,CAAC,UAAe;AACtC,UAAM,YAAY,MAAM,OAAO,cAAc;AAC7C,MAAE,IAAI,MAAM,YAAY,UAAU,SAAS;AAAA,EAC7C;AAEA,SACE,gBAAAE,KAAAD,WAAA,EACG,gBAAM,IAAI,CAAC,MAAM,QAChB,gBAAAE;AAAA,IAAC;AAAA;AAAA,MACC,WAAU;AAAA,MAEV,cAAc,MAAM,gBAAgB,KAAK,EAAE;AAAA,MAC3C,cAAc,MAAM,gBAAgB,IAAI;AAAA,MAEvC;AAAA,yBAAiB,KAAK,MACrB,gBAAAA;AAAA,UAACJ,QAAO;AAAA,UAAP;AAAA,YACC,SAAS,EAAE,SAAS,GAAG,GAAG,IAAI,OAAO,IAAI;AAAA,YACzC,SAAS;AAAA,cACP,SAAS;AAAA,cACT,GAAG;AAAA,cACH,OAAO;AAAA,cACP,YAAY;AAAA,gBACV,MAAM;AAAA,gBACN,WAAW;AAAA,gBACX,SAAS;AAAA,cACX;AAAA,YACF;AAAA,YACA,MAAM,EAAE,SAAS,GAAG,GAAG,IAAI,OAAO,IAAI;AAAA,YACtC,OAAO;AAAA,cACL;AAAA,cACA;AAAA,cACA,YAAY;AAAA,YACd;AAAA,YACA,WAAU;AAAA,YAEV;AAAA,8BAAAG,KAAC,SAAI,WAAU,sHAAqH;AAAA,cACpI,gBAAAA,KAAC,SAAI,WAAU,+GAA8G;AAAA,cAC7H,gBAAAA,KAAC,SAAI,WAAU,gDACZ,eAAK,MACR;AAAA,cACA,gBAAAA,KAAC,SAAI,WAAU,sBAAsB,eAAK,aAAY;AAAA;AAAA;AAAA,QACxD;AAAA,QAEF,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,aAAa;AAAA,YACb,QAAQ;AAAA,YACR,OAAO;AAAA,YACP,KAAK,KAAK;AAAA,YACV,KAAK,KAAK;AAAA,YACV,WAAU;AAAA;AAAA,QACZ;AAAA;AAAA;AAAA,IAxCK,KAAK;AAAA,EAyCZ,CACD,GACH;AAEJ;;;ACpFA,SAAS,mBAAAE,kBAAiB,UAAAC,eAAc;AACxC,OAAO,UAAU;AACjB,SAAS,YAAAC,iBAAgB;AAiCX,gBAAAC,MAeJ,QAAAC,aAfI;AA/BP,IAAM,cAAc,CAAC;AAAA,EAC1B;AAAA,EACA;AACF,MAQM;AACJ,MAAI,CAAC,cAAc,eAAe,IAAIF,UAAwB,IAAI;AAElE,SACE,gBAAAC;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MAEC,gBAAM,IAAI,CAAC,MAAM,QAChB,gBAAAC;AAAA,QAAC;AAAA;AAAA,UACC,MAAM,MAAM;AAAA,UAEZ,WAAU;AAAA,UACV,cAAc,MAAM,gBAAgB,GAAG;AAAA,UACvC,cAAc,MAAM,gBAAgB,IAAI;AAAA,UAExC;AAAA,4BAAAD,KAACH,kBAAA,EACE,2BAAiB,OAChB,gBAAAG;AAAA,cAACF,QAAO;AAAA,cAAP;AAAA,gBACC,WAAU;AAAA,gBACV,UAAS;AAAA,gBACT,SAAS,EAAE,SAAS,EAAE;AAAA,gBACtB,SAAS;AAAA,kBACP,SAAS;AAAA,kBACT,YAAY,EAAE,UAAU,KAAK;AAAA,gBAC/B;AAAA,gBACA,MAAM;AAAA,kBACJ,SAAS;AAAA,kBACT,YAAY,EAAE,UAAU,MAAM,OAAO,IAAI;AAAA,gBAC3C;AAAA;AAAA,YACF,GAEJ;AAAA,YACA,gBAAAG,MAAC,aAAU,SAAS,KAAK,SACvB;AAAA,8BAAAD,KAAC,kBAAgB,eAAK,OAAM;AAAA,cAC5B,gBAAAA,KAAC,wBAAsB,eAAK,aAAY;AAAA,eAC1C;AAAA;AAAA;AAAA,QAzBK,MAAM;AAAA,MA0Bb,CACD;AAAA;AAAA,EACH;AAEJ;AAEO,IAAM,YAAY,CAAC;AAAA,EACxB;AAAA,EACA;AAAA,EACA;AACF,MAIM;AACJ,SACE,gBAAAC;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MAEA;AAAA,wBAAAD;AAAA,UAAC;AAAA;AAAA,YACC,WAAU;AAAA,YACV,OAAO;AAAA,cACL,iBAAiB,OAAO,OAAO;AAAA,cAC/B,oBAAoB;AAAA,cACpB,gBAAgB;AAAA,cAChB,kBAAkB;AAAA,cAClB,WAAW;AAAA,YACb;AAAA;AAAA,QACF;AAAA,QACA,gBAAAA,KAAC,SAAI,WAAU,iBACb,0BAAAA,KAAC,SAAI,WAAU,OAAO,UAAS,GACjC;AAAA;AAAA;AAAA,EACF;AAEJ;AACO,IAAM,iBAAiB,CAAC;AAAA,EAC7B;AAAA,EACA;AACF,MAGM;AACJ,SACE,gBAAAA,KAAC,QAAG,WAAW,GAAG,8CAA8C,SAAS,GACtE,UACH;AAEJ;AACO,IAAM,uBAAuB,CAAC;AAAA,EACnC;AAAA,EACA;AACF,MAGM;AACJ,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MAEC;AAAA;AAAA,EACH;AAEJ;;;AC3HA,SAAgB,aAAa,WAAmB,YAAAE,iBAAgB;AAChE,SAAS,mBAAAC,kBAAiB,UAAAC,eAA2B;AA+D3C,SAWI,OAAAC,OAXJ,QAAAC,aAAA;AA5DH,IAAM,YAAY,CAAC;AAAA,EACxB;AAAA,EACA,WAAW;AAAA,EACX;AACF,MAIM;AACJ,QAAM,CAAC,aAAa,cAAc,IAAIC,UAAS,MAAM,CAAC,CAAC;AACvD,QAAM,CAAC,aAAa,cAAc,IAAIA,UAAkB,KAAK;AAE7D,QAAM,iBAAiB,YAAY,MAAM;AACvC,UAAM,OAAO,MAAM,MAAM,QAAQ,WAAW,IAAI,CAAC,KAAK,MAAM,CAAC;AAC7D,mBAAe,IAAI;AACnB,mBAAe,IAAI;AAAA,EACrB,GAAG,CAAC,aAAa,KAAK,CAAC;AAEvB,YAAU,MAAM;AACd,QAAI,CAAC;AACH,iBAAW,MAAM;AACf,uBAAe;AAAA,MACjB,GAAG,QAAQ;AAAA,EACf,GAAG,CAAC,aAAa,UAAU,cAAc,CAAC;AAE1C,SACE,gBAAAF;AAAA,IAACG;AAAA,IAAA;AAAA,MACC,gBAAgB,MAAM;AACpB,uBAAe,KAAK;AAAA,MACtB;AAAA,MAEA,0BAAAH;AAAA,QAACI,QAAO;AAAA,QAAP;AAAA,UACC,SAAS;AAAA,YACP,SAAS;AAAA,YACT,GAAG;AAAA,UACL;AAAA,UACA,SAAS;AAAA,YACP,SAAS;AAAA,YACT,GAAG;AAAA,UACL;AAAA,UACA,YAAY;AAAA,YACV,MAAM;AAAA,YACN,WAAW;AAAA,YACX,SAAS;AAAA,UACX;AAAA,UACA,MAAM;AAAA,YACJ,SAAS;AAAA,YACT,GAAG;AAAA,YACH,GAAG;AAAA,YACH,QAAQ;AAAA,YACR,OAAO;AAAA,YACP,UAAU;AAAA,UACZ;AAAA,UACA,WAAW;AAAA,YACT;AAAA,YACA;AAAA,UACF;AAAA,UAGC,sBAAY,MAAM,GAAG,EAAE,IAAI,CAAC,MAAM,cACjC,gBAAAH;AAAA,YAACG,QAAO;AAAA,YAAP;AAAA,cAEC,SAAS,EAAE,SAAS,GAAG,GAAG,IAAI,QAAQ,YAAY;AAAA,cAClD,SAAS,EAAE,SAAS,GAAG,GAAG,GAAG,QAAQ,YAAY;AAAA,cACjD,YAAY;AAAA,gBACV,OAAO,YAAY;AAAA,gBACnB,UAAU;AAAA,cACZ;AAAA,cACA,WAAU;AAAA,cAET;AAAA,qBAAK,MAAM,EAAE,EAAE,IAAI,CAAC,QAAQ,gBAC3B,gBAAAJ;AAAA,kBAACI,QAAO;AAAA,kBAAP;AAAA,oBAEC,SAAS,EAAE,SAAS,GAAG,GAAG,IAAI,QAAQ,YAAY;AAAA,oBAClD,SAAS,EAAE,SAAS,GAAG,GAAG,GAAG,QAAQ,YAAY;AAAA,oBACjD,YAAY;AAAA,sBACV,OAAO,YAAY,MAAM,cAAc;AAAA,sBACvC,UAAU;AAAA,oBACZ;AAAA,oBACA,WAAU;AAAA,oBAET;AAAA;AAAA,kBATI,OAAO;AAAA,gBAUd,CACD;AAAA,gBACD,gBAAAJ,MAAC,UAAK,WAAU,gBAAe,kBAAM;AAAA;AAAA;AAAA,YAvBhC,OAAO;AAAA,UAwBd,CACD;AAAA;AAAA,QA7BI;AAAA,MA8BP;AAAA;AAAA,EACF;AAEJ;;;AC7FA;AAAA,EACE,kBAAAK;AAAA,EACA,UAAAC;AAAA,EACA,qBAAAC;AAAA,EACA;AAAA,OACK;AACP,SAAgB,aAAAC,YAAW,YAAAC,iBAAgB;AAsDvC,SAOE,OAAAC,OAPF,QAAAC,aAAA;AApDG,IAAM,gBAAgB,CAAC;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AACF,MAIM;AACJ,MAAI,SAASN,gBAAe,CAAC;AAC7B,MAAI,SAASA,gBAAe,CAAC;AAC7B,QAAM,CAAC,aAAa,cAAc,IAAII,UAAS,KAAK;AAEpD,EAAAD,WAAU,MAAM;AACd,UAAM,aAAa,OAAO,WAAW,iBAAiB;AACtD,mBAAe,WAAW,OAAO;AAEjC,UAAM,eAAe,CAAC,MAA2B;AAC/C,qBAAe,EAAE,OAAO;AAAA,IAC1B;AAEA,eAAW,iBAAiB,UAAU,YAAY;AAElD,WAAO,MAAM;AACX,iBAAW,oBAAoB,UAAU,YAAY;AAAA,IACvD;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,EAAAA,WAAU,MAAM;AACd,QAAI,CAAC,aAAa;AAChB,YAAM,iBAAiB,MAAM;AAC3B,cAAM,UAAU,KAAK,OAAO,IAAI,OAAO;AACvC,cAAM,UAAU,KAAK,OAAO,IAAI,OAAO;AACvC,gBAAQ,QAAQ,SAAS,EAAE,UAAU,EAAE,CAAC;AACxC,gBAAQ,QAAQ,SAAS,EAAE,UAAU,EAAE,CAAC;AAAA,MAC1C;AAEA,YAAM,WAAW,YAAY,gBAAgB,GAAI;AACjD,qBAAe;AAEf,aAAO,MAAM,cAAc,QAAQ;AAAA,IACrC;AAAA,EACF,GAAG,CAAC,aAAa,QAAQ,MAAM,CAAC;AAEhC,QAAM,kBAAkB,CAAC,UAA4C;AACnE,QAAI,CAAC,eAAe,CAAC,MAAM,cAAe;AAC1C,UAAM,EAAE,MAAM,IAAI,IAAI,MAAM,cAAc,sBAAsB;AAChE,WAAO,IAAI,MAAM,UAAU,IAAI;AAC/B,WAAO,IAAI,MAAM,UAAU,GAAG;AAAA,EAChC;AAEA,SACE,gBAAAG;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACA,aAAa;AAAA,MAEb;AAAA,wBAAAD,MAAC,SAAI,WAAU,iEAAgE;AAAA,QAC/E,gBAAAA;AAAA,UAACJ,QAAO;AAAA,UAAP;AAAA,YACC,WAAU;AAAA,YACV,OAAO;AAAA,cACL,iBAAiBC;AAAA;AAAA,gCAEK,MAAM,MAAM,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA,cAKxC,WAAWA;AAAA;AAAA,gCAEW,MAAM,MAAM,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA,YAK1C;AAAA;AAAA,QACF;AAAA,QAEA,gBAAAG,MAAC,SAAI,WAAW,GAAG,iBAAiB,SAAS,GAAI,UAAS;AAAA;AAAA;AAAA,EAC5D;AAEJ;AAEO,IAAM,YAAY,CAAC;AAAA,EACxB;AAAA,EACA;AACF,MAGM;AACJ,SACE,gBAAAA;AAAA,IAACJ,QAAO;AAAA,IAAP;AAAA,MACC,SAAS;AAAA,QACP,gBAAgB;AAAA,MAClB;AAAA,MACA,SAAS;AAAA,QACP,gBAAgB;AAAA,MAClB;AAAA,MACA,YAAY;AAAA,QACV,UAAU;AAAA,QACV,MAAM;AAAA,QACN,OAAO;AAAA,MACT;AAAA,MACA,OAAO;AAAA,QACL,kBAAkB;AAAA,QAClB,oBAAoB;AAAA,QACpB,SAAS;AAAA,MACX;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MAEC;AAAA;AAAA,EACH;AAEJ;;;AC/HA,YAAYM,aAAW;AACvB,YAAY,sBAAsB;AAe9B,gBAAAC,aAAA;AAXJ,IAAM,UAA2B;AAEjC,IAAM,iBAAkC;AAExC,IAAM,gBAAiC;AAEvC,IAAM,iBAAuB,mBAG3B,CAAC,EAAE,WAAW,QAAQ,UAAU,aAAa,GAAG,GAAG,MAAM,GAAG,QAC5D,gBAAAA,MAAkB,yBAAjB,EACC,0BAAAA;AAAA,EAAkB;AAAA,EAAjB;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,IACA,WAAW;AAAA,MACT;AAAA,MACA;AAAA,IACF;AAAA,IACC,GAAG;AAAA;AACN,GACF,CACD;AACD,eAAe,cAA+B,yBAAQ;;;AC5BtD,YAAYC,aAAW;AACvB;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAoB,WAAW,4BAA4B;AAmH/C,gBAAAC,aAAA;AA9GZ,SAAS,SAAS;AAAA,EAChB;AAAA,EACA;AAAA,EACA,kBAAkB;AAAA,EAClB,gBAAgB;AAAA,EAChB,gBAAgB;AAAA,EAChB;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAEG;AACD,QAAM,oBAAoB,qBAAqB;AAE/C,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA,OAAO;AAAA,QACP,OAAO;AAAA,QACP;AAAA,MACF;AAAA,MACA;AAAA,MACA,YAAY;AAAA,QACV,qBAAqB,CAAC,SACpB,KAAK,eAAe,WAAW,EAAE,OAAO,QAAQ,CAAC;AAAA,QACnD,GAAG;AAAA,MACL;AAAA,MACA,YAAY;AAAA,QACV,MAAM,GAAG,SAAS,kBAAkB,IAAI;AAAA,QACxC,QAAQ;AAAA,UACN;AAAA,UACA,kBAAkB;AAAA,QACpB;AAAA,QACA,OAAO,GAAG,8BAA8B,kBAAkB,KAAK;AAAA,QAC/D,KAAK;AAAA,UACH;AAAA,UACA,kBAAkB;AAAA,QACpB;AAAA,QACA,iBAAiB;AAAA,UACf,eAAe,EAAE,SAAS,cAAc,CAAC;AAAA,UACzC;AAAA,UACA,kBAAkB;AAAA,QACpB;AAAA,QACA,aAAa;AAAA,UACX,eAAe,EAAE,SAAS,cAAc,CAAC;AAAA,UACzC;AAAA,UACA,kBAAkB;AAAA,QACpB;AAAA,QACA,eAAe;AAAA,UACb;AAAA,UACA,kBAAkB;AAAA,QACpB;AAAA,QACA,WAAW;AAAA,UACT;AAAA,UACA,kBAAkB;AAAA,QACpB;AAAA,QACA,eAAe;AAAA,UACb;AAAA,UACA,kBAAkB;AAAA,QACpB;AAAA,QACA,UAAU,GAAG,8BAA8B,kBAAkB,QAAQ;AAAA,QACrE,eAAe;AAAA,UACb;AAAA,UACA,kBAAkB,UACd,YACA;AAAA,UACJ,kBAAkB;AAAA,QACpB;AAAA,QACA,OAAO;AAAA,QACP,UAAU,GAAG,QAAQ,kBAAkB,QAAQ;AAAA,QAC/C,SAAS;AAAA,UACP;AAAA,UACA,kBAAkB;AAAA,QACpB;AAAA,QACA,MAAM,GAAG,oBAAoB,kBAAkB,IAAI;AAAA,QACnD,oBAAoB;AAAA,UAClB;AAAA,UACA,kBAAkB;AAAA,QACpB;AAAA,QACA,aAAa;AAAA,UACX;AAAA,UACA,kBAAkB;AAAA,QACpB;AAAA,QACA,KAAK;AAAA,UACH;AAAA,UACA,kBAAkB;AAAA,QACpB;AAAA,QACA,aAAa;AAAA,UACX;AAAA,UACA,kBAAkB;AAAA,QACpB;AAAA,QACA,cAAc,GAAG,gBAAgB,kBAAkB,YAAY;AAAA,QAC/D,WAAW,GAAG,4BAA4B,kBAAkB,SAAS;AAAA,QACrE,OAAO;AAAA,UACL;AAAA,UACA,kBAAkB;AAAA,QACpB;AAAA,QACA,SAAS;AAAA,UACP;AAAA,UACA,kBAAkB;AAAA,QACpB;AAAA,QACA,UAAU,GAAG,4BAA4B,kBAAkB,QAAQ;AAAA,QACnE,QAAQ,GAAG,aAAa,kBAAkB,MAAM;AAAA,QAChD,GAAG;AAAA,MACL;AAAA,MACA,YAAY;AAAA,QACV,MAAM,CAAC,EAAE,WAAAC,YAAW,SAAS,GAAGC,OAAM,MAAM;AAC1C,iBACE,gBAAAF;AAAA,YAAC;AAAA;AAAA,cACC,aAAU;AAAA,cACV,KAAK;AAAA,cACL,WAAW,GAAGC,UAAS;AAAA,cACtB,GAAGC;AAAA;AAAA,UACN;AAAA,QAEJ;AAAA,QACA,SAAS,CAAC,EAAE,WAAAD,YAAW,aAAa,GAAGC,OAAM,MAAM;AACjD,cAAI,gBAAgB,QAAQ;AAC1B,mBACE,gBAAAF,MAAC,mBAAgB,WAAW,GAAG,UAAUC,UAAS,GAAI,GAAGC,QAAO;AAAA,UAEpE;AAEA,cAAI,gBAAgB,SAAS;AAC3B,mBACE,gBAAAF;AAAA,cAAC;AAAA;AAAA,gBACC,WAAW,GAAG,UAAUC,UAAS;AAAA,gBAChC,GAAGC;AAAA;AAAA,YACN;AAAA,UAEJ;AAEA,iBACE,gBAAAF,MAAC,mBAAgB,WAAW,GAAG,UAAUC,UAAS,GAAI,GAAGC,QAAO;AAAA,QAEpE;AAAA,QACA,WAAW;AAAA,QACX,YAAY,CAAC,EAAE,UAAU,GAAGA,OAAM,MAAM;AACtC,iBACE,gBAAAF,MAAC,QAAI,GAAGE,QACN,0BAAAF,MAAC,SAAI,WAAU,mEACZ,UACH,GACF;AAAA,QAEJ;AAAA,QACA,GAAG;AAAA,MACL;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,kBAAkB;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAA2C;AACzC,QAAM,oBAAoB,qBAAqB;AAE/C,QAAM,MAAY,eAA0B,IAAI;AAChD,EAAM,kBAAU,MAAM;AACpB,QAAI,UAAU,QAAS,KAAI,SAAS,MAAM;AAAA,EAC5C,GAAG,CAAC,UAAU,OAAO,CAAC;AAEtB,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,YAAU,IAAI,KAAK,mBAAmB;AAAA,MACtC,wBACE,UAAU,YACV,CAAC,UAAU,eACX,CAAC,UAAU,aACX,CAAC,UAAU;AAAA,MAEb,oBAAkB,UAAU;AAAA,MAC5B,kBAAgB,UAAU;AAAA,MAC1B,qBAAmB,UAAU;AAAA,MAC7B,WAAW;AAAA,QACT;AAAA,QACA,kBAAkB;AAAA,QAClB;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;;;AC1MA,YAAYG,aAAW;AACvB,SAAS,oBAAoB;AA+DrB,SAYE,OAAAC,OAZF,QAAAC,aAAA;AA1CD,SAAS,WAAW;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,cAAc;AAChB,GAAoB;AAClB,QAAM,CAAC,MAAM,OAAO,IAAU,iBAAS,KAAK;AAG5C,QAAM,eAAe,QAAQ,oBAAI,KAAK,QAAQ,WAAW,IAAI;AAG7D,QAAM,UAAU,MAAM,oBAAI,KAAK,MAAM,WAAW,IAAI;AAGpD,QAAM,UAAU,MAAM,oBAAI,KAAK,MAAM,WAAW,IAAI;AAEpD,QAAMC,cAAa,CAAC,SAAe;AACjC,WAAO,KAAK,mBAAmB,SAAS;AAAA,MACtC,KAAK;AAAA,MACL,OAAO;AAAA,MACP,MAAM;AAAA,IACR,CAAC;AAAA,EACH;AAEA,QAAM,mBAAmB,CAAC,SAA2B;AACnD,QAAI,MAAM;AAER,YAAM,OAAO,KAAK,YAAY;AAC9B,YAAM,QAAQ,OAAO,KAAK,SAAS,IAAI,CAAC,EAAE,SAAS,GAAG,GAAG;AACzD,YAAM,MAAM,OAAO,KAAK,QAAQ,CAAC,EAAE,SAAS,GAAG,GAAG;AAClD,eAAS,GAAG,IAAI,IAAI,KAAK,IAAI,GAAG,EAAE;AAClC,cAAQ,KAAK;AAAA,IACf;AAAA,EACF;AAEA,SACE,gBAAAD,MAAC,WAAQ,MAAY,cAAc,SACjC;AAAA,oBAAAD,MAAC,kBAAe,SAAO,MACrB,0BAAAC;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,SAAQ;AAAA,QACR,WAAW;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA,CAAC,gBAAgB;AAAA,UACjB;AAAA,QACF;AAAA,QAEA;AAAA,0BAAAD,MAAC,gBAAa,WAAU,gBAAe;AAAA,UACtC,eAAeE,YAAW,YAAY,IAAI,gBAAAF,MAAC,UAAM,uBAAY;AAAA;AAAA;AAAA,IAChE,GACF;AAAA,IACA,gBAAAA,MAAC,kBAAe,WAAU,cAAa,OAAM,SAC3C,0BAAAA;AAAA,MAAC;AAAA;AAAA,QACC,MAAK;AAAA,QACL,UAAU;AAAA,QACV,UAAU;AAAA,QACV,UAAU,CAAC,SAAS;AAElB,gBAAM,iBAAiB,IAAI;AAAA,YACzB,KAAK,YAAY;AAAA,YACjB,KAAK,SAAS;AAAA,YACd,KAAK,QAAQ;AAAA,UACf;AAGA,cAAI,SAAS;AACX,kBAAM,oBAAoB,IAAI;AAAA,cAC5B,QAAQ,YAAY;AAAA,cACpB,QAAQ,SAAS;AAAA,cACjB,QAAQ,QAAQ;AAAA,YAClB;AACA,gBAAI,iBAAiB,kBAAmB,QAAO;AAAA,UACjD;AAGA,cAAI,SAAS;AACX,kBAAM,oBAAoB,IAAI;AAAA,cAC5B,QAAQ,YAAY;AAAA,cACpB,QAAQ,SAAS;AAAA,cACjB,QAAQ,QAAQ;AAAA,YAClB;AACA,gBAAI,iBAAiB,kBAAmB,QAAO;AAAA,UACjD;AAEA,iBAAO;AAAA,QACT;AAAA,QACA,cAAY;AAAA;AAAA,IACd,GACF;AAAA,KACF;AAEJ;;;ACxHA,YAAYG,aAAW;AAQvB,SAAS,iBAAiB;AA+DlB,SAYE,OAAAC,OAZF,QAAAC,aAAA;AAnDD,SAAS,WAAW;AAAA,EACzB;AAAA,EACA;AAAA,EACA,cAAc;AAAA,EACd;AAAA,EACA,WAAW;AAAA,EACX;AAAA,EACA;AACF,GAAoB;AAClB,QAAM,CAAC,MAAM,OAAO,IAAU,iBAAS,KAAK;AAC5C,QAAM,CAAC,OAAO,QAAQ,IAAU;AAAA,IAC9B,QAAQ,SAAS,MAAM,MAAM,GAAG,EAAE,CAAC,CAAC,IAAI;AAAA,EAC1C;AACA,QAAM,CAAC,SAAS,UAAU,IAAU;AAAA,IAClC,QAAQ,SAAS,MAAM,MAAM,GAAG,EAAE,CAAC,CAAC,IAAI;AAAA,EAC1C;AAEA,QAAM,aAAa,CAAC,GAAW,MAAc;AAC3C,WAAO,GAAG,EAAE,SAAS,EAAE,SAAS,GAAG,GAAG,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,GAAG,GAAG,CAAC;AAAA,EAC1E;AAEA,QAAM,mBAAmB,CAAC,GAAW,MAAc;AACjD,UAAM,aAAa,WAAW,GAAG,CAAC;AAClC,aAAS,CAAC;AACV,eAAW,CAAC;AACZ,eAAW,UAAU;AACrB,YAAQ,KAAK;AAAA,EACf;AAEA,QAAM,sBAAsB,MAAM;AAChC,UAAM,UAAU,CAAC;AACjB,aAAS,IAAI,GAAG,KAAK,IAAI,KAAK;AAC5B,eAAS,IAAI,GAAG,IAAI,IAAI,KAAK,IAAI;AAC/B,cAAM,aAAa,WAAW,GAAG,CAAC;AAGlC,YAAI,OAAO,aAAa,IAAK;AAC7B,YAAI,OAAO,aAAa,IAAK;AAE7B,gBAAQ,KAAK,EAAE,OAAO,GAAG,SAAS,GAAG,SAAS,WAAW,CAAC;AAAA,MAC5D;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAEA,QAAM,cAAc,oBAAoB;AACxC,QAAM,eAAe,SAAS;AAE9B,SACE,gBAAAA,MAAC,WAAQ,MAAY,cAAc,SACjC;AAAA,oBAAAD,MAAC,kBAAe,SAAO,MACrB,0BAAAC;AAAA,MAAC;AAAA;AAAA,QACC,SAAQ;AAAA,QACR,WAAW;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA,CAAC,SAAS;AAAA,UACV;AAAA,QACF;AAAA,QACA;AAAA,QAEA;AAAA,0BAAAD,MAAC,aAAU,WAAU,gBAAe;AAAA,UACnC,gBAAgB;AAAA;AAAA;AAAA,IACnB,GACF;AAAA,IACA,gBAAAA,MAAC,kBAAe,WAAU,cAAa,OAAM,SAC3C,0BAAAA,MAAC,SAAI,WAAU,4BACb,0BAAAA,MAAC,SAAI,WAAU,8BACZ,sBAAY,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,QAAQ,MAChD,gBAAAA;AAAA,MAAC;AAAA;AAAA,QAEC,SAAS,UAAU,UAAU,YAAY;AAAA,QACzC,WAAU;AAAA,QACV,SAAS,MAAM,iBAAiB,GAAG,CAAC;AAAA,QAEnC;AAAA;AAAA,MALI;AAAA,IAMP,CACD,GACH,GACF,GACF;AAAA,KACF;AAEJ;;;ACzGA,YAAYE,aAAW;AACvB,SAAS,gBAAAC,qBAAoB;AAwHrB,SAaE,OAAAC,OAbF,QAAAC,cAAA;AApGD,SAAS,eAAe;AAAA,EAC7B;AAAA,EACA;AAAA,EACA,cAAc;AAAA,EACd;AAAA,EACA,WAAW;AAAA,EACX,WAAW;AACb,GAAwB;AACtB,QAAM,CAAC,MAAM,OAAO,IAAU,iBAAS,KAAK;AAC5C,QAAM,UAAgB,eAAuB,IAAI;AACjD,QAAM,YAAkB,eAAuB,IAAI;AAGnD,QAAM,WAAW,QAAQ,MAAM,MAAM,GAAG,EAAE,CAAC,IAAI;AAC/C,QAAM,WAAW,QAAQ,MAAM,MAAM,GAAG,EAAE,CAAC,KAAK,KAAK;AACrD,QAAM,eAAe,WAAW,SAAS,SAAS,MAAM,GAAG,EAAE,CAAC,CAAC,IAAI;AACnE,QAAM,iBAAiB,WAAW,SAAS,SAAS,MAAM,GAAG,EAAE,CAAC,CAAC,IAAI;AACrE,QAAM,eAAe,WAAW,oBAAI,KAAK,WAAW,WAAW,IAAI;AAEnE,QAAM,gBAAgB,CAAC,QAAgB;AACrC,QAAI,CAAC,IAAK,QAAO;AACjB,UAAM,CAAC,GAAG,CAAC,IAAI,IAAI,MAAM,GAAG;AAC5B,QAAI,CAAC,EAAG,QAAO;AACf,UAAM,OAAO,oBAAI,KAAK,IAAI,WAAW;AACrC,UAAM,UAAU,KAAK,mBAAmB,SAAS;AAAA,MAC/C,KAAK;AAAA,MACL,OAAO;AAAA,MACP,MAAM;AAAA,IACR,CAAC;AACD,QAAI,CAAC,EAAG,QAAO;AACf,WAAO,GAAG,OAAO,KAAK,CAAC;AAAA,EACzB;AAEA,QAAM,aAAa,CAAC,MAAc,MAAc,WAAmB;AACjE,UAAM,IAAI,KAAK,SAAS,EAAE,SAAS,GAAG,GAAG;AACzC,UAAM,IAAI,OAAO,SAAS,EAAE,SAAS,GAAG,GAAG;AAC3C,WAAO,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC;AAAA,EAC1B;AAEA,QAAM,mBAAmB,CAAC,SAA2B;AACnD,QAAI,CAAC,KAAM;AACX,UAAM,OAAO,KAAK,YAAY;AAC9B,UAAM,QAAQ,OAAO,KAAK,SAAS,IAAI,CAAC,EAAE,SAAS,GAAG,GAAG;AACzD,UAAM,MAAM,OAAO,KAAK,QAAQ,CAAC,EAAE,SAAS,GAAG,GAAG;AAClD,UAAM,UAAU,GAAG,IAAI,IAAI,KAAK,IAAI,GAAG;AAGvC,UAAM,IAAI,gBAAgB,IAAI,eAAe;AAC7C,UAAM,IAAI,kBAAkB,IAAI,iBAAiB;AACjD,aAAS,WAAW,SAAS,GAAG,CAAC,CAAC;AAAA,EACpC;AAEA,QAAM,mBAAmB,CAAC,MAAc;AACtC,QAAI,CAAC,UAAU;AAEb,YAAM,MAAM,oBAAI,KAAK;AACrB,YAAM,OAAO,IAAI,YAAY;AAC7B,YAAM,QAAQ,OAAO,IAAI,SAAS,IAAI,CAAC,EAAE,SAAS,GAAG,GAAG;AACxD,YAAM,MAAM,OAAO,IAAI,QAAQ,CAAC,EAAE,SAAS,GAAG,GAAG;AACjD,YAAM,IAAI,kBAAkB,IAAI,iBAAiB;AACjD,eAAS,WAAW,GAAG,IAAI,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC;AAAA,IACtD,OAAO;AACL,YAAM,IAAI,kBAAkB,IAAI,iBAAiB;AACjD,eAAS,WAAW,UAAU,GAAG,CAAC,CAAC;AAAA,IACrC;AAAA,EACF;AAEA,QAAM,qBAAqB,CAAC,MAAc;AACxC,QAAI,CAAC,UAAU;AACb,YAAM,MAAM,oBAAI,KAAK;AACrB,YAAM,OAAO,IAAI,YAAY;AAC7B,YAAM,QAAQ,OAAO,IAAI,SAAS,IAAI,CAAC,EAAE,SAAS,GAAG,GAAG;AACxD,YAAM,MAAM,OAAO,IAAI,QAAQ,CAAC,EAAE,SAAS,GAAG,GAAG;AACjD,YAAM,IAAI,gBAAgB,IAAI,eAAe;AAC7C,eAAS,WAAW,GAAG,IAAI,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC;AAAA,IACtD,OAAO;AACL,YAAM,IAAI,gBAAgB,IAAI,eAAe;AAC7C,eAAS,WAAW,UAAU,GAAG,CAAC,CAAC;AAAA,IACrC;AAAA,EACF;AAGA,EAAM,kBAAU,MAAM;AACpB,QAAI,MAAM;AACR,iBAAW,MAAM;AACf,YAAI,QAAQ,WAAW,gBAAgB,GAAG;AACxC,gBAAM,KAAK,QAAQ,QAAQ,cAAc,eAAe,YAAY,IAAI;AACxE,cAAI,eAAe,EAAE,OAAO,SAAS,CAAC;AAAA,QACxC;AACA,YAAI,UAAU,WAAW,kBAAkB,GAAG;AAC5C,gBAAM,KAAK,UAAU,QAAQ,cAAc,iBAAiB,cAAc,IAAI;AAC9E,cAAI,eAAe,EAAE,OAAO,SAAS,CAAC;AAAA,QACxC;AAAA,MACF,GAAG,EAAE;AAAA,IACP;AAAA,EACF,GAAG,CAAC,MAAM,cAAc,cAAc,CAAC;AAEvC,SACE,gBAAAA,OAAC,WAAQ,MAAY,cAAc,SACjC;AAAA,oBAAAD,MAAC,kBAAe,SAAO,MACrB,0BAAAC;AAAA,MAAC;AAAA;AAAA,QACC,MAAK;AAAA,QACL,SAAQ;AAAA,QACR;AAAA,QACA,WAAW;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA,CAAC,SAAS;AAAA,UACV;AAAA,QACF;AAAA,QAEA;AAAA,0BAAAD,MAACE,eAAA,EAAa,WAAU,yBAAwB;AAAA,UAC/C,QAAQ,cAAc,KAAK,IAAI,gBAAAF,MAAC,UAAM,uBAAY;AAAA;AAAA;AAAA,IACrD,GACF;AAAA,IACA,gBAAAA,MAAC,kBAAe,WAAU,cAAa,OAAM,SAC3C,0BAAAC,OAAC,SAAI,WAAU,QAEb;AAAA,sBAAAD;AAAA,QAAC;AAAA;AAAA,UACC,MAAK;AAAA,UACL,UAAU;AAAA,UACV,UAAU;AAAA,UACV,cAAY;AAAA;AAAA,MACd;AAAA,MAGA,gBAAAC,OAAC,SAAI,WAAU,iCAEb;AAAA,wBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,KAAK;AAAA,YACL,WAAU;AAAA,YAEV;AAAA,8BAAAD,MAAC,SAAI,WAAU,6DAA4D,gBAE3E;AAAA,cACC,MAAM,KAAK,EAAE,QAAQ,GAAG,GAAG,CAAC,GAAG,MAC9B,gBAAAA;AAAA,gBAAC;AAAA;AAAA,kBAEC,aAAW;AAAA,kBACX,MAAK;AAAA,kBACL,SAAS,MAAM,iBAAiB,CAAC;AAAA,kBACjC,WAAW;AAAA,oBACT;AAAA,oBACA,iBAAiB,IACb,yCACA;AAAA,kBACN;AAAA,kBAEC,YAAE,SAAS,EAAE,SAAS,GAAG,GAAG;AAAA;AAAA,gBAXxB;AAAA,cAYP,CACD;AAAA;AAAA;AAAA,QACH;AAAA,QAGA,gBAAAC;AAAA,UAAC;AAAA;AAAA,YACC,KAAK;AAAA,YACL,WAAU;AAAA,YAEV;AAAA,8BAAAD,MAAC,SAAI,WAAU,6DAA4D,iBAE3E;AAAA,cACC,MAAM,KAAK,EAAE,QAAQ,GAAG,GAAG,CAAC,GAAG,MAAM,IAAI,CAAC,EAAE,IAAI,CAAC,MAChD,gBAAAA;AAAA,gBAAC;AAAA;AAAA,kBAEC,eAAa;AAAA,kBACb,MAAK;AAAA,kBACL,SAAS,MAAM,mBAAmB,CAAC;AAAA,kBACnC,WAAW;AAAA,oBACT;AAAA,oBACA,mBAAmB,IACf,yCACA;AAAA,kBACN;AAAA,kBAEC,YAAE,SAAS,EAAE,SAAS,GAAG,GAAG;AAAA;AAAA,gBAXxB;AAAA,cAYP,CACD;AAAA;AAAA;AAAA,QACH;AAAA,SACF;AAAA,OACF,GACF;AAAA,KACF;AAEJ;;;AC9MA,YAAYG,aAAW;AACvB,YAAY,uBAAuB;AAkD7B,SAkJY,YAAAC,WAzIV,OAAAC,OATF,QAAAC,cAAA;AA7CN,IAAM,SAAS,EAAE,OAAO,IAAI,MAAM,QAAQ;AAgB1C,IAAM,eAAqB,sBAAwC,IAAI;AAEvE,SAAS,WAAW;AAClB,QAAM,UAAgB,mBAAW,YAAY;AAE7C,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI,MAAM,mDAAmD;AAAA,EACrE;AAEA,SAAO;AACT;AAEA,SAAS,eAAe;AAAA,EACtB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAKG;AACD,QAAM,WAAiB,cAAM;AAC7B,QAAM,UAAU,SAAS,MAAM,SAAS,QAAQ,MAAM,EAAE,CAAC;AAEzD,SACE,gBAAAD,MAAC,aAAa,UAAb,EAAsB,OAAO,EAAE,OAAO,GACrC,0BAAAC;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,cAAY;AAAA,MACZ,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEJ;AAAA,wBAAAD,MAAC,cAAW,IAAI,SAAS,QAAgB;AAAA,QACzC,gBAAAA,MAAmB,uCAAlB,EACE,UACH;AAAA;AAAA;AAAA,EACF,GACF;AAEJ;AAEA,IAAM,aAAa,CAAC,EAAE,IAAI,OAAO,MAA2C;AAC1E,QAAM,cAAc,OAAO,QAAQ,MAAM,EAAE;AAAA,IACzC,CAAC,CAAC,EAAEE,OAAM,MAAMA,QAAO,SAASA,QAAO;AAAA,EACzC;AAEA,MAAI,CAAC,YAAY,QAAQ;AACvB,WAAO;AAAA,EACT;AAEA,SACE,gBAAAF;AAAA,IAAC;AAAA;AAAA,MACC,yBAAyB;AAAA,QACvB,QAAQ,OAAO,QAAQ,MAAM,EAC1B;AAAA,UACC,CAAC,CAAC,OAAO,MAAM,MAAM;AAAA,EAC/B,MAAM,gBAAgB,EAAE;AAAA,EACxB,YACC,IAAI,CAAC,CAAC,KAAK,UAAU,MAAM;AAC1B,kBAAM,QACJ,WAAW,QAAQ,KAAsC,KACzD,WAAW;AACb,mBAAO,QAAQ,aAAa,GAAG,KAAK,KAAK,MAAM;AAAA,UACjD,CAAC,EACA,KAAK,IAAI,CAAC;AAAA;AAAA;AAAA,QAGH,EACC,KAAK,IAAI;AAAA,MACd;AAAA;AAAA,EACF;AAEJ;AAEA,IAAM,eAAiC;AAEvC,SAAS,oBAAoB;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AAAA,EACA,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,gBAAgB;AAAA,EAChB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAOK;AACH,QAAM,EAAE,OAAO,IAAI,SAAS;AAE5B,QAAM,eAAqB,gBAAQ,MAAM;AACvC,QAAI,aAAa,CAAC,SAAS,QAAQ;AACjC,aAAO;AAAA,IACT;AAEA,UAAM,CAAC,IAAI,IAAI;AACf,UAAM,MAAM,GAAG,YAAY,MAAM,WAAW,MAAM,QAAQ,OAAO;AACjE,UAAM,aAAa,4BAA4B,QAAQ,MAAM,GAAG;AAChE,UAAM,QACJ,CAAC,YAAY,OAAO,UAAU,WAC1B,OAAO,KAA4B,GAAG,SAAS,QAC/C,YAAY;AAElB,QAAI,gBAAgB;AAClB,aACE,gBAAAA,MAAC,SAAI,WAAW,GAAG,eAAe,cAAc,GAC7C,yBAAe,OAAO,OAAO,GAChC;AAAA,IAEJ;AAEA,QAAI,CAAC,OAAO;AACV,aAAO;AAAA,IACT;AAEA,WAAO,gBAAAA,MAAC,SAAI,WAAW,GAAG,eAAe,cAAc,GAAI,iBAAM;AAAA,EACnE,GAAG;AAAA,IACD;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAED,MAAI,CAAC,UAAU,CAAC,SAAS,QAAQ;AAC/B,WAAO;AAAA,EACT;AAEA,QAAM,YAAY,QAAQ,WAAW,KAAK,cAAc;AAExD,SACE,gBAAAC;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MAEC;AAAA,SAAC,YAAY,eAAe;AAAA,QAC7B,gBAAAD,MAAC,SAAI,WAAU,gBACZ,kBACE,OAAO,CAAC,SAAS,KAAK,SAAS,MAAM,EACrC,IAAI,CAAC,MAAM,UAAU;AACpB,gBAAM,MAAM,GAAG,WAAW,KAAK,QAAQ,KAAK,WAAW,OAAO;AAC9D,gBAAM,aAAa,4BAA4B,QAAQ,MAAM,GAAG;AAChE,gBAAM,iBAAiB,SAAS,KAAK,QAAQ,QAAQ,KAAK;AAE1D,iBACE,gBAAAA;AAAA,YAAC;AAAA;AAAA,cAEC,WAAW;AAAA,gBACT;AAAA,gBACA,cAAc,SAAS;AAAA,cACzB;AAAA,cAEC,uBAAa,MAAM,UAAU,UAAa,KAAK,OAC9C,UAAU,KAAK,OAAO,KAAK,MAAM,MAAM,OAAO,KAAK,OAAO,IAE1D,gBAAAC,OAAAF,WAAA,EACG;AAAA,4BAAY,OACX,gBAAAC,MAAC,WAAW,MAAX,EAAgB,IAEjB,CAAC,iBACC,gBAAAA;AAAA,kBAAC;AAAA;AAAA,oBACC,WAAW;AAAA,sBACT;AAAA,sBACA;AAAA,wBACE,eAAe,cAAc;AAAA,wBAC7B,OAAO,cAAc;AAAA,wBACrB,mDACE,cAAc;AAAA,wBAChB,UAAU,aAAa,cAAc;AAAA,sBACvC;AAAA,oBACF;AAAA,oBACA,OACE;AAAA,sBACE,iBAAiB;AAAA,sBACjB,aAAa;AAAA,oBACf;AAAA;AAAA,gBAEJ;AAAA,gBAGJ,gBAAAC;AAAA,kBAAC;AAAA;AAAA,oBACC,WAAW;AAAA,sBACT;AAAA,sBACA,YAAY,cAAc;AAAA,oBAC5B;AAAA,oBAEA;AAAA,sCAAAA,OAAC,SAAI,WAAU,gBACZ;AAAA,oCAAY,eAAe;AAAA,wBAC5B,gBAAAD,MAAC,UAAK,WAAU,0BACb,sBAAY,SAAS,KAAK,MAC7B;AAAA,yBACF;AAAA,sBACC,KAAK,SACJ,gBAAAA,MAAC,UAAK,WAAU,+DACb,eAAK,MAAM,eAAe,GAC7B;AAAA;AAAA;AAAA,gBAEJ;AAAA,iBACF;AAAA;AAAA,YApDG,KAAK;AAAA,UAsDZ;AAAA,QAEJ,CAAC,GACL;AAAA;AAAA;AAAA,EACF;AAEJ;AAEA,IAAM,cAAgC;AAEtC,SAAS,mBAAmB;AAAA,EAC1B;AAAA,EACA,WAAW;AAAA,EACX;AAAA,EACA,gBAAgB;AAAA,EAChB;AACF,GAIK;AACH,QAAM,EAAE,OAAO,IAAI,SAAS;AAE5B,MAAI,CAAC,SAAS,QAAQ;AACpB,WAAO;AAAA,EACT;AAEA,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACA,kBAAkB,QAAQ,SAAS;AAAA,QACnC;AAAA,MACF;AAAA,MAEC,kBACE,OAAO,CAAC,SAAS,KAAK,SAAS,MAAM,EACrC,IAAI,CAAC,SAAS;AACb,cAAM,MAAM,GAAG,WAAW,KAAK,WAAW,OAAO;AACjD,cAAM,aAAa,4BAA4B,QAAQ,MAAM,GAAG;AAEhE,eACE,gBAAAC;AAAA,UAAC;AAAA;AAAA,YAEC,WAAW;AAAA,cACT;AAAA,YACF;AAAA,YAEC;AAAA,0BAAY,QAAQ,CAAC,WACpB,gBAAAD,MAAC,WAAW,MAAX,EAAgB,IAEjB,gBAAAA;AAAA,gBAAC;AAAA;AAAA,kBACC,WAAU;AAAA,kBACV,OAAO;AAAA,oBACL,iBAAiB,KAAK;AAAA,kBACxB;AAAA;AAAA,cACF;AAAA,cAED,YAAY;AAAA;AAAA;AAAA,UAfR,KAAK;AAAA,QAgBZ;AAAA,MAEJ,CAAC;AAAA;AAAA,EACL;AAEJ;AAEA,SAAS,4BACP,QACA,SACA,KACA;AACA,MAAI,OAAO,YAAY,YAAY,YAAY,MAAM;AACnD,WAAO;AAAA,EACT;AAEA,QAAM,iBACJ,aAAa,WACb,OAAO,QAAQ,YAAY,YAC3B,QAAQ,YAAY,OAChB,QAAQ,UACR;AAEN,MAAI,iBAAyB;AAE7B,MACE,OAAO,WACP,OAAO,QAAQ,GAA2B,MAAM,UAChD;AACA,qBAAiB,QAAQ,GAA2B;AAAA,EACtD,WACE,kBACA,OAAO,kBACP,OAAO,eAAe,GAAkC,MAAM,UAC9D;AACA,qBAAiB,eACf,GACF;AAAA,EACF;AAEA,SAAO,kBAAkB,SACrB,OAAO,cAAc,IACrB,OAAO,GAA0B;AACvC;","names":["React","jsx","cva","jsx","cva","React","cva","jsx","cva","React","jsx","React","jsx","jsxs","React","useMotionTemplate","useMotionValue","motion","jsx","jsxs","useState","motion","useMotionValue","Fragment","jsx","jsxs","AnimatePresence","motion","useState","jsx","jsxs","useState","AnimatePresence","motion","jsx","jsxs","useState","AnimatePresence","motion","useMotionValue","motion","useMotionTemplate","useEffect","useState","jsx","jsxs","React","jsx","React","jsx","className","props","React","jsx","jsxs","formatDate","React","jsx","jsxs","React","CalendarIcon","jsx","jsxs","CalendarIcon","React","Fragment","jsx","jsxs","config"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@braintwopoint0/playback-commons",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.11",
|
|
4
4
|
"description": "Shared UI components, auth utilities, and Supabase client for the PLAYBACK Sports ecosystem",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -46,11 +46,13 @@
|
|
|
46
46
|
"@radix-ui/react-dialog": "^1.1.14",
|
|
47
47
|
"@radix-ui/react-icons": "^1.3.0",
|
|
48
48
|
"@radix-ui/react-label": "^2.0.2",
|
|
49
|
+
"@radix-ui/react-popover": "^1.1.15",
|
|
49
50
|
"@radix-ui/react-select": "^2.2.6",
|
|
50
51
|
"@radix-ui/react-slot": "^1.2.3",
|
|
51
52
|
"class-variance-authority": "^0.7.1",
|
|
52
53
|
"clsx": "^2.1.1",
|
|
53
54
|
"motion": "^12.23.22",
|
|
55
|
+
"react-day-picker": "^9.14.0",
|
|
54
56
|
"recharts": "^2.15.3",
|
|
55
57
|
"tailwind-merge": "^2.6.0"
|
|
56
58
|
},
|
|
@@ -59,6 +61,7 @@
|
|
|
59
61
|
"@supabase/supabase-js": "^2.50.3",
|
|
60
62
|
"@types/react": "^19",
|
|
61
63
|
"@types/react-dom": "^19",
|
|
64
|
+
"lucide-react": "^0.575.0",
|
|
62
65
|
"next": "^15",
|
|
63
66
|
"react": "^19",
|
|
64
67
|
"react-dom": "^19",
|
|
@@ -69,4 +72,4 @@
|
|
|
69
72
|
"publishConfig": {
|
|
70
73
|
"access": "public"
|
|
71
74
|
}
|
|
72
|
-
}
|
|
75
|
+
}
|