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.
Files changed (115) hide show
  1. package/README.md +109 -1
  2. package/html/html2_cool/agendaSlide.html +28 -11
  3. package/html/html2_cool/balanceSheetSlide.html +33 -18
  4. package/html/html2_cool/beforeAfterSlide.html +29 -14
  5. package/html/html2_cool/benchmarkingTableSlide.html +28 -11
  6. package/html/html2_cool/bubbleChartPlaceholderSlide.html +29 -12
  7. package/html/html2_cool/cashFlowSlide.html +33 -18
  8. package/html/html2_cool/changeCurveSlide.html +28 -11
  9. package/html/html2_cool/communicationPlanSlide.html +28 -11
  10. package/html/html2_cool/costStructureSlide.html +29 -12
  11. package/html/html2_cool/customerJourneySlide.html +29 -12
  12. package/html/html2_cool/digitalMaturitySlide.html +32 -13
  13. package/html/html2_cool/driverTreeSlide.html +28 -11
  14. package/html/html2_cool/ecosystemMapSlide.html +28 -11
  15. package/html/html2_cool/executiveSummarySlide.html +28 -11
  16. package/html/html2_cool/funnelSlide.html +29 -12
  17. package/html/html2_cool/ganttSimpleSlide.html +28 -11
  18. package/html/html2_cool/geMcKinseyMatrixSlide.html +31 -12
  19. package/html/html2_cool/heatmapPlaceholderSlide.html +35 -14
  20. package/html/html2_cool/hypothesisSlide.html +30 -13
  21. package/html/html2_cool/innovationFunnelSlide.html +28 -11
  22. package/html/html2_cool/innovationFunnelSlide.html~ +76 -0
  23. package/html/html2_cool/issueTreeSlide.html +28 -11
  24. package/html/html2_cool/marimekkoPlaceholderSlide.html +29 -12
  25. package/html/html2_cool/marketingMixSlide.html +28 -11
  26. package/html/html2_cool/npvSummarySlide.html +28 -11
  27. package/html/html2_cool/okrKpiDashboardSlide.html +28 -11
  28. package/html/html2_cool/partnershipMapSlide.html +28 -11
  29. package/html/html2_cool/pipelineFunnelSlide.html +30 -13
  30. package/html/html2_cool/pricingWaterfallSlide.html +28 -11
  31. package/html/html2_cool/productRoadmapSlide.html +28 -11
  32. package/html/html2_cool/pyramidPrincipleSlide.html +28 -11
  33. package/html/html2_cool/quarterlyRoadmapSlide.html +29 -14
  34. package/html/html2_cool/revenueModelSlide.html +28 -11
  35. package/html/html2_cool/riskMitigationSlide.html +28 -11
  36. package/html/html2_cool/riskMitigationSlide.html~ +51 -0
  37. package/html/html2_cool/salesDashboardSlide.html +29 -12
  38. package/html/html2_cool/salesDashboardSlide.html~ +73 -0
  39. package/html/html2_cool/sectionDividerSlide.html +33 -13
  40. package/html/html2_cool/sectionDividerSlide.html~ +39 -0
  41. package/html/html2_cool/segmentationSlide.html +28 -11
  42. package/html/html2_cool/segmentationSlide.html~ +51 -0
  43. package/html/html2_cool/sensitivityAnalysisSlide.html +28 -11
  44. package/html/html2_cool/sensitivityAnalysisSlide.html~ +97 -0
  45. package/html/html2_cool/shareholderValueTreeSlide.html +28 -11
  46. package/html/html2_cool/shareholderValueTreeSlide.html~ +47 -0
  47. package/html/html2_cool/surveyResultsSlide.html +28 -11
  48. package/html/html2_cool/surveyResultsSlide.html~ +47 -0
  49. package/html/html2_cool/sustainabilityRoadmapSlide.html +29 -14
  50. package/html/html2_cool/sustainabilityRoadmapSlide.html~ +69 -0
  51. package/html/html2_cool/synergyCaptureSlide.html +28 -11
  52. package/html/html2_cool/synergyCaptureSlide.html~ +54 -0
  53. package/html/html2_cool/tamSamSomSlide.html +30 -13
  54. package/html/html2_cool/tamSamSomSlide.html~ +77 -0
  55. package/html/html2_cool/techRoadmapSlide.html +29 -14
  56. package/html/html2_cool/techRoadmapSlide.html~ +69 -0
  57. package/html/html2_cool/thankYouContactSlide.html +38 -16
  58. package/html/html2_cool/thankYouContactSlide.html~ +92 -0
  59. package/html/html2_cool/waterfallSlide.html +29 -12
  60. package/html/html2_cool/waterfallSlide.html~ +62 -0
  61. package/html/html2_cool_v2/agendaSlide.html +84 -46
  62. package/html/html2_cool_v2/balanceSheetSlide.html +145 -103
  63. package/html/html2_cool_v2/beforeAfterSlide.html +128 -88
  64. package/html/html2_cool_v2/benchmarkingTableSlide.html +119 -81
  65. package/html/html2_cool_v2/bubbleChartPlaceholderSlide.html +152 -114
  66. package/html/html2_cool_v2/cashFlowSlide.html +125 -85
  67. package/html/html2_cool_v2/changeCurveSlide.html +110 -72
  68. package/html/html2_cool_v2/communicationPlanSlide.html +131 -93
  69. package/html/html2_cool_v2/costStructureSlide.html +112 -74
  70. package/html/html2_cool_v2/customerJourneySlide.html +119 -81
  71. package/html/html2_cool_v2/digitalMaturitySlide.html +110 -70
  72. package/html/html2_cool_v2/driverTreeSlide.html +142 -99
  73. package/html/html2_cool_v2/ecosystemMapSlide.html +89 -51
  74. package/html/html2_cool_v2/executiveSummarySlide.html +87 -49
  75. package/html/html2_cool_v2/funnelSlide.html +105 -67
  76. package/html/html2_cool_v2/ganttSimpleSlide.html +104 -66
  77. package/html/html2_cool_v2/geMcKinseyMatrixSlide.html +102 -62
  78. package/html/html2_cool_v2/heatmapPlaceholderSlide.html +187 -145
  79. package/html/html2_cool_v2/hypothesisSlide.html +142 -104
  80. package/html/html2_cool_v2/innovationFunnelSlide.html +113 -75
  81. package/html/html2_cool_v2/issueTreeSlide.html +142 -104
  82. package/html/html2_cool_v2/marimekkoPlaceholderSlide.html +162 -124
  83. package/html/html2_cool_v2/marketingMixSlide.html +106 -68
  84. package/html/html2_cool_v2/npvSummarySlide.html +107 -69
  85. package/html/html2_cool_v2/okrKpiDashboardSlide.html +138 -100
  86. package/html/html2_cool_v2/partnershipMapSlide.html +85 -47
  87. package/html/html2_cool_v2/pipelineFunnelSlide.html +127 -89
  88. package/html/html2_cool_v2/pricingWaterfallSlide.html +92 -50
  89. package/html/html2_cool_v2/productRoadmapSlide.html +100 -60
  90. package/html/html2_cool_v2/pyramidPrincipleSlide.html +104 -66
  91. package/html/html2_cool_v2/quarterlyRoadmapSlide.html +105 -67
  92. package/html/html2_cool_v2/revenueModelSlide.html +107 -69
  93. package/html/html2_cool_v2/riskMitigationSlide.html +99 -57
  94. package/html/html2_cool_v2/salesDashboardSlide.html +110 -72
  95. package/html/html2_cool_v2/sectionDividerSlide.html +86 -44
  96. package/html/html2_cool_v2/segmentationSlide.html +95 -57
  97. package/html/html2_cool_v2/sensitivityAnalysisSlide.html +121 -83
  98. package/html/html2_cool_v2/shareholderValueTreeSlide.html +88 -50
  99. package/html/html2_cool_v2/surveyResultsSlide.html +91 -53
  100. package/html/html2_cool_v2/sustainabilityRoadmapSlide.html +105 -67
  101. package/html/html2_cool_v2/synergyCaptureSlide.html +94 -56
  102. package/html/html2_cool_v2/tamSamSomSlide.html +112 -74
  103. package/html/html2_cool_v2/techRoadmapSlide.html +105 -67
  104. package/html/html2_cool_v2/thankYouContactSlide.html +133 -89
  105. package/html/html2_cool_v2/thankYouContactSlide.html~ +116 -0
  106. package/html/html2_cool_v2/waterfallSlide.html +101 -63
  107. package/lib/html_class.d.ts +1 -0
  108. package/lib/html_class.js +109 -48
  109. package/lib/logger.d.ts +49 -0
  110. package/lib/logger.js +142 -0
  111. package/lib/mcp.d.ts +17 -0
  112. package/lib/mcp.js +25 -7
  113. package/lib/utils.js +15 -1
  114. package/package.json +9 -9
  115. 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 { @apply min-h-full bg-neutral-950 text-neutral-200 antialiased; }
