From 2ce45ecbc448841db2a3b0fac790dd2327477db2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Mateusz=20Miko=C5=82ajczak?= <Mateusz@appunitesmac251.home>
Date: Wed, 27 Sep 2023 16:10:28 +0200
Subject: [PATCH] feat(drawer): add draft of drawer, move icons components to
 Icon folder

---
 src/assets/vectors/icons/close.svg            | 10 +++++
 .../FunctionalArea.component.tsx              |  6 +--
 .../Map/Drawer/Drawer.component.tsx           | 37 +++++++++++++++++++
 src/components/Map/Drawer/index.ts            |  1 +
 src/components/Map/Map.component.tsx          |  6 ++-
 src/shared/Icon/Icon.component.tsx            | 26 ++++++-------
 .../icons => shared/Icon/Icons}/AdminIcon.tsx |  0
 .../icons => shared/Icon/Icons}/ArrowIcon.tsx |  0
 .../Icon/Icons}/ChevronDownIcon.tsx           |  0
 .../Icon/Icons}/ChevronLeftIcon.tsx           |  0
 .../Icon/Icons}/ChevronRightIcon.tsx          |  0
 .../Icon/Icons}/ChevronUpIcon.tsx             |  0
 .../icons => shared/Icon/Icons}/DotsIcon.tsx  |  0
 .../Icon/Icons}/ExportIcon.tsx                |  0
 .../icons => shared/Icon/Icons}/InfoIcon.tsx  |  0
 .../Icon/Icons}/LegendIcon.tsx                |  0
 .../icons => shared/Icon/Icons}/PageIcon.tsx  |  0
 .../Icon/Icons}/PluginIcon.tsx                |  0
 .../icons => shared/Icon/Icons}/PlusIcon.tsx  |  0
 tailwind.config.ts                            |  3 ++
 20 files changed, 71 insertions(+), 18 deletions(-)
 create mode 100644 src/assets/vectors/icons/close.svg
 create mode 100644 src/components/Map/Drawer/Drawer.component.tsx
 create mode 100644 src/components/Map/Drawer/index.ts
 rename src/{assets/vectors/icons => shared/Icon/Icons}/AdminIcon.tsx (100%)
 rename src/{assets/vectors/icons => shared/Icon/Icons}/ArrowIcon.tsx (100%)
 rename src/{assets/vectors/icons => shared/Icon/Icons}/ChevronDownIcon.tsx (100%)
 rename src/{assets/vectors/icons => shared/Icon/Icons}/ChevronLeftIcon.tsx (100%)
 rename src/{assets/vectors/icons => shared/Icon/Icons}/ChevronRightIcon.tsx (100%)
 rename src/{assets/vectors/icons => shared/Icon/Icons}/ChevronUpIcon.tsx (100%)
 rename src/{assets/vectors/icons => shared/Icon/Icons}/DotsIcon.tsx (100%)
 rename src/{assets/vectors/icons => shared/Icon/Icons}/ExportIcon.tsx (100%)
 rename src/{assets/vectors/icons => shared/Icon/Icons}/InfoIcon.tsx (100%)
 rename src/{assets/vectors/icons => shared/Icon/Icons}/LegendIcon.tsx (100%)
 rename src/{assets/vectors/icons => shared/Icon/Icons}/PageIcon.tsx (100%)
 rename src/{assets/vectors/icons => shared/Icon/Icons}/PluginIcon.tsx (100%)
 rename src/{assets/vectors/icons => shared/Icon/Icons}/PlusIcon.tsx (100%)

