import 'dart:ui' show lerpDouble; import 'package:flutter/material.dart'; @immutable class PluriWaveTokens extends ThemeExtension { const PluriWaveTokens({ required this.deepViolet, required this.electricMagenta, required this.warmCoral, required this.glassSurface, required this.glassBorder, required this.glowColor, required this.radiusSm, required this.radiusMd, required this.radiusLg, required this.spacingXs, required this.spacingSm, required this.spacingMd, required this.spacingLg, }); final Color deepViolet; final Color electricMagenta; final Color warmCoral; final Color glassSurface; final Color glassBorder; final Color glowColor; final double radiusSm; final double radiusMd; final double radiusLg; final double spacingXs; final double spacingSm; final double spacingMd; final double spacingLg; static const dark = PluriWaveTokens( deepViolet: Color(0xFF07121A), electricMagenta: Color(0xFF21D4D9), warmCoral: Color(0xFFF4B860), glassSurface: Color(0x1FFFFFFF), glassBorder: Color(0x33FFFFFF), glowColor: Color(0x6621D4D9), radiusSm: 14, radiusMd: 22, radiusLg: 30, spacingXs: 4, spacingSm: 8, spacingMd: 16, spacingLg: 24, ); @override PluriWaveTokens copyWith({ Color? deepViolet, Color? electricMagenta, Color? warmCoral, Color? glassSurface, Color? glassBorder, Color? glowColor, double? radiusSm, double? radiusMd, double? radiusLg, double? spacingXs, double? spacingSm, double? spacingMd, double? spacingLg, }) { return PluriWaveTokens( deepViolet: deepViolet ?? this.deepViolet, electricMagenta: electricMagenta ?? this.electricMagenta, warmCoral: warmCoral ?? this.warmCoral, glassSurface: glassSurface ?? this.glassSurface, glassBorder: glassBorder ?? this.glassBorder, glowColor: glowColor ?? this.glowColor, radiusSm: radiusSm ?? this.radiusSm, radiusMd: radiusMd ?? this.radiusMd, radiusLg: radiusLg ?? this.radiusLg, spacingXs: spacingXs ?? this.spacingXs, spacingSm: spacingSm ?? this.spacingSm, spacingMd: spacingMd ?? this.spacingMd, spacingLg: spacingLg ?? this.spacingLg, ); } @override PluriWaveTokens lerp(covariant ThemeExtension? other, double t) { if (other is! PluriWaveTokens) return this; return PluriWaveTokens( deepViolet: Color.lerp(deepViolet, other.deepViolet, t) ?? deepViolet, electricMagenta: Color.lerp(electricMagenta, other.electricMagenta, t) ?? electricMagenta, warmCoral: Color.lerp(warmCoral, other.warmCoral, t) ?? warmCoral, glassSurface: Color.lerp(glassSurface, other.glassSurface, t) ?? glassSurface, glassBorder: Color.lerp(glassBorder, other.glassBorder, t) ?? glassBorder, glowColor: Color.lerp(glowColor, other.glowColor, t) ?? glowColor, radiusSm: lerpDouble(radiusSm, other.radiusSm, t) ?? radiusSm, radiusMd: lerpDouble(radiusMd, other.radiusMd, t) ?? radiusMd, radiusLg: lerpDouble(radiusLg, other.radiusLg, t) ?? radiusLg, spacingXs: lerpDouble(spacingXs, other.spacingXs, t) ?? spacingXs, spacingSm: lerpDouble(spacingSm, other.spacingSm, t) ?? spacingSm, spacingMd: lerpDouble(spacingMd, other.spacingMd, t) ?? spacingMd, spacingLg: lerpDouble(spacingLg, other.spacingLg, t) ?? spacingLg, ); } }