qlu-20-ui-library 1.0.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 (57) hide show
  1. package/.eslintrc.js +36 -0
  2. package/.run/demo_start.run.xml +12 -0
  3. package/.run/storybook.run.xml +12 -0
  4. package/dist/assets/index-22ff84d5.js +44 -0
  5. package/dist/assets/index-655b6c8f.css +1 -0
  6. package/dist/index.html +15 -0
  7. package/index.html +13 -0
  8. package/package.json +38 -0
  9. package/src/App.scss +38 -0
  10. package/src/App.tsx +216 -0
  11. package/src/_colors.scss +248 -0
  12. package/src/_fonts.scss +60 -0
  13. package/src/_svg.scss +27 -0
  14. package/src/components/AddAdditionalIdealProfileCard/AddAdditionalIdealProfileCard.tsx +52 -0
  15. package/src/components/AddAdditionalIdealProfileCard/style.scss +42 -0
  16. package/src/components/CircularIcon/CircularIcon.tsx +24 -0
  17. package/src/components/CircularIcon/style.scss +3 -0
  18. package/src/components/CircularSvgButton/CircularSvgButton.tsx +54 -0
  19. package/src/components/CircularSvgButton/style.scss +105 -0
  20. package/src/components/ClickableText/ClickableText.tsx +50 -0
  21. package/src/components/ClickableText/style.scss +68 -0
  22. package/src/components/CompanyPillNotClicakble/CompanyPillNotClicakble.tsx +32 -0
  23. package/src/components/CompanyPillNotClicakble/style.scss +21 -0
  24. package/src/components/GetSvgIcon/GetSvgIcon.tsx +65 -0
  25. package/src/components/HiringCompanyConciseCard/HiringCompanyConciseCard.tsx +42 -0
  26. package/src/components/HiringCompanyConciseCard/style.scss +31 -0
  27. package/src/components/IdealProfileConciseCard/IdealProfileConciseCard.tsx +47 -0
  28. package/src/components/IdealProfileConciseCard/style.scss +31 -0
  29. package/src/components/IdealProfileSelectionCard/IdealProfileSelectionCard.tsx +83 -0
  30. package/src/components/IdealProfileSelectionCard/style.scss +58 -0
  31. package/src/components/InputField/InputField.tsx +28 -0
  32. package/src/components/InputField/style.scss +44 -0
  33. package/src/components/PrimaryButton/PrimaryButton.tsx +40 -0
  34. package/src/components/PrimaryButton/style.scss +65 -0
  35. package/src/components/RangeComponent/RangeComponent.tsx +40 -0
  36. package/src/components/RangeComponent/style.scss +4 -0
  37. package/src/components/SecondaryButton/SecondaryButton.tsx +41 -0
  38. package/src/components/SecondaryButton/style.scss +66 -0
  39. package/src/components/TertiaryButton/TertiaryButton.tsx +39 -0
  40. package/src/components/TertiaryButton/style.scss +55 -0
  41. package/src/components/TextButton/TextButton.tsx +34 -0
  42. package/src/components/TextButton/style.scss +91 -0
  43. package/src/components/TextPillNotClickable/TextPillNotClickable.tsx +25 -0
  44. package/src/components/TextPillNotClickable/style.scss +31 -0
  45. package/src/components/TruncateText/TruncateText.tsx +43 -0
  46. package/src/index.css +69 -0
  47. package/src/main.tsx +10 -0
  48. package/src/svg/Clock.tsx +25 -0
  49. package/src/svg/Cross.tsx +24 -0
  50. package/src/svg/LinkedinLogo.tsx +24 -0
  51. package/src/svg/Plus.tsx +20 -0
  52. package/src/svg/Thumb.tsx +25 -0
  53. package/src/svg/Tick.tsx +23 -0
  54. package/src/utils.ts +9 -0
  55. package/src/vite-env.d.ts +1 -0
  56. package/tsconfig.node.json +10 -0
  57. package/vite.config.ts +7 -0
