Restructures project with feature-based organization

Refactors project structure to support modular, feature-driven development

Introduces comprehensive language localization support
Adds menu management with role-based access control
Implements dynamic sidebar and theme switching capabilities

Enhances project scalability and maintainability
This commit is contained in:
Janus C. H. Knudsen 2026-01-08 15:44:11 +01:00
parent fac7754d7a
commit d7f3c55a2a
60 changed files with 3214 additions and 20 deletions

View file

@ -0,0 +1,12 @@
namespace CalendarServer.Features.Menu.Models;
/// <summary>
/// Represents a group of menu items (e.g., "Dashboard", "Data", "System").
/// </summary>
public class MenuGroup
{
public required string Id { get; set; }
public required string Label { get; set; }
public int SortOrder { get; set; }
public List<MenuItem> Items { get; set; } = new();
}

View file

@ -0,0 +1,15 @@
namespace CalendarServer.Features.Menu.Models;
/// <summary>
/// Represents a single menu item in the sidebar.
/// </summary>
public class MenuItem
{
public required string Id { get; set; }
public required string Label { get; set; }
public required string Icon { get; set; }
public required string Url { get; set; }
public UserRole MinimumRole { get; set; } = UserRole.Staff;
public int SortOrder { get; set; }
public bool IsActive { get; set; }
}

View file

@ -0,0 +1,11 @@
namespace CalendarServer.Features.Menu.Models;
/// <summary>
/// User roles for menu visibility. Higher value = more access.
/// </summary>
public enum UserRole
{
Staff = 0,
Manager = 1,
Admin = 2
}