diff --git a/package-lock.json b/package-lock.json index 43b70a3..e88c90b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -20,6 +20,8 @@ "class-variance-authority": "^0.7.0", "clsx": "^2.1.0", "cmdk": "^1.0.0", + "embla-carousel-autoplay": "^8.0.0", + "embla-carousel-react": "^8.0.0", "localforage": "^1.10.0", "lucide-react": "^0.350.0", "next": "^14.1.3", @@ -4934,6 +4936,39 @@ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.695.tgz", "integrity": "sha512-eMijZmeqPtm774pCZIOrfUHMs/7ls++W1sLhxwqgu8KQ8E2WmMtzwyqOMt0XXUJ3HTIPfuwlfwF+I5cwnfItBA==" }, + "node_modules/embla-carousel": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/embla-carousel/-/embla-carousel-8.0.0.tgz", + "integrity": "sha512-ecixcyqS6oKD2nh5Nj5MObcgoSILWNI/GtBxkidn5ytFaCCmwVHo2SecksaQZHcARMMpIR2dWOlSIdA1LkZFUA==" + }, + "node_modules/embla-carousel-autoplay": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/embla-carousel-autoplay/-/embla-carousel-autoplay-8.0.0.tgz", + "integrity": "sha512-FWHhZULH5+ydg7fiabwQppCDoTMi8pbMC20lmVytoXn7hH2KAhXHc/8yCUb3yToqMduCN6xPKUONtgzBqz3RZg==", + "peerDependencies": { + "embla-carousel": "8.0.0" + } + }, + "node_modules/embla-carousel-react": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/embla-carousel-react/-/embla-carousel-react-8.0.0.tgz", + "integrity": "sha512-qT0dii8ZwoCtEIBE6ogjqU2+5IwnGfdt2teKjCzW88JRErflhlCpz8KjWnW8xoRZOP8g0clRtsMEFoAgS/elfA==", + "dependencies": { + "embla-carousel": "8.0.0", + "embla-carousel-reactive-utils": "8.0.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.1 || ^18.0.0" + } + }, + "node_modules/embla-carousel-reactive-utils": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/embla-carousel-reactive-utils/-/embla-carousel-reactive-utils-8.0.0.tgz", + "integrity": "sha512-JCw0CqCXI7tbHDRogBb9PoeMLyjEC1vpN0lDOzUjmlfVgtfF+ffLaOK8bVtXVUEbNs/3guGe3NSzA5J5aYzLzw==", + "peerDependencies": { + "embla-carousel": "8.0.0" + } + }, "node_modules/emoji-regex": { "version": "9.2.2", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", diff --git a/package.json b/package.json index 296fd03..d53c2ee 100644 --- a/package.json +++ b/package.json @@ -21,6 +21,8 @@ "class-variance-authority": "^0.7.0", "clsx": "^2.1.0", "cmdk": "^1.0.0", + "embla-carousel-autoplay": "^8.0.0", + "embla-carousel-react": "^8.0.0", "localforage": "^1.10.0", "lucide-react": "^0.350.0", "next": "^14.1.3", diff --git a/src/app/clubs/Cesa.js b/src/app/clubs/Cesa.js deleted file mode 100644 index bce8ec4..0000000 --- a/src/app/clubs/Cesa.js +++ /dev/null @@ -1,29 +0,0 @@ -import React from 'react' - -const Cesa = () => { - return ( -
- -
- - - - - - - - -
- - - - - - - - -
- ) -} - -export default Cesa; \ No newline at end of file diff --git a/src/app/clubs/page.js b/src/app/clubs/page.js index 7f0a96c..1e006f5 100644 --- a/src/app/clubs/page.js +++ b/src/app/clubs/page.js @@ -1,137 +1,11 @@ -// import { Club } from "lucide-react"; -import React from "react"; -import Cesalogo from "../images/cesalogo.png"; -import iiclogo from "../images/iiclogo.jpeg"; -import { FaInstagram } from "react-icons/fa6"; -import { FaFacebookF } from "react-icons/fa6"; -import { FaXTwitter } from "react-icons/fa6"; +'use client' -const Clubs = () => { - return ( -
-
-

- Student Clubs -

-

- DISCOVER DIFFERENT TEAMS that will infuse vitality into your college - experience -

-
- -
-
- -

- Computer Engineering Student Association (CESA) -

-
- - - - - -
-
- -
- -

- Computer Society of India(CSI) -

-
- - - -
-
- -
- -

- Computer Engineering Student Association (CESA) -

-
- - - -
-
- -
- -

