Files
ui-essentials/UI_LANDING_PAGES_PLAN.md
skyai_dev 5346d6d0c9 Add comprehensive library expansion with new components and demos
- 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>
2025-09-05 05:37:37 +10:00

22 KiB

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

// 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

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

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

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

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

@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

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

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

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

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

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

// 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

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

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

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

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

// 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;
      }
    }
  }
}

Objective

Create comprehensive navigation and footer systems for complete website layouts.

Timeline: 2-3 weeks

Components to Implement

4.1 LandingHeader Component

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

interface MegaMenuConfig {
  columns: MegaMenuColumn[];
  width: 'container' | 'full' | 'auto';
  showOnHover: boolean;
}

interface MegaMenuColumn {
  title?: string;
  items: NavigationItem[];
  featured?: FeaturedContent;
}

4.3 FooterSection Component

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

interface StickyNavbarConfig extends LandingHeaderConfig {
  hideOnScroll: boolean;
  showAfter: number; // pixels
  shrinkOnScroll: boolean;
}

Navigation Styling

.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
interface FAQSectionConfig {
  title: string;
  description?: string;
  faqs: FAQItem[];
  searchable: boolean;
  categories?: string[];
}

interface FAQItem {
  id: string;
  question: string;
  answer: string;
  category?: string;
}
TeamGrid Component
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
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
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
interface ProductLandingPageConfig {
  hero: HeroWithImageConfig;
  features: FeatureShowcaseConfig;
  gallery: ProductGallery;
  reviews: ReviewSection;
  purchase: PurchaseSection;
}
AgencyLandingPage Template
interface AgencyLandingPageConfig {
  hero: HeroSectionConfig;
  services: FeatureGridConfig;
  portfolio: PortfolioSection;
  team: TeamGridConfig;
  testimonials: TestimonialCarouselConfig;
  contact: ContactFormConfig;
}

Template Implementation

@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.