108 lines
5.4 KiB
TypeScript
108 lines
5.4 KiB
TypeScript
import { FlowData } from './types'
|
|
|
|
// Flow dimension colors:
|
|
// Economic = teal (#2dd4bf)
|
|
// Governance/Delegation = purple (#a78bfa)
|
|
// Data/Knowledge = blue (#60a5fa)
|
|
// Energy/Resources = amber (#fbbf24)
|
|
|
|
// S2: Multi-dimensional flows in a living system
|
|
// Same nodes participate in multiple flow types
|
|
// Note: d3-sankey requires acyclic graphs, so feedback loops are
|
|
// represented with separate source/sink nodes (e.g. soil-in → soil-out)
|
|
export const naturalFlows: FlowData = {
|
|
nodes: [
|
|
{ id: 'sun', label: 'Energy', color: '#fbbf24' },
|
|
{ id: 'water', label: 'Water', color: '#38bdf8' },
|
|
{ id: 'soil', label: 'Substrate', color: '#c3b091' },
|
|
{ id: 'producers', label: 'Producers', color: '#34d399' },
|
|
{ id: 'consumers', label: 'Consumers', color: '#60a5fa' },
|
|
{ id: 'decomposers', label: 'Decomposers', color: '#a78bfa' },
|
|
{ id: 'signals', label: 'Signals', color: '#f472b6' },
|
|
{ id: 'nutrients', label: 'Nutrients', color: '#c3b091' },
|
|
{ id: 'commons', label: 'Commons', color: '#94a3b8' },
|
|
],
|
|
links: [
|
|
// Energy flows (amber)
|
|
{ source: 'sun', target: 'producers', value: 10, color: '#fbbf2460' },
|
|
{ source: 'producers', target: 'consumers', value: 6, color: '#fbbf2440' },
|
|
{ source: 'consumers', target: 'decomposers', value: 4, color: '#fbbf2430' },
|
|
// Resource flows (teal)
|
|
{ source: 'soil', target: 'producers', value: 6, color: '#2dd4bf50' },
|
|
{ source: 'water', target: 'producers', value: 5, color: '#38bdf850' },
|
|
{ source: 'decomposers', target: 'nutrients', value: 5, color: '#2dd4bf40' },
|
|
// Information/signal flows (pink)
|
|
{ source: 'producers', target: 'signals', value: 3, color: '#f472b640' },
|
|
{ source: 'signals', target: 'consumers', value: 3, color: '#f472b640' },
|
|
{ source: 'signals', target: 'decomposers', value: 2, color: '#f472b630' },
|
|
// Commons flows (grey-blue)
|
|
{ source: 'consumers', target: 'commons', value: 3, color: '#94a3b840' },
|
|
{ source: 'producers', target: 'commons', value: 4, color: '#94a3b830' },
|
|
],
|
|
}
|
|
|
|
// S3: Extractive pattern — all dimensions funnel through one bottleneck
|
|
export const extractiveFlows: FlowData = {
|
|
nodes: [
|
|
{ id: 'labor', label: 'Labor', color: '#e9456050' },
|
|
{ id: 'data', label: 'Data', color: '#e9456050' },
|
|
{ id: 'nature', label: 'Nature', color: '#e9456050' },
|
|
{ id: 'governance', label: 'Governance', color: '#e9456050' },
|
|
{ id: 'finance', label: 'Finance', color: '#e94560' },
|
|
{ id: 'shareholders', label: 'Shareholders', color: '#e94560cc' },
|
|
{ id: 'executives', label: 'Executives', color: '#e94560cc' },
|
|
{ id: 'tax-havens', label: 'Tax Havens', color: '#e94560aa' },
|
|
{ id: 'public-good', label: 'Public Good', color: '#e9456030' },
|
|
],
|
|
links: [
|
|
// Economic flows in (muted red)
|
|
{ source: 'labor', target: 'finance', value: 10, color: '#e9456035' },
|
|
{ source: 'nature', target: 'finance', value: 12, color: '#e9456035' },
|
|
// Data flows in (muted red-blue)
|
|
{ source: 'data', target: 'finance', value: 8, color: '#e9456030' },
|
|
// Delegation captured (muted red-purple)
|
|
{ source: 'governance', target: 'finance', value: 6, color: '#e9456028' },
|
|
// All flows out through narrow channels
|
|
{ source: 'finance', target: 'shareholders', value: 16, color: '#e9456070' },
|
|
{ source: 'finance', target: 'executives', value: 12, color: '#e9456060' },
|
|
{ source: 'finance', target: 'tax-havens', value: 6, color: '#e9456050' },
|
|
{ source: 'finance', target: 'public-good', value: 2, color: '#e9456018' },
|
|
],
|
|
}
|
|
|
|
// S4: Regenerative — multi-dimensional flows that interconnect
|
|
// Economic, governance, and knowledge flows between same nodes
|
|
export const regenerativeFlows: FlowData = {
|
|
nodes: [
|
|
{ id: 'commons', label: 'Commons', color: '#2dd4bf' },
|
|
{ id: 'labor-r', label: 'Workers', color: '#2dd4bfbb' },
|
|
{ id: 'ecology', label: 'Ecology', color: '#34d399' },
|
|
{ id: 'care', label: 'Care', color: '#a78bfa' },
|
|
{ id: 'data-r', label: 'Data', color: '#60a5fa' },
|
|
{ id: 'community', label: 'Community', color: '#fbbf24' },
|
|
{ id: 'knowledge', label: 'Knowledge', color: '#f472b6' },
|
|
{ id: 'stewardship', label: 'Stewardship', color: '#34d399bb' },
|
|
{ id: 'public', label: 'Public Good', color: '#2dd4bf' },
|
|
],
|
|
links: [
|
|
// Economic flows (teal)
|
|
{ source: 'commons', target: 'labor-r', value: 5, color: '#2dd4bf45' },
|
|
{ source: 'commons', target: 'ecology', value: 4, color: '#2dd4bf45' },
|
|
{ source: 'labor-r', target: 'community', value: 4, color: '#2dd4bf35' },
|
|
{ source: 'ecology', target: 'stewardship', value: 3, color: '#2dd4bf35' },
|
|
// Delegation/governance flows (purple)
|
|
{ source: 'commons', target: 'care', value: 4, color: '#a78bfa40' },
|
|
{ source: 'care', target: 'community', value: 3, color: '#a78bfa35' },
|
|
{ source: 'community', target: 'public', value: 5, color: '#a78bfa30' },
|
|
// Data/knowledge flows (blue)
|
|
{ source: 'commons', target: 'data-r', value: 4, color: '#60a5fa40' },
|
|
{ source: 'data-r', target: 'knowledge', value: 4, color: '#60a5fa35' },
|
|
{ source: 'knowledge', target: 'public', value: 4, color: '#60a5fa30' },
|
|
// Cross-dimension connections
|
|
{ source: 'care', target: 'knowledge', value: 2, color: '#a78bfa25' },
|
|
{ source: 'ecology', target: 'community', value: 2, color: '#34d39930' },
|
|
{ source: 'stewardship', target: 'public', value: 3, color: '#34d39930' },
|
|
{ source: 'labor-r', target: 'knowledge', value: 2, color: '#2dd4bf25' },
|
|
],
|
|
}
|