@restnfeel/agentc-starter-kit
Version:
한국어 기업용 CMS 모듈 - Task Master AI와 함께 빠르게 웹사이트를 구현할 수 있는 재사용 가능한 컴포넌트 시스템
352 lines • 8.48 kB
TypeScript
export type TemplateCategory = "BUSINESS" | "ECOMMERCE" | "PORTFOLIO" | "BLOG" | "LANDING" | "AGENCY" | "RESTAURANT" | "EDUCATION" | "HEALTHCARE" | "NONPROFIT" | "OTHER";
export type TemplatePricing = "FREE" | "PREMIUM" | "ENTERPRISE";
export type SectionType = "hero" | "about" | "services" | "features" | "testimonials" | "contact" | "pricing" | "blog" | "gallery" | "team" | "faq" | "cta" | "footer";
export interface SectionSettings {
height?: "auto" | "screen" | "half" | string;
alignment?: "left" | "center" | "right";
animation?: string;
background?: {
type: "color" | "image" | "gradient";
value: string;
overlay?: boolean;
overlayOpacity?: number;
};
padding?: {
top?: string;
bottom?: string;
left?: string;
right?: string;
};
margin?: {
top?: string;
bottom?: string;
};
}
export interface ContactFormField {
name: string;
label: string;
type: "text" | "email" | "tel" | "textarea" | "select" | "checkbox";
required: boolean;
placeholder?: string;
options?: string[];
validation?: {
pattern?: string;
minLength?: number;
maxLength?: number;
};
}
export interface ContactForm {
fields: ContactFormField[];
submitText?: string;
successMessage?: string;
errorMessage?: string;
redirectUrl?: string;
}
export interface SocialLink {
platform: "facebook" | "instagram" | "twitter" | "linkedin" | "youtube" | "tiktok";
url: string;
icon?: string;
}
export interface MenuItem {
label: string;
href: string;
children?: MenuItem[];
icon?: string;
external?: boolean;
}
export interface LogoSettings {
text?: string;
image?: string;
width?: string;
height?: string;
}
export interface ColorPalette {
primary: string;
secondary: string;
accent: string;
background: string;
foreground: string;
muted: string;
border: string;
success?: string;
warning?: string;
error?: string;
}
export interface Typography {
fontFamily: {
sans: string[];
heading: string[];
mono?: string[];
};
fontSize: {
xs: string;
sm: string;
base: string;
lg: string;
xl: string;
"2xl": string;
"3xl": string;
"4xl": string;
"5xl": string;
"6xl"?: string;
};
fontWeight?: {
light?: number;
normal?: number;
medium?: number;
semibold?: number;
bold?: number;
};
lineHeight?: {
tight?: number;
normal?: number;
relaxed?: number;
};
}
export interface TemplateStyles {
colors: ColorPalette;
typography: Typography;
spacing: {
section: string;
container: string;
grid?: string;
};
borderRadius: {
sm: string;
md: string;
lg: string;
xl: string;
full?: string;
};
shadows?: {
sm?: string;
md?: string;
lg?: string;
xl?: string;
};
breakpoints?: {
sm?: string;
md?: string;
lg?: string;
xl?: string;
"2xl"?: string;
};
}
export interface SEOSettings {
titleTemplate: string;
defaultTitle: string;
defaultDescription: string;
defaultKeywords?: string[];
ogImage?: string;
twitterCard?: "summary" | "summary_large_image";
jsonLd?: Record<string, unknown>;
}
export interface NavigationSettings {
position: "top" | "left" | "right";
sticky: boolean;
transparent?: boolean;
logo: LogoSettings;
menuItems: MenuItem[];
ctaButton?: {
text: string;
href: string;
style?: "primary" | "secondary" | "outline";
};
}
export interface FooterSettings {
showSocial: boolean;
socialLinks: SocialLink[];
showNewsletter: boolean;
newsletterTitle?: string;
newsletterDescription?: string;
copyright: string;
links?: {
title: string;
items: MenuItem[];
}[];
address?: {
street?: string;
city?: string;
country?: string;
phone?: string;
email?: string;
};
}
export interface AnalyticsSettings {
googleAnalytics?: string;
facebookPixel?: string;
hotjar?: string;
mixpanel?: string;
customScripts?: {
head?: string[];
body?: string[];
};
}
export interface TemplateSettings {
seo: SEOSettings;
navigation: NavigationSettings;
footer: FooterSettings;
analytics: AnalyticsSettings;
customCss?: string;
customJs?: string;
favicons?: {
ico?: string;
png16?: string;
png32?: string;
png192?: string;
png512?: string;
};
}
export type SectionContent = HeroContent | AboutContent | ServicesContent | TestimonialsContent | ContactContent | Record<string, unknown>;
export interface HeroContent {
title: string;
subtitle?: string;
description?: string;
ctaText?: string;
ctaUrl?: string;
secondaryCta?: {
text: string;
url: string;
};
backgroundImage?: string;
backgroundVideo?: string;
overlay?: boolean;
overlayOpacity?: number;
}
export interface AboutContent {
title: string;
subtitle?: string;
description: string;
image?: string;
features?: {
icon: string;
title: string;
description: string;
}[];
stats?: {
value: string;
label: string;
description?: string;
}[];
}
export interface ServicesContent {
title: string;
subtitle?: string;
services: {
icon: string;
title: string;
description: string;
features?: string[];
price?: string;
ctaText?: string;
ctaUrl?: string;
}[];
}
export interface TestimonialsContent {
title: string;
subtitle?: string;
testimonials: {
name: string;
position?: string;
company?: string;
content: string;
rating?: number;
image?: string;
}[];
}
export interface ContactContent {
title: string;
subtitle?: string;
address?: string;
phone?: string;
email?: string;
hours?: string;
mapEmbed?: string;
contactForm?: ContactForm;
}
export interface TemplateSection {
type: SectionType;
name: string;
required: boolean;
order: number;
defaultContent: SectionContent;
settings?: SectionSettings;
customFields?: {
name: string;
label: string;
type: "text" | "textarea" | "select" | "checkbox" | "image" | "color";
options?: string[];
description?: string;
}[];
}
export interface SiteTemplate {
id: string;
name: string;
slug: string;
description?: string;
category: TemplateCategory;
pricing: TemplatePricing;
sections: Record<string, TemplateSection>;
styles: TemplateStyles;
settings: TemplateSettings;
features: string[];
tags: string[];
previewImage?: string;
previewUrl?: string;
demoUrl?: string;
documentationUrl?: string;
isActive: boolean;
isPublic: boolean;
version: string;
author?: string;
authorUrl?: string;
license?: string;
price?: number;
downloads?: number;
rating?: number;
requiredPlugins?: string[];
supportedLanguages?: string[];
minVersion?: string;
customizable?: {
colors: boolean;
fonts: boolean;
layout: boolean;
content: boolean;
};
changelog?: {
version: string;
date: string;
changes: string[];
}[];
createdAt?: Date;
updatedAt?: Date;
}
export interface TemplateUsage {
templateId: string;
siteId: string;
installedAt: Date;
customizations?: Record<string, unknown>;
version: string;
}
export interface TemplateLibrary {
templates: SiteTemplate[];
categories: {
id: TemplateCategory;
name: string;
description: string;
icon: string;
}[];
featured: string[];
popular: string[];
recent: string[];
}
export interface TemplateFilters {
category?: TemplateCategory;
pricing?: TemplatePricing;
features?: string[];
tags?: string[];
search?: string;
sortBy?: "name" | "popularity" | "rating" | "date" | "price";
sortOrder?: "asc" | "desc";
}
//# sourceMappingURL=templates.d.ts.map