50 lines
1.5 KiB
TypeScript
50 lines
1.5 KiB
TypeScript
import { Link } from '@inertiajs/react';
|
|
import React, { PropsWithChildren } from 'react';
|
|
|
|
interface Props {
|
|
as?: string;
|
|
href?: string;
|
|
}
|
|
|
|
export default function DropdownLink({
|
|
as,
|
|
href,
|
|
children,
|
|
}: PropsWithChildren<Props>) {
|
|
return (
|
|
<div>
|
|
{(() => {
|
|
switch (as) {
|
|
case 'button':
|
|
return (
|
|
<button
|
|
type="submit"
|
|
className="block w-full px-4 py-2 text-left text-sm leading-5 text-gray-700 dark:text-gray-300 hover:bg-gray-100 dark:hover:bg-gray-800 focus:outline-hidden focus:bg-gray-100 dark:focus:bg-gray-800 transition duration-150 ease-in-out"
|
|
>
|
|
{children}
|
|
</button>
|
|
);
|
|
case 'a':
|
|
return (
|
|
<a
|
|
href={href}
|
|
className="block px-4 py-2 text-sm leading-5 text-gray-700 dark:text-gray-300 hover:bg-gray-100 dark:hover:bg-gray-800 focus:outline-hidden focus:bg-gray-100 dark:focus:bg-gray-800 transition duration-150 ease-in-out"
|
|
>
|
|
{children}
|
|
</a>
|
|
);
|
|
default:
|
|
return (
|
|
<Link
|
|
href={href || ''}
|
|
className="block px-4 py-2 text-sm leading-5 text-gray-700 dark:text-gray-300 hover:bg-gray-100 dark:hover:bg-gray-800 focus:outline-hidden focus:bg-gray-100 dark:focus:bg-gray-800 transition duration-150 ease-in-out"
|
|
>
|
|
{children}
|
|
</Link>
|
|
);
|
|
}
|
|
})()}
|
|
</div>
|
|
);
|
|
}
|