diff --git a/package.json b/package.json
index 1512468..1c2eb2f 100644
--- a/package.json
+++ b/package.json
@@ -69,6 +69,7 @@
"react": "^19.0.0-rc-09111202-20241011",
"react-dom": "^19.0.0-rc-09111202-20241011",
"react-hook-form": "7.45.4",
+ "react-masonry-css": "^1.0.16",
"react-share": "^5.1.0",
"react-youtube": "^10.1.0",
"sharp": "0.32.6",
diff --git a/src/app/_blocks/HubContentGrid/index.tsx b/src/app/_blocks/HubContentGrid/index.tsx
index e831f66..23668ed 100644
--- a/src/app/_blocks/HubContentGrid/index.tsx
+++ b/src/app/_blocks/HubContentGrid/index.tsx
@@ -7,6 +7,7 @@ import { ContentTypeArrays } from "../../_interfaces/ContentTypeArrays";
import { filterContent } from "../../_utilities/filterContent";
import ContentNavBar from "./NavBar";
import styles from "./styles.module.css";
+import Masonry from "react-masonry-css";
const colorMap = {
All: "var(--dark-rock-800)",
@@ -32,18 +33,28 @@ export default function HubContentGrid({ content }) {
const filteredContent = filterContent({ articles: content, filter: activeButton });
+ const breakpointColumns = {
+ default: 4,
+ 1280: 3,
+ 1024: 2,
+ 720: 1,
+ }
return (
-
+
{filteredContent.map((article, i) => (
))}
-
+
);
diff --git a/src/app/_blocks/HubContentGrid/styles.module.css b/src/app/_blocks/HubContentGrid/styles.module.css
index 74f064d..098a96a 100644
--- a/src/app/_blocks/HubContentGrid/styles.module.css
+++ b/src/app/_blocks/HubContentGrid/styles.module.css
@@ -31,7 +31,14 @@
@media(min-width: 1024px) {
.contentGrid {
- grid-template-columns: repeat(3, 1fr);
+ display: flex;
+ max-height: 1200px;
+ overflow: scroll;
+ }
+
+ .contentGridColumn {
+ background-clip: padding-box;
+
}
.contentGridContainer {
diff --git a/src/app/_components/ArchiveButton/styles.module.css b/src/app/_components/ArchiveButton/styles.module.css
index f174d0e..d8a80ba 100644
--- a/src/app/_components/ArchiveButton/styles.module.css
+++ b/src/app/_components/ArchiveButton/styles.module.css
@@ -3,4 +3,6 @@
gap: 10px;
align-items: center;
padding-top: 10px;
+ font-size: 16px;
+ margin-bottom: 16px;
}
diff --git a/src/app/_components/ContentCard/styles.module.css b/src/app/_components/ContentCard/styles.module.css
index 59d38a4..3469d72 100644
--- a/src/app/_components/ContentCard/styles.module.css
+++ b/src/app/_components/ContentCard/styles.module.css
@@ -1,8 +1,19 @@
.contentCard {
+ display: flex;
padding: 30px 20px;
- height: min-content;
border: 1px solid var(--dark-rock-800);
border-radius: var(--dynamic-border);
+ gap: 20px;
+}
+
+.contentCard p {
+ overflow: hidden;
+ display: -webkit-box;
+ -webkit-box-orient: vertical;
+ -webkit-line-clamp: 3;
+ line-height: 1.2em;
+ max-height: calc(1.2em * 3);
+ text-overflow: ellipsis;
}
.contentMetaContainer {
@@ -12,6 +23,7 @@
}
.contentMetaContainer h6 {
+ margin-bottom: 10px;
text-decoration: none;
transition: text-decoration 0.3s ease;
}
@@ -34,8 +46,9 @@
.imageContainer {
position: relative;
- width: 280px;
- height: 280px;
+ max-width: 280px;
+ max-height: 280px;
+ aspect-ratio: 1 / 1;
margin: auto;
}
diff --git a/yarn.lock b/yarn.lock
index 426500a..a442bd9 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -8990,6 +8990,11 @@ react-is@^16.13.1, react-is@^16.7.0:
resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4"
integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==
+react-masonry-css@^1.0.16:
+ version "1.0.16"
+ resolved "https://registry.yarnpkg.com/react-masonry-css/-/react-masonry-css-1.0.16.tgz#72b28b4ae3484e250534700860597553a10f1a2c"
+ integrity sha512-KSW0hR2VQmltt/qAa3eXOctQDyOu7+ZBevtKgpNDSzT7k5LA/0XntNa9z9HKCdz3QlxmJHglTZ18e4sX4V8zZQ==
+
react-onclickoutside@^6.13.0:
version "6.13.1"
resolved "https://registry.yarnpkg.com/react-onclickoutside/-/react-onclickoutside-6.13.1.tgz#1f5e0241c08784b6e65745d91aca0d700c548a89"