-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtypes.ts
More file actions
155 lines (131 loc) · 3.88 KB
/
types.ts
File metadata and controls
155 lines (131 loc) · 3.88 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
import React, { ReactElement, SVGProps } from 'react';
// Original NavLinkMegaMenuContent (kept for reference or other nav items if not all are migrated)
// export interface NavLinkMegaMenuContent {
// mainLinks: Array<{ title: string; href: string; description?: string }>;
// featured?: {
// title: string;
// description: string;
// imageUrl: string;
// linkUrl: string;
// linkText: string;
// };
// }
// New types for the redesigned Mega Menu
export interface MegaMenuSubLink {
title: string;
imageUrl: string;
href: string;
description?: string; // Added optional description
}
export interface MegaMenuItemFeatured {
title: string;
description: string;
imageUrl: string;
linkUrl?: string; // Optional URL for the "See More" link
linkText?: string; // Optional text for the "See More" link
}
export interface MegaMenuItem {
id: string; // e.g., 'cloud-solutions', 'cybersecurity'
title: string; // Text for the left-rail link, e.g., "Cloud Solutions"
featured: MegaMenuItemFeatured;
subLinks: MegaMenuSubLink[];
}
export interface NewNavLinkMegaMenuContent {
items: MegaMenuItem[];
}
export interface NavItem {
id: string;
title: string;
path: string;
// Use NewNavLinkMegaMenuContent for items that have the new mega menu design
// Use original NavLinkMegaMenuContent for others, or update all if all mega menus change
megaMenuContent?: NewNavLinkMegaMenuContent; // This will be used by specified nav items
}
export interface HeroSlideItem {
id: number;
title: string;
description: string;
image: string;
}
export interface ServiceItem {
id: number;
title: string;
description: string;
icon: string; // Path to PNG image
}
export interface ChatMessage {
id: string;
text: string;
sender: 'user' | 'bot';
timestamp: Date;
groundingChunks?: GroundingChunk[];
isLoading?: boolean; // Added for bot responses
}
export interface PartnerLogo {
id: number;
src: string;
alt: string;
}
export interface GroundingChunkWeb {
uri: string;
title: string;
}
export interface GroundingChunk {
web?: GroundingChunkWeb;
}
export interface GroundingMetadata {
groundingChunks?: GroundingChunk[];
}
export interface Candidate {
groundingMetadata?: GroundingMetadata;
}
export interface GenerateContentResponseWithGrounding {
text: string;
candidates?: Candidate[];
}
export interface SuggestedDomain {
name: string;
tld: string; // e.g. ".com", ".io"
}
// Type for Microsoft Productivity Section
export type ProductTileColor = 'red' | 'green' | 'blue' | 'yellow' | 'purple'; // Microsoft brand colors
export interface ProductTile {
id: 'm365' | 'teams' | 'azure' | 'copilot';
title: string;
tagline: string;
longDescription: string;
color: ProductTileColor;
heroCopy: { header: string; bullets: string[] }[];
planDetails: { header: string; bullets: string[] }[];
pricePerUser: number;
icon?: React.FC<React.SVGProps<SVGSVGElement>>; // Optional: for an icon on the cube
}
// Interface for items in the cart
export interface CartItem extends ProductTile {
quantity: number;
}
// Interface for Client Review Section
export interface ReviewItem {
id: number;
imageUrl: string;
metric: string;
positionClasses: string; // Tailwind classes for positioning (e.g., 'top-10 left-20')
sizeClasses: string; // Tailwind classes for size (e.g., 'w-32 h-32')
zIndex?: number; // Optional z-index
}
// Cookie Consent Types
export type CookieCategoryId = 'necessary' | 'analytics' | 'marketing' | 'preferences';
export interface CookieCategory {
id: CookieCategoryId;
name: string;
description: string;
required?: boolean; // If true, cannot be disabled by the user
}
export interface CookieConsentPreferences {
[key: string]: boolean; // Category ID maps to enabled status
}
export interface CookieConsent {
hasMadeChoice: boolean;
preferences: CookieConsentPreferences;
timestamp?: number;
}