From fbd966a3fd4ed018f5f51492be7c02890199aa99 Mon Sep 17 00:00:00 2001 From: Mohammed Al-yaseen Date: Sun, 6 Apr 2025 20:03:35 +0300 Subject: [PATCH] =?UTF-8?q?Initial=20commit=20=F0=9F=8C=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 41 + .vscode/settings.json | 5 + README.md | 36 + eslint.config.mjs | 16 + next.config.ts | 7 + package.json | 27 + public/file.svg | 1 + public/globe.svg | 1 + public/next.svg | 1 + public/vercel.svg | 1 + public/window.svg | 1 + src/app/components/Contact/Contact.tsx | 242 ++ .../Contact/ContactSection.module.css | 187 + src/app/components/Header/Header.module.css | 74 + src/app/components/Header/Header.tsx | 73 + .../components/Hero/HeroSection.module.css | 109 + src/app/components/Hero/HeroSection.tsx | 60 + .../components/Hero/ParticleBackground.tsx | 137 + .../components/Preferences/Preferences.tsx | 143 + .../PreferencesSelector.module.css | 60 + .../ProjectsShowcase/ProjectsShowcase.tsx | 265 ++ .../ProjectsShowcaseSelector.module.css | 178 + src/app/components/Services/Services.tsx | 185 + .../Services/ServicesSelector.module.css | 102 + .../components/Testimonials/Testimonials.tsx | 149 + .../TestimonialsSection.module.css | 164 + src/app/favicon.ico | Bin 0 -> 25931 bytes src/app/globals.css | 86 + src/app/layout.tsx | 49 + src/app/page.module.css | 42 + src/app/page.tsx | 72 + src/app/theme/themeConfig.ts | 45 + tsconfig.json | 27 + yarn.lock | 3298 +++++++++++++++++ 34 files changed, 5884 insertions(+) create mode 100644 .gitignore create mode 100644 .vscode/settings.json create mode 100644 README.md create mode 100644 eslint.config.mjs create mode 100644 next.config.ts create mode 100644 package.json create mode 100644 public/file.svg create mode 100644 public/globe.svg create mode 100644 public/next.svg create mode 100644 public/vercel.svg create mode 100644 public/window.svg create mode 100644 src/app/components/Contact/Contact.tsx create mode 100644 src/app/components/Contact/ContactSection.module.css create mode 100644 src/app/components/Header/Header.module.css create mode 100644 src/app/components/Header/Header.tsx create mode 100644 src/app/components/Hero/HeroSection.module.css create mode 100644 src/app/components/Hero/HeroSection.tsx create mode 100644 src/app/components/Hero/ParticleBackground.tsx create mode 100644 src/app/components/Preferences/Preferences.tsx create mode 100644 src/app/components/Preferences/PreferencesSelector.module.css create mode 100644 src/app/components/ProjectsShowcase/ProjectsShowcase.tsx create mode 100644 src/app/components/ProjectsShowcase/ProjectsShowcaseSelector.module.css create mode 100644 src/app/components/Services/Services.tsx create mode 100644 src/app/components/Services/ServicesSelector.module.css create mode 100644 src/app/components/Testimonials/Testimonials.tsx create mode 100644 src/app/components/Testimonials/TestimonialsSection.module.css create mode 100644 src/app/favicon.ico create mode 100644 src/app/globals.css create mode 100644 src/app/layout.tsx create mode 100644 src/app/page.module.css create mode 100644 src/app/page.tsx create mode 100644 src/app/theme/themeConfig.ts create mode 100644 tsconfig.json create mode 100644 yarn.lock diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5ef6a52 --- /dev/null +++ b/.gitignore @@ -0,0 +1,41 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.* +.yarn/* +!.yarn/patches +!.yarn/plugins +!.yarn/releases +!.yarn/versions + +# testing +/coverage + +# next.js +/.next/ +/out/ + +# production +/build + +# misc +.DS_Store +*.pem + +# debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* +.pnpm-debug.log* + +# env files (can opt-in for committing if needed) +.env* + +# vercel +.vercel + +# typescript +*.tsbuildinfo +next-env.d.ts diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..a35eef3 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,5 @@ +{ + "cSpell.words": [ + "hoverable" + ] +} \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..e215bc4 --- /dev/null +++ b/README.md @@ -0,0 +1,36 @@ +This is a [Next.js](https://nextjs.org) project bootstrapped with [`create-next-app`](https://nextjs.org/docs/app/api-reference/cli/create-next-app). + +## Getting Started + +First, run the development server: + +```bash +npm run dev +# or +yarn dev +# or +pnpm dev +# or +bun dev +``` + +Open [http://localhost:3000](http://localhost:3000) with your browser to see the result. + +You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file. + +This project uses [`next/font`](https://nextjs.org/docs/app/building-your-application/optimizing/fonts) to automatically optimize and load [Geist](https://vercel.com/font), a new font family for Vercel. + +## Learn More + +To learn more about Next.js, take a look at the following resources: + +- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API. +- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial. + +You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js) - your feedback and contributions are welcome! + +## Deploy on Vercel + +The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js. + +Check out our [Next.js deployment documentation](https://nextjs.org/docs/app/building-your-application/deploying) for more details. diff --git a/eslint.config.mjs b/eslint.config.mjs new file mode 100644 index 0000000..c85fb67 --- /dev/null +++ b/eslint.config.mjs @@ -0,0 +1,16 @@ +import { dirname } from "path"; +import { fileURLToPath } from "url"; +import { FlatCompat } from "@eslint/eslintrc"; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = dirname(__filename); + +const compat = new FlatCompat({ + baseDirectory: __dirname, +}); + +const eslintConfig = [ + ...compat.extends("next/core-web-vitals", "next/typescript"), +]; + +export default eslintConfig; diff --git a/next.config.ts b/next.config.ts new file mode 100644 index 0000000..e9ffa30 --- /dev/null +++ b/next.config.ts @@ -0,0 +1,7 @@ +import type { NextConfig } from "next"; + +const nextConfig: NextConfig = { + /* config options here */ +}; + +export default nextConfig; diff --git a/package.json b/package.json new file mode 100644 index 0000000..3b440e7 --- /dev/null +++ b/package.json @@ -0,0 +1,27 @@ +{ + "name": "antd-demo", + "version": "0.1.0", + "private": true, + "scripts": { + "dev": "next dev --turbopack", + "build": "next build", + "start": "next start", + "lint": "next lint" + }, + "dependencies": { + "antd": "^5.24.6", + "framer-motion": "^12.6.3", + "next": "15.2.4", + "react": "^19.0.0", + "react-dom": "^19.0.0" + }, + "devDependencies": { + "@eslint/eslintrc": "^3", + "@types/node": "^20", + "@types/react": "^19", + "@types/react-dom": "^19", + "eslint": "^9", + "eslint-config-next": "15.2.4", + "typescript": "^5" + } +} diff --git a/public/file.svg b/public/file.svg new file mode 100644 index 0000000..004145c --- /dev/null +++ b/public/file.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/globe.svg b/public/globe.svg new file mode 100644 index 0000000..567f17b --- /dev/null +++ b/public/globe.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/next.svg b/public/next.svg new file mode 100644 index 0000000..5174b28 --- /dev/null +++ b/public/next.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vercel.svg b/public/vercel.svg new file mode 100644 index 0000000..7705396 --- /dev/null +++ b/public/vercel.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/window.svg b/public/window.svg new file mode 100644 index 0000000..b2b2a44 --- /dev/null +++ b/public/window.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/app/components/Contact/Contact.tsx b/src/app/components/Contact/Contact.tsx new file mode 100644 index 0000000..7e0b521 --- /dev/null +++ b/src/app/components/Contact/Contact.tsx @@ -0,0 +1,242 @@ +// File: src/components/home/ContactSection.tsx + +import { + EnvironmentOutlined, + MailOutlined, + PhoneOutlined, + SendOutlined, +} from "@ant-design/icons"; +import { Button, Col, Form, Input, message, Row, Typography } from "antd"; +import { motion } from "framer-motion"; +import Image from "next/image"; +import React, { useState } from "react"; +import styles from "./ContactSection.module.css"; + +const { Title, Paragraph, Text } = Typography; +const { TextArea } = Input; + +const ContactSection: React.FC = () => { + const [form] = Form.useForm(); + const [submitting, setSubmitting] = useState(false); + + const handleSubmit = async () => { + setSubmitting(true); + + // Simulate API call + setTimeout(() => { + message.success("Your message has been sent successfully!"); + form.resetFields(); + setSubmitting(false); + }, 1500); + }; + + const containerVariants = { + hidden: { opacity: 0 }, + visible: { + opacity: 1, + transition: { + staggerChildren: 0.2, + }, + }, + }; + + const itemVariants = { + hidden: { y: 20, opacity: 0 }, + visible: { + y: 0, + opacity: 1, + transition: { duration: 0.5 }, + }, + }; + + return ( +
+
+
+
+
+ +
+ + + Get In Touch + + + Ready to transform your ideas into reality? Contact us today. + + + + + + + +
+ +
+
+ + Email + + + info@techmaster.com + +
+
+ + +
+ +
+
+ + Phone + + +1 (555) 123-4567 +
+
+ + +
+ +
+
+ + Address + + + 1234 Tech Boulevard, Innovation District +
+ San Francisco, CA 94105 +
+
+
+ + + Office Location Map + +
+ + + + + + Send Us a Message + + +
+ + + + + + + + + + + + + + + + + + +