import { html } from "lit"; import { msg } from "@lit/localize"; import type { BuilderComponent } from "../../types/BuilderComponent"; import "../../assets/shoelaceImports"; const DEFAULT_LABEL = "Link"; const DEFAULT_HREF = "#"; const DEFAULT_ICON = ""; export const LinkComponent: BuilderComponent = { type: "link", label: () => msg("Link"), group: "buttons", defaultData: { label: DEFAULT_LABEL, href: DEFAULT_HREF, icon: DEFAULT_ICON, }, render(data) { const label = data?.label || DEFAULT_LABEL; const href = data?.href || DEFAULT_HREF; const icon = data?.icon || ""; return html` ${icon ? html`` : null} ${label} `; }, bindings: () => [ { key: "label", label: msg("Link text"), kind: "text", target: "span", placeholder: msg("Link label"), }, { key: "href", label: msg("Link URL"), kind: "attr", target: "a", name: "href", placeholder: "https://example.com", }, { key: "icon", label: msg("Icon name (optional)"), kind: "attr", target: "sl-icon", name: "name", placeholder: "arrow-right, link-45deg, external-link…", }, ], settings: ({ setData }) => { const reset = () => { setData({ label: DEFAULT_LABEL, href: DEFAULT_HREF, icon: DEFAULT_ICON }); }; return html`

${msg("Link")}

${msg("Reset link")}
${msg('Press "A" while clicking to follow the link.')}
`; }, };