o2o-site-AEO/solution/frontend/src/features/builder/canvas/variants/programs/ProgramsCards.tsx
Mina Choi c85c577349 이름: solution/front → solution/frontend
`backend` 옆에 `front` 가 있을 이유가 없었다. negosium 의 negodata/front 를 그대로
베꼈고 그게 왜 front 인지는 따져보지 않았다 — 근거 없이 들여온 이름이라 바로잡는다.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019uYhHQdssRubirPirrdJJC
2026-08-31 15:27:16 +09:00

30 lines
1.0 KiB
TypeScript

/**
* 체험 프로그램 · 카드 — 소요시간·대상까지 붙여 한 장씩. 처음 오는 손님이 고르기 쉽다.
*/
import {PriceRow, SectionBody, SectionFrame, SectionHeading} from '../../primitives';
import type {SectionRenderProps} from '../../types';
import {programItems} from './useProgramItems';
export function ProgramsCards(props: SectionRenderProps) {
const {section, isSelected, onSelect, industryId, template} = props;
const items = programItems(industryId);
return (
<SectionFrame section={section} isSelected={isSelected} onSelect={onSelect} tone="white">
<SectionBody>
<SectionHeading
title={section.name}
subtitle={section.description}
colors={template.colors}
/>
<div className="grid grid-cols-1 gap-3 sm:grid-cols-2 lg:grid-cols-3">
{items.map((item) => (
<PriceRow key={item.name} item={item} variant="card" colors={template.colors} />
))}
</div>
</SectionBody>
</SectionFrame>
);
}