2026-04-25 02:24:34 +09:00
|
|
|
import type { ReactNode } from 'react'
|
|
|
|
|
import { twMerge } from 'tailwind-merge'
|
|
|
|
|
|
2026-05-15 20:01:59 +09:00
|
|
|
import { LogosMark } from '@acid-info/logos-ui'
|
2026-04-25 02:53:12 +09:00
|
|
|
import { Link } from '@/i18n/navigation'
|
2026-04-25 02:24:34 +09:00
|
|
|
|
|
|
|
|
type StackCardProps = {
|
|
|
|
|
label: ReactNode
|
|
|
|
|
href: string
|
|
|
|
|
className?: string
|
|
|
|
|
labelClassName?: string
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export function StackCard({
|
|
|
|
|
label,
|
|
|
|
|
href,
|
|
|
|
|
className,
|
|
|
|
|
labelClassName,
|
|
|
|
|
}: StackCardProps) {
|
|
|
|
|
return (
|
2026-04-25 02:53:12 +09:00
|
|
|
<Link
|
2026-04-25 02:24:34 +09:00
|
|
|
href={href}
|
|
|
|
|
className={twMerge(
|
|
|
|
|
'flex cursor-pointer items-center justify-center rounded-3xl border transition-colors',
|
2026-05-07 12:54:29 +09:00
|
|
|
className
|
2026-04-25 02:24:34 +09:00
|
|
|
)}
|
|
|
|
|
>
|
|
|
|
|
<span
|
|
|
|
|
className={twMerge(
|
|
|
|
|
'text-subhead-sans flex items-center gap-2 text-brand-dark-green',
|
2026-05-07 12:54:29 +09:00
|
|
|
labelClassName
|
2026-04-25 02:24:34 +09:00
|
|
|
)}
|
|
|
|
|
>
|
|
|
|
|
<LogosMark size={14} className="shrink-0" />
|
|
|
|
|
{label}
|
|
|
|
|
</span>
|
2026-04-25 02:53:12 +09:00
|
|
|
</Link>
|
2026-04-25 02:24:34 +09:00
|
|
|
)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
type StackRowProps = {
|
|
|
|
|
children: ReactNode
|
|
|
|
|
href?: string
|
|
|
|
|
className?: string
|
|
|
|
|
labelClassName?: string
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export function StackRow({
|
|
|
|
|
children,
|
|
|
|
|
href,
|
|
|
|
|
className,
|
|
|
|
|
labelClassName,
|
|
|
|
|
}: StackRowProps) {
|
|
|
|
|
const containerClasses = twMerge(
|
|
|
|
|
'flex items-center justify-center rounded-3xl border px-6 text-center transition-colors',
|
|
|
|
|
href && 'cursor-pointer',
|
2026-05-07 12:54:29 +09:00
|
|
|
className
|
2026-04-25 02:24:34 +09:00
|
|
|
)
|
|
|
|
|
const content = (
|
|
|
|
|
<span
|
|
|
|
|
className={twMerge(
|
|
|
|
|
'text-subhead-sans text-brand-dark-green',
|
2026-05-07 12:54:29 +09:00
|
|
|
labelClassName
|
2026-04-25 02:24:34 +09:00
|
|
|
)}
|
|
|
|
|
>
|
|
|
|
|
{children}
|
|
|
|
|
</span>
|
|
|
|
|
)
|
|
|
|
|
if (href) {
|
|
|
|
|
return (
|
2026-04-25 02:53:12 +09:00
|
|
|
<Link href={href} className={containerClasses}>
|
2026-04-25 02:24:34 +09:00
|
|
|
{content}
|
2026-04-25 02:53:12 +09:00
|
|
|
</Link>
|
2026-04-25 02:24:34 +09:00
|
|
|
)
|
|
|
|
|
}
|
|
|
|
|
return <div className={containerClasses}>{content}</div>
|
|
|
|
|
}
|