@braintwopoint0/playback-commons 0.1.3 → 0.1.5
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 +41 -2
- package/dist/ui/index.js +276 -24
- package/dist/ui/index.js.map +1 -1
- package/package.json +2 -1
package/dist/ui/index.d.ts
CHANGED
|
@@ -6,9 +6,10 @@ 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 RechartsPrimitive from 'recharts';
|
|
9
10
|
|
|
10
11
|
declare const buttonVariants: (props?: ({
|
|
11
|
-
variant?: "default" | "destructive" | "outline" | "secondary" | "ghost" | "link" | null | undefined;
|
|
12
|
+
variant?: "default" | "destructive" | "outline" | "secondary" | "ghost" | "link" | "playback" | null | undefined;
|
|
12
13
|
size?: "default" | "sm" | "lg" | "icon" | null | undefined;
|
|
13
14
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
14
15
|
interface ButtonProps extends React$1.ButtonHTMLAttributes<HTMLButtonElement>, VariantProps<typeof buttonVariants> {
|
|
@@ -110,4 +111,42 @@ declare const Highlight: ({ children, className, }: {
|
|
|
110
111
|
className?: string;
|
|
111
112
|
}) => react_jsx_runtime.JSX.Element;
|
|
112
113
|
|
|
113
|
-
|
|
114
|
+
declare const THEMES: {
|
|
115
|
+
readonly light: "";
|
|
116
|
+
readonly dark: ".dark";
|
|
117
|
+
};
|
|
118
|
+
type ChartConfig = {
|
|
119
|
+
[k in string]: {
|
|
120
|
+
label?: React$1.ReactNode;
|
|
121
|
+
icon?: React$1.ComponentType;
|
|
122
|
+
} & ({
|
|
123
|
+
color?: string;
|
|
124
|
+
theme?: never;
|
|
125
|
+
} | {
|
|
126
|
+
color?: never;
|
|
127
|
+
theme: Record<keyof typeof THEMES, string>;
|
|
128
|
+
});
|
|
129
|
+
};
|
|
130
|
+
declare function ChartContainer({ id, className, children, config, ...props }: React$1.ComponentProps<"div"> & {
|
|
131
|
+
config: ChartConfig;
|
|
132
|
+
children: React$1.ComponentProps<typeof RechartsPrimitive.ResponsiveContainer>["children"];
|
|
133
|
+
}): react_jsx_runtime.JSX.Element;
|
|
134
|
+
declare const ChartStyle: ({ id, config }: {
|
|
135
|
+
id: string;
|
|
136
|
+
config: ChartConfig;
|
|
137
|
+
}) => react_jsx_runtime.JSX.Element | null;
|
|
138
|
+
declare const ChartTooltip: typeof RechartsPrimitive.Tooltip;
|
|
139
|
+
declare function ChartTooltipContent({ active, payload, className, indicator, hideLabel, hideIndicator, label, labelFormatter, labelClassName, formatter, color, nameKey, labelKey, }: React$1.ComponentProps<typeof RechartsPrimitive.Tooltip> & React$1.ComponentProps<"div"> & {
|
|
140
|
+
hideLabel?: boolean;
|
|
141
|
+
hideIndicator?: boolean;
|
|
142
|
+
indicator?: "line" | "dot" | "dashed";
|
|
143
|
+
nameKey?: string;
|
|
144
|
+
labelKey?: string;
|
|
145
|
+
}): react_jsx_runtime.JSX.Element | null;
|
|
146
|
+
declare const ChartLegend: typeof RechartsPrimitive.Legend;
|
|
147
|
+
declare function ChartLegendContent({ className, hideIcon, payload, verticalAlign, nameKey, }: React$1.ComponentProps<"div"> & Pick<RechartsPrimitive.LegendProps, "payload" | "verticalAlign"> & {
|
|
148
|
+
hideIcon?: boolean;
|
|
149
|
+
nameKey?: string;
|
|
150
|
+
}): react_jsx_runtime.JSX.Element | null;
|
|
151
|
+
|
|
152
|
+
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, SelectSeparator, SelectTrigger, SelectValue, badgeVariants, buttonVariants };
|
package/dist/ui/index.js
CHANGED
|
@@ -13,7 +13,7 @@ function cn(...inputs) {
|
|
|
13
13
|
}
|
|
14
14
|
|
|
15
15
|
// src/ui/button.tsx
|
|
16
|
-
import { jsx } from "react/jsx-runtime";
|
|
16
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
17
17
|
var buttonVariants = cva(
|
|
18
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",
|
|
19
19
|
{
|
|
@@ -24,7 +24,8 @@ var buttonVariants = cva(
|
|
|
24
24
|
outline: "border border-input bg-background hover:bg-accent hover:text-accent-foreground",
|
|
25
25
|
secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80",
|
|
26
26
|
ghost: "hover:bg-accent hover:text-accent-foreground",
|
|
27
|
-
link: "text-primary underline-offset-4 hover:underline"
|
|
27
|
+
link: "text-primary underline-offset-4 hover:underline",
|
|
28
|
+
playback: "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]"
|
|
28
29
|
},
|
|
29
30
|
size: {
|
|
30
31
|
default: "h-10 px-4 py-2",
|
|
@@ -39,15 +40,25 @@ var buttonVariants = cva(
|
|
|
39
40
|
}
|
|
40
41
|
}
|
|
41
42
|
);
|
|
43
|
+
function BottomGradient() {
|
|
44
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
45
|
+
/* @__PURE__ */ jsx("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" }),
|
|
46
|
+
/* @__PURE__ */ jsx("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" })
|
|
47
|
+
] });
|
|
48
|
+
}
|
|
42
49
|
var Button = React.forwardRef(
|
|
43
|
-
({ className, variant, size, asChild = false, ...props }, ref) => {
|
|
50
|
+
({ className, variant, size, asChild = false, children, ...props }, ref) => {
|
|
44
51
|
const Comp = asChild ? Slot : "button";
|
|
45
|
-
return /* @__PURE__ */
|
|
52
|
+
return /* @__PURE__ */ jsxs(
|
|
46
53
|
Comp,
|
|
47
54
|
{
|
|
48
55
|
className: cn(buttonVariants({ variant, size, className })),
|
|
49
56
|
ref,
|
|
50
|
-
...props
|
|
57
|
+
...props,
|
|
58
|
+
children: [
|
|
59
|
+
children,
|
|
60
|
+
variant === "playback" && /* @__PURE__ */ jsx(BottomGradient, {})
|
|
61
|
+
]
|
|
51
62
|
}
|
|
52
63
|
);
|
|
53
64
|
}
|
|
@@ -188,7 +199,7 @@ var Input = React4.forwardRef(
|
|
|
188
199
|
{
|
|
189
200
|
type,
|
|
190
201
|
className: cn(
|
|
191
|
-
`flex h-10 w-full border-none bg-zinc-800 text-white shadow-input rounded-
|
|
202
|
+
`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
|
|
192
203
|
file:text-sm file:font-mediumplaceholder-text-neutral-600
|
|
193
204
|
focus-visible:outline-none focus-visible:ring-[2px] focus-visible:ring-neutral-600
|
|
194
205
|
disabled:cursor-not-allowed disabled:opacity-50
|
|
@@ -211,7 +222,7 @@ Input.displayName = "Input";
|
|
|
211
222
|
import * as React5 from "react";
|
|
212
223
|
import * as DialogPrimitive from "@radix-ui/react-dialog";
|
|
213
224
|
import { Cross2Icon } from "@radix-ui/react-icons";
|
|
214
|
-
import { jsx as jsx6, jsxs } from "react/jsx-runtime";
|
|
225
|
+
import { jsx as jsx6, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
215
226
|
var Dialog = DialogPrimitive.Root;
|
|
216
227
|
var DialogTrigger = DialogPrimitive.Trigger;
|
|
217
228
|
var DialogPortal = DialogPrimitive.Portal;
|
|
@@ -228,9 +239,9 @@ var DialogOverlay = React5.forwardRef(({ className, ...props }, ref) => /* @__PU
|
|
|
228
239
|
}
|
|
229
240
|
));
|
|
230
241
|
DialogOverlay.displayName = DialogPrimitive.Overlay.displayName;
|
|
231
|
-
var DialogContent = React5.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */
|
|
242
|
+
var DialogContent = React5.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs2(DialogPortal, { children: [
|
|
232
243
|
/* @__PURE__ */ jsx6(DialogOverlay, {}),
|
|
233
|
-
/* @__PURE__ */
|
|
244
|
+
/* @__PURE__ */ jsxs2(
|
|
234
245
|
DialogPrimitive.Content,
|
|
235
246
|
{
|
|
236
247
|
ref,
|
|
@@ -241,7 +252,7 @@ var DialogContent = React5.forwardRef(({ className, children, ...props }, ref) =
|
|
|
241
252
|
...props,
|
|
242
253
|
children: [
|
|
243
254
|
children,
|
|
244
|
-
/* @__PURE__ */
|
|
255
|
+
/* @__PURE__ */ jsxs2(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", children: [
|
|
245
256
|
/* @__PURE__ */ jsx6(Cross2Icon, { className: "h-4 w-4" }),
|
|
246
257
|
/* @__PURE__ */ jsx6("span", { className: "sr-only", children: "Close" })
|
|
247
258
|
] })
|
|
@@ -303,11 +314,11 @@ DialogDescription.displayName = DialogPrimitive.Description.displayName;
|
|
|
303
314
|
// src/ui/select.tsx
|
|
304
315
|
import * as React6 from "react";
|
|
305
316
|
import * as SelectPrimitive from "@radix-ui/react-select";
|
|
306
|
-
import { jsx as jsx7, jsxs as
|
|
317
|
+
import { jsx as jsx7, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
307
318
|
var Select = SelectPrimitive.Root;
|
|
308
319
|
var SelectGroup = SelectPrimitive.Group;
|
|
309
320
|
var SelectValue = SelectPrimitive.Value;
|
|
310
|
-
var SelectTrigger = React6.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */
|
|
321
|
+
var SelectTrigger = React6.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs3(
|
|
311
322
|
SelectPrimitive.Trigger,
|
|
312
323
|
{
|
|
313
324
|
ref,
|
|
@@ -360,7 +371,7 @@ var SelectContent = React6.forwardRef(({ className, children, position = "popper
|
|
|
360
371
|
}
|
|
361
372
|
) }));
|
|
362
373
|
SelectContent.displayName = SelectPrimitive.Content.displayName;
|
|
363
|
-
var SelectItem = React6.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */
|
|
374
|
+
var SelectItem = React6.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs3(
|
|
364
375
|
SelectPrimitive.Item,
|
|
365
376
|
{
|
|
366
377
|
ref,
|
|
@@ -416,7 +427,7 @@ import {
|
|
|
416
427
|
useMotionValue as useMotionValue2,
|
|
417
428
|
useSpring
|
|
418
429
|
} from "motion/react";
|
|
419
|
-
import { Fragment, jsx as jsx8, jsxs as
|
|
430
|
+
import { Fragment as Fragment2, jsx as jsx8, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
420
431
|
var AnimatedTooltip = ({
|
|
421
432
|
items
|
|
422
433
|
}) => {
|
|
@@ -435,14 +446,14 @@ var AnimatedTooltip = ({
|
|
|
435
446
|
const halfWidth = event.target.offsetWidth / 2;
|
|
436
447
|
x.set(event.nativeEvent.offsetX - halfWidth);
|
|
437
448
|
};
|
|
438
|
-
return /* @__PURE__ */ jsx8(
|
|
449
|
+
return /* @__PURE__ */ jsx8(Fragment2, { children: items.map((item, idx) => /* @__PURE__ */ jsxs4(
|
|
439
450
|
"div",
|
|
440
451
|
{
|
|
441
452
|
className: "-mr-4 relative group",
|
|
442
453
|
onMouseEnter: () => setHoveredIndex(item.id),
|
|
443
454
|
onMouseLeave: () => setHoveredIndex(null),
|
|
444
455
|
children: [
|
|
445
|
-
hoveredIndex === item.id && /* @__PURE__ */
|
|
456
|
+
hoveredIndex === item.id && /* @__PURE__ */ jsxs4(
|
|
446
457
|
motion2.div,
|
|
447
458
|
{
|
|
448
459
|
initial: { opacity: 0, y: 20, scale: 0.6 },
|
|
@@ -492,7 +503,7 @@ var AnimatedTooltip = ({
|
|
|
492
503
|
import { AnimatePresence as AnimatePresence2, motion as motion3 } from "motion/react";
|
|
493
504
|
import Link from "next/link";
|
|
494
505
|
import { useState as useState3 } from "react";
|
|
495
|
-
import { jsx as jsx9, jsxs as
|
|
506
|
+
import { jsx as jsx9, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
496
507
|
var HoverEffect = ({
|
|
497
508
|
items,
|
|
498
509
|
className
|
|
@@ -505,7 +516,7 @@ var HoverEffect = ({
|
|
|
505
516
|
"flex flex-wrap justify-center items-center pb-10",
|
|
506
517
|
className
|
|
507
518
|
),
|
|
508
|
-
children: items.map((item, idx) => /* @__PURE__ */
|
|
519
|
+
children: items.map((item, idx) => /* @__PURE__ */ jsxs5(
|
|
509
520
|
Link,
|
|
510
521
|
{
|
|
511
522
|
href: item?.link,
|
|
@@ -529,7 +540,7 @@ var HoverEffect = ({
|
|
|
529
540
|
}
|
|
530
541
|
}
|
|
531
542
|
) }),
|
|
532
|
-
/* @__PURE__ */
|
|
543
|
+
/* @__PURE__ */ jsxs5(HoverCard, { logoUrl: item.logoUrl, children: [
|
|
533
544
|
/* @__PURE__ */ jsx9(HoverCardTitle, { children: item.title }),
|
|
534
545
|
/* @__PURE__ */ jsx9(HoverCardDescription, { children: item.description })
|
|
535
546
|
] })
|
|
@@ -545,7 +556,7 @@ var HoverCard = ({
|
|
|
545
556
|
children,
|
|
546
557
|
logoUrl
|
|
547
558
|
}) => {
|
|
548
|
-
return /* @__PURE__ */
|
|
559
|
+
return /* @__PURE__ */ jsxs5(
|
|
549
560
|
"div",
|
|
550
561
|
{
|
|
551
562
|
className: cn(
|
|
@@ -596,7 +607,7 @@ var HoverCardDescription = ({
|
|
|
596
607
|
// src/ui/flip-words.tsx
|
|
597
608
|
import { useCallback, useEffect, useState as useState4 } from "react";
|
|
598
609
|
import { AnimatePresence as AnimatePresence3, motion as motion4 } from "motion/react";
|
|
599
|
-
import { jsx as jsx10, jsxs as
|
|
610
|
+
import { jsx as jsx10, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
600
611
|
var FlipWords = ({
|
|
601
612
|
words,
|
|
602
613
|
duration = 3e3,
|
|
@@ -649,7 +660,7 @@ var FlipWords = ({
|
|
|
649
660
|
"z-10 inline-block relative text-left text-neutral-100 px-2",
|
|
650
661
|
className
|
|
651
662
|
),
|
|
652
|
-
children: currentWord.split(" ").map((word, wordIndex) => /* @__PURE__ */
|
|
663
|
+
children: currentWord.split(" ").map((word, wordIndex) => /* @__PURE__ */ jsxs6(
|
|
653
664
|
motion4.span,
|
|
654
665
|
{
|
|
655
666
|
initial: { opacity: 0, y: 10, filter: "blur(8px)" },
|
|
@@ -694,7 +705,7 @@ import {
|
|
|
694
705
|
animate
|
|
695
706
|
} from "motion/react";
|
|
696
707
|
import { useEffect as useEffect2, useState as useState5 } from "react";
|
|
697
|
-
import { jsx as jsx11, jsxs as
|
|
708
|
+
import { jsx as jsx11, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
698
709
|
var HeroHighlight = ({
|
|
699
710
|
children,
|
|
700
711
|
className,
|
|
@@ -733,7 +744,7 @@ var HeroHighlight = ({
|
|
|
733
744
|
mouseX.set(event.clientX - left);
|
|
734
745
|
mouseY.set(event.clientY - top);
|
|
735
746
|
};
|
|
736
|
-
return /* @__PURE__ */
|
|
747
|
+
return /* @__PURE__ */ jsxs7(
|
|
737
748
|
"div",
|
|
738
749
|
{
|
|
739
750
|
className: cn(
|
|
@@ -801,6 +812,241 @@ var Highlight = ({
|
|
|
801
812
|
}
|
|
802
813
|
);
|
|
803
814
|
};
|
|
815
|
+
|
|
816
|
+
// src/ui/chart.tsx
|
|
817
|
+
import * as React10 from "react";
|
|
818
|
+
import * as RechartsPrimitive from "recharts";
|
|
819
|
+
import { Fragment as Fragment3, jsx as jsx12, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
820
|
+
var THEMES = { light: "", dark: ".dark" };
|
|
821
|
+
var ChartContext = React10.createContext(null);
|
|
822
|
+
function useChart() {
|
|
823
|
+
const context = React10.useContext(ChartContext);
|
|
824
|
+
if (!context) {
|
|
825
|
+
throw new Error("useChart must be used within a <ChartContainer />");
|
|
826
|
+
}
|
|
827
|
+
return context;
|
|
828
|
+
}
|
|
829
|
+
function ChartContainer({
|
|
830
|
+
id,
|
|
831
|
+
className,
|
|
832
|
+
children,
|
|
833
|
+
config,
|
|
834
|
+
...props
|
|
835
|
+
}) {
|
|
836
|
+
const uniqueId = React10.useId();
|
|
837
|
+
const chartId = `chart-${id || uniqueId.replace(/:/g, "")}`;
|
|
838
|
+
return /* @__PURE__ */ jsx12(ChartContext.Provider, { value: { config }, children: /* @__PURE__ */ jsxs8(
|
|
839
|
+
"div",
|
|
840
|
+
{
|
|
841
|
+
"data-slot": "chart",
|
|
842
|
+
"data-chart": chartId,
|
|
843
|
+
className: cn(
|
|
844
|
+
"[&_.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",
|
|
845
|
+
className
|
|
846
|
+
),
|
|
847
|
+
...props,
|
|
848
|
+
children: [
|
|
849
|
+
/* @__PURE__ */ jsx12(ChartStyle, { id: chartId, config }),
|
|
850
|
+
/* @__PURE__ */ jsx12(RechartsPrimitive.ResponsiveContainer, { children })
|
|
851
|
+
]
|
|
852
|
+
}
|
|
853
|
+
) });
|
|
854
|
+
}
|
|
855
|
+
var ChartStyle = ({ id, config }) => {
|
|
856
|
+
const colorConfig = Object.entries(config).filter(
|
|
857
|
+
([, config2]) => config2.theme || config2.color
|
|
858
|
+
);
|
|
859
|
+
if (!colorConfig.length) {
|
|
860
|
+
return null;
|
|
861
|
+
}
|
|
862
|
+
return /* @__PURE__ */ jsx12(
|
|
863
|
+
"style",
|
|
864
|
+
{
|
|
865
|
+
dangerouslySetInnerHTML: {
|
|
866
|
+
__html: Object.entries(THEMES).map(
|
|
867
|
+
([theme, prefix]) => `
|
|
868
|
+
${prefix} [data-chart=${id}] {
|
|
869
|
+
${colorConfig.map(([key, itemConfig]) => {
|
|
870
|
+
const color = itemConfig.theme?.[theme] || itemConfig.color;
|
|
871
|
+
return color ? ` --color-${key}: ${color};` : null;
|
|
872
|
+
}).join("\n")}
|
|
873
|
+
}
|
|
874
|
+
`
|
|
875
|
+
).join("\n")
|
|
876
|
+
}
|
|
877
|
+
}
|
|
878
|
+
);
|
|
879
|
+
};
|
|
880
|
+
var ChartTooltip = RechartsPrimitive.Tooltip;
|
|
881
|
+
function ChartTooltipContent({
|
|
882
|
+
active,
|
|
883
|
+
payload,
|
|
884
|
+
className,
|
|
885
|
+
indicator = "dot",
|
|
886
|
+
hideLabel = false,
|
|
887
|
+
hideIndicator = false,
|
|
888
|
+
label,
|
|
889
|
+
labelFormatter,
|
|
890
|
+
labelClassName,
|
|
891
|
+
formatter,
|
|
892
|
+
color,
|
|
893
|
+
nameKey,
|
|
894
|
+
labelKey
|
|
895
|
+
}) {
|
|
896
|
+
const { config } = useChart();
|
|
897
|
+
const tooltipLabel = React10.useMemo(() => {
|
|
898
|
+
if (hideLabel || !payload?.length) {
|
|
899
|
+
return null;
|
|
900
|
+
}
|
|
901
|
+
const [item] = payload;
|
|
902
|
+
const key = `${labelKey || item?.dataKey || item?.name || "value"}`;
|
|
903
|
+
const itemConfig = getPayloadConfigFromPayload(config, item, key);
|
|
904
|
+
const value = !labelKey && typeof label === "string" ? config[label]?.label || label : itemConfig?.label;
|
|
905
|
+
if (labelFormatter) {
|
|
906
|
+
return /* @__PURE__ */ jsx12("div", { className: cn("font-medium", labelClassName), children: labelFormatter(value, payload) });
|
|
907
|
+
}
|
|
908
|
+
if (!value) {
|
|
909
|
+
return null;
|
|
910
|
+
}
|
|
911
|
+
return /* @__PURE__ */ jsx12("div", { className: cn("font-medium", labelClassName), children: value });
|
|
912
|
+
}, [
|
|
913
|
+
label,
|
|
914
|
+
labelFormatter,
|
|
915
|
+
payload,
|
|
916
|
+
hideLabel,
|
|
917
|
+
labelClassName,
|
|
918
|
+
config,
|
|
919
|
+
labelKey
|
|
920
|
+
]);
|
|
921
|
+
if (!active || !payload?.length) {
|
|
922
|
+
return null;
|
|
923
|
+
}
|
|
924
|
+
const nestLabel = payload.length === 1 && indicator !== "dot";
|
|
925
|
+
return /* @__PURE__ */ jsxs8(
|
|
926
|
+
"div",
|
|
927
|
+
{
|
|
928
|
+
className: cn(
|
|
929
|
+
"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",
|
|
930
|
+
className
|
|
931
|
+
),
|
|
932
|
+
children: [
|
|
933
|
+
!nestLabel ? tooltipLabel : null,
|
|
934
|
+
/* @__PURE__ */ jsx12("div", { className: "grid gap-1.5", children: payload.filter((item) => item.type !== "none").map((item, index) => {
|
|
935
|
+
const key = `${nameKey || item.name || item.dataKey || "value"}`;
|
|
936
|
+
const itemConfig = getPayloadConfigFromPayload(config, item, key);
|
|
937
|
+
const indicatorColor = color || item.payload.fill || item.color;
|
|
938
|
+
return /* @__PURE__ */ jsx12(
|
|
939
|
+
"div",
|
|
940
|
+
{
|
|
941
|
+
className: cn(
|
|
942
|
+
"flex w-full flex-wrap items-stretch gap-2",
|
|
943
|
+
indicator === "dot" && "items-center"
|
|
944
|
+
),
|
|
945
|
+
children: formatter && item?.value !== void 0 && item.name ? formatter(item.value, item.name, item, index, item.payload) : /* @__PURE__ */ jsxs8(Fragment3, { children: [
|
|
946
|
+
itemConfig?.icon ? /* @__PURE__ */ jsx12(itemConfig.icon, {}) : !hideIndicator && /* @__PURE__ */ jsx12(
|
|
947
|
+
"div",
|
|
948
|
+
{
|
|
949
|
+
className: cn(
|
|
950
|
+
"shrink-0 rounded-[2px]",
|
|
951
|
+
{
|
|
952
|
+
"h-2.5 w-2.5": indicator === "dot",
|
|
953
|
+
"w-1": indicator === "line",
|
|
954
|
+
"w-0 border-[1.5px] border-dashed bg-transparent": indicator === "dashed",
|
|
955
|
+
"my-0.5": nestLabel && indicator === "dashed"
|
|
956
|
+
}
|
|
957
|
+
),
|
|
958
|
+
style: {
|
|
959
|
+
backgroundColor: indicatorColor,
|
|
960
|
+
borderColor: indicatorColor
|
|
961
|
+
}
|
|
962
|
+
}
|
|
963
|
+
),
|
|
964
|
+
/* @__PURE__ */ jsxs8(
|
|
965
|
+
"div",
|
|
966
|
+
{
|
|
967
|
+
className: cn(
|
|
968
|
+
"flex flex-1 justify-between leading-none",
|
|
969
|
+
nestLabel ? "items-end" : "items-center"
|
|
970
|
+
),
|
|
971
|
+
children: [
|
|
972
|
+
/* @__PURE__ */ jsxs8("div", { className: "grid gap-1.5", children: [
|
|
973
|
+
nestLabel ? tooltipLabel : null,
|
|
974
|
+
/* @__PURE__ */ jsx12("span", { className: "text-[var(--ash-grey)]", children: itemConfig?.label || item.name })
|
|
975
|
+
] }),
|
|
976
|
+
item.value && /* @__PURE__ */ jsx12("span", { className: "text-[var(--timberwolf)] font-mono font-medium tabular-nums", children: item.value.toLocaleString() })
|
|
977
|
+
]
|
|
978
|
+
}
|
|
979
|
+
)
|
|
980
|
+
] })
|
|
981
|
+
},
|
|
982
|
+
item.dataKey
|
|
983
|
+
);
|
|
984
|
+
}) })
|
|
985
|
+
]
|
|
986
|
+
}
|
|
987
|
+
);
|
|
988
|
+
}
|
|
989
|
+
var ChartLegend = RechartsPrimitive.Legend;
|
|
990
|
+
function ChartLegendContent({
|
|
991
|
+
className,
|
|
992
|
+
hideIcon = false,
|
|
993
|
+
payload,
|
|
994
|
+
verticalAlign = "bottom",
|
|
995
|
+
nameKey
|
|
996
|
+
}) {
|
|
997
|
+
const { config } = useChart();
|
|
998
|
+
if (!payload?.length) {
|
|
999
|
+
return null;
|
|
1000
|
+
}
|
|
1001
|
+
return /* @__PURE__ */ jsx12(
|
|
1002
|
+
"div",
|
|
1003
|
+
{
|
|
1004
|
+
className: cn(
|
|
1005
|
+
"flex items-center justify-center gap-4",
|
|
1006
|
+
verticalAlign === "top" ? "pb-3" : "pt-3",
|
|
1007
|
+
className
|
|
1008
|
+
),
|
|
1009
|
+
children: payload.filter((item) => item.type !== "none").map((item) => {
|
|
1010
|
+
const key = `${nameKey || item.dataKey || "value"}`;
|
|
1011
|
+
const itemConfig = getPayloadConfigFromPayload(config, item, key);
|
|
1012
|
+
return /* @__PURE__ */ jsxs8(
|
|
1013
|
+
"div",
|
|
1014
|
+
{
|
|
1015
|
+
className: cn(
|
|
1016
|
+
"flex items-center gap-1.5 text-[var(--ash-grey)]"
|
|
1017
|
+
),
|
|
1018
|
+
children: [
|
|
1019
|
+
itemConfig?.icon && !hideIcon ? /* @__PURE__ */ jsx12(itemConfig.icon, {}) : /* @__PURE__ */ jsx12(
|
|
1020
|
+
"div",
|
|
1021
|
+
{
|
|
1022
|
+
className: "h-2 w-2 shrink-0 rounded-[2px]",
|
|
1023
|
+
style: {
|
|
1024
|
+
backgroundColor: item.color
|
|
1025
|
+
}
|
|
1026
|
+
}
|
|
1027
|
+
),
|
|
1028
|
+
itemConfig?.label
|
|
1029
|
+
]
|
|
1030
|
+
},
|
|
1031
|
+
item.value
|
|
1032
|
+
);
|
|
1033
|
+
})
|
|
1034
|
+
}
|
|
1035
|
+
);
|
|
1036
|
+
}
|
|
1037
|
+
function getPayloadConfigFromPayload(config, payload, key) {
|
|
1038
|
+
if (typeof payload !== "object" || payload === null) {
|
|
1039
|
+
return void 0;
|
|
1040
|
+
}
|
|
1041
|
+
const payloadPayload = "payload" in payload && typeof payload.payload === "object" && payload.payload !== null ? payload.payload : void 0;
|
|
1042
|
+
let configLabelKey = key;
|
|
1043
|
+
if (key in payload && typeof payload[key] === "string") {
|
|
1044
|
+
configLabelKey = payload[key];
|
|
1045
|
+
} else if (payloadPayload && key in payloadPayload && typeof payloadPayload[key] === "string") {
|
|
1046
|
+
configLabelKey = payloadPayload[key];
|
|
1047
|
+
}
|
|
1048
|
+
return configLabelKey in config ? config[configLabelKey] : config[key];
|
|
1049
|
+
}
|
|
804
1050
|
export {
|
|
805
1051
|
AnimatedTooltip,
|
|
806
1052
|
Badge,
|
|
@@ -811,6 +1057,12 @@ export {
|
|
|
811
1057
|
CardFooter,
|
|
812
1058
|
CardHeader,
|
|
813
1059
|
CardTitle,
|
|
1060
|
+
ChartContainer,
|
|
1061
|
+
ChartLegend,
|
|
1062
|
+
ChartLegendContent,
|
|
1063
|
+
ChartStyle,
|
|
1064
|
+
ChartTooltip,
|
|
1065
|
+
ChartTooltipContent,
|
|
814
1066
|
Dialog,
|
|
815
1067
|
DialogClose,
|
|
816
1068
|
DialogContent,
|
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"],"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 },\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\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, ...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 )\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-md px-3 py-2 text-sm file:border-0 file:bg-transparent\n file:text-sm file:font-mediumplaceholder-text-neutral-600\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'\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 <SelectPrimitive.Trigger\n ref={ref}\n className={cn(\n 'flex h-10 w-full items-center justify-between rounded-md border border-neutral-700 bg-zinc-800 px-3 py-2 text-sm text-white shadow-sm ring-offset-background placeholder:text-neutral-500 focus:outline-none focus:ring-2 focus:ring-neutral-600 focus:ring-offset-0 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))\nSelectTrigger.displayName = SelectPrimitive.Trigger.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 <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 </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-8 pr-2 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 left-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('py-1.5 pl-8 pr-2 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}\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"],"mappings":"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","names":["React","jsx","cva","jsx","cva","React","cva","jsx","cva","React","jsx","React","jsx","React","jsx","jsxs","useState","motion","useMotionValue","jsx","jsxs","AnimatePresence","motion","useState","jsx","jsxs","useState","AnimatePresence","motion","jsx","jsxs","useState","AnimatePresence","motion","useMotionValue","motion","useMotionTemplate","useEffect","useState","jsx","jsxs"]}
|
|
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-mediumplaceholder-text-neutral-600\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'\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 <SelectPrimitive.Trigger\n ref={ref}\n className={cn(\n 'flex h-10 w-full items-center justify-between rounded-md border border-neutral-700 bg-zinc-800 px-3 py-2 text-sm text-white shadow-sm ring-offset-background placeholder:text-neutral-500 focus:outline-none focus:ring-2 focus:ring-neutral-600 focus:ring-offset-0 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))\nSelectTrigger.displayName = SelectPrimitive.Trigger.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 <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 </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-8 pr-2 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 left-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('py-1.5 pl-8 pr-2 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}\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","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"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@braintwopoint0/playback-commons",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.5",
|
|
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",
|
|
@@ -51,6 +51,7 @@
|
|
|
51
51
|
"class-variance-authority": "^0.7.1",
|
|
52
52
|
"clsx": "^2.1.1",
|
|
53
53
|
"motion": "^12.23.22",
|
|
54
|
+
"recharts": "^2.15.3",
|
|
54
55
|
"tailwind-merge": "^2.6.0"
|
|
55
56
|
},
|
|
56
57
|
"devDependencies": {
|