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 ( ); }