Logo
NeoArc Studio

Visualisation Blocks Reference

Complete reference for all 8 visualisation block types: Story Arc, Knowledge Hub, Comparison Lens, Orbit Rings, Hexagonal Cluster, Flow Tree, Publication Shelf, and Image Showcase. Covers configuration fields, layout engines, and rendering behaviour.

Eight content blocks for displaying media nodes in spatial layouts. All blocks belong to the Visualisations category and work as both page content blocks and marketing home sections. Six use D3 for layout; Publication Shelf uses CSS 3D transforms; Image Showcase uses GSAP for scroll-driven and interactive animations.

Block Overview

Block TypeViewer ComponentLayout EngineConnection Style
story-arcneoarc-story-arc-viewerD3 force simulation (forceLink, forceManyBody, forceCollide, forceX, forceY)S-curve cubic Bezier (vertical zigzag)
knowledge-hubneoarc-knowledge-hub-viewerD3 force simulation (forceManyBody, forceCollide, forceRadial)S-curve cubic Bezier (centre to satellites)
comparison-lensneoarc-comparison-lens-viewerCSS flexbox two-column layout with manual SVGHorizontal S-curve cubic Bezier (left to right)
orbit-ringsneoarc-orbit-rings-viewerTrigonometric positioning with CSS animationStraight lines (centre to satellites)
hexagonal-clusterneoarc-hexagonal-cluster-viewerPure math honeycomb positioningNone (grid layout without connectors)
flow-treeneoarc-flow-tree-viewerD3 hierarchy tree layoutVertical S-curve cubic Bezier (parent to child)
publication-shelfneoarc-publication-shelf-viewerCSS 3D perspective transformsNone (shelf layout without connectors)
image-showcaseneoarc-image-showcase-viewerGSAP Flip / CSS 3D / JS physicsNone (mode-specific animations)

Shared Section Fields

All visualisation block sections extend MarketingSectionBase and share these fields.

FieldTypeDefaultDescription
idstring-Unique section identifier.
typestring-Block type discriminator (e.g. 'story-arc', 'knowledge-hub').
ordernumber-Position in section list.
enabledboolean-Whether the section is active.
sectionTitlestring (optional)nullHeading text displayed above the visualisation.
sectionTitleColorstring (optional)'inherit'CSS colour for the title.
sectionSubtitlestring (optional)nullSubtitle text displayed below the title.
sectionSubtitleColorstring (optional)'inherit'CSS colour for the subtitle.
nodesarray[]Array of node objects (type varies per block).
pathColorstring (optional)'#3b82f6'Colour for connection lines and paths.
pathWidthnumber (optional)3Stroke width for connection lines.
backgroundColorstring (optional)'transparent'Section background colour or CSS gradient.
minHeightstring (optional)'600px'CSS min-height for the section container.

Shared Node Fields

All node interfaces share this base set of fields.

FieldTypeDescription
idstringUnique node identifier.
mediaIdstring (optional)ID of the linked infographic diagram.
mediaFileNamestring (optional)Published filename of the diagram JSON.
diameternumberNode diameter in pixels. Default varies by block (200-400).
ordernumberSort order within the block.

Story Arc

A vertical chain of circular infographic nodes connected by animated S-curve paths. Nodes are arranged in a zigzag pattern using D3 force simulation.

AspectDetail
Block typestory-arc
Node fieldsShared fields only. No additional fields.
D3 forcesforceLink (distance: srcR + tgtR + 100, strength: 0.5), forceManyBody (strength: -1500), forceCollide (radius + 40), forceX (alternating left/right, strength: 0.15), forceY (spacing: 380, strength: 0.2)
Connection pathsS-curve cubic Bezier from circle perimeter to circle perimeter. Control points at 30% and 70% of vertical distance.
MobileVertical stack, width: min(300px, 80vw). SVG hidden; dashed line connectors (20px wide, 48px tall).

Knowledge Hub

A radial star layout with a central hub node and satellite nodes arranged in a circle. The first node (order 0) becomes the centre; all others are satellites.

AspectDetail
Block typeknowledge-hub
Node fieldsShared fields only. No additional fields.
D3 forcesforceManyBody (strength: -200), forceCollide (radius + 30, strength: 1), forceRadial (radius: orbitDistance, centre=0, strength: 0.8)
Orbit distancecenterRadius + avgSatelliteRadius + 80
InteractionClicking a satellite toggles expanded state (doubles diameter). Centre node is not clickable.
Connection pathsS-curve cubic Bezier from centre to each satellite.
MobileVertical stack. Centre: min(320px, 85vw). Satellites: min(280px, 75vw).

Comparison Lens

A two-column layout with left (25% width) and right (75% width) columns. SVG S-curve connections link matched pairs by order position.

AspectDetail
Block typecomparison-lens
Additional section fieldsleftColumnLabel (string, optional), rightColumnLabel (string, optional)
Node fieldscolumn ('left' or 'right'), label (string, optional)
Connection pathsHorizontal S-curve from right edge of left-column node to left edge of right-column node. Control point offset: 40% of horizontal distance.
MobileInterleaved vertical stack (left, right, left, right). Node size: min(250px, 70vw).

Orbit Rings

A central node with concentric orbit rings. Satellites are positioned using trigonometry and grouped by ring number. Each ring has a CSS rotation animation.

