hds-web 1.8.7 → 1.8.9
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 +6 -6
- package/dist/index.js +6 -6
- package/package.json +1 -1
- package/src/HDS/assets/icons/caching.svg +4 -0
- package/src/HDS/assets/icons/doubleArrow.svg +3 -0
- package/src/HDS/assets/icons/endpoints.svg +3 -0
- package/src/HDS/assets/icons/mutations.svg +4 -0
- package/src/HDS/assets/icons/networking.svg +7 -0
- package/src/HDS/assets/icons/queries.svg +3 -0
- package/src/HDS/assets/icons/remote.svg +6 -0
- package/src/HDS/assets/icons/trigger.svg +5 -0
- package/src/HDS/assets/icons/watchTrigger.svg +3 -0
- package/src/HDS/components/Avatars/profileAvatar.js +1 -0
- package/src/HDS/components/BadgesCaption/badges.js +3 -1
- package/src/HDS/components/Cards/Feedback/feedback.js +42 -45
- package/src/HDS/components/Cards/Misc/imageBadgeCard.js +27 -0
- package/src/HDS/components/Cards/Testimonials/testimonial.js +20 -16
- package/src/HDS/components/Cards/VideoCard/homeVC.js +18 -15
- package/src/HDS/components/Carousels/customCarousel.js +193 -0
- package/src/HDS/components/Carousels/{homeCarousel2.js → homeCarousel.js} +183 -63
- package/src/HDS/components/Carousels/index.js +2 -1
- package/src/HDS/components/Footers/v3Footer.js +185 -1
- package/src/HDS/components/common-components/Icon/IconMap.js +18 -0
- package/src/HDS/helpers/Media/mediabox.js +0 -1
- package/src/HDS/helpers/index.js +0 -1
- package/src/HDS/modules/TextCard/textIconCard.js +17 -20
- package/src/styles/tailwind.css +237 -61
- package/src/HDS/helpers/Sliders/index.js +0 -1
- package/src/HDS/helpers/Sliders/scrollSlider.js +0 -134
@@ -127,23 +127,117 @@ const carouselItems2 = [
|
|
127
127
|
size: 'w-full'
|
128
128
|
}
|
129
129
|
];
|
130
|
+
|
131
|
+
const video_props =
|
132
|
+
[
|
133
|
+
{
|
134
|
+
// video_url: 'https://nutrien-prod-asset.s3.us-east-2.amazonaws.com/s3fs-public/video-thumbnails/2019-05/Nutrien-Banner-Loop-V4.mp4',
|
135
|
+
video_url: 'https://res.cloudinary.com/dh8fp23nd/video/upload/v1654760488/samples/sea-turtle.mp4',
|
136
|
+
|
137
|
+
testimonial: {
|
138
|
+
card: {
|
139
|
+
cardBg: '',
|
140
|
+
title_img: "Optum",
|
141
|
+
img_alt: 'optum',
|
142
|
+
subtitle: '“Optum goes from concept to production in 100 days with Hasura”',
|
143
|
+
avatar: {
|
144
|
+
img_url: '',
|
145
|
+
name: 'Nagaraja Nayak',
|
146
|
+
designation: 'Optum',
|
147
|
+
avatarBgColor: 'bg-yellow-400'
|
148
|
+
}
|
149
|
+
},
|
150
|
+
cardHover: {
|
151
|
+
cardBg: 'bg-green-500',
|
152
|
+
img_url: 'https://res.cloudinary.com/dh8fp23nd/image/upload/v1679302435/main-web/roadshow/nagaraja-nayak_l4xte5.png',
|
153
|
+
img_alt: '',
|
154
|
+
title: 'Optum goes from concept to production in 100 days with Hasura',
|
155
|
+
button: {
|
156
|
+
cta_text: 'Read the case Study'
|
157
|
+
}
|
158
|
+
|
159
|
+
|
160
|
+
}
|
161
|
+
}
|
162
|
+
},
|
163
|
+
{
|
164
|
+
video_url: 'https://res.cloudinary.com/dh8fp23nd/video/upload/v1654760488/samples/sea-turtle.mp4',
|
165
|
+
|
166
|
+
testimonial: {
|
167
|
+
card: {
|
168
|
+
cardBg: '',
|
169
|
+
title_img: "Optum",
|
170
|
+
img_alt: 'optum',
|
171
|
+
subtitle: '“Optum goes from concept to production in 100 days with Hasura”',
|
172
|
+
avatar: {
|
173
|
+
img_url: 'https://res.cloudinary.com/dh8fp23nd/image/upload/v1679302435/main-web/roadshow/nagaraja-nayak_l4xte5.png',
|
174
|
+
name: 'Nagaraja Nayak',
|
175
|
+
designation: 'Optum',
|
176
|
+
avatarBgColor: 'bg-yellow-400'
|
177
|
+
}
|
178
|
+
},
|
179
|
+
cardHover: {
|
180
|
+
cardBg: 'bg-green-500',
|
181
|
+
img_url: '',
|
182
|
+
img_alt: '',
|
183
|
+
title: 'Optum goes from concept to production in 100 days with Hasura',
|
184
|
+
button: {
|
185
|
+
cta_text: 'Read the case Study'
|
186
|
+
}
|
187
|
+
|
188
|
+
|
189
|
+
}
|
190
|
+
}
|
191
|
+
},
|
192
|
+
{
|
193
|
+
video_url: 'https://res.cloudinary.com/dh8fp23nd/video/upload/v1654760488/samples/sea-turtle.mp4',
|
194
|
+
testimonial: {
|
195
|
+
card: {
|
196
|
+
cardBg: '',
|
197
|
+
title_img: "Optum",
|
198
|
+
img_alt: 'optum',
|
199
|
+
subtitle: '“Optum goes from concept to production in 100 days with Hasura”',
|
200
|
+
avatar: {
|
201
|
+
img_url: 'https://res.cloudinary.com/dh8fp23nd/image/upload/v1679302435/main-web/roadshow/nagaraja-nayak_l4xte5.png',
|
202
|
+
name: 'Nagaraja Nayak',
|
203
|
+
designation: 'Optum',
|
204
|
+
avatarBgColor: 'bg-yellow-400'
|
205
|
+
}
|
206
|
+
},
|
207
|
+
cardHover: {
|
208
|
+
cardBg: 'bg-green-500',
|
209
|
+
img_url: '',
|
210
|
+
img_alt: '',
|
211
|
+
title: 'Optum goes from concept to production in 100 days with Hasura',
|
212
|
+
button: {
|
213
|
+
cta_text: 'Read the case Study'
|
214
|
+
}
|
215
|
+
|
216
|
+
|
217
|
+
}
|
218
|
+
}
|
219
|
+
},
|
220
|
+
]
|
130
221
|
const SideCard = () => (
|
131
|
-
<div className=
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
222
|
+
<div className="h-full">
|
223
|
+
|
224
|
+
<div className='bg-green-500 w-[300px] flex flex-col items-center justify-between rounded-3xl h-[338px] '>
|
225
|
+
<div className='w-[300px] flex justify-center'>
|
226
|
+
<img src='https://res.cloudinary.com/dh8fp23nd/image/upload/v1686737531/hasura-design-system/icons/optum_zn0bhw.png' alt='imgb' className='p-5 ' />
|
227
|
+
</div>
|
228
|
+
<div className='w-[300px] flex justify-center'>
|
229
|
+
<img src='https://res.cloudinary.com/dh8fp23nd/image/upload/v1685596743/website%20v3/capabilities-pre-footer_qxqlon.png' alt='imga' className='p-2 w-[194px]' />
|
230
|
+
</div>
|
137
231
|
</div>
|
138
232
|
</div>
|
139
233
|
)
|
140
|
-
export default function
|
234
|
+
export default function HomePageCarousePrimary(props) {
|
141
235
|
const {
|
142
236
|
cards = carouselItems,
|
143
237
|
cards2 = carouselItems2,
|
144
238
|
} = props;
|
145
239
|
|
146
|
-
|
240
|
+
const [boolean, setBoolean] = React.useState(null);
|
147
241
|
const carouselRef = useRef(null); // Create a ref using useRef
|
148
242
|
const carouselRef2 = useRef(null); // Create a ref using useRef
|
149
243
|
const [currentCard, setCurrentCard] = React.useState(0);
|
@@ -162,6 +256,7 @@ export default function HomePageCarousel2(props) {
|
|
162
256
|
|
163
257
|
const nextCard = () => {
|
164
258
|
let scrollByAmount = 1;
|
259
|
+
let scrollByAmount2 = 5;
|
165
260
|
|
166
261
|
if (currentCard < totalCards - scrollByAmount) {
|
167
262
|
setCurrentCard(currentCard + scrollByAmount);
|
@@ -170,7 +265,7 @@ export default function HomePageCarousel2(props) {
|
|
170
265
|
behavior: "smooth",
|
171
266
|
});
|
172
267
|
carouselRef2.current.scrollTo({
|
173
|
-
left: carouselRef2.current.scrollLeft + carouselRef2.current.children[0].offsetWidth *
|
268
|
+
left: carouselRef2.current.scrollLeft + carouselRef2.current.children[0].offsetWidth * scrollByAmount2,
|
174
269
|
behavior: "smooth",
|
175
270
|
});
|
176
271
|
}
|
@@ -189,14 +284,17 @@ export default function HomePageCarousel2(props) {
|
|
189
284
|
|
190
285
|
const previousCard = () => {
|
191
286
|
let scrollByAmount = 1;
|
192
|
-
|
193
|
-
|
287
|
+
let scrollByAmount2 = 5;
|
194
288
|
if (currentCard > 0) {
|
195
289
|
setCurrentCard(currentCard - scrollByAmount);
|
196
290
|
carouselRef.current.scrollTo({
|
197
291
|
left: carouselRef.current.scrollLeft - carouselRef.current.children[0].offsetWidth * scrollByAmount,
|
198
292
|
behavior: "smooth",
|
199
293
|
});
|
294
|
+
carouselRef2.current.scrollTo({
|
295
|
+
left: carouselRef2.current.scrollLeft - carouselRef2.current.children[0].offsetWidth * scrollByAmount2,
|
296
|
+
behavior: "smooth",
|
297
|
+
});
|
200
298
|
} else {
|
201
299
|
const lastCardIndex = totalCards - 1;
|
202
300
|
const scrollLeft = carouselRef.current.scrollWidth - carouselRef.current.children[0].offsetWidth * scrollByAmount;
|
@@ -205,28 +303,37 @@ export default function HomePageCarousel2(props) {
|
|
205
303
|
left: scrollLeft,
|
206
304
|
behavior: "smooth",
|
207
305
|
});
|
306
|
+
const scrollLeft2 = carouselRef2.current.scrollWidth - carouselRef2.current.children[0].offsetWidth * scrollByAmount2;
|
307
|
+
setCurrentCard(lastCardIndex);
|
308
|
+
carouselRef.current.scrollTo({
|
309
|
+
left: scrollLeft2,
|
310
|
+
behavior: "smooth",
|
311
|
+
});
|
208
312
|
}
|
209
313
|
};
|
210
314
|
|
211
315
|
const arrowStyle = ' text-2xl z-10 bg-black h-10 ml-6 w-10 rounded-full bg-purple-200 hover:bg-neutral-0 flex items-center justify-center';
|
212
316
|
|
213
|
-
const
|
317
|
+
const toggleBoolean = () => {
|
318
|
+
setBoolean((prevBoolean) => !prevBoolean); // Toggle the boolean value
|
319
|
+
console.log(boolean)
|
320
|
+
};
|
321
|
+
|
322
|
+
const sliderControl = (isLeft) => (
|
214
323
|
<button
|
215
324
|
type="button"
|
216
|
-
onClick={
|
217
|
-
|
218
|
-
|
325
|
+
onClick={() => {
|
326
|
+
toggleBoolean(); // Call the toggleBoolean function
|
327
|
+
isLeft ? previousCard() : nextCard(); // Call previousCard or nextCard based on the button clicked
|
328
|
+
}}
|
329
|
+
className={`flex ${arrowStyle} ${isLeft ? '' : ''}`}
|
219
330
|
>
|
220
331
|
<span role="img" aria-label={`Arrow ${isLeft ? 'left' : 'right'}`}>
|
221
|
-
{isLeft ?
|
222
|
-
|
332
|
+
{isLeft ? (
|
223
333
|
<Icon height={'h-6 w-6'} variant={'chevronleft'} strokeColor='#00288E' />
|
224
|
-
|
225
|
-
:
|
226
|
-
|
334
|
+
) : (
|
227
335
|
<Icon height={'h-6 w-6'} variant={'chevronright'} strokeColor='#00288E' />
|
228
|
-
|
229
|
-
}
|
336
|
+
)}
|
230
337
|
</span>
|
231
338
|
</button>
|
232
339
|
);
|
@@ -244,66 +351,79 @@ export default function HomePageCarousel2(props) {
|
|
244
351
|
onMouseEnter={handleMouseEnter}
|
245
352
|
onMouseLeave={handleMouseLeave}
|
246
353
|
>
|
247
|
-
<div className="hidden tb:flex tb:flex-
|
248
|
-
<div className="flex
|
354
|
+
<div className="hidden tb:flex-col-reverse tb:flex items-center">
|
355
|
+
<div className="flex z-20 justify-center items-center">
|
249
356
|
{/* {slider()} */}
|
250
357
|
<div className="flex w-screen justify-center ">
|
251
358
|
{sliderControl(true)}
|
252
359
|
{sliderControl()}
|
253
360
|
</div>
|
254
361
|
</div>
|
255
|
-
<div className="justify-center
|
362
|
+
<div className="justify-center select-none items-center"
|
256
363
|
|
257
364
|
>
|
258
365
|
<div className="w-screen flex justify-center">
|
259
|
-
<div className=
|
260
|
-
|
261
|
-
|
366
|
+
<div className="absolute z-30">
|
367
|
+
<div className={`snap-x w-[643px] h-[800px] items-center bg-neutral-0 z-10 inline-flex select-none overflow-x-hidden scrollbar-hide`}
|
368
|
+
ref={carouselRef}
|
369
|
+
>
|
370
|
+
{video_props.map((item, i) => (
|
371
|
+
<div className=" db:snap-center snap-center tb-m:snap-start mx-5 " key={i } ref={refs[i]}>
|
372
|
+
<div className=" select-none rounded-3xl object-contain ">
|
373
|
+
{React.createElement(VideoCard, item)}
|
374
|
+
</div>
|
262
375
|
|
263
|
-
{cards.map((item, i) => (
|
264
|
-
<div className=" db:snap-center snap-center tb-m:snap-start mx-5 shrink-0" key={i} ref={refs[i]}>
|
265
|
-
<div className=" select-none rounded-3xl object-contain ">
|
266
|
-
<VideoCard />
|
267
376
|
</div>
|
377
|
+
))}
|
268
378
|
|
269
|
-
|
270
|
-
))}
|
271
|
-
|
272
|
-
|
379
|
+
</div>
|
273
380
|
</div>
|
274
|
-
<div className={`snap-x w-[1279px] h-
|
381
|
+
<div className={`snap-x w-[1279px] h-[800px] items-center flex gap-[160px] select-none overflow-x-hidden scrollbar-hide`}
|
275
382
|
ref={carouselRef2}
|
276
383
|
|
277
384
|
>
|
278
385
|
|
279
|
-
{cards.map((item, i) =>
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
|
285
|
-
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
|
290
|
-
|
386
|
+
{cards.map((item, i) => {
|
387
|
+
|
388
|
+
// toggleBoolean();
|
389
|
+
return (
|
390
|
+
<>
|
391
|
+
|
392
|
+
<div
|
393
|
+
className={`${isScrollActive ? '' : '-translate-y-36'} transition-all duration-[1500ms] z-[1] snap-center tb-m:snap-start `}
|
394
|
+
key={i + 'x'}
|
395
|
+
ref={refs2[i]}
|
396
|
+
>
|
397
|
+
<div className="select-none rounded-3xl object-contain">
|
398
|
+
<SideCard />
|
399
|
+
|
400
|
+
</div>
|
291
401
|
</div>
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
<SideCard />
|
302
|
-
{i}z
|
402
|
+
<div
|
403
|
+
className={`${isScrollActive ? ' opacity-0' : ''} transition-all duration-[1500ms] z-[1] snap-center tb-m:snap-start mx-5 `}
|
404
|
+
key={i + 'y'}
|
405
|
+
ref={refs2[i]}
|
406
|
+
>
|
407
|
+
<div className="select-none rounded-3xl object-contain">
|
408
|
+
<SideCard />
|
409
|
+
|
410
|
+
</div>
|
303
411
|
</div>
|
304
|
-
|
305
|
-
|
306
|
-
|
412
|
+
<div
|
413
|
+
className={`${isScrollActive ? '' : 'translate-y-36'} transition-all duration-[1500ms] z-[1] snap-center tb-m:snap-start mx-5 `}
|
414
|
+
key={i + 'z'}
|
415
|
+
ref={refs2[i]}
|
416
|
+
>
|
417
|
+
<div className="select-none rounded-3xl object-contain">
|
418
|
+
<SideCard />
|
419
|
+
|
420
|
+
</div>
|
421
|
+
</div>
|
422
|
+
|
423
|
+
|
424
|
+
</>
|
425
|
+
)
|
426
|
+
})}
|
307
427
|
|
308
428
|
</div>
|
309
429
|
</div>
|
@@ -1,4 +1,5 @@
|
|
1
1
|
export {default as Carousel} from './carousel';
|
2
2
|
export {default as CarouselCard} from './carouselCard';
|
3
3
|
export {default as HomepageCarousel} from './homepageCarousel';
|
4
|
-
export {default as
|
4
|
+
export {default as HomepageCarouselPrimary} from './homeCarousel';
|
5
|
+
export {default as CustomCarousel} from './customCarousel';
|
@@ -54,7 +54,7 @@ const socialShare = [
|
|
54
54
|
},
|
55
55
|
]
|
56
56
|
|
57
|
-
export default function
|
57
|
+
export default function V3Footer(props) {
|
58
58
|
const [isError, setIsError] = useState(false);
|
59
59
|
const [isItems, setIsItems] = useState(null);
|
60
60
|
useEffect(() => {
|
@@ -118,3 +118,187 @@ export default function V3Header(props) {
|
|
118
118
|
</div>
|
119
119
|
)
|
120
120
|
}
|
121
|
+
|
122
|
+
|
123
|
+
V3Footer.defaultProps = {
|
124
|
+
brandUrl: 'https://res.cloudinary.com/dh8fp23nd/image/upload/v1686659126/website%20v3/hasura-primary_y9cdnn.svg',
|
125
|
+
brandAlt: 'Hasura',
|
126
|
+
brandLink: 'https://hasura.io/',
|
127
|
+
footerLinks: [
|
128
|
+
{
|
129
|
+
title: 'Platform',
|
130
|
+
links: [
|
131
|
+
{
|
132
|
+
linkText: 'Hasura CE Edition',
|
133
|
+
linkUrl: 'https://hasura.io/opensource/',
|
134
|
+
},
|
135
|
+
{
|
136
|
+
linkText: 'Hasura EE',
|
137
|
+
linkUrl: 'https://hasura.io/enterprise/',
|
138
|
+
},
|
139
|
+
{
|
140
|
+
linkText: 'Hasura Cloud',
|
141
|
+
linkUrl: 'https://hasura.io/cloud/',
|
142
|
+
},
|
143
|
+
{
|
144
|
+
linkText: 'Pricing',
|
145
|
+
linkUrl: 'https://hasura.io/pricing/',
|
146
|
+
},
|
147
|
+
]
|
148
|
+
},
|
149
|
+
{
|
150
|
+
title: 'Capabilities',
|
151
|
+
links: [
|
152
|
+
{
|
153
|
+
linkText: 'Performance',
|
154
|
+
linkUrl: 'https://hasura.io/product/performance/',
|
155
|
+
},
|
156
|
+
{
|
157
|
+
linkText: 'Instant API',
|
158
|
+
linkUrl: 'https://hasura.io/product/instant-api/',
|
159
|
+
},
|
160
|
+
{
|
161
|
+
linkText: 'Authorization',
|
162
|
+
linkUrl: 'https://hasura.io/product/authorization/',
|
163
|
+
},
|
164
|
+
{
|
165
|
+
linkText: 'API Security',
|
166
|
+
linkUrl: 'https://hasura.io/product/api-security/',
|
167
|
+
},
|
168
|
+
{
|
169
|
+
linkText: 'Federation',
|
170
|
+
linkUrl: 'https://hasura.io/product/federation/',
|
171
|
+
},
|
172
|
+
{
|
173
|
+
linkText: 'Observability',
|
174
|
+
linkUrl: 'https://hasura.io/product/observability/',
|
175
|
+
},
|
176
|
+
]
|
177
|
+
},
|
178
|
+
{
|
179
|
+
title: 'Build',
|
180
|
+
links: [
|
181
|
+
{
|
182
|
+
linkText: 'Docs',
|
183
|
+
linkUrl: 'https://hasura.io/docs/latest/index/',
|
184
|
+
},
|
185
|
+
{
|
186
|
+
linkText: 'Hasura Hub',
|
187
|
+
linkUrl: 'https://hasura.io/hub/',
|
188
|
+
},
|
189
|
+
// {
|
190
|
+
// linkText: 'GraphQL Hub',
|
191
|
+
// linkUrl: '#',
|
192
|
+
// },
|
193
|
+
// {
|
194
|
+
// linkText: 'Guides',
|
195
|
+
// linkUrl: '#',
|
196
|
+
// },
|
197
|
+
{
|
198
|
+
linkText: 'Changelog',
|
199
|
+
linkUrl: 'https://github.com/hasura/graphql-engine/releases/',
|
200
|
+
},
|
201
|
+
{
|
202
|
+
linkText: 'GraphiQL',
|
203
|
+
linkUrl: 'https://cloud.hasura.io/public/graphiql',
|
204
|
+
},
|
205
|
+
]
|
206
|
+
},
|
207
|
+
{
|
208
|
+
title: 'Learn',
|
209
|
+
links: [
|
210
|
+
{
|
211
|
+
linkText: 'Blog',
|
212
|
+
linkUrl: 'https://hasura.io/blog/',
|
213
|
+
},
|
214
|
+
// {
|
215
|
+
// linkText: 'Tech Talks',
|
216
|
+
// linkUrl: '#',
|
217
|
+
// },
|
218
|
+
{
|
219
|
+
linkText: 'Tutorials',
|
220
|
+
linkUrl: 'https://hasura.io/learn/',
|
221
|
+
},
|
222
|
+
{
|
223
|
+
linkText: 'Events',
|
224
|
+
linkUrl: 'https://hasura.io/events/',
|
225
|
+
},
|
226
|
+
]
|
227
|
+
},
|
228
|
+
{
|
229
|
+
title: 'Company',
|
230
|
+
links: [
|
231
|
+
{
|
232
|
+
linkText: 'Our Story',
|
233
|
+
linkUrl: 'https://hasura.io/about/',
|
234
|
+
},
|
235
|
+
// {
|
236
|
+
// linkText: 'Newsroom',
|
237
|
+
// linkUrl: '#',
|
238
|
+
// },
|
239
|
+
{
|
240
|
+
linkText: 'Careers',
|
241
|
+
linkUrl: 'https://hasura.io/careers/',
|
242
|
+
},
|
243
|
+
// {
|
244
|
+
// linkText: 'Partners',
|
245
|
+
// linkUrl: '#',
|
246
|
+
// },
|
247
|
+
{
|
248
|
+
linkText: 'Legal',
|
249
|
+
linkUrl: 'https://hasura.io/legal/',
|
250
|
+
},
|
251
|
+
{
|
252
|
+
linkText: 'Brand',
|
253
|
+
linkUrl: 'https://hasura.io/brand/',
|
254
|
+
},
|
255
|
+
]
|
256
|
+
},
|
257
|
+
{
|
258
|
+
title: 'Connect',
|
259
|
+
links: [
|
260
|
+
{
|
261
|
+
linkText: 'Community',
|
262
|
+
linkUrl: 'https://hasura.io/community/',
|
263
|
+
},
|
264
|
+
{
|
265
|
+
linkText: 'Discord',
|
266
|
+
linkUrl: 'https://discord.com/invite/hasura',
|
267
|
+
},
|
268
|
+
// {
|
269
|
+
// linkText: 'Forum',
|
270
|
+
// linkUrl: '#',
|
271
|
+
// },
|
272
|
+
// {
|
273
|
+
// linkText: 'Meetup',
|
274
|
+
// linkUrl: '#',
|
275
|
+
// },
|
276
|
+
// {
|
277
|
+
// linkText: 'Support',
|
278
|
+
// linkUrl: '#',
|
279
|
+
// },
|
280
|
+
]
|
281
|
+
},
|
282
|
+
{
|
283
|
+
title: 'Community',
|
284
|
+
links: [
|
285
|
+
{
|
286
|
+
linkText: 'Docs',
|
287
|
+
linkUrl: 'https://hasura.io/docs/latest/index/',
|
288
|
+
},
|
289
|
+
{
|
290
|
+
linkText: 'Help',
|
291
|
+
linkUrl: 'https://hasura.io/help/',
|
292
|
+
},
|
293
|
+
{
|
294
|
+
linkText: 'Github',
|
295
|
+
linkUrl: 'https://github.com/hasura',
|
296
|
+
},
|
297
|
+
{
|
298
|
+
linkText: 'Contact Sales',
|
299
|
+
linkUrl: 'https://hasura.io/contact-us/',
|
300
|
+
},
|
301
|
+
]
|
302
|
+
},
|
303
|
+
],
|
304
|
+
}
|
@@ -1178,9 +1178,27 @@ import {ReactComponent as Home03Icon } from "../../../assets/icons/home-03.svg"
|
|
1178
1178
|
import {ReactComponent as HasuraBlueLogoIcon } from "../../../assets/V3/HasuraBlueLogo.svg"
|
1179
1179
|
import {ReactComponent as Minus01Icon } from "../../../assets/icons/minus-01.svg"
|
1180
1180
|
import {ReactComponent as HasuraIcon } from "../../../assets/icons/hasura.svg"
|
1181
|
+
import {ReactComponent as CachingIcon } from "../../../assets/icons/caching.svg"
|
1182
|
+
import {ReactComponent as DoubleArrowIcon } from "../../../assets/icons/doubleArrow.svg"
|
1183
|
+
import {ReactComponent as EndpointsIcon } from "../../../assets/icons/endpoints.svg"
|
1184
|
+
import {ReactComponent as MutationIcon } from "../../../assets/icons/mutations.svg"
|
1185
|
+
import {ReactComponent as NetworkingIcon } from "../../../assets/icons/networking.svg"
|
1186
|
+
import {ReactComponent as QueriesIcon } from "../../../assets/icons/queries.svg"
|
1187
|
+
import {ReactComponent as RemoteIcon } from "../../../assets/icons/remote.svg"
|
1188
|
+
import {ReactComponent as TriggerIcon } from "../../../assets/icons/trigger.svg"
|
1189
|
+
import {ReactComponent as WatchTriggerIcon } from "../../../assets/icons/watchTrigger.svg"
|
1181
1190
|
import {ReactComponent as HasuraLogoWhiteIcon } from "../../../assets/V3/HasuraWhite.svg"
|
1182
1191
|
|
1183
1192
|
const iconReferenceMap = {
|
1193
|
+
caching: CachingIcon,
|
1194
|
+
doubleArrow: DoubleArrowIcon,
|
1195
|
+
endpoint: EndpointsIcon,
|
1196
|
+
mutation: MutationIcon,
|
1197
|
+
networking: NetworkingIcon,
|
1198
|
+
queries: QueriesIcon,
|
1199
|
+
remote: RemoteIcon,
|
1200
|
+
trigger: TriggerIcon,
|
1201
|
+
watchTrigger: WatchTriggerIcon,
|
1184
1202
|
hasura1: Hasura1Icon,
|
1185
1203
|
hasura2: Hasura2Icon,
|
1186
1204
|
hasura3: Hasura3Icon,
|
package/src/HDS/helpers/index.js
CHANGED
@@ -14,30 +14,27 @@ export default function TextIconCard(props) {
|
|
14
14
|
<Typography textStyle="h3" as="h3" className="pb-2 text-neutral-1000">{props.title}</Typography>
|
15
15
|
<Typography textStyle="sub2" className="pb-6 text-neutral-600">{props.description}</Typography>
|
16
16
|
{props.button &&
|
17
|
-
<
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
/>
|
30
|
-
</a>))
|
31
|
-
}
|
32
|
-
</div>
|
17
|
+
<a href={props.button.cta_link} className="flex ">
|
18
|
+
<HDSButton
|
19
|
+
label={props.button.cta_text}
|
20
|
+
type={props.button.cta_type || 'secondary'}
|
21
|
+
leftIconVariant='none'
|
22
|
+
rightIconVariant='none'
|
23
|
+
state='default'
|
24
|
+
size='md'
|
25
|
+
rightAnimatedArrow={true}
|
26
|
+
rightAnimatedArrowColor={props.button.rightAnimatedArrowColor || '#3970FD'}
|
27
|
+
/>
|
28
|
+
</a>
|
33
29
|
}
|
30
|
+
|
34
31
|
</div>
|
35
32
|
<div className="flex-1 pt-14 tb-m:pt-0">
|
36
33
|
{
|
37
34
|
props.iconCards.map((card, index) => (
|
38
|
-
<div className="tb:pb-10 tb-l:pb-16 last:pb-0 flex" key={index}>
|
39
|
-
<div className={
|
40
|
-
<Icon height={'h-6 w-6'} variant={card.
|
35
|
+
<div className="pb-6 tb:pb-10 tb-l:pb-16 last:pb-0 flex" key={index}>
|
36
|
+
<div className={`bg-blue-300 w-12 h-12 min-w-[48px] rounded-full flex justify-center items-center mr-5`}>
|
37
|
+
<Icon height={'h-6 w-6 stroke-[1.5px]'} variant={((card.iconName) ? card.iconName : 'cube02')} strokeClass='stroke-neutral-1000' />
|
41
38
|
</div>
|
42
39
|
<div>
|
43
40
|
<Typography textStyle="h4" as="h4" className="pb-2 text-neutral-1000">{card.title}</Typography>
|
@@ -49,4 +46,4 @@ export default function TextIconCard(props) {
|
|
49
46
|
</div>
|
50
47
|
</div>
|
51
48
|
)
|
52
|
-
}
|
49
|
+
}
|