@abcagency/hc-ui-components 1.1.1 → 1.2.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 (234) hide show
  1. package/.editorconfig +12 -0
  2. package/.eslintrc +144 -0
  3. package/.prettierignore +3 -0
  4. package/dist/_virtual/_rollupPluginBabelHelpers.js +516 -0
  5. package/dist/_virtual/_rollupPluginBabelHelpers.js.map +1 -0
  6. package/dist/apis/hcApi.js +189 -0
  7. package/dist/apis/hcApi.js.map +1 -0
  8. package/dist/clientToken.js +10 -0
  9. package/dist/clientToken.js.map +1 -0
  10. package/dist/components/HireControlMap.js +129 -0
  11. package/dist/components/HireControlMap.js.map +1 -0
  12. package/dist/components/modules/accordions/MapAccordionItem.js +76 -0
  13. package/dist/components/modules/accordions/MapAccordionItem.js.map +1 -0
  14. package/dist/components/modules/accordions/default.js +108 -0
  15. package/dist/components/modules/accordions/default.js.map +1 -0
  16. package/dist/components/modules/accordions/filterItem.js +50 -0
  17. package/dist/components/modules/accordions/filterItem.js.map +1 -0
  18. package/dist/components/modules/accordions/filters.js +46 -0
  19. package/dist/components/modules/accordions/filters.js.map +1 -0
  20. package/dist/components/modules/buttons/button-group-apply.js +84 -0
  21. package/dist/components/modules/buttons/button-group-apply.js.map +1 -0
  22. package/dist/components/modules/buttons/commute-pill.js +18 -0
  23. package/dist/components/modules/buttons/commute-pill.js.map +1 -0
  24. package/dist/components/modules/buttons/default.js +145 -0
  25. package/dist/components/modules/buttons/default.js.map +1 -0
  26. package/dist/components/modules/buttons/items-pill.js +23 -0
  27. package/dist/components/modules/buttons/items-pill.js.map +1 -0
  28. package/dist/components/modules/buttons/pill-wrapper.js +20 -0
  29. package/dist/components/modules/buttons/pill-wrapper.js.map +1 -0
  30. package/dist/components/modules/buttons/show-all-button.js +39 -0
  31. package/dist/components/modules/buttons/show-all-button.js.map +1 -0
  32. package/dist/components/modules/cards/default.js +102 -0
  33. package/dist/components/modules/cards/default.js.map +1 -0
  34. package/dist/components/modules/cards/filter.js +38 -0
  35. package/dist/components/modules/cards/filter.js.map +1 -0
  36. package/dist/components/modules/dialogs/apply-dialog.js +46 -0
  37. package/dist/components/modules/dialogs/apply-dialog.js.map +1 -0
  38. package/dist/components/modules/filter/commute.js +184 -0
  39. package/dist/components/modules/filter/commute.js.map +1 -0
  40. package/dist/components/modules/filter/index.js +79 -0
  41. package/dist/components/modules/filter/index.js.map +1 -0
  42. package/dist/components/modules/filter/item.js +71 -0
  43. package/dist/components/modules/filter/item.js.map +1 -0
  44. package/dist/components/modules/filter/location.js +68 -0
  45. package/dist/components/modules/filter/location.js.map +1 -0
  46. package/dist/components/modules/filter/points-of-interest.js +38 -0
  47. package/dist/components/modules/filter/points-of-interest.js.map +1 -0
  48. package/dist/components/modules/filter/radio-item.js +46 -0
  49. package/dist/components/modules/filter/radio-item.js.map +1 -0
  50. package/dist/components/modules/filter/search.js +83 -0
  51. package/dist/components/modules/filter/search.js.map +1 -0
  52. package/dist/components/modules/filter/sort.js +93 -0
  53. package/dist/components/modules/filter/sort.js.map +1 -0
  54. package/dist/components/modules/grid.js +39 -0
  55. package/dist/components/modules/grid.js.map +1 -0
  56. package/dist/components/modules/icon.js +23 -0
  57. package/dist/components/modules/icon.js.map +1 -0
  58. package/dist/components/modules/jobListing/listing-details.js +69 -0
  59. package/dist/components/modules/jobListing/listing-details.js.map +1 -0
  60. package/dist/components/modules/maps/info-window-card.js +14 -0
  61. package/dist/components/modules/maps/info-window-card.js.map +1 -0
  62. package/dist/components/modules/maps/info-window-content.js +39 -0
  63. package/dist/components/modules/maps/info-window-content.js.map +1 -0
  64. package/dist/components/modules/maps/list/field-mapper.js +88 -0
  65. package/dist/components/modules/maps/list/field-mapper.js.map +1 -0
  66. package/dist/components/modules/maps/list/header-item.js +59 -0
  67. package/dist/components/modules/maps/list/header-item.js.map +1 -0
  68. package/dist/components/modules/maps/list/header.js +37 -0
  69. package/dist/components/modules/maps/list/header.js.map +1 -0
  70. package/dist/components/modules/maps/list/index.js +93 -0
  71. package/dist/components/modules/maps/list/index.js.map +1 -0
  72. package/dist/components/modules/maps/list/item-expand-card/index.js +16 -0
  73. package/dist/components/modules/maps/list/item-expand-card/index.js.map +1 -0
  74. package/dist/components/modules/maps/list/item-expand-card/recruiter-contact-nav.js +38 -0
  75. package/dist/components/modules/maps/list/item-expand-card/recruiter-contact-nav.js.map +1 -0
  76. package/dist/components/modules/maps/list/item-expand-card/recruiter-details.js +40 -0
  77. package/dist/components/modules/maps/list/item-expand-card/recruiter-details.js.map +1 -0
  78. package/dist/components/modules/maps/list/item-expand-card/recruiter-headshot.js +20 -0
  79. package/dist/components/modules/maps/list/item-expand-card/recruiter-headshot.js.map +1 -0
  80. package/dist/components/modules/maps/list/list-item/index.js +98 -0
  81. package/dist/components/modules/maps/list/list-item/index.js.map +1 -0
  82. package/dist/components/modules/maps/map-list.js +57 -0
  83. package/dist/components/modules/maps/map-list.js.map +1 -0
  84. package/dist/components/modules/maps/map-marker.js +85 -0
  85. package/dist/components/modules/maps/map-marker.js.map +1 -0
  86. package/dist/components/modules/maps/map.js +201 -0
  87. package/dist/components/modules/maps/map.js.map +1 -0
  88. package/dist/components/modules/maps/place-marker.js +37 -0
  89. package/dist/components/modules/maps/place-marker.js.map +1 -0
  90. package/dist/components/modules/maps/tabs.js +84 -0
  91. package/dist/components/modules/maps/tabs.js.map +1 -0
  92. package/dist/constants/placeTypes.js +11 -0
  93. package/dist/constants/placeTypes.js.map +1 -0
  94. package/dist/contexts/mapContext.js +133 -0
  95. package/dist/contexts/mapContext.js.map +1 -0
  96. package/dist/contexts/mapListContext.js +278 -0
  97. package/dist/contexts/mapListContext.js.map +1 -0
  98. package/dist/contexts/placesContext.js +152 -0
  99. package/dist/contexts/placesContext.js.map +1 -0
  100. package/dist/hooks/useList.js +119 -0
  101. package/dist/hooks/useList.js.map +1 -0
  102. package/dist/index.js +2 -4536
  103. package/dist/index.js.map +1 -0
  104. package/dist/services/_virtual/_rollupPluginBabelHelpers.js +372 -0
  105. package/dist/services/_virtual/_rollupPluginBabelHelpers.js.map +1 -0
  106. package/dist/services/apis/hcApi.js +189 -0
  107. package/dist/services/apis/hcApi.js.map +1 -0
  108. package/dist/services/clientToken.js +7 -0
  109. package/dist/services/clientToken.js.map +1 -0
  110. package/dist/services/configService.js +33 -0
  111. package/dist/services/configService.js.map +1 -0
  112. package/dist/services/googlePlacesNearbyService.js +61 -0
  113. package/dist/services/googlePlacesNearbyService.js.map +1 -0
  114. package/dist/services/listingAggregatorService.js +56 -0
  115. package/dist/services/listingAggregatorService.js.map +1 -0
  116. package/dist/services/listingEntityService.js +36 -0
  117. package/dist/services/listingEntityService.js.map +1 -0
  118. package/dist/services/listingService.js +60 -112
  119. package/dist/services/listingService.js.map +1 -0
  120. package/dist/services/recruiterService.js +36 -0
  121. package/dist/services/recruiterService.js.map +1 -0
  122. package/dist/services/styles/index.css +3 -0
  123. package/dist/styles/index.css +3 -0
  124. package/dist/util/filterUtil.js +213 -0
  125. package/dist/util/filterUtil.js.map +1 -0
  126. package/dist/util/loading.js +16 -0
  127. package/dist/util/loading.js.map +1 -0
  128. package/dist/util/localStorageUtil.js +32 -0
  129. package/dist/util/localStorageUtil.js.map +1 -0
  130. package/dist/util/mapIconUtil.js +73 -0
  131. package/dist/util/mapIconUtil.js.map +1 -0
  132. package/dist/util/mapUtil.js +76 -0
  133. package/dist/util/mapUtil.js.map +1 -0
  134. package/dist/util/sortUtil.js +33 -0
  135. package/dist/util/sortUtil.js.map +1 -0
  136. package/dist/util/stringUtils.js +9 -0
  137. package/dist/util/stringUtils.js.map +1 -0
  138. package/jsconfig.json +7 -0
  139. package/package.json +51 -38
  140. package/postcss.config.js +13 -15
  141. package/{src/tailwind/preset.default.js → preset.default.js} +15 -15
  142. package/rollup.config.mjs +87 -0
  143. package/src/apis/hcApi.js +93 -87
  144. package/src/clientToken.js +9 -9
  145. package/src/components/HireControlMap.js +120 -0
  146. package/src/components/modules/accordions/MapAccordionItem.js +72 -69
  147. package/src/components/modules/accordions/default.js +171 -173
  148. package/src/components/modules/accordions/filterItem.js +53 -53
  149. package/src/components/modules/accordions/filters.js +47 -44
  150. package/src/components/modules/buttons/button-group-apply.js +113 -85
  151. package/src/components/modules/buttons/commute-pill.js +22 -21
  152. package/src/components/modules/buttons/default.js +196 -196
  153. package/src/components/modules/buttons/items-pill.js +32 -31
  154. package/src/components/modules/buttons/pill-wrapper.js +27 -26
  155. package/src/components/modules/buttons/show-all-button.js +20 -20
  156. package/src/components/modules/cards/default.js +167 -168
  157. package/src/components/modules/cards/filter.js +56 -55
  158. package/src/components/modules/dialogs/apply-dialog.js +48 -47
  159. package/src/components/modules/filter/commute.js +148 -151
  160. package/src/components/modules/filter/index.js +87 -86
  161. package/src/components/modules/filter/item.js +76 -77
  162. package/src/components/modules/filter/location.js +71 -69
  163. package/src/components/modules/filter/points-of-interest.js +44 -43
  164. package/src/components/modules/filter/radio-item.js +53 -51
  165. package/src/components/modules/filter/search.js +92 -91
  166. package/src/components/modules/filter/sort.js +83 -83
  167. package/src/components/modules/grid.js +55 -56
  168. package/src/components/modules/icon.js +33 -33
  169. package/src/components/modules/jobListing/listing-details.js +94 -88
  170. package/src/components/modules/maps/info-window-card.js +17 -17
  171. package/src/components/modules/maps/info-window-content.js +58 -60
  172. package/src/components/modules/maps/list/field-mapper.js +112 -111
  173. package/src/components/modules/maps/list/header-item.js +91 -90
  174. package/src/components/modules/maps/list/header.js +47 -46
  175. package/src/components/modules/maps/list/index.js +107 -104
  176. package/src/components/modules/maps/list/item-expand-card/index.js +22 -21
  177. package/src/components/modules/maps/list/item-expand-card/recruiter-contact-nav.js +50 -48
  178. package/src/components/modules/maps/list/item-expand-card/recruiter-details.js +68 -67
  179. package/src/components/modules/maps/list/item-expand-card/recruiter-headshot.js +22 -22
  180. package/src/components/modules/maps/list/list-item/index.js +134 -133
  181. package/src/components/modules/maps/map-list.js +74 -73
  182. package/src/components/modules/maps/map-marker.js +86 -84
  183. package/src/components/modules/maps/map.js +229 -226
  184. package/src/components/modules/maps/place-marker.js +1 -1
  185. package/src/components/modules/maps/tabs.js +81 -79
  186. package/src/constants/placeTypes.js +8 -8
  187. package/src/contexts/mapContext.js +20 -19
  188. package/src/contexts/mapListContext.js +20 -15
  189. package/src/contexts/placesContext.js +4 -0
  190. package/src/hooks/useList.js +12 -10
  191. package/src/index.js +3 -103
  192. package/src/services/configService.js +16 -16
  193. package/src/services/googlePlacesNearbyService.js +33 -33
  194. package/src/services/listingAggregatorService.js +5 -4
  195. package/src/services/listingEntityService.js +2 -1
  196. package/src/services/listingService.js +27 -28
  197. package/src/services/recruiterService.js +17 -17
  198. package/src/styles/{globals.css → index.css} +23 -23
  199. package/src/util/arrayUtil.js +3 -3
  200. package/src/util/fieldMapper.js +22 -19
  201. package/src/util/filterUtil.js +19 -19
  202. package/src/util/loading.js +17 -17
  203. package/src/util/localStorageUtil.js +26 -26
  204. package/src/util/mapIconUtil.js +3 -3
  205. package/src/util/sortUtil.js +32 -32
  206. package/src/util/stringUtils.js +6 -6
  207. package/{src/tailwind/tailwind.config.js → tailwind.config.js} +126 -127
  208. package/dist/globals.css +0 -3
  209. package/dist/output.css +0 -784
  210. package/dist/services/globals.css +0 -3
  211. package/rollup.config.js +0 -68
  212. package/src/components/layout/footer.js +0 -34
  213. package/src/components/layout/header.js +0 -23
  214. package/src/components/layout/layout.js +0 -36
  215. package/src/components/modules/animations/slidein.js +0 -41
  216. package/src/components/modules/navigation/nav-link.js +0 -65
  217. package/src/components/modules/navigation/navbar.js +0 -106
  218. package/src/components/modules/navigation/skip-link.js +0 -21
  219. package/src/components/modules/navigation/social.js +0 -29
  220. package/src/components/modules/sections/default.js +0 -59
  221. package/src/components/modules/sections/sectionContext.js +0 -4
  222. package/src/hooks/useClickOutside.js +0 -16
  223. package/src/hooks/useEventListener.js +0 -25
  224. package/src/hooks/useEventTracker.js +0 -19
  225. package/src/hooks/useRefScrollProgress.js +0 -24
  226. package/src/hooks/useScript.js +0 -63
  227. package/src/hooks/useScrollDirection.js +0 -39
  228. package/src/hooks/useSectionTracker.js +0 -95
  229. package/src/hooks/useUserAgent.js +0 -43
  230. package/src/hooks/useWindowSize.js +0 -28
  231. package/src/index.css +0 -25
  232. package/src/styles/fonts.js +0 -0
  233. package/src/util/page-head.js +0 -62
  234. package/src/util/provider.js +0 -12
