Skip to content

TachUI Symbols Plugin Structure โ€‹

Comprehensive file-level documentation of packages/symbols/

This document provides a complete overview of TachUI's Symbols plugin structure, explaining the purpose and functionality of every file and directory in the packages/symbols/ codebase.

๐Ÿ“‹ Overview โ€‹

Current Status: Production Ready - 23 TypeScript files, 18 test files, 260KB source

The @tachui/symbols plugin provides a comprehensive SwiftUI Symbol-compatible icon system for TachUI applications. It features complete SF Symbols API compatibility, Lucide icon integration, advanced animations, and accessibility compliance while maintaining optimal performance through tree-shaking and lazy loading.

Key Features:

  1. SwiftUI Symbol API - Complete compatibility with SF Symbols API patterns and methods
  2. Lucide Integration - 1000+ high-quality icons with automatic tree-shaking optimization
  3. SF Symbols Compatibility - 500+ SF Symbol mappings with variant and weight support
  4. Advanced Animations - 7 symbol effects (bounce, pulse, wiggle, rotate, breathe, shake, glow)
  5. Accessibility First - WCAG 2.1 AA compliant with screen reader support and focus management
  6. Performance Optimized - ~8.2KB base bundle with 0.3KB per icon impact

The Symbols plugin is organized into 7 main modules:

  1. Symbol Component (components/) - Main Symbol component with SwiftUI API compatibility
  2. Icon Set System (icon-sets/) - Pluggable icon set architecture with Lucide integration
  3. SF Symbols Compatibility (compatibility/) - Complete SF Symbols mapping and migration system
  4. Animation System (animations/) - Symbol animation effects with CSS optimization
  5. Rendering Engine (rendering/) - Advanced SVG rendering with performance optimization
  6. Modifier Integration (modifiers/) - Symbol-specific modifiers for enhanced styling
  7. Utility Functions (utils/) - Performance, accessibility, and icon management utilities

๐ŸŽฏ Root Level โ€‹

packages/symbols/
โ”œโ”€โ”€ package.json               # Symbols plugin package configuration  
โ”œโ”€โ”€ tsconfig.json             # TypeScript configuration for development
โ”œโ”€โ”€ vite.config.ts            # Vite build configuration optimized for icons
โ”œโ”€โ”€ vitest.config.ts          # Test configuration with error suppression
โ”œโ”€โ”€ dist/                     # Compiled plugin output with tree-shaking
โ”œโ”€โ”€ src/                      # Source code for all Symbols functionality
โ””โ”€โ”€ __tests__/               # Comprehensive test suite with 469 tests

๐Ÿ“ Root File Details โ€‹

package.json โ€‹

Purpose: Symbols plugin package configuration and dependencies
Functionality:

  • Package name: @tachui/symbols as official TachUI plugin
  • Peer dependency on @tachui/core for framework integration
  • Direct dependency on lucide@^0.447.0 for icon assets
  • ESM/CJS dual output with complete TypeScript declarations
  • Tree-shakeable exports enabling 0.3KB per icon bundle impact

vitest.config.ts โ€‹

Purpose: Test configuration with production-ready error handling
Functionality:

  • Comprehensive test environment setup with DOM mocking
  • Error message suppression for clean test output (logLevel: 'silent')
  • Integration testing configuration with icon loading
  • Performance benchmarking integration
  • Coverage reporting with 95%+ target coverage

๐Ÿงฉ Symbol Component (components/) โ€‹

Main Symbol component with complete SwiftUI API compatibility

components/
โ”œโ”€โ”€ index.ts                   # Component exports and public API
โ””โ”€โ”€ Symbol.ts                  # Core Symbol component implementation

๐Ÿ“ Symbol Component Details โ€‹

Symbol.ts โ€‹