package/src/_svg.scss ADDED
@@ -0,0 +1,27 @@
1
+ @import './colors';
2
+
3
+ @mixin svgFillStroke($color: $gray-300){
4
+ >svg{
5
+ >path{
6
+ transition: fill 300ms ease-in-out, stroke 300ms ease-in-out;
7
+ fill: $color;
8
+ stroke: $color;
9
+ }
10
+ }
11
+ }
12
+ @mixin svgStroke($color: $gray-300){
13
+ >svg{
14
+ >path{
15
+ transition: stroke 300ms ease-in-out;
16
+ stroke: $color;
17
+ }
18
+ }
19
+ }
20
+ @mixin svgFill($color: $gray-300){
21
+ >svg{
22
+ >path{
23
+ transition: fill 300ms ease-in-out;
24
+ fill: $color;
25
+ }
26
+ }
27
+ }
@@ -0,0 +1,52 @@
1
+ import './style.scss'
2
+ import { IconSize } from '../../utils';
3
+ import CircularIcon from '../CircularIcon/CircularIcon';
4
+ import CircularSvgButton from '../CircularSvgButton/CircularSvgButton';
5
+
6
+ interface AddTribeMemberCardProps{
7
+ iconUrl: string;
8
+ tribeMemberName: string;
9
+ tribeMemberMail: string;
10
+ containerClassName?: string;
11
+ iconSize?: IconSize;
12
+ onAddClick: (event: React.MouseEvent<HTMLButtonElement, MouseEvent>) => void;
13
+ }
14
+
15
+ const AddTribeMemberCard = ({
16
+ iconUrl= '',
17
+ tribeMemberName= '',
18
+ tribeMemberMail= '',
19
+ iconSize= '48',
20
+ containerClassName= '',
21
+ onAddClick,
22
+ }: AddTribeMemberCardProps) => {
23
+ return (
24
+ <div
25
+ className={`addTribeMemberCard ${containerClassName}`}
26
+ >
27
+ <CircularIcon
28
+ iconPath={iconUrl}
29
+ iconSize={iconSize}
30
+ />
31
+ <span>
32
+ <span
33
+ className='addTribeMemberCard--Details'
34
+ >
35
+ <span>
36
+ <h3>{tribeMemberName}</h3>
37
+ <p>{tribeMemberMail}</p>
38
+ </span>
39
+ </span>
40
+ <CircularSvgButton
41
+ color='gray'
42
+ variant='tertiary'
43
+ iconType='plus'
44
+ onClick={onAddClick}
45
+ sizeVariant='xs'
46
+ />
47
+ </span>
48
+ </div>
49
+ )
50
+ }
51
+
52
+ export default AddTribeMemberCard
@@ -0,0 +1,42 @@
1
+ @import '../../colors';
2
+ @import '../../fonts';
3
+ @import '../../svg';
4
+
5
+
6
+ .addTribeMemberCard{
7
+ display: flex;
8
+ flex-direction: row;
9
+ border: 1px solid $gray-800;
10
+ border-radius: 8px;
11
+ background: linear-gradient(212.26deg, rgba(73, 73, 73, 0.2) 0%, rgba(73, 73, 73, 0) 99.04%);
12
+
13
+ padding: 16px;
14
+ box-sizing: border-box;
15
+ gap: 12px;
16
+
17
+ width: 350px;
18
+
19
+ >span{
20
+ display: flex;
21
+ flex-direction: row;
22
+ align-items: center;
23
+ justify-content: space-between;
24
+ width: 85%;
25
+ .addTribeMemberCard--Details{
26
+
27
+ display: flex;
28
+ flex-direction: column;
29
+
30
+ >span{
31
+ >h3{
32
+ @include text-base($weight : 600 , $color: $gray-25);
33
+ }
34
+ >p{
35
+ @include text-sm($weight : 400 , $color: $gray-100);
36
+ display: inline;
37
+ }
38
+ }
39
+ }
40
+
41
+ }
42
+ }
@@ -0,0 +1,24 @@
1
+
2
+ import './style.scss'
3
+ import { IconSize } from '../../utils'
4
+
5
+ interface CircularIconProps{
6
+ iconPath : string
7
+ iconSize?: IconSize
8
+ }
9
+
10
+ const CircularIcon = ({
11
+ iconPath = '',
12
+ iconSize = '24',
13
+ } : CircularIconProps) => {
14
+ return (
15
+ <img
16
+ className='circularIcon'
17
+ width={iconSize}
18
+ height={iconSize}
19
+ src={iconPath}
20
+ />
21
+ )
22
+ }
23
+
24
+ export default CircularIcon
@@ -0,0 +1,3 @@
1
+ .circularIcon{
2
+ border-radius: 50%;
3
+ }
@@ -0,0 +1,54 @@
1
+ import clsx from 'clsx';
2
+ import './style.scss'
3
+ import { IconSize, IconType } from "../../utils";
4
+ import GetSvgIcon from "../GetSvgIcon/GetSvgIcon";
5
+
6
+ interface CircularSvgButtonProps{
7
+
8
+ onClick: (event: React.MouseEvent<HTMLButtonElement>) => void;
9
+ isDisabled?: boolean;
10
+ className?: string;
11
+ sizeVariant: 'xxs' | 'xs' | 'sm' | 'base' | 'l' | 'xl' ;
12
+ color: 'orange' | 'gray' | 'black';
13
+ variant: 'primary' | 'secondary' | 'tertiary';
14
+ style?: object;
15
+ iconType: IconType
16
+ iconSize?: IconSize
17
+ }
18
+
19
+ const CircularSvgButton = ({
20
+ isDisabled = false,
21
+ // className = '',
22
+ sizeVariant = 'xs',
23
+ variant = 'primary',
24
+ color = 'orange',
25
+ style = {},
26
+ iconType = 'cross',
27
+ iconSize = '24',
28
+ onClick,
29
+ } : CircularSvgButtonProps) => {
30
+
31
+
32
+ const className = clsx({
33
+ circularSvgButtonGeneric : true,
34
+ [`${sizeVariant}Size--CircularSvgButton`]: true,
35
+ [`${variant}-${color}--CircularSvgButton`]: true
36
+ })
37
+
38
+
39
+ return (
40
+ <button
41
+ style={style}
42
+ disabled = {isDisabled}
43
+ onClick={onClick}
44
+ className={className}
45
+ >
46
+ <GetSvgIcon
47
+ iconType={iconType}
48
+ iconSize={iconSize}
49
+ />
50
+ </button>
51
+ )
52
+ }
53
+
54
+ export default CircularSvgButton
@@ -0,0 +1,105 @@
1
+ @import '../../colors';
2
+ @import '../../fonts';
3
+ @import '../../svg';
4
+
5
+ @mixin primaryCircular ($fcolor: $orange-990 , $bgColor: $orange-500 , $fColor-hover: white , $bgColor-hover: $orange-700 , $outlineColor: $orange-300){
6
+ @include svgFillStroke($color: $fcolor);
7
+ background-color: $bgColor;
8
+ transition: background-color 300ms ease-in-out, color 300ms ease-in-out;
9
+ border: none;
10
+ &:hover{
11
+ @include svgFillStroke($color: $fColor-hover);
12
+ background-color: $bgColor-hover;
13
+ }
14
+ &:active:not(:disabled){
15
+ outline: 2px solid $outlineColor;
16
+ }
17
+ }
18
+
19
+ @mixin secondaryCircular ($fcolor: $orange-990 , $bgColor: transparent , $fColor-hover: white , $bgColor-hover: $orange-500 , $outlineColor: $orange-300){
20
+ @include svgFillStroke($color: $fcolor);
21
+ background-color: $bgColor;
22
+ border: 1px solid $bgColor-hover;
23
+ transition: background-color 300ms ease-in-out, color 300ms ease-in-out;
24
+
25
+ &:hover{
26
+ @include svgFillStroke($color: $fColor-hover);
27
+ background-color: $bgColor-hover;
28
+ }
29
+ &:active:not(:disabled){
30
+ outline: 2px solid $outlineColor;
31
+ }
32
+ }
33
+
34
+ @mixin tertiaryCircular (){
35
+ @include svgFillStroke($color: $gray-25);
36
+ background-color: $gray-700;
37
+ border: none;
38
+ transition: background-color 300ms ease-in-out, color 300ms ease-in-out;
39
+
40
+ &:hover{
41
+ background-color: $gray-600;
42
+ }
43
+ &:active:not(:disabled){
44
+ outline: 2px solid $gray-400;
45
+ }
46
+ }
47
+
48
+ .primary-orange--CircularSvgButton{
49
+ @include primaryCircular();
50
+ }
51
+ .primary-gray--CircularSvgButton{
52
+ @include primaryCircular($fcolor: $gray-900 , $bgColor: $gray-200 , $fColor-hover: $gray-900 , $bgColor-hover: $gray-300 , $outlineColor: $gray-100);
53
+ }
54
+ .primary-black--CircularSvgButton{
55
+ @include primaryCircular($fcolor: white , $bgColor: $gray-800 , $fColor-hover: white , $bgColor-hover: $gray-700 , $outlineColor: $gray-200);
56
+ }
57
+
58
+ .secondary-orange--CircularSvgButton{
59
+ @include secondaryCircular();
60
+ }
61
+ .secondary-gray--CircularSvgButton{
62
+ @include secondaryCircular($fcolor: $gray-900 , $bgColor: transparent , $fColor-hover: white , $bgColor-hover: $gray-300 , $outlineColor: $gray-100);
63
+ }
64
+ .secondary-black--CircularSvgButton{
65
+ @include secondaryCircular($fcolor: $gray-900 , $bgColor: transparent , $fColor-hover: white , $bgColor-hover: $gray-800 , $outlineColor: $gray-200);
66
+ }
67
+
68
+ .tertiary-gray--CircularSvgButton{
69
+ @include tertiaryCircular();
70
+ }
71
+
72
+ .circularSvgButtonGeneric{
73
+ display: flex;
74
+ align-items: center;
75
+ justify-content: center;
76
+ border-radius: 50vh;
77
+ height: fit-content;
78
+ &:hover{
79
+ cursor: pointer;
80
+ }
81
+ }
82
+
83
+ .xxsSize--CircularSvgButton{
84
+ padding: 0px;
85
+ }
86
+
87
+ .xsSize--CircularSvgButton{
88
+ padding: 6px;
89
+ }
90
+
91
+ .smSize--CircularSvgButton{
92
+ padding: 8px;
93
+ }
94
+
95
+ .baseSize--CircularSvgButton{
96
+ padding: 10px;
97
+ }
98
+
99
+ .lSize--CircularSvgButton{
100
+ padding: 12px;
101
+ }
102
+
103
+ .xlSize--CircularSvgButton{
104
+ padding: 14px;
105
+ }
@@ -0,0 +1,50 @@
1
+ import clsx from "clsx";
2
+ import { IconType } from "../../utils";
3
+ import GetSvgIcon from "../GetSvgIcon/GetSvgIcon";
4
+ import './style.scss'
5
+
6
+ interface ClickableTextProps{
7
+ text: string;
8
+ showIcon?: boolean;
9
+ iconOnLeft?: boolean;
10
+ iconType?: IconType;
11
+ sizeVariant?: 'xs' | 'sm' | 'base';
12
+ colorVariant?: 'orange' | 'gray';
13
+ onClick: (event: React.MouseEvent<HTMLButtonElement>) => void;
14
+ }
15
+
16
+ const ClickableText = ({
17
+ text = 'String of Button',
18
+ showIcon = false,
19
+ iconOnLeft = false,
20
+ iconType = 'plus',
21
+ sizeVariant = 'xs',
22
+ colorVariant = 'orange',
23
+ onClick
24
+ }: ClickableTextProps) => {
25
+
26
+ const clickableTextClassName = clsx({
27
+ clickableTextGeneric: true,
28
+ [`${sizeVariant}SizeClickableText`]: true,
29
+ [`${colorVariant}ClickableText`]: true,
30
+ iconOnLeftClickableText: iconOnLeft,
31
+ });
32
+
33
+ return (
34
+ <button
35
+ onClick={onClick}
36
+ className={clickableTextClassName}
37
+ >
38
+ {text}
39
+ {
40
+ showIcon &&
41
+ <GetSvgIcon
42
+ iconType={iconType}
43
+ iconSize={sizeVariant === 'xs' ? '16' : sizeVariant === 'sm' ? '20' : sizeVariant === 'base' ? '24' : '28'}
44
+ />
45
+ }
46
+ </button>
47
+ )
48
+ }
49
+
50
+ export default ClickableText
@@ -0,0 +1,68 @@
1
+ @import '../../colors';
2
+ @import '../../fonts';
3
+ @import '../../svg';
4
+
5
+ // const clickableTextClassName = clsx({
6
+ // clickableTextGeneric: true,
7
+ // [`${sizeVariant}SizeClickableText`]: true,
8
+ // [`${colorVariant}ClickableText`]: true,
9
+ // iconOnLeftClickableText: iconOnLeft,
10
+ // });
11
+
12
+
13
+ @mixin clickableTextColorVar($textColorVar : $gray-200 , $hoverColorVar : $gray-50){
14
+ @include svgFillStroke($color: $textColorVar);
15
+ color: $textColorVar;
16
+ transition: color 300ms ease-in-out , background-color 300ms ease-in-out , border 300ms ease-in-out , outline 300ms ease-in-out;
17
+ &:hover{
18
+ @include svgFillStroke($color: $hoverColorVar);
19
+ // background-color: pink;
20
+ // border-color: $hoverColorVar;
21
+ color: $hoverColorVar;
22
+ }
23
+ }
24
+
25
+ .clickableTextGeneric{
26
+ display: flex;
27
+ flex-direction: row;
28
+ background: transparent;
29
+ border-radius: 8px;
30
+ gap: 8px;
31
+
32
+ width: fit-content;
33
+ height: fit-content;
34
+
35
+ outline: none;
36
+ border: 1px solid transparent;
37
+ &:hover{
38
+ cursor: pointer;
39
+ }
40
+ }
41
+
42
+ .iconOnLeftClickableText{
43
+ flex-direction: row-reverse;
44
+ }
45
+
46
+ .orangeClickableText{
47
+ @include clickableTextColorVar($hoverColorVar : $orange-400 , $textColorVar : $orange-500)
48
+ }
49
+
50
+ .grayClickableText{
51
+ @include clickableTextColorVar();
52
+ }
53
+
54
+
55
+ .xsSizeClickableText{
56
+ @include text-size-xs();
57
+ padding: 2px 4px;
58
+ }
59
+
60
+ .smSizeClickableText{
61
+ @include text-size-sm();
62
+ padding: 4px 8px;
63
+ }
64
+
65
+ .baseSizeClickableText{
66
+ @include text-size-base();
67
+ padding: 6px 12px;
68
+ }
@@ -0,0 +1,32 @@
1
+ import './style.scss'
2
+ import { IconSize } from '../../utils'
3
+ import CircularIcon from '../CircularIcon/CircularIcon'
4
+
5
+ interface CompanyPillNotClicakbleProps{
6
+ companyName: string
7
+ companyIconPath: string
8
+ style?: object
9
+ companyIconSize?: IconSize
10
+ }
11
+
12
+ const CompanyPillNotClicakble = ({
13
+ companyName = '',
14
+ companyIconPath = '',
15
+ style={},
16
+ companyIconSize = '24'
17
+ }: CompanyPillNotClicakbleProps) => {
18
+ return (
19
+ <div
20
+ style={style}
21
+ className='companyPillNotClickable'
22
+ >
23
+ <CircularIcon
24
+ iconPath={companyIconPath}
25
+ iconSize={companyIconSize}
26
+ />
27
+ <p>{companyName}</p>
28
+ </div>
29
+ )
30
+ }
31
+
32
+ export default CompanyPillNotClicakble
@@ -0,0 +1,21 @@
1
+ @import '../../colors';
2
+ @import '../../fonts';
3
+ @import '../../svg';
4
+
5
+
6
+ .companyPillNotClickable{
7
+ display: flex;
8
+ flex-direction: row;
9
+ align-items: center;
10
+ justify-content: space-between;
11
+ padding: 8px 16px 8px 8px;
12
+ border-radius: 50vh;
13
+ gap: 8px;
14
+ height: fit-content;
15
+ background-color: $gray-800;
16
+
17
+
18
+ >p{
19
+ @include text-sm($color: $gray-25 , $weight: 400);
20
+ }
21
+ }
@@ -0,0 +1,65 @@
1
+ import Clock from "../../svg/Clock";
2
+ import Cross from "../../svg/Cross";
3
+ import LinkedinLogo from "../../svg/LinkedinLogo";
4
+ import Plus from "../../svg/Plus";
5
+ import Thumb from "../../svg/Thumb";
6
+ import Tick from "../../svg/Tick";
7
+ import { IconSize, IconType } from "../../utils";
8
+
9
+ interface GetSvgIcon {
10
+ iconType: IconType,
11
+ iconSize?: IconSize;
12
+ }
13
+
14
+ const GetSvgIcon = ({
15
+ iconType = 'cross',
16
+ iconSize = '24'
17
+ }: GetSvgIcon) => {
18
+ return(
19
+ iconType === 'cross' ?
20
+ (
21
+ <Cross
22
+ crossHeight={iconSize}
23
+ crossWidth={iconSize}
24
+ />
25
+ ) :
26
+ iconType === 'plus' ?
27
+ (
28
+ <Plus
29
+ plusWidth={iconSize}
30
+ plusHeight={iconSize}
31
+ />
32
+ ) :
33
+ iconType === 'thumb' ?
34
+ (
35
+ <Thumb
36
+ thumbHeight={iconSize}
37
+ thumbWidth={iconSize}
38
+ />
39
+ ) :
40
+ iconType === 'clock' ?
41
+ (
42
+ <Clock
43
+ clockHeight={iconSize}
44
+ clockWidth={iconSize}
45
+ />
46
+ ) :
47
+ iconType === 'tick' ?
48
+ (
49
+ <Tick
50
+ tickHeight={iconSize}
51
+ tickWidth={iconSize}
52
+ />
53
+ ) :
54
+ iconType === 'linkedinLogo' ?
55
+ (
56
+ <LinkedinLogo
57
+ linkedinLogoHeight={iconSize}
58
+ linkedinLogoWidth={iconSize}
59
+ />
60
+ ) :
61
+ null
62
+ )
63
+ };
64
+
65
+ export default GetSvgIcon
@@ -0,0 +1,42 @@
1
+ import './style.scss'
2
+ import { IconSize } from '../../utils';
3
+ import CircularIcon from '../CircularIcon/CircularIcon';
4
+
5
+ interface HiringCompanyConciseCardProps{
6
+ iconUrl: string;
7
+ companyName: string;
8
+ companyBusiness: string;
9
+ numberOfEmployees: number;
10
+ containerClassName?: string;
11
+ iconSize?: IconSize;
12
+ }
13
+
14
+ const HiringCompanyConciseCard = ({
15
+ iconUrl= '',
16
+ companyName= '',
17
+ companyBusiness= '',
18
+ numberOfEmployees= 0,
19
+ iconSize= '48',
20
+ containerClassName= '',
21
+ }: HiringCompanyConciseCardProps) => {
22
+ return (
23
+ <div
24
+ className={`hiringCompanyConciseCard ${containerClassName}`}
25
+ >
26
+ <CircularIcon
27
+ iconPath={iconUrl}
28
+ iconSize={iconSize}
29
+ />
30
+ <span
31
+ className='hiringCompanyConciseCardCompanyDetails'
32
+ >
33
+ <h3>{companyName}</h3>
34
+ <span>
35
+ {companyBusiness}• {numberOfEmployees} employees
36
+ </span>
37
+ </span>
38
+ </div>
39
+ )
40
+ }
41
+
42
+ export default HiringCompanyConciseCard
@@ -0,0 +1,31 @@
1
+ @import '../../colors';
2
+ @import '../../fonts';
3
+ @import '../../svg';
4
+
5
+
6
+ .hiringCompanyConciseCard{
7
+ display: flex;
8
+ flex-direction: row;
9
+ border: 1px solid $gray-800;
10
+ border-radius: 8px;
11
+ background: linear-gradient(212.26deg, rgba(73, 73, 73, 0.2) 0%, rgba(73, 73, 73, 0) 99.04%);
12
+
13
+ padding: 16px;
14
+ box-sizing: border-box;
15
+ gap: 12px;
16
+
17
+ width: 350px;
18
+ }
19
+ .hiringCompanyConciseCardCompanyDetails{
20
+
21
+ display: flex;
22
+ flex-direction: column;
23
+
24
+ >h3{
25
+ @include text-base($weight : 600 , $color: $gray-25);
26
+ }
27
+ >span{
28
+ @include text-sm($weight : 400 , $color: $gray-100);
29
+ display: inline;
30
+ }
31
+ }
@@ -0,0 +1,47 @@
1
+ import './style.scss'
2
+ import { IconSize } from '../../utils';
3
+ import CircularIcon from '../CircularIcon/CircularIcon';
4
+ import TruncateText from '../TruncateText/TruncateText';
5
+
6
+ interface IdealProfileConciseCardProps{
7
+ iconUrl: string;
8
+ profileName: string;
9
+ profileCurrentRole: string;
10
+ profileCurrentCompany: string;
11
+ truncationLength?: number;
12
+ containerClassName?: string;
13
+ toolTipClassName?: string;
14
+ iconSize?: IconSize;
15
+ }
16
+
17
+ const IdealProfileConciseCard = ({
18
+ iconUrl= '',
19
+ profileName= '',
20
+ profileCurrentRole= '',
21
+ profileCurrentCompany= '',
22
+ truncationLength = 14,
23
+ iconSize= '48',
24
+ containerClassName= '',
25
+ toolTipClassName = '',
26
+ }: IdealProfileConciseCardProps) => {
27
+ return (
28
+ <div
29
+ className={`idealProfileConciseCard ${containerClassName}`}
30
+ >
31
+ <CircularIcon
32
+ iconPath={iconUrl}
33
+ iconSize={iconSize}
34
+ />
35
+ <span
36
+ className='idealProfileConciseCardProfileDetails'
37
+ >
38
+ <h3>{profileName}</h3>
39
+ <span>
40
+ {profileCurrentRole} @ <TruncateText length={truncationLength} text={profileCurrentCompany} toolTipClassName={toolTipClassName}/>
41
+ </span>
42
+ </span>
43
+ </div>
44
+ )
45
+ }
46
+
47
+ export default IdealProfileConciseCard