hds-web 1.6.8 → 1.7.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.
Files changed (53) hide show
  1. package/dist/index.css +5 -2
  2. package/dist/index.es.css +5 -2
  3. package/dist/index.es.js +13 -13
  4. package/dist/index.js +13 -13
  5. package/package.json +1 -1
  6. package/src/HDS/assets/icons/calendar-plus-01.svg +1 -1
  7. package/src/HDS/assets/icons/calendar-plus-02.svg +1 -1
  8. package/src/HDS/assets/icons/hasura-1.svg +3 -0
  9. package/src/HDS/assets/icons/hasura-2.svg +3 -0
  10. package/src/HDS/assets/icons/hasura-3.svg +3 -0
  11. package/src/HDS/components/Avatars/hasConAv.js +9 -10
  12. package/src/HDS/components/Avatars/profileAvatar.js +10 -29
  13. package/src/HDS/components/BadgesCaption/badges.js +7 -4
  14. package/src/HDS/components/Buttons/button.js +25 -14
  15. package/src/HDS/components/Cards/Dropdown/v3Dropdown.js +1 -1
  16. package/src/HDS/components/Cards/Feedback/feedback.js +1 -1
  17. package/src/HDS/components/Cards/ImageBox/imagebox.js +51 -0
  18. package/src/HDS/components/Cards/ImageBox/index.js +1 -0
  19. package/src/HDS/components/Cards/Link/link.js +19 -13
  20. package/src/HDS/components/Cards/Menu/flyout.js +5 -4
  21. package/src/HDS/components/Cards/Menu/flyoutA.js +5 -4
  22. package/src/HDS/components/Cards/Menu/flyoutFull.js +1 -0
  23. package/src/HDS/components/Cards/Misc/iconCard.js +71 -60
  24. package/src/HDS/components/Cards/Misc/index.js +1 -0
  25. package/src/HDS/components/Cards/Misc/talkCard.js +19 -18
  26. package/src/HDS/components/Cards/Misc/talkcard2.js +118 -0
  27. package/src/HDS/components/Cards/TalkDetailCard/talkDetailCard.js +83 -52
  28. package/src/HDS/components/Carousels/carouselCard.js +101 -90
  29. package/src/HDS/components/Headers/v3Header.js +111 -85
  30. package/src/HDS/components/Hero/h2.js +58 -36
  31. package/src/HDS/components/Hero/h3.js +413 -0
  32. package/src/HDS/components/Hero/index.js +2 -1
  33. package/src/HDS/components/Tables/index.js +2 -1
  34. package/src/HDS/components/Tables/tableB.js +10 -10
  35. package/src/HDS/components/Tables/tableC.js +20 -23
  36. package/src/HDS/components/Tables/tableD.js +326 -0
  37. package/src/HDS/components/Tabs/tab.js +47 -16
  38. package/src/HDS/components/common-components/Icon/IconMap.js +6 -0
  39. package/src/HDS/components/index.js +2 -1
  40. package/src/HDS/foundation/ColorPalette/color.js +193 -1
  41. package/src/HDS/foundation/Typography/Typography.js +2 -1
  42. package/src/HDS/helpers/Grid/grid.js +64 -0
  43. package/src/HDS/helpers/Grid/index.js +1 -0
  44. package/src/HDS/helpers/Media/index.js +1 -0
  45. package/src/HDS/helpers/Media/mediabox.js +75 -0
  46. package/src/HDS/helpers/index.js +2 -1
  47. package/src/HDS/modules/TextCard/textCard.js +8 -71
  48. package/src/HDS/modules/index.js +2 -1
  49. package/src/HDS/modules/navCard/index.js +1 -0
  50. package/src/HDS/modules/navCard/navCard.js +82 -0
  51. package/src/index.css +39 -1
  52. package/src/styles/tailwind.css +3104 -1848
  53. package/tailwind.config.js +6 -3
@@ -9,6 +9,19 @@ import { v4 as uuidv4 } from 'uuid';
9
9
 
