diff --git a/services/web-ui/public/screens-projects.jsx b/services/web-ui/public/screens-projects.jsx
index 2128a89..e0bdab3 100644
--- a/services/web-ui/public/screens-projects.jsx
+++ b/services/web-ui/public/screens-projects.jsx
@@ -1,10 +1,9 @@
-// screens-projects.jsx — projects browse + project detail
-
-const { PROJECTS: ALL_PROJECTS, ASSETS } = window.ZAMPP_DATA;
+// screens-projects.jsx
function Projects({ onOpenProject, navigate }) {
- const [search, setSearch] = React.useState("");
- const [view, setView] = React.useState("grid");
+ const { PROJECTS: ALL_PROJECTS, ASSETS } = window.ZAMPP_DATA;
+ const [search, setSearch] = React.useState('');
+ const [view, setView] = React.useState('grid');
let projects = ALL_PROJECTS;
if (search) projects = projects.filter(p => p.name.toLowerCase().includes(search.toLowerCase()));
@@ -19,40 +18,32 @@ function Projects({ onOpenProject, navigate }) {
setSearch(e.target.value)} placeholder="Search projects…" />
-
-
+
+
- {view === "grid" ? (
+ {projects.length === 0 ? (
+
No projects yet. Create one to get started.
+ ) : view === 'grid' ? (
- {projects.map(p =>
onOpenProject(p)} />)}
+ {projects.map(p => onOpenProject(p)} />)}
) : (
-
-
Project
-
Assets
-
Storage
-
Updated
-
Members
-
+
+
Project
Assets
Storage
Updated
{projects.map(p => (
-
onOpenProject(p)}>
-
+
onOpenProject(p)}>
+
{p.assets}
-
{(p.assets * 1.8).toFixed(1)} GB
+
—
{p.updated}
-
- {["KM", "ZG", "JT"].slice(0, 3).map((a, i) => (
-
0 ? -6 : 0, background: avatarColor(a), border: "2px solid var(--bg-1)" }}>{a}
- ))}
-
))}
@@ -63,19 +54,21 @@ function Projects({ onOpenProject, navigate }) {
);
}
-function ProjectCard({ project, onOpen }) {
- const thumbs = ASSETS.slice(0, project.thumbs || 4);
+function ProjectCard({ project, assets, onOpen }) {
+ const thumbAssets = assets.filter(a => a.project_id === project.id).slice(0, 4);
return (
- {thumbs.map((a, i) => (
+ {Array.from({ length: 4 }).map((_, i) => (
-
+ {thumbAssets[i]
+ ?
+ :
}
))}
-
+
{project.name}
@@ -85,9 +78,8 @@ function ProjectCard({ project, onOpen }) {
updated {project.updated}