@abcagency/hc-ui-components 1.3.61 → 1.3.63

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 (279) 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/HireControlMap.js +14 -4
  5. package/dist/components/HireControlMap.js.map +1 -1
  6. package/dist/components/containers/accordions/filter-container.js +10 -3
  7. package/dist/components/containers/accordions/filter-container.js.map +1 -1
  8. package/dist/components/containers/accordions/filter-item-container.js.map +1 -1
  9. package/dist/components/containers/accordions/map-accordion-item-container.js.map +1 -1
  10. package/dist/components/containers/filter/commute-container.js +1 -1
  11. package/dist/components/containers/filter/commute-container.js.map +1 -1
  12. package/dist/components/containers/filter/filter-container.js.map +1 -1
  13. package/dist/components/containers/filter/filter-item-container.js.map +1 -1
  14. package/dist/components/containers/filter/location-container.js.map +1 -1
  15. package/dist/components/containers/filter/points-of-interest-container.js.map +1 -1
  16. package/dist/components/containers/filter/points-of-interest-radio-item-container.js.map +1 -1
  17. package/dist/components/containers/filter/search-container.js.map +1 -1
  18. package/dist/components/containers/jobListing/listing-details-container.js.map +1 -1
  19. package/dist/components/containers/list/item-list-container.js +21 -21
  20. package/dist/components/containers/list/item-list-container.js.map +1 -1
  21. package/dist/components/containers/list/list-item/list-item-container.js.map +1 -1
  22. package/dist/components/containers/maps/info-window-content-container.js.map +1 -1
  23. package/dist/components/containers/maps/map-container.js +1 -1
  24. package/dist/components/containers/maps/map-container.js.map +1 -1
  25. package/dist/components/containers/maps/map-list-container.js.map +1 -1
  26. package/dist/components/containers/maps/map-marker-container.js +1 -1
  27. package/dist/components/containers/maps/map-marker-container.js.map +1 -1
  28. package/dist/components/modules/accordions/MapAccordionItem.js.map +1 -1
  29. package/dist/components/modules/accordions/default.js +2 -2
  30. package/dist/components/modules/accordions/default.js.map +1 -1
  31. package/dist/components/modules/accordions/filterItem.js.map +1 -1
  32. package/dist/components/modules/accordions/filters.js.map +1 -1
  33. package/dist/components/modules/buttons/button-group-apply.js +1 -1
  34. package/dist/components/modules/buttons/button-group-apply.js.map +1 -1
  35. package/dist/components/modules/buttons/commute-pill.js.map +1 -1
  36. package/dist/components/modules/buttons/default.js +2 -2
  37. package/dist/components/modules/buttons/default.js.map +1 -1
  38. package/dist/components/modules/buttons/items-pill.js +5 -8
  39. package/dist/components/modules/buttons/items-pill.js.map +1 -1
  40. package/dist/components/modules/buttons/pill-wrapper.js.map +1 -1
  41. package/dist/components/modules/buttons/show-all-button.js.map +1 -1
  42. package/dist/components/modules/cards/default.js +2 -2
  43. package/dist/components/modules/cards/default.js.map +1 -1
  44. package/dist/components/modules/cards/filter.js.map +1 -1
  45. package/dist/components/modules/dialogs/apply-dialog.js +1 -1
  46. package/dist/components/modules/dialogs/apply-dialog.js.map +1 -1
  47. package/dist/components/modules/filter/commute.js +2 -2
  48. package/dist/components/modules/filter/commute.js.map +1 -1
  49. package/dist/components/modules/filter/index.js +1 -1
  50. package/dist/components/modules/filter/index.js.map +1 -1
  51. package/dist/components/modules/filter/item.js.map +1 -1
  52. package/dist/components/modules/filter/location.js.map +1 -1
  53. package/dist/components/modules/filter/radio-item.js.map +1 -1
  54. package/dist/components/modules/filter/search.js.map +1 -1
  55. package/dist/components/modules/filter/sort.js +2 -2
  56. package/dist/components/modules/filter/sort.js.map +1 -1
  57. package/dist/components/modules/grid.js +1 -1
  58. package/dist/components/modules/grid.js.map +1 -1
  59. package/dist/components/modules/icon.js +1 -1
  60. package/dist/components/modules/icon.js.map +1 -1
  61. package/dist/components/modules/jobListing/listing-details.js +1 -1
  62. package/dist/components/modules/jobListing/listing-details.js.map +1 -1
  63. package/dist/components/modules/list/field-mapper.js.map +1 -1
  64. package/dist/components/modules/list/header-item.js.map +1 -1
  65. package/dist/components/modules/list/header.js +1 -1
  66. package/dist/components/modules/list/header.js.map +1 -1
  67. package/dist/components/modules/list/item-expand-card/index.js +1 -1
  68. package/dist/components/modules/list/item-expand-card/index.js.map +1 -1
  69. package/dist/components/modules/list/item-expand-card/recruiter-contact-nav.js +38 -38
  70. package/dist/components/modules/list/item-expand-card/recruiter-details.js +40 -40
  71. package/dist/components/modules/list/item-expand-card/recruiter-headshot.js +20 -20
  72. package/dist/components/modules/list/item-list.js +43 -43
  73. package/dist/components/modules/list/item-list.js.map +1 -1
  74. package/dist/components/modules/list/list-item/list-item.js.map +1 -1
  75. package/dist/components/modules/maps/info-window-card.js.map +1 -1
  76. package/dist/components/modules/maps/info-window-content.js.map +1 -1
  77. package/dist/components/modules/maps/map-list.js.map +1 -1
  78. package/dist/components/modules/maps/map-marker.js +1 -1
  79. package/dist/components/modules/maps/map-marker.js.map +1 -1
  80. package/dist/components/modules/maps/map.js +1 -1
  81. package/dist/components/modules/maps/map.js.map +1 -1
  82. package/dist/components/modules/maps/place-marker.js +1 -1
  83. package/dist/components/modules/maps/place-marker.js.map +1 -1
  84. package/dist/components/modules/maps/tabs.js +1 -1
  85. package/dist/components/modules/maps/tabs.js.map +1 -1
  86. package/dist/constants/eventTypes.js.map +1 -1
  87. package/dist/constants/placeTypes.js.map +1 -1
  88. package/dist/contexts/mapContext.js +83 -83
  89. package/dist/contexts/mapContext.js.map +1 -1
  90. package/dist/contexts/mapListContext.js +211 -192
  91. package/dist/contexts/mapListContext.js.map +1 -1
  92. package/dist/contexts/placesContext.js.map +1 -1
  93. package/dist/contexts/themeContext.js.map +1 -1
  94. package/dist/contexts/trackEventContext.js.map +1 -1
  95. package/dist/hooks/useList.js.map +1 -1
  96. package/dist/services/configService.js +9 -9
  97. package/dist/services/configService.js.map +1 -1
  98. package/dist/services/googlePlacesNearbyService.js +32 -32
  99. package/dist/services/googlePlacesNearbyService.js.map +1 -1
  100. package/dist/services/listingAggregatorService.js +34 -34
  101. package/dist/services/listingAggregatorService.js.map +1 -1
  102. package/dist/services/listingEntityService.js +9 -9
  103. package/dist/services/listingEntityService.js.map +1 -1
  104. package/dist/services/listingService.js +24 -24
  105. package/dist/services/listingService.js.map +1 -1
  106. package/dist/services/recruiterService.js +10 -10
  107. package/dist/services/recruiterService.js.map +1 -1
  108. package/dist/styles/index.css +1 -1
  109. package/dist/types/apis/hcApi.d.ts +5 -5
  110. package/dist/types/clientToken.d.ts +2 -2
  111. package/dist/types/components/containers/accordions/map-accordion-item-container.d.ts +12 -12
  112. package/dist/types/components/containers/jobListing/listing-details-container.d.ts +6 -6
  113. package/dist/types/components/containers/list/item-list-container.d.ts +9 -9
  114. package/dist/types/components/containers/list/list-item/list-item-container.d.ts +14 -14
  115. package/dist/types/components/modules/accordions/MapAccordionItem.d.ts +10 -10
  116. package/dist/types/components/modules/accordions/default.d.ts +19 -19
  117. package/dist/types/components/modules/buttons/button-group-apply.d.ts +24 -24
  118. package/dist/types/components/modules/buttons/commute-pill.d.ts +5 -5
  119. package/dist/types/components/modules/buttons/default.d.ts +48 -48
  120. package/dist/types/components/modules/buttons/pill-wrapper.d.ts +3 -3
  121. package/dist/types/components/modules/dialogs/apply-dialog.d.ts +8 -8
  122. package/dist/types/components/modules/filter/sort.d.ts +8 -8
  123. package/dist/types/components/modules/grid.d.ts +8 -8
  124. package/dist/types/components/modules/icon.d.ts +10 -10
  125. package/dist/types/components/modules/jobListing/listing-details.d.ts +20 -20
  126. package/dist/types/components/modules/list/field-mapper.d.ts +10 -10
  127. package/dist/types/components/modules/list/header-item.d.ts +11 -11
  128. package/dist/types/components/modules/list/header.d.ts +12 -12
  129. package/dist/types/components/modules/list/item-expand-card/index.d.ts +7 -7
  130. package/dist/types/components/modules/list/item-expand-card/recruiter-contact-nav.d.ts +17 -17
  131. package/dist/types/components/modules/list/item-expand-card/recruiter-details.d.ts +21 -21
  132. package/dist/types/components/modules/list/item-expand-card/recruiter-headshot.d.ts +8 -8
  133. package/dist/types/components/modules/list/item-list.d.ts +20 -20
  134. package/dist/types/components/modules/list/list-item/list-item.d.ts +3 -3
  135. package/dist/types/constants/eventTypes.d.ts +15 -15
  136. package/dist/types/contexts/mapContext.d.ts +29 -29
  137. package/dist/types/contexts/mapListContext.d.ts +69 -65
  138. package/dist/types/contexts/trackEventContext.d.ts +6 -6
  139. package/dist/types/enums/SectionType.d.ts +9 -9
  140. package/dist/types/hooks/useList.d.ts +13 -13
  141. package/dist/types/services/configService.d.ts +6 -6
  142. package/dist/types/services/googlePlacesNearbyService.d.ts +5 -5
  143. package/dist/types/services/listingAggregatorService.d.ts +12 -12
  144. package/dist/types/services/listingEntityService.d.ts +6 -6
  145. package/dist/types/services/listingService.d.ts +9 -9
  146. package/dist/types/services/recruiterService.d.ts +6 -6
  147. package/dist/types/types/Address.d.ts +7 -7
  148. package/dist/types/types/ContentSection.d.ts +8 -8
  149. package/dist/types/types/GetListingParams.d.ts +8 -8
  150. package/dist/types/types/LatLng.d.ts +4 -4
  151. package/dist/types/types/ListingEntity.d.ts +10 -10
  152. package/dist/types/types/ListingFields.d.ts +25 -25
  153. package/dist/types/types/Listings.d.ts +31 -31
  154. package/dist/types/types/Recruiter.d.ts +9 -9
  155. package/dist/types/types/SimilarListing.d.ts +24 -24
  156. package/dist/types/types/config/Colors.d.ts +8 -8
  157. package/dist/types/types/config/MapConfig.d.ts +30 -30
  158. package/dist/types/types/config/PointsOfInterestConfig.d.ts +13 -13
  159. package/dist/types/types/config/SearchConfig.d.ts +4 -4
  160. package/dist/types/util/filterUtil.d.ts +28 -28
  161. package/dist/types/util/loading.d.ts +3 -3
  162. package/dist/types/util/localStorageUtil.d.ts +3 -3
  163. package/dist/types/util/mapUtil.d.ts +16 -16
  164. package/dist/types/util/sortUtil.d.ts +1 -1
  165. package/dist/types/util/stringUtils.d.ts +1 -1
  166. package/dist/types/util/urlFilterUtil.d.ts +8 -8
  167. package/dist/util/filterUtil.js +1 -1
  168. package/dist/util/filterUtil.js.map +1 -1
  169. package/dist/util/loading.js.map +1 -1
  170. package/dist/util/localStorageUtil.js +37 -37
  171. package/dist/util/localStorageUtil.js.map +1 -1
  172. package/dist/util/mapIconUtil.js.map +1 -1
  173. package/dist/util/mapUtil.js.map +1 -1
  174. package/dist/util/sortUtil.js.map +1 -1
  175. package/dist/util/stringUtils.js.map +1 -1
  176. package/dist/util/urlFilterUtil.js.map +1 -1
  177. package/package.json +90 -90
  178. package/src/.editorconfig +12 -12
  179. package/src/apis/hcApi.ts +109 -109
  180. package/src/bundleIndex.js +14 -14
  181. package/src/clientToken.js +9 -9
  182. package/src/components/HireControlMap.js +153 -148
  183. package/src/components/containers/accordions/filter-container.js +52 -48
  184. package/src/components/containers/accordions/filter-item-container.js +83 -83
  185. package/src/components/containers/accordions/map-accordion-item-container.js +70 -70
  186. package/src/components/containers/filter/commute-container.js +89 -89
  187. package/src/components/containers/filter/filter-container.js +76 -76
  188. package/src/components/containers/filter/filter-item-container.js +117 -117
  189. package/src/components/containers/filter/location-container.js +45 -45
  190. package/src/components/containers/filter/points-of-interest-container.js +33 -33
  191. package/src/components/containers/filter/points-of-interest-radio-item-container.js +35 -35
  192. package/src/components/containers/filter/search-container.js +61 -61
  193. package/src/components/containers/jobListing/listing-details-container.js +42 -42
  194. package/src/components/containers/list/item-list-container.tsx +81 -81
  195. package/src/components/containers/list/list-item/list-item-container.js +43 -43
  196. package/src/components/containers/maps/info-window-content-container.js +53 -53
  197. package/src/components/containers/maps/map-container.js +249 -249
  198. package/src/components/containers/maps/map-list-container.js +50 -50
  199. package/src/components/containers/maps/map-marker-container.js +78 -78
  200. package/src/components/modules/accordions/MapAccordionItem.js +30 -30
  201. package/src/components/modules/accordions/default.js +171 -171
  202. package/src/components/modules/accordions/filterItem.js +27 -27
  203. package/src/components/modules/accordions/filters.js +32 -32
  204. package/src/components/modules/buttons/button-group-apply.js +115 -115
  205. package/src/components/modules/buttons/commute-pill.js +22 -22
  206. package/src/components/modules/buttons/default.js +194 -194
  207. package/src/components/modules/buttons/items-pill.js +31 -35
  208. package/src/components/modules/buttons/pill-wrapper.js +27 -27
  209. package/src/components/modules/buttons/show-all-button.js +19 -19
  210. package/src/components/modules/cards/default.js +167 -167
  211. package/src/components/modules/cards/filter.js +56 -56
  212. package/src/components/modules/dialogs/apply-dialog.js +48 -48
  213. package/src/components/modules/filter/commute.js +108 -108
  214. package/src/components/modules/filter/index.js +55 -55
  215. package/src/components/modules/filter/item.js +69 -69
  216. package/src/components/modules/filter/location.js +51 -51
  217. package/src/components/modules/filter/radio-item.js +42 -42
  218. package/src/components/modules/filter/search.js +79 -79
  219. package/src/components/modules/filter/sort.js +83 -83
  220. package/src/components/modules/grid.js +54 -54
  221. package/src/components/modules/icon.js +33 -33
  222. package/src/components/modules/jobListing/listing-details.js +110 -110
  223. package/src/components/modules/list/field-mapper.js +130 -130
  224. package/src/components/modules/list/header-item.js +92 -92
  225. package/src/components/modules/list/header.js +51 -51
  226. package/src/components/modules/list/item-expand-card/index.js +22 -22
  227. package/src/components/modules/list/item-expand-card/recruiter-contact-nav.js +50 -50
  228. package/src/components/modules/list/item-expand-card/recruiter-details.js +68 -68
  229. package/src/components/modules/list/item-expand-card/recruiter-headshot.js +22 -22
  230. package/src/components/modules/list/item-list.tsx +117 -117
  231. package/src/components/modules/list/list-item/list-item.js +130 -130
  232. package/src/components/modules/maps/info-window-card.js +17 -17
  233. package/src/components/modules/maps/info-window-content.js +64 -64
  234. package/src/components/modules/maps/map-list.js +38 -38
  235. package/src/components/modules/maps/map-marker.js +29 -29
  236. package/src/components/modules/maps/map.js +64 -64
  237. package/src/components/modules/maps/place-marker.js +41 -41
  238. package/src/components/modules/maps/tabs.js +81 -81
  239. package/src/constants/eventTypes.js +15 -15
  240. package/src/constants/placeTypes.js +8 -8
  241. package/src/contexts/mapContext.tsx +129 -129
  242. package/src/contexts/mapListContext.tsx +351 -326
  243. package/src/contexts/placesContext.js +102 -102
  244. package/src/contexts/themeContext.js +40 -40
  245. package/src/contexts/trackEventContext.js +14 -14
  246. package/src/enums/SectionType.ts +9 -9
  247. package/src/hooks/useList.js +89 -89
  248. package/src/index.js +3 -3
  249. package/src/services/configService.ts +16 -16
  250. package/src/services/googlePlacesNearbyService.ts +42 -42
  251. package/src/services/listingAggregatorService.ts +76 -76
  252. package/src/services/listingEntityService.ts +16 -16
  253. package/src/services/listingService.ts +40 -40
  254. package/src/services/recruiterService.ts +18 -18
  255. package/src/styles/bundle.css +268 -268
  256. package/src/styles/index.css +33 -33
  257. package/src/types/Address.ts +7 -7
  258. package/src/types/ContentSection.ts +9 -9
  259. package/src/types/GetListingParams.ts +8 -8
  260. package/src/types/LatLng.ts +4 -4
  261. package/src/types/ListingEntity.ts +11 -11
  262. package/src/types/ListingFields.ts +25 -25
  263. package/src/types/Listings.ts +32 -32
  264. package/src/types/Recruiter.ts +9 -9
  265. package/src/types/SimilarListing.ts +24 -24
  266. package/src/types/config/Colors.ts +8 -8
  267. package/src/types/config/MapConfig.ts +31 -31
  268. package/src/types/config/PointsOfInterestConfig.ts +13 -13
  269. package/src/types/config/SearchConfig.ts +4 -4
  270. package/src/util/arrayUtil.js +3 -3
  271. package/src/util/fieldMapper.js +22 -22
  272. package/src/util/filterUtil.js +311 -311
  273. package/src/util/loading.js +17 -17
  274. package/src/util/localStorageUtil.ts +34 -34
  275. package/src/util/mapIconUtil.js +180 -180
  276. package/src/util/mapUtil.js +92 -92
  277. package/src/util/sortUtil.js +32 -32
  278. package/src/util/stringUtils.js +6 -6
  279. package/src/util/urlFilterUtil.js +85 -85
