import { withSubComponents } from "@components/helpers/withSubComponents.ts"; import Image from "@components/Image.tsx"; import { IconExternalLink } from "@components/icons.tsx"; import { type ComponentChildren, createContext } from "preact"; import { IconArrowNarrowLeft } from "@components/icons.tsx"; import { IconEdit } from "@components/icons.tsx"; import { useContext } from "preact/hooks"; const HeroContext = createContext<{ image?: string; thumbnail?: string }>({ image: undefined, thumbnail: undefined, }); function Wrapper( { children, image, thumbnail }: { children: ComponentChildren; image?: string; thumbnail?: string; }, ) { return (
{image && ( Recipe Banner )} {children}
); } function Title( { children, link }: { children: ComponentChildren; link?: string }, ) { const ctx = useContext(HeroContext); const OuterTag = link ? "a" : "div"; return (

{children} {link && }

); } function BackLink({ href }: { href: string }) { return ( Back ); } function EditLink({ href }: { href: string }) { const ctx = useContext(HeroContext); return ( ); } function Header({ children }: { children: ComponentChildren }) { return (
{children}
); } function Subline( { entries, children }: { children?: ComponentChildren; entries: (string | { href: string; title: string })[]; }, ) { const ctx = useContext(HeroContext); return (
{children} {entries.filter((s) => s && (typeof s === "string" ? s?.length > 1 : true) ).map((s) => { if (typeof s === "string") { return {s}; } else { return {s.title}; } })}
); } function Footer({ children }: { children: ComponentChildren }) { const ctx = useContext(HeroContext); return (
{children}
); } export default withSubComponents(Wrapper, { EditLink, BackLink, Footer, Subline, Header, Title, });