o2o-site-AEO/solution/frontend/src/features/builder/canvas/variants/info/InfoInline.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

42 lines
1.4 KiB
TypeScript

/**
* 기본 정보 · 한 줄 요약 — 값들을 문장처럼 이어 붙인 가장 좁은 형태.
* 정보가 적거나, 아래 섹션으로 빨리 넘기고 싶을 때.
*/
import {
HiddenFieldsNotice,
InfoRow,
SectionBody,
SectionFrame,
SectionHeading,
} from '../../primitives';
import type {SectionRenderProps} from '../../types';
import {TODAY_KO} from '../common';
export function InfoInline(props: SectionRenderProps) {
const {section, isSelected, onSelect, template, infoFields} = props;
const visible = infoFields.filter((f) => !f.requiresVerification || f.isVerified);
const hidden = infoFields.filter((f) => f.requiresVerification && !f.isVerified).length;
return (
<SectionFrame section={section} isSelected={isSelected} onSelect={onSelect} tone="white">
<SectionBody width="narrow">
<SectionHeading
variant="minimal"
title={section.name}
subtitle={section.description}
trailing={<HiddenFieldsNotice count={hidden} />}
colors={template.colors}
/>
<div className="flex flex-wrap gap-x-5 gap-y-2.5 rounded-xl border border-stone-200/70 bg-stone-50/60 p-4">
{visible.map((field) => (
<InfoRow key={field.id} field={field} variant="inline" colors={template.colors} />
))}
</div>
<span className="block font-mono text-[11px] text-stone-400">* {TODAY_KO} 기준</span>
</SectionBody>
</SectionFrame>
);
}