40 lines
1.1 KiB
TypeScript
40 lines
1.1 KiB
TypeScript
import LocalizedClientLink from "@modules/common/components/localized-client-link"
|
|
import {
|
|
LayoutComponentDefinition,
|
|
LayoutContext,
|
|
} from "vibentec/component-map"
|
|
import { clx } from "@medusajs/ui"
|
|
import * as MedusaIcons from "@medusajs/icons"
|
|
export const AccountButton = ({
|
|
nodes,
|
|
context,
|
|
}: {
|
|
nodes: LayoutComponentDefinition
|
|
context: LayoutContext
|
|
}) => {
|
|
const props = nodes.config ?? {}
|
|
const className = clx("hover:text-ui-fg-base", props.className)
|
|
const style: React.CSSProperties = {}
|
|
if (props.bgColor) style.backgroundColor = props.bgColor
|
|
if (props.textColor) style.color = props.textColor
|
|
const href = props.href ?? "/account"
|
|
const label = props.label ?? "Account"
|
|
const iconName = props.icon
|
|
const Icon = iconName
|
|
? (MedusaIcons as Record<string, React.ComponentType<any>>)[iconName]
|
|
: undefined
|
|
return (
|
|
<div className="flex items-center h-full">
|
|
<LocalizedClientLink
|
|
href={href}
|
|
className={className}
|
|
data-testid="nav-account-link"
|
|
>
|
|
{Icon ? <Icon /> : label}
|
|
</LocalizedClientLink>
|
|
</div>
|
|
)
|
|
}
|
|
|
|
export default AccountButton
|