@abcagency/hc-ui-components 1.0.4 → 1.0.6

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 (59) hide show
  1. package/dist/globals.css +1 -1
  2. package/dist/index.js +237 -376
  3. package/package.json +37 -38
  4. package/rollup.config.js +3 -1
  5. package/src/components/layout/footer.js +7 -7
  6. package/src/components/layout/layout.js +1 -1
  7. package/src/components/modules/accordions/MapAccordionItem.js +69 -69
  8. package/src/components/modules/accordions/default.js +8 -8
  9. package/src/components/modules/accordions/filterItem.js +53 -53
  10. package/src/components/modules/accordions/filters.js +44 -44
  11. package/src/components/modules/animations/slidein.js +1 -1
  12. package/src/components/modules/buttons/button-group-apply.js +85 -85
  13. package/src/components/modules/buttons/commute-pill.js +21 -21
  14. package/src/components/modules/buttons/default.js +16 -16
  15. package/src/components/modules/buttons/items-pill.js +2 -2
  16. package/src/components/modules/buttons/pill-wrapper.js +1 -1
  17. package/src/components/modules/buttons/show-all-button.js +20 -20
  18. package/src/components/modules/cards/default.js +8 -8
  19. package/src/components/modules/cards/filter.js +5 -5
  20. package/src/components/modules/dialogs/apply-dialog.js +47 -47
  21. package/src/components/modules/filter/commute.js +151 -149
  22. package/src/components/modules/filter/index.js +86 -86
  23. package/src/components/modules/filter/item.js +77 -77
  24. package/src/components/modules/filter/location.js +13 -13
  25. package/src/components/modules/filter/points-of-interest.js +6 -6
  26. package/src/components/modules/filter/radio-item.js +51 -51
  27. package/src/components/modules/filter/search.js +91 -89
  28. package/src/components/modules/filter/sort.js +83 -83
  29. package/src/components/modules/grid.js +17 -36
  30. package/src/components/modules/icon.js +33 -33
  31. package/src/components/modules/jobListing/listing-details.js +88 -88
  32. package/src/components/modules/maps/info-window-card.js +17 -17
  33. package/src/components/modules/maps/info-window-content.js +60 -60
  34. package/src/components/modules/maps/list/field-mapper.js +111 -113
  35. package/src/components/modules/maps/list/header-item.js +90 -90
  36. package/src/components/modules/maps/list/header.js +46 -46
  37. package/src/components/modules/maps/list/index.js +104 -104
  38. package/src/components/modules/maps/list/item-expand-card/index.js +1 -1
  39. package/src/components/modules/maps/list/item-expand-card/recruiter-contact-nav.js +3 -3
  40. package/src/components/modules/maps/list/item-expand-card/recruiter-details.js +4 -4
  41. package/src/components/modules/maps/list/list-item/index.js +133 -133
  42. package/src/components/modules/maps/map-list.js +73 -73
  43. package/src/components/modules/maps/map.js +26 -25
  44. package/src/components/modules/maps/tabs.js +79 -79
  45. package/src/components/modules/navigation/nav-link.js +2 -2
  46. package/src/components/modules/navigation/navbar.js +21 -24
  47. package/src/components/modules/navigation/skip-link.js +1 -1
  48. package/src/components/modules/navigation/social.js +3 -3
  49. package/src/components/modules/sections/default.js +2 -2
  50. package/src/contexts/mapListContext.js +19 -18
  51. package/src/index.js +103 -116
  52. package/src/styles/globals.css +23 -25
  53. package/src/tailwind/tailwind.config.js +6 -5
  54. package/src/util/fieldMapper.js +1 -1
  55. package/src/util/loading.js +2 -2
  56. package/src/components/modules/filter/search.js.rej +0 -9
  57. package/src/components/modules/form.js +0 -362
  58. package/src/components/modules/jumbotron.js +0 -81
  59. package/src/components/modules/video-player.js +0 -126
