feat(web): regroup admin navigation and settings into intuitive sections
Reorganize the admin sidebar into Overview / Content / Automation / Users / System so media pipeline tools no longer hide under Users and Settings is not buried in a seven-item Server grab-bag. Group the flat 13-tab admin settings page into Server / Media / Connections / Data sections, and split the Integrations tab into dedicated Subtitles (search providers + AI translation) and Watch Providers (Trakt/Simkl OAuth) pages, leaving Integrations for one-off keys like MDBList. All routes and ?tab= ids are unchanged so deep links keep working. Extract the shared grouped-rail markup used by the admin sidebar, admin settings nav, and user settings nav into a SideNav component, and remove the orphaned admin-settings PluginsSettings page (superseded by /admin/plugins). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -54,32 +54,40 @@ function renderSidebar() {
|
||||
}
|
||||
|
||||
describe("AdminSidebar", () => {
|
||||
it("includes a Sections link in the manage navigation", () => {
|
||||
it("renders the grouped navigation sections", () => {
|
||||
const markup = renderSidebar();
|
||||
|
||||
for (const section of ["Overview", "Content", "Automation", "Users", "System"]) {
|
||||
expect(markup).toContain(`>${section}<`);
|
||||
}
|
||||
});
|
||||
|
||||
it("includes a Sections link in the content navigation", () => {
|
||||
const markup = renderSidebar();
|
||||
|
||||
expect(markup).toContain('href="/admin/sections"');
|
||||
expect(markup).toContain(">Sections<");
|
||||
});
|
||||
|
||||
it("includes a Maintenance link in the server navigation", () => {
|
||||
it("includes a Maintenance link in the system navigation", () => {
|
||||
const markup = renderSidebar();
|
||||
|
||||
expect(markup).toContain('href="/admin/maintenance"');
|
||||
expect(markup).toContain(">Maintenance<");
|
||||
});
|
||||
|
||||
it("includes a Recommendations link in the server navigation", () => {
|
||||
it("includes a Recommendations link in the automation navigation", () => {
|
||||
const markup = renderSidebar();
|
||||
|
||||
expect(markup).toContain('href="/admin/recommendations"');
|
||||
expect(markup).toContain(">Recommendations<");
|
||||
});
|
||||
|
||||
it("includes a Marker History link in the users navigation", () => {
|
||||
it("includes a Markers link in the automation navigation", () => {
|
||||
const markup = renderSidebar();
|
||||
|
||||
expect(markup).toContain('href="/admin/marker-history"');
|
||||
expect(markup).toContain(">Marker History<");
|
||||
expect(markup).toContain(">Markers<");
|
||||
});
|
||||
|
||||
it("renders the build identifier in the footer", () => {
|
||||
|
||||
Reference in New Issue
Block a user