device infos

This commit is contained in:
2026-08-28 15:07:30 +05:30
parent 5723d373b2
commit 69f4f3e909
84 changed files with 4337 additions and 2339 deletions

View File

@@ -107,6 +107,44 @@ class ColorConstants {
static const Color onWarning = Color(0xFFFFFFFF);
static const Color warningContainer = Color(0xFFFEF3C7);
/// **Waiting on the rider** — the state word on a stop he has not decided yet.
///
/// ── Why a fourth amber, and not one of the three above ──
///
/// Pending was neutral grey, on a real argument: on a fresh morning *every*
/// stop is pending, so painting them all in the exception hue opens the whole
/// screen in warning and leaves nothing to say with when something actually
/// goes wrong. That argument is still right about [warning], which is this
/// app's word for *something has gone off plan* — a skipped stop, a short
/// payment, a bag that never arrived.
///
/// What it got wrong is that "nobody has done anything about this yet" is
/// itself worth a colour. A rider scanning a run had to infer it from the
/// *absence* of one, which is the single thing a glance cannot do, and
/// undecided work is precisely the work the screen exists to move.
///
/// So it gets its own: a gold that reads as "waiting" rather than as
/// "wrong", far enough round the wheel from the burnt orange of [warning]
/// that a pending stop and a skipped one are two different marks — and dark
/// enough to be *text*, which no honest yellow on a light ground can be
/// without going most of the way to brown. 5.54:1 on white, 4.83:1 on the
/// canvas, 4.81:1 on [cardSurface]: AA at the 13.5sp these words are set at,
/// on every surface Home draws them on.
static const Color pendingAmber = Color(0xFF8A6100);
/// **In the rider's hands** — collected from the counter, not yet delivered.
///
/// Green is the wrong end of the story for it. [acceptGreen] now marks the
/// moment the rider *takes a stop on*, and green everywhere else in this app
/// means finished — so a bag that has been picked up but not delivered would
/// have worn either "already decided" or "already done", and it is neither.
///
/// This is the app's own delivery hue, which is exactly what a picked bag has
/// become: work that has left the pickup leg and belongs to the round. Same
/// value as [deliveryAccent], named separately so the two can part company if
/// the route map ever needs its own.
static const Color pickedBlue = deliveryAccent;
// Extended Color Palette for Professional UI
/// Captions, labels and secondary body text — the second most-used colour in
/// the app after [slateText], on 89 call sites across every screen.

View File

@@ -1989,7 +1989,7 @@ class ErrorRetry extends StatelessWidget {
/// ─────────────────────────────────────────────────────────────────────────
class StopSourceLine extends StatelessWidget {
final String source;
final String bagLabel;
final String printedLabel;
/// Dims both when the stop is not actionable, matching the card around it.
final bool muted;
@@ -2001,12 +2001,12 @@ class StopSourceLine extends StatelessWidget {
const StopSourceLine({
super.key,
required this.source,
required this.bagLabel,
required this.printedLabel,
this.muted = false,
this.topGap = 6,
});
bool get _isEmpty => source.isEmpty && bagLabel.isEmpty;
bool get _isEmpty => source.isEmpty && printedLabel.isEmpty;
@override
Widget build(BuildContext context) {
@@ -2053,12 +2053,12 @@ class StopSourceLine extends StatelessWidget {
),
),
),
if (source.isNotEmpty && bagLabel.isNotEmpty)
if (source.isNotEmpty && printedLabel.isNotEmpty)
const SizedBox(width: 8),
if (bagLabel.isNotEmpty)
if (printedLabel.isNotEmpty)
Flexible(
child: Text(
'Bag $bagLabel',
printedLabel,
maxLines: 1,
overflow: TextOverflow.ellipsis,
style: TextStyle(