From 03e0fe99fa9eda6c58aeb5505cc6e8991ee92340 Mon Sep 17 00:00:00 2001 From: Jean-Luc Makiola Date: Mon, 13 Apr 2026 15:19:02 +0200 Subject: [PATCH] feat: group onboarding items by category Co-Authored-By: Claude Opus 4.6 (1M context) --- .../onboarding/OnboardingItemBrowser.tsx | 53 +++++++++++++------ 1 file changed, 36 insertions(+), 17 deletions(-) diff --git a/src/client/components/onboarding/OnboardingItemBrowser.tsx b/src/client/components/onboarding/OnboardingItemBrowser.tsx index 9f61961..77cca6c 100644 --- a/src/client/components/onboarding/OnboardingItemBrowser.tsx +++ b/src/client/components/onboarding/OnboardingItemBrowser.tsx @@ -22,6 +22,18 @@ export function OnboardingItemBrowser({ const hasItems = items && items.length > 0; + // Group items by category + const grouped = hasItems + ? items.reduce>((acc, item) => { + const cat = item.category || "Other"; + const label = cat.charAt(0).toUpperCase() + cat.slice(1); + if (!acc[label]) acc[label] = []; + acc[label].push(item); + return acc; + }, {}) + : {}; + const categories = Object.keys(grouped); + return (
@@ -51,23 +63,30 @@ export function OnboardingItemBrowser({
)} - {!isLoading && hasItems && ( -
- {items.map((item) => ( - onToggleItem(item.id)} - /> - ))} -
- )} + {!isLoading && + hasItems && + categories.map((cat) => ( +
+

+ {cat} +

+
+ {grouped[cat].map((item) => ( + onToggleItem(item.id)} + /> + ))} +
+
+ ))}
{hasItems && selectedItemIds.size > 0 && (