+ );
}
-export default Paper
+export default Paper;
diff --git a/components/Form/select.js b/components/Form/select.js
index b390e7ba..531d1319 100644
--- a/components/Form/select.js
+++ b/components/Form/select.js
@@ -41,7 +41,7 @@ function Dropdown({ options, title, setValue, multi }) {
selectedOption.map((option) => {
newValue.push(option.value);
});
- setValue(newValue)
+ setValue(newValue);
} else {
setValue(selectedOption.value);
}
@@ -59,4 +59,4 @@ function Dropdown({ options, title, setValue, multi }) {
);
}
-export default Dropdown;
\ No newline at end of file
+export default Dropdown;
diff --git a/components/Form/subscription.js b/components/Form/subscription.js
index 11223969..fe0936ee 100644
--- a/components/Form/subscription.js
+++ b/components/Form/subscription.js
@@ -1,25 +1,26 @@
-import React from 'react';
-import Button from '../Buttons/button';
+import React from "react";
+import Button from "../Buttons/button";
function Subcription() {
- return (
-
+ );
}
export default Subcription;
diff --git a/components/Header/header.js b/components/Header/header.js
index 08d55b4d..06116abe 100644
--- a/components/Header/header.js
+++ b/components/Header/header.js
@@ -1,56 +1,56 @@
-import React from 'react';
-import Heading from '../Typography/heading';
-import Paragraph from '../Typography/paragraph';
-import Button from '../Buttons/button';
-import ReactSlider from '../Slider/slider';
-import cities from '../../config/city-lists.json';
-import Venue from '../Venue/venue';
-import Announcement from '../announcement';
-import Link from 'next/link';
+import React from "react";
+import Heading from "../Typography/heading";
+import Paragraph from "../Typography/paragraph";
+import Button from "../Buttons/button";
+import ReactSlider from "../Slider/slider";
+import cities from "../../config/city-lists.json";
+import Venue from "../Venue/venue";
+import Announcement from "../announcement";
+import Link from "next/link";
function Header() {
- return (
-
+ );
}
export default Header;
diff --git a/components/Navbar/navDrop.js b/components/Navbar/navDrop.js
index 52396ca7..54f734bc 100644
--- a/components/Navbar/navDrop.js
+++ b/components/Navbar/navDrop.js
@@ -1,62 +1,61 @@
-import React,{useState,forwardRef} from 'react';
-import links from '../../config/links.json';
-import Link from 'next/link';
-import Dropdown from '../illustration/dropdown';
+import React, { useState, forwardRef } from "react";
+import links from "../../config/links.json";
+import Link from "next/link";
+import Dropdown from "../illustration/dropdown";
-
-const NavDrop = forwardRef((props, ref)=> {
- const {setDrop}=props;
- const [show, setShow] = useState(null);
+const NavDrop = forwardRef((props, ref) => {
+ const { setDrop } = props;
+ const [show, setShow] = useState(null);
return (
-
+ );
+});
+NavDrop.displayName = "NavDrop";
-export default NavDrop;
\ No newline at end of file
+export default NavDrop;
diff --git a/components/Navbar/navbar.js b/components/Navbar/navbar.js
index 87bd031e..4b7fb8d6 100644
--- a/components/Navbar/navbar.js
+++ b/components/Navbar/navbar.js
@@ -1,152 +1,162 @@
-import Link from 'next/link';
-import Dropdown from '../illustration/dropdown';
-import { useState, useEffect, useRef, useCallback } from 'react';
-import links from '../../config/links.json';
-import NavDrop from './navDrop';
-import Hamburger from '../illustration/hamburger';
-import { useMediaQuery } from 'react-responsive';
-import Cancel from '../illustration/cancel';
-import Image from 'next/image';
+import Link from "next/link";
+import Dropdown from "../illustration/dropdown";
+import { useState, useEffect, useRef, useCallback } from "react";
+import links from "../../config/links.json";
+import NavDrop from "./navDrop";
+import Hamburger from "../illustration/hamburger";
+import { useMediaQuery } from "react-responsive";
+import Cancel from "../illustration/cancel";
+import Image from "next/image";
function Navbar() {
- const isTablet = useMediaQuery({ maxWidth: '1118px' });
- const [drop, setDrop] = useState(false);
- const [show, setShow] = useState(null);
- const [isSubMenuHovered, setIsSubMenuHovered] = useState(false);
- const menuRef = useRef(null);
- const svg = useRef(null);
- let closeTimeout = useRef(null);
+ const isTablet = useMediaQuery({ maxWidth: "1118px" });
+ const [drop, setDrop] = useState(false);
+ const [show, setShow] = useState(null);
+ const [isSubMenuHovered, setIsSubMenuHovered] = useState(false);
+ const menuRef = useRef(null);
+ const svg = useRef(null);
+ let closeTimeout = useRef(null);
- const handleClosing = useCallback((event) => {
- if (show && !event.target.closest('.subMenu')) {
- setShow(null);
- }
- }, [show]);
+ const handleClosing = useCallback(
+ (event) => {
+ if (show && !event.target.closest(".subMenu")) {
+ setShow(null);
+ }
+ },
+ [show],
+ );
- useEffect(() => {
- document.addEventListener('mousedown', handleClosing);
- return () => {
- document.removeEventListener('mousedown', handleClosing);
- };
- }, [handleClosing]);
+ useEffect(() => {
+ document.addEventListener("mousedown", handleClosing);
+ return () => {
+ document.removeEventListener("mousedown", handleClosing);
+ };
+ }, [handleClosing]);
- const handleCloseMenu = (event) => {
- if (menuRef.current && !menuRef.current.contains(event.target)) {
- setDrop(false);
- } if (svg.current && event.target === svg.current) {
- setDrop(true);
- }
- };
+ const handleCloseMenu = (event) => {
+ if (menuRef.current && !menuRef.current.contains(event.target)) {
+ setDrop(false);
+ }
+ if (svg.current && event.target === svg.current) {
+ setDrop(true);
+ }
+ };
- useEffect(() => {
- document.addEventListener('click', handleCloseMenu);
- return () => {
- document.removeEventListener('click', handleCloseMenu);
- };
- }, [menuRef]);
+ useEffect(() => {
+ document.addEventListener("click", handleCloseMenu);
+ return () => {
+ document.removeEventListener("click", handleCloseMenu);
+ };
+ }, [menuRef]);
- const handleMouseEnter = (title) => {
- clearTimeout(closeTimeout.current);
- setShow(title);
- };
+ const handleMouseEnter = (title) => {
+ clearTimeout(closeTimeout.current);
+ setShow(title);
+ };
- const handleMouseLeave = () => {
- closeTimeout.current = setTimeout(() => {
- if (!isSubMenuHovered) {
- setShow(null);
- }
- }, 300);
- };
+ const handleMouseLeave = () => {
+ closeTimeout.current = setTimeout(() => {
+ if (!isSubMenuHovered) {
+ setShow(null);
+ }
+ }, 300);
+ };
- const handleSubMenuEnter = () => {
- clearTimeout(closeTimeout.current);
- setIsSubMenuHovered(true);
- };
+ const handleSubMenuEnter = () => {
+ clearTimeout(closeTimeout.current);
+ setIsSubMenuHovered(true);
+ };
- const handleSubMenuLeave = () => {
- setIsSubMenuHovered(false);
- setShow(null);
- };
+ const handleSubMenuLeave = () => {
+ setIsSubMenuHovered(false);
+ setShow(null);
+ };
- return (
-
+ );
}
export default Navbar;
diff --git a/components/PastEditionCard/index.js b/components/PastEditionCard/index.js
index 2a9ac9fd..3226ab00 100644
--- a/components/PastEditionCard/index.js
+++ b/components/PastEditionCard/index.js
@@ -1,24 +1,33 @@
-import React from 'react'
-import {ExternalLink} from 'lucide-react'
+import React from "react";
+import { ExternalLink } from "lucide-react";
const PastEditonCard = ({ url }) => {
- let year = url.split('.')[1]
- return (
-
-
-
-
-
-
+ let year = url.split(".")[1];
+ return (
+
+ );
+};
-export default PastEditonCard
+export default PastEditonCard;
diff --git a/components/Select/select.js b/components/Select/select.js
index e2077ece..72c3ddda 100644
--- a/components/Select/select.js
+++ b/components/Select/select.js
@@ -41,7 +41,7 @@ function Dropdown({ options, title, setValue, multi }) {
selectedOption.map((option) => {
newValue.push(option.value);
});
- setValue(newValue)
+ setValue(newValue);
} else {
setValue(selectedOption.value);
}
@@ -59,4 +59,4 @@ function Dropdown({ options, title, setValue, multi }) {
);
}
-export default Dropdown;
\ No newline at end of file
+export default Dropdown;
diff --git a/components/Slider/slider.js b/components/Slider/slider.js
index e7dc80d2..a3dcac2f 100644
--- a/components/Slider/slider.js
+++ b/components/Slider/slider.js
@@ -1,34 +1,34 @@
-import Slider from 'react-slick';
-import Arrow from '../illustration/arrow';
-import React, { useEffect, useState, useRef } from 'react';
-import { useMediaQuery } from 'react-responsive';
+import Slider from "react-slick";
+import Arrow from "../illustration/arrow";
+import React, { useEffect, useState, useRef } from "react";
+import { useMediaQuery } from "react-responsive";
function ReactSlider({ children }) {
- const isMobile = useMediaQuery({ maxWidth: '590px' });
- const [slides, setSlides] = useState(1);
+ const isMobile = useMediaQuery({ maxWidth: "590px" });
+ const [slides, setSlides] = useState(1);
- useEffect(() => {
- if (isMobile) {
- setSlides(1);
- }
- }, [isMobile]);
- const slider = useRef(null);
- const settings = {
- slidesToScroll: slides,
- infinite: true,
- autoplay: true,
- speed: 10000,
- autoplaySpeed: 0,
- centerMode: true,
- cssEase: 'linear',
- variableWidth: isMobile ? false : true,
- arrows: false,
- };
- return (
-
- {children}
-
- );
+ useEffect(() => {
+ if (isMobile) {
+ setSlides(1);
+ }
+ }, [isMobile]);
+ const slider = useRef(null);
+ const settings = {
+ slidesToScroll: slides,
+ infinite: true,
+ autoplay: true,
+ speed: 10000,
+ autoplaySpeed: 0,
+ centerMode: true,
+ cssEase: "linear",
+ variableWidth: isMobile ? false : true,
+ arrows: false,
+ };
+ return (
+
+ {children}
+
+ );
}
export default ReactSlider;
diff --git a/components/Speaker/speaker.js b/components/Speaker/speaker.js
index 780a6749..a0ba815e 100644
--- a/components/Speaker/speaker.js
+++ b/components/Speaker/speaker.js
@@ -1,36 +1,43 @@
-import Image from 'next/image';
-import React from 'react'
+import Image from "next/image";
+import React from "react";
-function Speaker({details, location, className}) {
+function Speaker({ details, location, className }) {
return (
-
-
-
-
-
-
{details.name}
-
-
- {' '}
-
{details.title}
-
-
-
- {location?.location}
-
-
-
-
-
- );
+
+
+
+
+
+
{details.name}
+
+
+ {" "}
+
+ {details.title}
+
+
+
+
+ {location?.location}
+
+
+
+
+
+ );
}
-export default Speaker
-
-
+export default Speaker;
diff --git a/components/Sponsors/sponsors.js b/components/Sponsors/sponsors.js
index 7c1daf15..ee56698c 100644
--- a/components/Sponsors/sponsors.js
+++ b/components/Sponsors/sponsors.js
@@ -1,37 +1,51 @@
/* eslint-disable @next/next/no-img-element */
-import React from 'react'
-import Heading from '../Typography/heading';
-import Paragraph from '../Typography/paragraph';
-import Image from 'next/image';
+import React from "react";
+import Heading from "../Typography/heading";
+import Paragraph from "../Typography/paragraph";
+import Image from "next/image";
-function Sponsors({imgs}) {
+function Sponsors({ imgs }) {
return (
-
-
-
-
-
- Elevating the future of APIs. Our valued partners and sponsors play
- a pivotal role in bringing our vision to life. With their support, we
- orchestrate an unforgettable celebration.
-
-
-
Event and Host Sponsor
-
- {imgs &&
- imgs.map((img) => (
-
-
-
- ))}
-
-
- Financial Sponsor
-
-
-
-
- );
+
+
+
+
+ Elevating the future of APIs. Our valued partners and sponsors play
+ a pivotal role in bringing our vision to life. With their support,
+ we orchestrate an unforgettable celebration.
+
+
+
+ Event and Host Sponsor
+
+
+ {imgs &&
+ imgs.map((img) => (
+
+
+
+ ))}
+
+
+
+ Financial Sponsor
+
+
+
+
+
+ );
}
-export default Sponsors
+export default Sponsors;
diff --git a/components/Typography/heading.js b/components/Typography/heading.js
index fadf537c..d7c98c34 100644
--- a/components/Typography/heading.js
+++ b/components/Typography/heading.js
@@ -1,68 +1,68 @@
export default function Heading({
- typeStyle = 'heading-lg',
- level = 'h2',
- textColor = 'text-primary-800',
- className,
- children,
+ typeStyle = "heading-lg",
+ level = "h2",
+ textColor = "text-primary-800",
+ className,
+ children,
}) {
- let classNames = '';
- const Tag = `${level}`;
- switch (typeStyle) {
- case 'heading-lg':
- classNames = `font-heading text-heading-md font-bold text-[60px] tracking-heading sm:text-[30px] lg:text-[40px] ${
- className || ''
- }`;
- break;
- case 'heading-md':
- classNames = `font-heading text-heading-md font-bold text-[40px] tracking-heading ${
- className || ''
- }`;
- break;
- case 'heading-md-semibold':
- classNames = `font-heading text-heading-md font-semibold tracking-heading ${
- className || ''
- }`;
- break;
- case 'heading-sm':
- classNames = `font-heading text-heading-sm font-bold tracking-heading ${
- className || ''
- }`;
- break;
- case 'heading-sm-semibold':
- classNames = `font-heading text-heading-sm font-semibold tracking-heading ${
- className || ''
- }`;
- break;
- case 'heading-xs':
- classNames = `font-heading text-heading-xs font-bold tracking-heading ${
- className || ''
- }`;
- break;
- case 'heading-xs-semibold':
- classNames = `font-heading text-heading-xs font-semibold tracking-heading ${
- className || ''
- }`;
- break;
- case 'body-lg':
- classNames = `font-heading text-body-lg tracking-body font-regular ${
- className || ''
- }`;
- break;
- case 'body-md':
- classNames = `font-heading text-body-md tracking-body font-regular ${
- className || ''
- }`;
- break;
- case 'body-sm':
- classNames = `font-heading text-body-lg tracking-body font-regular ${
- className || ''
- }`;
- break;
- default:
- classNames = `font-heading text-heading-md font-bold tracking-heading md:text-heading-xl ${
- className || ''
- }`;
- }
+ let classNames = "";
+ const Tag = `${level}`;
+ switch (typeStyle) {
+ case "heading-lg":
+ classNames = `font-heading text-heading-md font-bold text-[60px] tracking-heading sm:text-[30px] lg:text-[40px] ${
+ className || ""
+ }`;
+ break;
+ case "heading-md":
+ classNames = `font-heading text-heading-md font-bold text-[40px] tracking-heading ${
+ className || ""
+ }`;
+ break;
+ case "heading-md-semibold":
+ classNames = `font-heading text-heading-md font-semibold tracking-heading ${
+ className || ""
+ }`;
+ break;
+ case "heading-sm":
+ classNames = `font-heading text-heading-sm font-bold tracking-heading ${
+ className || ""
+ }`;
+ break;
+ case "heading-sm-semibold":
+ classNames = `font-heading text-heading-sm font-semibold tracking-heading ${
+ className || ""
+ }`;
+ break;
+ case "heading-xs":
+ classNames = `font-heading text-heading-xs font-bold tracking-heading ${
+ className || ""
+ }`;
+ break;
+ case "heading-xs-semibold":
+ classNames = `font-heading text-heading-xs font-semibold tracking-heading ${
+ className || ""
+ }`;
+ break;
+ case "body-lg":
+ classNames = `font-heading text-body-lg tracking-body font-regular ${
+ className || ""
+ }`;
+ break;
+ case "body-md":
+ classNames = `font-heading text-body-md tracking-body font-regular ${
+ className || ""
+ }`;
+ break;
+ case "body-sm":
+ classNames = `font-heading text-body-lg tracking-body font-regular ${
+ className || ""
+ }`;
+ break;
+ default:
+ classNames = `font-heading text-heading-md font-bold tracking-heading md:text-heading-xl ${
+ className || ""
+ }`;
+ }
- return
{children} ;
+ return
{children} ;
}
diff --git a/components/Typography/paragraph.js b/components/Typography/paragraph.js
index c564c799..178f31d0 100644
--- a/components/Typography/paragraph.js
+++ b/components/Typography/paragraph.js
@@ -1,24 +1,24 @@
export default function Paragraph({
- typeStyle = 'body-lg',
- textColor = 'text-gray-400',
- fontWeight,
- className,
- children,
+ typeStyle = "body-lg",
+ textColor = "text-gray-400",
+ fontWeight,
+ className,
+ children,
}) {
- let classNames = '';
- switch (typeStyle) {
- case 'body-lg':
- classNames = `text-[20px] sm:text-[16px] ${fontWeight} ${className || ''}`;
- break;
- case 'body-md':
- classNames = `text-md ${fontWeight} ${className || ''}`;
- break;
- case 'body-sm':
- classNames = `text-sm ${fontWeight} ${className || ''}`;
- break;
- default:
- classNames = `text-lg font-regular ${className || ''}`;
- }
+ let classNames = "";
+ switch (typeStyle) {
+ case "body-lg":
+ classNames = `text-[20px] sm:text-[16px] ${fontWeight} ${className || ""}`;
+ break;
+ case "body-md":
+ classNames = `text-md ${fontWeight} ${className || ""}`;
+ break;
+ case "body-sm":
+ classNames = `text-sm ${fontWeight} ${className || ""}`;
+ break;
+ default:
+ classNames = `text-lg font-regular ${className || ""}`;
+ }
- return
{children}
;
+ return
{children}
;
}
diff --git a/components/Venue/venue.js b/components/Venue/venue.js
index a2b050b3..d8345971 100644
--- a/components/Venue/venue.js
+++ b/components/Venue/venue.js
@@ -1,36 +1,54 @@
/* eslint-disable react/no-unescaped-entities */
-import React from 'react';
-import Link from 'next/link';
-import Image from 'next/image';
+import React from "react";
+import Link from "next/link";
+import Image from "next/image";
function Venue({ className, city }) {
- return (
-
-
-
-
- {city.cfp?
cfp is open
:null}
-
{
- e.preventDefault()
- window.open(city.map, '_blank', 'noopener')
- }} className='w-8 h-8 bg-white rounded-xl flex items-center justify-center ml-auto'>
-
-
-
-
-
-
- {city.country}, {city.name}
-
-
-
-
-
-
- );
+ return (
+
+
+
+
+ {city.cfp ? (
+
+ cfp is open
+
+ ) : null}
+
{
+ e.preventDefault();
+ window.open(city.map, "_blank", "noopener");
+ }}
+ className="w-8 h-8 bg-white rounded-xl flex items-center justify-center ml-auto"
+ >
+
+
+
+
+
+
+
+ {city.country}, {city.name}
+
+
+
+
+
+
+
+ );
}
export default Venue;
diff --git a/components/announcement.js b/components/announcement.js
index 4cb76b6b..c6a13182 100644
--- a/components/announcement.js
+++ b/components/announcement.js
@@ -1,10 +1,12 @@
-import React from 'react';
-import Link from 'next/link';
+import React from "react";
+import Link from "next/link";
export default function Announcement() {
return (
-
Call for Speakers London is now open!
+
+ Call for Speakers London is now open!
+
- )
+ );
}
diff --git a/components/illustration/activityLoader.js b/components/illustration/activityLoader.js
index 4b5ade76..92146109 100644
--- a/components/illustration/activityLoader.js
+++ b/components/illustration/activityLoader.js
@@ -34,4 +34,4 @@ function ActivityLoader() {
);
}
-export default ActivityLoader;
\ No newline at end of file
+export default ActivityLoader;
diff --git a/components/illustration/arrow.js b/components/illustration/arrow.js
index f1efd426..58231e68 100644
--- a/components/illustration/arrow.js
+++ b/components/illustration/arrow.js
@@ -1,24 +1,24 @@
-import React from 'react'
+import React from "react";
-function Arrow({className, fill}) {
- return (
-
-
-
-
-
- );
+function Arrow({ className, fill }) {
+ return (
+
+
+
+
+
+ );
}
-export default Arrow
\ No newline at end of file
+export default Arrow;
diff --git a/components/illustration/cancel.js b/components/illustration/cancel.js
index e3b21ae1..bc90f6b9 100644
--- a/components/illustration/cancel.js
+++ b/components/illustration/cancel.js
@@ -1,56 +1,56 @@
-import React from 'react'
+import React from "react";
function Cancel() {
- return (
-
-
+ return (
+
+
-
+
-
- {' '}
- {' '}
-
- {' '}
- {' '}
- {' '}
- {' '}
- {' '}
-
-
- );
+
+ {" "}
+ {" "}
+
+ {" "}
+ {" "}
+ {" "}
+ {" "}
+ {" "}
+
+
+ );
}
-export default Cancel
\ No newline at end of file
+export default Cancel;
diff --git a/components/illustration/dropdown.js b/components/illustration/dropdown.js
index 991d024d..af6f4392 100644
--- a/components/illustration/dropdown.js
+++ b/components/illustration/dropdown.js
@@ -1,11 +1,23 @@
-import React from 'react'
+import React from "react";
-function Dropdown({className, color}) {
- return (
-
-
-
- )
+function Dropdown({ className, color }) {
+ return (
+
+
+
+ );
}
-export default Dropdown
+export default Dropdown;
diff --git a/components/illustration/hamburger.js b/components/illustration/hamburger.js
index 1bb1e4af..748dd048 100644
--- a/components/illustration/hamburger.js
+++ b/components/illustration/hamburger.js
@@ -1,47 +1,48 @@
-import React,{forwardRef} from 'react'
+import React, { forwardRef } from "react";
-const Hamburger = forwardRef((props, ref)=> {
- const {className} = props;
- return (
-
-
+const Hamburger = forwardRef((props, ref) => {
+ const { className } = props;
+ return (
+
+
-
+
-
- {' '}
- {' '}
- {' '}
- {' '}
-
-
- );
-})
-Hamburger.displayName = 'Hamburger';
+
+ {" "}
+ {" "}
+ {" "}
+ {" "}
+
+
+ );
+});
+Hamburger.displayName = "Hamburger";
-export default Hamburger
\ No newline at end of file
+export default Hamburger;
diff --git a/components/illustration/plus.js b/components/illustration/plus.js
index c21f9b0e..83dca8b2 100644
--- a/components/illustration/plus.js
+++ b/components/illustration/plus.js
@@ -1,13 +1,37 @@
-import React from 'react'
+import React from "react";
-function Plus({className}) {
- return (
-
-
-
-
-
- )
+function Plus({ className }) {
+ return (
+
+
+
+
+
+ );
}
-export default Plus
\ No newline at end of file
+export default Plus;
diff --git a/config/city-lists.json b/config/city-lists.json
index 4da394d0..5544fa42 100644
--- a/config/city-lists.json
+++ b/config/city-lists.json
@@ -1,49 +1,43 @@
[
- {
- "name": "Helsinki",
- "country": "Finland",
- "date": "May 29 2024",
- "description": "Join us in Helsinki for the AsyncAPI Conference, where we will explore all things AsyncAPI and connect physical and digital worlds. Get excited as we delve into sustainable APIs for the Era of AI, Data Platforms, and Quantum Computing!.",
- "img": "/img/finland.webp",
- "address": "Pikku-Finlandia, Helsinki, Karamzininranta 4, 00100 Helsinki, Finland",
- "map": "https://maps.app.goo.gl/UpdEp188m5YNEAEo9",
- "sponsors": [
- "/img/apidays.png"
- ],
- "ticket": false,
- "isFree": true,
- "ended": false
- },
- {
- "name": "London",
- "country": "UK",
- "date": "September 18-19, 2024",
- "description": "Join us in London for AsyncAPI Conference and learn how to speak fluent API! Let's taco about messaging and have a fiesta you will remember!",
- "img": "/img/london.gif",
- "address": "155 Bishopsgate, London EC2M 3YD",
- "map": "https://maps.app.goo.gl/b2Vb5H2mM41F9nQA6",
- "sponsors": [
- "/img/apidays.png"
- ],
- "ticket": false,
- "isFree": true,
- "ended": false,
- "cfp": "https://apidays.typeform.com/to/ILJeAaV8?typeform-source=www.apidays.global#event_name=xxxxx"
- },
- {
- "name": "Paris",
- "country": "France",
- "date": "December 3-5, 2024",
- "description": "Join us at apidays Paris for the AsyncAPI Conference and experience the art of API perfection! Let's craft a symphony of messaging and celebrate tech in style!",
- "img": "https://media1.giphy.com/media/v1.Y2lkPTc5MGI3NjExd24yenR4djEyZzRoeDA0ZmEyb3Y1c2F4NWVmbG13NmZwYWNhZzdnNiZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/Tuy3QxNZF1cxG/giphy.gif",
- "address": "CNIT (Centre des Nouvelles Industries et Technologies), Paris 2 Place de la Défense, 92092 Puteaux",
- "map": "https://maps.app.goo.gl/5te8WRM9Rb8B6vNd9",
- "sponsors": [
- "/img/apidays.png"
- ],
- "ticket": false,
- "isFree": true,
- "ended": false,
- "cfp": "https://apidays.typeform.com/to/ILJeAaV8?typeform-source=www.apidays.global#event_name=xxxxx"
- }
-]
\ No newline at end of file
+ {
+ "name": "Helsinki",
+ "country": "Finland",
+ "date": "May 29 2024",
+ "description": "Join us in Helsinki for the AsyncAPI Conference, where we will explore all things AsyncAPI and connect physical and digital worlds. Get excited as we delve into sustainable APIs for the Era of AI, Data Platforms, and Quantum Computing!.",
+ "img": "/img/finland.webp",
+ "address": "Pikku-Finlandia, Helsinki, Karamzininranta 4, 00100 Helsinki, Finland",
+ "map": "https://maps.app.goo.gl/UpdEp188m5YNEAEo9",
+ "sponsors": ["/img/apidays.png"],
+ "ticket": false,
+ "isFree": true,
+ "ended": false
+ },
+ {
+ "name": "London",
+ "country": "UK",
+ "date": "September 18-19, 2024",
+ "description": "Join us in London for AsyncAPI Conference and learn how to speak fluent API! Let's taco about messaging and have a fiesta you will remember!",
+ "img": "/img/london.gif",
+ "address": "155 Bishopsgate, London EC2M 3YD",
+ "map": "https://maps.app.goo.gl/b2Vb5H2mM41F9nQA6",
+ "sponsors": ["/img/apidays.png"],
+ "ticket": false,
+ "isFree": true,
+ "ended": false,
+ "cfp": "https://apidays.typeform.com/to/ILJeAaV8?typeform-source=www.apidays.global#event_name=xxxxx"
+ },
+ {
+ "name": "Paris",
+ "country": "France",
+ "date": "December 3-5, 2024",
+ "description": "Join us at apidays Paris for the AsyncAPI Conference and experience the art of API perfection! Let's craft a symphony of messaging and celebrate tech in style!",
+ "img": "https://media1.giphy.com/media/v1.Y2lkPTc5MGI3NjExd24yenR4djEyZzRoeDA0ZmEyb3Y1c2F4NWVmbG13NmZwYWNhZzdnNiZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/Tuy3QxNZF1cxG/giphy.gif",
+ "address": "CNIT (Centre des Nouvelles Industries et Technologies), Paris 2 Place de la Défense, 92092 Puteaux",
+ "map": "https://maps.app.goo.gl/5te8WRM9Rb8B6vNd9",
+ "sponsors": ["/img/apidays.png"],
+ "ticket": false,
+ "isFree": true,
+ "ended": false,
+ "cfp": "https://apidays.typeform.com/to/ILJeAaV8?typeform-source=www.apidays.global#event_name=xxxxx"
+ }
+]
diff --git a/config/editions.json b/config/editions.json
index bf7f23bc..edd1efa4 100644
--- a/config/editions.json
+++ b/config/editions.json
@@ -1,6 +1,6 @@
[
- "https://conference.2023.asyncapi.com/",
- "https://conference.2022.asyncapi.com/",
- "https://conference.2021.asyncapi.com/",
- "https://conference.2020.asyncapi.com/"
-]
\ No newline at end of file
+ "https://conference.2023.asyncapi.com/",
+ "https://conference.2022.asyncapi.com/",
+ "https://conference.2021.asyncapi.com/",
+ "https://conference.2020.asyncapi.com/"
+]
diff --git a/config/links.json b/config/links.json
index 155bb309..633c2087 100644
--- a/config/links.json
+++ b/config/links.json
@@ -1,53 +1,47 @@
[
- {
- "title": "About",
- "ref": "/#about"
- },
- {
- "title": "Venue",
- "ref": "",
- "subMenu": [
- {
- "title": "Helsinki, Finland",
- "ref": "/venue/Helsinki"
- },
- {
- "title": "London, UK",
- "ref": "/venue/London"
- },
- {
- "title": "Paris, France",
- "ref": "/venue/Paris"
- }
- ]
- },
- {
- "title": "Speakers",
- "ref": "/#speakers"
- },
- {
- "title": "Sponsors",
- "ref": "/#sponsors"
- },
- {
- "title":"Past Editions",
- "ref":"/editions"
- },
- {
- "title":"Resources Hub",
- "ref":"",
- "subMenu": [
-
- {
- "title": "Helsinki Slides",
- "ref": "https://drive.google.com/drive/folders/1nY7dZF8WFXZ3r2rCWJDDoT2C_GMfQJMV?usp=drive_link",
- "target": "_blank"
- }
-
- ]
-}
-
+ {
+ "title": "About",
+ "ref": "/#about"
+ },
+ {
+ "title": "Venue",
+ "ref": "",
+ "subMenu": [
+ {
+ "title": "Helsinki, Finland",
+ "ref": "/venue/Helsinki"
+ },
+ {
+ "title": "London, UK",
+ "ref": "/venue/London"
+ },
+ {
+ "title": "Paris, France",
+ "ref": "/venue/Paris"
+ }
+ ]
+ },
+ {
+ "title": "Speakers",
+ "ref": "/#speakers"
+ },
+ {
+ "title": "Sponsors",
+ "ref": "/#sponsors"
+ },
+ {
+ "title": "Past Editions",
+ "ref": "/editions"
+ },
+ {
+ "title": "Resources Hub",
+ "ref": "",
+ "subMenu": [
+ {
+ "title": "Helsinki Slides",
+ "ref": "https://drive.google.com/drive/folders/1nY7dZF8WFXZ3r2rCWJDDoT2C_GMfQJMV?usp=drive_link",
+ "target": "_blank"
+ }
+ ]
+ }
]
-
-
-
\ No newline at end of file
diff --git a/config/speakers.json b/config/speakers.json
index af1884b6..9452b561 100644
--- a/config/speakers.json
+++ b/config/speakers.json
@@ -1,66 +1,66 @@
[
- {
- "location": "",
- "city": "All",
- "lists": []
- },
- {
- "location": "Helsinki, Finland",
- "city": "Helsinki",
- "agenda": [
- {
- "time": "01:50 PM CEST - 02:15 PM CEST",
- "session": "Getting Started With Event Driven Architecture & AsyncAPI",
- "speaker": 1,
- "type": "Technical Speaker"
- },
- {
- "time": "02:15 PM CEST - 02:40 PM CEST",
- "session": "Navigating The Jungle of The AsyncAPI Ecosystem",
- "speaker": 2,
- "type": "Technical Speaker"
- },
- {
- "time": "02:40 PM CEST - 03:05 PM CEST",
- "session": "AsyncAPI In Production - The True Potential",
- "speaker": 3,
- "type": "Keynote Speaker"
- },
- {
- "time": "03:05 PM CEST - 03:30 PM CEST",
- "session": "Using Test Containers for AsyncAPI Unit Testing and Mocking",
- "speaker": 1,
- "type": "Technical Speaker"
- }
- ],
- "lists": [
- {
- "name": "Hugo Guerrero",
- "title": "Developer Advocate at Redhat",
- "img": "https://avatars.githubusercontent.com/u/1001939?v=4"
- },
- {
- "name": "Jonas Lagoni",
- "title": "Lead Software Engineer at Postman",
- "img": "https://pbs.twimg.com/profile_images/1507770710789402630/w4IZfLUZ_400x400.jpg"
- },
- {
- "name": "Lukasz Gornicki",
- "title": "Executive Director at AsyncAPI Initiative and Developer Relations Manager at Postman",
- "img": "https://pbs.twimg.com/profile_images/1683523954957328393/W009Rxsj_400x400.jpg"
- }
- ]
- },
- {
- "location": "London, United Kingdom",
- "city": "London",
- "agenda": null,
- "lists": []
- },
- {
- "city": "Paris",
- "location": "Paris, France",
- "lists": [],
- "agenda": null
- }
+ {
+ "location": "",
+ "city": "All",
+ "lists": []
+ },
+ {
+ "location": "Helsinki, Finland",
+ "city": "Helsinki",
+ "agenda": [
+ {
+ "time": "01:50 PM CEST - 02:15 PM CEST",
+ "session": "Getting Started With Event Driven Architecture & AsyncAPI",
+ "speaker": 1,
+ "type": "Technical Speaker"
+ },
+ {
+ "time": "02:15 PM CEST - 02:40 PM CEST",
+ "session": "Navigating The Jungle of The AsyncAPI Ecosystem",
+ "speaker": 2,
+ "type": "Technical Speaker"
+ },
+ {
+ "time": "02:40 PM CEST - 03:05 PM CEST",
+ "session": "AsyncAPI In Production - The True Potential",
+ "speaker": 3,
+ "type": "Keynote Speaker"
+ },
+ {
+ "time": "03:05 PM CEST - 03:30 PM CEST",
+ "session": "Using Test Containers for AsyncAPI Unit Testing and Mocking",
+ "speaker": 1,
+ "type": "Technical Speaker"
+ }
+ ],
+ "lists": [
+ {
+ "name": "Hugo Guerrero",
+ "title": "Developer Advocate at Redhat",
+ "img": "https://avatars.githubusercontent.com/u/1001939?v=4"
+ },
+ {
+ "name": "Jonas Lagoni",
+ "title": "Lead Software Engineer at Postman",
+ "img": "https://pbs.twimg.com/profile_images/1507770710789402630/w4IZfLUZ_400x400.jpg"
+ },
+ {
+ "name": "Lukasz Gornicki",
+ "title": "Executive Director at AsyncAPI Initiative and Developer Relations Manager at Postman",
+ "img": "https://pbs.twimg.com/profile_images/1683523954957328393/W009Rxsj_400x400.jpg"
+ }
+ ]
+ },
+ {
+ "location": "London, United Kingdom",
+ "city": "London",
+ "agenda": null,
+ "lists": []
+ },
+ {
+ "city": "Paris",
+ "location": "Paris, France",
+ "lists": [],
+ "agenda": null
+ }
]
diff --git a/next.config.js b/next.config.js
index 7b166afe..50f84207 100644
--- a/next.config.js
+++ b/next.config.js
@@ -1,9 +1,9 @@
/** @type {import('next').NextConfig} */
const nextConfig = {
reactStrictMode: true,
- images: {
- unoptimized: true
- }
-}
+ images: {
+ unoptimized: true,
+ },
+};
-module.exports = nextConfig
+module.exports = nextConfig;
diff --git a/package-lock.json b/package-lock.json
index 8a024407..fbf86320 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -31,6 +31,7 @@
"eslint": "8.15.0",
"eslint-config-next": "13.1.1",
"postcss": "^8.4.31",
+ "prettier": "^3.3.3",
"tailwindcss": "^3.0.24"
}
},
@@ -4517,6 +4518,21 @@
"node": ">= 0.8.0"
}
},
+ "node_modules/prettier": {
+ "version": "3.3.3",
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz",
+ "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==",
+ "dev": true,
+ "bin": {
+ "prettier": "bin/prettier.cjs"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/prettier/prettier?sponsor=1"
+ }
+ },
"node_modules/prop-types": {
"version": "15.8.1",
"resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz",
diff --git a/package.json b/package.json
index 94d954f4..f6a8de76 100644
--- a/package.json
+++ b/package.json
@@ -6,7 +6,8 @@
"dev": "next dev",
"build": "next build",
"start": "next start",
- "lint": "next lint",
+ "lint": "next lint && prettier . --check",
+ "format": "prettier . --write",
"export": "next export",
"generate:assets": "echo \"No assets to configure\"",
"test": "echo \"No tests configured yet\"",
@@ -36,6 +37,7 @@
"eslint": "8.15.0",
"eslint-config-next": "13.1.1",
"postcss": "^8.4.31",
+ "prettier": "^3.3.3",
"tailwindcss": "^3.0.24"
}
}
diff --git a/pages/_app.js b/pages/_app.js
index a7e54e34..397d70fe 100644
--- a/pages/_app.js
+++ b/pages/_app.js
@@ -1,9 +1,9 @@
-import '../styles/globals.css';
-import 'slick-carousel/slick/slick.css';
-import 'slick-carousel/slick/slick-theme.css';
-import Navbar from '../components/Navbar/navbar';
-import Footer from '../components/Footer/footer';
-import { useState, useEffect } from 'react';
+import "../styles/globals.css";
+import "slick-carousel/slick/slick.css";
+import "slick-carousel/slick/slick-theme.css";
+import Navbar from "../components/Navbar/navbar";
+import Footer from "../components/Footer/footer";
+import { useState, useEffect } from "react";
function MyApp({ Component, pageProps }) {
const [showChild, setShowChild] = useState(false);
@@ -17,13 +17,13 @@ function MyApp({ Component, pageProps }) {
return <>>;
}
return (
-
);
}
-export default MyApp
+export default MyApp;
diff --git a/pages/api/hello.js b/pages/api/hello.js
index df63de88..aee21e9a 100644
--- a/pages/api/hello.js
+++ b/pages/api/hello.js
@@ -1,5 +1,5 @@
// Next.js API route support: https://nextjs.org/docs/api-routes/introduction
export default function handler(req, res) {
- res.status(200).json({ name: 'John Doe' })
+ res.status(200).json({ name: "John Doe" });
}
diff --git a/pages/editions/index.js b/pages/editions/index.js
index 4a09b2ba..1c67d70d 100644
--- a/pages/editions/index.js
+++ b/pages/editions/index.js
@@ -1,26 +1,26 @@
-import React from 'react'
-import PastEditonCard from '../../components/PastEditionCard'
-import pastEditionsArchiveLinks from '../../config/editions.json'
+import React from "react";
+import PastEditonCard from "../../components/PastEditionCard";
+import pastEditionsArchiveLinks from "../../config/editions.json";
const PastEditions = () => {
- return (
-
-
Past Editions | AACoT
-
-
- Past Editions of
-
- AsyncAPI Conf
-
+ return (
+
+
Past Editions | AACoT
+
+
+ Past Editions of
+
+
+ AsyncAPI Conf
+
+
-
- {
- pastEditionsArchiveLinks.map((item, index) => {
- return
- })
- }
-
-
- )
-}
+
+ {pastEditionsArchiveLinks.map((item, index) => {
+ return
;
+ })}
+
+
+ );
+};
-export default PastEditions
+export default PastEditions;
diff --git a/pages/index.js b/pages/index.js
index 2eb8d1a0..6d99f65b 100644
--- a/pages/index.js
+++ b/pages/index.js
@@ -1,184 +1,214 @@
/* eslint-disable @next/next/no-img-element */
/* eslint-disable react/no-unescaped-entities */
-import { useEffect, useState } from 'react';
-import Head from 'next/head';
-import { useMediaQuery } from 'react-responsive';
-import Header from '../components/Header/header';
-import cities from '../config/city-lists.json';
-import Sponsors from '../components/Sponsors/sponsors';
-import About from '../components/About/about';
-import TicketCards from '../components/Cards/ticketCards';
-import Heading from '../components/Typography/heading';
-import Paragraph from '../components/Typography/paragraph';
-import Subcription from '../components/Form/subscription';
-import Speaker from '../components/Speaker/speaker';
-import speakers from '../config/speakers.json';
-import Link from 'next/link';
-import Button from '../components/Buttons/button';
-import Dropdown from '../components/Dropdown/dropdown';
+import { useEffect, useState } from "react";
+import Head from "next/head";
+import { useMediaQuery } from "react-responsive";
+import Header from "../components/Header/header";
+import cities from "../config/city-lists.json";
+import Sponsors from "../components/Sponsors/sponsors";
+import About from "../components/About/about";
+import TicketCards from "../components/Cards/ticketCards";
+import Heading from "../components/Typography/heading";
+import Paragraph from "../components/Typography/paragraph";
+import Subcription from "../components/Form/subscription";
+import Speaker from "../components/Speaker/speaker";
+import speakers from "../config/speakers.json";
+import Link from "next/link";
+import Button from "../components/Buttons/button";
+import Dropdown from "../components/Dropdown/dropdown";
export default function Home() {
- const isTablet = useMediaQuery({ maxWidth: '1118px' });
- const [speakersList, setSpeakersList] = useState([]);
- const [city, setCity] = useState("");
- speakers[0].lists = [];
- speakers.map((speaker) => {
- if (Array.isArray(speaker.lists) && Object.keys(speaker.lists).length > 0) {
- speakers[0].lists.push(...speaker.lists);
- }
- });
- const list = speakers[0].lists.filter((obj, index) => {
- return index === speakers[0].lists.findIndex(o => obj.name=== o.name);
- });
- speakers[0].lists =[...list];
-
- useEffect(() => {
- setCity(speakers[0]);
- setSpeakersList(speakers[0].lists);
- },[]);
- return (
-
-
-
AsyncAPI Conference
-
-
-
-
-
-
-
-
-
-
-
- Meet The Speakers
-
-
-
- Discover the inspiring voices shaping our event, each bringing unique insights and expertise to the forefront of their respective fields.
-
-
-
-
- {isTablet ? (
-
-
-
- ) : (
-
-
- {speakers.map((speaker) => {
- return (
-
{
- setCity(speaker);
- setSpeakersList(speaker.lists);
- }}
- >
-
- {speaker.city}
-
-
- );
- })}
-
-
- )}
-
+ const isTablet = useMediaQuery({ maxWidth: "1118px" });
+ const [speakersList, setSpeakersList] = useState([]);
+ const [city, setCity] = useState("");
+ speakers[0].lists = [];
+ speakers.map((speaker) => {
+ if (Array.isArray(speaker.lists) && Object.keys(speaker.lists).length > 0) {
+ speakers[0].lists.push(...speaker.lists);
+ }
+ });
+ const list = speakers[0].lists.filter((obj, index) => {
+ return index === speakers[0].lists.findIndex((o) => obj.name === o.name);
+ });
+ speakers[0].lists = [...list];
-
- {typeof speakersList === 'string' ? (
-
-
-
- {city.city} Speakers To Be Announced Soon - Stay Tuned!
-
-
-
- ) : Object.keys(speakersList).length > 0 ? (
-
- {speakersList.map((speaker, i) => {
- return (
-
- );
- })}
-
- ) : (
-
-
-
- {city.city} Speakers Coming Soon - Stay Tuned!
-
-
- We are actively accepting speaker applications, and you
- can start your journey by clicking the button below. Join
- us on stage and share your valuable insights with our
- enthusiastic audience!
-
-
-
-
- Apply as a Speaker
-
-
-
-
-
- )}
-
-
-
-
-
- Tickets Sale [Coming Soon]
-
-
-
- Experience the Future of Asynchronous Communication: Tickets for Sale for the AsyncAPI Conference on Tour!
-
-
-
- {cities.map((city) => )}
-
-
-
-
-
-
-
-
- );
+ useEffect(() => {
+ setCity(speakers[0]);
+ setSpeakersList(speakers[0].lists);
+ }, []);
+ return (
+
+
+
AsyncAPI Conference
+
+
+
+
+
+
+
+
+
+
+
+ Meet The Speakers
+
+
+
+ Discover the inspiring voices shaping our event, each bringing
+ unique insights and expertise to the forefront of their
+ respective fields.
+
+
+
+
+ {isTablet ? (
+
+
+
+ ) : (
+
+
+ {speakers.map((speaker) => {
+ return (
+
{
+ setCity(speaker);
+ setSpeakersList(speaker.lists);
+ }}
+ >
+
+ {speaker.city}
+
+
+ );
+ })}
+
+
+ )}
+
+
+
+ {typeof speakersList === "string" ? (
+
+
+
+ {city.city} Speakers To Be Announced Soon - Stay Tuned!
+
+
+
+ ) : Object.keys(speakersList).length > 0 ? (
+
+ {speakersList.map((speaker, i) => {
+ return (
+
+ );
+ })}
+
+ ) : (
+
+
+
+ {city.city} Speakers Coming Soon - Stay Tuned!
+
+
+ We are actively accepting speaker applications, and you
+ can start your journey by clicking the button below.
+ Join us on stage and share your valuable insights with
+ our enthusiastic audience!
+
+
+
+
+ Apply as a Speaker
+
+
+
+
+
+ )}
+
+
+
+
+
+ Tickets Sale [Coming Soon]
+
+
+
+ Experience the Future of Asynchronous Communication: Tickets for
+ Sale for the AsyncAPI Conference on Tour!
+
+
+
+ {cities.map((city) => (
+
+ ))}
+
+
+
+
+
+
+
+
+ );
}
diff --git a/pages/venue/[id].js b/pages/venue/[id].js
index e0a2b21e..d6ba2492 100644
--- a/pages/venue/[id].js
+++ b/pages/venue/[id].js
@@ -1,82 +1,97 @@
/* eslint-disable react/no-unescaped-entities */
-import React from 'react';
-import cities from '../../config/city-lists.json';
-import Button from '../../components/Buttons/button';
-import Heading from '../../components/Typography/heading';
-import Paragraph from '../../components/Typography/paragraph';
-import speakers from '../../config/speakers.json';
-import Sponsors from '../../components/Sponsors/sponsors';
-import Agenda from '../../components/Agenda/agenda';
+import React from "react";
+import cities from "../../config/city-lists.json";
+import Button from "../../components/Buttons/button";
+import Heading from "../../components/Typography/heading";
+import Paragraph from "../../components/Typography/paragraph";
+import speakers from "../../config/speakers.json";
+import Sponsors from "../../components/Sponsors/sponsors";
+import Agenda from "../../components/Agenda/agenda";
export async function getStaticProps({ params }) {
- let res = {};
- const data = cities.filter((p) => p.name === params.id);
- res = data[0];
- const getSpeakers = speakers.filter((s) => s.city === res?.name);
- res.speakers = getSpeakers[0].lists;
- res.agenda = getSpeakers[0].agenda || null;
- return {
- props: {
- city: res,
- },
- };
+ let res = {};
+ const data = cities.filter((p) => p.name === params.id);
+ res = data[0];
+ const getSpeakers = speakers.filter((s) => s.city === res?.name);
+ res.speakers = getSpeakers[0].lists;
+ res.agenda = getSpeakers[0].agenda || null;
+ return {
+ props: {
+ city: res,
+ },
+ };
}
export async function getStaticPaths() {
- const paths = cities.map((city) => ({
- params: { id: city.name },
- }));
- return {
- paths,
- fallback: false,
- };
+ const paths = cities.map((city) => ({
+ params: { id: city.name },
+ }));
+ return {
+ paths,
+ fallback: false,
+ };
}
function Venue({ city }) {
- return (
-
-
-
-
-
- {city.name}, {city.country}
-
-
{city.description}
+ return (
+
+
+
+
+
+ {city.name}, {city.country}
+
+
+ {city.description}
+
-
-
- {city.address}
-
-
-
- {city.date}
-
- {city.ended ? "" :
}
-
-
-
-
-
-
- );
+
+
+ {city.address}
+
+
+
+ {city.date}
+
+ {city.ended ? (
+ ""
+ ) : (
+
+ )}
+
+
+
+
+
+
+ );
}
export default Venue;
diff --git a/postcss.config.js b/postcss.config.js
index 33ad091d..12a703d9 100644
--- a/postcss.config.js
+++ b/postcss.config.js
@@ -3,4 +3,4 @@ module.exports = {
tailwindcss: {},
autoprefixer: {},
},
-}
+};
diff --git a/styles/globals.css b/styles/globals.css
index 6d1d8e73..b93dd3ae 100644
--- a/styles/globals.css
+++ b/styles/globals.css
@@ -1,21 +1,21 @@
@tailwind base;
@tailwind components;
@tailwind utilities;
-@import url('https://fonts.googleapis.com/css2?family=Fira+Code:wght@300;400;500;600;700&display=swap');
-@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400&family=Work+Sans:wght@300;400;500;600;700&display=swap');
+@import url("https://fonts.googleapis.com/css2?family=Fira+Code:wght@300;400;500;600;700&display=swap");
+@import url("https://fonts.googleapis.com/css2?family=Inter:wght@300;400&family=Work+Sans:wght@300;400;500;600;700&display=swap");
-:root{
- --bg-color: white;
+:root {
+ --bg-color: white;
}
html,
body {
padding: 0;
margin: 0;
- font-family: 'Work Sans', sans-serif;
+ font-family: "Work Sans", sans-serif;
scroll-behavior: smooth;
overflow-x: hidden;
- background:#1B1130;
+ background: #1b1130;
}
.text-gradient {
@@ -37,11 +37,11 @@ body {
@keyframes GradientAnimation {
0% {
- background-position: 0% 50%
+ background-position: 0% 50%;
}
100% {
- background-position: 200% 50%
+ background-position: 200% 50%;
}
}
@@ -49,8 +49,8 @@ body {
max-width: 1400px;
} */
-@media(max-width:992px){
- .container{
+@media (max-width: 992px) {
+ .container {
padding-left: 1rem;
padding-right: 1rem;
}
@@ -62,149 +62,170 @@ body {
}
.slick-track {
display: flex !important;
-
}
-.slick-dots{
+.slick-dots {
position: relative !important;
bottom: 0 !important;
}
.gradient-bg {
- background-image: linear-gradient(225deg, #2DCCFD 9.35%, #AD20E2 88.41%) !important;
+ background-image: linear-gradient(
+ 225deg,
+ #2dccfd 9.35%,
+ #ad20e2 88.41%
+ ) !important;
}
-.navbg:hover, .navbg:focus{
- background: linear-gradient(225deg, #AD20E2 9.35%, #2DCCFD 88.41%);
+.navbg:hover,
+.navbg:focus {
+ background: linear-gradient(225deg, #ad20e2 9.35%, #2dccfd 88.41%);
}
-.kinda-dark{
- background: rgba(0, 0, 0, 0.75)
+.kinda-dark {
+ background: rgba(0, 0, 0, 0.75);
}
-.sponsor-bg{
- background: linear-gradient(225deg, #AD20E2 9.35%, #2DCCFD 88.41%);
+.sponsor-bg {
+ background: linear-gradient(225deg, #ad20e2 9.35%, #2dccfd 88.41%);
mix-blend-mode: normal;
}
-.dropDown{
- box-shadow: 0px 59px 100px rgba(0, 0, 0, 0.25), 0px 44px 94px rgba(0, 0, 0, 0.15);
+.dropDown {
+ box-shadow:
+ 0px 59px 100px rgba(0, 0, 0, 0.25),
+ 0px 44px 94px rgba(0, 0, 0, 0.15);
}
.no-border {
border: none !important;
}
-.header-bg{
-background: linear-gradient(320deg, #2db4fd 10.35%, #410854 88.41%);
+.header-bg {
+ background: linear-gradient(320deg, #2db4fd 10.35%, #410854 88.41%);
}
-.card-bg{
+.card-bg {
/* background: linear-gradient(119.66deg, rgba(255, 255, 255, 0.18) 6.74%, rgba(255, 255, 255, 0.06) 98.36%);
border: 2px solid rgba(255, 255, 255, 0.64); */
-/* box-shadow: 0px 40px 20px rgba(0, 0, 0, 0.05);
+ /* box-shadow: 0px 40px 20px rgba(0, 0, 0, 0.05);
backdrop-filter: blur(10px); */
-/* Note: backdrop-filter has minimal browser support */
-background-position: center;
-background-size: cover ;
-background-color: rgba(228, 228, 228, 0.046);
-opacity: 1;
-border-radius: 30px;
+ /* Note: backdrop-filter has minimal browser support */
+ background-position: center;
+ background-size: cover;
+ background-color: rgba(228, 228, 228, 0.046);
+ opacity: 1;
+ border-radius: 30px;
}
-.card{
- background: linear-gradient(119.66deg, rgba(255, 255, 255, 0.18) 6.74%, rgba(255, 255, 255, 0.06) 98.36%);
-border: 2px solid rgba(255, 255, 255, 0.64);
-box-shadow: 0px 40px 20px rgba(0, 0, 0, 0.05);
-backdrop-filter: blur(10px);
-/* Note: backdrop-filter has minimal browser support */
-border-radius: 8px;
+.card {
+ background: linear-gradient(
+ 119.66deg,
+ rgba(255, 255, 255, 0.18) 6.74%,
+ rgba(255, 255, 255, 0.06) 98.36%
+ );
+ border: 2px solid rgba(255, 255, 255, 0.64);
+ box-shadow: 0px 40px 20px rgba(0, 0, 0, 0.05);
+ backdrop-filter: blur(10px);
+ /* Note: backdrop-filter has minimal browser support */
+ border-radius: 8px;
}
-.subscription{
- background: linear-gradient(119.66deg, rgba(255, 255, 255, 0.054) 6.74%, rgba(255, 255, 255, 0.018) 98.36%);
-box-shadow: 0px 33.2278px 16.6139px rgba(0, 0, 0, 0.05);
-backdrop-filter: blur(8.30696px);
-mix-blend-mode: lighten;
+.subscription {
+ background: linear-gradient(
+ 119.66deg,
+ rgba(255, 255, 255, 0.054) 6.74%,
+ rgba(255, 255, 255, 0.018) 98.36%
+ );
+ box-shadow: 0px 33.2278px 16.6139px rgba(0, 0, 0, 0.05);
+ backdrop-filter: blur(8.30696px);
+ mix-blend-mode: lighten;
}
-
.color-effect {
- position: absolute;
- width: 100vw;
- max-width: none;
- bottom: 400px;
- will-change: transform;
- transform: translate3d(0%, 9.9964%, 0px) scale3d(1, 1, 1) rotateX(0deg) rotateY(0deg) rotateZ(0deg) skew(0deg, 0deg);
- transform-style: preserve-3d;
- vertical-align: middle;
- display: inline-block;
+ position: absolute;
+ width: 100vw;
+ max-width: none;
+ bottom: 400px;
+ will-change: transform;
+ transform: translate3d(0%, 9.9964%, 0px) scale3d(1, 1, 1) rotateX(0deg)
+ rotateY(0deg) rotateZ(0deg) skew(0deg, 0deg);
+ transform-style: preserve-3d;
+ vertical-align: middle;
+ display: inline-block;
}
@media (max-width: 780px) {
- .color-effect{
+ .color-effect {
bottom: 700px;
}
}
/* title styles */
-.home-title span{
- position: relative;
- overflow: hidden;
- display: block;
- line-height: 1.2;
-
-}
-
-.home-title span::after{
- content: '';
- position: absolute;
- top: 0;
- right: 0;
- width: 100%;
- height: 100%;
- background: #b31fe4;
- animation: a-ltr-after 2s cubic-bezier(.77,0,.18,1) forwards;
- transform: translateX(-101%);
-}
-
-.home-title span::before{
- content: '';
- position: absolute;
- color: white;
- top: 0;
- right: 0;
- width: 100%;
- height: 100%;
- background: var(--bg-color);
- animation: a-ltr-before 2s cubic-bezier(.77,0,.18,1) forwards;
- transform: translateX(0);
+.home-title span {
+ position: relative;
+ overflow: hidden;
+ display: block;
+ line-height: 1.2;
+}
+
+.home-title span::after {
+ content: "";
+ position: absolute;
+ top: 0;
+ right: 0;
+ width: 100%;
+ height: 100%;
+ background: #b31fe4;
+ animation: a-ltr-after 2s cubic-bezier(0.77, 0, 0.18, 1) forwards;
+ transform: translateX(-101%);
+}
+
+.home-title span::before {
+ content: "";
+ position: absolute;
+ color: white;
+ top: 0;
+ right: 0;
+ width: 100%;
+ height: 100%;
+ background: var(--bg-color);
+ animation: a-ltr-before 2s cubic-bezier(0.77, 0, 0.18, 1) forwards;
+ transform: translateX(0);
}
.home-title span:nth-of-type(1)::before,
-.home-title span:nth-of-type(1)::after{
- animation-delay: 1s;
+.home-title span:nth-of-type(1)::after {
+ animation-delay: 1s;
}
.home-title span:nth-of-type(2)::before,
-.home-title span:nth-of-type(2)::after{
- animation-delay: 1.5s;
+.home-title span:nth-of-type(2)::after {
+ animation-delay: 1.5s;
}
-@keyframes a-ltr-after{
- 0% {transform: translateX(-100%)}
- 100% {transform: translateX(101%)}
+@keyframes a-ltr-after {
+ 0% {
+ transform: translateX(-100%);
+ }
+ 100% {
+ transform: translateX(101%);
+ }
}
-@keyframes a-ltr-before{
- 0% {transform: translateX(0)}
- 100% {transform: translateX(200%)}
+@keyframes a-ltr-before {
+ 0% {
+ transform: translateX(0);
+ }
+ 100% {
+ transform: translateX(200%);
+ }
}
-.hoverEffect{
+.hoverEffect {
transition: transform 0.3s ease-in-out; /* Add a smooth transition effect */
}
.hoverEffect:hover {
transform: scale(1.1); /* Scale the image by 10% on hover */
-}
\ No newline at end of file
+}
diff --git a/tailwind.config.js b/tailwind.config.js
index ed59dbdc..7bd5d5ae 100644
--- a/tailwind.config.js
+++ b/tailwind.config.js
@@ -1,4 +1,3 @@
-
const dark = {
300: "#E8E2F4",
400: "#C6BED9",
@@ -8,36 +7,37 @@ const dark = {
};
module.exports = {
- content: [
- './pages/**/*.{js,ts,jsx,tsx}',
- './components/**/*.{js,ts,jsx,tsx}',
- ],
- theme: {
- container: {
- padding: {
- DEFAULT: '12rem',
- sm: '2rem',
- lg: '4rem',
- xl: '5rem',
- '2xl': '6rem',
- },
- },
- backgroundImage: {
- madrid: "url('https://images.unsplash.com/photo-1539037116277-4db20889f2d4?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1470&q=80')"
- },
- extend: {
- colors: {
- dark: dark,
- },
- },
- screens: {
- xl: { max: '1279px' },
- lg: { max: '1118px' },
- sm: { max: '590px' },
- },
- fontFamily: {
- secondary: ['Fira Code', 'monospace'],
- },
- },
- plugins: [],
+ content: [
+ "./pages/**/*.{js,ts,jsx,tsx}",
+ "./components/**/*.{js,ts,jsx,tsx}",
+ ],
+ theme: {
+ container: {
+ padding: {
+ DEFAULT: "12rem",
+ sm: "2rem",
+ lg: "4rem",
+ xl: "5rem",
+ "2xl": "6rem",
+ },
+ },
+ backgroundImage: {
+ madrid:
+ "url('https://images.unsplash.com/photo-1539037116277-4db20889f2d4?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1470&q=80')",
+ },
+ extend: {
+ colors: {
+ dark: dark,
+ },
+ },
+ screens: {
+ xl: { max: "1279px" },
+ lg: { max: "1118px" },
+ sm: { max: "590px" },
+ },
+ fontFamily: {
+ secondary: ["Fira Code", "monospace"],
+ },
+ },
+ plugins: [],
};