@@ -1,83 +1,83 @@
1
- import { forwardRef } from "react";
2
- import * as Select from "@radix-ui/react-select";
3
- import { twMerge } from "tailwind-merge";
4
- import Icon from "~/components/modules/icon";
5
- import Button from "~/components/modules/buttons/default";
6
- import React from 'react'
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,56 +1,55 @@
1
- import { forwardRef } from 'react';
2
- import { twMerge } from 'tailwind-merge';
3
- import React from 'react'
4
-
5
- const Grid = forwardRef((props, ref) => {
6
- const {
7
- as = 'div',
8
- isAnimated = false,
9
- children,
10
- className,
11
- autoRows = true,
12
- columns = 'md:hc-grid-cols-2',
13
- gap = 'hc-gap-12 lg:hc-gap-16',
14
- ...rest
15
- } = props;
16
-
17
- const Container = as;
18
-
19
- return (
20
- <Container
21
- ref={ref}
22
- className={twMerge(
23
- 'hc-grid',
24
- gap,
25
- autoRows ? 'hc-auto-rows-min' : '',
26
- 'hc-grid-cols-1',
27
- columns,
28
- className ?? ''
29
- )}
30
- {...rest}
31
- >
32
- {children}
33
- </Container>
34
- );
35
- });
36
-
37
- export const GridItem = ({
38
- as = 'div',
39
- children,
40
- className
41
- }) => {
42
- const Container = as;
43
-
44
- return (
45
- <Container
46
- className={className ?? ''}
47
- >
48
- {children}
49
- </Container>
50
- );
51
- };
52
-
53
- Grid.Item = GridItem;
54
-
55
- Grid.displayName = 'Grid';
56
- 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
+ isAnimated = false,
8
+ children,
9
+ className,
10
+ autoRows = true,
11
+ columns = 'md:hc-grid-cols-2',
12
+ gap = 'hc-gap-12 lg:hc-gap-16',
13
+ ...rest
14
+ } = props;
15
+
16
+ const Container = as;
17
+
18
+ return (
19
+ <Container
20
+ ref={ref}
21
+ className={twMerge(
22
+ 'hc-grid',
23
+ gap,
24
+ autoRows ? 'hc-auto-rows-min' : '',
25
+ 'hc-grid-cols-1',
26
+ columns,
27
+ className ?? ''
28
+ )}
29
+ {...rest}
30
+ >
31
+ {children}
32
+ </Container>
33
+ );
34
+ });
35
+
36
+ export const GridItem = ({
37
+ as = 'div',
38
+ children,
39
+ className
40
+ }) => {
41
+ const Container = as;
42
+
43
+ return (
44
+ <Container
45
+ className={className ?? ''}
46
+ >
47
+ {children}
48
+ </Container>
49
+ );
50
+ };
51
+
52
+ Grid.Item = GridItem;
53
+
54
+ Grid.displayName = 'Grid';
55
+ export default Grid;
@@ -1,33 +1,33 @@
1
- import { Icon } from '@iconify/react';
2
- import React from '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;
@@ -1,88 +1,94 @@
1
- import React, { useEffect } from "react";
2
- import RecruiterHeadshot from "../maps/list/item-expand-card/recruiter-headshot";
3
- import RecruiterDetails from "../maps/list/item-expand-card/recruiter-details";
4
- import ApplyButtonGroup from "../buttons/button-group-apply";
5
- import RecruiterContactNav from "../maps/list/item-expand-card/recruiter-contact-nav";
6
- import { useMap } from "~/contexts/mapContext";
7
- import { useMapList } from "~/contexts/mapListContext";
8
- import CommutePill from "../buttons/commute-pill";
9
-
10
- const ListingDetails = ({ item, recruiters }) => {
11
- const { travelTime } = useMap();
12
- const { siteConfig, navigateToDetails } = useMapList();
13
- if (!item) {
14
- return null;
15
- }
16
- let matchingRecruiter = !recruiters ? null : recruiters[item?.recruiterId];
17
- return (<div className="hc-w-full">
18
- <div className="hc-grow hc-flex hc-flex-wrap hc-items-center hc-gap-4">
19
- {matchingRecruiter?.headshot && (
20
- <RecruiterHeadshot
21
- image={`https:${matchingRecruiter.headshot}`}
22
- alt={matchingRecruiter?.firstName}
23
- className="hc-bg-gray-300"
24
- />
25
- )}
26
- {matchingRecruiter && (
27
- <RecruiterDetails
28
- contactNav={
29
- <RecruiterContactNav>
30
- {matchingRecruiter?.mobilePhone && (
31
- <RecruiterContactNav.Button
32
- href={`tel:${matchingRecruiter.mobilePhone}`}
33
- title={`Call ${matchingRecruiter.mobilePhone}`}
34
- icon="fluent:phone-32-regular"
35
- />
36
- )}
37
- {matchingRecruiter?.email && (
38
- <RecruiterContactNav.Button
39
- href={`mailto:${matchingRecruiter.email}`}
40
- title={`email ${matchingRecruiter.email}`}
41
- icon="bi:envelope-at"
42
- />
43
- )}
44
- {matchingRecruiter?.linkedIn && (
45
- <RecruiterContactNav.Button
46
- href={matchingRecruiter.linkedIn}
47
- title="LinkedIn"
48
- icon="ant-design:linkedin-outlined"
49
- />
50
- )}
51
- </RecruiterContactNav>
52
- }
53
- >
54
- {matchingRecruiter?.firstName && matchingRecruiter?.lastName && (
55
- <RecruiterDetails.Title>
56
- {`${matchingRecruiter?.firstName} ${matchingRecruiter?.lastName}`}
57
- </RecruiterDetails.Title>
58
- )}
59
- {item.details?.recruiter?.title && (
60
- <RecruiterDetails.Text>
61
- {item.details.recruiter.title}
62
- </RecruiterDetails.Text>
63
- )}
64
- </RecruiterDetails>
65
- )}
66
- <ApplyButtonGroup
67
- useDetailsPostMessage={siteConfig.useDetailsPostMessage}
68
- navigateToDetails={navigateToDetails}
69
- includeDialog={siteConfig.useApplyDialog}
70
- internalApplyLink={siteConfig.internalApplyLink}
71
- companyName={siteConfig.companyName}
72
- applyUrl={item?.applyUrl}
73
- itemId={item.id}
74
- detailsUrl={item.useClientJobUrl ? item?.detailsUrl : `${siteConfig.jobsDomain}${item.id}`}
75
- className={`
76
- lg:hc-flex-col lg:hc-w-auto hc-order-first lg:hc-order-last md:hc-self-center hc-py-2 lg:hc-p-0 lg:hc-mb-0 hc-border-b lg:hc-border-none hc-border-uiAccent/20
77
- ${matchingRecruiter ? "lg:hc-flex-col lg:hc-w-auto" : "lg:hc-flex-row"}
78
- `}
79
- />
80
- </div>
81
- <div className="hc-w-full">
82
- <CommutePill travelTime={travelTime} className="hc-ml-0" />
83
- </div>
84
- </div>
85
- );
86
- };
87
-
88
- export default ListingDetails;
1
+ import React from 'react';
2
+
3
+ import RecruiterHeadshot from '~/components/modules/maps/list/item-expand-card/recruiter-headshot';
4
+ import RecruiterDetails from '~/components/modules/maps/list/item-expand-card/recruiter-details';
5
+ import RecruiterContactNav from '~/components/modules/maps/list/item-expand-card/recruiter-contact-nav';
6
+ import ApplyButtonGroup from '~/components/modules/buttons/button-group-apply';
7
+ import CommutePill from '~/components/modules/buttons/commute-pill';
8
+
9
+ import { useMap } from '~/contexts/mapContext';
10
+ import { useMapList } from '~/contexts/mapListContext';
11
+
12
+ const ListingDetails = ({ item, recruiters }) => {
13
+ const { travelTime } = useMap();
14
+ const { siteConfig, navigateToDetails, navigateToEasyApply, Link } = useMapList();
15
+ if (!item) {
16
+ return null;
17
+ }
18
+ let matchingRecruiter = !recruiters ? null : recruiters[item?.recruiterId];
19
+ return (
20
+ <div className="hc-w-full">
21
+ <div className="hc-grow hc-flex hc-flex-wrap hc-items-center hc-gap-4">
22
+ {matchingRecruiter?.headshot && (
23
+ <RecruiterHeadshot
24
+ image={`https:${matchingRecruiter.headshot}`}
25
+ alt={matchingRecruiter?.firstName}
26
+ className="hc-bg-gray-300"
27
+ />
28
+ )}
29
+ {matchingRecruiter && (
30
+ <RecruiterDetails
31
+ contactNav={
32
+ <RecruiterContactNav>
33
+ {matchingRecruiter?.mobilePhone && (
34
+ <RecruiterContactNav.Button
35
+ href={`tel:${matchingRecruiter.mobilePhone}`}
36
+ title={`Call ${matchingRecruiter.mobilePhone}`}
37
+ icon="fluent:phone-32-regular"
38
+ />
39
+ )}
40
+ {matchingRecruiter?.email && (
41
+ <RecruiterContactNav.Button
42
+ href={`mailto:${matchingRecruiter.email}`}
43
+ title={`email ${matchingRecruiter.email}`}
44
+ icon="bi:envelope-at"
45
+ />
46
+ )}
47
+ {matchingRecruiter?.linkedIn && (
48
+ <RecruiterContactNav.Button
49
+ href={matchingRecruiter.linkedIn}
50
+ title="LinkedIn"
51
+ icon="ant-design:linkedin-outlined"
52
+ />
53
+ )}
54
+ </RecruiterContactNav>
55
+ }
56
+ >
57
+ {matchingRecruiter?.firstName && matchingRecruiter?.lastName && (
58
+ <RecruiterDetails.Title>
59
+ {`${matchingRecruiter?.firstName} ${matchingRecruiter?.lastName}`}
60
+ </RecruiterDetails.Title>
61
+ )}
62
+ {item.details?.recruiter?.title && (
63
+ <RecruiterDetails.Text>
64
+ {item.details.recruiter.title}
65
+ </RecruiterDetails.Text>
66
+ )}
67
+ </RecruiterDetails>
68
+ )}
69
+ <ApplyButtonGroup
70
+ useDetailsPostMessage={siteConfig.useDetailsPostMessage}
71
+ navigateToDetails={navigateToDetails}
72
+ navigateToEasyApply={navigateToEasyApply}
73
+ Link={Link}
74
+ includeDialog={siteConfig.useApplyDialog}
75
+ internalApplyLink={siteConfig.internalApplyLink}
76
+ companyName={siteConfig.companyName}
77
+ applyUrl={item?.applyUrl}
78
+ itemId={item.id}
79
+ item={item}
80
+ detailsUrl={item.useClientJobUrl ? item?.detailsUrl : `${siteConfig.jobsDomain}${item.id}`}
81
+ className={`
82
+ lg:hc-w-auto hc-order-first lg:hc-order-last md:hc-self-center hc-py-2 lg:hc-p-0 lg:hc-mb-0 hc-border-b lg:hc-border-none hc-border-uiAccent/20
83
+ ${matchingRecruiter ? "lg:hc-flex-col lg:hc-w-auto" : "lg:hc-flex-row"}
84
+ `}
85
+ />
86
+ </div>
87
+ <div className="hc-w-full">
88
+ <CommutePill travelTime={travelTime} className="hc-ml-0" />
89
+ </div>
90
+ </div>
91
+ );
92
+ };
93
+
94
+ export default ListingDetails;
@@ -1,17 +1,17 @@
1
- import React from 'react'
2
-
3
- const CardInfoWindow = ({ className, content, id }) => {
4
- return (
5
- <div
6
- id={id}
7
- className={`
8
- hc-relative hc-flex hc-flex-col hc-break-words hc-bg-clip-border
9
- ${className ?? ""}
10
- `}
11
- >
12
- {content}
13
- </div>
14
- );
15
- };
16
-
17
- export default CardInfoWindow;
1
+ import React from 'react';
2
+
3
+ const CardInfoWindow = ({ className, content, id }) => {
4
+ return (
5
+ <div
6
+ id={id}
7
+ className={`
8
+ hc-relative hc-flex hc-flex-col hc-break-words hc-bg-clip-border
9
+ ${className ?? ""}
10
+ `}
11
+ >
12
+ {content}
13
+ </div>
14
+ );
15
+ };
16
+
17
+ export default CardInfoWindow;