From 4cf8628b247a6a0131e60d0a48d91f39585b99ab Mon Sep 17 00:00:00 2001 From: PROF25-FINAL Date: Wed, 28 May 2025 12:03:47 +0300 Subject: [PATCH] SmallHeaderWidget --- assets/icons/header_plus.svg | 4 ++ example/lib/storybook.dart | 1 + lib/matule_uikit.dart | 1 + .../presentation/widgets/header_widget.dart | 72 +++++++++++++++++++ 4 files changed, 78 insertions(+) create mode 100644 assets/icons/header_plus.svg create mode 100644 lib/src/presentation/widgets/header_widget.dart diff --git a/assets/icons/header_plus.svg b/assets/icons/header_plus.svg new file mode 100644 index 0000000..1e5f548 --- /dev/null +++ b/assets/icons/header_plus.svg @@ -0,0 +1,4 @@ + + + + diff --git a/example/lib/storybook.dart b/example/lib/storybook.dart index 118342e..f3c88b2 100644 --- a/example/lib/storybook.dart +++ b/example/lib/storybook.dart @@ -12,6 +12,7 @@ class StorybookApp extends StatelessWidget { return UtilsMaterialWrapper(widget: widget); }, stories: [ + SmallHeaderWidget.story, BaseCardWidget.story, PrimaryCardWidget.story, CartCardWidget.story, diff --git a/lib/matule_uikit.dart b/lib/matule_uikit.dart index 3f11a2e..96066b5 100644 --- a/lib/matule_uikit.dart +++ b/lib/matule_uikit.dart @@ -6,6 +6,7 @@ export "src/presentation/theme/styles.dart"; export "src/presentation/widgets/button_widget.dart"; export "src/presentation/widgets/card_widget.dart"; +export "src/presentation/widgets/header_widget.dart"; export "src/presentation/widgets/input_widget.dart"; export "src/presentation/widgets/tabbar_widget.dart"; export "src/presentation/widgets/utils.dart"; diff --git a/lib/src/presentation/widgets/header_widget.dart b/lib/src/presentation/widgets/header_widget.dart new file mode 100644 index 0000000..766cd71 --- /dev/null +++ b/lib/src/presentation/widgets/header_widget.dart @@ -0,0 +1,72 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_screenutil/flutter_screenutil.dart'; +import 'package:flutter_svg/flutter_svg.dart'; +import 'package:storybook_flutter/storybook_flutter.dart'; + +import '../../../matule_uikit.dart'; + +class SmallHeaderWidget extends StatelessWidget { + final CustomTheme theme; + final String title; + final Function onTap; + + const SmallHeaderWidget({ + super.key, + required this.theme, + required this.title, + required this.onTap, + }); + + @override + Widget build(BuildContext context) { + return SizedBox( + width: 335.w, + height: 48.h, + child: Column( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.end, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Text( + title, + style: theme.styles.title2Semibold20.copyWith( + color: theme.palette.blackOld, + ), + ), + SizedBox(width: 99.w), + GestureDetector( + onTap: () => onTap(), + child: Padding( + padding: EdgeInsets.all(4.r), + child: SvgPicture.asset( + "packages/matule_uikit/assets/icons/header_plus.svg", + width: 20.r, + height: 20.r, + ), + ), + ), + ], + ), + SizedBox(width: 1.sw, height: 1.h), + ], + ), + ); + } + + static Story get story => Story( + name: "SmallHeader", + builder: (BuildContext context) { + var theme = CustomTheme.of(context); + String title = context.knobs.text(label: "Title", initial: "Проекты"); + return SmallHeaderWidget( + theme: theme, + title: title, + onTap: () { + debugPrint("SmallHeader pressed!"); + }, + ); + }, + ); +}