Files
please-pay-me/mobile/widgetbook/lib/use_cases/atoms/icons_use_cases.dart
T
2026-09-21 04:06:43 +03:00

69 lines
2.0 KiB
Dart

import 'package:flutter/cupertino.dart';
import 'package:please_pay_me/theme/theme.dart';
import 'package:please_pay_me/ui/ui.dart';
import 'package:please_pay_me_widgetbook/knobs/common_knobs.dart';
import 'package:please_pay_me_widgetbook/support/preview.dart';
import 'package:widgetbook/widgetbook.dart';
const _icons = <IconData>[
CupertinoIcons.house_fill,
CupertinoIcons.cart_fill,
CupertinoIcons.bag_fill,
CupertinoIcons.money_rubl_circle_fill,
CupertinoIcons.chart_pie_fill,
CupertinoIcons.calendar,
CupertinoIcons.bell_fill,
CupertinoIcons.gear_alt_fill,
CupertinoIcons.person_fill,
CupertinoIcons.creditcard_fill,
];
WidgetbookComponent iconsComponent() {
return WidgetbookComponent(
name: 'Icons',
useCases: [
WidgetbookUseCase(
name: 'Glyphs',
builder: (context) {
final size = knobDouble(context, label: 'Size', initialValue: 24, min: 12, max: 48);
final tint = knobTint(context);
return IosPreview(
child: Wrap(
spacing: AppSpacing.s5,
runSpacing: AppSpacing.s5,
alignment: WrapAlignment.center,
children: [
for (final icon in _icons) AppIcon(icon, size: size, color: tint),
],
),
);
},
),
WidgetbookUseCase(
name: 'Badges',
builder: (context) {
return IosPreview(
child: Wrap(
spacing: AppSpacing.s4,
runSpacing: AppSpacing.s4,
alignment: WrapAlignment.center,
children: [
for (final (index, icon) in _icons.indexed)
AppIconBadge(
icon: icon,
color: switch (index % 4) {
0 => AppColors.accent,
1 => AppColors.systemRed,
2 => AppColors.systemOrange,
_ => AppColors.systemGray,
},
),
],
),
);
},
),
],
);
}