# Angular Library Consumer Integration Guide ## 🚀 Complete Guide: Creating a New Angular Project with SSuite Libraries This guide shows you how to create a fresh Angular project and integrate any combination of the 12 SSuite libraries using Git submodules. --- ## 📋 Prerequisites - **Node.js 18+** and npm - **Angular CLI** (`npm install -g @angular/cli`) - **Git** configured with access to `git.sky-ai.com` --- ## 🏗️ Step 1: Create New Angular Project ```bash # Create new Angular project ng new my-awesome-app cd my-awesome-app # Create libs directory for submodules mkdir libs ``` --- ## 📦 Step 2: Choose Your Libraries Select libraries based on your needs: ### 🎨 **Foundation (Required for most projects)** - **ui-design-system** - SCSS design tokens, colors, typography, fonts ### 🛠️ **Essential Components** - **ui-essentials** - Buttons, forms, tables, cards, navigation, etc. - **shared-utils** - Common utilities and shared services ### 🎯 **Specialized Libraries** - **auth-client** - Authentication guards, services, interceptors - **ui-landing-pages** - Hero sections, pricing tables, testimonials - **ui-code-display** - Syntax highlighting for code blocks - **ui-accessibility** - WCAG compliance tools and utilities - **hcl-studio** - Advanced color management system ### 🎭 **Enhancement Libraries** - **ui-animations** - CSS animation utilities - **ui-backgrounds** - Background generators and effects - **ui-font-manager** - Advanced font management - **ui-data-utils** - Data manipulation utilities --- ## ⚡ Step 3: Add Libraries as Submodules **IMPORTANT**: Always add `ui-design-system` first, as other libraries depend on it. ### Minimal Setup (Design System + Components): ```bash # Add foundation (required) git submodule add https://git.sky-ai.com/jules/ui-design-system.git libs/ui-design-system # Add essential components git submodule add https://git.sky-ai.com/jules/ui-essentials.git libs/ui-essentials git submodule add https://git.sky-ai.com/jules/shared-utils.git libs/shared-utils # Initialize submodules git submodule update --init --recursive ``` ### Full-Featured Setup (All Libraries): ```bash # Foundation (required first) git submodule add https://git.sky-ai.com/jules/ui-design-system.git libs/ui-design-system # Core libraries git submodule add https://git.sky-ai.com/jules/ui-essentials.git libs/ui-essentials git submodule add https://git.sky-ai.com/jules/shared-utils.git libs/shared-utils git submodule add https://git.sky-ai.com/jules/auth-client.git libs/auth-client # Specialized libraries git submodule add https://git.sky-ai.com/jules/ui-landing-pages.git libs/ui-landing-pages git submodule add https://git.sky-ai.com/jules/ui-code-display.git libs/ui-code-display git submodule add https://git.sky-ai.com/jules/ui-accessibility.git libs/ui-accessibility git submodule add https://git.sky-ai.com/jules/hcl-studio.git libs/hcl-studio # Enhancement libraries git submodule add https://git.sky-ai.com/jules/ui-animations.git libs/ui-animations git submodule add https://git.sky-ai.com/jules/ui-backgrounds.git libs/ui-backgrounds git submodule add https://git.sky-ai.com/jules/ui-font-manager.git libs/ui-font-manager git submodule add https://git.sky-ai.com/jules/ui-data-utils.git libs/ui-data-utils # Initialize all submodules git submodule update --init --recursive ``` --- ## 🔨 Step 4: Build Libraries Build libraries in dependency order: ```bash # Build ui-design-system first (required by others) cd libs/ui-design-system npm install npm run build cd ../.. # Build other libraries cd libs/ui-essentials && npm install && npm run build && cd ../.. cd libs/shared-utils && npm install && npm run build && cd ../.. cd libs/auth-client && npm install && npm run build && cd ../.. # Continue for other libraries as needed... ``` ### 📜 Automation Script: Create `build-libs.sh`: ```bash #!/bin/bash echo "🏗️ Building all libraries..." # Array of libraries in dependency order LIBS=("ui-design-system" "shared-utils" "ui-essentials" "auth-client" "ui-landing-pages" "ui-code-display" "ui-accessibility" "hcl-studio" "ui-animations" "ui-backgrounds" "ui-font-manager" "ui-data-utils") for lib in "${LIBS[@]}"; do if [ -d "libs/$lib" ]; then echo "📦 Building $lib..." cd libs/$lib npm install npm run build cd ../.. echo "✅ $lib built successfully" else echo "⚠️ Skipping $lib (not found)" fi done echo "🎉 All libraries built!" ``` Make executable: `chmod +x build-libs.sh && ./build-libs.sh` --- ## ⚙️ Step 5: Configure TypeScript Paths Update `tsconfig.json`: ```json { "compilerOptions": { "baseUrl": "./", "paths": { // Foundation (required) "ui-design-system": ["./libs/ui-design-system/dist"], "ui-design-system/*": ["./libs/ui-design-system/dist/*", "./libs/ui-design-system/src/*"], // Core libraries "ui-essentials": ["./libs/ui-essentials/dist"], "ui-essentials/*": ["./libs/ui-essentials/dist/*"], "shared-utils": ["./libs/shared-utils/dist"], "shared-utils/*": ["./libs/shared-utils/dist/*"], "auth-client": ["./libs/auth-client/dist"], "auth-client/*": ["./libs/auth-client/dist/*"], // Specialized libraries "ui-landing-pages": ["./libs/ui-landing-pages/dist"], "ui-landing-pages/*": ["./libs/ui-landing-pages/dist/*"], "ui-code-display": ["./libs/ui-code-display/dist"], "ui-code-display/*": ["./libs/ui-code-display/dist/*"], "ui-accessibility": ["./libs/ui-accessibility/dist"], "ui-accessibility/*": ["./libs/ui-accessibility/dist/*"], "hcl-studio": ["./libs/hcl-studio/dist"], "hcl-studio/*": ["./libs/hcl-studio/dist/*"], // Enhancement libraries "ui-animations": ["./libs/ui-animations/dist"], "ui-animations/*": ["./libs/ui-animations/dist/*"], "ui-backgrounds": ["./libs/ui-backgrounds/dist"], "ui-backgrounds/*": ["./libs/ui-backgrounds/dist/*"], "ui-font-manager": ["./libs/ui-font-manager/dist"], "ui-font-manager/*": ["./libs/ui-font-manager/dist/*"], "ui-data-utils": ["./libs/ui-data-utils/dist"], "ui-data-utils/*": ["./libs/ui-data-utils/dist/*"] } } } ``` **Note**: The `ui-design-system/*` includes both `dist/*` and `src/*` to support SCSS imports. --- ## 🎨 Step 6: Import Styles ### Option A: Complete Design System In your `src/styles.scss`: ```scss // Complete design system (includes all tokens + fonts) @use 'ui-design-system/src/styles' as ui; // Optional: Additional component styles @use 'ui-animations/src/styles' as animations; @use 'ui-backgrounds/src/styles' as backgrounds; ``` ### Option B: Selective Imports ```scss // Just semantic tokens (most common) @use 'ui-design-system/src/styles/semantic' as tokens; // Or just base tokens @use 'ui-design-system/src/styles/base' as base; // Add specific libraries @use 'ui-accessibility/src/lib/utilities/a11y-utilities' as a11y; ``` --- ## 💻 Step 7: Use Libraries in Your Components ### Example Component using multiple libraries: ```typescript // src/app/app.component.ts import { Component } from '@angular/core'; import { ButtonComponent } from 'ui-essentials'; import { AuthService } from 'auth-client'; import { HeroSectionComponent } from 'ui-landing-pages'; import { CodeSnippetComponent } from 'ui-code-display'; @Component({ selector: 'app-root', standalone: true, imports: [ ButtonComponent, HeroSectionComponent, CodeSnippetComponent ], template: `