From 4df031d1bbaf7c5e361ad38b6e5d98700ea23fb0 Mon Sep 17 00:00:00 2001 From: Wanjohi <71614375+wanjohiryan@users.noreply.github.com> Date: Fri, 10 Jan 2025 01:22:45 +0300 Subject: [PATCH] =?UTF-8?q?=E2=AD=90=20feat(www):=20Add=20the=20home=20pag?= =?UTF-8?q?e=20UI=20(#155)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/www/package.json | 1 + apps/www/src/routes/home/index.tsx | 290 +++++++++++++++++++---------- bun.lockb | Bin 744240 -> 747000 bytes packages/ui/package.json | 6 +- packages/ui/src/avatar.tsx | 98 ++++++++++ packages/ui/src/home-nav-bar.tsx | 144 +++++++++++--- packages/ui/src/index.ts | 3 +- packages/ui/src/nav-bar.tsx | 13 +- packages/ui/src/simple-footer.tsx | 55 ++++++ packages/ui/tailwind.config.js | 11 +- 10 files changed, 486 insertions(+), 135 deletions(-) create mode 100644 packages/ui/src/avatar.tsx create mode 100644 packages/ui/src/simple-footer.tsx diff --git a/apps/www/package.json b/apps/www/package.json index b34c47b1..6d5c76e4 100644 --- a/apps/www/package.json +++ b/apps/www/package.json @@ -39,6 +39,7 @@ "@nestri/libmoq": "*", "@nestri/ui": "*", "@openauthjs/openauth": "^0.2.6", + "@qwik-ui/headless": "^0.6.4", "@types/eslint": "8.56.10", "@types/howler": "^2.2.12", "@types/node": "^22.5.1", diff --git a/apps/www/src/routes/home/index.tsx b/apps/www/src/routes/home/index.tsx index f9f7b8c1..431c243c 100644 --- a/apps/www/src/routes/home/index.tsx +++ b/apps/www/src/routes/home/index.tsx @@ -1,112 +1,198 @@ import { component$ } from "@builder.io/qwik"; -import { HomeNavBar } from "@nestri/ui"; +import { HomeNavBar, SimpleFooter } from "@nestri/ui"; +import Avatar from "../../../../../packages/ui/src/avatar"; + +const games = [ + { + id: 2507950, + name: "Delta Force", + image: "https://assets-prd.ignimgs.com/2024/08/28/delta-force-button-replacement-1724855313566.jpg" + }, + { + id: 870780, + name: "Control Ultimate Edition", + image: "https://assets-prd.ignimgs.com/2023/04/08/sq-nswitchds-controlultimateeditioncloudversion-image500w-1680973421643.jpg" + }, + { + id: 1172470, + name: "Apex Legends", + image: "https://assets-prd.ignimgs.com/2023/02/16/apexrevelry-1676588335122.jpg" + }, + { + id: 914800, + name: "Coffee Talk", + image: "https://assets-prd.ignimgs.com/2022/11/09/coffee-talk-episode-1-button-fin-1668033710468.jpg" + }, { + id: 1085220, + name: "Figment 2: Creed Valley", + image: "https://assets-prd.ignimgs.com/2021/12/15/figment-2-button-1639602944843.jpg" + }, { + id: 1568400, + name: "Sheepy: A Short Adventure", + image: "https://assets-prd.ignimgs.com/2024/04/08/sheepy-1712557253260.jpg" + }, { + id: 271590, + name: "Grand Theft Auto V", + image: "https://assets-prd.ignimgs.com/2021/12/17/gta-5-button-2021-1639777058682.jpg" + }, { + id: 1086940, + name: "Baldur's Gate 3", + image: "https://assets-prd.ignimgs.com/2023/08/24/baldursg3-1692894717196.jpeg" + }, { + id: 1091500, + name: "Cyberpunk 2077", + image: "https://assets-prd.ignimgs.com/2020/07/16/cyberpunk-2077-button-fin-1594877291453.jpg" + }, { + id: 221100, + name: "DayZ", + image: "https://assets-prd.ignimgs.com/2021/12/20/dayz-1640044421966.jpg" + }, + +] export default component$(() => { return ( - <> +
- {/*
*/} - {/*
- -
*/} - -
-
- - -
-
-
- {/* */} -

Red Dead Redemption 2

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

{getGreeting()}, Wanjohi

-

What will you play today?

+
+
+
+
+ + + Find people to play with + + +
+
    + {games.slice(5, 8).sort().map((game, key) => ( + + ))} +
    +
+
-
*/} - {/*
-
    -
  • - -
  • -
  • - -
  • -
  • - -
  • -
  • - -
  • -
  • - -
  • -
  • - -
  • -
-
*/} - +
+
+
+ + + Your Games + + +
+
    + {games.map((game, key) => ( + + ))} +
