- Add new libraries: ui-accessibility, ui-animations, ui-backgrounds, ui-code-display, ui-data-utils, ui-font-manager, hcl-studio - Add extensive layout components: gallery-grid, infinite-scroll-container, kanban-board, masonry, split-view, sticky-layout - Add comprehensive demo components for all new features - Update project configuration and dependencies - Expand component exports and routing structure - Add UI landing pages planning document 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
942 lines
22 KiB
Markdown
942 lines
22 KiB
Markdown
# UI Landing Pages Library Implementation Plan
|
|
|
|
## Executive Summary
|
|
|
|
This document outlines the implementation strategy for creating a comprehensive `ui-landing-pages` library within the SSuite Angular workspace. The library will provide production-ready components specifically designed for building modern websites and landing pages, integrating seamlessly with existing libraries: `ui-design-system`, `ui-essentials`, `ui-animations`, and `shared-utils`.
|
|
|
|
## Architecture Overview
|
|
|
|
### Library Structure
|
|
```
|
|
projects/ui-landing-pages/
|
|
├── src/
|
|
│ ├── lib/
|
|
│ │ ├── components/
|
|
│ │ │ ├── heroes/ # Hero section components
|
|
│ │ │ ├── features/ # Feature showcase components
|
|
│ │ │ ├── social-proof/ # Testimonials, logos, stats
|
|
│ │ │ ├── conversion/ # CTAs, pricing, forms
|
|
│ │ │ ├── navigation/ # Headers, menus, footers
|
|
│ │ │ ├── content/ # FAQ, team, timeline
|
|
│ │ │ └── templates/ # Complete page templates
|
|
│ │ ├── services/ # Landing page utilities
|
|
│ │ ├── interfaces/ # TypeScript interfaces
|
|
│ │ └── styles/ # Component-specific styles
|
|
│ ├── public-api.ts
|
|
│ └── test.ts
|
|
├── ng-package.json
|
|
├── package.json
|
|
├── tsconfig.lib.json
|
|
└── README.md
|
|
```
|
|
|
|
### Design System Integration
|
|
|
|
#### Typography (Google Fonts)
|
|
- **Primary Font**: Inter (headings, UI elements)
|
|
- **Secondary Font**: Source Sans Pro (body text)
|
|
- **Accent Font**: Roboto Mono (code, technical content)
|
|
|
|
#### Design Token Usage
|
|
```scss
|
|
// Import design system tokens
|
|
@use 'ui-design-system/src/styles/tokens' as tokens;
|
|
|
|
.hero-section {
|
|
padding: tokens.$spacing-section-large tokens.$spacing-container;
|
|
background: tokens.$color-surface-primary;
|
|
|
|
.hero-title {
|
|
font-family: tokens.$font-family-heading;
|
|
font-size: tokens.$font-size-display-large;
|
|
color: tokens.$color-text-primary;
|
|
margin-bottom: tokens.$spacing-content-medium;
|
|
}
|
|
}
|
|
```
|
|
|
|
#### Spacing Hierarchy
|
|
- **Section Padding**: `$spacing-section-large` (96px), `$spacing-section-medium` (64px)
|
|
- **Content Spacing**: `$spacing-content-large` (48px), `$spacing-content-medium` (32px)
|
|
- **Element Spacing**: `$spacing-element-large` (24px), `$spacing-element-medium` (16px)
|
|
|
|
## Implementation Phases
|
|
|
|
---
|
|
|
|
## Phase 1: Foundation & Hero Components
|
|
|
|
### Objective
|
|
Establish library foundation and implement essential hero section components.
|
|
|
|
### Timeline: 2-3 weeks
|
|
|
|
### Components to Implement
|
|
|
|
#### 1.1 HeroSection Component
|
|
```typescript
|
|
interface HeroSectionConfig {
|
|
title: string;
|
|
subtitle?: string;
|
|
ctaPrimary?: CTAButton;
|
|
ctaSecondary?: CTAButton;
|
|
backgroundType?: 'solid' | 'gradient' | 'image' | 'video';
|
|
alignment?: 'left' | 'center' | 'right';
|
|
}
|
|
```
|
|
|
|
**Features:**
|
|
- Responsive typography scaling
|
|
- Multiple background options
|
|
- Flexible CTA button layout
|
|
- Integration with ui-animations for entrance effects
|
|
|
|
#### 1.2 HeroWithImage Component
|
|
```typescript
|
|
interface HeroWithImageConfig extends HeroSectionConfig {
|
|
image: {
|
|
src: string;
|
|
alt: string;
|
|
position: 'left' | 'right' | 'background';
|
|
};
|
|
layout: 'split' | 'overlay' | 'background';
|
|
}
|
|
```
|
|
|
|
**Features:**
|
|
- 50/50 split layouts
|
|
- Image overlay with opacity controls
|
|
- Lazy loading integration
|
|
- Responsive image handling
|
|
|
|
#### 1.3 HeroSplitScreen Component
|
|
```typescript
|
|
interface HeroSplitScreenConfig {
|
|
leftContent: HeroContent;
|
|
rightContent: HeroContent | MediaContent;
|
|
verticalAlignment?: 'top' | 'center' | 'bottom';
|
|
reverseOnMobile?: boolean;
|
|
}
|
|
```
|
|
|
|
**Features:**
|
|
- Equal split responsive layout
|
|
- Content/media combinations
|
|
- Mobile stacking options
|
|
- Vertical alignment controls
|
|
|
|
### Integration Requirements
|
|
|
|
#### UI Essentials Integration
|
|
```typescript
|
|
import { ButtonComponent } from 'ui-essentials';
|
|
import { ContainerComponent } from 'ui-essentials';
|
|
import { FlexComponent } from 'ui-essentials';
|
|
|
|
// Use existing button component for CTAs
|
|
@Component({
|
|
template: `
|
|
<ui-container [maxWidth]="'xl'" [padding]="'large'">
|
|
<ui-flex [direction]="'column'" [gap]="'large'">
|
|
<!-- Hero content -->
|
|
<ui-button
|
|
[variant]="ctaPrimary.variant"
|
|
[size]="'large'"
|
|
(click)="ctaPrimary.action()">
|
|
{{ ctaPrimary.text }}
|
|
</ui-button>
|
|
</ui-flex>
|
|
</ui-container>
|
|
`
|
|
})
|
|
```
|
|
|
|
#### Design System Integration
|
|
```scss
|
|
@use 'ui-design-system/src/styles/tokens' as tokens;
|
|
@use 'ui-design-system/src/styles/mixins' as mixins;
|
|
|
|
.hero-section {
|
|
@include mixins.section-padding();
|
|
background: linear-gradient(
|
|
135deg,
|
|
tokens.$color-primary-500,
|
|
tokens.$color-primary-700
|
|
);
|
|
|
|
&__title {
|
|
@include mixins.typography-display-large();
|
|
color: tokens.$color-text-on-primary;
|
|
margin-bottom: tokens.$spacing-content-medium;
|
|
}
|
|
|
|
&__subtitle {
|
|
@include mixins.typography-body-large();
|
|
color: tokens.$color-text-on-primary-muted;
|
|
}
|
|
}
|
|
```
|
|
|
|
### Demo Implementation
|
|
- Create `hero-sections-demo` component
|
|
- Showcase all hero variants
|
|
- Include interactive configuration panel
|
|
- Demonstrate responsive behavior
|
|
|
|
### Deliverables
|
|
1. Library project structure
|
|
2. Three hero components with full functionality
|
|
3. Comprehensive demo page
|
|
4. Unit tests for all components
|
|
5. Documentation with usage examples
|
|
|
|
---
|
|
|
|
## Phase 2: Feature Sections & Social Proof
|
|
|
|
### Objective
|
|
Build components for showcasing product features and establishing credibility.
|
|
|
|
### Timeline: 3-4 weeks
|
|
|
|
### Components to Implement
|
|
|
|
#### 2.1 FeatureGrid Component
|
|
```typescript
|
|
interface FeatureGridConfig {
|
|
features: FeatureItem[];
|
|
columns: 2 | 3 | 4;
|
|
iconStyle: 'outline' | 'filled' | 'duotone';
|
|
layout: 'card' | 'minimal' | 'centered';
|
|
}
|
|
|
|
interface FeatureItem {
|
|
icon: string; // FontAwesome icon name
|
|
title: string;
|
|
description: string;
|
|
link?: { text: string; url: string; };
|
|
}
|
|
```
|
|
|
|
**Integration:**
|
|
- Use `ui-essentials` Card component as base
|
|
- Apply `ui-design-system` grid system
|
|
- Integrate FontAwesome icons
|
|
- Add hover animations from `ui-animations`
|
|
|
|
#### 2.2 FeatureShowcase Component
|
|
```typescript
|
|
interface FeatureShowcaseConfig {
|
|
features: FeatureShowcaseItem[];
|
|
alternateLayout: boolean;
|
|
imageAspectRatio: '16:9' | '4:3' | '1:1';
|
|
}
|
|
|
|
interface FeatureShowcaseItem {
|
|
title: string;
|
|
description: string;
|
|
image: string;
|
|
benefits?: string[];
|
|
cta?: CTAButton;
|
|
}
|
|
```
|
|
|
|
**Features:**
|
|
- Alternating left/right layouts
|
|
- Image lazy loading
|
|
- Smooth scroll animations
|
|
- Responsive stacking
|
|
|
|
#### 2.3 TestimonialCarousel Component
|
|
```typescript
|
|
interface TestimonialCarouselConfig {
|
|
testimonials: Testimonial[];
|
|
autoplay: boolean;
|
|
showAvatars: boolean;
|
|
variant: 'card' | 'quote' | 'minimal';
|
|
}
|
|
|
|
interface Testimonial {
|
|
quote: string;
|
|
author: string;
|
|
title?: string;
|
|
company?: string;
|
|
avatar?: string;
|
|
rating?: number;
|
|
}
|
|
```
|
|
|
|
**Integration:**
|
|
- Extend existing carousel functionality
|
|
- Use `ui-essentials` Avatar component
|
|
- Apply smooth transitions from `ui-animations`
|
|
- Implement touch/swipe gestures
|
|
|
|
#### 2.4 LogoCloud Component
|
|
```typescript
|
|
interface LogoCloudConfig {
|
|
logos: CompanyLogo[];
|
|
layout: 'grid' | 'marquee' | 'carousel';
|
|
grayscale: boolean;
|
|
hoverEffects: boolean;
|
|
}
|
|
|
|
interface CompanyLogo {
|
|
name: string;
|
|
logo: string;
|
|
url?: string;
|
|
width?: number;
|
|
}
|
|
```
|
|
|
|
#### 2.5 StatisticsDisplay Component
|
|
```typescript
|
|
interface StatisticsDisplayConfig {
|
|
stats: StatisticItem[];
|
|
layout: 'horizontal' | 'grid' | 'centered';
|
|
animateNumbers: boolean;
|
|
backgroundVariant: 'transparent' | 'subtle' | 'accent';
|
|
}
|
|
|
|
interface StatisticItem {
|
|
value: string | number;
|
|
label: string;
|
|
suffix?: string;
|
|
prefix?: string;
|
|
description?: string;
|
|
}
|
|
```
|
|
|
|
### Styling Architecture
|
|
```scss
|
|
// Feature components base styles
|
|
.feature-grid {
|
|
@include mixins.responsive-grid(
|
|
$mobile: 1,
|
|
$tablet: 2,
|
|
$desktop: var(--columns, 3)
|
|
);
|
|
gap: tokens.$spacing-content-large;
|
|
|
|
&__item {
|
|
@include mixins.card-base();
|
|
padding: tokens.$spacing-content-medium;
|
|
border-radius: tokens.$border-radius-large;
|
|
|
|
&:hover {
|
|
@include mixins.elevation-hover();
|
|
transform: translateY(-2px);
|
|
transition: tokens.$transition-medium;
|
|
}
|
|
}
|
|
|
|
&__icon {
|
|
width: 48px;
|
|
height: 48px;
|
|
color: tokens.$color-primary-500;
|
|
margin-bottom: tokens.$spacing-element-medium;
|
|
}
|
|
|
|
&__title {
|
|
@include mixins.typography-heading-small();
|
|
margin-bottom: tokens.$spacing-element-small;
|
|
}
|
|
|
|
&__description {
|
|
@include mixins.typography-body-medium();
|
|
color: tokens.$color-text-secondary;
|
|
}
|
|
}
|
|
```
|
|
|
|
### Demo Implementation
|
|
- `feature-sections-demo` with grid and showcase variants
|
|
- `social-proof-demo` with testimonials and logos
|
|
- Interactive configuration panels
|
|
- Performance optimization examples
|
|
|
|
---
|
|
|
|
## Phase 3: Conversion & Call-to-Action
|
|
|
|
### Objective
|
|
Implement high-converting components focused on user actions and conversions.
|
|
|
|
### Timeline: 3-4 weeks
|
|
|
|
### Components to Implement
|
|
|
|
#### 3.1 CTASection Component
|
|
```typescript
|
|
interface CTASectionConfig {
|
|
title: string;
|
|
description?: string;
|
|
ctaPrimary: CTAButton;
|
|
ctaSecondary?: CTAButton;
|
|
backgroundType: 'gradient' | 'pattern' | 'image' | 'solid';
|
|
urgency?: UrgencyConfig;
|
|
}
|
|
|
|
interface UrgencyConfig {
|
|
type: 'countdown' | 'limited-offer' | 'social-proof';
|
|
text: string;
|
|
endDate?: Date;
|
|
remaining?: number;
|
|
}
|
|
```
|
|
|
|
**Features:**
|
|
- Multiple background variants
|
|
- Urgency indicators
|
|
- A/B testing data attributes
|
|
- Conversion tracking hooks
|
|
|
|
#### 3.2 PricingTable Component
|
|
```typescript
|
|
interface PricingTableConfig {
|
|
plans: PricingPlan[];
|
|
billingToggle: BillingToggle;
|
|
featuresComparison: boolean;
|
|
highlightedPlan?: string;
|
|
}
|
|
|
|
interface PricingPlan {
|
|
id: string;
|
|
name: string;
|
|
price: PriceStructure;
|
|
features: PricingFeature[];
|
|
cta: CTAButton;
|
|
badge?: string;
|
|
popular?: boolean;
|
|
}
|
|
|
|
interface PriceStructure {
|
|
monthly: number;
|
|
yearly: number;
|
|
currency: string;
|
|
suffix?: string; // per user, per month, etc.
|
|
}
|
|
```
|
|
|
|
**Integration:**
|
|
- Use `ui-essentials` Table component for feature comparison
|
|
- Implement smooth toggle animations
|
|
- Apply pricing card hover effects
|
|
- Include form validation for CTAs
|
|
|
|
#### 3.3 NewsletterSignup Component
|
|
```typescript
|
|
interface NewsletterSignupConfig {
|
|
title: string;
|
|
description?: string;
|
|
placeholder: string;
|
|
ctaText: string;
|
|
privacyText?: string;
|
|
successMessage: string;
|
|
variant: 'inline' | 'modal' | 'sidebar' | 'footer';
|
|
}
|
|
```
|
|
|
|
**Features:**
|
|
- Email validation
|
|
- GDPR compliance options
|
|
- Success/error states
|
|
- Integration with email services
|
|
|
|
#### 3.4 ContactForm Component
|
|
```typescript
|
|
interface ContactFormConfig {
|
|
fields: FormField[];
|
|
submitText: string;
|
|
successMessage: string;
|
|
layout: 'single-column' | 'two-column' | 'inline';
|
|
validation: ValidationRules;
|
|
}
|
|
|
|
interface FormField {
|
|
type: 'text' | 'email' | 'tel' | 'textarea' | 'select' | 'checkbox';
|
|
name: string;
|
|
label: string;
|
|
placeholder?: string;
|
|
required: boolean;
|
|
options?: SelectOption[];
|
|
}
|
|
```
|
|
|
|
**Integration:**
|
|
- Extend `ui-essentials` form components
|
|
- Apply `shared-utils` validation
|
|
- Include accessibility features
|
|
- Support for custom field types
|
|
|
|
### Advanced Styling
|
|
```scss
|
|
// CTA Section with gradient backgrounds
|
|
.cta-section {
|
|
@include mixins.section-padding();
|
|
position: relative;
|
|
overflow: hidden;
|
|
|
|
&--gradient {
|
|
background: linear-gradient(
|
|
135deg,
|
|
tokens.$color-primary-500 0%,
|
|
tokens.$color-primary-700 50%,
|
|
tokens.$color-accent-500 100%
|
|
);
|
|
}
|
|
|
|
&--pattern {
|
|
background-color: tokens.$color-surface-secondary;
|
|
background-image: url('data:image/svg+xml,...'); // Pattern SVG
|
|
background-size: 60px 60px;
|
|
}
|
|
|
|
&__content {
|
|
position: relative;
|
|
z-index: 2;
|
|
max-width: 800px;
|
|
margin: 0 auto;
|
|
text-align: center;
|
|
}
|
|
|
|
&__title {
|
|
@include mixins.typography-display-medium();
|
|
color: tokens.$color-text-on-primary;
|
|
margin-bottom: tokens.$spacing-content-medium;
|
|
}
|
|
}
|
|
|
|
// Pricing table responsive design
|
|
.pricing-table {
|
|
@include mixins.responsive-grid(
|
|
$mobile: 1,
|
|
$tablet: 2,
|
|
$desktop: 3
|
|
);
|
|
gap: tokens.$spacing-content-medium;
|
|
|
|
&__plan {
|
|
@include mixins.card-elevated();
|
|
position: relative;
|
|
padding: tokens.$spacing-content-large;
|
|
border-radius: tokens.$border-radius-large;
|
|
|
|
&--popular {
|
|
border: 2px solid tokens.$color-primary-500;
|
|
transform: scale(1.05);
|
|
|
|
&::before {
|
|
content: 'Most Popular';
|
|
position: absolute;
|
|
top: -12px;
|
|
left: 50%;
|
|
transform: translateX(-50%);
|
|
background: tokens.$color-primary-500;
|
|
color: tokens.$color-text-on-primary;
|
|
padding: tokens.$spacing-element-small tokens.$spacing-element-medium;
|
|
border-radius: tokens.$border-radius-medium;
|
|
font-size: tokens.$font-size-small;
|
|
font-weight: tokens.$font-weight-semibold;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## Phase 4: Navigation & Footer
|
|
|
|
### Objective
|
|
Create comprehensive navigation and footer systems for complete website layouts.
|
|
|
|
### Timeline: 2-3 weeks
|
|
|
|
### Components to Implement
|
|
|
|
#### 4.1 LandingHeader Component
|
|
```typescript
|
|
interface LandingHeaderConfig {
|
|
logo: LogoConfig;
|
|
navigation: NavigationItem[];
|
|
cta?: CTAButton;
|
|
variant: 'transparent' | 'solid' | 'blur';
|
|
sticky: boolean;
|
|
mobileBreakpoint: number;
|
|
}
|
|
|
|
interface LogoConfig {
|
|
src?: string;
|
|
text?: string;
|
|
href: string;
|
|
width?: number;
|
|
height?: number;
|
|
}
|
|
|
|
interface NavigationItem {
|
|
label: string;
|
|
href?: string;
|
|
children?: NavigationItem[];
|
|
megaMenu?: MegaMenuConfig;
|
|
}
|
|
```
|
|
|
|
**Features:**
|
|
- Smooth scroll spy
|
|
- Mobile hamburger menu
|
|
- Transparent/solid transitions
|
|
- Mega menu support
|
|
|
|
#### 4.2 MegaMenu Component
|
|
```typescript
|
|
interface MegaMenuConfig {
|
|
columns: MegaMenuColumn[];
|
|
width: 'container' | 'full' | 'auto';
|
|
showOnHover: boolean;
|
|
}
|
|
|
|
interface MegaMenuColumn {
|
|
title?: string;
|
|
items: NavigationItem[];
|
|
featured?: FeaturedContent;
|
|
}
|
|
```
|
|
|
|
#### 4.3 FooterSection Component
|
|
```typescript
|
|
interface FooterSectionConfig {
|
|
columns: FooterColumn[];
|
|
newsletter?: NewsletterSignupConfig;
|
|
socialLinks?: SocialLink[];
|
|
copyright: string;
|
|
logo?: LogoConfig;
|
|
variant: 'simple' | 'comprehensive' | 'minimal';
|
|
}
|
|
|
|
interface FooterColumn {
|
|
title: string;
|
|
links: FooterLink[];
|
|
}
|
|
|
|
interface FooterLink {
|
|
text: string;
|
|
href: string;
|
|
external?: boolean;
|
|
}
|
|
```
|
|
|
|
#### 4.4 StickyNavbar Component
|
|
```typescript
|
|
interface StickyNavbarConfig extends LandingHeaderConfig {
|
|
hideOnScroll: boolean;
|
|
showAfter: number; // pixels
|
|
shrinkOnScroll: boolean;
|
|
}
|
|
```
|
|
|
|
### Navigation Styling
|
|
```scss
|
|
.landing-header {
|
|
position: fixed;
|
|
top: 0;
|
|
left: 0;
|
|
right: 0;
|
|
z-index: 1000;
|
|
transition: tokens.$transition-medium;
|
|
|
|
&--transparent {
|
|
background: transparent;
|
|
backdrop-filter: blur(10px);
|
|
}
|
|
|
|
&--solid {
|
|
background: tokens.$color-surface-primary;
|
|
box-shadow: tokens.$shadow-small;
|
|
}
|
|
|
|
&__container {
|
|
@include mixins.container-max-width();
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
padding: tokens.$spacing-element-medium tokens.$spacing-container;
|
|
}
|
|
|
|
&__nav {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: tokens.$spacing-element-large;
|
|
|
|
@media (max-width: tokens.$breakpoint-tablet) {
|
|
display: none;
|
|
}
|
|
}
|
|
|
|
&__nav-item {
|
|
@include mixins.typography-body-medium();
|
|
color: tokens.$color-text-primary;
|
|
text-decoration: none;
|
|
position: relative;
|
|
padding: tokens.$spacing-element-small 0;
|
|
|
|
&:hover {
|
|
color: tokens.$color-primary-500;
|
|
}
|
|
|
|
&::after {
|
|
content: '';
|
|
position: absolute;
|
|
bottom: 0;
|
|
left: 0;
|
|
width: 0;
|
|
height: 2px;
|
|
background: tokens.$color-primary-500;
|
|
transition: width tokens.$transition-fast;
|
|
}
|
|
|
|
&:hover::after {
|
|
width: 100%;
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## Phase 5: Content Sections & Templates
|
|
|
|
### Objective
|
|
Complete the library with supplementary content components and ready-to-use page templates.
|
|
|
|
### Timeline: 4-5 weeks
|
|
|
|
### Components to Implement
|
|
|
|
#### 5.1 Content Components
|
|
|
|
##### FAQSection Component
|
|
```typescript
|
|
interface FAQSectionConfig {
|
|
title: string;
|
|
description?: string;
|
|
faqs: FAQItem[];
|
|
searchable: boolean;
|
|
categories?: string[];
|
|
}
|
|
|
|
interface FAQItem {
|
|
id: string;
|
|
question: string;
|
|
answer: string;
|
|
category?: string;
|
|
}
|
|
```
|
|
|
|
##### TeamGrid Component
|
|
```typescript
|
|
interface TeamGridConfig {
|
|
title: string;
|
|
members: TeamMember[];
|
|
columns: 2 | 3 | 4;
|
|
showSocial: boolean;
|
|
}
|
|
|
|
interface TeamMember {
|
|
name: string;
|
|
role: string;
|
|
bio?: string;
|
|
avatar: string;
|
|
social?: SocialLinks;
|
|
}
|
|
```
|
|
|
|
##### TimelineSection Component
|
|
```typescript
|
|
interface TimelineSectionConfig {
|
|
title: string;
|
|
events: TimelineEvent[];
|
|
orientation: 'vertical' | 'horizontal';
|
|
variant: 'minimal' | 'detailed' | 'milestone';
|
|
}
|
|
|
|
interface TimelineEvent {
|
|
date: string;
|
|
title: string;
|
|
description: string;
|
|
image?: string;
|
|
milestone?: boolean;
|
|
}
|
|
```
|
|
|
|
#### 5.2 Page Templates
|
|
|
|
##### SaaSLandingPage Template
|
|
```typescript
|
|
interface SaaSLandingPageConfig {
|
|
hero: HeroSectionConfig;
|
|
features: FeatureGridConfig;
|
|
socialProof: TestimonialCarouselConfig;
|
|
pricing: PricingTableConfig;
|
|
cta: CTASectionConfig;
|
|
footer: FooterSectionConfig;
|
|
}
|
|
```
|
|
|
|
**Template Structure:**
|
|
1. Header with transparent navigation
|
|
2. Hero section with product demo
|
|
3. Feature showcase (3-column grid)
|
|
4. Social proof (testimonials + logo cloud)
|
|
5. Pricing section
|
|
6. FAQ section
|
|
7. Final CTA section
|
|
8. Comprehensive footer
|
|
|
|
##### ProductLandingPage Template
|
|
```typescript
|
|
interface ProductLandingPageConfig {
|
|
hero: HeroWithImageConfig;
|
|
features: FeatureShowcaseConfig;
|
|
gallery: ProductGallery;
|
|
reviews: ReviewSection;
|
|
purchase: PurchaseSection;
|
|
}
|
|
```
|
|
|
|
##### AgencyLandingPage Template
|
|
```typescript
|
|
interface AgencyLandingPageConfig {
|
|
hero: HeroSectionConfig;
|
|
services: FeatureGridConfig;
|
|
portfolio: PortfolioSection;
|
|
team: TeamGridConfig;
|
|
testimonials: TestimonialCarouselConfig;
|
|
contact: ContactFormConfig;
|
|
}
|
|
```
|
|
|
|
### Template Implementation
|
|
```typescript
|
|
@Component({
|
|
selector: 'ui-saas-landing-page',
|
|
template: `
|
|
<ui-landing-header [config]="config.header"></ui-landing-header>
|
|
|
|
<main>
|
|
<ui-hero-section [config]="config.hero"></ui-hero-section>
|
|
|
|
<ui-page-section background="subtle">
|
|
<ui-feature-grid [config]="config.features"></ui-feature-grid>
|
|
</ui-page-section>
|
|
|
|
<ui-page-section>
|
|
<ui-testimonial-carousel [config]="config.testimonials"></ui-testimonial-carousel>
|
|
</ui-page-section>
|
|
|
|
<ui-page-section background="accent">
|
|
<ui-pricing-table [config]="config.pricing"></ui-pricing-table>
|
|
</ui-page-section>
|
|
|
|
<ui-page-section>
|
|
<ui-faq-section [config]="config.faq"></ui-faq-section>
|
|
</ui-page-section>
|
|
|
|
<ui-cta-section [config]="config.cta"></ui-cta-section>
|
|
</main>
|
|
|
|
<ui-footer-section [config]="config.footer"></ui-footer-section>
|
|
`,
|
|
styleUrls: ['./saas-landing-page.component.scss']
|
|
})
|
|
export class SaaSLandingPageComponent {
|
|
@Input() config!: SaaSLandingPageConfig;
|
|
}
|
|
```
|
|
|
|
## Technical Specifications
|
|
|
|
### Performance Requirements
|
|
- Lazy loading for all images
|
|
- Code splitting by component category
|
|
- Tree-shakeable exports
|
|
- Optimal bundle size (<50kb per component category)
|
|
- Lighthouse score >90 for demo pages
|
|
|
|
### Accessibility Standards
|
|
- WCAG 2.1 AA compliance
|
|
- Proper ARIA labels and roles
|
|
- Keyboard navigation support
|
|
- Screen reader optimization
|
|
- Color contrast ratios >4.5:1
|
|
|
|
### Browser Support
|
|
- Chrome/Edge 90+
|
|
- Firefox 88+
|
|
- Safari 14+
|
|
- Mobile browsers (iOS Safari, Chrome Mobile)
|
|
|
|
### Testing Strategy
|
|
- Unit tests: >90% coverage
|
|
- Component integration tests
|
|
- Visual regression tests
|
|
- Performance benchmarks
|
|
- Accessibility automated testing
|
|
|
|
### Documentation Requirements
|
|
- Storybook integration
|
|
- API documentation with examples
|
|
- Usage guidelines
|
|
- Design system integration guide
|
|
- Migration guides
|
|
|
|
## Integration Checklist
|
|
|
|
### Design System Integration
|
|
- [ ] Import design tokens correctly
|
|
- [ ] Use consistent spacing hierarchy
|
|
- [ ] Apply typography scale
|
|
- [ ] Implement color system
|
|
- [ ] Follow component naming conventions
|
|
|
|
### UI Essentials Integration
|
|
- [ ] Extend existing components where applicable
|
|
- [ ] Reuse layout components (Container, Flex, Grid)
|
|
- [ ] Apply consistent button styles
|
|
- [ ] Use existing form components
|
|
- [ ] Maintain consistent component API patterns
|
|
|
|
### Animation Integration
|
|
- [ ] Apply entrance animations
|
|
- [ ] Add hover/interaction effects
|
|
- [ ] Implement scroll-triggered animations
|
|
- [ ] Use consistent easing curves
|
|
- [ ] Optimize for performance
|
|
|
|
### Utilities Integration
|
|
- [ ] Use shared validation logic
|
|
- [ ] Apply common helper functions
|
|
- [ ] Implement consistent error handling
|
|
- [ ] Use shared interfaces where applicable
|
|
|
|
## Success Metrics
|
|
|
|
### Development Metrics
|
|
- All components implement consistent APIs
|
|
- 100% TypeScript coverage
|
|
- Zero accessibility violations
|
|
- Performance budgets met
|
|
- Documentation completeness
|
|
|
|
### Usage Metrics
|
|
- Component adoption rate
|
|
- Bundle size impact
|
|
- Build time impact
|
|
- Developer satisfaction scores
|
|
- Community contributions
|
|
|
|
## Conclusion
|
|
|
|
This implementation plan provides a structured approach to building a comprehensive ui-landing-pages library that integrates seamlessly with the existing SSuite ecosystem. By following this phased approach, the team can deliver value incrementally while maintaining high quality standards and consistency across all components.
|
|
|
|
The resulting library will enable rapid development of professional landing pages and marketing websites while ensuring accessibility, performance, and maintainability standards are met. |