Miler rider app: surface system, visible design language, backend lifecycle
Design system - MilerSurface ladder (canvas → working → raised → floating) with MilerPanel as layer 1; canvas moved to #DEE3EA so white separates at 1.290:1. - Visible vocabulary applied across Home, Deliveries, Activity, Account and the sheets: hero heads (tabular numeral + small caption, clamped at 1.3x), canvas wells for anything that opens, small filled tags for shelf labels, demoted placeholders. Recorded in DESIGN_SYSTEM.md §6. - One icon family: 222 Material glyphs migrated to Lucide; none left outside lib/xpress. - Colour semantics corrected: amber only for what is genuinely owed, brand red reserved for the live stop, disabled primaries go neutral rather than pale. Data and lifecycle - lib/data/lifecycle.dart reads mutations for what they prove; route_order.dart makes admin sequence the single ordering authority; service_day.dart, and stop_area.dart rewritten against live Coimbatore addresses (digit-token stripping, city stoplist, street suffixes, stammer collapse). - countLabel states the load once, in bags. Testing - 1440 tests passing; golden shot harnesses for Home, Deliveries, Activity, sheets and verify, with test/failures/ now gitignored (diff debris). - New pins: home_gutter_test, stop_area_test, plus updated structural bounds. Note: this commit also carries pre-existing working-tree deletions that were present before this work (API_SPEC.md, README.md, demo test fixtures). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:lucide_icons_flutter/lucide_icons.dart';
|
||||
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
||||
|
||||
import 'package:miler/views/helpers/constants/Colorconstants.dart';
|
||||
@@ -56,7 +57,7 @@ class OfflineBanner extends StatelessWidget {
|
||||
child: Row(
|
||||
children: [
|
||||
Icon(
|
||||
Icons.cloud_off_rounded,
|
||||
LucideIcons.cloudOff,
|
||||
size: 15.sp,
|
||||
color: ColorConstants.onAccent,
|
||||
),
|
||||
@@ -68,9 +69,7 @@ class OfflineBanner extends StatelessWidget {
|
||||
'Offline · Changes will sync when you’re back online',
|
||||
maxLines: 2,
|
||||
overflow: TextOverflow.ellipsis,
|
||||
style: MilerType.micro
|
||||
.on(ColorConstants.onAccent)
|
||||
.semibold,
|
||||
style: MilerType.micro.on(ColorConstants.onAccent).semibold,
|
||||
),
|
||||
),
|
||||
],
|
||||
@@ -101,7 +100,9 @@ class OfflineScope extends StatelessWidget {
|
||||
duration: DesignConstants.motionState,
|
||||
curve: Curves.easeOutCubic,
|
||||
alignment: Alignment.bottomCenter,
|
||||
child: offline ? const OfflineBanner() : const SizedBox(width: double.infinity),
|
||||
child: offline
|
||||
? const OfflineBanner()
|
||||
: const SizedBox(width: double.infinity),
|
||||
),
|
||||
Expanded(child: child),
|
||||
],
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import 'dart:async';
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:lucide_icons_flutter/lucide_icons.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:connectivity_plus/connectivity_plus.dart';
|
||||
|
||||
@@ -120,10 +121,14 @@ class _OfflinePageState extends State<OfflinePage>
|
||||
padding: const EdgeInsets.all(28),
|
||||
decoration: BoxDecoration(
|
||||
color: ColorConstants.pureSurface,
|
||||
borderRadius: BorderRadius.circular(DesignConstants.radiusXl),
|
||||
borderRadius: BorderRadius.circular(
|
||||
DesignConstants.radiusXl,
|
||||
),
|
||||
boxShadow: [
|
||||
BoxShadow(
|
||||
color: ColorConstants.slateText.withValues(alpha: .05),
|
||||
color: ColorConstants.slateText.withValues(
|
||||
alpha: .05,
|
||||
),
|
||||
blurRadius: 25,
|
||||
offset: const Offset(0, 12),
|
||||
),
|
||||
@@ -142,11 +147,13 @@ class _OfflinePageState extends State<OfflinePage>
|
||||
height: 130,
|
||||
decoration: BoxDecoration(
|
||||
shape: BoxShape.circle,
|
||||
color: ColorConstants.primary.withValues(alpha: .08),
|
||||
color: ColorConstants.primary.withValues(
|
||||
alpha: .08,
|
||||
),
|
||||
boxShadow: [
|
||||
BoxShadow(
|
||||
color: ColorConstants.primary.withValues(alpha:
|
||||
.10 + (.15 * t),
|
||||
color: ColorConstants.primary.withValues(
|
||||
alpha: .10 + (.15 * t),
|
||||
),
|
||||
blurRadius: 25 + (18 * t),
|
||||
spreadRadius: 2 + (8 * t),
|
||||
@@ -157,7 +164,7 @@ class _OfflinePageState extends State<OfflinePage>
|
||||
);
|
||||
},
|
||||
child: Icon(
|
||||
Icons.wifi_off_rounded,
|
||||
LucideIcons.wifiOff,
|
||||
color: ColorConstants.primary,
|
||||
size: 68,
|
||||
),
|
||||
|
||||
Reference in New Issue
Block a user