Initial commit

This commit is contained in:
codebox283 2025-05-24 19:03:33 +05:30
commit a71c85aa82
90 changed files with 9726 additions and 0 deletions

3
.dockerignore Normal file
View File

@ -0,0 +1,3 @@
node_modules
.next
.git

2
.env Normal file
View File

@ -0,0 +1,2 @@
NEXT_PUBLIC_GHOST_API_URL=https://everydayseries.io
NEXT_PUBLIC_GHOST_CONTENT_API_KEY=d3b620d56e7fb38244fd474a58

4
.eslintrc.json Normal file
View File

@ -0,0 +1,4 @@
{
// "extends": "next/core-web-vitals"
"extends": "next"
}

35
.gitignore vendored Normal file
View File

@ -0,0 +1,35 @@
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
# dependencies
/node_modules
/.pnp
.pnp.js
# testing
/coverage
# next.js
/.next/
/out/
# production
/build
# misc
.DS_Store
*.pem
# debug
npm-debug.log*
yarn-debug.log*
yarn-error.log*
# local env files
.env*.local
# vercel
.vercel
# typescript
*.tsbuildinfo
next-env.d.ts

28
Dockerfile Normal file
View File

@ -0,0 +1,28 @@
# Step 1: Use Node.js official image as base
FROM node:18-alpine AS base
# Step 2: Set working directory inside container
WORKDIR /app
# Step 3: Copy package.json and package-lock.json to container
COPY package*.json ./
# Step 4: Install dependencies
RUN npm install --frozen-lockfile
# Step 5: Copy the rest of the app files to container
COPY . .
# Step 6: Build the Next.js application
RUN npm run build
# Step 7: Expose the port that the Next.js app will run on
EXPOSE 3000
EXPOSE 2368
# Step 8: Set environment variable for production
ENV NODE_ENV=production
# Step 9: Run the application using 'next start'
CMD ["npm", "run", "start"]

38
README.md Normal file
View File

