diff --git a/package-lock.json b/package-lock.json
index 3ec5657..2168899 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -8,9 +8,12 @@
"name": "danak-website",
"version": "0.1.0",
"dependencies": {
+ "iconsax-react": "^0.0.8",
"next": "15.2.3",
"react": "^19.0.0",
- "react-dom": "^19.0.0"
+ "react-dom": "^19.0.0",
+ "react-spinners": "^0.15.0",
+ "tailwind-merge": "^3.0.2"
},
"devDependencies": {
"@eslint/eslintrc": "^3",
@@ -3274,6 +3277,18 @@
"node": ">= 0.4"
}
},
+ "node_modules/iconsax-react": {
+ "version": "0.0.8",
+ "resolved": "https://registry.npmjs.org/iconsax-react/-/iconsax-react-0.0.8.tgz",
+ "integrity": "sha512-l3dVk4zGtkkJHgvNYqAf0wDKqnKxXykee5/DoESGo2JvSYwaxajJUHSX2YrPRXSov8Hd8ClGFwJxCEaEjrFD1Q==",
+ "license": "MIT",
+ "dependencies": {
+ "prop-types": "^15.7.2"
+ },
+ "peerDependencies": {
+ "react": "*"
+ }
+ },
"node_modules/ignore": {
"version": "5.3.2",
"resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz",
@@ -3767,7 +3782,6 @@
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
"integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
- "dev": true,
"license": "MIT"
},
"node_modules/js-yaml": {
@@ -4143,7 +4157,6 @@
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
"integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
- "dev": true,
"license": "MIT",
"dependencies": {
"js-tokens": "^3.0.0 || ^4.0.0"
@@ -4327,7 +4340,6 @@
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
"integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
- "dev": true,
"license": "MIT",
"engines": {
"node": ">=0.10.0"
@@ -4626,7 +4638,6 @@
"version": "15.8.1",
"resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz",
"integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==",
- "dev": true,
"license": "MIT",
"dependencies": {
"loose-envify": "^1.4.0",
@@ -4690,9 +4701,18 @@
"version": "16.13.1",
"resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
"integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==",
- "dev": true,
"license": "MIT"
},
+ "node_modules/react-spinners": {
+ "version": "0.15.0",
+ "resolved": "https://registry.npmjs.org/react-spinners/-/react-spinners-0.15.0.tgz",
+ "integrity": "sha512-ZO3/fNB9Qc+kgpG3SfdlMnvTX6LtLmTnOogb3W6sXIaU/kZ1ydEViPfZ06kSOaEsor58C/tzXw2wROGQu3X2pA==",
+ "license": "MIT",
+ "peerDependencies": {
+ "react": "^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0",
+ "react-dom": "^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"
+ }
+ },
"node_modules/reflect.getprototypeof": {
"version": "1.0.10",
"resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz",
@@ -5317,6 +5337,16 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/tailwind-merge": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-3.0.2.tgz",
+ "integrity": "sha512-l7z+OYZ7mu3DTqrL88RiKrKIqO3NcpEO8V/Od04bNpvk0kiIFndGEoqfuzvj4yuhRkHKjRkII2z+KS2HfPcSxw==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/dcastil"
+ }
+ },
"node_modules/tailwindcss": {
"version": "4.0.15",
"resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.0.15.tgz",
diff --git a/package.json b/package.json
index 45000a4..a874d8d 100644
--- a/package.json
+++ b/package.json
@@ -9,19 +9,22 @@
"lint": "next lint"
},
"dependencies": {
+ "iconsax-react": "^0.0.8",
+ "next": "15.2.3",
"react": "^19.0.0",
"react-dom": "^19.0.0",
- "next": "15.2.3"
+ "react-spinners": "^0.15.0",
+ "tailwind-merge": "^3.0.2"
},
"devDependencies": {
- "typescript": "^5",
+ "@eslint/eslintrc": "^3",
+ "@tailwindcss/postcss": "^4",
"@types/node": "^20",
"@types/react": "^19",
"@types/react-dom": "^19",
- "@tailwindcss/postcss": "^4",
- "tailwindcss": "^4",
"eslint": "^9",
"eslint-config-next": "15.2.3",
- "@eslint/eslintrc": "^3"
+ "tailwindcss": "^4",
+ "typescript": "^5"
}
}
diff --git a/public/images/banner.webp b/public/images/banner.webp
new file mode 100644
index 0000000..02eba03
Binary files /dev/null and b/public/images/banner.webp differ
diff --git a/public/images/logo.svg b/public/images/logo.svg
new file mode 100644
index 0000000..200db25
--- /dev/null
+++ b/public/images/logo.svg
@@ -0,0 +1,91 @@
+
+
+
diff --git a/src/app/globals.css b/src/app/globals.css
index a2dc41e..e2132b1 100644
--- a/src/app/globals.css
+++ b/src/app/globals.css
@@ -1,26 +1,54 @@
@import "tailwindcss";
-:root {
- --background: #ffffff;
- --foreground: #171717;
-}
-
-@theme inline {
- --color-background: var(--background);
- --color-foreground: var(--foreground);
- --font-sans: var(--font-geist-sans);
- --font-mono: var(--font-geist-mono);
-}
-
-@media (prefers-color-scheme: dark) {
- :root {
- --background: #0a0a0a;
- --foreground: #ededed;
- }
+html {
+ direction: rtl;
+ max-width: 100%;
}
body {
- background: var(--background);
- color: var(--foreground);
- font-family: Arial, Helvetica, sans-serif;
+ font-family: irancell;
+ margin: 0;
+ padding: 0;
+ width: 100%;
+ direction: rtl;
+ background: #eceff6;
+ font-feature-settings: "lnum"; /* اطمینان از نمایش اعداد انگلیسی */
+}
+
+html,
+body {
+ height: 100%;
+ margin: 0;
+}
+
+html,
+body,
+#root {
+ min-height: 100% !important;
+ height: 100%;
+}
+* {
+ outline: none;
+}
+input::placeholder,
+textarea::placeholder {
+ color: #888888;
+}
+
+@theme {
+ --color-primary: black;
+ --spacing-maxWidth: 1280px;
+}
+
+tbody tr {
+ background-color: white;
+}
+
+.thead tr td:first-child {
+ border-top-right-radius: 23px;
+ /* border-bottom-right-radius: 23px; */
+}
+.thead tr td:last-child {
+ border-top-left-radius: 23px;
+ /* border-bottom-left-radius: 23px; */
}
diff --git a/src/app/home/DanakSuggestedService.tsx b/src/app/home/DanakSuggestedService.tsx
new file mode 100644
index 0000000..59030a8
--- /dev/null
+++ b/src/app/home/DanakSuggestedService.tsx
@@ -0,0 +1,9 @@
+import { FC } from 'react'
+
+const DanakSuggestedService: FC = () => {
+ return (
+
DanakSuggestedService
+ )
+}
+
+export default DanakSuggestedService
\ No newline at end of file
diff --git a/src/app/home/HeroSection.tsx b/src/app/home/HeroSection.tsx
new file mode 100644
index 0000000..f06f7dd
--- /dev/null
+++ b/src/app/home/HeroSection.tsx
@@ -0,0 +1,31 @@
+import Button from '@/components/Button'
+import Image from 'next/image'
+import { FC } from 'react'
+
+const HeroSection: FC = () => {
+ return (
+
+
+
+
+
+
داناک،
+
تلفیق هنر و تکنولوژی
+
+
+
+
+
+ )
+}
+
+export default HeroSection
\ No newline at end of file
diff --git a/src/app/layout.tsx b/src/app/layout.tsx
index f7fa87e..d866214 100644
--- a/src/app/layout.tsx
+++ b/src/app/layout.tsx
@@ -1,6 +1,7 @@
import type { Metadata } from "next";
import { Geist, Geist_Mono } from "next/font/google";
import "./globals.css";
+import '@/assets/fonts/irancell/style.css'
const geistSans = Geist({
variable: "--font-geist-sans",
@@ -23,11 +24,13 @@ export default function RootLayout({
children: React.ReactNode;
}>) {
return (
-
+
- {children}
+
+ {children}
+
);
diff --git a/src/app/page.tsx b/src/app/page.tsx
index e68abe6..954f925 100644
--- a/src/app/page.tsx
+++ b/src/app/page.tsx
@@ -1,103 +1,19 @@
-import Image from "next/image";
+import { NextPage } from 'next'
+import Header from '@/shared/Header'
+import HeroSection from './home/HeroSection'
+import DanakSuggestedService from './home/DanakSuggestedService'
-export default function Home() {
+const Home: NextPage = () => {
return (
-
-
-
-
- -
- Get started by editing{" "}
-
- src/app/page.tsx
-
- .
-
- -
- Save and see your changes instantly.
-
-
+
- );
+ )
}
+
+export default Home
\ No newline at end of file
diff --git a/src/assets/fonts/irancell/irancell-bold.ttf b/src/assets/fonts/irancell/irancell-bold.ttf
new file mode 100644
index 0000000..dac6c53
Binary files /dev/null and b/src/assets/fonts/irancell/irancell-bold.ttf differ
diff --git a/src/assets/fonts/irancell/irancell-extralight.ttf b/src/assets/fonts/irancell/irancell-extralight.ttf
new file mode 100644
index 0000000..80e0d26
Binary files /dev/null and b/src/assets/fonts/irancell/irancell-extralight.ttf differ
diff --git a/src/assets/fonts/irancell/irancell-light.ttf b/src/assets/fonts/irancell/irancell-light.ttf
new file mode 100644
index 0000000..766ea21
Binary files /dev/null and b/src/assets/fonts/irancell/irancell-light.ttf differ
diff --git a/src/assets/fonts/irancell/style.css b/src/assets/fonts/irancell/style.css
new file mode 100644
index 0000000..7f72117
--- /dev/null
+++ b/src/assets/fonts/irancell/style.css
@@ -0,0 +1,18 @@
+@font-face {
+ font-family: "irancell";
+ font-style: thin;
+ font-weight: 200;
+ src: url("./irancell-extralight.ttf");
+}
+@font-face {
+ font-family: "irancell";
+ font-style: normal;
+ font-weight: 300;
+ src: url("./irancell-light.ttf");
+}
+@font-face {
+ font-family: "irancell";
+ font-style: thin;
+ font-weight: 600;
+ src: url("./irancell-bold.ttf");
+}
diff --git a/src/assets/fonts/roboto/Roboto-Black.ttf b/src/assets/fonts/roboto/Roboto-Black.ttf
new file mode 100644
index 0000000..d51221a
Binary files /dev/null and b/src/assets/fonts/roboto/Roboto-Black.ttf differ
diff --git a/src/assets/fonts/roboto/Roboto-BlackItalic.ttf b/src/assets/fonts/roboto/Roboto-BlackItalic.ttf
new file mode 100644
index 0000000..c71c549
Binary files /dev/null and b/src/assets/fonts/roboto/Roboto-BlackItalic.ttf differ
diff --git a/src/assets/fonts/roboto/Roboto-Bold.ttf b/src/assets/fonts/roboto/Roboto-Bold.ttf
new file mode 100644
index 0000000..9d7cf22
Binary files /dev/null and b/src/assets/fonts/roboto/Roboto-Bold.ttf differ
diff --git a/src/assets/fonts/roboto/Roboto-BoldItalic.ttf b/src/assets/fonts/roboto/Roboto-BoldItalic.ttf
new file mode 100644
index 0000000..f73d681
Binary files /dev/null and b/src/assets/fonts/roboto/Roboto-BoldItalic.ttf differ
diff --git a/src/assets/fonts/roboto/Roboto-ExtraBold.ttf b/src/assets/fonts/roboto/Roboto-ExtraBold.ttf
new file mode 100644
index 0000000..7092a88
Binary files /dev/null and b/src/assets/fonts/roboto/Roboto-ExtraBold.ttf differ
diff --git a/src/assets/fonts/roboto/Roboto-ExtraBoldItalic.ttf b/src/assets/fonts/roboto/Roboto-ExtraBoldItalic.ttf
new file mode 100644
index 0000000..a5536f5
Binary files /dev/null and b/src/assets/fonts/roboto/Roboto-ExtraBoldItalic.ttf differ
diff --git a/src/assets/fonts/roboto/Roboto-ExtraLight.ttf b/src/assets/fonts/roboto/Roboto-ExtraLight.ttf
new file mode 100644
index 0000000..75608c6
Binary files /dev/null and b/src/assets/fonts/roboto/Roboto-ExtraLight.ttf differ
diff --git a/src/assets/fonts/roboto/Roboto-ExtraLightItalic.ttf b/src/assets/fonts/roboto/Roboto-ExtraLightItalic.ttf
new file mode 100644
index 0000000..23dbbef
Binary files /dev/null and b/src/assets/fonts/roboto/Roboto-ExtraLightItalic.ttf differ
diff --git a/src/assets/fonts/roboto/Roboto-Italic.ttf b/src/assets/fonts/roboto/Roboto-Italic.ttf
new file mode 100644
index 0000000..c3abaef
Binary files /dev/null and b/src/assets/fonts/roboto/Roboto-Italic.ttf differ
diff --git a/src/assets/fonts/roboto/Roboto-Light.ttf b/src/assets/fonts/roboto/Roboto-Light.ttf
new file mode 100644
index 0000000..6fcd5f9
Binary files /dev/null and b/src/assets/fonts/roboto/Roboto-Light.ttf differ
diff --git a/src/assets/fonts/roboto/Roboto-LightItalic.ttf b/src/assets/fonts/roboto/Roboto-LightItalic.ttf
new file mode 100644
index 0000000..a6e5047
Binary files /dev/null and b/src/assets/fonts/roboto/Roboto-LightItalic.ttf differ
diff --git a/src/assets/fonts/roboto/Roboto-Medium.ttf b/src/assets/fonts/roboto/Roboto-Medium.ttf
new file mode 100644
index 0000000..d629e98
Binary files /dev/null and b/src/assets/fonts/roboto/Roboto-Medium.ttf differ
diff --git a/src/assets/fonts/roboto/Roboto-MediumItalic.ttf b/src/assets/fonts/roboto/Roboto-MediumItalic.ttf
new file mode 100644
index 0000000..ef9ed1b
Binary files /dev/null and b/src/assets/fonts/roboto/Roboto-MediumItalic.ttf differ
diff --git a/src/assets/fonts/roboto/Roboto-Regular.ttf b/src/assets/fonts/roboto/Roboto-Regular.ttf
new file mode 100644
index 0000000..7e3bb2f
Binary files /dev/null and b/src/assets/fonts/roboto/Roboto-Regular.ttf differ
diff --git a/src/assets/fonts/roboto/Roboto-SemiBold.ttf b/src/assets/fonts/roboto/Roboto-SemiBold.ttf
new file mode 100644
index 0000000..3f34834
Binary files /dev/null and b/src/assets/fonts/roboto/Roboto-SemiBold.ttf differ
diff --git a/src/assets/fonts/roboto/Roboto-SemiBoldItalic.ttf b/src/assets/fonts/roboto/Roboto-SemiBoldItalic.ttf
new file mode 100644
index 0000000..132cca1
Binary files /dev/null and b/src/assets/fonts/roboto/Roboto-SemiBoldItalic.ttf differ
diff --git a/src/assets/fonts/roboto/Roboto-Thin.ttf b/src/assets/fonts/roboto/Roboto-Thin.ttf
new file mode 100644
index 0000000..6ee97b8
Binary files /dev/null and b/src/assets/fonts/roboto/Roboto-Thin.ttf differ
diff --git a/src/assets/fonts/roboto/Roboto-ThinItalic.ttf b/src/assets/fonts/roboto/Roboto-ThinItalic.ttf
new file mode 100644
index 0000000..0381198
Binary files /dev/null and b/src/assets/fonts/roboto/Roboto-ThinItalic.ttf differ
diff --git a/src/assets/fonts/roboto/Roboto_Condensed-Black.ttf b/src/assets/fonts/roboto/Roboto_Condensed-Black.ttf
new file mode 100644
index 0000000..7529d1b
Binary files /dev/null and b/src/assets/fonts/roboto/Roboto_Condensed-Black.ttf differ
diff --git a/src/assets/fonts/roboto/Roboto_Condensed-BlackItalic.ttf b/src/assets/fonts/roboto/Roboto_Condensed-BlackItalic.ttf
new file mode 100644
index 0000000..0c31e9f
Binary files /dev/null and b/src/assets/fonts/roboto/Roboto_Condensed-BlackItalic.ttf differ
diff --git a/src/assets/fonts/roboto/Roboto_Condensed-Bold.ttf b/src/assets/fonts/roboto/Roboto_Condensed-Bold.ttf
new file mode 100644
index 0000000..c3ccd49
Binary files /dev/null and b/src/assets/fonts/roboto/Roboto_Condensed-Bold.ttf differ
diff --git a/src/assets/fonts/roboto/Roboto_Condensed-BoldItalic.ttf b/src/assets/fonts/roboto/Roboto_Condensed-BoldItalic.ttf
new file mode 100644
index 0000000..d269187
Binary files /dev/null and b/src/assets/fonts/roboto/Roboto_Condensed-BoldItalic.ttf differ
diff --git a/src/assets/fonts/roboto/Roboto_Condensed-ExtraBold.ttf b/src/assets/fonts/roboto/Roboto_Condensed-ExtraBold.ttf
new file mode 100644
index 0000000..782442a
Binary files /dev/null and b/src/assets/fonts/roboto/Roboto_Condensed-ExtraBold.ttf differ
diff --git a/src/assets/fonts/roboto/Roboto_Condensed-ExtraBoldItalic.ttf b/src/assets/fonts/roboto/Roboto_Condensed-ExtraBoldItalic.ttf
new file mode 100644
index 0000000..aeff7c2
Binary files /dev/null and b/src/assets/fonts/roboto/Roboto_Condensed-ExtraBoldItalic.ttf differ
diff --git a/src/assets/fonts/roboto/Roboto_Condensed-ExtraLight.ttf b/src/assets/fonts/roboto/Roboto_Condensed-ExtraLight.ttf
new file mode 100644
index 0000000..16a1560
Binary files /dev/null and b/src/assets/fonts/roboto/Roboto_Condensed-ExtraLight.ttf differ
diff --git a/src/assets/fonts/roboto/Roboto_Condensed-ExtraLightItalic.ttf b/src/assets/fonts/roboto/Roboto_Condensed-ExtraLightItalic.ttf
new file mode 100644
index 0000000..0f6fe70
Binary files /dev/null and b/src/assets/fonts/roboto/Roboto_Condensed-ExtraLightItalic.ttf differ
diff --git a/src/assets/fonts/roboto/Roboto_Condensed-Italic.ttf b/src/assets/fonts/roboto/Roboto_Condensed-Italic.ttf
new file mode 100644
index 0000000..3b387eb
Binary files /dev/null and b/src/assets/fonts/roboto/Roboto_Condensed-Italic.ttf differ
diff --git a/src/assets/fonts/roboto/Roboto_Condensed-Light.ttf b/src/assets/fonts/roboto/Roboto_Condensed-Light.ttf
new file mode 100644
index 0000000..e70c357
Binary files /dev/null and b/src/assets/fonts/roboto/Roboto_Condensed-Light.ttf differ
diff --git a/src/assets/fonts/roboto/Roboto_Condensed-LightItalic.ttf b/src/assets/fonts/roboto/Roboto_Condensed-LightItalic.ttf
new file mode 100644
index 0000000..9f623e0
Binary files /dev/null and b/src/assets/fonts/roboto/Roboto_Condensed-LightItalic.ttf differ
diff --git a/src/assets/fonts/roboto/Roboto_Condensed-Medium.ttf b/src/assets/fonts/roboto/Roboto_Condensed-Medium.ttf
new file mode 100644
index 0000000..dd2842b
Binary files /dev/null and b/src/assets/fonts/roboto/Roboto_Condensed-Medium.ttf differ
diff --git a/src/assets/fonts/roboto/Roboto_Condensed-MediumItalic.ttf b/src/assets/fonts/roboto/Roboto_Condensed-MediumItalic.ttf
new file mode 100644
index 0000000..80ff64e
Binary files /dev/null and b/src/assets/fonts/roboto/Roboto_Condensed-MediumItalic.ttf differ
diff --git a/src/assets/fonts/roboto/Roboto_Condensed-Regular.ttf b/src/assets/fonts/roboto/Roboto_Condensed-Regular.ttf
new file mode 100644
index 0000000..5af42d4
Binary files /dev/null and b/src/assets/fonts/roboto/Roboto_Condensed-Regular.ttf differ
diff --git a/src/assets/fonts/roboto/Roboto_Condensed-SemiBold.ttf b/src/assets/fonts/roboto/Roboto_Condensed-SemiBold.ttf
new file mode 100644
index 0000000..4297f17
Binary files /dev/null and b/src/assets/fonts/roboto/Roboto_Condensed-SemiBold.ttf differ
diff --git a/src/assets/fonts/roboto/Roboto_Condensed-SemiBoldItalic.ttf b/src/assets/fonts/roboto/Roboto_Condensed-SemiBoldItalic.ttf
new file mode 100644
index 0000000..6cb4656
Binary files /dev/null and b/src/assets/fonts/roboto/Roboto_Condensed-SemiBoldItalic.ttf differ
diff --git a/src/assets/fonts/roboto/Roboto_Condensed-Thin.ttf b/src/assets/fonts/roboto/Roboto_Condensed-Thin.ttf
new file mode 100644
index 0000000..1ccebcc
Binary files /dev/null and b/src/assets/fonts/roboto/Roboto_Condensed-Thin.ttf differ
diff --git a/src/assets/fonts/roboto/Roboto_Condensed-ThinItalic.ttf b/src/assets/fonts/roboto/Roboto_Condensed-ThinItalic.ttf
new file mode 100644
index 0000000..e58e966
Binary files /dev/null and b/src/assets/fonts/roboto/Roboto_Condensed-ThinItalic.ttf differ
diff --git a/src/assets/fonts/roboto/Roboto_SemiCondensed-Black.ttf b/src/assets/fonts/roboto/Roboto_SemiCondensed-Black.ttf
new file mode 100644
index 0000000..8eedb64
Binary files /dev/null and b/src/assets/fonts/roboto/Roboto_SemiCondensed-Black.ttf differ
diff --git a/src/assets/fonts/roboto/Roboto_SemiCondensed-BlackItalic.ttf b/src/assets/fonts/roboto/Roboto_SemiCondensed-BlackItalic.ttf
new file mode 100644
index 0000000..19a5096
Binary files /dev/null and b/src/assets/fonts/roboto/Roboto_SemiCondensed-BlackItalic.ttf differ
diff --git a/src/assets/fonts/roboto/Roboto_SemiCondensed-Bold.ttf b/src/assets/fonts/roboto/Roboto_SemiCondensed-Bold.ttf
new file mode 100644
index 0000000..98d7b0d
Binary files /dev/null and b/src/assets/fonts/roboto/Roboto_SemiCondensed-Bold.ttf differ
diff --git a/src/assets/fonts/roboto/Roboto_SemiCondensed-BoldItalic.ttf b/src/assets/fonts/roboto/Roboto_SemiCondensed-BoldItalic.ttf
new file mode 100644
index 0000000..8604aee
Binary files /dev/null and b/src/assets/fonts/roboto/Roboto_SemiCondensed-BoldItalic.ttf differ
diff --git a/src/assets/fonts/roboto/Roboto_SemiCondensed-ExtraBold.ttf b/src/assets/fonts/roboto/Roboto_SemiCondensed-ExtraBold.ttf
new file mode 100644
index 0000000..36423c3
Binary files /dev/null and b/src/assets/fonts/roboto/Roboto_SemiCondensed-ExtraBold.ttf differ
diff --git a/src/assets/fonts/roboto/Roboto_SemiCondensed-ExtraBoldItalic.ttf b/src/assets/fonts/roboto/Roboto_SemiCondensed-ExtraBoldItalic.ttf
new file mode 100644
index 0000000..b40ce77
Binary files /dev/null and b/src/assets/fonts/roboto/Roboto_SemiCondensed-ExtraBoldItalic.ttf differ
diff --git a/src/assets/fonts/roboto/Roboto_SemiCondensed-ExtraLight.ttf b/src/assets/fonts/roboto/Roboto_SemiCondensed-ExtraLight.ttf
new file mode 100644
index 0000000..e1c25a0
Binary files /dev/null and b/src/assets/fonts/roboto/Roboto_SemiCondensed-ExtraLight.ttf differ
diff --git a/src/assets/fonts/roboto/Roboto_SemiCondensed-ExtraLightItalic.ttf b/src/assets/fonts/roboto/Roboto_SemiCondensed-ExtraLightItalic.ttf
new file mode 100644
index 0000000..929a093
Binary files /dev/null and b/src/assets/fonts/roboto/Roboto_SemiCondensed-ExtraLightItalic.ttf differ
diff --git a/src/assets/fonts/roboto/Roboto_SemiCondensed-Italic.ttf b/src/assets/fonts/roboto/Roboto_SemiCondensed-Italic.ttf
new file mode 100644
index 0000000..23454ff
Binary files /dev/null and b/src/assets/fonts/roboto/Roboto_SemiCondensed-Italic.ttf differ
diff --git a/src/assets/fonts/roboto/Roboto_SemiCondensed-Light.ttf b/src/assets/fonts/roboto/Roboto_SemiCondensed-Light.ttf
new file mode 100644
index 0000000..b9aedcd
Binary files /dev/null and b/src/assets/fonts/roboto/Roboto_SemiCondensed-Light.ttf differ
diff --git a/src/assets/fonts/roboto/Roboto_SemiCondensed-LightItalic.ttf b/src/assets/fonts/roboto/Roboto_SemiCondensed-LightItalic.ttf
new file mode 100644
index 0000000..c096473
Binary files /dev/null and b/src/assets/fonts/roboto/Roboto_SemiCondensed-LightItalic.ttf differ
diff --git a/src/assets/fonts/roboto/Roboto_SemiCondensed-Medium.ttf b/src/assets/fonts/roboto/Roboto_SemiCondensed-Medium.ttf
new file mode 100644
index 0000000..e9c34d6
Binary files /dev/null and b/src/assets/fonts/roboto/Roboto_SemiCondensed-Medium.ttf differ
diff --git a/src/assets/fonts/roboto/Roboto_SemiCondensed-MediumItalic.ttf b/src/assets/fonts/roboto/Roboto_SemiCondensed-MediumItalic.ttf
new file mode 100644
index 0000000..ab34b70
Binary files /dev/null and b/src/assets/fonts/roboto/Roboto_SemiCondensed-MediumItalic.ttf differ
diff --git a/src/assets/fonts/roboto/Roboto_SemiCondensed-Regular.ttf b/src/assets/fonts/roboto/Roboto_SemiCondensed-Regular.ttf
new file mode 100644
index 0000000..36109ba
Binary files /dev/null and b/src/assets/fonts/roboto/Roboto_SemiCondensed-Regular.ttf differ
diff --git a/src/assets/fonts/roboto/Roboto_SemiCondensed-SemiBold.ttf b/src/assets/fonts/roboto/Roboto_SemiCondensed-SemiBold.ttf
new file mode 100644
index 0000000..6d10b33
Binary files /dev/null and b/src/assets/fonts/roboto/Roboto_SemiCondensed-SemiBold.ttf differ
diff --git a/src/assets/fonts/roboto/Roboto_SemiCondensed-SemiBoldItalic.ttf b/src/assets/fonts/roboto/Roboto_SemiCondensed-SemiBoldItalic.ttf
new file mode 100644
index 0000000..e88bc4a
Binary files /dev/null and b/src/assets/fonts/roboto/Roboto_SemiCondensed-SemiBoldItalic.ttf differ
diff --git a/src/assets/fonts/roboto/Roboto_SemiCondensed-Thin.ttf b/src/assets/fonts/roboto/Roboto_SemiCondensed-Thin.ttf
new file mode 100644
index 0000000..8ed8d79
Binary files /dev/null and b/src/assets/fonts/roboto/Roboto_SemiCondensed-Thin.ttf differ
diff --git a/src/assets/fonts/roboto/Roboto_SemiCondensed-ThinItalic.ttf b/src/assets/fonts/roboto/Roboto_SemiCondensed-ThinItalic.ttf
new file mode 100644
index 0000000..81afeea
Binary files /dev/null and b/src/assets/fonts/roboto/Roboto_SemiCondensed-ThinItalic.ttf differ
diff --git a/src/assets/fonts/roboto/roboto.css b/src/assets/fonts/roboto/roboto.css
new file mode 100644
index 0000000..08a19bf
--- /dev/null
+++ b/src/assets/fonts/roboto/roboto.css
@@ -0,0 +1,143 @@
+@font-face {
+ font-family: "Roboto";
+ src: url("Roboto-Black.ttf") format("truetype");
+ font-weight: 900;
+ font-style: normal;
+ unicode-range: U+30-39;
+}
+
+@font-face {
+ font-family: "Roboto";
+ src: url("Roboto-BlackItalic.ttf") format("truetype");
+ font-weight: 900;
+ font-style: italic;
+ unicode-range: U+30-39;
+}
+
+@font-face {
+ font-family: "Roboto";
+ src: url("Roboto-Bold.ttf") format("truetype");
+ font-weight: 700;
+ font-style: normal;
+ unicode-range: U+30-39;
+}
+
+@font-face {
+ font-family: "Roboto";
+ src: url("Roboto-BoldItalic.ttf") format("truetype");
+ font-weight: 700;
+ font-style: italic;
+ unicode-range: U+30-39;
+}
+
+@font-face {
+ font-family: "Roboto";
+ src: url("Roboto-ExtraBold.ttf") format("truetype");
+ font-weight: 800;
+ font-style: normal;
+ unicode-range: U+30-39;
+}
+
+@font-face {
+ font-family: "Roboto";
+ src: url("Roboto-ExtraBoldItalic.ttf") format("truetype");
+ font-weight: 800;
+ font-style: italic;
+ unicode-range: U+30-39;
+}
+
+@font-face {
+ font-family: "Roboto";
+ src: url("Roboto-ExtraLight.ttf") format("truetype");
+ font-weight: 200;
+ font-style: normal;
+ unicode-range: U+30-39;
+}
+
+@font-face {
+ font-family: "Roboto";
+ src: url("Roboto-ExtraLightItalic.ttf") format("truetype");
+ font-weight: 200;
+ font-style: italic;
+ unicode-range: U+30-39;
+}
+
+@font-face {
+ font-family: "Roboto";
+ src: url("Roboto-Italic.ttf") format("truetype");
+ font-weight: 400;
+ font-style: italic;
+ unicode-range: U+30-39;
+}
+
+@font-face {
+ font-family: "Roboto";
+ src: url("Roboto-Light.ttf") format("truetype");
+ font-weight: 300;
+ font-style: normal;
+ unicode-range: U+30-39;
+}
+
+@font-face {
+ font-family: "Roboto";
+ src: url("Roboto-LightItalic.ttf") format("truetype");
+ font-weight: 300;
+ font-style: italic;
+ unicode-range: U+30-39;
+}
+
+@font-face {
+ font-family: "Roboto";
+ src: url("Roboto-Medium.ttf") format("truetype");
+ font-weight: 500;
+ font-style: normal;
+ unicode-range: U+30-39;
+}
+
+@font-face {
+ font-family: "Roboto";
+ src: url("Roboto-MediumItalic.ttf") format("truetype");
+ font-weight: 500;
+ font-style: italic;
+ unicode-range: U+30-39;
+}
+
+@font-face {
+ font-family: "Roboto";
+ src: url("Roboto-Regular.ttf") format("truetype");
+ font-weight: 400;
+ font-style: normal;
+ unicode-range: U+30-39;
+}
+
+@font-face {
+ font-family: "Roboto";
+ src: url("Roboto-SemiBold.ttf") format("truetype");
+ font-weight: 600;
+ font-style: normal;
+ unicode-range: U+30-39;
+}
+
+@font-face {
+ font-family: "Roboto";
+ src: url("Roboto-SemiBoldItalic.ttf") format("truetype");
+ font-weight: 600;
+ font-style: italic;
+ unicode-range: U+30-39;
+}
+
+@font-face {
+ font-family: "Roboto";
+ src: url("Roboto-Thin.ttf") format("truetype");
+ font-weight: 100;
+ font-style: normal;
+ unicode-range: U+30-39;
+}
+
+@font-face {
+ font-family: "Roboto";
+ src: url("Roboto-ThinItalic.ttf") format("truetype");
+ font-weight: 100;
+ font-style: italic;
+ unicode-range: U+30-39;
+}
diff --git a/src/components/Button.tsx b/src/components/Button.tsx
new file mode 100644
index 0000000..3778c1b
--- /dev/null
+++ b/src/components/Button.tsx
@@ -0,0 +1,36 @@
+import { ButtonHTMLAttributes, FC, memo, ReactNode } from 'react'
+import MoonLoader from "react-spinners/MoonLoader"
+import { XOR } from '../helpers/types'
+import { clx } from '../helpers/utils'
+
+type Props = {
+ className?: string;
+ isLoading?: boolean;
+ percentage?: number;
+} & ButtonHTMLAttributes &
+ XOR<{ children: ReactNode }, { label: string }>;
+
+const Button: FC = memo((props) => {
+ const { isLoading, percentage, label, children, className, ...rest } = props;
+
+ const buttonClass = clx(
+ 'flex rounded-xl items-center justify-center text-center h-10 text-sm bg-primary text-white w-full',
+ rest.disabled && 'cursor-not-allowed opacity-60'
+ );
+
+ return (
+
+ )
+})
+
+Button.displayName = 'Button'
+
+export default Button;
\ No newline at end of file
diff --git a/src/helpers/types.ts b/src/helpers/types.ts
new file mode 100644
index 0000000..d8f7039
--- /dev/null
+++ b/src/helpers/types.ts
@@ -0,0 +1,20 @@
+type Without = { [P in Exclude]?: never };
+
+export type XOR = T | U extends object
+ ? (Without & U) | (Without & T)
+ : T | U;
+
+export type ItemsSelectType = {
+ value: string;
+ label: string;
+};
+
+export type ErrorType = Error & {
+ response?: {
+ data?: {
+ error: {
+ message: string[];
+ };
+ };
+ };
+};
diff --git a/src/helpers/utils.ts b/src/helpers/utils.ts
new file mode 100644
index 0000000..aa728fe
--- /dev/null
+++ b/src/helpers/utils.ts
@@ -0,0 +1,11 @@
+import { twMerge } from "tailwind-merge";
+
+/**
+ * Concatenates truthy classes into a space-separated string.
+ *
+ * @param classes - The classes to concatenate.
+ * @returns The concatenated classes.
+ */
+export const clx = (...classes: (string | boolean | undefined)[]): string => {
+ return twMerge(classes.filter(Boolean).join(" "));
+};
diff --git a/src/shared/Header.tsx b/src/shared/Header.tsx
new file mode 100644
index 0000000..901dd09
--- /dev/null
+++ b/src/shared/Header.tsx
@@ -0,0 +1,72 @@
+import { FC } from 'react'
+import Image from 'next/image'
+import Link from 'next/link'
+import { Profile, SearchNormal } from 'iconsax-react'
+import Button from '@/components/Button'
+
+const Header: FC = () => {
+ return (
+
+
+
+
+
+
+ -
+ خانه
+
+
+
+
+ -
+ محصولات
+
+
+
+
+ -
+ خدمات
+
+
+
+
+ -
+ درباره ی ما
+
+
+
+
+ -
+ مجله
+
+
+
+
+
+
+
+
+ )
+}
+
+export default Header
\ No newline at end of file