Import Tripoli Cloud frontend prototype
React/TypeScript/Vite/Tailwind prototype from the design session (login, dashboard, photos, backups, settings views with mocked API layer). Infra work (Rust services, Ansible, OpenTofu) follows in subsequent commits. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
commit
5dbd3b96f6
73 changed files with 4789 additions and 0 deletions
14
app/src/components/icons/DataIcon.tsx
Normal file
14
app/src/components/icons/DataIcon.tsx
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
import type { IconName } from '../../types';
|
||||
import { ICON_REGISTRY } from './iconRegistry';
|
||||
|
||||
interface DataIconProps {
|
||||
name: IconName;
|
||||
size?: number;
|
||||
className?: string;
|
||||
}
|
||||
|
||||
/** Renders a lucide-react icon selected by the string key our API mocks return. */
|
||||
export function DataIcon({ name, size = 16, className }: DataIconProps) {
|
||||
const Icon = ICON_REGISTRY[name];
|
||||
return <Icon size={size} className={className} strokeWidth={1.8} />;
|
||||
}
|
||||
31
app/src/components/icons/iconRegistry.ts
Normal file
31
app/src/components/icons/iconRegistry.ts
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
import {
|
||||
AlertTriangle,
|
||||
CheckCircle2,
|
||||
FilePen,
|
||||
FolderPlus,
|
||||
HardDrive,
|
||||
Image,
|
||||
Laptop,
|
||||
Server,
|
||||
Share2,
|
||||
Smartphone,
|
||||
Tablet,
|
||||
Upload,
|
||||
type LucideIcon,
|
||||
} from 'lucide-react';
|
||||
import type { IconName } from '../../types';
|
||||
|
||||
export const ICON_REGISTRY: Record<IconName, LucideIcon> = {
|
||||
'hard-drive': HardDrive,
|
||||
image: Image,
|
||||
smartphone: Smartphone,
|
||||
share: Share2,
|
||||
'folder-plus': FolderPlus,
|
||||
'file-pen': FilePen,
|
||||
upload: Upload,
|
||||
check: CheckCircle2,
|
||||
alert: AlertTriangle,
|
||||
laptop: Laptop,
|
||||
tablet: Tablet,
|
||||
server: Server,
|
||||
};
|
||||
Loading…
Add table
Add a link
Reference in a new issue