mirror of
https://github.com/R0m1k3/xtremflow.git
synced 2026-10-23 15:08:07 +02:00
feat(theme): complete redesign to Cyber-Cinematic Glass (Stitch)
Replace the legacy Apple TV-style purple/cyan theme with the full Google Stitch Cyber-Cinematic Glass design system across the entire app (desktop + mobile). - New Material 3 dark ColorScheme: background #121317, primary #adc6ff, primaryContainer #4b8eff, surface containers, etc. - Typography: Space Grotesk (headlines) + Inter (body/labels) - 3-level glassmorphism via GlassContainer: base, glass, floating - Primary gradient: #007AFF → #00C6FF with blue glow effects - Removed old compatibility aliases (focusColor, border, textPrimary, textSecondary); all code now uses semantic Stitch tokens - Systematically replaced all Colors.white/black/red/grey and GoogleFonts.roboto/outfit with Stitch equivalents - All 36 lib/ files updated, zero compilation errors Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
1 parent
a9a1127d6b
commit
f7eaa724e2
36 files changed
+1651
-986
No files matched your search
@@ -101,7 +101,7 @@ class _RecordingModalState extends State<RecordingModal> {
|
||||
// Header
|
||||
Row(
|
||||
children: [
|
||||
const Icon(Icons.fiber_manual_record, color: Colors.red),
|
||||
const Icon(Icons.fiber_manual_record, color: AppColors.error),
|
||||
const SizedBox(width: 12),
|
||||
Expanded(
|
||||
child: Text(
|
||||
@@ -109,7 +109,7 @@ class _RecordingModalState extends State<RecordingModal> {
|
||||
style: GoogleFonts.inter(
|
||||
fontSize: 20,
|
||||
fontWeight: FontWeight.bold,
|
||||
color: Colors.white,
|
||||
color: AppColors.onSurface,
|
||||
),
|
||||
),
|
||||
),
|
||||
@@ -120,12 +120,12 @@ class _RecordingModalState extends State<RecordingModal> {
|
||||
// Informations Chaine
|
||||
Text(
|
||||
'Chaîne ciblée :',
|
||||
style: GoogleFonts.inter(color: Colors.white54, fontSize: 14),
|
||||
style: GoogleFonts.inter(color: AppColors.onSurfaceVariant, fontSize: 14),
|
||||
),
|
||||
const SizedBox(height: 8),
|
||||
Text(
|
||||
widget.channel.name,
|
||||
style: GoogleFonts.inter(color: Colors.white, fontSize: 18),
|
||||
style: GoogleFonts.inter(color: AppColors.onSurface, fontSize: 18),
|
||||
),
|
||||
const SizedBox(height: 24),
|
||||
|
||||
@@ -139,7 +139,7 @@ class _RecordingModalState extends State<RecordingModal> {
|
||||
children: [
|
||||
Text(
|
||||
'Date :',
|
||||
style: GoogleFonts.inter(color: Colors.white54, fontSize: 14),
|
||||
style: GoogleFonts.inter(color: AppColors.onSurfaceVariant, fontSize: 14),
|
||||
),
|
||||
const SizedBox(height: 8),
|
||||
TvFocusableCard(
|
||||
@@ -168,12 +168,12 @@ class _RecordingModalState extends State<RecordingModal> {
|
||||
),
|
||||
child: Row(
|
||||
children: [
|
||||
const Icon(Icons.calendar_today, color: Colors.white, size: 18),
|
||||
const Icon(Icons.calendar_today, color: AppColors.onSurface, size: 18),
|
||||
const SizedBox(width: 8),
|
||||
Expanded(
|
||||
child: Text(
|
||||
'${_startTime.day.toString().padLeft(2, '0')}/${_startTime.month.toString().padLeft(2, '0')}/${_startTime.year}',
|
||||
style: GoogleFonts.inter(color: Colors.white),
|
||||
style: GoogleFonts.inter(color: AppColors.onSurface),
|
||||
overflow: TextOverflow.ellipsis,
|
||||
),
|
||||
),
|
||||
@@ -193,7 +193,7 @@ class _RecordingModalState extends State<RecordingModal> {
|
||||
children: [
|
||||
Text(
|
||||
'Heure :',
|
||||
style: GoogleFonts.inter(color: Colors.white54, fontSize: 14),
|
||||
style: GoogleFonts.inter(color: AppColors.onSurfaceVariant, fontSize: 14),
|
||||
),
|
||||
const SizedBox(height: 8),
|
||||
TvFocusableCard(
|
||||
@@ -231,12 +231,12 @@ class _RecordingModalState extends State<RecordingModal> {
|
||||
),
|
||||
child: Row(
|
||||
children: [
|
||||
const Icon(Icons.access_time, color: Colors.white, size: 18),
|
||||
const Icon(Icons.access_time, color: AppColors.onSurface, size: 18),
|
||||
const SizedBox(width: 8),
|
||||
Expanded(
|
||||
child: Text(
|
||||
'${_startTime.hour.toString().padLeft(2, '0')}:${_startTime.minute.toString().padLeft(2, '0')}',
|
||||
style: GoogleFonts.inter(color: Colors.white),
|
||||
style: GoogleFonts.inter(color: AppColors.onSurface),
|
||||
),
|
||||
),
|
||||
],
|
||||
@@ -255,17 +255,16 @@ class _RecordingModalState extends State<RecordingModal> {
|
||||
children: [
|
||||
Text(
|
||||
'Durée (min) :',
|
||||
style: GoogleFonts.inter(color: Colors.white54, fontSize: 14),
|
||||
style: GoogleFonts.inter(color: AppColors.onSurfaceVariant, fontSize: 14),
|
||||
),
|
||||
const SizedBox(height: 8),
|
||||
GlassContainer(
|
||||
GlassContainer.glass(
|
||||
borderRadius: 8,
|
||||
opacity: 0.1,
|
||||
padding: EdgeInsets.zero,
|
||||
child: Row(
|
||||
children: [
|
||||
IconButton(
|
||||
icon: const Icon(Icons.remove, color: Colors.white, size: 18),
|
||||
icon: const Icon(Icons.remove, color: AppColors.onSurface, size: 18),
|
||||
padding: EdgeInsets.zero,
|
||||
constraints: const BoxConstraints(minWidth: 32, minHeight: 46),
|
||||
onPressed: () {
|
||||
@@ -278,11 +277,11 @@ class _RecordingModalState extends State<RecordingModal> {
|
||||
child: Text(
|
||||
'$_durationMinutes',
|
||||
textAlign: TextAlign.center,
|
||||
style: GoogleFonts.inter(color: Colors.white),
|
||||
style: GoogleFonts.inter(color: AppColors.onSurface),
|
||||
),
|
||||
),
|
||||
IconButton(
|
||||
icon: const Icon(Icons.add, color: Colors.white, size: 18),
|
||||
icon: const Icon(Icons.add, color: AppColors.onSurface, size: 18),
|
||||
padding: EdgeInsets.zero,
|
||||
constraints: const BoxConstraints(minWidth: 32, minHeight: 46),
|
||||
onPressed: () {
|
||||
@@ -309,7 +308,7 @@ class _RecordingModalState extends State<RecordingModal> {
|
||||
onPressed: _isLoading ? null : () => Navigator.of(context).pop(),
|
||||
child: Text(
|
||||
'Annuler',
|
||||
style: GoogleFonts.inter(color: Colors.white54),
|
||||
style: GoogleFonts.inter(color: AppColors.onSurfaceVariant),
|
||||
),
|
||||
),
|
||||
const SizedBox(width: 16),
|
||||
@@ -319,18 +318,18 @@ class _RecordingModalState extends State<RecordingModal> {
|
||||
child: Container(
|
||||
padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 12),
|
||||
decoration: BoxDecoration(
|
||||
color: Colors.redAccent.withOpacity(0.8),
|
||||
color: AppColors.error.withOpacity(0.8),
|
||||
borderRadius: BorderRadius.circular(8),
|
||||
),
|
||||
child: _isLoading
|
||||
? const SizedBox(
|
||||
width: 20, height: 20,
|
||||
child: CircularProgressIndicator(color: Colors.white, strokeWidth: 2),
|
||||
child: CircularProgressIndicator(color: AppColors.onSurface, strokeWidth: 2),
|
||||
)
|
||||
: Text(
|
||||
'Enregistrer de suite',
|
||||
style: GoogleFonts.inter(
|
||||
color: Colors.white,
|
||||
color: AppColors.onSurface,
|
||||
fontWeight: FontWeight.bold,
|
||||
),
|
||||
),
|
||||
@@ -349,12 +348,12 @@ class _RecordingModalState extends State<RecordingModal> {
|
||||
child: _isLoading
|
||||
? const SizedBox(
|
||||
width: 20, height: 20,
|
||||
child: CircularProgressIndicator(color: Colors.white, strokeWidth: 2),
|
||||
child: CircularProgressIndicator(color: AppColors.onSurface, strokeWidth: 2),
|
||||
)
|
||||
: Text(
|
||||
'Programmer',
|
||||
style: GoogleFonts.inter(
|
||||
color: Colors.white,
|
||||
color: AppColors.onSurface,
|
||||
fontWeight: FontWeight.bold,
|
||||
),
|
||||
),
|
||||
|
||||
Reference in new issue
Block a user