diff --git a/example/assets/check.svg b/example/assets/check.svg
new file mode 100644
index 0000000..c9b377d
--- /dev/null
+++ b/example/assets/check.svg
@@ -0,0 +1,39 @@
+
+
diff --git a/example/assets/chevron-down.svg b/example/assets/chevron-down.svg
new file mode 100644
index 0000000..fcd03b7
--- /dev/null
+++ b/example/assets/chevron-down.svg
@@ -0,0 +1,39 @@
+
+
diff --git a/example/assets/chevron-left.svg b/example/assets/chevron-left.svg
new file mode 100644
index 0000000..b20e1e4
--- /dev/null
+++ b/example/assets/chevron-left.svg
@@ -0,0 +1,39 @@
+
+
diff --git a/example/assets/chevron-right.svg b/example/assets/chevron-right.svg
new file mode 100644
index 0000000..fdf3722
--- /dev/null
+++ b/example/assets/chevron-right.svg
@@ -0,0 +1,39 @@
+
+
diff --git a/example/assets/close.svg b/example/assets/close.svg
new file mode 100644
index 0000000..d9d5438
--- /dev/null
+++ b/example/assets/close.svg
@@ -0,0 +1,39 @@
+
+
diff --git a/example/assets/delete.svg b/example/assets/delete.svg
new file mode 100644
index 0000000..15b1793
--- /dev/null
+++ b/example/assets/delete.svg
@@ -0,0 +1,39 @@
+
+
diff --git a/example/assets/dismiss.svg b/example/assets/dismiss.svg
new file mode 100644
index 0000000..81e9d95
--- /dev/null
+++ b/example/assets/dismiss.svg
@@ -0,0 +1,38 @@
+
+
diff --git a/example/assets/download.svg b/example/assets/download.svg
new file mode 100644
index 0000000..9b425f7
--- /dev/null
+++ b/example/assets/download.svg
@@ -0,0 +1,39 @@
+
+
diff --git a/example/assets/file-text.svg b/example/assets/file-text.svg
new file mode 100644
index 0000000..90ccc71
--- /dev/null
+++ b/example/assets/file-text.svg
@@ -0,0 +1,39 @@
+
+
diff --git a/example/assets/filter.svg b/example/assets/filter.svg
new file mode 100644
index 0000000..0365b57
--- /dev/null
+++ b/example/assets/filter.svg
@@ -0,0 +1,39 @@
+
+
diff --git a/example/assets/map.svg b/example/assets/map.svg
new file mode 100644
index 0000000..f35a41c
--- /dev/null
+++ b/example/assets/map.svg
@@ -0,0 +1,52 @@
+
+
diff --git a/example/assets/message-circle.svg b/example/assets/message-circle.svg
new file mode 100644
index 0000000..73e8414
--- /dev/null
+++ b/example/assets/message-circle.svg
@@ -0,0 +1,39 @@
+
+
diff --git a/example/assets/mic.svg b/example/assets/mic.svg
new file mode 100644
index 0000000..8e24820
--- /dev/null
+++ b/example/assets/mic.svg
@@ -0,0 +1,52 @@
+
+
diff --git a/example/assets/minus.svg b/example/assets/minus.svg
new file mode 100644
index 0000000..e26a25e
--- /dev/null
+++ b/example/assets/minus.svg
@@ -0,0 +1,39 @@
+
+
diff --git a/example/assets/more-horizontal.svg b/example/assets/more-horizontal.svg
new file mode 100644
index 0000000..6076bdb
--- /dev/null
+++ b/example/assets/more-horizontal.svg
@@ -0,0 +1,5 @@
+
diff --git a/example/assets/paperclip.svg b/example/assets/paperclip.svg
new file mode 100644
index 0000000..50f4dd0
--- /dev/null
+++ b/example/assets/paperclip.svg
@@ -0,0 +1,39 @@
+
+
diff --git a/example/assets/plus.svg b/example/assets/plus.svg
new file mode 100644
index 0000000..27a8b51
--- /dev/null
+++ b/example/assets/plus.svg
@@ -0,0 +1,39 @@
+
+
diff --git a/example/assets/robotoFlex.ttf b/example/assets/robotoFlex.ttf
new file mode 100644
index 0000000..2e5c2a2
Binary files /dev/null and b/example/assets/robotoFlex.ttf differ
diff --git a/example/assets/search.svg b/example/assets/search.svg
new file mode 100644
index 0000000..3f704f7
--- /dev/null
+++ b/example/assets/search.svg
@@ -0,0 +1,39 @@
+
+
diff --git a/example/assets/send.svg b/example/assets/send.svg
new file mode 100644
index 0000000..84a71d7
--- /dev/null
+++ b/example/assets/send.svg
@@ -0,0 +1,52 @@
+
+
diff --git a/example/assets/shopping.svg b/example/assets/shopping.svg
new file mode 100644
index 0000000..6712379
--- /dev/null
+++ b/example/assets/shopping.svg
@@ -0,0 +1,52 @@
+
+
diff --git a/example/lib/main.dart b/example/lib/main.dart
index 529571a..9d9ae60 100644
--- a/example/lib/main.dart
+++ b/example/lib/main.dart
@@ -1,8 +1,10 @@
import 'package:example/colors_section.dart';
import 'package:example/fonts_section.dart';
import 'package:example/inputs_section.dart';
+import 'package:example/search_section.dart';
import 'package:flutter/material.dart';
import 'package:ui_kit/ui_kit.dart';
+import 'package:flutter_svg/flutter_svg.dart';
void main() {
runApp(const MainApp());
@@ -15,13 +17,19 @@ class MainApp extends StatelessWidget {
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
+ color: whiteColor,
home: Scaffold(
backgroundColor: whiteColor,
body: SingleChildScrollView(
child: Container(
margin: EdgeInsets.symmetric(horizontal: width(context) * 5),
child: Column(
- children: [ColorsSection(), FontsSection(), InputsSection()],
+ children: [
+ ColorsSection(),
+ FontsSection(),
+ InputsSection(),
+ SearchSection(),
+ ],
),
),
),
diff --git a/example/lib/search_section.dart b/example/lib/search_section.dart
new file mode 100644
index 0000000..a9cfc7b
--- /dev/null
+++ b/example/lib/search_section.dart
@@ -0,0 +1,35 @@
+import 'package:flutter/material.dart';
+import 'package:ui_kit/ui_kit.dart';
+
+class SearchSection extends StatefulWidget {
+ const SearchSection({super.key});
+
+ @override
+ State createState() => _SearchSectionState();
+}
+
+class _SearchSectionState extends State {
+ final TextEditingController controller = TextEditingController();
+ @override
+ Widget build(BuildContext context) {
+ final searchList = [true, false];
+ return SizedBox(
+ width: width(context) * 100,
+ height: height(context) * 30,
+ child: ListView.builder(
+ itemCount: 2,
+ itemBuilder: (BuildContext context, int index) {
+ final currentValue = searchList[index];
+ return Container(
+ margin: EdgeInsets.only(bottom: height(context) * 3),
+ child: SearchWidget(
+ controller: controller,
+ hintText: 'Search',
+ isClosable: currentValue,
+ ),
+ );
+ },
+ ),
+ );
+ }
+}
diff --git a/example/pubspec.lock b/example/pubspec.lock
index 89d7124..e8870d7 100644
--- a/example/pubspec.lock
+++ b/example/pubspec.lock
@@ -1,6 +1,14 @@
# Generated by pub
# See https://dart.dev/tools/pub/glossary#lockfile
packages:
+ args:
+ dependency: transitive
+ description:
+ name: args
+ sha256: d0481093c50b1da8910eb0bb301626d4d8eb7284aa739614d2b394ee09e3ea04
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.7.0"
async:
dependency: transitive
description:
@@ -62,11 +70,35 @@ packages:
url: "https://pub.dev"
source: hosted
version: "5.0.0"
+ flutter_svg:
+ dependency: "direct dev"
+ description:
+ name: flutter_svg
+ sha256: d44bf546b13025ec7353091516f6881f1d4c633993cb109c3916c3a0159dadf1
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.1.0"
flutter_test:
dependency: "direct dev"
description: flutter
source: sdk
version: "0.0.0"
+ http:
+ dependency: transitive
+ description:
+ name: http
+ sha256: "2c11f3f94c687ee9bad77c171151672986360b2b001d109814ee7140b2cf261b"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.4.0"
+ http_parser:
+ dependency: transitive
+ description:
+ name: http_parser
+ sha256: "178d74305e7866013777bab2c3d8726205dc5a4dd935297175b19a23a2e66571"
+ url: "https://pub.dev"
+ source: hosted
+ version: "4.1.2"
leak_tracker:
dependency: transitive
description:
@@ -131,6 +163,22 @@ packages:
url: "https://pub.dev"
source: hosted
version: "1.9.1"
+ path_parsing:
+ dependency: transitive
+ description:
+ name: path_parsing
+ sha256: "883402936929eac138ee0a45da5b0f2c80f89913e6dc3bf77eb65b84b409c6ca"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.1.0"
+ petitparser:
+ dependency: transitive
+ description:
+ name: petitparser
+ sha256: "07c8f0b1913bcde1ff0d26e57ace2f3012ccbf2b204e070290dad3bb22797646"
+ url: "https://pub.dev"
+ source: hosted
+ version: "6.1.0"
sky_engine:
dependency: transitive
description: flutter
@@ -184,6 +232,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "0.7.4"
+ typed_data:
+ dependency: transitive
+ description:
+ name: typed_data
+ sha256: f9049c039ebfeb4cf7a7104a675823cd72dba8297f264b6637062516699fa006
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.4.0"
ui_kit:
dependency: "direct main"
description:
@@ -191,6 +247,30 @@ packages:
relative: true
source: path
version: "0.0.1"
+ vector_graphics:
+ dependency: transitive
+ description:
+ name: vector_graphics
+ sha256: "44cc7104ff32563122a929e4620cf3efd584194eec6d1d913eb5ba593dbcf6de"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.1.18"
+ vector_graphics_codec:
+ dependency: transitive
+ description:
+ name: vector_graphics_codec
+ sha256: "99fd9fbd34d9f9a32efd7b6a6aae14125d8237b10403b422a6a6dfeac2806146"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.1.13"
+ vector_graphics_compiler:
+ dependency: transitive
+ description:
+ name: vector_graphics_compiler
+ sha256: "557a315b7d2a6dbb0aaaff84d857967ce6bdc96a63dc6ee2a57ce5a6ee5d3331"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.1.17"
vector_math:
dependency: transitive
description:
@@ -207,6 +287,22 @@ packages:
url: "https://pub.dev"
source: hosted
version: "15.0.0"
+ web:
+ dependency: transitive
+ description:
+ name: web
+ sha256: "868d88a33d8a87b18ffc05f9f030ba328ffefba92d6c127917a2ba740f9cfe4a"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.1.1"
+ xml:
+ dependency: transitive
+ description:
+ name: xml
+ sha256: b015a8ad1c488f66851d762d3090a21c600e479dc75e68328c52774040cf9226
+ url: "https://pub.dev"
+ source: hosted
+ version: "6.5.0"
sdks:
dart: ">=3.8.0 <4.0.0"
- flutter: ">=3.18.0-18.0.pre.54"
+ flutter: ">=3.22.0"
diff --git a/example/pubspec.yaml b/example/pubspec.yaml
index 95a6c04..deb77f8 100644
--- a/example/pubspec.yaml
+++ b/example/pubspec.yaml
@@ -16,6 +16,7 @@ dev_dependencies:
flutter_test:
sdk: flutter
flutter_lints: ^5.0.0
+ flutter_svg: ^2.1.0
flutter:
uses-material-design: true
diff --git a/lib/search.dart b/lib/search.dart
new file mode 100644
index 0000000..d5881c9
--- /dev/null
+++ b/lib/search.dart
@@ -0,0 +1,67 @@
+import 'package:flutter/material.dart';
+import 'package:flutter_svg/flutter_svg.dart';
+import 'package:ui_kit/ui_kit.dart';
+
+class SearchWidget extends StatefulWidget {
+ const SearchWidget({
+ super.key,
+ required this.controller,
+ required this.hintText,
+ this.isClosable = true,
+ });
+ final TextEditingController controller;
+ final String hintText;
+ final bool isClosable;
+
+ @override
+ State createState() => _SearchWidgetState();
+}
+
+class _SearchWidgetState extends State {
+ @override
+ Widget build(BuildContext context) {
+ return Column(
+ crossAxisAlignment: CrossAxisAlignment.start,
+ children: [
+ SizedBox(
+ height: 48,
+ child: TextFormField(
+ controller: widget.controller,
+ decoration: InputDecoration(
+ fillColor: inputBgColor,
+ filled: true,
+ contentPadding: EdgeInsets.symmetric(
+ vertical: 14,
+ horizontal: 14,
+ ),
+ suffixIcon: widget.isClosable
+ ? SvgPicture.asset(
+ 'assets/close.svg',
+ fit: BoxFit.none,
+ height: 20,
+ width: 20,
+ )
+ : null,
+ prefixIcon: SvgPicture.asset(
+ 'assets/search.svg',
+ width: 20,
+ height: 20,
+ fit: BoxFit.none,
+ ),
+ hintText: widget.hintText,
+ hintStyle: textRegular.copyWith(color: captionColor),
+ enabledBorder: OutlineInputBorder(
+ borderRadius: BorderRadius.circular(10),
+ borderSide: BorderSide(color: inputStrokeColor, width: 1),
+ ),
+ focusedBorder: OutlineInputBorder(
+ borderRadius: BorderRadius.circular(10),
+ borderSide: BorderSide(color: primaryHoverColor, width: 1),
+ ),
+ ),
+ ),
+ ),
+ ],
+ );
+ }
+}
diff --git a/lib/select.dart b/lib/select.dart
new file mode 100644
index 0000000..059cd75
--- /dev/null
+++ b/lib/select.dart
@@ -0,0 +1,15 @@
+import 'package:flutter/material.dart';
+
+class SelectWidget extends StatefulWidget {
+ const SelectWidget({super.key});
+
+ @override
+ State createState() => _SelectWidgetState();
+}
+
+class _SelectWidgetState extends State {
+ @override
+ Widget build(BuildContext context) {
+ return Scaffold();
+ }
+}
diff --git a/lib/ui_kit.dart b/lib/ui_kit.dart
index 9f2337d..00d19a7 100644
--- a/lib/ui_kit.dart
+++ b/lib/ui_kit.dart
@@ -5,3 +5,4 @@ export 'colors.dart';
export 'fonts.dart';
export 'utils.dart';
export 'input.dart';
+export "search.dart";
diff --git a/pubspec.yaml b/pubspec.yaml
index 61d1abe..00b4222 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -10,6 +10,7 @@ environment:
dependencies:
flutter:
sdk: flutter
+ flutter_svg: ^2.1.0
dev_dependencies:
flutter_test: