import { createLink, type LinkComponent } from "@tanstack/react-router";
import { forwardRef, type ReactNode } from "react";
import { cn } from "@/lib/utils";
interface BasicLinkProps extends React.AnchorHTMLAttributes<HTMLAnchorElement> {
icon: ReactNode;
}
const BasicLinkComponent = forwardRef<HTMLAnchorElement, BasicLinkProps>(
({ children, icon, className, ...props }, ref) => {
return (
<a
ref={ref}
className={cn("flex items-center gap-2 px-3 py-2", className)}
{...props}
>
{icon}
{children}
</a>
);
},
);
const CreatedLinkComponent = createLink(BasicLinkComponent);
export const SettingsLink: LinkComponent<typeof BasicLinkComponent> = ({
className,
activeProps,
...props
}) => {
return (
<CreatedLinkComponent
preload={"intent"}
activeProps={{
className: cn(
"text-blue-600 bg-blue-50 hover:bg-blue-100 hover:text-blue-700 font-medium transition-colors duration-200",
className,
),
...activeProps,
}}
{...props}
/>
);
};
import { createLink, type LinkComponent } from "@tanstack/react-router";
import { forwardRef, type ReactNode } from "react";
import { cn } from "@/lib/utils";
interface BasicLinkProps extends React.AnchorHTMLAttributes<HTMLAnchorElement> {
icon: ReactNode;
}
const BasicLinkComponent = forwardRef<HTMLAnchorElement, BasicLinkProps>(
({ children, icon, className, ...props }, ref) => {
return (
<a
ref={ref}
className={cn("flex items-center gap-2 px-3 py-2", className)}
{...props}
>
{icon}
{children}
</a>
);
},
);
const CreatedLinkComponent = createLink(BasicLinkComponent);
export const SettingsLink: LinkComponent<typeof BasicLinkComponent> = ({
className,
activeProps,
...props
}) => {
return (
<CreatedLinkComponent
preload={"intent"}
activeProps={{
className: cn(
"text-blue-600 bg-blue-50 hover:bg-blue-100 hover:text-blue-700 font-medium transition-colors duration-200",
className,
),
...activeProps,
}}
{...props}
/>
);
};