+ {categories.map((cat) => {
+ const urls = cat.tools.map((t) => t.url)
+ const selectedCount = urls.filter((u) => selectedUrls.has(u)).length
+ const allSelected = selectedCount === urls.length
+ const Icon = CATEGORY_ICONS[cat.title] ?? IconWand
+ const iconColor = CATEGORY_ICON_COLORS[cat.title] ?? "text-primary"
+
+ return (
+
+ {/* Category header */}
+
+
+
+ {cat.title}
+
+
+
+
+
+ {/* Tool tags */}
+
+ {cat.tools.map((tool) => {
+ const selected = selectedUrls.has(tool.url)
+ const ToolIcon = tool.icon
+ return (
+ onToggleTool(tool.url)}
+ whileTap={{ scale: 0.94 }}
+ className={cn(
+ "inline-flex items-center gap-1.5 px-2.5 py-1 rounded-full border text-xs font-medium transition-all duration-150",
+ selected
+ ? "bg-primary text-primary-foreground border-primary shadow-sm shadow-primary/20"
+ : "bg-muted/40 text-muted-foreground border-border hover:border-primary/40 hover:text-foreground hover:bg-muted/70"
+ )}
+ >
+ {ToolIcon && }
+ {tool.title}
+
+ )
+ })}
+
+
+ )
+ })}
+
+