import { StreamPhysicsFrame } from "semiotic/physics" const frameProps = { /* --- Size --- */ size: [620,360], /* --- Customize --- */ title: "Bounded physics scene", foregroundGraphics: ({ size }) => <svg>{/* visual bounds and ramps */}</svg>, /* --- Interact --- */ enableHover: true, /* --- Other --- */ summary: "Six bodies fall through two ramps into a bounded settling region.", description: "A low-level StreamPhysicsFrame scene with circular body spawns, segment colliders, bounds, hover tooltips, semantic regions, and a data table.", config: { kernel: { gravity: { x: 0, y: 680 }, restitution: 0.42 }, colliders: [...boundsColliders, ...rampColliders], observation: { chartId: "stream-physics-frame-docs", chartType: "StreamPhysicsFrame" } }, initialSpawns: [ { id: "sample-1", x: 112, y: 52, vx: 70, shape: { type: "circle", radius: 11 }, datum: { label: "A" } }, // ...more queued bodies ], bodyStyle: (body) => ({ fill: body.datum?.color || "#4e79a7", stroke: "#111827", strokeWidth: 1 }), semanticItems: [ { id: "feed", label: "Input feed", x: 190, y: 56, shape: "rect", width: 220, height: 48 }, { id: "ramps", label: "Ramp system", x: 310, y: 178, shape: "rect", width: 430, height: 150 }, // ...more semantic regions ], accessibleTable: true, hoverRadius: 18 } export default () => { return <StreamPhysicsFrame {...frameProps} /> }