import React from 'react' import { ArrowLeftIcon } from 'lucide-react' import { Reveal } from '../Reveal' import { ButtonLink } from '../Button' import { useSite } from '../../api' import { useFieldSaver } from '../../admin/AdminContext' import { InlineEdit } from '../admin/InlineEdit' import { SingletonPill } from '../../admin/Editable' type StoryProps = { showLink?: boolean; showLabel?: boolean; showQuote?: boolean; alignTop?: boolean; children?: React.ReactNode; } export function Story({ showLink = true, showLabel = true, showQuote = false, alignTop = false, children }: StoryProps) { const { story } = useSite() const save = useFieldSaver() const saveStory = (field: string, value: unknown) => save('story', story.id, { [field]: value }, (d) => { ;(d.story as unknown as Record)[field] = value }) const saveParagraph = (index: number, value: string) => { const paragraphs = [...story.paragraphs] paragraphs[index] = value void saveStory('paragraphs', paragraphs) } return (
{showLabel && (

saveStory('title', v)} />

)} {story.paragraphs.map((paragraph, i) => (

saveParagraph(i, v)} />

))}

saveStory('stat1_value', v)} />

saveStory('stat1_label', v)} />

saveStory('stat2_value', v)} />

saveStory('stat2_label', v)} />

{showQuote && story.quote && (

saveStory('quote', v)} />

saveStory('quote_author', v)} />

)} {showLink && ( saveStory('link_label', v)} /> )} {children && ( {children} )}
{story.bento.map((item, i) => (
{item.alt}
))}
) }