Skip to content

Commit 36b73fe

Browse files
authored
feat: convert repositories carousel to static grid layout (#343)
Signed-off-by: Ajay Rajera <newajay.11r@gmail.com>
1 parent fbe96d8 commit 36b73fe

File tree

8 files changed

+276
-284
lines changed

8 files changed

+276
-284
lines changed

src/app/page.tsx

Lines changed: 63 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import HeroSection from "@/components/HeroSection";
22
import WhatIsHieroSection from "@/components/WhatIsHieroSection";
33
import Divider from "@/components/Divider";
44
import MeetSection from "@/components/MeetSection";
5-
import ReposCarousel from "@/components/ReposCarousel";
5+
import ReposGrid from "@/components/ReposGrid";
66
import IssueJumpSection from "@/components/IssueJumpSection";
77
import OpenSourceSection from "@/components/OpenSourceSection";
88
import QuotesCarousel from "@/components/QuotesCarousel";
@@ -53,93 +53,87 @@ const meetData = {
5353
heading: "Join our Hiero Community Calls",
5454
text: "Join our open TSC, Community and Project meetings. We welcome your opinion and invite you to collaborate with the team!\n\nRegister to any of our current meeting series [HERE](https://github.com/hiero-ledger#open-community-meetings-and-tsc-schedules)\n\nView all meeting schedules and access recordings via our [LFX Calendar](https://zoom-lfx.platform.linuxfoundation.org/meetings/hiero?view=week).",
5555
calls: [
56+
// Ranked by LFX Calendar sign-up counts
5657
{
5758
name: "TSC",
5859
description:
5960
"The Technical Steering Committee (TSC) meeting for project governance, roadmap planning, and key technical decisions.",
60-
schedule: "Fortnightly",
61+
6162
registerLink:
6263
"https://zoom-lfx.platform.linuxfoundation.org/meeting/95775743341?password=c07443bf-b0e6-4a68-93f1-5c7ce9bb49ab&invite=true",
6364
},
6465
{
65-
name: "Community Call",
66+
name: "Monthly Maintainers",
6667
description:
67-
"Open community meeting for general discussions, updates, and Q&A sessions with the Hiero community and TSC members.",
68-
schedule: "Monthly",
68+
"Regular meeting for maintainers across all Hiero projects to coordinate, share updates, and discuss best practices.",
69+
6970
registerLink:
70-
"https://zoom-lfx.platform.linuxfoundation.org/meeting/97122675754?password=7eaa865a-2f17-4a7c-97b0-aff51933991c&invite=true",
71+
"https://zoom-lfx.platform.linuxfoundation.org/meeting/99574473075?password=deff3fc9-0e80-4877-80de-91499b5480e9&invite=true",
7172
},
7273
{
73-
name: "Python SDK",
74+
name: "Community Call",
7475
description:
75-
"Focused discussions on the Hiero Python SDK development, including new features, issues, and contributions.",
76-
schedule: "Monthly",
76+
"Open community meeting for general discussions, updates, and Q&A sessions with the Hiero community and TSC members.",
77+
7778
registerLink:
78-
"https://zoom-lfx.platform.linuxfoundation.org/meeting/92041330205?password=2f345bee-0c14-4dd5-9883-06fbc9c60581&invite=true",
79+
"https://zoom-lfx.platform.linuxfoundation.org/meeting/97122675754?password=7eaa865a-2f17-4a7c-97b0-aff51933991c&invite=true",
7980
},
8081
{
81-
name: "Docs",
82+
name: "SDK",
8283
description:
83-
"Documentation working group meetings to improve and maintain Hiero project documentation.",
84-
schedule: "Monthly",
84+
"General SDK working group for cross-SDK discussions, standards, and coordination across all Hiero SDK implementations.",
85+
8586
registerLink:
86-
"https://zoom-lfx.platform.linuxfoundation.org/meeting/96247351493?password=54a04164-8618-458d-8176-4ca21b346291&invite=true",
87+
"https://zoom-lfx.platform.linuxfoundation.org/meeting/94709702244?password=bcba4892-928c-47e0-9a21-e1abca95f7d3&invite=true",
8788
},
8889
{
8990
name: "Solo",
9091
description:
9192
"Discussions and updates about Solo, an opinionated CLI tool to deploy and manage standalone test networks.",
92-
schedule: "Fortnightly",
93+
9394
registerLink:
9495
"https://zoom-lfx.platform.linuxfoundation.org/meeting/94695703550?password=e8819002-3f6e-4905-9916-b049f501e866&invite=true",
9596
},
9697
{
97-
name: "Solo Action",
98-
description:
99-
"Working sessions focused on Solo Action project development, issues, and contributions.",
100-
schedule: "Fortnightly",
101-
registerLink:
102-
"https://zoom-lfx.platform.linuxfoundation.org/meeting/92576669768?password=8dab94bb-7315-4d37-a944-b1fa0e924741&invite=true",
103-
},
104-
{
105-
name: "SDK",
98+
name: "Python SDK",
10699
description:
107-
"General SDK working group for cross-SDK discussions, standards, and coordination across all Hiero SDK implementations.",
108-
schedule: "Monthly",
100+
"Focused discussions on the Hiero Python SDK development, including new features, issues, and contributions.",
101+
109102
registerLink:
110-
"https://zoom-lfx.platform.linuxfoundation.org/meeting/94709702244?password=bcba4892-928c-47e0-9a21-e1abca95f7d3&invite=true",
103+
"https://zoom-lfx.platform.linuxfoundation.org/meeting/92041330205?password=2f345bee-0c14-4dd5-9883-06fbc9c60581&invite=true",
111104
},
112105
{
113-
name: "Hiero Website",
106+
name: "Hiero/Hedera Identity",
114107
description:
115-
"Planning and development meetings for the Hiero website, content strategy, and user experience improvements.",
116-
schedule: "Monthly",
108+
"Working group focused on identity-related projects, DID SDK development, and identity standards implementation.",
109+
117110
registerLink:
118-
"https://zoom-lfx.platform.linuxfoundation.org/meeting/94831465670?password=50e11cd2-6450-4a97-b9ae-7a7585c4409b&invite=true",
111+
"https://zoom-lfx.platform.linuxfoundation.org/meeting/99097542854?password=3ee2d9c9-32de-4758-8a23-417c751bd7ab&invite=true",
119112
},
120113
{
121114
name: "Hiero Marketing",
122115
description:
123116
"Marketing and community outreach discussions, including events, communications, and ecosystem growth strategies.",
124-
schedule: "Monthly",
117+
125118
registerLink:
126119
"https://zoom-lfx.platform.linuxfoundation.org/meeting/91725705912?password=57115f71-9576-46dc-90f7-98be38aade2d&invite=true",
127120
},
128121
{
129-
name: "Monthly Maintainers",
122+
name: "Docs",
130123
description:
131-
"Regular meeting for maintainers across all Hiero projects to coordinate, share updates, and discuss best practices.",
132-
schedule: "Monthly",
124+
"Documentation working group meetings to improve and maintain Hiero project documentation.",
125+
133126
registerLink:
134-
"https://zoom-lfx.platform.linuxfoundation.org/meeting/99574473075?password=deff3fc9-0e80-4877-80de-91499b5480e9&invite=true",
127+
"https://zoom-lfx.platform.linuxfoundation.org/meeting/96247351493?password=54a04164-8618-458d-8176-4ca21b346291&invite=true",
135128
},
129+
// Below this line: hidden behind "View all community calls" link
136130
{
137-
name: "Hiero/Hedera Identity",
131+
name: "Hiero Website",
138132
description:
139-
"Working group focused on identity-related projects, DID SDK development, and identity standards implementation.",
140-
schedule: "Monthly",
133+
"Planning and development meetings for the Hiero website, content strategy, and user experience improvements.",
134+
141135
registerLink:
142-
"https://zoom-lfx.platform.linuxfoundation.org/meeting/99097542854?password=3ee2d9c9-32de-4758-8a23-417c751bd7ab&invite=true",
136+
"https://zoom-lfx.platform.linuxfoundation.org/meeting/94831465670?password=50e11cd2-6450-4a97-b9ae-7a7585c4409b&invite=true",
143137
},
144138
{
145139
name: "Hiero Mirror Node",
@@ -149,6 +143,14 @@ const meetData = {
149143
registerLink:
150144
"https://zoom-lfx.platform.linuxfoundation.org/meeting/94618152832?password=3b037576-2aab-4f7e-ab24-acf9ca2c3734&invite=true",
151145
},
146+
{
147+
name: "Solo Action",
148+
description:
149+
"Working sessions focused on Solo Action project development, issues, and contributions.",
150+
schedule: "Fortnightly",
151+
registerLink:
152+
"https://zoom-lfx.platform.linuxfoundation.org/meeting/92576669768?password=8dab94bb-7315-4d37-a944-b1fa0e924741&invite=true",
153+
},
152154
],
153155
};
154156

@@ -159,114 +161,114 @@ const reposData = {
159161
{
160162
name: "hiero-consensus-node",
161163
description:
162-
"Crypto, token, consensus, file, and smart contract services for a Hiero based network",
164+
"Crypto, token, consensus, file, and smart contract services for a Hiero based network.",
163165
link: "https://github.com/hiero-ledger/hiero-consensus-node",
164166
},
165167
{
166168
name: "hiero-local-node",
167169
description:
168-
"Run your own local Hiero based network for development purposes",
170+
"Run your own local Hiero based network for development purposes.",
169171
link: "https://github.com/hiero-ledger/hiero-local-node",
170172
},
171173
{
172174
name: "hiero-mirror-node",
173175
description:
174-
"Archives data from consensus nodes and serves it via an API",
176+
"Archives data from consensus nodes and serves it via an API.",
175177
link: "https://github.com/hiero-ledger/hiero-mirror-node",
176178
},
177179
{
178180
name: "hiero-improvement-proposals",
179181
description:
180-
"Hiero Improvement Proposal repository for community-driven enhancements",
182+
"Hiero Improvement Proposal repository for community-driven enhancements.",
181183
link: "https://github.com/hiero-ledger/hiero-improvement-proposals",
182184
},
183185
{
184186
name: "hiero-sdk-js",
185187
description:
186-
"JavaScript/TypeScript SDK for interacting with a Hiero network",
188+
"JavaScript/TypeScript SDK for interacting with a Hiero network.",
187189
link: "https://github.com/hiero-ledger/hiero-sdk-js",
188190
},
189191
{
190192
name: "hiero-sdk-java",
191-
description: "Java SDK for Hiero distributed ledger technology",
193+
description: "Java SDK for Hiero distributed ledger technology.",
192194
link: "https://github.com/hiero-ledger/hiero-sdk-java",
193195
},
194196
{
195197
name: "hiero-json-rpc-relay",
196-
description: "Implementation of Ethereum JSON-RPC APIs for Hedera",
198+
description: "Implementation of Ethereum JSON-RPC APIs for Hedera.",
197199
link: "https://github.com/hiero-ledger/hiero-json-rpc-relay",
198200
},
199201
{
200202
name: "hiero-sdk-go",
201-
description: "Go SDK for Hiero distributed ledger technology",
203+
description: "Go SDK for Hiero distributed ledger technology.",
202204
link: "https://github.com/hiero-ledger/hiero-sdk-go",
203205
},
204206
{
205207
name: "hiero-sdk-rust",
206-
description: "The Hiero Rust SDK for building on Hiero networks",
208+
description: "The Hiero Rust SDK for building on Hiero networks.",
207209
link: "https://github.com/hiero-ledger/hiero-sdk-rust",
208210
},
209211
{
210212
name: "hiero-mirror-node-explorer",
211-
description: "Hedera Mirror Node Explorer for the Hedera Hashgraph DLT",
213+
description: "Hedera Mirror Node Explorer for the Hedera Hashgraph DLT.",
212214
link: "https://github.com/hiero-ledger/hiero-mirror-node-explorer",
213215
},
214216
{
215217
name: "hiero-cli",
216-
description: "Hiero command line tools for developers",
218+
description: "Hiero command line tools for developers.",
217219
link: "https://github.com/hiero-ledger/hiero-cli",
218220
},
219221
{
220222
name: "solo",
221223
description:
222-
"An opinionated CLI tool to deploy and manage standalone test networks",
224+
"An opinionated CLI tool to deploy and manage standalone test networks.",
223225
link: "https://github.com/hiero-ledger/solo",
224226
},
225227
{
226228
name: "hiero-block-node",
227-
description: "New Block Node services for Hiero networks",
229+
description: "New Block Node services for Hiero networks.",
228230
link: "https://github.com/hiero-ledger/hiero-block-node",
229231
},
230232
{
231233
name: "hiero-sdk-tck",
232234
description:
233-
"Technology Compatibility Kit used to verify compliant implementations of a Hiero SDK",
235+
"Technology Compatibility Kit used to verify compliant implementations of a Hiero SDK.",
234236
link: "https://github.com/hiero-ledger/hiero-sdk-tck",
235237
},
236238
{
237239
name: "hiero-sdk-cpp",
238240
description:
239-
"A C++ SDK for Hiero: A C++ toolkit for creating and interacting with on-ledger assets",
241+
"A C++ SDK for Hiero: A C++ toolkit for creating and interacting with on-ledger assets.",
240242
link: "https://github.com/hiero-ledger/hiero-sdk-cpp",
241243
},
242244
{
243245
name: "governance",
244246
description:
245-
"Configuration repository for managing all Hiero GitHub repositories",
247+
"Configuration repository for managing all Hiero GitHub repositories.",
246248
link: "https://github.com/hiero-ledger/governance",
247249
},
248250
{
249251
name: "hiero-sdk-python",
250252
description:
251-
"A Python SDK for Hiero: A Python toolkit for interacting with on-ledger assets",
253+
"A Python SDK for Hiero: A Python toolkit for interacting with on-ledger assets.",
252254
link: "https://github.com/hiero-ledger/hiero-sdk-python",
253255
},
254256
{
255257
name: "hiero-sdk-swift",
256258
description:
257-
"A Swift SDK for Hiero: A Swift toolkit for creating and interacting with on-ledger assets",
259+
"A Swift SDK for Hiero: A Swift toolkit for creating and interacting with on-ledger assets.",
258260
link: "https://github.com/hiero-ledger/hiero-sdk-swift",
259261
},
260262
{
261263
name: "sdk-collaboration-hub",
262264
description:
263-
"Collaboration hub for SDK-related discussions and coordination",
265+
"Collaboration hub for SDK-related discussions and coordination.",
264266
link: "https://github.com/hiero-ledger/sdk-collaboration-hub",
265267
},
266268
{
267269
name: "tsc",
268270
description:
269-
"Technical Steering Committee activity, discussions and decisions repository",
271+
"Technical Steering Committee activity, discussions and decisions repository.",
270272
link: "https://github.com/hiero-ledger/tsc",
271273
},
272274
],
@@ -383,7 +385,7 @@ export default function Home() {
383385
<Divider />
384386
<MeetSection data={meetData} />
385387
<Divider />
386-
<ReposCarousel data={reposData} />
388+
<ReposGrid data={reposData} />
387389
<Divider />
388390

389391
<OpenSourceSection data={openSourceData} />

src/components/IssueJumpSection/index.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ export default function IssueJumpSection({ data }: IssueJumpSectionProps) {
4343
target="_blank"
4444
rel="noopener noreferrer nofollow"
4545
className="flex flex-col h-full min-w-0 border-2 border-white-dark rounded-2xl p-6 bg-white hover:border-red focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-red-light focus-visible:ring-offset-2 transition-colors duration-200 no-underline text-charcoal">
46-
<span className="text-xl font-medium text-red mb-2 break-words">
46+
<span className="text-xl font-medium mb-2 break-words">
4747
{item.label}
4848
</span>
4949
<span className="text-base text-gray">{item.description}</span>

src/components/MeetSection/__tests__/MeetSection.test.tsx

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ describe("MeetSection", () => {
1313
{
1414
name: "Maintainers Call",
1515
description: "Discuss active workstreams.",
16-
schedule: "Every Tuesday",
1716
registerLink: "https://example.com/register",
1817
},
1918
],
@@ -27,7 +26,6 @@ describe("MeetSection", () => {
2726
expect(
2827
screen.getByRole("heading", { name: "Maintainers Call" }),
2928
).toBeInTheDocument();
30-
expect(screen.getByText(/Every Tuesday/)).toBeInTheDocument();
3129
expect(screen.getByRole("link", { name: /Register/i })).toHaveAttribute(
3230
"href",
3331
"https://example.com/register",

src/components/MeetSection/index.tsx

Lines changed: 24 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ import RichText from "@/components/RichText";
33
interface MeetCall {
44
name: string;
55
description: string;
6-
schedule: string;
76
registerLink: string;
87
}
98

@@ -17,7 +16,11 @@ interface MeetSectionProps {
1716
data: MeetData;
1817
}
1918

19+
const VISIBLE_COUNT = 9;
20+
2021
export default function MeetSection({ data }: MeetSectionProps) {
22+
const visibleCalls = data.calls.slice(0, VISIBLE_COUNT);
23+
2124
return (
2225
<div id="meet" className="anchor">
2326
<div className="bg-white">
@@ -31,32 +34,34 @@ export default function MeetSection({ data }: MeetSectionProps) {
3134
className="text-lg max-w-full md:max-w-[800px] space-y-4"
3235
/>
3336
</div>
34-
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6 sm:gap-8">
35-
{data.calls.map((call, i) => (
36-
<div
37+
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6 sm:gap-8 items-stretch">
38+
{visibleCalls.map((call, i) => (
39+
<a
3740
key={i}
38-
className="border-2 border-white-dark rounded-2xl p-8 hover:border-red transition-colors duration-200 bg-white">
41+
href={call.registerLink}
42+
target="_blank"
43+
rel="noreferrer noopener"
44+
aria-label={`Register for ${call.name} (opens in new tab)`}
45+
className="flex flex-col border-2 border-white-dark rounded-2xl p-8 hover:border-red focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-red-light focus-visible:ring-offset-2 transition-colors duration-200 bg-white h-full no-underline text-charcoal">
3946
<h3 className="text-xl sm:text-2xl font-medium mb-3">
4047
{call.name}
4148
</h3>
42-
<p className="text-base mb-4 text-gray-600">
49+
<p className="text-base mb-4 text-gray-600 flex-grow">
4350
{call.description}
4451
</p>
45-
<p className="text-sm mb-4 text-gray-600">
46-
<strong>Schedule:</strong> {call.schedule}
47-
</p>
48-
<div className="flex flex-col gap-2 mt-4">
49-
<a
50-
href={call.registerLink}
51-
target="_blank"
52-
rel="noreferrer noopener"
53-
className="text-red hover:text-red-dark text-base font-medium underline">
54-
Register →
55-
</a>
56-
</div>
57-
</div>
52+
</a>
5853
))}
5954
</div>
55+
<div className="mt-10 text-center">
56+
<a
57+
href="https://zoom-lfx.platform.linuxfoundation.org/meetings/hiero?view=month"
58+
target="_blank"
59+
rel="noreferrer noopener"
60+
aria-label="View all community calls on LFX Calendar (opens in new tab)"
61+
className="text-red hover:text-red-dark text-lg font-medium underline">
62+
View all community calls →
63+
</a>
64+
</div>
6065
</div>
6166
</div>
6267
</div>

0 commit comments

Comments
 (0)