@albionlabs/brochure-templates 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +42 -0
- package/dist/assets/favicon.svg +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.js +4 -0
- package/dist/registry.d.ts +4 -0
- package/dist/registry.js +16 -0
- package/dist/shared/styles/print-base.css +12 -0
- package/dist/templates/investor-pitch/InvestorPitchRenderer.svelte +101 -0
- package/dist/templates/investor-pitch/InvestorPitchRenderer.svelte.d.ts +7 -0
- package/dist/templates/investor-pitch/components/AssetLocation.svelte +143 -0
- package/dist/templates/investor-pitch/components/AssetLocation.svelte.d.ts +9 -0
- package/dist/templates/investor-pitch/components/DevelopmentTimeline.svelte +88 -0
- package/dist/templates/investor-pitch/components/DevelopmentTimeline.svelte.d.ts +8 -0
- package/dist/templates/investor-pitch/components/Footer.svelte +46 -0
- package/dist/templates/investor-pitch/components/Footer.svelte.d.ts +8 -0
- package/dist/templates/investor-pitch/components/Header.svelte +86 -0
- package/dist/templates/investor-pitch/components/Header.svelte.d.ts +9 -0
- package/dist/templates/investor-pitch/components/InvestmentThesis.svelte +43 -0
- package/dist/templates/investor-pitch/components/InvestmentThesis.svelte.d.ts +7 -0
- package/dist/templates/investor-pitch/components/KeyPartners.svelte +69 -0
- package/dist/templates/investor-pitch/components/KeyPartners.svelte.d.ts +8 -0
- package/dist/templates/investor-pitch/components/KeyRisks.svelte +48 -0
- package/dist/templates/investor-pitch/components/KeyRisks.svelte.d.ts +7 -0
- package/dist/templates/investor-pitch/components/PortfolioValueChart.svelte +150 -0
- package/dist/templates/investor-pitch/components/PortfolioValueChart.svelte.d.ts +11 -0
- package/dist/templates/investor-pitch/components/SensitivitySection.svelte +214 -0
- package/dist/templates/investor-pitch/components/SensitivitySection.svelte.d.ts +7 -0
- package/dist/templates/investor-pitch/components/ValuePropositions.svelte +71 -0
- package/dist/templates/investor-pitch/components/ValuePropositions.svelte.d.ts +8 -0
- package/dist/templates/investor-pitch/index.d.ts +5 -0
- package/dist/templates/investor-pitch/index.js +4 -0
- package/dist/templates/investor-pitch/meta.d.ts +2 -0
- package/dist/templates/investor-pitch/meta.js +7 -0
- package/dist/templates/investor-pitch/print.css +12 -0
- package/dist/templates/investor-pitch/sample.json +159 -0
- package/dist/templates/investor-pitch/schema.json +360 -0
- package/dist/templates/investor-pitch/types.d.ts +118 -0
- package/dist/templates/investor-pitch/types.js +1 -0
- package/dist/types.d.ts +16 -0
- package/dist/types.js +1 -0
- package/package.json +50 -0
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
{
|
|
2
|
+
"company": {
|
|
3
|
+
"name": "ORCADIAN ENERGY PLC",
|
|
4
|
+
"subtitle": "AIM: ORCA | UK North Sea Oil & Gas Development | Carried Interest Strategy"
|
|
5
|
+
},
|
|
6
|
+
"keyMetrics": [
|
|
7
|
+
{ "label": "MARKET CAP", "value": "$13m", "highlight": false },
|
|
8
|
+
{ "label": "RISKED NAV", "value": "$43m", "highlight": false },
|
|
9
|
+
{ "label": "NAV DISCOUNT", "value": "70%", "highlight": true },
|
|
10
|
+
{ "label": "CARRIED VALUE", "value": "77%", "highlight": true },
|
|
11
|
+
{ "label": "FIRST PRODUCTION", "value": "2028", "highlight": false },
|
|
12
|
+
{ "label": "NET RESOURCES", "value": "340 MMboe", "highlight": false }
|
|
13
|
+
],
|
|
14
|
+
"investmentThesis": {
|
|
15
|
+
"title": "INVESTMENT THESIS",
|
|
16
|
+
"content": "Carried exposure to <strong>8 UK North Sea assets</strong> at 70% discount to risked NAV. Two flagship projects (Pilot, Earlham) fully funded by partners through first production—zero Orcadian capital required."
|
|
17
|
+
},
|
|
18
|
+
"valuePropositions": {
|
|
19
|
+
"title": "WHY ORCADIAN?",
|
|
20
|
+
"items": [
|
|
21
|
+
{ "text": "<strong>Carried Interest</strong> — Partners fund 77% of portfolio value" },
|
|
22
|
+
{ "text": "<strong>Proven Technology</strong> — Pilot uses Captain-validated polymer flood" },
|
|
23
|
+
{ "text": "<strong>Near-Term Catalyst</strong> — Earlham first gas targeted 2028" },
|
|
24
|
+
{ "text": "<strong>ESG Angle</strong> — Earlham captures 95%+ of CO₂ emissions" }
|
|
25
|
+
]
|
|
26
|
+
},
|
|
27
|
+
"assetLocation": {
|
|
28
|
+
"title": "ASSET LOCATION",
|
|
29
|
+
"mapDescription": "UK Continental Shelf showing asset locations",
|
|
30
|
+
"assetLabels": [
|
|
31
|
+
{ "name": "Pilot", "x": 72, "y": 25 },
|
|
32
|
+
{ "name": "Elke", "x": 68, "y": 38 },
|
|
33
|
+
{ "name": "Fynn", "x": 58, "y": 55 },
|
|
34
|
+
{ "name": "Earlham", "x": 62, "y": 68 }
|
|
35
|
+
],
|
|
36
|
+
"stats": [
|
|
37
|
+
{ "label": "Oil Assets", "value": "5", "description": "heavy & light" },
|
|
38
|
+
{ "label": "Gas Assets", "value": "3", "description": "with CCS" },
|
|
39
|
+
{ "label": "Partners", "value": "4", "description": "Ping, MLCP, Serica" },
|
|
40
|
+
{ "label": "Licences", "value": "5", "description": "UKCS blocks" }
|
|
41
|
+
]
|
|
42
|
+
},
|
|
43
|
+
"portfolioValue": {
|
|
44
|
+
"title": "RISKED PORTFOLIO VALUE BY ASSET",
|
|
45
|
+
"assets": [
|
|
46
|
+
{
|
|
47
|
+
"name": "Pilot",
|
|
48
|
+
"bars": [
|
|
49
|
+
{ "value": 19.5, "color": "#0d9488", "label": "Pilot" },
|
|
50
|
+
{ "value": 15.0, "color": "#14b8a6", "label": "Earlham" }
|
|
51
|
+
]
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"name": "Elke/Narwhal",
|
|
55
|
+
"bars": [
|
|
56
|
+
{ "value": 4.2, "color": "#3b82f6", "label": "Elke/Narwhal" },
|
|
57
|
+
{ "value": 3.0, "color": "#ef4444", "label": "Lowlander" }
|
|
58
|
+
]
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"name": "Orwell",
|
|
62
|
+
"bars": [
|
|
63
|
+
{ "value": 0.8, "color": "#f59e0b", "label": "Orwell" }
|
|
64
|
+
]
|
|
65
|
+
}
|
|
66
|
+
],
|
|
67
|
+
"maxValue": 20,
|
|
68
|
+
"gridLines": [0, 5, 10, 15, 20],
|
|
69
|
+
"developmentProbabilities": [
|
|
70
|
+
{ "name": "Earlham", "percentage": 40, "color": "#14b8a6" },
|
|
71
|
+
{ "name": "Pilot", "percentage": 50, "color": "#0d9488" },
|
|
72
|
+
{ "name": "Lowlander", "percentage": 30, "color": "#ef4444" },
|
|
73
|
+
{ "name": "Elke/Narwhal", "percentage": 27, "color": "#3b82f6" }
|
|
74
|
+
]
|
|
75
|
+
},
|
|
76
|
+
"priceSensitivity": {
|
|
77
|
+
"title": "OIL PRICE SENSITIVITY — PORTFOLIO NPV",
|
|
78
|
+
"chart": {
|
|
79
|
+
"xAxisLabel": "Brent",
|
|
80
|
+
"yAxisLabel": "Portfolio NPV ($m)",
|
|
81
|
+
"xRange": [40, 100],
|
|
82
|
+
"yRange": [20, 60],
|
|
83
|
+
"xStep": 5,
|
|
84
|
+
"yStep": 10,
|
|
85
|
+
"dataPoints": [
|
|
86
|
+
{ "x": 40, "y": 37 },
|
|
87
|
+
{ "x": 45, "y": 38 },
|
|
88
|
+
{ "x": 50, "y": 40 },
|
|
89
|
+
{ "x": 55, "y": 41.5 },
|
|
90
|
+
{ "x": 60, "y": 42.5 },
|
|
91
|
+
{ "x": 65, "y": 44 },
|
|
92
|
+
{ "x": 70, "y": 45.5 },
|
|
93
|
+
{ "x": 75, "y": 46.5 },
|
|
94
|
+
{ "x": 80, "y": 48 },
|
|
95
|
+
{ "x": 85, "y": 49 },
|
|
96
|
+
{ "x": 90, "y": 50 },
|
|
97
|
+
{ "x": 95, "y": 51.5 },
|
|
98
|
+
{ "x": 100, "y": 53 }
|
|
99
|
+
],
|
|
100
|
+
"baseCaseX": 65,
|
|
101
|
+
"baseCaseLabel": "Base"
|
|
102
|
+
},
|
|
103
|
+
"table": {
|
|
104
|
+
"columns": [
|
|
105
|
+
{ "key": "brent", "label": "Brent" },
|
|
106
|
+
{ "key": "portfolioNPV", "label": "Portfolio NPV", "highlightColor": "#10b981" },
|
|
107
|
+
{ "key": "pilotNPV", "label": "Pilot NPV" },
|
|
108
|
+
{ "key": "navDiscount", "label": "NAV Discount", "highlightColor": "#10b981" },
|
|
109
|
+
{ "key": "upside", "label": "Upside", "highlightColor": "#10b981" }
|
|
110
|
+
],
|
|
111
|
+
"rows": [
|
|
112
|
+
{ "brent": "$40", "portfolioNPV": "$37m", "pilotNPV": "$11m", "navDiscount": "65%", "upside": "185%" },
|
|
113
|
+
{ "brent": "$50", "portfolioNPV": "$40m", "pilotNPV": "$13m", "navDiscount": "68%", "upside": "208%" },
|
|
114
|
+
{ "brent": "$65", "portfolioNPV": "$44m", "pilotNPV": "$15m", "navDiscount": "70%", "upside": "238%" },
|
|
115
|
+
{ "brent": "$80", "portfolioNPV": "$48m", "pilotNPV": "$17m", "navDiscount": "73%", "upside": "269%" },
|
|
116
|
+
{ "brent": "$100", "portfolioNPV": "$53m", "pilotNPV": "$21m", "navDiscount": "75%", "upside": "308%" }
|
|
117
|
+
],
|
|
118
|
+
"highlightRowIndex": 2
|
|
119
|
+
},
|
|
120
|
+
"footnote": "Gas assets (Earlham, Orwell) less sensitive to oil; valued at power station economics"
|
|
121
|
+
},
|
|
122
|
+
"developmentTimeline": {
|
|
123
|
+
"title": "DEVELOPMENT TIMELINE",
|
|
124
|
+
"milestones": [
|
|
125
|
+
{ "year": "2026", "label": "Earlham CSR", "color": "#10b981" },
|
|
126
|
+
{ "year": "2027", "label": "P2482 Decision", "color": "#14b8a6" },
|
|
127
|
+
{ "year": "2028", "label": "Earlham 1st Gas", "color": "#10b981" },
|
|
128
|
+
{ "year": "2031", "label": "Pilot 1st Oil", "color": "#3b82f6" }
|
|
129
|
+
]
|
|
130
|
+
},
|
|
131
|
+
"keyPartners": {
|
|
132
|
+
"title": "KEY PARTNERS",
|
|
133
|
+
"partners": [
|
|
134
|
+
{ "name": "Ping Petroleum", "description": "Pilot operator (Malaysia)" },
|
|
135
|
+
{ "name": "MLCP", "description": "Earlham JV (Power/CCS)" },
|
|
136
|
+
{ "name": "Serica Energy", "description": "Fynn-Beauly operator" },
|
|
137
|
+
{ "name": "Triangle Energy", "description": "Glenlough JV (Australia)" }
|
|
138
|
+
]
|
|
139
|
+
},
|
|
140
|
+
"keyRisks": {
|
|
141
|
+
"title": "KEY RISKS",
|
|
142
|
+
"risks": [
|
|
143
|
+
"Partner execution",
|
|
144
|
+
"Project financing",
|
|
145
|
+
"UK fiscal regime (EPL)",
|
|
146
|
+
"Development delays",
|
|
147
|
+
"Exploration failure (Clover, Glenlough not valued)"
|
|
148
|
+
]
|
|
149
|
+
},
|
|
150
|
+
"footer": {
|
|
151
|
+
"items": [
|
|
152
|
+
{ "label": "AIM", "value": "ORCA" },
|
|
153
|
+
{ "label": "Sector", "value": "Oil & Gas E&P" },
|
|
154
|
+
{ "label": "Base Case", "value": "$65/bbl Brent, 80p/therm" },
|
|
155
|
+
{ "label": "Valuation", "value": "Risked NPV₁₅" }
|
|
156
|
+
],
|
|
157
|
+
"disclaimer": "This summary is for informational purposes only and does not constitute investment advice. January 2026."
|
|
158
|
+
}
|
|
159
|
+
}
|
|
@@ -0,0 +1,360 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://albionlabs.com/schemas/investor-pitch.json",
|
|
4
|
+
"title": "Investor Pitch",
|
|
5
|
+
"description": "Standardised data schema for a single-page investor pitch summary",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"required": [
|
|
8
|
+
"company",
|
|
9
|
+
"keyMetrics",
|
|
10
|
+
"investmentThesis",
|
|
11
|
+
"valuePropositions",
|
|
12
|
+
"assetLocation",
|
|
13
|
+
"portfolioValue",
|
|
14
|
+
"priceSensitivity",
|
|
15
|
+
"developmentTimeline",
|
|
16
|
+
"keyPartners",
|
|
17
|
+
"keyRisks",
|
|
18
|
+
"footer"
|
|
19
|
+
],
|
|
20
|
+
"properties": {
|
|
21
|
+
"company": {
|
|
22
|
+
"type": "object",
|
|
23
|
+
"required": ["name", "subtitle"],
|
|
24
|
+
"properties": {
|
|
25
|
+
"name": {
|
|
26
|
+
"type": "string",
|
|
27
|
+
"description": "Company name displayed as the page heading"
|
|
28
|
+
},
|
|
29
|
+
"subtitle": {
|
|
30
|
+
"type": "string",
|
|
31
|
+
"description": "Ticker, sector, and strategy tagline"
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
"keyMetrics": {
|
|
36
|
+
"type": "array",
|
|
37
|
+
"description": "Top-level KPI pills displayed beneath the header",
|
|
38
|
+
"items": {
|
|
39
|
+
"type": "object",
|
|
40
|
+
"required": ["label", "value"],
|
|
41
|
+
"properties": {
|
|
42
|
+
"label": {
|
|
43
|
+
"type": "string",
|
|
44
|
+
"description": "Metric label (e.g. MARKET CAP)"
|
|
45
|
+
},
|
|
46
|
+
"value": {
|
|
47
|
+
"type": "string",
|
|
48
|
+
"description": "Formatted display value (e.g. $13m)"
|
|
49
|
+
},
|
|
50
|
+
"highlight": {
|
|
51
|
+
"type": "boolean",
|
|
52
|
+
"default": false,
|
|
53
|
+
"description": "Whether to display the value in accent colour"
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
"investmentThesis": {
|
|
59
|
+
"type": "object",
|
|
60
|
+
"required": ["title", "content"],
|
|
61
|
+
"properties": {
|
|
62
|
+
"title": {
|
|
63
|
+
"type": "string",
|
|
64
|
+
"description": "Section heading"
|
|
65
|
+
},
|
|
66
|
+
"content": {
|
|
67
|
+
"type": "string",
|
|
68
|
+
"description": "HTML-enabled thesis paragraph. Use <strong> for emphasis."
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
},
|
|
72
|
+
"valuePropositions": {
|
|
73
|
+
"type": "object",
|
|
74
|
+
"required": ["title", "items"],
|
|
75
|
+
"properties": {
|
|
76
|
+
"title": {
|
|
77
|
+
"type": "string",
|
|
78
|
+
"description": "Section heading (e.g. WHY COMPANY?)"
|
|
79
|
+
},
|
|
80
|
+
"items": {
|
|
81
|
+
"type": "array",
|
|
82
|
+
"items": {
|
|
83
|
+
"type": "object",
|
|
84
|
+
"required": ["text"],
|
|
85
|
+
"properties": {
|
|
86
|
+
"text": {
|
|
87
|
+
"type": "string",
|
|
88
|
+
"description": "HTML-enabled bullet text. Use <strong> for the lead phrase."
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
},
|
|
95
|
+
"assetLocation": {
|
|
96
|
+
"type": "object",
|
|
97
|
+
"required": ["title", "mapDescription", "assetLabels", "stats"],
|
|
98
|
+
"properties": {
|
|
99
|
+
"title": { "type": "string" },
|
|
100
|
+
"mapDescription": {
|
|
101
|
+
"type": "string",
|
|
102
|
+
"description": "Accessible description of the map"
|
|
103
|
+
},
|
|
104
|
+
"assetLabels": {
|
|
105
|
+
"type": "array",
|
|
106
|
+
"description": "Labelled points displayed on the map SVG",
|
|
107
|
+
"items": {
|
|
108
|
+
"type": "object",
|
|
109
|
+
"required": ["name", "x", "y"],
|
|
110
|
+
"properties": {
|
|
111
|
+
"name": { "type": "string" },
|
|
112
|
+
"x": {
|
|
113
|
+
"type": "number",
|
|
114
|
+
"description": "X position as percentage of SVG viewBox"
|
|
115
|
+
},
|
|
116
|
+
"y": {
|
|
117
|
+
"type": "number",
|
|
118
|
+
"description": "Y position as percentage of SVG viewBox"
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
},
|
|
123
|
+
"stats": {
|
|
124
|
+
"type": "array",
|
|
125
|
+
"description": "2x2 grid of key asset statistics",
|
|
126
|
+
"items": {
|
|
127
|
+
"type": "object",
|
|
128
|
+
"required": ["label", "value", "description"],
|
|
129
|
+
"properties": {
|
|
130
|
+
"label": { "type": "string" },
|
|
131
|
+
"value": { "type": "string" },
|
|
132
|
+
"description": { "type": "string" }
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
},
|
|
138
|
+
"portfolioValue": {
|
|
139
|
+
"type": "object",
|
|
140
|
+
"required": ["title", "assets", "maxValue", "gridLines", "developmentProbabilities"],
|
|
141
|
+
"properties": {
|
|
142
|
+
"title": { "type": "string" },
|
|
143
|
+
"assets": {
|
|
144
|
+
"type": "array",
|
|
145
|
+
"description": "Grouped horizontal bar chart data",
|
|
146
|
+
"items": {
|
|
147
|
+
"type": "object",
|
|
148
|
+
"required": ["name", "bars"],
|
|
149
|
+
"properties": {
|
|
150
|
+
"name": {
|
|
151
|
+
"type": "string",
|
|
152
|
+
"description": "Y-axis group label"
|
|
153
|
+
},
|
|
154
|
+
"bars": {
|
|
155
|
+
"type": "array",
|
|
156
|
+
"items": {
|
|
157
|
+
"type": "object",
|
|
158
|
+
"required": ["value", "color", "label"],
|
|
159
|
+
"properties": {
|
|
160
|
+
"value": {
|
|
161
|
+
"type": "number",
|
|
162
|
+
"description": "Bar width in chart units (e.g. millions)"
|
|
163
|
+
},
|
|
164
|
+
"color": {
|
|
165
|
+
"type": "string",
|
|
166
|
+
"description": "CSS colour for this bar segment"
|
|
167
|
+
},
|
|
168
|
+
"label": {
|
|
169
|
+
"type": "string",
|
|
170
|
+
"description": "Legend label for this bar"
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
},
|
|
178
|
+
"maxValue": {
|
|
179
|
+
"type": "number",
|
|
180
|
+
"description": "Maximum x-axis value"
|
|
181
|
+
},
|
|
182
|
+
"gridLines": {
|
|
183
|
+
"type": "array",
|
|
184
|
+
"items": { "type": "number" },
|
|
185
|
+
"description": "X-axis grid line positions"
|
|
186
|
+
},
|
|
187
|
+
"developmentProbabilities": {
|
|
188
|
+
"type": "array",
|
|
189
|
+
"items": {
|
|
190
|
+
"type": "object",
|
|
191
|
+
"required": ["name", "percentage", "color"],
|
|
192
|
+
"properties": {
|
|
193
|
+
"name": { "type": "string" },
|
|
194
|
+
"percentage": { "type": "number" },
|
|
195
|
+
"color": { "type": "string" }
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
},
|
|
201
|
+
"priceSensitivity": {
|
|
202
|
+
"type": "object",
|
|
203
|
+
"required": ["title", "chart", "table", "footnote"],
|
|
204
|
+
"properties": {
|
|
205
|
+
"title": { "type": "string" },
|
|
206
|
+
"chart": {
|
|
207
|
+
"type": "object",
|
|
208
|
+
"required": [
|
|
209
|
+
"xAxisLabel",
|
|
210
|
+
"yAxisLabel",
|
|
211
|
+
"xRange",
|
|
212
|
+
"yRange",
|
|
213
|
+
"xStep",
|
|
214
|
+
"yStep",
|
|
215
|
+
"dataPoints",
|
|
216
|
+
"baseCaseX",
|
|
217
|
+
"baseCaseLabel"
|
|
218
|
+
],
|
|
219
|
+
"properties": {
|
|
220
|
+
"xAxisLabel": { "type": "string" },
|
|
221
|
+
"yAxisLabel": { "type": "string" },
|
|
222
|
+
"xRange": {
|
|
223
|
+
"type": "array",
|
|
224
|
+
"items": { "type": "number" },
|
|
225
|
+
"minItems": 2,
|
|
226
|
+
"maxItems": 2
|
|
227
|
+
},
|
|
228
|
+
"yRange": {
|
|
229
|
+
"type": "array",
|
|
230
|
+
"items": { "type": "number" },
|
|
231
|
+
"minItems": 2,
|
|
232
|
+
"maxItems": 2
|
|
233
|
+
},
|
|
234
|
+
"xStep": { "type": "number" },
|
|
235
|
+
"yStep": { "type": "number" },
|
|
236
|
+
"dataPoints": {
|
|
237
|
+
"type": "array",
|
|
238
|
+
"items": {
|
|
239
|
+
"type": "object",
|
|
240
|
+
"required": ["x", "y"],
|
|
241
|
+
"properties": {
|
|
242
|
+
"x": { "type": "number" },
|
|
243
|
+
"y": { "type": "number" }
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
},
|
|
247
|
+
"baseCaseX": {
|
|
248
|
+
"type": "number",
|
|
249
|
+
"description": "X value where the base-case dashed line is drawn"
|
|
250
|
+
},
|
|
251
|
+
"baseCaseLabel": { "type": "string" }
|
|
252
|
+
}
|
|
253
|
+
},
|
|
254
|
+
"table": {
|
|
255
|
+
"type": "object",
|
|
256
|
+
"required": ["columns", "rows", "highlightRowIndex"],
|
|
257
|
+
"properties": {
|
|
258
|
+
"columns": {
|
|
259
|
+
"type": "array",
|
|
260
|
+
"items": {
|
|
261
|
+
"type": "object",
|
|
262
|
+
"required": ["key", "label"],
|
|
263
|
+
"properties": {
|
|
264
|
+
"key": { "type": "string" },
|
|
265
|
+
"label": { "type": "string" },
|
|
266
|
+
"highlightColor": {
|
|
267
|
+
"type": "string",
|
|
268
|
+
"description": "CSS colour for cell values in this column"
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
},
|
|
273
|
+
"rows": {
|
|
274
|
+
"type": "array",
|
|
275
|
+
"items": {
|
|
276
|
+
"type": "object",
|
|
277
|
+
"additionalProperties": { "type": "string" }
|
|
278
|
+
}
|
|
279
|
+
},
|
|
280
|
+
"highlightRowIndex": {
|
|
281
|
+
"type": "integer",
|
|
282
|
+
"description": "0-based index of the base-case row to bold"
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
},
|
|
286
|
+
"footnote": { "type": "string" }
|
|
287
|
+
}
|
|
288
|
+
},
|
|
289
|
+
"developmentTimeline": {
|
|
290
|
+
"type": "object",
|
|
291
|
+
"required": ["title", "milestones"],
|
|
292
|
+
"properties": {
|
|
293
|
+
"title": { "type": "string" },
|
|
294
|
+
"milestones": {
|
|
295
|
+
"type": "array",
|
|
296
|
+
"items": {
|
|
297
|
+
"type": "object",
|
|
298
|
+
"required": ["year", "label", "color"],
|
|
299
|
+
"properties": {
|
|
300
|
+
"year": { "type": "string" },
|
|
301
|
+
"label": { "type": "string" },
|
|
302
|
+
"color": {
|
|
303
|
+
"type": "string",
|
|
304
|
+
"description": "CSS colour for the milestone dot"
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
},
|
|
311
|
+
"keyPartners": {
|
|
312
|
+
"type": "object",
|
|
313
|
+
"required": ["title", "partners"],
|
|
314
|
+
"properties": {
|
|
315
|
+
"title": { "type": "string" },
|
|
316
|
+
"partners": {
|
|
317
|
+
"type": "array",
|
|
318
|
+
"items": {
|
|
319
|
+
"type": "object",
|
|
320
|
+
"required": ["name", "description"],
|
|
321
|
+
"properties": {
|
|
322
|
+
"name": { "type": "string" },
|
|
323
|
+
"description": { "type": "string" }
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
},
|
|
329
|
+
"keyRisks": {
|
|
330
|
+
"type": "object",
|
|
331
|
+
"required": ["title", "risks"],
|
|
332
|
+
"properties": {
|
|
333
|
+
"title": { "type": "string" },
|
|
334
|
+
"risks": {
|
|
335
|
+
"type": "array",
|
|
336
|
+
"items": { "type": "string" }
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
},
|
|
340
|
+
"footer": {
|
|
341
|
+
"type": "object",
|
|
342
|
+
"required": ["items", "disclaimer"],
|
|
343
|
+
"properties": {
|
|
344
|
+
"items": {
|
|
345
|
+
"type": "array",
|
|
346
|
+
"description": "Key metadata displayed as Label: Value pairs",
|
|
347
|
+
"items": {
|
|
348
|
+
"type": "object",
|
|
349
|
+
"required": ["label", "value"],
|
|
350
|
+
"properties": {
|
|
351
|
+
"label": { "type": "string" },
|
|
352
|
+
"value": { "type": "string" }
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
},
|
|
356
|
+
"disclaimer": { "type": "string" }
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
export interface KeyMetric {
|
|
2
|
+
label: string;
|
|
3
|
+
value: string;
|
|
4
|
+
highlight?: boolean;
|
|
5
|
+
}
|
|
6
|
+
export interface ValueProposition {
|
|
7
|
+
text: string;
|
|
8
|
+
}
|
|
9
|
+
export interface AssetStat {
|
|
10
|
+
label: string;
|
|
11
|
+
value: string;
|
|
12
|
+
description: string;
|
|
13
|
+
}
|
|
14
|
+
export interface AssetLabel {
|
|
15
|
+
name: string;
|
|
16
|
+
x: number;
|
|
17
|
+
y: number;
|
|
18
|
+
}
|
|
19
|
+
export interface BarSegment {
|
|
20
|
+
value: number;
|
|
21
|
+
color: string;
|
|
22
|
+
label: string;
|
|
23
|
+
}
|
|
24
|
+
export interface PortfolioAsset {
|
|
25
|
+
name: string;
|
|
26
|
+
bars: BarSegment[];
|
|
27
|
+
}
|
|
28
|
+
export interface DevProbability {
|
|
29
|
+
name: string;
|
|
30
|
+
percentage: number;
|
|
31
|
+
color: string;
|
|
32
|
+
}
|
|
33
|
+
export interface ChartDataPoint {
|
|
34
|
+
x: number;
|
|
35
|
+
y: number;
|
|
36
|
+
}
|
|
37
|
+
export interface SensitivityColumn {
|
|
38
|
+
key: string;
|
|
39
|
+
label: string;
|
|
40
|
+
highlightColor?: string;
|
|
41
|
+
}
|
|
42
|
+
export interface TimelineMilestone {
|
|
43
|
+
year: string;
|
|
44
|
+
label: string;
|
|
45
|
+
color: string;
|
|
46
|
+
}
|
|
47
|
+
export interface Partner {
|
|
48
|
+
name: string;
|
|
49
|
+
description: string;
|
|
50
|
+
}
|
|
51
|
+
export interface FooterItem {
|
|
52
|
+
label: string;
|
|
53
|
+
value: string;
|
|
54
|
+
}
|
|
55
|
+
export interface InvestorPitch {
|
|
56
|
+
company: {
|
|
57
|
+
name: string;
|
|
58
|
+
subtitle: string;
|
|
59
|
+
};
|
|
60
|
+
keyMetrics: KeyMetric[];
|
|
61
|
+
investmentThesis: {
|
|
62
|
+
title: string;
|
|
63
|
+
content: string;
|
|
64
|
+
};
|
|
65
|
+
valuePropositions: {
|
|
66
|
+
title: string;
|
|
67
|
+
items: ValueProposition[];
|
|
68
|
+
};
|
|
69
|
+
assetLocation: {
|
|
70
|
+
title: string;
|
|
71
|
+
mapDescription: string;
|
|
72
|
+
assetLabels: AssetLabel[];
|
|
73
|
+
stats: AssetStat[];
|
|
74
|
+
};
|
|
75
|
+
portfolioValue: {
|
|
76
|
+
title: string;
|
|
77
|
+
assets: PortfolioAsset[];
|
|
78
|
+
maxValue: number;
|
|
79
|
+
gridLines: number[];
|
|
80
|
+
developmentProbabilities: DevProbability[];
|
|
81
|
+
};
|
|
82
|
+
priceSensitivity: {
|
|
83
|
+
title: string;
|
|
84
|
+
chart: {
|
|
85
|
+
xAxisLabel: string;
|
|
86
|
+
yAxisLabel: string;
|
|
87
|
+
xRange: [number, number];
|
|
88
|
+
yRange: [number, number];
|
|
89
|
+
xStep: number;
|
|
90
|
+
yStep: number;
|
|
91
|
+
dataPoints: ChartDataPoint[];
|
|
92
|
+
baseCaseX: number;
|
|
93
|
+
baseCaseLabel: string;
|
|
94
|
+
};
|
|
95
|
+
table: {
|
|
96
|
+
columns: SensitivityColumn[];
|
|
97
|
+
rows: Record<string, string>[];
|
|
98
|
+
highlightRowIndex: number;
|
|
99
|
+
};
|
|
100
|
+
footnote: string;
|
|
101
|
+
};
|
|
102
|
+
developmentTimeline: {
|
|
103
|
+
title: string;
|
|
104
|
+
milestones: TimelineMilestone[];
|
|
105
|
+
};
|
|
106
|
+
keyPartners: {
|
|
107
|
+
title: string;
|
|
108
|
+
partners: Partner[];
|
|
109
|
+
};
|
|
110
|
+
keyRisks: {
|
|
111
|
+
title: string;
|
|
112
|
+
risks: string[];
|
|
113
|
+
};
|
|
114
|
+
footer: {
|
|
115
|
+
items: FooterItem[];
|
|
116
|
+
disclaimer: string;
|
|
117
|
+
};
|
|
118
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { Component } from 'svelte';
|
|
2
|
+
export interface TemplateMeta {
|
|
3
|
+
id: string;
|
|
4
|
+
name: string;
|
|
5
|
+
description: string;
|
|
6
|
+
version: string;
|
|
7
|
+
category: string;
|
|
8
|
+
}
|
|
9
|
+
export interface TemplateDefinition<TData = any> {
|
|
10
|
+
meta: TemplateMeta;
|
|
11
|
+
renderer: Component<{
|
|
12
|
+
data: TData;
|
|
13
|
+
}>;
|
|
14
|
+
schema: Record<string, unknown>;
|
|
15
|
+
sampleData: TData;
|
|
16
|
+
}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|