diff --git a/apps/site/src/assets/background/resources/back-mountains.png b/apps/site/src/assets/background/resources/back-mountains.png new file mode 100644 index 00000000..bdeffbc7 Binary files /dev/null and b/apps/site/src/assets/background/resources/back-mountains.png differ diff --git a/apps/site/src/assets/background/resources/front-mountains.png b/apps/site/src/assets/background/resources/front-mountains.png new file mode 100644 index 00000000..6c776213 Binary files /dev/null and b/apps/site/src/assets/background/resources/front-mountains.png differ diff --git a/apps/site/src/assets/background/resources/stars.png b/apps/site/src/assets/background/resources/stars.png new file mode 100644 index 00000000..7a62eff2 Binary files /dev/null and b/apps/site/src/assets/background/resources/stars.png differ diff --git a/apps/site/src/views/Resources/Resources.module.scss b/apps/site/src/views/Resources/Resources.module.scss index 9d5316b0..6b6565cf 100644 --- a/apps/site/src/views/Resources/Resources.module.scss +++ b/apps/site/src/views/Resources/Resources.module.scss @@ -11,3 +11,18 @@ $container-padding: 6rem; } } } +.resources { + background: url("~@/assets/background/resources/stars.png"), + url("~@/assets/background/resources/front-mountains.png"), + url("~@/assets/background/resources/back-mountains.png"), + radial-gradient(101.83% 44.96% at 50% 50%, #172750 0%, #121c32 100%); + + background-repeat: no-repeat, no-repeat, no-repeat, no-repeat; + background-size: cover, cover, cover, cover; + background-position: + center top, + center 50vh, + center 30vh, + center; + padding-bottom: 2rem; +} diff --git a/apps/site/src/views/Resources/Resources.tsx b/apps/site/src/views/Resources/Resources.tsx index 245c5d3d..3d06ad68 100644 --- a/apps/site/src/views/Resources/Resources.tsx +++ b/apps/site/src/views/Resources/Resources.tsx @@ -1,15 +1,13 @@ -import styles from "./Resources.module.scss"; -import Figures from "./sections/Figures/Figures"; import Landing from "./sections/Landing/Landing"; import ApiResources from "./sections/ApiResources/ApiResources"; import BackendResources from "./sections/BackendResources/BackendResources"; import FrontendResources from "./sections/FrontendResources/FrontendResources"; import StarterPacks from "./sections/StarterPacks/StarterPacks"; +import styles from "./Resources.module.scss"; export default function Resources() { return (
{description}
diff --git a/apps/site/src/views/Resources/components/ResourceCard/ResourceCard.module.scss b/apps/site/src/views/Resources/components/ResourceCard/ResourceCard.module.scss index 0845cc6c..07520f57 100644 --- a/apps/site/src/views/Resources/components/ResourceCard/ResourceCard.module.scss +++ b/apps/site/src/views/Resources/components/ResourceCard/ResourceCard.module.scss @@ -1,94 +1,69 @@ @use "zothacks-theme" as theme; @use "bootstrap-utils" as utils; - -.group { - position: relative; - padding: 1rem 0; - width: 200px; -} - -.container { - position: relative; +.frame { display: flex; flex-direction: column; - justify-content: center; align-items: center; - gap: 10px; + justify-content: center; + width: 423px; + min-height: 260px; + padding: 3vh 0 0; + border-radius: 20px; + border: 5px solid rgba(42, 80, 75, 1); + background-color: rgba(42, 80, 75, 0.69); + box-shadow: 0 4px 4px rgba(0, 0, 0, 0.25); + gap: 16px; } -.buttonImage { - width: 50px; +.logo { + width: 80px; + height: auto; + fill: #ffffff; } -.titleLink { - font-family: inherit; +.cardLinkWrapper { + display: flex; + flex: 1 1 auto; text-decoration: none; color: inherit; - font-weight: 600; - color: theme.$lighter-black; - :link { - text-decoration: none; - } -} + cursor: pointer; + transition: + transform 0.2s ease, + box-shadow 0.2s ease; -.titleLinkIcon { - margin-bottom: 0.2rem; -} - -.islandBackground { - position: absolute; - width: 350px; -} - -.CardContainer { - position: relative; - height: auto; - aspect-ratio: 1 / 1.3; - display: flex; - justify-content: center; - align-items: center; - font-family: utils.$font-family-base; - width: 350px; - min-width: 350px; + &:hover { + transform: translateY(-4px); + box-shadow: 0 6px 12px rgba(0, 0, 0, 0.25); + } } -.description > * { - margin: 0; - font-size: 1.05rem; - color: theme.$lighter-black; +.text { + font-family: "Reddit Mono", monospace; + font-weight: 400; + font-size: 16px; + line-height: 180%; + letter-spacing: 0.02em; + text-align: center; + color: rgba(153, 177, 203, 1); + max-width: 90%; } -@include utils.media-breakpoint-up(md) { - .container { - position: relative; - display: flex; - flex-direction: column; - justify-content: center; - align-items: center; - gap: 10px; - height: 450px; - } - - .buttonImage { - width: 100px; - } +.bold { + font-weight: 800; + color: rgba(202, 202, 202, 1); } -@include utils.media-breakpoint-up(sm) { - .CardContainer { - width: 500px; - min-width: 500px; - } - - .islandBackground { - width: 500px; +@media (max-width: 480px) { + .frame { + width: 90%; + padding: 20px; } - .group { - width: 300px; + .logo { + width: 60px; } - .description > * { - font-size: 24px; + .text { + font-size: 15px; } } diff --git a/apps/site/src/views/Resources/components/ResourceCard/ResourceCard.tsx b/apps/site/src/views/Resources/components/ResourceCard/ResourceCard.tsx index 0085d02e..9ef8bfb2 100644 --- a/apps/site/src/views/Resources/components/ResourceCard/ResourceCard.tsx +++ b/apps/site/src/views/Resources/components/ResourceCard/ResourceCard.tsx @@ -1,7 +1,8 @@ "use client"; -import Image from "next/image"; -import { Variants, motion, AnimatePresence, cubicBezier } from "framer-motion"; -import openNewWindow from "@/assets/icons/open-new-window.svg"; +import React from "react"; +import { motion, AnimatePresence, cubicBezier, Variants } from "framer-motion"; +import Link from "next/link"; + import styles from "./ResourceCard.module.scss"; type Tag = { @@ -11,28 +12,23 @@ type Tag = { interface ResourceCardProps { title: string; - description: JSX.Element; - stickerSrc?: string; - links: Tag[]; - islandBackground: string; + description: string | React.ReactNode; + image: string; + links?: Tag[]; } const variant: Variants = { initial: { - scale: 1.1, + scale: 1.05, opacity: 0, - rotateX: 20, translateY: 30, }, animate: { scale: 1, - rotateX: 0, opacity: 1, translateY: 0, transition: { - duration: 0.85, - staggerChildren: 0.1, - staggerDirection: -1, + duration: 0.8, ease: cubicBezier(0.33, 1, 0.68, 1), }, }, @@ -41,74 +37,55 @@ const variant: Variants = { export default function ResourceCard({ title, description, - stickerSrc, - links, - islandBackground, + image, + links = [], }: ResourceCardProps) { + const mainLink = links.length > 0 ? links[0].link : null; + + const renderedDescription = + typeof description === "string" ? ( + <> + {description.includes(title) ? ( + <> + {title} + {description.replace(title, "")} + > + ) : ( + description + )} + > + ) : ( + description + ); + + const content = ( +{renderedDescription}
+