@@ -1,42 +1,42 @@
1
- import React from 'react';
2
- import Icon from '~/components/modules/icon';
3
-
4
- const RadioItem = ({
5
- className,
6
- item,
7
- field,
8
- isActive,
9
- changeHandler,
10
- ...rest
11
- }) => {
12
- return (
13
- <label
14
- key={item.key}
15
- className={`
16
- 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
17
- ${item.count === 0 ? 'hc-text-uiDisabled hc-cursor-not-allowed' : 'hover:hc-bg-uiAccent/5'}
18
- ${className ?? ""}
19
- `}
20
- {...rest}
21
- >
22
- <input
23
- key={item.key}
24
- id={item.key}
25
- name={field}
26
- value={item.key}
27
- type="radio"
28
- className="hc-size-4 hc-mt-px hc-text-primary hc-border-uiAccent/30 hc-transition-colors hc-rounded-full"
29
- checked={isActive}
30
- onClick={changeHandler}
31
- />
32
- <span className="hc-font-medium">{item.key}</span>
33
- {isActive &&
34
- <div className="hc-w-full hc-unselect-div">
35
- <Icon className="hc-float-right" icon="mdi:times"></Icon>
36
- </div>
37
- }
38
- </label>
39
- );
40
- };
41
-
42
- export default RadioItem;
1
+ import React from 'react';
2
+ import Icon from '~/components/modules/icon';
3
+
4
+ const RadioItem = ({
5
+ className,
6
+ item,
7
+ field,
8
+ isActive,
9
+ changeHandler,
10
+ ...rest
11
+ }) => {
12
+ return (
13
+ <label
14
+ key={item.key}
15
+ className={`
16
+ 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
17
+ ${item.count === 0 ? 'hc-text-uiDisabled hc-cursor-not-allowed' : 'hover:hc-bg-uiAccent/5'}
18
+ ${className ?? ""}
19
+ `}
20
+ {...rest}
21
+ >
22
+ <input
23
+ key={item.key}
24
+ id={item.key}
25
+ name={field}
26
+ value={item.key}
27
+ type="radio"
28
+ className="hc-size-4 hc-mt-px hc-text-primary hc-border-uiAccent/30 hc-transition-colors hc-rounded-full"
29
+ checked={isActive}
30
+ onClick={changeHandler}
31
+ />
32
+ <span className="hc-font-medium">{item.key}</span>
33
+ {isActive &&
34
+ <div className="hc-w-full hc-unselect-div">
35
+ <Icon className="hc-float-right" icon="mdi:times"></Icon>
36
+ </div>
37
+ }
38
+ </label>
39
+ );
40
+ };
41
+
42
+ export default RadioItem;
@@ -1,79 +1,79 @@
1
- import React, { useRef } from 'react';
2
- import Button from '~/components/modules/buttons/default';
3
- import Icon from '~/components/modules/icon';
4
- import FilterCard from '~/components/modules/cards/filter';
5
-
6
- const Search = ({
7
- inputPlaceholder,
8
- showSearchIcon,
9
- className,
10
- labelClassName,
11
- inputValue,
12
- handleInputChange,
13
- handleSubmitInput,
14
- handleReset,
15
- label
16
- }) => {
17
- const inputRef = useRef(null);
18
- const buttonRef = useRef(null);
19
-
20
- return (
21
- <FilterCard as="form" className={className ?? ""}>
22
- <FilterCard.Title
23
- as="label"
24
- icon="fluent:search-12-filled"
25
- className={labelClassName ?? ""}
26
- >
27
- <span>{label}</span>
28
- </FilterCard.Title>
29
-
30
- <div className="hc-relative hc-flex hc-items-center hc-px-2 hc-rounded hc-bg-white hc-border hc-border-uiAccent/20 focus-within:hc-ring-1 focus-within:hc-ring-uiAccent">
31
- {showSearchIcon && (
32
- <Icon
33
- icon="fluent:search-12-filled"
34
- size="hc-size-4"
35
- className="hc-mr-2 hc-text-uiAccent/50"
36
- />
37
- )}
38
- <input
39
- type="text"
40
- name="search"
41
- ref={inputRef}
42
- onKeyDown={e => {
43
- if (e.key === 'Enter') {
44
- e.preventDefault();
45
- buttonRef.current.click(); // Trigger the hidden button on Enter key press
46
- }
47
- }}
48
- placeholder={inputPlaceholder}
49
- value={inputValue}
50
- className="hc-w-full hc-px-0 hc-py-2 hc-text-sm hc-border-0 hc-transition-colors placeholder:hc-text-uiText/50 focus:hc-ring-0 focus:hc-outline-none"
51
- onChange={handleInputChange}
52
- />
53
-
54
- <button
55
- id="SearchButton"
56
- ref={buttonRef}
57
- type="button"
58
- className="hidden hc-invisible"
59
- onClick={() => handleSubmitInput(inputRef.current.value)}
60
- >
61
- Hidden Submit
62
- </button>
63
-
64
- <Button.Btn
65
- type="reset"
66
- variant="icon"
67
- size="sqsm"
68
- className={`transition-opacity ${inputValue ? "hc-opacity-100" : "hc-opacity-0 hc-pointer-events-none"}`}
69
- onClick={handleReset}
70
- >
71
- <span className="hc-sr-only">Clear</span>
72
- <Button.Icon icon="uil:times" className="hc-text-uiAccent" />
73
- </Button.Btn>
74
- </div>
75
- </FilterCard>
76
- );
77
- };
78
-
79
- export default Search;
1
+ import React, { useRef } from 'react';
2
+ import Button from '~/components/modules/buttons/default';
3
+ import Icon from '~/components/modules/icon';
4
+ import FilterCard from '~/components/modules/cards/filter';
5
+
6
+ const Search = ({
7
+ inputPlaceholder,
8
+ showSearchIcon,
9
+ className,
10
+ labelClassName,
11
+ inputValue,
12
+ handleInputChange,
13
+ handleSubmitInput,
14
+ handleReset,
15
+ label
16
+ }) => {
17
+ const inputRef = useRef(null);
18
+ const buttonRef = useRef(null);
19
+
20
+ return (
21
+ <FilterCard as="form" className={className ?? ""}>
22
+ <FilterCard.Title
23
+ as="label"
24
+ icon="fluent:search-12-filled"
25
+ className={labelClassName ?? ""}
26
+ >
27
+ <span>{label}</span>
28
+ </FilterCard.Title>
29
+
30
+ <div className="hc-relative hc-flex hc-items-center hc-px-2 hc-rounded hc-bg-white hc-border hc-border-uiAccent/20 focus-within:hc-ring-1 focus-within:hc-ring-uiAccent">
31
+ {showSearchIcon && (
32
+ <Icon
33
+ icon="fluent:search-12-filled"
34
+ size="hc-size-4"
35
+ className="hc-mr-2 hc-text-uiAccent/50"
36
+ />
37
+ )}
38
+ <input
39
+ type="text"
40
+ name="search"
41
+ ref={inputRef}
42
+ onKeyDown={e => {
43
+ if (e.key === 'Enter') {
44
+ e.preventDefault();
45
+ buttonRef.current.click(); // Trigger the hidden button on Enter key press
46
+ }
47
+ }}
48
+ placeholder={inputPlaceholder}
49
+ value={inputValue}
50
+ className="hc-w-full hc-px-0 hc-py-2 hc-text-sm hc-border-0 hc-transition-colors placeholder:hc-text-uiText/50 focus:hc-ring-0 focus:hc-outline-none"
51
+ onChange={handleInputChange}
52
+ />
53
+
54
+ <button
55
+ id="SearchButton"
56
+ ref={buttonRef}
57
+ type="button"
58
+ className="hidden hc-invisible"
59
+ onClick={() => handleSubmitInput(inputRef.current.value)}
60
+ >
61
+ Hidden Submit
62
+ </button>
63
+
64
+ <Button.Btn
65
+ type="reset"
66
+ variant="icon"
67
+ size="sqsm"
68
+ className={`transition-opacity ${inputValue ? "hc-opacity-100" : "hc-opacity-0 hc-pointer-events-none"}`}
69
+ onClick={handleReset}
70
+ >
71
+ <span className="hc-sr-only">Clear</span>
72
+ <Button.Icon icon="uil:times" className="hc-text-uiAccent" />
73
+ </Button.Btn>
74
+ </div>
75
+ </FilterCard>
76
+ );
77
+ };
78
+
79
+ export default Search;
@@ -1,83 +1,83 @@
1
- import React, { forwardRef } from 'react';
2
- import * as Select from '@radix-ui/react-select';
3
- import { twMerge } from 'tailwind-merge';
4
-
5
- import Icon from '~/components/modules/icon';
6
- import Button from '~/components/modules/buttons/default';
7
-
8
- const FilterSort = ({ className, fields, setSortSetting, fieldNames }) => {
9
- const handleSortChange = value => {
10
- const [field, direction] = value.split("-");
11
- setSortSetting({ field, type: direction });
12
- };
13
-
14
- return (
15
- <div className={className ?? ""}>
16
- <Select.Root onValueChange={handleSortChange}>
17
- <Select.Trigger asChild aria-label="Sort">
18
- <Button.Btn variant="outline" size="sm" className="hc-normal-case">
19
- <Button.Body className="hc-justify-center">
20
- <Select.Value placeholder={
21
- <span className="hc-flex hc-items-center hc-gap-2">
22
- Sort
23
- <Icon icon="mdi:sort" />
24
- </span>
25
- } />
26
- <Select.Icon>
27
- <Button.Icon icon="mdi:chevron-down" />
28
- </Select.Icon>
29
- </Button.Body>
30
- </Button.Btn>
31
- </Select.Trigger>
32
- <Select.Portal>
33
- <Select.Content className={`hc-relative hc-z-[200] hc-overflow-hidden hc-bg-white hc-rounded-md `}>
34
- <Select.ScrollUpButton className="hc-flex hc-items-center hc-justify-center hc-h-5 hc-bg-white hc-text-primary hc-cursor-default">
35
- <Icon icon="mdi:chevron-up" />
36
- </Select.ScrollUpButton>
37
- <Select.Viewport className="hc-p-1">
38
- {fields.map(field => (
39
- <Select.Group key={field}>
40
- <SelectItem value={`${field}-asc`}>
41
- <span className="hc-flex hc-items-center hc-justify-between hc-gap-2 hc-w-full">
42
- {fieldNames[field] ?? field}
43
- <Icon icon="mdi:sort-ascending" />
44
- </span>
45
- </SelectItem>
46
- <SelectItem value={`${field}-desc`}>
47
- <span className="hc-flex hc-items-center hc-justify-between hc-gap-2 w-full">
48
- {fieldNames[field] ?? field}
49
- <Icon icon="mdi:sort-descending" />
50
- </span>
51
- </SelectItem>
52
- </Select.Group>
53
- ))}
54
- </Select.Viewport>
55
- <Select.ScrollDownButton className="hc-flex hc-items-center hc-justify-center hc-h-5 hc-bg-white hc-text-primary hc-cursor-default">
56
- <Icon icon="mdi:chevron-down" />
57
- </Select.ScrollDownButton>
58
- </Select.Content>
59
- </Select.Portal>
60
- </Select.Root>
61
- </div>
62
- );
63
- };
64
-
65
- const SelectItem = forwardRef(({ children, className, ...props }, forwardedRef) => (
66
- <Select.Item
67
- className={twMerge(
68
- "hc-text-sm hc-leading-none hc-rounded-sm hc-flex hc-items-center hc-w-full hc-py-1.5 hc-pr-4 hc-pl-7 hc-relative hc-select-none hc-cursor-pointer data-[disabled]:hc-text-gray-500 data-[disabled]:hc-pointer-events-none data-[highlighted]:hc-outline-none data-[highlighted]:hc-bg-primary data-[highlighted]:hc-text-white",
69
- className
70
- )}
71
- {...props}
72
- ref={forwardedRef}
73
- >
74
- <Select.ItemText>{children}</Select.ItemText>
75
- <Select.ItemIndicator className="hc-absolute hc-left-0 hc-w-8 hc-inline-flex hc-items-center hc-justify-center">
76
- <Icon icon="mdi:check" />
77
- </Select.ItemIndicator>
78
- </Select.Item>
79
- ));
80
-
81
- SelectItem.displayName = "SelectItem";
82
-
83
- export default FilterSort;
1
+ import React, { forwardRef } from 'react';
2
+ import * as Select from '@radix-ui/react-select';
3
+ import { twMerge } from 'tailwind-merge';
4
+
5
+ import Icon from '~/components/modules/icon';
6
+ import Button from '~/components/modules/buttons/default';
7
+
8
+ const FilterSort = ({ className, fields, setSortSetting, fieldNames }) => {
9
+ const handleSortChange = value => {
10
+ const [field, direction] = value.split("-");
11
+ setSortSetting({ field, type: direction });
12
+ };
13
+
14
+ return (
15
+ <div className={className ?? ""}>
16
+ <Select.Root onValueChange={handleSortChange}>
17
+ <Select.Trigger asChild aria-label="Sort">
18
+ <Button.Btn variant="outline" size="sm" className="hc-normal-case">
19
+ <Button.Body className="hc-justify-center">
20
+ <Select.Value placeholder={
21
+ <span className="hc-flex hc-items-center hc-gap-2">
22
+ Sort
23
+ <Icon icon="mdi:sort" />
24
+ </span>
25
+ } />
26
+ <Select.Icon>
27
+ <Button.Icon icon="mdi:chevron-down" />
28
+ </Select.Icon>
29
+ </Button.Body>
30
+ </Button.Btn>
31
+ </Select.Trigger>
32
+ <Select.Portal>
33
+ <Select.Content className={`hc-relative hc-z-[200] hc-overflow-hidden hc-bg-white hc-rounded-md `}>
34
+ <Select.ScrollUpButton className="hc-flex hc-items-center hc-justify-center hc-h-5 hc-bg-white hc-text-primary hc-cursor-default">
35
+ <Icon icon="mdi:chevron-up" />
36
+ </Select.ScrollUpButton>
37
+ <Select.Viewport className="hc-p-1">
38
+ {fields.map(field => (
39
+ <Select.Group key={field}>
40
+ <SelectItem value={`${field}-asc`}>
41
+ <span className="hc-flex hc-items-center hc-justify-between hc-gap-2 hc-w-full">
42
+ {fieldNames[field] ?? field}
43
+ <Icon icon="mdi:sort-ascending" />
44
+ </span>
45
+ </SelectItem>
46
+ <SelectItem value={`${field}-desc`}>
47
+ <span className="hc-flex hc-items-center hc-justify-between hc-gap-2 w-full">
48
+ {fieldNames[field] ?? field}
49
+ <Icon icon="mdi:sort-descending" />
50
+ </span>
51
+ </SelectItem>
52
+ </Select.Group>
53
+ ))}
54
+ </Select.Viewport>
55
+ <Select.ScrollDownButton className="hc-flex hc-items-center hc-justify-center hc-h-5 hc-bg-white hc-text-primary hc-cursor-default">
56
+ <Icon icon="mdi:chevron-down" />
57
+ </Select.ScrollDownButton>
58
+ </Select.Content>
59
+ </Select.Portal>
60
+ </Select.Root>
61
+ </div>
62
+ );
63
+ };
64
+
65
+ const SelectItem = forwardRef(({ children, className, ...props }, forwardedRef) => (
66
+ <Select.Item
67
+ className={twMerge(
68
+ "hc-text-sm hc-leading-none hc-rounded-sm hc-flex hc-items-center hc-w-full hc-py-1.5 hc-pr-4 hc-pl-7 hc-relative hc-select-none hc-cursor-pointer data-[disabled]:hc-text-gray-500 data-[disabled]:hc-pointer-events-none data-[highlighted]:hc-outline-none data-[highlighted]:hc-bg-primary data-[highlighted]:hc-text-white",
69
+ className
70
+ )}
71
+ {...props}
72
+ ref={forwardedRef}
73
+ >
74
+ <Select.ItemText>{children}</Select.ItemText>
75
+ <Select.ItemIndicator className="hc-absolute hc-left-0 hc-w-8 hc-inline-flex hc-items-center hc-justify-center">
76
+ <Icon icon="mdi:check" />
77
+ </Select.ItemIndicator>
78
+ </Select.Item>
79
+ ));
80
+
81
+ SelectItem.displayName = "SelectItem";
82
+
83
+ export default FilterSort;
@@ -1,54 +1,54 @@
1
- import React, { forwardRef } from 'react';
2
- import { twMerge } from 'tailwind-merge';
3
-
4
- const Grid = forwardRef((props, ref) => {
5
- const {
6
- as = 'div',
7
- children,
8
- className,
9
- autoRows = true,
10
- columns = 'md:hc-grid-cols-2',
11
- gap = 'hc-gap-12 lg:hc-gap-16',
12
- ...rest
13
- } = props;
14
-
15
- const Container = as;
16
-
17
- return (
18
- <Container
19
- ref={ref}
20
- className={twMerge(
21
- 'hc-grid',
22
- gap,
23
- autoRows ? 'hc-auto-rows-min' : '',
24
- 'hc-grid-cols-1',
25
- columns,
26
- className ?? ''
27
- )}
28
- {...rest}
29
- >
30
- {children}
31
- </Container>
32
- );
33
- });
34
-
35
- export const GridItem = ({
36
- as = 'div',
37
- children,
38
- className
39
- }) => {
40
- const Container = as;
41
-
42
- return (
43
- <Container
44
- className={className ?? ''}
45
- >
46
- {children}
47
- </Container>
48
- );
49
- };
50
-
51
- Grid.Item = GridItem;
52
-
53
- Grid.displayName = 'Grid';
54
- export default Grid;
1
+ import React, { forwardRef } from 'react';
2
+ import { twMerge } from 'tailwind-merge';
3
+
4
+ const Grid = forwardRef((props, ref) => {
5
+ const {
6
+ as = 'div',
7
+ children,
8
+ className,
9
+ autoRows = true,
10
+ columns = 'md:hc-grid-cols-2',
11
+ gap = 'hc-gap-12 lg:hc-gap-16',
12
+ ...rest
13
+ } = props;
14
+
15
+ const Container = as;
16
+
17
+ return (
18
+ <Container
19
+ ref={ref}
20
+ className={twMerge(
21
+ 'hc-grid',
22
+ gap,
23
+ autoRows ? 'hc-auto-rows-min' : '',
24
+ 'hc-grid-cols-1',
25
+ columns,
26
+ className ?? ''
27
+ )}
28
+ {...rest}
29
+ >
30
+ {children}
31
+ </Container>
32
+ );
33
+ });
34
+
35
+ export const GridItem = ({
36
+ as = 'div',
37
+ children,
38
+ className
39
+ }) => {
40
+ const Container = as;
41
+
42
+ return (
43
+ <Container
44
+ className={className ?? ''}
45
+ >
46
+ {children}
47
+ </Container>
48
+ );
49
+ };
50
+
51
+ Grid.Item = GridItem;
52
+
53
+ Grid.displayName = 'Grid';
54
+ export default Grid;
@@ -1,33 +1,33 @@
1
- import React from 'react';
2
- import { Icon } from '@iconify/react';
3
-
4
- const IconContained = ({
5
- className,
6
- size,
7
- icon,
8
- iconClasses,
9
- title,
10
- ...iconProps
11
- }) => {
12
- return (
13
- <span
14
- title={title}
15
- className={`
16
- hc-inline-block hc-align-middle
17
- ${className ?? ''}
18
- ${size ?? ''}
19
- `}
20
- >
21
- <Icon
22
- icon={icon}
23
- className={`
24
- ${iconClasses ?? ''}
25
- ${size ?? ''}
26
- `}
27
- {...iconProps}
28
- />
29
- </span>
30
- );
31
- };
32
-
33
- export default IconContained;
1
+ import React from 'react';
2
+ import { Icon } from '@iconify/react';
3
+
4
+ const IconContained = ({
5
+ className,
6
+ size,
7
+ icon,
8
+ iconClasses,
9
+ title,
10
+ ...iconProps
11
+ }) => {
12
+ return (
13
+ <span
14
+ title={title}
15
+ className={`
16
+ hc-inline-block hc-align-middle
17
+ ${className ?? ''}
18
+ ${size ?? ''}
19
+ `}
20
+ >
21
+ <Icon
22
+ icon={icon}
23
+ className={`
24
+ ${iconClasses ?? ''}
25
+ ${size ?? ''}
26
+ `}
27
+ {...iconProps}
28
+ />
29
+ </span>
30
+ );
31
+ };
32
+
33
+ export default IconContained;