diff --git a/components/FlipPanel.tsx b/components/FlipPanel.tsx index 1b861c5..608b6b9 100644 --- a/components/FlipPanel.tsx +++ b/components/FlipPanel.tsx @@ -40,12 +40,14 @@ export const FlipPanel = ({front, back, containerClassName, className, frontClas [frontElement, backElement] ) - return
-
- {front(flipToBack)} -
-
- {back(flipToFront)} -
-
+ return ( +
+
+ {front(flipToBack)} +
+
+ {back(flipToFront)} +
+
+ ) } diff --git a/components/LinkPanel.module.css b/components/LinkPanel.module.css index 1b29df4..a10dde3 100644 --- a/components/LinkPanel.module.css +++ b/components/LinkPanel.module.css @@ -59,4 +59,4 @@ .linkPanelExtraBtm { grid-area: ext2; align-self: end; -} \ No newline at end of file +} diff --git a/components/LinkPanel.tsx b/components/LinkPanel.tsx index 184c485..3604653 100644 --- a/components/LinkPanel.tsx +++ b/components/LinkPanel.tsx @@ -15,39 +15,52 @@ export type LinkPanelProps = { extraBtm?: React.ReactNode, me?: boolean, fade?: boolean, + onMouseOver?: React.EventHandler> onPress?: React.EventHandler> } -export const LinkPanel = ({href, icon, text, description, extraTop, extraBtm, me, fade, onPress}: LinkPanelProps) => { +export const LinkPanel = ({href, icon, text, description, extraTop, extraBtm, me, fade, onMouseOver, onPress}: LinkPanelProps) => { const panel = ( <> {text} + +   + {extraTop && - - {extraTop} - + <> + + {extraTop} + + } {description && - - {description} - + <> + + {description} + + } {extraBtm !== undefined && - - {extraBtm} - + <> + + {extraBtm} + + } + +   + ) if(href) { return ( - + {panel} @@ -55,7 +68,7 @@ export const LinkPanel = ({href, icon, text, description, extraTop, extraBtm, me } else { return ( -
+
{panel}
) diff --git a/components/ProjectsList.tsx b/components/ProjectsList.tsx index eab19fe..feb009e 100644 --- a/components/ProjectsList.tsx +++ b/components/ProjectsList.tsx @@ -4,17 +4,25 @@ import {LinkPanel} from "./LinkPanel" import {faBook, faCodeFork} from "@fortawesome/free-solid-svg-icons" -export function ProjectsList() { - const repos = useGitHubRepositories("Steffo99") - - return
- {repos.map((repo) => - )} -
+export type ProjectsListProps = { + repos: any[] +} + + +export function ProjectsList({repos}: ProjectsListProps) { + return ( +
+ {repos.map((repo) => + )} + +
+ ) } diff --git a/hooks/useGitHubRepositories.ts b/hooks/useGitHubRepositories.ts index c5ace3d..67cc04c 100644 --- a/hooks/useGitHubRepositories.ts +++ b/hooks/useGitHubRepositories.ts @@ -4,9 +4,9 @@ import React from "react" export function useGitHubRepositories(user: string) { const [data, setData] = React.useState([]) - const fetchData = React.useCallback( + const load = React.useCallback( async () => { - setData([]) + if(data.length > 0) return let page = 1; let count = 100; while(count == 100) { @@ -17,16 +17,8 @@ export function useGitHubRepositories(user: string) { setData((old) => [...old, ...data]) } }, - [] + [data] ) - React.useEffect( - () => { - // noinspection JSIgnoredPromiseFromCall - fetchData() - }, - [fetchData] - ) - - return data + return {data, load} } \ No newline at end of file diff --git a/pages/_app.css b/pages/_app.css index d1591fd..38ac6d7 100644 --- a/pages/_app.css +++ b/pages/_app.css @@ -27,4 +27,8 @@ display: flex; flex-wrap: wrap; gap: 8px; -} \ No newline at end of file +} + +.lynx-only { + display: none; +} diff --git a/pages/index.tsx b/pages/index.tsx index 0cf200e..38d586d 100644 --- a/pages/index.tsx +++ b/pages/index.tsx @@ -7,12 +7,14 @@ import {faBorderAll, faEnvelope, faGlobe, faPlus, faCashRegister, faShieldAlt, f import {FlipPanel} from "../components/FlipPanel" import {LinkPanel} from "../components/LinkPanel" import {ProjectsList} from "../components/ProjectsList" +import {useGitHubRepositories} from "../hooks/useGitHubRepositories" import {useKonamiCode} from "../hooks/useKonamiCode" const Index: NextPage = () => { const router = useRouter() + const repos = useGitHubRepositories("Steffo99") useKonamiCode(() => router.push("/garasauto")) return <> @@ -125,7 +127,13 @@ const Index: NextPage = () => { icon={faDiagramProject} text={"View all my projects"} description={"There's a lot of stuff there!"} - onPress={flip} + onMouseOver={() => { + repos.load().then() + }} + onPress={() => { + repos.load().then() + flip() + }} />
} @@ -133,7 +141,9 @@ const Index: NextPage = () => {

All my projects

- +