From 06e59fdfa0196062e3a3567ba51a5c90c740cc34 Mon Sep 17 00:00:00 2001 From: Zamitto <167933696+zamitto@users.noreply.github.com> Date: Sat, 21 Dec 2024 20:49:34 -0300 Subject: [PATCH] feat: adding panel --- .../pages/achievements/achievement-list.tsx | 2 +- .../achievements/achievement-panel.css.ts | 65 +++++++++++++++++++ .../pages/achievements/achievement-panel.tsx | 37 +++++++++++ .../achievements/achievements-content.tsx | 11 +++- 4 files changed, 112 insertions(+), 3 deletions(-) create mode 100644 src/renderer/src/pages/achievements/achievement-panel.css.ts create mode 100644 src/renderer/src/pages/achievements/achievement-panel.tsx diff --git a/src/renderer/src/pages/achievements/achievement-list.tsx b/src/renderer/src/pages/achievements/achievement-list.tsx index 353cd877..afea6522 100644 --- a/src/renderer/src/pages/achievements/achievement-list.tsx +++ b/src/renderer/src/pages/achievements/achievement-list.tsx @@ -2,7 +2,7 @@ import { useDate } from "@renderer/hooks"; import type { UserAchievement } from "@types"; import { useTranslation } from "react-i18next"; import * as styles from "./achievements.css"; -import { CalendarIcon, EyeClosedIcon } from "@primer/octicons-react"; +import { EyeClosedIcon } from "@primer/octicons-react"; import HydraIcon from "@renderer/assets/icons/hydra.svg?react"; interface AchievementListProps { diff --git a/src/renderer/src/pages/achievements/achievement-panel.css.ts b/src/renderer/src/pages/achievements/achievement-panel.css.ts new file mode 100644 index 00000000..58888c2c --- /dev/null +++ b/src/renderer/src/pages/achievements/achievement-panel.css.ts @@ -0,0 +1,65 @@ +import { style } from "@vanilla-extract/css"; +import { recipe } from "@vanilla-extract/recipes"; + +import { SPACING_UNIT, vars } from "../../theme.css"; + +export const panel = style({ + width: "100%", + height: "72px", + minHeight: "72px", + padding: `${SPACING_UNIT * 2}px ${SPACING_UNIT * 3}px`, + backgroundColor: vars.color.background, + display: "flex", + alignItems: "center", + justifyContent: "space-between", + transition: "all ease 0.2s", + borderBottom: `solid 1px ${vars.color.border}`, + overflow: "hidden", +}); + +export const content = style({ + display: "flex", + flexDirection: "column", + gap: `${SPACING_UNIT}px`, +}); + +export const actions = style({ + display: "flex", + gap: `${SPACING_UNIT}px`, +}); + +export const downloadDetailsRow = style({ + gap: `${SPACING_UNIT}px`, + display: "flex", + color: vars.color.body, + alignItems: "center", +}); + +export const downloadsLink = style({ + color: vars.color.body, + textDecoration: "underline", +}); + +export const progressBar = recipe({ + base: { + position: "absolute", + bottom: "0", + left: "0", + width: "100%", + height: "3px", + transition: "all ease 0.2s", + "::-webkit-progress-bar": { + backgroundColor: "transparent", + }, + "::-webkit-progress-value": { + backgroundColor: vars.color.muted, + }, + }, + variants: { + disabled: { + true: { + opacity: vars.opacity.disabled, + }, + }, + }, +}); diff --git a/src/renderer/src/pages/achievements/achievement-panel.tsx b/src/renderer/src/pages/achievements/achievement-panel.tsx new file mode 100644 index 00000000..aaf9c97c --- /dev/null +++ b/src/renderer/src/pages/achievements/achievement-panel.tsx @@ -0,0 +1,37 @@ +import { useContext } from "react"; +import { useTranslation } from "react-i18next"; + +import { useDate, useDownload } from "@renderer/hooks"; + +import * as styles from "./achievement-panel.css"; + +import { gameDetailsContext } from "@renderer/context"; + +export interface HeroPanelProps { + isHeaderStuck: boolean; +} + +export function AchievementPanel({ isHeaderStuck }: HeroPanelProps) { + const { t } = useTranslation("game_details"); + + const { formatDate } = useDate(); + + const { game, repacks, gameColor } = useContext(gameDetailsContext); + + const { lastPacket } = useDownload(); + + const isGameDownloading = + game?.status === "active" && lastPacket?.game.id === game?.id; + + const showProgressBar = + (game?.status === "active" && game?.progress < 1) || + game?.status === "paused"; + + return ( + <> +