From 7d6483b3b1ff76ce1e4e76f4295eb3452ab6f200 Mon Sep 17 00:00:00 2001 From: Viktor Svertoka Date: Sat, 18 Jul 2026 13:25:40 +0300 Subject: [PATCH] feat(categories): add Go, GraphQL, NestJS, and NuxtJS icons and styles --- frontend/data/categoryRegistry.ts | 36 +++++++++++++++++++++++++++++++ frontend/data/categoryStyles.ts | 10 ++++++--- frontend/public/icons/go.svg | 1 + frontend/public/icons/graphql.svg | 1 + frontend/public/icons/nestjs.svg | 1 + frontend/public/icons/nuxtjs.svg | 1 + 6 files changed, 47 insertions(+), 3 deletions(-) create mode 100644 frontend/public/icons/go.svg create mode 100644 frontend/public/icons/graphql.svg create mode 100644 frontend/public/icons/nestjs.svg create mode 100644 frontend/public/icons/nuxtjs.svg diff --git a/frontend/data/categoryRegistry.ts b/frontend/data/categoryRegistry.ts index ccee5377..3d0bc586 100644 --- a/frontend/data/categoryRegistry.ts +++ b/frontend/data/categoryRegistry.ts @@ -309,6 +309,42 @@ export const categoryRegistry = [ 'group-hover:border-[#512BD4]/50 group-hover:bg-[#512BD4]/10 data-[state=active]:border-[#512BD4]/50 data-[state=active]:bg-[#512BD4]/10', 'bg-[#512BD4]' ), + createRegistryItem( + 'go', + 'Go', + 30, + '/icons/go.svg', + '#00ADD8', + 'group-hover:border-[#00ADD8]/50 group-hover:bg-[#00ADD8]/10 data-[state=active]:border-[#00ADD8]/50 data-[state=active]:bg-[#00ADD8]/10', + 'bg-[#00ADD8]' + ), + createRegistryItem( + 'graphql', + 'GraphQL', + 31, + '/icons/graphql.svg', + '#E434AA', + 'group-hover:border-[#E434AA]/50 group-hover:bg-[#E434AA]/10 data-[state=active]:border-[#E434AA]/50 data-[state=active]:bg-[#E434AA]/10', + 'bg-[#E434AA]' + ), + createRegistryItem( + 'nestjs', + 'NestJS', + 32, + '/icons/nestjs.svg', + '#DF234F', + 'group-hover:border-[#DF234F]/50 group-hover:bg-[#DF234F]/10 data-[state=active]:border-[#DF234F]/50 data-[state=active]:bg-[#DF234F]/10', + 'bg-[#DF234F]' + ), + createRegistryItem( + 'nuxtjs', + 'NuxtJS', + 33, + '/icons/nuxtjs.svg', + '#00C58E', + 'group-hover:border-[#00C58E]/50 group-hover:bg-[#00C58E]/10 data-[state=active]:border-[#00C58E]/50 data-[state=active]:bg-[#00C58E]/10', + 'bg-[#00C58E]' + ), ] as const satisfies readonly CategoryRegistryItem[]; export type CategoryRegistryEntry = (typeof categoryRegistry)[number]; diff --git a/frontend/data/categoryStyles.ts b/frontend/data/categoryStyles.ts index 0aea634f..d3ad5487 100644 --- a/frontend/data/categoryStyles.ts +++ b/frontend/data/categoryStyles.ts @@ -1,5 +1,9 @@ -import type { CategorySlug } from '@/components/q&a/types'; -import { categoryRegistry } from '@/data/categoryRegistry'; +import { + categoryRegistry, + type CategoryRegistryEntry, +} from '@/data/categoryRegistry'; + +type CategorySlug = CategoryRegistryEntry['slug']; export type CategoryTabStyle = { icon: string; @@ -28,7 +32,7 @@ export const categoryTabStyles = Object.fromEntries( iconClassName: item.iconClassName, } satisfies CategoryTabStyle, ]) -) as Partial>; +) as Record; export function getCategoryTabStyle(slug: string): CategoryTabStyle { return ( diff --git a/frontend/public/icons/go.svg b/frontend/public/icons/go.svg new file mode 100644 index 00000000..43377804 --- /dev/null +++ b/frontend/public/icons/go.svg @@ -0,0 +1 @@ + diff --git a/frontend/public/icons/graphql.svg b/frontend/public/icons/graphql.svg new file mode 100644 index 00000000..3265b718 --- /dev/null +++ b/frontend/public/icons/graphql.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/public/icons/nestjs.svg b/frontend/public/icons/nestjs.svg new file mode 100644 index 00000000..4bec846a --- /dev/null +++ b/frontend/public/icons/nestjs.svg @@ -0,0 +1 @@ + diff --git a/frontend/public/icons/nuxtjs.svg b/frontend/public/icons/nuxtjs.svg new file mode 100644 index 00000000..7f20b550 --- /dev/null +++ b/frontend/public/icons/nuxtjs.svg @@ -0,0 +1 @@ +