package/package.json CHANGED
@@ -1,38 +1,37 @@
1
- {
2
- "name": "@abcagency/hc-ui-components",
3
- "version": "1.0.4",
4
- "description": "",
5
- "main": "index.js",
6
- "scripts": {
7
- "build": "rollup -c",
8
- "test": "echo \"Error: no test specified\" && exit 1"
9
- },
10
- "keywords": [],
11
- "author": "",
12
- "license": "ISC",
13
-
14
-
15
- "devDependencies": {
16
- "@babel/cli": "^7.24.5",
17
- "@babel/core": "^7.24.5",
18
- "@babel/preset-env": "^7.24.5",
19
- "@babel/preset-react": "^7.24.1",
20
- "@rollup/plugin-alias": "^5.1.0",
21
- "@rollup/plugin-babel": "^6.0.4",
22
- "@rollup/plugin-commonjs": "^25.0.7",
23
- "@rollup/plugin-node-resolve": "^15.2.3",
24
- "@rollup/plugin-replace": "^5.0.5",
25
- "@tailwindcss/aspect-ratio": "^0.4.2",
26
- "@tailwindcss/forms": "^0.5.7",
27
- "@tailwindcss/typography": "^0.5.13",
28
- "tailwindcss": "^3.4.3",
29
- "tailwindcss-animate": "^1.0.7",
30
- "autoprefixer": "^10.4.19",
31
- "dotenv": "^16.4.5",
32
- "postcss": "^8.4.38",
33
- "postcss-preset-env": "^9.5.13",
34
- "rollup": "^4.17.2",
35
- "rollup-plugin-peer-deps-external": "^2.2.4",
36
- "rollup-plugin-postcss": "^4.0.2"
37
- }
38
- }
1
+ {
2
+ "name": "@abcagency/hc-ui-components",
3
+ "version": "1.0.6",
4
+ "description": "",
5
+ "main": "index.js",
6
+ "scripts": {
7
+ "build": "rollup -c",
8
+ "test": "echo \"Error: no test specified\" && exit 1"
9
+ },
10
+ "keywords": [],
11
+ "author": "",
12
+ "license": "ISC",
13
+ "devDependencies": {
14
+ "@babel/cli": "^7.24.5",
15
+ "@babel/core": "^7.24.5",
16
+ "@babel/preset-env": "^7.24.5",
17
+ "@babel/preset-react": "^7.24.1",
18
+ "@rollup/plugin-alias": "^5.1.0",
19
+ "@rollup/plugin-babel": "^6.0.4",
20
+ "@rollup/plugin-commonjs": "^25.0.7",
21
+ "@rollup/plugin-node-resolve": "^15.2.3",
22
+ "@rollup/plugin-replace": "^5.0.5",
23
+ "@tailwindcss/aspect-ratio": "^0.4.2",
24
+ "@tailwindcss/forms": "^0.5.7",
25
+ "@tailwindcss/typography": "^0.5.13",
26
+ "autoprefixer": "^10.4.19",
27
+ "dotenv": "^16.4.5",
28
+ "postcss": "^8.4.38",
29
+ "postcss-prefixer": "^3.0.0",
30
+ "postcss-preset-env": "^9.5.13",
31
+ "rollup": "^4.17.2",
32
+ "rollup-plugin-peer-deps-external": "^2.2.4",
33
+ "rollup-plugin-postcss": "^4.0.2",
34
+ "tailwindcss": "^3.4.3",
35
+ "tailwindcss-animate": "^1.0.7"
36
+ }
37
+ }
package/rollup.config.js CHANGED
@@ -7,6 +7,7 @@ const commonjs = require('@rollup/plugin-commonjs');
7
7
  const replace = require('@rollup/plugin-replace');
8
8
  const dotenv = require('dotenv');
9
9
  const postcss = require('rollup-plugin-postcss');
10
+ const prefixer = require('postcss-prefixer');
10
11
  dotenv.config();
11
12
 
12
13
  const plugins = [
@@ -18,7 +19,8 @@ const plugins = [
18
19
  minimize: true,
19
20
  plugins: [
20
21
  require('tailwindcss'),
21
- require('autoprefixer')
22
+ require('autoprefixer'),
23
+
22
24
  ],
23
25
  }),
