Initial commit

This commit is contained in:
2026-06-23 11:29:07 +05:30
commit 401cf600e8
224 changed files with 12165 additions and 0 deletions

View File

@@ -0,0 +1,122 @@
import 'package:flutter/material.dart';
import 'package:doormile/core/theme/app_colors.dart';
/// A saved or recent address entry.
class AddressEntry {
final String label; // e.g. "Home", "Work"
final String line; // full address line
final IconData icon;
final Color iconBg;
final Color iconColor;
const AddressEntry({
required this.label,
required this.line,
required this.icon,
this.iconBg = AppColors.surfaceContainer,
this.iconColor = AppColors.onSurfaceVariant,
});
}
enum OrderStatus { active, delivered, cancelled }
extension OrderStatusX on OrderStatus {
String get label => switch (this) {
OrderStatus.active => 'In Transit',
OrderStatus.delivered => 'Delivered',
OrderStatus.cancelled => 'Cancelled',
};
Color get color => switch (this) {
OrderStatus.active => AppColors.tertiary,
OrderStatus.delivered => AppColors.success,
OrderStatus.cancelled => AppColors.error,
};
Color get bg => switch (this) {
OrderStatus.active => AppColors.tertiaryFixed,
OrderStatus.delivered => const Color(0xFFE3F6EC),
OrderStatus.cancelled => AppColors.errorContainer,
};
}
/// One stop in a shipment journey timeline.
class JourneyStep {
final String title;
final String subtitle;
final String time;
final IconData icon;
final Color color;
final bool done;
final bool active;
final String? note;
const JourneyStep({
required this.title,
required this.subtitle,
required this.time,
required this.icon,
required this.color,
this.done = false,
this.active = false,
this.note,
});
}
class ActivityLog {
final String title;
final String subtitle;
final IconData icon;
const ActivityLog(this.title, this.subtitle, this.icon);
}
/// A parcel order.
class Order {
final String id;
final String fromLabel;
final String fromSub;
final String toLabel;
final String toSub;
final String date;
final double amount;
final OrderStatus status;
final String parcelType;
final String weight;
final String size;
final double progress; // 0..1
final String co2Saved;
final String eta;
final bool ecoRoute;
const Order({
required this.id,
required this.fromLabel,
required this.fromSub,
required this.toLabel,
required this.toSub,
required this.date,
required this.amount,
required this.status,
this.parcelType = 'Documents',
this.weight = '01 kg',
this.size = 'Small',
this.progress = 0.0,
this.co2Saved = '0.8kg',
this.eta = '',
this.ecoRoute = true,
});
}
class FaqItem {
final String question;
final String answer;
const FaqItem(this.question, this.answer);
}
class ChatMessage {
final String text;
final bool fromUser;
const ChatMessage(this.text, {this.fromUser = false});
}