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 ( +
+ banner + +
+
+

داناک،

+

تلفیق هنر و تکنولوژی

+ +
+
+
+ ) +} + +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 ( -
-
- Next.js logo -
    -
  1. - Get started by editing{" "} - - src/app/page.tsx - - . -
  2. -
  3. - Save and see your changes instantly. -
  4. -
+
+
+ + + + - -
-
- ); + ) } + +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 ( +
+
+ logo + +
    + +
  • + خانه +
  • + + + +
  • + محصولات +
  • + + + +
  • + خدمات +
  • + + + +
  • + درباره ی ما +
  • + + + +
  • + مجله +
  • + +
+ +
+
+ +
+ +
+ +
ورود | ثبت نام
+
+ +
+
+ +
+ ) +} + +export default Header \ No newline at end of file