@abcagency/hc-ui-components 1.3.57 → 1.3.59

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 (158) hide show
  1. package/dist/apis/hcApi.js +85 -85
  2. package/dist/apis/hcApi.js.map +1 -1
  3. package/dist/clientToken.js.map +1 -1
  4. package/dist/components/containers/accordions/filter-container.js.map +1 -1
  5. package/dist/components/containers/accordions/filter-item-container.js +4 -2
  6. package/dist/components/containers/accordions/filter-item-container.js.map +1 -1
  7. package/dist/components/containers/accordions/map-accordion-item-container.js.map +1 -1
  8. package/dist/components/containers/filter/filter-item-container.js +4 -2
  9. package/dist/components/containers/filter/filter-item-container.js.map +1 -1
  10. package/dist/components/containers/jobListing/listing-details-container.js.map +1 -1
  11. package/dist/components/containers/list/item-list-container.js +21 -21
  12. package/dist/components/containers/list/list-item/list-item-container.js.map +1 -1
  13. package/dist/components/containers/maps/map-container.js.map +1 -1
  14. package/dist/components/modules/accordions/MapAccordionItem.js.map +1 -1
  15. package/dist/components/modules/accordions/default.js.map +1 -1
  16. package/dist/components/modules/buttons/commute-pill.js.map +1 -1
  17. package/dist/components/modules/buttons/default.js.map +1 -1
  18. package/dist/components/modules/buttons/items-pill.js.map +1 -1
  19. package/dist/components/modules/buttons/pill-wrapper.js.map +1 -1
  20. package/dist/components/modules/buttons/show-all-button.js.map +1 -1
  21. package/dist/components/modules/cards/default.js.map +1 -1
  22. package/dist/components/modules/cards/filter.js.map +1 -1
  23. package/dist/components/modules/filter/item.js.map +1 -1
  24. package/dist/components/modules/filter/sort.js.map +1 -1
  25. package/dist/components/modules/grid.js.map +1 -1
  26. package/dist/components/modules/icon.js.map +1 -1
  27. package/dist/components/modules/list/header.js.map +1 -1
  28. package/dist/components/modules/list/item-list.js +40 -40
  29. package/dist/components/modules/maps/info-window-card.js.map +1 -1
  30. package/dist/components/modules/maps/map.js.map +1 -1
  31. package/dist/components/modules/maps/place-marker.js.map +1 -1
  32. package/dist/components/modules/maps/tabs.js.map +1 -1
  33. package/dist/constants/placeTypes.js.map +1 -1
  34. package/dist/contexts/mapContext.js +83 -83
  35. package/dist/contexts/mapListContext.js +190 -190
  36. package/dist/contexts/trackEventContext.js.map +1 -1
  37. package/dist/hooks/useList.js.map +1 -1
  38. package/dist/services/configService.js +9 -9
  39. package/dist/services/googlePlacesNearbyService.js +32 -32
  40. package/dist/services/googlePlacesNearbyService.js.map +1 -1
  41. package/dist/services/listingAggregatorService.js +34 -34
  42. package/dist/services/listingAggregatorService.js.map +1 -1
  43. package/dist/services/listingEntityService.js +9 -9
  44. package/dist/services/listingService.js +24 -24
  45. package/dist/services/recruiterService.js +10 -10
  46. package/dist/types/apis/hcApi.d.ts +5 -5
  47. package/dist/types/clientToken.d.ts +2 -2
  48. package/dist/types/components/containers/accordions/map-accordion-item-container.d.ts +12 -12
  49. package/dist/types/components/containers/jobListing/listing-details-container.d.ts +6 -6
  50. package/dist/types/components/containers/list/item-list-container.d.ts +9 -9
  51. package/dist/types/components/containers/list/list-item/list-item-container.d.ts +14 -14
  52. package/dist/types/components/modules/accordions/MapAccordionItem.d.ts +10 -10
  53. package/dist/types/components/modules/accordions/default.d.ts +19 -19
  54. package/dist/types/components/modules/buttons/button-group-apply.d.ts +24 -24
  55. package/dist/types/components/modules/buttons/commute-pill.d.ts +5 -5
  56. package/dist/types/components/modules/buttons/default.d.ts +48 -48
  57. package/dist/types/components/modules/buttons/pill-wrapper.d.ts +3 -3
  58. package/dist/types/components/modules/dialogs/apply-dialog.d.ts +8 -8
  59. package/dist/types/components/modules/filter/sort.d.ts +8 -8
  60. package/dist/types/components/modules/grid.d.ts +8 -8
  61. package/dist/types/components/modules/icon.d.ts +10 -10
  62. package/dist/types/components/modules/jobListing/listing-details.d.ts +18 -18
  63. package/dist/types/components/modules/list/field-mapper.d.ts +10 -10
  64. package/dist/types/components/modules/list/header-item.d.ts +11 -11
  65. package/dist/types/components/modules/list/header.d.ts +12 -12
  66. package/dist/types/components/modules/list/item-expand-card/index.d.ts +7 -7
  67. package/dist/types/components/modules/list/item-expand-card/recruiter-contact-nav.d.ts +17 -17
  68. package/dist/types/components/modules/list/item-expand-card/recruiter-details.d.ts +21 -21
  69. package/dist/types/components/modules/list/item-expand-card/recruiter-headshot.d.ts +8 -8
  70. package/dist/types/components/modules/list/item-list.d.ts +20 -20
  71. package/dist/types/components/modules/list/list-item/list-item.d.ts +3 -3
  72. package/dist/types/constants/eventTypes.d.ts +14 -14
  73. package/dist/types/contexts/mapContext.d.ts +29 -29
  74. package/dist/types/contexts/mapListContext.d.ts +61 -61
  75. package/dist/types/contexts/trackEventContext.d.ts +6 -6
  76. package/dist/types/enums/SectionType.d.ts +9 -9
  77. package/dist/types/hooks/useList.d.ts +13 -13
  78. package/dist/types/services/configService.d.ts +6 -6
  79. package/dist/types/services/googlePlacesNearbyService.d.ts +5 -5
  80. package/dist/types/services/listingAggregatorService.d.ts +12 -12
  81. package/dist/types/services/listingEntityService.d.ts +6 -6
  82. package/dist/types/services/listingService.d.ts +9 -9
  83. package/dist/types/services/recruiterService.d.ts +6 -6
  84. package/dist/types/types/Address.d.ts +7 -7
  85. package/dist/types/types/ContentSection.d.ts +8 -8
  86. package/dist/types/types/GetListingParams.d.ts +8 -8
  87. package/dist/types/types/LatLng.d.ts +4 -4
  88. package/dist/types/types/ListingEntity.d.ts +10 -10
  89. package/dist/types/types/ListingFields.d.ts +25 -25
  90. package/dist/types/types/Listings.d.ts +31 -31
  91. package/dist/types/types/Recruiter.d.ts +9 -9
  92. package/dist/types/types/SimilarListing.d.ts +24 -24
  93. package/dist/types/types/config/Colors.d.ts +8 -8
  94. package/dist/types/types/config/MapConfig.d.ts +30 -30
  95. package/dist/types/types/config/PointsOfInterestConfig.d.ts +13 -13
  96. package/dist/types/types/config/SearchConfig.d.ts +4 -4
  97. package/dist/types/util/filterUtil.d.ts +28 -28
  98. package/dist/types/util/loading.d.ts +3 -3
  99. package/dist/types/util/localStorageUtil.d.ts +3 -3
  100. package/dist/types/util/mapUtil.d.ts +16 -16
  101. package/dist/types/util/sortUtil.d.ts +1 -1
  102. package/dist/types/util/stringUtils.d.ts +1 -1
  103. package/dist/types/util/urlFilterUtil.d.ts +8 -8
  104. package/dist/util/filterUtil.js +2 -2
  105. package/dist/util/filterUtil.js.map +1 -1
  106. package/dist/util/loading.js.map +1 -1
  107. package/dist/util/localStorageUtil.js +37 -37
  108. package/dist/util/localStorageUtil.js.map +1 -1
  109. package/dist/util/sortUtil.js.map +1 -1
  110. package/dist/util/stringUtils.js.map +1 -1
  111. package/dist/util/urlFilterUtil.js.map +1 -1
  112. package/package.json +1 -1
  113. package/src/apis/hcApi.ts +109 -109
  114. package/src/clientToken.js +9 -9
  115. package/src/components/containers/accordions/filter-container.js +48 -48
  116. package/src/components/containers/accordions/filter-item-container.js +2 -0
  117. package/src/components/containers/accordions/map-accordion-item-container.js +70 -70
  118. package/src/components/containers/filter/filter-item-container.js +2 -1
  119. package/src/components/containers/jobListing/listing-details-container.js +40 -40
  120. package/src/components/containers/list/list-item/list-item-container.js +43 -43
  121. package/src/components/containers/maps/map-container.js +249 -249
  122. package/src/components/modules/accordions/MapAccordionItem.js +30 -30
  123. package/src/components/modules/accordions/default.js +171 -171
  124. package/src/components/modules/buttons/commute-pill.js +22 -22
  125. package/src/components/modules/buttons/default.js +194 -194
  126. package/src/components/modules/buttons/items-pill.js +35 -35
  127. package/src/components/modules/buttons/pill-wrapper.js +27 -27
  128. package/src/components/modules/buttons/show-all-button.js +19 -19
  129. package/src/components/modules/cards/default.js +167 -167
  130. package/src/components/modules/cards/filter.js +56 -56
  131. package/src/components/modules/filter/item.js +69 -69
  132. package/src/components/modules/filter/sort.js +83 -83
  133. package/src/components/modules/grid.js +54 -54
  134. package/src/components/modules/icon.js +33 -33
  135. package/src/components/modules/list/header.js +51 -51
  136. package/src/components/modules/list/item-expand-card/recruiter-contact-nav.js +50 -50
  137. package/src/components/modules/list/item-expand-card/recruiter-details.js +68 -68
  138. package/src/components/modules/list/item-expand-card/recruiter-headshot.js +22 -22
  139. package/src/components/modules/maps/info-window-card.js +17 -17
  140. package/src/components/modules/maps/map.js +64 -64
  141. package/src/components/modules/maps/place-marker.js +41 -41
  142. package/src/components/modules/maps/tabs.js +81 -81
  143. package/src/constants/placeTypes.js +8 -8
  144. package/src/contexts/trackEventContext.js +14 -14
  145. package/src/enums/SectionType.ts +9 -9
  146. package/src/hooks/useList.js +89 -89
  147. package/src/index.js +3 -3
  148. package/src/services/googlePlacesNearbyService.ts +42 -42
  149. package/src/services/listingAggregatorService.ts +76 -76
  150. package/src/util/arrayUtil.js +3 -3
  151. package/src/util/fieldMapper.js +22 -22
  152. package/src/util/filterUtil.js +311 -310
  153. package/src/util/loading.js +17 -17
  154. package/src/util/localStorageUtil.ts +34 -34
  155. package/src/util/sortUtil.js +32 -32
  156. package/src/util/stringUtils.js +6 -6
  157. package/src/util/urlFilterUtil.js +85 -85
  158. package/dist/types/contexts/themeContext.d.ts +0 -11
