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.name}
+
{p.name}
{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}
-
-
-
+
+