svg]:size-4 group-has-data-[size=lg]/avatar-group:[&>svg]:size-5 group-has-data-[size=sm]/avatar-group:[&>svg]:size-3",
- className
+ className,
)}
- {...props} />
+ {...props}
+ />
);
}
@@ -101,4 +91,4 @@ export {
AvatarGroup,
AvatarGroupCount,
AvatarBadge,
-}
+};
diff --git a/frontend/src/components/ui/badge.jsx b/frontend/src/components/ui/badge.jsx
index d7622ba..1d2d988 100644
--- a/frontend/src/components/ui/badge.jsx
+++ b/frontend/src/components/ui/badge.jsx
@@ -1,8 +1,8 @@
-import { mergeProps } from "@base-ui/react/merge-props"
-import { useRender } from "@base-ui/react/use-render"
+import { mergeProps } from "@base-ui/react/merge-props";
+import { useRender } from "@base-ui/react/use-render";
import { cva } from "class-variance-authority";
-import { cn } from "@/lib/utils"
+import { cn } from "@/lib/utils";
const badgeVariants = cva(
"group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-4xl border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-all focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3!",
@@ -24,20 +24,18 @@ const badgeVariants = cva(
defaultVariants: {
variant: "default",
},
- }
-)
+ },
+);
-function Badge({
- className,
- variant = "default",
- render,
- ...props
-}) {
+function Badge({ className, variant = "default", render, ...props }) {
return useRender({
defaultTagName: "span",
- props: mergeProps({
- className: cn(badgeVariants({ variant }), className),
- }, props),
+ props: mergeProps(
+ {
+ className: cn(badgeVariants({ variant }), className),
+ },
+ props,
+ ),
render,
state: {
slot: "badge",
@@ -46,4 +44,4 @@ function Badge({
});
}
-export { Badge, badgeVariants }
+export { Badge, badgeVariants };
diff --git a/frontend/src/components/ui/breadcrumb.jsx b/frontend/src/components/ui/breadcrumb.jsx
index 5c1ca57..3a79b2b 100644
--- a/frontend/src/components/ui/breadcrumb.jsx
+++ b/frontend/src/components/ui/breadcrumb.jsx
@@ -1,59 +1,52 @@
-import { mergeProps } from "@base-ui/react/merge-props"
-import { useRender } from "@base-ui/react/use-render"
+import { mergeProps } from "@base-ui/react/merge-props";
+import { useRender } from "@base-ui/react/use-render";
-import { cn } from "@/lib/utils"
-import { ChevronRightIcon, MoreHorizontalIcon } from "lucide-react"
+import { cn } from "@/lib/utils";
+import { ChevronRightIcon, MoreHorizontalIcon } from "lucide-react";
-function Breadcrumb({
- className,
- ...props
-}) {
+function Breadcrumb({ className, ...props }) {
return (
+ {...props}
+ />
);
}
-function BreadcrumbList({
- className,
- ...props
-}) {
+function BreadcrumbList({ className, ...props }) {
return (
+ {...props}
+ />
);
}
-function BreadcrumbItem({
- className,
- ...props
-}) {
+function BreadcrumbItem({ className, ...props }) {
return (
+ {...props}
+ />
);
}
-function BreadcrumbLink({
- className,
- render,
- ...props
-}) {
+function BreadcrumbLink({ className, render, ...props }) {
return useRender({
defaultTagName: "a",
- props: mergeProps({
- className: cn("transition-colors hover:text-foreground", className),
- }, props),
+ props: mergeProps(
+ {
+ className: cn("transition-colors hover:text-foreground", className),
+ },
+ props,
+ ),
render,
state: {
slot: "breadcrumb-link",
@@ -61,10 +54,7 @@ function BreadcrumbLink({
});
}
-function BreadcrumbPage({
- className,
- ...props
-}) {
+function BreadcrumbPage({ className, ...props }) {
return (
+ {...props}
+ />
);
}
-function BreadcrumbSeparator({
- children,
- className,
- ...props
-}) {
+function BreadcrumbSeparator({ children, className, ...props }) {
return (
svg]:size-3.5", className)}
- {...props}>
- {children ?? (
-
- )}
+ {...props}
+ >
+ {children ?? }
);
}
-function BreadcrumbEllipsis({
- className,
- ...props
-}) {
+function BreadcrumbEllipsis({ className, ...props }) {
return (
svg]:size-4", className)}
- {...props}>
+ className={cn(
+ "flex size-5 items-center justify-center [&>svg]:size-4",
+ className,
+ )}
+ {...props}
+ >
More
@@ -120,4 +107,4 @@ export {
BreadcrumbPage,
BreadcrumbSeparator,
BreadcrumbEllipsis,
-}
+};
diff --git a/frontend/src/components/ui/button.jsx b/frontend/src/components/ui/button.jsx
index 42c3d61..da11774 100644
--- a/frontend/src/components/ui/button.jsx
+++ b/frontend/src/components/ui/button.jsx
@@ -1,7 +1,7 @@
-import { Button as ButtonPrimitive } from "@base-ui/react/button"
+import { Button as ButtonPrimitive } from "@base-ui/react/button";
import { cva } from "class-variance-authority";
-import { cn } from "@/lib/utils"
+import { cn } from "@/lib/utils";
const buttonVariants = cva(
"group/button inline-flex shrink-0 items-center justify-center rounded-lg border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none cursor-pointer focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
@@ -37,8 +37,8 @@ const buttonVariants = cva(
variant: "default",
size: "default",
},
- }
-)
+ },
+);
function Button({
className,
@@ -50,8 +50,9 @@ function Button({
+ {...props}
+ />
);
}
-export { Button, buttonVariants }
+export { Button, buttonVariants };
diff --git a/frontend/src/components/ui/card.jsx b/frontend/src/components/ui/card.jsx
index cec0a8b..c8e8cff 100644
--- a/frontend/src/components/ui/card.jsx
+++ b/frontend/src/components/ui/card.jsx
@@ -1,103 +1,88 @@
-import { cn } from "@/lib/utils"
+import { cn } from "@/lib/utils";
-function Card({
- className,
- size = "default",
- ...props
-}) {
+function Card({ className, size = "default", ...props }) {
return (
img:first-child]:pt-0 data-[size=sm]:[--card-spacing:--spacing(3)] data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl",
- className
+ className,
)}
- {...props} />
+ {...props}
+ />
);
}
-function CardHeader({
- className,
- ...props
-}) {
+function CardHeader({ className, ...props }) {
return (
+ {...props}
+ />
);
}
-function CardTitle({
- className,
- ...props
-}) {
+function CardTitle({ className, ...props }) {
return (
+ {...props}
+ />
);
}
-function CardDescription({
- className,
- ...props
-}) {
+function CardDescription({ className, ...props }) {
return (
+ {...props}
+ />
);
}
-function CardAction({
- className,
- ...props
-}) {
+function CardAction({ className, ...props }) {
return (
+ {...props}
+ />
);
}
-function CardContent({
- className,
- ...props
-}) {
+function CardContent({ className, ...props }) {
return (
+ {...props}
+ />
);
}
-function CardFooter({
- className,
- ...props
-}) {
+function CardFooter({ className, ...props }) {
return (
+ {...props}
+ />
);
}
@@ -109,4 +94,4 @@ export {
CardAction,
CardDescription,
CardContent,
-}
+};
diff --git a/frontend/src/components/ui/chart.jsx b/frontend/src/components/ui/chart.jsx
index c45ff65..0ac8c62 100644
--- a/frontend/src/components/ui/chart.jsx
+++ b/frontend/src/components/ui/chart.jsx
@@ -1,29 +1,29 @@
-import * as React from "react"
-import * as RechartsPrimitive from "recharts"
+import * as React from "react";
+import * as RechartsPrimitive from "recharts";
-import { cn } from "@/lib/utils"
+import { cn } from "@/lib/utils";
// Format: { THEME_NAME: CSS_SELECTOR }
const THEMES = {
light: "",
- dark: ".dark"
-}
+ dark: ".dark",
+};
const INITIAL_DIMENSION = {
width: 320,
- height: 200
-}
+ height: 200,
+};
-const ChartContext = React.createContext(null)
+const ChartContext = React.createContext(null);
function useChart() {
- const context = React.useContext(ChartContext)
+ const context = React.useContext(ChartContext);
if (!context) {
- throw new Error("useChart must be used within a
")
+ throw new Error("useChart must be used within a
");
}
- return context
+ return context;
}
function ChartContainer({
@@ -34,8 +34,8 @@ function ChartContainer({
initialDimension = INITIAL_DIMENSION,
...props
}) {
- const uniqueId = React.useId()
- const chartId = `chart-${id ?? uniqueId.replace(/:/g, "")}`
+ const uniqueId = React.useId();
+ const chartId = `chart-${id ?? uniqueId.replace(/:/g, "")}`;
return (
@@ -44,11 +44,14 @@ function ChartContainer({
data-chart={chartId}
className={cn(
"flex aspect-video justify-center text-xs [&_.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-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-hidden [&_.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 [&_.recharts-sector]:outline-hidden [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-surface]:outline-hidden",
- className
+ className,
)}
- {...props}>
+ {...props}
+ >
-
+
{children}
@@ -56,38 +59,38 @@ function ChartContainer({
);
}
-const ChartStyle = ({
- id,
- config
-}) => {
- const colorConfig = Object.entries(config).filter(([, config]) => config.theme ?? config.color)
+const ChartStyle = ({ id, config }) => {
+ const colorConfig = Object.entries(config).filter(
+ ([, config]) => config.theme ?? config.color,
+ );
if (!colorConfig.length) {
- return null
+ return null;
}
return (