hds-web 1.10.1 → 1.10.3

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.
@@ -34,123 +34,131 @@ function classNames(...classes) {
34
34
 
35
35
  export default function V3Header(props) {
36
36
  const [mobileNavOpen, toggleMobileNav] = useState(false);
37
- const [isShowing, setIsShowing] = useState(false)
37
+ const [isShowing, setIsShowing] = useState(true)
38
38
 
39
39
  const dropdown = (solutions) => (
40
- <Transition
41
- as={Fragment}
42
- enter="transition ease-out duration-300"
43
- enterFrom="opacity-0 -translate-y-[0px] "
44
- enterTo="opacity-100 translate-y-[0px]"
45
- leave="transition ease-in-out duration-300"
46
- leaveFrom="opacity-100 translate-y-0"
47
- leaveTo="opacity-0 translate-y-1"
48
- >
49
- <Popover.Panel className="fixed left-0 ml z-10 mt-3 transform ">
50
-
51
- <div className=" p-2 bg-neutral-100 rounded-lg">
52
-
53
- <V3Dropdown
54
- primaryCard={{
55
- iconVariant: 'home03',
56
- mainDescription: 'description1',
57
- primaryBtnLabel: 'label 1',
58
- strokeClass: 'stroke-neutral-800'
59
- }}
60
- secondaryCardArr={[
61
- {
62
- childArray: [
63
- {
64
- description: '',
65
- href: '#',
66
- icon: 'cube01',
67
- name: 'Analytics'
68
- },
69
- {
70
- description: '',
71
- href: '#',
72
- icon: 'cube01',
73
- name: 'Engagement'
74
- },
75
- {
76
- description: '',
77
- href: '#',
78
- icon: 'cube01',
79
- name: 'Security'
80
- }
81
- ],
82
- label: 'Label1'
83
- },
84
- {
85
- childArray: [
86
- {
87
- description: '',
88
- href: '#',
89
- icon: 'cube01',
90
- name: 'Analytics'
91
- },
92
- {
93
- description: '',
94
- href: '#',
95
- icon: 'cube01',
96
- name: 'Engagement'
97
- },
98
- {
99
- description: '',
100
- href: '#',
101
- icon: 'cube01',
102
- name: 'Security'
103
- }
104
- ],
105
- label: 'Label1'
106
- }
107
- ]}
108
- />
109
40
 
110
- </div>
111
- </Popover.Panel>
112
- </Transition>
41
+ <div className="fixed left-0 z-10 mt-3 transform ">
42
+
43
+ <div className=" p-2 bg-neutral-100 rounded-lg">
44
+
45
+ <V3Dropdown
46
+ primaryCard={{
47
+ iconVariant: 'hasura',
48
+ mainDescription: 'Choose from our open source community edition, fully managed cloud edition or custom enterprise',
49
+ primaryBtnLabel: 'Hasura Product',
50
+ strokeClass: 'stroke-neutral-800',
51
+ secondaryBtn : [
52
+ { cta_leftVariantIcon: 'home03', cta_leftVariantIconColor: '#6C737F', cta_text: 'Compare plans' }
53
+ ],
54
+ }}
55
+ secondaryCardArr={[
56
+ {
57
+ childArray: [
58
+ {
59
+ description: '',
60
+ href: '#',
61
+ icon: "lightning01",
62
+ name: 'Instant API',
63
+ strokeClass:'stroke-blue-500'
64
+ },
65
+ {
66
+ description: '',
67
+ href: '#',
68
+ icon: 'data',
69
+ name: 'Federation',
70
+ strokeClass: 'stroke-blue-500'
71
+ },
72
+ {
73
+ description: '',
74
+ href: '#',
75
+ icon: 'eye',
76
+ name: 'Authorization',
77
+ strokeClass: 'stroke-blue-500'
78
+ },
79
+ {
80
+ description: '',
81
+ href: '#',
82
+ icon: 'shieldtick',
83
+ name: 'API Security',
84
+ strokeClass: 'stroke-blue-500'
85
+ },
86
+ {
87
+ description: '',
88
+ href: '#',
89
+ icon: 'speedometer03',
90
+ name: 'Performance',
91
+ strokeClass: 'stroke-blue-500'
92
+ },
93
+ {
94
+ description: '',
95
+ href: '#',
96
+ icon: "barchartsquare01",
97
+ name: 'Observability',
98
+ strokeClass: 'stroke-blue-500'
99
+ }
100
+ ],
101
+ label: 'CAPABILITIES'
102
+ },
103
+ {
104
+ childArray: [
105
+ {
106
+ description: '',
107
+ href: '#',
108
+ icon: 'cube01',
109
+ name: 'All DBs',
110
+ strokeClass: 'stroke-blue-500'
111
+ },
112
+ {
113
+ description: '',
114
+ href: '#',
115
+ icon: 'cube01',
116
+ name: 'Planned DBs',
117
+ strokeClass: 'stroke-blue-500'
118
+ },
119
+ ],
120
+ label: 'Integrations'
121
+ }
122
+ ]}
123
+ />
124
+
125
+ </div>
126
+ </div>
127
+
113
128
  )
114
129
 
115
- const headerListfn = (HEADER_LIST) =>
116
- (
130
+ const headerListfn = (HEADER_LIST) => (
117
131
  <>
118
132
  {HEADER_LIST.map((item, index) => (
119
- <Popover className="relative" key={index}>
120
- {({ open }) => (
121
- <>
122
- <Popover.Button
123
- className={classNames(
124
- open ? '' : 'text-gray-500',
125
- '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'
126
- )}
127
- onMouseEnter={() => setIsShowing(true)}
128
- onMouseLeave={() => setIsShowing(false)}
129
-
130
- >
131
- <div className='flex flex-col items-center'>
132
- <Typography textStyle='body3c-medium' className=''>{`${item['title']}`}</Typography>
133
- {open && (
134
- <div className='absolute z-20 top-8'>
135
- {/* <Icon variant='triangle' height='h-4 w-4' strokeClass='stroke-neutral-1000' /> */}
136
-
137
- </div>
138
-
139
- )}
140
- </div>
141
- </Popover.Button>
142
- <div className=''>
143
- {dropdown(item['titleDropdown'])}
144
- </div>
145
-
146
- </>
133
+ <div
134
+ className="relative"
135
+ key={index}
136
+ onMouseEnter={() => setIsShowing(true)}
137
+
138
+ >
139
+ <div
140
+ className={classNames(
141
+ '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',
142
+ isShowing ? '' : 'text-gray-500',
143
+ )}
144
+ >
145
+ <div className="flex flex-col items-center">
146
+ <Typography textStyle="body3c-medium">{`${item['title']}`}</Typography>
147
+ </div>
148
+ </div>
149
+ {isShowing && (
150
+ <div
151
+ className="-left-20 z-20 top-8"
152
+ onMouseEnter={() => setIsShowing(true)}
153
+ onMouseLeave={() => setIsShowing(false)} // Keep isShowing true when hovering over dropdown content
154
+ >
155
+ {dropdown(item['titleDropdown'])}
156
+ </div>
147
157
  )}
148
- </Popover>
149
- )
150
- )
151
- }
158
+ </div>
159
+ ))}
152
160
  </>
153
- )
161
+ );
154
162
 
155
163
  let class1;
156
164
  let class2;
@@ -173,9 +181,9 @@ export default function V3Header(props) {
173
181
  <a href={props.headerUrl} className="flex items-center">
174
182
  <Icon height='w-[103px] h-[33px]' variant={'hasuraPrimary'} strokeColor={''} />
175
183
  </a>
176
- <Popover.Group as="nav" className="hidden tb-l:pl-8 tb-l:flex tb-l:space-x-6">
184
+ <nav as="nav" className="hidden tb-l:pl-8 tb-l:flex tb-l:space-x-6">
177
185
  {headerListfn(props.HEADER_LIST)}
178
- </Popover.Group>
186
+ </nav>
179
187
  </div>
180
188
  <div className='flex tb-l:justify-between'>
181
189
  <div className=" tb-l:flex tb-l:flex-1 tb-l:items-center tb-l:justify-between">
@@ -224,7 +232,7 @@ export default function V3Header(props) {
224
232
  <div className="tb-l:hidden overflow-auto flex items-center">
225
233
  {/* <Popover.Button className="inline-flex items-center justify-center rounded-md bg-white pl-6 text-gray-400 hover:bg-gray-100 hover:text-gray-500 focus:outline-none focus:ring-2 focus:ring-inset focus:ring-indigo-500">
226
234
  <span className="sr-only">Open menu</span> */}
227
-
235
+
228
236
  <div className="tb:hidden absolute right-4 top-1/2 block w-5 h-5 z-[60]" onClick={() => toggleMobileNav(!mobileNavOpen)}>
229
237
  <div aria-hidden="true" className={`${class1}block absolute h-0.5 w-5 bg-neutral-800 transform transition duration-500 ease-in-out`}></div>
230
238
  <div aria-hidden="true" className={`${class2}block absolute h-0.5 w-5 bg-neutral-800 transform transition duration-500 ease-in-out`}></div>
@@ -235,74 +243,74 @@ export default function V3Header(props) {
235
243
  <div className="bg-neutral-100 grid rounded-2xl h-screen ">
236
244
  <div className="flex flex-col justify-between">
237
245
  <div className="flex flex-col justify-between rounded-2xl h-full">
238
- <div className=" mt-20 flex flex-col gap-6 ml-4">
239
- <div className='flex flex-col mr-8 items-center'>
240
- <img
241
- className="inline-block w-full "
242
- src="https://res.cloudinary.com/dh8fp23nd/image/upload/v1683015500/hasura-con-2023/engage_clgotb.png"
243
- alt=""
244
- />
245
- </div>
246
+ <div className=" mt-20 flex flex-col gap-6 ml-4">
247
+ <div className='flex flex-col mr-8 items-center'>
248
+ <img
249
+ className="inline-block w-full "
250
+ src="https://res.cloudinary.com/dh8fp23nd/image/upload/v1683015500/hasura-con-2023/engage_clgotb.png"
251
+ alt=""
252
+ />
253
+ </div>
246
254
 
247
- <nav className="grid divide-y mr-8 bg-neutral-0 divide-neutral-200 border border-neutral-200 rounded-3xl ">
248
- {props.HEADER_LIST.map((item) => (
249
- <a
250
- key={item['title']}
251
- href='#'
252
- className="flex justify-between items-center p-4"
253
- >
255
+ <nav className="grid divide-y mr-8 bg-neutral-0 divide-neutral-200 border border-neutral-200 rounded-3xl ">
256
+ {props.HEADER_LIST.map((item) => (
257
+ <a
258
+ key={item['title']}
259
+ href='#'
260
+ className="flex justify-between items-center p-4"
261
+ >
254
262
 
255
- <div className="flex items-center justify-center gap-2 ">
263
+ <div className="flex items-center justify-center gap-2 ">
256
264
 
257
- <Icon height='h-5 w-5' variant={'home03'} strokeColor={'#3970FD'} />
265
+ <Icon height='h-5 w-5' variant={'home03'} strokeColor={'#3970FD'} />
258
266
 
259
267
 
260
- <Typography textStyle='body3c-medium' className='text-neutral-900'>
261
- {`${item['title']}`}
262
- </Typography>
263
- </div>
268
+ <Typography textStyle='body3c-medium' className='text-neutral-900'>
269
+ {`${item['title']}`}
270
+ </Typography>
271
+ </div>
264
272
 
265
- <Icon height='h-5 w-5 stroke-[1.5px]' variant={'chevronright'} strokeClass='stroke-neutral-500' />
266
- </a>
267
- ))}
268
- </nav>
269
- </div>
273
+ <Icon height='h-5 w-5 stroke-[1.5px]' variant={'chevronright'} strokeClass='stroke-neutral-500' />
274
+ </a>
275
+ ))}
276
+ </nav>
277
+ </div>
270
278
  <div className="py-6 shadow-sh1 bg-neutral-0 px-5 mr-2 self-end w-full">
271
- <div className="">
272
- <div className='flex flex-row justify-around'>
273
- <div className='w-full flex gap-2'>
274
- <div className='w-1/2'>
275
- <HDSButton
276
- label="Log In"
277
- type='tonal'
278
- leftIconVariant='none'
279
- rightIconVariant='none'
280
- state='default'
281
- size='sm'
282
- rightAnimatedArrow='true'
283
- rightAnimatedArrowColor='#3970FD'
284
- animatedHoverStroke='group-hover:stroke-neutral-0'
285
-
286
-
287
- />
288
- </div>
289
- <div className='w-1/2'>
290
- <HDSButton
291
- label="Sign up"
292
- type='primary'
293
- leftIconVariant='none'
294
- rightIconVariant='none'
295
- state='default'
296
- size='sm'
297
- rightAnimatedArrow='true'
298
- rightAnimatedArrowColor='#ffffff'
299
- animatedHoverStroke='group-hover:stroke-neutral-0'
300
- />
301
- </div>
279
+ <div className="">
280
+ <div className='flex flex-row justify-around'>
281
+ <div className='w-full flex gap-2'>
282
+ <div className='w-1/2'>
283
+ <HDSButton
284
+ label="Log In"
285
+ type='tonal'
286
+ leftIconVariant='none'
287
+ rightIconVariant='none'
288
+ state='default'
289
+ size='sm'
290
+ rightAnimatedArrow='true'
291
+ rightAnimatedArrowColor='#3970FD'
292
+ animatedHoverStroke='group-hover:stroke-neutral-0'
293
+
294
+
295
+ />
296
+ </div>
297
+ <div className='w-1/2'>
298
+ <HDSButton
299
+ label="Sign up"
300
+ type='primary'
301
+ leftIconVariant='none'
302
+ rightIconVariant='none'
303
+ state='default'
304
+ size='sm'
305
+ rightAnimatedArrow='true'
306
+ rightAnimatedArrowColor='#ffffff'
307
+ animatedHoverStroke='group-hover:stroke-neutral-0'
308
+ />
302
309
  </div>
303
310
  </div>
304
311
  </div>
305
312
  </div>
313
+ </div>
306
314
  </div>
307
315
  </div>
308
316
  </div>
@@ -413,7 +421,7 @@ export default function V3Header(props) {
413
421
  V3Header.defaultProps = {
414
422
  HEADER_LIST: [
415
423
  {
416
- title: 'Platform',
424
+ title: 'Product',
417
425
  titleDropdown: [
418
426
  {
419
427
  name: 'Analytics',
@@ -428,62 +436,74 @@ V3Header.defaultProps = {
428
436
  icon: 'home03',
429
437
  },
430
438
  {
431
- name: 'Security',
439
+ name: 's',
432
440
  description: 'Your customers’ data will be safe and secure.',
433
441
  href: '#',
434
442
  icon: 'home03'
435
443
  },
436
- ],
437
- },
438
- {
439
-
440
- title: 'Developer',
441
- titleDropdown: [
442
- {
443
- name: 'Analytics',
444
- description: 'Get a better understanding of where your traffic is coming from.',
445
- href: '#',
446
- icon: 'home03',
447
- },
448
444
  {
449
- name: 'Engagement',
450
- description: 'Speak directly to your customers in a more meaningful way.',
451
- href: '#',
452
- icon: 'home03',
453
- },
454
- {
455
- name: 'Security',
445
+ name: 'Securidty',
456
446
  description: 'Your customers’ data will be safe and secure.',
457
447
  href: '#',
458
448
  icon: 'home03'
459
449
  },
460
- ],
461
- },
462
- {
463
-
464
- title: 'Pricing',
465
- titleDropdown: [
466
- {
467
- name: 'Analytics',
468
- description: 'Get a better understanding of where your traffic is coming from.',
469
- href: '#',
470
- icon: 'home03',
471
- },
472
450
  {
473
- name: 'Engagement',
474
- description: 'Speak directly to your customers in a more meaningful way.',
475
- href: '#',
476
- icon: 'home03',
477
- },
478
- {
479
- name: 'Security',
451
+ name: 'Secudristy',
480
452
  description: 'Your customers’ data will be safe and secure.',
481
453
  href: '#',
482
454
  icon: 'home03'
483
455
  },
484
- ]
456
+ ],
485
457
  },
486
-
458
+ // {
459
+
460
+ // title: 'Developer',
461
+ // titleDropdown: [
462
+ // {
463
+ // name: 'Analytics',
464
+ // description: 'Get a better understanding of where your traffic is coming from.',
465
+ // href: '#',
466
+ // icon: 'home03',
467
+ // },
468
+ // {
469
+ // name: 'Engagement',
470
+ // description: 'Speak directly to your customers in a more meaningful way.',
471
+ // href: '#',
472
+ // icon: 'home03',
473
+ // },
474
+ // {
475
+ // name: 'Security',
476
+ // description: 'Your customers’ data will be safe and secure.',
477
+ // href: '#',
478
+ // icon: 'home03'
479
+ // },
480
+ // ],
481
+ // },
482
+ // {
483
+
484
+ // title: 'Pricing',
485
+ // titleDropdown: [
486
+ // {
487
+ // name: 'Analytics',
488
+ // description: 'Get a better understanding of where your traffic is coming from.',
489
+ // href: '#',
490
+ // icon: 'home03',
491
+ // },
492
+ // {
493
+ // name: 'Engagement',
494
+ // description: 'Speak directly to your customers in a more meaningful way.',
495
+ // href: '#',
496
+ // icon: 'home03',
497
+ // },
498
+ // {
499
+ // name: 'Security',
500
+ // description: 'Your customers’ data will be safe and secure.',
501
+ // href: '#',
502
+ // icon: 'home03'
503
+ // },
504
+ // ]
505
+ // },
506
+
487
507
 
488
508
  ],
489
509
  headerUrl: 'https://hasura.io/'
@@ -15,4 +15,4 @@ export * from './Hero';
15
15
  export * from './Tables';
16
16
  export * from './Carousels';
17
17
  export * from './Pre-footers';
18
- export * from './Footers';
18
+ export * from './Footers';
@@ -7,7 +7,7 @@ import { Icon } from '../../components/common-components/Icon';
7
7
  export default function TextIconCard(props) {
8
8
  return (
9
9
  <div className="tb-m:flex gap-14 gap-y-14 gap-x-14 tb:gap-12 db-s:gap-20 db:gap-24">
10
- <div className="db-s:max-w-[524px] tb-m:w-1/2 w-full">
10
+ <div className="pb-10 tb-m:pb-0 db-s:max-w-[524px] tb-m:w-1/2 w-full">
11
11
  {
12
12
  props.tagline && (
13
13
  <Typography textStyle="h6" as="h6" className="pb-2 uppercase text-blue-400">{props.tagline}</Typography>
@@ -47,15 +47,15 @@ export default function TextIconCard(props) {
47
47
  </div>
48
48
  {
49
49
  props.iconCards && (
50
- <div className="flex-1 pt-14 tb-m:pt-0">
50
+ <div className="flex-1 pt-10 tb-m:pt-0 border-t border-neutral-200 tb-m:border-t-0">
51
51
  {
52
52
  props.iconCards.map((card, index) => (
53
- <div className="pb-6 tb:pb-10 tb-l:pb-16 last:pb-0 flex" key={index}>
53
+ <div className="pb-6 tb:pb-10 tb-l:pb-16 last:pb-0 tb:flex" key={index}>
54
54
  <div className={"w-12 h-12 min-w-[48px] rounded-full flex justify-center items-center mr-5 " + ((card.iconBgClass) ? HDSColor(card.iconBgClass) : "bg-blue-300")}>
55
55
  <Icon height={'h-6 w-6 stroke-[1.5px]'} variant={((card.iconName) ? card.iconName : 'cube02')} strokeClass='stroke-neutral-1000' />
56
56
  </div>
57
57
  <div>
58
- <Typography textStyle="h4" as="h4" className="pb-2 text-neutral-1000">{card.title}</Typography>
58
+ <Typography textStyle="h4" as="h4" className="pb-2 pt-4 tb:pt-0 text-neutral-1000">{card.title}</Typography>
59
59
  <Typography textStyle="body1" className="text-neutral-600">{card.description}</Typography>
60
60
  </div>
61
61
  </div>