@nimblegiant/stilts 0.1.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/LICENSE +21 -0
- package/README.md +361 -0
- package/dist/index.cjs +2468 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +706 -0
- package/dist/index.d.ts +706 -0
- package/dist/index.js +2434 -0
- package/dist/index.js.map +1 -0
- package/package.json +84 -0
package/dist/index.d.cts
ADDED
|
@@ -0,0 +1,706 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
|
|
3
|
+
interface MainNavProps {
|
|
4
|
+
currentPath: string;
|
|
5
|
+
isPortfolioPage?: boolean;
|
|
6
|
+
}
|
|
7
|
+
declare function MainNav({ currentPath, isPortfolioPage }: MainNavProps): react_jsx_runtime.JSX.Element;
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Layout Components
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
declare const index$2_MainNav: typeof MainNav;
|
|
14
|
+
declare namespace index$2 {
|
|
15
|
+
export { index$2_MainNav as MainNav };
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
interface ToastOptions {
|
|
19
|
+
type?: "success" | "error" | "info" | "warning";
|
|
20
|
+
title?: string;
|
|
21
|
+
message?: string;
|
|
22
|
+
duration?: number;
|
|
23
|
+
}
|
|
24
|
+
declare global {
|
|
25
|
+
interface Window {
|
|
26
|
+
showToast: (options: ToastOptions) => void;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
declare function ToastContainer(): react_jsx_runtime.JSX.Element;
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* UI Components
|
|
33
|
+
*/
|
|
34
|
+
|
|
35
|
+
declare namespace index$1 {
|
|
36
|
+
export { ToastContainer as Toast };
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* PageHero.tsx
|
|
41
|
+
* Simple hero section with optional background image
|
|
42
|
+
* Uses design system patterns
|
|
43
|
+
*/
|
|
44
|
+
interface PageHeroProps {
|
|
45
|
+
title: string;
|
|
46
|
+
subtitle?: string;
|
|
47
|
+
description?: string;
|
|
48
|
+
eyebrow?: string;
|
|
49
|
+
backgroundImage?: string;
|
|
50
|
+
align?: "left" | "center" | "right";
|
|
51
|
+
children?: React.ReactNode;
|
|
52
|
+
}
|
|
53
|
+
declare function PageHero({ title, subtitle, eyebrow, description, backgroundImage, align, children, }: PageHeroProps): react_jsx_runtime.JSX.Element;
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* VideoHero.tsx
|
|
57
|
+
* Full-screen hero with video background and floating orbs
|
|
58
|
+
* Uses design system patterns
|
|
59
|
+
*/
|
|
60
|
+
interface ServiceCard {
|
|
61
|
+
href: string;
|
|
62
|
+
icon: string;
|
|
63
|
+
title: string;
|
|
64
|
+
description: string;
|
|
65
|
+
}
|
|
66
|
+
interface VideoHeroProps {
|
|
67
|
+
videoSrc?: string;
|
|
68
|
+
fallbackImage?: string;
|
|
69
|
+
eyebrow?: string;
|
|
70
|
+
title?: string;
|
|
71
|
+
subtitle?: string;
|
|
72
|
+
description?: string;
|
|
73
|
+
serviceCards?: ServiceCard[];
|
|
74
|
+
showScrollIndicator?: boolean;
|
|
75
|
+
scrollTarget?: string;
|
|
76
|
+
children?: React.ReactNode;
|
|
77
|
+
}
|
|
78
|
+
declare function VideoHero({ videoSrc, fallbackImage, eyebrow, title, subtitle, description, serviceCards, showScrollIndicator, scrollTarget, children, }: VideoHeroProps): react_jsx_runtime.JSX.Element;
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* TeamGrid.tsx
|
|
82
|
+
* Team member display grid
|
|
83
|
+
* Uses design system patterns
|
|
84
|
+
*/
|
|
85
|
+
interface TeamMember {
|
|
86
|
+
name: string;
|
|
87
|
+
role: string;
|
|
88
|
+
title?: string;
|
|
89
|
+
image: string;
|
|
90
|
+
bio: string;
|
|
91
|
+
linkedin?: string;
|
|
92
|
+
twitter?: string;
|
|
93
|
+
email?: string;
|
|
94
|
+
}
|
|
95
|
+
interface TeamGridProps {
|
|
96
|
+
members: TeamMember[];
|
|
97
|
+
cols?: 2 | 3 | 4;
|
|
98
|
+
title?: string;
|
|
99
|
+
}
|
|
100
|
+
declare function TeamGrid({ members, cols, title }: TeamGridProps): react_jsx_runtime.JSX.Element;
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* ServiceSection.tsx
|
|
104
|
+
* Service section with title, description, and features grid
|
|
105
|
+
* Uses design system patterns
|
|
106
|
+
*/
|
|
107
|
+
interface Feature {
|
|
108
|
+
title: string;
|
|
109
|
+
description: string;
|
|
110
|
+
}
|
|
111
|
+
interface ServiceSectionProps {
|
|
112
|
+
id: string;
|
|
113
|
+
title: string;
|
|
114
|
+
description: string;
|
|
115
|
+
features: Feature[];
|
|
116
|
+
}
|
|
117
|
+
declare function ServiceSection({ id, title, description, features }: ServiceSectionProps): react_jsx_runtime.JSX.Element;
|
|
118
|
+
|
|
119
|
+
/**
|
|
120
|
+
* ProcessSteps.tsx
|
|
121
|
+
* Horizontal or vertical process steps
|
|
122
|
+
* Uses design system patterns
|
|
123
|
+
*/
|
|
124
|
+
interface Step {
|
|
125
|
+
number?: number;
|
|
126
|
+
title: string;
|
|
127
|
+
description: string;
|
|
128
|
+
}
|
|
129
|
+
interface ProcessStepsProps {
|
|
130
|
+
steps: Step[];
|
|
131
|
+
title?: string;
|
|
132
|
+
variant?: "horizontal" | "vertical";
|
|
133
|
+
background?: "default" | "muted";
|
|
134
|
+
}
|
|
135
|
+
declare function ProcessSteps({ steps, title, variant, background, }: ProcessStepsProps): react_jsx_runtime.JSX.Element;
|
|
136
|
+
|
|
137
|
+
/**
|
|
138
|
+
* StatBar.tsx
|
|
139
|
+
* Statistics display with optional header
|
|
140
|
+
* Uses design system patterns
|
|
141
|
+
*/
|
|
142
|
+
interface StatData {
|
|
143
|
+
value: string | number;
|
|
144
|
+
label: string;
|
|
145
|
+
prefix?: string;
|
|
146
|
+
suffix?: string;
|
|
147
|
+
}
|
|
148
|
+
interface StatBarProps {
|
|
149
|
+
stats: StatData[];
|
|
150
|
+
title?: string;
|
|
151
|
+
description?: string | string[];
|
|
152
|
+
centered?: boolean;
|
|
153
|
+
background?: "default" | "muted";
|
|
154
|
+
}
|
|
155
|
+
declare function StatBar({ stats, title, description, centered, background, }: StatBarProps): react_jsx_runtime.JSX.Element;
|
|
156
|
+
|
|
157
|
+
/**
|
|
158
|
+
* IndustryGrid.tsx
|
|
159
|
+
* Industry cards in a grid layout
|
|
160
|
+
* Uses design system patterns
|
|
161
|
+
*/
|
|
162
|
+
interface Industry {
|
|
163
|
+
title: string;
|
|
164
|
+
description: string;
|
|
165
|
+
}
|
|
166
|
+
interface IndustryGridProps {
|
|
167
|
+
industries: Industry[];
|
|
168
|
+
title?: string;
|
|
169
|
+
cols?: 2 | 3;
|
|
170
|
+
}
|
|
171
|
+
declare function IndustryGrid({ industries, title, cols }: IndustryGridProps): react_jsx_runtime.JSX.Element;
|
|
172
|
+
|
|
173
|
+
/**
|
|
174
|
+
* ContentPage.tsx
|
|
175
|
+
* Simple content page wrapper for MDX
|
|
176
|
+
*/
|
|
177
|
+
interface ContentPageProps {
|
|
178
|
+
title: string;
|
|
179
|
+
subtitle?: string;
|
|
180
|
+
lastUpdated?: string;
|
|
181
|
+
children: React.ReactNode;
|
|
182
|
+
}
|
|
183
|
+
declare function ContentPage({ title, subtitle, lastUpdated, children }: ContentPageProps): react_jsx_runtime.JSX.Element;
|
|
184
|
+
|
|
185
|
+
/**
|
|
186
|
+
* Pattern Components
|
|
187
|
+
*/
|
|
188
|
+
|
|
189
|
+
declare const index_ContentPage: typeof ContentPage;
|
|
190
|
+
declare const index_IndustryGrid: typeof IndustryGrid;
|
|
191
|
+
declare const index_PageHero: typeof PageHero;
|
|
192
|
+
declare const index_ProcessSteps: typeof ProcessSteps;
|
|
193
|
+
declare const index_ServiceSection: typeof ServiceSection;
|
|
194
|
+
declare const index_StatBar: typeof StatBar;
|
|
195
|
+
declare const index_TeamGrid: typeof TeamGrid;
|
|
196
|
+
declare const index_VideoHero: typeof VideoHero;
|
|
197
|
+
declare namespace index {
|
|
198
|
+
export { index_ContentPage as ContentPage, index_IndustryGrid as IndustryGrid, index_PageHero as PageHero, index_ProcessSteps as ProcessSteps, index_ServiceSection as ServiceSection, index_StatBar as StatBar, index_TeamGrid as TeamGrid, index_VideoHero as VideoHero };
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
/**
|
|
202
|
+
* Section component data types
|
|
203
|
+
* These define the shape of data passed to section components
|
|
204
|
+
*/
|
|
205
|
+
interface CaseStudyBreakdown$1 {
|
|
206
|
+
type?: "case_study_breakdown";
|
|
207
|
+
title: string;
|
|
208
|
+
what_we_did: string;
|
|
209
|
+
how_we_did_it: string;
|
|
210
|
+
services_used: string[];
|
|
211
|
+
results?: string;
|
|
212
|
+
metrics: Array<{
|
|
213
|
+
value: string;
|
|
214
|
+
suffix?: string;
|
|
215
|
+
label: string;
|
|
216
|
+
description?: string;
|
|
217
|
+
trend?: "up" | "down";
|
|
218
|
+
icon?: string;
|
|
219
|
+
}>;
|
|
220
|
+
}
|
|
221
|
+
interface VideoHeroSection {
|
|
222
|
+
type?: "video_hero";
|
|
223
|
+
video: string;
|
|
224
|
+
title: string;
|
|
225
|
+
content: string;
|
|
226
|
+
autoplay?: boolean;
|
|
227
|
+
loop?: boolean;
|
|
228
|
+
muted?: boolean;
|
|
229
|
+
device_frame?: string;
|
|
230
|
+
overlay?: boolean;
|
|
231
|
+
overlay_position?: string;
|
|
232
|
+
overlay_content?: string;
|
|
233
|
+
caption?: string;
|
|
234
|
+
}
|
|
235
|
+
interface BeforeAfterSection {
|
|
236
|
+
type?: "before_after";
|
|
237
|
+
before_image: string;
|
|
238
|
+
after_image: string;
|
|
239
|
+
title: string;
|
|
240
|
+
content: string;
|
|
241
|
+
default_offset?: number;
|
|
242
|
+
before_label?: string;
|
|
243
|
+
after_label?: string;
|
|
244
|
+
caption?: string;
|
|
245
|
+
}
|
|
246
|
+
interface ImageGridSection {
|
|
247
|
+
type?: "image_grid";
|
|
248
|
+
grid_type: "50-50" | "2x2" | "3x3";
|
|
249
|
+
title: string;
|
|
250
|
+
content?: string;
|
|
251
|
+
full_width?: boolean;
|
|
252
|
+
images: Array<string | {
|
|
253
|
+
src: string;
|
|
254
|
+
alt: string;
|
|
255
|
+
caption?: string;
|
|
256
|
+
}>;
|
|
257
|
+
grid_caption?: string;
|
|
258
|
+
}
|
|
259
|
+
interface TextBlockSection {
|
|
260
|
+
type?: "text_block";
|
|
261
|
+
layout: "standard" | "centered" | "wide";
|
|
262
|
+
text_align?: "left" | "center" | "right";
|
|
263
|
+
title?: string;
|
|
264
|
+
content: string;
|
|
265
|
+
text_size?: "normal" | "large";
|
|
266
|
+
quote?: string;
|
|
267
|
+
quote_author?: string;
|
|
268
|
+
lists?: Array<{
|
|
269
|
+
title: string;
|
|
270
|
+
style: "bullets" | "checkmarks" | "numbered";
|
|
271
|
+
items: string[];
|
|
272
|
+
}>;
|
|
273
|
+
cta?: {
|
|
274
|
+
text: string;
|
|
275
|
+
url: string;
|
|
276
|
+
style: "primary" | "secondary";
|
|
277
|
+
};
|
|
278
|
+
}
|
|
279
|
+
interface FullWidthImageSection {
|
|
280
|
+
type?: "full_width_image";
|
|
281
|
+
image: string;
|
|
282
|
+
alt: string;
|
|
283
|
+
title?: string;
|
|
284
|
+
content?: string;
|
|
285
|
+
overlay?: boolean;
|
|
286
|
+
overlay_type?: string;
|
|
287
|
+
overlay_content?: string;
|
|
288
|
+
caption?: string;
|
|
289
|
+
}
|
|
290
|
+
interface ProblemStatementSection {
|
|
291
|
+
type?: "problem_statement";
|
|
292
|
+
title: string;
|
|
293
|
+
subtitle?: string;
|
|
294
|
+
problem: string;
|
|
295
|
+
context: string;
|
|
296
|
+
goals: string[];
|
|
297
|
+
stakeholders: Array<{
|
|
298
|
+
role: string;
|
|
299
|
+
description: string;
|
|
300
|
+
}>;
|
|
301
|
+
}
|
|
302
|
+
interface SolutionSummarySection {
|
|
303
|
+
type?: "solution_summary";
|
|
304
|
+
title: string;
|
|
305
|
+
subtitle?: string;
|
|
306
|
+
overview: string;
|
|
307
|
+
approach: Array<{
|
|
308
|
+
title: string;
|
|
309
|
+
description: string;
|
|
310
|
+
}>;
|
|
311
|
+
key_features: Array<{
|
|
312
|
+
title: string;
|
|
313
|
+
description: string;
|
|
314
|
+
}>;
|
|
315
|
+
technologies?: string[];
|
|
316
|
+
quote?: {
|
|
317
|
+
text: string;
|
|
318
|
+
author: string;
|
|
319
|
+
title: string;
|
|
320
|
+
};
|
|
321
|
+
}
|
|
322
|
+
interface ProcessTimelineSection {
|
|
323
|
+
type?: "process_timeline";
|
|
324
|
+
title: string;
|
|
325
|
+
subtitle?: string;
|
|
326
|
+
layout: "vertical" | "horizontal";
|
|
327
|
+
style: "default" | "minimal" | "cards";
|
|
328
|
+
steps: Array<{
|
|
329
|
+
phase: string;
|
|
330
|
+
title: string;
|
|
331
|
+
description: string;
|
|
332
|
+
deliverables?: string[];
|
|
333
|
+
duration?: string;
|
|
334
|
+
icon?: string;
|
|
335
|
+
}>;
|
|
336
|
+
summary?: string;
|
|
337
|
+
}
|
|
338
|
+
interface TeamCreditsSection {
|
|
339
|
+
type?: "team_credits";
|
|
340
|
+
title: string;
|
|
341
|
+
subtitle?: string;
|
|
342
|
+
layout: "grid" | "list" | "carousel";
|
|
343
|
+
style?: "default";
|
|
344
|
+
members: Array<{
|
|
345
|
+
name: string;
|
|
346
|
+
role: string;
|
|
347
|
+
company?: string;
|
|
348
|
+
photo?: string;
|
|
349
|
+
company_logo?: string;
|
|
350
|
+
contribution?: string;
|
|
351
|
+
quote?: string;
|
|
352
|
+
social?: Record<string, string>;
|
|
353
|
+
}>;
|
|
354
|
+
note?: string;
|
|
355
|
+
}
|
|
356
|
+
interface ImageGridModalSection {
|
|
357
|
+
type?: "image_grid_modal";
|
|
358
|
+
title: string;
|
|
359
|
+
subtitle?: string;
|
|
360
|
+
grid_type: "mixed" | "50-50" | "2x2" | "3x3";
|
|
361
|
+
images: Array<{
|
|
362
|
+
src: string;
|
|
363
|
+
alt: string;
|
|
364
|
+
caption?: string;
|
|
365
|
+
layout?: "landscape" | "portrait" | "square" | "wide";
|
|
366
|
+
}>;
|
|
367
|
+
description?: string;
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
interface Props$c {
|
|
371
|
+
data: BeforeAfterSection;
|
|
372
|
+
}
|
|
373
|
+
declare function BeforeAfter({ data }: Props$c): react_jsx_runtime.JSX.Element;
|
|
374
|
+
|
|
375
|
+
interface Props$b {
|
|
376
|
+
data: CaseStudyBreakdown$1;
|
|
377
|
+
}
|
|
378
|
+
declare function CaseStudyBreakdown({ data }: Props$b): react_jsx_runtime.JSX.Element;
|
|
379
|
+
|
|
380
|
+
interface CompactContactFormData {
|
|
381
|
+
firstname: string;
|
|
382
|
+
email: string;
|
|
383
|
+
}
|
|
384
|
+
interface HubSpotConfig$1 {
|
|
385
|
+
portalId: string;
|
|
386
|
+
formId: string;
|
|
387
|
+
region?: string;
|
|
388
|
+
}
|
|
389
|
+
interface CompactContactFormProps extends Partial<HubSpotConfig$1> {
|
|
390
|
+
onSubmit?: (formData: CompactContactFormData) => Promise<void>;
|
|
391
|
+
onSuccess?: (response: any) => void;
|
|
392
|
+
onError?: (error: Error) => void;
|
|
393
|
+
submitButtonText?: string;
|
|
394
|
+
loadingText?: string;
|
|
395
|
+
namePlaceholder?: string;
|
|
396
|
+
emailPlaceholder?: string;
|
|
397
|
+
}
|
|
398
|
+
declare function CompactContactForm({ portalId, formId, region, onSubmit, onSuccess, onError, submitButtonText, loadingText, namePlaceholder, emailPlaceholder, }: CompactContactFormProps): react_jsx_runtime.JSX.Element;
|
|
399
|
+
|
|
400
|
+
interface ContactFormData {
|
|
401
|
+
firstname: string;
|
|
402
|
+
email: string;
|
|
403
|
+
company: string;
|
|
404
|
+
services: string[];
|
|
405
|
+
project_budget: string;
|
|
406
|
+
project_description: string;
|
|
407
|
+
}
|
|
408
|
+
interface HubSpotConfig {
|
|
409
|
+
portalId: string;
|
|
410
|
+
formId: string;
|
|
411
|
+
region?: string;
|
|
412
|
+
}
|
|
413
|
+
interface ContactFormProps extends Partial<HubSpotConfig> {
|
|
414
|
+
onSubmit?: (formData: ContactFormData) => Promise<void>;
|
|
415
|
+
onSuccess?: (response: any) => void;
|
|
416
|
+
onError?: (error: Error) => void;
|
|
417
|
+
submitButtonText?: string;
|
|
418
|
+
loadingText?: string;
|
|
419
|
+
serviceOptions?: Array<{
|
|
420
|
+
value: string;
|
|
421
|
+
label: string;
|
|
422
|
+
}>;
|
|
423
|
+
budgetOptions?: Array<{
|
|
424
|
+
value: string;
|
|
425
|
+
label: string;
|
|
426
|
+
}>;
|
|
427
|
+
}
|
|
428
|
+
declare function ContactForm({ portalId, formId, region, onSubmit, onSuccess, onError, submitButtonText, loadingText, serviceOptions, budgetOptions, }: ContactFormProps): react_jsx_runtime.JSX.Element;
|
|
429
|
+
|
|
430
|
+
interface Props$a {
|
|
431
|
+
data: FullWidthImageSection;
|
|
432
|
+
}
|
|
433
|
+
declare function FullWidthImage({ data }: Props$a): react_jsx_runtime.JSX.Element;
|
|
434
|
+
|
|
435
|
+
interface Props$9 {
|
|
436
|
+
data: ImageGridSection;
|
|
437
|
+
}
|
|
438
|
+
declare function ImageGrid({ data }: Props$9): react_jsx_runtime.JSX.Element;
|
|
439
|
+
|
|
440
|
+
interface Props$8 {
|
|
441
|
+
data: ImageGridModalSection;
|
|
442
|
+
}
|
|
443
|
+
declare function ImageGridModal({ data }: Props$8): react_jsx_runtime.JSX.Element;
|
|
444
|
+
|
|
445
|
+
interface Props$7 {
|
|
446
|
+
data: ProblemStatementSection;
|
|
447
|
+
}
|
|
448
|
+
declare function ProblemStatement({ data }: Props$7): react_jsx_runtime.JSX.Element;
|
|
449
|
+
|
|
450
|
+
interface Props$6 {
|
|
451
|
+
data: ProcessTimelineSection;
|
|
452
|
+
}
|
|
453
|
+
declare function ProcessTimeline({ data }: Props$6): react_jsx_runtime.JSX.Element;
|
|
454
|
+
|
|
455
|
+
interface ProjectInfo {
|
|
456
|
+
title: string;
|
|
457
|
+
thumbnail: string;
|
|
458
|
+
role: string;
|
|
459
|
+
year: string | number;
|
|
460
|
+
meta_description: string;
|
|
461
|
+
}
|
|
462
|
+
interface RelatedProjectsData {
|
|
463
|
+
type?: "related_projects";
|
|
464
|
+
title: string;
|
|
465
|
+
subtitle?: string;
|
|
466
|
+
layout: "grid" | "list" | "carousel";
|
|
467
|
+
show_role?: boolean;
|
|
468
|
+
show_year?: boolean;
|
|
469
|
+
show_description?: boolean;
|
|
470
|
+
projects: string[];
|
|
471
|
+
cta?: {
|
|
472
|
+
text: string;
|
|
473
|
+
url: string;
|
|
474
|
+
style?: "primary" | "outline";
|
|
475
|
+
};
|
|
476
|
+
}
|
|
477
|
+
interface Props$5 {
|
|
478
|
+
data: RelatedProjectsData;
|
|
479
|
+
allProjects: Record<string, ProjectInfo>;
|
|
480
|
+
}
|
|
481
|
+
declare function RelatedProjects({ data, allProjects }: Props$5): react_jsx_runtime.JSX.Element | null;
|
|
482
|
+
|
|
483
|
+
interface Props$4 {
|
|
484
|
+
data: SolutionSummarySection;
|
|
485
|
+
}
|
|
486
|
+
declare function SolutionSummary({ data }: Props$4): react_jsx_runtime.JSX.Element;
|
|
487
|
+
|
|
488
|
+
interface Props$3 {
|
|
489
|
+
data: TeamCreditsSection;
|
|
490
|
+
}
|
|
491
|
+
declare function TeamCredits({ data }: Props$3): react_jsx_runtime.JSX.Element | null;
|
|
492
|
+
|
|
493
|
+
interface TestimonialItem {
|
|
494
|
+
quote: string;
|
|
495
|
+
name: string;
|
|
496
|
+
title?: string;
|
|
497
|
+
company?: string;
|
|
498
|
+
photo?: string;
|
|
499
|
+
rating?: number;
|
|
500
|
+
context?: string;
|
|
501
|
+
}
|
|
502
|
+
interface TestimonialSectionData {
|
|
503
|
+
type: "testimonial";
|
|
504
|
+
title: string;
|
|
505
|
+
subtitle?: string;
|
|
506
|
+
testimonials?: TestimonialItem[];
|
|
507
|
+
single_quote?: {
|
|
508
|
+
text: string;
|
|
509
|
+
author: string;
|
|
510
|
+
title?: string;
|
|
511
|
+
company?: string;
|
|
512
|
+
};
|
|
513
|
+
}
|
|
514
|
+
interface Props$2 {
|
|
515
|
+
data: TestimonialSectionData;
|
|
516
|
+
}
|
|
517
|
+
declare function Testimonial({ data }: Props$2): react_jsx_runtime.JSX.Element | null;
|
|
518
|
+
|
|
519
|
+
interface Props$1 {
|
|
520
|
+
data: TextBlockSection;
|
|
521
|
+
}
|
|
522
|
+
declare function TextBlock({ data }: Props$1): react_jsx_runtime.JSX.Element;
|
|
523
|
+
|
|
524
|
+
interface Props {
|
|
525
|
+
data: VideoHeroSection;
|
|
526
|
+
}
|
|
527
|
+
declare function VideoSection({ data }: Props): react_jsx_runtime.JSX.Element;
|
|
528
|
+
|
|
529
|
+
/**
|
|
530
|
+
* Color tokens extracted from Stilts Design System
|
|
531
|
+
* Use these for programmatic access to design tokens
|
|
532
|
+
*/
|
|
533
|
+
declare const colors: {
|
|
534
|
+
readonly primary: {
|
|
535
|
+
readonly 50: "#e6f9fb";
|
|
536
|
+
readonly 100: "#b3eef3";
|
|
537
|
+
readonly 200: "#80e3eb";
|
|
538
|
+
readonly 300: "#4dd8e3";
|
|
539
|
+
readonly 400: "#26cfdc";
|
|
540
|
+
readonly DEFAULT: "#02aec2";
|
|
541
|
+
readonly 600: "#029aad";
|
|
542
|
+
readonly 700: "#017d8c";
|
|
543
|
+
readonly 800: "#01606b";
|
|
544
|
+
readonly 900: "#00434a";
|
|
545
|
+
};
|
|
546
|
+
readonly accent: {
|
|
547
|
+
readonly warm: {
|
|
548
|
+
readonly DEFAULT: "#f59e0b";
|
|
549
|
+
readonly light: "#fcd34d";
|
|
550
|
+
readonly dark: "#d97706";
|
|
551
|
+
};
|
|
552
|
+
readonly violet: {
|
|
553
|
+
readonly DEFAULT: "#8b5cf6";
|
|
554
|
+
readonly light: "#a78bfa";
|
|
555
|
+
readonly dark: "#7c3aed";
|
|
556
|
+
};
|
|
557
|
+
readonly emerald: {
|
|
558
|
+
readonly DEFAULT: "#10b981";
|
|
559
|
+
readonly light: "#34d399";
|
|
560
|
+
readonly dark: "#059669";
|
|
561
|
+
};
|
|
562
|
+
readonly rose: {
|
|
563
|
+
readonly DEFAULT: "#f43f5e";
|
|
564
|
+
readonly light: "#fb7185";
|
|
565
|
+
readonly dark: "#e11d48";
|
|
566
|
+
};
|
|
567
|
+
};
|
|
568
|
+
readonly dot: {
|
|
569
|
+
readonly red: "#ed3125";
|
|
570
|
+
readonly yellow: "#f8be1a";
|
|
571
|
+
readonly blue: "#0066d5";
|
|
572
|
+
readonly magenta: "#ef4467";
|
|
573
|
+
readonly purple: "#8863f3";
|
|
574
|
+
readonly turquoise: "#02afc2";
|
|
575
|
+
};
|
|
576
|
+
readonly semantic: {
|
|
577
|
+
readonly success: {
|
|
578
|
+
readonly DEFAULT: "#10b981";
|
|
579
|
+
readonly light: "#d1fae5";
|
|
580
|
+
readonly dark: "#059669";
|
|
581
|
+
};
|
|
582
|
+
readonly warning: {
|
|
583
|
+
readonly DEFAULT: "#f59e0b";
|
|
584
|
+
readonly light: "#fef3c7";
|
|
585
|
+
readonly dark: "#d97706";
|
|
586
|
+
};
|
|
587
|
+
readonly error: {
|
|
588
|
+
readonly DEFAULT: "#ef4444";
|
|
589
|
+
readonly light: "#fee2e2";
|
|
590
|
+
readonly dark: "#dc2626";
|
|
591
|
+
};
|
|
592
|
+
readonly info: {
|
|
593
|
+
readonly DEFAULT: "#3b82f6";
|
|
594
|
+
readonly light: "#dbeafe";
|
|
595
|
+
readonly dark: "#2563eb";
|
|
596
|
+
};
|
|
597
|
+
};
|
|
598
|
+
readonly gray: {
|
|
599
|
+
readonly 50: "#f9fafb";
|
|
600
|
+
readonly 100: "#f3f4f6";
|
|
601
|
+
readonly 200: "#e5e7eb";
|
|
602
|
+
readonly 300: "#d1d5db";
|
|
603
|
+
readonly 400: "#9ca3af";
|
|
604
|
+
readonly 500: "#6b7280";
|
|
605
|
+
readonly 600: "#4b5563";
|
|
606
|
+
readonly 700: "#374151";
|
|
607
|
+
readonly 800: "#1f2937";
|
|
608
|
+
readonly 900: "#111827";
|
|
609
|
+
readonly 950: "#030712";
|
|
610
|
+
};
|
|
611
|
+
readonly white: "#ffffff";
|
|
612
|
+
readonly black: "#000000";
|
|
613
|
+
};
|
|
614
|
+
type ColorToken = typeof colors;
|
|
615
|
+
|
|
616
|
+
/**
|
|
617
|
+
* Spacing tokens extracted from Stilts Design System
|
|
618
|
+
* Based on 4px base unit
|
|
619
|
+
*/
|
|
620
|
+
declare const spacing: {
|
|
621
|
+
readonly px: "1px";
|
|
622
|
+
readonly 0: "0";
|
|
623
|
+
readonly 0.5: "0.125rem";
|
|
624
|
+
readonly 1: "0.25rem";
|
|
625
|
+
readonly 1.5: "0.375rem";
|
|
626
|
+
readonly 2: "0.5rem";
|
|
627
|
+
readonly 2.5: "0.625rem";
|
|
628
|
+
readonly 3: "0.75rem";
|
|
629
|
+
readonly 3.5: "0.875rem";
|
|
630
|
+
readonly 4: "1rem";
|
|
631
|
+
readonly 5: "1.25rem";
|
|
632
|
+
readonly 6: "1.5rem";
|
|
633
|
+
readonly 7: "1.75rem";
|
|
634
|
+
readonly 8: "2rem";
|
|
635
|
+
readonly 9: "2.25rem";
|
|
636
|
+
readonly 10: "2.5rem";
|
|
637
|
+
readonly 11: "2.75rem";
|
|
638
|
+
readonly 12: "3rem";
|
|
639
|
+
readonly 14: "3.5rem";
|
|
640
|
+
readonly 16: "4rem";
|
|
641
|
+
readonly 20: "5rem";
|
|
642
|
+
readonly 24: "6rem";
|
|
643
|
+
readonly 28: "7rem";
|
|
644
|
+
readonly 32: "8rem";
|
|
645
|
+
readonly 36: "9rem";
|
|
646
|
+
readonly 40: "10rem";
|
|
647
|
+
readonly 44: "11rem";
|
|
648
|
+
readonly 48: "12rem";
|
|
649
|
+
readonly 52: "13rem";
|
|
650
|
+
readonly 56: "14rem";
|
|
651
|
+
readonly 60: "15rem";
|
|
652
|
+
readonly 64: "16rem";
|
|
653
|
+
};
|
|
654
|
+
declare const sectionPadding: {
|
|
655
|
+
readonly sm: "var(--section-padding-sm)";
|
|
656
|
+
readonly md: "var(--section-padding-md)";
|
|
657
|
+
readonly lg: "var(--section-padding-lg)";
|
|
658
|
+
};
|
|
659
|
+
type SpacingToken = typeof spacing;
|
|
660
|
+
type SectionPaddingToken = typeof sectionPadding;
|
|
661
|
+
|
|
662
|
+
/**
|
|
663
|
+
* Animation tokens extracted from Stilts Design System
|
|
664
|
+
*/
|
|
665
|
+
declare const durations: {
|
|
666
|
+
readonly instant: "0ms";
|
|
667
|
+
readonly fast: "100ms";
|
|
668
|
+
readonly normal: "200ms";
|
|
669
|
+
readonly moderate: "300ms";
|
|
670
|
+
readonly slow: "400ms";
|
|
671
|
+
readonly slower: "500ms";
|
|
672
|
+
readonly slowest: "700ms";
|
|
673
|
+
readonly glacial: "1000ms";
|
|
674
|
+
};
|
|
675
|
+
declare const easings: {
|
|
676
|
+
readonly linear: "linear";
|
|
677
|
+
readonly in: "cubic-bezier(0.4, 0, 1, 1)";
|
|
678
|
+
readonly out: "cubic-bezier(0, 0, 0.2, 1)";
|
|
679
|
+
readonly inOut: "cubic-bezier(0.4, 0, 0.2, 1)";
|
|
680
|
+
readonly spring: "cubic-bezier(0.175, 0.885, 0.32, 1.275)";
|
|
681
|
+
readonly bounce: "cubic-bezier(0.68, -0.55, 0.265, 1.55)";
|
|
682
|
+
readonly smooth: "cubic-bezier(0.25, 0.1, 0.25, 1)";
|
|
683
|
+
readonly snappy: "cubic-bezier(0.2, 0, 0, 1)";
|
|
684
|
+
readonly enter: "cubic-bezier(0, 0, 0.2, 1)";
|
|
685
|
+
readonly exit: "cubic-bezier(0.4, 0, 1, 1)";
|
|
686
|
+
};
|
|
687
|
+
type DurationToken = typeof durations;
|
|
688
|
+
type EasingToken = typeof easings;
|
|
689
|
+
|
|
690
|
+
/**
|
|
691
|
+
* Shared types for Stilts Design System
|
|
692
|
+
*/
|
|
693
|
+
interface BaseComponentProps {
|
|
694
|
+
className?: string;
|
|
695
|
+
style?: React.CSSProperties;
|
|
696
|
+
children?: React.ReactNode;
|
|
697
|
+
}
|
|
698
|
+
interface LinkLike {
|
|
699
|
+
href: string;
|
|
700
|
+
label: string;
|
|
701
|
+
}
|
|
702
|
+
type Theme = 'light' | 'dark';
|
|
703
|
+
type Alignment = 'left' | 'center' | 'right';
|
|
704
|
+
type GridCols = 2 | 3 | 4;
|
|
705
|
+
|
|
706
|
+
export { type Alignment, type BaseComponentProps, BeforeAfter, CaseStudyBreakdown, type ColorToken, CompactContactForm, ContactForm, ContentPage, type DurationToken, type EasingToken, FullWidthImage, type GridCols, ImageGrid, ImageGridModal, IndustryGrid, index$2 as Layout, type LinkLike, MainNav, PageHero, index as Patterns, ProblemStatement, ProcessSteps, ProcessTimeline, RelatedProjects, type SectionPaddingToken, ServiceSection, SolutionSummary, type SpacingToken, StatBar, TeamCredits, TeamGrid, Testimonial, TextBlock, type Theme, ToastContainer as Toast, index$1 as UI, VideoHero, VideoSection, colors, durations, easings, sectionPadding, spacing };
|