- Computer Engineering Student Association (CESA) -

-
- - - -
-
+import Clubs from "@/modules/clubs"; -
- -

- Computer Engineering Student Association (CESA) -

-
- - - -
-
- -
- -

- Computer Engineering Student Association (CESA) -

-
- - - -
-
- -
- -

- Computer Engineering Student Association (CESA) -

-
- - - -
-
- -
- -

- Computer Engineering Student Association (CESA) -

-
- - - -
-
- -
- -

- Computer Engineering Student Association (CESA)sa -

-
- - - -
-
-
-
+const Page = () => { + return ( + ); }; -export default Clubs; +export default Page; diff --git a/src/app/events/page.js b/src/app/events/page.js index 94b139f..a48b6a5 100644 --- a/src/app/events/page.js +++ b/src/app/events/page.js @@ -1,7 +1,9 @@ +'use client' +import Events from "@/modules/events"; import React from "react"; -const Events = () => { - return
Events
; +const Page = () => { + return ; }; -export default Events; +export default Page; diff --git a/src/app/zephyr/page.js b/src/app/zephyr/page.js index 365cdea..371303f 100644 --- a/src/app/zephyr/page.js +++ b/src/app/zephyr/page.js @@ -1,7 +1,9 @@ +'use client' +import Zephyr from "@/modules/zephyr"; import React from "react"; -const Zephyr = () => { - return
Zephyr
; +const Page = () => { + return ; }; -export default Zephyr; +export default Page; diff --git a/src/assets/1.jpg b/src/assets/1.jpg new file mode 100644 index 0000000..4bf901c Binary files /dev/null and b/src/assets/1.jpg differ diff --git a/src/assets/2.jpg b/src/assets/2.jpg new file mode 100644 index 0000000..eb7b648 Binary files /dev/null and b/src/assets/2.jpg differ diff --git a/src/assets/3.jpg b/src/assets/3.jpg new file mode 100644 index 0000000..3a29623 Binary files /dev/null and b/src/assets/3.jpg differ diff --git a/src/components/carousel.js b/src/components/carousel.js new file mode 100644 index 0000000..561f655 --- /dev/null +++ b/src/components/carousel.js @@ -0,0 +1,32 @@ +import React, { useRef, useState } from "react" + +import { Card, CardContent } from "@/components/ui/card" +import { + Carousel, + CarouselContent, + CarouselItem, +} from "@/components/ui/carousel" +import Autoplay from 'embla-carousel-autoplay'; +import Image from "next/image"; + +export function CarouselDemo({ imgArray }) { + const plugin = useRef(Autoplay({ delay: 2000, stopOnInteraction: true })); + + return ( + + + {Array.from({ length: 3 }).map((_, index) => ( + +
+ + + + + +
+
+ ))} +
+
+ ) +} diff --git a/src/components/ui/card.jsx b/src/components/ui/card.jsx new file mode 100644 index 0000000..dd79b51 --- /dev/null +++ b/src/components/ui/card.jsx @@ -0,0 +1,50 @@ +import * as React from "react" + +import { cn } from "@/lib/utils" + +const Card = React.forwardRef(({ className, ...props }, ref) => ( +
+)) +Card.displayName = "Card" + +const CardHeader = React.forwardRef(({ className, ...props }, ref) => ( +
+)) +CardHeader.displayName = "CardHeader" + +const CardTitle = React.forwardRef(({ className, ...props }, ref) => ( +

+)) +CardTitle.displayName = "CardTitle" + +const CardDescription = React.forwardRef(({ className, ...props }, ref) => ( +

+)) +CardDescription.displayName = "CardDescription" + +const CardContent = React.forwardRef(({ className, ...props }, ref) => ( +

+)) +CardContent.displayName = "CardContent" + +const CardFooter = React.forwardRef(({ className, ...props }, ref) => ( +
+)) +CardFooter.displayName = "CardFooter" + +export { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent } diff --git a/src/components/ui/carousel.jsx b/src/components/ui/carousel.jsx new file mode 100644 index 0000000..a6bfc71 --- /dev/null +++ b/src/components/ui/carousel.jsx @@ -0,0 +1,194 @@ +"use client"; +import * as React from "react" +import useEmblaCarousel from "embla-carousel-react"; +import { ArrowLeft, ArrowRight } from "lucide-react" + +import { cn } from "@/lib/utils" +import { Button } from "@/components/ui/button" + +const CarouselContext = React.createContext(null) + +function useCarousel() { + const context = React.useContext(CarouselContext) + + if (!context) { + throw new Error("useCarousel must be used within a ") + } + + return context +} + +const Carousel = React.forwardRef(( + { + orientation = "horizontal", + opts, + setApi, + plugins, + className, + children, + ...props + }, + ref +) => { + const [carouselRef, api] = useEmblaCarousel({ + ...opts, + axis: orientation === "horizontal" ? "x" : "y", + }, plugins) + const [canScrollPrev, setCanScrollPrev] = React.useState(false) + const [canScrollNext, setCanScrollNext] = React.useState(false) + + const onSelect = React.useCallback((api) => { + if (!api) { + return + } + + setCanScrollPrev(api.canScrollPrev()) + setCanScrollNext(api.canScrollNext()) + }, []) + + const scrollPrev = React.useCallback(() => { + api?.scrollPrev() + }, [api]) + + const scrollNext = React.useCallback(() => { + api?.scrollNext() + }, [api]) + + const handleKeyDown = React.useCallback((event) => { + if (event.key === "ArrowLeft") { + event.preventDefault() + scrollPrev() + } else if (event.key === "ArrowRight") { + event.preventDefault() + scrollNext() + } + }, [scrollPrev, scrollNext]) + + React.useEffect(() => { + if (!api || !setApi) { + return + } + + setApi(api) + }, [api, setApi]) + + React.useEffect(() => { + if (!api) { + return + } + + onSelect(api) + api.on("reInit", onSelect) + api.on("select", onSelect) + + return () => { + api?.off("select", onSelect) + }; + }, [api, onSelect]) + + return ( + ( +
+ {children} +
+
) + ); +}) +Carousel.displayName = "Carousel" + +const CarouselContent = React.forwardRef(({ className, ...props }, ref) => { + const { carouselRef, orientation } = useCarousel() + + return ( + (
+
+
) + ); +}) +CarouselContent.displayName = "CarouselContent" + +const CarouselItem = React.forwardRef(({ className, ...props }, ref) => { + const { orientation } = useCarousel() + + return ( + (
) + ); +}) +CarouselItem.displayName = "CarouselItem" + +const CarouselPrevious = React.forwardRef(({ className, variant = "outline", size = "icon", ...props }, ref) => { + const { orientation, scrollPrev, canScrollPrev } = useCarousel() + + return ( + () + ); +}) +CarouselPrevious.displayName = "CarouselPrevious" + +const CarouselNext = React.forwardRef(({ className, variant = "outline", size = "icon", ...props }, ref) => { + const { orientation, scrollNext, canScrollNext } = useCarousel() + + return ( + () + ); +}) +CarouselNext.displayName = "CarouselNext" + +export { Carousel, CarouselContent, CarouselItem, CarouselPrevious, CarouselNext }; diff --git a/src/modules/clubs/index.js b/src/modules/clubs/index.js new file mode 100644 index 0000000..14b099c --- /dev/null +++ b/src/modules/clubs/index.js @@ -0,0 +1,21 @@ + +import { CarouselDemo } from '@/components/carousel' +import React from 'react' +import img1 from '@/assets/1.jpg' +import img2 from '@/assets/2.jpg' +import img3 from '@/assets/3.jpg' + + + +const Clubs = () => { + const imgArray = [img1, img2, img3] + return ( +
+
+
+ +
+ ) +} + +export default Clubs \ No newline at end of file diff --git a/src/modules/events/index.js b/src/modules/events/index.js new file mode 100644 index 0000000..b309e2b --- /dev/null +++ b/src/modules/events/index.js @@ -0,0 +1,21 @@ + +import { CarouselDemo } from '@/components/carousel' +import React from 'react' +import img1 from '@/assets/1.jpg' +import img2 from '@/assets/2.jpg' +import img3 from '@/assets/3.jpg' + + + +const Events = () => { + const imgArray = [img1, img2, img3] + return ( +
+
+
+ +
+ ) +} + +export default Events \ No newline at end of file diff --git a/src/modules/zephyr/index.js b/src/modules/zephyr/index.js new file mode 100644 index 0000000..f7b6071 --- /dev/null +++ b/src/modules/zephyr/index.js @@ -0,0 +1,21 @@ + +import { CarouselDemo } from '@/components/carousel' +import React from 'react' +import img1 from '@/assets/1.jpg' +import img2 from '@/assets/2.jpg' +import img3 from '@/assets/3.jpg' + + + +const Zephyr = () => { + const imgArray = [img1, img2, img3] + return ( +
+
+
+ +
+ ) +} + +export default Zephyr \ No newline at end of file