AspectDetail
Block typeorbit-rings
Node fieldsring (number): 0 = centre, 1+ = orbit rings. Determines orbital distance and animation speed.
Ring distancering * 200 + centerRadius + avgSatelliteRadius
AnimationEach ring: animation: orbit Xs linear infinite (duration: 60s * ringNumber). Nodes counter-rotate to stay upright.
Connection pathsStraight lines (M ... L ...) from centre to each satellite perimeter.
MobileVertical stack sorted by ring then order. Centre: min(320px, 85vw). Satellites: min(280px, 75vw). Orbit animation disabled.

Hexagonal Cluster

A honeycomb grid of hexagonal-clipped nodes. Nodes use CSS clip-path: polygon() for hexagonal clipping.

AspectDetail
Block typehexagonal-cluster
Additional section fieldscolumns (number, optional, default: 3): number of columns in the hex grid.
Node fieldsShared fields only. No additional fields.
LayoutHex vertical ratio: sqrt(3)/2. Odd rows offset by half hex width. Horizontal gap: hexWidth * 0.1.
Connection pathsNone. Grid layout without connectors.
MobileFlex wrap with reduced columns: min(columns, 2). Node size scales proportionally.

Flow Tree

A vertical hierarchical tree layout using D3 hierarchy. Nodes define parent-child relationships via parentId. Labels alternate left/right.

AspectDetail
Block typeflow-tree
Node fieldsparentId (string, optional): parent node ID, null means root. label (string, optional): text label displayed beside the node.
D3 usagehierarchy() and tree().nodeSize([avgDiameter * 2, avgDiameter * 2.5])
Label positionLeft of node when node.x < 0, right otherwise. Bounding box includes 260px label space per side.
Connection pathsCubic Bezier with vertical flow. Midpoint Y between source and target.
MobileDFS-ordered vertical stack with depth-based indentation (depth * 20px). Node size: min(260px, 70vw).

Publication Shelf

A 3D perspective bookshelf for showcasing publications and downloadable documents. Uses CSS perspective and rotateY for the 3D effect.

AspectDetail
Block typepublication-shelf
Additional section fieldsspotlightColor (string, optional, default: '#3b82f6'): colour of radial glow beneath each cover.
Node fieldscontentType ('infographic' | 'image' | 'rte'), imageFileName, imageRelativePath, imageId, label, description, linkType ('download' | 'external' | 'page' | null), downloadFileName, downloadRelativePath, downloadId, externalUrl, pageId
3D effectsContainer: perspective 1200px. Rest: rotateY(-8deg) scale(0.95). Hover: rotateY(0deg) scale(1.02) translateY(-12px). Spine edge gradient. Spotlight glow.
Portrait ratioCovers render at 1:1.4 width-to-height ratio.
Scroll revealStaggered entrance via IntersectionObserver (0.15s delay between items).

Image Showcase

GSAP-powered screenshot/image showcase with three display modes. Does not use infographic media nodes; items contain uploaded images with optional title and description.

Display ModeAnimation LibraryInteraction
Living Mosaic (mosaic)GSAP FlipScroll-driven: grid collage rearranges per chapter, hero image + thumbnail strip.
Depth Corridor (corridor)CSS 3D + JSScroll-driven: images at varying z-depth, camera moves through corridor.
Gravitational Canvas (canvas)GSAP FlipMouse-driven: images drift with physics, mouse creates gravity well, click to focus.
Section FieldTypeDescription
displayMode'mosaic' | 'corridor' | 'canvas'Which animation mode to use.
accentColorstringAccent colour for text borders and progress bar.

Common Rendering Patterns

Shared behaviour across all visualisation blocks.

PatternDetail
Infographic mediaEach node references a mediaId pointing to an infographic diagram. The viewer loads the diagram JSON, transforms it via transformInfographicDocument(), strips the canvas viewBox, and renders inside neoarc-diagram-viewer with hideControls=true.
Circular clipAll blocks except Hexagonal Cluster render nodes with border-radius: 50%. Hexagonal Cluster uses clip-path: polygon().
Scroll-driven revealIntersectionObserver with threshold: 0.2 and rootMargin: '0px 0px -5% 0px'. Triggers opacity and scale transitions.
Path revealAfter a node becomes visible, connection paths are revealed with 300ms delay. Animated dashed strokes (stroke-dasharray: 8 12, animation: dash-flow 1.5s linear infinite).
Resize handlingResizeObserver on the container recalculates layout when width changes.
Mobile detectionwindow.innerWidth <= 768 triggers mobile layout. All blocks fall back to vertical stack.
Theme supportisDarkMode property controls background colour of empty node placeholders.
BackgroundSection-level backgroundColor supports solid colours and CSS gradients.

D3 Dependencies

BlockD3 ModuleFunctions Used
Story Arcd3-forceforceSimulation, forceLink, forceManyBody, forceCollide, forceX, forceY
Knowledge Hubd3-forceforceSimulation, forceManyBody, forceCollide, forceRadial
Comparison LensNonePure CSS two-column layout with manual SVG path generation
Orbit RingsNonePure trigonometric positioning with CSS orbit animation
Hexagonal ClusterNonePure math honeycomb positioning
Flow Treed3-hierarchyhierarchy, tree