import React from 'react' import { ArrowLeftIcon } from 'lucide-react' import { Reveal } from '../Reveal' import { ButtonLink } from '../Button' import { useSite } from '../../api' import { useLang } from '../../i18n/lang' 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; /** پس‌زمینه: black = char (تیره) و gray = ink (روشن‌تر) — ریتم تناوب بخش‌ها */ tone?: 'black' | 'gray'; } export function Story({ showLink = true, showLabel = true, showQuote = false, alignTop = false, tone = 'gray', children }: StoryProps) { const { story } = useSite() const { href } = useLang() 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)} />

))}
{/* آمارها فقط وقتی نمایش داده می‌شوند که مقداری ثبت شده باشد — با خالی‌بودن، کادر خالی با خط جداکننده بی‌معنا می‌ماند؛ ویرایش/افزودن آمار از پنل ادمین (موجودیت story) انجام می‌شود */} {(story.stat1_value || story.stat2_value) && (

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}
))}
) }