+
+
+ +
) }) \ No newline at end of file diff --git a/bun.lockb b/bun.lockb index 25e22184df348754ecbbd6d71eb0e2713da6ac2d..03b35ccef7e191e65b3b2f18fe48fde16eae5b34 100755 GIT binary patch delta 31084 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 delta 29393 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 A@c;k- diff --git a/packages/ui/package.json b/packages/ui/package.json index c8550fb4..bf7a9848 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -24,18 +24,20 @@ "@builder.io/qwik": "^1.8.0", "@builder.io/qwik-city": "^1.8.0", "@builder.io/qwik-react": "0.5.0", + "@fluejs/noscroll": "^1.0.0", "@fontsource/bricolage-grotesque": "^5.0.7", "@fontsource/geist-mono": "^5.1.0", "@fontsource/geist-sans": "^5.1.0", "@modular-forms/qwik": "0.26.1", "@nestri/core": "*", + "@qwik-ui/headless": "^0.6.4", "@types/eslint": "^8.56.5", - "@typescript-eslint/eslint-plugin": "latest", - "@typescript-eslint/parser": "latest", "@types/node": "^20.11.24", "@types/nprogress": "^0.2.3", "@types/react": "^18.2.28", "@types/react-dom": "^18.2.13", + "@typescript-eslint/eslint-plugin": "latest", + "@typescript-eslint/parser": "latest", "autoprefixer": "^10.4.20", "body-scroll-lock-upgrade": "^1.1.0", "clsx": "^2.1.1", diff --git a/packages/ui/src/avatar.tsx b/packages/ui/src/avatar.tsx new file mode 100644 index 00000000..055dcc9d --- /dev/null +++ b/packages/ui/src/avatar.tsx @@ -0,0 +1,98 @@ +import { component$ } from "@builder.io/qwik"; + +const DEFAULT_COLORS = ['#6A5ACD', '#E63525','#20B2AA', '#E87D58']; + +const getModulo = (value: number, divisor: number, useEvenCheck?: number) => { + const remainder = value % divisor; + if (useEvenCheck && Math.floor(value / Math.pow(10, useEvenCheck) % 10) % 2 === 0) { + return -remainder; + } + return remainder; +}; + +const generateColors = (name: string, colors = DEFAULT_COLORS) => { + const hashCode = name.split('').reduce((acc, char) => { + acc = ((acc << 5) - acc) + char.charCodeAt(0); + return acc & acc; + }, 0); + + const hash = Math.abs(hashCode); + const numColors = colors.length; + + return Array.from({ length: 3 }, (_, index) => ({ + color: colors[(hash + index) % numColors], + translateX: getModulo(hash * (index + 1), 4, 1), + translateY: getModulo(hash * (index + 1), 4, 2), + scale: 1.2 + getModulo(hash * (index + 1), 2) / 10, + rotate: getModulo(hash * (index + 1), 360, 1) + })); +}; +type Props = { + name: string; + size?: number; + class?:string; + colors?: string[] +} + +export default component$(({ class:className, name, size = 80, colors = DEFAULT_COLORS }: Props) => { + const colorData = generateColors(name, colors); + + return ( + + {`Fallback avatar for ${name}`} + + + + + + + + + + + + + + + + + ) +}) \ No newline at end of file diff --git a/packages/ui/src/home-nav-bar.tsx b/packages/ui/src/home-nav-bar.tsx index 11c68cf4..dee53b37 100644 --- a/packages/ui/src/home-nav-bar.tsx +++ b/packages/ui/src/home-nav-bar.tsx @@ -1,19 +1,39 @@ -import { $, component$, useOnDocument, useSignal } from "@builder.io/qwik"; import { cn } from "./design"; +import Avatar from "./avatar" +import { Dropdown } from '@qwik-ui/headless'; +import { disablePageScroll, enablePageScroll } from '@fluejs/noscroll'; +import { $, component$, useOnDocument, useSignal } from "@builder.io/qwik"; + export const HomeNavBar = component$(() => { const hasScrolled = useSignal(false); + const actions = [ + { label: "Hell Diver's Europe", disabled: false }, + { label: "WanjohiRyan's Games", disabled: false }, + { label: "CyberPunk Marathon", disabled: false }, + { label: "Emulation Hackers", disabled: true }, + { label: "testing-123", disabled: false }, + ]; + + const onDialogOpen = $((open: boolean) => { + if (open) { + disablePageScroll() + } else { + enablePageScroll() + } + }) + useOnDocument( 'scroll', $(() => { hasScrolled.value = window.scrollY > 0; }) ); -// + // return ( -