import { Component } from '@angular/core'; import { // Scroll & Progress FlScrollProgressComponent, // Backgrounds & Fields FlParticleFieldComponent, FlFlowFieldComponent, FlMatrixRainComponent, FlAuroraComponent, FlVoronoiMeshComponent, FlFractalLandscapeComponent, FlAmbientLightComponent, FlFloatingLayersComponent, // Text Effects FlGradientTextComponent, FlTypewriterComponent, FlTextShimmerComponent, FlGlitchTextComponent, FlScrambleRevealComponent, FlCounterRollupComponent, // Cards FlTiltCardComponent, FlHolographicCardComponent, FlSpotlightCardComponent, // Generative Art FlBlobComponent, FlGenerativePatternComponent, FlGradientMeshComponent, // Dividers FlWaveDividerComponent, FlGradientDividerComponent, FlGlowDividerComponent, // Celebrations FlConfettiComponent, FlFireworksComponent, FlSparkleComponent, FlEmojiRainComponent, FlCheckmarkFlourishComponent, // Patterns & Textures FlDotGridComponent, FlBlueprintGridComponent, FlTopographicLinesComponent, FlCircuitBoardComponent, // Status Indicators FlBreathingDotComponent, FlLiveIndicatorComponent, FlSignalStrengthComponent, FlHeartbeatLineComponent, // Directives FlHoverLiftDirective, FlMagneticDirective, FlRippleDirective, FlNeonGlowDirective, FlCursorGlowDirective, FlRevealOnScrollDirective, FlPressSquishDirective, FlTextGradientDirective, } from '@sda/flair-elements-ui'; @Component({ selector: 'app-root', standalone: true, imports: [ // Scroll & Progress FlScrollProgressComponent, // Backgrounds & Fields FlParticleFieldComponent, FlFlowFieldComponent, FlMatrixRainComponent, FlAuroraComponent, FlVoronoiMeshComponent, FlFractalLandscapeComponent, FlAmbientLightComponent, // Text Effects FlGradientTextComponent, FlTypewriterComponent, FlTextShimmerComponent, FlGlitchTextComponent, FlScrambleRevealComponent, FlCounterRollupComponent, // Cards FlTiltCardComponent, FlHolographicCardComponent, FlSpotlightCardComponent, // Generative Art FlBlobComponent, FlGenerativePatternComponent, FlGradientMeshComponent, // Dividers FlWaveDividerComponent, FlGradientDividerComponent, FlGlowDividerComponent, // Celebrations FlConfettiComponent, FlFireworksComponent, FlSparkleComponent, FlEmojiRainComponent, FlCheckmarkFlourishComponent, // Patterns & Textures FlDotGridComponent, FlBlueprintGridComponent, FlTopographicLinesComponent, FlCircuitBoardComponent, // Status Indicators FlBreathingDotComponent, FlLiveIndicatorComponent, FlSignalStrengthComponent, FlHeartbeatLineComponent, // Directives FlHoverLiftDirective, FlMagneticDirective, FlRippleDirective, FlNeonGlowDirective, FlCursorGlowDirective, FlRevealOnScrollDirective, FlPressSquishDirective, FlTextGradientDirective, ], template: `
Flair Elements UI

Interactive Cards

Tilt Card

3D tilt effect that follows your cursor

Holographic Card

Iridescent holographic shimmer effect

Spotlight Card

Dynamic spotlight that follows your mouse

Text Effects

Beautiful Gradients
Shimmering Effect

Canvas Backgrounds

Flow Field
Matrix Rain
Aurora
Voronoi Mesh
Fractal Landscape

Generative Art

Blob
Generative Pattern
Gradient Mesh

Celebrations

@if (triggerConfetti) { } @if (triggerFireworks) { } @if (triggerSparkle) { } @if (triggerEmoji) { } @if (triggerCheckmark) { }

Interactive Directives

Hover Lift

Elevates on hover

Magnetic

Attracted to cursor

Ripple

Click for ripple effect

Neon Glow

Glowing neon border

Cursor Glow

Glow follows cursor

Reveal on Scroll

Animates into view

Press Squish

Click to squish

Text Gradient

Gradient text directive

Patterns & Textures

Dot Grid
Blueprint Grid
Topographic Lines
Circuit Board

Status Indicators

Breathing Dot
Live Indicator
Signal Strength
Heartbeat Line

Ambient Effects

Ambient Light is active throughout this entire showcase, creating subtle atmospheric effects in the background.

`, styles: [` :host { display: block; background: #0a0a0f; color: #ffffff; min-height: 100vh; } .showcase { position: relative; overflow-x: hidden; } /* Ambient Backgrounds */ .ambient-bg { position: fixed; top: 0; left: 0; width: 100%; height: 100%; z-index: 0; pointer-events: none; opacity: 0.3; } /* Scroll Progress */ .scroll-progress { position: fixed; top: 0; left: 0; width: 100%; z-index: 1000; } /* Hero Section */ .hero { position: relative; height: 100vh; display: flex; align-items: center; justify-content: center; overflow: hidden; } .hero-particles { position: absolute; top: 0; left: 0; width: 100%; height: 100%; z-index: 1; } .hero-content { position: relative; z-index: 2; text-align: center; padding: 2rem; max-width: 1200px; } .hero-title { font-size: 5rem; font-weight: 900; margin-bottom: 2rem; line-height: 1.2; } .hero-subtitle { font-size: 1.5rem; opacity: 0.9; max-width: 800px; margin: 0 auto; } /* Section Styles */ .section { position: relative; z-index: 1; padding: 6rem 2rem; max-width: 1400px; margin: 0 auto; } .section-title { font-size: 3rem; font-weight: 800; text-align: center; margin-bottom: 4rem; background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; } /* Cards Grid */ .cards-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 2rem; margin-bottom: 2rem; } .card-content { padding: 3rem 2rem; text-align: center; background: rgba(255, 255, 255, 0.05); border-radius: 1rem; backdrop-filter: blur(10px); } .card-content h3 { font-size: 1.8rem; margin-bottom: 1rem; color: #fff; } .card-content p { font-size: 1rem; opacity: 0.8; line-height: 1.6; } /* Text Effects */ .text-effects { display: flex; flex-direction: column; gap: 2rem; max-width: 800px; margin: 0 auto; } .text-effect-item { display: flex; align-items: center; justify-content: space-between; padding: 2rem; background: rgba(255, 255, 255, 0.03); border-radius: 1rem; border: 1px solid rgba(255, 255, 255, 0.1); } .text-effect-item label { font-weight: 600; font-size: 1.1rem; opacity: 0.7; min-width: 150px; } /* Canvas Grid */ .canvas-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(350px, 1fr)); gap: 2rem; } .canvas-box { position: relative; height: 300px; border-radius: 1rem; overflow: hidden; border: 1px solid rgba(255, 255, 255, 0.1); background: rgba(0, 0, 0, 0.5); } .canvas-label { position: absolute; bottom: 1rem; left: 50%; transform: translateX(-50%); background: rgba(0, 0, 0, 0.8); padding: 0.5rem 1.5rem; border-radius: 2rem; font-size: 0.9rem; font-weight: 600; z-index: 10; backdrop-filter: blur(10px); } /* Generative Grid */ .generative-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(350px, 1fr)); gap: 2rem; } .generative-box { position: relative; height: 350px; border-radius: 1rem; overflow: hidden; border: 1px solid rgba(255, 255, 255, 0.1); background: rgba(0, 0, 0, 0.5); } /* Celebrations */ .celebrations-section { position: relative; } .celebrations { display: flex; flex-wrap: wrap; gap: 1.5rem; justify-content: center; align-items: center; padding: 2rem; } .celebration-overlay { position: fixed; top: 0; left: 0; width: 100vw; height: 100vh; z-index: 100; } .celebration-btn { padding: 1rem 2rem; font-size: 1.1rem; font-weight: 600; background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); color: white; border: none; border-radius: 0.75rem; cursor: pointer; transition: all 0.3s ease; box-shadow: 0 4px 15px rgba(102, 126, 234, 0.4); } .celebration-btn:hover { transform: translateY(-2px); box-shadow: 0 6px 20px rgba(102, 126, 234, 0.6); } /* Directives Grid */ .directives-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 2rem; } .directive-card { padding: 2.5rem 2rem; background: rgba(255, 255, 255, 0.05); border-radius: 1rem; border: 1px solid rgba(255, 255, 255, 0.1); text-align: center; cursor: pointer; transition: all 0.3s ease; } .directive-card h4 { font-size: 1.3rem; margin-bottom: 0.75rem; color: #fff; } .directive-card p { font-size: 0.95rem; opacity: 0.7; line-height: 1.5; } .directive-card:hover { background: rgba(255, 255, 255, 0.08); border-color: rgba(255, 255, 255, 0.2); } /* Patterns Grid */ .patterns-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 2rem; } .pattern-box { position: relative; height: 300px; border-radius: 1rem; overflow: hidden; border: 1px solid rgba(255, 255, 255, 0.1); background: rgba(0, 0, 0, 0.5); } /* Status Grid */ .status-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 3rem; padding: 2rem; } .status-item { display: flex; flex-direction: column; align-items: center; gap: 1rem; padding: 2rem; background: rgba(255, 255, 255, 0.03); border-radius: 1rem; border: 1px solid rgba(255, 255, 255, 0.1); } .status-item span { font-size: 1rem; font-weight: 600; opacity: 0.8; } /* Final Section */ .final-section { min-height: 50vh; display: flex; flex-direction: column; align-items: center; justify-content: center; } .ambient-note { max-width: 700px; text-align: center; font-size: 1.2rem; line-height: 1.8; opacity: 0.8; padding: 2rem; background: rgba(255, 255, 255, 0.05); border-radius: 1rem; border: 1px solid rgba(255, 255, 255, 0.1); } /* Footer */ .footer { text-align: center; padding: 4rem 2rem; font-size: 1.5rem; position: relative; z-index: 1; } /* Responsive Design */ @media (max-width: 768px) { .hero-title { font-size: 3rem; } .hero-subtitle { font-size: 1.2rem; } .section-title { font-size: 2rem; } .cards-grid, .canvas-grid, .generative-grid, .directives-grid, .patterns-grid { grid-template-columns: 1fr; } .text-effect-item { flex-direction: column; gap: 1rem; text-align: center; } .text-effect-item label { min-width: auto; } } `] }) export class AppComponent { triggerConfetti = false; triggerFireworks = false; triggerSparkle = false; triggerEmoji = false; triggerCheckmark = false; }