diff options
Diffstat (limited to 'src/components/common/LinkButton.tsx')
| -rw-r--r-- | src/components/common/LinkButton.tsx | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/src/components/common/LinkButton.tsx b/src/components/common/LinkButton.tsx new file mode 100644 index 0000000..35292ba --- /dev/null +++ b/src/components/common/LinkButton.tsx @@ -0,0 +1,41 @@ +import { Button, type ButtonProps } from '@umami/react-zen'; +import Link from 'next/link'; +import type { ReactNode } from 'react'; +import { useLocale } from '@/components/hooks'; + +export interface LinkButtonProps extends ButtonProps { + href: string; + target?: string; + scroll?: boolean; + variant?: any; + prefetch?: boolean; + asAnchor?: boolean; + children?: ReactNode; +} + +export function LinkButton({ + href, + variant, + scroll = true, + target, + prefetch, + children, + asAnchor, + ...props +}: LinkButtonProps) { + const { dir } = useLocale(); + + return ( + <Button {...props} variant={variant} asChild> + {asAnchor ? ( + <a href={href} target={target}> + {children} + </a> + ) : ( + <Link href={href} dir={dir} scroll={scroll} target={target} prefetch={prefetch}> + {children} + </Link> + )} + </Button> + ); +} |