24
26
  replace({
@@ -5,13 +5,13 @@ import site from '~/data/site.json';
5
5
 
6
6
  const Footer = () => {
7
7
  return (
8
- <footer className="px-4 py-3 bg-slate-100 text-gray-700 text-center text-xs">
9
- <div className="container flex justify-between items-center">
10
- <p className="m-0">
8
+ <footer className="hc-px-4 hc-py-3 hc-bg-slate-100 hc-text-gray-700 hc-text-center hc-text-xs">
9
+ <div className="hc-container hc-flex hc-justify-between hc-items-center">
10
+ <p className="hc-m-0">
11
11
  © {new Date().getFullYear()}. <a href={`${site.copyright.url}`} target="_blank">{site.copyright.name}</a>
12
12
  </p>
13
13
 
14
- <div className="flex items-center gap-3">
14
+ <div className="hc-flex hc-items-center hc-gap-3">
15
15
  <NavSocial />
16
16
 
17
17
  <Button.Scroll
@@ -19,10 +19,10 @@ const Footer = () => {
19
19
  variant="icon"
20
20
  size="sq"
21
21
  >
22
- <span className="sr-only">To the top!</span>
22
+ <span className="hc-sr-only">To the top!</span>
23
23
  <Button.Icon
24
- icon="mdi:arrow-collapse-up"
25
- size="w-4 h-4"
24
+ icon="mdi:hc-arrow-collapse-up"
25
+ size="hc-size-4"
26
26
  />
27
27
  </Button.Scroll>
28
28
  </div>
@@ -13,7 +13,7 @@ const RootLayout = ({
13
13
  return (
14
14
  <div
15
15
  id="top"
16
- className="relative"
16
+ className="hc-relative"
17
17
  >
18
18
  <Provider>
19
19
  <SectionContext.Provider
@@ -1,69 +1,69 @@
1
- import Accordion from "~/components/modules/accordions/default";
2
- import ListItem from "~/components/modules/maps/list/list-item";
3
- import ItemExpandCard from "~/components/modules/maps/list/item-expand-card";
4
- import { useMap } from "~/contexts/mapContext";
5
- import { setStorageObject } from "~/util/localStorageUtil";
6
- import { useEffect } from "react";
7
- import { useMapList } from "~/contexts/mapListContext";
8
- import React from 'react'
9
- const MapAccordionItem = ({
10
- item,
11
- itemRefs,
12
- itemExpandedContent,
13
- fieldsShown,
14
- showMap,
15
- hasListItemSelected,
16
- specialFeatures,
17
- isActive
18
- }) => {
19
- const {
20
- mapItems,
21
- recruiters,
22
- setMobileTab,
23
- favorites,
24
- handleSettingFavorites
25
- } = useMapList();
26
- const { selectItem } = useMap();
27
- const setSelectedItemAndZoomMap = item => {
28
- if (isActive) {
29
- localStorage.removeItem("selectedListItem");
30
- mapItems.find(x => x.items.hasOwnProperty(item.id)) || null;
31
- selectItem(null, null, 9, { lat: 39.8283, lng: -98.5795 });
32
- } else {
33
- setStorageObject("selectedListItem", item);
34
- let location = mapItems.find(x => x.items.hasOwnProperty(item.id)) || null;
35
- selectItem(item, location, 12, {
36
- lat: location?.latitude,
37
- lng: location?.longitude
38
- });
39
- }
40
- };
41
- return (
42
- <Accordion.Item key={item.id} id={item.id}>
43
- <Accordion.Trigger.Blank>
44
- <ListItem
45
- ref={el => (itemRefs.current[item.id] = el)}
46
- id={item.id}
47
- key={item.id}
48
- item={item}
49
- fieldsShown={fieldsShown}
50
- onClick={() => setSelectedItemAndZoomMap(item)}
51
- showMap={showMap}
52
- isActive={isActive}
53
- setMobileTab={setMobileTab}
54
- specialFeatures={specialFeatures}
55
- className={hasListItemSelected ? isActive ? "!border-secondary border border-b-0" : "opacity-85" : ""}
56
- favorites={favorites}
57
- setFavorites={handleSettingFavorites}
58
- />
59
- </Accordion.Trigger.Blank>
60
- { isActive &&
61
- <Accordion.Content bodyClassName="px-2 py-2 pt-0 bg-uiAccent/5 border-secondary border border-t-0">
62
- <ItemExpandCard content={itemExpandedContent(item, recruiters)} />
63
- </Accordion.Content>
64
- }
65
- </Accordion.Item>
66
- );
67
- };
68
-
69
- export default MapAccordionItem;
1
+ import Accordion from "~/components/modules/accordions/default";
2
+ import ListItem from "~/components/modules/maps/list/list-item";
3
+ import ItemExpandCard from "~/components/modules/maps/list/item-expand-card";
4
+ import { useMap } from "~/contexts/mapContext";
5
+ import { setStorageObject } from "~/util/localStorageUtil";
6
+ import { useEffect } from "react";
7
+ import { useMapList } from "~/contexts/mapListContext";
8
+ import React from 'react'
9
+ const MapAccordionItem = ({
10
+ item,
11
+ itemRefs,
12
+ itemExpandedContent,
13
+ fieldsShown,
14
+ showMap,
15
+ hasListItemSelected,
16
+ specialFeatures,
17
+ isActive
18
+ }) => {
19
+ const {
20
+ mapItems,
21
+ recruiters,
22
+ setMobileTab,
23
+ favorites,
24
+ handleSettingFavorites
25
+ } = useMapList();
26
+ const { selectItem } = useMap();
27
+ const setSelectedItemAndZoomMap = item => {
28
+ if (isActive) {
29
+ localStorage.removeItem("selectedListItem");
30
+ mapItems.find(x => x.items.hasOwnProperty(item.id)) || null;
31
+ selectItem(null, null, 9, { lat: 39.8283, lng: -98.5795 });
32
+ } else {
33
+ setStorageObject("selectedListItem", item);
34
+ let location = mapItems.find(x => x.items.hasOwnProperty(item.id)) || null;
35
+ selectItem(item, location, 12, {
36
+ lat: location?.latitude,
37
+ lng: location?.longitude
38
+ });
39
+ }
40
+ };
41
+ return (
42
+ <Accordion.Item key={item.id} id={item.id}>
43
+ <Accordion.Trigger.Blank>
44
+ <ListItem
45
+ ref={el => (itemRefs.current[item.id] = el)}
46
+ id={item.id}
47
+ key={item.id}
48
+ item={item}
49
+ fieldsShown={fieldsShown}
50
+ onClick={() => setSelectedItemAndZoomMap(item)}
51
+ showMap={showMap}
52
+ isActive={isActive}
53
+ setMobileTab={setMobileTab}
54
+ specialFeatures={specialFeatures}
55
+ className={hasListItemSelected ? isActive ? "!hc-border-secondary hc-border hc-border-b-0" : "hc-opacity-85" : ""}
56
+ favorites={favorites}
57
+ setFavorites={handleSettingFavorites}
58
+ />
59
+ </Accordion.Trigger.Blank>
60
+ {isActive &&
61
+ <Accordion.Content bodyClassName="hc-px-2 hc-py-2 hc-pt-0 hc-bg-uiAccent/5 hc-border-secondary hc-border hc-border-t-0">
62
+ <ItemExpandCard content={itemExpandedContent(item, recruiters)} />
63
+ </Accordion.Content>
64
+ }
65
+ </Accordion.Item>
66
+ );
67
+ };
68
+
69
+ export default MapAccordionItem;
@@ -58,7 +58,7 @@ export const AccordionTrigger = forwardRef((
58
58
  <RadixAccordion.Trigger
59
59
  ref={forwardedRef}
60
60
  className={twMerge(
61
- 'group flex justify-between w-full p-4 font-bold text-left text-uiText focus:outline-none focus-visible:ring focus-visible:ring-uiAccent focus-visible:ring-opacity-75 hover:text-primary focus:text-primary transition data-[state=open]:text-primary',
61
+ 'hc-group hc-flex hc-justify-between hc-w-full hc-p-4 hc-font-bold hc-text-left hc-text-uiText focus:hc-outline-none hc-focus-visible:ring hc-focus-visible:hc-ring-uiAccent focus-visible:hc-ring-opacity-75 hover:hc-text-primary focus:hc-text-primary hc-transition data-[state=open]:hc-text-primary',
62
62
  className ?? ''
63
63
  )}
64
64
  {...props}
@@ -66,8 +66,8 @@ export const AccordionTrigger = forwardRef((
66
66
  {children}
67
67
  <Icon
68
68
  icon="uil:angle-down"
69
- size="w-5 h-5"
70
- className="transition-transform group-data-[state=open]:!rotate-180"
69
+ size="hc-size-5"
70
+ className="hc-transition-transform hc-group-data-[state=open]:!hc-rotate-180"
71
71
  aria-hidden="true"
72
72
  />
73
73
  </RadixAccordion.Trigger>
@@ -87,13 +87,13 @@ export const AccordionTriggerHasHeader = forwardRef((
87
87
  ) => (
88
88
  <RadixAccordion.Header
89
89
  className={twMerge(
90
- 'group flex items-start justify-between w-full p-4 pr-3 font-bold text-left text-uiText focus:outline-none focus-visible:ring focus-visible:ring-uiAccent focus-visible:ring-opacity-75 hover:text-primary focus:text-primary transition data-[state=open]:text-primary',
90
+ 'hc-group hc-flex hc-items-start hc-justify-between hc-w-full hc-p-4 hc-pr-3 hc-font-bold hc-text-left hc-text-uiText focus:hc-outline-none focus-visible:hc-ring focus-visible:hc-ring-uiAccent focus-visible:hc-ring-opacity-75 hover:hc-text-primary focus:hc-text-primary hc-transition data-[state=open]:hc-text-primary',
91
91
  headerClassName ?? ''
92
92
  )}
93
93
  >
94
94
  <RadixAccordion.Trigger
95
95
  ref={forwardedRef}
96
- className={twMerge('flex items-center justify-between w-full', className ?? '')}
96
+ className={twMerge('hc-flex hc-items-center hc-justify-between hc-w-full', className ?? '')}
97
97
  {...props}
98
98
  >
99
99
  {children}
@@ -101,7 +101,7 @@ export const AccordionTriggerHasHeader = forwardRef((
101
101
  icon="uil:angle-down"
102
102
  size="w-5 h-5"
103
103
  className={twMerge(
104
- 'transition-transform group-data-[state=open]:!rotate-180',
104
+ 'hc-transition-transform group-data-[state=open]:!hc-hc-rotate-180',
105
105
  iconClassName ?? ''
106
106
  )}
107
107
  aria-hidden="true"
@@ -142,8 +142,8 @@ export const AccordionContent = forwardRef((
142
142
  <RadixAccordion.Content
143
143
  ref={forwardedRef}
144
144
  className={twMerge(
145
- 'data-[state=open]:animate-slideDown data-[state=closed]:animate-slideUp overflow-hidden',
146
- className ?? ''
145
+ 'data-[state=open]:hc-animate-slideDown hc-data-[state=closed]:hc-animate-slideUp hc-overflow-hidden',
146
+ className ?? ''
147
147
  )}
148
148
  {...props}
149
149
  >
@@ -1,53 +1,53 @@
1
- import { memo } from "react";
2
- import React from 'react';
3
- import Accordion from "~/components/modules/accordions/default";
4
- import FilterItem from "~/components/modules/filter/item";
5
- import ItemsPill from "~/components/modules/buttons/items-pill";
6
-
7
- const AccordionFilterItem = memo(({ filter, setDefaultValue, setSelectedFilters, selectedFilters }) => {
8
- const fieldKey = filter.id;
9
- const activeItemsCount = selectedFilters != null && selectedFilters[fieldKey]
10
- ? Object.keys(selectedFilters[fieldKey]).length
11
- : 0;
12
-
13
- const handleClearFilters = () => {
14
- setSelectedFilters(prevFilters => {
15
- const updatedFilters = { ...prevFilters };
16
- delete updatedFilters[fieldKey];
17
- return updatedFilters;
18
- });
19
- };
20
- return (
21
- <Accordion.Item key={filter.id} id={filter.id}>
22
- <Accordion.Trigger.HasHeader
23
- onClick={() => setDefaultValue(filter.id)}
24
- className="stretched-link text-left"
25
- iconClassName="order-last"
26
- headerClassName="relative py-2 rounded border border-uiAccent/20 bg-white text-sm transition data-[state=open]:border-b-transparent data-[state=open]:rounded-b-none"
27
- header={
28
- activeItemsCount > 0 && (
29
- <ItemsPill
30
- activeItemsCount={activeItemsCount}
31
- onClick={handleClearFilters}
32
- />
33
- )
34
- }
35
- >
36
- {filter.title}
37
- </Accordion.Trigger.HasHeader>
38
- <Accordion.Content bodyClassName="px-2 py-1 bg-white rounded-b border border-uiAccent/20 border-t-0 max-h-[20vh] md:max-h-[25vh] overflow-auto">
39
- {filter.items.sort().map(item => (
40
- <FilterItem
41
- key={item.name}
42
- item={item}
43
- field={filter.id}
44
- selectedFilters={selectedFilters}
45
- setSelectedFilters={setSelectedFilters}
46
- />
47
- ))}
48
- </Accordion.Content>
49
- </Accordion.Item>
50
- );
51
- });
52
- AccordionFilterItem.displayName = 'AccordionItem';
53
- export default AccordionFilterItem;
1
+ import { memo } from "react";
2
+ import React from 'react';
3
+ import Accordion from "~/components/modules/accordions/default";
4
+ import FilterItem from "~/components/modules/filter/item";
5
+ import ItemsPill from "~/components/modules/buttons/items-pill";
6
+
7
+ const AccordionFilterItem = memo(({ filter, setDefaultValue, setSelectedFilters, selectedFilters }) => {
8
+ const fieldKey = filter.id;
9
+ const activeItemsCount = selectedFilters != null && selectedFilters[fieldKey]
10
+ ? Object.keys(selectedFilters[fieldKey]).length
11
+ : 0;
12
+
13
+ const handleClearFilters = () => {
14
+ setSelectedFilters(prevFilters => {
15
+ const updatedFilters = { ...prevFilters };
16
+ delete updatedFilters[fieldKey];
17
+ return updatedFilters;
18
+ });
19
+ };
20
+ return (
21
+ <Accordion.Item key={filter.id} id={filter.id}>
22
+ <Accordion.Trigger.HasHeader
23
+ onClick={() => setDefaultValue(filter.id)}
24
+ className="hc-stretched-link hc-text-left"
25
+ iconClassName="hc-order-last"
26
+ headerClassName="hc-relative hc-py-2 hc-rounded hc-border hc-border-uiAccent/20 hc-bg-white hc-text-sm hc-transition data-[state=open]:hc-border-b-transparent data-[state=open]:hc-rounded-b-none"
27
+ header={
28
+ activeItemsCount > 0 && (
29
+ <ItemsPill
30
+ activeItemsCount={activeItemsCount}
31
+ onClick={handleClearFilters}
32
+ />
33
+ )
34
+ }
35
+ >
36
+ {filter.title}
37
+ </Accordion.Trigger.HasHeader>
38
+ <Accordion.Content bodyClassName="hc-px-2 hc-py-1 hc-bg-white hc-rounded-b hc-border hc-border-uiAccent/20 hc-border-t-0 hc-max-h-[20vh] md:hc-max-h-[25vh] hc-overflow-auto">
39
+ {filter.items.sort().map(item => (
40
+ <FilterItem
41
+ key={item.name}
42
+ item={item}
43
+ field={filter.id}
44
+ selectedFilters={selectedFilters}
45
+ setSelectedFilters={setSelectedFilters}
46
+ />
47
+ ))}
48
+ </Accordion.Content>
49
+ </Accordion.Item>
50
+ );
51
+ });
52
+ AccordionFilterItem.displayName = 'AccordionItem';
53
+ export default AccordionFilterItem;
@@ -1,44 +1,44 @@
1
- import Accordion from "~/components/modules/accordions/default";
2
- import AccordionFilterItem from "./filterItem";
3
- import FilterCard from "~/components/modules/cards/filter";
4
- import Loading from "~/util/loading";
5
- import { useMapList } from "~/contexts/mapListContext";
6
- import React from 'react'
7
- const AccordionFilters = ({
8
- className,
9
- defaultValue,
10
- setDefaultValue,
11
- setLocation,
12
- setSelectedListItem
13
- }) => {
14
- const { filterOptions, selectedFilters, setSelectedFilters, favorites, filterByFavorites, setFilterByFavorites } = useMapList();
15
-
16
- return (
17
- <FilterCard className={className ?? ""}>
18
- <FilterCard.Title icon="fa-solid:sliders-h">
19
- <span>
20
- Filter <span className="md:hidden lg:inline">your search</span>
21
- </span>
22
- </FilterCard.Title>
23
-
24
- <Accordion defaultValue={defaultValue} className="space-y-4" >
25
- {!filterOptions?.filters && (
26
- <Accordion.Item>
27
- <Loading />
28
- </Accordion.Item>
29
- )}
30
- {filterOptions?.filters && filterOptions?.filters.map(filter => (
31
- <AccordionFilterItem
32
- key={filter.id}
33
- filter={filter}
34
- setDefaultValue={setDefaultValue}
35
- selectedFilters={selectedFilters}
36
- setSelectedFilters={prevFilters => { setSelectedFilters(prevFilters); setLocation(null); setSelectedListItem(null); }}
37
- />
38
- ))}
39
- </Accordion>
40
- </FilterCard>
41
- );
42
- };
43
-
44
- export default AccordionFilters;
1
+ import Accordion from "~/components/modules/accordions/default";
2
+ import AccordionFilterItem from "./filterItem";
3
+ import FilterCard from "~/components/modules/cards/filter";
4
+ import Loading from "~/util/loading";
5
+ import { useMapList } from "~/contexts/mapListContext";
6
+ import React from 'react'
7
+ const AccordionFilters = ({
8
+ className,
9
+ defaultValue,
10
+ setDefaultValue,
11
+ setLocation,
12
+ setSelectedListItem
13
+ }) => {
14
+ const { filterOptions, selectedFilters, setSelectedFilters, favorites, filterByFavorites, setFilterByFavorites } = useMapList();
15
+
16
+ return (
17
+ <FilterCard className={className ?? ""}>
18
+ <FilterCard.Title icon="fa-solid:sliders-h">
19
+ <span>
20
+ Filter <span className="md:hc-hidden lg:hc-inline">your search</span>
21
+ </span>
22
+ </FilterCard.Title>
23
+
24
+ <Accordion defaultValue={defaultValue} className="hc-space-y-4" >
25
+ {!filterOptions?.filters && (
26
+ <Accordion.Item>
27
+ <Loading />
28
+ </Accordion.Item>
29
+ )}
30
+ {filterOptions?.filters && filterOptions?.filters.map(filter => (
31
+ <AccordionFilterItem
32
+ key={filter.id}
33
+ filter={filter}
34
+ setDefaultValue={setDefaultValue}
35
+ selectedFilters={selectedFilters}
36
+ setSelectedFilters={prevFilters => { setSelectedFilters(prevFilters); setLocation(null); setSelectedListItem(null); }}
37
+ />
38
+ ))}
39
+ </Accordion>
40
+ </FilterCard>
41
+ );
42
+ };
43
+
44
+ export default AccordionFilters;
@@ -27,7 +27,7 @@ const SlideIn = ({
27
27
  return (
28
28
  <motion.div
29
29
  ref={ref}
30
- className="h-full"
30
+ className="hc-h-full"
31
31
  style={{
32
32
  scale: scaleSpring
33
33
  }}