chore: refactor UI consistency using design system tokens and remove LucideIcons

This commit is contained in:
2026-02-12 18:37:31 +05:30
parent d7d9a34f07
commit ad6db7d851
62 changed files with 397 additions and 370 deletions

View File

@@ -33,7 +33,7 @@ class _ViewOrderCardState extends State<ViewOrderCard> {
showModalBottomSheet<void>(
context: context,
isScrollControlled: true,
backgroundColor: Colors.transparent,
backgroundColor: UiColors.transparent,
builder: (BuildContext context) => _OrderEditSheet(
order: order,
onUpdated: () => this.context.read<ViewOrdersCubit>().updateWeekOffset(0),
@@ -161,7 +161,7 @@ class _ViewOrderCardState extends State<ViewOrderCard> {
),
decoration: BoxDecoration(
color: statusColor.withValues(alpha: 0.1),
borderRadius: BorderRadius.circular(4),
borderRadius: UiConstants.radiusSm,
),
child: Row(
mainAxisSize: MainAxisSize.min,
@@ -174,7 +174,7 @@ class _ViewOrderCardState extends State<ViewOrderCard> {
shape: BoxShape.circle,
),
),
const SizedBox(width: 6),
const SizedBox(width: UiConstants.space1 + 2),
Text(
statusLabel.toUpperCase(),
style: UiTypography.footnote2b.copyWith(
@@ -215,7 +215,7 @@ class _ViewOrderCardState extends State<ViewOrderCard> {
color: UiColors.iconSecondary,
),
),
const SizedBox(width: 4),
const SizedBox(width: UiConstants.space1),
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
@@ -338,7 +338,7 @@ class _ViewOrderCardState extends State<ViewOrderCard> {
size: 16,
color: UiColors.textSuccess,
),
const SizedBox(width: 8),
const SizedBox(width: UiConstants.space2),
Text(
coveragePercent == 100
? 'All Workers Confirmed'
@@ -355,9 +355,9 @@ class _ViewOrderCardState extends State<ViewOrderCard> {
),
],
),
const SizedBox(height: 10),
const SizedBox(height: UiConstants.space2 + 2),
ClipRRect(
borderRadius: BorderRadius.circular(100),
borderRadius: UiConstants.radiusFull,
child: LinearProgressIndicator(
value: coveragePercent / 100,
backgroundColor: UiColors.bgSecondary,
@@ -397,7 +397,7 @@ class _ViewOrderCardState extends State<ViewOrderCard> {
color: UiColors.bgSecondary,
border: Border(top: BorderSide(color: UiColors.border)),
borderRadius: BorderRadius.vertical(
bottom: Radius.circular(12),
bottom: Radius.circular(UiConstants.radiusBase),
),
),
padding: const EdgeInsets.all(UiConstants.space5),
@@ -468,7 +468,7 @@ class _ViewOrderCardState extends State<ViewOrderCard> {
label.toUpperCase(),
style: UiTypography.titleUppercase4m.textSecondary,
),
const SizedBox(height: 4),
const SizedBox(height: UiConstants.space1),
Text(time, style: UiTypography.body1b.textPrimary),
],
),
@@ -516,8 +516,8 @@ class _ViewOrderCardState extends State<ViewOrderCard> {
Widget _buildWorkerRow(Map<String, dynamic> app) {
final String? phone = app['phone'] as String?;
return Container(
margin: const EdgeInsets.only(bottom: 12),
padding: const EdgeInsets.all(12),
margin: const EdgeInsets.only(bottom: UiConstants.space3),
padding: const EdgeInsets.all(UiConstants.space3),
decoration: BoxDecoration(
color: UiColors.white,
borderRadius: UiConstants.radiusMd,
@@ -526,14 +526,13 @@ class _ViewOrderCardState extends State<ViewOrderCard> {
child: Row(
children: <Widget>[
CircleAvatar(
radius: 20,
backgroundColor: UiColors.primary.withValues(alpha: 0.1),
child: Text(
(app['worker_name'] as String)[0],
style: UiTypography.body1b.copyWith(color: UiColors.primary),
),
),
const SizedBox(width: 12),
const SizedBox(width: UiConstants.space3),
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
@@ -542,7 +541,7 @@ class _ViewOrderCardState extends State<ViewOrderCard> {
app['worker_name'] as String,
style: UiTypography.body2m.textPrimary,
),
const SizedBox(height: 2),
const SizedBox(height: UiConstants.space1 / 2),
Row(
children: <Widget>[
if ((app['rating'] as num?) != null &&
@@ -559,7 +558,7 @@ class _ViewOrderCardState extends State<ViewOrderCard> {
),
],
if (app['check_in_time'] != null) ...<Widget>[
const SizedBox(width: 8),
const SizedBox(width: UiConstants.space2),
Container(
padding: const EdgeInsets.symmetric(
horizontal: 4,
@@ -567,7 +566,7 @@ class _ViewOrderCardState extends State<ViewOrderCard> {
),
decoration: BoxDecoration(
color: UiColors.textSuccess.withValues(alpha: 0.1),
borderRadius: BorderRadius.circular(4),
borderRadius: UiConstants.radiusSm,
),
child: Text(
'Checked In',
@@ -577,7 +576,7 @@ class _ViewOrderCardState extends State<ViewOrderCard> {
),
),
] else if ((app['status'] as String?)?.isNotEmpty ?? false) ...<Widget>[
const SizedBox(width: 8),
const SizedBox(width: UiConstants.space2),
Container(
padding: const EdgeInsets.symmetric(
horizontal: 4,
@@ -585,7 +584,7 @@ class _ViewOrderCardState extends State<ViewOrderCard> {
),
decoration: BoxDecoration(
color: UiColors.bgSecondary,
borderRadius: BorderRadius.circular(4),
borderRadius: UiConstants.radiusSm,
),
child: Text(
(app['status'] as String).toUpperCase(),
@@ -652,7 +651,7 @@ class _ViewOrderCardState extends State<ViewOrderCard> {
height: 36,
decoration: BoxDecoration(
color: UiColors.bgSecondary,
borderRadius: BorderRadius.circular(8),
borderRadius: BorderRadius.circular(UiConstants.space2),
),
child: Icon(icon, size: 16, color: UiColors.primary),
),
@@ -1447,11 +1446,7 @@ class _OrderEditSheetState extends State<_OrderEditSheet> {
SizedBox(width: UiConstants.space2),
Text(
'Add Position',
style: TextStyle(
color: UiColors.primary,
fontSize: 14,
fontWeight: FontWeight.w500,
),
style: UiTypography.body2m.primary,
),
],
),
@@ -1484,7 +1479,7 @@ class _OrderEditSheetState extends State<_OrderEditSheet> {
padding: const EdgeInsets.fromLTRB(20, 24, 20, 20),
decoration: const BoxDecoration(
color: UiColors.primary,
borderRadius: BorderRadius.vertical(top: Radius.circular(24)),
borderRadius: BorderRadius.vertical(top: Radius.circular(UiConstants.space6)),
),
child: Row(
children: <Widget>[
@@ -1887,7 +1882,7 @@ class _OrderEditSheetState extends State<_OrderEditSheet> {
height: MediaQuery.of(context).size.height * 0.95,
decoration: const BoxDecoration(
color: UiColors.bgSecondary,
borderRadius: BorderRadius.vertical(top: Radius.circular(24)),
borderRadius: BorderRadius.vertical(top: Radius.circular(UiConstants.space6)),
),
child: Column(
children: <Widget>[
@@ -2123,7 +2118,7 @@ class _OrderEditSheetState extends State<_OrderEditSheet> {
height: MediaQuery.of(context).size.height * 0.95,
decoration: const BoxDecoration(
color: UiColors.primary,
borderRadius: BorderRadius.vertical(top: Radius.circular(24)),
borderRadius: BorderRadius.vertical(top: Radius.circular(UiConstants.space6)),
),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,

View File

@@ -57,7 +57,7 @@ class ViewOrdersFilterTab extends StatelessWidget {
width: isSelected ? 40 : 0,
decoration: BoxDecoration(
color: UiColors.primary,
borderRadius: BorderRadius.circular(2),
borderRadius: UiConstants.radiusXs,
),
),
if (!isSelected) const SizedBox(height: 2),

View File

@@ -38,9 +38,9 @@ class ViewOrdersHeader extends StatelessWidget {
child: BackdropFilter(
filter: ImageFilter.blur(sigmaX: 10, sigmaY: 10),
child: Container(
decoration: const BoxDecoration(
color: Color(0xCCFFFFFF), // White with 0.8 alpha
border: Border(
decoration: BoxDecoration(
color: UiColors.white.withValues(alpha: 0.8), // White with 0.8 alpha
border: const Border(
bottom: BorderSide(color: UiColors.separatorSecondary),
),
),
@@ -122,7 +122,7 @@ class ViewOrdersHeader extends StatelessWidget {
IconButton(
icon: const Icon(
UiIcons.chevronLeft,
size: 20,
size: UiConstants.iconMd,
color: UiColors.iconSecondary,
),
onPressed: () => BlocProvider.of<ViewOrdersCubit>(
@@ -130,7 +130,7 @@ class ViewOrdersHeader extends StatelessWidget {
).updateWeekOffset(-1),
padding: EdgeInsets.zero,
constraints: const BoxConstraints(),
splashRadius: 20,
splashRadius: UiConstants.iconMd,
),
Text(
DateFormat('MMMM yyyy').format(calendarDays.first),
@@ -141,7 +141,7 @@ class ViewOrdersHeader extends StatelessWidget {
IconButton(
icon: const Icon(
UiIcons.chevronRight,
size: 20,
size: UiConstants.iconMd,
color: UiColors.iconSecondary,
),
onPressed: () => BlocProvider.of<ViewOrdersCubit>(
@@ -149,7 +149,7 @@ class ViewOrdersHeader extends StatelessWidget {
).updateWeekOffset(1),
padding: EdgeInsets.zero,
constraints: const BoxConstraints(),
splashRadius: 20,
splashRadius: UiConstants.iconMd,
),
],
),
@@ -157,7 +157,7 @@ class ViewOrdersHeader extends StatelessWidget {
// Calendar Grid
SizedBox(
height: 72,
height: UiConstants.space14 + UiConstants.space4,
child: ListView.separated(
padding: const EdgeInsets.symmetric(
horizontal: UiConstants.space5,
@@ -196,10 +196,10 @@ class ViewOrdersHeader extends StatelessWidget {
).selectDate(date),
child: AnimatedContainer(
duration: const Duration(milliseconds: 200),
width: 48,
width: UiConstants.space12,
decoration: BoxDecoration(
color: isSelected ? UiColors.primary : UiColors.white,
borderRadius: BorderRadius.circular(16),
borderRadius: UiConstants.radiusLg,
border: Border.all(
color: isSelected
? UiColors.primary
@@ -212,7 +212,7 @@ class ViewOrdersHeader extends StatelessWidget {
alpha: 0.25,
),
blurRadius: 12,
offset: const Offset(0, 4),
offset: const Offset(0, UiConstants.space1),
),
]
: null,
@@ -222,8 +222,8 @@ class ViewOrdersHeader extends StatelessWidget {
children: <Widget>[
Text(
DateFormat('dd').format(date),
style: UiTypography.title2b.copyWith(
fontSize: 18,
style: UiTypography.title1m.copyWith(
fontWeight: FontWeight.bold,
color: isSelected
? UiColors.white
: UiColors.textPrimary,
@@ -240,8 +240,8 @@ class ViewOrdersHeader extends StatelessWidget {
if (hasShifts) ...<Widget>[
const SizedBox(height: UiConstants.space1),
Container(
width: 6,
height: 6,
width: UiConstants.space1 + 2,
height: UiConstants.space1 + 2,
decoration: BoxDecoration(
color: isSelected
? UiColors.white

View File

@@ -28,7 +28,6 @@ dependencies:
krow_data_connect:
path: ../../../data_connect
# UI
lucide_icons: ^0.257.0
intl: ^0.20.1
url_launcher: ^6.3.1
firebase_data_connect: ^0.2.2+2