mimir-ui-kit 1.41.0 → 1.41.2

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.
@@ -1 +1 @@
1
- ._card-trail_13qtm_3{display:flex;flex-direction:column}._card-trail-header_13qtm_7{display:flex;align-items:flex-end;justify-content:space-between}._card-trail-header_13qtm_7:not(:last-child){margin-bottom:var(--mimir-space-xs)}._card-trail-header-title_13qtm_15{font-weight:var(--mimir-font-weight-text-medium);font-size:var(--mimir-size-text-l);font-family:var(--mimir-font-montserrat);line-height:var(--mimir-line-height-text-s1);letter-spacing:calc(var(--mimir-size-text-l) * -.02)}@media (max-width: 600px){._card-trail-header-title_13qtm_15{font-size:var(--mimir-size-text-m);letter-spacing:calc(var(--mimir-size-text-m) * -.02)}}._card-trail-list_13qtm_28{display:flex;padding:0;overflow:auto;white-space:nowrap;scroll-behavior:smooth;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch}._card-trail-list_13qtm_28::-webkit-scrollbar{display:none}._card-trail-list-item_13qtm_40{scroll-snap-align:start;white-space:normal;white-space:initial}._card-trail-list-item_13qtm_40._pointer_13qtm_44{cursor:pointer}
1
+ ._card-trail_vv8gl_3{display:flex;flex-direction:column}._card-trail-header_vv8gl_7{display:flex;align-items:flex-end;justify-content:space-between}._card-trail-header_vv8gl_7:not(:last-child){margin-bottom:var(--mimir-space-xs)}._card-trail-header-title_vv8gl_15{margin-bottom:0;font-weight:var(--mimir-font-weight-text-medium);font-size:var(--mimir-size-text-l);font-family:var(--mimir-font-montserrat);line-height:var(--mimir-line-height-text-s1);letter-spacing:calc(var(--mimir-size-text-l) * -.02)}@media (max-width: 600px){._card-trail-header-title_vv8gl_15{font-size:var(--mimir-size-text-m);letter-spacing:calc(var(--mimir-size-text-m) * -.02)}}._card-trail-header-merged-button_vv8gl_29{margin-left:auto}._card-trail-list_vv8gl_32{display:flex;margin-bottom:0;padding:0;overflow:auto;white-space:nowrap;scroll-behavior:smooth;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch}._card-trail-list_vv8gl_32::-webkit-scrollbar{display:none}._card-trail-list-item_vv8gl_45{white-space:normal;white-space:initial;scroll-snap-align:start}._card-trail-list-item_vv8gl_45._pointer_vv8gl_49{cursor:pointer}
@@ -1 +1 @@
1
- ._buttons_l320r_2{display:inline-flex}._merged-button_l320r_6{--button-height: var(--button-height-m);--button-space: var(--mimir-control-space-xs)}._merged-button_l320r_6:first-child{border-radius:0;border-top-left-radius:var(--mimir-control-radius);border-bottom-left-radius:var(--mimir-control-radius)}._merged-button_l320r_6:last-child{border-radius:0;border-top-right-radius:var(--mimir-control-radius);border-bottom-right-radius:var(--mimir-control-radius)}._merged-button_l320r_6:hover{color:var(--button-color-hover);background:var(--button-bg-color-hover)}._merged-button_l320r_6:active{color:var(--button-color-active);background:var(--button-bg-color-active)}._merged-button_l320r_6._gray_l320r_28{--button-bg-color: var(--black-5);--button-bg-color-hover: var(--black-5);--button-bg-color-active: var(--asphalt-normal);--button-color: var(--asphalt-normal);--button-color-hover: var(--sapphire-normal);--button-color-active: var(--light-text)}._merged-button_l320r_6._white_l320r_36{--button-bg-color: var(--white-normal);--button-bg-color-active: var(--asphalt-normal);--button-bg-color-hover: var(--white-normal);--button-color: var(--asphalt-normal);--button-color-hover: var(--sapphire-normal);--button-color-active: var(--light-text)}._merged-button_l320r_6._transparent_l320r_44{--button-bg-color: var(--black-5);--button-bg-color-hover: var(--black-5);--button-bg-color-active: var(--asphalt-normal);--button-bg-color-focus: var(--sapphire-normal);--button-color: var(--light-text);--button-color-hover: var(--sapphire-normal);--button-color-active: var(--light-text)}._merged-button_l320r_6._is-icon_l320r_53{width:var(--button-height-m);padding:0}._merged-button_l320r_6._one-button_l320r_57{border-radius:var(--mimir-control-radius)}._merged-button_l320r_6:disabled{--button-cursor: not-allowed;color:var(--disabled-color);background-color:var(--black-5)}._merged-button_l320r_6:disabled:hover,._merged-button_l320r_6:disabled:active,._merged-button_l320r_6:disabled:focus{color:var(--disabled-color);background-color:var(--black-5);box-shadow:none}
1
+ ._buttons_8yyst_2{display:inline-flex}._merged-button_8yyst_6{--button-height: var(--button-height-m);--button-space: var(--mimir-control-space-xs)}._merged-button_8yyst_6:first-child{border-radius:0;border-top-left-radius:var(--mimir-control-radius);border-bottom-left-radius:var(--mimir-control-radius)}._merged-button_8yyst_6:last-child{border-radius:0;border-top-right-radius:var(--mimir-control-radius);border-bottom-right-radius:var(--mimir-control-radius)}._merged-button_8yyst_6:hover{color:var(--button-color-hover);background:var(--button-bg-color-hover)}._merged-button_8yyst_6:active{color:var(--button-color-active);background:var(--button-bg-color-active)}._merged-button_8yyst_6._gray_8yyst_28{--button-bg-color: var(--black-5);--button-bg-color-hover: var(--black-5);--button-bg-color-active: var(--asphalt-normal);--button-color: var(--asphalt-normal);--button-color-hover: var(--sapphire-normal);--button-color-active: var(--light-text)}._merged-button_8yyst_6._white_8yyst_36{--button-bg-color: var(--white-normal);--button-bg-color-active: var(--asphalt-normal);--button-bg-color-hover: var(--white-normal);--button-color: var(--asphalt-normal);--button-color-hover: var(--sapphire-normal);--button-color-active: var(--light-text)}._merged-button_8yyst_6._transparent_8yyst_44{--button-bg-color: var(--black-5);--button-bg-color-hover: var(--black-5);--button-bg-color-active: var(--asphalt-normal);--button-bg-color-focus: var(--sapphire-normal);--button-color: var(--light-text);--button-color-hover: var(--sapphire-normal);--button-color-active: var(--light-text)}._merged-button_8yyst_6._is-icon_8yyst_53{width:var(--button-height);min-width:var(--button-height);padding:0}._merged-button_8yyst_6._is-icon_8yyst_53._s_8yyst_58{--button-height: 32px;width:32px;width:var(--button-height)}._merged-button_8yyst_6._is-icon_8yyst_53._m_8yyst_6{--button-height: 40px;width:40px;width:var(--button-height)}._merged-button_8yyst_6._one-button_8yyst_66{border-radius:var(--mimir-control-radius)}._merged-button_8yyst_6:disabled{--button-cursor: not-allowed;color:var(--disabled-color);background-color:var(--black-5)}._merged-button_8yyst_6:disabled:hover,._merged-button_8yyst_6:disabled:active,._merged-button_8yyst_6:disabled:focus{color:var(--disabled-color);background-color:var(--black-5);box-shadow:none}
@@ -36,6 +36,10 @@ export type TProps = {
36
36
  * Класс, применяемый к списку карточек (ul).
37
37
  */
38
38
  cardTrailListClassName?: string;
39
+ /**
40
+ * Класс, применяемый к кнопкам переключения (MergedButton).
41
+ */
42
+ cardTrailMergedButtonClassName?: string;
39
43
  /**
40
44
  * Класс, применяемый к карточке.
41
45
  */
@@ -1,101 +1,115 @@
1
- import { jsxs as f, jsx as o } from "react/jsx-runtime";
2
- import { c as n } from "../../index-DIxK0V-G.js";
3
- import { forwardRef as W, useRef as D, useState as _, useEffect as I, Children as M } from "react";
4
- import { DEFAULT_SPACE_BETWEEN as x, DEFAULT_SCROLL_STEP as H } from "./constants.js";
5
- import { hasHorizontalScroll as p, isScrollAtEdge as B } from "./utils.js";
6
- import { useMergeRefs as R } from "../../hooks/useMergeRefs/useMergeRefs.js";
7
- import { useThrottledCallback as j } from "../../hooks/useThrottledCallback/index.js";
8
- import { MergedButton as F } from "../MergedButton/MergedButton.js";
9
- import '../../assets/CardTrail.css';const U = "_pointer_13qtm_44", c = {
10
- "card-trail": "_card-trail_13qtm_3",
11
- "card-trail-header": "_card-trail-header_13qtm_7",
12
- "card-trail-header-title": "_card-trail-header-title_13qtm_15",
13
- "card-trail-list": "_card-trail-list_13qtm_28",
14
- "card-trail-list-item": "_card-trail-list-item_13qtm_40",
15
- pointer: U
16
- }, X = W((C, S) => {
1
+ import { jsxs as v, jsx as s } from "react/jsx-runtime";
2
+ import { c as i } from "../../index-DIxK0V-G.js";
3
+ import { forwardRef as I, useRef as p, useState as C, useEffect as x, Children as H } from "react";
4
+ import { DEFAULT_SPACE_BETWEEN as O, DEFAULT_SCROLL_STEP as R } from "./constants.js";
5
+ import { hasHorizontalScroll as u, isScrollAtEdge as b } from "./utils.js";
6
+ import { useMergeRefs as j } from "../../hooks/useMergeRefs/useMergeRefs.js";
7
+ import { useThrottledCallback as F } from "../../hooks/useThrottledCallback/index.js";
8
+ import { MergedButton as U } from "../MergedButton/MergedButton.js";
9
+ import '../../assets/CardTrail.css';const $ = "_pointer_vv8gl_49", l = {
10
+ "card-trail": "_card-trail_vv8gl_3",
11
+ "card-trail-header": "_card-trail-header_vv8gl_7",
12
+ "card-trail-header-title": "_card-trail-header-title_vv8gl_15",
13
+ "card-trail-header-merged-button": "_card-trail-header-merged-button_vv8gl_29",
14
+ "card-trail-list": "_card-trail-list_vv8gl_32",
15
+ "card-trail-list-item": "_card-trail-list-item_vv8gl_45",
16
+ pointer: $
17
+ }, Z = I((B, N) => {
17
18
  const {
18
- cardClassName: g,
19
- cardTrailClassName: N,
20
- cardTrailHeaderClassName: E,
21
- cardTrailListClassName: b,
22
- children: d,
23
- title: h,
24
- spaceBetween: s = x,
25
- scrollStep: m = H,
26
- mergedButtonProps: l,
27
- scrollToCard: u = !1
28
- } = C, t = D(null), [i, T] = _({
19
+ cardClassName: S,
20
+ cardTrailClassName: E,
21
+ cardTrailHeaderClassName: T,
22
+ cardTrailListClassName: k,
23
+ cardTrailMergedButtonClassName: L,
24
+ children: h,
25
+ title: m,
26
+ spaceBetween: d = O,
27
+ scrollStep: f = R,
28
+ mergedButtonProps: c,
29
+ scrollToCard: _ = !1
30
+ } = B, r = p(null), n = p(null), [o, w] = C({
29
31
  leftButton: !0,
30
32
  rightButton: !1
31
- }), [k, L] = _(
32
- () => p(t == null ? void 0 : t.current)
33
- ), q = R(t, S), v = j(() => {
34
- const e = !B(t.current, "left"), r = !B(t.current, "right");
35
- T({
36
- leftButton: !e,
37
- rightButton: !r
33
+ }), [y, g] = C(
34
+ () => u(r == null ? void 0 : r.current)
35
+ ), A = j(r, N), W = F(() => {
36
+ const t = !b(r.current, "left"), e = !b(r.current, "right");
37
+ w({
38
+ leftButton: !t,
39
+ rightButton: !e
38
40
  });
39
- }, 300), y = (e) => () => {
41
+ }, 300), z = (t) => () => {
40
42
  var a;
41
- if (!u)
43
+ if (!_)
42
44
  return;
43
- const r = (a = t == null ? void 0 : t.current) == null ? void 0 : a.querySelector(
44
- `[data-active-card='${e}']`
45
+ const e = (a = r == null ? void 0 : r.current) == null ? void 0 : a.querySelector(
46
+ `[data-active-card='${t}']`
45
47
  );
46
- r && (r == null || r.scrollIntoView({
48
+ e && (e == null || e.scrollIntoView({
47
49
  behavior: "smooth",
48
50
  block: "nearest",
49
51
  inline: "center"
50
52
  }));
51
- }, A = () => {
53
+ }, M = () => {
52
54
  var a;
53
- if (!t.current || i.leftButton) return;
54
- const e = t.current, r = ((a = e.children[0]) == null ? void 0 : a.clientWidth) ?? 0;
55
- e.scrollBy({
56
- left: -(r + s) * m,
55
+ if (!r.current || o.leftButton) return;
56
+ const t = r.current, e = ((a = t.children[0]) == null ? void 0 : a.clientWidth) ?? 0;
57
+ t.scrollBy({
58
+ left: -(e + d) * f,
57
59
  behavior: "smooth"
58
60
  });
59
- }, w = () => {
61
+ }, D = () => {
60
62
  var a;
61
- if (!t.current || i.rightButton) return;
62
- const e = t.current, r = ((a = e.children[0]) == null ? void 0 : a.clientWidth) ?? 0;
63
- e.scrollBy({
64
- left: (r + s) * m,
63
+ if (!r.current || o.rightButton) return;
64
+ const t = r.current, e = ((a = t.children[0]) == null ? void 0 : a.clientWidth) ?? 0;
65
+ t.scrollBy({
66
+ left: (e + d) * f,
65
67
  behavior: "smooth"
66
68
  });
67
69
  };
68
- return I(() => {
69
- L(p(t == null ? void 0 : t.current));
70
- }, [d]), /* @__PURE__ */ f("section", { className: n(c["card-trail"], N), children: [
71
- /* @__PURE__ */ f(
70
+ return x(() => {
71
+ const t = r.current;
72
+ if (t)
73
+ return n.current = new ResizeObserver(() => {
74
+ g(u(r == null ? void 0 : r.current));
75
+ }), n.current.observe(t), g(u(r == null ? void 0 : r.current)), () => {
76
+ n.current && n.current.disconnect();
77
+ };
78
+ }, [h]), /* @__PURE__ */ v("section", { className: i(l["card-trail"], E), children: [
79
+ /* @__PURE__ */ v(
72
80
  "header",
73
81
  {
74
- className: n(
75
- c["card-trail-header"],
76
- E
82
+ className: i(
83
+ l["card-trail-header"],
84
+ T
77
85
  ),
78
86
  children: [
79
- h && /* @__PURE__ */ o("h3", { className: c["card-trail-header-title"], children: h }),
80
- k && /* @__PURE__ */ o(
81
- F,
87
+ m && /* @__PURE__ */ s("h3", { className: l["card-trail-header-title"], children: m }),
88
+ y && /* @__PURE__ */ s(
89
+ U,
82
90
  {
91
+ buttonsWrapperClassName: i(
92
+ l["card-trail-header-merged-button"],
93
+ L
94
+ ),
83
95
  buttons: [
84
96
  {
85
97
  isIconButton: !0,
86
98
  iconName: "ArrowLeft16px",
87
99
  variant: "gray",
88
- onClick: A,
89
- disabled: i.leftButton,
90
- ...l == null ? void 0 : l.leftButton
100
+ onClick: M,
101
+ disabled: o.leftButton,
102
+ size: "s",
103
+ ...c == null ? void 0 : c.leftButton
91
104
  },
92
105
  {
93
106
  isIconButton: !0,
94
107
  iconName: "ArrowRight16px",
95
108
  variant: "gray",
96
- onClick: w,
97
- disabled: i.rightButton,
98
- ...l == null ? void 0 : l.rightButton
109
+ onClick: D,
110
+ size: "s",
111
+ disabled: o.rightButton,
112
+ ...c == null ? void 0 : c.rightButton
99
113
  }
100
114
  ]
101
115
  }
@@ -103,25 +117,25 @@ import '../../assets/CardTrail.css';const U = "_pointer_13qtm_44", c = {
103
117
  ]
104
118
  }
105
119
  ),
106
- /* @__PURE__ */ o(
120
+ /* @__PURE__ */ s(
107
121
  "ul",
108
122
  {
109
- onScroll: v,
110
- style: { gap: s },
111
- className: n(c["card-trail-list"], b),
112
- ref: q,
113
- children: M.map(d, (e, r) => /* @__PURE__ */ o(
123
+ onScroll: W,
124
+ style: { gap: d },
125
+ className: i(l["card-trail-list"], k),
126
+ ref: A,
127
+ children: H.map(h, (t, e) => /* @__PURE__ */ s(
114
128
  "li",
115
129
  {
116
- onClick: y(r),
117
- "data-active-card": r,
118
- "data-testid": `card-trail-item-${r}`,
119
- className: n(
120
- c["card-trail-list-item"],
121
- { [c.pointer]: u },
122
- g
130
+ onClick: z(e),
131
+ "data-active-card": e,
132
+ "data-testid": `card-trail-item-${e}`,
133
+ className: i(
134
+ l["card-trail-list-item"],
135
+ { [l.pointer]: _ },
136
+ S
123
137
  ),
124
- children: e
138
+ children: t
125
139
  }
126
140
  ))
127
141
  }
@@ -129,5 +143,5 @@ import '../../assets/CardTrail.css';const U = "_pointer_13qtm_44", c = {
129
143
  ] });
130
144
  });
131
145
  export {
132
- X as CardTrail
146
+ Z as CardTrail
133
147
  };
@@ -1,18 +1,22 @@
1
1
  import { EMergedButtonVariantRound } from './constants';
2
- import { TButtonProps } from '../Button';
2
+ import { TButtonProps, EButtonSize } from '../Button';
3
3
 
4
- export type TButtonPropsWithoutStyles = Omit<TButtonProps, 'clear' | 'variant' | 'form'> & {
4
+ export type TButtonPropsWithoutStyles = Omit<TButtonProps, 'clear' | 'variant' | 'form' | 'size'> & {
5
5
  variant?: `${EMergedButtonVariantRound}` | EMergedButtonVariantRound;
6
6
  'data-testid'?: string;
7
+ size?: Exclude<EButtonSize, 'xl' | 'l' | 'ms' | 'xs' | 'xxl' | 'm-s'> | `${Exclude<EButtonSize, 'xl' | 'l' | 'ms' | 'xs' | 'xxl' | 'm-s'>}`;
7
8
  };
8
- type TProps = {
9
+ export type TProps = {
9
10
  /**
10
11
  * Массив кнопок, который отрисуется в контейнере
11
12
  * */
12
13
  buttons: TButtonPropsWithoutStyles[];
14
+ /**
15
+ * Класс, применяемый к списку карточек (ul).
16
+ */
17
+ buttonsWrapperClassName?: string;
13
18
  };
14
19
  /**
15
20
  * Компонент объединенных кнопок, с округлением у первой и последней кнопки, а так же с другими variant, нежели у обычного Button.
16
21
  */
17
- export declare const MergedButton: import('react').MemoExoticComponent<({ buttons }: TProps) => import("react/jsx-runtime").JSX.Element>;
18
- export {};
22
+ export declare const MergedButton: import('react').MemoExoticComponent<({ buttons, buttonsWrapperClassName }: TProps) => import("react/jsx-runtime").JSX.Element>;
@@ -1,48 +1,58 @@
1
1
  import { jsx as e } from "react/jsx-runtime";
2
- import { c as _ } from "../../index-DIxK0V-G.js";
3
- import { memo as l } from "react";
4
- import { EMergedButtonVariantRound as u } from "./constants.js";
5
- import { Button as g } from "../Button/Button.js";
6
- import '../../assets/MergedButton.css';const p = "_buttons_l320r_2", d = "_gray_l320r_28", B = "_white_l320r_36", I = "_transparent_l320r_44", o = {
7
- buttons: p,
8
- "merged-button": "_merged-button_l320r_6",
9
- gray: d,
10
- white: B,
11
- transparent: I,
12
- "is-icon": "_is-icon_l320r_53",
13
- "one-button": "_one-button_l320r_57"
14
- }, f = l(({ buttons: r }) => /* @__PURE__ */ e("div", { className: o.buttons, children: r.map(
15
- ({
16
- variant: s = u.White,
17
- disabled: n,
18
- className: c,
19
- ...t
20
- }, i) => {
21
- const a = {
22
- ...t,
23
- isIconButton: t.isIconButton ?? !1,
24
- iconName: t.isIconButton ? t.iconName : void 0,
25
- leftIcon: t.isIconButton ? void 0 : t.leftIcon,
26
- rightIcon: t.isIconButton ? void 0 : t.rightIcon
27
- }, m = _(o["merged-button"], c, {
28
- [o[s]]: !n,
29
- [o.disabled]: n,
30
- [o["is-icon"]]: t.isIconButton,
31
- [o["one-button"]]: r.length === 1
32
- });
33
- return /* @__PURE__ */ e(
34
- g,
35
- {
36
- clear: !0,
37
- disabled: n,
38
- className: m,
39
- ...a
40
- },
41
- i
42
- );
43
- }
44
- ) }));
45
- f.displayName = "MergedButton";
2
+ import { c as r } from "../../index-DIxK0V-G.js";
3
+ import { memo as g } from "react";
4
+ import { EMergedButtonVariantRound as p } from "./constants.js";
5
+ import { Button as d } from "../Button/Button.js";
6
+ import '../../assets/MergedButton.css';const l = "_buttons_8yyst_2", B = "_gray_8yyst_28", I = "_white_8yyst_36", f = "_transparent_8yyst_44", h = "_s_8yyst_58", N = "_m_8yyst_6", o = {
7
+ buttons: l,
8
+ "merged-button": "_merged-button_8yyst_6",
9
+ gray: B,
10
+ white: I,
11
+ transparent: f,
12
+ "is-icon": "_is-icon_8yyst_53",
13
+ s: h,
14
+ m: N,
15
+ "one-button": "_one-button_8yyst_66"
16
+ }, v = g(
17
+ ({ buttons: s, buttonsWrapperClassName: c }) => /* @__PURE__ */ e("div", { className: r(o.buttons, c), children: s.map(
18
+ ({
19
+ variant: i = p.White,
20
+ disabled: n,
21
+ className: m,
22
+ size: _ = "m",
23
+ ...t
24
+ }, a) => {
25
+ const y = {
26
+ ...t,
27
+ isIconButton: t.isIconButton ?? !1,
28
+ iconName: t.isIconButton ? t.iconName : void 0,
29
+ leftIcon: t.isIconButton ? void 0 : t.leftIcon,
30
+ rightIcon: t.isIconButton ? void 0 : t.rightIcon
31
+ }, u = r(
32
+ o["merged-button"],
33
+ o[_ ?? "m"],
34
+ m,
35
+ {
36
+ [o[i]]: !n,
37
+ [o.disabled]: n,
38
+ [o["is-icon"]]: t.isIconButton,
39
+ [o["one-button"]]: s.length === 1
40
+ }
41
+ );
42
+ return /* @__PURE__ */ e(
43
+ d,
44
+ {
45
+ clear: !0,
46
+ disabled: n,
47
+ className: u,
48
+ ...y
49
+ },
50
+ a
51
+ );
52
+ }
53
+ ) })
54
+ );
55
+ v.displayName = "MergedButton";
46
56
  export {
47
- f as MergedButton
57
+ v as MergedButton
48
58
  };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "mimir-ui-kit",
3
3
  "private": false,
4
- "version": "1.41.0",
4
+ "version": "1.41.2",
5
5
  "type": "module",
6
6
  "exports": {
7
7
  ".": {