willba-component-library 0.3.4 → 0.3.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 (40) hide show
  1. package/lib/components/FilterBar/FilterBarTypes.d.ts +13 -7
  2. package/lib/components/FilterBar/components/buttons/select-button/SelectButton.d.ts +1 -0
  3. package/lib/components/FilterBar/components/cards/image-card/ImageCard.d.ts +2 -2
  4. package/lib/components/FilterBar/components/common/FilterSectionHeader.d.ts +8 -0
  5. package/lib/components/FilterBar/components/dates/Dates.d.ts +15 -0
  6. package/lib/components/FilterBar/components/dates/index.d.ts +1 -0
  7. package/lib/components/FilterBar/components/guests/Guests.d.ts +1 -0
  8. package/lib/components/FilterBar/utils/getLocalizedContent.d.ts +8 -0
  9. package/lib/components/FilterBar/utils/index.d.ts +1 -0
  10. package/lib/index.d.ts +13 -7
  11. package/lib/index.esm.js +97 -49
  12. package/lib/index.esm.js.map +1 -1
  13. package/lib/index.js +366 -318
  14. package/lib/index.js.map +1 -1
  15. package/lib/index.umd.js +366 -318
  16. package/lib/index.umd.js.map +1 -1
  17. package/package.json +1 -1
  18. package/src/components/FilterBar/FilterBar.css +1 -1
  19. package/src/components/FilterBar/FilterBar.stories.tsx +45 -38
  20. package/src/components/FilterBar/FilterBar.tsx +19 -11
  21. package/src/components/FilterBar/FilterBarTypes.ts +15 -7
  22. package/src/components/FilterBar/components/buttons/select-button/SelectButton.css +13 -13
  23. package/src/components/FilterBar/components/buttons/select-button/SelectButton.tsx +6 -3
  24. package/src/components/FilterBar/components/cards/image-card/ImageCard.tsx +2 -2
  25. package/src/components/FilterBar/components/categories/Categories.tsx +1 -0
  26. package/src/components/FilterBar/components/common/FilterSectionHeader.css +29 -0
  27. package/src/components/FilterBar/components/common/FilterSectionHeader.tsx +16 -0
  28. package/src/components/FilterBar/components/dates/Dates.tsx +57 -0
  29. package/src/components/FilterBar/components/dates/index.ts +1 -0
  30. package/src/components/FilterBar/components/guests/GuestCount/GuestCount.css +4 -7
  31. package/src/components/FilterBar/components/guests/Guests.css +5 -20
  32. package/src/components/FilterBar/components/guests/Guests.tsx +8 -2
  33. package/src/components/FilterBar/components/locations/Locations.css +1 -15
  34. package/src/components/FilterBar/components/locations/Locations.tsx +43 -14
  35. package/src/components/FilterBar/utils/getLocalizedContent.tsx +21 -0
  36. package/src/components/FilterBar/utils/index.tsx +1 -0
  37. package/src/components/FilterBar/utils/parseLocations.tsx +5 -1
  38. package/src/core/components/calendar/Calendar.css +100 -50
  39. package/src/locales/en/filterBar.json +1 -1
  40. package/src/locales/fi/filterBar.json +2 -2
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "willba-component-library",
3
- "version": "0.3.4",
3
+ "version": "0.3.6",
4
4
  "description": "A custom UI component library",
5
5
  "main": "lib/index.js",
6
6
  "module": "lib/index.esm.js",
