From cb46372e52af7b4b3e72180af4483a67355d576d Mon Sep 17 00:00:00 2001 From: Sharang Parnerkar <30073382+mighty840@users.noreply.github.com> Date: Wed, 20 May 2026 12:25:56 +0200 Subject: [PATCH] =?UTF-8?q?fix(pitch-print):=20architecture=20diagram=20ov?= =?UTF-8?q?erflow=20=E2=80=94=20compact=20ServiceNode?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Infrastructure layer was being cut off (only the chip showed; the 3 inference service cards never rendered). Root cause: each tier was double-wrapped — an outer tinted layer card AND inner bordered FlowNode cards — which inflated the total height past A4 landscape. Replaces inner FlowNode (border + padding + footer rule) with a new flat ServiceNode used only inside the tinted layer wrappers: - no own border / no own padding - title 11pt → 10pt, kicker 7pt → 6pt - caps inner items to 4 max - mono tech footer in 6pt with hairline separator Also tightened the connectors between tiers: was a 12mm row of three VArrow SVGs each with its own padding, now a 5mm row of three compact down-arrow SVGs. Saves ~14mm of vertical space. Layer chip sizing reduced (7.5pt → 7pt, padding 1.5mm → 1mm) so each chip takes less of its layer card. Result: all three layers fit on one A4 landscape page with the LLM Inference / Embeddings / AI Tools cards visible. Co-Authored-By: Claude Opus 4.7 --- .../[versionId]/_components/PrintDiagrams.tsx | 81 +++++++++++++------ 1 file changed, 57 insertions(+), 24 deletions(-) diff --git a/pitch-deck/app/pitch-print/[versionId]/_components/PrintDiagrams.tsx b/pitch-deck/app/pitch-print/[versionId]/_components/PrintDiagrams.tsx index 7fdf77b..c27628b 100644 --- a/pitch-deck/app/pitch-print/[versionId]/_components/PrintDiagrams.tsx +++ b/pitch-deck/app/pitch-print/[versionId]/_components/PrintDiagrams.tsx @@ -131,57 +131,90 @@ export function ArchitectureDiagram({ /** Layer pill: "01 · APPLICATION LAYER" + sub-label */ const LayerChip = ({ n, label, sub, tint }: { n: string; label: string; sub: string; tint: string }) => ( -
- {n} · {label} - {sub} +
+ {n} · {label} + {sub}
) - const productLayerBg = `linear-gradient(135deg, ${COLORS.violet50} 0%, #ffffff 50%, ${COLORS.violet50} 100%)` - const proxyLayerBg = `linear-gradient(135deg, ${COLORS.amber50} 0%, #fffaf0 50%, ${COLORS.amber50} 100%)` + /** + * ServiceNode — flat, no own border. Used INSIDE a tinted layer card so the + * whole layer reads as one panel rather than nested boxes (which is what + * was causing the architecture diagram to overflow). + */ + const ServiceNode = ({ kicker, title, subtitle, items, footer, accent }: { kicker?: string; title: string; subtitle?: string; items: string[]; footer?: string; accent: string }) => ( +
+ {kicker &&
{kicker}
} +
{title}
+ {subtitle &&
{subtitle}
} +
+ {items.slice(0, 4).map((it, i) => ( +
0 ? `1px solid ${COLORS.slate100}` : 'none' }}>· {it}
+ ))} +
+ {footer &&
{footer}
} +
+ ) + + const productLayerBg = `linear-gradient(135deg, ${COLORS.violet50} 0%, #ffffff 60%, ${COLORS.violet50} 100%)` + const proxyLayerBg = `linear-gradient(135deg, ${COLORS.amber50} 0%, #fffaf0 60%, ${COLORS.amber50} 100%)` return (
{/* APPLICATION (PRODUCT) LAYER */} -
+
-
+
{product.map((p, i) => ( - + ))}
- {/* connectors */} -
- {[0, 1, 2].map(i => )} + {/* compact connector strip */} +
+ {[0, 1, 2].map(i => ( +
+ + + + +
+ ))}
- {/* GATEWAY LAYER */} -
+ {/* GATEWAY LAYER — compact: title row + features in 1 row */} +
-
- {proxy.title} - {proxy.subtitle} +
+ {proxy.title} + {proxy.subtitle}
-
+
{proxy.features.map((f, i) => ( -
{f}
+
{f}
))}
- {/* connectors */} -
- {[0, 1, 2].map(i => )} + {/* compact connector strip */} +
+ {[0, 1, 2].map(i => ( +
+ + + + +
+ ))}
{/* INFRASTRUCTURE (INFERENCE) LAYER */} -
+
-
+
{inference.map((p, i) => ( - + ))}