portable-agent-layer 0.30.1 → 0.32.0
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/assets/skills/consulting-report/SKILL.md +74 -74
- package/assets/skills/consulting-report/demo/app/globals.css +459 -0
- package/assets/skills/consulting-report/demo/app/layout.tsx +32 -0
- package/assets/skills/consulting-report/demo/app/page.tsx +302 -0
- package/assets/skills/consulting-report/demo/bun.lock +240 -0
- package/assets/skills/consulting-report/demo/components/callout.tsx +13 -0
- package/assets/skills/consulting-report/demo/components/comparison-table.tsx +40 -0
- package/assets/skills/consulting-report/demo/components/cover-page.tsx +34 -0
- package/assets/skills/consulting-report/demo/components/exhibit.tsx +21 -0
- package/assets/skills/consulting-report/demo/components/finding-card.tsx +28 -0
- package/assets/skills/consulting-report/demo/components/quote-block.tsx +17 -0
- package/assets/skills/consulting-report/demo/components/recommendation-card.tsx +52 -0
- package/assets/skills/consulting-report/demo/components/section.tsx +17 -0
- package/assets/skills/consulting-report/demo/components/severity-badge.tsx +19 -0
- package/assets/skills/consulting-report/demo/components/stat-grid.tsx +26 -0
- package/assets/skills/consulting-report/demo/components/table-of-contents.tsx +27 -0
- package/assets/skills/consulting-report/demo/components/timeline.tsx +20 -0
- package/assets/skills/consulting-report/demo/lib/report-data.ts +247 -0
- package/assets/skills/consulting-report/demo/lib/utils.ts +6 -0
- package/assets/skills/consulting-report/demo/next.config.js +9 -0
- package/assets/skills/consulting-report/demo/package.json +27 -0
- package/assets/skills/consulting-report/demo/postcss.config.mjs +5 -0
- package/assets/skills/consulting-report/demo/tsconfig.json +41 -0
- package/assets/skills/consulting-report/template/app/globals.css +459 -0
- package/assets/skills/consulting-report/template/app/layout.tsx +32 -0
- package/assets/skills/consulting-report/template/app/page.tsx +282 -0
- package/assets/skills/consulting-report/template/bun.lock +240 -0
- package/assets/skills/consulting-report/template/components/callout.tsx +13 -0
- package/assets/skills/consulting-report/template/components/comparison-table.tsx +40 -0
- package/assets/skills/consulting-report/template/components/cover-page.tsx +34 -0
- package/assets/skills/consulting-report/template/components/exhibit.tsx +21 -0
- package/assets/skills/consulting-report/template/components/finding-card.tsx +28 -0
- package/assets/skills/consulting-report/template/components/quote-block.tsx +17 -0
- package/assets/skills/consulting-report/template/components/recommendation-card.tsx +52 -0
- package/assets/skills/consulting-report/template/components/section.tsx +17 -0
- package/assets/skills/consulting-report/template/components/severity-badge.tsx +19 -0
- package/assets/skills/consulting-report/template/components/stat-grid.tsx +26 -0
- package/assets/skills/consulting-report/template/components/table-of-contents.tsx +27 -0
- package/assets/skills/consulting-report/template/components/timeline.tsx +20 -0
- package/assets/skills/consulting-report/template/lib/report-data.ts +176 -0
- package/assets/skills/consulting-report/template/lib/utils.ts +6 -0
- package/assets/skills/consulting-report/template/next.config.js +9 -0
- package/assets/skills/consulting-report/template/package.json +27 -0
- package/assets/skills/consulting-report/template/postcss.config.mjs +5 -0
- package/assets/skills/consulting-report/template/tsconfig.json +27 -0
- package/assets/skills/consulting-report/tools/dev.ts +47 -0
- package/assets/skills/consulting-report/tools/generate-pdf.ts +140 -408
- package/assets/skills/consulting-report/tools/scaffold.ts +83 -48
- package/assets/skills/presentation/SKILL.md +1 -1
- package/package.json +9 -9
- package/assets/skills/consulting-report/demo/content/current-state.md +0 -33
- package/assets/skills/consulting-report/demo/content/executive-summary.md +0 -19
- package/assets/skills/consulting-report/demo/content/report-data.ts +0 -101
- package/assets/skills/consulting-report/demo/diagrams/.gitkeep +0 -0
- package/assets/skills/consulting-report/template/README.md +0 -28
- package/assets/skills/consulting-report/template/content/executive-summary.md +0 -19
- package/assets/skills/consulting-report/template/content/report-data.ts +0 -59
- package/assets/skills/consulting-report/template/diagrams/.gitkeep +0 -0
|
@@ -0,0 +1,282 @@
|
|
|
1
|
+
import { AlertTriangle, CheckCircle2, Lightbulb, Target } from "lucide-react";
|
|
2
|
+
import { Callout } from "@/components/callout";
|
|
3
|
+
import { ComparisonTable } from "@/components/comparison-table";
|
|
4
|
+
import { CoverPage } from "@/components/cover-page";
|
|
5
|
+
import { Exhibit } from "@/components/exhibit";
|
|
6
|
+
import { FindingCard } from "@/components/finding-card";
|
|
7
|
+
import { RecommendationCard } from "@/components/recommendation-card";
|
|
8
|
+
import { Section } from "@/components/section";
|
|
9
|
+
import { StatGrid } from "@/components/stat-grid";
|
|
10
|
+
import { TableOfContents } from "@/components/table-of-contents";
|
|
11
|
+
import { Timeline } from "@/components/timeline";
|
|
12
|
+
import { reportData } from "@/lib/report-data";
|
|
13
|
+
|
|
14
|
+
const sections = [
|
|
15
|
+
{ id: "executive-summary", title: "Executive Summary" },
|
|
16
|
+
{ id: "situation-assessment", title: "Situation Assessment" },
|
|
17
|
+
{ id: "key-findings", title: "Key Findings" },
|
|
18
|
+
{ id: "risk-analysis", title: "Risk Analysis" },
|
|
19
|
+
{ id: "strategic-opportunity", title: "Strategic Opportunity" },
|
|
20
|
+
{ id: "recommendations", title: "Strategic Recommendations" },
|
|
21
|
+
{ id: "target-state", title: "Target State Vision" },
|
|
22
|
+
{ id: "roadmap", title: "Implementation Roadmap" },
|
|
23
|
+
{ id: "call-to-action", title: "Call to Action" },
|
|
24
|
+
];
|
|
25
|
+
|
|
26
|
+
export default function ReportPage() {
|
|
27
|
+
const data = reportData;
|
|
28
|
+
|
|
29
|
+
return (
|
|
30
|
+
<div>
|
|
31
|
+
<CoverPage
|
|
32
|
+
clientName={data.clientName}
|
|
33
|
+
reportTitle={data.reportTitle}
|
|
34
|
+
reportDate={data.reportDate}
|
|
35
|
+
classification={data.classification}
|
|
36
|
+
consultancyName={data.consultancyName}
|
|
37
|
+
preTitle={data.preTitle}
|
|
38
|
+
/>
|
|
39
|
+
|
|
40
|
+
<div className="report-container">
|
|
41
|
+
<TableOfContents items={sections} />
|
|
42
|
+
|
|
43
|
+
<Section id="executive-summary" title="Executive Summary">
|
|
44
|
+
<p className="text-lg mb-6">{data.executiveSummary.context}</p>
|
|
45
|
+
|
|
46
|
+
<StatGrid
|
|
47
|
+
stats={[
|
|
48
|
+
{
|
|
49
|
+
value: String(data.executiveSummary.methodology.interviewCount),
|
|
50
|
+
label: "Interviews",
|
|
51
|
+
},
|
|
52
|
+
{ value: "—", label: "Headline metric", caption: "replace with your own" },
|
|
53
|
+
{ value: "—", label: "Headline metric", caption: "replace with your own" },
|
|
54
|
+
]}
|
|
55
|
+
/>
|
|
56
|
+
|
|
57
|
+
<Exhibit number={1} title="Roles Interviewed">
|
|
58
|
+
<div className="grid grid-cols-2 gap-1">
|
|
59
|
+
{data.executiveSummary.methodology.roles.map((role) => (
|
|
60
|
+
<p key={role} className="text-sm text-muted">
|
|
61
|
+
{role}
|
|
62
|
+
</p>
|
|
63
|
+
))}
|
|
64
|
+
</div>
|
|
65
|
+
</Exhibit>
|
|
66
|
+
|
|
67
|
+
<Exhibit number={2} title="Key Findings Summary">
|
|
68
|
+
<ul className="space-y-2">
|
|
69
|
+
{data.executiveSummary.keyFindings.map((finding, i) => (
|
|
70
|
+
<li key={finding} className="flex items-start gap-3">
|
|
71
|
+
<span className="text-primary font-bold font-sans">{i + 1}.</span>
|
|
72
|
+
<span>{finding}</span>
|
|
73
|
+
</li>
|
|
74
|
+
))}
|
|
75
|
+
</ul>
|
|
76
|
+
</Exhibit>
|
|
77
|
+
|
|
78
|
+
<Callout label="Primary Recommendation">
|
|
79
|
+
{data.executiveSummary.primaryRecommendation}
|
|
80
|
+
</Callout>
|
|
81
|
+
|
|
82
|
+
<h3 className="text-lg font-semibold mt-6 mb-3">Expected Outcomes</h3>
|
|
83
|
+
<ul className="space-y-2">
|
|
84
|
+
{data.executiveSummary.expectedOutcomes.map((outcome) => (
|
|
85
|
+
<li key={outcome} className="flex items-center gap-3">
|
|
86
|
+
<CheckCircle2 className="h-5 w-5 text-success shrink-0" />
|
|
87
|
+
<span>{outcome}</span>
|
|
88
|
+
</li>
|
|
89
|
+
))}
|
|
90
|
+
</ul>
|
|
91
|
+
</Section>
|
|
92
|
+
|
|
93
|
+
<Section id="situation-assessment" title="Situation Assessment">
|
|
94
|
+
<div className="grid gap-6">
|
|
95
|
+
<div>
|
|
96
|
+
<h3 className="text-lg font-semibold mb-2 flex items-center gap-2">
|
|
97
|
+
<Target className="h-5 w-5 text-primary" />
|
|
98
|
+
What You Asked For
|
|
99
|
+
</h3>
|
|
100
|
+
<p>{data.situationAssessment.clientAsk}</p>
|
|
101
|
+
</div>
|
|
102
|
+
<div>
|
|
103
|
+
<h3 className="text-lg font-semibold mb-2">Current State</h3>
|
|
104
|
+
<p>{data.situationAssessment.currentState}</p>
|
|
105
|
+
</div>
|
|
106
|
+
<div>
|
|
107
|
+
<h3 className="text-lg font-semibold mb-2">Why This Matters Now</h3>
|
|
108
|
+
<p>{data.situationAssessment.whyNow}</p>
|
|
109
|
+
</div>
|
|
110
|
+
</div>
|
|
111
|
+
</Section>
|
|
112
|
+
|
|
113
|
+
<Section id="key-findings" title="Key Findings">
|
|
114
|
+
<p className="text-muted mb-6">
|
|
115
|
+
Our analysis identified {data.findings.length} significant findings that
|
|
116
|
+
require attention. Each finding is supported by evidence gathered during our
|
|
117
|
+
assessment.
|
|
118
|
+
</p>
|
|
119
|
+
<div className="space-y-4">
|
|
120
|
+
{data.findings.map((finding, index) => (
|
|
121
|
+
<FindingCard key={finding.id} finding={finding} index={index} />
|
|
122
|
+
))}
|
|
123
|
+
</div>
|
|
124
|
+
</Section>
|
|
125
|
+
|
|
126
|
+
<Section id="risk-analysis" title="Risk Analysis">
|
|
127
|
+
<div className="grid gap-6">
|
|
128
|
+
<Exhibit number={3} title="Existential Risks">
|
|
129
|
+
<div className="space-y-3">
|
|
130
|
+
{data.riskAnalysis.existentialRisks.map((risk) => (
|
|
131
|
+
<div
|
|
132
|
+
key={risk}
|
|
133
|
+
className="flex items-start gap-3 p-3 bg-destructive/5 rounded-lg border border-destructive/20"
|
|
134
|
+
>
|
|
135
|
+
<AlertTriangle className="h-5 w-5 text-destructive shrink-0 mt-0.5" />
|
|
136
|
+
<span>{risk}</span>
|
|
137
|
+
</div>
|
|
138
|
+
))}
|
|
139
|
+
</div>
|
|
140
|
+
</Exhibit>
|
|
141
|
+
|
|
142
|
+
<Exhibit number={4} title="Competitive Threats">
|
|
143
|
+
<ul className="space-y-2">
|
|
144
|
+
{data.riskAnalysis.competitiveThreats.map((threat, i) => (
|
|
145
|
+
<li key={threat} className="flex items-start gap-3">
|
|
146
|
+
<span className="text-warning font-bold font-sans">{i + 1}.</span>
|
|
147
|
+
<span>{threat}</span>
|
|
148
|
+
</li>
|
|
149
|
+
))}
|
|
150
|
+
</ul>
|
|
151
|
+
</Exhibit>
|
|
152
|
+
|
|
153
|
+
<div>
|
|
154
|
+
<h3 className="text-lg font-semibold mb-2">Timeline Pressures</h3>
|
|
155
|
+
<p>{data.riskAnalysis.timelinePressures}</p>
|
|
156
|
+
</div>
|
|
157
|
+
</div>
|
|
158
|
+
</Section>
|
|
159
|
+
|
|
160
|
+
<Section id="strategic-opportunity" title="Strategic Opportunity">
|
|
161
|
+
<Callout label="The Path Forward">{data.strategicOpportunity.goodNews}</Callout>
|
|
162
|
+
|
|
163
|
+
<h3 className="text-lg font-semibold mt-6 mb-3 flex items-center gap-2">
|
|
164
|
+
<Lightbulb className="h-5 w-5 text-accent" />
|
|
165
|
+
What This Requires
|
|
166
|
+
</h3>
|
|
167
|
+
<ul className="space-y-3">
|
|
168
|
+
{data.strategicOpportunity.requirements.map((req, i) => (
|
|
169
|
+
<li
|
|
170
|
+
key={req}
|
|
171
|
+
className="flex items-start gap-3 p-3 bg-accent/5 rounded-lg border border-accent/20"
|
|
172
|
+
>
|
|
173
|
+
<span className="text-accent font-bold font-sans">{i + 1}.</span>
|
|
174
|
+
<span>{req}</span>
|
|
175
|
+
</li>
|
|
176
|
+
))}
|
|
177
|
+
</ul>
|
|
178
|
+
</Section>
|
|
179
|
+
|
|
180
|
+
<Section id="recommendations" title="Strategic Recommendations">
|
|
181
|
+
<p className="text-muted mb-6">
|
|
182
|
+
Recommendations are prioritized by urgency and impact.
|
|
183
|
+
</p>
|
|
184
|
+
<div className="space-y-4">
|
|
185
|
+
{data.recommendations.map((rec, index) => (
|
|
186
|
+
<RecommendationCard key={rec.id} recommendation={rec} index={index} />
|
|
187
|
+
))}
|
|
188
|
+
</div>
|
|
189
|
+
</Section>
|
|
190
|
+
|
|
191
|
+
<Section id="target-state" title="Target State Vision">
|
|
192
|
+
<p className="text-lg mb-6">{data.targetState.description}</p>
|
|
193
|
+
|
|
194
|
+
<ComparisonTable
|
|
195
|
+
leftLabel="Today"
|
|
196
|
+
rightLabel="Target"
|
|
197
|
+
rows={[
|
|
198
|
+
{
|
|
199
|
+
metric: "Replace with metric",
|
|
200
|
+
left: "Current state value",
|
|
201
|
+
right: "Target state value",
|
|
202
|
+
},
|
|
203
|
+
]}
|
|
204
|
+
/>
|
|
205
|
+
|
|
206
|
+
<Exhibit number={5} title="Key Capabilities Enabled">
|
|
207
|
+
<div className="grid md:grid-cols-3 gap-4">
|
|
208
|
+
{data.targetState.keyCapabilities.map((capability) => (
|
|
209
|
+
<div
|
|
210
|
+
key={capability}
|
|
211
|
+
className="p-4 bg-success/5 rounded-lg border border-success/20 text-center"
|
|
212
|
+
>
|
|
213
|
+
<CheckCircle2 className="h-8 w-8 text-success mx-auto mb-2" />
|
|
214
|
+
<span className="font-medium">{capability}</span>
|
|
215
|
+
</div>
|
|
216
|
+
))}
|
|
217
|
+
</div>
|
|
218
|
+
</Exhibit>
|
|
219
|
+
|
|
220
|
+
<h3 className="text-lg font-semibold mt-6 mb-3">Success Metrics</h3>
|
|
221
|
+
<ul className="space-y-2">
|
|
222
|
+
{data.targetState.successMetrics.map((metric) => (
|
|
223
|
+
<li key={metric} className="flex items-center gap-3">
|
|
224
|
+
<span className="w-2 h-2 bg-primary rounded-full" />
|
|
225
|
+
<span>{metric}</span>
|
|
226
|
+
</li>
|
|
227
|
+
))}
|
|
228
|
+
</ul>
|
|
229
|
+
</Section>
|
|
230
|
+
|
|
231
|
+
<Section id="roadmap" title="Implementation Roadmap">
|
|
232
|
+
<p className="text-muted mb-6">
|
|
233
|
+
The transformation should be executed in phases, with clear milestones and
|
|
234
|
+
decision points.
|
|
235
|
+
</p>
|
|
236
|
+
<Exhibit number={6} title="Phased Implementation Plan">
|
|
237
|
+
<Timeline phases={data.roadmap} />
|
|
238
|
+
</Exhibit>
|
|
239
|
+
</Section>
|
|
240
|
+
|
|
241
|
+
<Section id="call-to-action" title="Call to Action">
|
|
242
|
+
<div className="bg-primary/5 rounded-2xl p-8 border border-primary/20">
|
|
243
|
+
<h3 className="text-xl font-semibold mb-4">Immediate Next Steps</h3>
|
|
244
|
+
<ol className="space-y-3 mb-6">
|
|
245
|
+
{data.callToAction.immediateSteps.map((step, i) => (
|
|
246
|
+
<li key={step} className="flex items-start gap-3">
|
|
247
|
+
<span className="shrink-0 w-7 h-7 rounded-full bg-primary text-white flex items-center justify-center font-bold text-sm">
|
|
248
|
+
{i + 1}
|
|
249
|
+
</span>
|
|
250
|
+
<span className="pt-0.5">{step}</span>
|
|
251
|
+
</li>
|
|
252
|
+
))}
|
|
253
|
+
</ol>
|
|
254
|
+
|
|
255
|
+
<h3 className="text-xl font-semibold mb-4">Decision Points Required</h3>
|
|
256
|
+
<ul className="space-y-2 mb-6">
|
|
257
|
+
{data.callToAction.decisionPoints.map((point) => (
|
|
258
|
+
<li key={point} className="flex items-center gap-3">
|
|
259
|
+
<span className="w-2 h-2 bg-accent rounded-full" />
|
|
260
|
+
<span>{point}</span>
|
|
261
|
+
</li>
|
|
262
|
+
))}
|
|
263
|
+
</ul>
|
|
264
|
+
|
|
265
|
+
<Callout label="Commitment Required">
|
|
266
|
+
{data.callToAction.commitmentRequired}
|
|
267
|
+
</Callout>
|
|
268
|
+
</div>
|
|
269
|
+
</Section>
|
|
270
|
+
|
|
271
|
+
<div className="mt-12 pt-8 border-t border-border text-center text-sm text-muted">
|
|
272
|
+
<p className="font-semibold text-foreground mb-1">{data.classification}</p>
|
|
273
|
+
<p>
|
|
274
|
+
This report was prepared for {data.clientName} and contains confidential
|
|
275
|
+
information.
|
|
276
|
+
</p>
|
|
277
|
+
<p className="mt-2">{data.reportDate}</p>
|
|
278
|
+
</div>
|
|
279
|
+
</div>
|
|
280
|
+
</div>
|
|
281
|
+
);
|
|
282
|
+
}
|
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
{
|
|
2
|
+
"lockfileVersion": 1,
|
|
3
|
+
"workspaces": {
|
|
4
|
+
"": {
|
|
5
|
+
"name": "consulting-report",
|
|
6
|
+
"dependencies": {
|
|
7
|
+
"clsx": "2.1.1",
|
|
8
|
+
"lucide-react": "1.14.0",
|
|
9
|
+
"next": "16.2.4",
|
|
10
|
+
"react": "19.2.5",
|
|
11
|
+
"react-dom": "19.2.5",
|
|
12
|
+
"tailwind-merge": "3.5.0",
|
|
13
|
+
},
|
|
14
|
+
"devDependencies": {
|
|
15
|
+
"@tailwindcss/postcss": "4.2.4",
|
|
16
|
+
"@types/node": "25.6.0",
|
|
17
|
+
"@types/react": "19.2.14",
|
|
18
|
+
"@types/react-dom": "19.2.3",
|
|
19
|
+
"postcss": "8.5.13",
|
|
20
|
+
"tailwindcss": "4.2.4",
|
|
21
|
+
"typescript": "6.0.3",
|
|
22
|
+
},
|
|
23
|
+
},
|
|
24
|
+
},
|
|
25
|
+
"packages": {
|
|
26
|
+
"@alloc/quick-lru": ["@alloc/quick-lru@5.2.0", "", {}, "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw=="],
|
|
27
|
+
|
|
28
|
+
"@emnapi/runtime": ["@emnapi/runtime@1.10.0", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA=="],
|
|
29
|
+
|
|
30
|
+
"@img/colour": ["@img/colour@1.1.0", "", {}, "sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ=="],
|
|
31
|
+
|
|
32
|
+
"@img/sharp-darwin-arm64": ["@img/sharp-darwin-arm64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-arm64": "1.2.4" }, "os": "darwin", "cpu": "arm64" }, "sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w=="],
|
|
33
|
+
|
|
34
|
+
"@img/sharp-darwin-x64": ["@img/sharp-darwin-x64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-x64": "1.2.4" }, "os": "darwin", "cpu": "x64" }, "sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw=="],
|
|
35
|
+
|
|
36
|
+
"@img/sharp-libvips-darwin-arm64": ["@img/sharp-libvips-darwin-arm64@1.2.4", "", { "os": "darwin", "cpu": "arm64" }, "sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g=="],
|
|
37
|
+
|
|
38
|
+
"@img/sharp-libvips-darwin-x64": ["@img/sharp-libvips-darwin-x64@1.2.4", "", { "os": "darwin", "cpu": "x64" }, "sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg=="],
|
|
39
|
+
|
|
40
|
+
"@img/sharp-libvips-linux-arm": ["@img/sharp-libvips-linux-arm@1.2.4", "", { "os": "linux", "cpu": "arm" }, "sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A=="],
|
|
41
|
+
|
|
42
|
+
"@img/sharp-libvips-linux-arm64": ["@img/sharp-libvips-linux-arm64@1.2.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw=="],
|
|
43
|
+
|
|
44
|
+
"@img/sharp-libvips-linux-ppc64": ["@img/sharp-libvips-linux-ppc64@1.2.4", "", { "os": "linux", "cpu": "ppc64" }, "sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA=="],
|
|
45
|
+
|
|
46
|
+
"@img/sharp-libvips-linux-riscv64": ["@img/sharp-libvips-linux-riscv64@1.2.4", "", { "os": "linux", "cpu": "none" }, "sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA=="],
|
|
47
|
+
|
|
48
|
+
"@img/sharp-libvips-linux-s390x": ["@img/sharp-libvips-linux-s390x@1.2.4", "", { "os": "linux", "cpu": "s390x" }, "sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ=="],
|
|
49
|
+
|
|
50
|
+
"@img/sharp-libvips-linux-x64": ["@img/sharp-libvips-linux-x64@1.2.4", "", { "os": "linux", "cpu": "x64" }, "sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw=="],
|
|
51
|
+
|
|
52
|
+
"@img/sharp-libvips-linuxmusl-arm64": ["@img/sharp-libvips-linuxmusl-arm64@1.2.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw=="],
|
|
53
|
+
|
|
54
|
+
"@img/sharp-libvips-linuxmusl-x64": ["@img/sharp-libvips-linuxmusl-x64@1.2.4", "", { "os": "linux", "cpu": "x64" }, "sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg=="],
|
|
55
|
+
|
|
56
|
+
"@img/sharp-linux-arm": ["@img/sharp-linux-arm@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm": "1.2.4" }, "os": "linux", "cpu": "arm" }, "sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw=="],
|
|
57
|
+
|
|
58
|
+
"@img/sharp-linux-arm64": ["@img/sharp-linux-arm64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm64": "1.2.4" }, "os": "linux", "cpu": "arm64" }, "sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg=="],
|
|
59
|
+
|
|
60
|
+
"@img/sharp-linux-ppc64": ["@img/sharp-linux-ppc64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-ppc64": "1.2.4" }, "os": "linux", "cpu": "ppc64" }, "sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA=="],
|
|
61
|
+
|
|
62
|
+
"@img/sharp-linux-riscv64": ["@img/sharp-linux-riscv64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-riscv64": "1.2.4" }, "os": "linux", "cpu": "none" }, "sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw=="],
|
|
63
|
+
|
|
64
|
+
"@img/sharp-linux-s390x": ["@img/sharp-linux-s390x@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-s390x": "1.2.4" }, "os": "linux", "cpu": "s390x" }, "sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg=="],
|
|
65
|
+
|
|
66
|
+
"@img/sharp-linux-x64": ["@img/sharp-linux-x64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-x64": "1.2.4" }, "os": "linux", "cpu": "x64" }, "sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ=="],
|
|
67
|
+
|
|
68
|
+
"@img/sharp-linuxmusl-arm64": ["@img/sharp-linuxmusl-arm64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-arm64": "1.2.4" }, "os": "linux", "cpu": "arm64" }, "sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg=="],
|
|
69
|
+
|
|
70
|
+
"@img/sharp-linuxmusl-x64": ["@img/sharp-linuxmusl-x64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-x64": "1.2.4" }, "os": "linux", "cpu": "x64" }, "sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q=="],
|
|
71
|
+
|
|
72
|
+
"@img/sharp-wasm32": ["@img/sharp-wasm32@0.34.5", "", { "dependencies": { "@emnapi/runtime": "^1.7.0" }, "cpu": "none" }, "sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw=="],
|
|
73
|
+
|
|
74
|
+
"@img/sharp-win32-arm64": ["@img/sharp-win32-arm64@0.34.5", "", { "os": "win32", "cpu": "arm64" }, "sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g=="],
|
|
75
|
+
|
|
76
|
+
"@img/sharp-win32-ia32": ["@img/sharp-win32-ia32@0.34.5", "", { "os": "win32", "cpu": "ia32" }, "sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg=="],
|
|
77
|
+
|
|
78
|
+
"@img/sharp-win32-x64": ["@img/sharp-win32-x64@0.34.5", "", { "os": "win32", "cpu": "x64" }, "sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw=="],
|
|
79
|
+
|
|
80
|
+
"@jridgewell/gen-mapping": ["@jridgewell/gen-mapping@0.3.13", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0", "@jridgewell/trace-mapping": "^0.3.24" } }, "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA=="],
|
|
81
|
+
|
|
82
|
+
"@jridgewell/remapping": ["@jridgewell/remapping@2.3.5", "", { "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.24" } }, "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ=="],
|
|
83
|
+
|
|
84
|
+
"@jridgewell/resolve-uri": ["@jridgewell/resolve-uri@3.1.2", "", {}, "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw=="],
|
|
85
|
+
|
|
86
|
+
"@jridgewell/sourcemap-codec": ["@jridgewell/sourcemap-codec@1.5.5", "", {}, "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og=="],
|
|
87
|
+
|
|
88
|
+
"@jridgewell/trace-mapping": ["@jridgewell/trace-mapping@0.3.31", "", { "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw=="],
|
|
89
|
+
|
|
90
|
+
"@next/env": ["@next/env@16.2.4", "", {}, "sha512-dKkkOzOSwFYe5RX6y26fZgkSpVAlIOJKQHIiydQcrWH6y/97+RceSOAdjZ14Qa3zLduVUy0TXcn+EiM6t4rPgw=="],
|
|
91
|
+
|
|
92
|
+
"@next/swc-darwin-arm64": ["@next/swc-darwin-arm64@16.2.4", "", { "os": "darwin", "cpu": "arm64" }, "sha512-OXTFFox5EKN1Ym08vfrz+OXxmCcEjT4SFMbNRsWZE99dMqt2Kcusl5MqPXcW232RYkMLQTy0hqgAMEsfEd/l2A=="],
|
|
93
|
+
|
|
94
|
+
"@next/swc-darwin-x64": ["@next/swc-darwin-x64@16.2.4", "", { "os": "darwin", "cpu": "x64" }, "sha512-XhpVnUfmYWvD3YrXu55XdcAkQtOnvaI6wtQa8fuF5fGoKoxIUZ0kWPtcOfqJEWngFF/lOS9l3+O9CcownhiQxQ=="],
|
|
95
|
+
|
|
96
|
+
"@next/swc-linux-arm64-gnu": ["@next/swc-linux-arm64-gnu@16.2.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-Mx/tjlNA3G8kg14QvuGAJ4xBwPk1tUHq56JxZ8CXnZwz1Etz714soCEzGQQzVMz4bEnGPowzkV6Xrp6wAkEWOQ=="],
|
|
97
|
+
|
|
98
|
+
"@next/swc-linux-arm64-musl": ["@next/swc-linux-arm64-musl@16.2.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-iVMMp14514u7Nup2umQS03nT/bN9HurK8ufylC3FZNykrwjtx7V1A7+4kvhbDSCeonTVqV3Txnv0Lu+m2oDXNg=="],
|
|
99
|
+
|
|
100
|
+
"@next/swc-linux-x64-gnu": ["@next/swc-linux-x64-gnu@16.2.4", "", { "os": "linux", "cpu": "x64" }, "sha512-EZOvm1aQWgnI/N/xcWOlnS3RQBk0VtVav5Zo7n4p0A7UKyTDx047k8opDbXgBpHl4CulRqRfbw3QrX2w5UOXMQ=="],
|
|
101
|
+
|
|
102
|
+
"@next/swc-linux-x64-musl": ["@next/swc-linux-x64-musl@16.2.4", "", { "os": "linux", "cpu": "x64" }, "sha512-h9FxsngCm9cTBf71AR4fGznDEDx1hS7+kSEiIRjq5kO1oXWm07DxVGZjCvk0SGx7TSjlUqhI8oOyz7NfwAdPoA=="],
|
|
103
|
+
|
|
104
|
+
"@next/swc-win32-arm64-msvc": ["@next/swc-win32-arm64-msvc@16.2.4", "", { "os": "win32", "cpu": "arm64" }, "sha512-3NdJV5OXMSOeJYijX+bjaLge3mJBlh4ybydbT4GFoB/2hAojWHtMhl3CYlYoMrjPuodp0nzFVi4Tj2+WaMg+Ow=="],
|
|
105
|
+
|
|
106
|
+
"@next/swc-win32-x64-msvc": ["@next/swc-win32-x64-msvc@16.2.4", "", { "os": "win32", "cpu": "x64" }, "sha512-kMVGgsqhO5YTYODD9IPGGhA6iprWidQckK3LmPeW08PIFENRmgfb4MjXHO+p//d+ts2rpjvK5gXWzXSMrPl9cw=="],
|
|
107
|
+
|
|
108
|
+
"@swc/helpers": ["@swc/helpers@0.5.15", "", { "dependencies": { "tslib": "^2.8.0" } }, "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g=="],
|
|
109
|
+
|
|
110
|
+
"@tailwindcss/node": ["@tailwindcss/node@4.2.4", "", { "dependencies": { "@jridgewell/remapping": "^2.3.5", "enhanced-resolve": "^5.19.0", "jiti": "^2.6.1", "lightningcss": "1.32.0", "magic-string": "^0.30.21", "source-map-js": "^1.2.1", "tailwindcss": "4.2.4" } }, "sha512-Ai7+yQPxz3ddrDQzFfBKdHEVBg0w3Zl83jnjuwxnZOsnH9pGn93QHQtpU0p/8rYWxvbFZHneni6p1BSLK4DkGA=="],
|
|
111
|
+
|
|
112
|
+
"@tailwindcss/oxide": ["@tailwindcss/oxide@4.2.4", "", { "optionalDependencies": { "@tailwindcss/oxide-android-arm64": "4.2.4", "@tailwindcss/oxide-darwin-arm64": "4.2.4", "@tailwindcss/oxide-darwin-x64": "4.2.4", "@tailwindcss/oxide-freebsd-x64": "4.2.4", "@tailwindcss/oxide-linux-arm-gnueabihf": "4.2.4", "@tailwindcss/oxide-linux-arm64-gnu": "4.2.4", "@tailwindcss/oxide-linux-arm64-musl": "4.2.4", "@tailwindcss/oxide-linux-x64-gnu": "4.2.4", "@tailwindcss/oxide-linux-x64-musl": "4.2.4", "@tailwindcss/oxide-wasm32-wasi": "4.2.4", "@tailwindcss/oxide-win32-arm64-msvc": "4.2.4", "@tailwindcss/oxide-win32-x64-msvc": "4.2.4" } }, "sha512-9El/iI069DKDSXwTvB9J4BwdO5JhRrOweGaK25taBAvBXyXqJAX+Jqdvs8r8gKpsI/1m0LeJLyQYTf/WLrBT1Q=="],
|
|
113
|
+
|
|
114
|
+
"@tailwindcss/oxide-android-arm64": ["@tailwindcss/oxide-android-arm64@4.2.4", "", { "os": "android", "cpu": "arm64" }, "sha512-e7MOr1SAn9U8KlZzPi1ZXGZHeC5anY36qjNwmZv9pOJ8E4Q6jmD1vyEHkQFmNOIN7twGPEMXRHmitN4zCMN03g=="],
|
|
115
|
+
|
|
116
|
+
"@tailwindcss/oxide-darwin-arm64": ["@tailwindcss/oxide-darwin-arm64@4.2.4", "", { "os": "darwin", "cpu": "arm64" }, "sha512-tSC/Kbqpz/5/o/C2sG7QvOxAKqyd10bq+ypZNf+9Fi2TvbVbv1zNpcEptcsU7DPROaSbVgUXmrzKhurFvo5eDg=="],
|
|
117
|
+
|
|
118
|
+
"@tailwindcss/oxide-darwin-x64": ["@tailwindcss/oxide-darwin-x64@4.2.4", "", { "os": "darwin", "cpu": "x64" }, "sha512-yPyUXn3yO/ufR6+Kzv0t4fCg2qNr90jxXc5QqBpjlPNd0NqyDXcmQb/6weunH/MEDXW5dhyEi+agTDiqa3WsGg=="],
|
|
119
|
+
|
|
120
|
+
"@tailwindcss/oxide-freebsd-x64": ["@tailwindcss/oxide-freebsd-x64@4.2.4", "", { "os": "freebsd", "cpu": "x64" }, "sha512-BoMIB4vMQtZsXdGLVc2z+P9DbETkiopogfWZKbWwM8b/1Vinbs4YcUwo+kM/KeLkX3Ygrf4/PsRndKaYhS8Eiw=="],
|
|
121
|
+
|
|
122
|
+
"@tailwindcss/oxide-linux-arm-gnueabihf": ["@tailwindcss/oxide-linux-arm-gnueabihf@4.2.4", "", { "os": "linux", "cpu": "arm" }, "sha512-7pIHBLTHYRAlS7V22JNuTh33yLH4VElwKtB3bwchK/UaKUPpQ0lPQiOWcbm4V3WP2I6fNIJ23vABIvoy2izdwA=="],
|
|
123
|
+
|
|
124
|
+
"@tailwindcss/oxide-linux-arm64-gnu": ["@tailwindcss/oxide-linux-arm64-gnu@4.2.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-+E4wxJ0ZGOzSH325reXTWB48l42i93kQqMvDyz5gqfRzRZ7faNhnmvlV4EPGJU3QJM/3Ab5jhJ5pCRUsKn6OQw=="],
|
|
125
|
+
|
|
126
|
+
"@tailwindcss/oxide-linux-arm64-musl": ["@tailwindcss/oxide-linux-arm64-musl@4.2.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-bBADEGAbo4ASnppIziaQJelekCxdMaxisrk+fB7Thit72IBnALp9K6ffA2G4ruj90G9XRS2VQ6q2bCKbfFV82g=="],
|
|
127
|
+
|
|
128
|
+
"@tailwindcss/oxide-linux-x64-gnu": ["@tailwindcss/oxide-linux-x64-gnu@4.2.4", "", { "os": "linux", "cpu": "x64" }, "sha512-7Mx25E4WTfnht0TVRTyC00j3i0M+EeFe7wguMDTlX4mRxafznw0CA8WJkFjWYH5BlgELd1kSjuU2JiPnNZbJDA=="],
|
|
129
|
+
|
|
130
|
+
"@tailwindcss/oxide-linux-x64-musl": ["@tailwindcss/oxide-linux-x64-musl@4.2.4", "", { "os": "linux", "cpu": "x64" }, "sha512-2wwJRF7nyhOR0hhHoChc04xngV3iS+akccHTGtz965FwF0up4b2lOdo6kI1EbDaEXKgvcrFBYcYQQ/rrnWFVfA=="],
|
|
131
|
+
|
|
132
|
+
"@tailwindcss/oxide-wasm32-wasi": ["@tailwindcss/oxide-wasm32-wasi@4.2.4", "", { "dependencies": { "@emnapi/core": "^1.8.1", "@emnapi/runtime": "^1.8.1", "@emnapi/wasi-threads": "^1.1.0", "@napi-rs/wasm-runtime": "^1.1.1", "@tybys/wasm-util": "^0.10.1", "tslib": "^2.8.1" }, "cpu": "none" }, "sha512-FQsqApeor8Fo6gUEklzmaa9994orJZZDBAlQpK2Mq+DslRKFJeD6AjHpBQ0kZFQohVr8o85PPh8eOy86VlSCmw=="],
|
|
133
|
+
|
|
134
|
+
"@tailwindcss/oxide-win32-arm64-msvc": ["@tailwindcss/oxide-win32-arm64-msvc@4.2.4", "", { "os": "win32", "cpu": "arm64" }, "sha512-L9BXqxC4ToVgwMFqj3pmZRqyHEztulpUJzCxUtLjobMCzTPsGt1Fa9enKbOpY2iIyVtaHNeNvAK8ERP/64sqGQ=="],
|
|
135
|
+
|
|
136
|
+
"@tailwindcss/oxide-win32-x64-msvc": ["@tailwindcss/oxide-win32-x64-msvc@4.2.4", "", { "os": "win32", "cpu": "x64" }, "sha512-ESlKG0EpVJQwRjXDDa9rLvhEAh0mhP1sF7sap9dNZT0yyl9SAG6T7gdP09EH0vIv0UNTlo6jPWyujD6559fZvw=="],
|
|
137
|
+
|
|
138
|
+
"@tailwindcss/postcss": ["@tailwindcss/postcss@4.2.4", "", { "dependencies": { "@alloc/quick-lru": "^5.2.0", "@tailwindcss/node": "4.2.4", "@tailwindcss/oxide": "4.2.4", "postcss": "^8.5.6", "tailwindcss": "4.2.4" } }, "sha512-wgAVj6nUWAolAu8YFvzT2cTBIElWHkjZwFYovF+xsqKsW2ADxM/X2opxj5NsF/qVccAOjRNe8X2IdPzMsWyHTg=="],
|
|
139
|
+
|
|
140
|
+
"@types/node": ["@types/node@25.6.0", "", { "dependencies": { "undici-types": "~7.19.0" } }, "sha512-+qIYRKdNYJwY3vRCZMdJbPLJAtGjQBudzZzdzwQYkEPQd+PJGixUL5QfvCLDaULoLv+RhT3LDkwEfKaAkgSmNQ=="],
|
|
141
|
+
|
|
142
|
+
"@types/react": ["@types/react@19.2.14", "", { "dependencies": { "csstype": "^3.2.2" } }, "sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w=="],
|
|
143
|
+
|
|
144
|
+
"@types/react-dom": ["@types/react-dom@19.2.3", "", { "peerDependencies": { "@types/react": "^19.2.0" } }, "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ=="],
|
|
145
|
+
|
|
146
|
+
"baseline-browser-mapping": ["baseline-browser-mapping@2.10.24", "", { "bin": { "baseline-browser-mapping": "dist/cli.cjs" } }, "sha512-I2NkZOOrj2XuguvWCK6OVh9GavsNjZjK908Rq3mIBK25+GD8vPX5w2WdxVqnQ7xx3SrZJiCiZFu+/Oz50oSYSA=="],
|
|
147
|
+
|
|
148
|
+
"caniuse-lite": ["caniuse-lite@1.0.30001791", "", {}, "sha512-yk0l/YSrOnFZk3UROpDLQD9+kC1l4meK/wed583AXrzoarMGJcbRi2Q4RaUYbKxYAsZ8sWmaSa/DsLmdBeI1vQ=="],
|
|
149
|
+
|
|
150
|
+
"client-only": ["client-only@0.0.1", "", {}, "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA=="],
|
|
151
|
+
|
|
152
|
+
"clsx": ["clsx@2.1.1", "", {}, "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA=="],
|
|
153
|
+
|
|
154
|
+
"csstype": ["csstype@3.2.3", "", {}, "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ=="],
|
|
155
|
+
|
|
156
|
+
"detect-libc": ["detect-libc@2.1.2", "", {}, "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ=="],
|
|
157
|
+
|
|
158
|
+
"enhanced-resolve": ["enhanced-resolve@5.21.0", "", { "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.3.3" } }, "sha512-otxSQPw4lkOZWkHpB3zaEQs6gWYEsmX4xQF68ElXC/TWvGxGMSGOvoNbaLXm6/cS/fSfHtsEdw90y20PCd+sCA=="],
|
|
159
|
+
|
|
160
|
+
"graceful-fs": ["graceful-fs@4.2.11", "", {}, "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="],
|
|
161
|
+
|
|
162
|
+
"jiti": ["jiti@2.6.1", "", { "bin": { "jiti": "lib/jiti-cli.mjs" } }, "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ=="],
|
|
163
|
+
|
|
164
|
+
"lightningcss": ["lightningcss@1.32.0", "", { "dependencies": { "detect-libc": "^2.0.3" }, "optionalDependencies": { "lightningcss-android-arm64": "1.32.0", "lightningcss-darwin-arm64": "1.32.0", "lightningcss-darwin-x64": "1.32.0", "lightningcss-freebsd-x64": "1.32.0", "lightningcss-linux-arm-gnueabihf": "1.32.0", "lightningcss-linux-arm64-gnu": "1.32.0", "lightningcss-linux-arm64-musl": "1.32.0", "lightningcss-linux-x64-gnu": "1.32.0", "lightningcss-linux-x64-musl": "1.32.0", "lightningcss-win32-arm64-msvc": "1.32.0", "lightningcss-win32-x64-msvc": "1.32.0" } }, "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ=="],
|
|
165
|
+
|
|
166
|
+
"lightningcss-android-arm64": ["lightningcss-android-arm64@1.32.0", "", { "os": "android", "cpu": "arm64" }, "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg=="],
|
|
167
|
+
|
|
168
|
+
"lightningcss-darwin-arm64": ["lightningcss-darwin-arm64@1.32.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ=="],
|
|
169
|
+
|
|
170
|
+
"lightningcss-darwin-x64": ["lightningcss-darwin-x64@1.32.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w=="],
|
|
171
|
+
|
|
172
|
+
"lightningcss-freebsd-x64": ["lightningcss-freebsd-x64@1.32.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig=="],
|
|
173
|
+
|
|
174
|
+
"lightningcss-linux-arm-gnueabihf": ["lightningcss-linux-arm-gnueabihf@1.32.0", "", { "os": "linux", "cpu": "arm" }, "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw=="],
|
|
175
|
+
|
|
176
|
+
"lightningcss-linux-arm64-gnu": ["lightningcss-linux-arm64-gnu@1.32.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ=="],
|
|
177
|
+
|
|
178
|
+
"lightningcss-linux-arm64-musl": ["lightningcss-linux-arm64-musl@1.32.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg=="],
|
|
179
|
+
|
|
180
|
+
"lightningcss-linux-x64-gnu": ["lightningcss-linux-x64-gnu@1.32.0", "", { "os": "linux", "cpu": "x64" }, "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA=="],
|
|
181
|
+
|
|
182
|
+
"lightningcss-linux-x64-musl": ["lightningcss-linux-x64-musl@1.32.0", "", { "os": "linux", "cpu": "x64" }, "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg=="],
|
|
183
|
+
|
|
184
|
+
"lightningcss-win32-arm64-msvc": ["lightningcss-win32-arm64-msvc@1.32.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw=="],
|
|
185
|
+
|
|
186
|
+
"lightningcss-win32-x64-msvc": ["lightningcss-win32-x64-msvc@1.32.0", "", { "os": "win32", "cpu": "x64" }, "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q=="],
|
|
187
|
+
|
|
188
|
+
"lucide-react": ["lucide-react@1.14.0", "", { "peerDependencies": { "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-+1mdWcfSJVUsaTIjN9zoezmUhfXo5l0vP7ekBMPo3jcS/aIkxHnXqAPsByszMZx/Y8oQBRJxJx5xg+RH3urzxA=="],
|
|
189
|
+
|
|
190
|
+
"magic-string": ["magic-string@0.30.21", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.5" } }, "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ=="],
|
|
191
|
+
|
|
192
|
+
"nanoid": ["nanoid@3.3.12", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ=="],
|
|
193
|
+
|
|
194
|
+
"next": ["next@16.2.4", "", { "dependencies": { "@next/env": "16.2.4", "@swc/helpers": "0.5.15", "baseline-browser-mapping": "^2.9.19", "caniuse-lite": "^1.0.30001579", "postcss": "8.4.31", "styled-jsx": "5.1.6" }, "optionalDependencies": { "@next/swc-darwin-arm64": "16.2.4", "@next/swc-darwin-x64": "16.2.4", "@next/swc-linux-arm64-gnu": "16.2.4", "@next/swc-linux-arm64-musl": "16.2.4", "@next/swc-linux-x64-gnu": "16.2.4", "@next/swc-linux-x64-musl": "16.2.4", "@next/swc-win32-arm64-msvc": "16.2.4", "@next/swc-win32-x64-msvc": "16.2.4", "sharp": "^0.34.5" }, "peerDependencies": { "@opentelemetry/api": "^1.1.0", "@playwright/test": "^1.51.1", "babel-plugin-react-compiler": "*", "react": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", "react-dom": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", "sass": "^1.3.0" }, "optionalPeers": ["@opentelemetry/api", "@playwright/test", "babel-plugin-react-compiler", "sass"], "bin": { "next": "dist/bin/next" } }, "sha512-kPvz56wF5frc+FxlHI5qnklCzbq53HTwORaWBGdT0vNoKh1Aya9XC8aPauH4NJxqtzbWsS5mAbctm4cr+EkQ2Q=="],
|
|
195
|
+
|
|
196
|
+
"picocolors": ["picocolors@1.1.1", "", {}, "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="],
|
|
197
|
+
|
|
198
|
+
"postcss": ["postcss@8.5.13", "", { "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-qif0+jGGZoLWdHey3UFHHWP0H7Gbmsk8T5VEqyYFbWqPr1XqvLGBbk/sl8V5exGmcYJklJOhOQq1pV9IcsiFag=="],
|
|
199
|
+
|
|
200
|
+
"react": ["react@19.2.5", "", {}, "sha512-llUJLzz1zTUBrskt2pwZgLq59AemifIftw4aB7JxOqf1HY2FDaGDxgwpAPVzHU1kdWabH7FauP4i1oEeer2WCA=="],
|
|
201
|
+
|
|
202
|
+
"react-dom": ["react-dom@19.2.5", "", { "dependencies": { "scheduler": "^0.27.0" }, "peerDependencies": { "react": "^19.2.5" } }, "sha512-J5bAZz+DXMMwW/wV3xzKke59Af6CHY7G4uYLN1OvBcKEsWOs4pQExj86BBKamxl/Ik5bx9whOrvBlSDfWzgSag=="],
|
|
203
|
+
|
|
204
|
+
"scheduler": ["scheduler@0.27.0", "", {}, "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q=="],
|
|
205
|
+
|
|
206
|
+
"semver": ["semver@7.7.4", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA=="],
|
|
207
|
+
|
|
208
|
+
"sharp": ["sharp@0.34.5", "", { "dependencies": { "@img/colour": "^1.0.0", "detect-libc": "^2.1.2", "semver": "^7.7.3" }, "optionalDependencies": { "@img/sharp-darwin-arm64": "0.34.5", "@img/sharp-darwin-x64": "0.34.5", "@img/sharp-libvips-darwin-arm64": "1.2.4", "@img/sharp-libvips-darwin-x64": "1.2.4", "@img/sharp-libvips-linux-arm": "1.2.4", "@img/sharp-libvips-linux-arm64": "1.2.4", "@img/sharp-libvips-linux-ppc64": "1.2.4", "@img/sharp-libvips-linux-riscv64": "1.2.4", "@img/sharp-libvips-linux-s390x": "1.2.4", "@img/sharp-libvips-linux-x64": "1.2.4", "@img/sharp-libvips-linuxmusl-arm64": "1.2.4", "@img/sharp-libvips-linuxmusl-x64": "1.2.4", "@img/sharp-linux-arm": "0.34.5", "@img/sharp-linux-arm64": "0.34.5", "@img/sharp-linux-ppc64": "0.34.5", "@img/sharp-linux-riscv64": "0.34.5", "@img/sharp-linux-s390x": "0.34.5", "@img/sharp-linux-x64": "0.34.5", "@img/sharp-linuxmusl-arm64": "0.34.5", "@img/sharp-linuxmusl-x64": "0.34.5", "@img/sharp-wasm32": "0.34.5", "@img/sharp-win32-arm64": "0.34.5", "@img/sharp-win32-ia32": "0.34.5", "@img/sharp-win32-x64": "0.34.5" } }, "sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg=="],
|
|
209
|
+
|
|
210
|
+
"source-map-js": ["source-map-js@1.2.1", "", {}, "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA=="],
|
|
211
|
+
|
|
212
|
+
"styled-jsx": ["styled-jsx@5.1.6", "", { "dependencies": { "client-only": "0.0.1" }, "peerDependencies": { "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0" } }, "sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA=="],
|
|
213
|
+
|
|
214
|
+
"tailwind-merge": ["tailwind-merge@3.5.0", "", {}, "sha512-I8K9wewnVDkL1NTGoqWmVEIlUcB9gFriAEkXkfCjX5ib8ezGxtR3xD7iZIxrfArjEsH7F1CHD4RFUtxefdqV/A=="],
|
|
215
|
+
|
|
216
|
+
"tailwindcss": ["tailwindcss@4.2.4", "", {}, "sha512-HhKppgO81FQof5m6TEnuBWCZGgfRAWbaeOaGT00KOy/Pf/j6oUihdvBpA7ltCeAvZpFhW3j0PTclkxsd4IXYDA=="],
|
|
217
|
+
|
|
218
|
+
"tapable": ["tapable@2.3.3", "", {}, "sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A=="],
|
|
219
|
+
|
|
220
|
+
"tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="],
|
|
221
|
+
|
|
222
|
+
"typescript": ["typescript@6.0.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw=="],
|
|
223
|
+
|
|
224
|
+
"undici-types": ["undici-types@7.19.2", "", {}, "sha512-qYVnV5OEm2AW8cJMCpdV20CDyaN3g0AjDlOGf1OW4iaDEx8MwdtChUp4zu4H0VP3nDRF/8RKWH+IPp9uW0YGZg=="],
|
|
225
|
+
|
|
226
|
+
"@tailwindcss/oxide-wasm32-wasi/@emnapi/core": ["@emnapi/core@1.10.0", "", { "dependencies": { "@emnapi/wasi-threads": "1.2.1", "tslib": "^2.4.0" }, "bundled": true }, "sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw=="],
|
|
227
|
+
|
|
228
|
+
"@tailwindcss/oxide-wasm32-wasi/@emnapi/runtime": ["@emnapi/runtime@1.10.0", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA=="],
|
|
229
|
+
|
|
230
|
+
"@tailwindcss/oxide-wasm32-wasi/@emnapi/wasi-threads": ["@emnapi/wasi-threads@1.2.1", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w=="],
|
|
231
|
+
|
|
232
|
+
"@tailwindcss/oxide-wasm32-wasi/@napi-rs/wasm-runtime": ["@napi-rs/wasm-runtime@1.1.4", "", { "dependencies": { "@tybys/wasm-util": "^0.10.1" }, "peerDependencies": { "@emnapi/core": "^1.7.1", "@emnapi/runtime": "^1.7.1" }, "bundled": true }, "sha512-3NQNNgA1YSlJb/kMH1ildASP9HW7/7kYnRI2szWJaofaS1hWmbGI4H+d3+22aGzXXN9IJ+n+GiFVcGipJP18ow=="],
|
|
233
|
+
|
|
234
|
+
"@tailwindcss/oxide-wasm32-wasi/@tybys/wasm-util": ["@tybys/wasm-util@0.10.1", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg=="],
|
|
235
|
+
|
|
236
|
+
"@tailwindcss/oxide-wasm32-wasi/tslib": ["tslib@2.8.1", "", { "bundled": true }, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="],
|
|
237
|
+
|
|
238
|
+
"next/postcss": ["postcss@8.4.31", "", { "dependencies": { "nanoid": "^3.3.6", "picocolors": "^1.0.0", "source-map-js": "^1.0.2" } }, "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ=="],
|
|
239
|
+
}
|
|
240
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
interface CalloutProps {
|
|
2
|
+
label?: string;
|
|
3
|
+
children: React.ReactNode;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
export function Callout({ label = "Key Takeaway", children }: CalloutProps) {
|
|
7
|
+
return (
|
|
8
|
+
<div className="callout">
|
|
9
|
+
<div className="callout-label">{label}</div>
|
|
10
|
+
<div className="callout-content">{children}</div>
|
|
11
|
+
</div>
|
|
12
|
+
);
|
|
13
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
interface ComparisonRow {
|
|
2
|
+
metric: string;
|
|
3
|
+
left: string;
|
|
4
|
+
right: string;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
interface ComparisonTableProps {
|
|
8
|
+
leftLabel: string;
|
|
9
|
+
rightLabel: string;
|
|
10
|
+
rows: ComparisonRow[];
|
|
11
|
+
metricLabel?: string;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export function ComparisonTable({
|
|
15
|
+
leftLabel,
|
|
16
|
+
rightLabel,
|
|
17
|
+
rows,
|
|
18
|
+
metricLabel = "Metric",
|
|
19
|
+
}: ComparisonTableProps) {
|
|
20
|
+
return (
|
|
21
|
+
<table className="comparison-table">
|
|
22
|
+
<thead>
|
|
23
|
+
<tr>
|
|
24
|
+
<th>{metricLabel}</th>
|
|
25
|
+
<th>{leftLabel}</th>
|
|
26
|
+
<th>{rightLabel}</th>
|
|
27
|
+
</tr>
|
|
28
|
+
</thead>
|
|
29
|
+
<tbody>
|
|
30
|
+
{rows.map((row) => (
|
|
31
|
+
<tr key={row.metric}>
|
|
32
|
+
<td className="metric">{row.metric}</td>
|
|
33
|
+
<td>{row.left}</td>
|
|
34
|
+
<td>{row.right}</td>
|
|
35
|
+
</tr>
|
|
36
|
+
))}
|
|
37
|
+
</tbody>
|
|
38
|
+
</table>
|
|
39
|
+
);
|
|
40
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
interface CoverPageProps {
|
|
2
|
+
clientName: string;
|
|
3
|
+
reportTitle: string;
|
|
4
|
+
reportDate: string;
|
|
5
|
+
classification: string;
|
|
6
|
+
consultancyName: string;
|
|
7
|
+
preTitle?: string;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export function CoverPage({
|
|
11
|
+
clientName,
|
|
12
|
+
reportTitle,
|
|
13
|
+
reportDate,
|
|
14
|
+
classification,
|
|
15
|
+
consultancyName,
|
|
16
|
+
preTitle = "Strategic Assessment",
|
|
17
|
+
}: CoverPageProps) {
|
|
18
|
+
return (
|
|
19
|
+
<div className="cover-page">
|
|
20
|
+
<div className="cover-classification">{classification}</div>
|
|
21
|
+
|
|
22
|
+
<div className="text-sm tracking-[0.25em] text-primary uppercase mb-4 font-semibold font-sans">
|
|
23
|
+
{preTitle}
|
|
24
|
+
</div>
|
|
25
|
+
<h1 className="cover-title">{reportTitle}</h1>
|
|
26
|
+
<p className="cover-subtitle">Prepared for {clientName}</p>
|
|
27
|
+
|
|
28
|
+
<div className="cover-meta">
|
|
29
|
+
<p className="cover-date">{reportDate}</p>
|
|
30
|
+
<p className="text-muted-dark text-sm mt-2 font-sans">{consultancyName}</p>
|
|
31
|
+
</div>
|
|
32
|
+
</div>
|
|
33
|
+
);
|
|
34
|
+
}
|