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: `
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;
}