├── .eslintrc.json
├── public
├── Logo.png
├── demo.png
├── card1.png
├── card2.png
├── card3.png
├── card4.png
├── demo1.png
├── demo2.png
├── demo3.png
├── herobg.png
├── Arrow 12.png
├── favicon.png
├── shorcut.png
├── Herosection.png
└── bgdemo.svg
├── next.config.js
├── postcss.config.js
├── app
├── About
│ └── page.tsx
├── Collections
│ └── page.tsx
├── Shop
│ └── page.tsx
├── layout.tsx
├── page.tsx
└── globals.css
├── lib
└── utils.ts
├── components.json
├── .gitignore
├── tsconfig.json
├── package.json
├── components
├── ui
│ ├── popover.tsx
│ ├── button.tsx
│ └── dialog.tsx
├── Demo.tsx
├── HomeSection.tsx
├── Collections.tsx
└── Navbar.tsx
├── README.md
└── tailwind.config.js
/.eslintrc.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "next/core-web-vitals"
3 | }
4 |
--------------------------------------------------------------------------------
/public/Logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Iqtidartara/Main-Plume/HEAD/public/Logo.png
--------------------------------------------------------------------------------
/public/demo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Iqtidartara/Main-Plume/HEAD/public/demo.png
--------------------------------------------------------------------------------
/public/card1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Iqtidartara/Main-Plume/HEAD/public/card1.png
--------------------------------------------------------------------------------
/public/card2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Iqtidartara/Main-Plume/HEAD/public/card2.png
--------------------------------------------------------------------------------
/public/card3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Iqtidartara/Main-Plume/HEAD/public/card3.png
--------------------------------------------------------------------------------
/public/card4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Iqtidartara/Main-Plume/HEAD/public/card4.png
--------------------------------------------------------------------------------
/public/demo1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Iqtidartara/Main-Plume/HEAD/public/demo1.png
--------------------------------------------------------------------------------
/public/demo2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Iqtidartara/Main-Plume/HEAD/public/demo2.png
--------------------------------------------------------------------------------
/public/demo3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Iqtidartara/Main-Plume/HEAD/public/demo3.png
--------------------------------------------------------------------------------
/public/herobg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Iqtidartara/Main-Plume/HEAD/public/herobg.png
--------------------------------------------------------------------------------
/public/Arrow 12.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Iqtidartara/Main-Plume/HEAD/public/Arrow 12.png
--------------------------------------------------------------------------------
/public/favicon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Iqtidartara/Main-Plume/HEAD/public/favicon.png
--------------------------------------------------------------------------------
/public/shorcut.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Iqtidartara/Main-Plume/HEAD/public/shorcut.png
--------------------------------------------------------------------------------
/public/Herosection.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Iqtidartara/Main-Plume/HEAD/public/Herosection.png
--------------------------------------------------------------------------------
/next.config.js:
--------------------------------------------------------------------------------
1 | /** @type {import('next').NextConfig} */
2 | const nextConfig = {}
3 |
4 | module.exports = nextConfig
5 |
--------------------------------------------------------------------------------
/postcss.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | plugins: {
3 | tailwindcss: {},
4 | autoprefixer: {},
5 | },
6 | }
7 |
--------------------------------------------------------------------------------
/app/About/page.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 |
3 | const page = () => {
4 | return (
5 |
About Section
6 | )
7 | }
8 |
9 | export default page
--------------------------------------------------------------------------------
/app/Collections/page.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 |
3 | const page = () => {
4 | return (
5 | collection section is here
6 | )
7 | }
8 |
9 | export default page
--------------------------------------------------------------------------------
/app/Shop/page.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 |
3 | const page = () => {
4 | return (
5 | page of shop section routing
6 | )
7 | }
8 |
9 | export default page
--------------------------------------------------------------------------------
/lib/utils.ts:
--------------------------------------------------------------------------------
1 | import { type ClassValue, clsx } from "clsx"
2 | import { twMerge } from "tailwind-merge"
3 |
4 | export function cn(...inputs: ClassValue[]) {
5 | return twMerge(clsx(inputs))
6 | }
7 |
--------------------------------------------------------------------------------
/components.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://ui.shadcn.com/schema.json",
3 | "style": "default",
4 | "rsc": true,
5 | "tsx": true,
6 | "tailwind": {
7 | "config": "tailwind.config.js",
8 | "css": "app/globals.css",
9 | "baseColor": "slate",
10 | "cssVariables": true
11 | },
12 | "aliases": {
13 | "components": "@/components",
14 | "utils": "@/lib/utils"
15 | }
16 | }
--------------------------------------------------------------------------------
/public/bgdemo.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
2 |
3 | # dependencies
4 | /node_modules
5 | /.pnp
6 | .pnp.js
7 | .yarn/install-state.gz
8 |
9 | # testing
10 | /coverage
11 |
12 | # next.js
13 | /.next/
14 | /out/
15 |
16 | # production
17 | /build
18 |
19 | # misc
20 | .DS_Store
21 | *.pem
22 |
23 | # debug
24 | npm-debug.log*
25 | yarn-debug.log*
26 | yarn-error.log*
27 |
28 | # local env files
29 | .env*.local
30 |
31 | # vercel
32 | .vercel
33 |
34 | # typescript
35 | *.tsbuildinfo
36 | next-env.d.ts
37 |
--------------------------------------------------------------------------------
/app/layout.tsx:
--------------------------------------------------------------------------------
1 | import type { Metadata } from 'next'
2 | import { Manrope } from 'next/font/google'
3 | import './globals.css'
4 |
5 |
6 | const manrope = Manrope({ subsets: ['latin'] })
7 |
8 | export const metadata: Metadata = {
9 | icons:"/favicon.png",
10 | title: 'MainPlume',
11 | description: 'Generated by create next app',
12 | }
13 |
14 | export default function RootLayout({
15 | children,
16 | }: {
17 | children: React.ReactNode
18 | }) {
19 | return (
20 |
21 |
22 | {children}
23 |
24 | )
25 | }
26 |
--------------------------------------------------------------------------------
/app/page.tsx:
--------------------------------------------------------------------------------
1 | import Collections from "@/components/Collections";
2 | import Demo from "@/components/Demo";
3 | import HomeSection from "@/components/HomeSection";
4 | import Navbar from "@/components/Navbar";
5 |
6 |
7 | export default function Home() {
8 | return (
9 |
10 |
18 |
19 |
20 |
21 |
22 |
23 |
24 | )
25 | }
26 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "es5",
4 | "lib": ["dom", "dom.iterable", "esnext"],
5 | "allowJs": true,
6 | "skipLibCheck": true,
7 | "strict": true,
8 | "noEmit": true,
9 | "esModuleInterop": true,
10 | "module": "esnext",
11 | "moduleResolution": "bundler",
12 | "resolveJsonModule": true,
13 | "isolatedModules": true,
14 | "jsx": "preserve",
15 | "incremental": true,
16 | "plugins": [
17 | {
18 | "name": "next"
19 | }
20 | ],
21 | "paths": {
22 | "@/*": ["./*"]
23 | }
24 | },
25 | "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"],
26 | "exclude": ["node_modules"]
27 | }
28 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "sd",
3 | "version": "0.1.0",
4 | "private": true,
5 | "scripts": {
6 | "dev": "next dev",
7 | "build": "next build",
8 | "start": "next start",
9 | "lint": "next lint"
10 | },
11 | "dependencies": {
12 | "@headlessui/react": "^1.7.17",
13 | "@radix-ui/react-dialog": "^1.0.5",
14 | "@radix-ui/react-popover": "^1.0.7",
15 | "@radix-ui/react-slot": "^1.0.2",
16 | "class-variance-authority": "^0.7.0",
17 | "clsx": "^2.0.0",
18 | "lucide-react": "^0.299.0",
19 | "next": "14.0.4",
20 | "react": "^18",
21 | "react-dom": "^18",
22 | "tailwind-merge": "^2.1.0",
23 | "tailwindcss-animate": "^1.0.7"
24 | },
25 | "devDependencies": {
26 | "@types/node": "^20",
27 | "@types/react": "^18",
28 | "@types/react-dom": "^18",
29 | "autoprefixer": "^10.0.1",
30 | "eslint": "^8",
31 | "eslint-config-next": "14.0.4",
32 | "postcss": "^8",
33 | "tailwindcss": "^3.3.0",
34 | "typescript": "^5"
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/components/ui/popover.tsx:
--------------------------------------------------------------------------------
1 | "use client"
2 |
3 | import * as React from "react"
4 | import * as PopoverPrimitive from "@radix-ui/react-popover"
5 |
6 | import { cn } from "@/lib/utils"
7 |
8 | const Popover = PopoverPrimitive.Root
9 |
10 | const PopoverTrigger = PopoverPrimitive.Trigger
11 |
12 | const PopoverContent = React.forwardRef<
13 | React.ElementRef,
14 | React.ComponentPropsWithoutRef
15 | >(({ className, align = "center", sideOffset = 4, ...props }, ref) => (
16 |
17 |
27 |
28 | ))
29 | PopoverContent.displayName = PopoverPrimitive.Content.displayName
30 |
31 | export { Popover, PopoverTrigger, PopoverContent }
32 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | 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).
2 |
3 | ## Getting Started
4 |
5 | First, run the development server:
6 |
7 | ```bash
8 | npm run dev
9 | # or
10 | yarn dev
11 | # or
12 | pnpm dev
13 | # or
14 | bun dev
15 | ```
16 |
17 | Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.
18 |
19 | You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file.
20 |
21 | This project uses [`next/font`](https://nextjs.org/docs/basic-features/font-optimization) to automatically optimize and load Inter, a custom Google Font.
22 |
23 | ## Learn More
24 |
25 | To learn more about Next.js, take a look at the following resources:
26 |
27 | - [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API.
28 | - [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial.
29 |
30 | You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js/) - your feedback and contributions are welcome!
31 |
32 | ## Deploy on Vercel
33 |
34 | 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.
35 |
36 | Check out our [Next.js deployment documentation](https://nextjs.org/docs/deployment) for more details.
37 |
--------------------------------------------------------------------------------
/app/globals.css:
--------------------------------------------------------------------------------
1 | @tailwind base;
2 | @tailwind components;
3 | @tailwind utilities;
4 |
5 | @layer base {
6 | :root {
7 | --background: 0 0% 100%;
8 | --foreground: 222.2 84% 4.9%;
9 |
10 | --card: 0 0% 100%;
11 | --card-foreground: 222.2 84% 4.9%;
12 |
13 | --popover: 0 0% 100%;
14 | --popover-foreground: 222.2 84% 4.9%;
15 |
16 | --primary: 222.2 47.4% 11.2%;
17 | --primary-foreground: 210 40% 98%;
18 |
19 | --secondary: 210 40% 96.1%;
20 | --secondary-foreground: 222.2 47.4% 11.2%;
21 |
22 | --muted: 210 40% 96.1%;
23 | --muted-foreground: 215.4 16.3% 46.9%;
24 |
25 | --accent: 210 40% 96.1%;
26 | --accent-foreground: 222.2 47.4% 11.2%;
27 |
28 | --destructive: 0 84.2% 60.2%;
29 | --destructive-foreground: 210 40% 98%;
30 |
31 | --border: 214.3 31.8% 91.4%;
32 | --input: 214.3 31.8% 91.4%;
33 | --ring: 222.2 84% 4.9%;
34 |
35 | --radius: 0.5rem;
36 | }
37 |
38 | .dark {
39 | --background: 222.2 84% 4.9%;
40 | --foreground: 210 40% 98%;
41 |
42 | --card: 222.2 84% 4.9%;
43 | --card-foreground: 210 40% 98%;
44 |
45 | --popover: 222.2 84% 4.9%;
46 | --popover-foreground: 210 40% 98%;
47 |
48 | --primary: 210 40% 98%;
49 | --primary-foreground: 222.2 47.4% 11.2%;
50 |
51 | --secondary: 217.2 32.6% 17.5%;
52 | --secondary-foreground: 210 40% 98%;
53 |
54 | --muted: 217.2 32.6% 17.5%;
55 | --muted-foreground: 215 20.2% 65.1%;
56 |
57 | --accent: 217.2 32.6% 17.5%;
58 | --accent-foreground: 210 40% 98%;
59 |
60 | --destructive: 0 62.8% 30.6%;
61 | --destructive-foreground: 210 40% 98%;
62 |
63 | --border: 217.2 32.6% 17.5%;
64 | --input: 217.2 32.6% 17.5%;
65 | --ring: 212.7 26.8% 83.9%;
66 | }
67 | }
68 |
69 | @layer base {
70 | * {
71 | @apply border-border;
72 | }
73 | body {
74 | @apply bg-background text-foreground;
75 | }
76 | }
--------------------------------------------------------------------------------
/components/Demo.tsx:
--------------------------------------------------------------------------------
1 | import Image from "next/image";
2 | import React from "react";
3 | import { Button } from "./ui/button";
4 | import { url } from "inspector";
5 |
6 | const Demo = () => {
7 | return (
8 |
9 |
21 | {/* main div where I give flex property */}
22 |
23 |
24 | {/* first image */}
25 |
26 |
27 |
28 |
29 | {/* buttons and image */}
30 |
31 |
32 |
33 |
34 | Shop Now
35 |
42 |
43 | explore more COLLECTION
44 |
45 |
46 |
47 |
48 | {/* last image */}
49 |
50 |
51 |
52 |
53 |
54 |
55 | );
56 | };
57 |
58 | export default Demo;
59 |
60 |
--------------------------------------------------------------------------------
/components/ui/button.tsx:
--------------------------------------------------------------------------------
1 | import * as React from "react"
2 | import { Slot } from "@radix-ui/react-slot"
3 | import { cva, type VariantProps } from "class-variance-authority"
4 |
5 | import { cn } from "@/lib/utils"
6 |
7 | const buttonVariants = cva(
8 | "inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",
9 | {
10 | variants: {
11 | variant: {
12 | default: "bg-primary text-primary-foreground hover:bg-primary/90",
13 | destructive:
14 | "bg-destructive text-destructive-foreground hover:bg-destructive/90",
15 | outline:
16 | "border border-input bg-background hover:bg-accent hover:text-accent-foreground",
17 | secondary:
18 | "bg-secondary text-secondary-foreground hover:bg-secondary/80",
19 | ghost: "hover:bg-accent hover:text-accent-foreground",
20 | link: "text-primary underline-offset-4 hover:underline",
21 | },
22 | size: {
23 | default: "h-10 px-4 py-2",
24 | sm: "h-9 rounded-md px-3",
25 | lg: "h-11 rounded-md px-8",
26 | icon: "h-10 w-10",
27 | },
28 | },
29 | defaultVariants: {
30 | variant: "default",
31 | size: "default",
32 | },
33 | }
34 | )
35 |
36 | export interface ButtonProps
37 | extends React.ButtonHTMLAttributes,
38 | VariantProps {
39 | asChild?: boolean
40 | }
41 |
42 | const Button = React.forwardRef(
43 | ({ className, variant, size, asChild = false, ...props }, ref) => {
44 | const Comp = asChild ? Slot : "button"
45 | return (
46 |
51 | )
52 | }
53 | )
54 | Button.displayName = "Button"
55 |
56 | export { Button, buttonVariants }
57 |
--------------------------------------------------------------------------------
/components/HomeSection.tsx:
--------------------------------------------------------------------------------
1 | import Image from "next/image";
2 | import React from "react";
3 | import { Button } from "./ui/button";
4 |
5 | const HomeSection = () => {
6 | return (
7 |
8 |
9 | {/* content div */}
10 |
11 |
12 | Dive into a world of endless fashion possibilities
13 |
14 |
15 | Dive into a realm of endless fashion possibilities. Explore our
16 | diverse collections and redefine your style. Your fashion journey
17 | begins here
18 |
19 |
20 |
21 |
22 |
23 | Explore Now
24 |
25 |
26 | Explore Now
27 |
28 |
29 |
30 | 20% discount over 47$ use code 7djk#8hH7
31 |
32 |
33 | {/* image div */}
34 |
35 |
42 |
43 |
44 |
45 |
46 | );
47 | };
48 |
49 | export default HomeSection;
50 |
--------------------------------------------------------------------------------
/tailwind.config.js:
--------------------------------------------------------------------------------
1 | /** @type {import('tailwindcss').Config} */
2 | module.exports = {
3 | darkMode: ["class"],
4 | content: [
5 | './pages/**/*.{ts,tsx}',
6 | './components/**/*.{ts,tsx}',
7 | './app/**/*.{ts,tsx}',
8 | './src/**/*.{ts,tsx}',
9 | ],
10 | theme: {
11 | container: {
12 | center: true,
13 | padding: "2rem",
14 | screens: {
15 | "2xl": "1400px",
16 | },
17 | },
18 | extend: {
19 | colors: {
20 | border: "hsl(var(--border))",
21 | input: "hsl(var(--input))",
22 | ring: "hsl(var(--ring))",
23 | background: "hsl(var(--background))",
24 | foreground: "hsl(var(--foreground))",
25 | primary: {
26 | DEFAULT: "hsl(var(--primary))",
27 | foreground: "hsl(var(--primary-foreground))",
28 | },
29 | secondary: {
30 | DEFAULT: "hsl(var(--secondary))",
31 | foreground: "hsl(var(--secondary-foreground))",
32 | },
33 | destructive: {
34 | DEFAULT: "hsl(var(--destructive))",
35 | foreground: "hsl(var(--destructive-foreground))",
36 | },
37 | muted: {
38 | DEFAULT: "hsl(var(--muted))",
39 | foreground: "hsl(var(--muted-foreground))",
40 | },
41 | accent: {
42 | DEFAULT: "hsl(var(--accent))",
43 | foreground: "hsl(var(--accent-foreground))",
44 | },
45 | popover: {
46 | DEFAULT: "hsl(var(--popover))",
47 | foreground: "hsl(var(--popover-foreground))",
48 | },
49 | card: {
50 | DEFAULT: "hsl(var(--card))",
51 | foreground: "hsl(var(--card-foreground))",
52 | },
53 | },
54 | borderRadius: {
55 | lg: "var(--radius)",
56 | md: "calc(var(--radius) - 2px)",
57 | sm: "calc(var(--radius) - 4px)",
58 | },
59 | keyframes: {
60 | "accordion-down": {
61 | from: { height: 0 },
62 | to: { height: "var(--radix-accordion-content-height)" },
63 | },
64 | "accordion-up": {
65 | from: { height: "var(--radix-accordion-content-height)" },
66 | to: { height: 0 },
67 | },
68 | },
69 | animation: {
70 | "accordion-down": "accordion-down 0.2s ease-out",
71 | "accordion-up": "accordion-up 0.2s ease-out",
72 | },
73 | },
74 | },
75 | plugins: [require("tailwindcss-animate")],
76 | }
--------------------------------------------------------------------------------
/components/Collections.tsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import { Button } from "./ui/button";
3 | import Image from "next/image";
4 |
5 | const cardData = [
6 | {
7 | title: "Women",
8 | description:
9 | "Elevate Your Winter Style: Must-Have Fashion Essentials for Women. Stay Chic and Cozy with Our Latest Winter Collection",
10 | imageSrc: "/card1.png",
11 | buttonText: "Shop Now",
12 | },
13 | {
14 | title: "Children",
15 | description:
16 | "Our enchanting dresses offer comfort and charm, perfect for your child's special occasions",
17 | imageSrc: "/card2.png",
18 | buttonText: "Shop Now",
19 | },
20 | {
21 | title: "Men",
22 | description:
23 | "Revamp your look with our contemporary men's fashion, where comfort meets style. Elevate your confidence, one outfit at a time.",
24 | imageSrc: "/card3.png",
25 | buttonText: "Shop Now",
26 | },
27 | {
28 | title: "New Collection",
29 | description:
30 | "Elevate your style with our stunning new collection. From timeless classics to bold trends, we have something for everyone.",
31 | imageSrc: "/card4.png",
32 | buttonText: "Shop Now",
33 | },
34 | // Add more card data as needed
35 | ];
36 |
37 | const Collections: React.FC = () => {
38 | return (
39 |
40 |
41 |
42 |
43 | Our Winter collection
44 |
45 |
46 | Discover the Cozy Chic: Our Winter Collection 2023. Stay
47 | warm while looking fabulous this season!
48 |
49 |
50 | {/* Map over cardData to render each card */}
51 |
52 | {cardData.map((card, index) => (
53 |
57 | {/* Card content */}
58 |
59 |
60 | {card.title}
61 |
62 |
63 | {card.description}
64 |
65 |
66 | {card.buttonText}
67 |
68 |
69 |
70 | {/* Card image */}
71 |
72 |
79 |
80 |
81 | ))}
82 |
83 |
84 |
85 |
86 | );
87 | };
88 |
89 | export default Collections;
90 |
--------------------------------------------------------------------------------
/components/ui/dialog.tsx:
--------------------------------------------------------------------------------
1 | "use client"
2 |
3 | import * as React from "react"
4 | import * as DialogPrimitive from "@radix-ui/react-dialog"
5 | import { X } from "lucide-react"
6 |
7 | import { cn } from "@/lib/utils"
8 |
9 | const Dialog = DialogPrimitive.Root
10 |
11 | const DialogTrigger = DialogPrimitive.Trigger
12 |
13 | const DialogPortal = DialogPrimitive.Portal
14 |
15 | const DialogClose = DialogPrimitive.Close
16 |
17 | const DialogOverlay = React.forwardRef<
18 | React.ElementRef,
19 | React.ComponentPropsWithoutRef
20 | >(({ className, ...props }, ref) => (
21 |
29 | ))
30 | DialogOverlay.displayName = DialogPrimitive.Overlay.displayName
31 |
32 | const DialogContent = React.forwardRef<
33 | React.ElementRef,
34 | React.ComponentPropsWithoutRef
35 | >(({ className, children, ...props }, ref) => (
36 |
37 |
38 |
46 | {children}
47 |
48 |
49 | Close
50 |
51 |
52 |
53 | ))
54 | DialogContent.displayName = DialogPrimitive.Content.displayName
55 |
56 | const DialogHeader = ({
57 | className,
58 | ...props
59 | }: React.HTMLAttributes) => (
60 |
67 | )
68 | DialogHeader.displayName = "DialogHeader"
69 |
70 | const DialogFooter = ({
71 | className,
72 | ...props
73 | }: React.HTMLAttributes) => (
74 |
81 | )
82 | DialogFooter.displayName = "DialogFooter"
83 |
84 | const DialogTitle = React.forwardRef<
85 | React.ElementRef,
86 | React.ComponentPropsWithoutRef
87 | >(({ className, ...props }, ref) => (
88 |
96 | ))
97 | DialogTitle.displayName = DialogPrimitive.Title.displayName
98 |
99 | const DialogDescription = React.forwardRef<
100 | React.ElementRef,
101 | React.ComponentPropsWithoutRef
102 | >(({ className, ...props }, ref) => (
103 |
108 | ))
109 | DialogDescription.displayName = DialogPrimitive.Description.displayName
110 |
111 | export {
112 | Dialog,
113 | DialogPortal,
114 | DialogOverlay,
115 | DialogClose,
116 | DialogTrigger,
117 | DialogContent,
118 | DialogHeader,
119 | DialogFooter,
120 | DialogTitle,
121 | DialogDescription,
122 | }
123 |
--------------------------------------------------------------------------------
/components/Navbar.tsx:
--------------------------------------------------------------------------------
1 | "use client";
2 | import { cn } from "@/lib/utils";
3 | import { Popover } from "@headlessui/react";
4 | import { Menu, X } from "lucide-react";
5 | import Image from "next/image";
6 | import Link from "next/link";
7 | import { usePathname } from "next/navigation";
8 | import React, { useState } from "react";
9 |
10 |
11 |
12 | import { Button } from "@/components/ui/button";
13 |
14 |
15 |
16 | const Navbar = () => {
17 |
18 | const [menuOpen, setMenuOpen] = useState(false);
19 | const pathname = usePathname();
20 | const handleLinkClick = () => {
21 |
22 | setMenuOpen(false);
23 | };
24 |
25 | const links = [
26 | { href: "/", label: "HOME" },
27 | { href: "/About", label: "ABOUT US" },
28 | { href: "/Shop", label: "SHOP" },
29 | { href: "/Collections", label: "COLLECTIONS" },
30 | ];
31 |
32 |
33 | return (
34 |
35 |
36 |
43 |
44 |
45 | {links.map((link, index) => (
46 |
56 | {link.label}
57 |
58 | ))}
59 |
60 |
61 |
62 |
63 |
setMenuOpen(!menuOpen)}
66 | >
67 | Open menu
68 |
69 |
70 |
71 |
72 |
77 |
78 |
79 |
80 |
87 |
88 |
setMenuOpen(false)}
91 | >
92 | Close menu
93 |
94 |
95 |
96 |
97 |
98 |
99 | {links.map((link, index) => (
100 |
112 | {link.label}
113 |
114 | ))}
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 | Shop Now
125 |
126 |
127 |
128 |
129 | );
130 | };
131 |
132 | export default Navbar;
--------------------------------------------------------------------------------