Menu Config#
The sidebar menu is configured in web/src/components/layout/sidebar.tsx.
Adding Menu Items#
tsximport { LayoutDashboard, CreditCard, Coins, FileText, CheckSquare } from "lucide-react"
const menuItems = [
{ href: "/dashboard", label: "Dashboard", icon: LayoutDashboard },
{ href: "/subscription", label: "Subscription", icon: CreditCard },
{ href: "/credits", label: "Credits", icon: Coins },
{ href: "/invoices", label: "Invoices", icon: FileText },
{ href: "/todos", label: "Todos", icon: CheckSquare },
]
Role Filtering#
Admin menu is only visible to owner role:
tsximport { useUserStore } from "@/lib/stores/user"
const { user } = useUserStore()
const isOwner = user?.role === "owner"
{isOwner && (
<SidebarGroup title="Management">
<SidebarItem href="/owner/users" icon={Users}>Users</SidebarItem>
</SidebarGroup>
)}
Dynamic Filtering#
Menu items show/hide based on useWebsiteStore config:
config.subscription.enabled = false→ Hide subscription menuconfig.credit.enabled = false→ Hide credits menu
Icons#
Uses Lucide React:
tsximport { LayoutDashboard, CheckSquare } from "lucide-react"