import * as React from "react";
import { mergeProps } from "@base-ui/react/merge-props";
import { useRender } from "@base-ui/react/use-render";
import { Input } from "../primitives";
import { Separator } from "../primitives";
import { cn } from "../../lib/utils";
function SidebarInset({ className, ...props }: React.ComponentProps<"main">) {
return (
);
}
function SidebarInput({ className, ...props }: React.ComponentProps) {
return (
);
}
function SidebarHeader({ className, ...props }: React.ComponentProps<"div">) {
return (
);
}
function SidebarFooter({ className, ...props }: React.ComponentProps<"div">) {
return (
);
}
function SidebarSeparator({ className, ...props }: React.ComponentProps) {
return (
);
}
function SidebarContent({ className, ...props }: React.ComponentProps<"div">) {
return (
);
}
function SidebarGroup({ className, ...props }: React.ComponentProps<"div">) {
return (
);
}
function SidebarGroupLabel({
className,
render,
...props
}: useRender.ComponentProps<"div"> & React.ComponentProps<"div">) {
return useRender({
defaultTagName: "div",
props: mergeProps<"div">(
{
className: cn(
"flex h-8 shrink-0 items-center rounded-md px-2 text-xs text-[color:color-mix(in_oklab,var(--sidebar-foreground)_70%,transparent)] ring-[color:var(--sidebar-ring)] outline-hidden transition-[margin,opacity] duration-200 ease-linear group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0 focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0",
className,
),
},
props,
),
render,
state: {
slot: "sidebar-group-label",
sidebar: "group-label",
},
});
}
function SidebarGroupAction({
className,
render,
...props
}: useRender.ComponentProps<"button"> & React.ComponentProps<"button">) {
return useRender({
defaultTagName: "button",
props: mergeProps<"button">(
{
className: cn(
"absolute top-3.5 right-3 flex aspect-square w-5 cursor-pointer items-center justify-center rounded-md p-0 text-[color:var(--sidebar-foreground)] ring-[color:var(--sidebar-ring)] outline-hidden transition-transform group-data-[collapsible=icon]:hidden after:absolute after:-inset-2 hover:bg-[color:var(--sidebar-accent)] hover:text-[color:var(--sidebar-accent-foreground)] focus-visible:ring-2 md:after:hidden [&>svg]:size-4 [&>svg]:shrink-0",
className,
),
},
props,
),
render,
state: {
slot: "sidebar-group-action",
sidebar: "group-action",
},
});
}
function SidebarGroupContent({ className, ...props }: React.ComponentProps<"div">) {
return (
);
}
function SidebarMenu({ className, ...props }: React.ComponentProps<"ul">) {
return (
);
}
function SidebarMenuItem({ className, ...props }: React.ComponentProps<"li">) {
return (
);
}
function SidebarMenuBadge({ className, ...props }: React.ComponentProps<"div">) {
return (
);
}
function SidebarMenuPlaceholder({
className,
...props
}: React.ComponentProps<"div">): React.JSX.Element {
return (
);
}
function SidebarMenuSkeleton({
className,
showIcon = false,
...props
}: React.ComponentProps<"div"> & {
showIcon?: boolean;
}) {
const [width] = React.useState(() => {
return `${Math.floor(Math.random() * 40) + 50}%`;
});
return (
{showIcon ? (
) : null}
);
}
function SidebarMenuSub({ className, ...props }: React.ComponentProps<"ul">) {
return (
);
}
function SidebarMenuSubItem({ className, ...props }: React.ComponentProps<"li">) {
return (
);
}
function SidebarMenuSubButton({
render,
size = "md",
isActive = false,
className,
...props
}: useRender.ComponentProps<"a"> &
React.ComponentProps<"a"> & {
size?: "sm" | "md";
isActive?: boolean;
}) {
return useRender({
defaultTagName: "a",
props: mergeProps<"a">(
{
className: cn(
"flex h-7 min-w-0 -translate-x-px cursor-pointer items-center gap-2 overflow-hidden rounded-md px-2 text-[color:var(--sidebar-foreground)] ring-[color:var(--sidebar-ring)] outline-hidden group-data-[collapsible=icon]:hidden hover:bg-[color:var(--sidebar-accent)] hover:text-[color:var(--sidebar-accent-foreground)] focus-visible:ring-2 active:bg-[color:var(--sidebar-accent)] active:text-[color:var(--sidebar-accent-foreground)] disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[size=md]:text-xs data-[size=sm]:text-xs data-active:bg-[color:var(--sidebar-accent)] data-active:text-[color:var(--sidebar-accent-foreground)] [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:text-[color:var(--sidebar-accent-foreground)]",
className,
),
},
props,
),
render,
state: {
slot: "sidebar-menu-sub-button",
sidebar: "menu-sub-button",
size,
active: isActive,
},
});
}
export {
SidebarContent,
SidebarFooter,
SidebarGroup,
SidebarGroupAction,
SidebarGroupContent,
SidebarGroupLabel,
SidebarHeader,
SidebarInput,
SidebarInset,
SidebarMenu,
SidebarMenuBadge,
SidebarMenuItem,
SidebarMenuSkeleton,
SidebarMenuSub,
SidebarMenuSubButton,
SidebarMenuSubItem,
SidebarSeparator,
};