6
- .slide-grid { @apply grid gap-6; }
7
- .h1 { @apply text-5xl font-semibold tracking-tight leading-tight; }
8
- .h2 { @apply text-2xl font-medium tracking-tight; }
9
- .muted { @apply text-neutral-400; }
10
- .accent { @apply text-indigo-300; }
11
- .card { @apply bg-neutral-900/60 border border-neutral-800 rounded-2xl p-6; }
12
- .badge { @apply inline-flex items-center rounded-full border border-neutral-700 px-3 py-1 text-sm text-neutral-300; }
13
- .kpi { @apply text-4xl font-semibold tracking-tight; }
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" font-semibold text-gray-800 leading-relaxed break-words">{{ item }}</div>
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 { @apply min-h-full bg-neutral-950 text-neutral-200 antialiased; }
6
- .slide-grid { @apply grid gap-6; }
7
- .h1 { @apply text-5xl font-semibold tracking-tight leading-tight; }
8
- .h2 { @apply text-2xl font-medium tracking-tight; }
9
- .muted { @apply text-neutral-400; }
10
- .accent { @apply text-indigo-300; }
11
- .card { @apply bg-neutral-900/60 border border-neutral-800 rounded-2xl p-6; }
12
- .badge { @apply inline-flex items-center rounded-full border border-neutral-700 px-3 py-1 text-sm text-neutral-300; }
13
- .kpi { @apply text-4xl font-semibold tracking-tight; }
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" font-bold text-neutral-200">Assets</span>
96
- <span class="h2" font-bold text-gray-400 mx-4">=</span>
97
- <span class="h2" font-bold text-neutral-200">Liabilities</span>
98
- <span class="h2" font-bold text-gray-400 mx-4">+</span>
99
- <span class="h2" font-bold text-neutral-200">Equity</span>
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 { @apply min-h-full bg-neutral-950 text-neutral-200 antialiased; }
6
- .slide-grid { @apply grid gap-6; }
7
- .h1 { @apply text-5xl font-semibold tracking-tight leading-tight; }
8
- .h2 { @apply text-2xl font-medium tracking-tight; }
9
- .muted { @apply text-neutral-400; }
10
- .accent { @apply text-indigo-300; }
11
- .card { @apply bg-neutral-900/60 border border-neutral-800 rounded-2xl p-6; }
12
- .badge { @apply inline-flex items-center rounded-full border border-neutral-700 px-3 py-1 text-sm text-neutral-300; }
13
- .kpi { @apply text-4xl font-semibold tracking-tight; }
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" font-bold">Transformation Impact</span>
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 { @apply min-h-full bg-neutral-950 text-neutral-200 antialiased; }
6
- .slide-grid { @apply grid gap-6; }
7
- .h1 { @apply text-5xl font-semibold tracking-tight leading-tight; }
8
- .h2 { @apply text-2xl font-medium tracking-tight; }
9
- .muted { @apply text-neutral-400; }
10
- .accent { @apply text-indigo-300; }
11
- .card { @apply bg-neutral-900/60 border border-neutral-800 rounded-2xl p-6; }
12
- .badge { @apply inline-flex items-center rounded-full border border-neutral-700 px-3 py-1 text-sm text-neutral-300; }
13
- .kpi { @apply text-4xl font-semibold tracking-tight; }
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" font-bold">Competitive Benchmarking Analysis</span>
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 { @apply min-h-full bg-neutral-950 text-neutral-200 antialiased; }
6
- .slide-grid { @apply grid gap-6; }
7
- .h1 { @apply text-5xl font-semibold tracking-tight leading-tight; }
8
- .h2 { @apply text-2xl font-medium tracking-tight; }
9
- .muted { @apply text-neutral-400; }
10
- .accent { @apply text-indigo-300; }
11
- .card { @apply bg-neutral-900/60 border border-neutral-800 rounded-2xl p-6; }
12
- .badge { @apply inline-flex items-center rounded-full border border-neutral-700 px-3 py-1 text-sm text-neutral-300; }
13
- .kpi { @apply text-4xl font-semibold tracking-tight; }
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" font-bold text-gray-700 mb-2">Interactive Bubble Chart</h3>
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" font-bold text-neutral-100">Chart Components</h3>
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 { @apply min-h-full bg-neutral-950 text-neutral-200 antialiased; }
6
- .slide-grid { @apply grid gap-6; }
7
- .h1 { @apply text-5xl font-semibold tracking-tight leading-tight; }
8
- .h2 { @apply text-2xl font-medium tracking-tight; }
9
- .muted { @apply text-neutral-400; }
10
- .accent { @apply text-indigo-300; }
11
- .card { @apply bg-neutral-900/60 border border-neutral-800 rounded-2xl p-6; }
12
- .badge { @apply inline-flex items-center rounded-full border border-neutral-700 px-3 py-1 text-sm text-neutral-300; }
13
- .kpi { @apply text-4xl font-semibold tracking-tight; }
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" font-bold text-neutral-200">Inflows</span>
76
- <span class="h2" font-bold text-gray-400 mx-4">-</span>
77
- <span class="h2" font-bold text-neutral-200">Outflows</span>
78
- <span class="h2" font-bold text-gray-400 mx-4">=</span>
79
- <span class="h2" font-bold text-neutral-200">Net Cash Flow</span>
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 { @apply min-h-full bg-neutral-950 text-neutral-200 antialiased; }
6
- .slide-grid { @apply grid gap-6; }
7
- .h1 { @apply text-5xl font-semibold tracking-tight leading-tight; }
8
- .h2 { @apply text-2xl font-medium tracking-tight; }
9
- .muted { @apply text-neutral-400; }
10
- .accent { @apply text-indigo-300; }
11
- .card { @apply bg-neutral-900/60 border border-neutral-800 rounded-2xl p-6; }
12
- .badge { @apply inline-flex items-center rounded-full border border-neutral-700 px-3 py-1 text-sm text-neutral-300; }
13
- .kpi { @apply text-4xl font-semibold tracking-tight; }
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" font-bold">Notes</h3>
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 { @apply min-h-full bg-neutral-950 text-neutral-200 antialiased; }
6
- .slide-grid { @apply grid gap-6; }
7
- .h1 { @apply text-5xl font-semibold tracking-tight leading-tight; }
8
- .h2 { @apply text-2xl font-medium tracking-tight; }
9
- .muted { @apply text-neutral-400; }
10
- .accent { @apply text-indigo-300; }
11
- .card { @apply bg-neutral-900/60 border border-neutral-800 rounded-2xl p-6; }
12
- .badge { @apply inline-flex items-center rounded-full border border-neutral-700 px-3 py-1 text-sm text-neutral-300; }
13
- .kpi { @apply text-4xl font-semibold tracking-tight; }
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" leading-relaxed">{{cadence}}</p>
109
+ <p class="h2 leading-relaxed">{{cadence}}</p>
93
110
  </div>
94
111
  </div>
95
112
  {% endif %}