@ -0,0 +1,38 @@
This is a [Next.js](https://nextjs.org/) project bootstrapped with [`create-next-app`](https://github.com/vercel/next.js/tree/canary/packages/create-next-app).
## Getting Started
First, run the development server:
```bash
npm run dev
# or
yarn dev
# or
pnpm dev
```
Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.
You can start editing the page by modifying `pages/index.tsx`. The page auto-updates as you edit the file.
[API routes](https://nextjs.org/docs/api-routes/introduction) can be accessed on [http://localhost:3000/api/hello](http://localhost:3000/api/hello). This endpoint can be edited in `pages/api/hello.ts`.
The `pages/api` directory is mapped to `/api/*`. Files in this directory are treated as [API routes](https://nextjs.org/docs/api-routes/introduction) instead of React pages.
This project uses [`next/font`](https://nextjs.org/docs/basic-features/font-optimization) to automatically optimize and load Inter, a custom Google Font.
## 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/deployment) for more details.

60
docker-compose.yml Normal file
View File

@ -0,0 +1,60 @@
services:
ant-project:
build:
context: .
dockerfile: Dockerfile
ports:
- '3000:3000'
environment:
NODE_ENV: production
depends_on:
- ghost-cms
ghost-cms:
image: ghost:5-alpine
ports:
- '2368:2368'
environment:
url: http://localhost:2368
database__client: mysql
database__connection__host: mysql
database__connection__user: root
database__connection__password: rootpassword
database__connection__database: ghostdb
volumes:
- ./ghost-data:/var/lib/ghost/content
depends_on:
mysql:
condition: service_healthy
mysql:
image: mysql:8
ports:
- '3306:3306'
environment:
MYSQL_ROOT_PASSWORD: rootpassword
MYSQL_DATABASE: ghostdb
volumes:
- mysql-data:/var/lib/mysql
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
interval: 10s
timeout: 5s
retries: 3
nginx:
image: nginx:alpine
ports:
- '80:80'
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
depends_on:
- ant-project
- ghost-cms
volumes:
ghost-data:
mysql-data:
ant-project:

19
next.config.js Normal file
View File

@ -0,0 +1,19 @@
/** @type {import('next').NextConfig} */
const nextConfig = {
reactStrictMode: true,
}
module.exports = nextConfig
module.exports = {
eslint: {
ignoreDuringBuilds: true, // This allows the build to pass even with ESLint warnings
},
images: {
domains: [
'images.unsplash.com',
'everydayseries.io',
'flowbite.s3.amazonaws.com',
'localhost' // For local development
],
},
};

27
nginx.conf Normal file
View File

@ -0,0 +1,27 @@
events {
worker_connections 1024;
}
http {
server {
listen 80;
# Route traffic for Next.js app
location / {
proxy_pass http://nextjs:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
# Route traffic for Ghost CMS
location /backend/ {
proxy_pass http://ghost:2368;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
}

5739
package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

30
package.json Normal file
View File

@ -0,0 +1,30 @@
{
"name": "ant-project",
"version": "0.1.0",
"private": true,
"scripts": {
"dev": "next dev",
"build": "next build",
"start": "next start",
"lint": "next lint"
},
"dependencies": {
"@tryghost/content-api": "^1.11.21",
"@types/node": "18.16.3",
"@types/react": "18.2.0",
"@types/react-dom": "18.2.1",
"autoprefixer": "10.4.14",
"eslint": "8.39.0",
"eslint-config-next": "13.3.4",
"flowbite": "^1.6.5",
"next": "^13.3.4",
"postcss": "8.4.23",
"react": "18.2.0",
"react-dom": "18.2.0",
"tailwindcss": "3.3.2",
"typescript": "5.0.4"
},
"devDependencies": {
"@types/tryghost__content-api": "^1.3.17"
}
}

6
postcss.config.js Normal file
View File

@ -0,0 +1,6 @@
module.exports = {
plugins: {
tailwindcss: {},
autoprefixer: {},
},
}

BIN
public/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

3
public/icons/airbnb.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 5.7 KiB

3
public/icons/amazon.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 6.5 KiB

View File

@ -0,0 +1,3 @@
<svg width="34" height="33" viewBox="0 0 34 33" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M17 0.5C7.90209 0.5 0.5 7.67779 0.5 16.5C0.5 25.3222 7.90209 32.5 17 32.5C26.0979 32.5 33.5 25.3222 33.5 16.5C33.5 7.67779 26.0979 0.5 17 0.5ZM17 30.9758C8.7683 30.9758 2.07178 24.4822 2.07178 16.5C2.07178 8.51781 8.76837 2.02415 17 2.02415C25.2316 2.02415 31.9282 8.51781 31.9282 16.5C31.9282 24.4822 25.2316 30.9758 17 30.9758ZM21.2385 15.9611C21.386 16.1041 21.4686 16.2976 21.4686 16.4997C21.4686 16.7017 21.386 16.8958 21.2385 17.0383L13.8724 24.1813C13.7191 24.3299 13.5176 24.4044 13.3169 24.4044C13.1157 24.4044 12.9147 24.3299 12.7614 24.1813C12.4546 23.8837 12.4546 23.4016 12.7614 23.104L19.5718 16.5L12.7614 9.89596C12.4546 9.59841 12.4546 9.11627 12.7614 8.81867C13.0683 8.52107 13.5655 8.52112 13.8724 8.81867L21.2385 15.9611Z" fill="#111111"/>
</svg>

After

Width:  |  Height:  |  Size: 871 B

View File

@ -0,0 +1,3 @@
<svg width="33" height="33" viewBox="0 0 33 33" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M16.5 0.5C7.40209 0.5 0 7.67779 0 16.5C0 25.3222 7.40209 32.5 16.5 32.5C25.5979 32.5 33 25.3222 33 16.5C33 7.67779 25.5979 0.5 16.5 0.5ZM16.5 30.9758C8.2683 30.9758 1.57178 24.4822 1.57178 16.5C1.57178 8.51781 8.26837 2.02415 16.5 2.02415C24.7316 2.02415 31.4282 8.51781 31.4282 16.5C31.4282 24.4822 24.7316 30.9758 16.5 30.9758ZM20.7385 15.9611C20.886 16.1041 20.9686 16.2976 20.9686 16.4997C20.9686 16.7017 20.886 16.8958 20.7385 17.0383L13.3724 24.1813C13.2191 24.3299 13.0176 24.4044 12.8169 24.4044C12.6157 24.4044 12.4147 24.3299 12.2614 24.1813C11.9546 23.8837 11.9546 23.4016 12.2614 23.104L19.0718 16.5L12.2614 9.89596C11.9546 9.59841 11.9546 9.11627 12.2614 8.81867C12.5683 8.52107 13.0655 8.52112 13.3724 8.81867L20.7385 15.9611Z" fill="white"/>
</svg>

After

Width:  |  Height:  |  Size: 869 B

3
public/icons/coma.svg Normal file
View File

@ -0,0 +1,3 @@
<svg width="544" height="414" viewBox="0 0 544 414" fill="none" xmlns="http://www.w3.org/2000/svg">
<path opacity="0.2" d="M384.042 227.022C363.308 227.022 346.181 219.36 332.659 204.035C319.137 187.809 312.376 165.272 312.376 136.425C312.376 119.298 315.08 102.62 320.489 86.3941C325.898 69.2663 334.011 54.3922 344.828 41.7717C355.646 29.1512 369.168 19.2351 385.394 12.0234C401.62 3.9102 420.551 -0.146382 442.186 -0.146382C456.61 -0.146382 469.681 2.10727 481.4 6.61459C494.02 10.2204 504.838 16.9814 513.853 26.8976C522.867 35.9122 530.079 48.5327 535.488 64.759C540.897 80.9854 543.601 101.719 543.601 126.96C543.601 163.019 538.192 198.176 527.375 232.431C516.557 266.687 501.683 297.337 482.752 324.38C464.723 351.424 443.539 373.06 419.199 389.286C395.761 405.512 371.421 413.625 346.18 413.625C325.447 413.625 311.474 409.118 304.262 400.103C297.952 390.187 294.797 378.919 294.797 366.299C294.797 362.693 299.304 356.382 308.319 347.368C318.235 338.353 328.602 327.986 339.42 316.267C350.237 303.647 360.153 289.674 369.168 274.349C379.084 259.024 384.042 243.249 384.042 227.022ZM89.2634 227.022C68.5298 227.022 51.4019 219.36 37.88 204.035C24.358 187.809 17.5971 165.272 17.5971 136.425C17.5971 119.298 20.3015 102.62 25.7102 86.3941C31.119 69.2663 39.2322 54.3922 50.0498 41.7717C60.8673 29.1512 74.3893 19.2351 90.6156 12.0234C106.842 3.9102 125.773 -0.146382 147.408 -0.146382C161.831 -0.146382 174.902 2.10727 186.621 6.61459C199.242 10.2204 210.06 16.9814 219.074 26.8976C228.089 35.9122 235.3 48.5327 240.709 64.759C246.118 80.9854 248.822 101.719 248.822 126.96C248.822 163.019 243.414 198.176 232.596 232.431C221.779 266.687 206.904 297.337 187.974 324.38C169.944 351.424 148.76 373.06 124.42 389.286C100.982 405.512 76.6429 413.625 51.402 413.625C30.6683 413.625 16.6956 409.118 9.48391 400.103C3.17366 390.187 0.0185356 378.919 0.0185356 366.299C0.0185356 362.693 4.52585 356.382 13.5405 347.368C23.4566 338.353 33.8234 327.986 44.641 316.267C55.4585 303.647 65.3746 289.674 74.3893 274.349C84.3054 259.024 89.2634 243.249 89.2634 227.022Z" fill="white"/>
</svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 9.2 KiB

View File

@ -0,0 +1,8 @@
<svg width="62" height="60" viewBox="0 0 62 60" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M45.9001 29.4863C45.9001 25.1802 49.3959 21.6893 53.702 21.6893C58.0082 21.6893 61.5039 25.1802 61.5039 29.4863C61.5039 33.7925 58.0082 37.2833 53.702 37.2833C49.3959 37.2833 45.9001 33.7925 45.9001 29.4863Z" fill="white"/>
<path d="M15.6035 7.79687C15.6035 12.103 12.1078 15.5939 7.80164 15.5939C3.49548 15.5939 -0.000232915 12.103 -0.000233184 7.79687C-0.000233453 3.49071 3.49548 -0.000129898 7.80164 -0.000130167C12.1078 -0.000130435 15.6035 3.49071 15.6035 7.79687Z" fill="white"/>
<rect x="61.498" y="59.0615" width="39.8951" height="15.5883" rx="7.79417" transform="rotate(180 61.498 59.0615)" fill="#36D1B7"/>
<rect x="61.498" y="15.5939" width="39.8951" height="15.5883" rx="7.79417" transform="rotate(180 61.498 15.5939)" fill="#615DFF"/>
<rect x="39.9009" y="37.278" width="39.8951" height="15.5883" rx="7.79417" transform="rotate(180 39.9009 37.278)" fill="#A93BFF"/>
<path d="M15.6035 51.2645C15.6035 55.5707 12.1078 59.0615 7.80164 59.0615C3.49548 59.0615 -0.000232915 55.5707 -0.000233184 51.2645C-0.000233453 46.9584 3.49548 43.4675 7.80164 43.4675C12.1078 43.4675 15.6035 46.9584 15.6035 51.2645Z" fill="white"/>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

8
public/icons/es.svg Normal file
View File

@ -0,0 +1,8 @@
<svg width="62" height="60" viewBox="0 0 62 60" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M45.9001 29.4864C45.9001 25.1802 49.3959 21.6894 53.702 21.6894C58.0082 21.6894 61.5039 25.1802 61.5039 29.4864C61.5039 33.7926 58.0082 37.2834 53.702 37.2834C49.3959 37.2834 45.9001 33.7926 45.9001 29.4864Z" fill="#111111"/>
<path d="M15.6035 7.79687C15.6035 12.103 12.1078 15.5939 7.80164 15.5939C3.49548 15.5939 -0.000232915 12.103 -0.000233184 7.79687C-0.000233453 3.49071 3.49548 -0.000129898 7.80164 -0.000130167C12.1078 -0.000130435 15.6035 3.49071 15.6035 7.79687Z" fill="#111111"/>
<rect x="61.498" y="59.0615" width="39.8951" height="15.5883" rx="7.79417" transform="rotate(180 61.498 59.0615)" fill="#36D1B7"/>
<rect x="61.498" y="15.5939" width="39.8951" height="15.5883" rx="7.79417" transform="rotate(180 61.498 15.5939)" fill="#615DFF"/>
<rect x="39.9009" y="37.278" width="39.8951" height="15.5883" rx="7.79417" transform="rotate(180 39.9009 37.278)" fill="#A93BFF"/>
<path d="M15.6035 51.2645C15.6035 55.5707 12.1078 59.0615 7.80164 59.0615C3.49548 59.0615 -0.000232915 55.5707 -0.000233184 51.2645C-0.000233453 46.9584 3.49548 43.4675 7.80164 43.4675C12.1078 43.4675 15.6035 46.9584 15.6035 51.2645Z" fill="#111111"/>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

10
public/icons/fc.svg Normal file
View File

@ -0,0 +1,10 @@
<svg width="66" height="66" viewBox="0 0 66 66" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="66" height="66" rx="8.11265" fill="url(#paint0_linear_192_6066)"/>
<path d="M26.5848 56.3744L32.5815 36.2015H19.2505L27.4029 12.3744H45.3312L39.3307 27.6025L49.5005 27.4304L26.5848 56.3744Z" fill="white"/>
<defs>
<linearGradient id="paint0_linear_192_6066" x1="33" y1="0" x2="33" y2="66" gradientUnits="userSpaceOnUse">
<stop stop-color="#F46363"/>
<stop offset="1" stop-color="#FF9D9D"/>
</linearGradient>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 531 B

3
public/icons/google.svg Normal file
View File

@ -0,0 +1,3 @@
<svg width="109" height="36" viewBox="0 0 109 36" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fillRule="evenodd" clipRule="evenodd" d="M14.0572 12.6859H26.8107C26.8107 12.6859 27.0374 13.6002 27.0374 15.2002C27.0374 22.8001 21.5959 27.8858 14.1706 27.8858C5.72491 27.8858 0 20.9716 0 13.8859C0 6.62887 6.065 -0.0567786 13.9438 0.000363663C20.1222 0.000363663 23.5231 3.77175 23.5231 3.77175L20.9158 6.51458C20.9158 6.51458 18.4217 3.77175 14.1139 3.77175C8.55902 3.77175 4.13781 8.22885 4.13781 14.0002C4.13781 19.8859 8.78575 24.1144 14.1139 24.1144C18.2517 24.1144 22.6729 21.7716 23.1264 16.4573H14.0572V12.6859ZM37.1836 9.88598C31.9688 9.88598 28.2278 14.0002 28.2278 18.8002C28.2278 23.7144 31.8554 27.8858 37.2969 27.8858C42.2283 27.8858 46.196 24.1715 46.196 18.9145C46.1394 12.9717 41.4914 9.88598 37.1836 9.88598ZM37.2402 13.4859C39.791 13.4859 42.2283 15.6002 42.2283 18.9145C42.2283 22.2287 39.8476 24.343 37.2402 24.343C34.4061 24.343 32.1955 22.0573 32.1955 18.8573C32.1388 15.7716 34.3495 13.4859 37.2402 13.4859ZM47.7265 18.8002C47.7265 14.0002 51.4675 9.88598 56.6823 9.88598C60.9901 9.88598 65.6381 12.9717 65.6947 18.9145C65.6947 24.1715 61.727 27.8858 56.7956 27.8858C51.3541 27.8858 47.7265 23.7144 47.7265 18.8002ZM61.727 18.9145C61.727 15.6002 59.2897 13.4859 56.739 13.4859C53.8482 13.4859 51.6375 15.7716 51.6942 18.8573C51.6942 22.0573 53.9048 24.343 56.739 24.343C59.3463 24.343 61.727 22.2287 61.727 18.9145ZM75.7842 9.94312C70.9662 9.94312 67.2252 14.1716 67.2252 18.9145C67.2252 24.2858 71.5897 27.9429 75.6708 27.9429C78.2215 27.9429 79.5252 26.9715 80.6022 25.7715V27.5429C80.6022 30.6286 78.7317 32.5143 75.8976 32.5143C73.1768 32.5143 71.8164 30.4572 71.3063 29.3144L67.8487 30.7429C69.039 33.3143 71.4763 36 75.8409 36C80.6022 36 84.2298 32.9715 84.2298 26.6287V10.4574H80.4888V12.0002C79.4685 10.7431 77.8814 9.94312 75.7842 9.94312ZM76.1243 13.4859C78.4483 13.4859 80.8856 15.5431 80.8856 18.9716C80.8856 22.5144 78.5049 24.4001 76.0676 24.4001C73.5169 24.4001 71.1362 22.2859 71.1362 19.0287C71.1929 15.4859 73.6303 13.4859 76.1243 13.4859ZM92.6755 18.8573C92.6755 13.4859 96.4732 9.88598 101.008 9.88598C104.522 9.88598 107.186 12.286 108.376 15.0288L109 16.5145L97.04 21.543C97.7769 22.9144 98.9106 24.2858 101.405 24.2858C103.615 24.2858 104.976 23.0858 105.769 21.8287L108.887 23.943C107.526 25.7715 105.146 27.8858 101.405 27.8858C96.9267 27.8858 92.6755 24.5144 92.6755 18.8573ZM104.465 15.3145C103.899 14.2288 102.765 13.3717 101.121 13.3717C98.5705 13.3717 96.0764 16.0573 96.5299 18.6859L104.465 15.3145ZM90.9184 27.3715H87.0073V0.857498H90.9184V27.3715Z" fill="#111111"/>
</svg>

After

Width:  |  Height:  |  Size: 2.6 KiB

9
public/icons/idea1.svg Normal file
View File

@ -0,0 +1,9 @@
<svg width="98" height="98" viewBox="0 0 98 98" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M52.152 0.0999243C38.4551 -0.757591 25.4207 3.92662 15.4598 13.2826C5.63416 22.5089 0 35.5278 0 48.9997V63.6998C0 64.6032 0.730073 65.3331 1.63371 65.3331H11.436V80.0332C11.436 85.4378 15.8324 89.8333 21.2382 89.8333H26.1394V98H29.4068V88.1999C29.4068 87.2965 28.6767 86.5666 27.7731 86.5666H21.2382C17.6346 86.5666 14.7034 83.6361 14.7034 80.0332V63.6998C14.7034 62.7963 13.9733 62.0664 13.0697 62.0664H3.26742V48.9997C3.26742 36.24 8.39242 24.4024 17.6965 15.6626C26.9904 6.92936 39.1439 2.55498 51.9485 3.35859C74.9343 4.79287 93.7154 23.9462 94.7125 46.968C95.2777 60.053 83.6441 78.6343 75.6027 87.0736C75.3117 87.3776 75.152 87.7809 75.152 88.1987V97.9988H78.4194V88.8455C87.0533 79.558 98.5803 60.7706 97.9773 46.8265C96.9081 22.1602 76.7782 1.63234 52.1512 0.0979269L52.152 0.0999243Z" fill="black"/>
<path d="M42.4506 71.8672C42.4506 72.4812 42.5126 73.0791 42.6074 73.6668C42.6191 73.7324 42.6256 73.7988 42.6366 73.8644C42.7445 74.4754 42.9028 75.0668 43.1041 75.6399C43.1092 75.653 43.1092 75.6662 43.1136 75.6793C43.1165 75.6873 43.123 75.6939 43.1267 75.7019C44.7086 80.1237 48.9285 83.3006 53.8866 83.3006C58.8447 83.3006 63.0645 80.1235 64.6465 75.7026C64.6494 75.6946 64.656 75.6881 64.6596 75.68C64.6647 75.6669 64.6662 75.6538 64.6691 75.6407C64.8704 75.0675 65.0287 74.4747 65.1366 73.8637C65.1483 73.798 65.1563 73.7331 65.1658 73.6675C65.2606 73.0791 65.3226 72.4811 65.3226 71.8672V60.6066C72.1463 56.6457 76.7586 49.2761 76.7586 40.8329C76.7586 28.2233 66.499 17.9661 53.8866 17.9661C41.2742 17.9661 31.0146 28.2233 31.0146 40.8329C31.0146 49.2738 35.6269 56.645 42.4506 60.6066L42.4506 71.8672ZM62.0551 71.8672C62.0551 72.4126 61.9982 72.9602 61.8852 73.5005H45.8894C45.7749 72.9602 45.718 72.4126 45.718 71.8672V70.2338H62.0551L62.0551 71.8672ZM53.8866 80.0339C51.2289 80.0339 48.8855 78.7389 47.3941 76.7672H60.3807C58.8878 78.7388 56.5444 80.0339 53.8868 80.0339H53.8866ZM34.282 40.8336C34.282 30.0259 43.0764 21.2335 53.8866 21.2335C64.6967 21.2335 73.4911 30.0259 73.4911 40.8336C73.4911 48.4338 69.134 55.0226 62.7932 58.2725C62.1871 58.5832 61.5665 58.8588 60.937 59.1009C60.8028 59.1534 60.6657 59.2008 60.5301 59.2496C59.9422 59.4618 59.3456 59.6448 58.7425 59.8001C58.6185 59.833 58.4945 59.8672 58.3683 59.8964C58.2706 59.919 58.1692 59.9292 58.0707 59.9503L63.6239 40.6171C63.6676 40.4698 63.6888 40.3196 63.6888 40.1665C63.6888 38.5171 62.7035 37.0449 61.1813 36.4128C59.6569 35.7842 57.9168 36.1284 56.7519 37.2929L53.8863 40.1586L51.0207 37.2936C49.8545 36.1292 48.1157 35.7857 46.5914 36.4135C45.0693 37.045 44.0839 38.5165 44.0839 40.1665C44.0839 40.3204 44.105 40.472 44.1473 40.6171L49.7004 59.9503C49.6027 59.9292 49.5013 59.919 49.4029 59.8964C49.2774 59.8672 49.1549 59.833 49.0287 59.8001C48.4256 59.6463 47.8297 59.4618 47.2411 59.2496C47.1055 59.2008 46.9684 59.1534 46.8342 59.1009C46.2055 58.8573 45.5841 58.5832 44.978 58.2725C38.6386 55.0226 34.2816 48.4338 34.2816 40.8336H34.282ZM53.9538 60.4188H53.8196C53.6219 60.4188 53.4243 60.3897 53.2252 60.3831L47.3679 39.9896C47.4379 39.6353 47.7143 39.4814 47.8434 39.4274C47.9908 39.3669 48.3693 39.2575 48.7106 39.5988L52.7314 43.6187C53.3703 44.2574 54.403 44.2574 55.0412 43.6187L59.062 39.5988C59.4033 39.2575 59.7826 39.3655 59.9292 39.4274C60.0583 39.4814 60.3347 39.6345 60.4047 39.9896L54.5482 60.3831C54.3491 60.3897 54.1514 60.4174 53.9538 60.4174L53.9538 60.4188ZM47.432 62.758C47.777 62.8593 48.1263 62.9424 48.4779 63.0278C48.836 63.1145 49.1904 63.2057 49.5529 63.2757C49.9088 63.3442 50.2684 63.3887 50.628 63.4405C50.9941 63.493 51.358 63.5564 51.7292 63.5907C52.0998 63.6249 52.4739 63.6315 52.8466 63.6476C53.1909 63.6672 53.5336 63.7001 53.8866 63.7001C54.2396 63.7001 54.5824 63.6672 54.9288 63.6476C55.3015 63.6315 55.6735 63.6249 56.0462 63.5907C56.4189 63.5564 56.7814 63.493 57.1475 63.4405C57.507 63.3902 57.8666 63.3442 58.2225 63.2757C58.585 63.2057 58.9394 63.1138 59.2976 63.0278C59.6469 62.9432 59.997 62.8615 60.3434 62.758C60.7095 62.6501 61.0655 62.5246 61.4236 62.3985C61.6344 62.3248 61.848 62.268 62.0574 62.1878L62.0566 66.9668H45.718V62.1878C45.9252 62.268 46.141 62.3248 46.3518 62.3985C46.7099 62.5239 47.0659 62.6501 47.432 62.758Z" fill="black"/>
<path d="M52.2529 9.80005H55.5204V14.7001H52.2529V9.80005Z" fill="black"/>
<path d="M21.2129 37.5669H26.114V40.8336H21.2129V37.5669Z" fill="black"/>
<path d="M81.6602 39.2004H86.5613V42.4671H81.6602V39.2004Z" fill="black"/>
<path d="M28.2256 20.7556L30.5361 18.4456L33.8028 21.7115L31.4923 24.0215L28.2256 20.7556Z" fill="black"/>
<path d="M73.9697 21.7115L77.2364 18.4456L79.5469 20.7556L76.2803 24.0215L73.9697 21.7115Z" fill="black"/>
</svg>

After

Width:  |  Height:  |  Size: 4.6 KiB

BIN
public/icons/idea2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

BIN
public/icons/idea3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

3
public/icons/idea4.svg Normal file
View File

@ -0,0 +1,3 @@
<svg width="95" height="82" viewBox="0 0 95 82" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M37.4625 39.9943H10.9342C10.114 39.9943 9.44963 40.6554 9.44963 41.4732V60.1553H1.48456C0.664405 60.1553 0 60.8165 0 61.6342V80.5204C0 81.3374 0.663692 81.9993 1.48456 81.9993H20.3735C21.1937 81.9993 21.8581 81.3381 21.8581 80.5204L21.8573 61.6342C21.8573 60.8172 21.1937 60.1553 20.3728 60.1553H12.4178L12.4185 42.9529H37.4635C38.1144 47.352 41.6064 50.8306 46.0223 51.4783V60.156H38.0545C37.2343 60.156 36.5699 60.8172 36.5699 61.6349V80.5211C36.5699 81.3381 37.2336 82 38.0545 82L56.9434 81.9993C57.7635 81.9993 58.4279 81.3381 58.4279 80.5204V61.6342C58.4279 60.8172 57.7643 60.1553 56.9434 60.1553H48.9913V51.4776C53.4057 50.8285 56.8977 47.3506 57.5486 42.953H82.5936V60.1553H74.6258C73.8056 60.1553 73.1412 60.8165 73.1412 61.6342V80.5204C73.1412 81.3374 73.8049 81.9993 74.6258 81.9993H93.5147C94.3349 81.9993 94.9993 81.3381 94.9993 80.5204V61.6342C94.9993 60.8172 94.3356 60.1553 93.5147 60.1553H85.5627V41.475C85.5627 40.658 84.899 39.9961 84.0781 39.9961H57.5498C56.899 35.5985 53.407 32.1199 48.9925 31.4715V22.7732H93.5154C94.3356 22.7732 95 22.112 95 21.2943V1.4789C95 0.661872 94.3363 0 93.5154 0H1.48672C0.666563 0 0.0021586 0.661162 0.0021586 1.4789V21.2961C0.0021586 22.1131 0.665849 22.775 1.48672 22.775H46.0242V31.4725C41.6083 32.1195 38.1157 35.5983 37.4648 39.9972L37.4625 39.9943ZM18.8899 79.0402H2.96985V63.111H18.8899V79.0402ZM55.4589 79.0402H39.5388V63.111H55.4589V79.0402ZM92.0297 79.0402H76.1096V63.111H92.0297V79.0402ZM2.97113 2.95432H92.0315V19.8129H2.97113V2.95432ZM54.7017 41.4719C54.7017 45.4238 51.4734 48.6386 47.5061 48.6386C43.5388 48.6386 40.3119 45.4238 40.3119 41.4719C40.3119 37.5199 43.539 34.3051 47.5061 34.3051C51.4732 34.3051 54.7017 37.5192 54.7017 41.4719Z" fill="black"/>
</svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@ -0,0 +1,20 @@
<svg width="102" height="37" viewBox="0 0 102 37" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M19.6989 11.6643V12.9358C17.8681 11.7152 15.6812 11.0032 12.9349 11.0032C6.27263 11.0032 0.678345 16.5975 0.678345 23.9718C0.678345 31.2952 6.27263 36.9912 12.9349 36.9912C15.6812 36.9912 17.8681 36.2283 19.6989 35.0078V36.3301H27.9378V11.6643H19.6989ZM14.6132 29.9729C11.2566 29.9729 8.76463 27.3792 8.76463 23.9718C8.76463 20.5643 11.2566 17.9706 14.6132 17.9706C16.3932 17.9706 18.1223 18.4283 19.6989 20.1575V27.7861C18.1223 29.5152 16.3932 29.9729 14.6132 29.9729Z" fill="black"/>
<path d="M48.587 11.0032C45.9424 11.0032 43.8064 11.8169 41.823 13.2918V11.6643H33.5333V36.3301H41.823V20.8186C43.247 19.2421 44.8235 18.4792 46.2984 18.4792C49.0447 18.4792 50.8247 20.0558 50.8247 23.5649V36.3301H59.0635V22.2426C59.0635 15.2243 54.7915 11.0032 48.587 11.0032Z" fill="black"/>
<path d="M82.8957 28.3963C81.4208 28.9558 80.0985 29.4135 78.522 29.4135C76.1317 29.4135 74.6568 28.2438 74.6568 25.7009V18.7335H83.0482V11.6643H74.6568V3.27292H66.418V11.6643H61.5865V18.7335H66.418V25.9552C66.418 32.6175 70.4865 36.9912 77.1997 36.9912C78.6237 36.9912 81.2682 36.8386 83.8111 35.7706L82.8957 28.3963Z" fill="black"/>
<path fillRule="evenodd" clipRule="evenodd" d="M95 0H92V4.87894L88.55 1.42897L86.4287 3.55029L89.8784 7L85 7V10H89.8785L86.4285 13.45L88.5498 15.5713L92 12.1211V17H95V12.1216L98.4495 15.5711L100.571 13.4498L97.1211 10H102V7L97.1211 7L100.571 3.55047L98.4493 1.42915L95 4.87845V0Z" fill="url(#paint0_linear_272_285)"/>
<defs>
<linearGradient id="paint0_linear_272_285" x1="82.1276" y1="-0.163462" x2="109.495" y2="2.88793" gradientUnits="userSpaceOnUse">
<stop stop-color="#FFFF00"/>
<stop offset="0.0454" stop-color="#FFD316"/>
<stop offset="0.1098" stop-color="#FF9C32"/>
<stop offset="0.1747" stop-color="#FF6C4A"/>
<stop offset="0.2387" stop-color="#FF455D"/>
<stop offset="0.3015" stop-color="#FF276C"/>
<stop offset="0.3629" stop-color="#FF1177"/>
<stop offset="0.4223" stop-color="#FF047E"/>
<stop offset="0.4772" stop-color="#FF0080"/>
<stop offset="1" stop-color="#0026FF"/>
</linearGradient>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

@ -0,0 +1,20 @@
<svg width="120" height="44" viewBox="0 0 120 44" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M23.1139 13.6866V15.1784C20.9657 13.7463 18.3997 12.9108 15.1773 12.9108C7.35994 12.9108 0.795776 19.475 0.795776 28.1277C0.795776 36.7208 7.35994 43.4044 15.1773 43.4044C18.3997 43.4044 20.9657 42.5092 23.1139 41.0771V42.6286H32.7812V13.6866H23.1139ZM17.1465 35.1693C13.208 35.1693 10.284 32.1259 10.284 28.1277C10.284 24.1296 13.208 21.0862 17.1465 21.0862C19.2351 21.0862 21.264 21.6233 23.1139 23.6522V32.6033C21.264 34.6322 19.2351 35.1693 17.1465 35.1693Z" fill="white"/>
<path d="M57.0103 12.9108C53.9073 12.9108 51.4009 13.8656 49.0736 15.5962V13.6866H39.3467V42.6286H49.0736V24.4279C50.7445 22.578 52.5944 21.6829 54.325 21.6829C57.5474 21.6829 59.636 23.5328 59.636 27.6504V42.6286H69.3032V26.0988C69.3032 17.8638 64.2906 12.9108 57.0103 12.9108Z" fill="white"/>
<path d="M97.2671 33.3194C95.5366 33.9758 93.985 34.5129 92.1351 34.5129C89.3304 34.5129 87.5999 33.1404 87.5999 30.1567V21.9813H97.4461V13.6866H87.5999V3.84033H77.9327V13.6866H72.2636V21.9813H77.9327V30.455C77.9327 38.2724 82.7066 43.4044 90.5836 43.4044C92.2545 43.4044 95.3575 43.2253 98.3413 41.9722L97.2671 33.3194Z" fill="white"/>
<path fillRule="evenodd" clipRule="evenodd" d="M111.47 0H107.95V5.7248L103.902 1.67671L101.413 4.16581L105.461 8.21359H99.7365L99.7365 11.7337H105.461L101.413 15.7818L103.902 18.2709L107.95 14.2225V19.9473H111.47V14.2231L115.518 18.2707L118.007 15.7816L113.959 11.7337H119.684V8.21359H113.959L118.007 4.16602L115.517 1.67693L111.47 5.72423V0Z" fill="url(#paint0_linear_272_479)"/>
<defs>
<linearGradient id="paint0_linear_272_479" x1="96.366" y1="-0.191801" x2="128.478" y2="3.38861" gradientUnits="userSpaceOnUse">
<stop stop-color="#FFFF00"/>
<stop offset="0.0454" stop-color="#FFD316"/>
<stop offset="0.1098" stop-color="#FF9C32"/>
<stop offset="0.1747" stop-color="#FF6C4A"/>
<stop offset="0.2387" stop-color="#FF455D"/>
<stop offset="0.3015" stop-color="#FF276C"/>
<stop offset="0.3629" stop-color="#FF1177"/>
<stop offset="0.4223" stop-color="#FF047E"/>
<stop offset="0.4772" stop-color="#FF0080"/>
<stop offset="1" stop-color="#0026FF"/>
</linearGradient>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

21
public/icons/r1.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 44 KiB

17
public/icons/r2.svg Normal file
View File

@ -0,0 +1,17 @@
<svg width="102" height="99" viewBox="0 0 102 99" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fillRule="evenodd" clipRule="evenodd" d="M79.2365 98.6587H65.1025C65.0833 98.6596 65.064 98.6601 65.0445 98.6601V98.6587H36.6624H22.4703C21.8168 98.6587 21.2875 98.1294 21.2875 97.4759V72.6413H8.27864C7.62511 72.6413 7.09585 72.1121 7.09585 71.4586V51.3538H1.18279C0.529259 51.3538 0 50.8245 0 50.171V31.2491C0 22.747 3.48567 14.825 9.8155 8.94144C16.0165 3.17669 24.2075 0.00205345 32.8786 0.00205345C39.3404 0.00205345 45.5578 1.75589 50.8808 4.97317C56.2382 1.76908 62.512 0 68.8306 0C77.5017 0 85.6909 3.17464 91.8937 8.93939C98.2233 14.8229 101.709 22.7457 101.709 31.247V50.169C101.709 50.8225 101.18 51.3517 100.526 51.3517H94.6133V71.4565C94.6133 72.11 94.0841 72.6393 93.4305 72.6393L80.4216 72.6402V97.4747C80.4216 98.1283 79.8924 98.6575 79.2388 98.6575L79.2365 98.6587ZM78.0556 96.2931H66.2273V73.8246C66.2273 73.1711 65.698 72.6418 65.0445 72.6418C64.391 72.6418 63.8617 73.1711 63.8617 73.8246V96.2931H36.6624C36.6401 96.2931 36.618 96.2937 36.5961 96.2949H23.6518V71.4581C23.6518 70.8046 23.1225 70.2753 22.469 70.2753H9.46006V50.1706C9.46006 49.517 8.9308 48.9878 8.27727 48.9878H2.36422V31.2486C2.36422 15.3237 16.0524 2.36764 32.877 2.36764C38.4086 2.36764 43.8711 3.82163 48.6265 6.44526C47.5481 7.21235 46.5168 8.04204 45.5409 8.93115C39.0529 14.8405 35.4805 22.766 35.4805 31.2468C35.4805 31.9003 36.0098 32.4296 36.6633 32.4296C37.3168 32.4296 37.8461 31.9003 37.8461 31.2468C37.8461 21.5818 42.9655 13.0104 50.8097 7.76514C53.0899 9.27095 55.1646 11.0633 56.9517 13.1057C61.4728 18.2713 63.8624 24.5455 63.8624 31.2488C63.8624 31.9024 64.3917 32.4316 65.0452 32.4316C65.6987 32.4316 66.228 31.9024 66.228 31.2488C66.228 23.9635 63.6363 17.151 58.7316 11.5473C57.0326 9.60581 55.1233 7.88337 53.0486 6.40003C57.6735 3.83808 63.0709 2.36582 68.8303 2.36582C85.6556 2.36582 99.3431 15.3216 99.3431 31.2468V48.9859H93.4301C92.7765 48.9859 92.2473 49.5161 92.2473 50.1687V70.2735H79.2384C78.5848 70.2735 78.0556 70.8027 78.0556 71.4563V96.2931ZM41.3918 48.9873H60.3138C60.9664 48.9873 61.4966 48.4581 61.4975 47.8045V40.7087C61.4975 40.0551 60.9682 39.5259 60.3147 39.5259C59.6612 39.5259 59.1319 40.0551 59.1319 40.7087V46.6217H42.5746V40.7087C42.5746 40.0551 42.0454 39.5259 41.3918 39.5259C40.7383 39.5259 40.209 40.0551 40.209 40.7087V47.8045C40.209 48.4581 40.7383 48.9873 41.3918 48.9873Z" fill="url(#paint0_linear_254_4532)"/>
<defs>
<linearGradient id="paint0_linear_254_4532" x1="-17.1853" y1="-0.948657" x2="146.425" y2="17.8572" gradientUnits="userSpaceOnUse">
<stop stop-color="#FFFF00"/>
<stop offset="0.0454" stop-color="#FFD316"/>
<stop offset="0.1098" stop-color="#FF9C32"/>
<stop offset="0.1747" stop-color="#FF6C4A"/>
<stop offset="0.2387" stop-color="#FF455D"/>
<stop offset="0.3015" stop-color="#FF276C"/>
<stop offset="0.3629" stop-color="#FF1177"/>
<stop offset="0.4223" stop-color="#FF047E"/>
<stop offset="0.4772" stop-color="#FF0080"/>
<stop offset="1" stop-color="#0026FF"/>
</linearGradient>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 3.0 KiB

21
public/icons/r3.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 48 KiB

21
public/icons/r4.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 23 KiB

21
public/icons/r5.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 51 KiB

4
public/icons/remote.svg Normal file
View File

@ -0,0 +1,4 @@
<svg width="27" height="27" viewBox="0 0 27 27" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.8011 24.3441C13.8723 24.4419 13.9655 24.5215 14.073 24.5763C14.1805 24.6311 14.2993 24.6597 14.4198 24.6597C14.5403 24.6597 14.6591 24.6311 14.7666 24.5763C14.8741 24.5215 14.9672 24.4419 15.0385 24.3441L20.9138 16.282C21.7984 15.0619 22.3413 13.6251 22.4856 12.1218C22.63 10.6184 22.3706 9.10359 21.7345 7.73558C21.1466 6.41977 20.2135 5.29002 19.0355 4.46775C17.8575 3.64547 16.4792 3.16173 15.0486 3.06852C14.6297 3.04064 14.2095 3.04064 13.7907 3.06852C12.3602 3.16184 10.982 3.64562 9.80412 4.4679C8.62628 5.29017 7.69332 6.41985 7.10548 7.73558C6.46936 9.10359 6.20993 10.6184 6.3543 12.1218C6.49866 13.6251 7.04153 15.0619 7.92618 16.282L13.8011 24.3441ZM8.49638 8.3865C8.97016 7.32289 9.72287 6.40923 10.6737 5.74362C11.6245 5.078 12.7375 4.68558 13.8932 4.60848C14.067 4.59683 14.2434 4.59081 14.4198 4.59081C14.5962 4.59081 14.7726 4.59683 14.9456 4.60848C16.1014 4.68546 17.2146 5.07783 18.1655 5.74345C19.1165 6.40906 19.8693 7.32279 20.3432 8.3865C20.8635 9.50389 21.0761 10.7414 20.9587 11.9697C20.8413 13.198 20.3983 14.3721 19.6759 15.3692L14.4198 22.5825L9.16345 15.3692C8.44109 14.3721 7.9981 13.198 7.88076 11.9697C7.76341 10.7414 7.97602 9.50387 8.49638 8.3865Z" fill="#19222F" stroke="#19222F" stroke-width="0.518691"/>
<path d="M14.4315 15.3969C15.2658 15.3969 16.0814 15.1479 16.7752 14.6814C17.4689 14.2149 18.0096 13.5519 18.3289 12.7762C18.6482 12.0005 18.7317 11.1469 18.569 10.3233C18.4062 9.49984 18.0044 8.74339 17.4144 8.14968C16.8245 7.55596 16.0728 7.15163 15.2545 6.98782C14.4361 6.82402 13.5879 6.90809 12.8171 7.22941C12.0462 7.55073 11.3874 8.09486 10.9238 8.793C10.4603 9.49114 10.2129 10.3119 10.2129 11.1516C10.2141 12.2771 10.659 13.3562 11.4499 14.1521C12.2407 14.9479 13.313 15.3956 14.4315 15.3969ZM14.4315 8.45C14.9624 8.45 15.4814 8.60845 15.9229 8.9053C16.3644 9.20215 16.7085 9.62408 16.9117 10.1177C17.1148 10.6114 17.168 11.1546 17.0644 11.6786C16.9608 12.2027 16.7052 12.684 16.3297 13.0619C15.9543 13.4397 15.4759 13.697 14.9552 13.8012C14.4344 13.9055 13.8947 13.852 13.4041 13.6475C12.9136 13.443 12.4943 13.0967 12.1993 12.6525C11.9044 12.2082 11.7469 11.6859 11.7469 11.1516C11.7478 10.4353 12.0309 9.74868 12.5341 9.24222C13.0374 8.73576 13.7197 8.45086 14.4315 8.45Z" fill="#19222F"/>
</svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

23
public/icons/shield.svg Normal file
View File

@ -0,0 +1,23 @@
<svg width="21" height="21" viewBox="0 0 21 21" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_291_84)">
<path d="M10.9703 20.9999C5.05819 18.7461 0.959961 11.8256 0.959961 4.01623C0.959961 3.03423 1.02598 2.04807 1.15733 1.07303C2.34642 1.44554 3.57791 1.63387 4.83233 1.63387C6.97422 1.63387 9.08345 1.07095 10.9703 0C12.8571 1.07095 14.9657 1.63387 17.1083 1.63387C18.3634 1.63387 19.5942 1.44554 20.7833 1.07303C20.9139 2.04807 20.9806 3.03354 20.9806 4.01623C20.9806 11.8256 16.8824 18.7461 10.9703 20.9999Z" fill="url(#paint0_linear_291_84)"/>
<path d="M15.2816 5.83594L10.2801 10.8374L7.24756 7.80493L5.99097 9.06153L10.2801 13.3506L16.5382 7.09253L15.2816 5.83594Z" fill="black"/>
</g>
<defs>
<linearGradient id="paint0_linear_291_84" x1="-2.42284" y1="-0.201922" x2="29.8436" y2="3.22793" gradientUnits="userSpaceOnUse">
<stop stop-color="#FFFF00"/>
<stop offset="0.0454" stop-color="#FFD316"/>
<stop offset="0.1098" stop-color="#FF9C32"/>
<stop offset="0.1747" stop-color="#FF6C4A"/>
<stop offset="0.2387" stop-color="#FF455D"/>
<stop offset="0.3015" stop-color="#FF276C"/>
<stop offset="0.3629" stop-color="#FF1177"/>
<stop offset="0.4223" stop-color="#FF047E"/>
<stop offset="0.4772" stop-color="#FF0080"/>
<stop offset="1" stop-color="#0026FF"/>
</linearGradient>
<clipPath id="clip0_291_84">
<rect width="20.02" height="20.9999" fill="white" transform="translate(0.959961)"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

3
public/icons/shopify.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 5.2 KiB

17
public/icons/star.svg Normal file
View File

@ -0,0 +1,17 @@
<svg width="17" height="17" viewBox="0 0 17 17" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fillRule="evenodd" clipRule="evenodd" d="M10 0H7V4.87894L3.55003 1.42897L1.42871 3.55029L4.87842 7L0 7V10H4.87845L1.42848 13.45L3.5498 15.5713L7 12.1211V17H10V12.1216L13.4495 15.5711L15.5708 13.4498L12.1211 10H17V7L12.1211 7L15.5706 3.55047L13.4493 1.42915L10 4.87845V0Z" fill="url(#paint0_linear_272_287)"/>
<defs>
<linearGradient id="paint0_linear_272_287" x1="-2.87241" y1="-0.163462" x2="24.4951" y2="2.88793" gradientUnits="userSpaceOnUse">
<stop stop-color="#FFFF00"/>
<stop offset="0.0454" stop-color="#FFD316"/>
<stop offset="0.1098" stop-color="#FF9C32"/>
<stop offset="0.1747" stop-color="#FF6C4A"/>
<stop offset="0.2387" stop-color="#FF455D"/>
<stop offset="0.3015" stop-color="#FF276C"/>
<stop offset="0.3629" stop-color="#FF1177"/>
<stop offset="0.4223" stop-color="#FF047E"/>
<stop offset="0.4772" stop-color="#FF0080"/>
<stop offset="1" stop-color="#0026FF"/>
</linearGradient>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 1010 B

3
public/icons/time.svg Normal file
View File

@ -0,0 +1,3 @@
<svg width="27" height="27" viewBox="0 0 27 27" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M14.2194 8.43274V14.1059L19.0821 16.9932L18.2717 18.3608L12.5985 14.9164V8.43274H14.2194ZM7.53316 19.9817C9.25537 21.6702 11.2984 22.5144 13.6622 22.5144C16.026 22.5144 18.0522 21.6702 19.7406 19.9817C21.4628 18.2595 22.3239 16.2165 22.3239 13.8526C22.3239 11.4888 21.4628 9.46269 19.7406 7.77424C18.0522 6.05203 16.026 5.19092 13.6622 5.19092C11.2984 5.19092 9.25537 6.05203 7.53316 7.77424C5.84471 9.46269 5.00049 11.4888 5.00049 13.8526C5.00049 16.2165 5.84471 18.2595 7.53316 19.9817ZM6.01356 6.25464C8.141 4.1272 10.6906 3.06348 13.6622 3.06348C16.6339 3.06348 19.1666 4.1272 21.2602 6.25464C23.3877 8.34831 24.4514 10.881 24.4514 13.8526C24.4514 16.8243 23.3877 19.3739 21.2602 21.5013C19.1666 23.595 16.6339 24.6418 13.6622 24.6418C10.6906 24.6418 8.141 23.595 6.01356 21.5013C3.91988 19.3739 2.87305 16.8243 2.87305 13.8526C2.87305 10.881 3.91988 8.34831 6.01356 6.25464Z" fill="#19222F"/>
</svg>

After

Width:  |  Height:  |  Size: 1010 B

9
public/images/about.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 1.2 MiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 663 KiB

BIN
public/images/footer.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 231 KiB

9
public/images/idea.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 5.3 MiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 340 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 5.3 MiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 1.1 MiB

17
public/images/square.svg Normal file
View File

@ -0,0 +1,17 @@
<svg width="280" height="280" viewBox="0 0 280 280" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect x="2.5" y="2.5" width="275" height="275" rx="21.082" stroke="url(#paint0_linear_252_3021)" stroke-width="5"/>
<defs>
<linearGradient id="paint0_linear_252_3021" x1="-47.3103" y1="-2.69231" x2="403.449" y2="47.5659" gradientUnits="userSpaceOnUse">
<stop stop-color="#FFFF00"/>
<stop offset="0.0454" stop-color="#FFD316"/>
<stop offset="0.1098" stop-color="#FF9C32"/>
<stop offset="0.1747" stop-color="#FF6C4A"/>
<stop offset="0.2387" stop-color="#FF455D"/>
<stop offset="0.3015" stop-color="#FF276C"/>
<stop offset="0.3629" stop-color="#FF1177"/>
<stop offset="0.4223" stop-color="#FF047E"/>
<stop offset="0.4772" stop-color="#FF0080"/>
<stop offset="1" stop-color="#0026FF"/>
</linearGradient>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 815 B

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 147 KiB

375
public/images/toolkit2.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 8.7 MiB

17
src/api/getGhostPosts.js Normal file
View File

@ -0,0 +1,17 @@
// /pages/api/getGhostPosts.js
export default async function handler(req, res) {
const { NEXT_PUBLIC_GHOST_API_URL, NEXT_PUBLIC_GHOST_CONTENT_API_KEY } = process.env;
// Construct the API URL with the Ghost API key
const url = `${NEXT_PUBLIC_GHOST_API_URL}/ghost/api/v3/content/posts/?key=${NEXT_PUBLIC_GHOST_CONTENT_API_KEY}`;
try {
const response = await fetch(url);
const data = await response.json();
// Send the posts data as JSON to the client
res.status(200).json(data.posts);
} catch (error) {
res.status(500).json({ error: 'Error fetching posts from Ghost CMS' });
}
}

13
src/api/hello.ts Normal file
View File

@ -0,0 +1,13 @@
// Next.js API route support: https://nextjs.org/docs/api-routes/introduction
import type { NextApiRequest, NextApiResponse } from 'next'
type Data = {
name: string
}
export default function handler(
req: NextApiRequest,
res: NextApiResponse<Data>
) {
res.status(200).json({ name: 'John Doe' })
}

View File

@ -0,0 +1,41 @@
import { ImagePath } from "@/utils/imagePath";
import { Texts } from "@/utils/texts";
export default function ToolkitCard() {
return (
<>
<div className=" max-w-full p-6 bg-white border border-gray-200 rounded-lg shadow dark:bg-gray-800 dark:border-gray-700">
<a href="#">
<h5 className="mb-2 text-2xl font-bold tracking-tight text-gray-900 dark:text-white">
{Texts.es}
</h5>
</a>
<p className="mb-3 font-normal text-gray-700 dark:text-gray-400">
Here are the biggest enterprise technology acquisitions of 2021 so
far, in reverse chronological order.
</p>
<a
href="#"
className="inline-flex items-center px-3 py-2 text-sm font-medium text-center text-white bg-blue-700 rounded-lg hover:bg-blue-800 focus:ring-4 focus:outline-none focus:ring-blue-300 dark:bg-blue-600 dark:hover:bg-blue-700 dark:focus:ring-blue-800"
>
Read more
<svg
aria-hidden="true"
className="w-4 h-4 ml-2 -mr-1"
fill="currentColor"
viewBox="0 0 20 20"
xmlns="http://www.w3.org/2000/svg"
>
<path
fillRule="evenodd"
d="M10.293 3.293a1 1 0 011.414 0l6 6a1 1 0 010 1.414l-6 6a1 1 0 01-1.414-1.414L14.586 11H3a1 1 0 110-2h11.586l-4.293-4.293a1 1 0 010-1.414z"
clipRule="evenodd"
></path>
</svg>
</a>
</div>
<style jsx>{``}</style>
</>
);
}

View File

@ -0,0 +1,69 @@
import { ImagePath } from "@/utils/imagePath";
import { Texts } from "@/utils/texts";
import Image from "next/image";
import ToolkitCard from "../ToolkitCard";
export default function Story() {
return (
<>
<div className=" mx-6">
<div className=" my-6 md:my-20 w-full max-w-screen-2xl">
<div className="text-center w-full">
<h1 className="my-10 md:my-20 text-3xl md:text-7xl font-semibold tracking-tight text-gray-900 dark:text-white">
{Texts.story_t}
</h1>
</div>
<div className=" text-white w-full max-w-screen-2xl bg-white rounded-2xl md:rounded-5xl dark:bg-gray-800 dark:border-gray-700">
<Image
width={0}
height={0}
className="w-full rounded-t-2xl md:rounded-t-5xl"
src={ImagePath.about}
alt=""
// style={{
// borderTopLeftRadius: "70px",
// borderTopRightRadius: "70px",
// }}
/>
<div className="p-4 lg:p-20 mt-8">
<p className="mb-3 text-lg font-normal text-gray-900 tracking-tight leading-8 dark:text-gray-400">
{Texts.story_sub}
</p>
<div className="flex items-center mt-8 md:mt-16 flex-col md:flex-row ">
<button
type="button"
className=" bg-black max-w-fit h-16 text-white focus:ring-4 focus:outline-none font-medium rounded-full text-lg md:text-xl px-5 py-2.5 text-center inline-flex items-center justify-center"
>
{Texts.join_club}
<img src={ImagePath.circle_arrow} className="h-9 ml-6 arrow" />
</button>
<div>
<p className="md:ml-8 mt-6 md:mt-0 text-lg font-normal text-gray-900 dark:text-white ">
<span className="text-transparent bg-clip-text bg-gradient-to-r to-purple-500 from-orange-500">
Join our community to contribute to and
</span>
</p>
<p className="md:ml-8 text-lg font-normal text-gray-900 dark:text-white ">
<span className="text-transparent bg-clip-text bg-gradient-to-r to-purple-500 from-orange-500">
benefit from this cognitive revolution
</span>
</p>
</div>
</div>
</div>
</div>
</div>
</div>
<style jsx>{`
.rounded-3xl {
border-radius: 70px;
}
.rounded-3xl {
border-top-left-radius: 70px !important;
border-top-right-radius: 70px !important;
}
`}</style>
</>
);
}

View File

@ -0,0 +1,37 @@
import { ImagePath } from "@/utils/imagePath";
import { Texts } from "@/utils/texts";
import Image from "next/image";
export function StoryOne() {
return (
<>
<ul className="text-lx md:text-2xl font-medium text-gray-900">
<li>
{Texts.story_text1}
</li>
<li className="mt-8">
{Texts.story_text2}
</li>
<li className="mt-8">
{Texts.story_text3}
</li>
<li className="mt-8">
{Texts.story_text4}
</li>
</ul>
<button
type="button"
className="bg-black mt-16 max-w-fit h-16 text-white focus:ring-4 focus:outline-none font-medium rounded-full text-xl px-5 py-2.5 text-center inline-flex items-center justify-center"
>
{Texts.join_club}
<Image
src={ImagePath.circle_arrow}
alt="Circle Arrow"
width={36} // Adjust based on your design needs
height={36} // Adjust based on your design needs
className="ml-6 arrow"
/>
</button>
</>
);
}

View File

@ -0,0 +1,85 @@
import { ImagePath } from "@/utils/imagePath";
import { Texts } from "@/utils/texts";
interface FractalCharacteristic {
number: number;
title: string;
description: string;
bgColor: string;
}
const characteristics: FractalCharacteristic[] = [
{
number: 1,
title: "Self-Similarity",
description: "Just as a fractal shape repeats the same pattern at different scales, a fractal organization applies the same leadership principles, values, and practices across all levels and teams. This creates a unified culture and ensures consistency in decision-making and behavior.",
bgColor: "yellow-50"
},
{
number: 2,
title: "Decentralization",
description: "A fractal organization empowers teams and individuals to operate autonomously, make decisions, and take ownership of their work. Leadership is distributed, and authority is delegated to the most appropriate levels, fostering agility and adaptability.",
bgColor: "green-50"
},
{
number: 3,
title: "Scalability",
description: "The fractal structure is inherently scalable, allowing the organization to grow and adapt without losing its core identity and principles. As new teams or departments are added, they adopt the same fractal structure, ensuring seamless integration and alignment.",
bgColor: "gray-50"
},
{
number: 4,
title: "Flexibility and Adaptability",
description: "The fractal structure promotes flexibility and adaptability by enabling teams to respond quickly to changes and challenges. Each team can make decisions and take actions that are best suited to their specific context, while still adhering to the overall organizational principles.",
bgColor: "yellow-50"
},
{
number: 5,
title: "Collaboration and Communication",
description: "Fractal organizations encourage open communication and collaboration across levels and teams. Information flows freely, and teams work together to achieve shared goals and objectives.",
bgColor: "green-50"
},
{
number: 6,
title: "Holistic Approach",
description: "In a fractal organization, each team or unit is seen as a microcosm of the whole, reflecting the broader values and mission of the organization. This holistic approach fosters a sense of unity and purpose, as each team contributes to the larger vision. A fractal structure in leadership allows organizations to maintain a consistent culture and set of principles while remaining agile, adaptable, and responsive to change. It empowers teams and individuals to take initiative, fosters collaboration, and enables the organization to scale effectively.",
bgColor: "blue-50"
}
];
export function StoryTwo() {
return (
<>
<p className="text-xl md:text-2xl font-medium text-gray-900">
A fractal structure in the context of organizational leadership refers
to a self-similar, decentralized, and scalable organizational model that
is inspired by the concept of fractals in mathematics and nature.
Fractals are geometric shapes that exhibit the same pattern or structure
at different scales, regardless of the level of magnification. In a
fractal organization, the same principles, values, and decision-making
processes are replicated at every level, creating a consistent and
cohesive structure.
</p>
<p className="text-xl md:text-2xl font-semibold text-gray-900 mt-10 dark:text-white ">
<span className="text-transparent bg-clip-text bg-gradient-to-r to-purple-500 from-orange-500">
Key characteristics of a fractal organizational structure include:
</span>
</p>
<ul className="text-lg font-semibold text-gray-700 dark:text-gray-900">
{characteristics.map((char, index) => (
<li key={index}>
<div className="w-full flex items-start justify-start space-x-12 mt-16">
<div className={`w-1/12 `}>
<h1 className={`text-3xl w-24 h-24 rounded-full bg-${char.bgColor} flex items-center justify-center`}>0{char.number}</h1>
</div>
<div className="w-11/12 space-y-0.5 font-medium dark:text-white text-left">
<div className="w-full text-xl md:text-2xl">{char.title}</div>
<div>{char.description}</div>
</div>
</div>
</li>
))}
</ul>
</>
);
}

View File

@ -0,0 +1,30 @@
import { ImagePath } from "@/utils/imagePath";
import Image from "next/image";
export function StoryThree() {
return (
<div className="grid grid-cols-1 lg:grid-cols-3 gap-8">
{[...Array(15)].map((_, index) => (
<div key={index} className="md:mb-10 flex flex-col justify-center items-center">
<div className="rounded-lg md:w-full overflow-hidden">
<Image
className="rounded-lg md:w-full hover:scale-110 transition-all duration-300"
src={ImagePath.square}
alt="Square image"
width={400} // Adjust based on your design needs
height={400} // Adjust based on your design needs
layout="responsive"
/>
</div>
<h5 className="my-4 md:my-8 text-xl font-semibold tracking-tight text-black">
Noteworthy technology acquisitions 2021
</h5>
<p className="mb-3 text-lg font-normal text-gray-900">
Here are the biggest enterprise technology acquisitions of 2021 so
far, in reverse chronological order.
</p>
</div>
))}
</div>
);
}

View File

@ -0,0 +1,91 @@
import { useCallback, useState } from "react";
import { StoryOne } from "./Story1";
import { StoryTwo } from "./Story2";
import { StoryThree } from "./Story3";
export function StorySec() {
const [style, setStyle] = useState("1");
const handleAddInvite = useCallback(
(v: any) => {
console.log(v);
setStyle(v);
},
[style]
);
return (
<>
<div className="grid grid-cols-1 lg:grid-cols-3 md:gap-10 w-full max-w-screen-2xl my-20 px-6 lg:px-20">
<div className="w-full mb-10 ">
<div className="flex flex-col gap-8">
<button
className={
"text-white rounded-lg p-10 lg:mr-20 text-start " +
(style === "1" ? "card" : "bg-black")
}
// onClick={
// setButton("1")
// }
onMouseEnter={() => handleAddInvite("1")}
>
<h1 className="text-xl font-semibold">
Detailing our brand story
</h1>
<h2 className="text-lg mt-4">But what is ANTL?</h2>
</button>
<button
className={
"text-white rounded-lg p-10 lg:mr-20 text-start " +
(style === "2" ? "card" : "bg-black")
}
onMouseEnter={() => handleAddInvite("2")}
>
<h1 className="text-xl font-semibold">Principle of operations</h1>
<h2 className="text-lg mt-4">
The organization is fractal in structure
</h2>
</button>
<button
className={
"text-white rounded-lg p-10 lg:mr-20 text-start " +
(style === "3" ? "card" : "bg-black")
}
onMouseEnter={() => handleAddInvite("3")}
>
<h1 className="text-xl font-semibold">
Organizational Structure
</h1>
<h2 className="text-lg mt-4">Some headline will come here</h2>
</button>
</div>
</div>
<div className="col-span-2 h-9 w-full h-fit">
{style === "1" ? (
<StoryOne />
) : style === "2" ? (
<StoryTwo />
) : (
<StoryThree />
)}
</div>
</div>
<style jsx>{`
.card {
background: linear-gradient(
96.36deg,
#ffff00 -15.3%,
#ffd316 -8.64%,
#ff9c32 0.8%,
#ff6c4a 10.32%,
#ff455d 19.7%,
#ff276c 28.91%,
#ff1177 37.92%,
#ff047e 46.63%,
#ff0080 54.68%,
#0026ff 131.34%
);
}
`}</style>
</>
);
}

View File

@ -0,0 +1,31 @@
import { Texts } from "@/utils/texts";
import { Religion } from "./Religion";
export function CareerSec() {
return (
<>
<div className="w-full bg-white flex items-center justify-center py-20 md:py-56">
<div className="grid grid-cols-1 lg:grid-cols-3 md:gap-24 w-full max-w-screen-2xl px-6 lg:px-20">
{/* Left Side: Sticky Title */}
<div className="w-full">
<div className="sticky top-28 flex flex-col gap-6">
<h1 className="text-3xl text-black md:text-5xl font-semibold">
{Texts.our_religion}
</h1>
<h2 className="text-xl text-black mb-6 md:mt-4">
{Texts.our_religion_sub}
</h2>
</div>
</div>
{/* Right Side: Scrollable Content */}
<div className="col-span-2 w-full h-fit">
<Religion />
</div>
</div>
</div>
</>
);
}

View File

@ -0,0 +1,48 @@
import { Texts } from "@/utils/texts";
import { ImagePath } from "@/utils/imagePath";
export default function Learn() {
return (
<>
<div className=" mx-6">
<div className="w-full max-w-4xl text-center my-16 md:my-40">
<h1 className="text-3xl md:text-7xl font-semibold tracking-tight text-black ">
{Texts.learn_t}
</h1>
<h3 className="text-xl md:text-2xl font-base text-gray-800 tracking-tight my-10">
{Texts.learn_subt}
</h3>
<button
type="button"
className="w-auto h-16 text-white bg-gradient-to-r from-orange-400 to-purple-800 hover:bg-gradient-to-l focus:ring-4 focus:outline-none focus:ring-purple-200 dark:focus:ring-purple-800 font-medium rounded-full text-lg md:text-xl px-5 py-2.5 text-center inline-flex items-center justify-center mr-2 mb-2"
>
{Texts.join_us}
<img src={ImagePath.circle_arrow} className="h-9 ml-6 arrow" />
</button>
</div>
</div>
<style jsx>
{`
button {
background: linear-gradient(
96.36deg,
#ffff00 -15.3%,
#ffd316 -8.64%,
#ff9c32 0.8%,
#ff6c4a 10.32%,
#ff455d 19.7%,
#ff276c 28.91%,
#ff1177 37.92%,
#ff047e 46.63%,
#ff0080 54.68%,
#0026ff 131.34%
);
}
`}
</style>
</>
);
}

View File

@ -0,0 +1,125 @@
import { useEffect, useState } from "react";
import GhostContentAPI from "@tryghost/content-api";
import { ImagePath } from "@/utils/imagePath";
import { PostOrPage } from '@tryghost/content-api';
// Initialize Ghost Content API
const api = new GhostContentAPI({
url: process.env.NEXT_PUBLIC_GHOST_API_URL!,
key: process.env.NEXT_PUBLIC_GHOST_CONTENT_API_KEY!,
version: "v3"
});
export default function Positions() {
const [posts, setPosts] = useState<PostOrPage[]>([]);
const [loading, setLoading] = useState(true);
const [error, setError] = useState(false);
const [selectedPost, setSelectedPost] = useState<any>(null); // State for selected post
const [isModalOpen, setIsModalOpen] = useState(false); // State for modal visibility
useEffect(() => {
const fetchPosts = async () => {
try {
const data = await api.posts.browse({
limit: "all",
filter: "tag:jobs"
});
setPosts(data);
} catch (err) {
console.error("Error fetching posts:", err);
setError(true);
} finally {
setLoading(false);
}
};
fetchPosts();
}, []);
const openModal = (post: any) => {
setSelectedPost(post);
setIsModalOpen(true);
};
const closeModal = () => {
setIsModalOpen(false);
setSelectedPost(null);
};
if (loading) {
return <div>Loading...</div>;
}
if (error) {
return <div>Error loading posts.</div>;
}
return (
<div className="m-0">
<div className="w-full max-w-screen-xl my-20 md:my-40">
<div className="text-start">
<h1 className="mb-10 md:mb-20 text-3xl md:text-7xl font-medium tracking-tight text-gray-900 dark:text-white">
Open Positions
</h1>
</div>
<div className="grid grid-cols-1 lg:grid-cols-2 gap-10">
{posts.map((post: any) => (
<div
key={post.id}
className="text-black p-8 w-full bg-white rounded-2xl border border-gray-200 dark:bg-gray-800 dark:border-gray-700 cursor-pointer"
onClick={() => openModal(post)}
>
<h5 className="text-2xl md:text-3xl font-normal tracking-tight dark:text-gray-900">
{post.title}
</h5>
<div className="flex mt-4 md:mt-6">
<img
src={ImagePath.remote}
className="h-7 mr-2"
alt="Remote"
/>
<p className="text-lg md:text-xl font-normal text-gray-800">
{post.custom_excerpt || "Remote"}
</p>
<img
src={ImagePath.time}
className="h-7 mr-2 ml-10"
alt="Full-time"
/>
<p className="text-lg md:text-xl font-normal text-gray-800">
Full-time
</p>
</div>
</div>
))}
</div>
</div>
{/* Modal */}
{isModalOpen && selectedPost && (
<div className="fixed inset-0 flex items-center justify-center z-50 bg-gray-900 bg-opacity-50">
<div className="bg-white rounded-2xl p-8 max-w-lg w-full relative">
<button
onClick={closeModal}
className="absolute top-4 right-4 text-2xl font-bold text-gray-700"
>
&times;
</button>
<h2 className="text-2xl font-bold mb-4 text-black">{selectedPost.title}</h2>
<div
className="post-body text-gray-700"
dangerouslySetInnerHTML={{ __html: selectedPost.html }}
></div>
</div>
</div>
)}
<style jsx>{`
.post-body {
max-height: 400px;
overflow-y: auto;
}
`}</style>
</div>
);
}

View File

@ -0,0 +1,102 @@
import { ImagePath } from "@/utils/imagePath";
import { Texts } from "@/utils/texts";
export function Religion() {
return (
<>
<ul className="text-lg font-semibold text-gray-700 dark:text-gray-400">
<li>
<figcaption className="flex items-start justify-start space-x-4 md:space-x-10">
<img
src={ImagePath.r1}
className="bg-gray-100 rounded-full py-2 px-4 md:py-14 md:px-16"
alt="FlowBite Logo"
/>
<div className="space-y-5 dark:text-white text-left">
<div className="text-2xl ">Curiosity</div>
<div className="text-xl font-normal ">
No question is silly. No corner is out of bounds. We are not
afraid or embarrassed to ask questions, probe the well-know and
listen to what others have to say. In our holy pursuit,
knowledge is sacred.
</div>
</div>
</figcaption>
</li>
<li>
<figcaption className="flex items-start justify-start space-x-4 md:space-x-10 mt-16">
<img
src={ImagePath.r2}
className="bg-gray-100 rounded-full p-4 md:p-14"
alt="FlowBite Logo"
/>
<div className="space-y-5 dark:text-white text-left">
<div className="text-2xl">Empathy</div>
<div className="text-xl font-normal ">
Our means to bring about the next cognitive revolution is AI -
Authentic Intelligence. To build this, we rely more on empathy
than on technology. Putting ourselves in the other persons (and
machines) shoes is a tradition that we guard safely during
casual conversations, meetings and research.
</div>
</div>
</figcaption>
</li>
<li>
<figcaption className="flex items-start justify-start space-x-4 md:space-x-10 mt-16">
<img
src={ImagePath.r3}
className=" bg-gray-100 rounded-full p-4 md:p-14"
alt="FlowBite Logo"
/>
<div className="space-y-5 dark:text-white text-left">
<div className="text-2xl">Responsibility</div>
<div className="text-xl font-normal ">
We realise what we are building could overpower us. That is why
we follow responsible research, always keeping in mind the
larger picture rather than smaller gains.
</div>
</div>
</figcaption>
</li>
<li>
<figcaption className="flex items-start justify-start space-x-4 md:space-x-10 mt-16">
<img
src={ImagePath.r4}
className=" bg-gray-100 rounded-full p-4 md:p-14"
alt="FlowBite Logo"
/>
<div className="space-y-5 dark:text-white text-left">
<div className="text-2xl">Cooperation</div>
<div className="text-xl font-normal ">
ANTL is also called Antelligent - after intelligent ants that
solve Himalayan challenges through simple and effective
cooperation. We value working with each other and how we could
be better as a team than as isolated individuals. Too many cooks
improve the broth.
</div>
</div>
</figcaption>
</li>
<li>
<figcaption className="flex items-start justify-start space-x-4 md:space-x-10 mt-16">
<img
src={ImagePath.r5}
className=" bg-gray-100 rounded-full p-4 md:p-14"
alt="FlowBite Logo"
/>
<div className="space-y-5 dark:text-white text-left">
<div className="text-2xl">Decentralization</div>
<div className="text-xl font-normal ">
As a fractal organization, we encourage individuals to operate
independently, make their own decisions, and take ownership of
their work. Leadership is distributed, promoting agility and
adaptability.
</div>
</div>
</figcaption>
</li>
</ul>
</>
);
}

View File

@ -0,0 +1,236 @@
import { ImagePath } from "@/utils/imagePath";
import { Texts } from "@/utils/texts";
import Link from "next/link";
import Image from "next/image";
export default function Footer() {
const isBrowser = () => typeof window !== "undefined"; //The approach recommended by Next.js
function scrollToTop() {
if (!isBrowser()) return;
window.scrollTo({ top: 0, behavior: "smooth" });
}
return (
<footer className="w-full bg-black dark:bg-gray-900">
<div className="mx-auto w-full pt-24 pb-14 ">
<div className="md:flex md:justify-between px-6 lg:px-12">
<div className="mb-6 md:mb-0">
<Link href="/" className="flex items-center">
<img
src={ImagePath.logo_light}
className="h-9 mr-3 logo-light"
alt="Flowbite Logo"
/>
</Link>
{/* <a href="https://flowbite.com/" className="flex items-center">
<img
src="https://flowbite.com/docs/images/logo.svg"
className="h-8 mr-3"
alt="FlowBite Logo"
/>
<span className="self-center text-2xl font-semibold whitespace-nowrap dark:text-white">
Flowbite
</span>
</a> */}
</div>
<div className="grid grid-cols-2 gap-8 sm:gap-12 sm:grid-cols-2">
<div>
<h2 className="mb-6 text-medium font-semibold text-white dark:text-white">
{Texts.our_products}
</h2>
<ul className="text-gray-300 dark:text-gray-400 text-sm font-light">
<li className="mb-4">
<a href="https://flowbite.com/" className="hover:underline">
{Texts.es}
</a>
</li>
<li>
<a
href="https://tailwindcss.com/"
className="hover:underline"
>
{Texts.fc}
</a>
</li>
</ul>
</div>
<div>
<h2 className="mb-6 text-medium font-semibold text-white dark:text-white">
{Texts.company}
</h2>
<ul className="text-gray-300 dark:text-gray-400 text-sm font-light">
<li className="mb-4">
<a
href="https://github.com/themesberg/flowbite"
className="hover:underline "
>
{Texts.about_us}
</a>
</li>
<li className="mb-4">
<a
href="#"
className="hover:underline"
>
{Texts.our_story}
</a>
</li>
<li className="mb-4">
<a
href="#"
className="hover:underline"
>
{Texts.research}
</a>
</li>
<li className="mb-4">
<a
href="#"
className="hover:underline"
>
{Texts.contact_us}
</a>
</li>
</ul>
</div>
{/* <div>
<h2 className="mb-6 text-sm font-semibold text-white dark:text-white">
Legal
</h2>
<ul className="text-gray-400 dark:text-gray-400 font-medium">
<li className="mb-4">
<a href="#" className="hover:underline">
Privacy Policy
</a>
</li>
<li>
<a href="#" className="hover:underline">
Terms &amp; Conditions
</a>
</li>
</ul>
</div> */}
</div>
</div>
{/* <hr className="my-6 border-gray-200 sm:mx-auto dark:border-gray-700 lg:my-8" /> */}
<img
src={ImagePath.footer}
className="w-full h-50 mt-28"
alt="FlowBite Logo"
/>
<div className="pt-16 px-6 lg:px-12">
<button
className="mb-6 text-sm text-gray-500 tracking-wider sm:text-center dark:text-gray-400"
onClick={scrollToTop}
>
BACK TO TOP
</button>
<br />
<span className="text-sm text-gray-500 tracking-wider sm:text-center dark:text-gray-400">
{Texts.copy_right}
{/* © 2023{" "}
<a href="https://flowbite.com/" className="hover:underline">
Flowbite
</a>
. All Rights Reserved. */}
</span>
<div className="mt-16 sm:flex sm:items-center sm:justify-between">
<div className="flex mt-4 space-x-6 sm:justify-center sm:mt-0 gap-6">
<a
href="#"
className="text-white hover:text-orange-500 dark:hover:text-white"
>
<svg
className="w-10 h-10"
fill="currentColor"
viewBox="0 0 24 24"
aria-hidden="true"
>
<path
fillRule="evenodd"
d="M22 12c0-5.523-4.477-10-10-10S2 6.477 2 12c0 4.991 3.657 9.128 8.438 9.878v-6.987h-2.54V12h2.54V9.797c0-2.506 1.492-3.89 3.777-3.89 1.094 0 2.238.195 2.238.195v2.46h-1.26c-1.243 0-1.63.771-1.63 1.562V12h2.773l-.443 2.89h-2.33v6.988C18.343 21.128 22 16.991 22 12z"
clipRule="evenodd"
/>
</svg>
<span className="sr-only">Facebook page</span>
</a>
<a
href="#"
className="text-white hover:text-orange-500 dark:hover:text-white"
>
<svg
className="w-10 h-10"
fill="currentColor"
viewBox="0 0 24 24"
aria-hidden="true"
>
<path
fillRule="evenodd"
d="M12.315 2c2.43 0 2.784.013 3.808.06 1.064.049 1.791.218 2.427.465a4.902 4.902 0 011.772 1.153 4.902 4.902 0 011.153 1.772c.247.636.416 1.363.465 2.427.048 1.067.06 1.407.06 4.123v.08c0 2.643-.012 2.987-.06 4.043-.049 1.064-.218 1.791-.465 2.427a4.902 4.902 0 01-1.153 1.772 4.902 4.902 0 01-1.772 1.153c-.636.247-1.363.416-2.427.465-1.067.048-1.407.06-4.123.06h-.08c-2.643 0-2.987-.012-4.043-.06-1.064-.049-1.791-.218-2.427-.465a4.902 4.902 0 01-1.772-1.153 4.902 4.902 0 01-1.153-1.772c-.247-.636-.416-1.363-.465-2.427-.047-1.024-.06-1.379-.06-3.808v-.63c0-2.43.013-2.784.06-3.808.049-1.064.218-1.791.465-2.427a4.902 4.902 0 011.153-1.772A4.902 4.902 0 015.45 2.525c.636-.247 1.363-.416 2.427-.465C8.901 2.013 9.256 2 11.685 2h.63zm-.081 1.802h-.468c-2.456 0-2.784.011-3.807.058-.975.045-1.504.207-1.857.344-.467.182-.8.398-1.15.748-.35.35-.566.683-.748 1.15-.137.353-.3.882-.344 1.857-.047 1.023-.058 1.351-.058 3.807v.468c0 2.456.011 2.784.058 3.807.045.975.207 1.504.344 1.857.182.466.399.8.748 1.15.35.35.683.566 1.15.748.353.137.882.3 1.857.344 1.054.048 1.37.058 4.041.058h.08c2.597 0 2.917-.01 3.96-.058.976-.045 1.505-.207 1.858-.344.466-.182.8-.398 1.15-.748.35-.35.566-.683.748-1.15.137-.353.3-.882.344-1.857.048-1.055.058-1.37.058-4.041v-.08c0-2.597-.01-2.917-.058-3.96-.045-.976-.207-1.505-.344-1.858a3.097 3.097 0 00-.748-1.15 3.098 3.098 0 00-1.15-.748c-.353-.137-.882-.3-1.857-.344-1.023-.047-1.351-.058-3.807-.058zM12 6.865a5.135 5.135 0 110 10.27 5.135 5.135 0 010-10.27zm0 1.802a3.333 3.333 0 100 6.666 3.333 3.333 0 000-6.666zm5.338-3.205a1.2 1.2 0 110 2.4 1.2 1.2 0 010-2.4z"
clipRule="evenodd"
/>
</svg>
<span className="sr-only">Instagram page</span>
</a>
<a
href="#"
className="text-white hover:text-orange-500 dark:hover:text-white"
>
<svg
className="w-10 h-10"
fill="currentColor"
viewBox="0 0 24 24"
aria-hidden="true"
>
<path d="M8.29 20.251c7.547 0 11.675-6.253 11.675-11.675 0-.178 0-.355-.012-.53A8.348 8.348 0 0022 5.92a8.19 8.19 0 01-2.357.646 4.118 4.118 0 001.804-2.27 8.224 8.224 0 01-2.605.996 4.107 4.107 0 00-6.993 3.743 11.65 11.65 0 01-8.457-4.287 4.106 4.106 0 001.27 5.477A4.072 4.072 0 012.8 9.713v.052a4.105 4.105 0 003.292 4.022 4.095 4.095 0 01-1.853.07 4.108 4.108 0 003.834 2.85A8.233 8.233 0 012 18.407a11.616 11.616 0 006.29 1.84" />
</svg>
<span className="sr-only">Twitter page</span>
</a>
<a
href="#"
className="text-white hover:text-orange-500 dark:hover:text-white"
>
<svg
className="w-10 h-10"
fill="currentColor"
viewBox="0 0 24 24"
aria-hidden="true"
>
<path
fillRule="evenodd"
d="M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0112 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0022 12.017C22 6.484 17.522 2 12 2z"
clipRule="evenodd"
/>
</svg>
<span className="sr-only">GitHub account</span>
</a>
</div>
<ul className="flex flex-wrap items-center mt-8 md:mt-4 text-sm font-medium text-white dark:text-gray-400 sm:mt-8">
<li>
<Link href="/" className="flex mr-4 hover:underline md:mr-6 ">
<img
src={ImagePath.shield}
className="h-4 mr-3"
alt="FlowBite Logo"
/>
{Texts.s_s}
</Link>
</li>
<li>
<a href="#" className="mr-4 hover:underline md:mr-6">
{Texts.p_p}
</a>
</li>
<li className="mt-4 md:mt-0">
<a href="#" className="mr-4 hover:underline md:mr-6">
{Texts.t_c}
</a>
</li>
</ul>
</div>
</div>
</div>
</footer>
);
}

View File

@ -0,0 +1,416 @@
import { ImagePath } from "@/utils/imagePath";
import { Texts } from "@/utils/texts";
import Link from "next/link";
import { useRouter } from "next/router";
import { useCallback, useState, useRef, useEffect } from "react";
const Header = () => {
const router = useRouter();
let [show1, setShow1] = useState(false);
let [show2, setShow2] = useState(false);
const [hoverIndex, setHoverIndex] = useState<number | null>(null);
const lineRef = useRef<HTMLHRElement>(null);
const [isContactModalOpen, setIsContactModalOpen] = useState(false); // State for contact modal
const [formData, setFormData] = useState({ name: "", email: "", message: "" }); // State for form data
const [messageSent, setMessageSent] = useState(false); // State for confirmation message
useEffect(() => {
if (hoverIndex !== null && lineRef.current) {
const items = document.querySelectorAll(".nav-item");
const item = items[hoverIndex] as HTMLElement;
const itemRect = item.getBoundingClientRect();
const navRect = item.parentElement!.getBoundingClientRect();
lineRef.current.style.width = `${itemRect.width}px`;
lineRef.current.style.transform = `translateX(${itemRect.left - navRect.left - 32}px)`;
lineRef.current.style.opacity = "1";
} else if (lineRef.current) {
lineRef.current.style.opacity = "0";
}
}, [hoverIndex]);
const openContactModal = () => {
setIsContactModalOpen(true);
};
const closeContactModal = () => {
setIsContactModalOpen(false);
setMessageSent(false);
setFormData({ name: "", email: "", message: "" });
};
const handleFormSubmit = async (e: React.FormEvent) => {
e.preventDefault();
// Simulate email sending process
try {
console.log("Email Sent to contact@nonlinear.technology:", formData);
setMessageSent(true);
setFormData({ name: "", email: "", message: "" });
setTimeout(() => {
closeContactModal();
}, 3000);
} catch (error) {
console.error("Error sending email:", error);
}
};
const handleInputChange = (e: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>) => {
setFormData({
...formData,
[e.target.name]: e.target.value,
});
};
return (
<>
<nav className="w-full max-w-7xl bg-white rounded-2xl md:mt-10 dark:bg-gray-900">
<div className="max-w-screen-2xl flex flex-wrap items-center justify-between mx-6 lg:mx-12 h-28">
<Link href="/" className="flex items-center">
<img src={ImagePath.logo_dark} className="h-9 mr-3 logo-light" alt="Flowbite Logo" />
</Link>
<div className="flex md:order-2">
<button
type="button"
onClick={openContactModal}
className="bg-transparent border border-black text-black hover:bg-black hover:text-white focus:ring-4 focus:outline-none focus:ring-blue-300 font-bold rounded-full text-lg px-6 py-3 text-center mr-3 md:mr-0 dark:bg-blue-600 dark:hover:bg-blue-700 dark:focus:ring-blue-800"
>
{Texts.contact_us}
</button>
<button
data-collapse-toggle="navbar-cta"
type="button"
className="inline-flex items-center p-2 text-sm text-gray-500 rounded-lg md:hidden hover:bg-gray-100 focus:outline-none focus:ring-2 focus:ring-gray-200 dark:text-gray-400 dark:hover:bg-gray-700 dark:focus:ring-gray-600"
aria-controls="navbar-cta"
aria-expanded="false"
>
<span className="sr-only">Open main menu</span>
<svg
className="w-6 h-6"
aria-hidden="true"
fill="currentColor"
viewBox="0 0 20 20"
xmlns="http://www.w3.org/2000/svg"
>
<path
fillRule="evenodd"
d="M3 5a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1zM3 10a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1zM3 15a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1z"
clipRule="evenodd"
></path>
</svg>
</button>
</div>
<div className="items-center justify-between hidden w-full md:flex md:w-auto md:order-1 z-10" id="navbar-cta">
<ul className="flex flex-col font-sm p-4 md:p-0 mt-4 border border-gray-100 rounded-lg bg-gray-50 md:flex-row md:space-x-8 md:mt-0 md:border-0 md:bg-white dark:bg-gray-800 md:dark:bg-gray-900 dark:border-gray-700 relative">
<li className="nav-item group" onMouseEnter={() => setHoverIndex(0)} onMouseLeave={() => setHoverIndex(null)}>
<button className="flex items-center justify-between w-full py-2 pl-3 pr-4 text-gray-700 rounded hover:bg-gray-100 md:hover:bg-transparent md:border-0 md:hover:text-black md:p-0 md:w-auto dark:text-black md:dark:hover:text-black dark:focus:text-black dark:border-gray-700 dark:hover:bg-gray-700 md:dark:hover:bg-transparent">
{Texts.products}
<svg
className={`w-5 h-5 ml-1 group-hover:rotate-180"`}
aria-hidden="true"
fill="currentColor"
viewBox="0 0 20 20"
xmlns="http://www.w3.org/2000/svg"
>
<path
fillRule="evenodd"
d="M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z"
clipRule="evenodd"
></path>
</svg>
</button>
<div
className={` hidden group-hover:block z-10
font-normal bg-white divide-y divide-gray-100 rounded-3xl dark:bg-gray-700 dark:divide-gray-600`}
>
<div className="fixed pt-14">
<div className="bg-white rounded-3xl drop-shadow-xl grid grid-cols-1 lg:grid-cols-2 divide-x max-w-screen-lg">
<div className="p-4">
<div
className="p-14 max-w-full bg-white rounded-3xl text-gray-900 hover:text-white hover:bg-gray-800 dark:bg-gray-800 dark:border-gray-700"
onMouseEnter={() => setShow1(true)}
onMouseLeave={() => setShow1(false)}
>
{!show1 ? (
<img
className="h-14 mb-16"
src={ImagePath.es}
alt=""
/>
) : (
<img
className="h-14 mb-16"
src={ImagePath.es_white}
alt=""
/>
)}
<a href="#">
<h5 className="my-4 text-3xl font-semibold tracking-tight dark:text-white">
{Texts.es}
</h5>
</a>
<Link href="http://everydayseries.ai/" target="_blank">
<button
type="button"
className=" mt-8 max-w-fit h-16 border border-gray-400 focus:ring-4 focus:outline-none font-medium rounded-full text-xl px-5 py-2.5 text-center inline-flex items-center justify-center"
>
{Texts.see_more}
{!show1 ? (
<img
src={ImagePath.circle_arrow_dark}
className="h-9 ml-6 arrow animate-pulse"
/>
) : (
<img
src={ImagePath.circle_arrow}
className="h-9 ml-6 arrow animate-pulse"
/>
)}
</button>
</Link>
</div>
</div>
<div className="p-4">
<div
className="p-14 max-w-full bg-white rounded-3xl text-gray-900 hover:text-white hover:bg-gray-800 dark:bg-gray-800 dark:border-gray-700"
onMouseEnter={() => setShow2(true)}
onMouseLeave={() => setShow2(false)}
>
<img
className="h-14 mb-16 "
src={ImagePath.fc}
alt=""
/>
<a href="#">
<h5 className="my-4 text-3xl font-semibold tracking-tight dark:text-white">
{Texts.fc}
</h5>
</a>
<Link href="https://fastcode.sh/" target="_blank">
<button
type="button"
className=" mt-8 max-w-fit h-16 border border-gray-400 focus:ring-4 focus:outline-none font-medium rounded-full text-xl px-5 py-2.5 text-center inline-flex items-center justify-center"
>
{Texts.see_more}
{!show2 ? (
<img
src={ImagePath.circle_arrow_dark}
className="h-9 ml-6 arrow animate-pulse"
/>
) : (
<img
src={ImagePath.circle_arrow}
className="h-9 ml-6 arrow animate-pulse"
/>
)}
</button>
</Link>
</div>
</div>
</div>
</div>
</div>
</li>
<li className="nav-item" onMouseEnter={() => setHoverIndex(1)} onMouseLeave={() => setHoverIndex(null)}>
<Link href="/research" className="block py-2 pl-3 pr-4 text-gray-700 rounded hover:bg-gray-100 md:hover:bg-transparent md:hover:text-blue-700 md:p-0 md:dark:hover:text-blue-500 dark:text-white dark:hover:bg-gray-700 dark:hover:text-white md:dark:hover:bg-transparent dark:border-gray-700">
{Texts.research}
</Link>
</li>
<li className="nav-item" onMouseEnter={() => setHoverIndex(2)} onMouseLeave={() => setHoverIndex(null)}>
<Link href="/about-us" className="block py-2 pl-3 pr-4 text-gray-700 rounded hover:bg-gray-100 md:hover:bg-transparent md:hover:text-blue-700 md:p-0 md:dark:hover:text-blue-500 dark:text-white dark:hover:bg-gray-700 dark:hover:text-white md:dark:hover:bg-transparent dark:border-gray-700">
{Texts.about_us}
</Link>
</li>
<li className="nav-item" onMouseEnter={() => setHoverIndex(3)} onMouseLeave={() => setHoverIndex(null)}>
<Link href="/careers" className="block py-2 pl-3 pr-4 text-gray-700 rounded hover:bg-gray-100 md:hover:bg-transparent md:hover:text-blue-700 md:p-0 md:dark:hover:text-blue-500 dark:text-white dark:hover:bg-gray-700 dark:hover:text-white md:dark:hover:bg-transparent dark:border-gray-700">
{Texts.careers}
</Link>
</li>
<hr ref={lineRef} className="h-1 rounded-full selected absolute bottom-0 transition-all duration-300 ease-in-out" style={{ opacity: 0 }} />
</ul>
</div>
</div>
</nav>
{/* Contact Us Modal */}
{isContactModalOpen && (
<div className="fixed inset-0 flex items-center justify-center z-50 bg-black bg-opacity-70 backdrop-blur-sm transition-opacity">
<div
className="bg-white dark:bg-gray-900 rounded-xl overflow-hidden shadow-2xl transform transition-all flex flex-col md:flex-row max-w-4xl w-full"
style={{
boxShadow: '0 25px 50px -12px rgba(0, 0, 0, 0.25), 0 0 0 1px rgba(255, 255, 255, 0.1)'
}}
>
<button
onClick={closeContactModal}
className="absolute top-4 right-4 text-gray-500 hover:text-gray-700 dark:text-gray-400 dark:hover:text-gray-200 transition-colors z-10"
aria-label="Close modal"
>
<svg xmlns="http://www.w3.org/2000/svg" className="h-6 w-6" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M6 18L18 6M6 6l12 12" />
</svg>
</button>
{messageSent ? (
<div className="w-full py-16 px-8 text-center">
<div className="mx-auto mb-6 flex items-center justify-center">
<svg xmlns="http://www.w3.org/2000/svg" className="h-16 w-16 text-green-500" viewBox="0 0 20 20" fill="currentColor">
<path fillRule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z" clipRule="evenodd" />
</svg>
</div>
<h2 className="text-3xl font-bold mb-3 text-gray-900 dark:text-white">Message Sent!</h2>
<p className="text-lg text-gray-600 dark:text-gray-300">We'll get back to you as soon as possible.</p>
</div>
) : (
<>
{/* Left side - Message */}
<div className="w-full md:w-2/5 bg-gradient-to-br from-blue-100 to-indigo-100 text-black p-8 flex flex-col justify-between">
<div className="space-y-6">
<h2 className="text-3xl font-bold">We'd love to hear from you.</h2>
<p className="text-lg opacity-90">Our team is ready to help you with any questions or needs you might have.</p>
<div className="hidden md:block">
<div className="mt-8 opacity-90">
<div className="flex items-center mb-4">
<svg xmlns="http://www.w3.org/2000/svg" className="h-5 w-5 mr-2" viewBox="0 0 20 20" fill="currentColor">
<path d="M2.003 5.884L10 9.882l7.997-3.998A2 2 0 0016 4H4a2 2 0 00-1.997 1.884z" />
<path d="M18 8.118l-8 4-8-4V14a2 2 0 002 2h12a2 2 0 002-2V8.118z" />
</svg>
<span>support@techcompany.com</span>
</div>
<div className="flex items-center">
<svg xmlns="http://www.w3.org/2000/svg" className="h-5 w-5 mr-2" viewBox="0 0 20 20" fill="currentColor">
<path fillRule="evenodd" d="M5.05 4.05a7 7 0 119.9 9.9L10 18.9l-4.95-4.95a7 7 0 010-9.9zM10 11a2 2 0 100-4 2 2 0 000 4z" clipRule="evenodd" />
</svg>
<span>San Francisco, CA</span>
</div>
</div>
</div>
</div>
<a
href="https://calendly.com/gaurav-everydayseries/30min"
target="_blank"
rel="noopener noreferrer"
className="block text-center font-medium py-3 px-4 rounded-lg bg-white text-blue-700 hover:bg-gray-100 transition-colors mt-8 flex items-center justify-center"
>
<svg xmlns="http://www.w3.org/2000/svg" className="h-5 w-5 mr-2" viewBox="0 0 20 20" fill="currentColor">
<path fillRule="evenodd" d="M6 2a1 1 0 00-1 1v1H4a2 2 0 00-2 2v10a2 2 0 002 2h12a2 2 0 002-2V6a2 2 0 00-2-2h-1V3a1 1 0 10-2 0v1H7V3a1 1 0 00-1-1zm0 5a1 1 0 000 2h8a1 1 0 100-2H6z" clipRule="evenodd" />
</svg>
Book a Meeting
</a>
</div>
{/* Right side - Form */}
<div className="w-full md:w-3/5 p-8">
<form onSubmit={handleFormSubmit} className="space-y-6">
<div className="mb-6">
<h3 className="text-2xl font-bold text-gray-900 dark:text-white">Get in Touch</h3>
<p className="text-gray-600 dark:text-gray-400 mt-1">We'll get back to you within 24 hours</p>
</div>
{/* Name field */}
<div className="relative">
<input
type="text"
name="name"
id="name"
value={formData.name}
onChange={handleInputChange}
required
className="w-full bg-gray-50 dark:bg-gray-800 border border-gray-300 dark:border-gray-700 rounded-lg px-4 py-3 text-gray-900 dark:text-white focus:ring-2 focus:ring-blue-500 focus:border-transparent transition-all"
placeholder="Your name"
/>
</div>
{/* Email field */}
<div className="relative">
<input
type="email"
name="email"
id="email"
value={formData.email}
onChange={handleInputChange}
required
className="w-full bg-gray-50 dark:bg-gray-800 border border-gray-300 dark:border-gray-700 rounded-lg px-4 py-3 text-gray-900 dark:text-white focus:ring-2 focus:ring-blue-500 focus:border-transparent transition-all"
placeholder="your@email.com"
/>
</div>
{/* Message field */}
<div className="relative">
<textarea
name="message"
id="message"
rows={4}
value={formData.message}
onChange={handleInputChange}
required
className="w-full bg-gray-50 dark:bg-gray-800 border border-gray-300 dark:border-gray-700 rounded-lg px-4 py-3 text-gray-900 dark:text-white focus:ring-2 focus:ring-blue-500 focus:border-transparent transition-all resize-none"
placeholder="Tell us what you need help with..."
/>
</div>
{/* Submit button */}
<button
type="submit"
className="w-full border border-black bg-white hover:bg-black text-black font-medium py-3 px-4 rounded-lg transition-colors focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2"
>
Submit Message
</button>
<div className="mt-4 block md:hidden">
<a
href="https://calendly.com/gaurav-everydayseries/30min"
target="_blank"
rel="noopener noreferrer"
className="w-full block text-center font-medium py-3 px-4 rounded-lg bg-gray-100 dark:bg-gray-800 text-gray-800 dark:text-white hover:bg-gray-200 dark:hover:bg-gray-700 transition-colors flex items-center justify-center"
>
<svg xmlns="http://www.w3.org/2000/svg" className="h-5 w-5 mr-2" viewBox="0 0 20 20" fill="currentColor">
<path fillRule="evenodd" d="M6 2a1 1 0 00-1 1v1H4a2 2 0 00-2 2v10a2 2 0 002 2h12a2 2 0 002-2V6a2 2 0 00-2-2h-1V3a1 1 0 10-2 0v1H7V3a1 1 0 00-1-1zm0 5a1 1 0 000 2h8a1 1 0 100-2H6z" clipRule="evenodd" />
</svg>
Book a Meeting
</a>
</div>
</form>
</div>
</>
)}
</div>
</div>
)}
<style jsx>{`
.mt-40 {
margin-top: 45px !important;
}
.selected {
background: linear-gradient(
96.36deg,
#ffff00 -15.3%,
#ffd316 -8.64%,
#ff9c32 0.8%,
#ff6c4a 10.32%,
#ff455d 19.7%,
#ff276c 28.91%,
#ff1177 37.92%,
#ff047e 46.63%,
#ff0080 54.68%,
#0026ff 131.34%
);
}
`}</style>
</>
);
};
export default Header;

View File

@ -0,0 +1,87 @@
import { Texts } from "@/utils/texts";
import { ImagePath } from "@/utils/imagePath";
export default function AboutSection() {
return (
<>
<div className="w-full max-w-5xl text-center my-16 md:my-40 px-6">
<h1 className="text-3xl md:text-7xl font-semibold tracking-tight text-black ">
{Texts.about_sec_title}
</h1>
<div className="w-full max-w-5xl flex items-center justify-center my-10">
<h3 className="max-w-3xl text-base md:text-2xl font-normal tracking-tight text-black ">
{Texts.about_sec_subtitle}
</h3>
</div>
<button
type="button"
className="w-full max-w-xs h-16 text-white bg-gradient-to-r from-pink-300 to-purple-300 hover:bg-gradient-to-l focus:ring-4 focus:outline-none focus:ring-purple-200 dark:focus:ring-purple-800 font-medium rounded-full text-base md:text-xl px-5 py-2.5 text-center inline-flex items-center justify-center mr-2 mb-2"
>
{Texts.learn_about_us}
<img src={ImagePath.circle_arrow} className="h-9 ml-6 arrow animate-pulse" />
</button>
{/* <ul className="flex flex-wrap justify-around items-center mt-40 hidden md:flex">
<li>
<img
src={ImagePath.google}
className="h-9 mr-3"
alt="FlowBite Logo"
/>
</li>
<li>
<img
src={ImagePath.airbnb}
className="h-9 mr-3"
alt="FlowBite Logo"
/>
</li>
<li>
<img
src={ImagePath.creative}
className="h-9 mr-3"
alt="FlowBite Logo"
/>
</li>{" "}
<li>
<img
src={ImagePath.shopify}
className="h-9 mr-3"
alt="FlowBite Logo"
/>
</li>{" "}
<li>
<img
src={ImagePath.amazon}
className="h-9 mr-3"
alt="FlowBite Logo"
/>
</li>
</ul> */}
</div>
<style jsx>
{`
.text-7xl {
line-height: 150%;
}
button {
background: linear-gradient(
96.36deg,
#ffff00 -15.3%,
#ffd316 -8.64%,
#ff9c32 0.8%,
#ff6c4a 10.32%,
#ff455d 19.7%,
#ff276c 28.91%,
#ff1177 37.92%,
#ff047e 46.63%,
#ff0080 54.68%,
#0026ff 131.34%
);
}
`}
</style>
</>
);
}

View File

@ -0,0 +1,62 @@
import { ImagePath } from "@/utils/imagePath";
import { Texts } from "@/utils/texts";
export default function Cognitive() {
return (
<>
<div className="mt-10 md:mt-60 py-28 w-full flex items-center justify-center bg-cog">
<div className="grid grid-cols-1 lg:grid-cols-2 gap-10 max-w-screen-2xl">
{/* Crystal image - appears first on mobile, second on desktop */}
<img
className="w-full h-auto order-1 lg:order-2"
src={ImagePath.crystal}
alt=""
/>
{/* Text content */}
<div className="order-2 lg:order-1 mx-6 rounded-lg md:rounded-3xl bg-black px-6 py-16 lg:p-24 opacity-80">
<h1 className="text-3xl md:text-6xl font-semibold tracking-tight text-white">
{Texts.cog}
</h1>
<h1 className="text-3xl md:text-6xl mt-4 md:mt-8 font-semibold tracking-tight text-white">
{Texts.revol}
</h1>
<h6 className="text-base md:text-xl py-6 md:py-10 text-white shining-text">
{Texts.cog_sub1}
</h6>
<h6 className="text-base md:text-xl text-white shining-text">
{Texts.cog_sub2}
</h6>
</div>
</div>
</div>
<style jsx>{`
.bg-cog {
background-image: url("/images/cognitive.svg");
}
.rounded-3xl {
border-radius: 50px !important;
}
.shining-text {
position: relative;
background: linear-gradient(45deg, #ffccf1, #d0e2ff, #ffccf1, #d0e2ff, #ffccf1, #d0e2ff, #ffccf1, #d0e2ff, #ffccf1);
background-size: 400% 400%;
color: transparent;
background-clip: text;
-webkit-background-clip: text;
animation: shine 5s linear infinite;
}
@keyframes shine {
0% {
background-position: 200% 200%;
}
100% {
background-position: -200% -200%;
}
}
`}</style>
</>
);
}

View File

@ -0,0 +1,213 @@
import { useEffect, useState } from "react";
import { ImagePath } from "@/utils/imagePath";
import { Texts } from "@/utils/texts";
import Image from "next/image";
interface GhostAuthor {
name: string;
profile_image: string | null;
bio: string | null;
}
interface GhostPost {
id: string;
title: string;
feature_image: string | null;
custom_excerpt?: string;
excerpt: string;
authors: GhostAuthor[];
}
const samplePosts: GhostPost[] = [
{
id: "1",
title: "The Future of AI in Everyday Life",
feature_image: ImagePath.toolkit1,
excerpt: "Explore how artificial intelligence is transforming our daily lives and what the future holds for AI integration in everyday tasks.",
authors: [
{
name: "John Smith",
profile_image: ImagePath.circle_arrow,
bio: "AI enthusiast and tech writer"
}
]
},
{
id: "2",
title: "Building Better Habits with Technology",
feature_image: ImagePath.toolkit2,
excerpt: "Discover how modern technology can help you build and maintain better habits for a more productive life.",
authors: [
{
name: "Sarah Johnson",
profile_image: ImagePath.circle_arrow,
bio: "Productivity expert and coach"
}
]
},
{
id: "3",
title: "The Power of Positive Thinking",
feature_image: ImagePath.learn,
excerpt: "Learn how positive thinking can transform your life and practical ways to cultivate a positive mindset every day.",
authors: [
{
name: "Michael Chen",
profile_image: ImagePath.circle_arrow,
bio: "Mental health advocate and writer"
}
]
},
{
id: "4",
title: "Sustainable Living in the Modern World",
feature_image: ImagePath.crystal,
excerpt: "Tips and strategies for living a more sustainable lifestyle in today's fast-paced world.",
authors: [
{
name: "Emily Davis",
profile_image: ImagePath.circle_arrow,
bio: "Environmental activist and writer"
}
]
},
{
id: "5",
title: "The Art of Mindfulness",
feature_image: ImagePath.toolkit1,
excerpt: "A beginner's guide to mindfulness meditation and its benefits for mental well-being.",
authors: [
{
name: "Robert Wilson",
profile_image: ImagePath.circle_arrow,
bio: "Mindfulness teacher and meditation guide"
}
]
}
];
const Inspired = () => {
const [posts, setPosts] = useState<GhostPost[]>(samplePosts);
const [loading, setLoading] = useState<boolean>(false);
const [visiblePostsCount, setVisiblePostsCount] = useState<number>(3); // Controls how many posts are shown
const handleSeeMore = () => {
setVisiblePostsCount((prevCount) => prevCount + 3);
};
// async function fetchPosts(): Promise<GhostPost[]> {
// const response = await fetch(
// `${process.env.NEXT_PUBLIC_GHOST_API_URL}/ghost/api/v3/content/posts/?key=${process.env.NEXT_PUBLIC_GHOST_CONTENT_API_KEY}&filter=featured:true&include=tags,authors`
// );
// const data = await response.json();
// return data.posts || [];
// }
// useEffect(() => {
// fetchPosts()
// .then((posts) => {
// setPosts(posts);
// setLoading(false);
// })
// .catch((error) => {
// console.error("Error fetching posts:", error);
// setLoading(false);
// });
// }, []);
return (
<div className="my-20">
<div className="text-center">
<h1 className="my-20 text-3xl md:text-7xl font-semibold tracking-tight text-gray-900 dark:text-white">
{Texts.inspired}
</h1>
</div>
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-10 max-w-screen-xl">
{posts.length > 0 ? (
posts.slice(0, visiblePostsCount).map((post) => (
<div
key={post.id}
className="group transition duration-300 ease-in-out hover:bg-white bg-black text-white hover:text-black p-8 max-w-sm rounded-2xl dark:bg-gray-800 dark:border-gray-700 flex flex-col justify-between min-h-[500px] cursor-pointer"
style={{
cursor: `url(${ImagePath.circle_arrow_dark}), pointer`
}}
>
{post.feature_image && (
<Image
className="rounded-lg object-cover"
src={post.feature_image}
alt={post.title || "Featured Post"}
width={500}
height={250}
loading="lazy"
style={{ height: "250px" }}
/>
)}
<h5 className="my-8 text-xl font-semibold tracking-tight group-hover:text-black dark:text-gray-900">
{post.title}
</h5>
<p className="mb-3 text-lg font-normal text-gray-400 group-hover:text-gray-700 dark:text-gray-400 flex-grow">
{post.custom_excerpt || `${post.excerpt.slice(0, 100)}...`}
</p>
<hr className="h-px my-8 bg-gray-800 border-0 dark:bg-gray-700 group-hover:bg-gray-300" />
<figcaption className="flex items-center justify-center">
{post.authors.length > 0 && post.authors[0].profile_image ? (
<>
<Image
className="rounded-2xl"
src={post.authors[0].profile_image}
alt={post.authors[0].name}
width={36}
height={36}
loading="lazy"
/>
<div className="ml-6 font-medium text-left">
<div className="text-xl font-bold group-hover:text-black dark:text-white">
{post.authors[0].name}
</div>
<div className="text-base text-gray-500 group-hover:text-gray-700 dark:text-gray-400">
{post.authors[0].bio || "Ghost Author"}
</div>
</div>
</>
) : (
<p className="text-center text-gray-400 group-hover:text-gray-700">
Unknown author
</p>
)}
</figcaption>
</div>
))
) : (
<p className="text-center text-gray-500">No featured posts found.</p>
)}
</div>
{posts.length > 3 && visiblePostsCount < posts.length && (
<div className="text-center">
<button
type="button"
onClick={handleSeeMore}
className="my-20 bg-white text-black max-w-fit h-16 text-grey-900 focus:ring-4 focus:outline-none font-medium rounded-full text-xl px-5 py-2.5 text-center inline-flex items-center justify-center hover:bg-gray-100"
>
{Texts.see_more}
<Image
src={ImagePath.circle_arrow_dark}
alt="See more"
className="h-9 ml-6 arrow text-black animate-pulse"
width={36}
height={36}
loading="lazy"
/>
</button>
</div>
)}
</div>
);
};
export default Inspired;

View File

@ -0,0 +1,47 @@
import { ImagePath } from "@/utils/imagePath";
import { Texts } from "@/utils/texts";
export default function JoinClub() {
return (
<>
<div className=" mx-6">
<div className="bg w-full max-w-screen-2xl text-center px-10 md:px-10 py-20 flex flex-col items-center content-center justify-between rounded-2xl md:rounded-3xl">
<h1 className="text-2xl md:text-7xl font-semibold tracking-tight text-white dark:text-white">
{Texts.join_club_t}
</h1>
<h6 className="text-base md:text-2xl md:px-28 py-10 text-white"> {Texts.join_club_subt}</h6>
<button
type="button"
className="bg-black max-w-fit h-16 text-white focus:ring-4 focus:outline-none font-medium rounded-full text-lg md:text-xl px-5 py-2.5 text-center inline-flex items-center justify-center hover:bg-gray-900"
>
{Texts.join_club}
<img src={ImagePath.circle_arrow} className="h-9 ml-6 arrow animate-pulse" />
</button>
</div>
</div>
<style jsx>{`
h5 {
line-height: 66px;
}
.bg {
background: linear-gradient(
101.32deg,
#ffff00 2.49%,
#ffd316 7.51%,
#ff9c32 14.64%,
#ff6c4a 21.82%,
#ff455d 28.9%,
#ff276c 35.85%,
#ff1177 42.64%,
#ff047e 49.21%,
#ff0080 55.29%,
#0026ff 113.13%
);
}
.rounded-3xl {
border-radius: 70px;
}
`}</style>
</>
);
}

View File

@ -0,0 +1,50 @@
import { ImagePath } from "@/utils/imagePath";
import { Texts } from "@/utils/texts";
import Image from "next/image";
export default function LearnMore() {
return (
<>
<div className=" mx-6">
<div className="w-full p-6 md:p-10 my-8 md:my-20 flex flex-col items-center justify-between bg-white rounded-lg md:rounded-3xl lg:flex-row lg:max-w-screen-2xl dark:border-gray-700 dark:bg-gray-800 dark:hover:bg-gray-700">
{/* <Image
width={700}
height={600}
className="object-cover rounded-3xl lg:hidden"
src={ImagePath.learn}
alt=""
/> */}
<div className="w-full md:w-1/2 flex flex-col md:mx-10 justify-between py-4 md:p-4 leading-normal">
<p className="text-lg md:text-4xl font-normal leading-9 md:leading-12 text-gray-900 dark:text-white">
{Texts.learn_more_title}
</p>
<button
type="button"
className="mt-8 md:mt-16 bg-black max-w-fit h-16 text-white focus:ring-4 focus:outline-none font-medium rounded-full text-lg md:text-xl px-5 py-2.5 text-center inline-flex items-center justify-center hover:bg-gray-800"
>
{Texts.learn_more}
<img src={ImagePath.circle_arrow} className="h-9 ml-6 arrow animate-pulse" />
</button>
</div>
<div className="w-full md:w-1/2 h-full overflow-hidden rounded-lg md:rounded-3xl">
<Image
width={700}
height={600}
className="object-cover w-full h-full rounded-3xl transition-transform duration-300 ease-in-out hover:scale-105"
src={ImagePath.learn}
alt=""
/>
</div>
</div>
</div>
<style jsx>{`
h5 {
line-height: 66px;
}
.rounded-3xl {
border-radius: 70px !important;
}
`}</style>
</>
);
}

View File

@ -0,0 +1,82 @@
import { ImagePath } from "@/utils/imagePath";
import { Texts } from "@/utils/texts";
import ToolkitCard from "../ToolkitCard";
import Link from "next/link";
export default function Toolkit() {
return (
<div className="my-20 md:mt-60">
<div className="text-center">
<h1 className="my-10 md:my-20 text-3xl md:text-7xl font-semibold tracking-tight text-gray-900 dark:text-white">
{Texts.exp_toolkit}
</h1>
</div>
<div className="grid grid-cols-1 lg:grid-cols-2 gap-10 max-w-screen-xl">
<div>
{/* <img className="h-auto max-w-full rounded-lg" src="https://flowbite.s3.amazonaws.com/docs/gallery/square/image-1.jpg" alt=""/> */}
<div className=" max-w-full mx-6 p-6 md:p-20 bg-white rounded-lg md:rounded-3xl dark:bg-gray-800 dark:border-gray-700">
<a href="#">
<h5 className="mb-4 tracking-wide text-2xl md:text-3xl font-semibold tracking-tight text-gray-900 dark:text-white">
{Texts.es}
</h5>
</a>
<div className="relative border rounded-3xl my-20 w-full overflow-hidden">
<img
className="w-full h-auto object-contain transition-transform duration-300 ease-in-out hover:scale-110"
src={ImagePath.toolkit1}
alt=""
/>
</div>
<p className="mb-6 md:mb-9 text-base md:text-2xl font-light text-black dark:text-gray-400">
{Texts.toolkit_sub1}
</p>
<p className="mb-3 text-base md:text-2xl font-light text-black dark:text-gray-400">
{Texts.toolkit_sub11}
</p>
<Link href="http://codefast.ai/" target="_blank">
<button
type="button"
className="mt-10 md:mt-20 bg-black max-w-fit h-16 text-white focus:ring-4 focus:outline-none font-medium rounded-full text-lg md:text-xl px-5 py-2.5 text-center inline-flex items-center justify-center hover:bg-gray-800"
>
{Texts.learn_more}
<img src={ImagePath.circle_arrow} className="h-9 ml-6 arrow animate-pulse" />
</button>
</Link>
</div>
</div>
<div>
{/* <img className="h-auto max-w-full rounded-lg" src="https://flowbite.s3.amazonaws.com/docs/gallery/square/image-1.jpg" alt=""/> */}
<div className=" max-w-full mx-6 p-6 md:p-20 bg-white rounded-lg md:rounded-3xl dark:bg-gray-800 dark:border-gray-700">
<a href="#">
<h5 className="mb-4 tracking-wide text-3xl font-semibold tracking-tight text-gray-900 dark:text-white">
{Texts.fc}
</h5>
</a>
<div className="relative border rounded-3xl my-20 w-full overflow-hidden">
<img
className="w-full h-auto object-contain transition-transform duration-300 ease-in-out hover:scale-110"
src={ImagePath.toolkit2}
alt=""
/>
</div>
<p className="mb-6 text-base md:text-2xl font-light text-black dark:text-gray-400">
{Texts.toolkit_sub2}
</p>
<p className="mb-3 text-base md:text-2xl font-light text-black dark:text-gray-400">
{Texts.toolkit_sub22}
</p>
<Link href="https://fastcode.sh/" target="_blank">
<button
type="button"
className="mt-10 md:mt-16 bg-black max-w-fit h-16 text-white focus:ring-4 focus:outline-none font-medium rounded-full text-lg md:text-xl px-5 py-2.5 text-center inline-flex items-center justify-center hover:bg-gray-800"
>
{Texts.learn_more}
<img src={ImagePath.circle_arrow} className="h-9 ml-6 arrow animate-pulse" />
</button>
</Link>
</div>
</div>
</div>
</div>
);
}

View File

@ -0,0 +1,147 @@
import { ImagePath } from "@/utils/imagePath";
import { Texts } from "@/utils/texts";
import ToolkitCard from "../ToolkitCard";
import { useState } from "react";
import Image from "next/image";
interface Publication {
id: string;
feature_image: string;
title: string;
excerpt: string;
author: {
name: string;
profile_image: string;
bio: string;
};
}
const publications: Publication[] = [
{
id: "1",
feature_image: ImagePath.inspired1,
title: "The Future of AI in Research",
excerpt: "Exploring how artificial intelligence is revolutionizing research methodologies and data analysis.",
author: {
name: "Dr. Sarah Johnson",
profile_image: "https://flowbite.s3.amazonaws.com/blocks/marketing-ui/avatars/jese-leos.png",
bio: "Research Scientist and AI Expert"
}
},
{
id: "2",
feature_image: ImagePath.inspired2,
title: "Quantum Computing Breakthroughs",
excerpt: "Recent advancements in quantum computing and their implications for scientific research.",
author: {
name: "Dr. Michael Chen",
profile_image: "https://flowbite.s3.amazonaws.com/blocks/marketing-ui/avatars/jese-leos.png",
bio: "Quantum Physicist and Researcher"
}
},
{
id: "3",
feature_image: ImagePath.inspired3,
title: "Sustainable Research Practices",
excerpt: "Best practices for conducting environmentally conscious research in modern laboratories.",
author: {
name: "Dr. Emily Davis",
profile_image: "https://flowbite.s3.amazonaws.com/blocks/marketing-ui/avatars/jese-leos.png",
bio: "Environmental Researcher and Sustainability Expert"
}
}
];
const Publication = () => {
const [visiblePublicationsCount, setVisiblePublicationsCount] = useState<number>(3);
const handleSeeMore = () => {
setVisiblePublicationsCount((prevCount) => prevCount + 3);
};
return (
<div>
<div className="text-center">
<h1 className="my-20 text-3xl md:text-7xl font-semibold tracking-tight text-gray-900 dark:text-white">
{Texts.cognify}
</h1>
</div>
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-10 max-w-screen-xl">
{publications.length > 0 ? (
publications.slice(0, visiblePublicationsCount).map((pub) => (
<div
key={pub.id}
className="group transition duration-300 ease-in-out hover:bg-white bg-black text-white hover:text-black p-8 max-w-sm rounded-2xl dark:bg-gray-800 dark:border-gray-700 flex flex-col justify-between min-h-[500px] cursor-pointer"
style={{
cursor: `url(${ImagePath.circle_arrow_dark}), pointer`
}}
>
{pub.feature_image && (
<Image
className="rounded-lg object-cover"
src={pub.feature_image}
alt={pub.title || "Featured Publication"}
width={500}
height={250}
loading="lazy"
style={{ height: "250px" }}
/>
)}
<h5 className="my-8 text-xl font-semibold tracking-tight group-hover:text-black dark:text-gray-900">
{pub.title}
</h5>
<p className="mb-3 text-lg font-normal text-gray-400 group-hover:text-gray-700 dark:text-gray-400 flex-grow">
{pub.excerpt}
</p>
<hr className="h-px my-8 bg-gray-800 border-0 dark:bg-gray-700 group-hover:bg-gray-300" />
<figcaption className="flex items-center justify-center">
<>
<Image
className="rounded-2xl"
src={pub.author.profile_image}
alt={pub.author.name}
width={36}
height={36}
loading="lazy"
/>
<div className="ml-6 font-medium text-left">
<div className="text-xl font-bold group-hover:text-black dark:text-white">
{pub.author.name}
</div>
<div className="text-base text-gray-500 group-hover:text-gray-700 dark:text-gray-400">
{pub.author.bio}
</div>
</div>
</>
</figcaption>
</div>
))
) : (
<p className="text-center text-gray-500">No publications found.</p>
)}
</div>
{publications.length > visiblePublicationsCount && (
<div className="text-center">
<button
type="button"
onClick={handleSeeMore}
className="my-20 bg-white text-black max-w-fit h-16 text-grey-900 focus:ring-4 focus:outline-none font-medium rounded-full text-xl px-5 py-2.5 text-center inline-flex items-center justify-center hover:bg-gray-100"
>
{Texts.see_more}
<Image
src={ImagePath.circle_arrow_dark}
alt="See more"
className="h-9 ml-6 arrow text-black animate-pulse"
width={36}
height={36}
loading="lazy"
/>
</button>
</div>
)}
</div>
);
};
export default Publication;

View File

@ -0,0 +1,43 @@
import { ImagePath } from "@/utils/imagePath";
import { Texts } from "@/utils/texts";
export default function Culture() {
return (
<>
<div className="mx-6">
<div className="w-full mx-6 md:my-20 p-4 md:p-10 flex flex-col items-center justify-between bg-white rounded-2xl md:rounded-5xl lg:flex-row lg:max-w-screen-xl hover:bg-gray-100 dark:border-gray-700 dark:bg-gray-800 dark:hover:bg-gray-700">
<div className="w-full lg:w-1/2 flex flex-col justify-between p-4 leading-normal">
<h1 className="lg:px-12 text-3xl font-semibold text-black">
{Texts.team_culture}
</h1>
<p className="lg:px-12 mt-6 mb-10 text-lg md:text-xl leading-10 text-gray-900 dark:text-white">
{Texts.team_culture_sub1}
</p>
<p className="lg:px-12 mb-10 text-lg md:text-xl leading-10 text-gray-900 dark:text-white">
{Texts.team_culture_sub2}
</p>
<p className="lg:px-12 mb-10 text-lg md:text-xl leading-10 text-gray-900 dark:text-white">
{Texts.team_culture_sub3}
</p>
<p className="lg:px-12 mb-10 text-lg md:text-xl leading-10 text-gray-900 dark:text-white">
{Texts.team_culture_sub4}
</p>
</div>
<img
className="object-cover rounded-3xl w-full lg:h-600 md:rounded-3xl lg:w-1/2"
src={ImagePath.culture}
alt=""
/>
</div>
</div>
<style jsx>{`
h5 {
line-height: 66px;
}
.rounded-3xl {
border-radius: 70px;
}
`}</style>
</>
);
}

View File

@ -0,0 +1,79 @@
import { ImagePath } from "@/utils/imagePath";
import { Texts } from "@/utils/texts";
import Image from "next/image";
import ToolkitCard from "../ToolkitCard";
export default function Idea() {
return (
<>
<div className="md:my-20 w-full max-w-screen-2xl px-6">
<div className="text-center w-full flex items-center justify-center">
<h1 className="my-20 text-3xl md:text-7xl font-semibold tracking-tighter text-gray-900 max-w-screen-xl dark:text-white">
{Texts.idea_t}
</h1>
</div>
<div className=" text-white w-full max-w-screen-2xl bg-white rounded-3xl md:rounded-5xl dark:bg-gray-800 dark:border-gray-700">
<Image
width={0}
height={0}
className="w-full rounded-t-3xl md:rounded-t-5xl"
src={ImagePath.idea}
alt=""
style={{
// borderTopLeftRadius: "70px",
// borderTopRightRadius: "70px",
}}
/>
<div className="p-4 lg:px-20 py-16 md:py-32">
<p className="mb-3 text-lg md:text-xl font-normal text-gray-900 dark:text-gray-400">
{Texts.idea_subt}
</p>
<ul className="flex flex-wrap justify-around items-center mt-14 md:mt-28">
<li className="group bg-gray-50 hover:bg-gray-300 rounded-full p-10 md:p-16 transition duration-300">
<img
src={ImagePath.idea1}
className="group-hover:scale-110 transition-transform duration-300 ease-in-out"
alt="Idea 1"
/>
</li>
<li className="group bg-gray-50 hover:bg-gray-300 rounded-full p-10 md:p-16 transition duration-300">
<img
src={ImagePath.idea2}
className="group-hover:scale-110 transition-transform duration-300 ease-in-out"
alt="Idea 2"
/>
</li>
<li className="group bg-gray-50 hover:bg-gray-300 rounded-full py-8 md:py-14 px-10 md:px-16 transition duration-300">
<img
src={ImagePath.idea3}
className="group-hover:scale-110 transition-transform duration-300 ease-in-out"
alt="Idea 3"
/>
</li>
<li className="group bg-gray-50 hover:bg-gray-300 rounded-full p-10 md:p-16 transition duration-300">
<img
src={ImagePath.idea4}
className="group-hover:scale-110 transition-transform duration-300 ease-in-out"
alt="Idea 4"
/>
</li>
</ul>
</div>
</div>
</div>
<style jsx>{`
.text-7xl {
line-height: 150%;
}
{/* .rounded-3xl {
border-radius: 70px;
} */}
{/* .rounded-t,
.rounded-3xl {
border-top-left-radius: 70px;
border-top-right-radius: 70px;
} */}
`}</style>
</>
);
}

View File

@ -0,0 +1,24 @@
import { ImagePath } from "@/utils/imagePath";
export function Junction() {
return (
<>
<div className="w-full mt-20 md:mt-40 px-10 lg:px-20 bg-black text-4xl md:text-7xl text-white font-semibold flex justify-around">
<h1 className="w-full p-4 lg:pl-28 py-32 md:py-60 max-w-6xl tracking-tighter">
We realise we are at a critical junction in human history whereany
discovery deployed for human benefit could also be abused orturned on
its head.
</h1>
<div className=" hidden md:flex h-200">
<img src={ImagePath.coma} alt="" />
</div>
</div>
<style jsx>{`
.bg-black {
background: #111111;
line-height: 150%;
}
`}</style>
</>
);
}

View File

@ -0,0 +1,42 @@
import { ImagePath } from "@/utils/imagePath";
import { Texts } from "@/utils/texts";
export default function LearnMore() {
return (
<>
<div className="mx-6">
<div className="w-full my-20 p-6 md:p-10 flex flex-col items-center justify-between bg-gray-100 rounded-2xl md:rounded-5xl lg:flex-row lg:max-w-screen-xl hover:bg-gray-100 dark:border-gray-700 dark:bg-gray-800 dark:hover:bg-gray-700">
<div className="flex flex-col justify-between md:p-4 leading-normal">
<h1 className="lg:px-12 text-3xl font-semibold text-black">
{Texts.cognify}
</h1>
<p className="lg:px-12 mt-6 mb-8 md:mb-16 text-xl leading-10 text-gray-900 dark:text-white">
{Texts.learn_more_title}
</p>
<button
type="button"
className=" lg:mx-12 bg-black max-w-fit h-16 text-white mb-16 md:mb-0 focus:ring-4 focus:outline-none font-medium rounded-full text-xl px-5 py-2.5 text-center inline-flex items-center justify-center"
>
{Texts.visit_cognify}
<img src={ImagePath.circle_arrow} className="h-9 ml-6 arrow" />
</button>
</div>
<img
className="object-cover rounded-2xl w-full md:max-w-xl lg:h-auto lg:max-w-2xl md:rounded-3xl"
src={ImagePath.learn}
alt=""
/>
</div>
</div>
<style jsx>{`
h5 {
line-height: 66px;
}
.rounded-3xl {
border-radius: 70px;
}
`}</style>
</>
);
}

View File

@ -0,0 +1,147 @@
import { ImagePath } from "@/utils/imagePath";
import { Texts } from "@/utils/texts";
import ToolkitCard from "../ToolkitCard";
import { useState } from "react";
import Image from "next/image";
interface Publication {
id: string;
feature_image: string;
title: string;
excerpt: string;
author: {
name: string;
profile_image: string;
bio: string;
};
}
const publications: Publication[] = [
{
id: "1",
feature_image: ImagePath.inspired1,
title: "The Future of AI in Research",
excerpt: "Exploring how artificial intelligence is revolutionizing research methodologies and data analysis.",
author: {
name: "Dr. Sarah Johnson",
profile_image: "https://flowbite.s3.amazonaws.com/blocks/marketing-ui/avatars/jese-leos.png",
bio: "Research Scientist and AI Expert"
}
},
{
id: "2",
feature_image: ImagePath.inspired2,
title: "Quantum Computing Breakthroughs",
excerpt: "Recent advancements in quantum computing and their implications for scientific research.",
author: {
name: "Dr. Michael Chen",
profile_image: "https://flowbite.s3.amazonaws.com/blocks/marketing-ui/avatars/jese-leos.png",
bio: "Quantum Physicist and Researcher"
}
},
{
id: "3",
feature_image: ImagePath.inspired3,
title: "Sustainable Research Practices",
excerpt: "Best practices for conducting environmentally conscious research in modern laboratories.",
author: {
name: "Dr. Emily Davis",
profile_image: "https://flowbite.s3.amazonaws.com/blocks/marketing-ui/avatars/jese-leos.png",
bio: "Environmental Researcher and Sustainability Expert"
}
}
];
const Publication = () => {
const [visiblePublicationsCount, setVisiblePublicationsCount] = useState<number>(3);
const handleSeeMore = () => {
setVisiblePublicationsCount((prevCount) => prevCount + 3);
};
return (
<div className="my-20">
<div className="text-center">
<h1 className="my-20 text-3xl md:text-7xl font-semibold tracking-tight text-gray-900 dark:text-white">
{Texts.f_p}
</h1>
</div>
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-10 max-w-screen-xl">
{publications.length > 0 ? (
publications.slice(0, visiblePublicationsCount).map((pub) => (
<div
key={pub.id}
className="group transition duration-300 ease-in-out hover:bg-white bg-black text-white hover:text-black p-8 max-w-sm rounded-2xl dark:bg-gray-800 dark:border-gray-700 flex flex-col justify-between min-h-[500px] cursor-pointer"
style={{
cursor: `url(${ImagePath.circle_arrow_dark}), pointer`
}}
>
{pub.feature_image && (
<Image
className="rounded-lg object-cover"
src={pub.feature_image}
alt={pub.title || "Featured Publication"}
width={500}
height={250}
loading="lazy"
style={{ height: "250px" }}
/>
)}
<h5 className="my-8 text-xl font-semibold tracking-tight group-hover:text-black dark:text-gray-900">
{pub.title}
</h5>
<p className="mb-3 text-lg font-normal text-gray-400 group-hover:text-gray-700 dark:text-gray-400 flex-grow">
{pub.excerpt}
</p>
<hr className="h-px my-8 bg-gray-800 border-0 dark:bg-gray-700 group-hover:bg-gray-300" />
<figcaption className="flex items-center justify-center">
<>
<Image
className="rounded-2xl"
src={pub.author.profile_image}
alt={pub.author.name}
width={36}
height={36}
loading="lazy"
/>
<div className="ml-6 font-medium text-left">
<div className="text-xl font-bold group-hover:text-black dark:text-white">
{pub.author.name}
</div>
<div className="text-base text-gray-500 group-hover:text-gray-700 dark:text-gray-400">
{pub.author.bio}
</div>
</div>
</>
</figcaption>
</div>
))
) : (
<p className="text-center text-gray-500">No publications found.</p>
)}
</div>
{publications.length > visiblePublicationsCount && (
<div className="text-center">
<button
type="button"
onClick={handleSeeMore}
className="my-20 bg-white text-black max-w-fit h-16 text-grey-900 focus:ring-4 focus:outline-none font-medium rounded-full text-xl px-5 py-2.5 text-center inline-flex items-center justify-center hover:bg-gray-100"
>
{Texts.see_more}
<Image
src={ImagePath.circle_arrow_dark}
alt="See more"
className="h-9 ml-6 arrow text-black animate-pulse"
width={36}
height={36}
loading="lazy"
/>
</button>
</div>
)}
</div>
);
};
export default Publication;

6
src/pages/_app.tsx Normal file
View File

@ -0,0 +1,6 @@
import '@/styles/globals.css'
import type { AppProps } from 'next/app'
export default function App({ Component, pageProps }: AppProps) {
return <Component {...pageProps} />
}

34
src/pages/_document.tsx Normal file
View File

@ -0,0 +1,34 @@
import { Html, Head, Main, NextScript } from "next/document";
export default function Document() {
return (
<Html lang="en">
<Head>
<link
href="https://cdnjs.cloudflare.com/ajax/libs/flowbite/1.6.5/flowbite.min.css"
rel="stylesheet"
/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/flowbite/1.6.5/flowbite.min.js" async></script>
{/* <link rel="preconnect" href="https://fonts.googleapis.com" />
<link
href="https://fonts.googleapis.com/css?family=Plus+Jakarta+Sans"
rel="stylesheet"
type="text/css"
/> */}
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" />
<link
href="https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@200;400;500&display=swap"
rel="stylesheet"
/>
</Head>
<body>
<Main />
<NextScript />
</body>
</Html>
);
}

23
src/pages/about-us.tsx Normal file
View File

@ -0,0 +1,23 @@
import AboutSection from "@/components/home/About";
import Cognitive from "@/components/home/Cognitive";
import Inspired from "@/components/home/Inspired";
import JoinClub from "@/components/home/JoinClub";
import LearnMore from "@/components/research/LearnMore";
import Toolkit from "@/components/home/Toolkit";
import Cognify from "@/components/research/Cognify";
import Idea from "@/components/research/Idea";
import Publication from "@/components/research/Publicaton";
import Layout from "./layout";
import Culture from "@/components/research/Culture";
import { Junction } from "@/components/research/Junction";
import Story from "@/components/about/Story";
import { StorySec } from "@/components/about/StorySec";
export default function Home() {
return (
<Layout>
<Story />
<StorySec />
</Layout>
);
}

20
src/pages/careers.tsx Normal file
View File

@ -0,0 +1,20 @@
import { CareerSec } from "@/components/career/CareerSec";
import Learn from "@/components/career/Learn";
import Positions from "@/components/career/Positions";
import AboutSection from "@/components/home/About";
import Cognitive from "@/components/home/Cognitive";
import Inspired from "@/components/home/Inspired";
import JoinClub from "@/components/home/JoinClub";
import LearnMore from "@/components/home/LearnMore";
import Toolkit from "@/components/home/Toolkit";
import Layout from "./layout";
export default function Career() {
return (
<Layout>
<Learn />
<CareerSec/>
<Positions/>
</Layout>
);
}

20
src/pages/index.tsx Normal file
View File

@ -0,0 +1,20 @@
import AboutSection from "@/components/home/About";
import Cognitive from "@/components/home/Cognitive";
import Inspired from "@/components/home/Inspired";
import JoinClub from "@/components/home/JoinClub";
import LearnMore from "@/components/home/LearnMore";
import Toolkit from "@/components/home/Toolkit";
import Layout from "./layout";
export default function Home() {
return (
<Layout>
<AboutSection />
<LearnMore />
<Cognitive/>
<Toolkit />
<JoinClub />
<Inspired/>
</Layout>
);
}

126
src/pages/layout.tsx Normal file
View File

@ -0,0 +1,126 @@
import Image from "next/image";
import { Inter } from "next/font/google";
import { ImagePath } from "@/utils/imagePath";
import { Texts } from "@/utils/texts";
import Header from "@/components/common/Header";
import Footer from "@/components/common/Footer";
const inter = Inter({ subsets: ["latin"] });
export default function Layout({ children }: { children?: React.ReactNode }) {
return (
<main
className={`flex min-h-screen flex-col items-center justify-between ${inter.className}`}
>
<Header />
{children}
<Footer />
{/* <div classNameName="z-10 w-full max-w-5xl items-center justify-between font-mono text-sm lg:flex">
<p classNameName="fixed left-0 top-0 flex w-full justify-center border-b border-gray-300 bg-gradient-to-b from-zinc-200 pb-6 pt-8 backdrop-blur-2xl dark:border-neutral-800 dark:bg-zinc-800/30 dark:from-inherit lg:static lg:w-auto lg:rounded-xl lg:border lg:bg-gray-200 lg:p-4 lg:dark:bg-zinc-800/30">
Get started by editing&nbsp;
<code classNameName="font-mono font-bold">src/pages/index.tsx</code>
</p>
<div classNameName="fixed bottom-0 left-0 flex h-48 w-full items-end justify-center bg-gradient-to-t from-white via-white dark:from-black dark:via-black lg:static lg:h-auto lg:w-auto lg:bg-none">
<a
classNameName="pointer-events-none flex place-items-center gap-2 p-8 lg:pointer-events-auto lg:p-0"
href="https://vercel.com?utm_source=create-next-app&utm_medium=default-template-tw&utm_campaign=create-next-app"
target="_blank"
rel="noopener noreferrer"
>
By{' '}
<Image
src="/vercel.svg"
alt="Vercel Logo"
classNameName="dark:invert"
width={100}
height={24}
priority
/>
</a>
</div>
</div>
<div classNameName="relative flex place-items-center before:absolute before:h-[300px] before:w-[480px] before:-translate-x-1/2 before:rounded-full before:bg-gradient-radial before:from-white before:to-transparent before:blur-2xl before:content-[''] after:absolute after:-z-20 after:h-[180px] after:w-[240px] after:translate-x-1/3 after:bg-gradient-conic after:from-sky-200 after:via-black-200 after:blur-2xl after:content-[''] before:dark:bg-gradient-to-br before:dark:from-transparent before:dark:to-black-700/10 after:dark:from-sky-900 after:dark:via-[#0141ff]/40 before:lg:h-[360px]">
<Image
classNameName="relative dark:drop-shadow-[0_0_0.3rem_#ffffff70] dark:invert"
src="/next.svg"
alt="Next.js Logo"
width={180}
height={37}
priority
/>
</div>
<div classNameName="mb-32 grid text-center lg:mb-0 lg:grid-cols-4 lg:text-left">
<a
href="https://nextjs.org/docs?utm_source=create-next-app&utm_medium=default-template-tw&utm_campaign=create-next-app"
classNameName="group rounded-lg border border-transparent px-5 py-4 transition-colors hover:border-gray-300 hover:bg-gray-100 hover:dark:border-neutral-700 hover:dark:bg-neutral-800/30"
target="_blank"
rel="noopener noreferrer"
>
<h2 classNameName={`mb-3 text-2xl font-semibold`}>
Docs{' '}
<span classNameName="inline-block transition-transform group-hover:translate-x-1 motion-reduce:transform-none">
-&gt;
</span>
</h2>
<p classNameName={`m-0 max-w-[30ch] text-sm opacity-50`}>
Find in-depth information about Next.js features and API.
</p>
</a>
<a
href="https://nextjs.org/learn?utm_source=create-next-app&utm_medium=default-template-tw&utm_campaign=create-next-app"
classNameName="group rounded-lg border border-transparent px-5 py-4 transition-colors hover:border-gray-300 hover:bg-gray-100 hover:dark:border-neutral-700 hover:dark:bg-neutral-800/30"
target="_blank"
rel="noopener noreferrer"
>
<h2 classNameName={`mb-3 text-2xl font-semibold`}>
Learn{' '}
<span classNameName="inline-block transition-transform group-hover:translate-x-1 motion-reduce:transform-none">
-&gt;
</span>
</h2>
<p classNameName={`m-0 max-w-[30ch] text-sm opacity-50`}>
Learn about Next.js in an interactive course with&nbsp;quizzes!
</p>
</a>
<a
href="https://vercel.com/templates?framework=next.js&utm_source=create-next-app&utm_medium=default-template-tw&utm_campaign=create-next-app"
classNameName="group rounded-lg border border-transparent px-5 py-4 transition-colors hover:border-gray-300 hover:bg-gray-100 hover:dark:border-neutral-700 hover:dark:bg-neutral-800/30"
target="_blank"
rel="noopener noreferrer"
>
<h2 classNameName={`mb-3 text-2xl font-semibold`}>
Templates{' '}
<span classNameName="inline-block transition-transform group-hover:translate-x-1 motion-reduce:transform-none">
-&gt;
</span>
</h2>
<p classNameName={`m-0 max-w-[30ch] text-sm opacity-50`}>
Discover and deploy boilerplate example Next.js&nbsp;projects.
</p>
</a>
<a
href="https://vercel.com/new?utm_source=create-next-app&utm_medium=default-template-tw&utm_campaign=create-next-app"
classNameName="group rounded-lg border border-transparent px-5 py-4 transition-colors hover:border-gray-300 hover:bg-gray-100 hover:dark:border-neutral-700 hover:dark:bg-neutral-800/30"
target="_blank"
rel="noopener noreferrer"
>
<h2 classNameName={`mb-3 text-2xl font-semibold`}>
Deploy{' '}
<span classNameName="inline-block transition-transform group-hover:translate-x-1 motion-reduce:transform-none">
-&gt;
</span>
</h2>
<p classNameName={`m-0 max-w-[30ch] text-sm opacity-50`}>
Instantly deploy your Next.js site to a shareable URL with Vercel.
</p>
</a>
</div> */}
</main>
);
}

25
src/pages/research.tsx Normal file
View File

@ -0,0 +1,25 @@
import AboutSection from "@/components/home/About";
import Cognitive from "@/components/home/Cognitive";
import Inspired from "@/components/home/Inspired";
import JoinClub from "@/components/home/JoinClub";
import LearnMore from "@/components/research/LearnMore";
import Toolkit from "@/components/home/Toolkit";
import Cognify from "@/components/research/Cognify";
import Idea from "@/components/research/Idea";
import Publication from "@/components/research/Publicaton";
import Layout from "./layout";
import Culture from "@/components/research/Culture";
import { Junction } from "@/components/research/Junction";
export default function Home() {
return (
<Layout>
<Idea />
<Publication />
<LearnMore/>
<Cognify />
<Culture/>
<Junction/>
</Layout>
);
}

44
src/styles/globals.css Normal file
View File

@ -0,0 +1,44 @@
@tailwind base;
@tailwind components;
@tailwind utilities;
html {
/* font-family:Plus Jakarta Sans, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI",
Roboto, Oxygen, Ubuntu, Cantarell, "Plus Jakarta Sans", "Helvetica Neue", sans-serif; */
font-family: 'Plus Jakarta Sans', sans-serif;
}
:root {
--foreground-rgb: 0, 0, 0;
--background-rgb : 248,248,248;
--background-start-rgb: 214, 219, 220;
--background-end-rgb: 255, 255, 255;
font-family: 'Plus Jakarta Sans', sans-serif;
}
@media (prefers-color-scheme: dark) {
:root {
--foreground-rgb: 255, 255, 255;
--background-rgb : 232,232,232;
--background-start-rgb: 0, 0, 0;
--background-end-rgb: 0, 0, 0;
}
}
html,
body {
font-family: 'Plus Jakarta Sans';
color: rgb(var(--foreground-rgb));
/* background: linear-gradient(
to bottom,
transparent,
rgb(var(--background-end-rgb))
)
rgb(var(--background-start-rgb)); */
background-color: rgb(var(--background-rgb));
}
html,
body,
#__next {
height: 100%;
}

2
src/utils/const.ts Normal file
View File

@ -0,0 +1,2 @@
export const emailRegex =
/^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;

60
src/utils/imagePath.ts Normal file
View File

@ -0,0 +1,60 @@
export class ImagePath {
static favicon = "/favicon.ico";
static logo_light = "/icons/logo-light.svg";
static logo_dark = "/icons/logo-dark.svg";
static star = "/icons/star.svg";
static shield = "/icons/shield.svg";
static circle_arrow = "/icons/circle-arrow.svg";
static circle_arrow_dark = "/icons/circle-arrow-dark.svg";
static google = "/icons/google.svg";
static airbnb = "/icons/airbnb.svg";
static creative = "/icons/creative.svg";
static shopify = "/icons/shopify.svg";
static amazon = "/icons/amazon.svg";
static idea1 = "/icons/idea1.svg";
static idea2 = "/icons/idea2.png";
static idea3 = "/icons/idea3.png";
static idea4 = "/icons/idea4.svg";
static remote = "/icons/remote.svg";
static time = "/icons/time.svg";
static r1 = "/icons/r1.svg";
static r2 = "/icons/r2.svg";
static r3 = "/icons/r3.svg";
static r4 = "/icons/r4.svg";
static r5 = "/icons/r5.svg";
static es = "/icons/es.svg";
static es_white = "/icons/es-white.svg";
static fc = "/icons/fc.svg";
static coma = "/icons/coma.svg";
static footer = "/images/footer.png";
// static learn = "/images/learn.svg";
static learn = "https://images.unsplash.com/photo-1742240434042-11a13f062673?q=80&w=1974&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDF8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D";
// static culture = "/images/culture.svg";
static culture = "https://images.unsplash.com/photo-1747147830098-76d7234901c8?q=80&w=1974&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D";
static toolkit1 = "/images/toolkit1.svg";
static toolkit2 = "/images/toolkit2.svg";
static inspired1 = "/images/inspired1.svg";
static inspired2 = "/images/inspired2.svg";
static inspired3 = "/images/inspired3.svg";
static cognitive = "/images/cognitive.svg";
static crystal = "/images/crystal.svg";
static idea = "/images/idea.svg";
static about = "/images/about.svg";
// static square = "/images/square.svg";
static square = "https://images.unsplash.com/photo-1745933229147-68202b50274b?q=80&w=2070&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D";
}

4
src/utils/routesPath.ts Normal file
View File

@ -0,0 +1,4 @@
export class RoutesPath {
static signin = "/";
static signup = "/onboarding/sign-up";
}

148
src/utils/texts.ts Normal file
View File

@ -0,0 +1,148 @@
export class Texts {
static app_name = "ANT";
static home = "Home";
static products = "Products";
static research = "Research";
static about_us = "About us";
static careers = "Careers";
static our_products = "Our Products";
static es = "Everyday Series";
static fc = "Fastcode";
static company = "Company";
static our_story = "Our story";
static contact_us = "Contact us";
static copy_right ="© ANTELLIGENT.INC 2023";
static t_c ="Terms & Conditions";
static p_p ="Privacy Policy";
static s_s ="100% safe and secure";
static about_sec_title = "Were unlocking the possibilities of AI, together."
static about_sec_subtitle = "Reimagining how humans think, work and communicate several decades from today."
static learn_about_us ="Learn more about us";
static learn_more_title = "We are pioneering advanced non-linear technologies that can open the floodgates to new networks and possibilities of human creativity and cooperation."
static learn_more ="Learn More"
static exp_toolkit = "Explore our toolkit";
static toolkit_sub1 ="Generative AI tools to add to your productivity and get your everyday work done in the blink of an eye.";
static toolkit_sub11 ="Create images from text prompts, Tweets from a vague idea, and presentations for your next meeting. Many tools available";
static toolkit_sub2 ="Time to exit stone age coding. Here's an AI-based creator.";
static toolkit_sub22 ="FastCode weaves artificial intelligence and human expertise from 70 years of coding to create a platform where coders and Data Scientists can build and launch products.";
static join_club = "Join the club"
static join_club_t = "Strengthening the human-synthetic fabric";
static join_club_subt = "We are very careful that in this pursuit of improved productivity and way of life, we must not transform humans into machines, rather make machines more human-like by teaching them humanity.";
static inspired ="Get inspired and learn more";
static see_more ="See More"
static cog = "Cognitive";
static revol = "Revolution 2.0";
static cog_sub1 = `Some spark 70,000 years ago initiated the transition of African apes into global human networks. What created this spark? Tools and communication models like fire, hammerstone, speech and imagination.`;
static cog_sub2 = ` Today at ANTL, we are working on the next version update of fire, hammerstone, speech and imagination. We are researching into and building complex language models and advanced non-linear technologies that can catapult human networks into the future.`;
static idea_t = "Our idea is to make AI less artificial and more authentic.";
static idea_subt = "Authentic Intelligence can mimic human intelligence in its creativity and nuances - imagine an ordered chaos with all its imperfections and beauty. Only this could truly empathise with and help humanity progress to the next level. Towards this end, as a research-driven organisation, we are studying and building non-linear systems in the areas of:";
static f_p = "Featured publications";
static cognify = "Cognify";
static visit_cognify = "Visit Cognify";
static team_culture = "Our philosophy";
static team_culture_sub1 = `Throughout the evolution of human beings, we have invented countless tools and traditions that we believed would take us to the next level. They did, and wreaked havoc too.`;
static team_culture_sub2 = `Deforestation, extinction of plant and animal species, climate change, wars and the risk of a nuclear Armageddon - these are what stand out as the results of human power.`;
static team_culture_sub3 = "That is why we are committed to researching and building AI technologies that do not leave any negative footprint - either on our species or on our ecosystem."
static team_culture_sub4 = "Safety and ethical policies, best practices and carefully drafted guidelines govern every work of every team member at ANTL."
static story_t ="The story : Cognitive revolution 2.0";
static story_sub = "ANTL was formed - of course without the name and ambitious vision it has now - in an unpretentious laboratory in central Europe where there was a heated research happening in Neural Networks, Chaos Theory and Non-linear Systems. The original idea, the seed, was simple enough: Leverage the untapped creative power of non-linear systems.";
static learn_t = "We are learnivores.";
static learn_subt = "We hunt knowledge. We are hungry for what's out of reach. We are constantly asking ourselves what could push humanity forward.";
static join_us = "Join us";
static our_religion = "Our religion";
static our_religion_sub = "As a team coming from diverse backgrounds and cultures to work towards one goal, the tenets of our religion are common and clear.";
static story_text1 = ` Non-linear systems, and the chaos they are capable of creating, are
difficult to predict or study, but can be extremely rewarding if we
have the patience to deal with them. Much of the "useful" technology
we employ today are linear, which limits our potential. Imagine using
only a screwdriver to assemble a car we want to take us far.`;
static story_text2 = `At ANTL - Advanced Non-linear Technologies - we are a small and
focused team of engineers and mathematicians developing non-linear
models that are truly adequate to solve the complex real-world
challenges and take humanity forward leaps and bounds.`;
static story_text3 = `Because it is these small steps and local changes that can create
global impact, very much like the nature of non-linear systems we are
building. Imagine ants for that matter. They don't hold a town-hall
meeting before proceeding to the day's work. Each ant communicates
with only one other ant at a time, yet together they may move
mountains. Local change Global impact.`;
static story_text4 = `This kaleidoscopic behaviour that characterises both non-linear
systems and intelligent ants is an inspiration for all of us at ANTL;
maybe that is why we are also called Antelligent?`;
static welcome_to = `Welcome to ${Texts.app_name.toLowerCase()}`;
static lets_start = "Lets get started";
static setup_account =
"Lets set up your account. Itll take about a minute.";
static google_login = "Login with Google";
static github_login = "Login with GitHub";
static google_signup = "Sign up with Google";
static github_signup = "Sign up with GitHub";
static email = "Email";
static password = "Password";
static enter_email = "Enter your email id";
static set_password = "Set your password";
static set_new_password = "Set new password";
static login = "Login";
static remember_me = "Remember me";
static forgot_password = "Forgot password";
static reset_password = "Reset password";
static password_reset = "Password Reset";
static diff_password =
"Your new password must be different to previously used passwords.";
static password_success =
"Your password has been successfully reset. Click below to log in Fastcode.";
static continue = "Continue";
static signin = "Sign In";
static signup = "Sign Up";
static have_account = "Already have an account?";
static dont_have_account = "Don't have an account?";
static create_my_account = "Create my account";
static create_new_account = "Create new account";
static full_name = "Full Name";
static enter_name = "Enter your full name";
static verify_email = "Verify your email";
static check_email = "Check your email";
static otp_sent = "Weve sent an OTP email to";
static enter_otp = "Enter OTP";
static send_otp = "Send OTP";
static not_received_otp = "Didnt received it?";
static resend_otp = " Resend OTP";
static verify_otp = " Verify OTP";
static otp_sent_success = "Otp sent successfully!";
static otp_verify_success = "Otp verify successfully!";
static resend_email = " Resend Email";
static email_sent = "Weve sent a verification email to";
static inst_sent = "No worries, well send you reset instructions";
static email_click = "Click the link in your email to verify your account.";
// email
static email_magic_text = `Your magic link for ${Texts.app_name}`;
static login_to_app = `Login to ${Texts.app_name}`;
static email_link_text =
"This link and code will only be valid for a short time. If the button does not work, you can use the link below directly:";
static sign_in_to_app = `Sign in to ${Texts.app_name}`;
static error = "An error occurred, Please try again!";
static lorem =
"Lorem Ipsum is simply dummy text of the printing and typesetting industry.";
}

19
src/utils/urls.ts Normal file
View File

@ -0,0 +1,19 @@
import { Texts } from "./texts";
export class Urls {
static emailFrom = `${Texts.app_name}.com`;
static fastcode = "/";
static instagramUrl = "https://instagram.com";
static linkedinUrl = "https://linkedin.com";
static facebookUrl = "https://facebook.com";
static twitterUrl = "https://twitter.com";
// api urls
static baseUrl = "http://localhost:1337/api/auth/";
static register = "local/register";
static login = "local";
static forgotPassword = "forgot-password";
static sendEmailConfirmation = "send-email-confirmation";
static emailConfirmation = "email-confirmation";
}

35
tailwind.config.js Normal file
View File

@ -0,0 +1,35 @@
/** @type {import('tailwindcss').Config} */
const colors = require("tailwindcss/colors");
module.exports = {
content: [
'./src/pages/**/*.{js,ts,jsx,tsx,mdx}',
'./src/components/**/*.{js,ts,jsx,tsx,mdx}',
'./src/app/**/*.{js,ts,jsx,tsx,mdx}',
'./node_modules/flowbite/**/*.js',
],
theme: {
extend: {
backgroundColor: colors.grey,
backgroundImage: {
'cognitive': "url('/images/cognitive.svg')",
// 'gradient-radial': 'radial-gradient(var(--tw-gradient-stops))',
// 'gradient-conic':
// 'conic-gradient(from 180deg at 50% 50%, var(--tw-gradient-stops))',
},
lineHeight: {
'11': '3rem',
'12': '4rem',
},
borderRadius: {
'4xl': '4rem',
'5xl': '5rem',
}
},
},
plugins: [
require('flowbite/plugin')
],
}

23
tsconfig.json Normal file
View File

@ -0,0 +1,23 @@
{
"compilerOptions": {
"target": "es5",
"lib": ["dom", "dom.iterable", "esnext"],
"allowJs": true,
"skipLibCheck": true,
"strict": true,
"forceConsistentCasingInFileNames": true,
"noEmit": true,
"esModuleInterop": true,
"module": "esnext",
"moduleResolution": "node",
"resolveJsonModule": true,
"isolatedModules": true,
"jsx": "preserve",
"incremental": true,
"paths": {
"@/*": ["./src/*"]
}
},
"include": ["next-env.d.ts", "**/*.ts", "**/*.tsx"],
"exclude": ["node_modules"]
}