@@ -53,7 +53,7 @@
53
53
  .will-filter-bar-container {
54
54
  background-color: var(--will-white);
55
55
  min-height: 100px;
56
- padding: 40px 20px;
56
+ padding: 20px;
57
57
  position: absolute;
58
58
  top: 125px;
59
59
  z-index: 111;
@@ -79,59 +79,66 @@ export const Main: Story = {
79
79
  outerLoading: false,
80
80
  locations: {
81
81
  multiSelect: false,
82
+ disabled: false,
82
83
  data: [
83
84
  {
84
85
  id: 1,
85
- label: {
86
- en: 'Location 1 Location 1 Location 1 Location 1 Location 1 Location 1 Location 1 Location 1 Location 1 Location 1 Location 1 Location 1 Location 1',
87
- fi: 'Location 1 fi',
88
- },
89
- description: {
90
- en: 'Location 1 description',
91
- fi: 'Location 1 description fi',
92
- },
93
- imageUrl:
94
- '//i0.wp.com/picjumbo.com/wp-content/uploads/beautiful-fall-nature-scenery-free-image.jpeg?w=2210&quality=70',
86
+ label: [
87
+ { content: 'Helsinki Center', locale: 'en' },
88
+ { content: 'Helsinki Keskusta', locale: 'fi' },
89
+ ],
90
+ description: [
91
+ { content: 'Main training facility in downtown', locale: 'en' },
92
+ { content: 'Pääkoulutuslaitoksemme keskustassa', locale: 'fi' },
93
+ ],
94
+ imageUrl: '',
95
95
  },
96
96
  {
97
97
  id: 2,
98
- label: {
99
- en: 'Location 2',
100
- fi: 'Location 2 fi',
101
- },
98
+ label: [
99
+ { content: 'Espoo Campus', locale: 'en' },
100
+ { content: 'Espoon Kampus', locale: 'fi' },
101
+ ],
102
+ description: [
103
+ { content: 'Modern facilities with sea views', locale: 'en' },
104
+ { content: 'Modernit tilat merinäköalalla', locale: 'fi' },
105
+ ],
106
+ imageUrl: '',
102
107
  },
103
108
  {
104
109
  id: 3,
105
- label: {
106
- en: 'Location 3',
107
- fi: 'Location 3 fi',
108
- },
109
- description: {
110
- en: 'Location 3 description',
111
- fi: 'Location 3 description fi',
112
- },
113
- imageUrl:
114
- '//i0.wp.com/picjumbo.com/wp-content/uploads/beautiful-fall-nature-scenery-free-image.jpeg?w=2210&quality=70',
110
+ label: [
111
+ { content: 'Tampere Resort', locale: 'en' },
112
+ { content: 'Tampereen Lomakeskus', locale: 'fi' },
113
+ ],
114
+ description: [
115
+ { content: 'Lakeside retreat with full amenities', locale: 'en' },
116
+ { content: 'Järvenrannalla sijaitseva lomakeskus', locale: 'fi' },
117
+ ],
118
+ imageUrl: '',
115
119
  },
116
120
  {
117
121
  id: 4,
118
- label: {
119
- en: 'Location 4',
120
- fi: 'Location 4 fi',
121
- },
122
- imageUrl:
123
- '//i0.wp.com/picjumbo.com/wp-content/uploads/beautiful-fall-nature-scenery-free-image.jpeg?w=2210&quality=70',
122
+ label: [
123
+ { content: 'Turku Harbor', locale: 'en' },
124
+ { content: 'Turun Satama', locale: 'fi' },
125
+ ],
126
+ imageUrl: null,
124
127
  },
125
128
  {
126
129
  id: 5,
127
- label: {
128
- en: 'Location 5',
129
- fi: 'Location 5 fi',
130
- },
131
- description: {
132
- en: 'Location 5 description',
133
- fi: 'Location 5 description fi',
134
- },
130
+ label: [
131
+ { content: 'Oulu North', locale: 'en' },
132
+ { content: 'Oulun Pohjoinen', locale: 'fi' },
133
+ ],
134
+ description: [
135
+ {
136
+ content: 'Northern location with winter activities',
137
+ locale: 'en',
138
+ },
139
+ { content: 'Pohjoinen kohde talviaktiviteeteilla', locale: 'fi' },
140
+ ],
141
+ imageUrl: null,
135
142
  },
136
143
  ],
137
144
  },
@@ -25,6 +25,7 @@ import {
25
25
  } from './components'
26
26
 
27
27
  import './FilterBar.css'
28
+ import { Dates } from './components/dates'
28
29
 
29
30
  export default function FilterBar({
30
31
  language = LANGUAGE_FALLBACK,
@@ -47,7 +48,7 @@ export default function FilterBar({
47
48
 
48
49
  // Refs for SelectButtons
49
50
  const locationsButtonRef = useRef<HTMLButtonElement>(null)
50
- const calendarButtonRef = useRef<HTMLButtonElement>(null)
51
+ const datesButtonRef = useRef<HTMLButtonElement>(null)
51
52
  const guestsButtonRef = useRef<HTMLButtonElement>(null)
52
53
  const previouslyFocusedButtonRef = useRef<HTMLButtonElement | null>(null)
53
54
 
@@ -153,6 +154,7 @@ export default function FilterBar({
153
154
  handleSelectedFilter(FilterSections.LOCATIONS)
154
155
  }}
155
156
  active={!!selectedLocations.length}
157
+ disabled={locations?.disabled}
156
158
  ariaExpanded={selectedFilter === FilterSections.LOCATIONS}
157
159
  ariaControls="will-locations-filter"
158
160
  />
@@ -162,7 +164,7 @@ export default function FilterBar({
162
164
  )}
163
165
 
164
166
  <SelectButton
165
- ref={calendarButtonRef}
167
+ ref={datesButtonRef}
166
168
  label={t('calendar.label')}
167
169
  description={
168
170
  parsedDates
@@ -172,7 +174,7 @@ export default function FilterBar({
172
174
  : t('calendar.eventsLabelPlaceholder')
173
175
  }
174
176
  onClick={() => {
175
- previouslyFocusedButtonRef.current = calendarButtonRef.current
177
+ previouslyFocusedButtonRef.current = datesButtonRef.current
176
178
  handleSelectedFilter(FilterSections.CALENDAR)
177
179
  }}
178
180
  active={!!parsedDates}
@@ -212,18 +214,18 @@ export default function FilterBar({
212
214
  className={`will-filter-bar-container ${mode || 'light'}`}
213
215
  style={(!tabs || tabs.length < 2) && !isMobile ? { top: 66 } : {}}
214
216
  >
215
- <CloseButton handleClose={() => handleSelectedFilter(false)} />
216
-
217
217
  {selectedFilter === FilterSections.CALENDAR && (
218
218
  <div id="will-calendar-filter">
219
- <Calendar
219
+ <Dates
220
+ autoFocus
221
+ ref={filtersRef}
222
+ onClose={() => handleSelectedFilter(false)}
220
223
  calendarRange={calendarRange}
221
224
  setCalendarRange={setCalendarRange}
222
225
  disableCalendarDates={disableCalendarDates}
223
226
  selectedPath={selectedPath}
224
227
  language={language}
225
- ref={filtersRef}
226
- autoFocus
228
+ filtersRef={filtersRef}
227
229
  />
228
230
  </div>
229
231
  )}
@@ -235,22 +237,28 @@ export default function FilterBar({
235
237
  ageCategoryCounts={ageCategoryCounts}
236
238
  ref={filtersRef}
237
239
  autoFocus
240
+ onClose={() => handleSelectedFilter(false)}
238
241
  />
239
242
  </div>
240
243
  )}
241
244
  {selectedFilter === FilterSections.CATEGORIES && (
242
- <Categories categories={categories} setCategories={setCategories} />
245
+ <div id="will-categories-filter">
246
+ <Categories
247
+ categories={categories}
248
+ setCategories={setCategories}
249
+ />
250
+ </div>
243
251
  )}
244
252
  {selectedFilter === FilterSections.LOCATIONS && (
245
253
  <div id="will-locations-filter">
246
254
  <Locations
247
- locations={locations?.data}
255
+ autoFocus
248
256
  ref={filtersRef}
257
+ locations={locations?.data}
249
258
  language={language}
250
259
  selectedLocations={selectedLocations}
251
260
  setSelectedLocations={setSelectedLocations}
252
261
  multiSelect={locations?.multiSelect}
253
- autoFocus
254
262
  onClose={() => handleSelectedFilter(false)}
255
263
  />
256
264
  </div>
@@ -12,10 +12,7 @@ export type FilterBarTypes = {
12
12
  mode?: string
13
13
  tabs?: Tab[]
14
14
  outerLoading?: boolean
15
- locations?: {
16
- multiSelect: boolean
17
- data: Location[]
18
- }
15
+ locations?: Locations
19
16
  }
20
17
 
21
18
  export type AgeCategoryCount = {
@@ -59,6 +56,11 @@ type Translations = {
59
56
  [key: string]: string
60
57
  }
61
58
 
59
+ export type LocaleTranslation = Array<{
60
+ content: string
61
+ locale: string
62
+ }>
63
+
62
64
  export type Tab = {
63
65
  path: string
64
66
  default?: boolean
@@ -66,9 +68,15 @@ export type Tab = {
66
68
  label?: Translations
67
69
  }
68
70
 
71
+ export type Locations = {
72
+ multiSelect: boolean
73
+ disabled?: boolean
74
+ data: Location[]
75
+ }
76
+
69
77
  export type Location = {
70
78
  id: number
71
- label: Translations
72
- description?: Translations
73
- imageUrl?: string
79
+ label: LocaleTranslation
80
+ description?: LocaleTranslation | null
81
+ imageUrl?: string | null
74
82
  }
@@ -10,16 +10,19 @@
10
10
  text-align: initial;
11
11
  }
12
12
 
13
+ .will-filter-bar-select-button.disabled {
14
+ cursor: not-allowed;
15
+ }
16
+
13
17
  .will-filter-bar-select-button .select-button-wrapper {
14
18
  display: flex;
15
19
  align-items: center;
16
20
  flex-wrap: wrap;
17
21
  gap: 10px;
18
-
19
22
  }
20
23
 
21
24
  .will-filter-bar-select-button .select-button-wrapper > div {
22
- display: grid
25
+ display: grid;
23
26
  }
24
27
 
25
28
  .will-filter-bar-select-button .select-button-label {
@@ -38,25 +41,24 @@
38
41
  }
39
42
 
40
43
  .will-filter-bar-select-button .select-button-description span {
41
- font: inherit
44
+ font: inherit;
42
45
  }
43
46
 
44
- .will-filter-bar-select-button .select-button-label.active,
45
- .will-filter-bar-select-button .select-button-description.active {
47
+ .will-filter-bar-select-button .select-button-label.active,
48
+ .will-filter-bar-select-button .select-button-description.active {
46
49
  font-weight: 700;
47
50
  font-size: 15px;
48
51
  opacity: 1;
49
-
50
- }
52
+ }
51
53
 
52
54
  @media (max-width: 960px) {
53
55
  .will-filter-bar-select-button {
54
56
  padding: 15px 0;
55
- }
57
+ }
56
58
 
57
59
  .will-filter-bar-select-button:first-child {
58
60
  padding: 0 0 15px 0;
59
- }
61
+ }
60
62
 
61
63
  .will-filter-bar-select-button .select-button-wrapper {
62
64
  justify-content: center;
@@ -65,11 +67,9 @@
65
67
 
66
68
  .will-filter-bar-select-button .select-button-description {
67
69
  white-space: wrap;
68
- }
70
+ }
69
71
 
70
72
  .will-filter-bar-select-button .select-button-divider {
71
- display: none
73
+ display: none;
72
74
  }
73
75
  }
74
-
75
-
@@ -7,20 +7,23 @@ type Props = {
7
7
  onClick: () => void
8
8
  description: string
9
9
  active?: boolean
10
+ disabled?: boolean
10
11
  ariaExpanded?: boolean
11
12
  ariaControls?: string
12
13
  }
13
14
 
14
15
  export const SelectButton = forwardRef<HTMLButtonElement, Props>(
15
- ({ active, label, onClick, description, ariaExpanded, ariaControls }, ref) => {
16
+ ({ active, label, onClick, description, disabled, ariaExpanded, ariaControls }, ref) => {
16
17
  return (
17
18
  <button
18
19
  ref={ref}
19
- className="will-filter-bar-select-button"
20
- onClick={onClick}
20
+ className={`will-filter-bar-select-button ${disabled ? 'disabled' : ''}`}
21
+ onClick={disabled ? undefined : onClick}
22
+ disabled={disabled}
21
23
  aria-expanded={ariaExpanded}
22
24
  aria-controls={ariaControls}
23
25
  aria-haspopup="true"
26
+ aria-disabled={disabled}
24
27
  >
25
28
  <span className="select-button-wrapper">
26
29
  <div>
@@ -4,8 +4,8 @@ import './ImageCard.css'
4
4
 
5
5
  type Props = {
6
6
  title?: string
7
- description?: string
8
- imageUrl?: string
7
+ description?: string | null
8
+ imageUrl?: string | null
9
9
  isSelected: boolean
10
10
  onClick?: () => void
11
11
  }
@@ -28,6 +28,7 @@ export const Categories = ({ categories, setCategories }: Props) => {
28
28
  return (
29
29
  <div className="will-filter-bar-categories">
30
30
  <h3 className="will-categories-filter-title">{t('categories.label')}</h3>
31
+
31
32
  <div className="will-categories-filter-inner">
32
33
  {categoriesPlaceholder.map((itm, idx) => (
33
34
  <div key={idx}>
@@ -0,0 +1,29 @@
1
+ .will-filter-section-header {
2
+ display: flex;
3
+ justify-content: space-between;
4
+ align-items: center;
5
+ }
6
+
7
+ .will-filter-section-title {
8
+ font-size: 22px;
9
+ margin: 0;
10
+ }
11
+
12
+ .will-filter-section-action {
13
+ display: flex;
14
+ gap: 8px;
15
+ align-items: center;
16
+ }
17
+
18
+ .will-filter-section-action .will-filter-bar-close-button {
19
+ position: relative;
20
+ top: auto;
21
+ right: auto;
22
+ margin: 0;
23
+ }
24
+
25
+ @media (max-width: 960px) {
26
+ .will-filter-section-title {
27
+ font-size: 18px;
28
+ }
29
+ }
@@ -0,0 +1,16 @@
1
+ import React, { ReactNode } from 'react'
2
+ import './FilterSectionHeader.css'
3
+
4
+ type Props = {
5
+ title: string
6
+ action?: ReactNode
7
+ }
8
+
9
+ export const FilterSectionHeader = ({ title, action }: Props) => {
10
+ return (
11
+ <div className="will-filter-section-header">
12
+ <h3 className="will-filter-section-title">{title}</h3>
13
+ {action && <div className="will-filter-section-action">{action}</div>}
14
+ </div>
15
+ )
16
+ }
@@ -0,0 +1,57 @@
1
+ import { DateRange } from 'react-day-picker'
2
+ import { Calendar } from '../../../../core/components'
3
+ import { DisableCalendarDates } from '../../../../core/components/calendar/CalendarTypes'
4
+ import { CloseButton } from '../buttons'
5
+ import { FilterSectionHeader } from '../common/FilterSectionHeader'
6
+ import { forwardRef } from 'react'
7
+
8
+ type Props = {
9
+ ref: React.RefObject<HTMLDivElement>
10
+ onClose?: () => void
11
+ autoFocus?: boolean
12
+ calendarRange: DateRange | undefined
13
+ setCalendarRange: (range: DateRange | undefined) => void
14
+ disableCalendarDates?: DisableCalendarDates
15
+ selectedPath?: string
16
+ language?: string
17
+ filtersRef?: React.RefObject<HTMLDivElement>
18
+ }
19
+
20
+ export const Dates = forwardRef<HTMLDivElement, Props>(
21
+ (
22
+ {
23
+ onClose,
24
+ autoFocus,
25
+ calendarRange,
26
+ setCalendarRange,
27
+ disableCalendarDates,
28
+ selectedPath,
29
+ language,
30
+ filtersRef,
31
+ },
32
+ ref
33
+ ) => {
34
+ return (
35
+ <div className="will-filter-bar-dates" ref={ref}>
36
+ <FilterSectionHeader
37
+ title={''}
38
+ action={onClose && <CloseButton handleClose={onClose} />}
39
+ />
40
+
41
+ <div className="will-dates-filter-container">
42
+ <Calendar
43
+ autoFocus={autoFocus}
44
+ calendarRange={calendarRange}
45
+ setCalendarRange={setCalendarRange}
46
+ disableCalendarDates={disableCalendarDates}
47
+ selectedPath={selectedPath}
48
+ language={language}
49
+ ref={filtersRef}
50
+ />
51
+ </div>
52
+ </div>
53
+ )
54
+ }
55
+ )
56
+
57
+ Dates.displayName = 'Dates'
@@ -0,0 +1 @@
1
+ export { Dates } from './Dates'
@@ -1,20 +1,19 @@
1
- .will-guests-filter-label, .will-guests-filter-count {
1
+ .will-guests-filter-label,
2
+ .will-guests-filter-count {
2
3
  font-size: 18px;
3
- color: var(--will-text)
4
+ color: var(--will-text);
4
5
  }
5
6
 
6
7
  .will-guests-filter-inner {
7
8
  display: flex;
8
9
  align-items: center;
9
10
  justify-content: space-between;
10
- margin-top: 30px;
11
11
  }
12
12
 
13
13
  .will-guests-filter-label {
14
14
  display: block;
15
15
  font-weight: 600;
16
16
  margin-bottom: 10px;
17
-
18
17
  }
19
18
 
20
19
  .will-guests-filter-inner .will-guests-filter-counter {
@@ -29,7 +28,6 @@
29
28
  }
30
29
 
31
30
  .will-guests-filter-counter-button {
32
-
33
31
  border-radius: 50%;
34
32
  background-color: transparent;
35
33
  border: 1px solid var(--will-grey);
@@ -53,10 +51,9 @@
53
51
  }
54
52
 
55
53
  @media (max-width: 960px) {
56
-
57
54
  .will-guests-filter-inner {
58
55
  width: 100%;
59
56
  margin: 15px 0;
60
57
  justify-content: space-between;
61
58
  }
62
- }
59
+ }
@@ -2,32 +2,17 @@
2
2
  text-align: initial;
3
3
  }
4
4
 
5
- .will-guests-filter-title {
6
- font-size: 22px;
7
- margin: 10px 0;
8
- }
9
-
10
- .will-guests-filter-subtitle {
11
- font-size: 15px;
12
- font-weight: 500;
13
- color:var(--will-text)
14
- }
15
-
16
-
17
5
  .will-guests-filter-container {
18
6
  display: flex;
19
7
  flex-direction: column;
20
8
  min-width: 400px;
9
+ gap: 20px;
10
+ margin-top: 20px;
21
11
  }
22
12
 
23
-
24
13
  @media (max-width: 960px) {
25
- .will-guests-filter-title {
26
- font-size: 18px;
27
- }
28
-
29
14
  .will-guests-filter-container {
30
- margin-top: 15px;
31
- min-width: 100%;
15
+ margin-top: 15px;
16
+ min-width: 100%;
32
17
  }
33
- }
18
+ }
@@ -4,6 +4,8 @@ import { useTranslation } from 'react-i18next'
4
4
  import { useAutoFocus } from '../../../../core/hooks'
5
5
  import { GuestCount } from './GuestCount/GuestCount'
6
6
  import { AgeCategoryCount, AgeCategoryType } from '../../FilterBarTypes'
7
+ import { FilterSectionHeader } from '../common/FilterSectionHeader'
8
+ import { CloseButton } from '../../../../core/components'
7
9
 
8
10
  import './Guests.css'
9
11
 
@@ -12,16 +14,20 @@ type Props = {
12
14
  updateGuestsCount: (arg1: string, arg2: number) => void
13
15
  ageCategoryCounts: AgeCategoryCount
14
16
  autoFocus?: boolean
17
+ onClose?: () => void
15
18
  }
16
19
 
17
20
  export const Guests = forwardRef<HTMLDivElement, Props>(
18
- ({ ageCategories, updateGuestsCount, ageCategoryCounts, autoFocus }: Props, ref) => {
21
+ ({ ageCategories, updateGuestsCount, ageCategoryCounts, autoFocus, onClose }: Props, ref) => {
19
22
  const { t } = useTranslation('filterBar')
20
23
  const containerRef = useAutoFocus<HTMLDivElement>(autoFocus)
21
24
 
22
25
  return (
23
26
  <div className="will-filter-bar-guests" ref={ref}>
24
- <h3 className="will-guests-filter-title">{t('guests.title')}</h3>
27
+ <FilterSectionHeader
28
+ title={t('guests.title')}
29
+ action={onClose && <CloseButton handleClose={onClose} />}
30
+ />
25
31
 
26
32
  <div className="will-guests-filter-container" ref={containerRef}>
27
33
  {ageCategories?.map((category) => (
@@ -2,29 +2,15 @@
2
2
  text-align: initial;
3
3
  }
4
4
 
5
- .will-locations-filter-title {
6
- font-size: 22px;
7
- margin: 10px 0;
8
- }
9
-
10
- .will-locations-filter-subtitle {
11
- font-size: 15px;
12
- font-weight: 500;
13
- color: var(--will-text);
14
- }
15
-
16
5
  .will-locations-filter-container {
17
6
  display: flex;
18
7
  gap: 10px;
19
8
  flex-direction: column;
20
9
  min-width: 400px;
10
+ margin-top: 20px;
21
11
  }
22
12
 
23
13
  @media (max-width: 960px) {
24
- .will-locations-filter-title {
25
- font-size: 18px;
26
- }
27
-
28
14
  .will-locations-filter-container {
29
15
  margin-top: 15px;
30
16
  min-width: 100%;