diff --git a/components/Accordion.tsx b/components/Accordion.tsx new file mode 100644 index 000000000..02b50ab2b --- /dev/null +++ b/components/Accordion.tsx @@ -0,0 +1,94 @@ +import React, { useState, useEffect } from 'react'; +import { useRouter } from 'next/router'; + +interface AccordionItem { + question: string; + answer: string; + id: number; +} + +interface AccordionProps { + items: AccordionItem[]; +} + +const Accordion: React.FC = ({ items }) => { + const [activeIndex, setActiveIndex] = useState(null); + const router = useRouter(); + + const handleToggle = (index: number) => { + setActiveIndex((prevIndex) => (prevIndex === index ? null : index)); + }; + + useEffect(() => { + const hash = router.asPath.split('#')[1]; + if (hash) { + const id = parseInt(hash, 10); + const index = items.findIndex((item) => item.id === id); + if (index !== -1) { + setActiveIndex(index); + + setTimeout(() => { + const element = document.getElementById(hash); + if (element) { + const navbarHeight = 150; + const offset = element.offsetTop - navbarHeight; + window.scrollTo({ top: offset, behavior: 'smooth' }); + } + }, 0); + } + } + }, [items, router.asPath]); + + const handleLinkClick = (id: number) => { + const index = items.findIndex((item) => item.id === id); + setActiveIndex(index); + + const newUrl = `#${id}`; + router.push(newUrl, undefined, { shallow: true }); + }; + + return ( +
+ {items.map((item, index) => ( +
+
+ +
handleToggle(index)} + > + + +
+
+ {activeIndex === index && ( +
+ {item.answer} +
+ )} +
+ ))} +
+ ); +}; + +export default Accordion; diff --git a/components/Card.tsx b/components/Card.tsx new file mode 100644 index 000000000..325084a82 --- /dev/null +++ b/components/Card.tsx @@ -0,0 +1,113 @@ +import React from 'react'; +import Link from 'next/link'; +import TextTruncate from 'react-text-truncate'; +interface CardProps { + title: string; + body: string; + icon?: string; + link?: string; + image?: string; + extended?: boolean; + headerSize?: 'small' | 'medium' | 'large'; + bodyTextSize?: 'small' | 'medium' | 'large'; +} + +const CardBody = ({ + title, + body, + icon, + link, + image, + extended, + headerSize, + bodyTextSize, +}: CardProps) => { + const headerSizeClasses: Record = { + small: 'text-[0.9rem]', + medium: 'text-[1.3rem]', + large: 'text-[2rem]', + }; + const bodyTextSizeClasses: Record = { + small: 'text-[0.85rem]', + medium: 'text-[1rem]', + large: 'text-[1.5rem]', + }; + return ( +
+
+ {image && } +
+
+ {icon && ( + + {title} + + )} +

+ {title} +

+
+
+

+ {extended && } + {!extended && } +

+ {link && ( +

+ Read More +

+ )} +
+ ); +}; + +const Card: React.FC = ({ + title, + body, + icon, + link, + image, + extended, + headerSize, + bodyTextSize, +}) => { + return ( + <> + {link ? ( + + + + ) : ( + + )} + + ); +}; + +export default Card; diff --git a/components/Faq.tsx b/components/Faq.tsx new file mode 100644 index 000000000..fd0f3f2b7 --- /dev/null +++ b/components/Faq.tsx @@ -0,0 +1,18 @@ +import React from 'react'; +import faqData from '../data/faq.json'; +import Accordion from '~/components/Accordion'; + +export default function Faq({ category }: { category: string }) { + const filteredFAQs = faqData.filter((item) => item.category === category); + + return ( +
+
+

+ {category.toUpperCase()} +

+ +
+
+ ); +} diff --git a/components/Layout.tsx b/components/Layout.tsx index 8c019d55e..6581ccca5 100644 --- a/components/Layout.tsx +++ b/components/Layout.tsx @@ -41,8 +41,8 @@ export default function Layout({ ); useEffect(() => { - // Check if the URL contains "#community" - if (window.location.hash === '#community') { + // Check if the URL contains "community" + if (window.location.hash === 'community') { // Find the anchor element by its ID const target = document.getElementById('community'); @@ -198,7 +198,7 @@ const MainNavigation = () => { /> @@ -217,12 +217,12 @@ const MainNavigation = () => { /> -
+
{ @@ -301,7 +301,7 @@ const MobileNav = () => { /> diff --git a/components/Sidebar.tsx b/components/Sidebar.tsx index 0ba798716..16ad66826 100644 --- a/components/Sidebar.tsx +++ b/components/Sidebar.tsx @@ -91,8 +91,11 @@ const SegmentSubtitle = ({ label }: { label: string }) => { const getDocsPath = [ '/overview/what-is-jsonschema', '/overview/sponsors', + '/overview/case-studies', '/overview/similar-technologies', + '/overview/use-cases', '/overview/code-of-conduct', + '/overview/faq', ]; const getStartedPath = [ '/learn/json-schema-examples', @@ -140,6 +143,7 @@ const getSpecificationPath = [ '/specification-links', '/specification', ]; + export const SidebarLayout = ({ children }: { children: React.ReactNode }) => { const router = useRouter(); const [open, setOpen] = useState(false); @@ -214,7 +218,6 @@ export const SidebarLayout = ({ children }: { children: React.ReactNode }) => {
-
@@ -287,7 +290,6 @@ export const DocsNav = ({ const [reference_icon, setReference_icon] = useState(''); const [spec_icon, setSpec_icon] = useState(''); const [overview_icon, setOverview_icon] = useState(''); - useEffect(() => { if (resolvedTheme === 'dark') { setOverview_icon('/icons/eye-dark.svg'); @@ -348,6 +350,17 @@ export const DocsNav = ({ label='Sponsors' setOpen={setOpen} /> + + + https://jsonbinpack.sourcemeta.com" + }, + { + "title": "Fuzzing, enumeration, and generation", + "summary": "Security applications need to generate examples of JSON documents within the valid set, and outside the valid set." + }, + { + "title": "Partial validation", + "summary": "Due to technical limitations, some JSON parsers may only be able to understand a subset of the JSON value space, and it makes sense to validate the value read by the application, instead of the JSON document provided to the JSON parser." + }, + { + "title": "Automated Testing", + "summary": "Good definitions of input/output that schemas provide enable contract and property based testing scenarios. For example: https://schemathesis.readthedocs.io/en/stable/" + }, + { + "title": "Machine-readable profiles of Web resources", + "summary": "A Web server that offers a JSON document should be able to link to a profile document that describes the meaning of the data in a machine-readable form." + }, + { + "title": "Schema Inference", + "summary": "This is pretty useful in data science. You may have huge JSON datasets and don't know the structure well. You can use tools that will derive a JSON Schema from the data for you to better understand it and act on it." + }, + { + "title": "Hypermedia", + "summary": "Generic user-agents must be able to make use of the schema as it evolves, including Web browsers, spiders, and automated tooling. It should support loose coupling (like an HTML homepage); so a schema should be able to change, add, and remove features with minimal breakage for compatible clients." + }, + { + "title": "Results and Reporting", + "summary": "The party that is providing the schema and input may not be the same party that is performing the validation; in this case, there should be a standard way to abstract away the validator interface, and report the results of a validation operation (validation result, annotations, and errors)." + }, + { + "title": "External validation", + "summary": "Authors may embed resources of other media types, such as text documents, or base64 or hex-encoded binary documents; and may wish to pass off validation of these documents to another software tool." + }, + { + "title": "Intra-document data consistency validation", + "summary": "A JSON document may carry relational data that must be internally consistent." + }, + { + "title": "Inter-database consistency validation", + "summary": "A JSON document may carry relational data that must be verified against outside data sources." + }, + { + "title": "Linting", + "summary": "Sometimes it's desirable to require formatting that does not impact the application-level meaning of the document, but instead specifies requirements purely for aesthetic or compatibility reasons." + } +] diff --git a/pages/community/index.page.tsx b/pages/community/index.page.tsx new file mode 100644 index 000000000..5edea97e4 --- /dev/null +++ b/pages/community/index.page.tsx @@ -0,0 +1,436 @@ +import React from 'react'; +import { getLayout } from '~/components/SiteLayout'; +import { SectionContext } from '~/context'; +import imageData from '~/data/community.json'; +import fs from 'fs'; +import matter from 'gray-matter'; +import readingTime from 'reading-time'; +import Link from 'next/link'; +import TextTruncate from 'react-text-truncate'; +import { GetStaticProps } from 'next'; +import Card from '~/components/Card'; +import Image from 'next/image'; +import ical from 'node-ical'; +import moment from 'moment-timezone'; + +export const getStaticProps: GetStaticProps = async () => { + const PATH = 'pages/blog/posts'; + const files = fs.readdirSync(PATH); + const blogPosts = files + .filter((file) => file.endsWith('.md')) + .map((fileName) => { + const slug = fileName.replace('.md', ''); + const fullFileName = fs.readFileSync(`${PATH}/${slug}.md`, 'utf-8'); + const { data: frontmatter, content } = matter(fullFileName); + return { + slug: slug, + frontmatter, + content, + }; + }) + .sort((a, b) => { + const dateA = new Date(a.frontmatter.date).getTime(); + const dateB = new Date(b.frontmatter.date).getTime(); + return dateA < dateB ? 1 : -1; + }) + .slice(0, 5); + + async function fetchRemoteICalFile(url: string) { + try { + const response = await fetch(url, { method: 'GET', mode: 'no-cors' }); + if (!response.ok) { + throw new Error(`HTTP error! status: ${response.status}`); + } + const data = await response.text(); + return data; + } catch (error) { + console.error('Error fetching iCal file:', error); + return null; + } + } + const remoteICalUrl = + 'https://calendar.google.com/calendar/ical/info%40json-schema.org/public/basic.ics'; + const datesInfo = await fetchRemoteICalFile(remoteICalUrl) + .then((icalData: any) => + printEventsForNextFourWeeks(ical.parseICS(icalData)), + ) + .catch((error) => console.error('Error:', error)); + return { + props: { + blogPosts, + datesInfo, + fallback: false, + }, + }; +}; +function printEventsForNextFourWeeks(icalData: { [x: string]: any }) { + const arrayDates = []; + if (!icalData) { + console.error('iCal data is empty or invalid.'); + return; + } + + const today = moment().startOf('day'); + const nextFourWeeksEnd = moment().add(4, 'weeks').endOf('day'); + + for (const event of Object.values(icalData)) { + if (event.type === 'VEVENT') { + const title = event.summary; + + const timezoneL = moment.tz.guess(); + const startDate = moment.tz(event.start, timezoneL); + + if (event.rrule !== undefined) { + const dates = event.rrule.between( + today.toDate(), + nextFourWeeksEnd.toDate(), + true, + ); + + for (const date of dates) { + const startDate = moment.tz(date, timezoneL); + + if (startDate.isBetween(today, nextFourWeeksEnd, undefined, '[]')) { + const dateTimezone = moment.tz.zone(event.start.tz); + const localTimezone = moment.tz.guess(); + const tz = + event.rrule.origOptions.tzid === localTimezone + ? event.rrule.origOptions.tzid + : localTimezone; + const timezone = moment.tz.zone(tz); + let offset; + if (timezone && dateTimezone) + offset = timezone.utcOffset(date) - dateTimezone.utcOffset(date); + const newDate = moment(date).add(offset, 'minutes').toDate(); + + const start = moment(newDate); + const utcDate = start.utc(); + + const time = utcDate.format('MMMM Do YYYY, h:mm a'); + const day = utcDate.format('D'); + const parsedStartDate = utcDate.format('YYYY-MM-DD HH:mm:ss'); + arrayDates.push({ + title, + time, + day, + timezone: 'UTC', + parsedStartDate, + }); + } + } + } else { + if (startDate.isBetween(today, nextFourWeeksEnd, undefined, '[]')) { + const utcDate = startDate.utc(); + + const time = utcDate.format('MMMM Do YYYY, h:mm a'); + const day = utcDate.format('D'); + const parsedStartDate = startDate.format('YYYY-MM-DD HH:mm:ss'); + arrayDates.push({ + title, + time, + day, + timezone: 'UTC', + parsedStartDate, + }); + } + } + } + } + + arrayDates.sort( + (x, y) => + new Date(x.parsedStartDate).getTime() - + new Date(y.parsedStartDate).getTime(), + ); + + return arrayDates; +} + +export default function communityPages(props: any) { + const blogPosts = props.blogPosts; + const timeToRead = Math.ceil(readingTime(blogPosts[0].content).minutes); + + return ( + +
+
+
+
+
+

+ Welcome to the +
+ JSON Schema Community +

+
+
+

+ Join the Community to learn, share ideas, ask questions, build + JSON Schema tooling, and get involved in the future of the + specifications. +

+
+
+ +
+
+
+
+
+
+ {imageData.map((avatar, index) => ( + {avatar.alt} + ))} +
+
+
+
+
+
+ + +
+
+
+
+
+
+

+ Ambassadors Program +

+

+ The JSON Schema Ambassadors Program recognize the people who + drive adoption, innovation and knowledge sharing in the JSON + Schema community. +

+ +
+
+
+
+ +
+
+
+

+ Join the JSON Schema Slack workspace! +

+

+ Join our Slack to ask questions, get feedback on your + projects, and connect with +5000 practitioners and experts. +

+ +
+
+
+
+
+ +
+
+
+
+

+ JSON Schema Community Meetings & Events +

+

+ We hold monthly Office Hours and weekly Open Community Working + Meetings. Office Hours are every first Tuesday of the month at + 15:00 BST, and by appointment. Open Community Working Meetings + are every Monday at 14:00 PT. +

+ +
+
+
+
+

+ Upcoming events +

+ {props.datesInfo.map((event: any, index: any) => ( +
+
+

{event.day}

+
+
+

+ {event.title} +
+ + {event.time}({event.timezone}) + +

+
+
+ ))} +
+
+
+
+
+
+
+
+

+ Welcome to +
+ the JSON Schema Blog! +

+

+

+ Want to publish a blog post? Check out the  + + guidelines + +  and submit yours! +

{' '} +

+ +
+
+
+
+ + +

+ {blogPosts[0].frontmatter.title} +

+
+ +
+
+
+
+

+ {blogPosts[0].frontmatter.authors[0].name} +

+
+ + {blogPosts[0].frontmatter.date} ·{timeToRead}{' '} + min min read + +
+
+
+ + +
+
+
+
+
+ + ); +} + +communityPages.getLayout = getLayout; diff --git a/pages/docs/index.page.tsx b/pages/docs/index.page.tsx new file mode 100644 index 000000000..6c50f982d --- /dev/null +++ b/pages/docs/index.page.tsx @@ -0,0 +1,65 @@ +import React from 'react'; +import { getLayout } from '~/components/Sidebar'; +import Head from 'next/head'; +import { Headline1 } from '~/components/Headlines'; +import { SectionContext } from '~/context'; +import Card from '~/components/Card'; +import { DocsHelp } from '~/components/DocsHelp'; + +export default function Welcome() { + const markdownFile = '_indexPage'; + + const newTitle = 'Welcome'; + return ( + + + {newTitle} + + {newTitle} +

+ JSON Schema is a declarative language for annotating and validating JSON + documents' structure, constraints, and data types. It provides a way to + standardize and define expectations for JSON data. +
+
+ Explore the docs +

+
+ + + + +
+ +
+ ); +} +Welcome.getLayout = getLayout; diff --git a/pages/implementers/_index.md b/pages/implementers/_index.md index 7c9b5d8ac..4468d75d0 100644 --- a/pages/implementers/_index.md +++ b/pages/implementers/_index.md @@ -7,7 +7,3 @@ For Implementers ========================= Welcome to the **Implementers** section! The place for implementation maintainers' Docs. - -What you'll find in this section? -* [Common Interfaces across JSON Schema Implementations](./implementers/interfaces) -* [Bowtie](https://docs.bowtie.report/en/stable/). The meta-validator for JSON Schema implementations diff --git a/pages/implementers/index.page.tsx b/pages/implementers/index.page.tsx index 278f4e23a..425d1f4c9 100644 --- a/pages/implementers/index.page.tsx +++ b/pages/implementers/index.page.tsx @@ -5,6 +5,7 @@ import matter from 'gray-matter'; import StyledMarkdown from '~/components/StyledMarkdown'; import { DocsHelp } from '~/components/DocsHelp'; import { SectionContext } from '~/context'; +import Card from '~/components/Card'; export async function getStaticProps() { const block1 = fs.readFileSync('pages/implementers/_index.md', 'utf-8'); @@ -22,6 +23,28 @@ export default function ContentExample({ blocks }: { blocks: any[] }) { return ( +
+
+ + +
+
); diff --git a/pages/index.page.tsx b/pages/index.page.tsx index 0c0227bd4..796208561 100644 --- a/pages/index.page.tsx +++ b/pages/index.page.tsx @@ -12,7 +12,6 @@ import { Headline4 } from '~/components/Headlines'; import { GetStaticProps } from 'next'; /* eslint-disable */ -import axios from 'axios'; import ical from 'node-ical'; import moment from 'moment-timezone'; import { useTheme } from 'next-themes'; @@ -49,8 +48,12 @@ export const getStaticProps: GetStaticProps = async () => { // Function to fetch the remote iCal file async function fetchRemoteICalFile(url: string) { try { - const response = await axios.get(url, { method: 'no-cors' }); - return response.data; + const response = await fetch(url, { method: 'GET', mode: 'no-cors' }); + if (!response.ok) { + throw new Error(`HTTP error! status: ${response.status}`); + } + const data = await response.text(); + return data; } catch (error) { console.error('Error fetching iCal file:', error); return null; @@ -60,7 +63,9 @@ export const getStaticProps: GetStaticProps = async () => { const remoteICalUrl = 'https://calendar.google.com/calendar/ical/info%40json-schema.org/public/basic.ics'; // Replace with the actual URL const datesInfo = await fetchRemoteICalFile(remoteICalUrl) - .then((icalData) => printEventsForNextFourWeeks(ical.parseICS(icalData))) + .then((icalData: any) => + printEventsForNextFourWeeks(ical.parseICS(icalData)), + ) .catch((error) => console.error('Error:', error)); // console.log('this is fetched data', datesInfo) return { @@ -367,7 +372,7 @@ const Home = (props: any) => { Start learning JSON Schema
diff --git a/pages/managed-mixed-page/index.page.tsx b/pages/managed-mixed-page/index.page.tsx deleted file mode 100644 index c7513488c..000000000 --- a/pages/managed-mixed-page/index.page.tsx +++ /dev/null @@ -1,33 +0,0 @@ -import React from 'react'; -import { getLayout } from '~/components/Sidebar'; -import fs from 'fs'; -import matter from 'gray-matter'; -import StyledMarkdown from '~/components/StyledMarkdown'; -export async function getStaticProps() { - const block1 = fs.readFileSync( - 'pages/managed-mixed-page/mdblock1.md', - 'utf-8', - ); - const block2 = fs.readFileSync( - 'pages/managed-mixed-page/mdblock2.md', - 'utf-8', - ); - const { content: block1Content } = matter(block1); - const { content: block2Content } = matter(block2); - return { - props: { - blocks: [block1Content, block2Content], - }, - }; -} - -export default function ContentExample({ blocks }: { blocks: any[] }) { - return ( - <> - -
any custom component here
- - - ); -} -ContentExample.getLayout = getLayout; diff --git a/pages/managed-mixed-page/mdblock1.md b/pages/managed-mixed-page/mdblock1.md deleted file mode 100644 index 8b1d84173..000000000 --- a/pages/managed-mixed-page/mdblock1.md +++ /dev/null @@ -1,6 +0,0 @@ -# Markdown 1 -Some text -- list item 1 -- list item 2 -- list item 3 - [My website](https://daily-dev-tips.com) \ No newline at end of file diff --git a/pages/managed-mixed-page/mdblock2.md b/pages/managed-mixed-page/mdblock2.md deleted file mode 100644 index 899683548..000000000 --- a/pages/managed-mixed-page/mdblock2.md +++ /dev/null @@ -1,6 +0,0 @@ -## Block 2 -Some text -- list item 1 -- list item 2 -- list item 3 - [My website](https://daily-dev-tips.com) \ No newline at end of file diff --git a/pages/overview/case-studies/index.page.tsx b/pages/overview/case-studies/index.page.tsx new file mode 100644 index 000000000..13772621d --- /dev/null +++ b/pages/overview/case-studies/index.page.tsx @@ -0,0 +1,42 @@ +import React from 'react'; +import { getLayout } from '~/components/Sidebar'; +import Head from 'next/head'; +import { Headline1 } from '~/components/Headlines'; +import { SectionContext } from '~/context'; +import data from 'data/case-studies.json'; +import Card from '~/components/Card'; +import { DocsHelp } from '~/components/DocsHelp'; + +export default function ContentExample() { + const newTitle = 'Case Studies'; + const markdownFile = '_indexPage'; + + return ( + + + {newTitle} + + {newTitle} +

+ {/* Please fix below dummy text and make it two to three liner so that we can remove the bug of layout shifting :) */} + Learn how organizations are adopting and benefiting from JSON Schema. + Please replace this text with a two to three liner so that we can avoid + the layout shifting bug. +

+
+ {data.map((element, index) => ( + + ))} +
+ +
+ ); +} +ContentExample.getLayout = getLayout; diff --git a/pages/overview/faq/index.page.tsx b/pages/overview/faq/index.page.tsx new file mode 100644 index 000000000..19b9632fa --- /dev/null +++ b/pages/overview/faq/index.page.tsx @@ -0,0 +1,26 @@ +import React from 'react'; +import { getLayout } from '~/components/Sidebar'; +import Head from 'next/head'; +import { SectionContext } from '~/context'; +import Faq from '~/components/Faq'; +import { Headline1 } from '~/components/Headlines'; + +export default function Content() { + const newTitle = 'FAQ'; + + return ( + + + {newTitle} + + {newTitle} +

+ Below you'll find answers to questions we get asked the most about JSON + Schema. +

+ + +
+ ); +} +Content.getLayout = getLayout; diff --git a/pages/overview/use-cases/index.page.tsx b/pages/overview/use-cases/index.page.tsx new file mode 100644 index 000000000..6e2811a51 --- /dev/null +++ b/pages/overview/use-cases/index.page.tsx @@ -0,0 +1,42 @@ +import React from 'react'; +import { getLayout } from '~/components/Sidebar'; +import Head from 'next/head'; +import { SectionContext } from '~/context'; +import { Headline1 } from '~/components/Headlines'; +import Card from '~/components/Card'; +import data from '~/data/use-cases.json'; +import { DocsHelp } from '~/components/DocsHelp'; + +export default function Content() { + const newTitle = 'Use Cases'; + const markdownFile = '_indexPage'; + + return ( + + + {newTitle} + + {newTitle} +

+ Discover everything you can do with JSON Schema. This section presents + the most common use cases for JSON Schema, but but there may be many + more applications waiting to be discovered. +

+
+ {data.map((element, index) => ( + + ))} +
+ +
+ ); +} +Content.getLayout = getLayout; diff --git a/pages/overview/what-is-jsonschema.md b/pages/overview/what-is-jsonschema.md index 52004f4ac..f599848bc 100644 --- a/pages/overview/what-is-jsonschema.md +++ b/pages/overview/what-is-jsonschema.md @@ -70,4 +70,4 @@ To get involved with our community, please make sure you are familiar with the p * **Join [JSON Schema Slack](https://json-schema.org/slack)**. This is the best place to ask questions, learn, get help, or discuss all things JSON Schema. * **Attend our public JSON Schema meetings**. We hold [Office Hours](https://github.com/json-schema-org/community/discussions/34) every first Tuesday at 15:00 BST (and by appointment) and [Open Community Working Meetings](https://github.com/json-schema-org/community/discussions/35) every Monday at 14:00 PT. * **Follow our [YouTube](https://www.youtube.com/watch?v=48S8-GwRh-g&list=PLHVhS4Tj1YZPYt6sMkvf4nW8zKvZExVA4) channel**. Find recordings of our public community meetings and JSON Schema learning resources. -* **Read our [blog](https://json-schema.org/blog)**. Find the latest and greatest stories from our community. +* **Read our [blog](https://json-schema.org/blog)**. Find the latest and greatest stories from our community. \ No newline at end of file diff --git a/public/icons/bulb2.svg b/public/icons/bulb2.svg new file mode 100644 index 000000000..e31d947c7 --- /dev/null +++ b/public/icons/bulb2.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/icons/contribute.svg b/public/icons/contribute.svg new file mode 100644 index 000000000..dd9152e8c --- /dev/null +++ b/public/icons/contribute.svg @@ -0,0 +1,104 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/icons/list.svg b/public/icons/list.svg new file mode 100644 index 000000000..bb9a3e576 --- /dev/null +++ b/public/icons/list.svg @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/public/icons/roadmap.svg b/public/icons/roadmap.svg new file mode 100644 index 000000000..819c40d8f --- /dev/null +++ b/public/icons/roadmap.svg @@ -0,0 +1,115 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/img/community/ambassadors.png b/public/img/community/ambassadors.png new file mode 100644 index 000000000..d6a4c789b Binary files /dev/null and b/public/img/community/ambassadors.png differ diff --git a/public/img/contributers/Akshaybagai52.jpeg b/public/img/contributers/Akshaybagai52.jpeg new file mode 100644 index 000000000..94ffee06a Binary files /dev/null and b/public/img/contributers/Akshaybagai52.jpeg differ diff --git a/public/img/contributers/CarstenWickner.jpeg b/public/img/contributers/CarstenWickner.jpeg new file mode 100644 index 000000000..ec4edb609 Binary files /dev/null and b/public/img/contributers/CarstenWickner.jpeg differ diff --git a/public/img/contributers/Maykkkk.jpeg b/public/img/contributers/Maykkkk.jpeg new file mode 100644 index 000000000..14b000d07 Binary files /dev/null and b/public/img/contributers/Maykkkk.jpeg differ diff --git a/public/img/contributers/Michael-Obele.jpeg b/public/img/contributers/Michael-Obele.jpeg new file mode 100644 index 000000000..aa93ce8c8 Binary files /dev/null and b/public/img/contributers/Michael-Obele.jpeg differ diff --git a/public/img/contributers/Mvishal123.jpeg b/public/img/contributers/Mvishal123.jpeg new file mode 100644 index 000000000..339e19560 Binary files /dev/null and b/public/img/contributers/Mvishal123.jpeg differ diff --git a/public/img/contributers/OlliesWorld.jpeg b/public/img/contributers/OlliesWorld.jpeg new file mode 100644 index 000000000..9f4441dad Binary files /dev/null and b/public/img/contributers/OlliesWorld.jpeg differ diff --git a/public/img/contributers/Saumya40-codes.jpeg b/public/img/contributers/Saumya40-codes.jpeg new file mode 100644 index 000000000..46504d8c4 Binary files /dev/null and b/public/img/contributers/Saumya40-codes.jpeg differ diff --git a/public/img/contributers/SimonDMC.png b/public/img/contributers/SimonDMC.png new file mode 100644 index 000000000..dee52c5b9 Binary files /dev/null and b/public/img/contributers/SimonDMC.png differ diff --git a/public/img/contributers/ThomasAribart.jpeg b/public/img/contributers/ThomasAribart.jpeg new file mode 100644 index 000000000..57e04b4f3 Binary files /dev/null and b/public/img/contributers/ThomasAribart.jpeg differ diff --git a/public/img/contributers/Viicos.jpeg b/public/img/contributers/Viicos.jpeg new file mode 100644 index 000000000..44334174a Binary files /dev/null and b/public/img/contributers/Viicos.jpeg differ diff --git a/public/img/contributers/abhishek-403.png b/public/img/contributers/abhishek-403.png new file mode 100644 index 000000000..e54849382 Binary files /dev/null and b/public/img/contributers/abhishek-403.png differ diff --git a/public/img/contributers/aditya-sharma.jpeg b/public/img/contributers/aditya-sharma.jpeg new file mode 100644 index 000000000..354f7f06b Binary files /dev/null and b/public/img/contributers/aditya-sharma.jpeg differ diff --git a/public/img/contributers/adityasingh.jpeg b/public/img/contributers/adityasingh.jpeg new file mode 100644 index 000000000..5c70cdc95 Binary files /dev/null and b/public/img/contributers/adityasingh.jpeg differ diff --git a/public/img/contributers/akanksha-kushwaha.jpeg b/public/img/contributers/akanksha-kushwaha.jpeg new file mode 100644 index 000000000..81a650439 Binary files /dev/null and b/public/img/contributers/akanksha-kushwaha.jpeg differ diff --git a/public/img/contributers/ali_haider.jpeg b/public/img/contributers/ali_haider.jpeg new file mode 100644 index 000000000..460f7dd27 Binary files /dev/null and b/public/img/contributers/ali_haider.jpeg differ diff --git a/public/img/contributers/alok-gupta.jpeg b/public/img/contributers/alok-gupta.jpeg new file mode 100644 index 000000000..e6fd64076 Binary files /dev/null and b/public/img/contributers/alok-gupta.jpeg differ diff --git a/public/img/contributers/alombarte.jpeg b/public/img/contributers/alombarte.jpeg new file mode 100644 index 000000000..1507eca3f Binary files /dev/null and b/public/img/contributers/alombarte.jpeg differ diff --git a/public/img/contributers/ayush_tiwari.jpeg b/public/img/contributers/ayush_tiwari.jpeg new file mode 100644 index 000000000..88b7a0d89 Binary files /dev/null and b/public/img/contributers/ayush_tiwari.jpeg differ diff --git a/public/img/contributers/bcherny.jpeg b/public/img/contributers/bcherny.jpeg new file mode 100644 index 000000000..391ac6352 Binary files /dev/null and b/public/img/contributers/bcherny.jpeg differ diff --git a/public/img/contributers/beda-hammerschmidt.jpeg b/public/img/contributers/beda-hammerschmidt.jpeg new file mode 100644 index 000000000..ee769b8cf Binary files /dev/null and b/public/img/contributers/beda-hammerschmidt.jpeg differ diff --git a/public/img/contributers/big-andy-coates.png b/public/img/contributers/big-andy-coates.png new file mode 100644 index 000000000..1c1027dc0 Binary files /dev/null and b/public/img/contributers/big-andy-coates.png differ diff --git a/public/img/contributers/darhkvoyd.jpeg b/public/img/contributers/darhkvoyd.jpeg new file mode 100644 index 000000000..c3081b042 Binary files /dev/null and b/public/img/contributers/darhkvoyd.jpeg differ diff --git a/public/img/contributers/dauinh.jpeg b/public/img/contributers/dauinh.jpeg new file mode 100644 index 000000000..613ed0c59 Binary files /dev/null and b/public/img/contributers/dauinh.jpeg differ diff --git a/public/img/contributers/dhairya.jpeg b/public/img/contributers/dhairya.jpeg new file mode 100644 index 000000000..3bcd5b85a Binary files /dev/null and b/public/img/contributers/dhairya.jpeg differ diff --git a/public/img/contributers/eddyashton.jpeg b/public/img/contributers/eddyashton.jpeg new file mode 100644 index 000000000..a69d9386f Binary files /dev/null and b/public/img/contributers/eddyashton.jpeg differ diff --git a/public/img/contributers/gabengar.png b/public/img/contributers/gabengar.png new file mode 100644 index 000000000..6024056b6 Binary files /dev/null and b/public/img/contributers/gabengar.png differ diff --git a/public/img/contributers/jayprakash.jpeg b/public/img/contributers/jayprakash.jpeg new file mode 100644 index 000000000..3921e8829 Binary files /dev/null and b/public/img/contributers/jayprakash.jpeg differ diff --git a/public/img/contributers/jeel-rajodiya.jpeg b/public/img/contributers/jeel-rajodiya.jpeg new file mode 100644 index 000000000..a2654050b Binary files /dev/null and b/public/img/contributers/jeel-rajodiya.jpeg differ diff --git a/public/img/contributers/jeremy-faden.jpeg b/public/img/contributers/jeremy-faden.jpeg new file mode 100644 index 000000000..6fc2654be Binary files /dev/null and b/public/img/contributers/jeremy-faden.jpeg differ diff --git a/public/img/contributers/jeremy-fiel.jpeg b/public/img/contributers/jeremy-fiel.jpeg new file mode 100644 index 000000000..93f1bb58b Binary files /dev/null and b/public/img/contributers/jeremy-fiel.jpeg differ diff --git a/public/img/contributers/jsonschema.png b/public/img/contributers/jsonschema.png new file mode 100644 index 000000000..c7618f2ea Binary files /dev/null and b/public/img/contributers/jsonschema.png differ diff --git a/public/img/contributers/julian-cataldo.jpeg b/public/img/contributers/julian-cataldo.jpeg new file mode 100644 index 000000000..ba44bb430 Binary files /dev/null and b/public/img/contributers/julian-cataldo.jpeg differ diff --git a/public/img/contributers/justin-tay.png b/public/img/contributers/justin-tay.png new file mode 100644 index 000000000..55e92be27 Binary files /dev/null and b/public/img/contributers/justin-tay.png differ diff --git a/public/img/contributers/kalivtrope.jpeg b/public/img/contributers/kalivtrope.jpeg new file mode 100644 index 000000000..3e93956ca Binary files /dev/null and b/public/img/contributers/kalivtrope.jpeg differ diff --git a/public/img/contributers/karenetheridge.jpeg b/public/img/contributers/karenetheridge.jpeg new file mode 100644 index 000000000..3a0c12b78 Binary files /dev/null and b/public/img/contributers/karenetheridge.jpeg differ diff --git a/public/img/contributers/kurtmckee.png b/public/img/contributers/kurtmckee.png new file mode 100644 index 000000000..b76674d3c Binary files /dev/null and b/public/img/contributers/kurtmckee.png differ diff --git a/public/img/contributers/kx412764776.jpeg b/public/img/contributers/kx412764776.jpeg new file mode 100644 index 000000000..4c2bc6a81 Binary files /dev/null and b/public/img/contributers/kx412764776.jpeg differ diff --git a/public/img/contributers/lalitkumawat1m.png b/public/img/contributers/lalitkumawat1m.png new file mode 100644 index 000000000..3f452352c Binary files /dev/null and b/public/img/contributers/lalitkumawat1m.png differ diff --git a/public/img/contributers/lateapexe.jpeg b/public/img/contributers/lateapexe.jpeg new file mode 100644 index 000000000..2fd1dcc14 Binary files /dev/null and b/public/img/contributers/lateapexe.jpeg differ diff --git a/public/img/contributers/matteo-collina.jpeg b/public/img/contributers/matteo-collina.jpeg new file mode 100644 index 000000000..0d692b2fb Binary files /dev/null and b/public/img/contributers/matteo-collina.jpeg differ diff --git a/public/img/contributers/maverox.jpeg b/public/img/contributers/maverox.jpeg new file mode 100644 index 000000000..694e47d58 Binary files /dev/null and b/public/img/contributers/maverox.jpeg differ diff --git a/public/img/contributers/melinda.png b/public/img/contributers/melinda.png new file mode 100644 index 000000000..f31b14791 Binary files /dev/null and b/public/img/contributers/melinda.png differ diff --git a/public/img/contributers/michael-sharber.jpeg b/public/img/contributers/michael-sharber.jpeg new file mode 100644 index 000000000..3935cbee2 Binary files /dev/null and b/public/img/contributers/michael-sharber.jpeg differ diff --git a/public/img/contributers/michaelmior.jpeg b/public/img/contributers/michaelmior.jpeg new file mode 100644 index 000000000..4895f4c6e Binary files /dev/null and b/public/img/contributers/michaelmior.jpeg differ diff --git a/public/img/contributers/mintu-gogoi.jpeg b/public/img/contributers/mintu-gogoi.jpeg new file mode 100644 index 000000000..7981a067a Binary files /dev/null and b/public/img/contributers/mintu-gogoi.jpeg differ diff --git a/public/img/contributers/musemind.png b/public/img/contributers/musemind.png new file mode 100644 index 000000000..d9f083691 Binary files /dev/null and b/public/img/contributers/musemind.png differ diff --git a/public/img/contributers/officeneerajsaini.jpeg b/public/img/contributers/officeneerajsaini.jpeg new file mode 100644 index 000000000..7a4a63e39 Binary files /dev/null and b/public/img/contributers/officeneerajsaini.jpeg differ diff --git a/public/img/contributers/ota-meshi.jpeg b/public/img/contributers/ota-meshi.jpeg new file mode 100644 index 000000000..0c55f5ebd Binary files /dev/null and b/public/img/contributers/ota-meshi.jpeg differ diff --git a/public/img/contributers/paul-waller.jpeg b/public/img/contributers/paul-waller.jpeg new file mode 100644 index 000000000..c41f27c1f Binary files /dev/null and b/public/img/contributers/paul-waller.jpeg differ diff --git a/public/img/contributers/prajjwalyd.jpeg b/public/img/contributers/prajjwalyd.jpeg new file mode 100644 index 000000000..d9e70e3a2 Binary files /dev/null and b/public/img/contributers/prajjwalyd.jpeg differ diff --git a/public/img/contributers/prince-rajput.jpeg b/public/img/contributers/prince-rajput.jpeg new file mode 100644 index 000000000..435ca3c01 Binary files /dev/null and b/public/img/contributers/prince-rajput.jpeg differ diff --git a/public/img/contributers/sahil_shadwal.jpeg b/public/img/contributers/sahil_shadwal.jpeg new file mode 100644 index 000000000..130e0bd4d Binary files /dev/null and b/public/img/contributers/sahil_shadwal.jpeg differ diff --git a/public/img/contributers/saksham_mishra.jpeg b/public/img/contributers/saksham_mishra.jpeg new file mode 100644 index 000000000..f9f78301c Binary files /dev/null and b/public/img/contributers/saksham_mishra.jpeg differ diff --git a/public/img/contributers/sandrina.jpeg b/public/img/contributers/sandrina.jpeg new file mode 100644 index 000000000..02a33857c Binary files /dev/null and b/public/img/contributers/sandrina.jpeg differ diff --git a/public/img/contributers/sarthak.jpeg b/public/img/contributers/sarthak.jpeg new file mode 100644 index 000000000..4548e0359 Binary files /dev/null and b/public/img/contributers/sarthak.jpeg differ diff --git a/public/img/contributers/satyam-kumar.jpeg b/public/img/contributers/satyam-kumar.jpeg new file mode 100644 index 000000000..ebf63c3ab Binary files /dev/null and b/public/img/contributers/satyam-kumar.jpeg differ diff --git a/public/img/contributers/smoya.jpeg b/public/img/contributers/smoya.jpeg new file mode 100644 index 000000000..ef4cf47ec Binary files /dev/null and b/public/img/contributers/smoya.jpeg differ diff --git a/public/img/contributers/tamanna-verma.jpeg b/public/img/contributers/tamanna-verma.jpeg new file mode 100644 index 000000000..18859ea94 Binary files /dev/null and b/public/img/contributers/tamanna-verma.jpeg differ diff --git a/public/img/contributers/tobie.jpeg b/public/img/contributers/tobie.jpeg new file mode 100644 index 000000000..7efe42e93 Binary files /dev/null and b/public/img/contributers/tobie.jpeg differ diff --git a/public/img/contributers/unguul.jpeg b/public/img/contributers/unguul.jpeg new file mode 100644 index 000000000..3b99bc2d1 Binary files /dev/null and b/public/img/contributers/unguul.jpeg differ diff --git a/public/img/contributers/vinitpandit.jpeg b/public/img/contributers/vinitpandit.jpeg new file mode 100644 index 000000000..2c2e7d424 Binary files /dev/null and b/public/img/contributers/vinitpandit.jpeg differ diff --git a/public/img/contributers/vm-001.png b/public/img/contributers/vm-001.png new file mode 100644 index 000000000..679c0fb94 Binary files /dev/null and b/public/img/contributers/vm-001.png differ diff --git a/public/img/event/Json-Schema-Blog.png b/public/img/event/Json-Schema-Blog.png new file mode 100644 index 000000000..1c44e7d57 Binary files /dev/null and b/public/img/event/Json-Schema-Blog.png differ diff --git a/public/img/event/meet.png b/public/img/event/meet.png new file mode 100644 index 000000000..b419ae063 Binary files /dev/null and b/public/img/event/meet.png differ diff --git a/public/img/home-page/slack.png b/public/img/home-page/slack.png new file mode 100644 index 000000000..7b5d6a1e5 Binary files /dev/null and b/public/img/home-page/slack.png differ diff --git a/public/img/logos/6river-logo.svg b/public/img/logos/6river-logo.svg new file mode 100644 index 000000000..5672953cf --- /dev/null +++ b/public/img/logos/6river-logo.svg @@ -0,0 +1,127 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/img/logos/6river-logo_white.svg b/public/img/logos/6river-logo_white.svg new file mode 100644 index 000000000..9c391cc29 --- /dev/null +++ b/public/img/logos/6river-logo_white.svg @@ -0,0 +1,127 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/img/logos/bowtie.svg b/public/img/logos/bowtie.svg new file mode 100644 index 000000000..d7b0f19c5 --- /dev/null +++ b/public/img/logos/bowtie.svg @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/public/img/logos/github-logo.png b/public/img/logos/github-logo.png new file mode 100644 index 000000000..e03d8dd8b Binary files /dev/null and b/public/img/logos/github-logo.png differ diff --git a/public/img/logos/logo-white.svg b/public/img/logos/logo-white.svg index a64994ccd..8eec74ae0 100644 --- a/public/img/logos/logo-white.svg +++ b/public/img/logos/logo-white.svg @@ -1,5 +1,5 @@ - + diff --git a/public/img/logos/manfred-color.svg b/public/img/logos/manfred-color.svg new file mode 100644 index 000000000..14bdf140c --- /dev/null +++ b/public/img/logos/manfred-color.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/img/logos/remote-logo.png b/public/img/logos/remote-logo.png new file mode 100644 index 000000000..5ae641d6a Binary files /dev/null and b/public/img/logos/remote-logo.png differ diff --git a/public/img/logos/tyler-tech-logo.svg b/public/img/logos/tyler-tech-logo.svg new file mode 100644 index 000000000..ba2f462cb --- /dev/null +++ b/public/img/logos/tyler-tech-logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/logos/wot-logo.png b/public/img/logos/wot-logo.png new file mode 100644 index 000000000..2b2269d7d Binary files /dev/null and b/public/img/logos/wot-logo.png differ diff --git a/styles/globals.css b/styles/globals.css index 6dbf621c1..b028c23c3 100644 --- a/styles/globals.css +++ b/styles/globals.css @@ -45,44 +45,42 @@ html { } /* .herobtn { */ - /* background-color: transparent !important; */ - /* justify-content: center; */ - /* width: 168px; */ - /* height: 32px; */ - /* padding: 8px 8px; */ - /* margin-right: 10px; */ - /* display: flex; */ - /* border: 1px solid #E3E8EE; +/* background-color: transparent !important; */ +/* justify-content: center; */ +/* width: 168px; */ +/* height: 32px; */ +/* padding: 8px 8px; */ +/* margin-right: 10px; */ +/* display: flex; */ +/* border: 1px solid #E3E8EE; border-radius: 4px; */ /* } */ /* @media (max-width: 1027px) { */ - .DocSearch-Button-Container { - height: 40px; - padding: 0px; - border: none; - } +.DocSearch-Button-Container { + height: 40px; + padding: 0px; + border: none; +} - .DocSearch-Button { - margin: 0; - width: 39px; - } +.DocSearch-Button { + margin: 0; + width: 39px; +} - .DocSearch-Button-Placeholder { - display: none; - } +.DocSearch-Button-Placeholder { + display: none; +} - .DocSearch-Search-Icon { - width: 20px; - height: 20px; - } - +.DocSearch-Search-Icon { + width: 20px; + height: 20px; +} - /* .herobtn .DocSearch-Button-Container { +/* .herobtn .DocSearch-Button-Container { margin-right: 4px; margin-left: 4px; } */ -/* } */ @media (max-width: 450px) { .DocSearch-Button { @@ -101,14 +99,20 @@ border-radius: 4px; */ /** Style Algolia */ -.keygrad{ - --docsearch-key-gradient: linear-gradient(-225deg, #d5dbe4, #f8f8f8) !important; +.keygrad { + --docsearch-key-gradient: linear-gradient( + -225deg, + #d5dbe4, + #f8f8f8 + ) !important; } -.keyshadow{ - --docsearch-key-shadow: inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 2px 1px rgba(30,35,90,0.4) !important; +.keyshadow { + --docsearch-key-shadow: inset 0 -2px 0 0 #cdcde6, inset 0 0 1px 1px #fff, + 0 1px 2px 1px rgba(30, 35, 90, 0.4) !important; } -.keyshadow[data-theme=dark]{ - --docsearch-key-shadow: inset 0 -2px 0 0 #ffffff, inset 0 0 1px 1px #ffffff, 0 2px 2px 0 rgba(3, 4, 9, 0.3) !important; +.keyshadow[data-theme='dark'] { + --docsearch-key-shadow: inset 0 -2px 0 0 #ffffff, inset 0 0 1px 1px #ffffff, + 0 2px 2px 0 rgba(3, 4, 9, 0.3) !important; } .search-input { @@ -140,8 +144,6 @@ border-radius: 4px; */ margin-left: 40px; } - - .search-input span { margin-left: 15px; } @@ -222,10 +224,49 @@ border-radius: 4px; */ margin-top: 4.4rem; } +.top-12 { + top: 48px; +} + +.bg-ambassador { + background-image: url(/img/community/ambassadors.png); +} + +.bg-slack { + background-image: url(/img/home-page/slack.png); + background-size: 100% 100%; +} + +.bg-meeting { + background-image: url(/img/event/meet.png); +} + +.bg-blog { + background-image: url(/img/event/Json-Schema-Blog.png); +} + +.bg-index-0 { + background-color: #a5b4fc8a; +} -@layer base{ +.bg-index-1 { + background-color: #fca5a582; +} + +.bg-index-2 { + background-color: #fdbb7483; +} + +.bg-index-3 { + background-color: #86efad85; +} + +.bg-index-4 { + background-color: #fddf4784; +} + +@layer base { body { - @apply dark:bg-slate-800 bg-white; + @apply dark:bg-slate-800 bg-white; } } -