stone-kit 0.0.1066 → 0.0.1069

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 (56) hide show
  1. package/README.md +88 -88
  2. package/dist/components/Button/index.d.ts +1 -1
  3. package/dist/components/Button/ui/Button.d.ts +2 -2
  4. package/dist/components/Button/ui/Button.types.d.ts +1 -1
  5. package/dist/components/CheckBoxNew/CheckBoxNew.js +5 -5
  6. package/dist/components/CommercialLotCard/CommercialLotCard.js +81 -9
  7. package/dist/components/CommercialLotCard/components/PaymentLink/PaymentLink.js +4 -4
  8. package/dist/components/CommercialLotCard/components/Snippets/Snippets.js +98 -27
  9. package/dist/components/CommercialLotCard/components/Tags/Tags.js +1 -1
  10. package/dist/components/FilterWithSave/hooks/useFilterWithSave.js +54 -26
  11. package/dist/components/FilterWithSave/ui/FilterWithSave.js +323 -7
  12. package/dist/components/FormModal/ui/ModalForm.js +1516 -29
  13. package/dist/components/Logo/ui/Logo.js +6 -6
  14. package/dist/components/LotCard/hooks/useLotCard.js +6 -24
  15. package/dist/components/LotCard/index.js +2 -2
  16. package/dist/components/LotCard/ui/LotCard.js +222 -11
  17. package/dist/components/ModalSuccess/ModalSuccess.js +1 -1
  18. package/dist/components/RoundButton/ui/RoundButton.js +1 -1
  19. package/dist/components/Select/ui/Category.js +2 -2
  20. package/dist/components/Select/ui/Option.js +2 -2
  21. package/dist/components/Select/ui/Select.js +2 -2
  22. package/dist/components/SliderNavigation/ui/SliderNavigation.js +6 -6
  23. package/dist/components/SortSelect/index.js +1 -1
  24. package/dist/components/SortSelect/ui/SortSelect.js +108 -26
  25. package/dist/components/SummarySelect/ui/SummarySelect.js +1 -1
  26. package/dist/components/TabSelect/ui/TabSelect.js +4 -4
  27. package/dist/components/TabSwitcher/index.js +2 -2
  28. package/dist/components/TabSwitcher/ui/TabSwitcher.js +121 -26
  29. package/dist/layout/components/Header/Header.js +44 -65
  30. package/dist/layout/components/Menu.js +15 -37
  31. package/dist/main.d.ts +1 -0
  32. package/dist/main.js +70 -65
  33. package/dist/pages/ButtonsPage/Buttons.js +44 -61
  34. package/dist/pages/FormsPage/FormsPage.js +22 -42
  35. package/dist/pages/IconsPage/IconsPage.js +9 -31
  36. package/dist/pages/InputPage/InputPage.js +10 -32
  37. package/dist/pages/LogoPage/LogoPage.js +13 -36
  38. package/dist/pages/LotsPage/LotsPage.js +23 -22
  39. package/dist/pages/ModalsPage/ModalPage.js +46 -66
  40. package/dist/pages/SelectPage/SelectPage.js +41 -40
  41. package/dist/pages/TabsPage/TabsPage.js +1 -1
  42. package/dist/pages/TagsPage/TagsPage.js +23 -44
  43. package/dist/shared/useClientWidth.d.ts +3 -1
  44. package/dist/shared/useClientWidth.js +13 -4
  45. package/dist/stone-kit.css +1 -1
  46. package/dist/stories/entities/CommercialLotCard/CommercialLotCard.stories.js +1 -1
  47. package/dist/stories/shared/ui/Button/Button.stories.js +4 -4
  48. package/dist/stories/shared/ui/FilterWithSave/FilterWithSave.stories.js +1 -1
  49. package/dist/stories/shared/ui/FormModal/FormModal.stories.js +7 -7
  50. package/dist/stories/shared/ui/SortSelect/SortSelect.stories.js +1 -1
  51. package/dist/stories/shared/ui/TabSwitcher/TabSwitcher.stories.js +1 -1
  52. package/dist/stories/shared/ui/Tag/Tag.stories.js +4 -4
  53. package/dist/useLotCard-D-gK4J_o.js +186 -0
  54. package/package.json +1 -1
  55. package/dist/FilterWithSave-NYWK9Gpz.js +0 -2676
  56. package/dist/{Option-DdjBe9yb.js → Option-DmDx_xOt.js} +1 -1
