package ui // AppTile represents an app on the workspace launcher. type AppTile struct { Name string Description string URL string Icon string // SVG inline Color string // Background color Status string // "ready" or "coming-soon" AdminOnly bool // Only visible to admin role } // DefaultApps returns apps filtered by user role. func DefaultApps(role string) []AppTile { all := []AppTile{ { Name: "Admin Panel", Description: "Users, groups & settings", URL: "/admin", Color: "#9333ea", Icon: ``, Status: "ready", AdminOnly: true, }, { Name: "Files", Description: "Storage & sharing", URL: "#", Color: "#2563eb", Icon: ``, Status: "coming-soon", }, { Name: "Mail", Description: "Email client", URL: "#", Color: "#dc2626", Icon: ``, Status: "coming-soon", }, { Name: "Calendar", Description: "Schedule & events", URL: "#", Color: "#059669", Icon: ``, Status: "coming-soon", }, { Name: "Office", Description: "Documents & sheets", URL: "#", Color: "#0891b2", Icon: ``, Status: "coming-soon", }, { Name: "Contacts", Description: "People & directory", URL: "#", Color: "#d97706", Icon: ``, Status: "coming-soon", }, { Name: "Tasks", Description: "Project management", URL: "#", Color: "#7c3aed", Icon: ``, Status: "coming-soon", }, { Name: "Chat", Description: "Team messaging", URL: "#", Color: "#db2777", Icon: ``, Status: "coming-soon", }, } // Filter by role filtered := make([]AppTile, 0, len(all)) for _, a := range all { if a.AdminOnly && role != "admin" { continue } filtered = append(filtered, a) } return filtered } templ AppGrid(apps []AppTile) {