fix: refactor build routes for improved navigation

This commit is contained in:
Ben Allfree
2025-12-10 17:47:38 -08:00
parent cdc4959dca
commit bdb848e15f
18 changed files with 1125 additions and 927 deletions
+74
View File
@@ -0,0 +1,74 @@
import { ModuleToggle } from "@/components/ModuleToggle"
import modulesData from "@/convex/modules.json"
import { ChevronDown, ChevronRight } from "lucide-react"
interface ModuleConfigProps {
moduleConfig: Record<string, boolean>
showModuleOverrides: boolean
onToggleShow: () => void
onToggleModule: (id: string, excluded: boolean) => void
onReset: () => void
}
export function ModuleConfig({
moduleConfig,
showModuleOverrides,
onToggleShow,
onToggleModule,
onReset,
}: ModuleConfigProps) {
const moduleCount = Object.keys(moduleConfig).length
return (
<div className="space-y-3 rounded-2xl border border-slate-800 bg-slate-950/70 p-6">
<button type="button" onClick={onToggleShow} className="w-full flex items-center justify-between text-left">
<div>
<p className="text-sm font-medium">Core Modules</p>
<p className="text-xs text-slate-400">
{moduleCount === 0
? "Using default modules for this target."
: `${moduleCount} module${moduleCount === 1 ? "" : "s"} excluded.`}
</p>
</div>
{showModuleOverrides ? (
<ChevronDown className="w-4 h-4 text-slate-400" />
) : (
<ChevronRight className="w-4 h-4 text-slate-400" />
)}
</button>
{showModuleOverrides && (
<div className="space-y-2 pr-1">
<div className="rounded-lg bg-slate-800/50 border border-slate-700 p-3">
<p className="text-xs text-slate-400 leading-relaxed">
Core Modules are officially maintained modules by Meshtastic. They are selectively included or excluded by
default depending on the target device. You can explicitly exclude modules you know you don't want.
</p>
</div>
<div className="flex justify-end">
<button
type="button"
className="text-xs text-slate-400 hover:text-white underline"
onClick={onReset}
disabled={moduleCount === 0}
>
Reset overrides
</button>
</div>
<div className="grid gap-2 md:grid-cols-2">
{modulesData.modules.map(module => (
<ModuleToggle
key={module.id}
id={module.id}
name={module.name}
description={module.description}
isExcluded={moduleConfig[module.id] === true}
onToggle={excluded => onToggleModule(module.id, excluded)}
/>
))}
</div>
</div>
)}
</div>
)
}