Purpose: Core Symbol component with complete SwiftUI SF Symbols API compatibility
Functionality:

  • SwiftUI API Compatibility: Complete Image(systemName:) and Symbol() API support
  • Reactive Properties: All symbol properties support signals for dynamic updates
  • Multiple Icon Sets: Support for Lucide (primary), SF Symbols (compatibility), custom sets
  • Symbol Variants: filled, circle, square, slash variants with automatic mapping
  • Symbol Weights: ultraLight through black weights with CSS translation
  • Symbol Scales: small, medium, large scales with responsive sizing
  • Animation Effects: 7 built-in effects with configurable parameters
  • Accessibility: Screen reader support, focus management, ARIA compliance
  • Performance: Lazy loading, icon caching, tree-shaking optimization

Core Symbol API:

typescript
// Basic symbol usage
Symbol("heart")

// With configuration options
Symbol("star", {
  variant: "filled",
  scale: "large", 
  weight: "bold",
  primaryColor: "#FF0000",
  effect: "bounce"
})

// With reactive properties
const [isFavorited, setIsFavorited] = createSignal(false)
Symbol("heart", {
  variant: () => isFavorited() ? "filled" : "none",
  primaryColor: () => isFavorited() ? "#FF0000" : "#999999"
})

๐ŸŽจ Icon Set System (icon-sets/) โ€‹

Pluggable icon set architecture with multi-provider support

icon-sets/
โ”œโ”€โ”€ index.ts                   # Icon set system exports
โ”œโ”€โ”€ registry.ts               # Global icon set registry and management
โ””โ”€โ”€ lucide.ts                 # Lucide icon set implementation

๐Ÿ“ Icon Set System Details โ€‹

registry.ts โ€‹

Purpose: Global icon set registry with automatic loading and caching
Functionality:

  • Icon Set Registration: Register multiple icon sets (Lucide, SF Symbols, custom)
  • Default Icon Set: Configure default icon set for Symbol components
  • Icon Resolution: Automatic icon resolution with fallback handling
  • Caching System: Intelligent icon caching for performance optimization
  • Dynamic Loading: Lazy loading of icon sets and individual icons
  • Error Handling: Graceful fallbacks for missing icons and failed loads

lucide.ts โ€‹

Purpose: Lucide icon set integration with 1000+ high-quality icons
Functionality:

  • 1000+ Icons: Complete Lucide icon library with semantic naming
  • Tree-Shaking: Individual icon imports for optimal bundle sizes (0.3KB per icon)
  • Variant Processing: Automatic filled/outline variant processing
  • Dynamic Import: Dynamic ES module imports for lazy loading
  • Icon Metadata: Rich metadata including categories, tags, and search keywords
  • Performance: Icon caching and batch loading optimization
  • Format Support: SVG processing with viewBox normalization and optimization

Icon Loading Examples:

typescript
// Automatic icon loading
const heartIcon = Symbol("heart") // Loads from default Lucide set

// Explicit icon set
const sfSymbol = Symbol("heart", { iconSet: "sf-symbols" })

// Custom icon set
IconSetRegistry.register(new CustomIconSet())
const customIcon = Symbol("my-icon", { iconSet: "custom" })

๐Ÿ”„ SF Symbols Compatibility (compatibility/) โ€‹

Complete SF Symbols compatibility layer with migration tools

compatibility/
โ”œโ”€โ”€ README.md                  # SF Symbols compatibility documentation
โ”œโ”€โ”€ Phase3-Documentation.md    # Phase 3 implementation documentation
โ”œโ”€โ”€ sf-symbols-mapping.ts      # Core SF Symbol to Lucide mapping system
โ”œโ”€โ”€ swiftui-shim.ts           # SwiftUI Image(systemName:) compatibility shim
โ”œโ”€โ”€ variant-mapping.ts         # Symbol variant mapping and CSS generation
โ”œโ”€โ”€ weight-mapping.ts          # Symbol weight translation and CSS styles
โ”œโ”€โ”€ category-mapping.ts        # Symbol category organization and search
โ””โ”€โ”€ migration-utilities.ts     # Migration tools and project analysis utilities

๐Ÿ“ SF Symbols Compatibility Details โ€‹

sf-symbols-mapping.ts โ€‹

