hds-web 1.1.5 → 1.1.8

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hds-web",
3
- "version": "1.1.5",
3
+ "version": "1.1.8",
4
4
  "private": false,
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.es.js",
@@ -1,3 +1,3 @@
1
1
  <svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
2
- <path d="M7.5 12L10.5 15L16.5 9M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z" stroke-linecap="round" stroke-linejoin="round"/>
2
+ <path d="M7.5 12L10.5 15L16.5 9M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
3
3
  </svg>
@@ -14,14 +14,14 @@ const iconClasses = {
14
14
  };
15
15
 
16
16
  const colorVariants = {
17
- blue: 'bg-blue-200 text-blue-800 group-hover:bg-blue-300 border border-blue-400 ',
18
- grey: 'bg-neutral-200 text-neutral-800 group-hover:bg-neutral-300 border border-neutral-400 ',
19
- purple: 'bg-purple-200 text-purple-800 group-hover:bg-purple-300 border border-purple-400 ',
20
- pink: 'bg-pink-200 text-pink-800 group-hover:bg-pink-300 border border-pink-400 ',
21
- amber: 'bg-amber-200 text-amber-800 group-hover:bg-amber-300 border border-amber-400 ',
22
- cyan: 'bg-cyan-200 text-cyan-800 group-hover:bg-cyan-300 border border-cyan-400 ',
17
+ blue: 'bg-blue-200 text-blue-800 group-hover:bg-blue-300 ',
18
+ grey: 'bg-neutral-200 text-neutral-800 group-hover:bg-neutral-300 ',
19
+ purple: 'bg-purple-200 text-purple-800 group-hover:bg-purple-300 ',
20
+ pink: 'bg-pink-200 text-pink-800 group-hover:bg-pink-300 ',
21
+ amber: 'bg-amber-200 text-amber-800 group-hover:bg-amber-300 ',
22
+ cyan: 'bg-cyan-200 text-cyan-800 group-hover:bg-cyan-300 ',
23
23
  cyan200: 'bg-cyan-200 text-cyan-600 border border-cyan-400 border border-cyan-400 ',
24
- green: 'bg-green-200 text-green-800 group-hover:bg-green-300 border border-green-400 ',
24
+ green: 'bg-green-200 text-green-800 group-hover:bg-green-300 ',
25
25
  }
26
26
 
