@phillips/seldon 1.168.0 → 1.169.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 (32) hide show
  1. package/dist/components/Drawer/Drawer.d.ts +9 -1
  2. package/dist/components/Drawer/Drawer.js +67 -35
  3. package/dist/components/Drawer/Drawer.stories.d.ts +1 -1
  4. package/dist/index.d.ts +1 -0
  5. package/dist/index.js +74 -72
  6. package/dist/patterns/FilterMenu/FilterMenu.d.ts +1 -1
  7. package/dist/patterns/FilterMenu/FilterMenu.js +10 -10
  8. package/dist/patterns/FiltersInline/FilterButton.d.ts +28 -0
  9. package/dist/patterns/FiltersInline/FilterButton.js +35 -0
  10. package/dist/patterns/FiltersInline/FilterDropdownMenuDesktop.d.ts +3 -0
  11. package/dist/patterns/FiltersInline/FilterDropdownMenuDesktop.js +92 -0
  12. package/dist/patterns/FiltersInline/FilterDropdownMenuMobile.d.ts +3 -0
  13. package/dist/patterns/FiltersInline/FilterDropdownMenuMobile.js +99 -0
  14. package/dist/patterns/FiltersInline/FiltersInline.d.ts +12 -0
  15. package/dist/patterns/FiltersInline/FiltersInline.js +65 -0
  16. package/dist/patterns/FiltersInline/FiltersInline.stories.d.ts +17 -0
  17. package/dist/patterns/FiltersInline/FiltersInline.test.d.ts +1 -0
  18. package/dist/patterns/FiltersInline/MainFilterDropdown.d.ts +3 -0
  19. package/dist/patterns/FiltersInline/MainFilterDropdown.js +102 -0
  20. package/dist/patterns/FiltersInline/SubFilterDropdown.d.ts +3 -0
  21. package/dist/patterns/FiltersInline/SubFilterDropdown.js +135 -0
  22. package/dist/patterns/FiltersInline/index.d.ts +1 -0
  23. package/dist/patterns/FiltersInline/types.d.ts +191 -0
  24. package/dist/patterns/FiltersInline/types.js +4 -0
  25. package/dist/patterns/FiltersInline/utils.d.ts +61 -0
  26. package/dist/patterns/FiltersInline/utils.js +33 -0
  27. package/dist/scss/componentStyles.scss +3 -0
  28. package/dist/scss/components/Drawer/_drawer.scss +113 -2
  29. package/dist/scss/patterns/FiltersInline/_filterButton.scss +26 -0
  30. package/dist/scss/patterns/FiltersInline/_filterDropdownMenu.scss +126 -0
  31. package/dist/scss/patterns/FiltersInline/_filtersInline.scss +15 -0
  32. package/package.json +1 -1
@@ -12,6 +12,14 @@ export interface DrawerProps extends React.HTMLAttributes<HTMLDivElement> {
12
12
  * The content of the drawer
13
13
  */
14
14
  children?: React.ReactNode;
15
+ /**
16
+ * Which side the drawer opens from: left, right, or bottom
17
+ */
18
+ drawerOpenSide?: 'left' | 'right' | 'bottom';
19
+ /**
20
+ * Optional label for the bottom content area
21
+ */
22
+ bottomContentLabel?: string;
15
23
  }
16
24
  /**
17
25
  * ## Overview
@@ -19,5 +27,5 @@ export interface DrawerProps extends React.HTMLAttributes<HTMLDivElement> {
19
27
  * A component for displaying a drawer.
20
28
  *
21
29
  */
22
- declare const Drawer: ({ className, isOpen, onClose, children, ...props }: DrawerProps) => import("react/jsx-runtime").JSX.Element;
30
+ declare const Drawer: ({ className, isOpen, onClose, children, drawerOpenSide, bottomContentLabel, ...props }: DrawerProps) => import("react/jsx-runtime").JSX.Element;
23
31
  export default Drawer;
@@ -1,48 +1,80 @@
1
- import { jsx as r, jsxs as s } from "react/jsx-runtime";
2
- import { getCommonProps as d, noOp as p } from "../../utils/index.js";
1
+ import { jsx as o, jsxs as e } from "react/jsx-runtime";
2
+ import { Root as u, Portal as N, Overlay as v, Content as $, Title as x, Description as y, Close as n } from "../../node_modules/@radix-ui/react-dialog/dist/index.js";
3
3
  import a from "../../node_modules/classnames/index.js";