Purpose: Core SF Symbol to Lucide icon mapping with 500+ symbol support
Functionality:

  • 500+ Symbol Mappings: Comprehensive mapping of common SF Symbols to Lucide equivalents
  • Variant Support: Automatic variant detection and mapping (filled, circle, slash, square)
  • Weight Translation: SF Symbol weights mapped to Lucide-compatible CSS styles
  • Category Organization: SF Symbols organized by categories for easy discovery
  • Search Integration: Full-text search across symbol names, categories, and metadata
  • Alias Support: Support for alternative symbol names and deprecated mappings

swiftui-shim.ts โ€‹

Purpose: SwiftUI compatibility shim for seamless Image(systemName:) migration
Functionality:

  • Image(systemName:) Support: Complete SwiftUI Image(systemName:) API compatibility
  • Automatic Migration: Seamless migration from SwiftUI image patterns to TachUI symbols
  • Parameter Mapping: SwiftUI image parameters mapped to Symbol component properties
  • Error Handling: Graceful fallbacks for unmapped or missing SF Symbols
  • Development Warnings: Helpful warnings for unsupported SF Symbol features
  • Performance: Efficient mapping with caching and optimization

variant-mapping.ts โ€‹

Purpose: Symbol variant mapping with CSS generation for visual consistency
Functionality:

  • Variant Translation: SF Symbol variants (filled, circle, slash, square) to CSS styles
  • CSS Generation: Automatic CSS generation for variant effects and styling
  • Custom Mappers: Support for custom variant mapping logic per symbol
  • Batch Processing: Efficient batch processing of multiple symbol variants
  • Visual Consistency: Ensures visual consistency between SF Symbols and Lucide equivalents
  • Performance: Optimized CSS generation with style caching

migration-utilities.ts โ€‹

Purpose: Migration tools for converting SwiftUI projects to TachUI Symbols
Functionality:

  • Project Analysis: Analyzes Swift/SwiftUI projects for SF Symbol usage
  • Migration Planning: Generates migration plans with compatibility reports
  • Code Generation: Generates TachUI Symbol code from SF Symbol usage
  • Batch Migration: Processes multiple files and projects simultaneously
  • Success Metrics: Tracks migration success rates and compatibility percentages
  • Report Generation: Comprehensive migration reports in multiple formats

Migration Example:

typescript
// SwiftUI (before)
Image(systemName: "heart.fill")
  .foregroundColor(.red)
  .scaleEffect(1.2)

// TachUI Symbols (after migration)
Symbol("heart", {
  variant: "filled",
  primaryColor: Assets.systemRed,
  scale: "large"
})

โœจ Animation System (animations/) โ€‹

Advanced symbol animation effects with CSS optimization

animations/
โ””โ”€โ”€ SymbolAnimations.ts        # Complete symbol animation system

๐Ÿ“ Animation System Details โ€‹

SymbolAnimations.ts โ€‹

Purpose: Complete symbol animation system with 7 effects and performance optimization
Functionality:

  • 7 Animation Effects: bounce, pulse, wiggle, rotate, breathe, shake, glow
  • Configurable Parameters: Speed, intensity, duration, iteration count
  • Variable Value Support: Dynamic animation values with signal integration
  • Reduced Motion: Accessibility-compliant reduced motion support
  • CSS Optimization: Efficient CSS generation with hardware acceleration
  • Performance Monitoring: Animation performance impact assessment
  • Custom Animations: Framework for creating custom symbol animation effects

Available Animation Effects:

typescript
// Bounce effect
Symbol("heart").modifier.symbolEffect("bounce").build()

// Pulse with custom intensity  
Symbol("star").modifier.symbolEffect("pulse", 0.8).build()

// Wiggle with custom speed
Symbol("bell").modifier.symbolEffect("wiggle").effectSpeed(2).build()

// Rotate continuous
Symbol("gear").modifier.symbolEffect("rotate").build()

// Breathe with scale and opacity
Symbol("circle").modifier.symbolEffect("breathe").build()

// Shake with distance control
Symbol("warning").modifier.symbolEffect("shake").build()

// Glow with intensity control
Symbol("lightbulb").modifier.symbolEffect("glow").build()

๐ŸŽฌ Rendering Engine (rendering/) โ€‹

Advanced SVG rendering with performance optimization