package/README.md CHANGED
@@ -1,89 +1,89 @@
1
- # Stone-kit
2
-
3
- Uikit for stone redesign 2.0
4
-
5
- ## Installation
6
-
7
- Package installation:
8
-
9
- ```bash
10
- npm i stone-kit@latest
11
- ```
12
-
13
- ## Usage
14
-
15
- For Next.js page router in App.tsx:
16
-
17
- ```bash
18
- import 'stone-kit/dist/style.css'
19
- ```
20
-
21
- and then:
22
-
23
- ```bash
24
- import {Button} from 'stone-kit'
25
- ```
26
-
27
- For other projects u can immediately:
28
-
29
- ```bash
30
- import {Button} from 'stone-kit'
31
- ```
32
-
33
- ## Docs
34
-
35
- ### ButtonProps
36
-
37
- size: optional, size of button. types : 'large' | 'medium' | 'small' | 'tiny'
38
-
39
- pre: optional, insert icon/text before button text. type: ReactNode
40
-
41
- post: optional, insert icon/text after button text. type: ReactNode
42
-
43
- variant: optional, color variants of button. type:
44
- 'blue',
45
- 'gray',
46
- 'whiteStroke',
47
- 'sokolniki',
48
- 'black',
49
- 'whiteFilled'
50
-
51
- width: optional, width of button. type: 'auto' | 'full'
52
-
53
- additionalClass: optional, add your custom class to button. type: 'string'
54
-
55
- as: optional, u can convert button to link. type: 'button' | 'link'. 'button' by default.
56
-
57
- ### MobileButtonProps
58
-
59
- ### Tag
60
-
61
- ## Storybook в Docker
62
-
63
- ### Запуск production-сборки
64
-
65
- Чтобы запустить готовую статическую сборку Storybook с помощью Docker и Nginx:
66
-
67
- 1. Убедитесь, что в корне проекта есть файлы `Dockerfile.prod` и `docker-compose.prod.yml`.
68
- 2. Выполните команду:docker system prune
69
- ```sh
70
- docker compose -f docker-compose.prod.yml up -d --force-recreate
71
- ```
72
- 3. После завершения сборки и запуска, Storybook будет доступен по адресу `http://localhost:8080`.
73
-
74
-
75
- ```
76
- openssl req -x509 -nodes -days 365 \
77
- -newkey rsa:2048 \
78
- -keyout certs/privkey.key \
79
- -out certs/fullchain.crt \
80
- -subj "/CN=storybook.stone.ru"
81
-
82
-
83
-
84
- openssl req -x509 -nodes -newkey rsa:2048 \
85
- -days 365 -subj "/CN=storybook.stone.ru" \
86
- -keyout certs/privkey.key \
87
- -out certs/fullchain.crt
88
-
1
+ # Stone-kit
2
+
3
+ Uikit for stone redesign 2.0
4
+
5
+ ## Installation
6
+
7
+ Package installation:
8
+
9
+ ```bash
10
+ npm i stone-kit@latest
11
+ ```
12
+
13
+ ## Usage
14
+
15
+ For Next.js page router in App.tsx:
16
+
17
+ ```bash
18
+ import 'stone-kit/dist/style.css'
19
+ ```
20
+
21
+ and then:
22
+
23
+ ```bash
24
+ import {Button} from 'stone-kit'
25
+ ```
26
+
27
+ For other projects u can immediately:
28
+
29
+ ```bash
30
+ import {Button} from 'stone-kit'
31
+ ```
32
+
33
+ ## Docs
34
+
35
+ ### ButtonProps
36
+
37
+ size: optional, size of button. types : 'large' | 'medium' | 'small' | 'tiny'
38
+
39
+ pre: optional, insert icon/text before button text. type: ReactNode
40
+
41
+ post: optional, insert icon/text after button text. type: ReactNode
42
+
43
+ variant: optional, color variants of button. type:
44
+ 'blue',
45
+ 'gray',
46
+ 'whiteStroke',
47
+ 'sokolniki',
48
+ 'black',
49
+ 'whiteFilled'
50
+
51
+ width: optional, width of button. type: 'auto' | 'full'
52
+
53
+ additionalClass: optional, add your custom class to button. type: 'string'
54
+
55
+ as: optional, u can convert button to link. type: 'button' | 'link'. 'button' by default.
56
+
57
+ ### MobileButtonProps
58
+
59
+ ### Tag
60
+
61
+ ## Storybook в Docker
62
+
63
+ ### Запуск production-сборки
64
+
65
+ Чтобы запустить готовую статическую сборку Storybook с помощью Docker и Nginx:
66
+
67
+ 1. Убедитесь, что в корне проекта есть файлы `Dockerfile.prod` и `docker-compose.prod.yml`.
68
+ 2. Выполните команду:docker system prune
69
+ ```sh
70
+ docker compose -f docker-compose.prod.yml up -d --force-recreate
71
+ ```
72
+ 3. После завершения сборки и запуска, Storybook будет доступен по адресу `http://localhost:8080`.
73
+
74
+
75
+ ```
76
+ openssl req -x509 -nodes -days 365 \
77
+ -newkey rsa:2048 \
78
+ -keyout certs/privkey.key \
79
+ -out certs/fullchain.crt \
80
+ -subj "/CN=storybook.stone.ru"
81
+
82
+
83
+
84
+ openssl req -x509 -nodes -newkey rsa:2048 \
85
+ -days 365 -subj "/CN=storybook.stone.ru" \
86
+ -keyout certs/privkey.key \
87
+ -out certs/fullchain.crt
88
+
89
89
  ```
