Add Widgetbook and theme component tokens
Build and deploy Flutter Web / build (push) Successful in 2m42s

This commit is contained in:
Ruslan Bakiev
2026-06-12 14:36:14 +07:00
parent 5e78a134b0
commit 2853cc2581
18 changed files with 1352 additions and 93 deletions
+81
View File
@@ -0,0 +1,81 @@
import 'package:flutter/material.dart';
import 'package:latlong2/latlong.dart';
import 'package:mapflow/app/theme/mapflow_theme.dart';
import 'package:mapflow/features/mapflow/domain/place_models.dart';
import 'package:mapflow/features/mapflow/presentation/widgets/place_photo_card.dart';
import 'package:mapflow/shared/auth/telegram_login_button.dart';
import 'package:widgetbook/widgetbook.dart';
void main() {
runApp(const MapflowWidgetbook());
}
class MapflowWidgetbook extends StatelessWidget {
const MapflowWidgetbook({super.key});
@override
Widget build(BuildContext context) {
return Widgetbook.material(
directories: [
WidgetbookCategory(
name: 'MapFlow',
children: [
WidgetbookComponent(
name: 'PlacePhotoCard',
useCases: [
WidgetbookUseCase(
name: 'Empty photo',
builder: (_) => Center(
child: SizedBox(
height: 172,
child: PlacePhotoCard(place: _samplePlace, onTap: () {}),
),
),
),
],
),
WidgetbookComponent(
name: 'TelegramLoginButton',
useCases: [
WidgetbookUseCase(
name: 'Idle',
builder: (_) => Center(
child: TelegramLoginButton(
onPressed: () {},
loading: false,
),
),
),
WidgetbookUseCase(
name: 'Loading',
builder: (_) => const Center(
child: TelegramLoginButton(onPressed: null, loading: true),
),
),
],
),
],
),
],
appBuilder: (context, child) {
return MaterialApp(
debugShowCheckedModeBanner: false,
theme: MapflowTheme.light(),
home: child,
);
},
);
}
}
const _samplePlace = PlaceRecommendation(
id: 'sample-place',
googlePlaceId: 'sample-google-place',
name: 'Morning Coffee',
area: '',
photoUrls: [],
coordinate: LatLng(10.7718, 106.6982),
traits: {PlaceTrait.calm, PlaceTrait.clean},
googlePrimaryType: 'cafe',
googleTypes: ['cafe'],
);