mulmocast-vision 1.0.4 → 1.0.6
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 +109 -1
- package/html/html2_cool/agendaSlide.html +28 -11
- package/html/html2_cool/balanceSheetSlide.html +33 -18
- package/html/html2_cool/beforeAfterSlide.html +29 -14
- package/html/html2_cool/benchmarkingTableSlide.html +28 -11
- package/html/html2_cool/bubbleChartPlaceholderSlide.html +29 -12
- package/html/html2_cool/cashFlowSlide.html +33 -18
- package/html/html2_cool/changeCurveSlide.html +28 -11
- package/html/html2_cool/communicationPlanSlide.html +28 -11
- package/html/html2_cool/costStructureSlide.html +29 -12
- package/html/html2_cool/customerJourneySlide.html +29 -12
- package/html/html2_cool/digitalMaturitySlide.html +32 -13
- package/html/html2_cool/driverTreeSlide.html +28 -11
- package/html/html2_cool/ecosystemMapSlide.html +28 -11
- package/html/html2_cool/executiveSummarySlide.html +28 -11
- package/html/html2_cool/funnelSlide.html +29 -12
- package/html/html2_cool/ganttSimpleSlide.html +28 -11
- package/html/html2_cool/geMcKinseyMatrixSlide.html +31 -12
- package/html/html2_cool/heatmapPlaceholderSlide.html +35 -14
- package/html/html2_cool/hypothesisSlide.html +30 -13
- package/html/html2_cool/innovationFunnelSlide.html +28 -11
- package/html/html2_cool/innovationFunnelSlide.html~ +76 -0
- package/html/html2_cool/issueTreeSlide.html +28 -11
- package/html/html2_cool/marimekkoPlaceholderSlide.html +29 -12
- package/html/html2_cool/marketingMixSlide.html +28 -11
- package/html/html2_cool/npvSummarySlide.html +28 -11
- package/html/html2_cool/okrKpiDashboardSlide.html +28 -11
- package/html/html2_cool/partnershipMapSlide.html +28 -11
- package/html/html2_cool/pipelineFunnelSlide.html +30 -13
- package/html/html2_cool/pricingWaterfallSlide.html +28 -11
- package/html/html2_cool/productRoadmapSlide.html +28 -11
- package/html/html2_cool/pyramidPrincipleSlide.html +28 -11
- package/html/html2_cool/quarterlyRoadmapSlide.html +29 -14
- package/html/html2_cool/revenueModelSlide.html +28 -11
- package/html/html2_cool/riskMitigationSlide.html +28 -11
- package/html/html2_cool/riskMitigationSlide.html~ +51 -0
- package/html/html2_cool/salesDashboardSlide.html +29 -12
- package/html/html2_cool/salesDashboardSlide.html~ +73 -0
- package/html/html2_cool/sectionDividerSlide.html +33 -13
- package/html/html2_cool/sectionDividerSlide.html~ +39 -0
- package/html/html2_cool/segmentationSlide.html +28 -11
- package/html/html2_cool/segmentationSlide.html~ +51 -0
- package/html/html2_cool/sensitivityAnalysisSlide.html +28 -11
- package/html/html2_cool/sensitivityAnalysisSlide.html~ +97 -0
- package/html/html2_cool/shareholderValueTreeSlide.html +28 -11
- package/html/html2_cool/shareholderValueTreeSlide.html~ +47 -0
- package/html/html2_cool/surveyResultsSlide.html +28 -11
- package/html/html2_cool/surveyResultsSlide.html~ +47 -0
- package/html/html2_cool/sustainabilityRoadmapSlide.html +29 -14
- package/html/html2_cool/sustainabilityRoadmapSlide.html~ +69 -0
- package/html/html2_cool/synergyCaptureSlide.html +28 -11
- package/html/html2_cool/synergyCaptureSlide.html~ +54 -0
- package/html/html2_cool/tamSamSomSlide.html +30 -13
- package/html/html2_cool/tamSamSomSlide.html~ +77 -0
- package/html/html2_cool/techRoadmapSlide.html +29 -14
- package/html/html2_cool/techRoadmapSlide.html~ +69 -0
- package/html/html2_cool/thankYouContactSlide.html +38 -16
- package/html/html2_cool/thankYouContactSlide.html~ +92 -0
- package/html/html2_cool/waterfallSlide.html +29 -12
- package/html/html2_cool/waterfallSlide.html~ +62 -0
- package/html/html2_cool_v2/agendaSlide.html +84 -46
- package/html/html2_cool_v2/balanceSheetSlide.html +145 -103
- package/html/html2_cool_v2/beforeAfterSlide.html +128 -88
- package/html/html2_cool_v2/benchmarkingTableSlide.html +119 -81
- package/html/html2_cool_v2/bubbleChartPlaceholderSlide.html +152 -114
- package/html/html2_cool_v2/cashFlowSlide.html +125 -85
- package/html/html2_cool_v2/changeCurveSlide.html +110 -72
- package/html/html2_cool_v2/communicationPlanSlide.html +131 -93
- package/html/html2_cool_v2/costStructureSlide.html +112 -74
- package/html/html2_cool_v2/customerJourneySlide.html +119 -81
- package/html/html2_cool_v2/digitalMaturitySlide.html +110 -70
- package/html/html2_cool_v2/driverTreeSlide.html +142 -99
- package/html/html2_cool_v2/ecosystemMapSlide.html +89 -51
- package/html/html2_cool_v2/executiveSummarySlide.html +87 -49
- package/html/html2_cool_v2/funnelSlide.html +105 -67
- package/html/html2_cool_v2/ganttSimpleSlide.html +104 -66
- package/html/html2_cool_v2/geMcKinseyMatrixSlide.html +102 -62
- package/html/html2_cool_v2/heatmapPlaceholderSlide.html +187 -145
- package/html/html2_cool_v2/hypothesisSlide.html +142 -104
- package/html/html2_cool_v2/innovationFunnelSlide.html +113 -75
- package/html/html2_cool_v2/issueTreeSlide.html +142 -104
- package/html/html2_cool_v2/marimekkoPlaceholderSlide.html +162 -124
- package/html/html2_cool_v2/marketingMixSlide.html +106 -68
- package/html/html2_cool_v2/npvSummarySlide.html +107 -69
- package/html/html2_cool_v2/okrKpiDashboardSlide.html +138 -100
- package/html/html2_cool_v2/partnershipMapSlide.html +85 -47
- package/html/html2_cool_v2/pipelineFunnelSlide.html +127 -89
- package/html/html2_cool_v2/pricingWaterfallSlide.html +92 -50
- package/html/html2_cool_v2/productRoadmapSlide.html +100 -60
- package/html/html2_cool_v2/pyramidPrincipleSlide.html +104 -66
- package/html/html2_cool_v2/quarterlyRoadmapSlide.html +105 -67
- package/html/html2_cool_v2/revenueModelSlide.html +107 -69
- package/html/html2_cool_v2/riskMitigationSlide.html +99 -57
- package/html/html2_cool_v2/salesDashboardSlide.html +110 -72
- package/html/html2_cool_v2/sectionDividerSlide.html +86 -44
- package/html/html2_cool_v2/segmentationSlide.html +95 -57
- package/html/html2_cool_v2/sensitivityAnalysisSlide.html +121 -83
- package/html/html2_cool_v2/shareholderValueTreeSlide.html +88 -50
- package/html/html2_cool_v2/surveyResultsSlide.html +91 -53
- package/html/html2_cool_v2/sustainabilityRoadmapSlide.html +105 -67
- package/html/html2_cool_v2/synergyCaptureSlide.html +94 -56
- package/html/html2_cool_v2/tamSamSomSlide.html +112 -74
- package/html/html2_cool_v2/techRoadmapSlide.html +105 -67
- package/html/html2_cool_v2/thankYouContactSlide.html +133 -89
- package/html/html2_cool_v2/thankYouContactSlide.html~ +116 -0
- package/html/html2_cool_v2/waterfallSlide.html +101 -63
- package/lib/html_class.d.ts +1 -0
- package/lib/html_class.js +109 -48
- package/lib/logger.d.ts +49 -0
- package/lib/logger.js +142 -0
- package/lib/mcp.d.ts +17 -0
- package/lib/mcp.js +25 -7
- package/lib/utils.js +15 -1
- package/package.json +9 -9
- package/html/html2/#imageSlide.html# +0 -0
package/README.md
CHANGED
|
@@ -72,9 +72,62 @@ You can instruct these actions via prompts.
|
|
|
72
72
|
- SWOT, PEST, and 3C Analysis
|
|
73
73
|
- Summary, Agenda, and Closing Slides
|
|
74
74
|
|
|
75
|
+
## Logging
|
|
76
|
+
|
|
77
|
+
mulmocast-vision automatically logs all operations and errors to help with debugging and monitoring.
|
|
78
|
+
|
|
79
|
+
### Log Location
|
|
80
|
+
|
|
81
|
+
Logs are saved in `/tmp/mulmocast-vision-mcp/` with daily rotation:
|
|
82
|
+
- Format: `mcp_yyyymmdd.log` (e.g., `mcp_20251206.log`)
|
|
83
|
+
- Each day creates a new log file
|
|
84
|
+
|
|
85
|
+
### What is Logged
|
|
86
|
+
|
|
87
|
+
- **MCP Server Operations**: Server initialization, tool calls, and results
|
|
88
|
+
- **File Operations**: Template reads, HTML/PNG generation, PDF creation
|
|
89
|
+
- **Errors**: Detailed error messages with full stack traces
|
|
90
|
+
- **Debug Information**: Template rendering, directory operations, and more
|
|
91
|
+
|
|
92
|
+
### Log Format
|
|
93
|
+
|
|
94
|
+
Logs are written in JSON Lines format for easy parsing:
|
|
95
|
+
|
|
96
|
+
```json
|
|
97
|
+
{
|
|
98
|
+
"timestamp": "2025-01-15T10:30:45.123Z",
|
|
99
|
+
"level": "ERROR",
|
|
100
|
+
"message": "Template file not found",
|
|
101
|
+
"data": {
|
|
102
|
+
"errorMessage": "getHtml: file /path/to/template.html not exists.",
|
|
103
|
+
"errorName": "Error",
|
|
104
|
+
"stack": "Error: getHtml: file...\n at htmlPlugin.getHtml...",
|
|
105
|
+
"templateFilePath": "/path/to/template.html",
|
|
106
|
+
"functionName": "createAgendaSlide"
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
### Custom Logger
|
|
112
|
+
|
|
113
|
+
You can replace the default logger with your own implementation (e.g., for telemetry):
|
|
114
|
+
|
|
115
|
+
```typescript
|
|
116
|
+
import { setLogger, LoggerInterface } from 'mulmocast-vision/logger';
|
|
117
|
+
|
|
118
|
+
class CustomLogger implements LoggerInterface {
|
|
119
|
+
info(message: string, data?: unknown) {
|
|
120
|
+
// Your implementation
|
|
121
|
+
}
|
|
122
|
+
// ... other methods
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
setLogger(new CustomLogger());
|
|
126
|
+
```
|
|
127
|
+
|
|
75
128
|
## For Developers
|
|
76
129
|
|
|
77
|
-
MulmoCast Vision is open source, so you can apply various designs by modifying the HTML.
|
|
130
|
+
MulmoCast Vision is open source, so you can apply various designs by modifying the HTML.
|
|
78
131
|
For adding styles, please refer to [Style.ja.md](https://github.com/receptron/mulmocast-vision/blob/main/Style.ja.md).
|
|
79
132
|
|
|
80
133
|
### Official Repository & Package
|
|
@@ -139,3 +192,58 @@ MCP対応ツール(例: Claude Desktop)の設定ファイルに以下を追
|
|
|
139
192
|
- SWOT分析、PEST分析、3C分析
|
|
140
193
|
- サマリースライド、アジェンダスライド、クロージングスライド
|
|
141
194
|
|
|
195
|
+
---
|
|
196
|
+
|
|
197
|
+
## ログ機能
|
|
198
|
+
|
|
199
|
+
mulmocast-visionは、デバッグや監視を支援するため、すべての操作とエラーを自動的にログに記録します。
|
|
200
|
+
|
|
201
|
+
### ログの保存場所
|
|
202
|
+
|
|
203
|
+
ログは `/tmp/mulmocast-vision-mcp/` に日次ローテーションで保存されます:
|
|
204
|
+
- 形式: `mcp_yyyymmdd.log` (例: `mcp_20251206.log`)
|
|
205
|
+
- 日付が変わると新しいログファイルが作成されます
|
|
206
|
+
|
|
207
|
+
### 記録される内容
|
|
208
|
+
|
|
209
|
+
- **MCPサーバー操作**: サーバーの初期化、ツール呼び出し、実行結果
|
|
210
|
+
- **ファイル操作**: テンプレート読み込み、HTML/PNG生成、PDF作成
|
|
211
|
+
- **エラー**: 詳細なエラーメッセージとスタックトレース
|
|
212
|
+
- **デバッグ情報**: テンプレートレンダリング、ディレクトリ操作など
|
|
213
|
+
|
|
214
|
+
### ログフォーマット
|
|
215
|
+
|
|
216
|
+
ログはJSON Lines形式で記録され、解析が容易です:
|
|
217
|
+
|
|
218
|
+
```json
|
|
219
|
+
{
|
|
220
|
+
"timestamp": "2025-01-15T10:30:45.123Z",
|
|
221
|
+
"level": "ERROR",
|
|
222
|
+
"message": "Template file not found",
|
|
223
|
+
"data": {
|
|
224
|
+
"errorMessage": "getHtml: file /path/to/template.html not exists.",
|
|
225
|
+
"errorName": "Error",
|
|
226
|
+
"stack": "Error: getHtml: file...\n at htmlPlugin.getHtml...",
|
|
227
|
+
"templateFilePath": "/path/to/template.html",
|
|
228
|
+
"functionName": "createAgendaSlide"
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
### カスタムロガー
|
|
234
|
+
|
|
235
|
+
デフォルトのロガーを独自の実装(テレメトリーなど)に置き換えることができます:
|
|
236
|
+
|
|
237
|
+
```typescript
|
|
238
|
+
import { setLogger, LoggerInterface } from 'mulmocast-vision/logger';
|
|
239
|
+
|
|
240
|
+
class CustomLogger implements LoggerInterface {
|
|
241
|
+
info(message: string, data?: unknown) {
|
|
242
|
+
// 独自の実装
|
|
243
|
+
}
|
|
244
|
+
// ... その他のメソッド
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
setLogger(new CustomLogger());
|
|
248
|
+
```
|
|
249
|
+
|
|
@@ -1,16 +1,33 @@
|
|
|
1
|
-
|
|
2
1
|
<!-- Injected cool, minimal theme -->
|
|
3
2
|
<style type="text/tailwindcss">
|
|
4
3
|
@layer utilities {
|
|
5
|
-
.slide-shell {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
.
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
.
|
|
12
|
-
|
|
13
|
-
|
|
4
|
+
.slide-shell {
|
|
5
|
+
@apply min-h-full bg-neutral-950 text-neutral-200 antialiased;
|
|
6
|
+
}
|
|
7
|
+
.slide-grid {
|
|
8
|
+
@apply grid gap-6;
|
|
9
|
+
}
|
|
10
|
+
.h1 {
|
|
11
|
+
@apply text-5xl font-semibold tracking-tight leading-tight;
|
|
12
|
+
}
|
|
13
|
+
.h2 {
|
|
14
|
+
@apply text-2xl font-medium tracking-tight;
|
|
15
|
+
}
|
|
16
|
+
.muted {
|
|
17
|
+
@apply text-neutral-400;
|
|
18
|
+
}
|
|
19
|
+
.accent {
|
|
20
|
+
@apply text-indigo-300;
|
|
21
|
+
}
|
|
22
|
+
.card {
|
|
23
|
+
@apply bg-neutral-900/60 border border-neutral-800 rounded-2xl p-6;
|
|
24
|
+
}
|
|
25
|
+
.badge {
|
|
26
|
+
@apply inline-flex items-center rounded-full border border-neutral-700 px-3 py-1 text-sm text-neutral-300;
|
|
27
|
+
}
|
|
28
|
+
.kpi {
|
|
29
|
+
@apply text-4xl font-semibold tracking-tight;
|
|
30
|
+
}
|
|
14
31
|
}
|
|
15
32
|
</style>
|
|
16
33
|
<div class="slide-shell bg-gradient-to-b from-neutral-950 to-neutral-900 text-neutral-100 flex flex-col px-16 py-16 min-h-screen">
|
|
@@ -31,7 +48,7 @@
|
|
|
31
48
|
<span class="text-white font-bold text-lg">{{ loop.index }}</span>
|
|
32
49
|
</div>
|
|
33
50
|
<div class="flex-1">
|
|
34
|
-
<div class="h2
|
|
51
|
+
<div class="h2 font-semibold text-gray-800 leading-relaxed break-words">{{ item }}</div>
|
|
35
52
|
</div>
|
|
36
53
|
</div>
|
|
37
54
|
</div>
|
|
@@ -1,16 +1,33 @@
|
|
|
1
|
-
|
|
2
1
|
<!-- Injected cool, minimal theme -->
|
|
3
2
|
<style type="text/tailwindcss">
|
|
4
3
|
@layer utilities {
|
|
5
|
-
.slide-shell {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
.
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
.
|
|
12
|
-
|
|
13
|
-
|
|
4
|
+
.slide-shell {
|
|
5
|
+
@apply min-h-full bg-neutral-950 text-neutral-200 antialiased;
|
|
6
|
+
}
|
|
7
|
+
.slide-grid {
|
|
8
|
+
@apply grid gap-6;
|
|
9
|
+
}
|
|
10
|
+
.h1 {
|
|
11
|
+
@apply text-5xl font-semibold tracking-tight leading-tight;
|
|
12
|
+
}
|
|
13
|
+
.h2 {
|
|
14
|
+
@apply text-2xl font-medium tracking-tight;
|
|
15
|
+
}
|
|
16
|
+
.muted {
|
|
17
|
+
@apply text-neutral-400;
|
|
18
|
+
}
|
|
19
|
+
.accent {
|
|
20
|
+
@apply text-indigo-300;
|
|
21
|
+
}
|
|
22
|
+
.card {
|
|
23
|
+
@apply bg-neutral-900/60 border border-neutral-800 rounded-2xl p-6;
|
|
24
|
+
}
|
|
25
|
+
.badge {
|
|
26
|
+
@apply inline-flex items-center rounded-full border border-neutral-700 px-3 py-1 text-sm text-neutral-300;
|
|
27
|
+
}
|
|
28
|
+
.kpi {
|
|
29
|
+
@apply text-4xl font-semibold tracking-tight;
|
|
30
|
+
}
|
|
14
31
|
}
|
|
15
32
|
</style>
|
|
16
33
|
<div class="slide-shell bg-gradient-to-b from-neutral-950 to-neutral-900 text-neutral-100 px-16 py-16 min-h-screen">
|
|
@@ -24,9 +41,7 @@
|
|
|
24
41
|
<!-- Balance Sheet Grid -->
|
|
25
42
|
<div class="grid grid-cols-1 lg:grid-cols-3 gap-8 max-w-7xl mx-auto">
|
|
26
43
|
<!-- Assets -->
|
|
27
|
-
<section
|
|
28
|
-
class="bg-gradient-to-b from-neutral-950 to-neutral-900 rounded-3xl p-8 text-white shadow transform hover:scale-105 transition-all duration-300"
|
|
29
|
-
>
|
|
44
|
+
<section class="bg-gradient-to-b from-neutral-950 to-neutral-900 rounded-3xl p-8 text-white shadow transform hover:scale-105 transition-all duration-300">
|
|
30
45
|
<div class="flex items-center mb-6">
|
|
31
46
|
<div class="w-16 h-16 bg-white bg-opacity-20 rounded-2xl flex items-center justify-center mr-4">
|
|
32
47
|
<svg class="w-8 h-8" fill="currentColor" viewBox="0 0 20 20">
|
|
@@ -92,11 +107,11 @@
|
|
|
92
107
|
<!-- Balance Equation -->
|
|
93
108
|
<div class="text-center mt-12">
|
|
94
109
|
<div class="inline-flex items-center bg-white rounded-2xl shadow px-8 py-4">
|
|
95
|
-
<span class="h2
|
|
96
|
-
<span class="h2
|
|
97
|
-
<span class="h2
|
|
98
|
-
<span class="h2
|
|
99
|
-
<span class="h2
|
|
110
|
+
<span class="h2 font-bold text-neutral-200">Assets</span>
|
|
111
|
+
<span class="h2 font-bold text-gray-400 mx-4">=</span>
|
|
112
|
+
<span class="h2 font-bold text-neutral-200">Liabilities</span>
|
|
113
|
+
<span class="h2 font-bold text-gray-400 mx-4">+</span>
|
|
114
|
+
<span class="h2 font-bold text-neutral-200">Equity</span>
|
|
100
115
|
</div>
|
|
101
116
|
</div>
|
|
102
117
|
</div>
|
|
@@ -1,16 +1,33 @@
|
|
|
1
|
-
|
|
2
1
|
<!-- Injected cool, minimal theme -->
|
|
3
2
|
<style type="text/tailwindcss">
|
|
4
3
|
@layer utilities {
|
|
5
|
-
.slide-shell {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
.
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
.
|
|
12
|
-
|
|
13
|
-
|
|
4
|
+
.slide-shell {
|
|
5
|
+
@apply min-h-full bg-neutral-950 text-neutral-200 antialiased;
|
|
6
|
+
}
|
|
7
|
+
.slide-grid {
|
|
8
|
+
@apply grid gap-6;
|
|
9
|
+
}
|
|
10
|
+
.h1 {
|
|
11
|
+
@apply text-5xl font-semibold tracking-tight leading-tight;
|
|
12
|
+
}
|
|
13
|
+
.h2 {
|
|
14
|
+
@apply text-2xl font-medium tracking-tight;
|
|
15
|
+
}
|
|
16
|
+
.muted {
|
|
17
|
+
@apply text-neutral-400;
|
|
18
|
+
}
|
|
19
|
+
.accent {
|
|
20
|
+
@apply text-indigo-300;
|
|
21
|
+
}
|
|
22
|
+
.card {
|
|
23
|
+
@apply bg-neutral-900/60 border border-neutral-800 rounded-2xl p-6;
|
|
24
|
+
}
|
|
25
|
+
.badge {
|
|
26
|
+
@apply inline-flex items-center rounded-full border border-neutral-700 px-3 py-1 text-sm text-neutral-300;
|
|
27
|
+
}
|
|
28
|
+
.kpi {
|
|
29
|
+
@apply text-4xl font-semibold tracking-tight;
|
|
30
|
+
}
|
|
14
31
|
}
|
|
15
32
|
</style>
|
|
16
33
|
<div class="slide-shell bg-gradient-to-b from-neutral-950 to-neutral-900 text-neutral-100 px-16 py-16 min-h-screen">
|
|
@@ -45,9 +62,7 @@
|
|
|
45
62
|
</section>
|
|
46
63
|
|
|
47
64
|
<!-- After -->
|
|
48
|
-
<section
|
|
49
|
-
class="bg-gradient-to-b from-neutral-950 to-neutral-900 rounded-3xl p-10 text-white shadow transform hover:scale-105 transition-all duration-300"
|
|
50
|
-
>
|
|
65
|
+
<section class="bg-gradient-to-b from-neutral-950 to-neutral-900 rounded-3xl p-10 text-white shadow transform hover:scale-105 transition-all duration-300">
|
|
51
66
|
<div class="flex items-center mb-8">
|
|
52
67
|
<div class="w-16 h-16 bg-white bg-opacity-20 rounded-2xl flex items-center justify-center mr-4">
|
|
53
68
|
<svg class="w-8 h-8" fill="currentColor" viewBox="0 0 20 20">
|
|
@@ -87,7 +102,7 @@
|
|
|
87
102
|
<svg class="w-8 h-8 mr-3" fill="currentColor" viewBox="0 0 20 20">
|
|
88
103
|
<path d="M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z" />
|
|
89
104
|
</svg>
|
|
90
|
-
<span class="h2
|
|
105
|
+
<span class="h2 font-bold">Transformation Impact</span>
|
|
91
106
|
</div>
|
|
92
107
|
</div>
|
|
93
108
|
</div>
|
|
@@ -1,16 +1,33 @@
|
|
|
1
|
-
|
|
2
1
|
<!-- Injected cool, minimal theme -->
|
|
3
2
|
<style type="text/tailwindcss">
|
|
4
3
|
@layer utilities {
|
|
5
|
-
.slide-shell {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
.
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
.
|
|
12
|
-
|
|
13
|
-
|
|
4
|
+
.slide-shell {
|
|
5
|
+
@apply min-h-full bg-neutral-950 text-neutral-200 antialiased;
|
|
6
|
+
}
|
|
7
|
+
.slide-grid {
|
|
8
|
+
@apply grid gap-6;
|
|
9
|
+
}
|
|
10
|
+
.h1 {
|
|
11
|
+
@apply text-5xl font-semibold tracking-tight leading-tight;
|
|
12
|
+
}
|
|
13
|
+
.h2 {
|
|
14
|
+
@apply text-2xl font-medium tracking-tight;
|
|
15
|
+
}
|
|
16
|
+
.muted {
|
|
17
|
+
@apply text-neutral-400;
|
|
18
|
+
}
|
|
19
|
+
.accent {
|
|
20
|
+
@apply text-indigo-300;
|
|
21
|
+
}
|
|
22
|
+
.card {
|
|
23
|
+
@apply bg-neutral-900/60 border border-neutral-800 rounded-2xl p-6;
|
|
24
|
+
}
|
|
25
|
+
.badge {
|
|
26
|
+
@apply inline-flex items-center rounded-full border border-neutral-700 px-3 py-1 text-sm text-neutral-300;
|
|
27
|
+
}
|
|
28
|
+
.kpi {
|
|
29
|
+
@apply text-4xl font-semibold tracking-tight;
|
|
30
|
+
}
|
|
14
31
|
}
|
|
15
32
|
</style>
|
|
16
33
|
<div class="slide-shell bg-gradient-to-b from-neutral-950 to-neutral-900 text-neutral-100 px-16 py-16 min-h-screen">
|
|
@@ -79,7 +96,7 @@
|
|
|
79
96
|
d="M2 11a1 1 0 011-1h2a1 1 0 011 1v5a1 1 0 01-1 1H3a1 1 0 01-1-1v-5zM8 7a1 1 0 011-1h2a1 1 0 011 1v9a1 1 0 01-1 1H9a1 1 0 01-1-1V7zM14 4a1 1 0 011-1h2a1 1 0 011 1v12a1 1 0 01-1 1h-2a1 1 0 01-1-1V4z"
|
|
80
97
|
/>
|
|
81
98
|
</svg>
|
|
82
|
-
<span class="h2
|
|
99
|
+
<span class="h2 font-bold">Competitive Benchmarking Analysis</span>
|
|
83
100
|
</div>
|
|
84
101
|
</div>
|
|
85
102
|
</div>
|
|
@@ -1,16 +1,33 @@
|
|
|
1
|
-
|
|
2
1
|
<!-- Injected cool, minimal theme -->
|
|
3
2
|
<style type="text/tailwindcss">
|
|
4
3
|
@layer utilities {
|
|
5
|
-
.slide-shell {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
.
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
.
|
|
12
|
-
|
|
13
|
-
|
|
4
|
+
.slide-shell {
|
|
5
|
+
@apply min-h-full bg-neutral-950 text-neutral-200 antialiased;
|
|
6
|
+
}
|
|
7
|
+
.slide-grid {
|
|
8
|
+
@apply grid gap-6;
|
|
9
|
+
}
|
|
10
|
+
.h1 {
|
|
11
|
+
@apply text-5xl font-semibold tracking-tight leading-tight;
|
|
12
|
+
}
|
|
13
|
+
.h2 {
|
|
14
|
+
@apply text-2xl font-medium tracking-tight;
|
|
15
|
+
}
|
|
16
|
+
.muted {
|
|
17
|
+
@apply text-neutral-400;
|
|
18
|
+
}
|
|
19
|
+
.accent {
|
|
20
|
+
@apply text-indigo-300;
|
|
21
|
+
}
|
|
22
|
+
.card {
|
|
23
|
+
@apply bg-neutral-900/60 border border-neutral-800 rounded-2xl p-6;
|
|
24
|
+
}
|
|
25
|
+
.badge {
|
|
26
|
+
@apply inline-flex items-center rounded-full border border-neutral-700 px-3 py-1 text-sm text-neutral-300;
|
|
27
|
+
}
|
|
28
|
+
.kpi {
|
|
29
|
+
@apply text-4xl font-semibold tracking-tight;
|
|
30
|
+
}
|
|
14
31
|
}
|
|
15
32
|
</style>
|
|
16
33
|
<div class="slide-shell bg-gradient-to-b from-neutral-950 to-neutral-900 text-neutral-100 px-16 py-16 min-h-screen">
|
|
@@ -50,7 +67,7 @@
|
|
|
50
67
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M20.488 9H15V3.512A9.025 9.025 0 0120.488 9z" />
|
|
51
68
|
</svg>
|
|
52
69
|
</div>
|
|
53
|
-
<h3 class="h2
|
|
70
|
+
<h3 class="h2 font-bold text-gray-700 mb-2">Interactive Bubble Chart</h3>
|
|
54
71
|
<p class="text-gray-600 text-center">This area will contain a dynamic bubble chart visualization</p>
|
|
55
72
|
</div>
|
|
56
73
|
</div>
|
|
@@ -101,7 +118,7 @@
|
|
|
101
118
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" />
|
|
102
119
|
</svg>
|
|
103
120
|
</div>
|
|
104
|
-
<h3 class="h2
|
|
121
|
+
<h3 class="h2 font-bold text-neutral-100">Chart Components</h3>
|
|
105
122
|
</div>
|
|
106
123
|
<div class="grid grid-cols-1 md:grid-cols-3 gap-6">
|
|
107
124
|
<div class="bg-gradient-to-b from-neutral-950 to-neutral-900 rounded-xl p-6 border border-neutral-800">
|
|
@@ -1,16 +1,33 @@
|
|
|
1
|
-
|
|
2
1
|
<!-- Injected cool, minimal theme -->
|
|
3
2
|
<style type="text/tailwindcss">
|
|
4
3
|
@layer utilities {
|
|
5
|
-
.slide-shell {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
.
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
.
|
|
12
|
-
|
|
13
|
-
|
|
4
|
+
.slide-shell {
|
|
5
|
+
@apply min-h-full bg-neutral-950 text-neutral-200 antialiased;
|
|
6
|
+
}
|
|
7
|
+
.slide-grid {
|
|
8
|
+
@apply grid gap-6;
|
|
9
|
+
}
|
|
10
|
+
.h1 {
|
|
11
|
+
@apply text-5xl font-semibold tracking-tight leading-tight;
|
|
12
|
+
}
|
|
13
|
+
.h2 {
|
|
14
|
+
@apply text-2xl font-medium tracking-tight;
|
|
15
|
+
}
|
|
16
|
+
.muted {
|
|
17
|
+
@apply text-neutral-400;
|
|
18
|
+
}
|
|
19
|
+
.accent {
|
|
20
|
+
@apply text-indigo-300;
|
|
21
|
+
}
|
|
22
|
+
.card {
|
|
23
|
+
@apply bg-neutral-900/60 border border-neutral-800 rounded-2xl p-6;
|
|
24
|
+
}
|
|
25
|
+
.badge {
|
|
26
|
+
@apply inline-flex items-center rounded-full border border-neutral-700 px-3 py-1 text-sm text-neutral-300;
|
|
27
|
+
}
|
|
28
|
+
.kpi {
|
|
29
|
+
@apply text-4xl font-semibold tracking-tight;
|
|
30
|
+
}
|
|
14
31
|
}
|
|
15
32
|
</style>
|
|
16
33
|
<div class="slide-shell bg-gradient-to-b from-neutral-950 to-neutral-900 text-neutral-100 px-16 py-16 min-h-screen">
|
|
@@ -24,9 +41,7 @@
|
|
|
24
41
|
<!-- Cash Flow Grid -->
|
|
25
42
|
<div class="grid grid-cols-1 lg:grid-cols-2 gap-8 max-w-6xl mx-auto">
|
|
26
43
|
<!-- Inflows -->
|
|
27
|
-
<section
|
|
28
|
-
class="bg-gradient-to-b from-neutral-950 to-neutral-900 rounded-3xl p-10 text-white shadow transform hover:scale-105 transition-all duration-300"
|
|
29
|
-
>
|
|
44
|
+
<section class="bg-gradient-to-b from-neutral-950 to-neutral-900 rounded-3xl p-10 text-white shadow transform hover:scale-105 transition-all duration-300">
|
|
30
45
|
<div class="flex items-center mb-8">
|
|
31
46
|
<div class="w-16 h-16 bg-white bg-opacity-20 rounded-2xl flex items-center justify-center mr-4">
|
|
32
47
|
<svg class="w-8 h-8" fill="currentColor" viewBox="0 0 20 20">
|
|
@@ -72,11 +87,11 @@
|
|
|
72
87
|
<div class="text-center mt-12">
|
|
73
88
|
<div class="inline-flex items-center bg-white rounded-2xl shadow px-8 py-6">
|
|
74
89
|
<div class="flex items-center">
|
|
75
|
-
<span class="h2
|
|
76
|
-
<span class="h2
|
|
77
|
-
<span class="h2
|
|
78
|
-
<span class="h2
|
|
79
|
-
<span class="h2
|
|
90
|
+
<span class="h2 font-bold text-neutral-200">Inflows</span>
|
|
91
|
+
<span class="h2 font-bold text-gray-400 mx-4">-</span>
|
|
92
|
+
<span class="h2 font-bold text-neutral-200">Outflows</span>
|
|
93
|
+
<span class="h2 font-bold text-gray-400 mx-4">=</span>
|
|
94
|
+
<span class="h2 font-bold text-neutral-200">Net Cash Flow</span>
|
|
80
95
|
</div>
|
|
81
96
|
</div>
|
|
82
97
|
</div>
|
|
@@ -1,16 +1,33 @@
|
|
|
1
|
-
|
|
2
1
|
<!-- Injected cool, minimal theme -->
|
|
3
2
|
<style type="text/tailwindcss">
|
|
4
3
|
@layer utilities {
|
|
5
|
-
.slide-shell {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
.
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
.
|
|
12
|
-
|
|
13
|
-
|
|
4
|
+
.slide-shell {
|
|
5
|
+
@apply min-h-full bg-neutral-950 text-neutral-200 antialiased;
|
|
6
|
+
}
|
|
7
|
+
.slide-grid {
|
|
8
|
+
@apply grid gap-6;
|
|
9
|
+
}
|
|
10
|
+
.h1 {
|
|
11
|
+
@apply text-5xl font-semibold tracking-tight leading-tight;
|
|
12
|
+
}
|
|
13
|
+
.h2 {
|
|
14
|
+
@apply text-2xl font-medium tracking-tight;
|
|
15
|
+
}
|
|
16
|
+
.muted {
|
|
17
|
+
@apply text-neutral-400;
|
|
18
|
+
}
|
|
19
|
+
.accent {
|
|
20
|
+
@apply text-indigo-300;
|
|
21
|
+
}
|
|
22
|
+
.card {
|
|
23
|
+
@apply bg-neutral-900/60 border border-neutral-800 rounded-2xl p-6;
|
|
24
|
+
}
|
|
25
|
+
.badge {
|
|
26
|
+
@apply inline-flex items-center rounded-full border border-neutral-700 px-3 py-1 text-sm text-neutral-300;
|
|
27
|
+
}
|
|
28
|
+
.kpi {
|
|
29
|
+
@apply text-4xl font-semibold tracking-tight;
|
|
30
|
+
}
|
|
14
31
|
}
|
|
15
32
|
</style>
|
|
16
33
|
<div class="slide-shell bg-gradient-to-b from-neutral-950 to-neutral-900 text-neutral-100 px-16 py-16 min-h-screen">
|
|
@@ -59,7 +76,7 @@
|
|
|
59
76
|
/>
|
|
60
77
|
</svg>
|
|
61
78
|
</div>
|
|
62
|
-
<h3 class="h2
|
|
79
|
+
<h3 class="h2 font-bold">Notes</h3>
|
|
63
80
|
</div>
|
|
64
81
|
<p class="text-lg font-light">{{notes}}</p>
|
|
65
82
|
</section>
|
|
@@ -1,16 +1,33 @@
|
|
|
1
|
-
|
|
2
1
|
<!-- Injected cool, minimal theme -->
|
|
3
2
|
<style type="text/tailwindcss">
|
|
4
3
|
@layer utilities {
|
|
5
|
-
.slide-shell {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
.
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
.
|
|
12
|
-
|
|
13
|
-
|
|
4
|
+
.slide-shell {
|
|
5
|
+
@apply min-h-full bg-neutral-950 text-neutral-200 antialiased;
|
|
6
|
+
}
|
|
7
|
+
.slide-grid {
|
|
8
|
+
@apply grid gap-6;
|
|
9
|
+
}
|
|
10
|
+
.h1 {
|
|
11
|
+
@apply text-5xl font-semibold tracking-tight leading-tight;
|
|
12
|
+
}
|
|
13
|
+
.h2 {
|
|
14
|
+
@apply text-2xl font-medium tracking-tight;
|
|
15
|
+
}
|
|
16
|
+
.muted {
|
|
17
|
+
@apply text-neutral-400;
|
|
18
|
+
}
|
|
19
|
+
.accent {
|
|
20
|
+
@apply text-indigo-300;
|
|
21
|
+
}
|
|
22
|
+
.card {
|
|
23
|
+
@apply bg-neutral-900/60 border border-neutral-800 rounded-2xl p-6;
|
|
24
|
+
}
|
|
25
|
+
.badge {
|
|
26
|
+
@apply inline-flex items-center rounded-full border border-neutral-700 px-3 py-1 text-sm text-neutral-300;
|
|
27
|
+
}
|
|
28
|
+
.kpi {
|
|
29
|
+
@apply text-4xl font-semibold tracking-tight;
|
|
30
|
+
}
|
|
14
31
|
}
|
|
15
32
|
</style>
|
|
16
33
|
<div class="slide-shell bg-gradient-to-b from-neutral-950 to-neutral-900 text-neutral-100 px-16 py-16 min-h-screen">
|
|
@@ -89,7 +106,7 @@
|
|
|
89
106
|
|
|
90
107
|
<h2 class="text-3xl font-bold mb-6">Communication Cadence</h2>
|
|
91
108
|
<div class="bg-white bg-opacity-10 rounded-xl p-6">
|
|
92
|
-
<p class="h2
|
|
109
|
+
<p class="h2 leading-relaxed">{{cadence}}</p>
|
|
93
110
|
</div>
|
|
94
111
|
</div>
|
|
95
112
|
{% endif %}
|