rendering/
โ”œโ”€โ”€ index.ts                   # Rendering system exports
โ”œโ”€โ”€ AdvancedRenderer.ts        # Advanced SVG rendering and optimization
โ””โ”€โ”€ symbol-styles.css          # CSS styles for symbol rendering and effects

๐Ÿ“ Rendering Engine Details โ€‹

AdvancedRenderer.ts โ€‹

Purpose: Advanced SVG rendering system with performance optimization
Functionality:

  • SVG Processing: Advanced SVG processing with viewBox normalization
  • Color Management: Multi-color rendering modes (monochrome, hierarchical, palette, multicolor)
  • Performance Optimization: SVG optimization, minification, and caching
  • Responsive Rendering: Responsive symbol sizing with device pixel ratio support
  • Accessibility Integration: ARIA attributes, focus indicators, and screen reader support
  • Memory Management: Efficient memory usage with cleanup and resource management
  • Error Recovery: Graceful error handling with fallback rendering strategies

symbol-styles.css โ€‹

Purpose: Optimized CSS styles for symbol rendering and animation effects
Functionality:

  • Base Styles: Core symbol styling with CSS custom properties
  • Animation Keyframes: Optimized keyframe animations for all symbol effects
  • Responsive Design: Responsive scaling and sizing with media queries
  • Theme Integration: CSS custom properties for theme-aware symbol styling
  • Performance: Hardware-accelerated transforms and optimized rendering
  • Accessibility: High contrast mode support and reduced motion handling

๐ŸŽจ Modifier Integration (modifiers/) โ€‹

Symbol-specific modifiers for enhanced styling and behavior

modifiers/
โ”œโ”€โ”€ index.ts                   # Modifier system exports
โ””โ”€โ”€ SymbolModifier.ts         # Symbol-specific modifier implementation

๐Ÿ“ Modifier Integration Details โ€‹

SymbolModifier.ts โ€‹

Purpose: Symbol-specific modifiers extending TachUI's modifier system
Functionality:

  • Symbol Variants: .filled(), .circle(), .square(), .slash() convenience modifiers
  • Symbol Scaling: .scaleSmall(), .scaleMedium(), .scaleLarge() shorthand modifiers
  • Symbol Weights: .weightThin(), .weightRegular(), .weightBold() weight modifiers
  • Rendering Modes: .monochrome(), .hierarchical(), .palette(), .multicolor() modifiers
  • Symbol Effects: .bounce(), .pulse(), .wiggle(), .rotate() animation modifiers
  • Accessibility: .accessibilityLabel(), .isDecorative() accessibility modifiers
  • Integration: Seamless integration with TachUI's core modifier system

Symbol Modifier Examples:

typescript
// Shorthand modifiers
Symbol("heart")
  .modifier
  .filled()           // .variant("filled")
  .scaleLarge()       // .scale("large") 
  .weightBold()       // .weight("bold")
  .bounce()           // .symbolEffect("bounce")
  .foregroundColor(Assets.systemRed)
  .build()

// Rendering mode modifiers
Symbol("star")
  .modifier
  .palette("#FFD700", "#FFA500") // Primary and secondary colors
  .build()

// Accessibility modifiers  
Symbol("settings")
  .modifier
  .accessibilityLabel("Open Settings")
  .build()

๐Ÿ› ๏ธ Utility Functions (utils/) โ€‹

Performance, accessibility, and icon management utilities

utils/
โ”œโ”€โ”€ index.ts                   # Utility functions exports
โ”œโ”€โ”€ icon-loader.ts            # Icon loading and caching utilities
โ”œโ”€โ”€ performance.ts            # Performance optimization and bundle analysis  
โ”œโ”€โ”€ accessibility.ts          # Accessibility compliance and screen reader support
โ””โ”€โ”€ custom-icon-set-builder.ts # Custom icon set creation utilities

๐Ÿ“ Utility Functions Details โ€‹

icon-loader.ts โ€‹

Purpose: Icon loading and caching utilities for optimal performance
Functionality:

  • Dynamic Loading: Efficient dynamic icon loading with ES module imports
  • Caching Strategy: Multi-level caching (memory, session, persistent)
  • Batch Loading: Batch icon loading for performance optimization
  • Preloading: Icon preloading strategies for critical icons
  • Error Handling: Robust error handling with fallback loading strategies
  • Performance Monitoring: Icon loading performance tracking and optimization