diff --git a/src/assets/vectors/icons/close.svg b/src/assets/vectors/icons/close.svg
new file mode 100644
index 00000000..72a0b270
--- /dev/null
+++ b/src/assets/vectors/icons/close.svg
@@ -0,0 +1,10 @@
+<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
+<g clip-path="url(#clip0_2059_12637)">
+<path d="M11.9997 10.5867L16.9497 5.63672L18.3637 7.05072L13.4137 12.0007L18.3637 16.9507L16.9497 18.3647L11.9997 13.4147L7.04974 18.3647L5.63574 16.9507L10.5857 12.0007L5.63574 7.05072L7.04974 5.63672L11.9997 10.5867Z" fill="#070130"/>
+</g>
+<defs>
+<clipPath id="clip0_2059_12637">
+<rect width="24" height="24" fill="white"/>
+</clipPath>
+</defs>
+</svg>
diff --git a/src/components/FunctionalArea/FunctionalArea.component.tsx b/src/components/FunctionalArea/FunctionalArea.component.tsx
index 22043804..73c95e42 100644
--- a/src/components/FunctionalArea/FunctionalArea.component.tsx
+++ b/src/components/FunctionalArea/FunctionalArea.component.tsx
@@ -4,13 +4,13 @@ import { MapNavigation } from '@/components/FunctionalArea/MapNavigation';
 
 export const FunctionalArea = (): JSX.Element => (
   <>
-    <div className="absolute top-0 left-0 z-10 w-full">
+    <div className="absolute top-0 left-0 z-20 w-full">
       <TopBar />
     </div>
-    <div className="absolute left-[88px] top-16 z-10 w-[calc(100%-88px)]">
+    <div className="absolute left-[88px] top-16 z-20 w-[calc(100%-88px)]">
       <MapNavigation />
     </div>
-    <div className="absolute top-16 left-0 z-10 h-[calc(100%-64px)] flex">
+    <div className="absolute top-16 left-0 z-20 h-[calc(100%-64px)] flex">
       <NavBar />
     </div>
   </>
diff --git a/src/components/Map/Drawer/Drawer.component.tsx b/src/components/Map/Drawer/Drawer.component.tsx
new file mode 100644
index 00000000..5bdf85b0
--- /dev/null
+++ b/src/components/Map/Drawer/Drawer.component.tsx
@@ -0,0 +1,37 @@
+import Image from 'next/image';
+import closeIcon from '@/assets/vectors/icons/close.svg';
+import { useState } from 'react';
+import { Button } from '@/shared/Button';
+import { twMerge } from 'tailwind-merge';
+
+export const Drawer = (): JSX.Element | null => {
+  const [open, setOpenDrawer] = useState(false);
+
+  return (
+    <>
+      <Button
+        className="absolute top-[100px] left-[100px] z-20 peer"
+        onClick={() => setOpenDrawer(true)}
+      >
+        Open Drawer
+      </Button>
+
+      <div
+        className={twMerge(
+          'absolute top-[104px] left-[88px] w-[432px] h-calc-drawer bg-white-pearl text-font-500 transition-all duration-500 transform -translate-x-full',
+          open && 'translate-x-0',
+        )}
+      >
+        <div className="flex justify-between text-xl px-6 py-8 border-b border-b-[#E1E0E6]">
+          <div>
+            <span className="font-normal">Search: </span>
+            <span className="font-semibold">NADH</span>
+          </div>
+          <div className="cursor-pointer" onClick={() => setOpenDrawer(false)}>
+            <Image src={closeIcon} alt="close drawer" width="24" height="24" />
+          </div>
+        </div>
+      </div>
+    </>
+  );
+};
diff --git a/src/components/Map/Drawer/index.ts b/src/components/Map/Drawer/index.ts
new file mode 100644
index 00000000..1c73307c
--- /dev/null
+++ b/src/components/Map/Drawer/index.ts
@@ -0,0 +1 @@
+export { Drawer } from './Drawer.component';
diff --git a/src/components/Map/Map.component.tsx b/src/components/Map/Map.component.tsx
index 8c11af5f..7fb43320 100644
--- a/src/components/Map/Map.component.tsx
+++ b/src/components/Map/Map.component.tsx
@@ -1,8 +1,10 @@
 import mapImg from '@/assets/images/image.jpg';
+import { Drawer } from '@/components/Map/Drawer';
 import Image from 'next/image';
 
 export const Map = (): JSX.Element => (
-  <div className="w-100 h-screen bg-black" data-testid="map-container">
-    <Image src={mapImg} fill sizes="100vw" alt="map" />
+  <div className="w-100 h-screen bg-black relative" data-testid="map-container">
+    <Drawer />
+    <Image src={mapImg} fill sizes="100vw" alt="map" className="z-0" />
   </div>
 );
diff --git a/src/shared/Icon/Icon.component.tsx b/src/shared/Icon/Icon.component.tsx
index 09ab33c8..fd68463e 100644
--- a/src/shared/Icon/Icon.component.tsx
+++ b/src/shared/Icon/Icon.component.tsx
@@ -1,16 +1,16 @@
-import { ChevronRightIcon } from '@/assets/vectors/icons/ChevronRightIcon';
-import { ChevronLeftIcon } from '@/assets/vectors/icons/ChevronLeftIcon';
-import { ChevronUpIcon } from '@/assets/vectors/icons/ChevronUpIcon';
-import { ChevronDownIcon } from '@/assets/vectors/icons/ChevronDownIcon';
-import { PlusIcon } from '@/assets/vectors/icons/PlusIcon';
-import { ArrowIcon } from '@/assets/vectors/icons/ArrowIcon';
-import { DotsIcon } from '@/assets/vectors/icons/DotsIcon';
-import { AdminIcon } from '@/assets/vectors/icons/AdminIcon';
-import { ExportIcon } from '@/assets/vectors/icons/ExportIcon';
-import { InfoIcon } from '@/assets/vectors/icons/InfoIcon';
-import { LegendIcon } from '@/assets/vectors/icons/LegendIcon';
-import { PageIcon } from '@/assets/vectors/icons/PageIcon';
-import { PluginIcon } from '@/assets/vectors/icons/PluginIcon';
+import { ChevronRightIcon } from '@/shared/Icon/Icons/ChevronRightIcon';
+import { ChevronLeftIcon } from '@/shared/Icon/Icons/ChevronLeftIcon';
+import { AdminIcon } from '@/shared/Icon/Icons/AdminIcon';
+import { ArrowIcon } from '@/shared/Icon/Icons/ArrowIcon';
+import { ChevronDownIcon } from '@/shared/Icon/Icons/ChevronDownIcon';
+import { ChevronUpIcon } from '@/shared/Icon/Icons/ChevronUpIcon';
+import { DotsIcon } from '@/shared/Icon/Icons/DotsIcon';
+import { ExportIcon } from '@/shared/Icon/Icons/ExportIcon';
+import { InfoIcon } from '@/shared/Icon/Icons/InfoIcon';
+import { LegendIcon } from '@/shared/Icon/Icons/LegendIcon';
+import { PageIcon } from '@/shared/Icon/Icons/PageIcon';
+import { PluginIcon } from '@/shared/Icon/Icons/PluginIcon';
+import { PlusIcon } from '@/shared/Icon/Icons/PlusIcon';
 
 import type { IconTypes } from '@/types/iconTypes';
 
diff --git a/src/assets/vectors/icons/AdminIcon.tsx b/src/shared/Icon/Icons/AdminIcon.tsx
similarity index 100%
rename from src/assets/vectors/icons/AdminIcon.tsx
rename to src/shared/Icon/Icons/AdminIcon.tsx
diff --git a/src/assets/vectors/icons/ArrowIcon.tsx b/src/shared/Icon/Icons/ArrowIcon.tsx
similarity index 100%
rename from src/assets/vectors/icons/ArrowIcon.tsx
rename to src/shared/Icon/Icons/ArrowIcon.tsx
diff --git a/src/assets/vectors/icons/ChevronDownIcon.tsx b/src/shared/Icon/Icons/ChevronDownIcon.tsx
similarity index 100%
rename from src/assets/vectors/icons/ChevronDownIcon.tsx
rename to src/shared/Icon/Icons/ChevronDownIcon.tsx
diff --git a/src/assets/vectors/icons/ChevronLeftIcon.tsx b/src/shared/Icon/Icons/ChevronLeftIcon.tsx
similarity index 100%
rename from src/assets/vectors/icons/ChevronLeftIcon.tsx
rename to src/shared/Icon/Icons/ChevronLeftIcon.tsx
diff --git a/src/assets/vectors/icons/ChevronRightIcon.tsx b/src/shared/Icon/Icons/ChevronRightIcon.tsx
similarity index 100%
rename from src/assets/vectors/icons/ChevronRightIcon.tsx
rename to src/shared/Icon/Icons/ChevronRightIcon.tsx
diff --git a/src/assets/vectors/icons/ChevronUpIcon.tsx b/src/shared/Icon/Icons/ChevronUpIcon.tsx
similarity index 100%
rename from src/assets/vectors/icons/ChevronUpIcon.tsx
rename to src/shared/Icon/Icons/ChevronUpIcon.tsx
diff --git a/src/assets/vectors/icons/DotsIcon.tsx b/src/shared/Icon/Icons/DotsIcon.tsx
similarity index 100%
rename from src/assets/vectors/icons/DotsIcon.tsx
rename to src/shared/Icon/Icons/DotsIcon.tsx
diff --git a/src/assets/vectors/icons/ExportIcon.tsx b/src/shared/Icon/Icons/ExportIcon.tsx
similarity index 100%
rename from src/assets/vectors/icons/ExportIcon.tsx
rename to src/shared/Icon/Icons/ExportIcon.tsx
diff --git a/src/assets/vectors/icons/InfoIcon.tsx b/src/shared/Icon/Icons/InfoIcon.tsx
similarity index 100%
rename from src/assets/vectors/icons/InfoIcon.tsx
rename to src/shared/Icon/Icons/InfoIcon.tsx
diff --git a/src/assets/vectors/icons/LegendIcon.tsx b/src/shared/Icon/Icons/LegendIcon.tsx
similarity index 100%
rename from src/assets/vectors/icons/LegendIcon.tsx
rename to src/shared/Icon/Icons/LegendIcon.tsx
diff --git a/src/assets/vectors/icons/PageIcon.tsx b/src/shared/Icon/Icons/PageIcon.tsx
similarity index 100%
rename from src/assets/vectors/icons/PageIcon.tsx
rename to src/shared/Icon/Icons/PageIcon.tsx
diff --git a/src/assets/vectors/icons/PluginIcon.tsx b/src/shared/Icon/Icons/PluginIcon.tsx
similarity index 100%
rename from src/assets/vectors/icons/PluginIcon.tsx
rename to src/shared/Icon/Icons/PluginIcon.tsx
diff --git a/src/assets/vectors/icons/PlusIcon.tsx b/src/shared/Icon/Icons/PlusIcon.tsx
similarity index 100%
rename from src/assets/vectors/icons/PlusIcon.tsx
rename to src/shared/Icon/Icons/PlusIcon.tsx
diff --git a/tailwind.config.ts b/tailwind.config.ts
index 18b85c28..aaf81f9d 100644
--- a/tailwind.config.ts
+++ b/tailwind.config.ts
@@ -25,6 +25,9 @@ const config: Config = {
         cultured: '#f7f7f8',
         'white-pearl': '#ffffff',
       },
+      height: {
+        'calc-drawer': 'calc(100% - 104px)',
+      },
     },
     fontFamily: {
       manrope: ['var(--font-manrope)'],
-- 
GitLab