diff --git a/next.config.mjs b/next.config.mjs index 3ef4061..1b16b88 100644 --- a/next.config.mjs +++ b/next.config.mjs @@ -3,8 +3,8 @@ const nextConfig = { async redirects() { return [ { - source: '/hey', - destination: '/', + source: '/monitoring', + destination: 'https://Pradumnasaraf.github.io/Monitoring', permanent: true, // Permanent redirect (301) }, ]; diff --git a/src/app/camera/components/FullScreenModal.js b/src/app/camera/components/FullScreenModal.js deleted file mode 100644 index 0f49540..0000000 --- a/src/app/camera/components/FullScreenModal.js +++ /dev/null @@ -1,28 +0,0 @@ -import React from 'react'; -import { createPortal } from 'react-dom'; -import '../style.css'; - -const FullScreenModal = ({ isOpen, imageSrc, onClose }) => { - if (!isOpen) return null; - - return createPortal( -
- {/* The close button positioned at the top-right corner of the viewport */} - - Full Screen -
, - document.body - ); -}; - -export default FullScreenModal; \ No newline at end of file diff --git a/src/app/camera/components/MasonryGrid.js b/src/app/camera/components/MasonryGrid.js deleted file mode 100644 index 7bd37f9..0000000 --- a/src/app/camera/components/MasonryGrid.js +++ /dev/null @@ -1,70 +0,0 @@ -'use client'; -import React, { useState } from 'react'; -import FullScreenModal from './FullScreenModal'; -import Masonry from 'react-masonry-css'; -import '../style.css'; - -const MasonryGrid = ({ images }) => { - const [isModalOpen, setIsModalOpen] = useState(false); - const [modalImageSrc, setModalImageSrc] = useState(''); - - const openModal = (src) => { - setModalImageSrc(src); - setIsModalOpen(true); - }; - - const closeModal = () => { - setIsModalOpen(false); - setModalImageSrc(''); - }; - - const breakpointColumnsObj = { - default: 3, - 1100: 3, - 700: 2, - 500: 1 - }; - - return ( - <> - - {images.map((image, index) => ( - openModal(image.src)} - /> - ))} - - - - - ); -}; - -// Component to handle individual image rendering with error handling -const ImageItem = ({ src, alt, onClick }) => { - const [hasError, setHasError] = useState(false); - - return !hasError ? ( - {alt} setHasError(true)} - loading="lazy" - /> - ) : null; -}; - -export default MasonryGrid; \ No newline at end of file diff --git a/src/app/camera/page.js b/src/app/camera/page.js index 316b8b9..cc43411 100644 --- a/src/app/camera/page.js +++ b/src/app/camera/page.js @@ -1,7 +1,8 @@ 'use client'; -import MasonryGrid from './components/MasonryGrid'; -import { useEffect } from 'react'; - +import React, { useState, useEffect } from 'react'; +import Masonry from 'react-masonry-css'; +import { createPortal } from 'react-dom'; +import './style.css'; const images = [ { src: 'https://drive.google.com/thumbnail?id=1uu0wWGmbHC0VY7BT-n5DUpWz86_ozANg&sz=w2000', alt: 'photo' }, { src: 'https://drive.google.com/thumbnail?id=1G8IYlbeJUKvghC8FIlEmtyVo6fg_YxqZ&sz=w2000', alt: 'photo' }, @@ -38,52 +39,132 @@ const images = [ { src: 'https://drive.google.com/thumbnail?id=1ISysXMTEBkqwt3-wCN0jFRNATZTWKi26&sz=w2000', alt: 'photo' }, { src: 'https://drive.google.com/thumbnail?id=1bifEZJm_rIx_Xs4pORmfXCCIVFuMH_DY&sz=w2000', alt: 'photo' }, { src: 'https://drive.google.com/thumbnail?id=11VG8uzX2vUMSRtEnHsDxDMT3fcletqsY&sz=w2000', alt: 'photo' }, - { src: 'https://drive.google.com/thumbnail?id=1JANNc-kNawn7jUGRs4MUZc9ib0wQ8JBP&sz=w2000', alt: 'photo' }, { src: 'https://drive.google.com/thumbnail?id=1YbOEXGJfIOXvRW6akB1HVmaIOOF2Jk1h&sz=w2000', alt: 'photo' }, - { src: 'https://drive.google.com/thumbnail?id=1b3CqP5Hn0xI2m6d2jH9_uWrfn3z8rkI0&sz=w2000', alt: 'photo' }, + { src: 'https://drive.google.com/thumbnail?id=1JANNc-kNawn7jUGRs4MUZc9ib0wQ8JBP&sz=w2000', alt: 'photo' }, { src: 'https://drive.google.com/thumbnail?id=1ko_WLnJ2SNNEO13WkKmRhpvobDQ6Q_Ko&sz=w2000', alt: 'photo' }, + { src: 'https://drive.google.com/thumbnail?id=1b3CqP5Hn0xI2m6d2jH9_uWrfn3z8rkI0&sz=w2000', alt: 'photo' }, { src: 'https://drive.google.com/thumbnail?id=1ruE0RqOwTPK0AR17ap4hwfGDgWboP52p&sz=w2000', alt: 'photo' }, { src: 'https://drive.google.com/thumbnail?id=1O83nNCKCUZ4McHO1nlZXvo1OKqzLldyw&sz=w2000', alt: 'photo' }, { src: 'https://drive.google.com/thumbnail?id=1MxtU3yWE8BkSi-1gessGGaTKGKzO8SO6&sz=w2000', alt: 'photo' }, - { src: 'https://drive.google.com/thumbnail?id=1FEQMnHybHi1TDvCHweOsB7ODeC06VjIs&sz=w2000', alt: 'photo' }, { src: 'https://drive.google.com/thumbnail?id=1nTQlYnaHPsy-kCrlV1bJocKgwlvqmyQc&sz=w2000', alt: 'photo' }, { src: 'https://drive.google.com/thumbnail?id=1K_Iteo-Rqrxi0ayMMAjOgsBSocg81Wmx&sz=w2000', alt: 'photo' }, - { src: 'https://drive.google.com/thumbnail?id=16ujZfroa5zjL09-UJWPyeRK0NUu1VkBi&sz=w2000', alt: 'photo' }, + { src: 'https://drive.google.com/thumbnail?id=1FEQMnHybHi1TDvCHweOsB7ODeC06VjIs&sz=w2000', alt: 'photo' }, { src: 'https://drive.google.com/thumbnail?id=1P60hz5FIkEhoyxEJOtHCVprzm8sP4tt-&sz=w2000', alt: 'photo' }, - { src: 'https://drive.google.com/thumbnail?id=1-umcEA-0sefXkCVXtpEFxvVAWqtnw2y1&sz=w2000', alt: 'photo' }, - { src: 'https://drive.google.com/thumbnail?id=1sVamXny-K2Tfb_m_PGxQEdTiV99_r8q8&sz=w2000', alt: 'photo' }, { src: 'https://drive.google.com/thumbnail?id=1dD4-Qrc2Hk4dCFQKcBB4GRbsvrcJOt0Q&sz=w2000', alt: 'photo' }, + { src: 'https://drive.google.com/thumbnail?id=1sVamXny-K2Tfb_m_PGxQEdTiV99_r8q8&sz=w2000', alt: 'photo' }, + { src: 'https://drive.google.com/thumbnail?id=16ujZfroa5zjL09-UJWPyeRK0NUu1VkBi&sz=w2000', alt: 'photo' }, + { src: 'https://drive.google.com/thumbnail?id=1-umcEA-0sefXkCVXtpEFxvVAWqtnw2y1&sz=w2000', alt: 'photo' }, ] +// FullScreenModal Component +const FullScreenModal = ({ isOpen, imageSrc, onClose }) => { + if (!isOpen) return null; + + return createPortal( +
+ + Full Screen +
, + document.body + ); +}; + +// Main Home Component export default function Home() { + const [isModalOpen, setIsModalOpen] = useState(false); + const [modalImageSrc, setModalImageSrc] = useState(''); + + const openModal = (src) => { + setModalImageSrc(src); + setIsModalOpen(true); + }; + + const closeModal = () => { + setIsModalOpen(false); + setModalImageSrc(''); + }; + + const breakpointColumnsObj = { + default: 3, + 1100: 3, + 700: 2, + 500: 1 + }; + useEffect(() => { - // Google Tag Manager Script - const scriptGTM = document.createElement('script'); - scriptGTM.innerHTML = ` - (function (w, d, s, l, i) { - w[l] = w[l] || []; - w[l].push({ - 'gtm.start': new Date().getTime(), - event: 'gtm.js', - }); - var f = d.getElementsByTagName(s)[0], - j = d.createElement(s), - dl = l != 'dataLayer' ? '&l=' + l : ''; - j.async = true; - j.src = 'https://www.googletagmanager.com/gtm.js?id=' + i + dl; - f.parentNode.insertBefore(j, f); - })(window, document, 'script', 'dataLayer', 'GTM-WRGLMZCX'); - `; - document.head.appendChild(scriptGTM); - return () => { - document.head.removeChild(scriptGTM); - }; - }, []); + // Google Tag Manager Script + const scriptGTM = document.createElement('script'); + scriptGTM.innerHTML = ` + (function (w, d, s, l, i) { + w[l] = w[l] || []; + w[l].push({ + 'gtm.start': new Date().getTime(), + event: 'gtm.js', + }); + var f = d.getElementsByTagName(s)[0], + j = d.createElement(s), + dl = l != 'dataLayer' ? '&l=' + l : ''; + j.async = true; + j.src = 'https://www.googletagmanager.com/gtm.js?id=' + i + dl; + f.parentNode.insertBefore(j, f); + })(window, document, 'script', 'dataLayer', 'GTM-WRGLMZCX'); + `; + document.head.appendChild(scriptGTM); + return () => { + document.head.removeChild(scriptGTM); + }; + }, []); + return (
- + + {images.map((image, index) => ( + openModal(image.src)} + /> + ))} + + +
); -} \ No newline at end of file +} + +// ImageItem Component +const ImageItem = ({ src, alt, onClick }) => { + const [hasError, setHasError] = useState(false); + + return !hasError ? ( + {alt} setHasError(true)} + loading="lazy" + /> + ) : null; +}; \ No newline at end of file diff --git a/src/app/services/page.js b/src/app/services/page.js index 909b0d2..64f0158 100644 --- a/src/app/services/page.js +++ b/src/app/services/page.js @@ -2,7 +2,8 @@ import './style.css' import Head from 'next/head'; import { useEffect } from 'react'; -import { FaTwitter, FaLinkedin, FaDev, FaGithub, FaEnvelope, FaSuitcase, FaFeather, FaMicrophone, FaTerminal, FaVideo, FaStackExchange } from 'react-icons/fa'; +import { FaTwitter, FaLinkedin, FaDev, FaGithub, FaEnvelope, FaSuitcase, FaFeather, FaMicrophone, FaTools, FaVideo, FaStackExchange } from 'react-icons/fa'; +import { BsPeopleFill } from "react-icons/bs"; import { TbArticle } from "react-icons/tb"; import Image from 'next/image'; @@ -169,14 +170,14 @@ const ServicesPage = () => {

- +

Build Products

Building products, tools, apps, etc for companies according to their needs.

- +

Community

Building community around products and companies to scale up the product feedback