diff --git a/.eslintrc b/.eslintrc index 5f81f77..45d8f94 100644 --- a/.eslintrc +++ b/.eslintrc @@ -9,7 +9,12 @@ ], "rules": { "no-unused-vars": "off", - "no-console": "warn", + "no-console": [ + "warn", + { + "allow": ["warn", "error", "info"], + }, + ], "@typescript-eslint/explicit-module-boundary-types": "off", "react/no-unescaped-entities": "off", diff --git a/package.json b/package.json index 614393b..cb20148 100644 --- a/package.json +++ b/package.json @@ -32,6 +32,7 @@ "@sendgrid/mail": "^7.7.0", "add-to-calendar-button-react": "^2.6.8", "clsx": "^1.2.1", + "countup.js": "^2.8.0", "d3": "^7.9.0", "dayjs": "^1.11.9", "formik": "^2.2.9", @@ -39,10 +40,10 @@ "gray-matter": "^4.0.3", "html-react-parser": "^3.0.4", "motion": "^11.15.0", - "next": "^13.0.2", + "next": "^14.2.23", "plaiceholder": "^2.5.0", - "react": "^18.2.0", - "react-dom": "^18.2.0", + "react": "18", + "react-dom": "18", "react-icons": "^4.6.0", "react-lottie-player": "^2.1.0", "react-toastify": "^9.1.1", @@ -81,7 +82,7 @@ "@typescript-eslint/parser": "^5.42.0", "autoprefixer": "^10.4.13", "eslint": "^8.26.0", - "eslint-config-next": "^13.0.2", + "eslint-config-next": "^14.2.23", "eslint-config-prettier": "^8.5.0", "eslint-plugin-prettier": "^5.1.3", "eslint-plugin-simple-import-sort": "^7.0.0", diff --git a/public/data/team.json b/public/data/team.json index d6ee506..81d93a8 100644 --- a/public/data/team.json +++ b/public/data/team.json @@ -30,7 +30,6 @@ "website": ["https://fairdataihub.org"], "linkedin": "https://linkedin.com/in/bvhpatel", "twitter": "https://twitter.com/fairdataihub", - "resume": "https://fairdataihub.org/resume", "instagram": "https://instagram.com/fairdataihub", "github": "https://github.com/slugb0t" } @@ -61,7 +60,6 @@ "website": ["https://fairdataihub.org"], "linkedin": "https://linkedin.com/in/bvhpatel", "twitter": "https://twitter.com/fairdataihub", - "resume": "https://fairdataihub.org/resume", "instagram": "https://instagram.com/fairdataihub", "github": "https://github.com/slugb0t" } @@ -126,7 +124,6 @@ "website": ["https://fairdataihub.org"], "linkedin": "https://linkedin.com/in/bvhpatel", "twitter": "https://twitter.com/fairdataihub", - "resume": "https://fairdataihub.org/resume", "instagram": "https://instagram.com/fairdataihub", "github": "https://github.com/slugb0t" } @@ -156,8 +153,7 @@ "social": { "website": ["https://fairdataihub.org"], "linkedin": "https://linkedin.com/in/bvhpatel", - "twitter": "https://twitter.com/fairdataihub", - "resume": "https://fairdataihub.org/resume" + "twitter": "https://twitter.com/fairdataihub" } }, { @@ -185,8 +181,6 @@ "social": { "website": ["https://fairdataihub.org"], "linkedin": "https://linkedin.com/in/bvhpatel", - "twitter": "https://twitter.com/fairdataihub", - "resume": "https://fairdataihub.org/resume", "instagram": "https://instagram.com/fairdataihub", "github": "https://github.com/slugb0t" } diff --git a/public/images/brain-eye.png b/public/images/brain-eye.png new file mode 100644 index 0000000..2a0869f Binary files /dev/null and b/public/images/brain-eye.png differ diff --git a/public/images/polygon-card-v2.svg b/public/images/polygon-card-v2.svg new file mode 100644 index 0000000..4f612a1 --- /dev/null +++ b/public/images/polygon-card-v2.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/components/content/StatsText.tsx b/src/components/content/StatsText.tsx index 9c57f20..f98e1fe 100644 --- a/src/components/content/StatsText.tsx +++ b/src/components/content/StatsText.tsx @@ -1,46 +1,126 @@ +import { Stack, StackDivider } from '@chakra-ui/react'; +import parse from 'html-react-parser'; +import { useEffect, useRef, useState } from 'react'; + const StatsList = [ { - heading: '4,000', - text: 'Participants anticipated in the study', - }, - { - heading: '15+', - text: 'Data types to be collected (vitals, electrocardiogram, etc.)', + heading: 1000, + text: 'Participants in the study', + suffix: '+', }, { - heading: '8', - text: `Research institutions involved`, + heading: 4000, + text: 'Patient visits', + suffix: '+', }, { - heading: '50+', - text: 'Team members', + heading: 300, + text: `Data collected`, + suffix: 'GB', }, ]; export default function StatsText() { + const refs = useRef<(HTMLDivElement | null)[]>([]); + const [visibleIndexes, setVisibleIndexes] = useState([]); + + useEffect(() => { + const observer = new IntersectionObserver( + (entries) => { + entries.forEach((entry) => { + const index = refs.current.findIndex((ref) => ref === entry.target); + if (entry.isIntersecting && index !== -1) { + setVisibleIndexes((prev) => { + if (!prev.includes(index)) { + return [...prev, index]; + } + return prev; + }); + } + }); + }, + { threshold: 0.5 }, + ); + + refs.current.forEach((ref) => { + if (ref) { + observer.observe(ref); + } + }); + + return () => observer.disconnect(); + }, []); + + useEffect(() => { + if (visibleIndexes.length > 0) { + initCountUps(visibleIndexes); + } + }, [visibleIndexes]); + + async function initCountUps(indexes: number[]) { + const countUpModule = await import('countup.js'); + indexes.forEach((index) => { + const ref = refs.current[index]; + if (ref) { + const countUpAnim = new countUpModule.CountUp( + ref, + StatsList[index].heading, + { + duration: 2, + separator: ',', + }, + ); + if (!countUpAnim.error) { + countUpAnim.start(); + } else { + console.error(countUpAnim.error); + } + } + }); + } + return ( -
-
-

- Snapshot of the AI-READI project -

-

- Some key numbers from the project +

+
+

+ Snapshot of the Eye ACT project +

+ +

+ Project Milestones

-
- {StatsList.map((stat) => ( -
-
-
- {stat.heading} -
- -
- {stat.text} + +
+ } + > + {StatsList.map((stat, index) => ( +
+
+
{ + refs.current[index] = el as HTMLDivElement; + }} + className='text-5xl font-extrabold text-blue-500' + > + 0 +
+ + {stat.suffix} + +
+ +
+ {parse(stat.text)}
-
- ))} + ))} +
diff --git a/src/components/events/EventsLayout.tsx b/src/components/events/EventsLayout.tsx index ac47c14..9781ef1 100644 --- a/src/components/events/EventsLayout.tsx +++ b/src/components/events/EventsLayout.tsx @@ -7,13 +7,11 @@ import EventDates from '@/components/events/EventDates'; const EventsLayout: React.FC = ({ eventList }) => { return ( <> -
- -
+
{eventList.map((event) => (
= ({ eventList }) => {
-

+

{event.frontMatter.title}

diff --git a/src/components/layout/Footer.tsx b/src/components/layout/Footer.tsx index 7b2f164..9ccba59 100644 --- a/src/components/layout/Footer.tsx +++ b/src/components/layout/Footer.tsx @@ -28,7 +28,7 @@ const footerLinks = [ }, { title: 'GitHub', - href: 'https://github.com/AI-READI', + href: 'https://github.com/EyeACT', }, // { // title: 'Components', @@ -60,7 +60,7 @@ export default function Footer() { - At fugit recusandae aut aliquam. Quisquam et voluptatem. Quisquam + Seeing the Future of Brain Health Through the Eyes @@ -68,11 +68,10 @@ export default function Footer() {

- Ea autem excepturi qui atque rerum ut perspiciatis quis aut - velit quasi sed laboriosam sapiente. Et fuga voluptas sed - velit consequuntur non debitis perspiciatis. Et illum officia - non ullam nobis eum saepe temporibus vel beatae tenetur est - laudantium tempora est sint nisi 33 praesentium officia! + EyeACT bridges the connection between eye health and brain + function, pioneering research to uncover early indicators of + Alzheimer’s disease. Our mission is to transform how we detect + and prevent neurodegenerative disorders.

diff --git a/src/components/layout/Layout.tsx b/src/components/layout/Layout.tsx index 86b5146..d6d3be9 100644 --- a/src/components/layout/Layout.tsx +++ b/src/components/layout/Layout.tsx @@ -8,7 +8,9 @@ export default function Layout({ children }: { children: React.ReactNode }) { return ( <>
-
{children}
+
+ {children} +
-
-

- UPCOMING EVENTS -

+
+
+

+ UPCOMING EVENTS +

+
+ -
-

PAST EVENTS

+
+
+

PAST EVENTS

+
@@ -125,4 +118,4 @@ export async function getStaticProps() { }; } -export default Blog; +export default Events; diff --git a/src/pages/faq.tsx b/src/pages/faq.tsx index 75291b9..322a02e 100644 --- a/src/pages/faq.tsx +++ b/src/pages/faq.tsx @@ -31,7 +31,7 @@ export default function ContactUs() { looking for?
Contact us @@ -87,7 +87,7 @@ export default function ContactUs() { that time. If you have not received it after 3 weeks, please reach out to us through our{' '} contact form diff --git a/src/pages/index.tsx b/src/pages/index.tsx index 2be88b9..b0d7a03 100644 --- a/src/pages/index.tsx +++ b/src/pages/index.tsx @@ -5,18 +5,13 @@ import { motion } from 'framer-motion'; import fs from 'fs'; import matter from 'gray-matter'; import Image from 'next/image'; -import Link from 'next/link'; -import ImageWithCredit from '@/components/images/ImageWithCredit'; +import StatsText from '@/components/content/StatsText'; import Layout from '@/components/layout/Layout'; import ButtonLink from '@/components/links/ButtonLink'; import Seo from '@/components/Seo'; -import { - FadeFramerItem, - WidthFramerContainer, - WidthFramerItem, -} from '@/utils/framer'; +import { WidthFramerContainer } from '@/utils/framer'; /** * SVGR Supportgray @@ -26,6 +21,7 @@ import { * @see https://stackoverflow.com/questions/68103844/how-to-override-next-js-svg-module-declaration */ +// Missing items will be added to the events list const HomePage: React.FC = ({ slug, frontMatter }) => { const { title, @@ -40,7 +36,7 @@ const HomePage: React.FC = ({ slug, frontMatter }) => { const fadeInVariants = { hidden: { opacity: 0, y: 20 }, - show: (i: any) => ({ + show: (i: number) => ({ opacity: 1, y: 0, transition: { delay: i * 0.2, duration: 0.5 }, @@ -50,40 +46,31 @@ const HomePage: React.FC = ({ slug, frontMatter }) => { const cardData = [ { id: 1, - title: 'Vitae a ante hac volutpat', - items: [ - 'Lacus suspendisse hac massa', - 'Laoreet himenaeos', - 'Laoreet himenaeos ridiculus dapibus', - 'Laoreet himenaeos ridiculus dapibus', - 'Laoreet himenaeos ridiculus dapibus', - ], + title: 'Revolutionizing Retinal Imaging', + description: + 'Our research utilizes advanced imaging techniques such as OCT and OCTA to detect early retinal changes. These insights provide a clearer understanding of the relationship between retinal health and Alzheimer’s disease progression.', + linkText: 'Learn more', + linkUrl: '', imgSrc: 'https://images.unsplash.com/photo-1532187863486-abf9dbad1b69?fm=jpg&q=60&w=3000&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D', }, { id: 2, - title: 'Montes orci', - items: [ - 'Laoreet himenaeos ridiculus dapibus', - 'Laoreet himenaeos ridiculus dapibus', - 'Laoreet himenaeos ridiculus dapibus', - 'Laoreet himenaeos ridiculus dapibus', - 'Laoreet himenaeos ridiculus dapibus', - ], + title: 'Innovative Detection Strategies', + description: + 'By identifying key retinal biomarkers, EyeACT is pioneering tools that predict Alzheimer’s risk years before clinical symptoms emerge, offering a unique approach to early detection.', + linkText: 'Discover our approach', + linkUrl: '', imgSrc: 'https://images.unsplash.com/photo-1579684385127-1ef15d508118?fm=jpg&q=60&w=3000&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D', }, { id: 3, - title: 'Vivamus id', - items: [ - 'Laoreet himenaeos ridiculus dapibus', - 'Laoreet himenaeos ridiculus dapibus', - 'Laoreet himenaeos ridiculus dapibus', - 'Laoreet himenaeos ridiculus dapibus', - 'Laoreet himenaeos ridiculus dapibus', - ], + title: 'Transforming Patient Care', + description: + 'EyeACT integrates eye and brain research to inform targeted interventions for Alzheimer’s. These breakthroughs are shaping personalized treatments to improve patient outcomes.', + linkText: 'Find out how', + linkUrl: '', imgSrc: 'https://images.unsplash.com/photo-1524499982521-1ffd58dd89ea?fm=jpg&q=60&w=3000&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D', }, @@ -92,21 +79,24 @@ const HomePage: React.FC = ({ slug, frontMatter }) => { const checkData = [ { id: 1, - title: 'Dolor maecenas inceptos', + title: 'Detailed Data Collection', + subtitle: 'Integrating Eye and Brain Health Insights', description: - 'Nisl metus per posuere auctor tellus. Sapien hac dolor lobortis, senectus himenaeos lobortis tempus. Porttitor dolor mattis a eget pulvinar eleifend ultricies.', + 'EyeACT combines advanced imaging, genetic data, and clinical evaluations to uncover the connection between retinal changes and neurodegenerative processes. By analyzing ophthalmic data with Alzheimer’s risk factors, the study offers actionable insights for early intervention.', }, { id: 2, - title: 'Vestibulum curabitur', + title: 'Long-Term Follow-Up', + subtitle: 'Revealing Retinal Health Trends Over Time', description: - 'Tellus platea tellus nisi morbi gravida. Est platea augue a primis nullam, ac vehicula tincidunt.', + 'With ongoing monitoring, EyeACT tracks how retinal biomarkers evolve alongside cognitive decline. This long-term approach offers unique insights into how eye health may predict brain health changes, advancing Alzheimer’s detection strategies.', }, { id: 3, - title: 'Urna molestie vestibulum', + title: 'Rigorous Analytical Methods', + subtitle: 'Innovative Non-Invasive Diagnostic Tools', description: - 'Dui metus sociosqu sem amet quisque sagittis ex. Nostra tristique finibus nunc mattis ultrices vulputate suspendisse. Porta dignissim sodales conubia, iaculis odio vitae varius. Aliquet metus facilisis luctus fusce luctus porttitor.', + 'Using imaging technologies and statistical analysis, EyeACT identifies retinal biomarkers that align with Alzheimer’s risk. These non-invasive methods are transforming early detection and paving the way for personalized care.', }, ]; @@ -115,12 +105,12 @@ const HomePage: React.FC = ({ slug, frontMatter }) => { Skip to content - +
-
+
{/* Left Text Section */}
@@ -130,28 +120,27 @@ const HomePage: React.FC = ({ slug, frontMatter }) => { whileInView='show' viewport={{ once: true }} custom={1} - className='bg-[radial-gradient(circle_at_40%_0%,rgba(0,0,0,0.8),transparent)] text-3xl font-bold leading-tight text-white sm:text-4xl lg:text-5xl' + className='text-3xl font-bold leading-tight text-white sm:text-4xl lg:text-6xl' > - Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed - do eiusmod tempor incididunt ut labore et dolore magna aliqua + Seeing the Future of Brain Health Through the Eyes + - Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed - do eiusmod tempor incididunt ut labore et dolore magna aliqua. - Ut enim ad minim veniam.{' '} - - Dapibus in amet - {' '} - adipiscing varius vivamus fames. Tellus pellentesque justo - laoreet suscipit dolor porttitor. + The Eye ACT study aims provides insights on how ophthalmic + conditions such as glaucoma and diabetic retinopathy can + provide early clues to Alzheimer’s disease. By understanding + the connection between the eyes and brain, we aim to drive + advancements in early detection and prevention of + neurodegenerative diseases. + = ({ slug, frontMatter }) => { className='mt-6' > - Dapibus in amet + Discover Our Research
- {/*
-
-
-

- Lorem ipsum dolor sit amet -

-

- Lorem ipsum dolor sit amet. Vel aspernatur vero est - praesentium reprehenderit est distinctio expedita non enim - animi. Non inventore quas aut assumenda quisquam sit - voluptates velit ea doloremque debitis. Ab vitae nihil et vero - accusantium sed corrupti perspiciatis qui laudantium dicta quo - nulla voluptas qui commodi dolor. Qui rerum nisi qui vitae - atque aut consequatur tempora ex error enim. -

+
+
+ + How the EyeACT Study Stands Out + -
- - Lorem ipsum dolor sit amet. - -
-
-
- lorem ipsum +
+ {checkData.map((trust) => ( + +
+ + ✓ + + + + {trust.title} + +
+ +

+ {trust.subtitle} +

+ +

+ {trust.description} +

+
+ ))}
-
*/} -
+
+ + + +
+ +
+
+ +
= ({ slug, frontMatter }) => { whileInView='show' viewport={{ once: true }} custom={0} - className='mb-6 text-4xl font-bold' + className='mx-auto mb-6 max-w-6xl text-4xl font-bold' > - Risus interdum + Advancing Research at the Intersection of Eye Health and + Alzheimer’s Disease + - Lectus eleifend malesuada ut orci nulla placerat ultrices - volutpat lobortis. Posuere faucibus ligula pretium morbi - ultrices, mus mus rhoncus conubia. Maecenas primis mattis nibh - maecenas euismod tempus ante euismod. Consequat venenatis - hendrerit purus nascetur primis efficitur. Facilisi sem - convallis volutpat facilisis quam magna aptent + EyeACT leverages advances in retinal imaging and data analysis + to bridge the gap between eye health and Alzheimer’s research. + Our focus is on translating these findings into actionable tools + for early detection and treatment, paving the way for + personalized care.
{cardData.map((entry, i) => ( = ({ slug, frontMatter }) => { alt={entry.title} className='h-48 w-full object-cover' /> -
-

- {`0${entry.id}`} -
+ +
+

{entry.title}

-

- Lorem ipsum dolor sit amet, consectetur adipiscing elit. - Sed do eiusmod tempor incididunt ut labore et dolore - magna aliqua. + +

+ {entry.description}

- - Learn More + + + {entry.linkText} - {/*
    - {entry.items.map((item, idx) => ( -
  • {item}
  • - ))} -
*/}
))} @@ -275,47 +292,7 @@ const HomePage: React.FC = ({ slug, frontMatter }) => {

-
- -
-

- Lorem ipsum dolor sit amet. -

-

- Sed quidem sapiente cum sint saepe non doloremque velit qui - veniam praesentium aut repudiandae laboriosam id autem - facilis. Ut quidem facere id maxime ipsum 33 maiores natus et - commodi eveniet qui beatae ipsam et nostrum optio sit voluptas - voluptatem. Aut esse dolorem cum suscipit voluptate et - deserunt obcaecati qui fugiat veniam 33 enim veniam qui - galisum perferendis. Et dolores magnam hic provident quae ea - voluptates sint ut earum internos ut facere quidem. -

- -
- - Lorem ipsum dolor sit amet - -
-
-
- lorem ipsum -
-
-
- -
+
= ({ slug, frontMatter }) => { >

- Lorem ipsum dolor sit amet. + Shaping the Future of Alzheimer’s Detection and Care

- Est molestiae recusandae et dolore cupiditate aut - necessitatibus neque ut quod dolor sed voluptatibus esse vel - nobis rerum. Qui praesentium quam non esse voluptatem aut - accusantium porro et sunt voluptate aut quaerat asperiores et - voluptas libero est autem ipsam. Non sunt consequuntur non - autem numquam qui accusamus saepe et rerum mollitia rem - recusandae assumenda. + Our study analyzes data from over 3,877 participants aged 65 + and older, enrolled through Kaiser Permanente Washington. With + 31,142 person-years of follow-up, we assessed cognitive + decline and Alzheimer's risk in relation to eye conditions.

- - Lorem ipsum dolor sit amet + + View our methods and results
-
-
+
@@ -371,13 +345,13 @@ const HomePage: React.FC = ({ slug, frontMatter }) => { whileInView='show' viewport={{ once: true }} custom={0} - className='absolute inset-0 flex items-center justify-center' + className='absolute inset-0 flex flex-col items-center justify-center' > lorem ipsum @@ -390,139 +364,69 @@ const HomePage: React.FC = ({ slug, frontMatter }) => { whileInView='show' viewport={{ once: true }} custom={1} + className='pr-4' > -
-
- 1 -
-

- Duis aute irure -

-
-
    -
  • Consectetur adipiscing
  • -
  • Sed do eiusmod
  • -
  • Laboris nisi
  • -
  • Laboris nisi
  • -
- - - {/* Connector */} - {/*
*/} +

+ Exploring Retinal Changes for Brain Health Insights +

+ +

+ The EyeACT study goes beyond traditional approaches by + exploring how subtle retinal changes can provide a dynamic + view of brain health over time. These insights are shaping + how we detect and understand neurodegenerative conditions. +

+ +

+ Bridging Retinal and Cognitive Health +

- {/* Step 2: Data Exchange */} - -
-
- 2 -
-

- Duis aute irure -

-
-
    -
  • Dolor sit amet
  • -
  • Dolor sit amet
  • -
  • Dolor sit amet
  • -
+

+ EyeACT uniquely correlates retinal imaging findings with + cognitive decline, providing a clearer picture of + Alzheimer’s progression and opening avenues for targeted + intervention strategies. +

+
-
- -
- - 4000 participants - -
- - - - - 3,140+ - - participants have completed the consent process - - +
+ +
+

+ Revolutionizing Alzheimer’s Research Through Ophthalmology +

+

+ Our research shows how changes in the retina mirror + neurodegenerative processes provide an accessible window into + brain health. By identifying retinal biomarkers, we’re + creating tools for non-invasive Alzheimer’s risk assessment. +

- + + Learn more about our study + +
+
+
+ lorem ipsum - - - 1590+ - - participants have completed in-person study visit - - - -
-
- -
-
- - Lorem ipsum odor amet - -
- {checkData.map((trust) => ( - -
- - Iaculis scelerisque - - - ✓ - -
-

- {trust.title} -

-

{trust.description}

-
- ))}
-
+
diff --git a/src/pages/privacy/content.md b/src/pages/privacy/content.md index ac5c220..ed8ef5f 100644 --- a/src/pages/privacy/content.md +++ b/src/pages/privacy/content.md @@ -4,7 +4,7 @@ This privacy notice for EyeACT ("**Company**," "**we**," "**us**," or "**our**"), describes how and why we might collect, store, use, and/or share ("**process**") your information when you use our services ("**Services**"), such as when you: -- Visit our website at [aireadi.org](https://aireadi.org), or any website of ours that links to this privacy notice +- Visit our website at [eyeact.org](https://eyeact.org), or any website of ours that links to this privacy notice - Engage with us in other related ways, including any sales, marketing, or events **Questions or concerns?** Reading this privacy notice will help you understand your privacy rights and choices. If you do not agree with our policies and practices, please do not use our Services. If you still have any questions or concerns, please contact us at . @@ -164,7 +164,7 @@ We have implemented appropriate and reasonable technical and organizational secu **_In Short:_** *We do not knowingly collect data from or market to children under 18 years of age.* -We do not knowingly solicit data from or market to children under 18 years of age. By using the Services, you represent that you are at least 18 or that you are the parent or guardian of such a minor and consent to such minor dependent’s use of the Services. If we learn that personal information from users less than 18 years of age has been collected, we will deactivate the account and take reasonable measures to promptly delete such data from our records. If you become aware of any data we may have collected from children under age 18, please contact us at [contact@aireadi.org](mailto:contact@aireadi.org). +We do not knowingly solicit data from or market to children under 18 years of age. By using the Services, you represent that you are at least 18 or that you are the parent or guardian of such a minor and consent to such minor dependent’s use of the Services. If we learn that personal information from users less than 18 years of age has been collected, we will deactivate the account and take reasonable measures to promptly delete such data from our records. If you become aware of any data we may have collected from children under age 18, please contact us at [contact@eyeact.org](mailto:contact@eyeact.org). ## 8\. What are your privacy rights? @@ -180,7 +180,7 @@ However, please note that this will not affect the lawfulness of the processing **Cookies and similar technologies:** Most Web browsers are set to accept cookies by default. If you prefer, you can usually choose to set your browser to remove cookies and to reject cookies. If you choose to remove cookies or reject cookies, this could affect certain features or services of our Services. To opt out of interest-based advertising by advertisers on our Services visit [http://www.aboutads.info/choices/](http://www.aboutads.info/choices/). -If you have questions or comments about your privacy rights, you may email us at [contact@aireadi.org](mailto:contact@aireadi.org). +If you have questions or comments about your privacy rights, you may email us at [contact@eyeact.org](mailto:contact@eyeact.org). ## 9\. Controls for do-not-track features @@ -234,7 +234,7 @@ We may also collect other personal information outside of these categories throu More information about our data collection and sharing practices can be found in this privacy notice. -You may contact us by email at , by visiting [aireadi.org/contact](https://aireadi.org/contact), or by referring to the contact details at the bottom of this document. +You may contact us by email at , by visiting [eyeact.org/contact](https://eyeact.org/contact), or by referring to the contact details at the bottom of this document. If you are using an authorized agent to exercise your right to opt out we may deny a request if the authorized agent does not submit proof that they have been validly authorized to act on your behalf. @@ -288,7 +288,7 @@ We will only use personal information provided in your request to verify your id - You can designate an authorized agent to make a request under the CCPA on your behalf. We may deny a request from an authorized agent that does not submit proof that they have been validly authorized to act on your behalf in accordance with the CCPA. - You may request to opt out from future selling or sharing of your personal information to third parties. Upon receiving an opt-out request, we will act upon the request as soon as feasibly possible, but no later than fifteen (15) days from the date of the request submission. -To exercise these rights, you can contact us by email at , by visiting [aireadi.org/contact](https://aireadi.org/contact), or by referring to the contact details at the bottom of this document. If you have a complaint about how we handle your data, we would like to hear from you. +To exercise these rights, you can contact us by email at , by visiting [eyeact.org/contact](https://eyeact.org/contact), or by referring to the contact details at the bottom of this document. If you have a complaint about how we handle your data, we would like to hear from you. ## 11\. Do we make updates to this notice? @@ -298,8 +298,8 @@ We may update this privacy notice from time to time. The updated version will be ## 12\. How can you contact us about this notice? -If you have questions or comments about this notice, you may email us at [contact@aireadi.org](mailto:contact@aireadi.org). +If you have questions or comments about this notice, you may email us at [contact@eyeact.org](mailto:contact@eyeact.org). ## 13\. How can you review, update, or delete the data we collect from you? -Based on the applicable laws of your country, you may have the right to request access to the personal information we collect from you, change that information, or delete it. To request to review, update, or delete your personal information, please submit a request form by clicking [here](https://aireadi.org/contact). +Based on the applicable laws of your country, you may have the right to request access to the personal information we collect from you, change that information, or delete it. To request to review, update, or delete your personal information, please submit a request form by clicking [here](https://eyeact.org/contact). diff --git a/src/pages/publications/content.md b/src/pages/publications/content.md index 5fdbfe3..79f78cd 100644 --- a/src/pages/publications/content.md +++ b/src/pages/publications/content.md @@ -2,30 +2,34 @@ ## Journal Articles -- AI-READI Consortium. (2024). AI-READI: rethinking AI data collection, preparation and sharing in diabetes research and beyond. Nature Metabolism. - -### Preprints - -- Timothy Clark, Harry Caufield, Jillian A. Parker, Sadnan Al Manir, Edilberto Amorim, James Eddy, Nayoon Gim, Brian Gow, Wesley Goar, Melissa Haendel, Jan N. Hansen, Nomi Harris, Henning Hermjakob, Marcin Joachimiak, Gianna Jordan, In-Hee Lee, Shannon K. McWeeney, Camille Nebeker, Milen Nikolov, Jamie Shaffer, Nathan Sheffield, Gloria Sheynkman, James Stevenson, Jake Y. Chen, Chris Mungall, Alex Wagner, Sek Won Kong, Satrajit S. Ghosh, Bhavesh Patel, Andrew Williams, Monica C. Munoz-Torres. (2024). AI-readiness for Biomedical Data: Bridge2AI Recommendations. bioRxiv. - -## Reports - -- Lee, A., Owen, J., Patel, B., Nebeker, C., Lee, C., Zangwill, L., Hurst, S., Singer, S., Li-Pook-Than, J., & Matthews, D. (2024). AI-READI Code of Conduct (2.0). Zenodo. [https://zenodo.org/records/13328255](https://zenodo.org/records/13328255) -- Contreras, J., Evans, B., Hurst, S., Patel, B., Mcweeney, S., Lee, C., & Lee, A. (2024). License terms for reusing the AI-READI dataset (1.0). Zenodo. [https://doi.org/10.5281/zenodo.10642459](https://doi.org/10.5281/zenodo.10642459) -- Lee, A., Owen, J., Patel, B., Nebeker, C., Lee, C., Zangwill, L., Hurst, S., & Singer, S. (2023). AI-READI Steering Committee Charter (1.0). Zenodo. [https://doi.org/10.5281/zenodo.7641684](https://doi.org/10.5281/zenodo.7641684) -- Patel, B., Soundarajan, S., McWeeney, S., Cordier, B. A., & Benton, E. S. (2022). Software Development Best Practices of the AI-READI Project (v1.0.0). Zenodo. [https://doi.org/10.5281/zenodo.7363102](https://doi.org/10.5281/zenodo.7363102) - -## Posters - -- Patel, B., Soundarajan, S., Gasimova, A., Gim, N., Shaffer, J., & Lee, A. (2024). Clinical Dataset Structure: A Universal Standard for Structuring Clinical Research Data and Metadata (Poster) (1.0.0). Zenodo. [https://doi.org/10.5281/zenodo.13984769](https://doi.org/10.5281/zenodo.13984769) - -## Software - -- FAIRhub study management platform. (started 2022). [https://github.com/AI-READI/fairhub-app](https://github.com/AI-READI/fairhub-app) (Development status: Active) -- FAIRhub data portal. (started 2022). [https://github.com/AI-READI/fairhub-portal](https://github.com/AI-READI/fairhub-portal) (Development status: Active) -- pyfairdatatools. (started 2022). [https://github.com/AI-READI/pyfairdatatools](https://github.com/AI-READI/pyfairdatatools) (Development status: Active) - -## Webinars/Lectures - -- Lee, C., Patel, B., & Baxter, S. (2024). Introduction to AI-READI, Studying Salutogenesis in T2DM (dkNET Presentation) (1.0.0). Zenodo. [https://doi.org/10.5281/zenodo.13984710](https://doi.org/10.5281/zenodo.13984710) -- Lee, C., Patel, B., & Baxter, S. (2024). Introduction to AI-READI, Studying Salutogenesis in T2DM (Bridge2AI Lecture Series) (1.0.0). Zenodo. [https://doi.org/10.5281/zenodo.13984755](https://doi.org/10.5281/zenodo.13984755) +- Davidson O., Lee M.L., Kam J.P., Brush M., Rajesh A., Blazes M., Arterburn D., Duerr E., Gibbons L.E., Crane P.K., Lee C.S., Eye ACT Study Group. (2024). Associations between Dementia and Exposure to Topical Glaucoma Medications. *J Alzheimer’s Dis.* Accepted for publication. +- Lee C.S., Ferguson A.N., Gibbons L.E., Walker R., Su Y.R., Krakauer C., Brush M., Kam J., Larson E.B., Arterburn D.E., Crane P.K., Eye ACT Study Group. (2024). Eye Adult Changes in Thought (Eye ACT) Study: Design and Report on the Inaugural Cohort. *J Alzheimers Dis.* 100(1):309-320. . PMID: 38875039. +- Gibbons L.E., Mobley T., Mayeda E.R., Lee C.S., Gatto N.M., LaCroix A.Z., McEvoy L.K., Crane P.K., Hayes-Larson E. (2024). How Generalizable Are Findings from a Community-Based Prospective Cohort Study? *J Alzheimers Dis.* 100(1):163-174. . PMID: 38848188; PMCID: PMC11423796. +- Lee C.S., Krakauer C., Su Y.R., Walker R.L., Blazes M., McCurry S.M., Bowen J.D., McCormick W.C., Lee A.Y., Boyko E.J., O'Hare A.M., Larson E.B., Crane P.K. (2023). Diabetic Retinopathy and Dementia Association, Beyond Diabetes Severity. *Am J Ophthalmol.* 249:90-98. . PMID: 36513155; PMCID: PMC10106379. +- Tang M.Y., Blazes M.S., Lee C.S. (2023). Imaging Amyloid and Tau in the Retina: Current Research and Future Directions. *J Neuroophthalmol.* 43(2):168-179. . PMID: 36705970; PMCID: PMC10191872. +- Yuan A., Lee C.S. (2022). Retinal Biomarkers for Alzheimer Disease: The Facts and the Future. *Asia Pac J Ophthalmol (Phila).* 11(2):140-148. . PMID: 35533333; PMCID: PMC9889204. +- Lee C.S., Gibbons L.E., Lee A.Y., Yanagihara R.T., Blazes M.S., Lee M.L., McCurry S.M., Bowen J.D., McCormick W.C., Crane P.K., Larson E.B. (2021). Association Between Cataract Extraction and Development of Dementia. *JAMA Intern Med.* . PMID: 34870676; PMCID: PMC8649913. +- Lee C.S., Latimer C.S., Henriksen J.C., Blazes M., Larson E.B., Crane P.K., Keene C.D., Lee A.Y. (2021). Application of deep learning to understand resilience to Alzheimer's disease pathology. *Brain Pathol.* 31(6):e12974. . PMID: 34009663; PMCID: PMC8549025. +- Lee C.S., Lee M.L., Gibbons L.E., Yanagihara R.T., Blazes M., Kam J.P., McCurry S.M., Bowen J.D., McCormick W.C., Lee A.Y., Larson E.B., Crane P.K. (2021). Associations Between Retinal Artery/Vein Occlusions and Risk of Vascular Dementia. *J Alzheimers Dis.* 81(1):245-253. . PMID: 33749651; PMCID: PMC8168611. +- Blazes M., Lee C.S. (2021). Understanding the Brain through Aging Eyes. *Adv Geriatr Med Res.* 3(2):e210008. . PMID: 33748826; PMCID: PMC7971450. +- Lee C.S., Larson E.B., Gibbons L.E., Latimer C.S., Rose S.E., Hellstern L.L., Keene C.D., Crane P.K.; Adult Changes in Thought (ACT) Study. (2019). Ophthalmology-Based Neuropathology Risk Factors: Diabetic Retinopathy is Associated with Deep Microinfarcts in a Community-Based Autopsy Study. *J Alzheimers Dis.* 68(2):647-655. . PMID: 30883356; PMCID: PMC6450649. + +## Abstracts + +- Zhao K., Duong C., Ngadisastra C., Takahashi M., Pope B., Schaaf B., Cooper J., Kam J., Brush M., Gibbons L., Lee A.Y., Arterburn D., Larson E., Crane P.K., Lee C.S. (2024). Eye Adult Changes in Thought (Eye ACT) study: Settings and report on the inaugural cohort. *Invest. Ophthalmol. Vis. Sci.* 65(7):6367. +- Duong C., Davidson O., Hong Y., Pope B., Kam J., Brush M., Lacy M., Cooper J., Takahashi M., Larson E., Arterburn D., Crane P., Lee A., Lee C.S. (2023). Analysis of prospective data from the Eye ACT study. *Invest. Ophthalmol. Vis. Sci.* 64(8):4242. +- Davidson O., Lee M., Gibbons L., Duerr E., Kam J., Brush M., Lee A.Y., Crane P., Lee C.S. (2023). Associations Between Dementia Risks and Chronic Exposures to Different Glaucoma Medication Types. *Invest. Ophthalmol. Vis. Sci.* 64(8):128. +- Blazes M., Lee M.L., Gibbons L.E., Yanagihara R.T., Kam J.P., Lee A.Y., Larson E.B., Crane P.K., Lee C.S. (2021). Associations between retinal artery/vein occlusions (RAVO) and risk of vascular dementia. *Invest. Ophthalmol. Vis. Sci.* 62(8):2830. +- Lee C.S., Lee M.L., Gibbons L.E., et al. (2020). Retinal vascular occlusions are associated with increased risk for vascular dementia in APOE ε4 positive group in a community-based cohort. *Alzheimer Association International Conference (AAIC)*, July 2020. + +## Lectures/Presentations + +- **June 2023**: Vickie and Jack Farber Vision Research Center Lecture, Will’s Eye Hospital, Philadelphia, PA: *Connecting the Dots between the Eye and the Brain*. +- **May 2023**: Adult Changes in Thought (ACT) symposium, Seattle, WA: *Sensory Impairment and Dementia Development*. +- **January 2023**: FDA Collaborative Community on Ophthalmic Imaging (CCOI), Virtual: *Retinal Imaging and Dementia*. +- **November 2022**: Alzheimer’s Drug Discovery Foundation, Diagnostic Accelerator, Investigators’ Meeting: *Exploring Ophthalmic Biomarkers of Alzheimer’s Disease*. +- **October 2022**: NHLBI Retinal Workshop, Bethesda, MD: *Eye and Dementia*. +- **March 2022**: Society for Brain Mapping & Therapeutics (SBMT), Los Angeles, CA: *Connecting the Dots between Aging Eyes and the Brain*. +- **May 2021**: Association for Research in Vision and Ophthalmology (ARVO) Annual Meeting: *Diabetic Retinopathy and Dementia Link is More Than Microvascular Disease and Poor Glycemic Control Mechanisms*. +- **October 2020**: Alcon Research Institute (ARI) Podos Colloquium: *Studying the Aging Brain through the Aging Eyes*. +- **July 2020**: Alzheimer Association International Conference (AAIC), Virtual: *Cataract Surgery is Associated with Reduced Risk for Alzheimer’s Disease*. diff --git a/src/pages/publications/index.tsx b/src/pages/publications/index.tsx index 777ac2d..8873c55 100644 --- a/src/pages/publications/index.tsx +++ b/src/pages/publications/index.tsx @@ -37,7 +37,7 @@ export const getStaticProps: GetStaticProps = async () => { `utf-8`, ); - const pageContent = await markdownToHtml(fileContent || ``); + const pageContent = await markdownToHtml(fileContent || ``, true); return { props: { diff --git a/src/pages/scholars.tsx b/src/pages/scholars.tsx deleted file mode 100644 index 7dfcf69..0000000 --- a/src/pages/scholars.tsx +++ /dev/null @@ -1,402 +0,0 @@ -/* eslint-disable @next/next/no-img-element */ -import { - Badge, - Button, - Center, - Grid, - GridItem, - Modal, - ModalBody, - ModalCloseButton, - ModalContent, - ModalOverlay, - Tag, - useDisclosure, - VStack, - Wrap, - WrapItem, -} from '@chakra-ui/react'; -import { SkipNavContent, SkipNavLink } from '@chakra-ui/skip-nav'; -import { motion } from 'framer-motion'; -import { InferGetStaticPropsType } from 'next'; -import Image from 'next/image'; -import { getPlaiceholder } from 'plaiceholder'; -import { useState } from 'react'; -import { BsPlusCircleDotted } from 'react-icons/bs'; -import { FaLinkedin } from 'react-icons/fa'; -import { IoSchoolSharp } from 'react-icons/io5'; -import { RiAwardFill } from 'react-icons/ri'; - -import HeroCroppedImage from '@/components/hero/HeroCroppedImage'; -import Layout from '@/components/layout/Layout'; -import UnstyledLink from '@/components/links/UnstyledLink'; -import Seo from '@/components/Seo'; - -import { FramerContainer } from '@/utils/framer'; - -import SCHOLARS_JSON from '~/data/scholars.json'; - -interface Scholar { - id: string; - name: string; - image: string; - blurDataURL: string; - moduleImageParams: string; - education: { degree: string; institution: string }[]; - expertise: string[]; - tag: string[]; - about: string; - after: string; - social: { linkedin?: string; resume?: string; medprofile?: string }; -} - -const ScholarsGrid: React.FC<{ - scholars: Scholar[]; - openModal: (scholarId: string) => void; -}> = ({ scholars, openModal }) => { - return ( - - {scholars.map((scholar) => ( - -
- {scholar.tag.length > 0 ? ( - - {scholar.tag.map((tag) => ( - - - {tag} - - - ))} - - ) : ( -
- )} - -
- {scholar.name -
- -

- {scholar.name} -

- - - - - - - -

- {scholar.education[0].degree} -

-
- - - - - - - - {scholar.expertise.map((expertise, index) => ( - - - {expertise} - - - ))} - - -
- - -
-
- ))} -
- ); -}; - -const ScholarsPage: React.FC< - InferGetStaticPropsType -> = ({ AllScholars, Class23_24Scholars, Class24_25Scholars }) => { - const { isOpen, onOpen, onClose } = useDisclosure(); - const [selectedScholar, setSelectedScholar] = useState(null); - - const openModal = (scholarid: string) => { - const scholar = AllScholars.find((scholar) => scholar.id === scholarid); - - if (!scholar) { - return; - } - - setSelectedScholar(scholar); - - onOpen(); - }; - - return ( - <> - Skip to content - - - - -
- - - - -

- Current Class (2024-2025) -

- -

- Coming soon... -

- - - -

- Alumni -

- -

- Class of 2023-2024 -

- - - - - - - - - - - - {selectedScholar?.name} - -
- - {selectedScholar?.tag.map((tag) => ( - - - {tag} - - - ))} - -
- - - {'linkedin' in (selectedScholar?.social || {}) && ( - <> - -
- -
-
- - - - LinkedIn Profile - - - - )} - - {'resume' in (selectedScholar?.social || {}) && ( - <> - - - - - - - Resume - - - - )} -
-
-
- - - -

- {selectedScholar?.name} -

- -

- Education -

- -
    - {selectedScholar?.education.map((edu, index) => ( -
  • - {edu.degree}{' '} - {edu.institution && <>({edu.institution})} -
  • - ))} -
- -

- Expertise -

- -

- {selectedScholar?.expertise.map((expertise, index) => ( - - {expertise} - - ))} -

- -

- About Me -

- -

- {selectedScholar?.about} -

- -

- After AI-READI -

- -

- {selectedScholar?.after} -

-
-
-
-
-
-
-
-
- - ); -}; - -export const getStaticProps = async () => { - const AllScholars = await Promise.all( - SCHOLARS_JSON.map(async (member) => { - const { - base64, - // eslint-disable-next-line unused-imports/no-unused-vars - img: { width, height, ...img }, - } = await getPlaiceholder(member.image); - - return { - ...img, - alt: `${member.name} profile picture`, - ...member, - blurDataURL: base64, - }; - }), - ).then((values) => values); - - // sort by name - AllScholars.sort((a, b) => { - if (a.name < b.name) { - return -1; - } - - if (a.name > b.name) { - return 1; - } - - return 0; - }); - - const Class23_24Scholars = AllScholars.filter( - (scholar) => scholar.class === '2023-2024', - ); - - const Class24_25Scholars = AllScholars.filter( - (scholar) => scholar.class === '2024-2025', - ); - - return { - props: { - AllScholars, - Class23_24Scholars, - Class24_25Scholars, - }, - }; -}; - -export default ScholarsPage; diff --git a/src/pages/team/index.tsx b/src/pages/team/index.tsx index c99443b..8708bac 100644 --- a/src/pages/team/index.tsx +++ b/src/pages/team/index.tsx @@ -30,7 +30,6 @@ import { IoSchoolSharp } from 'react-icons/io5'; import { IoLocationOutline } from 'react-icons/io5'; import { MdOutlineBadge } from 'react-icons/md'; import { PiUserListBold } from 'react-icons/pi'; -import { RiAwardFill } from 'react-icons/ri'; import Layout from '@/components/layout/Layout'; import UnstyledLink from '@/components/links/UnstyledLink'; @@ -66,7 +65,7 @@ interface Member { const MembersGrid: React.FC<{ members: Member[]; - openModal: (scholarId: string) => void; + openModal: (memberid: string) => void; }> = ({ members, openModal }) => { return ( - {members.map((scholar) => ( + {members.map((member) => ( openModal(scholar.id)} + key={member.id + Math.random()} + id={member.id} + onClick={() => openModal(member.id)} >
{scholar.name {/* Text overlay */}

- {scholar.name} + {member.name}

- {scholar.education[0].degree} + {member.education[0].degree}

@@ -116,20 +113,22 @@ const MembersGrid: React.FC<{ ); }; -const ScholarsPage: React.FC< - InferGetStaticPropsType -> = ({ AllMembers }) => { +const TeamPage: React.FC> = ({ + AllMembers, +}) => { const { isOpen, onOpen, onClose } = useDisclosure(); - const [selectedScholar, setSelectedScholar] = useState(null); + const [selectedTeamMember, setSelectedTeamMember] = useState( + null, + ); - const openModal = (scholarid: string) => { - const scholar = AllMembers.find((scholar) => scholar.id === scholarid); + const openModal = (memberid: string) => { + const member = AllMembers.find((member) => member.id === memberid); - if (!scholar) { + if (!member) { return; } - setSelectedScholar(scholar); + setSelectedTeamMember(member); onOpen(); }; @@ -139,7 +138,7 @@ const ScholarsPage: React.FC< Skip to content - +
@@ -154,91 +153,91 @@ const ScholarsPage: React.FC< + {/* Left Section */} - {selectedScholar?.name} +
+ {selectedTeamMember?.name +
+ {/* Social Icons */} - {'linkedin' in (selectedScholar?.social || {}) && ( + {'linkedin' in (selectedTeamMember?.social || {}) && ( )} - {'resume' in (selectedScholar?.social || {}) && ( - - - - - - )} - {'twitter' in (selectedScholar?.social || {}) && ( + + {'twitter' in (selectedTeamMember?.social || {}) && ( )} - {'instagram' in (selectedScholar?.social || {}) && ( + + {'instagram' in (selectedTeamMember?.social || {}) && ( )} - {'github' in (selectedScholar?.social || {}) && ( + + {'github' in (selectedTeamMember?.social || {}) && ( )} - {'website' in (selectedScholar?.social || {}) && - selectedScholar?.social.website?.map( + + {'website' in (selectedTeamMember?.social || {}) && + selectedTeamMember?.social.website?.map( (site, index) => ( @@ -252,36 +251,43 @@ const ScholarsPage: React.FC< {/* Right Section */} -
-

- {selectedScholar?.name} -

- ({selectedScholar?.pronoun}) -

+
+

+ {selectedTeamMember?.name}{' '} + + ({selectedTeamMember?.pronoun}) +

+ {/* Location */} -
+
- -

{selectedScholar?.location}

+ + +

+ {selectedTeamMember?.location} +

+
- -

- {selectedScholar?.organization} + + +

+ {selectedTeamMember?.organization}

{/* Roles */} -
+
- {selectedScholar?.roles?.map((role, index) => ( + + {selectedTeamMember?.roles?.map((role, index) => ( {role} @@ -295,8 +301,9 @@ const ScholarsPage: React.FC< Education

-
    - {selectedScholar?.education.map((edu, index) => ( + +
      + {selectedTeamMember?.education.map((edu, index) => (
    • {edu.degree}{' '} {edu.institution && ( @@ -315,14 +322,15 @@ const ScholarsPage: React.FC< Expertise -
      - {selectedScholar?.expertise?.map( + +
      + {selectedTeamMember?.expertise?.map( (expertise, index) => ( {expertise} @@ -337,8 +345,9 @@ const ScholarsPage: React.FC< About Me +

      - {selectedScholar?.about} + {selectedTeamMember?.about}

      @@ -391,4 +400,4 @@ export const getStaticProps = async () => { }; }; -export default ScholarsPage; +export default TeamPage; diff --git a/template/blog-template.md b/template/blog-template.md index 63f4325..f335316 100644 --- a/template/blog-template.md +++ b/template/blog-template.md @@ -39,13 +39,13 @@ You can also use a markdown editor to write your article. A few good ones are li Copy the contents of this file and paste it into the markdown editor of your choice. You should have a live preview of your article on the right side of the editor. Once you are done writing your article, send the source content to the Bhavesh Patel on basecamp and we will publish it on the website. -The name of the file will be used as the URL for the article. For example, if you name the file `data-subject.md`, the URL for the article will be `https://aireadi.org/blog/data-subject`. Please make sure that the file name is in `kebab-case` and does not contain any special characters or spaces. +The name of the file will be used as the URL for the article. For example, if you name the file `data-subject.md`, the URL for the article will be `https://eyeact.org/blog/data-subject`. Please make sure that the file name is in `kebab-case` and does not contain any special characters or spaces. -An example of an already published article can be found here: +An example of an already published article can be found here: ### Important - Don't use a top level heading (#) in your article. The title of the article counts as a top level heading so you don't need to add one. Use second level headings (##) and below. - If you don't want to host your images on an online platform, you can send the images to Bhavesh Patel on basecamp and we will host them for you on the website itself. -- If you are already on the AI-READI [team page](https://aireadi.org/team), your image will be used as the author image. Each person on the team has a unique ID(in the format `firstname-lastname`). Use this id to reference yourself in this instance. Any authors that are not on the team page will have a rendomly generated image as their author image. +- If you are already on the AI-READI [team page](https://eyeact.org/team), your image will be used as the author image. Each person on the team has a unique ID(in the format `firstname-lastname`). Use this id to reference yourself in this instance. Any authors that are not on the team page will have a rendomly generated image as their author image. - The hero image will be zoomed in slightly on the website. Please make sure that the image you choose is high resolution and can be zoomed in without losing quality. Also make sure the main content takes the middle 60% of the image. This image should also be in landscape orientation. diff --git a/yarn.lock b/yarn.lock index 9a54d6e..0272cde 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1436,14 +1436,14 @@ resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.4.0.tgz#5e13fac887f08c44f76b0ccaf3370eb00fec9bb6" integrity sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg== -"@eslint-community/eslint-utils@^4.2.0": +"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": version "4.4.1" resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz#d1145bf2c20132d6400495d6df4bf59362fd9d56" integrity sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA== dependencies: eslint-visitor-keys "^3.4.3" -"@eslint-community/regexpp@^4.4.0", "@eslint-community/regexpp@^4.6.1": +"@eslint-community/regexpp@^4.10.0", "@eslint-community/regexpp@^4.4.0", "@eslint-community/regexpp@^4.6.1": version "4.12.1" resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.12.1.tgz#cfc6cffe39df390a3841cde2abccf92eaa7ae0e0" integrity sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ== @@ -1832,62 +1832,62 @@ hey-listen "^1.0.8" tslib "^2.3.1" -"@next/env@13.5.8": - version "13.5.8" - resolved "https://registry.yarnpkg.com/@next/env/-/env-13.5.8.tgz#404d3b3e5881b6a0510500c6cc97e3589a2e6371" - integrity sha512-YmiG58BqyZ2FjrF2+5uZExL2BrLr8RTQzLXNDJ8pJr0O+rPlOeDPXp1p1/4OrR3avDidzZo3D8QO2cuDv1KCkw== - -"@next/eslint-plugin-next@13.5.8": - version "13.5.8" - resolved "https://registry.yarnpkg.com/@next/eslint-plugin-next/-/eslint-plugin-next-13.5.8.tgz#302e24dd75ec9c02060b12c9d946fc6dbf06cb9b" - integrity sha512-rmNr6kz5g7x2CQ/5RMmav7/wTGOFIv4fcP+bxawNaJP+Y5Gb0Dvq+omBUvL66pDo/fhWurElatelEFpHX+tMSw== - dependencies: - glob "7.1.7" - -"@next/swc-darwin-arm64@13.5.8": - version "13.5.8" - resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.5.8.tgz#c32bc6662326a623f177e8b9a511128d7ea5af4d" - integrity sha512-HkFw3QPeIy9bImWVTbsvzfEWQkuzBEQTK/L7ORMg+9sXNN0vNR5Gz/chD4/VbozTHyA38lWTrMBfLoWVpD+2IA== - -"@next/swc-darwin-x64@13.5.8": - version "13.5.8" - resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-13.5.8.tgz#bef7df0237a434b6ad23c1e13ae2e564b2ebcccf" - integrity sha512-TpRTH5FyH4qGw0MCq6UE3yQGWtwhdDCwSE0wWcYwDWC5cpx3mGKVmAVKwDNbrpk0U5bl0tEzgxp5X4UPHWA81A== - -"@next/swc-linux-arm64-gnu@13.5.8": - version "13.5.8" - resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.5.8.tgz#5bad9476ba774487bcafddec7bd824f1427555f0" - integrity sha512-KUPKuu4EZCCTU5M61YLpuL2fKMWQRijJLtBk2Hph8FJUx6RsNRDwS0MVlJqAr2IwjJwrNxYm5QAdQ1LuRbrZMw== - -"@next/swc-linux-arm64-musl@13.5.8": - version "13.5.8" - resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.5.8.tgz#55df6e5f980570d3cb821b76232d9e7224907886" - integrity sha512-hLyaBgXynyuVgqLwzcwF6loc0XuEz9zuK8XbzX5uslj3aqiw38l+qL1IJNLzHmkDX0nfVuBfIRV6QPsm0sCXnQ== - -"@next/swc-linux-x64-gnu@13.5.8": - version "13.5.8" - resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.5.8.tgz#c1d36f7830ad53118d145ac250ff144a1a5b7778" - integrity sha512-IhxeEpi+U85GU9p6bVSAFMwuCNRdpmHueM8Z9DRft8f70Rvt3Q9tNFJxqLxAbiGoNOR7TuLNjAw2wJucHfMw3g== - -"@next/swc-linux-x64-musl@13.5.8": - version "13.5.8" - resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.5.8.tgz#670bd7f10cf4324b22a5f1573558f5f011b421f8" - integrity sha512-NQICDU7X/tcAVkTEfvpkq5Z1EViodDj3m18wiyJ5wpzOFf4LH7vFjLBVCWNcf3/sfqv/yfD8jshqrffOPtZitg== - -"@next/swc-win32-arm64-msvc@13.5.8": - version "13.5.8" - resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.5.8.tgz#203dcc899f438826f3a22ffe0fb0d56a324625ac" - integrity sha512-ndLIuFI/26CrhG+pqGkW+yPV/xuIijgaZbzPhujlDaUGczizzXgnI78iuisdPdGoMHLlQ9pRkFUeMGzENdyEHg== - -"@next/swc-win32-ia32-msvc@13.5.8": - version "13.5.8" - resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.5.8.tgz#21eb6afb07d5cb9b3600cf33d6bc709b4d59ea20" - integrity sha512-9HUxSP76n8VbEtwZVNZDMY32Y4fm53ORaiopQkGQ4q54okYa5T8szhVkLTFKu4gaA/KJcJGvCC5dDIaqfSta1w== - -"@next/swc-win32-x64-msvc@13.5.8": - version "13.5.8" - resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.5.8.tgz#21770d42a25dc591661f027f41100c4b48ca5938" - integrity sha512-WFisiehrLrkX/nv6Vg7CUT6tdrhO6Nv0mLh5zuYQ5GLD4OnaOHkBt9iRkOziMy7ny+qF+V7023+loZIV/R9j8A== +"@next/env@14.2.23": + version "14.2.23" + resolved "https://registry.yarnpkg.com/@next/env/-/env-14.2.23.tgz#3003b53693cbc476710b856f83e623c8231a6be9" + integrity sha512-CysUC9IO+2Bh0omJ3qrb47S8DtsTKbFidGm6ow4gXIG6reZybqxbkH2nhdEm1tC8SmgzDdpq3BIML0PWsmyUYA== + +"@next/eslint-plugin-next@14.2.23": + version "14.2.23" + resolved "https://registry.yarnpkg.com/@next/eslint-plugin-next/-/eslint-plugin-next-14.2.23.tgz#b7903c7a99108e73d318fadb5c76de3cc2c58ab4" + integrity sha512-efRC7m39GoiU1fXZRgGySqYbQi6ZyLkuGlvGst7IwkTTczehQTJA/7PoMg4MMjUZvZEGpiSEu+oJBAjPawiC3Q== + dependencies: + glob "10.3.10" + +"@next/swc-darwin-arm64@14.2.23": + version "14.2.23" + resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.23.tgz#6d83f03e35e163e8bbeaf5aeaa6bf55eed23d7a1" + integrity sha512-WhtEntt6NcbABA8ypEoFd3uzq5iAnrl9AnZt9dXdO+PZLACE32z3a3qA5OoV20JrbJfSJ6Sd6EqGZTrlRnGxQQ== + +"@next/swc-darwin-x64@14.2.23": + version "14.2.23" + resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.23.tgz#e02abc35d5e36ce1550f674f8676999f293ba54f" + integrity sha512-vwLw0HN2gVclT/ikO6EcE+LcIN+0mddJ53yG4eZd0rXkuEr/RnOaMH8wg/sYl5iz5AYYRo/l6XX7FIo6kwbw1Q== + +"@next/swc-linux-arm64-gnu@14.2.23": + version "14.2.23" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.23.tgz#f13516ad2d665950951b59e7c239574bb8504d63" + integrity sha512-uuAYwD3At2fu5CH1wD7FpP87mnjAv4+DNvLaR9kiIi8DLStWSW304kF09p1EQfhcbUI1Py2vZlBO2VaVqMRtpg== + +"@next/swc-linux-arm64-musl@14.2.23": + version "14.2.23" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.23.tgz#10d05a1c161dc8426d54ccf6d9bbed6953a3252a" + integrity sha512-Mm5KHd7nGgeJ4EETvVgFuqKOyDh+UMXHXxye6wRRFDr4FdVRI6YTxajoV2aHE8jqC14xeAMVZvLqYqS7isHL+g== + +"@next/swc-linux-x64-gnu@14.2.23": + version "14.2.23" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.23.tgz#7f5856df080f58ba058268b30429a2ab52500536" + integrity sha512-Ybfqlyzm4sMSEQO6lDksggAIxnvWSG2cDWnG2jgd+MLbHYn2pvFA8DQ4pT2Vjk3Cwrv+HIg7vXJ8lCiLz79qoQ== + +"@next/swc-linux-x64-musl@14.2.23": + version "14.2.23" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.23.tgz#d494ebdf26421c91be65f9b1d095df0191c956d8" + integrity sha512-OSQX94sxd1gOUz3jhhdocnKsy4/peG8zV1HVaW6DLEbEmRRtUCUQZcKxUD9atLYa3RZA+YJx+WZdOnTkDuNDNA== + +"@next/swc-win32-arm64-msvc@14.2.23": + version "14.2.23" + resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.23.tgz#62786e7ba4822a20b6666e3e03e5a389b0e7eb3b" + integrity sha512-ezmbgZy++XpIMTcTNd0L4k7+cNI4ET5vMv/oqNfTuSXkZtSA9BURElPFyarjjGtRgZ9/zuKDHoMdZwDZIY3ehQ== + +"@next/swc-win32-ia32-msvc@14.2.23": + version "14.2.23" + resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.23.tgz#ef028af91e1c40a4ebba0d2c47b23c1eeb299594" + integrity sha512-zfHZOGguFCqAJ7zldTKg4tJHPJyJCOFhpoJcVxKL9BSUHScVDnMdDuOU1zPPGdOzr/GWxbhYTjyiEgLEpAoFPA== + +"@next/swc-win32-x64-msvc@14.2.23": + version "14.2.23" + resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.23.tgz#c81838f02f2f16a321b7533890fb63c1edec68e1" + integrity sha512-xCtq5BD553SzOgSZ7UH5LH+OATQihydObTrCTvVzOro8QiWYKdBVwcB2Mn2MLMo6DGW9yH1LSPw7jS7HhgJgjw== "@nodelib/fs.scandir@2.1.5": version "2.1.5" @@ -2107,11 +2107,17 @@ "@svgr/plugin-jsx" "^6.5.1" "@svgr/plugin-svgo" "^6.5.1" -"@swc/helpers@0.5.2": - version "0.5.2" - resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.2.tgz#85ea0c76450b61ad7d10a37050289eded783c27d" - integrity sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw== +"@swc/counter@^0.1.3": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@swc/counter/-/counter-0.1.3.tgz#cc7463bd02949611c6329596fccd2b0ec782b0e9" + integrity sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ== + +"@swc/helpers@0.5.5": + version "0.5.5" + resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.5.tgz#12689df71bfc9b21c4f4ca00ae55f2f16c8b77c0" + integrity sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A== dependencies: + "@swc/counter" "^0.1.3" tslib "^2.4.0" "@tailwindcss/forms@^0.5.3": @@ -2664,6 +2670,21 @@ dependencies: "@types/yargs-parser" "*" +"@typescript-eslint/eslint-plugin@^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0": + version "8.20.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.20.0.tgz#b47a398e0e551cb008c60190b804394e6852c863" + integrity sha512-naduuphVw5StFfqp4Gq4WhIBE2gN1GEmMUExpJYknZJdRnc+2gDzB8Z3+5+/Kv33hPQRDGzQO/0opHE72lZZ6A== + dependencies: + "@eslint-community/regexpp" "^4.10.0" + "@typescript-eslint/scope-manager" "8.20.0" + "@typescript-eslint/type-utils" "8.20.0" + "@typescript-eslint/utils" "8.20.0" + "@typescript-eslint/visitor-keys" "8.20.0" + graphemer "^1.4.0" + ignore "^5.3.1" + natural-compare "^1.4.0" + ts-api-utils "^2.0.0" + "@typescript-eslint/eslint-plugin@^5.42.0": version "5.62.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz#aeef0328d172b9e37d9bab6dbc13b87ed88977db" @@ -2680,15 +2701,15 @@ semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/parser@^5.4.2 || ^6.0.0": - version "6.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-6.21.0.tgz#af8fcf66feee2edc86bc5d1cf45e33b0630bf35b" - integrity sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ== +"@typescript-eslint/parser@^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0": + version "8.20.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.20.0.tgz#5caf2230a37094dc0e671cf836b96dd39b587ced" + integrity sha512-gKXG7A5HMyjDIedBi6bUrDcun8GIjnI8qOwVLiY3rx6T/sHP/19XLJOnIq/FgQvWLHja5JN/LSE7eklNBr612g== dependencies: - "@typescript-eslint/scope-manager" "6.21.0" - "@typescript-eslint/types" "6.21.0" - "@typescript-eslint/typescript-estree" "6.21.0" - "@typescript-eslint/visitor-keys" "6.21.0" + "@typescript-eslint/scope-manager" "8.20.0" + "@typescript-eslint/types" "8.20.0" + "@typescript-eslint/typescript-estree" "8.20.0" + "@typescript-eslint/visitor-keys" "8.20.0" debug "^4.3.4" "@typescript-eslint/parser@^5.42.0": @@ -2709,13 +2730,13 @@ "@typescript-eslint/types" "5.62.0" "@typescript-eslint/visitor-keys" "5.62.0" -"@typescript-eslint/scope-manager@6.21.0": - version "6.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz#ea8a9bfc8f1504a6ac5d59a6df308d3a0630a2b1" - integrity sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg== +"@typescript-eslint/scope-manager@8.20.0": + version "8.20.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.20.0.tgz#aaf4198b509fb87a6527c02cfbfaf8901179e75c" + integrity sha512-J7+VkpeGzhOt3FeG1+SzhiMj9NzGD/M6KoGn9f4dbz3YzK9hvbhVTmLj/HiTp9DazIzJ8B4XcM80LrR9Dm1rJw== dependencies: - "@typescript-eslint/types" "6.21.0" - "@typescript-eslint/visitor-keys" "6.21.0" + "@typescript-eslint/types" "8.20.0" + "@typescript-eslint/visitor-keys" "8.20.0" "@typescript-eslint/type-utils@5.62.0": version "5.62.0" @@ -2727,15 +2748,25 @@ debug "^4.3.4" tsutils "^3.21.0" +"@typescript-eslint/type-utils@8.20.0": + version "8.20.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.20.0.tgz#958171d86b213a3f32b5b16b91db267968a4ef19" + integrity sha512-bPC+j71GGvA7rVNAHAtOjbVXbLN5PkwqMvy1cwGeaxUoRQXVuKCebRoLzm+IPW/NtFFpstn1ummSIasD5t60GA== + dependencies: + "@typescript-eslint/typescript-estree" "8.20.0" + "@typescript-eslint/utils" "8.20.0" + debug "^4.3.4" + ts-api-utils "^2.0.0" + "@typescript-eslint/types@5.62.0": version "5.62.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.62.0.tgz#258607e60effa309f067608931c3df6fed41fd2f" integrity sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ== -"@typescript-eslint/types@6.21.0": - version "6.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.21.0.tgz#205724c5123a8fef7ecd195075fa6e85bac3436d" - integrity sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg== +"@typescript-eslint/types@8.20.0": + version "8.20.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.20.0.tgz#487de5314b5415dee075e95568b87a75a3e730cf" + integrity sha512-cqaMiY72CkP+2xZRrFt3ExRBu0WmVitN/rYPZErA80mHjHx/Svgp8yfbzkJmDoQ/whcytOPO9/IZXnOc+wigRA== "@typescript-eslint/typescript-estree@5.62.0": version "5.62.0" @@ -2750,19 +2781,19 @@ semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/typescript-estree@6.21.0": - version "6.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz#c47ae7901db3b8bddc3ecd73daff2d0895688c46" - integrity sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ== +"@typescript-eslint/typescript-estree@8.20.0": + version "8.20.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.20.0.tgz#658cea07b7e5981f19bce5cf1662cb70ad59f26b" + integrity sha512-Y7ncuy78bJqHI35NwzWol8E0X7XkRVS4K4P4TCyzWkOJih5NDvtoRDW4Ba9YJJoB2igm9yXDdYI/+fkiiAxPzA== dependencies: - "@typescript-eslint/types" "6.21.0" - "@typescript-eslint/visitor-keys" "6.21.0" + "@typescript-eslint/types" "8.20.0" + "@typescript-eslint/visitor-keys" "8.20.0" debug "^4.3.4" - globby "^11.1.0" + fast-glob "^3.3.2" is-glob "^4.0.3" - minimatch "9.0.3" - semver "^7.5.4" - ts-api-utils "^1.0.1" + minimatch "^9.0.4" + semver "^7.6.0" + ts-api-utils "^2.0.0" "@typescript-eslint/utils@5.62.0": version "5.62.0" @@ -2778,6 +2809,16 @@ eslint-scope "^5.1.1" semver "^7.3.7" +"@typescript-eslint/utils@8.20.0": + version "8.20.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.20.0.tgz#53127ecd314b3b08836b4498b71cdb86f4ef3aa2" + integrity sha512-dq70RUw6UK9ei7vxc4KQtBRk7qkHZv447OUZ6RPQMQl71I3NZxQJX/f32Smr+iqWrB02pHKn2yAdHBb0KNrRMA== + dependencies: + "@eslint-community/eslint-utils" "^4.4.0" + "@typescript-eslint/scope-manager" "8.20.0" + "@typescript-eslint/types" "8.20.0" + "@typescript-eslint/typescript-estree" "8.20.0" + "@typescript-eslint/visitor-keys@5.62.0": version "5.62.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz#2174011917ce582875954ffe2f6912d5931e353e" @@ -2786,13 +2827,13 @@ "@typescript-eslint/types" "5.62.0" eslint-visitor-keys "^3.3.0" -"@typescript-eslint/visitor-keys@6.21.0": - version "6.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz#87a99d077aa507e20e238b11d56cc26ade45fe47" - integrity sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A== +"@typescript-eslint/visitor-keys@8.20.0": + version "8.20.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.20.0.tgz#2df6e24bc69084b81f06aaaa48d198b10d382bed" + integrity sha512-v/BpkeeYAsPkKCkR8BDwcno0llhzWVqPOamQrAEMdpZav2Y9OVjd9dwJyBLJWwf335B5DmlifECIkZRJCaGaHA== dependencies: - "@typescript-eslint/types" "6.21.0" - eslint-visitor-keys "^3.4.1" + "@typescript-eslint/types" "8.20.0" + eslint-visitor-keys "^4.2.0" "@ungap/structured-clone@^1.0.0", "@ungap/structured-clone@^1.2.0": version "1.2.1" @@ -3400,7 +3441,12 @@ camelcase@^6.2.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== -caniuse-lite@^1.0.30001406, caniuse-lite@^1.0.30001646, caniuse-lite@^1.0.30001688: +caniuse-lite@^1.0.30001579: + version "1.0.30001692" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001692.tgz#4585729d95e6b95be5b439da6ab55250cd125bf9" + integrity sha512-A95VKan0kdtrsnMubMKxEKUKImOPSuCpYgxSQBo036P5YYgVIcOYJEgt/txJWqObiRQeISNCfef9nvlQ0vbV7A== + +caniuse-lite@^1.0.30001646, caniuse-lite@^1.0.30001688: version "1.0.30001690" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001690.tgz#f2d15e3aaf8e18f76b2b8c1481abde063b8104c8" integrity sha512-5ExiE3qQN6oF8Clf8ifIDcMRCRE/dMGcETG/XGMD8/XiXm6HXQgQTh1yZYLXXpSOsEUlJm1Xr7kGULZTuGtP/w== @@ -3679,6 +3725,11 @@ cosmiconfig@^7, cosmiconfig@^7.0.0, cosmiconfig@^7.0.1: path-type "^4.0.0" yaml "^1.10.0" +countup.js@^2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/countup.js/-/countup.js-2.8.0.tgz#64951f2df3ede28839413d654d8fef28251c32a8" + integrity sha512-f7xEhX0awl4NOElHulrl4XRfKoNH3rB+qfNSZZyjSZhaAoUk6elvhH+MNxMmlmuUJ2/QNTWPSA7U4mNtIAKljQ== + create-require@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" @@ -4585,14 +4636,15 @@ escodegen@^2.0.0: optionalDependencies: source-map "~0.6.1" -eslint-config-next@^13.0.2: - version "13.5.8" - resolved "https://registry.yarnpkg.com/eslint-config-next/-/eslint-config-next-13.5.8.tgz#b1032029aea5418f30f7fd15d2a2d8b2aba7bfab" - integrity sha512-EpNu08GB4KT377oDOQ6bi6icQFBgXcynqCE2neCu138k2Hsfr2i+5goUrRhz3YReDXB3YhelvQJLxm2apr3Gdw== +eslint-config-next@^14.2.23: + version "14.2.23" + resolved "https://registry.yarnpkg.com/eslint-config-next/-/eslint-config-next-14.2.23.tgz#5639fe1c01bb7d5a6486a34a16fc37e0a0b603f8" + integrity sha512-qtWJzOsDZxnLtXLNtnVjbutHmnEp6QTTSZBTlTCge/Wy0AsUaq8nwR91dBcZZvFg3eY3zKFPBhUkLMHu3Qpauw== dependencies: - "@next/eslint-plugin-next" "13.5.8" + "@next/eslint-plugin-next" "14.2.23" "@rushstack/eslint-patch" "^1.3.3" - "@typescript-eslint/parser" "^5.4.2 || ^6.0.0" + "@typescript-eslint/eslint-plugin" "^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0" + "@typescript-eslint/parser" "^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0" eslint-import-resolver-node "^0.3.6" eslint-import-resolver-typescript "^3.5.2" eslint-plugin-import "^2.28.1" @@ -4756,6 +4808,11 @@ eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4 resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== +eslint-visitor-keys@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz#687bacb2af884fcdda8a6e7d65c606f46a14cd45" + integrity sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw== + eslint@^8.26.0: version "8.57.1" resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.57.1.tgz#7df109654aba7e3bbe5c8eae533c5e461d3c6ca9" @@ -5243,22 +5300,16 @@ glob-parent@^6.0.2: dependencies: is-glob "^4.0.3" -glob-to-regexp@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" - integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== - -glob@7.1.7: - version "7.1.7" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" - integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== +glob@10.3.10: + version "10.3.10" + resolved "https://registry.yarnpkg.com/glob/-/glob-10.3.10.tgz#0351ebb809fd187fe421ab96af83d3a70715df4b" + integrity sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g== dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" + foreground-child "^3.1.0" + jackspeak "^2.3.5" + minimatch "^9.0.1" + minipass "^5.0.0 || ^6.0.2 || ^7.0.0" + path-scurry "^1.10.1" glob@^10.3.10: version "10.4.5" @@ -5328,7 +5379,7 @@ gopd@^1.0.1, gopd@^1.2.0: resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.2.0.tgz#89f56b8217bdbc8802bd299df6d7f1081d7e51a1" integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg== -graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.9: +graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.11, graceful-fs@^4.2.4, graceful-fs@^4.2.9: version "4.2.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== @@ -5703,7 +5754,7 @@ ieee754@^1.1.13: resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== -ignore@^5.2.0: +ignore@^5.2.0, ignore@^5.3.1: version "5.3.2" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.2.tgz#3cd40e729f3643fd87cb04e50bf0eb722bc596f5" integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g== @@ -6124,6 +6175,15 @@ iterator.prototype@^1.1.4: has-symbols "^1.1.0" set-function-name "^2.0.2" +jackspeak@^2.3.5: + version "2.3.6" + resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-2.3.6.tgz#647ecc472238aee4b06ac0e461acc21a8c505ca8" + integrity sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ== + dependencies: + "@isaacs/cliui" "^8.0.2" + optionalDependencies: + "@pkgjs/parseargs" "^0.11.0" + jackspeak@^3.1.2: version "3.4.3" resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-3.4.3.tgz#8833a9d89ab4acde6188942bd1c53b6390ed5a8a" @@ -7411,13 +7471,6 @@ mini-svg-data-uri@^1.2.3: resolved "https://registry.yarnpkg.com/mini-svg-data-uri/-/mini-svg-data-uri-1.4.4.tgz#8ab0aabcdf8c29ad5693ca595af19dd2ead09939" integrity sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg== -minimatch@9.0.3: - version "9.0.3" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.3.tgz#a6e00c3de44c3a542bfaae70abfc22420a6da825" - integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg== - dependencies: - brace-expansion "^2.0.1" - minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" @@ -7425,7 +7478,7 @@ minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: dependencies: brace-expansion "^1.1.7" -minimatch@^9.0.4: +minimatch@^9.0.1, minimatch@^9.0.4: version "9.0.5" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5" integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== @@ -7535,28 +7588,28 @@ next-sitemap@^2.5.28: "@corex/deepmerge" "^2.6.148" minimist "^1.2.6" -next@^13.0.2: - version "13.5.8" - resolved "https://registry.yarnpkg.com/next/-/next-13.5.8.tgz#173883458bb80449111b01d2e62a33f9f9e7eacf" - integrity sha512-VlR7FaXpSibCs7ujOqStaDFTGSdX/NvWgLDcd47oiHUe8i63ZtNkX9intgcYAu/MxpaeEGinHaMB5mwxuzglKw== +next@^14.2.23: + version "14.2.23" + resolved "https://registry.yarnpkg.com/next/-/next-14.2.23.tgz#37edc9a4d42c135fd97a4092f829e291e2e7c943" + integrity sha512-mjN3fE6u/tynneLiEg56XnthzuYw+kD7mCujgVqioxyPqbmiotUCGJpIZGS/VaPg3ZDT1tvWxiVyRzeqJFm/kw== dependencies: - "@next/env" "13.5.8" - "@swc/helpers" "0.5.2" + "@next/env" "14.2.23" + "@swc/helpers" "0.5.5" busboy "1.6.0" - caniuse-lite "^1.0.30001406" + caniuse-lite "^1.0.30001579" + graceful-fs "^4.2.11" postcss "8.4.31" styled-jsx "5.1.1" - watchpack "2.4.0" optionalDependencies: - "@next/swc-darwin-arm64" "13.5.8" - "@next/swc-darwin-x64" "13.5.8" - "@next/swc-linux-arm64-gnu" "13.5.8" - "@next/swc-linux-arm64-musl" "13.5.8" - "@next/swc-linux-x64-gnu" "13.5.8" - "@next/swc-linux-x64-musl" "13.5.8" - "@next/swc-win32-arm64-msvc" "13.5.8" - "@next/swc-win32-ia32-msvc" "13.5.8" - "@next/swc-win32-x64-msvc" "13.5.8" + "@next/swc-darwin-arm64" "14.2.23" + "@next/swc-darwin-x64" "14.2.23" + "@next/swc-linux-arm64-gnu" "14.2.23" + "@next/swc-linux-arm64-musl" "14.2.23" + "@next/swc-linux-x64-gnu" "14.2.23" + "@next/swc-linux-x64-musl" "14.2.23" + "@next/swc-win32-arm64-msvc" "14.2.23" + "@next/swc-win32-ia32-msvc" "14.2.23" + "@next/swc-win32-x64-msvc" "14.2.23" node-abi@^3.3.0: version "3.71.0" @@ -7848,7 +7901,7 @@ path-parse@^1.0.7: resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== -path-scurry@^1.11.1: +path-scurry@^1.10.1, path-scurry@^1.11.1: version "1.11.1" resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.11.1.tgz#7960a668888594a0720b12a911d1a742ab9f11d2" integrity sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA== @@ -8135,7 +8188,7 @@ react-clientside-effect@^1.2.6: dependencies: "@babel/runtime" "^7.12.13" -react-dom@^18.2.0: +react-dom@18: version "18.3.1" resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.3.1.tgz#c2265d79511b57d479b3dd3fdfa51536494c5cb4" integrity sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw== @@ -8258,7 +8311,7 @@ react-use@^17.5.0: ts-easing "^0.2.0" tslib "^2.1.0" -react@^18.2.0: +react@18: version "18.3.1" resolved "https://registry.yarnpkg.com/react/-/react-18.3.1.tgz#49ab892009c53933625bd16b2533fc754cab2891" integrity sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ== @@ -8721,7 +8774,7 @@ semver@^6.3.0, semver@^6.3.1: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8, semver@^7.5.3, semver@^7.5.4, semver@^7.6.3: +semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8, semver@^7.5.3, semver@^7.6.0, semver@^7.6.3: version "7.6.3" resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143" integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== @@ -9509,10 +9562,10 @@ trough@^2.0.0: resolved "https://registry.yarnpkg.com/trough/-/trough-2.2.0.tgz#94a60bd6bd375c152c1df911a4b11d5b0256f50f" integrity sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw== -ts-api-utils@^1.0.1: - version "1.4.3" - resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.4.3.tgz#bfc2215fe6528fecab2b0fba570a2e8a4263b064" - integrity sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw== +ts-api-utils@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-2.0.0.tgz#b9d7d5f7ec9f736f4d0f09758b8607979044a900" + integrity sha512-xCt/TOAc+EOHS1XPnijD3/yzpH6qg2xppZO1YDqGoVsNXfQfzHpOdNuXwrwOU8u4ITXJyDCTyt8w5g1sZv9ynQ== ts-easing@^0.2.0: version "0.2.0" @@ -9898,14 +9951,6 @@ walker@^1.0.7: dependencies: makeerror "1.0.12" -watchpack@2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.0.tgz#fa33032374962c78113f93c7f2fb4c54c9862a5d" - integrity sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg== - dependencies: - glob-to-regexp "^0.4.1" - graceful-fs "^4.1.2" - web-namespaces@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/web-namespaces/-/web-namespaces-2.0.1.tgz#1010ff7c650eccb2592cebeeaf9a1b253fd40692"