@@ -1,167 +1,167 @@
1
- import React, { forwardRef } from 'react';
2
- import { Link } from 'react-router-dom';
3
- import { twMerge } from 'tailwind-merge';
4
-
5
- const cardClasses = (className, hasShadow) => twMerge(
6
- 'hc-relative hc-flex hc-flex-wrap hc-flex-col hc-bg-clip-border hc-break-words hc-bg-white hc-border hc-border-gray-100',
7
- hasShadow ? 'hc-shadow-lg' : '',
8
- className ?? ''
9
- );
10
-
11
- const Card = ({ children }) => {
12
- return (
13
- <>{children}</>
14
- );
15
- };
16
-
17
- export const CardDefault = forwardRef((
18
- {
19
- as = 'div',
20
- className,
21
- hasShadow = false,
22
- image,
23
- body,
24
- children,
25
- footer,
26
- ...rest
27
- },
28
- ref
29
- ) => {
30
- const Container = as;
31
-
32
- return (
33
- <Container
34
- ref={ref}
35
- className={cardClasses(className, hasShadow)}
36
- {...rest}
37
- >
38
- {image}
39
- {children}
40
- {body}
41
- {footer}
42
- </Container>
43
- );
44
- });
45
-
46
- const CardLink = ({
47
- as = 'link',
48
- href,
49
- className,
50
- hasShadow = false,
51
- image,
52
- body,
53
- children,
54
- footer,
55
- ...rest
56
- }) => {
57
- const Container = as === 'link' ? Link : as;
58
-
59
- return (
60
- <Container
61
- to={href}
62
- className={twMerge(
63
- cardClasses(className, hasShadow),
64
- 'hc-group hc-transition hover:hc-shadow-xl hover:hc-border-indigo-300 focus:hc-shadow-xl focus:hc-border-indigo-300'
65
- )}
66
- {...rest}
67
- >
68
- {image && image}
69
- {children}
70
- {body && body}
71
- {footer && footer}
72
- </Container>
73
- );
74
- };
75
-
76
- export const CardImage = ({
77
- image,
78
- alt,
79
- className,
80
- imageClassName,
81
- ...rest
82
- }) => {
83
- return (
84
- <div
85
- className={twMerge(
86
- 'hc-w-full',
87
- className ?? ''
88
- )}
89
- >
90
- <img
91
- src={typeof image === 'string' ? image : image.src}
92
- width={image.width ? image.width : null}
93
- height={image.height ? image.height : null}
94
- alt={alt ?? ''}
95
- className={twMerge(
96
- 'hc-w-full hc-h-auto',
97
- imageClassName ?? ''
98
- )}
99
- {...rest}
100
- />
101
- </div>
102
- );
103
- };
104
-
105
- export const CardBody = ({
106
- children,
107
- className
108
- }) => {
109
- return (
110
- <div
111
- className={twMerge(
112
- 'hc-flex-auto hc-p-4 md:hc-px-6 lg:hc-px-8',
113
- className ?? ''
114
- )}
115
- >
116
- {children}
117
- </div>
118
- );
119
- };
120
-
121
- export const CardTitle = ({
122
- as = 'h3',
123
- children,
124
- className,
125
- ...rest
126
- }) => {
127
- const Title = as;
128
-
129
- return (
130
- <Title
131
- className={twMerge(
132
- 'hc-text-2xl hc-font-bold',
133
- className ?? ''
134
- )}
135
- {...rest}
136
- >
137
- {children}
138
- </Title>
139
- );
140
- };
141
-
142
- export const CardFooter = ({
143
- children,
144
- className
145
- }) => {
146
- return (
147
- <div
148
- className={twMerge(
149
- 'hc-py-2 hc-px-4 md:hc-px-6 lg:hc-px-8 hc-bg-gray-100',
150
- className ?? ''
151
- )}
152
- >
153
- {children}
154
- </div>
155
- );
156
- };
157
-
158
- Card.Default = CardDefault;
159
- Card.Link = CardLink;
160
- Card.Image = CardImage;
161
- Card.Body = CardBody;
162
- Card.Title = CardTitle;
163
- Card.Footer = CardFooter;
164
-
165
- CardDefault.displayName = 'Card:Default';
166
-
167
- export default Card;
1
+ import React, { forwardRef } from 'react';
2
+ import { Link } from 'react-router-dom';
3
+ import { twMerge } from 'tailwind-merge';
4
+
5
+ const cardClasses = (className, hasShadow) => twMerge(
6
+ 'hc-relative hc-flex hc-flex-wrap hc-flex-col hc-bg-clip-border hc-break-words hc-bg-white hc-border hc-border-gray-100',
7
+ hasShadow ? 'hc-shadow-lg' : '',
8
+ className ?? ''
9
+ );
10
+
11
+ const Card = ({ children }) => {
12
+ return (
13
+ <>{children}</>
14
+ );
15
+ };
16
+
17
+ export const CardDefault = forwardRef((
18
+ {
19
+ as = 'div',
20
+ className,
21
+ hasShadow = false,
22
+ image,
23
+ body,
24
+ children,
25
+ footer,
26
+ ...rest
27
+ },
28
+ ref
29
+ ) => {
30
+ const Container = as;
31
+
32
+ return (
33
+ <Container
34
+ ref={ref}
35
+ className={cardClasses(className, hasShadow)}
36
+ {...rest}
37
+ >
38
+ {image}
39
+ {children}
40
+ {body}
41
+ {footer}
42
+ </Container>
43
+ );
44
+ });
45
+
46
+ const CardLink = ({
47
+ as = 'link',
48
+ href,
49
+ className,
50
+ hasShadow = false,
51
+ image,
52
+ body,
53
+ children,
54
+ footer,
55
+ ...rest
56
+ }) => {
57
+ const Container = as === 'link' ? Link : as;
58
+
59
+ return (
60
+ <Container
61
+ to={href}
62
+ className={twMerge(
63
+ cardClasses(className, hasShadow),
64
+ 'hc-group hc-transition hover:hc-shadow-xl hover:hc-border-indigo-300 focus:hc-shadow-xl focus:hc-border-indigo-300'
65
+ )}
66
+ {...rest}
67
+ >
68
+ {image && image}
69
+ {children}
70
+ {body && body}
71
+ {footer && footer}
72
+ </Container>
73
+ );
74
+ };
75
+
76
+ export const CardImage = ({
77
+ image,
78
+ alt,
79
+ className,
80
+ imageClassName,
81
+ ...rest
82
+ }) => {
83
+ return (
84
+ <div
85
+ className={twMerge(
86
+ 'hc-w-full',
87
+ className ?? ''
88
+ )}
89
+ >
90
+ <img
91
+ src={typeof image === 'string' ? image : image.src}
92
+ width={image.width ? image.width : null}
93
+ height={image.height ? image.height : null}
94
+ alt={alt ?? ''}
95
+ className={twMerge(
96
+ 'hc-w-full hc-h-auto',
97
+ imageClassName ?? ''
98
+ )}
99
+ {...rest}
100
+ />
101
+ </div>
102
+ );
103
+ };
104
+
105
+ export const CardBody = ({
106
+ children,
107
+ className
108
+ }) => {
109
+ return (
110
+ <div
111
+ className={twMerge(
112
+ 'hc-flex-auto hc-p-4 md:hc-px-6 lg:hc-px-8',
113
+ className ?? ''
114
+ )}
115
+ >
116
+ {children}
117
+ </div>
118
+ );
119
+ };
120
+
121
+ export const CardTitle = ({
122
+ as = 'h3',
123
+ children,
124
+ className,
125
+ ...rest
126
+ }) => {
127
+ const Title = as;
128
+
129
+ return (
130
+ <Title
131
+ className={twMerge(
132
+ 'hc-text-2xl hc-font-bold',
133
+ className ?? ''
134
+ )}
135
+ {...rest}
136
+ >
137
+ {children}
138
+ </Title>
139
+ );
140
+ };
141
+
142
+ export const CardFooter = ({
143
+ children,
144
+ className
145
+ }) => {
146
+ return (
147
+ <div
148
+ className={twMerge(
149
+ 'hc-py-2 hc-px-4 md:hc-px-6 lg:hc-px-8 hc-bg-gray-100',
150
+ className ?? ''
151
+ )}
152
+ >
153
+ {children}
154
+ </div>
155
+ );
156
+ };
157
+
158
+ Card.Default = CardDefault;
159
+ Card.Link = CardLink;
160
+ Card.Image = CardImage;
161
+ Card.Body = CardBody;
162
+ Card.Title = CardTitle;
163
+ Card.Footer = CardFooter;
164
+
165
+ CardDefault.displayName = 'Card:Default';
166
+
167
+ export default Card;
@@ -1,56 +1,56 @@
1
- import React from 'react';
2
-
3
- import Card from '~/components/modules/cards/default';
4
- import Icon from '~/components/modules/icon';
5
-
6
- const CardFilter = ({
7
- as,
8
- className,
9
- children,
10
- ...rest
11
- }) => {
12
- return (
13
- <Card.Default
14
- as={as}
15
- className={`
16
- hc-bg-uiAccent/5 hc-border hc-border-uiAccent/20 hc-rounded
17
- ${className ?? ''}
18
- `}
19
- {...rest}
20
- >
21
- <Card.Body className="!hc-p-3">
22
- {children}
23
- </Card.Body>
24
- </Card.Default>
25
- );
26
- };
27
-
28
- export const CardTitle = ({
29
- as,
30
- children,
31
- icon,
32
- className,
33
- ...rest
34
- }) => {
35
- return (
36
- <Card.Title
37
- as={as}
38
- className={`
39
- hc-flex hc-items-center hc-gap-2 hc-mb-2 hc-text-xs hc-uppercase hc-font-bold hc-text-uiText
40
- ${className ?? ''}
41
- `}
42
- {...rest}
43
- >
44
- <Icon
45
- icon={icon}
46
- size="hc-size-5"
47
- className="hc-text-uiAccent/30"
48
- />
49
- {children}
50
- </Card.Title>
51
- );
52
- };
53
-
54
- CardFilter.Title = CardTitle;
55
-
56
- export default CardFilter;
1
+ import React from 'react';
2
+
3
+ import Card from '~/components/modules/cards/default';
4
+ import Icon from '~/components/modules/icon';
5
+
6
+ const CardFilter = ({
7
+ as,
8
+ className,
9
+ children,
10
+ ...rest
11
+ }) => {
12
+ return (
13
+ <Card.Default
14
+ as={as}
15
+ className={`
16
+ hc-bg-uiAccent/5 hc-border hc-border-uiAccent/20 hc-rounded
17
+ ${className ?? ''}
18
+ `}
19
+ {...rest}
20
+ >
21
+ <Card.Body className="!hc-p-3">
22
+ {children}
23
+ </Card.Body>
24
+ </Card.Default>
25
+ );
26
+ };
27
+
28
+ export const CardTitle = ({
29
+ as,
30
+ children,
31
+ icon,
32
+ className,
33
+ ...rest
34
+ }) => {
35
+ return (
36
+ <Card.Title
37
+ as={as}
38
+ className={`
39
+ hc-flex hc-items-center hc-gap-2 hc-mb-2 hc-text-xs hc-uppercase hc-font-bold hc-text-uiText
40
+ ${className ?? ''}
41
+ `}
42
+ {...rest}
43
+ >
44
+ <Icon
45
+ icon={icon}
46
+ size="hc-size-5"
47
+ className="hc-text-uiAccent/30"
48
+ />
49
+ {children}
50
+ </Card.Title>
51
+ );
52
+ };
53
+
54
+ CardFilter.Title = CardTitle;
55
+
56
+ export default CardFilter;
@@ -1,69 +1,69 @@
1
- import React from 'react';
2
- import Icon from '~/components/modules/icon';
3
-
4
- const FilterItem = ({
5
- className,
6
- item,
7
- type,
8
- itemKey,
9
- hasCount,
10
- field,
11
- activeItem,
12
- setActiveItem,
13
- changeHandler,
14
- isExternalLink = false,
15
- externalLinkUrl,
16
- trackEvent,
17
- eventTypes,
18
- ...rest
19
- }) => {
20
- const itemName = item.name ? item.name : item;
21
-
22
- return (
23
- // eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-noninteractive-element-interactions
24
- <label
25
- onClick={() =>
26
- {
27
- if(!isExternalLink) return;
28
- trackEvent(eventTypes.EXTERNAL_LINK_CLICKED, { link: externalLinkUrl });
29
- window.location.href = externalLinkUrl;
30
- }}
31
- className={`
32
- hc-flex hc-items-start hc-gap-2 hc-px-2 hc-py-1.5 hc-rounded-sm hc-text-sm hc-cursor-pointer hc-transition hover:hc-bg-uiAccent/5
33
- ${className ?? ""}
34
- `}
35
- {...rest}
36
- >
37
- {isExternalLink ? (
38
- <Icon
39
- icon="tabler:external-link"
40
- size="hc-size-4"
41
- className={'hc-size-4 hc-mt-px hc-text-primary hc-border-uiAccent/30'}
42
- ></Icon>
43
- ) : (
44
- <input
45
- id={itemKey}
46
- name={field}
47
- disabled={item.count === 0}
48
- value={itemName}
49
- type={type}
50
- className="hc-size-4 hc-mt-px hc-text-primary hc-border-uiAccent/30 hc-transition-colors hc-rounded-sm"
51
- checked={activeItem}
52
- onChange={() => {
53
- setActiveItem(!activeItem);
54
- changeHandler();
55
- }}
56
- />
57
- )}
58
-
59
- <span className="hc-text-left hc-font-medium">{itemName}</span>
60
- {hasCount && !isExternalLink && (
61
- <span className="hc-inline-block hc-mt-1 hc-ml-auto hc-text-xs hc-leading-none hc-text-primary">
62
- ({item.count})
63
- </span>
64
- )}
65
- </label>
66
- );
67
- };
68
-
69
- export default FilterItem;
1
+ import React from 'react';
2
+ import Icon from '~/components/modules/icon';
3
+
4
+ const FilterItem = ({
5
+ className,
6
+ item,
7
+ type,
8
+ itemKey,
9
+ hasCount,
10
+ field,
11
+ activeItem,
12
+ setActiveItem,
13
+ changeHandler,
14
+ isExternalLink = false,
15
+ externalLinkUrl,
16
+ trackEvent,
17
+ eventTypes,
18
+ ...rest
19
+ }) => {
20
+ const itemName = item.name ? item.name : item;
21
+
22
+ return (
23
+ // eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-noninteractive-element-interactions
24
+ <label
25
+ onClick={() =>
26
+ {
27
+ if(!isExternalLink) return;
28
+ trackEvent(eventTypes.EXTERNAL_LINK_CLICKED, { link: externalLinkUrl });
29
+ window.location.href = externalLinkUrl;
30
+ }}
31
+ className={`
32
+ hc-flex hc-items-start hc-gap-2 hc-px-2 hc-py-1.5 hc-rounded-sm hc-text-sm hc-cursor-pointer hc-transition hover:hc-bg-uiAccent/5
33
+ ${className ?? ""}
34
+ `}
35
+ {...rest}
36
+ >
37
+ {isExternalLink ? (
38
+ <Icon
39
+ icon="tabler:external-link"
40
+ size="hc-size-4"
41
+ className={'hc-size-4 hc-mt-px hc-text-primary hc-border-uiAccent/30'}
42
+ ></Icon>
43
+ ) : (
44
+ <input
45
+ id={itemKey}
46
+ name={field}
47
+ disabled={item.count === 0}
48
+ value={itemName}
49
+ type={type}
50
+ className="hc-size-4 hc-mt-px hc-text-primary hc-border-uiAccent/30 hc-transition-colors hc-rounded-sm"
51
+ checked={activeItem}
52
+ onChange={() => {
53
+ setActiveItem(!activeItem);
54
+ changeHandler();
55
+ }}
56
+ />
57
+ )}
58
+
59
+ <span className="hc-text-left hc-font-medium">{itemName}</span>
60
+ {hasCount && !isExternalLink && (
61
+ <span className="hc-inline-block hc-mt-1 hc-ml-auto hc-text-xs hc-leading-none hc-text-primary">
62
+ ({item.count})
63
+ </span>
64
+ )}
65
+ </label>
66
+ );
67
+ };
68
+
69
+ export default FilterItem;