From 80812e5224a2124371ad840b26e8d60ecf4c8e62 Mon Sep 17 00:00:00 2001 From: User3 Date: Mon, 26 May 2025 15:49:47 +0300 Subject: [PATCH] #sprint-1 --- assets/vk.png | Bin 0 -> 1148 bytes assets/yandex.png | Bin 0 -> 1546 bytes example/assets/vk.png | Bin 0 -> 1148 bytes example/assets/yandex.png | Bin 0 -> 1546 bytes example/lib/button_section.dart | 2 +- example/lib/chips_section.dart | 35 +++++++++++++++++++++++++++++++ example/lib/counter_section.dart | 2 +- example/lib/log_in_section.dart | 32 ++++++++++++++++++++++++++++ example/lib/main.dart | 4 ++++ lib/cards/log_in_card.dart | 32 ++++++++++++++++++++++++++++ lib/chips.dart | 32 ++++++++++++++++++++++++++++ lib/ui_kit.dart | 2 ++ 12 files changed, 139 insertions(+), 2 deletions(-) create mode 100644 assets/vk.png create mode 100644 assets/yandex.png create mode 100644 example/assets/vk.png create mode 100644 example/assets/yandex.png create mode 100644 example/lib/chips_section.dart create mode 100644 example/lib/log_in_section.dart create mode 100644 lib/cards/log_in_card.dart create mode 100644 lib/chips.dart diff --git a/assets/vk.png b/assets/vk.png new file mode 100644 index 0000000000000000000000000000000000000000..73eda41b786fb8116ee3c61848caf756e4c23401 GIT binary patch literal 1148 zcmV-?1cUpDP)E+-kbOCyf@Cg^X`n{{a|or z-h20+^WAgKJ?GrfBF6Fazccu|S&`VRihK1oBrqF>1VcjBDU2l;OE8w;ZV<*Dj5`>2 zFz(7jTUWh$d1^;?-E=7figdHu>Cypv`*mLbIVOQ4wUPOYE2dqDh{yUl*qA!Sugj!)# zj+2^Nc8RDEB};WR!R&uk5}2Uf<0of)$OIh(-Ggi1u`plQRxDW%5eZ?;509m3c`m2m z2q#h&bR!?b(PfgX#l^x1*ahAl|o&B~V|cLmQ*pm(wG#k2w2{!g&p-46TLOYzu|Tur z13yy^Xd?lpf3Vwc4G4Cn5P|zoT}}BCCLN?`BLTt=^xAoyA1F4!Ns_wCNR~z}+q744 zBUr@HowQaWw32`lH>d>$*HE`Wkk-Mw%Jnlgfe>%o3`E@UWR7uLgH{qCtkVK3r570V z42T_vlKWWaZ%db(~oi zYLX(jHhEh3$TwbojNclxBuj->3Z*dmlKowU?#f*oJ!kt$?yzdnTb36$a_%k>33I3p zwH&tO1O#dI)xmuWud+Cyii)zjLsTJ)d2WSWB`QQD;B0WCV16ljb}1rZ#?w8jG#RsV z(IpU(fYafPg2fVh7GAkUBw))z1EkV`43eXI5eZNpeL%IlTuxFjx7v#=b$&4k$m@si z>n(7?lmY=LuB5+F_`3ne@&67;hjBt(jssex&d3~}Jd?SBLvCy&I0GUL#^Go?AJ#T+ zwFoCelAr4=uklZHIQHN*|06@QNg@P6NeoaeOO!FHgW)rTL&di+g-;u2_Xv{J`A!@Y z3Jw0hTr(u_N*NLi30a3VmS8NwSc1EG8Fw)5VBEpDgUf(%2jdQ|G5i7ik}=~4iFs%M O0000LFh)Uvt6|R1$;{s zcU@CObwb|#>F4oz9E+aXSBpC0;q&dN?~<1k2n+!2{(yErbVK58Ep@#ES=BeU3H3h_@)kmy*uTFDJ9%UB`m`Qn-bdy7a7^FbAi|hD&>QU>2yN-2v!`0P z*m;xES-KtlEDF;z8i?Z{fIh}>Y2w_F)gP4dSW9}76-ff^I>Irzw{MIvvmGqph}7c3 zG{~v|1dJ%!du_^y?fPfmi}sfo&*|?illdHjfKlsNdl$EctpBMp`4H~Okep8<()&dx z25``N5nZa|%hyGC_c1)(d=VWMox>dnh&Qc`WdNq5FqFPN=OPxCCuxBM8W_N0%bI(W zmz&*aSmcXT09E7z-IzuL_f!dx000bpc%vrXq!SPj@T~dk^`A+A_}pd*FgxmW5SM5- z2(sLOfOw{|`9;8<4+%)}Q8dW12Z3zC=Jxe_6$GmPp3%1UrZ`@md$0z9ysb!G*>vRsPdSsTZ2G`ey9?N@oPtI^I2!_lM}}}9;`v2bN)u1oPhaJZS!8Ad6Su& zV-G?s1EW+463&p?=daE|7G&lgtU>U%D09j>wXg<31j`{WxyGN&SzOZ>LY%S_m!xJ7 zLJS?1{Q#aUofzsEpLI25Zw&&9<mc#5{-O=iEkKrqIam^pvZ-Bf>wY^UDMUdqH1evYwtNDM9C>sJ^*Ig~{K95hGfWR(t z*0mVt75Pm;ttBD`a03F#IP2K$C_GlhozrZTYy1g0-#{TZA`T@e4?oI2`zpl4lK@UC z$Ts82^POl343l-1&NiD6p|Jr5J&u5#Nx~z2aYVt&U#>1o4cAq8c!1bnqyQ=af%qUB zK`!cmchu%)sPKwR2g)4CV>M#I#DsN1_TYUuRyP1 z`2N95p?8pq8Z6kT1cWSN9KNR1VBJ8_-KeStm4T3@225;r2eIyz&*-s}mUlVqRuV`J zWZ;0tjayu*hXy!uT|X%u}lyy~~pV z?sEfzM&zUvBz=Na+_>!L6Y5#J(Dl3%5Og9(_mKma>oS>(a~Y~?>b|%37t3OjzTn$=(z-hbIcC@SVQ>0!Vgd(%AYYc4&tAQ>y zSjEOn9cYqO1MA$cvrR>LmLSko+OX&cbsMKUqD}amNkRiIOg^g3Sj`b_%AW*b^ZWMu zTHh3DRz(Kwu&fSd?{LdRU`KYQVQz*7M9K zNI6TC5aA2dT0gL0zRP%pd4Q!r;HZmVsY?f@rlqV`n75piIwS|mD3F67Pmy3I(~i|( wK|>3|Vt~vK0=%RbDIwjj(a%?@?q3J|2bA18rrvn)W&i*H07*qoM6N<$f_t0Tu>b%7 literal 0 HcmV?d00001 diff --git a/example/assets/vk.png b/example/assets/vk.png new file mode 100644 index 0000000000000000000000000000000000000000..73eda41b786fb8116ee3c61848caf756e4c23401 GIT binary patch literal 1148 zcmV-?1cUpDP)E+-kbOCyf@Cg^X`n{{a|or z-h20+^WAgKJ?GrfBF6Fazccu|S&`VRihK1oBrqF>1VcjBDU2l;OE8w;ZV<*Dj5`>2 zFz(7jTUWh$d1^;?-E=7figdHu>Cypv`*mLbIVOQ4wUPOYE2dqDh{yUl*qA!Sugj!)# zj+2^Nc8RDEB};WR!R&uk5}2Uf<0of)$OIh(-Ggi1u`plQRxDW%5eZ?;509m3c`m2m z2q#h&bR!?b(PfgX#l^x1*ahAl|o&B~V|cLmQ*pm(wG#k2w2{!g&p-46TLOYzu|Tur z13yy^Xd?lpf3Vwc4G4Cn5P|zoT}}BCCLN?`BLTt=^xAoyA1F4!Ns_wCNR~z}+q744 zBUr@HowQaWw32`lH>d>$*HE`Wkk-Mw%Jnlgfe>%o3`E@UWR7uLgH{qCtkVK3r570V z42T_vlKWWaZ%db(~oi zYLX(jHhEh3$TwbojNclxBuj->3Z*dmlKowU?#f*oJ!kt$?yzdnTb36$a_%k>33I3p zwH&tO1O#dI)xmuWud+Cyii)zjLsTJ)d2WSWB`QQD;B0WCV16ljb}1rZ#?w8jG#RsV z(IpU(fYafPg2fVh7GAkUBw))z1EkV`43eXI5eZNpeL%IlTuxFjx7v#=b$&4k$m@si z>n(7?lmY=LuB5+F_`3ne@&67;hjBt(jssex&d3~}Jd?SBLvCy&I0GUL#^Go?AJ#T+ zwFoCelAr4=uklZHIQHN*|06@QNg@P6NeoaeOO!FHgW)rTL&di+g-;u2_Xv{J`A!@Y z3Jw0hTr(u_N*NLi30a3VmS8NwSc1EG8Fw)5VBEpDgUf(%2jdQ|G5i7ik}=~4iFs%M O0000LFh)Uvt6|R1$;{s zcU@CObwb|#>F4oz9E+aXSBpC0;q&dN?~<1k2n+!2{(yErbVK58Ep@#ES=BeU3H3h_@)kmy*uTFDJ9%UB`m`Qn-bdy7a7^FbAi|hD&>QU>2yN-2v!`0P z*m;xES-KtlEDF;z8i?Z{fIh}>Y2w_F)gP4dSW9}76-ff^I>Irzw{MIvvmGqph}7c3 zG{~v|1dJ%!du_^y?fPfmi}sfo&*|?illdHjfKlsNdl$EctpBMp`4H~Okep8<()&dx z25``N5nZa|%hyGC_c1)(d=VWMox>dnh&Qc`WdNq5FqFPN=OPxCCuxBM8W_N0%bI(W zmz&*aSmcXT09E7z-IzuL_f!dx000bpc%vrXq!SPj@T~dk^`A+A_}pd*FgxmW5SM5- z2(sLOfOw{|`9;8<4+%)}Q8dW12Z3zC=Jxe_6$GmPp3%1UrZ`@md$0z9ysb!G*>vRsPdSsTZ2G`ey9?N@oPtI^I2!_lM}}}9;`v2bN)u1oPhaJZS!8Ad6Su& zV-G?s1EW+463&p?=daE|7G&lgtU>U%D09j>wXg<31j`{WxyGN&SzOZ>LY%S_m!xJ7 zLJS?1{Q#aUofzsEpLI25Zw&&9<mc#5{-O=iEkKrqIam^pvZ-Bf>wY^UDMUdqH1evYwtNDM9C>sJ^*Ig~{K95hGfWR(t z*0mVt75Pm;ttBD`a03F#IP2K$C_GlhozrZTYy1g0-#{TZA`T@e4?oI2`zpl4lK@UC z$Ts82^POl343l-1&NiD6p|Jr5J&u5#Nx~z2aYVt&U#>1o4cAq8c!1bnqyQ=af%qUB zK`!cmchu%)sPKwR2g)4CV>M#I#DsN1_TYUuRyP1 z`2N95p?8pq8Z6kT1cWSN9KNR1VBJ8_-KeStm4T3@225;r2eIyz&*-s}mUlVqRuV`J zWZ;0tjayu*hXy!uT|X%u}lyy~~pV z?sEfzM&zUvBz=Na+_>!L6Y5#J(Dl3%5Og9(_mKma>oS>(a~Y~?>b|%37t3OjzTn$=(z-hbIcC@SVQ>0!Vgd(%AYYc4&tAQ>y zSjEOn9cYqO1MA$cvrR>LmLSko+OX&cbsMKUqD}amNkRiIOg^g3Sj`b_%AW*b^ZWMu zTHh3DRz(Kwu&fSd?{LdRU`KYQVQz*7M9K zNI6TC5aA2dT0gL0zRP%pd4Q!r;HZmVsY?f@rlqV`n75piIwS|mD3F67Pmy3I(~i|( wK|>3|Vt~vK0=%RbDIwjj(a%?@?q3J|2bA18rrvn)W&i*H07*qoM6N<$f_t0Tu>b%7 literal 0 HcmV?d00001 diff --git a/example/lib/button_section.dart b/example/lib/button_section.dart index 567e4af..be496cd 100644 --- a/example/lib/button_section.dart +++ b/example/lib/button_section.dart @@ -24,7 +24,7 @@ class _ButtonSectionState extends State { margin: EdgeInsets.only(bottom: 10), child: ButtonWidget( onPressed: () {}, - label: 'Access', + label: 'Подтвердить', variant: currentItem, ), ); diff --git a/example/lib/chips_section.dart b/example/lib/chips_section.dart new file mode 100644 index 0000000..47470ec --- /dev/null +++ b/example/lib/chips_section.dart @@ -0,0 +1,35 @@ +import 'package:flutter/material.dart'; +import 'package:ui_kit/ui_kit.dart'; +import 'package:ui_kit/utils.dart'; + +class ChipsSection extends StatefulWidget { + const ChipsSection({super.key}); + + @override + State createState() => _ChipsSectionState(); +} + +class _ChipsSectionState extends State { + @override + Widget build(BuildContext context) { + return SizedBox( + width: 129, + height: height(context) * 33, + child: ListView.builder( + itemCount: 2, + itemBuilder: (BuildContext context, int index) { + return Container( + margin: EdgeInsets.only(bottom: height(context) * 2), + child: Chips( + buttonText: 'Популярные', + buttonStyle: index == 1 + ? textMedium.copyWith(color: descColor) + : textMedium.copyWith(color: whiteColor), + bgColor: index == 1 ? inputBgColor : primaryColor, + ), + ); + }, + ), + ); + } +} diff --git a/example/lib/counter_section.dart b/example/lib/counter_section.dart index 35f20eb..d0067bd 100644 --- a/example/lib/counter_section.dart +++ b/example/lib/counter_section.dart @@ -15,7 +15,7 @@ class _CounterSectionState extends State { return Container( margin: EdgeInsets.only(bottom: height(context) * 5), width: 64, - height: height(context) * 5, + height: height(context) * 15, child: ListView.builder( itemCount: 2, itemBuilder: (BuildContext context, int index) { diff --git a/example/lib/log_in_section.dart b/example/lib/log_in_section.dart new file mode 100644 index 0000000..e7ef9b2 --- /dev/null +++ b/example/lib/log_in_section.dart @@ -0,0 +1,32 @@ +import 'package:flutter/material.dart'; +import 'package:ui_kit/ui_kit.dart'; + +class LogInSection extends StatefulWidget { + const LogInSection({super.key}); + + @override + State createState() => _LogInSectionState(); +} + +class _LogInSectionState extends State { + @override + Widget build(BuildContext context) { + return Container( + margin: EdgeInsets.only(bottom: height(context) * 3), + width: width(context) * 100, + height: height(context) * 33, + child: ListView.builder( + itemCount: 2, + itemBuilder: (BuildContext context, int index) { + return Container( + margin: EdgeInsets.only(bottom: height(context) * 2), + child: LogInCard( + image: index == 1 ? 'assets/yandex.png' : 'assets/vk.png', + text: index == 1 ? 'Войти с Yandex' : 'Войти с VK', + ), + ); + }, + ), + ); + } +} diff --git a/example/lib/main.dart b/example/lib/main.dart index 444f7ca..3adfcb6 100644 --- a/example/lib/main.dart +++ b/example/lib/main.dart @@ -1,11 +1,13 @@ import 'package:example/bottom_sheet_section.dart'; import 'package:example/button_section.dart'; import 'package:example/card_section.dart'; +import 'package:example/chips_section.dart'; import 'package:example/colors_section.dart'; import 'package:example/counter_section.dart'; import 'package:example/fonts_section.dart'; import 'package:example/header_section.dart'; import 'package:example/inputs_section.dart'; +import 'package:example/log_in_section.dart'; import 'package:example/search_section.dart'; import 'package:example/select_section.dart'; import 'package:example/small_button_section.dart'; @@ -45,6 +47,8 @@ class MainApp extends StatelessWidget { CounterSection(), ToggleSection(), SelectSection(), + ChipsSection(), + LogInSection(), ], ), ), diff --git a/lib/cards/log_in_card.dart b/lib/cards/log_in_card.dart new file mode 100644 index 0000000..6368152 --- /dev/null +++ b/lib/cards/log_in_card.dart @@ -0,0 +1,32 @@ +import 'package:flutter/material.dart'; +import 'package:ui_kit/ui_kit.dart'; + +class LogInCard extends StatefulWidget { + const LogInCard({super.key, required this.image, required this.text}); + final String image; + final String text; + + @override + State createState() => _LogInCardState(); +} + +class _LogInCardState extends State { + @override + Widget build(BuildContext context) { + return Container( + padding: EdgeInsets.symmetric(horizontal: 14, vertical: 14), + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(12), + border: Border.all(color: inputStrokeColor, width: 1), + ), + child: Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Image.asset(widget.image, width: 32, height: 32), + SizedBox(width: 16), + Text(widget.text, style: title3Medium), + ], + ), + ); + } +} diff --git a/lib/chips.dart b/lib/chips.dart new file mode 100644 index 0000000..ffbeb66 --- /dev/null +++ b/lib/chips.dart @@ -0,0 +1,32 @@ +import 'package:flutter/material.dart'; + +class Chips extends StatefulWidget { + const Chips({ + super.key, + required this.buttonText, + required this.buttonStyle, + required this.bgColor, + }); + final String buttonText; + final TextStyle buttonStyle; + final Color bgColor; + + @override + State createState() => _ChipsState(); +} + +class _ChipsState extends State { + @override + Widget build(BuildContext context) { + return Container( + width: 129, + height: 48, + padding: EdgeInsets.symmetric(horizontal: 20, vertical: 14), + decoration: BoxDecoration( + color: widget.bgColor, + borderRadius: BorderRadius.circular(10), + ), + child: Text(widget.buttonText, style: widget.buttonStyle), + ); + } +} diff --git a/lib/ui_kit.dart b/lib/ui_kit.dart index 3d26f4b..d386539 100644 --- a/lib/ui_kit.dart +++ b/lib/ui_kit.dart @@ -15,3 +15,5 @@ export 'cards/primary_card.dart'; export 'cards/cart_card.dart'; export 'cards/project_card.dart'; export 'toggle.dart'; +export 'chips.dart'; +export "cards/log_in_card.dart";