95 lines
5.0 KiB
TypeScript
95 lines
5.0 KiB
TypeScript
import { FlowData } from './types'
|
|
|
|
// S2: Natural flows — abstract organic Sankey (unlabeled, acyclic)
|
|
// Represents sunlight/rain → photosynthesis/absorption → distribution → endpoints
|
|
export const naturalFlows: FlowData = {
|
|
nodes: [
|
|
{ id: 'sun', color: '#fbbf24' },
|
|
{ id: 'rain', color: '#60a5fa' },
|
|
{ id: 'photo', color: '#34d399' },
|
|
{ id: 'soil', color: '#c3b091' },
|
|
{ id: 'canopy', color: '#34d399' },
|
|
{ id: 'roots', color: '#a78bfa' },
|
|
{ id: 'stream', color: '#60a5fa' },
|
|
{ id: 'mycelium', color: '#a78bfa' },
|
|
{ id: 'fauna', color: '#f59e0b' },
|
|
{ id: 'atmosphere', color: '#94a3b8' },
|
|
{ id: 'humus', color: '#92704f' },
|
|
],
|
|
links: [
|
|
{ source: 'sun', target: 'photo', value: 8, color: '#fbbf2480' },
|
|
{ source: 'sun', target: 'canopy', value: 4, color: '#fbbf2440' },
|
|
{ source: 'rain', target: 'stream', value: 5, color: '#60a5fa80' },
|
|
{ source: 'rain', target: 'soil', value: 6, color: '#60a5fa60' },
|
|
{ source: 'photo', target: 'canopy', value: 5, color: '#34d39980' },
|
|
{ source: 'photo', target: 'roots', value: 3, color: '#34d39960' },
|
|
{ source: 'soil', target: 'roots', value: 4, color: '#c3b09180' },
|
|
{ source: 'soil', target: 'mycelium', value: 3, color: '#c3b09160' },
|
|
{ source: 'roots', target: 'mycelium', value: 3, color: '#a78bfa80' },
|
|
{ source: 'canopy', target: 'atmosphere', value: 4, color: '#34d39960' },
|
|
{ source: 'canopy', target: 'fauna', value: 3, color: '#34d39940' },
|
|
{ source: 'mycelium', target: 'humus', value: 4, color: '#a78bfa60' },
|
|
{ source: 'stream', target: 'atmosphere', value: 3, color: '#60a5fa60' },
|
|
{ source: 'fauna', target: 'humus', value: 2, color: '#f59e0b60' },
|
|
{ source: 'roots', target: 'humus', value: 2, color: '#a78bfa40' },
|
|
],
|
|
}
|
|
|
|
// S3: Extractive pattern — finance funnel (labeled, acyclic)
|
|
export const extractiveFlows: FlowData = {
|
|
nodes: [
|
|
{ id: 'labor', label: 'Labor', color: '#e9456060' },
|
|
{ id: 'creativity', label: 'Creativity', color: '#e9456060' },
|
|
{ id: 'nature', label: 'Nature', color: '#e9456060' },
|
|
{ id: 'communities', label: 'Communities', color: '#e9456060' },
|
|
{ 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: [
|
|
{ source: 'labor', target: 'finance', value: 10, color: '#e9456040' },
|
|
{ source: 'creativity', target: 'finance', value: 8, color: '#e9456040' },
|
|
{ source: 'nature', target: 'finance', value: 12, color: '#e9456040' },
|
|
{ source: 'communities', target: 'finance', value: 6, color: '#e9456040' },
|
|
{ source: 'finance', target: 'shareholders', value: 15, color: '#e9456080' },
|
|
{ source: 'finance', target: 'executives', value: 12, color: '#e9456080' },
|
|
{ source: 'finance', target: 'tax-havens', value: 7, color: '#e9456060' },
|
|
{ source: 'finance', target: 'public-good', value: 2, color: '#e9456020' },
|
|
],
|
|
}
|
|
|
|
// S4: Regenerative alternative — redistributive mesh (labeled, acyclic)
|
|
// Uses separate input/output nodes to represent the circular nature without actual cycles
|
|
export const regenerativeFlows: FlowData = {
|
|
nodes: [
|
|
{ id: 'commons-in', label: 'Commons', color: '#2dd4bf' },
|
|
{ id: 'labor-r', label: 'Labor', color: '#2dd4bfcc' },
|
|
{ id: 'ecology', label: 'Ecology', color: '#34d399' },
|
|
{ id: 'care', label: 'Care', color: '#a78bfa' },
|
|
{ id: 'creativity-r', label: 'Creativity', color: '#60a5fa' },
|
|
{ id: 'community', label: 'Community', color: '#fbbf24' },
|
|
{ id: 'knowledge', label: 'Knowledge', color: '#f472b6' },
|
|
{ id: 'stewardship', label: 'Stewardship', color: '#34d399cc' },
|
|
{ id: 'commons-out', label: 'Commons', color: '#2dd4bf' },
|
|
],
|
|
links: [
|
|
{ source: 'commons-in', target: 'labor-r', value: 5, color: '#2dd4bf60' },
|
|
{ source: 'commons-in', target: 'ecology', value: 6, color: '#2dd4bf60' },
|
|
{ source: 'commons-in', target: 'care', value: 5, color: '#2dd4bf60' },
|
|
{ source: 'commons-in', target: 'creativity-r', value: 4, color: '#2dd4bf60' },
|
|
{ source: 'labor-r', target: 'community', value: 4, color: '#2dd4bf40' },
|
|
{ source: 'labor-r', target: 'knowledge', value: 3, color: '#2dd4bf40' },
|
|
{ source: 'ecology', target: 'stewardship', value: 4, color: '#34d39960' },
|
|
{ source: 'ecology', target: 'community', value: 3, color: '#34d39940' },
|
|
{ source: 'care', target: 'community', value: 4, color: '#a78bfa60' },
|
|
{ source: 'care', target: 'knowledge', value: 3, color: '#a78bfa40' },
|
|
{ source: 'creativity-r', target: 'knowledge', value: 3, color: '#60a5fa60' },
|
|
{ source: 'creativity-r', target: 'community', value: 3, color: '#60a5fa40' },
|
|
{ source: 'community', target: 'commons-out', value: 6, color: '#fbbf2460' },
|
|
{ source: 'knowledge', target: 'commons-out', value: 4, color: '#f472b660' },
|
|
{ source: 'stewardship', target: 'commons-out', value: 4, color: '#34d39960' },
|
|
],
|
|
}
|