hds-web 1.16.4 → 1.16.5
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/dist/index.css +2 -2
- package/dist/index.es.css +2 -2
- package/dist/index.es.js +5 -5
- package/dist/index.js +5 -5
- package/package.json +1 -1
- package/src/HDS/assets/icons/x-close.svg +1 -1
- package/src/HDS/components/Cards/Dropdown/v3Dropdown.js +2 -2
- package/src/HDS/components/Headers/v3Header.js +394 -970
- package/src/styles/tailwind.css +39 -78
@@ -33,840 +33,155 @@ function classNames(...classes) {
|
|
33
33
|
return classes.filter(Boolean).join(' ')
|
34
34
|
}
|
35
35
|
|
36
|
+
|
37
|
+
|
36
38
|
export default function V3Header(props) {
|
37
39
|
const [mobileNavOpen, setmobileNavOpen] = useState(false);
|
38
40
|
const [isProduct, setIsProduct] = useState(false)
|
39
41
|
const [isDeveloper, setIsDeveloper] = useState(false)
|
40
42
|
const [isCompany, setIsCompany] = useState(false)
|
41
43
|
const [currentTab, setCurrentTab] = useState('')
|
44
|
+
const [isShown, setIsShown] = useState(false)
|
42
45
|
const [isArrowActive, setIsArrowActive] = useState(false)
|
43
46
|
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
childArray: [
|
65
|
-
{
|
66
|
-
description: '',
|
67
|
-
href: '#',
|
68
|
-
icon: "lightning01",
|
69
|
-
name: 'Instant API',
|
70
|
-
strokeClass: 'stroke-blue-500'
|
71
|
-
},
|
72
|
-
{
|
73
|
-
description: '',
|
74
|
-
href: '#',
|
75
|
-
icon: 'data',
|
76
|
-
name: 'Federation',
|
77
|
-
strokeClass: 'stroke-blue-500'
|
78
|
-
},
|
79
|
-
{
|
80
|
-
description: '',
|
81
|
-
href: '#',
|
82
|
-
icon: 'eye',
|
83
|
-
name: 'Authorization',
|
84
|
-
strokeClass: 'stroke-blue-500'
|
85
|
-
},
|
86
|
-
{
|
87
|
-
description: '',
|
88
|
-
href: '#',
|
89
|
-
icon: 'shieldtick',
|
90
|
-
name: 'API Security',
|
91
|
-
strokeClass: 'stroke-blue-500'
|
92
|
-
},
|
93
|
-
{
|
94
|
-
description: '',
|
95
|
-
href: '#',
|
96
|
-
icon: 'speedometer03',
|
97
|
-
name: 'Performance',
|
98
|
-
strokeClass: 'stroke-blue-500'
|
99
|
-
},
|
100
|
-
{
|
101
|
-
description: '',
|
102
|
-
href: '#',
|
103
|
-
icon: "barchartsquare01",
|
104
|
-
name: 'Observability',
|
105
|
-
strokeClass: 'stroke-blue-500'
|
106
|
-
}
|
107
|
-
],
|
108
|
-
label: 'CAPABILITIES'
|
109
|
-
},
|
110
|
-
{
|
111
|
-
childArray: [
|
112
|
-
{
|
113
|
-
description: '',
|
114
|
-
href: '#',
|
115
|
-
icon: 'database01',
|
116
|
-
name: 'All DBs',
|
117
|
-
strokeClass: 'stroke-blue-500'
|
118
|
-
},
|
119
|
-
{
|
120
|
-
description: '',
|
121
|
-
href: '#',
|
122
|
-
icon: 'checksquare',
|
123
|
-
name: 'Planned DBs',
|
124
|
-
strokeClass: 'stroke-blue-500'
|
125
|
-
},
|
126
|
-
],
|
127
|
-
label: 'Integrations'
|
128
|
-
}
|
129
|
-
]}
|
130
|
-
/>
|
131
|
-
</div>
|
132
|
-
</div>
|
133
|
-
)
|
134
|
-
const dropdownB = (solutions) => (
|
135
|
-
<div>
|
136
|
-
<div>
|
137
|
-
<hr className='w-full h-9 border-0 ' />
|
138
|
-
</div>
|
139
|
-
|
140
|
-
|
141
|
-
<div className=" p-2 bg-neutral-150 rounded-3xl ">
|
142
|
-
<V3Dropdown
|
143
|
-
|
144
|
-
secondaryCardArr={[
|
145
|
-
{
|
146
|
-
childArray: [
|
147
|
-
{
|
148
|
-
description: '',
|
149
|
-
href: '#',
|
150
|
-
icon: "file02",
|
151
|
-
name: 'Documentation',
|
152
|
-
strokeClass: 'stroke-blue-500'
|
153
|
-
},
|
154
|
-
{
|
155
|
-
description: '',
|
156
|
-
href: '#',
|
157
|
-
icon: 'hasura',
|
158
|
-
name: 'Hasura hub',
|
159
|
-
strokeClass: 'stroke-blue-500'
|
160
|
-
},
|
161
|
-
{
|
162
|
-
description: '',
|
163
|
-
href: '#',
|
164
|
-
icon: 'route',
|
165
|
-
name: 'Guides',
|
166
|
-
strokeClass: 'stroke-blue-500'
|
167
|
-
},
|
168
|
-
{
|
169
|
-
description: '',
|
170
|
-
href: '#',
|
171
|
-
icon: 'asterisk02',
|
172
|
-
name: 'GraphQL hub',
|
173
|
-
strokeClass: 'stroke-blue-500'
|
174
|
-
},
|
175
|
-
{
|
176
|
-
description: '',
|
177
|
-
href: '#',
|
178
|
-
icon: "codebrowser",
|
179
|
-
name: 'GraphQL',
|
180
|
-
strokeClass: 'stroke-blue-500'
|
181
|
-
},
|
182
|
-
{
|
183
|
-
description: '',
|
184
|
-
href: '#',
|
185
|
-
icon: 'gitpullrequest',
|
186
|
-
name: 'Changelog',
|
187
|
-
strokeClass: 'stroke-blue-500'
|
188
|
-
}
|
189
|
-
],
|
190
|
-
label: 'BUILD'
|
191
|
-
},
|
192
|
-
{
|
193
|
-
|
194
|
-
childArray: [
|
195
|
-
{
|
196
|
-
description: '',
|
197
|
-
href: '#',
|
198
|
-
icon: 'bookopen01',
|
199
|
-
name: 'Blog',
|
200
|
-
strokeClass: 'stroke-blue-500'
|
201
|
-
},
|
202
|
-
{
|
203
|
-
description: '',
|
204
|
-
href: '#',
|
205
|
-
icon: 'videorecorder',
|
206
|
-
name: 'Tech talks',
|
207
|
-
strokeClass: 'stroke-blue-500'
|
208
|
-
},
|
209
|
-
{
|
210
|
-
description: '',
|
211
|
-
href: '#',
|
212
|
-
icon: 'graduationhat02',
|
213
|
-
name: 'Tutorials',
|
214
|
-
strokeClass: 'stroke-blue-500'
|
215
|
-
},
|
216
|
-
{
|
217
|
-
description: '',
|
218
|
-
href: '#',
|
219
|
-
icon: 'calendarplus02',
|
220
|
-
name: 'Events',
|
221
|
-
strokeClass: 'stroke-blue-500'
|
222
|
-
},
|
223
|
-
{
|
224
|
-
description: '',
|
225
|
-
href: '#',
|
226
|
-
icon: 'box',
|
227
|
-
name: 'Resources',
|
228
|
-
strokeClass: 'stroke-blue-500'
|
229
|
-
},
|
230
|
-
],
|
231
|
-
label: 'Learn',
|
232
|
-
|
233
|
-
},
|
234
|
-
{
|
235
|
-
|
236
|
-
childArray: [
|
237
|
-
{
|
238
|
-
description: '',
|
239
|
-
href: '#',
|
240
|
-
icon: 'users01',
|
241
|
-
name: 'Community',
|
242
|
-
strokeClass: 'stroke-blue-500'
|
243
|
-
},
|
244
|
-
{
|
245
|
-
description: '',
|
246
|
-
href: '#',
|
247
|
-
icon: 'cube01',
|
248
|
-
name: 'Discord',
|
249
|
-
strokeClass: 'stroke-blue-500'
|
250
|
-
},
|
251
|
-
{
|
252
|
-
description: '',
|
253
|
-
href: '#',
|
254
|
-
icon: 'cube01',
|
255
|
-
name: 'Forum',
|
256
|
-
strokeClass: 'stroke-blue-500'
|
257
|
-
},
|
258
|
-
{
|
259
|
-
description: '',
|
260
|
-
href: '#',
|
261
|
-
icon: 'cube01',
|
262
|
-
name: 'Meetups',
|
263
|
-
strokeClass: 'stroke-blue-500'
|
264
|
-
},
|
265
|
-
{
|
266
|
-
description: '',
|
267
|
-
href: '#',
|
268
|
-
icon: 'hand',
|
269
|
-
name: 'Support',
|
270
|
-
strokeClass: 'stroke-blue-500'
|
271
|
-
},
|
272
|
-
],
|
273
|
-
label: 'Connect',
|
274
|
-
|
275
|
-
},
|
276
|
-
]}
|
277
|
-
|
278
|
-
tertiaryCard={[
|
279
|
-
{
|
280
|
-
title: 'HasuraCon 2023 is here!',
|
281
|
-
|
282
|
-
title_colorClass: 'text-neutral-900',
|
283
|
-
img_url: 'https://res.cloudinary.com/hasura-cms-uploads/image/upload/v1687040455/hascon_211daeb83a.png'
|
284
|
-
},
|
285
|
-
{
|
286
|
-
title: 'Top 6 Architecture Trends for API Development',
|
287
|
-
|
288
|
-
title_colorClass: 'text-neutral-900',
|
289
|
-
img_url: 'https://res.cloudinary.com/hasura-cms-uploads/image/upload/v1687040455/api_trends_0a035678d8.png'
|
290
|
-
},
|
291
|
-
{
|
292
|
-
title: 'Announcing Hasura integration with Snowflake',
|
293
|
-
|
294
|
-
title_colorClass: 'text-neutral-900',
|
295
|
-
img_url: 'https://res.cloudinary.com/hasura-cms-uploads/image/upload/v1687040455/snowflake_def20494db.png'
|
296
|
-
},
|
297
|
-
]}
|
298
|
-
/>
|
299
|
-
</div>
|
300
|
-
</div>
|
301
|
-
)
|
302
|
-
const dropdownC = (solutions) => (
|
47
|
+
//testing
|
48
|
+
const [dropdownVisibility, setDropdownVisibility] = useState(Array(props.HEADER_LIST.length).fill(false));
|
49
|
+
|
50
|
+
const handleDropdownEnter = (index) => {
|
51
|
+
setDropdownVisibility((prevVisibility) => {
|
52
|
+
const updatedVisibility = [...prevVisibility];
|
53
|
+
updatedVisibility[index] = true;
|
54
|
+
return updatedVisibility;
|
55
|
+
});
|
56
|
+
};
|
57
|
+
|
58
|
+
const handleDropdownLeave = (index) => {
|
59
|
+
setDropdownVisibility((prevVisibility) => {
|
60
|
+
const updatedVisibility = [...prevVisibility];
|
61
|
+
updatedVisibility[index] = false;
|
62
|
+
return updatedVisibility;
|
63
|
+
});
|
64
|
+
};
|
65
|
+
|
66
|
+
const renderDropdown = (primaryCard, secondaryCardArr, tertiaryCard) => (
|
303
67
|
<div>
|
304
68
|
<div>
|
305
|
-
<hr className=
|
69
|
+
<hr className="w-full h-9 border-0" />
|
306
70
|
</div>
|
307
|
-
<div className="
|
71
|
+
<div className="p-2 bg-neutral-150 rounded-3xl">
|
308
72
|
<V3Dropdown
|
309
|
-
|
310
|
-
secondaryCardArr={
|
311
|
-
|
312
|
-
childArray: [
|
313
|
-
{
|
314
|
-
description: '',
|
315
|
-
href: '#',
|
316
|
-
icon: "pentool02",
|
317
|
-
name: 'Our story',
|
318
|
-
strokeClass: 'stroke-blue-500'
|
319
|
-
},
|
320
|
-
{
|
321
|
-
description: '',
|
322
|
-
href: '#',
|
323
|
-
icon: 'data',
|
324
|
-
name: 'Partners',
|
325
|
-
strokeClass: 'stroke-blue-500'
|
326
|
-
},
|
327
|
-
{
|
328
|
-
description: '',
|
329
|
-
href: '#',
|
330
|
-
icon: 'hearthand',
|
331
|
-
name: 'Work at Hasura',
|
332
|
-
strokeClass: 'stroke-blue-500'
|
333
|
-
},
|
334
|
-
{
|
335
|
-
description: '',
|
336
|
-
href: '#',
|
337
|
-
icon: 'headingsquare',
|
338
|
-
name: 'News room',
|
339
|
-
strokeClass: 'stroke-blue-500'
|
340
|
-
},
|
341
|
-
{
|
342
|
-
description: '',
|
343
|
-
href: '#',
|
344
|
-
icon: 'star06',
|
345
|
-
name: 'Brand',
|
346
|
-
strokeClass: 'stroke-blue-500'
|
347
|
-
},
|
348
|
-
|
349
|
-
],
|
350
|
-
label: 'Company'
|
351
|
-
},
|
352
|
-
|
353
|
-
]}
|
354
|
-
|
355
|
-
tertiaryCard={[
|
356
|
-
{
|
357
|
-
title: 'HasuraCon 2023 is here!',
|
358
|
-
|
359
|
-
title_colorClass: 'text-neutral-900',
|
360
|
-
img_url: 'https://res.cloudinary.com/hasura-cms-uploads/image/upload/v1687040455/hascon_211daeb83a.png'
|
361
|
-
},
|
362
|
-
{
|
363
|
-
title: 'Top 6 Architecture Trends for API Development',
|
364
|
-
|
365
|
-
title_colorClass: 'text-neutral-900',
|
366
|
-
img_url: 'https://res.cloudinary.com/hasura-cms-uploads/image/upload/v1687040455/api_trends_0a035678d8.png'
|
367
|
-
},
|
368
|
-
{
|
369
|
-
title: 'Announcing Hasura integration with Snowflake',
|
370
|
-
|
371
|
-
title_colorClass: 'text-neutral-900',
|
372
|
-
img_url: 'https://res.cloudinary.com/hasura-cms-uploads/image/upload/v1687040455/snowflake_def20494db.png'
|
373
|
-
},
|
374
|
-
]}
|
73
|
+
primaryCard={primaryCard}
|
74
|
+
secondaryCardArr={secondaryCardArr}
|
75
|
+
tertiaryCard={tertiaryCard}
|
375
76
|
/>
|
376
77
|
</div>
|
377
78
|
</div>
|
378
|
-
)
|
79
|
+
);
|
379
80
|
|
380
|
-
const
|
381
|
-
|
382
|
-
{/* <div id='github_button' className='flex items-center justify-center -mb-2'>
|
383
|
-
<GithubWidget />
|
384
|
-
</div> */}
|
81
|
+
const renderDropdownContainer = (headerList, id) => {
|
82
|
+
const { title, primaryCard, secondaryCardArr, tertiaryCard } = headerList[id];
|
385
83
|
|
386
|
-
|
387
|
-
|
84
|
+
return (
|
85
|
+
<div id={`dropdown_${id}`}>
|
86
|
+
{headerList[id] && (
|
388
87
|
<div
|
389
|
-
className="relative
|
390
|
-
|
391
|
-
|
392
|
-
onMouseLeave={() => setIsProduct(false)}
|
393
|
-
|
88
|
+
className="relative"
|
89
|
+
onMouseEnter={() => handleDropdownEnter(id)}
|
90
|
+
onMouseLeave={() => handleDropdownLeave(id)}
|
394
91
|
>
|
395
92
|
<div
|
396
93
|
className={classNames(
|
397
94
|
'group inline-flex items-center rounded-md bg-white hover:text-gray-900 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:ring-offset-2',
|
398
|
-
|
95
|
+
dropdownVisibility[id] ? '' : 'text-gray-500'
|
399
96
|
)}
|
400
97
|
>
|
401
|
-
|
402
98
|
<div className="flex flex-col items-center cursor-pointer">
|
403
99
|
<Typography
|
404
|
-
className=
|
405
|
-
textStyle="body3c-medium"
|
100
|
+
className="hover:text-blue-600"
|
101
|
+
textStyle="body3c-medium"
|
102
|
+
>
|
103
|
+
{`${title} `}
|
104
|
+
</Typography>
|
406
105
|
</div>
|
407
|
-
|
408
106
|
</div>
|
409
|
-
<motion.div
|
410
|
-
|
411
|
-
|
412
|
-
>
|
413
|
-
{isProduct && (
|
107
|
+
<motion.div>
|
108
|
+
{dropdownVisibility[id] && (
|
414
109
|
<div
|
415
|
-
id=
|
416
|
-
|
417
|
-
|
418
|
-
|
419
|
-
|
420
|
-
() => setIsProduct(false)
|
421
|
-
|
422
|
-
}
|
423
|
-
onScroll={() => setIsProduct(false)} // Keep isProduct true when hovering over dropdown content
|
110
|
+
id={`dropdown_${id}_content`}
|
111
|
+
className="left-0 z-20"
|
112
|
+
onMouseEnter={() => handleDropdownEnter(id)}
|
113
|
+
onMouseLeave={() => handleDropdownLeave(id)}
|
114
|
+
onScroll={() => handleDropdownLeave(id)}
|
424
115
|
>
|
425
116
|
<motion.div
|
426
117
|
initial={{ opacity: 0 }}
|
427
118
|
animate={{ opacity: 1 }}
|
428
|
-
transition={{ ease:
|
429
|
-
className=
|
430
|
-
|
119
|
+
transition={{ ease: 'easeInOut', duration: 0.1 }}
|
120
|
+
className="absolute -left-[137px] z-[2] transform"
|
121
|
+
|
122
|
+
>
|
123
|
+
{renderDropdown(
|
124
|
+
primaryCard,
|
125
|
+
secondaryCardArr,
|
126
|
+
tertiaryCard
|
127
|
+
)}
|
431
128
|
</motion.div>
|
432
129
|
</div>
|
433
|
-
|
434
130
|
)}
|
435
131
|
</motion.div>
|
436
132
|
</div>
|
437
133
|
)}
|
438
134
|
</div>
|
439
|
-
|
440
|
-
|
441
|
-
<div
|
442
|
-
className=""
|
443
|
-
onMouseEnter={() => setIsDeveloper(true)}
|
444
|
-
onMouseLeave={() => setIsDeveloper(false)}
|
135
|
+
);
|
136
|
+
};
|
445
137
|
|
446
|
-
>
|
447
|
-
<div
|
448
|
-
className={classNames(
|
449
|
-
'group inline-flex items-center rounded-md bg-white hover:text-gray-900 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:ring-offset-2',
|
450
|
-
isDeveloper ? '' : 'text-gray-500',
|
451
|
-
)}
|
452
|
-
>
|
453
|
-
<div className="flex flex-col items-center h-full cursor-pointer">
|
454
|
-
<Typography className='hover:text-blue-600' textStyle="body3c-medium">{`${HEADER_LIST[1]['title']}`}</Typography>
|
455
|
-
</div>
|
456
|
-
</div>
|
457
|
-
{isDeveloper && (
|
458
|
-
<div
|
459
|
-
|
460
|
-
className="shadow-home-drop "
|
461
|
-
onMouseEnter={() => setIsDeveloper(true)}
|
462
|
-
onMouseLeave={() => setIsDeveloper(false)}
|
463
|
-
onScroll={() => setIsDeveloper(false)} // Keep isProduct true when hovering over dropdown content
|
464
|
-
>
|
465
|
-
<motion.div
|
466
|
-
initial={{ opacity: 0 }}
|
467
|
-
animate={{ opacity: 1 }}
|
468
|
-
transition={{ ease: "easeInOut", duration: 0.1 }}
|
469
|
-
className='absolute -left-[218px] z-[2]'>
|
470
|
-
{dropdownB(HEADER_LIST[1]['titleDropdown'])}
|
471
|
-
</motion.div>
|
472
|
-
</div>
|
473
|
-
)}
|
474
|
-
</div>
|
475
|
-
)}
|
476
|
-
</div>
|
477
|
-
|
478
|
-
<div id="dropdown_company" >
|
479
|
-
{HEADER_LIST[3] && (
|
480
|
-
<div
|
481
|
-
className="relative"
|
482
|
-
onMouseEnter={() => setIsCompany(true)}
|
483
|
-
onMouseLeave={() => setIsCompany(false)}
|
484
|
-
|
485
|
-
>
|
486
|
-
<div
|
487
|
-
className={classNames(
|
488
|
-
'group inline-flex items-center rounded-md bg-white hover:text-gray-900 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:ring-offset-2',
|
489
|
-
isCompany ? '' : 'text-gray-500',
|
490
|
-
)}
|
491
|
-
>
|
492
|
-
<div className="flex flex-col items-center h-full cursor-pointer">
|
493
|
-
<Typography className='hover:text-blue-600' textStyle="body3c-medium">{`${HEADER_LIST[3]['title']}`}</Typography>
|
494
|
-
</div>
|
495
|
-
</div>
|
496
|
-
{isCompany && (
|
497
|
-
<div
|
498
|
-
className="left-0 z-20 shadow-home-drop "
|
499
|
-
onMouseEnter={() => setIsCompany(true)}
|
500
|
-
onMouseLeave={() => setIsCompany(false)}
|
501
|
-
onScroll={() => setIsCompany(false)} // Keep isProduct true when hovering over dropdown content
|
502
|
-
>
|
503
|
-
<motion.div
|
504
|
-
initial={{ opacity: 0 }}
|
505
|
-
animate={{ opacity: 1 }}
|
506
|
-
transition={{ ease: "easeInOut", duration: 0.1 }}
|
507
|
-
className='absolute -left-[50px] z-[2] transform'>
|
508
|
-
{dropdownC(HEADER_LIST[3]['titleDropdown'])}
|
509
|
-
</motion.div>
|
510
|
-
</div>
|
511
|
-
)}
|
512
|
-
</div>
|
513
|
-
)}
|
514
|
-
</div>
|
515
|
-
<div id="dropdown_customers" >
|
516
|
-
{HEADER_LIST[2] && (
|
517
|
-
<div
|
518
|
-
className={classNames(
|
519
|
-
'group inline-flex items-center rounded-md bg-white hover:text-gray-900 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:ring-offset-2'
|
520
|
-
)}
|
521
|
-
>
|
522
|
-
<div className="flex flex-col items-center h-full cursor-pointer">
|
523
|
-
<Typography className='hover:text-blue-600' textStyle="body3c-medium">{`${HEADER_LIST[2]['title']}`}</Typography>
|
524
|
-
</div>
|
525
|
-
</div>
|
526
|
-
|
527
|
-
)}
|
528
|
-
</div>
|
529
|
-
<div id="dropdown_pricing" >
|
530
|
-
{HEADER_LIST[4] && (
|
531
|
-
<div
|
532
|
-
className={classNames(
|
533
|
-
'group inline-flex items-center rounded-md bg-white hover:text-gray-900 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:ring-offset-2'
|
534
|
-
)}
|
535
|
-
>
|
536
|
-
<div className="flex flex-col items-center h-full cursor-pointer">
|
537
|
-
<Typography className='hover:text-blue-600 ' textStyle="body3c-medium">{`${HEADER_LIST[4]['title']}`}</Typography>
|
538
|
-
</div>
|
539
|
-
</div>
|
540
|
-
)}
|
541
|
-
</div>
|
542
138
|
|
139
|
+
const headerListfunction = (headerList) => (
|
140
|
+
<>
|
141
|
+
{renderDropdownContainer(headerList, 0)}
|
142
|
+
{renderDropdownContainer(headerList, 1)}
|
143
|
+
{renderDropdownContainer(headerList, 3)}
|
543
144
|
</>
|
544
145
|
);
|
545
146
|
|
546
|
-
|
147
|
+
|
148
|
+
//testing
|
149
|
+
|
150
|
+
const mobileNav = (HEADER_LIST) => (
|
547
151
|
<div className='pt-4 '>
|
548
152
|
<div className='transform transition-all'>
|
549
153
|
{isProduct && (
|
550
154
|
<motion.div
|
551
155
|
className='product_mobile mr-0'>
|
552
|
-
|
553
|
-
|
554
|
-
|
555
|
-
|
556
|
-
|
557
|
-
|
558
|
-
|
559
|
-
secondaryBtn: [
|
560
|
-
{ cta_leftVariantIcon: 'home03', cta_leftVariantIconColor: '#6C737F', cta_text: 'Compare plans' }
|
561
|
-
],
|
562
|
-
}}
|
563
|
-
secondaryCardArr={[
|
564
|
-
{
|
565
|
-
split: true,
|
566
|
-
childArray: [
|
567
|
-
{
|
568
|
-
description: '',
|
569
|
-
href: '#',
|
570
|
-
icon: "lightning01",
|
571
|
-
name: 'Instant API',
|
572
|
-
strokeClass: 'stroke-blue-500'
|
573
|
-
},
|
574
|
-
{
|
575
|
-
description: '',
|
576
|
-
href: '#',
|
577
|
-
icon: 'data',
|
578
|
-
name: 'Federation',
|
579
|
-
strokeClass: 'stroke-blue-500'
|
580
|
-
},
|
581
|
-
{
|
582
|
-
description: '',
|
583
|
-
href: '#',
|
584
|
-
icon: 'eye',
|
585
|
-
name: 'Authorization',
|
586
|
-
strokeClass: 'stroke-blue-500'
|
587
|
-
},
|
588
|
-
{
|
589
|
-
description: '',
|
590
|
-
href: '#',
|
591
|
-
icon: 'shieldtick',
|
592
|
-
name: 'API Security',
|
593
|
-
strokeClass: 'stroke-blue-500'
|
594
|
-
},
|
595
|
-
{
|
596
|
-
description: '',
|
597
|
-
href: '#',
|
598
|
-
icon: 'speedometer03',
|
599
|
-
name: 'Performance',
|
600
|
-
strokeClass: 'stroke-blue-500'
|
601
|
-
},
|
602
|
-
{
|
603
|
-
description: '',
|
604
|
-
href: '#',
|
605
|
-
icon: "barchartsquare01",
|
606
|
-
name: 'Observability',
|
607
|
-
strokeClass: 'stroke-blue-500'
|
608
|
-
}
|
609
|
-
],
|
610
|
-
label: 'CAPABILITIES'
|
611
|
-
},
|
612
|
-
{
|
613
|
-
childArray: [
|
614
|
-
{
|
615
|
-
description: '',
|
616
|
-
href: '#',
|
617
|
-
icon: 'cube01',
|
618
|
-
name: 'All DBs',
|
619
|
-
strokeClass: 'stroke-blue-500'
|
620
|
-
},
|
621
|
-
{
|
622
|
-
description: '',
|
623
|
-
href: '#',
|
624
|
-
icon: 'cube01',
|
625
|
-
name: 'Planned DBs',
|
626
|
-
strokeClass: 'stroke-blue-500'
|
627
|
-
},
|
628
|
-
],
|
629
|
-
label: 'Integrations'
|
630
|
-
}
|
631
|
-
]}
|
632
|
-
/>
|
633
|
-
</div>
|
156
|
+
|
157
|
+
<V3Dropdown
|
158
|
+
primaryCard={HEADER_LIST[0]['primaryCard']}
|
159
|
+
secondaryCardArr={HEADER_LIST[0]['secondaryCardArr']}
|
160
|
+
tertiaryCard={HEADER_LIST[0]['tertiaryCard']}
|
161
|
+
/>
|
162
|
+
|
634
163
|
</motion.div>)}
|
635
164
|
{isDeveloper && (
|
636
165
|
<div className='product_developer'>
|
637
166
|
<V3Dropdown
|
638
|
-
|
639
|
-
secondaryCardArr={[
|
640
|
-
|
641
|
-
childArray: [
|
642
|
-
{
|
643
|
-
description: '',
|
644
|
-
href: '#',
|
645
|
-
icon: "lightning01",
|
646
|
-
name: 'Documentation',
|
647
|
-
strokeClass: 'stroke-blue-500'
|
648
|
-
},
|
649
|
-
{
|
650
|
-
description: '',
|
651
|
-
href: '#',
|
652
|
-
icon: 'data',
|
653
|
-
name: 'Hasura hub',
|
654
|
-
strokeClass: 'stroke-blue-500'
|
655
|
-
},
|
656
|
-
{
|
657
|
-
description: '',
|
658
|
-
href: '#',
|
659
|
-
icon: 'eye',
|
660
|
-
name: 'Guides',
|
661
|
-
strokeClass: 'stroke-blue-500'
|
662
|
-
},
|
663
|
-
{
|
664
|
-
description: '',
|
665
|
-
href: '#',
|
666
|
-
icon: 'shieldtick',
|
667
|
-
name: 'GraphQL hub',
|
668
|
-
strokeClass: 'stroke-blue-500'
|
669
|
-
},
|
670
|
-
{
|
671
|
-
description: '',
|
672
|
-
href: '#',
|
673
|
-
icon: 'speedometer03',
|
674
|
-
name: 'Changelog',
|
675
|
-
strokeClass: 'stroke-blue-500'
|
676
|
-
},
|
677
|
-
{
|
678
|
-
description: '',
|
679
|
-
href: '#',
|
680
|
-
icon: "barchartsquare01",
|
681
|
-
name: 'GraphQL',
|
682
|
-
strokeClass: 'stroke-blue-500'
|
683
|
-
}
|
684
|
-
],
|
685
|
-
label: 'BUILD'
|
686
|
-
},
|
687
|
-
{
|
688
|
-
|
689
|
-
childArray: [
|
690
|
-
{
|
691
|
-
description: '',
|
692
|
-
href: '#',
|
693
|
-
icon: 'cube01',
|
694
|
-
name: 'Blog',
|
695
|
-
strokeClass: 'stroke-blue-500'
|
696
|
-
},
|
697
|
-
{
|
698
|
-
description: '',
|
699
|
-
href: '#',
|
700
|
-
icon: 'cube01',
|
701
|
-
name: 'Tech talks',
|
702
|
-
strokeClass: 'stroke-blue-500'
|
703
|
-
},
|
704
|
-
{
|
705
|
-
description: '',
|
706
|
-
href: '#',
|
707
|
-
icon: 'cube01',
|
708
|
-
name: 'Tutorials',
|
709
|
-
strokeClass: 'stroke-blue-500'
|
710
|
-
},
|
711
|
-
{
|
712
|
-
description: '',
|
713
|
-
href: '#',
|
714
|
-
icon: 'cube01',
|
715
|
-
name: 'Events',
|
716
|
-
strokeClass: 'stroke-blue-500'
|
717
|
-
},
|
718
|
-
{
|
719
|
-
description: '',
|
720
|
-
href: '#',
|
721
|
-
icon: 'cube01',
|
722
|
-
name: 'Resources',
|
723
|
-
strokeClass: 'stroke-blue-500'
|
724
|
-
},
|
725
|
-
],
|
726
|
-
label: 'Learn',
|
727
|
-
|
728
|
-
},
|
729
|
-
{
|
730
|
-
|
731
|
-
childArray: [
|
732
|
-
{
|
733
|
-
description: '',
|
734
|
-
href: '#',
|
735
|
-
icon: 'cube01',
|
736
|
-
name: 'Community',
|
737
|
-
strokeClass: 'stroke-blue-500'
|
738
|
-
},
|
739
|
-
{
|
740
|
-
description: '',
|
741
|
-
href: '#',
|
742
|
-
icon: 'cube01',
|
743
|
-
name: 'Discord',
|
744
|
-
strokeClass: 'stroke-blue-500'
|
745
|
-
},
|
746
|
-
{
|
747
|
-
description: '',
|
748
|
-
href: '#',
|
749
|
-
icon: 'cube01',
|
750
|
-
name: 'Forum',
|
751
|
-
strokeClass: 'stroke-blue-500'
|
752
|
-
},
|
753
|
-
{
|
754
|
-
description: '',
|
755
|
-
href: '#',
|
756
|
-
icon: 'cube01',
|
757
|
-
name: 'Meetups',
|
758
|
-
strokeClass: 'stroke-blue-500'
|
759
|
-
},
|
760
|
-
{
|
761
|
-
description: '',
|
762
|
-
href: '#',
|
763
|
-
icon: 'cube01',
|
764
|
-
name: 'Support',
|
765
|
-
strokeClass: 'stroke-blue-500'
|
766
|
-
},
|
767
|
-
],
|
768
|
-
label: 'Connect',
|
769
|
-
|
770
|
-
},
|
771
|
-
]}
|
772
|
-
|
773
|
-
tertiaryCard={[
|
774
|
-
{
|
775
|
-
title: 'HasuraCon 2023 is here!',
|
776
|
-
|
777
|
-
title_colorClass: 'text-neutral-900',
|
778
|
-
img_url: 'https://res.cloudinary.com/hasura-cms-uploads/image/upload/v1687040455/hascon_211daeb83a.png'
|
779
|
-
},
|
780
|
-
{
|
781
|
-
title: 'Top 6 Architecture Trends for API Development',
|
782
|
-
|
783
|
-
title_colorClass: 'text-neutral-900',
|
784
|
-
img_url: 'https://res.cloudinary.com/hasura-cms-uploads/image/upload/v1687040455/api_trends_0a035678d8.png'
|
785
|
-
},
|
786
|
-
{
|
787
|
-
title: 'Announcing Hasura integration with Snowflake',
|
788
|
-
|
789
|
-
title_colorClass: 'text-neutral-900',
|
790
|
-
img_url: 'https://res.cloudinary.com/hasura-cms-uploads/image/upload/v1687040455/snowflake_def20494db.png'
|
791
|
-
},
|
792
|
-
]}
|
167
|
+
primaryCard={HEADER_LIST[1]['primaryCard']}
|
168
|
+
secondaryCardArr={HEADER_LIST[1]['secondaryCardArr']}
|
169
|
+
tertiaryCard={HEADER_LIST[1]['tertiaryCard']}
|
793
170
|
/>
|
794
171
|
</div>)
|
795
172
|
}
|
796
173
|
{isCompany && (<div className='product_company'>
|
797
174
|
<V3Dropdown
|
798
|
-
|
799
|
-
secondaryCardArr={[
|
800
|
-
|
801
|
-
childArray: [
|
802
|
-
{
|
803
|
-
description: '',
|
804
|
-
href: '#',
|
805
|
-
icon: "lightning01",
|
806
|
-
name: 'Our story',
|
807
|
-
strokeClass: 'stroke-blue-500'
|
808
|
-
},
|
809
|
-
{
|
810
|
-
description: '',
|
811
|
-
href: '#',
|
812
|
-
icon: 'data',
|
813
|
-
name: 'Partners',
|
814
|
-
strokeClass: 'stroke-blue-500'
|
815
|
-
},
|
816
|
-
{
|
817
|
-
description: '',
|
818
|
-
href: '#',
|
819
|
-
icon: 'eye',
|
820
|
-
name: 'Work at Hasura',
|
821
|
-
strokeClass: 'stroke-blue-500'
|
822
|
-
},
|
823
|
-
{
|
824
|
-
description: '',
|
825
|
-
href: '#',
|
826
|
-
icon: 'shieldtick',
|
827
|
-
name: 'News room',
|
828
|
-
strokeClass: 'stroke-blue-500'
|
829
|
-
},
|
830
|
-
{
|
831
|
-
description: '',
|
832
|
-
href: '#',
|
833
|
-
icon: 'speedometer03',
|
834
|
-
name: 'Brand',
|
835
|
-
strokeClass: 'stroke-blue-500'
|
836
|
-
},
|
837
|
-
|
838
|
-
],
|
839
|
-
label: 'Company'
|
840
|
-
},
|
841
|
-
|
842
|
-
]}
|
843
|
-
|
844
|
-
tertiaryCard={[
|
845
|
-
{
|
846
|
-
title: 'HasuraCon 2023 is here!',
|
847
|
-
|
848
|
-
title_colorClass: 'text-neutral-900',
|
849
|
-
img_url: 'https://res.cloudinary.com/hasura-cms-uploads/image/upload/v1687040455/hascon_211daeb83a.png'
|
850
|
-
},
|
851
|
-
{
|
852
|
-
title: 'Top 6 Architecture Trends for API Development',
|
853
|
-
|
854
|
-
title_colorClass: 'text-neutral-900',
|
855
|
-
img_url: 'https://res.cloudinary.com/hasura-cms-uploads/image/upload/v1687040455/api_trends_0a035678d8.png'
|
856
|
-
},
|
857
|
-
{
|
858
|
-
title: 'Announcing Hasura integration with Snowflake',
|
859
|
-
|
860
|
-
title_colorClass: 'text-neutral-900',
|
861
|
-
img_url: 'https://res.cloudinary.com/hasura-cms-uploads/image/upload/v1687040455/snowflake_def20494db.png'
|
862
|
-
},
|
863
|
-
]}
|
175
|
+
primaryCard={HEADER_LIST[1]['primaryCard']}
|
176
|
+
secondaryCardArr={HEADER_LIST[1]['secondaryCardArr']}
|
177
|
+
tertiaryCard={HEADER_LIST[1]['tertiaryCard']}
|
864
178
|
/>
|
865
179
|
</div>)}
|
866
180
|
</div>
|
867
181
|
</div>
|
868
182
|
)
|
869
183
|
|
184
|
+
|
870
185
|
let class1;
|
871
186
|
let class2;
|
872
187
|
let class3;
|
@@ -936,12 +251,14 @@ export default function V3Header(props) {
|
|
936
251
|
<div className={'h-full ' + ((mobileNavOpen) ? " hds-hidden" : "")}>
|
937
252
|
<AlgoliaSearch {...props} />
|
938
253
|
</div>
|
939
|
-
|
254
|
+
{!(isCompany || isDeveloper || isProduct) &&
|
255
|
+
(<div onClick={() => handleMbDropdownClose()}>
|
940
256
|
<div className=' h-5 mt-3 cursor-pointer' >
|
941
257
|
<div aria-hidden="true" className={`${class1} block absolute h-[2px] w-[15px] bg-neutral-800 transform transition duration-500 ease-in-out`}></div>
|
942
258
|
<div aria-hidden="true" className={`${class3} block absolute h-0.5 w-[15px] bg-neutral-800 transform transition duration-500 ease-in-out`}></div>
|
943
259
|
</div>
|
944
|
-
|
260
|
+
|
261
|
+
</div>)}
|
945
262
|
</div>
|
946
263
|
</div>
|
947
264
|
<div className='hds-hidden tb-l:flex flex-row w-full justify-between items-center'>
|
@@ -951,24 +268,8 @@ export default function V3Header(props) {
|
|
951
268
|
onMouseLeave={() => setIsArrowActive(false)}
|
952
269
|
|
953
270
|
>
|
954
|
-
|
955
|
-
|
956
|
-
{/* <span className="absolute top-8 left-0 w-full">
|
957
|
-
|
958
|
-
{isArrowActive ? (
|
959
|
-
<div
|
960
|
-
className={`w-full relative transition-all duration-500 ${isProduct ? 'left-6' : isDeveloper ? 'left-[108px]' : 'left-[200px]'
|
961
|
-
}`}
|
962
|
-
>
|
963
|
-
{(isProduct || isCompany || isDeveloper) &&
|
964
|
-
|
965
|
-
<Icon height="h-5 w-5 fill-neutral-150" variant="triangle" strokeClass="stroke-neutral-150" />
|
966
|
-
}
|
967
|
-
</div>
|
968
|
-
) : null}
|
969
|
-
</span> */}
|
970
|
-
|
971
|
-
|
271
|
+
{headerListfunction(props.HEADER_LIST)}
|
272
|
+
|
972
273
|
</nav>
|
973
274
|
|
974
275
|
<div className='hds-hidden tb-l:flex flex-row items-center gap-x-4 '>
|
@@ -1018,25 +319,37 @@ export default function V3Header(props) {
|
|
1018
319
|
<span className="sr-only">Open menu</span> */}
|
1019
320
|
|
1020
321
|
|
1021
|
-
<div className={"bg-neutral-100 hds-hidden-tbl block fixed w-full tb:max-w-[480px] tb:left-auto tb:right-4 mx-auto left-4 top-0 transform transition duration-500 ease-in-out h-[calc(100%-1px)] max-h-screen overflow-y-auto" + ((mobileNavOpen) ? " translate-x-0" : " translate-x-[1240px]")}>
|
322
|
+
<div className={"bg-neutral-100 shadow-sh1 hds-hidden-tbl block fixed w-full tb:max-w-[480px] tb:left-auto tb:right-4 mx-auto left-4 top-0 transform transition duration-500 ease-in-out h-[calc(100%-1px)] max-h-screen overflow-y-auto" + ((mobileNavOpen) ? " translate-x-0" : " translate-x-[1240px]")}>
|
1022
323
|
|
1023
|
-
<div className="bg-neutral-100 h-[calc(100%-80px)] rounded-2xl overflow-scroll ">
|
324
|
+
<div className="bg-neutral-100 h-[calc(100%-80px)] rounded-2xl overflow-y-scroll scrollbar-hide">
|
1024
325
|
|
1025
|
-
<div className='pt-
|
1026
|
-
{(isCompany || isDeveloper || isProduct) &&
|
326
|
+
<div className='pt-4 pb-4 mr-[16px] min-h-[36px] flex flex-row justify-between items-center sticky top-0 bg-neutral-100 z-50 '>
|
327
|
+
{(isCompany || isDeveloper || isProduct) &&
|
328
|
+
(
|
329
|
+
<div
|
1027
330
|
className=' flex flex-row justify-start z-10'
|
1028
331
|
onClick={() => handleBackClick()}
|
1029
332
|
|
1030
333
|
>
|
1031
334
|
<Icon height='w-5 h-5 ml-4 cursor-pointer' variant={'arrowleft'} strokeClass='stroke-neutral-1000' />
|
1032
|
-
</div>
|
335
|
+
</div>
|
336
|
+
)}
|
1033
337
|
<motion.div
|
1034
338
|
initial={{ opacity: 0 }}
|
1035
339
|
animate={{ opacity: 1 }}
|
1036
340
|
transition={{ duration: 0.4, opacity: { ease: "easeIn" } }}
|
1037
|
-
className='w-full justify-center
|
341
|
+
className='w-full justify-center flex '>
|
1038
342
|
<Typography textStyle='body3c-medium' className='text-neutral-900'>{currentTab}</Typography>
|
1039
343
|
</motion.div>
|
344
|
+
{(isCompany || isDeveloper || isProduct) &&
|
345
|
+
(
|
346
|
+
<div
|
347
|
+
className=' flex flex-row justify-start z-10'
|
348
|
+
onClick={() => handleBackClick()}
|
349
|
+
|
350
|
+
>
|
351
|
+
<Icon height='w-5 h-5 ml-4 stroke-2 cursor-pointer' variant={'xclose'} strokeClass='stroke-neutral-1000' />
|
352
|
+
</div>)}
|
1040
353
|
|
1041
354
|
</div>
|
1042
355
|
<AnimatePresence mode='wait' exit={false} >
|
@@ -1051,7 +364,7 @@ export default function V3Header(props) {
|
|
1051
364
|
className="flex flex-col justify-between "
|
1052
365
|
>
|
1053
366
|
<div className="flex flex-col justify-between rounded-2xl h-full">
|
1054
|
-
<div className="pl-4 pr-
|
367
|
+
<div className="pl-4 pr-8 tb:pr-4">
|
1055
368
|
{mobileNav(props.HEADER_LIST)}
|
1056
369
|
</div>
|
1057
370
|
</div>
|
@@ -1070,7 +383,7 @@ export default function V3Header(props) {
|
|
1070
383
|
alt=""
|
1071
384
|
/>
|
1072
385
|
</div>
|
1073
|
-
<nav className="grid divide-y mr-8 bg-neutral-0 divide-neutral-200 border border-neutral-200 rounded-3xl mb-6">
|
386
|
+
<nav className="grid divide-y mr-8 tb:mr-4 bg-neutral-0 divide-neutral-200 border border-neutral-200 rounded-3xl mb-6">
|
1074
387
|
{props.HEADER_LIST.map((item) => (
|
1075
388
|
<div
|
1076
389
|
key={item['title']}
|
@@ -1107,6 +420,7 @@ export default function V3Header(props) {
|
|
1107
420
|
rightAnimatedArrow='true'
|
1108
421
|
rightAnimatedArrowColor='#3970FD'
|
1109
422
|
animatedHoverStroke='group-hover:stroke-neutral-0'
|
423
|
+
className=' !w-full'
|
1110
424
|
/>
|
1111
425
|
</a>
|
1112
426
|
<a href='https://cloud.hasura.io/signup?pg=home&plcmt=header&cta=try-hasura&tech=default' className='w-1/2'>
|
@@ -1120,6 +434,7 @@ export default function V3Header(props) {
|
|
1120
434
|
rightAnimatedArrow='true'
|
1121
435
|
rightAnimatedArrowColor='#ffffff'
|
1122
436
|
animatedHoverStroke='group-hover:stroke-neutral-0'
|
437
|
+
className=' !w-full'
|
1123
438
|
/>
|
1124
439
|
</a>
|
1125
440
|
</div>
|
@@ -1130,99 +445,6 @@ export default function V3Header(props) {
|
|
1130
445
|
|
1131
446
|
</div>
|
1132
447
|
</div>
|
1133
|
-
|
1134
|
-
|
1135
|
-
|
1136
|
-
{/* mobile menu */}
|
1137
|
-
<>
|
1138
|
-
<div>
|
1139
|
-
|
1140
|
-
|
1141
|
-
<div className="absolute h-[calc(100%-112px)] bg-base-0 z-[1] inset-x-0 top-0 origin-top-right hds-hidden transform transition">
|
1142
|
-
<div className=" rounded-lg bg-neutral-0 h-[calc(100%-112px)] shadow-lg">
|
1143
|
-
<div className="bg-neutral-0">
|
1144
|
-
{/* <div className="flex items-center justify-end">
|
1145
|
-
<div className="">
|
1146
|
-
<div className="inline-flex items-center justify-center pt-4 pr-4 w-full focus:ring-0">
|
1147
|
-
<Icon height={'h-5 w-5'} variant={'xclose'} strokeColor={'#3970FD'} />
|
1148
|
-
</div>
|
1149
|
-
</div>
|
1150
|
-
</div> */}
|
1151
|
-
<div className="mt-6 flex flex-col gap-6">
|
1152
|
-
<div className='flex flex-col items-center'>
|
1153
|
-
<img
|
1154
|
-
className="inline-block w-full px-4 "
|
1155
|
-
src="https://res.cloudinary.com/dh8fp23nd/image/upload/v1683015500/hasura-con-2023/engage_clgotb.png"
|
1156
|
-
alt=""
|
1157
|
-
/>
|
1158
|
-
</div>
|
1159
|
-
|
1160
|
-
<nav className="grid divide-y divide-neutral-200 border border-neutral-200 rounded-3xl hds-hidden-tbl ">
|
1161
|
-
{props.HEADER_LIST.map((item) => (
|
1162
|
-
<div
|
1163
|
-
key={item['title']}
|
1164
|
-
href='#'
|
1165
|
-
className="flex justify-between items-center p-4 cursor-pointer"
|
1166
|
-
>
|
1167
|
-
{headerListfn(props.HEADER_LIST)}
|
1168
|
-
|
1169
|
-
<div className="flex items-center justify-center gap-2 ">
|
1170
|
-
|
1171
|
-
<Icon height='h-5 w-5' variant={'home03'} strokeColor={'#3970FD'} />
|
1172
|
-
|
1173
|
-
|
1174
|
-
<Typography textStyle='body3c-medium' className='text-neutral-900'>
|
1175
|
-
{`${item['title']}`}
|
1176
|
-
</Typography>
|
1177
|
-
</div>
|
1178
|
-
|
1179
|
-
<Icon height='h-5 w-5 stroke-[1.5px]' variant={'chevronright'} strokeClass='stroke-neutral-500' />
|
1180
|
-
</div>
|
1181
|
-
))}
|
1182
|
-
</nav>
|
1183
|
-
</div>
|
1184
|
-
</div>
|
1185
|
-
<div className="py-6 px-5 ">
|
1186
|
-
<div className="mt-6 ">
|
1187
|
-
<div className='flex flex-row justify-around'>
|
1188
|
-
<div className='w-full flex gap-2'>
|
1189
|
-
<div className='w-1/2'>
|
1190
|
-
<HDSButton
|
1191
|
-
label="Log In"
|
1192
|
-
type='tonal'
|
1193
|
-
leftIconVariant='none'
|
1194
|
-
rightIconVariant='none'
|
1195
|
-
state='default'
|
1196
|
-
size='sm'
|
1197
|
-
rightAnimatedArrow='true'
|
1198
|
-
rightAnimatedArrowColor='#3970FD'
|
1199
|
-
animatedHoverStroke='group-hover:stroke-neutral-0'
|
1200
|
-
|
1201
|
-
|
1202
|
-
/>
|
1203
|
-
</div>
|
1204
|
-
<div className='w-1/2'>
|
1205
|
-
<HDSButton
|
1206
|
-
label="Sign up"
|
1207
|
-
type='primary'
|
1208
|
-
leftIconVariant='none'
|
1209
|
-
rightIconVariant='none'
|
1210
|
-
state='default'
|
1211
|
-
size='sm'
|
1212
|
-
rightAnimatedArrow='true'
|
1213
|
-
rightAnimatedArrowColor='#ffffff'
|
1214
|
-
animatedHoverStroke='group-hover:stroke-neutral-0'
|
1215
|
-
/>
|
1216
|
-
</div>
|
1217
|
-
</div>
|
1218
|
-
</div>
|
1219
|
-
</div>
|
1220
|
-
</div>
|
1221
|
-
</div>
|
1222
|
-
</div>
|
1223
|
-
</div>
|
1224
|
-
</>
|
1225
|
-
{/* mobile menu */}
|
1226
448
|
</div>
|
1227
449
|
)
|
1228
450
|
}
|
@@ -1231,62 +453,243 @@ V3Header.defaultProps = {
|
|
1231
453
|
HEADER_LIST: [
|
1232
454
|
{
|
1233
455
|
title: 'Product',
|
1234
|
-
|
1235
|
-
|
1236
|
-
|
1237
|
-
|
1238
|
-
|
1239
|
-
|
1240
|
-
|
1241
|
-
|
1242
|
-
|
1243
|
-
|
1244
|
-
|
1245
|
-
|
1246
|
-
|
456
|
+
primaryCard: {
|
457
|
+
iconVariant: 'hasura',
|
458
|
+
mainDescription: 'Choose from our open source community edition, fully managed cloud edition or custom enterprise',
|
459
|
+
primaryBtnLabel: 'Hasura Product',
|
460
|
+
strokeClass: 'stroke-neutral-800',
|
461
|
+
secondaryBtn: [
|
462
|
+
{ cta_leftVariantIcon: 'home03', cta_leftVariantIconColor: '#6C737F', cta_text: 'Compare plans' }
|
463
|
+
],
|
464
|
+
},
|
465
|
+
secondaryCardArr:
|
466
|
+
[
|
467
|
+
{
|
468
|
+
split: true,
|
469
|
+
childArray: [
|
470
|
+
{
|
471
|
+
description: '',
|
472
|
+
href: '#',
|
473
|
+
icon: "lightning01",
|
474
|
+
name: 'Instant API',
|
475
|
+
strokeClass: 'stroke-blue-500'
|
476
|
+
},
|
477
|
+
{
|
478
|
+
description: '',
|
479
|
+
href: '#',
|
480
|
+
icon: 'data',
|
481
|
+
name: 'Federation',
|
482
|
+
strokeClass: 'stroke-blue-500'
|
483
|
+
},
|
484
|
+
{
|
485
|
+
description: '',
|
486
|
+
href: '#',
|
487
|
+
icon: 'eye',
|
488
|
+
name: 'Authorization',
|
489
|
+
strokeClass: 'stroke-blue-500'
|
490
|
+
},
|
491
|
+
{
|
492
|
+
description: '',
|
493
|
+
href: '#',
|
494
|
+
icon: 'shieldtick',
|
495
|
+
name: 'API Security',
|
496
|
+
strokeClass: 'stroke-blue-500'
|
497
|
+
},
|
498
|
+
{
|
499
|
+
description: '',
|
500
|
+
href: '#',
|
501
|
+
icon: 'speedometer03',
|
502
|
+
name: 'Performance',
|
503
|
+
strokeClass: 'stroke-blue-500'
|
504
|
+
},
|
505
|
+
{
|
506
|
+
description: '',
|
507
|
+
href: '#',
|
508
|
+
icon: "barchartsquare01",
|
509
|
+
name: 'Observability',
|
510
|
+
strokeClass: 'stroke-blue-500'
|
511
|
+
}
|
512
|
+
],
|
513
|
+
label: 'CAPABILITIES'
|
514
|
+
},
|
515
|
+
{
|
516
|
+
childArray: [
|
517
|
+
{
|
518
|
+
description: '',
|
519
|
+
href: '#',
|
520
|
+
icon: 'database01',
|
521
|
+
name: 'All DBs',
|
522
|
+
strokeClass: 'stroke-blue-500'
|
523
|
+
},
|
524
|
+
{
|
525
|
+
description: '',
|
526
|
+
href: '#',
|
527
|
+
icon: 'checksquare',
|
528
|
+
name: 'Planned DBs',
|
529
|
+
strokeClass: 'stroke-blue-500'
|
530
|
+
},
|
531
|
+
],
|
532
|
+
label: 'Integrations'
|
533
|
+
}
|
534
|
+
]
|
535
|
+
},
|
536
|
+
{
|
537
|
+
|
538
|
+
title: 'Developer',
|
539
|
+
secondaryCardArr: [
|
1247
540
|
{
|
1248
|
-
|
1249
|
-
|
1250
|
-
|
1251
|
-
|
541
|
+
childArray: [
|
542
|
+
{
|
543
|
+
description: '',
|
544
|
+
href: '#',
|
545
|
+
icon: "file02",
|
546
|
+
name: 'Documentation',
|
547
|
+
strokeClass: 'stroke-blue-500'
|
548
|
+
},
|
549
|
+
{
|
550
|
+
description: '',
|
551
|
+
href: '#',
|
552
|
+
icon: 'hasura',
|
553
|
+
name: 'Hasura hub',
|
554
|
+
strokeClass: 'stroke-blue-500'
|
555
|
+
},
|
556
|
+
{
|
557
|
+
description: '',
|
558
|
+
href: '#',
|
559
|
+
icon: 'route',
|
560
|
+
name: 'Guides',
|
561
|
+
strokeClass: 'stroke-blue-500'
|
562
|
+
},
|
563
|
+
{
|
564
|
+
description: '',
|
565
|
+
href: '#',
|
566
|
+
icon: 'asterisk02',
|
567
|
+
name: 'GraphQL hub',
|
568
|
+
strokeClass: 'stroke-blue-500'
|
569
|
+
},
|
570
|
+
{
|
571
|
+
description: '',
|
572
|
+
href: '#',
|
573
|
+
icon: "codebrowser",
|
574
|
+
name: 'GraphQL',
|
575
|
+
strokeClass: 'stroke-blue-500'
|
576
|
+
},
|
577
|
+
{
|
578
|
+
description: '',
|
579
|
+
href: '#',
|
580
|
+
icon: 'gitpullrequest',
|
581
|
+
name: 'Changelog',
|
582
|
+
strokeClass: 'stroke-blue-500'
|
583
|
+
}
|
584
|
+
],
|
585
|
+
label: 'BUILD'
|
1252
586
|
},
|
1253
587
|
{
|
1254
|
-
|
1255
|
-
|
1256
|
-
|
1257
|
-
|
588
|
+
|
589
|
+
childArray: [
|
590
|
+
{
|
591
|
+
description: '',
|
592
|
+
href: '#',
|
593
|
+
icon: 'bookopen01',
|
594
|
+
name: 'Blog',
|
595
|
+
strokeClass: 'stroke-blue-500'
|
596
|
+
},
|
597
|
+
{
|
598
|
+
description: '',
|
599
|
+
href: '#',
|
600
|
+
icon: 'videorecorder',
|
601
|
+
name: 'Tech talks',
|
602
|
+
strokeClass: 'stroke-blue-500'
|
603
|
+
},
|
604
|
+
{
|
605
|
+
description: '',
|
606
|
+
href: '#',
|
607
|
+
icon: 'graduationhat02',
|
608
|
+
name: 'Tutorials',
|
609
|
+
strokeClass: 'stroke-blue-500'
|
610
|
+
},
|
611
|
+
{
|
612
|
+
description: '',
|
613
|
+
href: '#',
|
614
|
+
icon: 'calendarplus02',
|
615
|
+
name: 'Events',
|
616
|
+
strokeClass: 'stroke-blue-500'
|
617
|
+
},
|
618
|
+
{
|
619
|
+
description: '',
|
620
|
+
href: '#',
|
621
|
+
icon: 'box',
|
622
|
+
name: 'Resources',
|
623
|
+
strokeClass: 'stroke-blue-500'
|
624
|
+
},
|
625
|
+
],
|
626
|
+
label: 'Learn',
|
627
|
+
|
1258
628
|
},
|
1259
629
|
{
|
1260
|
-
|
1261
|
-
|
1262
|
-
|
1263
|
-
|
630
|
+
|
631
|
+
childArray: [
|
632
|
+
{
|
633
|
+
description: '',
|
634
|
+
href: '#',
|
635
|
+
icon: 'users01',
|
636
|
+
name: 'Community',
|
637
|
+
strokeClass: 'stroke-blue-500'
|
638
|
+
},
|
639
|
+
{
|
640
|
+
description: '',
|
641
|
+
href: '#',
|
642
|
+
icon: 'cube01',
|
643
|
+
name: 'Discord',
|
644
|
+
strokeClass: 'stroke-blue-500'
|
645
|
+
},
|
646
|
+
{
|
647
|
+
description: '',
|
648
|
+
href: '#',
|
649
|
+
icon: 'cube01',
|
650
|
+
name: 'Forum',
|
651
|
+
strokeClass: 'stroke-blue-500'
|
652
|
+
},
|
653
|
+
{
|
654
|
+
description: '',
|
655
|
+
href: '#',
|
656
|
+
icon: 'cube01',
|
657
|
+
name: 'Meetups',
|
658
|
+
strokeClass: 'stroke-blue-500'
|
659
|
+
},
|
660
|
+
{
|
661
|
+
description: '',
|
662
|
+
href: '#',
|
663
|
+
icon: 'hand',
|
664
|
+
name: 'Support',
|
665
|
+
strokeClass: 'stroke-blue-500'
|
666
|
+
},
|
667
|
+
],
|
668
|
+
label: 'Connect',
|
669
|
+
|
1264
670
|
},
|
1265
671
|
],
|
1266
|
-
},
|
1267
|
-
{
|
1268
672
|
|
1269
|
-
|
1270
|
-
titleDropdown: [
|
673
|
+
tertiaryCard: [
|
1271
674
|
{
|
1272
|
-
|
1273
|
-
|
1274
|
-
|
1275
|
-
|
675
|
+
title: 'HasuraCon 2023 is here!',
|
676
|
+
|
677
|
+
title_colorClass: 'text-neutral-900',
|
678
|
+
img_url: 'https://res.cloudinary.com/hasura-cms-uploads/image/upload/v1687040455/hascon_211daeb83a.png'
|
1276
679
|
},
|
1277
680
|
{
|
1278
|
-
|
1279
|
-
|
1280
|
-
|
1281
|
-
|
681
|
+
title: 'Top 6 Architecture Trends for API Development',
|
682
|
+
|
683
|
+
title_colorClass: 'text-neutral-900',
|
684
|
+
img_url: 'https://res.cloudinary.com/hasura-cms-uploads/image/upload/v1687040455/api_trends_0a035678d8.png'
|
1282
685
|
},
|
1283
686
|
{
|
1284
|
-
|
1285
|
-
|
1286
|
-
|
1287
|
-
|
687
|
+
title: 'Announcing Hasura integration with Snowflake',
|
688
|
+
|
689
|
+
title_colorClass: 'text-neutral-900',
|
690
|
+
img_url: 'https://res.cloudinary.com/hasura-cms-uploads/image/upload/v1687040455/snowflake_def20494db.png'
|
1288
691
|
},
|
1289
|
-
]
|
692
|
+
]
|
1290
693
|
},
|
1291
694
|
{
|
1292
695
|
|
@@ -1298,26 +701,71 @@ V3Header.defaultProps = {
|
|
1298
701
|
{
|
1299
702
|
|
1300
703
|
title: 'Company',
|
1301
|
-
|
704
|
+
secondaryCardArr: [
|
705
|
+
{
|
706
|
+
childArray: [
|
707
|
+
{
|
708
|
+
description: '',
|
709
|
+
href: '#',
|
710
|
+
icon: "pentool02",
|
711
|
+
name: 'Our story',
|
712
|
+
strokeClass: 'stroke-blue-500'
|
713
|
+
},
|
714
|
+
{
|
715
|
+
description: '',
|
716
|
+
href: '#',
|
717
|
+
icon: 'data',
|
718
|
+
name: 'Partners',
|
719
|
+
strokeClass: 'stroke-blue-500'
|
720
|
+
},
|
721
|
+
{
|
722
|
+
description: '',
|
723
|
+
href: '#',
|
724
|
+
icon: 'hearthand',
|
725
|
+
name: 'Work at Hasura',
|
726
|
+
strokeClass: 'stroke-blue-500'
|
727
|
+
},
|
728
|
+
{
|
729
|
+
description: '',
|
730
|
+
href: '#',
|
731
|
+
icon: 'headingsquare',
|
732
|
+
name: 'News room',
|
733
|
+
strokeClass: 'stroke-blue-500'
|
734
|
+
},
|
735
|
+
{
|
736
|
+
description: '',
|
737
|
+
href: '#',
|
738
|
+
icon: 'star06',
|
739
|
+
name: 'Brand',
|
740
|
+
strokeClass: 'stroke-blue-500'
|
741
|
+
},
|
742
|
+
|
743
|
+
],
|
744
|
+
label: 'Company'
|
745
|
+
},
|
746
|
+
|
747
|
+
],
|
748
|
+
|
749
|
+
tertiaryCard: [
|
1302
750
|
{
|
1303
|
-
|
1304
|
-
|
1305
|
-
|
1306
|
-
|
751
|
+
title: 'HasuraCon 2023 is here!',
|
752
|
+
|
753
|
+
title_colorClass: 'text-neutral-900',
|
754
|
+
img_url: 'https://res.cloudinary.com/hasura-cms-uploads/image/upload/v1687040455/hascon_211daeb83a.png'
|
1307
755
|
},
|
1308
756
|
{
|
1309
|
-
|
1310
|
-
|
1311
|
-
|
1312
|
-
|
757
|
+
title: 'Top 6 Architecture Trends for API Development',
|
758
|
+
|
759
|
+
title_colorClass: 'text-neutral-900',
|
760
|
+
img_url: 'https://res.cloudinary.com/hasura-cms-uploads/image/upload/v1687040455/api_trends_0a035678d8.png'
|
1313
761
|
},
|
1314
762
|
{
|
1315
|
-
|
1316
|
-
|
1317
|
-
|
1318
|
-
|
763
|
+
title: 'Announcing Hasura integration with Snowflake',
|
764
|
+
|
765
|
+
title_colorClass: 'text-neutral-900',
|
766
|
+
img_url: 'https://res.cloudinary.com/hasura-cms-uploads/image/upload/v1687040455/snowflake_def20494db.png'
|
1319
767
|
},
|
1320
|
-
]
|
768
|
+
]
|
1321
769
|
},
|
1322
770
|
{
|
1323
771
|
|
@@ -1325,30 +773,6 @@ V3Header.defaultProps = {
|
|
1325
773
|
href: ''
|
1326
774
|
|
1327
775
|
},
|
1328
|
-
// {
|
1329
|
-
|
1330
|
-
// title: 'Pricing',
|
1331
|
-
// titleDropdown: [
|
1332
|
-
// {
|
1333
|
-
// name: 'Analytics',
|
1334
|
-
// description: 'Get a better understanding of where your traffic is coming from.',
|
1335
|
-
// href: '#',
|
1336
|
-
// icon: 'home03',
|
1337
|
-
// },
|
1338
|
-
// {
|
1339
|
-
// name: 'Engagement',
|
1340
|
-
// description: 'Speak directly to your customers in a more meaningful way.',
|
1341
|
-
// href: '#',
|
1342
|
-
// icon: 'home03',
|
1343
|
-
// },
|
1344
|
-
// {
|
1345
|
-
// name: 'Security',
|
1346
|
-
// description: 'Your customers’ data will be safe and secure.',
|
1347
|
-
// href: '#',
|
1348
|
-
// icon: 'home03'
|
1349
|
-
// },
|
1350
|
-
// ]
|
1351
|
-
// },
|
1352
776
|
|
1353
777
|
|
1354
778
|
],
|