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.
- package/.eslintrc.js +36 -0
- package/.run/demo_start.run.xml +12 -0
- package/.run/storybook.run.xml +12 -0
- package/dist/assets/index-22ff84d5.js +44 -0
- package/dist/assets/index-655b6c8f.css +1 -0
- package/dist/index.html +15 -0
- package/index.html +13 -0
- package/package.json +38 -0
- package/src/App.scss +38 -0
- package/src/App.tsx +216 -0
- package/src/_colors.scss +248 -0
- package/src/_fonts.scss +60 -0
- package/src/_svg.scss +27 -0
- package/src/components/AddAdditionalIdealProfileCard/AddAdditionalIdealProfileCard.tsx +52 -0
- package/src/components/AddAdditionalIdealProfileCard/style.scss +42 -0
- package/src/components/CircularIcon/CircularIcon.tsx +24 -0
- package/src/components/CircularIcon/style.scss +3 -0
- package/src/components/CircularSvgButton/CircularSvgButton.tsx +54 -0
- package/src/components/CircularSvgButton/style.scss +105 -0
- package/src/components/ClickableText/ClickableText.tsx +50 -0
- package/src/components/ClickableText/style.scss +68 -0
- package/src/components/CompanyPillNotClicakble/CompanyPillNotClicakble.tsx +32 -0
- package/src/components/CompanyPillNotClicakble/style.scss +21 -0
- package/src/components/GetSvgIcon/GetSvgIcon.tsx +65 -0
- package/src/components/HiringCompanyConciseCard/HiringCompanyConciseCard.tsx +42 -0
- package/src/components/HiringCompanyConciseCard/style.scss +31 -0
- package/src/components/IdealProfileConciseCard/IdealProfileConciseCard.tsx +47 -0
- package/src/components/IdealProfileConciseCard/style.scss +31 -0
- package/src/components/IdealProfileSelectionCard/IdealProfileSelectionCard.tsx +83 -0
- package/src/components/IdealProfileSelectionCard/style.scss +58 -0
- package/src/components/InputField/InputField.tsx +28 -0
- package/src/components/InputField/style.scss +44 -0
- package/src/components/PrimaryButton/PrimaryButton.tsx +40 -0
- package/src/components/PrimaryButton/style.scss +65 -0
- package/src/components/RangeComponent/RangeComponent.tsx +40 -0
- package/src/components/RangeComponent/style.scss +4 -0
- package/src/components/SecondaryButton/SecondaryButton.tsx +41 -0
- package/src/components/SecondaryButton/style.scss +66 -0
- package/src/components/TertiaryButton/TertiaryButton.tsx +39 -0
- package/src/components/TertiaryButton/style.scss +55 -0
- package/src/components/TextButton/TextButton.tsx +34 -0
- package/src/components/TextButton/style.scss +91 -0
- package/src/components/TextPillNotClickable/TextPillNotClickable.tsx +25 -0
- package/src/components/TextPillNotClickable/style.scss +31 -0
- package/src/components/TruncateText/TruncateText.tsx +43 -0
- package/src/index.css +69 -0
- package/src/main.tsx +10 -0
- package/src/svg/Clock.tsx +25 -0
- package/src/svg/Cross.tsx +24 -0
- package/src/svg/LinkedinLogo.tsx +24 -0
- package/src/svg/Plus.tsx +20 -0
- package/src/svg/Thumb.tsx +25 -0
- package/src/svg/Tick.tsx +23 -0
- package/src/utils.ts +9 -0
- package/src/vite-env.d.ts +1 -0
- package/tsconfig.node.json +10 -0
- 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,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
|