27
27
  export default function Badge({
@@ -55,7 +55,7 @@ export default function Badge({
55
55
  <Icon height={'h-4 w-4'} variant={leftIconVariant} strokeColor={leftIconColor} />
56
56
  </div>
57
57
  )}
58
- <Typography textStyle='h6'>{children}</Typography>
58
+ <Typography textStyle='body3c-medium'>{children}</Typography>
59
59
 
60
60
  {rightIconVariant && rightIconVariant !== 'none' && (
61
61
  <div className='ml-1'>
@@ -28,7 +28,7 @@ const Buttonclasses = {
28
28
  },
29
29
  'tonal': {
30
30
  'default': {
31
- 'base': 'db:w-fit tb:w-fit w-full justify-center bg-blue-100 text-blue-600',
31
+ 'base': 'db:w-fit tb:w-fit w-full justify-center bg-blue-200 text-blue-600',
32
32
  'hover': 'hover:bg-blue-700 hover:text-neutral-0 hover:shadow-md hover:shadow hover:transition-all hover:ease-out hover:duration-300',
33
33
  'focus': 'focus:bg-blue-100 focus:text-blue-600 focus:shadow-[0px_0px_0px_4px_#DFE8FF] focus:outline-none',
34
34
  },
@@ -36,7 +36,7 @@ const Buttonclasses = {
36
36
  },
37
37
  'secondary': {
38
38
  'default': {
39
- 'base': 'db:w-fit tb:w-fit w-full justify-center border-2 border-blue-500 bg-neutral-0 text-blue-500',
39
+ 'base': 'db:w-fit tb:w-fit w-full justify-center border-2 border-neutral-0 text-blue-500',
40
40
 
41
41
  'hover': 'hover:text-neutral-0 hover:bg-blue-700 hover:border-2 hover:border-blue-700 hover:shadow-md hover:shadow hover:transition-all hover:ease-out hover:delay-100 hover:duration-300',
42
42
 
@@ -55,7 +55,7 @@ const Buttonclasses = {
55
55
  'primaryLink': {
56
56
  'default': {
57
57
  'base': 'db:w-fit tb:w-fit w-full justify-center text-blue-500',
58
- 'hover': 'hover:text-blue-600',
58
+ 'hover': 'hover:text-neutral-0',
59
59
  'focus': 'focus:shadow-[0px_0px_0px_4px_#DFE8FF] focus:outline-none focus:text-blue-600',
60
60
  },
61
61
  'disabled': 'text-neutral-300',
@@ -103,6 +103,8 @@ const Buttonclasses = {
103
103
  }
104
104
  export default function Button(props) {
105
105
  const {
106
+ btnTextColorClass,
107
+ btnBgColorClass,
106
108
  rightIconVariant,
107
109
  rightIconColor,
108
110
  leftIconVariant,
@@ -137,6 +139,8 @@ export default function Button(props) {
137
139
  const buttonClasses = [
138
140
  'inline-flex items-center whitespace-pre',
139
141
  'rounded-full',
142
+ btnBgColorClass,
143
+ btnTextColorClass,
140
144
  Buttonclasses['buttonSizes'][`${sizeType}`][`${size}`],
141
145
  'group',
142
146
  defaultClasses,
@@ -0,0 +1 @@
1
+ export {default as V3Dropdown} from './v3Dropdown';
@@ -0,0 +1,63 @@
1
+ import React from "react"
2
+ import PropTypes from 'prop-types';
3
+ import { HDSColor } from "../../../foundation/ColorPalette"
4
+ import { FlyoutB, FlyoutA } from '../Menu'
5
+
6
+ export default function DropdownA(props) {
7
+ return (
8
+ <div className='flex flex-col tb:flex-row gap-2'>
9
+ <div className=' bg-neutral-0 rounded-2xl tb:min-w-[28.063rem]'>
10
+ <FlyoutB
11
+ {...props.primaryCard}
12
+ />
13
+ </div>
14
+
15
+ {props.secondaryCardArr && props.secondaryCardArr.map((item, index) => (
16
+
17
+ <div key={index} className={'rounded-2xl ' + (item.card_bg)? 'bg-neutral-0 rounded-2xl' : (HDSColor(item.card_bg)) }>
18
+ <FlyoutA
19
+ label = {item.label}
20
+ childArray = {item.childArray}
21
+ />
22
+ </div>
23
+ ))}
24
+ </div>
25
+
26
+ )
27
+ }
28
+
29
+ DropdownA.defaultProps = {
30
+ primaryCard:{
31
+ iconVariant: 'home03',
32
+ mainDescription: 'description1',
33
+ primaryBtnLabel: 'label 1',
34
+ strokeClass: 'stroke-neutral-800'
35
+ },
36
+
37
+ secondaryCardArr:[{
38
+ childArray:[
39
+ {
40
+ description: '',
41
+ href: '#',
42
+ icon: 'cube01',
43
+ name: 'Analytics'
44
+ },
45
+ {
46
+ description: '',
47
+ href: '#',
48
+ icon: 'cube01',
49
+ name: 'Engagement'
50
+ },
51
+ {
52
+ description: '',
53
+ href: '#',
54
+ icon: 'cube01',
55
+ name: 'Security'
56
+ },
57
+ ],
58
+ label:"Label1"
59
+ },
60
+
61
+
62
+ ]
63
+ }
@@ -0,0 +1,88 @@
1
+ import { Fragment } from 'react'
2
+ import { Popover, Transition } from '@headlessui/react'
3
+ import { Icon } from '../../common-components/Icon'
4
+ import { Typography } from '../../../foundation/Typography'
5
+ export default function FlyoutA(props) {
6
+ const {
7
+ label,
8
+ childArray,
9
+ buttonArray,
10
+ } = props
11
+ return (
12
+
13
+ <div className="shadow-sm">
14
+ <div
15
+ className="w-full rounded-2xl "
16
+ >
17
+ <div className="p-6 min-w-[348px]">
18
+ {label && <Typography
19
+ textStyle='h6'
20
+ className=' uppercase text-neutral-500 mb-4'>
21
+ {label}
22
+ </Typography>}
23
+ <div className='tb:grid tb:grid-cols-2'>
24
+ {childArray && childArray.map((item) => (
25
+ <div
26
+ key={item.name}
27
+ className="group relative py-1 flex rounded-lg items-center">
28
+ <div
29
+ className="mt-1 flex rounded-lg items-center group-hover:bg-white">
30
+ {item.icon && (
31
+ <Icon
32
+ height={'h-6'}
33
+ variant={item.icon}
34
+ strokeColor={'#6C737F'}
35
+ />
36
+ )}
37
+ </div>
38
+ <div>
39
+ <a href={item.href}>
40
+ <Typography
41
+ textStyle='h-6'
42
+ className='text-neutral-700 px-2 py-2.5'>
43
+ {item.name}
44
+ </Typography>
45
+ </a>
46
+ {item.description &&
47
+ item.description.length > 0 && (
48
+ <Typography
49
+ textStyle='body3c-medium'
50
+ className='text-neutral-700'>
51
+ {item.description}
52
+ </Typography>
53
+ )}
54
+ </div>
55
+ </div>
56
+ ))}
57
+ </div>
58
+ </div>
59
+ <div
60
+ className="grid grid-cols-2 divide-x divide-gray-900/5 bg-gray-50"
61
+ >
62
+ {buttonArray && buttonArray.map((item) => (
63
+ <a
64
+ key={item.name}
65
+ href={item.href}
66
+ className="flex justify-center gap-x-2.5 p-3 font-semibold text-gray-900 hover:bg-gray-100"
67
+ >
68
+
69
+ {item.icon && (
70
+ <Icon
71
+ height={'h-6'}
72
+ variant={item.icon}
73
+ strokeColor={'#6C737F'} />
74
+ )}
75
+ <Typography
76
+ textStyle='h-6'
77
+ className='text-neutral-500'>
78
+ {item.name}
79
+ </Typography>
80
+ </a>
81
+ ))}
82
+ </div>
83
+ </div>
84
+ </div>
85
+
86
+ )
87
+
88
+ }
@@ -10,21 +10,22 @@ export default function FlyoutB(props) {
10
10
  const {
11
11
  iconVariant = 'home03',
12
12
  strokeColor = '#C6D6FF',
13
+ strokeClass = 'stroke-neutral-800',
13
14
  primaryBtnLabel = 'label1',
14
15
  mainDescription = 'Choose from our open source community edition, fully managed cloud edition or custom enterprise',
15
16
  secondaryBtn = [
16
17
  { cta_leftVariantIcon: 'home03', cta_leftVariantIconColor: '#6C737F', cta_text: 'Button 1' },
17
- { cta_leftVariantIcon: 'home04', cta_leftVariantIconColor: '#6C737F', cta_text: 'Button 2' }
18
+
19
+
18
20
  ]
19
21
  } = props;
20
22
 
21
23
  return (
22
- <div>
23
- <div className="">
24
- <div className="bg-neutral-0 shadow-sm rounded-2xl">
25
- <div className="p-6">
26
- <Icon height='h-10 w-10' variant={iconVariant} strokeColor={strokeColor} />
27
- <div>
24
+
25
+ <div className="flex flex-col justify-between w-full h-full shadow-sm rounded-2xl">
26
+ <div className="p-6">
27
+ <Icon height='h-10 w-10' variant={iconVariant} strokeColor={strokeColor} strokeClass={strokeClass} />
28
+ <div className="flex">
28
29
  <HDSButton
29
30
  label={primaryBtnLabel}
30
31
  type='secondaryLink'
@@ -36,29 +37,30 @@ export default function FlyoutB(props) {
36
37
  rightAnimatedArrowColor='#6C737F'
37
38
  className='mt-4'
38
39
  />
39
- </div>
40
- <Typography className='mt-2 text-neutral-800' textStyle='body3'>{mainDescription}</Typography>
41
- </div>
42
-
43
- <div className="grid grid-cols-2 justify-around border-t divide-x divide-neutral-150 border-neutral-150">
44
- {secondaryBtn.map((btn, index) => (
45
- <a key={index} href='#' className=" p-6 flex justify-center ">
46
- <HDSButton
47
- leftIconVariant={btn.cta_leftVariantIcon}
48
- leftIconColor={btn.cta_leftVariantIconColor}
49
- rightIconVariant='none'
50
- type='secondaryLink'
51
- label={btn.cta_text}
52
- state='default'
53
- size='lg'
54
- rightAnimatedArrow={true}
55
- rightAnimatedArrowColor='#6C737F'
56
- />
57
- </a>
58
- ))}
59
- </div>
60
40
  </div>
41
+ <Typography className='mt-2 text-neutral-800' textStyle='body3'>{mainDescription}</Typography>
61
42
  </div>
43
+
44
+ <div className="grid grid-cols-2 justify-around border-t divide-x divide-neutral-150 border-neutral-150">
45
+ {secondaryBtn.map((btn, index) => (
46
+ <a key={index} href='#' className="py-6 flex ">
47
+ <HDSButton
48
+ leftIconVariant={btn.cta_leftVariantIcon}
49
+ leftIconColor={btn.cta_leftVariantIconColor}
50
+ rightIconVariant='none'
51
+ type='secondaryLink'
52
+ label={btn.cta_text}
53
+ state='default'
54
+ size='lg'
55
+ rightAnimatedArrow={true}
56
+ rightAnimatedArrowColor='#6C737F'
57
+ className='pl-6'
58
+ />
59
+ </a>
60
+ ))}
61
+ </div>
62
+
62
63
  </div>
64
+
63
65
  );
64
66
  }
@@ -0,0 +1,31 @@
1
+ import React from "react";
2
+ import { Typography } from '../../../foundation/Typography'
3
+ import { HDSColor } from "../../../foundation/ColorPalette";
4
+ import PropTypes from 'prop-types';
5
+
6
+ export default function FlyoutC(props) {
7
+ const {
8
+ title,
9
+ title_colorClass,
10
+ img_url
11
+ } = props;
12
+ return (
13
+
14
+ <div className=" flex flex-row items-center p-6 gap-6">
15
+ <div className="">
16
+ {
17
+ img_url && (
18
+ <img src={props.img_url} className='rounded-xl ' alt={props.title} />
19
+ )
20
+ }
21
+ </div >
22
+ <Typography textStyle='body3c-medium' className={HDSColor(title_colorClass) + ' '} >This is a title of a blog/news piece we want to promote for the developers This is a title of a blog/news piece we want to promote for the developers</Typography>
23
+
24
+ </div>
25
+
26
+ );
27
+ }
28
+
29
+ FlyoutC.defaultProps = {
30
+ img_url: 'text-neutral-900'
31
+ }
@@ -1,2 +1,3 @@
1
- export {default as Flyout} from './flyout';
2
- export {default as FlyoutB} from './flyoutB';
1
+ export {default as FlyoutA} from './flyoutA';
2
+ export {default as FlyoutB} from './flyoutB';
3
+ export {default as FlyoutC} from './flyoutC';
@@ -1,22 +1,94 @@
1
1
  import React from "react";
2
2
  import { Icon } from "../../common-components/Icon";
3
- import {HDSColor} from '../../../foundation/ColorPalette'
3
+ import { HDSColor } from '../../../foundation/ColorPalette'
4
4
  import { Typography } from '../../../foundation/Typography'
5
+ import { HDSButton } from "../../Buttons";
5
6
 
7
+ const cardVariant = {
8
+ "withButton": {
9
+ 'cardStyle': 'p-10 ',
10
+ 'iconWidthStyle': 'h-20 w-20',
11
+ 'iconStyle': 'h-10 w-10',
12
+ },
13
+ "withoutButton": {
14
+ 'cardStyle': 'p-6',
15
+ 'iconWidthStyle': 'h-12 w-12',
16
+ 'iconStyle': 'h-6 w-6',
17
+ }
18
+ }
6
19
 
7
- export default function TalkCard(props) {
20
+ export default function IconCard(props) {
8
21
  const iconBG = HDSColor(props.iconBg);
9
22
  return (
10
- <div className='bg-neutral-0 rounded-3xl shadow p-6'>
11
- <div className={`${iconBG} w-12 h-12 flex items-center justify-center rounded-full mb-6`}>
12
- <Icon height={'w-6 h-6 stroke-neutral-800 stroke-[1.5px]'} variant={props.iconVariant} strokeColor={props.iconStroke} />
23
+ <div
24
+ className={`bg-neutral-0 rounded-3xl shadow ${cardVariant[props.cardType]['cardStyle']}`}
25
+ >
26
+ <div
27
+ className={`${iconBG} ${cardVariant[props.cardType]['iconWidthStyle']} w-12 h-12 flex items-center justify-center rounded-full mb-6`}
28
+ >
29
+ <Icon
30
+ height={`stroke-[1.5px] ${cardVariant[props.cardType]['iconStyle']}`}
31
+ variant={props.iconVariant}
32
+ strokeColor={props.iconStroke}
33
+ strokeClass={HDSColor(props.iconStrokeClass)} />
13
34
  </div>
14
- <div className="flex-1">
15
- <Typography textStyle="h5" as="h5" className="mb-1 text-blue-600">{props.title}</Typography>
16
- <Typography textStyle="body1" className="text-neutral-1000">{props.description}</Typography>
35
+ <div
36
+ className="flex-1">
37
+ {props.cardType === 'withoutButton' ? (
38
+ <>
39
+ <Typography
40
+ textStyle="h5"
41
+ as="h5"
42
+ className="mb-1 text-blue-600">
43
+ {props.title}
44
+ </Typography>
45
+ <Typography
46
+ textStyle="body1"
47
+ className="text-neutral-1000">
48
+ {props.description}
49
+ </Typography>
50
+ </>
51
+ )
52
+ :
53
+ (
54
+ <>
55
+ <Typography
56
+ textStyle="h4"
57
+ as="h4"
58
+ className="mb-1 text-blue-800">
59
+ {props.title}
60
+ </Typography>
61
+ <Typography
62
+ textStyle="body1c"
63
+ className="text-neutral-1000">
64
+ {props.description}
65
+ </Typography>
66
+ </>
67
+ )
68
+ }
69
+ {props.cardType === 'withButton' && (
70
+ <div className="flex mt-7">
71
+ <HDSButton
72
+ label='Start free'
73
+ type='secondary'
74
+ leftIconVariant='none'
75
+ rightIconVariant='none'
76
+ state='default'
77
+ size='sm'
78
+ rightAnimatedArrow={true}
79
+ rightAnimatedArrowColor='#3970FD'
80
+ className=' mt-7'
81
+ />
82
+ </div>
83
+ )}
84
+
17
85
  </div>
18
- </div>
19
86
 
87
+ </div>
20
88
  )
89
+ }
21
90
 
91
+ IconCard.defaultProps = {
92
+ cardType: 'withoutButton',
93
+ iconStrokeClass: 'stroke-neutral-1000'
22
94
  }
@@ -4,18 +4,19 @@ import { Typography } from '../../../foundation/Typography'
4
4
  import { ProfileAvatar } from '../../Avatars'
5
5
  import { Time } from "../../../helpers/Time";
6
6
  import { HDSButton } from '../../Buttons'
7
+ import ReactMarkdown from "react-markdown";
7
8
 
8
9
  export default function TalkCard(props) {
9
10
  let CardClass = ''
10
- if (props.speakerSet === undefined && props.eventTime === undefined){
11
+ if (props.speakerSet === undefined ){
11
12
  CardClass = 'flex';
12
13
  }
13
- else CardClass = 'grid shadow';
14
+ else CardClass = 'flex tb-l:flex-row flex-col';
14
15
  return (
15
16
 
16
- <div className=" ">
17
- <div className={`${CardClass} rounded-3xl bg-neutral-0 grid-cols-1 tb:grid-cols-2 border border-neutral-200 w-full max-w-[882px]`}>
18
- <div className="px-8 py-6 border-b border-b-neutral-150 tb:border-0 tb:border-r tb:border-r-neutral-150" >
17
+ <div className="grid w-full">
18
+ <div className={`${CardClass} w-full max-w-[882px]`}>
19
+ <div className={"px-8 py-6" + ((props.speakerSet ) ? " border-b tb-l:w-[62%] border-b-neutral-150 tb:border-0 tb:border-r tb:border-r-neutral-150" : "")}>
19
20
  <Badges
20
21
  size={props.badges.size}
21
22
  color={props.badges.color}
@@ -25,13 +26,14 @@ export default function TalkCard(props) {
25
26
  />
26
27
 
27
28
  <Typography className='my-2 text-blue-800' textStyle='h5'>{props.title}</Typography>
28
- <Typography className='my-2 text-neutral-700' textStyle='body1'>{props.para}</Typography>
29
+ {props.para && <Typography className='my-2 text-neutral-700 [&>p]:pb-2 [&>p]:last:pb-0 [&>ul]:ps-4 [&>ul>li]:list-disc [&>ul>li]:pb-2 [&>ul>li]:last:pb-0' textStyle='body1'>
30
+ <ReactMarkdown>{props.para}</ReactMarkdown>
31
+ </Typography>}
32
+
29
33
  </div>
30
34
 
31
- {props.speakerSet &&
32
- props.eventTime &&
33
-
34
- <div className="flex flex-col pt-0 tb:pt-[2.875rem] justify-between">
35
+ {props.speakerSet &&(
36
+ <div className="flex flex-col tb-l:w-[38%] pt-0 tb:pt-[2.875rem] justify-between">
35
37
  {
36
38
  props.speakerSet && (
37
39
  <div className="pl-6 flex gap-6 mt-9 tb:mt-0 mb-9 flex-col ">
@@ -62,10 +64,10 @@ export default function TalkCard(props) {
62
64
  label=''
63
65
  />
64
66
  </div>
65
- </div>}
67
+ </div>)}
66
68
  </div>
67
69
  </div>
68
70
 
69
71
  )
70
72
 
71
- }
73
+ }