-
+
Keroma
diff --git a/frontend/src/app/pleroma/PleromaPage.tsx b/frontend/src/app/pleroma/PleromaPage.tsx
index eb8bfe2..7f2017f 100644
--- a/frontend/src/app/pleroma/PleromaPage.tsx
+++ b/frontend/src/app/pleroma/PleromaPage.tsx
@@ -110,6 +110,19 @@ function getGraphCounts(projectId: string): { nodes: number; edges: number } {
type NodeLike = { id: string; position?: { x: number; y: number } }
type EdgeLike = { id?: string; source: string; target: string }
+/** Shared grid style for empty thumbnail, non-empty thumbnail SVG, and New project placeholder. */
+const THUMBNAIL_GRID = {
+ baseFill: 'hsl(var(--muted) / 0.4)',
+ dotFill: 'hsl(var(--muted-foreground) / 0.06)',
+ size: 8,
+} as const
+
+const thumbnailGridStyle: React.CSSProperties = {
+ backgroundColor: THUMBNAIL_GRID.baseFill,
+ backgroundImage: `radial-gradient(circle, ${THUMBNAIL_GRID.dotFill} 1px, transparent 1px)`,
+ backgroundSize: `${THUMBNAIL_GRID.size}px ${THUMBNAIL_GRID.size}px`,
+}
+
/** Renders a minimal SVG preview of the graph from storage, or a placeholder. */
function GraphThumbnail({ projectId, className }: { projectId: string; className?: string }) {
const stored = loadGraphFromStorage(projectId)
@@ -123,11 +136,7 @@ function GraphThumbnail({ projectId, className }: { projectId: string; className
return (
@@ -164,11 +173,11 @@ function GraphThumbnail({ projectId, className }: { projectId: string; className
aria-hidden
>
-
-
+
+
-
+
{validEdges.slice(0, 50).map((e, i) => {
const a = nodeById.get(e.source)!.position!
@@ -493,7 +502,7 @@ export function ProjectsPage() {
-
+
Hi, Demiurge
@@ -569,7 +578,7 @@ export function ProjectsPage() {
}}
aria-label="Create new project"
>
-
+
@@ -794,7 +803,7 @@ export function ProjectsPage() {
}}
aria-label="Create new project"
>
-
+
@@ -852,7 +861,7 @@ export function ProjectsPage() {
- {project.name}
+ {project.name}