84 lines
2.3 KiB
TypeScript
84 lines
2.3 KiB
TypeScript
"use client";
|
|
|
|
import type { Block, SectionBlockProps, TextBlockProps } from "@/features/editor/state/editorStore";
|
|
|
|
export function createTestimonialsTemplateBlocks(opts: {
|
|
sectionId: string;
|
|
createId: () => string;
|
|
}): { blocks: Block[]; lastSelectedId: string } {
|
|
const { sectionId, createId } = opts;
|
|
|
|
const columns: SectionBlockProps["columns"] = [
|
|
{ id: `${sectionId}_col_1`, span: 4 },
|
|
{ id: `${sectionId}_col_2`, span: 4 },
|
|
{ id: `${sectionId}_col_3`, span: 4 },
|
|
];
|
|
|
|
const sectionProps: SectionBlockProps = {
|
|
background: "default",
|
|
paddingY: "lg",
|
|
// 후기 섹션은 중간 폭과 적당한 카드 간격을 사용한다.
|
|
paddingYPx: 80,
|
|
maxWidthPx: 1040,
|
|
gapXPx: 36,
|
|
backgroundColorCustom: "#020617",
|
|
columns,
|
|
} as any;
|
|
|
|
const sectionBlock: Block = {
|
|
id: sectionId,
|
|
type: "section",
|
|
props: sectionProps,
|
|
sectionId: null,
|
|
columnId: null,
|
|
};
|
|
|
|
const testimonialDefinitions: Array<{ body: string; author: string }> = [
|
|
{ body: "이 서비스 덕분에 랜딩 페이지 제작 시간이 크게 줄었습니다.", author: "홍길동" },
|
|
{ body: "디자인을 잘 못해도 깔끔한 페이지를 만들 수 있어요.", author: "김영희" },
|
|
{ body: "팀 전체가 만족하는 빌더입니다.", author: "이철수" },
|
|
];
|
|
|
|
const testimonialBlocks: Block[] = columns.flatMap((col, index) => {
|
|
const t = testimonialDefinitions[index] ?? testimonialDefinitions[0];
|
|
|
|
const bodyId = createId();
|
|
const authorId = createId();
|
|
|
|
const bodyProps: TextBlockProps = {
|
|
text: t.body,
|
|
align: "left",
|
|
size: "base",
|
|
} as any;
|
|
|
|
const authorProps: TextBlockProps = {
|
|
text: `- ${t.author}`,
|
|
align: "left",
|
|
size: "sm",
|
|
} as any;
|
|
|
|
const bodyBlock: Block = {
|
|
id: bodyId,
|
|
type: "text",
|
|
props: bodyProps,
|
|
sectionId,
|
|
columnId: col.id,
|
|
};
|
|
|
|
const authorBlock: Block = {
|
|
id: authorId,
|
|
type: "text",
|
|
props: authorProps,
|
|
sectionId,
|
|
columnId: col.id,
|
|
};
|
|
|
|
return [bodyBlock, authorBlock];
|
|
});
|
|
|
|
const blocks: Block[] = [sectionBlock, ...testimonialBlocks];
|
|
const lastSelectedId = testimonialBlocks[testimonialBlocks.length - 1]?.id ?? sectionId;
|
|
|
|
return { blocks, lastSelectedId };
|
|
}
|