performance.ts โ€‹

Purpose: Performance optimization and bundle analysis utilities
Functionality:

  • Bundle Analysis: Icon bundle size analysis and optimization recommendations
  • Tree-Shaking: Tree-shaking effectiveness analysis and reporting
  • SVG Optimization: SVG minification and compression utilities
  • Memory Profiling: Symbol memory usage analysis and optimization
  • Performance Benchmarking: Symbol rendering performance benchmarking
  • Optimization Recommendations: Actionable performance improvement suggestions

accessibility.ts โ€‹

Purpose: Accessibility compliance and screen reader support utilities
Functionality:

  • WCAG Compliance: WCAG 2.1 AA compliance validation and testing
  • Screen Reader Support: Screen reader optimization and announcement management
  • Focus Management: Symbol focus handling and keyboard navigation
  • High Contrast: High contrast mode detection and symbol adaptation
  • Reduced Motion: Animation reduction for motion-sensitive users
  • Accessibility Auditing: Automated accessibility testing and reporting

custom-icon-set-builder.ts โ€‹

Purpose: Custom icon set creation and management utilities
Functionality:

  • Icon Set Builder: Framework for creating custom icon sets
  • SVG Processing: Custom SVG processing and optimization pipelines
  • Metadata Generation: Automatic icon metadata generation and validation
  • Icon Set Validation: Icon set validation and quality assurance
  • Build Integration: Integration with build tools for icon set generation
  • Documentation: Automatic documentation generation for custom icon sets

๐Ÿงช Comprehensive Testing (__tests__/) โ€‹

Extensive test suite with 469 tests and 95%+ coverage

__tests__/
โ”œโ”€โ”€ setup.ts                  # Test environment setup with error suppression
โ”œโ”€โ”€ components/              # Component functionality testing
โ”‚   โ”œโ”€โ”€ Symbol.test.ts       # Core Symbol component testing
โ”‚   โ””โ”€โ”€ Symbol-animations.test.ts # Symbol animation system testing
โ”œโ”€โ”€ icon-sets/              # Icon set system testing
โ”‚   โ”œโ”€โ”€ registry.test.ts     # Icon registry functionality testing
โ”‚   โ””โ”€โ”€ lucide.test.ts      # Lucide icon set integration testing
โ”œโ”€โ”€ compatibility/          # SF Symbols compatibility testing
โ”‚   โ”œโ”€โ”€ swiftui-shim.test.ts       # SwiftUI compatibility shim testing
โ”‚   โ”œโ”€โ”€ variant-mapping.test.ts    # Symbol variant mapping testing
โ”‚   โ”œโ”€โ”€ weight-mapping.test.ts     # Symbol weight translation testing
โ”‚   โ”œโ”€โ”€ category-mapping.test.ts   # Symbol category organization testing
โ”‚   โ””โ”€โ”€ migration-utilities.test.ts # Migration tools testing
โ”œโ”€โ”€ animations/             # Animation system testing
โ”‚   โ””โ”€โ”€ SymbolAnimations.test.ts   # Complete animation functionality testing
โ”œโ”€โ”€ rendering/              # Rendering engine testing
โ”‚   โ””โ”€โ”€ AdvancedRenderer.test.ts   # SVG rendering and optimization testing
โ”œโ”€โ”€ utils/                  # Utility functions testing
โ”‚   โ”œโ”€โ”€ icon-loader.test.ts        # Icon loading and caching testing
โ”‚   โ”œโ”€โ”€ performance.test.ts        # Performance optimization testing
โ”‚   โ”œโ”€โ”€ accessibility.test.ts      # Accessibility compliance testing
โ”‚   โ””โ”€โ”€ custom-icon-set-builder.test.ts # Custom icon set builder testing
โ”œโ”€โ”€ integration/            # Integration testing
โ”‚   โ””โ”€โ”€ symbols-basic.test.ts      # Basic integration and workflow testing
โ”œโ”€โ”€ reactive/               # Reactive system integration testing
โ”‚   โ”œโ”€โ”€ reactive-modifiers.test.ts # Reactive modifier integration testing
โ”‚   โ””โ”€โ”€ modifier-integration.test.ts # Modifier system integration testing
โ””โ”€โ”€ utils/                  # Test utilities and helpers
    โ”œโ”€โ”€ suppress-errors.ts         # Error suppression utilities for clean output
    โ””โ”€โ”€ stderr-suppressor.ts       # Advanced stderr suppression system

