Skip to content

Commit 0f00797

Browse files
committed
Render an icon and chevron-down
1 parent 1fb8512 commit 0f00797

File tree

2 files changed

+56
-1
lines changed

2 files changed

+56
-1
lines changed

src/app/(main)/resources/[category]/category-tools-libraries-section.tsx

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,14 @@ import slugMap from "@/code/slug-map.json"
1111
import { type Topic } from "@/resources/types"
1212
import { StripesDecoration } from "@/app/conf/_design-system/stripes-decoration"
1313

14+
import { icons } from "./icons"
15+
import { ChevronRight } from "@/app/conf/_design-system/pixelarticons/chevron-right"
16+
1417
interface LibraryEntry {
1518
name: string
1619
href?: string
1720
group: string
21+
icon: React.ReactNode
1822
tags: string[]
1923
}
2024

@@ -126,14 +130,24 @@ export async function CategoryToolsLibrariesSection({
126130
const breakIndex =
127131
columns === 2 ? Math.floor(group.items.length / 2) : 0
128132

133+
const Icon = icons[group.id]
134+
129135
return (
130136
<div
131137
key={group.id}
132138
className="min-w-[480px] shrink-0 grow border border-neu-200 bg-neu-50 dark:bg-neu-50/50 lg:w-1/3 lg:min-w-0"
133139
>
134140
<div className="typography-body-lg flex items-center gap-3 border-b border-inherit bg-neu-50 px-4 py-3 text-neu-900">
135-
{/* todo: we should have an icon here */}
141+
{Icon && (
142+
<div className="border-r border-inherit p-3">
143+
<Icon className="size-10" />
144+
</div>
145+
)}
136146
{group.name}
147+
<div className="border-l border-inherit p-3 max-md:hidden">
148+
{/* TODO: On mobile */}
149+
<ChevronRight className="rotate-90" />
150+
</div>
137151
</div>
138152
<ul
139153
className="gap-0 divide-y divide-neu-200 dark:divide-neu-100 lg:[column-count:var(--item-columns,1)]"
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
import type { ComponentType, SVGProps } from "react"
2+
3+
import Ballerina from "./ballerina.svg?svgr"
4+
import CNet from "./c-net.svg?svgr"
5+
import Clojure from "./clojure.svg?svgr"
6+
import Elixir from "./elixir.svg?svgr"
7+
import Elm from "./elm.svg?svgr"
8+
import Flutter from "./flutter.svg?svgr"
9+
import GoIcon from "./go.svg?svgr"
10+
import Haskell from "./haskell.svg?svgr"
11+
import JavaKotlinAndroid from "./java-kotlin-android.svg?svgr"
12+
import Javascript from "./javascript.svg?svgr"
13+
import Julia from "./julia.svg?svgr"
14+
import LanguageSupport from "./language-support.svg?svgr"
15+
import Php from "./php.svg?svgr"
16+
import Python from "./python.svg?svgr"
17+
import Ruby from "./ruby.svg?svgr"
18+
import Rust from "./rust.svg?svgr"
19+
import Scala from "./scala.svg?svgr"
20+
import SwiftObjectiveCIos from "./swift-objective-c-ios.svg?svgr"
21+
22+
export const icons = {
23+
ballerina: Ballerina,
24+
"c-net": CNet,
25+
clojure: Clojure,
26+
elixir: Elixir,
27+
elm: Elm,
28+
flutter: Flutter,
29+
go: GoIcon,
30+
haskell: Haskell,
31+
"java-kotlin-android": JavaKotlinAndroid,
32+
javascript: Javascript,
33+
julia: Julia,
34+
"language-support": LanguageSupport,
35+
php: Php,
36+
python: Python,
37+
ruby: Ruby,
38+
rust: Rust,
39+
scala: Scala,
40+
"swift-objective-c-ios": SwiftObjectiveCIos,
41+
} satisfies Record<string, ComponentType<SVGProps<SVGElement>>>

0 commit comments

Comments
 (0)