4544284df0
Replace the standalone namespace detail route with an inline drawer panel that slides in from the right when clicking a namespace in the list view. This provides a more fluid UX without full page navigation. Changes: - Namespace detail now opens in a fixed-position right-side panel (600px width) - Added semi-transparent backdrop that closes the panel when clicked - Converted namespace links to buttons with proper click handlers - Removed /polaris/ns/:namespace route and NamespaceDetailView import - Updated tests to check for buttons instead of links - Panel includes close button (×) in header Technical details: - Uses React state (selectedNamespace) instead of route params - Panel styled with fixed positioning, z-index layering, and box shadow - Backdrop at z-index 1100, panel at 1200 to overlay content - No MUI imports (stays within Headlamp CommonComponents constraint) Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering>
65 lines
1.3 KiB
TypeScript
65 lines
1.3 KiB
TypeScript
import {
|
|
registerPluginSettings,
|
|
registerRoute,
|
|
registerSidebarEntry,
|
|
} from '@kinvolk/headlamp-plugin/lib';
|
|
import React from 'react';
|
|
import { PolarisDataProvider } from './api/PolarisDataContext';
|
|
import DashboardView from './components/DashboardView';
|
|
import NamespacesListView from './components/NamespacesListView';
|
|
import PolarisSettings from './components/PolarisSettings';
|
|
|
|
// --- Sidebar entries ---
|
|
|
|
registerSidebarEntry({
|
|
parent: null,
|
|
name: 'polaris',
|
|
label: 'Polaris',
|
|
url: '/polaris',
|
|
icon: 'mdi:shield-check',
|
|
});
|
|
|
|
registerSidebarEntry({
|
|
parent: 'polaris',
|
|
name: 'polaris-overview',
|
|
label: 'Overview',
|
|
url: '/polaris',
|
|
icon: 'mdi:view-dashboard',
|
|
});
|
|
|
|
registerSidebarEntry({
|
|
parent: 'polaris',
|
|
name: 'polaris-namespaces',
|
|
label: 'Namespaces',
|
|
url: '/polaris/namespaces',
|
|
icon: 'mdi:dns',
|
|
});
|
|
|
|
// --- Routes ---
|
|
|
|
registerRoute({
|
|
path: '/polaris',
|
|
sidebar: 'polaris-overview',
|
|
name: 'polaris',
|
|
exact: true,
|
|
component: () => (
|
|
<PolarisDataProvider>
|
|
<DashboardView />
|
|
</PolarisDataProvider>
|
|
),
|
|
});
|
|
|
|
registerRoute({
|
|
path: '/polaris/namespaces',
|
|
sidebar: 'polaris-namespaces',
|
|
name: 'polaris-namespaces',
|
|
exact: true,
|
|
component: () => (
|
|
<PolarisDataProvider>
|
|
<NamespacesListView />
|
|
</PolarisDataProvider>
|
|
),
|
|
});
|
|
|
|
registerPluginSettings('polaris', PolarisSettings, true);
|