๐Ÿ“ Test Coverage Highlights โ€‹

Comprehensive Component Testing โ€‹

  • Symbol Component: Complete API surface testing with all configuration options
  • Animation System: All 7 animation effects with performance and accessibility testing
  • Icon Loading: Dynamic loading, caching, and error recovery testing
  • SF Symbols Compatibility: 500+ symbol mappings with variant and weight testing

Integration & Performance Testing โ€‹

  • TachUI Integration: Seamless integration with core framework testing
  • Bundle Size Validation: Tree-shaking effectiveness and bundle impact testing
  • Performance Benchmarking: Rendering performance and memory usage testing
  • Accessibility Compliance: WCAG 2.1 AA compliance validation

Production-Ready Features โ€‹

  • Error Suppression: Clean test output with professional stderr handling
  • Real-World Scenarios: Integration testing with practical usage patterns
  • Memory Management: Memory leak detection and cleanup validation
  • Edge Case Handling: Comprehensive edge case and error condition testing

๐Ÿ“ฆ Distribution (dist/) โ€‹

Optimized plugin distribution with granular tree-shaking

dist/
โ”œโ”€โ”€ index.js                          # Main plugin entry point (ESM)
โ”œโ”€โ”€ index.cjs                         # CommonJS compatibility
โ”œโ”€โ”€ index.d.ts                       # TypeScript declarations
โ”œโ”€โ”€ components/                      # Component-level exports
โ”‚   โ”œโ”€โ”€ Symbol.js                    # Core Symbol component (5.2KB)
โ”‚   โ””โ”€โ”€ Symbol.d.ts                  # Symbol TypeScript declarations
โ”œโ”€โ”€ icon-sets/                       # Icon set system
โ”‚   โ”œโ”€โ”€ registry.js                  # Icon registry (2.1KB)
โ”‚   โ”œโ”€โ”€ lucide.js                   # Lucide integration (1.8KB)
โ”‚   โ””โ”€โ”€ *.d.ts files                # TypeScript declarations
โ”œโ”€โ”€ compatibility/                   # SF Symbols compatibility layer
โ”‚   โ”œโ”€โ”€ sf-symbols-mapping.js       # Core mappings (4.3KB)
โ”‚   โ”œโ”€โ”€ swiftui-shim.js             # SwiftUI shim (1.2KB)
โ”‚   โ”œโ”€โ”€ variant-mapping.js          # Variant mapping (2.8KB)
โ”‚   โ”œโ”€โ”€ weight-mapping.js           # Weight mapping (1.9KB)
โ”‚   โ”œโ”€โ”€ category-mapping.js         # Category system (3.1KB)
โ”‚   โ”œโ”€โ”€ migration-utilities.js      # Migration tools (2.4KB)
โ”‚   โ””โ”€โ”€ *.d.ts files                # TypeScript declarations
โ”œโ”€โ”€ animations/                      # Animation system
โ”‚   โ”œโ”€โ”€ SymbolAnimations.js         # Animation effects (3.7KB)
โ”‚   โ””โ”€โ”€ SymbolAnimations.d.ts       # Animation TypeScript declarations
โ”œโ”€โ”€ rendering/                       # Rendering engine
โ”‚   โ”œโ”€โ”€ AdvancedRenderer.js         # SVG rendering (2.9KB)
โ”‚   โ””โ”€โ”€ AdvancedRenderer.d.ts       # Rendering TypeScript declarations
โ”œโ”€โ”€ modifiers/                       # Symbol modifiers
โ”‚   โ”œโ”€โ”€ SymbolModifier.js           # Symbol-specific modifiers (1.4KB)
โ”‚   โ””โ”€โ”€ SymbolModifier.d.ts         # Modifier TypeScript declarations
โ””โ”€โ”€ utils/                          # Utility functions
    โ”œโ”€โ”€ icon-loader.js              # Icon loading utilities (1.6KB)
    โ”œโ”€โ”€ performance.js              # Performance utilities (1.3KB) 
    โ”œโ”€โ”€ accessibility.js            # Accessibility utilities (1.1KB)
    โ”œโ”€โ”€ custom-icon-set-builder.js  # Icon set builder (2.2KB)
    โ””โ”€โ”€ *.d.ts files               # TypeScript declarations

