import React, {
AnchorHTMLAttributes,
ButtonHTMLAttributes,
DetailedHTMLProps,
ReactNode,
Ref,
} from "react";
import classNames from "../lib/classNames";
export interface SidebarItemCustomProps {
activeIcon?: ReactNode;
icon?: ReactNode;
active?: boolean;
}
export function getSidebarItemStyles({ active }: SidebarItemCustomProps) {
const sidebarItemStyles = {
base: "px-2.5 py-2 hover:bg-gray-100 transition -mx-2.5 rounded-md flex items-center space-x-2.5 text-left group",
active: "font-medium bg-gray-50",
};
return classNames(sidebarItemStyles.base, active && sidebarItemStyles.active);
}
export interface SidebarItemLinkProps
extends DetailedHTMLProps<
AnchorHTMLAttributes,
HTMLAnchorElement
>,
SidebarItemCustomProps {}
export function SidebarItemLink(
{
activeIcon,
className,
children,
active,
icon,
...rest
}: SidebarItemLinkProps,
ref: Ref
) {
return (
{active ? activeIcon || icon : icon}
{children}
);
}
export interface SidebarItemButtonProps
extends DetailedHTMLProps<
ButtonHTMLAttributes,
HTMLButtonElement
>,
SidebarItemCustomProps {}
export function SidebarItemButton({
activeIcon,
className,
children,
active,
icon,
...rest
}: SidebarItemButtonProps) {
return (
);
}