diff --git a/pages/index.page.tsx b/pages/index.page.tsx index bc627b9b5..c104798cd 100644 --- a/pages/index.page.tsx +++ b/pages/index.page.tsx @@ -1,4 +1,4 @@ -import React, { useEffect, useState } from 'react'; +import React, { useEffect, useMemo, useState } from 'react'; import { getLayout } from '../components/SiteLayout'; import { DocSearch } from '@docsearch/react'; import fs from 'fs'; @@ -93,79 +93,67 @@ const Home = (props: any) => { const timeToRead = Math.ceil(readingTime(blogPosts[0].content).minutes); const { resolvedTheme } = useTheme(); - const [asyncapi_logo, setAsyncapi_logo] = useState(''); - const [vpsserver_logo, setVPSserver_logo] = useState(''); - const [airbnb_logo, setAirbnb_logo] = useState(''); - const [postman_logo, setPostman_logo] = useState(''); - const [itflashcards_logo, setItflashcards_logo] = useState(''); - const [route4me_logo, setRoute4me_logo] = useState(''); - const [n8n_logo, setN8n_logo] = useState(''); - const [endjin_logo, setEndjin_logo] = useState(''); - const [llc_logo, setLlc_logo] = useState(''); - const [common_room_logo, setCommon_room_logo] = useState(''); - const [slack_logo, setSlack_logo] = useState(''); - const [ccopter_logo, setCCopter_logo] = useState(''); const [isClient, setIsClient] = useState(false); - const [octue_logo, setOctue_logo] = useState(''); - const [apideck_logo, setApideck_logo] = useState(''); - const [rxdb_logo, setRxdb_logo] = useState(''); - const [wda_logo, setWDA_logo] = useState(''); - const [anon_logo, setAnon_logo] = useState(''); - const [sourcemeta_logo, setSourcemeta_logo] = useState(''); - const [dottxt_logo, setDottxt_logo] = useState(''); - const [supadata_logo, setSupadata_logo] = useState(''); - const [devevents_logo, setDevevents_logo] = useState(''); useEffect(() => { // Ensure the component is only rendered client-side setIsClient(true); }, []); - useEffect(() => { - if (resolvedTheme === 'dark') { - setAsyncapi_logo('/img/logos/dark-mode/asyncapi_white.svg'); - setAirbnb_logo('/img/logos/dark-mode/airbnb_white.png'); - setPostman_logo('/img/logos/usedby/postman-white.png'); - setEndjin_logo('/img/logos/sponsors/endjin-logo.svg'); - setLlc_logo('/img/logos/dark-mode/llc_white.svg'); - setCommon_room_logo('/img/logos/dark-mode/common-room_white.svg'); - setSlack_logo('/img/logos/dark-mode/slack_white.svg'); - setVPSserver_logo('/img/logos/sponsors/vps-server-logo.svg'); - setItflashcards_logo('/img/logos/sponsors/it_flashcards-white.svg'); - setRoute4me_logo('/img/logos/sponsors/route4me-logo-dark.svg'); - setN8n_logo('/img/logos/sponsors/n8n-logo-dark.svg'); - setCCopter_logo('/img/logos/sponsors/copycopter-white.png'); - setOctue_logo('/img/logos/sponsors/octue-white.svg'); - setApideck_logo('/img/logos/sponsors/apideck-white.svg'); - setRxdb_logo('/img/logos/sponsors/rxdb.svg'); - setWDA_logo('/img/logos/sponsors/wda-dark.svg'); - setAnon_logo('/img/logos/sponsors/anon-white.png'); - setSourcemeta_logo('/img/logos/sponsors/sourcemeta-logo-light.svg'); - setDottxt_logo('/img/logos/sponsors/dottxt-logo-white.svg'); - setSupadata_logo('/img/logos/sponsors/supadata-logo-light.svg'); - setDevevents_logo('/img/logos/dark-mode/dev_events_logo.png'); - } else { - setAsyncapi_logo('/img/logos/sponsors/asyncapi-logo-dark.svg'); - setAirbnb_logo('/img/logos/sponsors/airbnb-logo.png'); - setPostman_logo('/img/logos/sponsors/postman_logo-orange.svg'); - setEndjin_logo('/img/logos/sponsors/endjin-logo.svg'); - setLlc_logo('/img/logos/sponsors/llc-logo.svg'); - setCommon_room_logo('/img/logos/supported/common-room.svg'); - setSlack_logo('/img/logos/supported/slack-logo.svg'); - setVPSserver_logo('/img/logos/sponsors/vps-server-logo.svg'); - setItflashcards_logo('/img/logos/sponsors/it_flashcards.svg'); - setRoute4me_logo('/img/logos/sponsors/route4me-logo-white.svg'); - setN8n_logo('/img/logos/sponsors/n8n-logo-white.svg'); - setCCopter_logo('/img/logos/sponsors/copycopter.png'); - setOctue_logo('/img/logos/sponsors/octue-black.svg'); - setApideck_logo('/img/logos/sponsors/apideck.svg'); - setRxdb_logo('/img/logos/sponsors/rxdb.svg'); - setWDA_logo('/img/logos/sponsors/wda.svg'); - setAnon_logo('/img/logos/sponsors/anon-black.png'); - setSourcemeta_logo('/img/logos/sponsors/sourcemeta-logo-dark.svg'); - setSupadata_logo('/img/logos/sponsors/supadata-logo-dark.svg'); - setDottxt_logo('/img/logos/sponsors/dottxt-logo-dark.svg'); - } - }, [resolvedTheme]); + const LOGOS_PATHS = { + darkLogos: { + asyncapi: '/img/logos/dark-mode/asyncapi_white.svg', + airbnb: '/img/logos/dark-mode/airbnb_white.png', + postman: '/img/logos/usedby/postman-white.png', + endjin: '/img/logos/sponsors/endjin-logo.svg', + llc: '/img/logos/dark-mode/llc_white.svg', + common_room: '/img/logos/dark-mode/common-room_white.svg', + slack: '/img/logos/dark-mode/slack_white.svg', + vpsserver: '/img/logos/sponsors/vps-server-logo.svg', + itflashcards: '/img/logos/sponsors/it_flashcards-white.svg', + route4me: '/img/logos/sponsors/route4me-logo-dark.svg', + n8n: '/img/logos/sponsors/n8n-logo-dark.svg', + ccopter: '/img/logos/sponsors/copycopter-white.png', + octue: '/img/logos/sponsors/octue-white.svg', + apideck: '/img/logos/sponsors/apideck-white.svg', + rxdb: '/img/logos/sponsors/rxdb.svg', + wda: '/img/logos/sponsors/wda-dark.svg', + anon: '/img/logos/sponsors/anon-white.png', + sourcemeta: '/img/logos/sponsors/sourcemeta-logo-light.svg', + dottxt: '/img/logos/sponsors/dottxt-logo-white.svg', + supadata: '/img/logos/sponsors/supadata-logo-light.svg', + devevents: '/img/logos/dark-mode/dev_events_logo.png', + }, + lightLogos: { + asyncapi: '/img/logos/sponsors/asyncapi-logo-dark.svg', + airbnb: '/img/logos/sponsors/airbnb-logo.png', + postman: '/img/logos/sponsors/postman_logo-orange.svg', + endjin: '/img/logos/sponsors/endjin-logo.svg', + llc: '/img/logos/sponsors/llc-logo.svg', + common_room: '/img/logos/supported/common-room.svg', + slack: '/img/logos/supported/slack-logo.svg', + vpsserver: '/img/logos/sponsors/vps-server-logo.svg', + itflashcards: '/img/logos/sponsors/it_flashcards.svg', + route4me: '/img/logos/sponsors/route4me-logo-white.svg', + n8n: '/img/logos/sponsors/n8n-logo-white.svg', + ccopter: '/img/logos/sponsors/copycopter.png', + octue: '/img/logos/sponsors/octue-black.svg', + apideck: '/img/logos/sponsors/apideck.svg', + rxdb: '/img/logos/sponsors/rxdb.svg', + wda: '/img/logos/sponsors/wda.svg', + anon: '/img/logos/sponsors/anon-black.png', + sourcemeta: '/img/logos/sponsors/sourcemeta-logo-dark.svg', + supadata: '/img/logos/sponsors/supadata-logo-dark.svg', + dottxt: '/img/logos/sponsors/dottxt-logo-dark.svg', + devevents: '/img/logos/dark-mode/dev_events_logo.png', + }, + }; + + const logos = useMemo( + () => + LOGOS_PATHS[resolvedTheme == 'dark' ? 'darkLogos' : 'lightLogos'] || + LOGOS_PATHS.lightLogos, + [resolvedTheme], + ); return (
@@ -692,8 +680,8 @@ const Home = (props: any) => { {isClient && ( <> asyncapi { {isClient && ( <> airbnb { {isClient && ( <> postman { {isClient && ( <> endjin { {isClient && ( <> llc { {isClient && ( <> vpsserver { {isClient && ( <> itflashcards { {isClient && ( <> route4me { {isClient && ( <> n8n { {isClient && ( <> ccopter { )} - + { rel='noreferrer' > The Realtime Unified API
 for Accounting integrations @@ -862,8 +847,8 @@ for Accounting integrations' rel='noreferrer' > The local Database for JavaScript Applications @@ -873,8 +858,8 @@ for Accounting integrations' rel='noreferrer' > best website design agencies @@ -884,24 +869,20 @@ for Accounting integrations' rel='noreferrer' > Instagram Story Viewer supadata logo - dottxt logo + dottxt logo dottxt logo @@ -959,8 +940,8 @@ for Accounting integrations' {isClient && ( <> dev events