Tree-Shaking Benefits:

  • Core Symbol Only: 5.2KB for basic Symbol component
  • With Lucide Integration: 7.8KB for Symbol + Lucide icons
  • SF Symbols Compatibility: +4.3KB for SF Symbols mapping layer
  • Animation Effects: +3.7KB for complete animation system
  • Full Feature Set: 8.2KB base + 0.3KB per icon for complete functionality

๐ŸŽฏ Symbols Plugin API Reference โ€‹

Core Symbol Component โ€‹

typescript
// Basic symbol usage
import { Symbol } from '@tachui/symbols'

// Simple icon
const heartIcon = Symbol("heart")

// Configured symbol
const starIcon = Symbol("star", {
  variant: "filled",
  scale: "large",
  weight: "bold", 
  primaryColor: "#FFD700",
  effect: "bounce",
  accessibilityLabel: "Favorite item"
})

// Reactive symbol
const [isFavorited, setIsFavorited] = createSignal(false)
const reactiveHeart = Symbol("heart", {
  variant: () => isFavorited() ? "filled" : "none",
  primaryColor: () => isFavorited() ? "#FF0000" : "#999999"
})

SwiftUI Compatibility โ€‹

typescript
// SwiftUI Image(systemName:) compatibility
import { Image } from '@tachui/symbols/compatibility'

// Direct SwiftUI compatibility
const swiftUIImage = Image({ systemName: "heart.fill" })

// Migration from SwiftUI
// Before: Image(systemName: "gear")
// After:  Symbol("gear") or Symbol("settings")

Advanced Features โ€‹

typescript
// Custom icon set
import { IconSetRegistry, CustomIconSetBuilder } from '@tachui/symbols'

const customIcons = new CustomIconSetBuilder()
  .addIcon("my-icon", svgData)
  .addCategory("custom", ["my-icon"])
  .build()

IconSetRegistry.register(customIcons)
const customSymbol = Symbol("my-icon", { iconSet: "custom" })

// Symbol with all features
const advancedSymbol = Symbol("star", {
  // Appearance
  variant: "filled",
  scale: "large",
  weight: "bold",
  renderingMode: "palette",
  primaryColor: "#FFD700",
  secondaryColor: "#FFA500",
  
  // Animation
  effect: "bounce",
  effectValue: 0.8,
  effectSpeed: 1.5,
  
  // Accessibility
  accessibilityLabel: "Premium feature",
  accessibilityDescription: "This feature requires a premium subscription",
  
  // Performance
  eager: true,
  fallback: "circle"
})

Symbol Modifiers โ€‹

typescript
// Using symbol-specific modifiers
const styledSymbol = Symbol("heart")
  .modifier
  .filled()                    // variant("filled")
  .scaleLarge()               // scale("large")
  .weightBold()               // weight("bold")
  .bounce()                   // symbolEffect("bounce")
  .palette("#FF0000", "#FF9999") // Multi-color rendering
  .foregroundColor("#FF0000") // Core TachUI modifier
  .padding(16)                // Core TachUI modifier
  .build()

๐Ÿ“Š Symbols Plugin Statistics โ€‹

๐Ÿ“ˆ Production Metrics (August 2025) โ€‹

  • 23 Source Files: Complete symbol system with modular architecture
  • 18 Test Files: Comprehensive test coverage with 469 tests passing (95%+ coverage)
  • 1000+ Icons: Complete Lucide icon library with tree-shaking support
  • 500+ SF Symbol Mappings: Comprehensive SwiftUI compatibility layer
  • 7 Animation Effects: Production-ready symbol animations with accessibility support
  • 8.2KB Base Bundle: Core framework with 0.3KB per icon impact
  • Performance: <5ms icon loading, <16ms animation rendering

