@damarkuncoro/landing-page 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/index.ts","../src/core/theme.ts","../src/schema/validate.ts","../src/schema/landingPageSchema.ts","../src/schema/sectionConfigSchemas.ts","../src/core/validators.ts","../src/core/define.ts","../src/core/sections/header.ts","../src/core/sections/hero.ts","../src/core/sections/features.ts","../src/core/sections/testimonials.ts","../src/core/sections/pricing.ts","../src/core/sections/cta.ts","../src/core/sections/footer.ts","../src/core/sections/stats.ts","../src/core/sections/faq.ts","../src/renderers/react/index.tsx","../src/renderers/react/skins/HeaderSkin.tsx","../src/renderers/react/base/HeaderBase.tsx","../src/renderers/react/base/NavbarBase.tsx","../src/renderers/react/base/LayoutBase.tsx","../src/renderers/react/skins/NavbarSkin.tsx","../src/renderers/react/Navbar.tsx","../src/renderers/react/base/MenuToggleBase.tsx","../src/renderers/react/skins/MenuToggleSkin.tsx","../src/renderers/react/MenuToggle.tsx","../src/renderers/react/Header.tsx","../src/renderers/react/base/HeroBase.tsx","../src/renderers/react/base/ButtonBase.tsx","../src/core/utils/contrast.ts","../src/renderers/react/skins/ButtonSkin.tsx","../src/renderers/react/Button.tsx","../src/renderers/react/skins/HeroSkin.tsx","../src/renderers/react/Hero.tsx","../src/renderers/react/base/FeaturesBase.tsx","../src/renderers/react/skins/FeaturesSkin.tsx","../src/renderers/react/Features.tsx","../src/renderers/react/base/TestimonialsBase.tsx","../src/renderers/react/skins/TestimonialsSkin.tsx","../src/renderers/react/Testimonials.tsx","../src/renderers/react/base/PricingBase.tsx","../src/renderers/react/skins/PricingSkin.tsx","../src/renderers/react/Pricing.tsx","../src/renderers/react/base/CtaBase.tsx","../src/renderers/react/skins/CtaSkin.tsx","../src/renderers/react/Cta.tsx","../src/renderers/react/base/FooterBase.tsx","../src/renderers/react/skins/FooterSkin.tsx","../src/renderers/react/Footer.tsx","../src/renderers/react/base/StatsBase.tsx","../src/renderers/react/skins/StatsSkin.tsx","../src/renderers/react/Stats.tsx","../src/renderers/react/base/FaqBase.tsx","../src/renderers/react/skins/FaqSkin.tsx","../src/renderers/react/Faq.tsx"],"sourcesContent":["export { defineLandingPage } from './core/define'\nexport { createHeaderSection, createHeroSection, createFeaturesSection, createTestimonialsSection, createPricingSection, createCtaSection, createFooterSection, createStatsSection, createFaqSection } from './core/sections'\nexport { defaultTheme } from './core/theme'\nexport type { LandingPageConfig, SectionType, ComponentType } from './core/types'\nexport type { ButtonConfig, HeaderConfig, HeroConfig, FeatureConfig, TestimonialConfig, FooterConfig, PricingConfig, CtaConfig, StatConfig, FaqConfig } from './components/types'\nexport { createReactRenderer } from './renderers/react'\nexport { landingPageSchema, sectionConfigSchemas } from './schema'\nexport { validateConfig, validateSection } from './core/validators'","import type { ThemeConfig } from './types'\n\nexport const defaultTheme: ThemeConfig = {\n colors: {\n primary: '#3b82f6',\n secondary: '#8b5cf6',\n accent: '#10b981',\n background: '#ffffff',\n text: '#1f2937',\n muted: '#6b7280',\n },\n spacing: {\n xs: '0.25rem',\n sm: '0.5rem',\n md: '1rem',\n lg: '1.5rem',\n xl: '2rem',\n },\n fonts: {\n heading: 'system-ui, -apple-system, sans-serif',\n body: 'system-ui, -apple-system, sans-serif',\n mono: 'monospace',\n },\n breakpoints: {\n sm: '640px',\n md: '768px',\n lg: '1024px',\n xl: '1280px',\n },\n}\n\nexport function createTheme(config?: Partial<ThemeConfig>): ThemeConfig {\n return {\n ...defaultTheme,\n ...config,\n colors: {\n ...defaultTheme.colors,\n ...config?.colors,\n },\n spacing: {\n ...defaultTheme.spacing,\n ...config?.spacing,\n },\n fonts: {\n ...defaultTheme.fonts,\n ...config?.fonts,\n },\n breakpoints: {\n ...defaultTheme.breakpoints,\n ...config?.breakpoints,\n },\n }\n}\n\nexport function validateTheme(theme: Partial<ThemeConfig>): string[] {\n const errors: string[] = []\n\n if (theme.colors) {\n const requiredColors = ['primary', 'secondary', 'accent', 'background', 'text', 'muted'] as const\n requiredColors.forEach(color => {\n const colorValue = (theme.colors as any)[color]\n if (colorValue && !/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/.test(colorValue)) {\n errors.push(`Invalid color format for ${color}: ${colorValue}`)\n }\n })\n }\n\n if (theme.spacing) {\n const requiredSpacing = ['xs', 'sm', 'md', 'lg', 'xl'] as const\n requiredSpacing.forEach(size => {\n const spacingValue = (theme.spacing as any)[size]\n if (spacingValue && !/^\\d+(\\.\\d+)?(px|rem|em)$/.test(spacingValue)) {\n errors.push(`Invalid spacing format for ${size}: ${spacingValue}`)\n }\n })\n }\n\n if (theme.breakpoints) {\n const requiredBreakpoints = ['sm', 'md', 'lg', 'xl'] as const\n requiredBreakpoints.forEach(breakpoint => {\n const breakpointValue = (theme.breakpoints as any)[breakpoint]\n if (breakpointValue && !/^\\d+(px|em|rem)$/.test(breakpointValue)) {\n errors.push(`Invalid breakpoint format for ${breakpoint}: ${breakpointValue}`)\n }\n })\n }\n\n return errors\n}","import Ajv from 'ajv'\nimport addFormats from 'ajv-formats'\nimport { landingPageSchema, sectionConfigSchemas } from './index'\n\nconst ajv = new Ajv({ allErrors: true })\naddFormats(ajv)\n\n// Compile the landing page schema\nconst validateLandingPage = ajv.compile(landingPageSchema)\n\n// Compile section schemas\nconst validateSection = {\n hero: ajv.compile(sectionConfigSchemas.hero),\n features: ajv.compile(sectionConfigSchemas.features),\n testimonials: ajv.compile(sectionConfigSchemas.testimonials),\n pricing: ajv.compile(sectionConfigSchemas.pricing),\n cta: ajv.compile(sectionConfigSchemas.cta),\n footer: ajv.compile(sectionConfigSchemas.footer),\n stats: ajv.compile(sectionConfigSchemas.stats),\n faq: ajv.compile(sectionConfigSchemas.faq),\n header: ajv.compile(sectionConfigSchemas.header),\n} as any\n\n// Validate a landing page configuration\nexport const validateLandingPageConfig = (config: any) => {\n const valid = validateLandingPage(config)\n if (!valid && validateLandingPage.errors) {\n return validateLandingPage.errors.map((err: any) => ({\n field: err.instancePath || 'root',\n message: err.message,\n type: err.keyword,\n }))\n }\n\n // Validate each section's configuration\n const sectionErrors: any[] = []\n if (config.sections) {\n config.sections.forEach((section: any, index: number) => {\n if (validateSection[section.type]) {\n const valid = validateSection[section.type](section.config)\n if (!valid && validateSection[section.type].errors) {\n sectionErrors.push({\n field: `sections[${index}]`,\n errors: validateSection[section.type].errors.map((err: any) => ({\n field: err.instancePath || 'config',\n message: err.message,\n type: err.keyword,\n })),\n })\n }\n }\n })\n }\n\n if (sectionErrors.length > 0) {\n return sectionErrors\n }\n\n return null\n}\n\n// Validate a single section\nexport const validateSectionConfig = (type: string, config: any) => {\n if (validateSection[type]) {\n const valid = validateSection[type](config)\n if (!valid && validateSection[type].errors) {\n return validateSection[type].errors.map((err: any) => ({\n field: err.instancePath || 'root',\n message: err.message,\n type: err.keyword,\n }))\n }\n }\n return null\n}","import type { LandingPageConfig, SectionType, ComponentType } from '../core/types'\nimport type { ButtonConfig, HeroConfig, FeatureConfig, TestimonialConfig, FooterConfig, PricingConfig, CtaConfig } from '../components/types'\n\n// Landing Page Schema (JSON Schema for validation and documentation)\nexport const landingPageSchema = {\n $id: 'urn:landing-page:schema',\n title: 'Landing Page',\n description: 'Configuration for a config-driven landing page',\n type: 'object',\n properties: {\n id: {\n type: 'string',\n description: 'Unique identifier for the landing page',\n },\n className: {\n type: 'string',\n description: 'CSS class name for the landing page container',\n },\n title: {\n type: 'string',\n description: 'Page title for SEO and accessibility',\n minLength: 1,\n },\n description: {\n type: 'string',\n description: 'Page description for SEO',\n minLength: 1,\n },\n sections: {\n type: 'array',\n description: 'Sections that make up the landing page',\n minItems: 1,\n items: {\n $ref: '#/definitions/Section',\n },\n },\n theme: {\n $ref: '#/definitions/Theme',\n },\n },\n required: ['title', 'description', 'sections'],\n definitions: {\n Section: {\n type: 'object',\n properties: {\n id: {\n type: 'string',\n description: 'Unique identifier for the section',\n },\n className: {\n type: 'string',\n description: 'CSS class name for the section',\n },\n type: {\n type: 'string',\n description: 'Section type',\n enum: ['hero', 'features', 'testimonials', 'pricing', 'cta', 'footer', 'stats', 'faq', 'header'],\n },\n config: {\n type: 'object',\n description: 'Section configuration',\n },\n },\n required: ['type', 'config'],\n },\n Theme: {\n type: 'object',\n properties: {\n colors: {\n $ref: '#/definitions/Colors',\n },\n spacing: {\n $ref: '#/definitions/Spacing',\n },\n fonts: {\n $ref: '#/definitions/Fonts',\n },\n breakpoints: {\n $ref: '#/definitions/Breakpoints',\n },\n },\n },\n Colors: {\n type: 'object',\n properties: {\n primary: {\n type: 'string',\n description: 'Primary brand color',\n pattern: '^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$',\n },\n secondary: {\n type: 'string',\n description: 'Secondary brand color',\n pattern: '^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$',\n },\n accent: {\n type: 'string',\n description: 'Accent color',\n pattern: '^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$',\n },\n background: {\n type: 'string',\n description: 'Background color',\n pattern: '^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$',\n },\n text: {\n type: 'string',\n description: 'Text color',\n pattern: '^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$',\n },\n muted: {\n type: 'string',\n description: 'Muted text color',\n pattern: '^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$',\n },\n },\n required: ['primary', 'secondary', 'accent', 'background', 'text', 'muted'],\n },\n Spacing: {\n type: 'object',\n properties: {\n xs: {\n type: 'string',\n description: 'Extra small spacing unit (e.g., \"4px\")',\n },\n sm: {\n type: 'string',\n description: 'Small spacing unit (e.g., \"8px\")',\n },\n md: {\n type: 'string',\n description: 'Medium spacing unit (e.g., \"16px\")',\n },\n lg: {\n type: 'string',\n description: 'Large spacing unit (e.g., \"24px\")',\n },\n xl: {\n type: 'string',\n description: 'Extra large spacing unit (e.g., \"32px\")',\n },\n },\n required: ['xs', 'sm', 'md', 'lg', 'xl'],\n },\n Fonts: {\n type: 'object',\n properties: {\n heading: {\n type: 'string',\n description: 'Font family for headings (e.g., \"Roboto, sans-serif\")',\n },\n body: {\n type: 'string',\n description: 'Font family for body text (e.g., \"Open Sans, sans-serif\")',\n },\n mono: {\n type: 'string',\n description: 'Font family for monospace text (e.g., \"Fira Code, monospace\")',\n },\n },\n required: ['heading', 'body', 'mono'],\n },\n Breakpoints: {\n type: 'object',\n properties: {\n sm: {\n type: 'string',\n description: 'Small breakpoint (e.g., \"640px\")',\n },\n md: {\n type: 'string',\n description: 'Medium breakpoint (e.g., \"768px\")',\n },\n lg: {\n type: 'string',\n description: 'Large breakpoint (e.g., \"1024px\")',\n },\n xl: {\n type: 'string',\n description: 'Extra large breakpoint (e.g., \"1280px\")',\n },\n },\n required: ['sm', 'md', 'lg', 'xl'],\n },\n ButtonConfig: {\n type: 'object',\n properties: {\n text: { type: 'string' },\n url: { type: 'string', format: 'uri' },\n variant: { type: 'string', enum: ['primary', 'secondary', 'outline', 'ghost'] },\n size: { type: 'string', enum: ['sm', 'md', 'lg'] },\n target: { type: 'string', enum: ['_blank', '_self'] },\n },\n required: ['text', 'url', 'variant', 'size'],\n },\n },\n}\n","export const sectionConfigSchemas = {\n // Placeholder for individual section schemas\n // These will be populated with actual JSON schemas for each section type (HeroConfig, FeatureConfig, etc.)\n hero: {\n type: 'object',\n properties: {\n title: { type: 'string' },\n subtitle: { type: 'string' },\n image: { type: 'string', format: 'uri' },\n video: { type: 'string', format: 'uri' },\n buttons: {\n type: 'array',\n items: { $ref: 'urn:landing-page:schema#/definitions/ButtonConfig' },\n },\n alignment: { type: 'string', enum: ['left', 'center', 'right'] },\n },\n required: ['title', 'subtitle', 'buttons'],\n },\n features: {\n type: 'object',\n properties: {\n title: { type: 'string' },\n description: { type: 'string' },\n icon: { type: 'string' },\n image: { type: 'string', format: 'uri' },\n },\n required: ['title', 'description'],\n },\n testimonials: {\n type: 'object',\n properties: {\n quote: { type: 'string' },\n author: { type: 'string' },\n role: { type: 'string' },\n avatar: { type: 'string', format: 'uri' },\n },\n required: ['quote', 'author'],\n },\n pricing: {\n type: 'object',\n properties: {\n plans: {\n type: 'array',\n items: {\n type: 'object',\n properties: {\n id: { type: 'string' },\n title: { type: 'string' },\n description: { type: 'string' },\n price: { type: 'number' },\n period: { type: 'string' },\n features: {\n type: 'array',\n items: { type: 'string' },\n },\n button: { $ref: 'urn:landing-page:schema#/definitions/ButtonConfig' },\n featured: { type: 'boolean' },\n },\n required: ['title', 'description', 'price', 'features', 'button'],\n },\n },\n },\n required: ['plans'],\n },\n cta: {\n type: 'object',\n properties: {\n title: { type: 'string' },\n description: { type: 'string' },\n button: { $ref: 'urn:landing-page:schema#/definitions/ButtonConfig' },\n image: { type: 'string', format: 'uri' },\n },\n required: ['title', 'description', 'button'],\n },\n footer: {\n type: 'object',\n properties: {\n logo: { type: 'string', format: 'uri' },\n title: { type: 'string' },\n description: { type: 'string' },\n links: {\n type: 'array',\n items: {\n type: 'object',\n properties: {\n title: { type: 'string' },\n items: {\n type: 'array',\n items: {\n type: 'object',\n properties: {\n text: { type: 'string' },\n url: { type: 'string', format: 'uri' },\n target: { type: 'string', enum: ['_blank', '_self'] },\n },\n required: ['text', 'url'],\n },\n },\n },\n required: ['title', 'items'],\n },\n },\n socialLinks: {\n type: 'array',\n items: {\n type: 'object',\n properties: {\n platform: { type: 'string' },\n url: { type: 'string', format: 'uri' },\n icon: { type: 'string' },\n },\n required: ['platform', 'url'],\n },\n },\n copyright: { type: 'string' },\n },\n required: ['links', 'socialLinks'],\n },\n stats: {\n type: 'object',\n properties: {\n number: { type: 'string' },\n label: { type: 'string' },\n icon: { type: 'string' },\n prefix: { type: 'string' },\n suffix: { type: 'string' },\n },\n required: ['number', 'label'],\n },\n faq: {\n type: 'object',\n properties: {\n items: {\n type: 'array',\n items: {\n type: 'object',\n properties: {\n id: { type: 'string' },\n question: { type: 'string' },\n answer: { type: 'string' },\n },\n required: ['question', 'answer'],\n },\n },\n },\n required: ['items'],\n },\n header: {\n type: 'object',\n properties: {\n logo: { type: 'string', format: 'uri' },\n title: { type: 'string' },\n links: {\n type: 'array',\n items: {\n type: 'object',\n properties: {\n id: { type: 'string' },\n text: { type: 'string' },\n url: { type: 'string', format: 'uri' },\n target: { type: 'string', enum: ['_blank', '_self'] },\n },\n required: ['text', 'url'],\n },\n },\n },\n required: ['links'],\n },\n}\n","import type { LandingPageConfig, SectionConfig } from './types'\nimport type { SectionType } from './sections'\nimport { validateLandingPageConfig, validateSectionConfig } from '../schema/validate'\n\nexport function validateConfig(config: Partial<LandingPageConfig>): string[] {\n const errors: string[] = []\n\n if (!config.title) errors.push('Title is required')\n if (!config.description) errors.push('Description is required')\n if (!config.sections || config.sections.length === 0) errors.push('At least one section is required')\n\n config.sections?.forEach((section, index) => {\n if (!section.id) errors.push(`Section ${index} is missing an id`)\n if (!section.type) errors.push(`Section ${section.id || index} is missing a type`)\n \n const sectionErrors = validateSection(section)\n sectionErrors.forEach(error => errors.push(`Section ${section.id || index}: ${error}`))\n })\n\n return errors\n}\n\nexport function validateSection(section: Partial<SectionConfig>): string[] {\n const errors: string[] = []\n\n if (!section.type) {\n errors.push('Section type is required')\n return errors\n }\n\n if (!section.config) {\n errors.push('Section config is required')\n return errors\n }\n\n try {\n const validationResult = validateSectionConfig(section.type, section.config)\n if (validationResult) {\n errors.push(...validationResult.map((err: any) => `${err.field}: ${err.message}`))\n }\n } catch (error) {\n errors.push(`Invalid section configuration: ${(error as Error).message}`)\n }\n\n return errors\n}\n\nexport function isValidConfig(config: Partial<LandingPageConfig>): boolean {\n return validateConfig(config).length === 0\n}\n\nexport function isValidSection(section: Partial<SectionConfig>): boolean {\n return validateSection(section).length === 0\n}","import type { LandingPageConfig, SectionConfig } from './types'\nimport { createTheme } from './theme'\nimport { validateConfig, validateSection } from './validators'\n\nexport function defineLandingPage(config: LandingPageConfig) {\n // Validate required fields\n const errors = validateConfig(config)\n if (errors.length > 0) {\n throw new Error(`Invalid landing page configuration: ${errors.join(', ')}`)\n }\n\n // Create the landing page instance\n const landingPage = {\n ...config,\n theme: createTheme(config.theme),\n\n // Methods\n getSection(id: string) {\n return this.sections.find((section) => section.id === id)\n },\n\n addSection(section: SectionConfig) {\n const sectionErrors = validateSection(section)\n if (sectionErrors.length > 0) {\n throw new Error(`Invalid section: ${sectionErrors.join(', ')}`)\n }\n this.sections.push(section)\n return this\n },\n\n removeSection(id: string) {\n this.sections = this.sections.filter((section) => section.id !== id)\n return this\n },\n\n updateSection(id: string, updates: Partial<SectionConfig>) {\n const index = this.sections.findIndex((section) => section.id === id)\n if (index !== -1) {\n const updatedSection = { ...this.sections[index], ...updates }\n const sectionErrors = validateSection(updatedSection)\n if (sectionErrors.length > 0) {\n throw new Error(`Invalid section updates: ${sectionErrors.join(', ')}`)\n }\n this.sections[index] = updatedSection\n }\n return this\n },\n\n // Render method - returns the raw config for consumption by renderers\n toJSON() {\n return JSON.parse(JSON.stringify(this))\n },\n\n // Validate the landing page configuration\n validate() {\n return validateConfig(this)\n },\n\n // Get section by type\n getSectionsByType(type: string) {\n return this.sections.filter((section) => section.type === type)\n },\n\n // Check if configuration is valid\n isValid() {\n return this.validate().length === 0\n },\n }\n\n return landingPage\n}","import type { SectionConfig } from '../types'\nimport type { HeaderConfig } from '../../components/types'\n\nexport interface HeaderSection extends SectionConfig {\n type: 'header'\n config: HeaderConfig\n}\n\nexport function createHeaderSection(config: HeaderConfig, id?: string, className?: string): HeaderSection {\n return {\n id: id || `header-${Date.now()}`,\n className,\n type: 'header',\n config,\n }\n}","import type { SectionConfig } from '../types'\nimport type { HeroConfig } from '../../components/types'\n\nexport interface HeroSection extends SectionConfig {\n type: 'hero'\n config: HeroConfig\n}\n\nexport function createHeroSection(config: HeroConfig, id?: string, className?: string): HeroSection {\n return {\n id: id || `hero-${Date.now()}`,\n className,\n type: 'hero',\n config,\n }\n}","import type { SectionConfig } from '../types'\nimport type { FeatureConfig } from '../../components/types'\n\nexport interface FeaturesSection extends SectionConfig {\n type: 'features'\n config: {\n features: FeatureConfig[]\n }\n}\n\nexport function createFeaturesSection(config: { features: FeatureConfig[] }, id?: string, className?: string): FeaturesSection {\n return {\n id: id || `features-${Date.now()}`,\n className,\n type: 'features',\n config,\n }\n}","import type { SectionConfig } from '../types'\nimport type { TestimonialConfig } from '../../components/types'\n\nexport interface TestimonialsSection extends SectionConfig {\n type: 'testimonials'\n config: {\n testimonials: TestimonialConfig[]\n }\n}\n\nexport function createTestimonialsSection(config: { testimonials: TestimonialConfig[] }, id?: string, className?: string): TestimonialsSection {\n return {\n id: id || `testimonials-${Date.now()}`,\n className,\n type: 'testimonials',\n config,\n }\n}","import type { SectionConfig } from '../types'\nimport type { PricingConfig } from '../../components/types'\n\nexport interface PricingSection extends SectionConfig {\n type: 'pricing'\n config: PricingConfig\n}\n\nexport function createPricingSection(config: PricingConfig, id?: string, className?: string): PricingSection {\n return {\n id: id || `pricing-${Date.now()}`,\n className,\n type: 'pricing',\n config,\n }\n}","import type { SectionConfig } from '../types'\nimport type { CtaConfig } from '../../components/types'\n\nexport interface CtaSection extends SectionConfig {\n type: 'cta'\n config: CtaConfig\n}\n\nexport function createCtaSection(config: CtaConfig, id?: string, className?: string): CtaSection {\n return {\n id: id || `cta-${Date.now()}`,\n className,\n type: 'cta',\n config,\n }\n}","import type { SectionConfig } from '../types'\nimport type { FooterConfig } from '../../components/types'\n\nexport interface FooterSection extends SectionConfig {\n type: 'footer'\n config: FooterConfig\n}\n\nexport function createFooterSection(config: FooterConfig, id?: string, className?: string): FooterSection {\n return {\n id: id || `footer-${Date.now()}`,\n className,\n type: 'footer',\n config,\n }\n}","import type { SectionConfig } from '../types'\nimport type { StatConfig } from '../../components/types'\n\nexport interface StatsSection extends SectionConfig {\n type: 'stats'\n config: {\n stats: StatConfig[]\n }\n}\n\nexport function createStatsSection(config: { stats: StatConfig[] }, id?: string, className?: string): StatsSection {\n return {\n id: id || `stats-${Date.now()}`,\n className,\n type: 'stats',\n config,\n }\n}","import type { SectionConfig } from '../types'\nimport type { FaqConfig } from '../../components/types'\n\nexport interface FaqSection extends SectionConfig {\n type: 'faq'\n config: FaqConfig\n}\n\nexport function createFaqSection(config: FaqConfig, id?: string, className?: string): FaqSection {\n return {\n id: id || `faq-${Date.now()}`,\n className,\n type: 'faq',\n config,\n }\n}","import React from 'react'\nimport type { LandingPageConfig, SectionConfig } from '../../core/types'\nimport type {\n HeaderConfig,\n HeroConfig,\n FeatureConfig,\n TestimonialConfig,\n PricingConfig,\n CtaConfig,\n FooterConfig,\n StatConfig,\n FaqConfig,\n} from '../../components/types'\n\nimport Header from './Header'\nimport Hero from './Hero'\nimport Features from './Features'\nimport Testimonials from './Testimonials'\nimport Pricing from './Pricing'\nimport Cta from './Cta'\nimport Footer from './Footer'\nimport Stats from './Stats'\nimport Faq from './Faq'\nimport { Box } from './base/LayoutBase'\n\n// Main renderer\nexport const createReactRenderer = () => {\n const SectionRenderer = ({ section, theme }: { section: SectionConfig; theme: any }) => {\n switch (section.type) {\n case 'header':\n return <Header config={section.config as HeaderConfig} theme={theme} key={section.id} />\n case 'hero':\n return <Hero config={section.config as HeroConfig} theme={theme} key={section.id} />\n case 'features':\n return <Features config={section.config as FeatureConfig} theme={theme} key={section.id} />\n case 'testimonials':\n return <Testimonials config={section.config as TestimonialConfig} theme={theme} key={section.id} />\n case 'pricing':\n return <Pricing config={section.config as PricingConfig} theme={theme} key={section.id} />\n case 'cta':\n return <Cta config={section.config as CtaConfig} theme={theme} key={section.id} />\n case 'footer':\n return <Footer config={section.config as FooterConfig} theme={theme} key={section.id} />\n case 'stats':\n return <Stats config={section.config as { stats: StatConfig[]; className?: string }} theme={theme} key={section.id} />\n case 'faq':\n return <Faq config={section.config as FaqConfig} theme={theme} key={section.id} />\n default:\n console.warn(`Unknown section type: ${section.type}`)\n return null\n }\n }\n\n const LandingPage = ({ config }: { config: LandingPageConfig }) => {\n // Global styles\n React.useEffect(() => {\n const style = document.createElement('style')\n style.textContent = `\n * {\n margin: 0;\n padding: 0;\n box-sizing: border-box;\n }\n body {\n font-family: ${config.theme?.fonts?.body || 'system-ui, sans-serif'};\n background-color: ${config.theme?.colors?.background || '#ffffff'};\n color: ${config.theme?.colors?.text || '#000000'};\n line-height: 1.6;\n }\n `\n document.head.appendChild(style)\n return () => {\n document.head.removeChild(style)\n }\n }, [config])\n\n return (\n <Box>\n {config.sections.map((section) => (\n <SectionRenderer key={section.id} section={section} theme={config.theme} />\n ))}\n </Box>\n )\n }\n\n return LandingPage\n}","import React, { useState } from 'react'\nimport { HeaderBase } from '../base/HeaderBase'\nimport type { HeaderContractProps } from '../contracts/HeaderContract'\n\n/**\n * Skin untuk Header.\n * Menggabungkan Base UI dengan styling (Tailwind/inline).\n * Depend pada Base UI + Tailwind (optional) + Contract (aturan 15).\n */\nexport const HeaderSkin = (props: HeaderContractProps & { theme: any }) => {\n const { theme, ...config } = props\n const [mobileMenuOpen, setMobileMenuOpen] = useState(false)\n\n const headerStyle: React.CSSProperties = {\n padding: '1rem 0',\n backgroundColor: theme.colors.background,\n borderBottom: `1px solid ${theme.colors.muted}20`,\n ...config.style,\n }\n\n const containerStyle: React.CSSProperties = {\n maxWidth: '1200px',\n margin: '0 auto',\n padding: '0 1rem',\n ...config.containerStyle,\n }\n\n return (\n <HeaderBase\n {...config}\n theme={theme}\n style={headerStyle}\n containerStyle={containerStyle}\n isMobileMenuOpen={mobileMenuOpen}\n onMobileMenuToggle={() => setMobileMenuOpen(!mobileMenuOpen)}\n />\n )\n}\n","import React from 'react'\nimport type { HeaderContractProps } from '../contracts/HeaderContract'\nimport Navbar from '../Navbar'\nimport MenuToggle from '../MenuToggle'\nimport { Container, Flex, Box } from './LayoutBase'\nimport type { ThemeConfig } from '../../../core/types'\n\n/**\n * Base UI untuk Header.\n * Memisahkan struktur DOM dari styling.\n * Depend pada UI Contract (aturan 13).\n */\nexport const HeaderBase = React.forwardRef<HTMLElement, HeaderContractProps & { theme: ThemeConfig }>((props, ref) => {\n const { \n logo, \n title, \n links, \n className, \n isMobileMenuOpen = false, \n onMobileMenuToggle, \n style, \n containerStyle, \n theme \n } = props\n\n return (\n <Box as=\"header\" ref={ref} style={style} className={className}>\n <Container style={containerStyle}>\n <Flex justify=\"space-between\" align=\"center\">\n <Flex align=\"center\" gap=\"1rem\">\n {logo && (\n <img\n src={logo}\n alt={title || 'Logo'}\n style={{ height: '40px' }}\n loading=\"lazy\"\n />\n )}\n {title && (\n <h1 style={{ fontSize: '1.5rem', color: theme.colors.text }}>\n {title}\n </h1>\n )}\n </Flex>\n \n {/* Desktop Navbar - Hidden on mobile, can be shown via skin media query if needed */}\n <Box style={{ display: 'none' }}>\n {/* Future: Desktop Navbar */}\n </Box>\n\n {onMobileMenuToggle && (\n <MenuToggle \n isOpen={isMobileMenuOpen} \n onClick={onMobileMenuToggle} \n theme={theme} \n />\n )}\n </Flex>\n\n {/* Mobile Navbar */}\n <Navbar \n links={links} \n theme={theme} \n isMobile={true} \n isOpen={isMobileMenuOpen} \n />\n </Container>\n </Box>\n )\n})\n\nHeaderBase.displayName = 'HeaderBase'\n","import React from 'react'\nimport type { NavbarContractProps } from '../contracts/NavbarContract'\nimport { Box, Flex } from './LayoutBase'\n\n/**\n * Base UI untuk Navbar.\n * Memisahkan struktur DOM dari styling.\n * Depend pada UI Contract (aturan 13).\n */\nexport const NavbarBase = React.forwardRef<HTMLElement, NavbarContractProps>((props, ref) => {\n const { \n links, \n isMobile, \n isOpen, \n className, \n style, \n linkStyle,\n onLinkMouseEnter,\n onLinkMouseLeave \n } = props\n\n if (isMobile && !isOpen) return null\n\n return (\n <Box as=\"nav\" ref={ref} className={className} style={style}>\n <Flex as=\"ul\" direction={isMobile ? 'column' : 'row'} gap=\"1.5rem\" style={{ listStyle: 'none', padding: 0 }}>\n {links.map((link, index) => (\n <Box as=\"li\" key={index} style={{ marginBottom: isMobile ? '0.5rem' : 0 }}>\n <a\n href={link.url}\n target={link.target || '_self'}\n rel={link.target === '_blank' ? 'noopener noreferrer' : undefined}\n style={linkStyle}\n onMouseEnter={(e) => onLinkMouseEnter?.(e, link)}\n onMouseLeave={(e) => onLinkMouseLeave?.(e, link)}\n onFocus={(e) => {\n e.currentTarget.style.outline = '2px solid currentColor'\n e.currentTarget.style.outlineOffset = '2px'\n }}\n onBlur={(e) => {\n e.currentTarget.style.outline = 'none'\n }}\n >\n {link.text}\n </a>\n </Box>\n ))}\n </Flex>\n </Box>\n )\n})\n\nNavbarBase.displayName = 'NavbarBase'\n","import React from 'react'\nimport type { BoxProps, FlexProps, ContainerProps } from '../contracts/LayoutContract'\n\n/**\n * Base UI untuk Layout (Box, Flex, Container).\n * Depend pada UI Contract (aturan 13).\n */\n\nexport const Box = React.forwardRef<any, BoxProps>((props, ref) => {\n const { as: Component = 'div', children, className, style, ...rest } = props\n return (\n <Component ref={ref} className={className} style={style} {...rest}>\n {children}\n </Component>\n )\n})\n\nexport const Flex = React.forwardRef<any, FlexProps>((props, ref) => {\n const {\n as: Component = 'div',\n children,\n className,\n style,\n direction = 'row',\n justify = 'flex-start',\n align = 'stretch',\n gap = 0,\n wrap = 'nowrap',\n ...rest\n } = props\n\n const flexStyle: React.CSSProperties = {\n display: 'flex',\n flexDirection: direction,\n justifyContent: justify,\n alignItems: align,\n gap: typeof gap === 'number' ? `${gap}px` : gap,\n flexWrap: wrap,\n ...style,\n }\n\n return (\n <Component ref={ref} className={className} style={flexStyle} {...rest}>\n {children}\n </Component>\n )\n})\n\nexport const Container = React.forwardRef<any, ContainerProps>((props, ref) => {\n const {\n as: Component = 'div',\n children,\n className,\n style,\n maxWidth = '1200px',\n padding = '0 1rem',\n center = true,\n ...rest\n } = props\n\n const containerStyle: React.CSSProperties = {\n maxWidth,\n padding,\n margin: center ? '0 auto' : undefined,\n ...style,\n }\n\n return (\n <Component ref={ref} className={className} style={containerStyle} {...rest}>\n {children}\n </Component>\n )\n})\n\nBox.displayName = 'Box'\nFlex.displayName = 'Flex'\nContainer.displayName = 'Container'\n","import React from 'react'\nimport { NavbarBase } from '../base/NavbarBase'\nimport type { NavbarContractProps } from '../contracts/NavbarContract'\n\n/**\n * Skin untuk Navbar.\n * Menggabungkan Base UI dengan styling (Tailwind/inline).\n * Depend pada Base UI + Tailwind (optional) + Contract (aturan 15).\n */\nexport const NavbarSkin = (props: NavbarContractProps & { theme: any }) => {\n const { theme, ...config } = props\n\n const navbarStyle: React.CSSProperties = {\n marginTop: config.isMobile ? theme.spacing.md : 0,\n ...config.style,\n }\n\n const linkStyle: React.CSSProperties = {\n color: theme.colors.muted,\n textDecoration: 'none',\n transition: 'color 0.2s ease',\n display: 'block',\n padding: config.isMobile ? `${theme.spacing.sm} ${theme.spacing.md}` : '0.25rem 0',\n borderRadius: config.isMobile ? '0.5rem' : 0,\n fontSize: '1rem',\n fontWeight: '500',\n ...config.linkStyle,\n }\n\n const handleMouseEnter = (e: React.MouseEvent<HTMLAnchorElement>) => {\n const el = e.currentTarget\n el.style.color = theme.colors.primary\n config.onLinkMouseEnter?.(e, {})\n }\n\n const handleMouseLeave = (e: React.MouseEvent<HTMLAnchorElement>) => {\n const el = e.currentTarget\n el.style.color = theme.colors.muted\n config.onLinkMouseLeave?.(e, {})\n }\n\n return (\n <NavbarBase\n {...config}\n style={navbarStyle}\n linkStyle={linkStyle}\n onLinkMouseEnter={handleMouseEnter}\n onLinkMouseLeave={handleMouseLeave}\n />\n )\n}\n","import React from 'react'\nimport { NavbarSkin } from './skins/NavbarSkin'\n\n/**\n * Komponen Navbar yang menggunakan arsitektur Skin.\n * Depend pada Skins + Modules (aturan 16).\n */\nconst Navbar = ({ \n links, \n theme, \n isMobile, \n isOpen, \n className, \n style \n}: { \n links: any[]; \n theme: any; \n isMobile?: boolean; \n isOpen?: boolean; \n className?: string; \n style?: React.CSSProperties \n}) => {\n return (\n <NavbarSkin\n links={links}\n theme={theme}\n isMobile={isMobile}\n isOpen={isOpen}\n className={className}\n style={style}\n />\n )\n}\n\nexport default Navbar\n","import React from 'react'\nimport type { MenuToggleContractProps } from '../contracts/MenuToggleContract'\nimport { Box } from './LayoutBase'\n\n/**\n * Base UI untuk Menu Toggle.\n * Memisahkan struktur DOM dari styling.\n * Depend pada UI Contract (aturan 13).\n */\nexport const MenuToggleBase = React.forwardRef<HTMLButtonElement, MenuToggleContractProps>((props, ref) => {\n const { \n isOpen, \n onClick, \n ariaLabel = 'Toggle menu', \n className, \n style, \n iconOpen = '☰', \n iconClose = '✕' \n } = props\n\n return (\n <Box\n as=\"button\"\n ref={ref}\n onClick={onClick}\n style={style}\n className={className}\n aria-label={isOpen ? 'Close menu' : ariaLabel}\n >\n {isOpen ? iconClose : iconOpen}\n </Box>\n )\n})\n\nMenuToggleBase.displayName = 'MenuToggleBase'\n","import React from 'react'\nimport { MenuToggleBase } from '../base/MenuToggleBase'\nimport type { MenuToggleContractProps } from '../contracts/MenuToggleContract'\n\n/**\n * Skin untuk Menu Toggle.\n * Menggabungkan Base UI dengan styling (Tailwind/inline).\n * Depend pada Base UI + Tailwind (optional) + Contract (aturan 15).\n */\nexport const MenuToggleSkin = (props: MenuToggleContractProps & { theme: any }) => {\n const { theme, ...config } = props\n\n const toggleStyle: React.CSSProperties = {\n backgroundColor: 'transparent',\n border: 'none',\n color: theme.colors.text,\n fontSize: '1.5rem',\n cursor: 'pointer',\n padding: theme.spacing.sm,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n transition: 'color 0.2s ease',\n ...config.style,\n }\n\n return (\n <MenuToggleBase\n {...config}\n style={toggleStyle}\n />\n )\n}\n","import React from 'react'\nimport { MenuToggleSkin } from './skins/MenuToggleSkin'\n\n/**\n * Komponen MenuToggle yang menggunakan arsitektur Skin.\n * Depend pada Skins + Modules (aturan 16).\n */\nconst MenuToggle = ({ \n isOpen, \n onClick, \n theme, \n className, \n style \n}: { \n isOpen: boolean; \n onClick: () => void; \n theme: any; \n className?: string; \n style?: React.CSSProperties \n}) => {\n return (\n <MenuToggleSkin\n isOpen={isOpen}\n onClick={onClick}\n theme={theme}\n className={className}\n style={style}\n />\n )\n}\n\nexport default MenuToggle\n","import React from 'react'\nimport type { HeaderConfig } from '../../components/types'\nimport { HeaderSkin } from './skins/HeaderSkin'\n\n/**\n * Komponen Header yang menggunakan arsitektur Skin.\n * Depend pada Skins + Modules (aturan 16).\n */\nconst Header = ({ config, theme }: { config: HeaderConfig; theme: any }) => {\n return (\n <HeaderSkin\n {...config}\n theme={theme}\n />\n )\n}\n\nexport default Header\n","import React from 'react'\nimport type { HeroContractProps } from '../contracts/HeroContract'\nimport Button from '../Button'\nimport { Container, Flex, Box } from './LayoutBase'\nimport type { ThemeConfig } from '../../../core/types'\n\n/**\n * Base UI untuk Hero Section.\n * Memisahkan struktur DOM dari styling.\n * Depend pada UI Contract (aturan 13).\n */\nexport const HeroBase = React.forwardRef<HTMLElement, HeroContractProps & { theme: ThemeConfig }>((props, ref) => {\n const { \n title, \n subtitle, \n buttons, \n image, \n video, \n alignment = 'center', \n className, \n style, \n containerStyle, \n contentStyle,\n theme \n } = props\n\n return (\n <Box as=\"section\" ref={ref} className={className} style={style}>\n <Container style={containerStyle}>\n <Flex\n direction=\"column\"\n gap={theme.spacing.xl}\n align={alignment === 'center' ? 'center' : alignment === 'right' ? 'flex-end' : 'flex-start'}\n style={{ textAlign: alignment, ...contentStyle }}\n >\n <Box>\n <h1 style={{\n fontSize: '3rem',\n fontWeight: 'bold',\n color: theme.colors.text,\n marginBottom: theme.spacing.md,\n lineHeight: '1.2',\n }}>\n {title}\n </h1>\n <p style={{\n fontSize: '1.25rem',\n color: theme.colors.muted,\n marginBottom: theme.spacing.lg,\n maxWidth: '600px',\n marginLeft: alignment === 'center' ? 'auto' : '0',\n marginRight: alignment === 'center' ? 'auto' : '0',\n }}>\n {subtitle}\n </p>\n </Box>\n {image && (\n <img\n src={image}\n alt={title || 'Hero'}\n style={{\n maxWidth: '100%',\n borderRadius: '0.5rem',\n boxShadow: '0 10px 15px -3px rgba(0, 0, 0, 0.1)',\n }}\n loading=\"lazy\"\n />\n )}\n {video && (\n <video\n src={video}\n controls\n style={{\n maxWidth: '100%',\n borderRadius: '0.5rem',\n boxShadow: '0 10px 15px -3px rgba(0, 0, 0, 0.1)',\n }}\n />\n )}\n <Flex gap={theme.spacing.md} wrap=\"wrap\" justify={alignment === 'center' ? 'center' : 'flex-start'}>\n {buttons.map((button) => (\n <Button key={button.id} config={button} theme={theme} />\n ))}\n </Flex>\n </Flex>\n </Container>\n </Box>\n )\n})\n\nHeroBase.displayName = 'HeroBase'\n","import React from 'react'\nimport type { ButtonContractProps } from '../contracts/ButtonContract'\n\n/**\n * Base UI untuk Button.\n * Memisahkan struktur DOM dari styling.\n * Depend pada UI Contract (aturan 13).\n */\nexport const ButtonBase = React.forwardRef<HTMLAnchorElement, ButtonContractProps>((props, ref) => {\n const {\n text,\n url,\n target = '_self',\n variant,\n size,\n className,\n style,\n onMouseEnter,\n onMouseLeave,\n onFocus,\n onBlur,\n onKeyDown,\n ...rest\n } = props\n\n return (\n <a\n ref={ref}\n href={url}\n target={target}\n rel={target === '_blank' ? 'noopener noreferrer' : undefined}\n style={style}\n className={className}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n onFocus={onFocus}\n onBlur={onBlur}\n onKeyDown={onKeyDown}\n role=\"button\"\n tabIndex={0}\n {...rest}\n >\n {text}\n </a>\n )\n})\n\nButtonBase.displayName = 'ButtonBase'\n","/**\n * Utility untuk mengecek kontras warna berdasarkan standar WCAG.\n * ❌ Core tidak boleh depend apa pun (aturan 18).\n */\n\n/**\n * Mengonversi warna hex ke komponen RGB.\n * @param hex Kode warna hex (misal: #ffffff atau #fff)\n */\nexport function hexToRgb(hex: string): { r: number; g: number; b: number } | null {\n const shorthandRegex = /^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i\n const fullHex = hex.replace(shorthandRegex, (_, r, g, b) => r + r + g + g + b + b)\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(fullHex)\n return result\n ? {\n r: parseInt(result[1], 16),\n g: parseInt(result[2], 16),\n b: parseInt(result[3], 16),\n }\n : null\n}\n\n/**\n * Menghitung luminansi relatif dari komponen warna RGB.\n * @param r Red (0-255)\n * @param g Green (0-255)\n * @param b Blue (0-255)\n */\nexport function getRelativeLuminance(r: number, g: number, b: number): number {\n const [rs, gs, bs] = [r, g, b].map((c) => {\n const s = c / 255\n return s <= 0.03928 ? s / 12.92 : Math.pow((s + 0.055) / 1.055, 2.4)\n })\n return 0.2126 * rs + 0.7152 * gs + 0.0722 * bs\n}\n\n/**\n * Menghitung rasio kontras antara dua warna hex.\n * @param hex1 Warna pertama\n * @param hex2 Warna kedua\n * @returns Rasio kontras (1 sampai 21)\n */\nexport function getContrastRatio(hex1: string, hex2: string): number {\n const rgb1 = hexToRgb(hex1)\n const rgb2 = hexToRgb(hex2)\n\n if (!rgb1 || !rgb2) return 1\n\n const l1 = getRelativeLuminance(rgb1.r, rgb1.g, rgb1.b)\n const l2 = getRelativeLuminance(rgb2.r, rgb2.g, rgb2.b)\n\n const lighter = Math.max(l1, l2)\n const darker = Math.min(l1, l2)\n\n return (lighter + 0.05) / (darker + 0.05)\n}\n\n/**\n * Menentukan apakah kontras antara dua warna memenuhi standar WCAG.\n * @param hex1 Warna pertama\n * @param hex2 Warna kedua\n * @param level Level WCAG ('AA' atau 'AAA')\n * @param size Ukuran teks ('normal' atau 'large')\n */\nexport function isContrastAccessible(\n hex1: string,\n hex2: string,\n level: 'AA' | 'AAA' = 'AA',\n size: 'normal' | 'large' = 'normal'\n): boolean {\n const ratio = getContrastRatio(hex1, hex2)\n\n if (level === 'AAA') {\n return size === 'large' ? ratio >= 4.5 : ratio >= 7\n }\n\n // Level AA (Default)\n return size === 'large' ? ratio >= 3 : ratio >= 4.5\n}\n\n/**\n * Memilih warna teks terbaik (hitam atau putih) untuk latar belakang tertentu.\n * @param bgColor Warna latar belakang hex\n * @param lightColor Warna teks terang (default: #ffffff)\n * @param darkColor Warna teks gelap (default: #000000)\n */\nexport function getBestContrastColor(\n bgColor: string,\n lightColor: string = '#ffffff',\n darkColor: string = '#000000'\n): string {\n const ratioLight = getContrastRatio(bgColor, lightColor)\n const ratioDark = getContrastRatio(bgColor, darkColor)\n\n return ratioLight > ratioDark ? lightColor : darkColor\n}\n","import React from 'react'\nimport { ButtonBase } from '../base/ButtonBase'\nimport type { ButtonContractProps } from '../contracts/ButtonContract'\nimport { getBestContrastColor } from '../../../core/utils/contrast'\n\n/**\n * Skin untuk Button.\n * Menggabungkan Base UI dengan styling (Tailwind/inline).\n * Depend pada Base UI + Tailwind (optional) + Contract (aturan 15).\n */\nexport const ButtonSkin = (props: ButtonContractProps & { theme: any }) => {\n const { theme, ...config } = props\n\n const backgroundColor =\n config.variant === 'primary'\n ? theme.colors.primary\n : config.variant === 'secondary'\n ? theme.colors.secondary\n : 'transparent'\n\n const textColor =\n config.variant === 'primary' || config.variant === 'secondary'\n ? getBestContrastColor(backgroundColor)\n : theme.colors.primary\n\n const buttonStyles: React.CSSProperties = {\n padding: theme.spacing[config.size === 'sm' ? 'sm' : config.size === 'lg' ? 'xl' : 'md'],\n backgroundColor,\n color: textColor,\n border:\n config.variant === 'outline'\n ? `2px solid ${theme.colors.primary}`\n : 'none',\n borderRadius: '0.5rem',\n fontSize: config.size === 'sm' ? '0.875rem' : config.size === 'lg' ? '1.125rem' : '1rem',\n fontWeight: '600',\n cursor: 'pointer',\n textDecoration: 'none',\n display: 'inline-block',\n textAlign: 'center',\n transition: 'all 0.2s ease',\n ...config.style,\n }\n\n // Adjust brightness helper\n const adjustBrightness = (color: string, amount: number) => {\n if (!color || color === 'transparent') return color\n try {\n const num = parseInt(color.replace('#', ''), 16)\n const amt = Math.round(2.55 * amount)\n const R = Math.max(0, Math.min(255, (num >> 16) + amt))\n const G = Math.max(0, Math.min(255, (num >> 8 & 0x00FF) + amt))\n const B = Math.max(0, Math.min(255, (num & 0x0000FF) + amt))\n return '#' + (0x1000000 + R * 0x10000 + G * 0x100 + B).toString(16).slice(1)\n } catch (e) {\n return color\n }\n }\n\n const handleMouseEnter = (e: React.MouseEvent<HTMLAnchorElement>) => {\n const el = e.currentTarget\n if (config.variant === 'primary') {\n el.style.backgroundColor = adjustBrightness(theme.colors.primary, -20)\n el.style.transform = 'translateY(-2px)'\n el.style.boxShadow = '0 10px 15px -3px rgba(0, 0, 0, 0.1)'\n } else if (config.variant === 'secondary') {\n el.style.backgroundColor = adjustBrightness(theme.colors.secondary, -20)\n el.style.transform = 'translateY(-2px)'\n el.style.boxShadow = '0 10px 15px -3px rgba(0, 0, 0, 0.1)'\n } else if (config.variant === 'outline') {\n el.style.backgroundColor = theme.colors.primary\n // Jika primary adalah putih (kasus di CTA), gunakan warna teks asli sebagai warna teks saat hover\n el.style.color = theme.colors.primary === '#ffffff' ? theme.colors.text : '#ffffff'\n } else if (config.variant === 'ghost') {\n el.style.backgroundColor = `${theme.colors.primary}10`\n }\n config.onMouseEnter?.(e)\n }\n\n const handleMouseLeave = (e: React.MouseEvent<HTMLAnchorElement>) => {\n const el = e.currentTarget\n el.style.backgroundColor = buttonStyles.backgroundColor as string\n el.style.color = buttonStyles.color as string\n el.style.transform = 'translateY(0)'\n el.style.boxShadow = 'none'\n config.onMouseLeave?.(e)\n }\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLAnchorElement>) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault()\n window.location.href = config.url\n }\n config.onKeyDown?.(e)\n }\n\n return (\n <ButtonBase\n {...config}\n style={buttonStyles}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n onKeyDown={handleKeyDown}\n onFocus={(e) => {\n e.currentTarget.style.outline = `2px solid ${theme.colors.primary}`\n e.currentTarget.style.outlineOffset = '2px'\n config.onFocus?.(e)\n }}\n onBlur={(e) => {\n e.currentTarget.style.outline = 'none'\n config.onBlur?.(e)\n }}\n />\n )\n}\n","import React from 'react'\nimport type { ButtonConfig } from '../../components/types'\nimport { ButtonSkin } from './skins/ButtonSkin'\n\n/**\n * Komponen Button yang menggunakan arsitektur Skin.\n * Depend pada Skins + Modules (aturan 16).\n */\nconst Button = ({ config, theme }: { config: ButtonConfig; theme: any }) => {\n return (\n <ButtonSkin\n {...config}\n theme={theme}\n />\n )\n}\n\nexport default Button\n","import React from 'react'\nimport { HeroBase } from '../base/HeroBase'\nimport type { HeroContractProps } from '../contracts/HeroContract'\n\n/**\n * Skin untuk Hero Section.\n * Menggabungkan Base UI dengan styling (Tailwind/inline).\n * Depend pada Base UI + Tailwind (optional) + Contract (aturan 15).\n */\nexport const HeroSkin = (props: HeroContractProps & { theme: any }) => {\n const { theme, ...config } = props\n\n const sectionStyle: React.CSSProperties = {\n padding: '4rem 0',\n ...config.style,\n }\n\n const containerStyle: React.CSSProperties = {\n maxWidth: '1200px',\n margin: '0 auto',\n padding: '0 1rem',\n ...config.containerStyle,\n }\n\n const contentStyle: React.CSSProperties = {\n display: 'flex',\n flexDirection: 'column',\n gap: theme.spacing.xl,\n alignItems: config.alignment || 'center',\n textAlign: config.alignment || 'center',\n ...config.contentStyle,\n }\n\n return (\n <HeroBase\n {...config}\n theme={theme}\n style={sectionStyle}\n containerStyle={containerStyle}\n contentStyle={contentStyle}\n />\n )\n}","import React from 'react'\nimport type { HeroConfig } from '../../components/types'\nimport { HeroSkin } from './skins/HeroSkin'\n\n/**\n * Komponen Hero yang menggunakan arsitektur Skin.\n * Depend pada Skins + Modules (aturan 16).\n */\nconst Hero = ({ config, theme }: { config: HeroConfig; theme: any }) => {\n return (\n <HeroSkin\n {...config}\n theme={theme}\n />\n )\n}\n\nexport default Hero\n","import React from 'react'\nimport type { FeaturesContractProps } from '../contracts/FeaturesContract'\nimport { Container, Box, Flex } from './LayoutBase'\n\n/**\n * Base UI untuk Features Section.\n * Memisahkan struktur DOM dari styling.\n * Depend pada UI Contract (aturan 13).\n */\nexport const FeaturesBase = React.forwardRef<HTMLElement, FeaturesContractProps & { theme: any }>((props, ref) => {\n const { \n features, \n className, \n style, \n containerStyle, \n gridStyle, \n featureStyle, \n iconStyle, \n titleStyle, \n descriptionStyle,\n onFeatureMouseEnter,\n onFeatureMouseLeave,\n theme \n } = props\n\n return (\n <Box as=\"section\" ref={ref} className={className} style={style}>\n <Container style={containerStyle}>\n <Box style={gridStyle}>\n {features.map((feature) => (\n <Box\n key={feature.id}\n className={feature.className}\n style={featureStyle}\n onMouseEnter={onFeatureMouseEnter}\n onMouseLeave={onFeatureMouseLeave}\n >\n {feature.icon && <Box style={iconStyle}>{feature.icon}</Box>}\n <Box as=\"h3\" style={titleStyle}>\n {feature.title}\n </Box>\n <Box as=\"p\" style={descriptionStyle}>\n {feature.description}\n </Box>\n </Box>\n ))}\n </Box>\n </Container>\n </Box>\n )\n})\n\nFeaturesBase.displayName = 'FeaturesBase'\n","import React from 'react'\nimport { FeaturesBase } from '../base/FeaturesBase'\nimport type { FeaturesContractProps } from '../contracts/FeaturesContract'\n\n/**\n * Skin untuk Features Section.\n * Menggabungkan Base UI dengan styling (Tailwind/inline).\n * Depend pada Base UI + Tailwind (optional) + Contract (aturan 15).\n */\nexport const FeaturesSkin = (props: FeaturesContractProps & { theme: any }) => {\n const { theme, ...config } = props\n\n const sectionStyle: React.CSSProperties = {\n padding: '4rem 0',\n ...config.style,\n }\n\n const containerStyle: React.CSSProperties = {\n maxWidth: '1200px',\n margin: '0 auto',\n padding: '0 1rem',\n ...config.containerStyle,\n }\n\n const gridStyle: React.CSSProperties = {\n display: 'grid',\n gridTemplateColumns: 'repeat(auto-fit, minmax(300px, 1fr))',\n gap: theme.spacing.xl,\n ...config.gridStyle,\n }\n\n const featureStyle: React.CSSProperties = {\n padding: theme.spacing.lg,\n border: `1px solid ${theme.colors.muted}20`,\n borderRadius: '0.5rem',\n backgroundColor: theme.colors.background,\n boxShadow: '0 4px 6px -1px rgba(0, 0, 0, 0.1)',\n transition: 'transform 0.2s ease, box-shadow 0.2s ease',\n cursor: 'pointer',\n ...config.featureStyle,\n }\n\n const iconStyle: React.CSSProperties = {\n marginBottom: theme.spacing.md,\n ...config.iconStyle,\n }\n\n const titleStyle: React.CSSProperties = {\n fontSize: '1.5rem',\n marginBottom: theme.spacing.md,\n color: theme.colors.text,\n ...config.titleStyle,\n }\n\n const descriptionStyle: React.CSSProperties = {\n color: theme.colors.muted,\n lineHeight: '1.6',\n ...config.descriptionStyle,\n }\n\n const handleMouseEnter = (e: React.MouseEvent<HTMLDivElement>) => {\n e.currentTarget.style.transform = 'translateY(-4px)'\n e.currentTarget.style.boxShadow = '0 20px 25px -5px rgba(0, 0, 0, 0.1)'\n config.onFeatureMouseEnter?.(e)\n }\n\n const handleMouseLeave = (e: React.MouseEvent<HTMLDivElement>) => {\n e.currentTarget.style.transform = 'translateY(0)'\n e.currentTarget.style.boxShadow = '0 4px 6px -1px rgba(0, 0, 0, 0.1)'\n config.onFeatureMouseLeave?.(e)\n }\n\n return (\n <FeaturesBase\n {...config}\n theme={theme}\n style={sectionStyle}\n containerStyle={containerStyle}\n gridStyle={gridStyle}\n featureStyle={featureStyle}\n iconStyle={iconStyle}\n titleStyle={titleStyle}\n descriptionStyle={descriptionStyle}\n onFeatureMouseEnter={handleMouseEnter}\n onFeatureMouseLeave={handleMouseLeave}\n />\n )\n}\n","import React from 'react'\nimport type { FeatureConfig } from '../../components/types'\nimport { FeaturesSkin } from './skins/FeaturesSkin'\n\n/**\n * Komponen Features yang menggunakan arsitektur Skin.\n * Depend pada Skins + Modules (aturan 16).\n */\nconst Features = ({ config, theme }: { config: any; theme: any }) => {\n return (\n <FeaturesSkin\n {...config}\n theme={theme}\n />\n )\n}\n\nexport default Features\n","import React from 'react'\nimport type { TestimonialsContractProps } from '../contracts/TestimonialsContract'\nimport { Container, Box, Flex } from './LayoutBase'\n\n/**\n * Base UI untuk Testimonials Section.\n * Memisahkan struktur DOM dari styling.\n * Depend pada UI Contract (aturan 13).\n */\nexport const TestimonialsBase = React.forwardRef<HTMLElement, TestimonialsContractProps & { theme: any }>((props, ref) => {\n const { \n testimonials, \n className, \n style, \n containerStyle, \n gridStyle, \n testimonialStyle, \n quoteIconStyle, \n quoteStyle, \n authorContainerStyle, \n avatarStyle, \n authorInfoStyle, \n authorNameStyle, \n authorRoleStyle,\n onTestimonialMouseEnter,\n onTestimonialMouseLeave,\n theme \n } = props\n\n return (\n <Box as=\"section\" ref={ref} className={className} style={style}>\n <Container style={containerStyle}>\n <Box style={gridStyle}>\n {testimonials.map((testimonial) => (\n <Box\n key={testimonial.id}\n className={testimonial.className}\n style={testimonialStyle}\n onMouseEnter={onTestimonialMouseEnter}\n onMouseLeave={onTestimonialMouseLeave}\n >\n <Box style={quoteIconStyle}>\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke={theme.colors.primary}\n strokeWidth=\"2\"\n >\n <path d=\"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z\" />\n </svg>\n </Box>\n <Box as=\"blockquote\" style={quoteStyle}>\n {testimonial.quote}\n </Box>\n <Flex align=\"center\" gap={theme.spacing.md} style={authorContainerStyle}>\n {testimonial.avatar && (\n <img\n src={testimonial.avatar}\n alt={testimonial.author}\n style={avatarStyle}\n loading=\"lazy\"\n />\n )}\n <Box style={authorInfoStyle}>\n <Box as=\"p\" style={authorNameStyle}>{testimonial.author}</Box>\n {testimonial.role && <Box as=\"p\" style={authorRoleStyle}>{testimonial.role}</Box>}\n </Box>\n </Flex>\n </Box>\n ))}\n </Box>\n </Container>\n </Box>\n )\n})\n\nTestimonialsBase.displayName = 'TestimonialsBase'\n","import React from 'react'\nimport { TestimonialsBase } from '../base/TestimonialsBase'\nimport type { TestimonialsContractProps } from '../contracts/TestimonialsContract'\n\n/**\n * Skin untuk Testimonials Section.\n * Menggabungkan Base UI dengan styling (Tailwind/inline).\n * Depend pada Base UI + Tailwind (optional) + Contract (aturan 15).\n */\nexport const TestimonialsSkin = (props: TestimonialsContractProps & { theme: any }) => {\n const { theme, ...config } = props\n\n const sectionStyle: React.CSSProperties = {\n padding: '4rem 0',\n ...config.style,\n }\n\n const containerStyle: React.CSSProperties = {\n maxWidth: '1200px',\n margin: '0 auto',\n padding: '0 1rem',\n ...config.containerStyle,\n }\n\n const gridStyle: React.CSSProperties = {\n display: 'grid',\n gridTemplateColumns: 'repeat(auto-fit, minmax(300px, 1fr))',\n gap: theme.spacing.xl,\n ...config.gridStyle,\n }\n\n const testimonialStyle: React.CSSProperties = {\n padding: theme.spacing.lg,\n backgroundColor: theme.colors.background,\n border: `1px solid ${theme.colors.muted}20`,\n borderRadius: '0.5rem',\n boxShadow: '0 4px 6px -1px rgba(0, 0, 0, 0.1)',\n transition: 'transform 0.2s ease, box-shadow 0.2s ease',\n cursor: 'pointer',\n ...config.testimonialStyle,\n }\n\n const quoteIconStyle: React.CSSProperties = {\n marginBottom: theme.spacing.md,\n ...config.quoteIconStyle,\n }\n\n const quoteStyle: React.CSSProperties = {\n fontSize: '1.125rem',\n fontStyle: 'italic',\n color: theme.colors.text,\n ...config.quoteStyle,\n }\n\n const authorContainerStyle: React.CSSProperties = {\n marginTop: theme.spacing.md,\n ...config.authorContainerStyle,\n }\n\n const avatarStyle: React.CSSProperties = {\n width: '48px',\n height: '48px',\n borderRadius: '50%',\n objectFit: 'cover',\n ...config.avatarStyle,\n }\n\n const authorInfoStyle: React.CSSProperties = {\n ...config.authorInfoStyle,\n }\n\n const authorNameStyle: React.CSSProperties = {\n fontWeight: 'bold',\n color: theme.colors.text,\n ...config.authorNameStyle,\n }\n\n const authorRoleStyle: React.CSSProperties = {\n fontSize: '0.875rem',\n color: theme.colors.muted,\n ...config.authorRoleStyle,\n }\n\n const handleMouseEnter = (e: React.MouseEvent<HTMLDivElement>) => {\n e.currentTarget.style.transform = 'translateY(-4px)'\n e.currentTarget.style.boxShadow = '0 20px 25px -5px rgba(0, 0, 0, 0.1)'\n config.onTestimonialMouseEnter?.(e)\n }\n\n const handleMouseLeave = (e: React.MouseEvent<HTMLDivElement>) => {\n e.currentTarget.style.transform = 'translateY(0)'\n e.currentTarget.style.boxShadow = '0 4px 6px -1px rgba(0, 0, 0, 0.1)'\n config.onTestimonialMouseLeave?.(e)\n }\n\n return (\n <TestimonialsBase\n {...config}\n theme={theme}\n style={sectionStyle}\n containerStyle={containerStyle}\n gridStyle={gridStyle}\n testimonialStyle={testimonialStyle}\n quoteIconStyle={quoteIconStyle}\n quoteStyle={quoteStyle}\n authorContainerStyle={authorContainerStyle}\n avatarStyle={avatarStyle}\n authorInfoStyle={authorInfoStyle}\n authorNameStyle={authorNameStyle}\n authorRoleStyle={authorRoleStyle}\n onTestimonialMouseEnter={handleMouseEnter}\n onTestimonialMouseLeave={handleMouseLeave}\n />\n )\n}\n","import React from 'react'\nimport type { TestimonialConfig } from '../../components/types'\nimport { TestimonialsSkin } from './skins/TestimonialsSkin'\n\n/**\n * Komponen Testimonials yang menggunakan arsitektur Skin.\n * Depend pada Skins + Modules (aturan 16).\n */\nconst Testimonials = ({ config, theme }: { config: any; theme: any }) => {\n return (\n <TestimonialsSkin\n {...config}\n theme={theme}\n />\n )\n}\n\nexport default Testimonials\n","import React from 'react'\nimport type { PricingContractProps } from '../contracts/PricingContract'\nimport { Container, Box, Flex } from './LayoutBase'\nimport Button from '../Button'\n\n/**\n * Base UI untuk Pricing Section.\n * Memisahkan struktur DOM dari styling.\n * Depend pada UI Contract (aturan 13).\n */\nexport const PricingBase = React.forwardRef<HTMLElement, PricingContractProps & { theme: any }>((props, ref) => {\n const { \n plans, \n className, \n style, \n containerStyle, \n gridStyle, \n planStyle, \n featuredBadgeStyle, \n titleStyle, \n descriptionStyle, \n priceContainerStyle, \n priceStyle, \n periodStyle, \n featuresListStyle, \n featureItemStyle, \n checkIcon,\n theme \n } = props\n\n return (\n <Box as=\"section\" ref={ref} className={className} style={style}>\n <Container style={containerStyle}>\n <Box style={gridStyle}>\n {plans.map((plan) => (\n <Box\n key={plan.id}\n className={plan.className}\n style={typeof planStyle === 'function' ? planStyle(plan) : planStyle}\n >\n {plan.featured && (\n <Box style={featuredBadgeStyle}>\n Popular\n </Box>\n )}\n <Box as=\"h3\" style={titleStyle}>\n {plan.title}\n </Box>\n <Box as=\"p\" style={descriptionStyle}>{plan.description}</Box>\n <Box style={priceContainerStyle}>\n <Box as=\"span\" style={priceStyle}>\n {plan.price}\n </Box>\n {plan.period && <Box as=\"span\" style={periodStyle}>/{plan.period}</Box>}\n </Box>\n <Box as=\"ul\" style={featuresListStyle}>\n {plan.features.map((feature, index) => (\n <Box as=\"li\" key={index} style={featureItemStyle}>\n {checkIcon || (\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke={theme.colors.accent}\n strokeWidth=\"2\"\n >\n <path d=\"M22 11.08V12a10 10 0 1 1-5.93-9.14\" />\n <polyline points=\"22 4 12 14.01 9 11.01\" />\n </svg>\n )}\n {feature}\n </Box>\n ))}\n </Box>\n <Button config={plan.button} theme={theme} />\n </Box>\n ))}\n </Box>\n </Container>\n </Box>\n )\n})\n\nPricingBase.displayName = 'PricingBase'\n","import React from 'react'\nimport { PricingBase } from '../base/PricingBase'\nimport type { PricingContractProps } from '../contracts/PricingContract'\n\n/**\n * Skin untuk Pricing Section.\n * Menggabungkan Base UI dengan styling (Tailwind/inline).\n * Depend pada Base UI + Tailwind (optional) + Contract (aturan 15).\n */\nexport const PricingSkin = (props: PricingContractProps & { theme: any }) => {\n const { theme, ...config } = props\n\n const sectionStyle: React.CSSProperties = {\n padding: '4rem 0',\n ...config.style,\n }\n\n const containerStyle: React.CSSProperties = {\n maxWidth: '1200px',\n margin: '0 auto',\n padding: '0 1rem',\n ...config.containerStyle,\n }\n\n const gridStyle: React.CSSProperties = {\n display: 'grid',\n gridTemplateColumns: 'repeat(auto-fit, minmax(280px, 1fr))',\n gap: theme.spacing.xl,\n maxWidth: '1000px',\n margin: '0 auto',\n ...config.gridStyle,\n }\n\n const planStyle = (plan: any): React.CSSProperties => ({\n padding: theme.spacing.lg,\n backgroundColor: theme.colors.background,\n border: `2px solid ${plan.featured ? theme.colors.primary : `${theme.colors.muted}20`}`,\n borderRadius: '0.5rem',\n boxShadow: plan.featured ? '0 20px 25px -5px rgba(0, 0, 0, 0.1)' : '0 4px 6px -1px rgba(0, 0, 0, 0.1)',\n position: 'relative',\n display: 'flex',\n flexDirection: 'column',\n ...config.planStyle?.(plan),\n })\n\n const featuredBadgeStyle: React.CSSProperties = {\n position: 'absolute',\n top: '-12px',\n left: '50%',\n transform: 'translateX(-50%)',\n backgroundColor: theme.colors.primary,\n color: '#ffffff',\n padding: '0.25rem 0.75rem',\n borderRadius: '9999px',\n fontSize: '0.75rem',\n fontWeight: 'bold',\n ...config.featuredBadgeStyle,\n }\n\n const titleStyle: React.CSSProperties = {\n fontSize: '1.5rem',\n marginBottom: theme.spacing.md,\n color: theme.colors.text,\n ...config.titleStyle,\n }\n\n const descriptionStyle: React.CSSProperties = {\n color: theme.colors.muted,\n marginBottom: theme.spacing.md,\n ...config.descriptionStyle,\n }\n\n const priceContainerStyle: React.CSSProperties = {\n marginBottom: theme.spacing.lg,\n ...config.priceContainerStyle,\n }\n\n const priceStyle: React.CSSProperties = {\n fontSize: '3rem',\n fontWeight: 'bold',\n color: theme.colors.text,\n ...config.priceStyle,\n }\n\n const periodStyle: React.CSSProperties = {\n color: theme.colors.muted,\n ...config.periodStyle,\n }\n\n const featuresListStyle: React.CSSProperties = {\n marginBottom: theme.spacing.lg,\n listStyle: 'none',\n padding: 0,\n flex: 1,\n ...config.featuresListStyle,\n }\n\n const featureItemStyle: React.CSSProperties = {\n padding: `${theme.spacing.sm} 0`,\n color: theme.colors.text,\n display: 'flex',\n alignItems: 'center',\n gap: theme.spacing.sm,\n ...config.featureItemStyle,\n }\n\n return (\n <PricingBase\n {...config}\n theme={theme}\n style={sectionStyle}\n containerStyle={containerStyle}\n gridStyle={gridStyle}\n planStyle={planStyle}\n featuredBadgeStyle={featuredBadgeStyle}\n titleStyle={titleStyle}\n descriptionStyle={descriptionStyle}\n priceContainerStyle={priceContainerStyle}\n priceStyle={priceStyle}\n periodStyle={periodStyle}\n featuresListStyle={featuresListStyle}\n featureItemStyle={featureItemStyle}\n />\n )\n}\n","import React from 'react'\nimport type { PricingConfig } from '../../components/types'\nimport { PricingSkin } from './skins/PricingSkin'\n\n/**\n * Komponen Pricing yang menggunakan arsitektur Skin.\n * Depend pada Skins + Modules (aturan 16).\n */\nconst Pricing = ({ config, theme }: { config: PricingConfig; theme: any }) => {\n return (\n <PricingSkin\n {...config}\n theme={theme}\n />\n )\n}\n\nexport default Pricing\n","import React from 'react'\nimport type { CtaContractProps } from '../contracts/CtaContract'\nimport Button from '../Button'\nimport { Container, Box } from './LayoutBase'\nimport type { ThemeConfig } from '../../../core/types'\n\n/**\n * Base UI untuk Cta Section.\n * Memisahkan struktur DOM dari styling.\n * Depend pada UI Contract (aturan 13).\n */\nexport const CtaBase = React.forwardRef<HTMLElement, CtaContractProps & { theme: ThemeConfig }>((props, ref) => {\n const { \n title, \n description, \n button, \n image, \n className, \n style, \n containerStyle, \n contentStyle,\n theme \n } = props\n\n return (\n <Box as=\"section\" ref={ref} className={className} style={style}>\n <Container style={containerStyle}>\n <Box style={contentStyle}>\n <h2 style={{ fontSize: '2rem', marginBottom: theme.spacing.md }}>{title}</h2>\n <p style={{ \n fontSize: '1.125rem', \n marginBottom: theme.spacing.lg, \n maxWidth: '600px', \n marginLeft: 'auto', \n marginRight: 'auto' \n }}>\n {description}\n </p>\n <Button config={button} theme={theme} />\n </Box>\n </Container>\n </Box>\n )\n})\n\nCtaBase.displayName = 'CtaBase'\n","import React from 'react'\nimport { CtaBase } from '../base/CtaBase'\nimport type { CtaContractProps } from '../contracts/CtaContract'\nimport { getBestContrastColor } from '../../../core/utils/contrast'\n\n/**\n * Skin untuk Cta Section.\n * Menggabungkan Base UI dengan styling (Tailwind/inline).\n * Depend pada Base UI + Tailwind (optional) + Contract (aturan 15).\n */\nexport const CtaSkin = (props: CtaContractProps & { theme: any }) => {\n const { theme, ...config } = props\n\n // Gunakan primary color dari theme atau config jika ada\n const backgroundColor = theme.colors.primary\n \n // Pilih warna teks terbaik berdasarkan background (otomatis hitam atau putih)\n const textColor = getBestContrastColor(backgroundColor)\n\n const sectionStyle: React.CSSProperties = {\n padding: '4rem 0',\n ...config.style,\n }\n\n const containerStyle: React.CSSProperties = {\n maxWidth: '1200px',\n margin: '0 auto',\n padding: '0 1rem',\n ...config.containerStyle,\n }\n\n const contentStyle: React.CSSProperties = {\n textAlign: 'center',\n padding: '4rem 2rem',\n backgroundColor: backgroundColor,\n color: textColor,\n borderRadius: '0.5rem',\n ...config.contentStyle,\n }\n\n // Modifikasi config tombol agar kontras dengan background CTA\n // Jika background CTA adalah primary, dan tombol aslinya primary (solid), \n // maka ubah varian tombol menjadi outline dengan warna teks yang kontras.\n const buttonConfig = {\n ...config.button,\n variant: config.button.variant === 'primary' ? 'outline' : config.button.variant\n }\n\n // Kirim theme khusus ke tombol agar warna outline-nya kontras dengan background CTA\n const buttonTheme = {\n ...theme,\n colors: {\n ...theme.colors,\n primary: textColor, // Warna outline tombol mengikuti warna teks CTA yang kontras\n text: backgroundColor // Warna teks saat hover tombol mengikuti warna background CTA\n }\n }\n\n return (\n <CtaBase\n {...config}\n button={buttonConfig}\n theme={buttonTheme}\n style={sectionStyle}\n containerStyle={containerStyle}\n contentStyle={contentStyle}\n />\n )\n}\n","import React from 'react'\nimport type { CtaConfig } from '../../components/types'\nimport { CtaSkin } from './skins/CtaSkin'\n\n/**\n * Komponen Cta yang menggunakan arsitektur Skin.\n * Depend pada Skins + Modules (aturan 16).\n */\nconst Cta = ({ config, theme }: { config: CtaConfig; theme: any }) => {\n return (\n <CtaSkin\n {...config}\n theme={theme}\n />\n )\n}\n\nexport default Cta\n","import React from 'react'\nimport type { FooterContractProps } from '../contracts/FooterContract'\nimport { Container, Box, Flex } from './LayoutBase'\n\n/**\n * Base UI untuk Footer Section.\n * Memisahkan struktur DOM dari styling.\n * Depend pada UI Contract (aturan 13).\n */\nexport const FooterBase = React.forwardRef<HTMLElement, FooterContractProps & { theme: any }>((props, ref) => {\n const { \n logo, \n title, \n description, \n links, \n socialLinks, \n copyright, \n className, \n style, \n containerStyle, \n gridStyle, \n columnStyle, \n linkStyle,\n onLinkMouseEnter,\n onLinkMouseLeave,\n theme \n } = props\n\n return (\n <Box as=\"footer\" ref={ref} className={className} style={style}>\n <Container style={containerStyle}>\n <Box style={gridStyle}>\n <Box style={columnStyle}>\n {logo && <img src={logo} alt={title || 'Logo'} style={{ marginBottom: theme.spacing.md }} loading=\"lazy\" />}\n {title && (\n <Box as=\"h3\" style={{ fontSize: '1.25rem', marginBottom: theme.spacing.md, color: theme.colors.text }}>\n {title}\n </Box>\n )}\n {description && <Box as=\"p\" style={{ color: theme.colors.muted, lineHeight: '1.6' }}>{description}</Box>}\n </Box>\n \n {links.map((linkGroup) => (\n <Box key={linkGroup.title} style={columnStyle}>\n <Box as=\"h4\" style={{ marginBottom: theme.spacing.md, color: theme.colors.text }}>{linkGroup.title}</Box>\n <Box as=\"ul\" style={{ listStyle: 'none', padding: 0 }}>\n {linkGroup.items.map((link, index) => (\n <Box as=\"li\" key={index} style={{ marginBottom: theme.spacing.sm }}>\n <a\n href={link.url}\n target={link.target || '_self'}\n rel={link.target === '_blank' ? 'noopener noreferrer' : undefined}\n style={linkStyle}\n onMouseEnter={onLinkMouseEnter}\n onMouseLeave={onLinkMouseLeave}\n >\n {link.text}\n </a>\n </Box>\n ))}\n </Box>\n </Box>\n ))}\n </Box>\n\n {copyright && (\n <Box style={{ marginTop: '4rem', paddingTop: '2rem', borderTop: `1px solid ${theme.colors.muted}20`, textAlign: 'center' }}>\n <Box as=\"p\" style={{ color: theme.colors.muted }}>{copyright}</Box>\n </Box>\n )}\n </Container>\n </Box>\n )\n})\n\nFooterBase.displayName = 'FooterBase'\n","import React from 'react'\nimport { FooterBase } from '../base/FooterBase'\nimport type { FooterContractProps } from '../contracts/FooterContract'\n\n/**\n * Skin untuk Footer Section.\n * Menggabungkan Base UI dengan styling (Tailwind/inline).\n * Depend pada Base UI + Tailwind (optional) + Contract (aturan 15).\n */\nexport const FooterSkin = (props: FooterContractProps & { theme: any }) => {\n const { theme, ...config } = props\n\n const sectionStyle: React.CSSProperties = {\n padding: '4rem 0',\n backgroundColor: theme.colors.background,\n borderTop: `1px solid ${theme.colors.muted}20`,\n ...config.style,\n }\n\n const containerStyle: React.CSSProperties = {\n maxWidth: '1200px',\n margin: '0 auto',\n padding: '0 1rem',\n ...config.containerStyle,\n }\n\n const gridStyle: React.CSSProperties = {\n display: 'grid',\n gridTemplateColumns: 'repeat(auto-fit, minmax(250px, 1fr))',\n gap: theme.spacing.xl,\n marginBottom: theme.spacing.lg,\n ...config.gridStyle,\n }\n\n const columnStyle: React.CSSProperties = {\n ...config.columnStyle,\n }\n\n const linkStyle: React.CSSProperties = {\n color: theme.colors.muted,\n textDecoration: 'none',\n transition: 'color 0.2s ease',\n ...config.linkStyle,\n }\n\n const handleMouseEnter = (e: React.MouseEvent<HTMLAnchorElement>) => {\n e.currentTarget.style.color = theme.colors.primary\n config.onLinkMouseEnter?.(e)\n }\n\n const handleMouseLeave = (e: React.MouseEvent<HTMLAnchorElement>) => {\n e.currentTarget.style.color = theme.colors.muted\n config.onLinkMouseLeave?.(e)\n }\n\n return (\n <FooterBase\n {...config}\n theme={theme}\n style={sectionStyle}\n containerStyle={containerStyle}\n gridStyle={gridStyle}\n columnStyle={columnStyle}\n linkStyle={linkStyle}\n onLinkMouseEnter={handleMouseEnter}\n onLinkMouseLeave={handleMouseLeave}\n />\n )\n}\n","import React from 'react'\nimport type { FooterConfig } from '../../components/types'\nimport { FooterSkin } from './skins/FooterSkin'\n\n/**\n * Komponen Footer yang menggunakan arsitektur Skin.\n * Depend pada Skins + Modules (aturan 16).\n */\nconst Footer = ({ config, theme }: { config: FooterConfig; theme: any }) => {\n return (\n <FooterSkin\n {...config}\n theme={theme}\n />\n )\n}\n\nexport default Footer\n","import React from 'react'\nimport type { StatsContractProps } from '../contracts/StatsContract'\nimport { Container, Box, Flex } from './LayoutBase'\n\n/**\n * Base UI untuk Stats Section.\n * Memisahkan struktur DOM dari styling.\n * Depend pada UI Contract (aturan 13).\n */\nexport const StatsBase = React.forwardRef<HTMLElement, StatsContractProps & { theme: any }>((props, ref) => {\n const { \n stats, \n className, \n style, \n containerStyle, \n gridStyle, \n statStyle, \n iconStyle, \n numberContainerStyle, \n numberStyle, \n labelStyle, \n theme \n } = props\n\n return (\n <Box as=\"section\" ref={ref} className={className} style={style}>\n <Container style={containerStyle}>\n <Box style={gridStyle}>\n {stats.map((stat) => (\n <Box key={stat.id} className={stat.className} style={statStyle}>\n {stat.icon && <Box style={iconStyle}>{stat.icon}</Box>}\n <Box style={numberContainerStyle}>\n {stat.prefix && <Box as=\"span\" style={numberStyle}>{stat.prefix}</Box>}\n <Box as=\"span\" style={numberStyle}>{stat.number}</Box>\n {stat.suffix && <Box as=\"span\" style={numberStyle}>{stat.suffix}</Box>}\n </Box>\n <Box as=\"p\" style={labelStyle}>{stat.label}</Box>\n </Box>\n ))}\n </Box>\n </Container>\n </Box>\n )\n})\n\nStatsBase.displayName = 'StatsBase'\n","import React from 'react'\nimport { StatsBase } from '../base/StatsBase'\nimport type { StatsContractProps } from '../contracts/StatsContract'\n\n/**\n * Skin untuk Stats Section.\n * Menggabungkan Base UI dengan styling (Tailwind/inline).\n * Depend pada Base UI + Tailwind (optional) + Contract (aturan 15).\n */\nexport const StatsSkin = (props: StatsContractProps & { theme: any }) => {\n const { theme, ...config } = props\n\n const sectionStyle: React.CSSProperties = {\n padding: '4rem 0',\n ...config.style,\n }\n\n const containerStyle: React.CSSProperties = {\n maxWidth: '1200px',\n margin: '0 auto',\n padding: '0 1rem',\n ...config.containerStyle,\n }\n\n const gridStyle: React.CSSProperties = {\n display: 'grid',\n gridTemplateColumns: 'repeat(auto-fit, minmax(250px, 1fr))',\n gap: theme.spacing.xl,\n textAlign: 'center',\n ...config.gridStyle,\n }\n\n const statStyle: React.CSSProperties = {\n padding: theme.spacing.lg,\n borderRadius: '0.5rem',\n backgroundColor: theme.colors.background,\n ...config.statStyle,\n }\n\n const iconStyle: React.CSSProperties = {\n fontSize: '2rem',\n marginBottom: theme.spacing.md,\n ...config.iconStyle,\n }\n\n const numberContainerStyle: React.CSSProperties = {\n marginBottom: theme.spacing.sm,\n ...config.numberContainerStyle,\n }\n\n const numberStyle: React.CSSProperties = {\n fontSize: '3rem',\n fontWeight: 'bold',\n color: theme.colors.primary,\n ...config.numberStyle,\n }\n\n const labelStyle: React.CSSProperties = {\n fontSize: '1.125rem',\n color: theme.colors.muted,\n ...config.labelStyle,\n }\n\n return (\n <StatsBase\n {...config}\n theme={theme}\n style={sectionStyle}\n containerStyle={containerStyle}\n gridStyle={gridStyle}\n statStyle={statStyle}\n iconStyle={iconStyle}\n numberContainerStyle={numberContainerStyle}\n numberStyle={numberStyle}\n labelStyle={labelStyle}\n />\n )\n}\n","import React from 'react'\nimport type { StatConfig } from '../../components/types'\nimport { StatsSkin } from './skins/StatsSkin'\n\n/**\n * Komponen Stats yang menggunakan arsitektur Skin.\n * Depend pada Skins + Modules (aturan 16).\n */\nconst Stats = ({ config, theme }: { config: { stats: StatConfig[]; className?: string }; theme: any }) => {\n return (\n <StatsSkin\n {...config}\n theme={theme}\n />\n )\n}\n\nexport default Stats\n","import React from 'react'\nimport type { FaqContractProps } from '../contracts/FaqContract'\nimport { Container, Box } from './LayoutBase'\n\n/**\n * Base UI untuk Faq Section.\n * Memisahkan struktur DOM dari styling.\n * Depend pada UI Contract (aturan 13).\n */\nexport const FaqBase = React.forwardRef<HTMLElement, FaqContractProps & { theme: any }>((props, ref) => {\n const { \n items, \n className, \n style, \n containerStyle, \n itemStyle, \n questionStyle, \n answerStyle, \n theme \n } = props\n\n return (\n <Box as=\"section\" ref={ref} className={className} style={style}>\n <Container style={containerStyle}>\n <Box style={{ maxWidth: '800px', margin: '0 auto' }}>\n {items.map((item) => (\n <Box key={item.id} style={itemStyle}>\n <details style={{ padding: theme.spacing.md }}>\n <summary style={questionStyle}>\n {item.question}\n </summary>\n <p style={answerStyle}>\n {item.answer}\n </p>\n </details>\n </Box>\n ))}\n </Box>\n </Container>\n </Box>\n )\n})\n\nFaqBase.displayName = 'FaqBase'\n","import React from 'react'\nimport { FaqBase } from '../base/FaqBase'\nimport type { FaqContractProps } from '../contracts/FaqContract'\n\n/**\n * Skin untuk Faq Section.\n * Menggabungkan Base UI dengan styling (Tailwind/inline).\n * Depend pada Base UI + Tailwind (optional) + Contract (aturan 15).\n */\nexport const FaqSkin = (props: FaqContractProps & { theme: any }) => {\n const { theme, ...config } = props\n\n const sectionStyle: React.CSSProperties = {\n padding: '4rem 0',\n ...config.style,\n }\n\n const containerStyle: React.CSSProperties = {\n maxWidth: '1200px',\n margin: '0 auto',\n padding: '0 1rem',\n ...config.containerStyle,\n }\n\n const itemStyle: React.CSSProperties = {\n marginBottom: theme.spacing.lg,\n border: `1px solid ${theme.colors.muted}20`,\n borderRadius: '0.5rem',\n overflow: 'hidden',\n ...config.itemStyle,\n }\n\n const questionStyle: React.CSSProperties = {\n fontSize: '1.125rem',\n fontWeight: 'bold',\n color: theme.colors.text,\n cursor: 'pointer',\n listStyle: 'none',\n ...config.questionStyle,\n }\n\n const answerStyle: React.CSSProperties = {\n marginTop: theme.spacing.md,\n color: theme.colors.muted,\n lineHeight: '1.6',\n ...config.answerStyle,\n }\n\n return (\n <FaqBase\n {...config}\n theme={theme}\n style={sectionStyle}\n containerStyle={containerStyle}\n itemStyle={itemStyle}\n questionStyle={questionStyle}\n answerStyle={answerStyle}\n />\n )\n}\n","import React from 'react'\nimport type { FaqConfig } from '../../components/types'\nimport { FaqSkin } from './skins/FaqSkin'\n\n/**\n * Komponen Faq yang menggunakan arsitektur Skin.\n * Depend pada Skins + Modules (aturan 16).\n */\nconst Faq = ({ config, theme }: { config: FaqConfig; theme: any }) => {\n return (\n <FaqSkin\n {...config}\n theme={theme}\n />\n )\n}\n\nexport default Faq\n"],"mappings":"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","names":["validateSection","Ajv","addFormats","validateSection","validateSection","import_react","import_react","import_react","import_react","React","import_jsx_runtime","React","import_jsx_runtime","import_jsx_runtime","import_react","import_jsx_runtime","React","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","React","import_jsx_runtime","import_jsx_runtime","import_react","import_react","import_jsx_runtime","React","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","React","import_jsx_runtime","import_jsx_runtime","import_react","import_jsx_runtime","React","import_jsx_runtime","import_jsx_runtime","import_react","import_jsx_runtime","React","import_jsx_runtime","import_jsx_runtime","import_react","import_jsx_runtime","React","import_jsx_runtime","import_jsx_runtime","import_react","import_jsx_runtime","React","import_jsx_runtime","import_jsx_runtime","import_react","import_jsx_runtime","React","import_jsx_runtime","import_jsx_runtime","import_react","import_jsx_runtime","React","import_jsx_runtime","import_jsx_runtime","import_react","import_jsx_runtime","React","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","React"]}