@@ -1,2 +1,2 @@
1
1
  export { Button } from './ui/Button';
2
- export type { ComponentProps, ButtonProps } from './ui/Button.types';
2
+ export type { ComponentButtonProps, ButtonProps } from './ui/Button.types';
@@ -1,3 +1,3 @@
1
1
  import { default as React } from 'react';
2
- import { ComponentProps } from './Button.types';
3
- export declare const Button: ({ size, size_m, size_l, onCLick, pre, children, post, variant, width, additionalClass, isLoading, loaderIconName, ...props }: React.PropsWithChildren<ComponentProps>) => import("react/jsx-runtime").JSX.Element;
2
+ import { ComponentButtonProps } from './Button.types';
3
+ export declare const Button: ({ size, size_m, size_l, onCLick, pre, children, post, variant, width, additionalClass, isLoading, loaderIconName, ...props }: React.PropsWithChildren<ComponentButtonProps>) => import("react/jsx-runtime").JSX.Element;
@@ -30,7 +30,7 @@ export interface ButtonProps {
30
30
  as?: 'button' | 'link' | 'box';
31
31
  onCLick?: () => any;
32
32
  }
33
- export type ComponentProps = ButtonProps & ((React.ButtonHTMLAttributes<HTMLButtonElement> & {
33
+ export type ComponentButtonProps = ButtonProps & ((React.ButtonHTMLAttributes<HTMLButtonElement> & {
34
34
  as?: 'button';
35
35
  }) | (React.AnchorHTMLAttributes<HTMLAnchorElement> & {
36
36
  as?: 'link';
@@ -1,7 +1,7 @@
1
1
  import { jsxs as _, jsx as o } from "react/jsx-runtime";
2
- import { Input as m } from "../Input/ui/Input.js";
3
- import { c as h } from "../../index-YnD2EP-S.js";
4
- import { forwardRef as p } from "react";
2
+ import { c as m } from "../../index-YnD2EP-S.js";
3
+ import { forwardRef as h } from "react";
4
+ import { Input as p } from "../Input/ui/Input.js";
5
5
  import { NewIcon as d } from "../NewIcon/ui/NewIcon.js";
6
6
  const i = "_checkboxLabel_14vcp_1", k = "_labelText_14vcp_36", T = "_labelTextModal_14vcp_44", f = "_error_14vcp_49", v = "_checkIcon_14vcp_58", e = {
7
7
  checkboxLabel: i,
@@ -9,10 +9,10 @@ const i = "_checkboxLabel_14vcp_1", k = "_labelText_14vcp_36", T = "_labelTextMo
9
9
  labelTextModal: T,
10
10
  error: f,
11
11
  checkIcon: v
12
- }, t = h.bind(e), w = p(
12
+ }, t = m.bind(e), w = h(
13
13
  ({ text: c, isChecked: l, error: r, children: n, emitIsChecked: a, modalFontSize: s, ...b }, x) => /* @__PURE__ */ _("label", { className: t(e.checkboxLabel, { [e.error]: r }), children: [
14
14
  /* @__PURE__ */ o(
15
- m,
15
+ p,
16
16
  {
17
17
  type: "checkbox",
18
18
  ...b,
@@ -1,11 +1,83 @@
1
- import "react/jsx-runtime";
2
- import "../../index-YnD2EP-S.js";
3
- import "../../shared/fmtNumber.js";
4
- import "./components/Price/Price.js";
5
- import { C as c } from "../../FilterWithSave-NYWK9Gpz.js";
6
- import "./components/Tags/Tags.js";
7
- import "../FavoriteIcon/FavoriteIcon.js";
8
- import "./components/PaymentLink/PaymentLink.js";
1
+ import { jsxs as a, jsx as t } from "react/jsx-runtime";
2
+ import { c as b } from "../../index-YnD2EP-S.js";
3
+ import { fmtNumber as v } from "../../shared/fmtNumber.js";
4
+ import { Price as y } from "./components/Price/Price.js";
5
+ import { Snippets as I } from "./components/Snippets/Snippets.js";
6
+ import { Tags as s } from "./components/Tags/Tags.js";
7
+ import { FavoriteIcon as L } from "../FavoriteIcon/FavoriteIcon.js";
8
+ import { PaymentLink as P } from "./components/PaymentLink/PaymentLink.js";
9
+ const w = "_root_uzpph_1", C = "_lotImageWrapper_uzpph_17", k = "_lotNameContent_uzpph_24", x = "_lotNameWrapper_uzpph_30", R = "_lotName_uzpph_24", S = "_lotNumber_uzpph_45", j = "_content_uzpph_54", T = "_featuresWrapper_uzpph_60", D = "_tags_uzpph_65", F = "_rootRow_uzpph_70", q = "_price_uzpph_105", A = "_paymentLink_uzpph_108", e = {
10
+ root: w,
11
+ lotImageWrapper: C,
12
+ lotNameContent: k,
13
+ lotNameWrapper: x,
14
+ lotName: R,
15
+ lotNumber: S,
16
+ content: j,
17
+ featuresWrapper: T,
18
+ tags: D,
19
+ rootRow: F,
20
+ price: q,
21
+ paymentLink: A
22
+ }, B = b.bind(e), X = ({
23
+ lot: o,
24
+ hidFinParam: p = !1,
25
+ imgNode: c,
26
+ onPriceClickHandler: l,
27
+ addClassname: i,
28
+ isVertical: n = !1,
29
+ isFavorite: _,
30
+ favoriteClickHandler: r,
31
+ isMoreDetails: u
32
+ }) => {
33
+ const { interiorPlanImg: N, floorPlanImg: h, area: g, subTypeName: f, number: d } = o || {}, z = f + ", " + v(g) + "м²", W = N ?? h ?? "";
34
+ return o ? /* @__PURE__ */ a("div", { className: B(e.root, i, { [e.rootRow]: !n }), children: [
35
+ /* @__PURE__ */ a("div", { className: e.lotImageWrapper, children: [
36
+ c || /* @__PURE__ */ t(
37
+ "img",
38
+ {
39
+ loading: "lazy",
40
+ src: W,
41
+ width: 295,
42
+ height: 213,
43
+ alt: "logo_image"
44
+ }
45
+ ),
46
+ r && /* @__PURE__ */ t(
47
+ L,
48
+ {
49
+ handleClickFavorite: (m) => {
50
+ r && r(o), m.preventDefault(), m.stopPropagation();
51
+ },
52
+ isFavorite: _
53
+ }
54
+ )
55
+ ] }),
56
+ /* @__PURE__ */ a("div", { className: e.content, children: [
57
+ /* @__PURE__ */ a("div", { className: e.lotNameWrapper, children: [
58
+ /* @__PURE__ */ a("div", { className: e.lotNameContent, children: [
59
+ /* @__PURE__ */ t("p", { className: e.lotName, children: z }),
60
+ /* @__PURE__ */ t("p", { className: e.lotNumber, children: d }),
61
+ /* @__PURE__ */ t(I, { lot: o }),
62
+ /* @__PURE__ */ t(s, { lot: o, classname: e.tags })
63
+ ] }),
64
+ !p && /* @__PURE__ */ t(
65
+ y,
66
+ {
67
+ lot: o,
68
+ isVertical: n,
69
+ onPriceClickHandler: l,
70
+ classname: e.price
71
+ }
72
+ )
73
+ ] }),
74
+ /* @__PURE__ */ a("div", { className: e.featuresWrapper, children: [
75
+ /* @__PURE__ */ t(s, { lot: o, classname: e.tags }),
76
+ /* @__PURE__ */ t(P, { specialProgram: o.specialProgram, classname: e.paymentLink, isMoreDetails: u, hidFinParam: p })
77
+ ] })
78
+ ] })
79
+ ] }) : null;
80
+ };
9
81
  export {
10
- c as CommercialLotCard
82
+ X as CommercialLotCard
11
83
  };
@@ -1,14 +1,14 @@
1
1
  import { jsxs as p, jsx as r } from "react/jsx-runtime";
2
- import { NewIcon as m } from "../../../NewIcon/ui/NewIcon.js";
3
- import { c as i } from "../../../../index-YnD2EP-S.js";
2
+ import { c as m } from "../../../../index-YnD2EP-S.js";
3
+ import { NewIcon as i } from "../../../NewIcon/ui/NewIcon.js";
4
4
  const c = "_paymentWrapper_1ywol_1", f = {
5
5
  paymentWrapper: c
6
6
  }, x = ({ specialProgram: e, classname: n, isMoreDetails: t, hidFinParam: a }) => {
7
7
  const s = !!e, o = () => a ? "Подробнее" : s || t ? "Узнать подробности" : "Доступно несколько способов оплаты";
8
- return /* @__PURE__ */ p("div", { className: i(f.paymentWrapper, n), children: [
8
+ return /* @__PURE__ */ p("div", { className: m(f.paymentWrapper, n), children: [
9
9
  /* @__PURE__ */ r("span", { children: o() }),
10
10
  /* @__PURE__ */ r(
11
- m,
11
+ i,
12
12
  {
13
13
  name: "arrowRight",
14
14
  size: "20"
@@ -1,29 +1,100 @@
1
- import "react/jsx-runtime";
2
- import "react";
3
- import "../../../Button/ui/Button.js";
4
- import "../../../mobileButton/ui/MobileButton.js";
5
- import "../../../NewIcon/ui/NewIcon.js";
6
- import "../../../DestinationTab/ui/DestinationTab.js";
7
- import "../../../RoundButton/ui/RoundButton.js";
8
- import "../../../Tag/ui/Tag.js";
9
- import "../../../Switcher/ui/Switcher.js";
10
- import "../../../Text/ui/Text.js";
11
- import "../../../Flex/ui/Flex.js";
12
- import "../../../Input/ui/Input.js";
13
- import "react-dom";
14
- import "../../../../index-YnD2EP-S.js";
15
- import { a as A } from "../../../../FilterWithSave-NYWK9Gpz.js";
16
- import "../../../GroupedInput/ui/GroupedInputs.js";
17
- import "../../../MetroTag/ui/MetroTag.js";
18
- import "../../../Select/ui/Select.js";
19
- import "../../../../shared/useClientWidth.js";
20
- import "../../../SliderNavigation/ui/SliderNavigation.js";
21
- import "../../../LotCardSkeleton/ui/LotCardSkeleton.js";
22
- import "../../../TabSelect/ui/TabSelect.js";
23
- import "../../../CheckBox/CheckBox.js";
24
- import "../../../CheckBoxNew/CheckBoxNew.js";
25
- import "../../../CheckboxSelect/ui/CheckboxSelect.js";
26
- import "../../utils/getTagsFeatures.js";
1
+ import { jsxs as f, jsx as o } from "react/jsx-runtime";
2
+ import { useState as A } from "react";
3
+ import { getTagsFeatures as B } from "../../utils/getTagsFeatures.js";
4
+ import { c as I } from "../../../../index-YnD2EP-S.js";
5
+ import { useClientWidth as k } from "../../../../shared/useClientWidth.js";
6
+ import { NewIcon as C } from "../../../NewIcon/ui/NewIcon.js";
7
+ const M = "_snippet_1vgdm_1", W = "_snippetLast_1vgdm_9", j = "_snippets_1vgdm_25", D = "_retailSnippets_1vgdm_30", E = "_shownSnippets_1vgdm_35", F = "_addSnippets_1vgdm_64", T = "_addSnippetsActive_1vgdm_80", V = "_addSnippetsList_1vgdm_85", y = "_closeSnippetBtn_1vgdm_129", t = {
8
+ snippet: M,
9
+ snippetLast: W,
10
+ snippets: j,
11
+ retailSnippets: D,
12
+ shownSnippets: E,
13
+ addSnippets: F,
14
+ addSnippetsActive: T,
15
+ addSnippetsList: V,
16
+ closeSnippetBtn: y
17
+ }, L = I.bind(t), K = ({ lot: g }) => {
18
+ const { type: w, windowViews: c, isCorner: N } = g || {}, [u, h] = A(!1), S = B({ ...g }), { isDesktop: r, isMobile: x } = k();
19
+ if (w === 3) {
20
+ if (x && (!c || c.length === 0))
21
+ return null;
22
+ let l = 0;
23
+ const i = r ? 36 : 28, n = [], d = [];
24
+ if (N) {
25
+ const e = "Угловая";
26
+ if (l + e.length <= i)
27
+ n.push(e), l += e.length;
28
+ else
29
+ return n;
30
+ }
31
+ if (c) {
32
+ const e = c.filter((p) => p && p.trim() !== "");
33
+ let s = 0, a = l;
34
+ for (let p = 0; p < e.length; p++) {
35
+ const m = e[p], _ = s > 0 ? " " + m : m;
36
+ if (a + _.length <= i)
37
+ n.push(m), a += _.length, s++;
38
+ else {
39
+ if (s === 0) {
40
+ const v = i - a;
41
+ if (v > 3) {
42
+ const b = m.substring(0, v - 3) + "...";
43
+ n.push(b), a = i;
44
+ } else
45
+ n.push("..."), a += 3;
46
+ }
47
+ d.push(...e.slice(p));
48
+ break;
49
+ }
50
+ }
51
+ l = a;
52
+ }
53
+ return /* @__PURE__ */ f("div", { className: t.retailSnippets, children: [
54
+ /* @__PURE__ */ o("ul", { className: t.shownSnippets, children: n?.map((e, s) => /* @__PURE__ */ o("li", { className: t.snippets, children: e }, s)) }),
55
+ d?.length > 0 && /* @__PURE__ */ f(
56
+ "div",
57
+ {
58
+ className: L(t.addSnippets, { [t.addSnippetsActive]: u }),
59
+ onClick: (e) => {
60
+ r || (e.stopPropagation(), e.preventDefault(), h((s) => !s));
61
+ },
62
+ onMouseEnter: () => {
63
+ r && h(!0);
64
+ },
65
+ onMouseLeave: () => {
66
+ r && h(!1);
67
+ },
68
+ children: [
69
+ "+" + d?.length,
70
+ u && /* @__PURE__ */ f("ul", { className: t.addSnippetsList, children: [
71
+ d.map((e, s) => /* @__PURE__ */ o("li", { children: e }, s)),
72
+ /* @__PURE__ */ o("div", { className: t.closeSnippetBtn, children: /* @__PURE__ */ o(
73
+ C,
74
+ {
75
+ name: "close",
76
+ size: "16",
77
+ color: "#ffffff"
78
+ }
79
+ ) })
80
+ ] })
81
+ ]
82
+ }
83
+ )
84
+ ] });
85
+ }
86
+ return S.length ? /* @__PURE__ */ o("div", { className: t.snippets, children: S.map((l, i) => {
87
+ const n = i === S.length - 1;
88
+ return /* @__PURE__ */ o(
89
+ "div",
90
+ {
91
+ className: L(t.snippet, n ? "" : t.snippetLast),
92
+ children: l.text
93
+ },
94
+ i
95
+ );
96
+ }) }) : null;
97
+ };
27
98
  export {
28
- A as Snippets
99
+ K as Snippets
29
100
  };
@@ -1,6 +1,6 @@
1
1
  import { jsxs as p, jsx as i } from "react/jsx-runtime";
2
- import { Tag as n } from "../../../Tag/ui/Tag.js";
3
2
  import { c as u } from "../../../../index-YnD2EP-S.js";
3
+ import { Tag as n } from "../../../Tag/ui/Tag.js";
4
4
  const f = "_root_xiuq1_1", x = {
5
5
  root: f
6
6
  }, b = ({ lot: g, classname: d }) => {
@@ -1,28 +1,56 @@
1
- import "react";
2
- import "../../Button/ui/Button.js";
3
- import "../../mobileButton/ui/MobileButton.js";
4
- import "../../NewIcon/ui/NewIcon.js";
5
- import "../../DestinationTab/ui/DestinationTab.js";
6
- import "../../RoundButton/ui/RoundButton.js";
7
- import "../../Tag/ui/Tag.js";
8
- import "../../Switcher/ui/Switcher.js";
9
- import "../../Text/ui/Text.js";
10
- import "../../Flex/ui/Flex.js";
11
- import "../../Input/ui/Input.js";
12
- import "react/jsx-runtime";
13
- import "react-dom";
14
- import "../../../index-YnD2EP-S.js";
15
- import { b as w } from "../../../FilterWithSave-NYWK9Gpz.js";
16
- import "../../GroupedInput/ui/GroupedInputs.js";
17
- import "../../MetroTag/ui/MetroTag.js";
18
- import "../../Select/ui/Select.js";
19
- import "../../../shared/useClientWidth.js";
20
- import "../../SliderNavigation/ui/SliderNavigation.js";
21
- import "../../LotCardSkeleton/ui/LotCardSkeleton.js";
22
- import "../../TabSelect/ui/TabSelect.js";
23
- import "../../CheckBox/CheckBox.js";
24
- import "../../CheckBoxNew/CheckBoxNew.js";
25
- import "../../CheckboxSelect/ui/CheckboxSelect.js";
1
+ import { useState as c, useRef as w, useEffect as p } from "react";
2
+ import { useClientWidth as x } from "../../../shared/useClientWidth.js";
3
+ const I = ({
4
+ selectedTabs: n = [],
5
+ selectedValues: v = [],
6
+ onClickItem: m,
7
+ disabledOptions: h = [],
8
+ tabs: a = [],
9
+ onChange: s,
10
+ setSelectedTabs: S,
11
+ onSaveClick: C,
12
+ onClearClick: E
13
+ }) => {
14
+ const { isMobile: L } = x(), [i, u] = c(!1), f = w(null), [M, g] = c(n), [R] = c(v), [O, r] = c(M), [l, o] = c(R), y = (e) => {
15
+ if (m && m(e), h.some((t) => t.value === e.value))
16
+ return;
17
+ const d = l.some((t) => t.value === e.value) ? l.filter((t) => t.value !== e.value) : [...l, e];
18
+ o(d);
19
+ }, J = () => {
20
+ g(a), r(a), o([]), E(), s && (s([]), S?.(a));
21
+ }, N = () => {
22
+ o(v), r(n);
23
+ }, k = () => {
24
+ N(), u(!1);
25
+ }, W = (e) => {
26
+ e.stopPropagation(), C(), s && (S?.(O), s(l)), u(!1);
27
+ };
28
+ return p(() => {
29
+ i || r((e) => JSON.stringify(e) !== JSON.stringify(n) ? n : e);
30
+ }, [i, n]), p(() => {
31
+ const e = (d) => {
32
+ if (!f.current) return;
33
+ const t = d.target;
34
+ f.current.contains(t) || t.closest("svg") || k();
35
+ };
36
+ return i ? document.addEventListener("click", e) : document.removeEventListener("click", e), () => {
37
+ document.removeEventListener("click", e);
38
+ };
39
+ }, [i]), {
40
+ isMobile: L,
41
+ handleClearClick: J,
42
+ handleCloseModal: k,
43
+ handleOptionClick: y,
44
+ handleSaveClick: W,
45
+ localSelectedTabs: O,
46
+ selectedOptions: l,
47
+ setSelectedOptions: o,
48
+ isModalOpen: i,
49
+ setIsModalOpen: u,
50
+ setLocalSelectedTabs: r,
51
+ containerRef: f
52
+ };
53
+ };
26
54
  export {
27
- w as useFilterWithSave
55
+ I as useFilterWithSave
28
56
  };