๐ŸŽฏ SwiftUI Compatibility Achievements โ€‹

  • 95% API Coverage: Near-complete SwiftUI Symbol API compatibility
  • Automatic Migration: Seamless migration from Image(systemName:) patterns
  • 500+ Symbol Mappings: Comprehensive SF Symbol to Lucide mappings with variants
  • Migration Tools: Automated project analysis and code generation utilities
  • Developer Experience: Familiar API for SwiftUI developers with enhanced web capabilities

๐Ÿ—๏ธ Framework Integration Excellence โ€‹

  • Zero Configuration: Works out-of-the-box with TachUI core framework
  • Reactive Integration: Full signal support for dynamic symbol properties
  • Modifier Compatibility: Seamless integration with TachUI's modifier system
  • Theme Awareness: Automatic theme support through TachUI's asset system
  • Error Recovery: Graceful fallbacks and comprehensive error handling
  • TypeScript Native: Complete type safety with intelligent auto-completion

โšก Performance & Accessibility โ€‹

  • Tree-Shaking Optimized: Import only the symbols you use
  • WCAG 2.1 AA Compliant: Full accessibility compliance with screen reader support
  • Reduced Motion: Accessibility-aware animation handling
  • High Contrast: Automatic high contrast mode support
  • Focus Management: Proper focus handling for keyboard navigation
  • Memory Efficient: Optimized memory usage with automatic cleanup

๐Ÿ”„ Development Workflow Integration โ€‹

The Symbols plugin integrates seamlessly with TachUI development:

  1. Installation: npm install @tachui/symbols as peer dependency to @tachui/core
  2. Zero Configuration: Works immediately with TachUI applications
  3. Selective Import: Tree-shakeable imports for optimal bundle sizes
  4. SwiftUI Migration: Seamless migration from SwiftUI Image patterns
  5. Custom Icons: Easy integration of custom icon sets and assets
  6. Testing: Comprehensive test utilities for symbol behavior and performance
  7. Production: Optimized builds with minimal bundle impact and maximum performance

Real-World Usage Examples โ€‹

typescript
// E-commerce application
const ProductCard = (product) => VStack([
  Symbol("heart", {
    variant: () => product.isFavorited() ? "filled" : "none",
    primaryColor: () => product.isFavorited() ? Assets.systemRed : Assets.systemGray
  }).modifier.onTap(() => product.toggleFavorite()).build(),
  
  Text(product.name),
  Text(`$${product.price}`)
])

// Navigation application  
const NavigationBar = () => HStack([
  Symbol("chevron.left")
    .modifier
    .onTap(() => navigation.back())
    .accessibilityLabel("Go back")
    .build(),
    
  Text("Settings").modifier.layoutPriority(1).build(),
  
  Symbol("gear")
    .modifier  
    .onTap(() => showSettingsMenu())
    .accessibilityLabel("More options")
    .build()
])

// Dashboard with status indicators
const SystemStatus = () => VStack([
  HStack([
    Symbol("wifi", {
      primaryColor: () => networkStatus() === 'connected' ? Assets.systemGreen : Assets.systemRed,
      effect: () => networkStatus() === 'connecting' ? 'pulse' : 'none'
    }),
    Text(`Network: ${networkStatus()}`)
  ]),
  
  HStack([
    Symbol("battery.100", {
      variant: () => batteryLevel() < 20 ? "slash" : "filled",
      primaryColor: () => batteryLevel() < 20 ? Assets.systemRed : Assets.systemGreen
    }),
    Text(`Battery: ${batteryLevel()}%`)
  ])
])

This document serves as the definitive guide to TachUI's Symbols plugin structure. The Symbols plugin represents the culmination of comprehensive SwiftUI compatibility, modern web performance optimization, and accessibility-first design principles, providing developers with a production-ready icon system that seamlessly bridges SwiftUI patterns with web development best practices.

Released under the MPL-2.0 License.