/* Landing page — hero, features grid, demos, comparison, screenshots, pricing, FAQ */
const LandingNav = () => (
);
const HeroDiskMockup = () => {
// Animated mini-dashboard mockup for the hero, looks like real app
return (
{/* Witch decorator (1st of 2 brand appearances) */}
MacFleek
Macintosh HD · 19.2 GB recoverable
Search⌘ F
}
>
{/* Floating menu-bar popover decoration */}
MacFleek
320 GB free
{["trash-fill", "memory", "drive", "bubble-x", "eye", "globe-network"].map(n => (
))}
);
};
/* The actual content inside the dashboard mockup — used here and on the Dashboard view */
const DashboardHeroContent = ({ compact = false }) => {
const segments = [
{ label: "Applications", value: 38, color: "#a78bfa" },
{ label: "System", value: 22, color: "#8b5cf6" },
{ label: "Documents", value: 14, color: "#6366f1" },
{ label: "Caches", value: 10, color: "#4f46e5" },
{ label: "Other", value: 6, color: "#3730a3" },
{ label: "Free", value: 10, color: "#27272a" },
];
return (
{/* Top row — disk gauge + recoverable stat */}
Macintosh HD
319.4 / 994 GB
67% used · APFS encrypted
Healthy
Last scan 2 min ago
Recoverable now
19.2GB
across 5 categories · zero risk
{/* Stacked disk breakdown */}
Storage breakdown
Hover for details
{segments.map((s, i) => (
))}
{segments.map((s, i) => (
{s.label}
{s.value}%
))}
{!compact && (
{quickActions.map((q, i) => )}
)}
);
};
const DiskGauge = ({ percent, size = 140 }) => {
const stroke = size * 0.085;
const r = size / 2 - stroke / 2 - 2;
const c = 2 * Math.PI * r;
const dash = c * percent / 100;
return (
);
};
const quickActions = [
{ icon: "trash-fill", label: "Empty Trash", value: "2.4 GB", hint: "12 items" },
{ icon: "memory", label: "Free RAM", value: "6.1 GB", hint: "inactive" },
{ icon: "drive", label: "Clear Caches", value: "8.1 GB", hint: "safe" },
{ icon: "bubble-x", label: "Crash Logs", value: "412 MB", hint: "32 files" },
];
const QuickActionCard = ({ icon, label, value, hint }) => (
);
Object.assign(window, { LandingNav, HeroDiskMockup, DashboardHeroContent, DiskGauge, QuickActionCard });