4
- import { Root as f, Portal as C, Overlay as h, Content as u, Title as N, Description as v, Close as w } from "../../node_modules/@radix-ui/react-dialog/dist/index.js";
5
- import y from "../IconButton/IconButton.js";
6
- import { ButtonVariants as _ } from "../Button/types.js";
7
- import x from "../Icon/Icon.js";
8
- const B = ({ className: i, isOpen: l = !1, onClose: o = p, children: n, ...t }) => {
9
- const { className: e, ...m } = d(t, "Drawer");
10
- return /* @__PURE__ */ r(
11
- f,
4
+ import { getCommonProps as g, noOp as w } from "../../utils/index.js";
5
+ import { ButtonVariants as c } from "../Button/types.js";
6
+ import m from "../Icon/Icon.js";
7
+ import d from "../IconButton/IconButton.js";
8
+ import k from "../Text/Text.js";
9
+ import { TextVariants as B } from "../Text/types.js";
10
+ const q = ({
11
+ className: h,
12
+ isOpen: p = !1,
13
+ onClose: r = w,
14
+ children: C,
15
+ drawerOpenSide: i = "right",
16
+ bottomContentLabel: f,
17
+ ...l
18
+ }) => {
19
+ const { className: t, ..._ } = g(l, "Drawer"), s = i === "bottom";
20
+ return /* @__PURE__ */ o(
21
+ u,
12
22
  {
13
- open: l,
14
- onOpenChange: (c) => {
15
- c || o();
23
+ open: p,
24
+ onOpenChange: (b) => {
25
+ b || r();
16
26
  },
17
- children: /* @__PURE__ */ s(C, { children: [
18
- /* @__PURE__ */ r(
19
- h,
27
+ children: /* @__PURE__ */ e(N, { children: [
28
+ /* @__PURE__ */ o(
29
+ v,
20
30
  {
21
- onClick: o,
22
- className: a(`${e}__overlay`),
31
+ onClick: r,
32
+ className: a(`${t}__overlay`),
23
33
  "data-testid": "drawer-overlay"
24
34
  }
25
35
  ),
26
- /* @__PURE__ */ s(u, { className: a(e, i), id: t.id, ...m, children: [
27
- /* @__PURE__ */ r(N, {}),
28
- /* @__PURE__ */ r(v, {}),
29
- /* @__PURE__ */ r(w, { asChild: !0, children: /* @__PURE__ */ r(
30
- y,
31
- {
32
- onClick: o,
33
- className: a(`${e}__close`),
34
- "aria-label": "Close",
35
- "data-testid": "drawer-close",
36
- variant: _.tertiary,
37
- children: /* @__PURE__ */ r(x, { icon: "CloseX", color: "currentColor" })
38
- }
39
- ) }),
40
- n
41
- ] })
36
+ /* @__PURE__ */ e(
37
+ $,
38
+ {
39
+ className: a(t, h, { [`${t}--bottom`]: s }),
40
+ "data-side": i,
41
+ id: l.id,
42
+ ..._,
43
+ children: [
44
+ /* @__PURE__ */ o(x, {}),
45
+ /* @__PURE__ */ o(y, {}),
46
+ s ? /* @__PURE__ */ e("div", { className: `${t}__bottom-content`, children: [
47
+ /* @__PURE__ */ o(n, { asChild: !0, children: /* @__PURE__ */ o(
48
+ d,
49
+ {
50
+ onClick: r,
51
+ className: a(`${t}__close--bottom`),
52
+ "aria-label": "Close",
53
+ "data-testid": "drawer-close",
54
+ variant: c.tertiary,
55
+ children: /* @__PURE__ */ o(m, { icon: "CloseX", color: "currentColor" })
56
+ }
57
+ ) }),
58
+ /* @__PURE__ */ o(k, { variant: B.string1, className: `${t}__bottom-content--label`, children: f })
59
+ ] }) : /* @__PURE__ */ o(n, { asChild: !0, children: /* @__PURE__ */ o(
60
+ d,
61
+ {
62
+ onClick: r,
63
+ className: a(`${t}__close`),
64
+ "aria-label": "Close",
65
+ "data-testid": "drawer-close",
66
+ variant: c.tertiary,
67
+ children: /* @__PURE__ */ o(m, { icon: "CloseX", color: "currentColor" })
68
+ }
69
+ ) }),
70
+ C
71
+ ]
72
+ }
73
+ )
42
74
  ] })
43
75
  }
44
76
  );
45
77
  };
46
78
  export {
47
- B as default
79
+ q as default
48
80
  };
@@ -1,7 +1,7 @@
1
1
  import { DrawerProps } from './Drawer';
2
2
  declare const meta: {
3
3
  title: string;
4
- component: ({ className, isOpen, onClose, children, ...props }: DrawerProps) => import("react/jsx-runtime").JSX.Element;
4
+ component: ({ className, isOpen, onClose, children, drawerOpenSide, bottomContentLabel, ...props }: DrawerProps) => import("react/jsx-runtime").JSX.Element;
5
5
  };
6
6
  export default meta;
7
7
  export declare const Playground: {
package/dist/index.d.ts CHANGED
@@ -66,6 +66,7 @@ export * from './components/PinchZoom';
66
66
  export * from './components/SeldonImage';
67
67
  export * from './components/Tabs';
68
68
  export * from './patterns/DetailList';
69
+ export * from './patterns/FiltersInline';
69
70
  export * from './patterns/SaleCard';
70
71
  export * from './patterns/SaleHeaderBanner';
71
72
  export * from './patterns/ViewingDetails';
package/dist/index.js CHANGED
@@ -2,11 +2,11 @@ import { PaddingTokens as a, SpacingTokens as f, defaultYear as s, emailValidati
2
2
  import { default as C } from "./pages/Page.js";
3
3
  import { SSRMediaQuery as P, ssrMediaQueryStyle as A } from "./providers/SeldonProvider/utils.js";
4
4
  import { usePendingState as L } from "./utils/hooks.js";
5
- import { AuctionStatus as b, LotStatus as I, SupportedLanguages as h } from "./types/commonTypes.js";
5
+ import { AuctionStatus as V, LotStatus as b, SupportedLanguages as h } from "./types/commonTypes.js";
6
6
  import { default as w } from "./components/Button/Button.js";
7
7
  import { ButtonVariants as y } from "./components/Button/types.js";
8
- import { default as H } from "./components/IconButton/IconButton.js";
9
- import { default as F } from "./components/Accordion/Accordion.js";
8
+ import { default as F } from "./components/IconButton/IconButton.js";
9
+ import { default as M } from "./components/Accordion/Accordion.js";
10
10
  import { default as E } from "./components/Accordion/AccordionItem.js";
11
11
  import { AccordionItemVariant as U, AccordionVariants as O } from "./components/Accordion/types.js";
12
12
  import { default as Q } from "./components/Breadcrumb/Breadcrumb.js";
@@ -29,12 +29,12 @@ import { default as ce } from "./components/Dropdown/Dropdown.js";
29
29
  import { default as Ce } from "./components/ErrorBoundary/ErrorBoundary.js";
30
30
  import { Grid as Pe } from "./components/Grid/Grid.js";
31
31
  import { default as Be } from "./components/GridItem/GridItem.js";
32
- import { GridItemAlign as Ve } from "./components/GridItem/types.js";
33
- import { default as Ie } from "./components/Input/Input.js";
32
+ import { GridItemAlign as Ie } from "./components/GridItem/types.js";
33
+ import { default as be } from "./components/Input/Input.js";
34
34
  import { default as ke } from "./components/Link/Link.js";
35
35
  import { LinkVariants as ve } from "./components/Link/types.js";
36
36
  import { default as De } from "./components/LinkBlock/LinkBlock.js";
37
- import { default as Me } from "./components/LinkList/LinkList.js";
37
+ import { default as He } from "./components/LinkList/LinkList.js";
38
38
  import { default as Ne } from "./components/Modal/Modal.js";
39
39
  import { default as Ge } from "./components/Navigation/Navigation.js";
40
40
  import { default as Oe } from "./components/Navigation/NavigationItem/NavigationItem.js";
@@ -55,12 +55,12 @@ import { TextAlignments as gt, TextVariants as ct } from "./components/Text/type
55
55
  import { default as Ct } from "./components/Text/Text.js";
56
56
  import { TextSymbolVariants as Pt } from "./components/TextSymbol/types.js";
57
57
  import { default as Bt } from "./components/TextSymbol/TextSymbol.js";
58
- import { default as Vt } from "./components/Video/Video.js";
59
- import { default as It } from "./patterns/DetailList/DetailList.js";
58
+ import { default as It } from "./components/Video/Video.js";
59
+ import { default as bt } from "./patterns/DetailList/DetailList.js";
60
60
  import { DetailListAlignment as kt } from "./patterns/DetailList/types.js";
61
61
  import { default as vt } from "./patterns/FavoritesCollectionTile/FavoritesCollectionTile.js";
62
62
  import { default as Dt } from "./patterns/HeroBanner/HeroBanner.js";
63
- import { default as Mt } from "./patterns/LanguageSelector/LanguageSelector.js";
63
+ import { default as Ht } from "./patterns/LanguageSelector/LanguageSelector.js";
64
64
  import { default as Nt } from "./patterns/SaleHeaderBanner/SaleHeaderBanner.js";
65
65
  import { default as Gt } from "./patterns/SaleHeaderBanner/SaleHeaderBrowseAuctions.js";
66
66
  import { default as Ot } from "./patterns/Social/Social.js";
@@ -77,46 +77,47 @@ import { default as so } from "./components/ExitGateCard/ExitGateCard.js";
77
77
  import { default as mo } from "./components/Loader/Loader.js";
78
78
  import { default as uo } from "./components/PageContentWrapper/PageContentWrapper.js";
79
79
  import { default as io } from "./components/PhoneNumberPicker/PhoneNumberPicker.js";
80
- import { default as go } from "./patterns/SaleCard/SaleCard.js";
81
- import { SaleCardActions as So } from "./patterns/SaleCard/SaleCardActions.js";
82
- import { SaleCardVariants as To } from "./patterns/SaleCard/types.js";
83
- import { default as Ao } from "./patterns/ViewingDetails/ViewingDetails.js";
84
- import { default as Lo } from "./site-furniture/Footer/Footer.js";
85
- import { default as bo } from "./site-furniture/Header/Header.js";
86
- import { default as ho } from "./components/AddToCalendar/AddToCalendar.js";
87
- import { default as wo } from "./components/Article/Article.js";
88
- import { default as yo } from "./components/Countdown/Countdown.js";
89
- import { CountdownVariants as Ho } from "./components/Countdown/types.js";
90
- import { default as Fo } from "./components/Divider/Divider.js";
91
- import { default as Eo } from "./components/FavoritingTileButton/FavoritingTileButton.js";
92
- import { default as Uo } from "./components/Filter/Filter.js";
93
- import { default as Ro } from "./components/Filter/FilterInput.js";
94
- import { default as jo } from "./components/Filter/FilterHeader.js";
95
- import { default as Wo } from "./components/Pictogram/Pictogram.js";
96
- import { default as Zo } from "./components/TextArea/TextArea.js";
97
- import { default as Jo } from "./components/Toast/Toast.js";
98
- import { ToastProvider as Xo } from "./components/Toast/ToastContextProvider.js";
99
- import { useToast as $o } from "./components/Toast/useToast.js";
100
- import { default as tr } from "./patterns/AccountPageHeader/AccountPageHeader.js";
101
- import { default as rr } from "./patterns/BidSnapshot/BidSnapshot.js";
102
- import { default as fr } from "./patterns/BidSnapshot/BidMessage.js";
103
- import { BidMessageVariants as lr, BidStatusEnum as dr } from "./patterns/BidSnapshot/types.js";
104
- import { default as pr } from "./patterns/FilterMenu/FilterMenu.js";
105
- import { default as xr } from "./patterns/ObjectTile/ObjectTile.js";
80
+ import { default as go } from "./patterns/FiltersInline/FiltersInline.js";
81
+ import { default as So } from "./patterns/SaleCard/SaleCard.js";
82
+ import { SaleCardActions as To } from "./patterns/SaleCard/SaleCardActions.js";
83
+ import { SaleCardVariants as Ao } from "./patterns/SaleCard/types.js";
84
+ import { default as Lo } from "./patterns/ViewingDetails/ViewingDetails.js";
85
+ import { default as Vo } from "./site-furniture/Footer/Footer.js";
86
+ import { default as ho } from "./site-furniture/Header/Header.js";
87
+ import { default as wo } from "./components/AddToCalendar/AddToCalendar.js";
88
+ import { default as yo } from "./components/Article/Article.js";
89
+ import { default as Fo } from "./components/Countdown/Countdown.js";
90
+ import { CountdownVariants as Mo } from "./components/Countdown/types.js";
91
+ import { default as Eo } from "./components/Divider/Divider.js";
92
+ import { default as Uo } from "./components/FavoritingTileButton/FavoritingTileButton.js";
93
+ import { default as Ro } from "./components/Filter/Filter.js";
94
+ import { default as jo } from "./components/Filter/FilterInput.js";
95
+ import { default as Wo } from "./components/Filter/FilterHeader.js";
96
+ import { default as Zo } from "./components/Pictogram/Pictogram.js";
97
+ import { default as Jo } from "./components/TextArea/TextArea.js";
98
+ import { default as Xo } from "./components/Toast/Toast.js";
99
+ import { ToastProvider as $o } from "./components/Toast/ToastContextProvider.js";
100
+ import { useToast as tr } from "./components/Toast/useToast.js";
101
+ import { default as rr } from "./patterns/AccountPageHeader/AccountPageHeader.js";
102
+ import { default as fr } from "./patterns/BidSnapshot/BidSnapshot.js";
103
+ import { default as lr } from "./patterns/BidSnapshot/BidMessage.js";
104
+ import { BidMessageVariants as mr, BidStatusEnum as pr } from "./patterns/BidSnapshot/types.js";
105
+ import { default as xr } from "./patterns/FilterMenu/FilterMenu.js";
106
+ import { default as nr } from "./patterns/ObjectTile/ObjectTile.js";
106
107
  export {
107
- F as Accordion,
108
+ M as Accordion,
108
109
  E as AccordionItem,
109
110
  U as AccordionItemVariant,
110
111
  O as AccordionVariants,
111
- tr as AccountPageHeader,
112
- ho as AddToCalendar,
113
- wo as Article,
114
- b as AuctionStatus,
112
+ rr as AccountPageHeader,
113
+ wo as AddToCalendar,
114
+ yo as Article,
115
+ V as AuctionStatus,
115
116
  Yt as AuthState,
116
- fr as BidMessage,
117
- lr as BidMessageVariants,
118
- rr as BidSnapshot,
119
- dr as BidStatusEnum,
117
+ lr as BidMessage,
118
+ mr as BidMessageVariants,
119
+ fr as BidSnapshot,
120
+ pr as BidStatusEnum,
120
121
  Q as Breadcrumb,
121
122
  w as Button,
122
123
  y as ButtonVariants,
@@ -132,56 +133,57 @@ export {
132
133
  ao as ComposedModal,
133
134
  de as ContentPeek,
134
135
  pe as ContentPeekHeightUnits,
135
- yo as Countdown,
136
- Ho as CountdownVariants,
136
+ Fo as Countdown,
137
+ Mo as CountdownVariants,
137
138
  xe as Detail,
138
- It as DetailList,
139
+ bt as DetailList,
139
140
  kt as DetailListAlignment,
140
- Fo as Divider,
141
+ Eo as Divider,
141
142
  ne as Drawer,
142
143
  ce as Dropdown,
143
144
  Ce as ErrorBoundary,
144
145
  so as ExitGateCard,
145
146
  vt as FavoritesCollectionTile,
146
- Eo as FavoritingTileButton,
147
- Uo as Filter,
148
- jo as FilterHeader,
149
- Ro as FilterInput,
150
- pr as FilterMenu,
151
- Lo as Footer,
147
+ Uo as FavoritingTileButton,
148
+ Ro as Filter,
149
+ Wo as FilterHeader,
150
+ jo as FilterInput,
151
+ xr as FilterMenu,
152
+ go as FiltersInline,
153
+ Vo as Footer,
152
154
  Pe as Grid,
153
155
  Be as GridItem,
154
- Ve as GridItemAlign,
155
- bo as Header,
156
+ Ie as GridItemAlign,
157
+ ho as Header,
156
158
  Dt as HeroBanner,
157
159
  z as Icon,
158
- H as IconButton,
159
- Ie as Input,
160
- Mt as LanguageSelector,
160
+ F as IconButton,
161
+ be as Input,
162
+ Ht as LanguageSelector,
161
163
  ke as Link,
162
164
  De as LinkBlock,
163
- Me as LinkList,
165
+ He as LinkList,
164
166
  ve as LinkVariants,
165
167
  mo as Loader,
166
- I as LotStatus,
168
+ b as LotStatus,
167
169
  Ne as Modal,
168
170
  Ge as Navigation,
169
171
  Oe as NavigationItem,
170
172
  Qe as NavigationItemTrigger,
171
173
  ze as NavigationList,
172
- xr as ObjectTile,
174
+ nr as ObjectTile,
173
175
  a as PaddingTokens,
174
176
  C as Page,
175
177
  uo as PageContentWrapper,
176
178
  Ye as Pagination,
177
179
  io as PhoneNumberPicker,
178
- Wo as Pictogram,
180
+ Zo as Pictogram,
179
181
  qe as PinchZoom,
180
182
  Ke as Row,
181
183
  P as SSRMediaQuery,
182
- go as SaleCard,
183
- So as SaleCardActions,
184
- To as SaleCardVariants,
184
+ So as SaleCard,
185
+ To as SaleCardActions,
186
+ Ao as SaleCardVariants,
185
187
  Nt as SaleHeaderBanner,
186
188
  Gt as SaleHeaderBrowseAuctions,
187
189
  _e as Search,
@@ -202,15 +204,15 @@ export {
202
204
  it as TagsList,
203
205
  Ct as Text,
204
206
  gt as TextAlignments,
205
- Zo as TextArea,
207
+ Jo as TextArea,
206
208
  Pt as TextSymbolVariants,
207
209
  Bt as TextSymbols,
208
210
  ct as TextVariants,
209
- Jo as Toast,
210
- Xo as ToastProvider,
211
+ Xo as Toast,
212
+ $o as ToastProvider,
211
213
  qt as UserManagement,
212
- Vt as Video,
213
- Ao as ViewingDetails,
214
+ It as Video,
215
+ Lo as ViewingDetails,
214
216
  _t as ViewingsList,
215
217
  s as defaultYear,
216
218
  l as emailValidation,
@@ -225,5 +227,5 @@ export {
225
227
  A as ssrMediaQueryStyle,
226
228
  c as useNormalizedInputProps,
227
229
  L as usePendingState,
228
- $o as useToast
230
+ tr as useToast
229
231
  };
@@ -16,7 +16,7 @@ export interface FilterMenuProps<ElementType = HTMLFormElement> extends React.HT
16
16
  *
17
17
  * [Figma Link](https://www.figma.com/design/OvBXAq48blO1r4qYbeBPjW/RW---Sale-Page-(PLP)?node-id=892-71019&node-type=frame&t=AsBDn4UgUEjNUnf7-0)
18
18
  *
19
- * [Storybook Link](https://phillips-seldon.netlify.app/?path=/docs/patterns-filtercontrol--overview)
19
+ * [Storybook Link](https://phillips-seldon.netlify.app/?path=/docs/patterns-filtermenu--overview)
20
20
  */
21
21
  declare const FilterMenu: React.ForwardRefExoticComponent<FilterMenuProps<HTMLFormElement> & React.RefAttributes<HTMLFormElement>>;
22
22
  export default FilterMenu;
@@ -1,23 +1,23 @@
1
1
  import { jsx as u } from "react/jsx-runtime";
2
- import d, { forwardRef as F, useState as N, Children as w, cloneElement as C } from "react";
3
- import { getCommonProps as g } from "../../utils/index.js";
4
- import t from "../../node_modules/classnames/index.js";
5
- import A from "../../components/Filter/Filter.js";
2
+ import d, { forwardRef as F, useState as N, Children as w, cloneElement as g } from "react";
3
+ import { getCommonProps as A } from "../../utils/index.js";
4
+ import a from "../../node_modules/classnames/index.js";
5
+ import C from "../../components/Filter/Filter.js";
6
6
  const V = F(
7
- ({ className: a, children: l, element: i = "form", ...r }, m) => {
8
- const { className: n, ...p } = g(r, "FilterMenu"), [o, f] = N(null), s = o?.length, c = w.map(
7
+ ({ className: t, children: l, element: i = "form", ...r }, m) => {
8
+ const { className: n, ...p } = A(r, "FilterMenu"), [o, f] = N(null), s = o?.length, c = w.map(
9
9
  l,
10
- (e) => d.isValidElement(e) && e.type === A ? C(e, {
10
+ (e) => d.isValidElement(e) && e.type === C ? g(e, {
11
11
  setViewAllFilter: f,
12
12
  hidden: s ? o !== e.props.name : !1,
13
13
  isViewingAll: s,
14
- className: s && t(e.props.className, "is-opening")
14
+ className: s && a(e.props.className, "is-opening")
15
15
  }) : e
16
16
  );
17
- return /* @__PURE__ */ u(i, { ...p, ...r, className: t(n, a), ref: m, children: c });
17
+ return /* @__PURE__ */ u(i, { ...p, ...r, className: a(n, t), ref: m, children: c });
18
18
  }
19
19
  );
20
- V.displayName = "FilterControl";
20
+ V.displayName = "FilterMenu";
21
21
  export {
22
22
  V as default
23
23
  };
@@ -0,0 +1,28 @@
1
+ import { default as React } from 'react';
2
+ import { FilterButtonIconType } from './types';
3
+ /**
4
+ * Props for the FilterButton component.
5
+ */
6
+ export type FilterButton = {
7
+ /** Optional CSS class for the filter button */
8
+ className?: string;
9
+ /** The text label displayed on the button */
10
+ label: string;
11
+ /** Click handler for the button */
12
+ onClick: () => void;
13
+ /** Whether the button is currently selected/active */
14
+ isSelected: boolean;
15
+ /** Icon type to display (defaults to ChevronDown) */
16
+ type: FilterButtonIconType;
17
+ /** Count badge to show next to the button */
18
+ count: number;
19
+ /** Optional unique identifier for the button (used for test IDs) */
20
+ id?: string;
21
+ /** Optional aria-label for accessibility */
22
+ ariaLabel?: string;
23
+ /** If true, applies mobile-specific styling */
24
+ isMobile?: boolean;
25
+ /** Total number of filters for this button */
26
+ totalCount: number;
27
+ };
28
+ export declare const FilterButton: React.ForwardRefExoticComponent<FilterButton & React.RefAttributes<HTMLButtonElement>>;
@@ -0,0 +1,35 @@
1
+ import { jsxs as p, jsx as e } from "react/jsx-runtime";
2
+ import u from "../../node_modules/classnames/index.js";
3
+ import b from "react";
4
+ import h from "../../components/Button/Button.js";
5
+ import { ButtonVariants as $ } from "../../components/Button/types.js";
6
+ import x from "../../components/Icon/Icon.js";
7
+ import { TextVariants as v } from "../../components/Text/types.js";
8
+ import w from "../../components/Text/Text.js";
9
+ import { px as t } from "../../utils/index.js";
10
+ import { getIcon as B } from "./utils.js";
11
+ const F = b.forwardRef(
12
+ ({ className: m, label: n, onClick: l, isSelected: a, type: r = "ChevronDown", count: s, id: o, ariaLabel: f, isMobile: c, totalCount: i }, d) => /* @__PURE__ */ p(
13
+ h,
14
+ {
15
+ ref: d,
16
+ className: u(`${t}-filter-button`, m, {
17
+ [`${t}-filter-button--selected`]: a || s > 0 || r === "Filter" && i > 0
18
+ }),
19
+ "aria-label": f,
20
+ variant: $.secondary,
21
+ "data-testid": `${o}-filter-button`,
22
+ "data-viewport": c ? "mobile" : "desktop",
23
+ onClick: l,
24
+ children: [
25
+ /* @__PURE__ */ e(w, { variant: v.string2, "data-testid": `${o}-filter-label`, children: n }),
26
+ /* @__PURE__ */ e(x, { icon: B(r, a), height: 8, width: 8, className: `${t}__icon` }),
27
+ i > 0 && r === "Filter" && /* @__PURE__ */ e("div", { className: `${t}-filter-button--count`, "data-testid": `${o}-filter-count`, children: i })
28
+ ]
29
+ }
30
+ )
31
+ );
32
+ F.displayName = "FilterButton";
33
+ export {
34
+ F as FilterButton
35
+ };
@@ -0,0 +1,3 @@
1
+ import { default as React } from 'react';
2
+ import { FilterDropdownMenuProps } from './types';
3
+ export declare const FilterDropdownMenuDesktop: React.ForwardRefExoticComponent<FilterDropdownMenuProps & React.RefAttributes<HTMLDivElement>>;
@@ -0,0 +1,92 @@
1
+ import { jsxs as p, jsx as r, Fragment as C } from "react/jsx-runtime";
2
+ import e from "../../node_modules/classnames/index.js";
3
+ import F from "react";
4
+ import n from "../../components/Button/Button.js";
5
+ import { ButtonVariants as s } from "../../components/Button/types.js";
6
+ import v from "../../components/Filter/FilterHeader.js";
7
+ import D from "../../components/Filter/FilterInput.js";
8
+ import m from "../../components/Text/Text.js";
9
+ import { TextVariants as c } from "../../components/Text/types.js";
10
+ import { px as B } from "../../utils/index.js";
11
+ import { getFilterButtonLabel as S, getFilterDimensions as j, handleInputChange as A } from "./utils.js";
12
+ const I = F.forwardRef(
13
+ ({
14
+ className: f,
15
+ buttonType: i,
16
+ filters: _,
17
+ filterIndex: h,
18
+ onSelectFilter: b,
19
+ onClickClear: u,
20
+ onApplyFilter: d,
21
+ resultsCount: $,
22
+ ariaLabels: N,
23
+ filterButtonLabel: x,
24
+ filterButtonLabelTranslated: g,
25
+ dropdownMenuTranslation: o
26
+ }, k) => {
27
+ const l = i === "Sort", t = `${B}-filter-dropdown-menu`;
28
+ return /* @__PURE__ */ p(
29
+ "div",
30
+ {
31
+ className: e(t, f),
32
+ ref: k,
33
+ "data-testid": "filter-dropdown-desktop",
34
+ "aria-label": N || `${i} dropdown desktop`,
35
+ children: [
36
+ /* @__PURE__ */ r(
37
+ v,
38
+ {
39
+ heading: S(x, null, g || null),
40
+ className: e(`${t}__header`)
41
+ }
42
+ ),
43
+ /* @__PURE__ */ r("div", { className: e(`${t}__filters`), children: j(_, h).map((a) => /* @__PURE__ */ r(
44
+ D,
45
+ {
46
+ id: a.label,
47
+ labelText: a.label,
48
+ name: a.label,
49
+ type: l ? "radio" : "checkbox",
50
+ checked: a.active,
51
+ disabled: a?.disabled,
52
+ onChange: (w) => A(w, i ?? "", b)
53
+ },
54
+ a.label
55
+ )) }),
56
+ /* @__PURE__ */ r("div", { className: e(l ? `${t}__button-wrap` : `${t}__buttons-wrap`), children: l ? /* @__PURE__ */ r(
57
+ n,
58
+ {
59
+ className: e(`${t}__button`),
60
+ variant: s.primary,
61
+ onClick: () => d?.(!1),
62
+ children: /* @__PURE__ */ r(m, { variant: c.string2, className: `${t}__button-text`, children: o?.confirm || "Confirm" })
63
+ }
64
+ ) : /* @__PURE__ */ p(C, { children: [
65
+ /* @__PURE__ */ r(
66
+ n,
67
+ {
68
+ className: e(`${t}__buttons`),
69
+ variant: s.secondary,
70
+ onClick: () => u?.(i ?? ""),
71
+ children: /* @__PURE__ */ r(m, { variant: c.string2, children: o?.clearAll || "Clear all" })
72
+ }
73
+ ),
74
+ /* @__PURE__ */ r(
75
+ n,
76
+ {
77
+ className: e(`${t}__buttons`),
78
+ variant: s.primary,
79
+ onClick: () => d?.(!1),
80
+ children: /* @__PURE__ */ r(m, { variant: c.string2, className: `${t}__button-text`, children: o?.showAuctions || `Show ${$} Auctions` })
81
+ }
82
+ )
83
+ ] }) })
84
+ ]
85
+ }
86
+ );
87
+ }
88
+ );
89
+ I.displayName = "FilterDropdownMenuDesktop";
90
+ export {
91
+ I as FilterDropdownMenuDesktop
92
+ };
@@ -0,0 +1,3 @@
1
+ import { default as React } from 'react';
2
+ import { FilterDropdownMenuProps } from './types';
3
+ export declare const FilterDropdownMenuMobile: React.ForwardRefExoticComponent<FilterDropdownMenuProps & React.RefAttributes<HTMLDivElement>>;