10
10
  export default function HeroSecondary({ heroData, logo, scrollArrow, fontSize }) {
11
11
  const [valumeMuteIcon, setValumeMuteIcon] = useState("volumex");
12
+
13
+ const scrollToNextDiv = (element) => {
14
+ const nextDiv = element.nextElementSibling;
15
+ if (nextDiv) {
16
+ nextDiv.scrollIntoView({ behavior: 'smooth' });
17
+ }
18
+ };
19
+
20
+ const handleClick = (event) => {
21
+ const arrowIcon = event.target;
22
+ const arrowContainer = arrowIcon.parentNode;
23
+ scrollToNextDiv(arrowContainer);
24
+ };
12
25
  const videoMute = () => {
13
26
  if (heroData.video_url) {
14
27
  const videoEle = document.getElementById("hero_vid");
@@ -95,34 +108,34 @@ export default function HeroSecondary({ heroData, logo, scrollArrow, fontSize })
95
108
  const heroButton = () => (
96
109
  heroData.buttons && (
97
110
  <div className={" gap-6 flex items-center tb:justify-center tb-l:justify-start db:justify-start pt-6" + ((heroData.video_url) ? " tb:justify-center" : " tb:justify-start")}>
98
-
99
-
100
- {heroData.buttons[0] &&
101
- <HDSButton
111
+
112
+
113
+ {heroData.buttons[0] &&
114
+ <HDSButton
102
115
  type="secondary"
103
116
  btnTextColorClass={HDSColor('text-neutral-0')}
104
- leftIconVariant='none'
105
- rightIconVariant='none'
106
- label={heroData.buttons[0].cta_text}
107
- state='default'
108
- size='lg'
109
- rightAnimatedArrow='true'
110
- rightAnimatedArrowColor='#ffffff'
111
- />
112
- }
113
- {heroData.buttons[1] && <HDSButton
114
- type="primaryLink"
115
- btnTextColorClass={HDSColor('text-neutral-0')}
116
- leftIconVariant='none'
117
- rightIconVariant='none'
118
- label={heroData.buttons[1].cta_text}
119
- state='default'
120
- size='lg'
121
- rightAnimatedArrow='true'
122
- rightAnimatedArrowColor='#ffffff'
123
- />}
124
-
125
-
117
+ leftIconVariant='none'
118
+ rightIconVariant='none'
119
+ label={heroData.buttons[0].cta_text}
120
+ state='default'
121
+ size='lg'
122
+ rightAnimatedArrow='true'
123
+ rightAnimatedArrowColor='#ffffff'
124
+ />
125
+ }
126
+ {heroData.buttons[1] && <HDSButton
127
+ type="primaryLink"
128
+ btnTextColorClass={HDSColor('text-neutral-0')}
129
+ leftIconVariant='none'
130
+ rightIconVariant='none'
131
+ label={heroData.buttons[1].cta_text}
132
+ state='default'
133
+ size='lg'
134
+ rightAnimatedArrow='true'
135
+ rightAnimatedArrowColor='#ffffff'
136
+ />}
137
+
138
+
126
139
  </div>
127
140
  )
128
141
  )
@@ -153,20 +166,20 @@ export default function HeroSecondary({ heroData, logo, scrollArrow, fontSize })
153
166
 
154
167
  const imageCard = (heroData) => (
155
168
  heroData.imageUrl && (
156
- <div className="w-1/2 tb-l:w-full tb:flex tb:flex-col tb:justify-center">
157
- <img src={heroData.imageUrl} alt={heroData.imageAlt} className='w-full ' />
169
+ <div className="">
170
+ <img src={heroData.imageUrl} alt={heroData.imageAlt} className='tb-l:w-full w-1/2' />
158
171
  </div>
159
172
  )
160
173
  )
161
-
174
+
162
175
  const videoGradientBg = HDSColor(heroData.video_gradient_bg);
163
176
  return (
164
177
  <div className="">
165
178
  <div className="">
166
179
  <div className={"max-w-7xl mx-auto px-20 py-20 rounded-3xl overflow-hidden " + ((heroData.bg_color) ? heroData.bg_color : "")} >
167
180
  <div className="w-full">
168
- <div className={"tb-l:flex tb-l:items-center tb-l:flex-row db:w-full flex flex-col-reverse tb:gap-x-16 db:gap-x-10 min-[1880px]:gap-x-72" + ((heroData.video_url) ? " " : " tb:flex")}>
169
- <div className='w-full tb:flex items-start tb:flex-col mt-4 tb:mt-0'
181
+ <div className={"tb-l:flex tb-l:justify-between tb-l:items-center tb-l:flex-row db:w-full flex flex-col-reverse tb:gap-x-16 db:gap-x-10 min-[1880px]:gap-x-72" + ((heroData.video_url) ? " " : " tb:flex")}>
182
+ <div className='max-w-[29.18rem] w-full tb:flex items-start tb:flex-col mt-4 tb:mt-0'
170
183
  >
171
184
  {
172
185
  heroData.tag_line && (
@@ -188,14 +201,18 @@ export default function HeroSecondary({ heroData, logo, scrollArrow, fontSize })
188
201
 
189
202
  {
190
203
  heroData.description && (
191
- <Typography textStyle="sub1" className="tb-l:text-center db:text-left text-neutral-0 [&>*]:mb-8 last:[&>*]:mb-0">{heroData.description}</Typography>
204
+ <Typography textStyle="sub1" className="db:text-left text-neutral-0 [&>*]:mb-8 last:[&>*]:mb-0">{heroData.description}</Typography>
192
205
  )
193
206
  }
194
207
  {heroButton(heroData)}
195
208
 
196
-
209
+
197
210
  </div>
211
+ <div className="">
212
+
213
+
198
214
  {imageCard(heroData)}
215
+ </div>
199
216
  </div>
200
217
 
201
218
  {LinkCardsFn(heroData)}
@@ -203,9 +220,14 @@ export default function HeroSecondary({ heroData, logo, scrollArrow, fontSize })
203
220
  </div>
204
221
  </div>
205
222
  {
206
- scrollArrow && (
207
- <>
208
- </>
223
+ heroData.scrollArrow && (
224
+ <a className="flex justify-center flex-row z-10" onClick={(e) => scrollToNextDiv(e.currentTarget)}>
225
+ <div className="flex bg-neutral-0 shadow-md -mt-5 animate-bounce justify-center rounded-full items-center w-12 h-12" onClick={handleClick} >
226
+ <Icon
227
+ variant='chevrondowndouble'
228
+ strokeClass='stroke-neutral-800' height='h-6 w-6' />
229
+ </div>
230
+ </a>
209
231
  )
210
232
  }
211
233
  </div>
@@ -0,0 +1,413 @@
1
+ import React, { useState, useEffect } from 'react';
2
+ import { MediaBox } from '../../helpers/Media';
3
+ import { Typography } from '../../foundation/Typography';
4
+ import { HDSButton } from '../../components/Buttons';
5
+ import { HDSColor } from '../../foundation/ColorPalette';
6
+ import { Tab } from '../../components/Tabs';
7
+ import PropTypes from 'prop-types';
8
+ import { LinkCard } from '../Cards/Link';
9
+
10
+ const tabCard = (Content) => (
11
+ <>
12
+ <div className='tb:px-3'>
13
+ {Content.title &&
14
+ <Typography
15
+ textStyle='h2'
16
+ className={HDSColor(Content.titleTextColor)}>
17
+ {Content.title}
18
+ </Typography>}
19
+
20
+ {Content.subTitle &&
21
+ <Typography
22
+ textStyle='sub2'
23
+ className={`mt-2 ${HDSColor(Content.subTitleTextColor)}`}>
24
+ {Content.subTitle}
25
+ </Typography>}
26
+ </div>
27
+ {Content.btnLabel &&
28
+ <div className='flex pl-3 pt-6'>
29
+ <HDSButton
30
+ label={Content.btnLabel}
31
+ type='secondary'
32
+ leftIconVariant='none'
33
+ rightIconVariant='none'
34
+ state='default'
35
+ size='sm'
36
+ rightAnimatedArrow={true}
37
+ rightAnimatedArrowColor='#1E56E3'
38
+ animatedHoverStroke='group-hover:stroke-blue-600'
39
+ className='flex'
40
+ btnTextColorClass='text-blue-600'
41
+ />
42
+ </div>
43
+ }
44
+
45
+ </>
46
+ )
47
+
48
+ export default function HeroCapability(props) {
49
+ const {
50
+ heroData,
51
+ activeTab,
52
+ onTabChange
53
+ } = props;
54
+ let currentTab;
55
+ if(activeTab.activeTab){
56
+ currentTab = activeTab.activeTab;
57
+ }
58
+ if (!heroData) {
59
+ return <div></div>; // Replace with your loading indicator or fallback UI
60
+ }
61
+
62
+ const LinkCardsFn = (heroData) => {
63
+ return (
64
+ heroData.linkCards && (
65
+ <div className="flex px-8 tb:px-0 tb:justify-center overflow-auto scrollbar-hide flex-row mt-16 gap-6 tb:flex-row ">
66
+ {heroData.linkCards.map((card, index) => (
67
+ <div key={index} className={`${HDSColor(card.cardBorderClass)} border rounded-2xl w-full pb-2 min-w-[11.5rem] max-w-[22.313rem]`}>
68
+ <LinkCard
69
+ titleTextColor= {card.titleTextColor}
70
+ descTextColor={card.descTextColor}
71
+ linkUrl={card.linkUrl}
72
+ cardBgColor={card.cardBgColor}
73
+ cardHoverBg={card.cardHoverBg}
74
+ iconVariant={card.iconVariant}
75
+ iconStrokeClass={card.iconStrokeColor}
76
+ iconArrowVariant={card.iconArrowVariant}
77
+ iconArrowStrokeClass={card.iconArrowStrokeColor}
78
+ title={card.title}
79
+ description={card.description}
80
+ />
81
+ </div>
82
+ ))}
83
+ </div>
84
+ )
85
+ );
86
+ };
87
+
88
+
89
+ const handleTabClick = (tab) => {
90
+ if (tab.name) {
91
+ const nameCheck = tab.name.replace(/\s/g, ''); // Remove spaces from tab name
92
+ onTabChange(nameCheck);
93
+ }
94
+ else return;
95
+ // Perform any other actions based on the clicked tab
96
+ }
97
+ let heroBgColorClass = '';
98
+ let bgTabClass = '';
99
+ let videoUrl = '';
100
+ let videoPoster = '';
101
+ let img_url = '';
102
+ let pillColorClass= '';
103
+ if(props.heroData && props.heroData.tabContent && props.heroData.tabContent[currentTab] && props.heroData.tabContent[currentTab]['heroBgColor']){
104
+ heroBgColorClass = HDSColor(props.heroData.tabContent[currentTab]['heroBgColor'])
105
+ }
106
+ if(props.heroData && props.heroData.tabContent && props.heroData.tabContent[currentTab] && props.heroData.tabContent[currentTab]['bgColorTab']){
107
+ bgTabClass = HDSColor(props.heroData.tabContent[currentTab]['bgColorTab'])
108
+ }
109
+ if(props.heroData && props.heroData.tabContent && props.heroData.tabContent[currentTab] && props.heroData.tabContent[currentTab]['videoUrl']){
110
+ videoUrl = props.heroData.tabContent[currentTab]['videoUrl']
111
+ }
112
+ if(props.heroData && props.heroData.tabContent && props.heroData.tabContent[currentTab] && props.heroData.tabContent[currentTab]['videoPoster']){
113
+ videoPoster = props.heroData.tabContent[currentTab]['videoPoster']
114
+ }
115
+ if(props.heroData && props.heroData.tabContent && props.heroData.tabContent[currentTab] && props.heroData.tabContent[currentTab]['img_url']){
116
+ img_url = props.heroData.tabContent[currentTab]['img_url']
117
+ }
118
+ if(props.heroData && props.heroData.tabContent && props.heroData.tabContent[currentTab] && props.heroData.tabContent[currentTab]['pillColor']){
119
+ pillColorClass = props.heroData.tabContent[currentTab]['pillColor']
120
+ }
121
+ if(props.heroData && props.heroData.tabContent && props.heroData.tabContent[currentTab] && props.heroData.tabContent[currentTab]['bgColorTab']){
122
+ bgTabClass = HDSColor(props.heroData.tabContent[currentTab]['bgColorTab']);
123
+ }
124
+
125
+ return (
126
+ <div className={`${(heroBgColorClass)} -mt-[81px] pt-[81px] tb:mt-0 tb:pt-0 max-w-7xl rounded-b-3xl tb:rounded-3xl`} >
127
+ {/* <div className={`${(heroBgColorClass)} max-w-7xl rounded-3xl bg-gradient-to-br from-green-500 to-green-900`} > */}
128
+ {props.heroData.navTabs &&
129
+
130
+ <div className='py-5 db:p-20 tb:p-10 flex flex-col shadow rounded-2xl'>
131
+
132
+ <div className='flex px-8 tb:px-0 overflow-scroll scrollbar-hide tb-l:justify-center justify-start'>
133
+ <div className={`${bgTabClass} bg-opacity-30 p-1 rounded-[32px]`}>
134
+ <Tab
135
+ onTabClick={handleTabClick}
136
+ tabs={props.heroData.navTabs}
137
+ bgColorTab={props.heroData.bgColorTab}
138
+ pillColor={pillColorClass}
139
+ />
140
+ </div>
141
+ </div>
142
+ <div className='flex flex-col-reverse pt-6 px-8 tb:px-0 tb:flex tb:flex-row tb:items-center tb:pt-10 tb:justify-between'>
143
+ <div className=' mt-3 db:max-w-[488px] tb:w-1/2'>
144
+ {props.heroData.tabContent &&
145
+ props.heroData.tabContent[currentTab] &&
146
+ tabCard(props.heroData.tabContent[currentTab])}
147
+ </div>
148
+ <div className=' db:max-w-[540px] tb:w-1/2 '>
149
+ <MediaBox
150
+ video_url = {videoUrl}
151
+ video_poster = {videoPoster}
152
+
153
+ />
154
+ </div>
155
+ </div>
156
+
157
+ <div className=''>
158
+ {props.heroData.tabContent[currentTab] &&
159
+ LinkCardsFn(props.heroData.tabContent[currentTab])}
160
+ </div>
161
+ </div>
162
+
163
+ }
164
+
165
+ </div>
166
+ )
167
+ }
168
+
169
+
170
+
171
+
172
+ HeroCapability.defaultProps={
173
+ heroData : {
174
+ tabContent: {
175
+ 'Performance': {
176
+ heroBgColor:'bg-green-500',
177
+ title: 'Blazing-fast APIs at Global Scale ',
178
+ subTitle: 'Hasura optimizes your API performance up to 10x faster with end-to-end caching, while scaling both vertically and horizontally.',
179
+ videoUrl: "https://res.cloudinary.com/dh8fp23nd/video/upload/v1683307555/hasura-con-2023/tg_hascon23_homepage_ue29jn.mp4",
180
+ videoPoster: "https://res.cloudinary.com/dh8fp23nd/image/upload/v1685017301/Group_2608667_gu6idw.png",
181
+ subTitleTextColor: 'text-neutral-0',
182
+ titleTextColor: 'text-neutral-0',
183
+ bgColorTab: 'bg-neutral-1000',
184
+ pillColor:'bg-pink-500',
185
+ button: [
186
+ {
187
+ cta_text: 'Get Started',
188
+ btnBg: '',
189
+ bg_color: 'bg-blue-900',
190
+
191
+ cta_link: '',
192
+ cta_type:''
193
+ },
194
+ {
195
+ cta_text: 'Get Started',
196
+ btnBg: '',
197
+ bg_color: 'bg-blue-900',
198
+ cta_link: '',
199
+ cta_type:''
200
+ }
201
+ ],
202
+ linkCards: [
203
+ {
204
+ titleTextColor: 'text-neutral-0',
205
+ descTextColor: 'text-neutral-0',
206
+ iconVariant: 'videorecorder',
207
+ iconStrokeColor: '#3970FD',
208
+ iconArrowVariant: 'arrownarrowupright',
209
+ iconArrowStrokeColor: 'blue-400',
210
+ title: 'Webinar',
211
+ description: 'Model Level Authorization System for GraphQL with Hasura',
212
+
213
+
214
+ },
215
+ {
216
+ cardBgColor: 'bg-pink-300',
217
+ cardHoverBg: 'bg-pink-900',
218
+ iconVariant: 'videorecorder',
219
+ iconStrokeColor: '#3970FD',
220
+ iconArrowVariant: 'arrownarrowupright',
221
+ iconArrowStrokeColor: 'blue-400',
222
+ title: 'Webinar',
223
+ description: 'GraphQL response caching',
224
+
225
+
226
+ },
227
+ {
228
+ cardBgColor: 'bg-pink-300',
229
+ cardHoverBg: 'bg-pink-900',
230
+ iconVariant: 'videorecorder',
231
+ iconStrokeColor: '#3970FD',
232
+ iconArrowVariant: 'arrownarrowupright',
233
+ iconArrowStrokeColor: 'blue-400',
234
+ title: 'Webinar',
235
+ description: 'Model Level Authorization System for GraphQL with Hasura',
236
+
237
+
238
+ },
239
+ ],
240
+
241
+
242
+
243
+
244
+ },
245
+ 'Company': {
246
+ heroBgColor:'bg-blue-500',
247
+ title: 'Leverage Hasura’s Authorization Engine',
248
+ subTitle: 'Hasura optimizes your API performance up to 10x faster with end-to-end caching, while scaling both vertically and horizontally.ss',
249
+ videoUrl: "https://res.cloudinary.com/dh8fp23nd/video/upload/v1683307555/hasura-con-2023/tg_hascon23_homepage_ue29jn.mp4",
250
+ videoPoster: "https://res.cloudinary.com/dh8fp23nd/image/upload/v1685017301/Group_2608667_gu6idw.png",
251
+ imgUrl:'',
252
+ subTitleTextColor: 'text-neutral-0',
253
+ titleTextColor: 'text-neutral-0',
254
+ bgColorTab: 'bg-neutral-1000',
255
+ pillColor:'bg-amber-500',
256
+ button: [
257
+ {
258
+ cta_text: 'Get Started',
259
+ btnBg: '',
260
+ bg_color: 'bg-blue-900',
261
+
262
+ cta_link: '',
263
+ cta_type:''
264
+ },
265
+ {
266
+ cta_text: 'Get Started',
267
+ btnBg: '',
268
+ bg_color: 'bg-blue-900',
269
+ cta_link: '',
270
+ cta_type:''
271
+ }
272
+ ],
273
+ linkCards: [
274
+ {
275
+ titleTextColor: 'text-neutral-0',
276
+ descTextColor: 'text-neutral-0',
277
+ iconVariant: 'videorecorder',
278
+ iconStrokeColor: '#3970FD',
279
+ iconArrowVariant: 'arrownarrowupright',
280
+ iconArrowStrokeColor: 'blue-400',
281
+ title: 'Webinar',
282
+ description: 'Model Level Authorization System for GraphQL with Hasura',
283
+
284
+
285
+ },
286
+ {
287
+ cardBgColor: 'bg-pink-300',
288
+ cardHoverBg: 'bg-pink-900',
289
+ iconVariant: 'videorecorder',
290
+ iconStrokeColor: '#3970FD',
291
+ iconArrowVariant: 'arrownarrowupright',
292
+ iconArrowStrokeColor: 'blue-400',
293
+ title: 'Webinar',
294
+ description: 'Model Level Authorization System for GraphQL with Hasura',
295
+
296
+
297
+ },
298
+ {
299
+ cardBgColor: 'bg-pink-300',
300
+ cardHoverBg: 'bg-pink-900',
301
+ iconVariant: 'videorecorder',
302
+ iconStrokeColor: '#3970FD',
303
+ iconArrowVariant: 'arrownarrowupright',
304
+ iconArrowStrokeColor: 'blue-400',
305
+ title: 'Webinar',
306
+ description: 'Model Level Authorization System for GraphQL with Hasura',
307
+
308
+
309
+ },
310
+ ],
311
+
312
+
313
+
314
+
315
+ },
316
+ 'Authorization': {
317
+ heroBgColor:'bg-cyan-500',
318
+ title: 'Blazing-fast APIs at Global Scale ',
319
+ subTitle: 'Hasura optimizes your API performance up to 10x faster with end-to-end caching, while scaling both vertically and horizontally.',
320
+ videoUrl: "https://res.cloudinary.com/dh8fp23nd/video/upload/v1683307555/hasura-con-2023/tg_hascon23_homepage_ue29jn.mp4",
321
+ videoPoster: "https://res.cloudinary.com/dh8fp23nd/image/upload/v1685017301/Group_2608667_gu6idw.png",
322
+ imgUrl:'',
323
+ subTitleTextColor: 'text-neutral-0',
324
+ titleTextColor: 'text-neutral-0',
325
+ bgColorTab: 'bg-pink-500',
326
+ pillColor:'bg-neutral-500',
327
+ button: [
328
+ {
329
+ cta_text: 'Get Started',
330
+ btnBg: '',
331
+ bg_color: 'bg-blue-900',
332
+
333
+ cta_link: '',
334
+ cta_type:''
335
+ },
336
+ {
337
+ cta_text: 'Get Started',
338
+ btnBg: '',
339
+ bg_color: 'bg-blue-900',
340
+ cta_link: '',
341
+ cta_type:''
342
+ }
343
+ ],
344
+ linkCards: [
345
+ {
346
+ titleTextColor: 'text-neutral-0',
347
+ descTextColor: 'text-neutral-0',
348
+ iconVariant: 'videorecorder',
349
+ iconStrokeColor: '#3970FD',
350
+ iconArrowVariant: 'arrownarrowupright',
351
+ iconArrowStrokeColor: 'blue-400',
352
+ title: 'Webinar',
353
+ description: 'Model Level Authorization System for GraphQL with Hasura',
354
+
355
+
356
+ },
357
+ {
358
+ cardBgColor: 'bg-pink-300',
359
+ cardHoverBg: 'bg-pink-900',
360
+ iconVariant: 'videorecorder',
361
+ iconStrokeColor: '#3970FD',
362
+ iconArrowVariant: 'arrownarrowupright',
363
+ iconArrowStrokeColor: 'blue-400',
364
+ title: 'Webinar',
365
+ description: 'Model Level Authorization System for GraphQL with Hasura',
366
+
367
+
368
+ },
369
+ {
370
+ cardBgColor: 'bg-pink-300',
371
+ cardHoverBg: 'bg-pink-900',
372
+ iconVariant: 'videorecorder',
373
+ iconStrokeColor: '#3970FD',
374
+ iconArrowVariant: 'arrownarrowupright',
375
+ iconArrowStrokeColor: 'blue-400',
376
+ title: 'Webinar',
377
+ description: 'Model Level Authorization System for GraphQL with Hasura',
378
+
379
+
380
+ },
381
+ ],
382
+
383
+
384
+
385
+
386
+ },
387
+ },
388
+
389
+ navTabs: [
390
+ {
391
+ current: true,
392
+ name: 'Performance'
393
+ },
394
+ {
395
+ current: 'false',
396
+ name: 'Company'
397
+ },
398
+ {
399
+ current: 'false',
400
+ name: 'Authorization'
401
+ },
402
+ {
403
+ current: 'false',
404
+ name: 'Observability'
405
+ },
406
+ {
407
+ current: 'false',
408
+ name: 'API Security'
409
+ }
410
+ ]
411
+ }
412
+
413
+ }
@@ -1,2 +1,3 @@
1
1
  export {default as Hero1} from './h1'
2
- export {default as HeroSecondary} from './h2'
2
+ export {default as HeroSecondary} from './h2'
3
+ export {default as HeroCapability} from './h3'
@@ -1,3 +1,4 @@
1
1
  export {default as TableA} from './tableA';
2
2
  export {default as TableB} from './tableB';
3
- export {default as TableC} from './tableC';
3
+ export {default as TableC} from './tableC';
4
+ export {default as PricingTableB} from './tableD';
@@ -7,9 +7,9 @@ import { Tab } from '../Tabs'
7
7
  import ReactMarkdown from "react-markdown";
8
8
 
9
9
  const tabs = [
10
- { name: 'Level 1', href: '', current: true },
11
- { name: 'Level 2', href: '', current: false },
12
- { name: 'Level 3', href: '', current: false },
10
+ { name: 'Tier 1', href: '', current: true },
11
+ { name: 'Tier 2', href: '', current: false },
12
+ { name: 'Tier 3', href: '', current: false },
13
13
  ]
14
14
 
15
15
 
@@ -66,9 +66,9 @@ export default function TableB(props) {
66
66
  const [activeTab, setActiveTab] = useState(1);
67
67
 
68
68
  function handleTabClick(tab) {
69
- if (tab.name === 'Level 1') setActiveTab(1);
70
- if (tab.name === 'Level 2') setActiveTab(2);
71
- if (tab.name === 'Level 3') setActiveTab(3);
69
+ if (tab.name === 'Tier 1') setActiveTab(1);
70
+ if (tab.name === 'Tier 2') setActiveTab(2);
71
+ if (tab.name === 'Tier 3') setActiveTab(3);
72
72
  // Perform any other actions based on the clicked tab
73
73
  }
74
74
 
@@ -94,7 +94,7 @@ export default function TableB(props) {
94
94
  </Typography>
95
95
  )}
96
96
  </div>
97
- <div className=' mt-11 rounded-full shadow tb-l:hidden'>
97
+ <div className=' mt-11 p-2 bg-neutral-0 rounded-full shadow tb-l:hidden'>
98
98
  <Tab onTabClick={handleTabClick} tabs={tabs} />
99
99
  </div>
100
100
  </div>
@@ -170,7 +170,7 @@ export default function TableB(props) {
170
170
  <div className="mt-12 bg-neutral-0 rounded-3xl ">
171
171
  <table className="min-w-full shadow tableclss rounded-3xl ">
172
172
  <thead>
173
- <tr className='divide-x divide-neutral-200 text-center rounded-t-3xl'>
173
+ <tr className='divide-x border-b border-neutral-200 divide-neutral-200 text-center rounded-t-3xl'>
174
174
  {Object.keys(TABLE_HEADER).map((key, index) => (
175
175
  <th
176
176
  key={index}
@@ -179,7 +179,7 @@ export default function TableB(props) {
179
179
  >
180
180
  <div className=''>
181
181
  <div className='flex flex-col justify-center items-center text-center'>
182
- <div className={'flex items-center gap-2'}>
182
+ <div className={'flex items-center gap-2 w-full justify-center'}>
183
183
  {TABLE_HEADER[key]['icon'] &&
184
184
  (
185
185
  <Icon
@@ -192,7 +192,7 @@ export default function TableB(props) {
192
192
  TABLE_HEADER[key]['title'] && key == 0 && (
193
193
  <Typography
194
194
  textStyle='h5'
195
- className={HDSColor(TABLE_HEADER[key]['title_text_color'])}>
195
+ className={`w-full text-left ${HDSColor(TABLE_HEADER[key]['title_text_color'])}`}>
196
196
  {TABLE_HEADER[key]['title']}
197
197
  </Typography>)
198
198
  }