This commit includes comprehensive codebase cleanup and refactoring: ## Code Cleanup - Remove dead TypeScript code (types/monitoring.ts - 194 lines duplicate) - Remove unused Go functions (GetClusterNodes, MigratePassword, GetClusterHealthInfo) - Clean up commented-out code blocks across multiple files - Remove unused TypeScript exports (helpTextClass, private tag color helpers) - Delete obsolete test files and components ## localStorage Consolidation - Centralize all storage keys into STORAGE_KEYS constant - Update 5 files to use centralized keys: * utils/apiClient.ts (AUTH, LEGACY_TOKEN) * components/Dashboard/Dashboard.tsx (GUEST_METADATA) * components/Docker/DockerHosts.tsx (DOCKER_METADATA) * App.tsx (PLATFORMS_SEEN) * stores/updates.ts (UPDATES) - Benefits: Single source of truth, prevents typos, better maintainability ## Previous Work Committed - Docker monitoring improvements and disk metrics - Security enhancements and setup fixes - API refactoring and cleanup - Documentation updates - Build system improvements ## Testing - All frontend tests pass (29 tests) - All Go tests pass (15 packages) - Production build successful - Zero breaking changes Total: 186 files changed, 5825 insertions(+), 11602 deletions(-)
53 lines
1.8 KiB
TypeScript
53 lines
1.8 KiB
TypeScript
const baseField = 'flex flex-col gap-1';
|
|
const baseLabel = 'text-sm font-medium text-gray-700 dark:text-gray-300';
|
|
const baseHelp = 'text-xs text-gray-500 dark:text-gray-400';
|
|
const baseControl = [
|
|
'w-full rounded-md border border-gray-300 bg-white px-3 py-2 text-sm text-gray-900 shadow-sm',
|
|
'focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500',
|
|
'dark:border-gray-600 dark:bg-gray-800 dark:text-gray-100',
|
|
].join(' ');
|
|
const baseCheckbox =
|
|
'rounded border-gray-300 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-800 dark:focus:ring-blue-400';
|
|
|
|
const join = (base: string, extra?: string) => (extra ? `${base} ${extra}`.trim() : base);
|
|
|
|
export const formSection = 'space-y-6';
|
|
export const formField = baseField;
|
|
export const formFieldInline = 'flex flex-col gap-1 sm:flex-row sm:items-center sm:gap-3';
|
|
export const formLabel = baseLabel;
|
|
export const formHelpText = baseHelp;
|
|
export const formControl = baseControl;
|
|
export const formCheckbox = baseCheckbox;
|
|
|
|
export const formControlDense = join(baseControl, 'py-1.5 px-2');
|
|
export const formControlMono = join(baseControl, 'font-mono');
|
|
|
|
export const formSelect = join(baseControl, 'pr-8 appearance-none');
|
|
export const formTextarea = join(baseControl, 'min-h-[120px] resize-vertical');
|
|
|
|
export const formLabelMuted = join(baseLabel, 'text-gray-500 dark:text-gray-400 font-normal');
|
|
|
|
export function labelClass(extra?: string) {
|
|
return join(baseLabel, extra);
|
|
}
|
|
|
|
export function controlClass(extra?: string) {
|
|
return join(baseControl, extra);
|
|
}
|
|
|
|
export default {
|
|
formSection,
|
|
formField,
|
|
formFieldInline,
|
|
formLabel,
|
|
formLabelMuted,
|
|
formHelpText,
|
|
formControl,
|
|
formControlDense,
|
|
formControlMono,
|
|
formSelect,
|
|
formTextarea,
|
|
formCheckbox,
|
|
labelClass,
|
|
controlClass,
|
|
};
|