mimir-ui-kit 1.20.5 → 1.21.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.
@@ -1 +1 @@
1
- ._textarea-wrapper_191db_2 ._textarea_191db_2{min-height:var(--textarea-height);padding-top:var(--textarea-space)!important;padding-bottom:var(--textarea-space);resize:none}._textarea-wrapper_191db_2 ._textarea_191db_2._has-label_191db_8{padding-top:var(--textarea-top-space)!important}._textarea-wrapper_191db_2 ._label_191db_11{position:absolute;top:calc(var(--input-height) / 2 - var(--input-font-size) / 2);left:var(--space-m);z-index:1;display:block;color:var(--label-color);font-size:var(--input-font-size);white-space:nowrap;transform-origin:left center;transition:transform .15s ease-out,left .15s ease-out,color .15s ease-out;-webkit-appearance:none;-moz-appearance:none;appearance:none;pointer-events:none}._textarea-wrapper_191db_2 ._label_191db_11._has-left-slot_191db_25{left:calc(var(--space-m) + var(--icon-size) + var(--clear-button-mg))}._textarea-wrapper_191db_2 ._label_191db_11._active-label_191db_28{transform:scale(var(--label-scaled)) translateY(calc(var(--textarea-transform-label) * -1))}._textarea-wrapper_191db_2 ._label_191db_11._active-label_191db_28._has-left-slot_191db_25{left:calc(var(--space-m) + var(--icon-size) + var(--space-s));transform:scale(var(--label-scaled)) translate(calc((var(--space-m) + var(--left-addon-position)) * 2 * -1),calc(var(--textarea-transform-label) * -1))}._s_191db_36{--textarea-space: var(--space-2s);--textarea-top-space: var(--space-l);--textarea-transform-label: var(--space-xss);--textarea-height: 76px;--textarea-padding: var(--space-xs) var(--space-s)}._m_191db_44{--textarea-space: var(--space-2s);--textarea-top-space: var(--space-l);--textarea-transform-label: var(--space-s);--textarea-height: 88px;--textarea-padding: var(--space-xs) var(--space-s)}._l_191db_11{--textarea-space: var(--space-2m);--textarea-top-space: 25px;--textarea-transform-label: var(--space-m);--textarea-height: 120px;--textarea-padding: var(--space-2m)}
1
+ ._textarea-wrapper_mbbjz_2 ._textarea_mbbjz_2{min-height:var(--textarea-height);padding-top:var(--textarea-space)!important;padding-bottom:var(--textarea-space);resize:none}._textarea-wrapper_mbbjz_2 ._textarea_mbbjz_2._has-label_mbbjz_8{padding-top:var(--textarea-top-space)!important}._textarea-wrapper_mbbjz_2 ._label_mbbjz_11{position:absolute;top:calc(var(--textarea-space) / 2 - var(--textarea-space) / 2);left:var(--space-m);z-index:1;display:block;color:var(--label-color);font-size:var(--input-font-size);white-space:nowrap;transform-origin:left center;transition:transform .15s ease-out,left .15s ease-out,color .15s ease-out;pointer-events:none}._textarea-wrapper_mbbjz_2 ._label_mbbjz_11._has-left-slot_mbbjz_24{left:calc(var(--space-m) + var(--icon-size) + var(--clear-button-mg))}._textarea-wrapper_mbbjz_2 ._label_mbbjz_11._active-label_mbbjz_27{transform:scale(var(--label-scaled)) translateY(calc(var(--textarea-transform-label) * -1))}._textarea-wrapper_mbbjz_2 ._label_mbbjz_11._active-label_mbbjz_27._has-left-slot_mbbjz_24{left:calc(var(--space-m) + var(--icon-size) + var(--space-s));transform:scale(var(--label-scaled)) translate(calc((var(--space-m) + var(--left-addon-position)) * 2 * -1),calc(var(--textarea-transform-label) * -1))}._s_mbbjz_35{--textarea-space: var(--space-2s);--textarea-top-space: var(--space-l);--textarea-transform-label: var(--space-xss);--textarea-height: 76px;--textarea-padding: var(--space-xs) var(--space-s)}._m_mbbjz_43{--textarea-space: var(--space-2s);--textarea-top-space: var(--space-l);--textarea-transform-label: var(--space-s);--textarea-height: 88px;--textarea-padding: var(--space-xs) var(--space-s)}._l_mbbjz_11{--textarea-space: var(--space-2m);--textarea-top-space: 25px;--textarea-transform-label: var(--space-m);--textarea-height: 120px;--textarea-padding: var(--space-2m)}
@@ -0,0 +1 @@
1
+ ._input_3fxwe_2{padding-right:var(--space-3xl)}._input-wrapper_3fxwe_6{flex:1}._date-wrapper_3fxwe_10{position:relative;width:100%}._date-wrapper_3fxwe_10:hover ._input-wrapper_3fxwe_6{background-color:var(--input-bg-color-hover)}._date-wrapper_3fxwe_10:before{position:absolute;top:0;right:60px;bottom:0;left:0;z-index:3;cursor:pointer;content:""}[data-disabled=true] ._date-wrapper_3fxwe_10:before{cursor:auto}[data-disabled=true] ._date-wrapper_3fxwe_10 ._input-wrapper_3fxwe_6{background:var(--black-20)}[data-disabled=true] ._date-wrapper_3fxwe_10 ._input-wrapper_3fxwe_6 label,[data-disabled=true] ._date-wrapper_3fxwe_10 ._input-wrapper_3fxwe_6 input{color:var(--white)}[data-disabled=true] ._button-wrapper_3fxwe_35 svg{color:var(--white);fill:var(--white);cursor:default}._wrapper_3fxwe_41{position:relative;display:flex;align-items:center;border-radius:var(--control-radius-s)}._wrapper_3fxwe_41._active_3fxwe_47{border-bottom:1px solid var(--citrine-100)}._button-wrapper_3fxwe_35{position:absolute;top:0;right:0;z-index:2;display:flex;width:44px;height:100%;max-height:var(--button-height-xxl)}._button_3fxwe_35{align-self:center;background-color:transparent;border-radius:var(--control-radius-s)}._field-overlow_3fxwe_68{position:fixed;top:0;right:0;bottom:0;left:0;z-index:3}._calendar-block_3fxwe_74{position:absolute;z-index:3;display:flex;flex-direction:column;width:368px;max-height:none;padding:16px;font-weight:var(--font-weight-text-regular);font-size:var(--size-text-l);font-family:var(--font-inter);font-style:normal;line-height:var(--line-height-text-2xs);text-align:center;text-overflow:ellipsis;background:var(--white);border-radius:var(--control-radius-s);box-shadow:0 0 #16172705,0 2px 4px #16172705,0 6px 6px #16172705,0 15px 9px #16172703;opacity:0;transition:height .5s ease-in;font-feature-settings:"zero";font-variant-numeric:slashed-zero}._calendar-block_3fxwe_74 ._h_3fxwe_97{display:flex;width:100%;color:var(--black-100)}._calendar-block_3fxwe_74 ._b_3fxwe_35{display:grid;grid-template-columns:repeat(7,1fr)}._calendar-block_3fxwe_74 ._d_3fxwe_10{display:flex;flex:1;align-items:center;justify-content:center;color:var(--black-100);cursor:pointer;gap:4px}._calendar-block_3fxwe_74 ._m_3fxwe_118,._calendar-block_3fxwe_74 ._a_3fxwe_47,._calendar-block_3fxwe_74 ._prev_3fxwe_120{width:auto;height:48px;overflow:hidden}._calendar-block_3fxwe_74 ._m_3fxwe_118{display:flex;align-items:center;justify-content:center;color:var(--disabled)}._calendar-block_3fxwe_74 ._m_3fxwe_118 b{font-weight:var(--font-weight-text-regular)}._calendar-block_3fxwe_74 ._orange_3fxwe_136{color:var(--citrine-100)}._calendar-block_3fxwe_74 ._a_3fxwe_47{color:var(--black-100);border-radius:var(--control-radius-s)}._calendar-block_3fxwe_74 ._a_3fxwe_47 b{display:flex;align-items:center;justify-content:center;width:100%;height:100%;font-weight:var(--font-weight-text-regular);cursor:pointer}._calendar-block_3fxwe_74 ._a_3fxwe_47 b:hover{background:var(--black-10)}._calendar-block_3fxwe_74 ._a_3fxwe_47 b:active{color:var(--white);background:var(--sapphire-100)}._calendar-block_3fxwe_74 ._current_3fxwe_161{background:var(--sapphire-10);border-radius:var(--control-radius-s)}._calendar-block_3fxwe_74 ._monthGrid_3fxwe_166{display:grid;grid-template-columns:repeat(3,1fr)}
@@ -14,6 +14,12 @@ export type DatePicker = {
14
14
  * значение из стейта (data)
15
15
  */
16
16
  value?: string;
17
+ /**
18
+ * значение типа модально окна календаря
19
+ */
20
+ type?: 'days' | 'months' | 'years';
21
+ disabled?: boolean;
22
+ error?: boolean;
17
23
  } & TInputProps;
18
24
  export type TDatePickerValue = {
19
25
  value?: Date;
@@ -33,4 +39,10 @@ export declare const DatePicker: import('react').MemoExoticComponent<import('rea
33
39
  * значение из стейта (data)
34
40
  */
35
41
  value?: string;
42
+ /**
43
+ * значение типа модально окна календаря
44
+ */
45
+ type?: "days" | "months" | "years";
46
+ disabled?: boolean;
47
+ error?: boolean;
36
48
  } & import('../Input/types').TInputProps & import('../Input').TAdditionalProps & import('react').RefAttributes<HTMLInputElement>>>;
@@ -1,44 +1,92 @@
1
1
  import { jsxs, jsx } from "react/jsx-runtime";
2
2
  import { c as classNames } from "../../index-CweZ_OcN.js";
3
- import { memo, forwardRef, useState } from "react";
4
- import { c as cls, D as DatePickerModal } from "../../DatePickerModal-BM0BgzTb.js";
3
+ import { memo, forwardRef, useState, useEffect } from "react";
4
+ import { DatePickerModal } from "./DatePickerModal.js";
5
+ import { MonthPickerModal } from "./MonthPickerModal.js";
6
+ import { c as cls } from "../../styles.module-BZXDqssF.js";
7
+ import { YearPickerModal } from "./YearPickerModal.js";
5
8
  import { useClickOutside } from "../../hooks/useClickOutside/useClickOutside.js";
6
9
  import { formating } from "../../utils/index.js";
7
10
  import { Button } from "../Button/Button.js";
8
11
  import { I as Input } from "../../Input-6mudFqTb.js";
12
+ import { EInputVariant } from "../Input/constants.js";
9
13
  const DatePicker = memo(
10
14
  forwardRef(
11
- ({ size, value, onChangeValue, name, before, ...props }, ref) => {
15
+ ({
16
+ size,
17
+ value,
18
+ onChangeValue,
19
+ name,
20
+ before,
21
+ type = "days",
22
+ error,
23
+ variant,
24
+ disabled = false,
25
+ ...props
26
+ }, ref) => {
12
27
  const [isActive, setActive] = useState(false);
28
+ const [pickerType, setType] = useState(type);
13
29
  const [date, setDate] = useState(
14
30
  value ? new Date(value) : /* @__PURE__ */ new Date()
15
31
  );
32
+ const [isError, setError] = useState(error);
33
+ useEffect(() => {
34
+ setError(error);
35
+ }, [error]);
16
36
  useClickOutside({
17
37
  isActive,
18
- setActive,
38
+ setActive: (e) => {
39
+ setActive(e);
40
+ setType(type);
41
+ },
19
42
  className: cls["calendar-block"]
20
43
  });
21
44
  const onOpen = () => {
22
- setActive(true);
45
+ if (!disabled) setActive(true);
23
46
  };
24
47
  const onDate = (d) => {
48
+ if (pickerType === "years") {
49
+ if (type === "years") {
50
+ setActive(false);
51
+ setType(type);
52
+ } else {
53
+ setType("months");
54
+ }
55
+ }
56
+ if (pickerType === "months") {
57
+ if (type === "months") {
58
+ setActive(false);
59
+ setType(type);
60
+ } else {
61
+ setType("days");
62
+ }
63
+ }
25
64
  setDate(d);
26
65
  onChangeValue == null ? void 0 : onChangeValue({ value: d, name });
27
66
  };
28
67
  const wrapperClassNames = classNames(cls.wrapper, isActive && cls.active);
29
- return /* @__PURE__ */ jsxs("div", { className: wrapperClassNames, children: [
30
- /* @__PURE__ */ jsx("div", { className: cls["date-wrapper"], onClick: onOpen, children: /* @__PURE__ */ jsx(
31
- Input,
68
+ return /* @__PURE__ */ jsxs("div", { className: wrapperClassNames, "data-disabled": disabled, children: [
69
+ /* @__PURE__ */ jsx(
70
+ "div",
32
71
  {
33
- ref,
34
- className: cls.input,
35
- wrapperClassName: cls["input-wrapper"],
36
- size,
37
- type: "text",
38
- value: formating.Date(date, "dd.mm.yy"),
39
- ...props
72
+ "data-error": isError,
73
+ className: cls["date-wrapper"],
74
+ onClick: onOpen,
75
+ children: /* @__PURE__ */ jsx(
76
+ Input,
77
+ {
78
+ ref,
79
+ className: cls.input,
80
+ wrapperClassName: cls["input-wrapper"],
81
+ size,
82
+ type: "text",
83
+ variant: isError ? EInputVariant.Error : variant,
84
+ value: formating.Date(date, "dd.mm.yy"),
85
+ ...props
86
+ }
87
+ )
40
88
  }
41
- ) }),
89
+ ),
42
90
  /* @__PURE__ */ jsx("div", { className: cls["button-wrapper"], children: /* @__PURE__ */ jsx(
43
91
  Button,
44
92
  {
@@ -50,13 +98,34 @@ const DatePicker = memo(
50
98
  iconName: isActive ? "DropdownArrowUp16px" : "DropdownArrowBottom16px"
51
99
  }
52
100
  ) }),
53
- isActive && /* @__PURE__ */ jsx(
101
+ pickerType === "days" && isActive && /* @__PURE__ */ jsx(
54
102
  DatePickerModal,
55
103
  {
56
104
  onChangeValue: onDate,
57
105
  date,
58
106
  setActive,
59
- before: typeof before === "string" ? new Date(before) : before
107
+ before: typeof before === "string" ? new Date(before) : before,
108
+ onType: setType
109
+ }
110
+ ),
111
+ pickerType === "months" && isActive && /* @__PURE__ */ jsx(
112
+ MonthPickerModal,
113
+ {
114
+ onChangeValue: onDate,
115
+ date,
116
+ setActive,
117
+ before: typeof before === "string" ? new Date(before) : before,
118
+ onType: setType
119
+ }
120
+ ),
121
+ pickerType === "years" && isActive && /* @__PURE__ */ jsx(
122
+ YearPickerModal,
123
+ {
124
+ onChangeValue: onDate,
125
+ date,
126
+ setActive,
127
+ before: typeof before === "string" ? new Date(before) : before,
128
+ onType: setType
60
129
  }
61
130
  )
62
131
  ] });
@@ -3,6 +3,7 @@ type DatePickerModal = {
3
3
  onChangeValue: (d: Date) => void;
4
4
  setActive: (s: boolean) => void;
5
5
  before?: Date;
6
+ onType?: (s: 'days' | 'months' | 'years') => void;
6
7
  };
7
- export declare function DatePickerModal({ date, onChangeValue, setActive, before }: DatePickerModal): import("react/jsx-runtime").JSX.Element;
8
+ export declare function DatePickerModal({ date, onChangeValue, setActive, before, onType }: DatePickerModal): import("react/jsx-runtime").JSX.Element;
8
9
  export {};
@@ -1,9 +1,184 @@
1
- import "react/jsx-runtime";
2
- import "react";
3
- import "./constants.js";
4
- import { D } from "../../DatePickerModal-BM0BgzTb.js";
5
- import "../../utils/index.js";
6
- import "../Button/Button.js";
1
+ import { jsx, Fragment, jsxs } from "react/jsx-runtime";
2
+ import { useRef, useState, useEffect } from "react";
3
+ import { week } from "./constants.js";
4
+ import { c as cls } from "../../styles.module-BZXDqssF.js";
5
+ import { Icon } from "../../icons/Icon.js";
6
+ import { formating } from "../../utils/index.js";
7
+ import { Button } from "../Button/Button.js";
8
+ function DatePickerModal({
9
+ date,
10
+ onChangeValue,
11
+ setActive,
12
+ before,
13
+ onType
14
+ }) {
15
+ const field = useRef(null);
16
+ const _current = new Date(date);
17
+ const _selecte = new Date(date);
18
+ const current = {
19
+ y: _current.getFullYear(),
20
+ d: _current.getDate(),
21
+ m: _current.getMonth() + 1
22
+ };
23
+ const selecte = {
24
+ y: _selecte.getFullYear(),
25
+ d: _selecte.getDate(),
26
+ m: _selecte.getMonth() + 1
27
+ };
28
+ const countWorkDays = 4;
29
+ const [month, setMonth] = useState({ y: selecte.y, m: selecte.m });
30
+ const blockWidth = 368;
31
+ useEffect(() => {
32
+ var _a, _b, _c, _d;
33
+ const windowHeight = window.innerHeight;
34
+ const windowWidth = window.innerWidth;
35
+ if (field.current !== null) {
36
+ const inputWidth = ((_b = (_a = field == null ? void 0 : field.current) == null ? void 0 : _a.parentElement) == null ? void 0 : _b.offsetWidth) || 0;
37
+ const inputHeight = (_d = (_c = field == null ? void 0 : field.current) == null ? void 0 : _c.parentElement) == null ? void 0 : _d.offsetHeight;
38
+ const inputPosition = field.current.getBoundingClientRect();
39
+ const calendarSize = field.current.offsetHeight;
40
+ if (windowHeight < inputPosition.y + calendarSize) {
41
+ field.current.style.top = -calendarSize + "px";
42
+ } else {
43
+ field.current.style.top = inputHeight + "px";
44
+ }
45
+ if (windowWidth < inputPosition.x + blockWidth) {
46
+ field.current.style.left = inputWidth - blockWidth + "px";
47
+ }
48
+ field.current.style.opacity = "1";
49
+ }
50
+ }, [month]);
51
+ const countPrevDays = (e) => {
52
+ let dayOfWeek = e.getDay();
53
+ if (dayOfWeek === 0) dayOfWeek = 7;
54
+ return dayOfWeek - 1;
55
+ };
56
+ const currentMonthIndex = month.m - 1;
57
+ const currentMonthFull = new Date(month.y, currentMonthIndex);
58
+ const days = [];
59
+ const prevDays = () => {
60
+ const prevMonth = new Date(currentMonthFull);
61
+ prevMonth.setDate(prevMonth.getDate() - 1);
62
+ const lastDayPrevMohth = prevMonth.getDate();
63
+ const prevList = [];
64
+ for (let i = 0; i < countPrevDays(currentMonthFull); i++) {
65
+ prevList.push(lastDayPrevMohth - i);
66
+ }
67
+ prevList.reverse();
68
+ return prevList;
69
+ };
70
+ const prevDaysArray = prevDays();
71
+ while (currentMonthFull.getMonth() === currentMonthIndex) {
72
+ days.push(currentMonthFull.getDate());
73
+ currentMonthFull.setDate(currentMonthFull.getDate() + 1);
74
+ }
75
+ const nextDays = () => {
76
+ const totalViewDays = 42;
77
+ const daysCount = totalViewDays - (prevDaysArray.length + days.length);
78
+ const nextList = [];
79
+ for (let i = 1; i <= daysCount; i++) {
80
+ nextList.push(i);
81
+ }
82
+ return nextList;
83
+ };
84
+ const nextDaysArray = nextDays();
85
+ const update = (m, y) => {
86
+ y = m > 12 ? y + 1 : m < 1 ? y - 1 : y;
87
+ m = m > 12 ? 1 : m < 1 ? 12 : m;
88
+ return { y, m };
89
+ };
90
+ const onExit = () => {
91
+ setActive(false);
92
+ };
93
+ const next = () => {
94
+ setMonth(update(month.m + 1, month.y));
95
+ };
96
+ const prev = () => {
97
+ setMonth(update(month.m - 1, month.y));
98
+ };
99
+ const isBefore = (activeDate) => {
100
+ if (before) {
101
+ const beforeDate = before.getTime();
102
+ if (beforeDate > activeDate) return true;
103
+ }
104
+ return false;
105
+ };
106
+ const send = (searchDate) => {
107
+ if (isBefore(
108
+ (/* @__PURE__ */ new Date(
109
+ `${month.y}-${formating.Number(2, month.m)}-${formating.Number(2, searchDate)}`
110
+ )).getTime()
111
+ ))
112
+ return;
113
+ onChangeValue(
114
+ /* @__PURE__ */ new Date(
115
+ `${month.y}-${formating.Number(2, month.m)}-${formating.Number(2, searchDate)}`
116
+ )
117
+ );
118
+ onExit();
119
+ };
120
+ return /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsxs("div", { className: [cls["calendar-block"]].join(" "), ref: field, children: [
121
+ /* @__PURE__ */ jsxs("div", { className: cls["h"], children: [
122
+ /* @__PURE__ */ jsx(
123
+ Button,
124
+ {
125
+ isIconButton: true,
126
+ iconName: "DropdownArrowLeft16px",
127
+ onClick: prev,
128
+ variant: "secondary-gray",
129
+ size: "l"
130
+ }
131
+ ),
132
+ /* @__PURE__ */ jsxs("div", { className: cls["d"], onClick: () => onType == null ? void 0 : onType("months"), children: [
133
+ formating.Month(month.m).name,
134
+ "’",
135
+ month.y.toString().slice(-2),
136
+ /* @__PURE__ */ jsx(Icon, { iconName: "DropdownArrowBottom16px" })
137
+ ] }),
138
+ /* @__PURE__ */ jsx(
139
+ Button,
140
+ {
141
+ isIconButton: true,
142
+ iconName: "DropdownArrowRight16px",
143
+ onClick: next,
144
+ variant: "secondary-gray",
145
+ size: "l"
146
+ }
147
+ )
148
+ ] }),
149
+ /* @__PURE__ */ jsxs("div", { className: cls["b"], children: [
150
+ week.map((i, s) => /* @__PURE__ */ jsx(
151
+ "div",
152
+ {
153
+ className: `${s > countWorkDays ? [cls["m"], cls["orange"]].join(" ") : cls["m"]}`,
154
+ children: i
155
+ },
156
+ `v${s}`
157
+ )),
158
+ prevDaysArray.map((el, key) => /* @__PURE__ */ jsx("div", { className: cls["m"], children: el }, key)),
159
+ days.map((i, s) => /* @__PURE__ */ jsx(
160
+ "div",
161
+ {
162
+ className: isBefore(
163
+ (/* @__PURE__ */ new Date(
164
+ `${month.y}-${formating.Number(2, month.m)}-${formating.Number(2, i)}`
165
+ )).getTime()
166
+ ) ? cls["m"] : cls["a"],
167
+ children: i !== 0 ? /* @__PURE__ */ jsx(
168
+ "b",
169
+ {
170
+ className: current.y === month.y && current.m === month.m && current.d === i ? cls["current"] : "",
171
+ onClick: () => send(i),
172
+ children: i
173
+ }
174
+ ) : /* @__PURE__ */ jsx("p", {})
175
+ },
176
+ s
177
+ )),
178
+ nextDaysArray.map((el, key) => /* @__PURE__ */ jsx("div", { className: cls["m"], children: el }, key))
179
+ ] })
180
+ ] }) });
181
+ }
7
182
  export {
8
- D as DatePickerModal
183
+ DatePickerModal
9
184
  };
@@ -0,0 +1,9 @@
1
+ type MonthPickerModal = {
2
+ date: Date;
3
+ onChangeValue: (d: Date) => void;
4
+ setActive: (s: boolean) => void;
5
+ before?: Date;
6
+ onType?: (s: 'years') => void;
7
+ };
8
+ export declare function MonthPickerModal({ date, onChangeValue, before, onType }: MonthPickerModal): import("react/jsx-runtime").JSX.Element;
9
+ export {};
@@ -0,0 +1,123 @@
1
+ import { jsx, Fragment, jsxs } from "react/jsx-runtime";
2
+ import { useRef, useState, useEffect } from "react";
3
+ import { months } from "./constants.js";
4
+ import { c as cls } from "../../styles.module-BZXDqssF.js";
5
+ import { Icon } from "../../icons/Icon.js";
6
+ import { formating } from "../../utils/index.js";
7
+ import { Button } from "../Button/Button.js";
8
+ function MonthPickerModal({
9
+ date,
10
+ onChangeValue,
11
+ before,
12
+ onType
13
+ }) {
14
+ const field = useRef(null);
15
+ const _current = new Date(date);
16
+ const _selecte = new Date(date);
17
+ const current = {
18
+ y: _current.getFullYear(),
19
+ d: _current.getDate(),
20
+ m: _current.getMonth() + 1
21
+ };
22
+ const selecte = {
23
+ y: _selecte.getFullYear(),
24
+ d: _selecte.getDate(),
25
+ m: _selecte.getMonth() + 1
26
+ };
27
+ const [year, setYear] = useState(selecte.y);
28
+ const blockWidth = 368;
29
+ useEffect(() => {
30
+ var _a, _b, _c, _d;
31
+ const windowHeight = window.innerHeight;
32
+ const windowWidth = window.innerWidth;
33
+ if (field.current !== null) {
34
+ const inputWidth = ((_b = (_a = field == null ? void 0 : field.current) == null ? void 0 : _a.parentElement) == null ? void 0 : _b.offsetWidth) || 0;
35
+ const inputHeight = (_d = (_c = field == null ? void 0 : field.current) == null ? void 0 : _c.parentElement) == null ? void 0 : _d.offsetHeight;
36
+ const inputPosition = field.current.getBoundingClientRect();
37
+ const calendarSize = field.current.offsetHeight;
38
+ if (windowHeight < inputPosition.y + calendarSize) {
39
+ field.current.style.top = -calendarSize + "px";
40
+ } else {
41
+ field.current.style.top = inputHeight + "px";
42
+ }
43
+ if (windowWidth < inputPosition.x + blockWidth) {
44
+ field.current.style.left = inputWidth - blockWidth + "px";
45
+ }
46
+ field.current.style.opacity = "1";
47
+ }
48
+ }, []);
49
+ const next = () => {
50
+ setYear(year + 1);
51
+ };
52
+ const prev = () => {
53
+ setYear(year - 1);
54
+ };
55
+ const isBefore = (activeDate) => {
56
+ if (before) {
57
+ const beforeDate = before.getTime();
58
+ if (beforeDate > activeDate) return true;
59
+ }
60
+ return false;
61
+ };
62
+ const send = (searchDate) => {
63
+ if (isBefore(
64
+ (/* @__PURE__ */ new Date(
65
+ `${year}-${formating.Number(2, searchDate)}-${formating.Number(2, selecte.d)}`
66
+ )).getTime()
67
+ ))
68
+ return;
69
+ onChangeValue(
70
+ /* @__PURE__ */ new Date(
71
+ `${year}-${formating.Number(2, searchDate)}-${formating.Number(2, selecte.d)}`
72
+ )
73
+ );
74
+ };
75
+ return /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsxs("div", { className: [cls["calendar-block"]].join(" "), ref: field, children: [
76
+ /* @__PURE__ */ jsxs("div", { className: cls["h"], children: [
77
+ /* @__PURE__ */ jsx(
78
+ Button,
79
+ {
80
+ isIconButton: true,
81
+ iconName: "DropdownArrowLeft16px",
82
+ onClick: prev,
83
+ variant: "secondary-gray",
84
+ size: "l"
85
+ }
86
+ ),
87
+ /* @__PURE__ */ jsxs("div", { onClick: () => onType == null ? void 0 : onType("years"), className: cls["d"], children: [
88
+ year.toString(),
89
+ /* @__PURE__ */ jsx(Icon, { iconName: "DropdownArrowBottom16px" })
90
+ ] }),
91
+ /* @__PURE__ */ jsx(
92
+ Button,
93
+ {
94
+ isIconButton: true,
95
+ iconName: "DropdownArrowRight16px",
96
+ onClick: next,
97
+ variant: "secondary-gray",
98
+ size: "l"
99
+ }
100
+ )
101
+ ] }),
102
+ /* @__PURE__ */ jsx("div", { className: cls["monthGrid"], children: months.map((i, s) => /* @__PURE__ */ jsx(
103
+ "div",
104
+ {
105
+ className: isBefore(
106
+ (/* @__PURE__ */ new Date(`${year}-${formating.Number(2, s + 1)}`)).getTime()
107
+ ) ? cls["m"] : cls["a"],
108
+ children: /* @__PURE__ */ jsx(
109
+ "b",
110
+ {
111
+ className: current.y === year && current.m === s + 1 ? cls["current"] : "",
112
+ onClick: () => send(s + 1),
113
+ children: i
114
+ }
115
+ )
116
+ },
117
+ s
118
+ )) })
119
+ ] }) });
120
+ }
121
+ export {
122
+ MonthPickerModal
123
+ };
@@ -0,0 +1,9 @@
1
+ type YearPickerModal = {
2
+ date: Date;
3
+ onChangeValue: (d: Date) => void;
4
+ setActive: (s: boolean) => void;
5
+ before?: Date;
6
+ onType?: (s: 'years') => void;
7
+ };
8
+ export declare function YearPickerModal({ date, onChangeValue, before, onType }: YearPickerModal): import("react/jsx-runtime").JSX.Element;
9
+ export {};
@@ -0,0 +1,120 @@
1
+ import { jsx, Fragment, jsxs } from "react/jsx-runtime";
2
+ import { useRef, useState, useEffect } from "react";
3
+ import { c as cls } from "../../styles.module-BZXDqssF.js";
4
+ import { formating } from "../../utils/index.js";
5
+ import { Button } from "../Button/Button.js";
6
+ function YearPickerModal({
7
+ date,
8
+ onChangeValue,
9
+ before,
10
+ onType
11
+ }) {
12
+ const field = useRef(null);
13
+ const _current = new Date(date);
14
+ const _selecte = new Date(date);
15
+ const current = {
16
+ y: _current.getFullYear(),
17
+ d: _current.getDate(),
18
+ m: _current.getMonth() + 1
19
+ };
20
+ const selecte = {
21
+ y: _selecte.getFullYear(),
22
+ d: _selecte.getDate(),
23
+ m: _selecte.getMonth() + 1
24
+ };
25
+ const [year, setYear] = useState(selecte.y);
26
+ const blockWidth = 368;
27
+ const firstYears = year - 7;
28
+ const years = Array.from(Array(15).keys()).map((i) => i + firstYears);
29
+ useEffect(() => {
30
+ var _a, _b, _c, _d;
31
+ const windowHeight = window.innerHeight;
32
+ const windowWidth = window.innerWidth;
33
+ if (field.current !== null) {
34
+ const inputWidth = ((_b = (_a = field == null ? void 0 : field.current) == null ? void 0 : _a.parentElement) == null ? void 0 : _b.offsetWidth) || 0;
35
+ const inputHeight = (_d = (_c = field == null ? void 0 : field.current) == null ? void 0 : _c.parentElement) == null ? void 0 : _d.offsetHeight;
36
+ const inputPosition = field.current.getBoundingClientRect();
37
+ const calendarSize = field.current.offsetHeight;
38
+ if (windowHeight < inputPosition.y + calendarSize) {
39
+ field.current.style.top = -calendarSize + "px";
40
+ } else {
41
+ field.current.style.top = inputHeight + "px";
42
+ }
43
+ if (windowWidth < inputPosition.x + blockWidth) {
44
+ field.current.style.left = inputWidth - blockWidth + "px";
45
+ }
46
+ field.current.style.opacity = "1";
47
+ }
48
+ }, []);
49
+ const next = () => {
50
+ setYear(year + 15);
51
+ };
52
+ const prev = () => {
53
+ setYear(year - 15);
54
+ };
55
+ const isBefore = (activeDate) => {
56
+ if (before) {
57
+ const beforeDate = before.getTime();
58
+ if (beforeDate > activeDate) return true;
59
+ }
60
+ return false;
61
+ };
62
+ const send = (searchDate) => {
63
+ if (isBefore(
64
+ (/* @__PURE__ */ new Date(
65
+ `${searchDate}-${formating.Number(2, selecte.m)}-${formating.Number(2, selecte.d)}`
66
+ )).getTime()
67
+ ))
68
+ return;
69
+ onChangeValue(
70
+ /* @__PURE__ */ new Date(
71
+ `${searchDate}-${formating.Number(2, selecte.m)}-${formating.Number(2, selecte.d)}`
72
+ )
73
+ );
74
+ };
75
+ return /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsxs("div", { className: [cls["calendar-block"]].join(" "), ref: field, children: [
76
+ /* @__PURE__ */ jsxs("div", { className: cls["h"], children: [
77
+ /* @__PURE__ */ jsx(
78
+ Button,
79
+ {
80
+ isIconButton: true,
81
+ iconName: "DropdownArrowLeft16px",
82
+ onClick: prev,
83
+ variant: "secondary-gray",
84
+ size: "l"
85
+ }
86
+ ),
87
+ /* @__PURE__ */ jsx("div", { onClick: () => onType == null ? void 0 : onType("years"), className: cls["d"] }),
88
+ /* @__PURE__ */ jsx(
89
+ Button,
90
+ {
91
+ isIconButton: true,
92
+ iconName: "DropdownArrowRight16px",
93
+ onClick: next,
94
+ variant: "secondary-gray",
95
+ size: "l"
96
+ }
97
+ )
98
+ ] }),
99
+ /* @__PURE__ */ jsx("div", { className: cls["monthGrid"], children: years.map((i, s) => /* @__PURE__ */ jsx(
100
+ "div",
101
+ {
102
+ className: isBefore(
103
+ (/* @__PURE__ */ new Date(`${i}-${formating.Number(2, current.m)}`)).getTime()
104
+ ) ? cls["m"] : cls["a"],
105
+ children: /* @__PURE__ */ jsx(
106
+ "b",
107
+ {
108
+ className: current.y === i ? cls["current"] : "",
109
+ onClick: () => send(i),
110
+ children: i
111
+ }
112
+ )
113
+ },
114
+ s
115
+ )) })
116
+ ] }) });
117
+ }
118
+ export {
119
+ YearPickerModal
120
+ };
@@ -4,3 +4,4 @@ export declare enum EDatePickerBeforeDate {
4
4
  CurrentDate3 = "2024-07-11"
5
5
  }
6
6
  export declare const week: string[];
7
+ export declare const months: string[];
@@ -5,7 +5,22 @@ var EDatePickerBeforeDate = /* @__PURE__ */ ((EDatePickerBeforeDate2) => {
5
5
  return EDatePickerBeforeDate2;
6
6
  })(EDatePickerBeforeDate || {});
7
7
  const week = ["пн", "вт", "ср", "чт", "пт", "сб", "вс"];
8
+ const months = [
9
+ "Январь",
10
+ "Февраль",
11
+ "Март",
12
+ "Апрель",
13
+ "Май",
14
+ "Июнь",
15
+ "Июль",
16
+ "Август",
17
+ "Сентябрь",
18
+ "Октябрь",
19
+ "Ноябрь",
20
+ "Декабрь"
21
+ ];
8
22
  export {
9
23
  EDatePickerBeforeDate,
24
+ months,
10
25
  week
11
26
  };
@@ -7,18 +7,18 @@ import { Icon } from "../../icons/Icon.js";
7
7
  import { Button } from "../Button/Button.js";
8
8
  import { c as cls } from "../../Input-6mudFqTb.js";
9
9
  import { EInputVariant } from "../Input/constants.js";
10
- import '../../assets/TextArea.css';const textarea = "_textarea_191db_2";
11
- const label = "_label_191db_11";
12
- const s = "_s_191db_36";
13
- const m = "_m_191db_44";
14
- const l = "_l_191db_11";
10
+ import '../../assets/TextArea.css';const textarea = "_textarea_mbbjz_2";
11
+ const label = "_label_mbbjz_11";
12
+ const s = "_s_mbbjz_35";
13
+ const m = "_m_mbbjz_43";
14
+ const l = "_l_mbbjz_11";
15
15
  const textareaCls = {
16
- "textarea-wrapper": "_textarea-wrapper_191db_2",
16
+ "textarea-wrapper": "_textarea-wrapper_mbbjz_2",
17
17
  textarea,
18
- "has-label": "_has-label_191db_8",
18
+ "has-label": "_has-label_mbbjz_8",
19
19
  label,
20
- "has-left-slot": "_has-left-slot_191db_25",
21
- "active-label": "_active-label_191db_28",
20
+ "has-left-slot": "_has-left-slot_mbbjz_24",
21
+ "active-label": "_active-label_mbbjz_27",
22
22
  s,
23
23
  m,
24
24
  l
@@ -23,7 +23,7 @@ const MIME = {
23
23
  };
24
24
  const filesTyps = ["jpeg", "jpg", "png", "tiff", "gif"];
25
25
  const generateId = (min, max) => {
26
- return Math.random() * (max - min) + min;
26
+ return Math.round(Math.random() * (max - min) + min);
27
27
  };
28
28
  const Uploader = forwardRef(
29
29
  (props, ref) => {
@@ -0,0 +1,36 @@
1
+ import './assets/styles.css';const input = "_input_3fxwe_2";
2
+ const wrapper = "_wrapper_3fxwe_41";
3
+ const active = "_active_3fxwe_47";
4
+ const button = "_button_3fxwe_35";
5
+ const h = "_h_3fxwe_97";
6
+ const b = "_b_3fxwe_35";
7
+ const d = "_d_3fxwe_10";
8
+ const m = "_m_3fxwe_118";
9
+ const a = "_a_3fxwe_47";
10
+ const prev = "_prev_3fxwe_120";
11
+ const orange = "_orange_3fxwe_136";
12
+ const current = "_current_3fxwe_161";
13
+ const monthGrid = "_monthGrid_3fxwe_166";
14
+ const cls = {
15
+ input,
16
+ "input-wrapper": "_input-wrapper_3fxwe_6",
17
+ "date-wrapper": "_date-wrapper_3fxwe_10",
18
+ "button-wrapper": "_button-wrapper_3fxwe_35",
19
+ wrapper,
20
+ active,
21
+ button,
22
+ "field-overlow": "_field-overlow_3fxwe_68",
23
+ "calendar-block": "_calendar-block_3fxwe_74",
24
+ h,
25
+ b,
26
+ d,
27
+ m,
28
+ a,
29
+ prev,
30
+ orange,
31
+ current,
32
+ monthGrid
33
+ };
34
+ export {
35
+ cls as c
36
+ };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "mimir-ui-kit",
3
3
  "private": false,
4
- "version": "1.20.5",
4
+ "version": "1.21.0",
5
5
  "type": "module",
6
6
  "exports": {
7
7
  ".": {
@@ -1,204 +0,0 @@
1
- import { jsx, Fragment, jsxs } from "react/jsx-runtime";
2
- import { useRef, useState, useEffect } from "react";
3
- import { week } from "./components/DatePicker/constants.js";
4
- import { formating } from "./utils/index.js";
5
- import { Button } from "./components/Button/Button.js";
6
- import './assets/DatePickerModal.css';const input = "_input_1ndkx_2";
7
- const wrapper = "_wrapper_1ndkx_21";
8
- const active = "_active_1ndkx_27";
9
- const button = "_button_1ndkx_35";
10
- const h = "_h_1ndkx_81";
11
- const b = "_b_1ndkx_35";
12
- const d = "_d_1ndkx_6";
13
- const m = "_m_1ndkx_100";
14
- const a = "_a_1ndkx_27";
15
- const prev = "_prev_1ndkx_102";
16
- const orange = "_orange_1ndkx_118";
17
- const current = "_current_1ndkx_143";
18
- const cls = {
19
- input,
20
- "date-wrapper": "_date-wrapper_1ndkx_6",
21
- wrapper,
22
- active,
23
- "input-wrapper": "_input-wrapper_1ndkx_31",
24
- "button-wrapper": "_button-wrapper_1ndkx_35",
25
- button,
26
- "field-overlow": "_field-overlow_1ndkx_52",
27
- "calendar-block": "_calendar-block_1ndkx_58",
28
- h,
29
- b,
30
- d,
31
- m,
32
- a,
33
- prev,
34
- orange,
35
- current
36
- };
37
- function DatePickerModal({
38
- date,
39
- onChangeValue,
40
- setActive,
41
- before
42
- }) {
43
- const field = useRef(null);
44
- const _current = new Date(date);
45
- const _selecte = new Date(date);
46
- const current2 = {
47
- y: _current.getFullYear(),
48
- d: _current.getDate(),
49
- m: _current.getMonth() + 1
50
- };
51
- const selecte = {
52
- y: _selecte.getFullYear(),
53
- d: _selecte.getDate(),
54
- m: _selecte.getMonth() + 1
55
- };
56
- const countWorkDays = 4;
57
- const [month, setMonth] = useState({ y: selecte.y, m: selecte.m });
58
- useEffect(() => {
59
- const windowHeight = window.innerHeight;
60
- if (field.current !== null) {
61
- const inputPosition = field.current.getBoundingClientRect();
62
- const calendarSize = field.current.offsetHeight;
63
- if (windowHeight < inputPosition.y + calendarSize) {
64
- field.current.style.top = -calendarSize + "px";
65
- } else {
66
- field.current.style.top = "65px";
67
- }
68
- field.current.style.opacity = "1";
69
- }
70
- }, [month]);
71
- const countPrevDays = (e) => {
72
- let dayOfWeek = e.getDay();
73
- if (dayOfWeek === 0) dayOfWeek = 7;
74
- return dayOfWeek - 1;
75
- };
76
- const currentMonthIndex = month.m - 1;
77
- const currentMonthFull = new Date(month.y, currentMonthIndex);
78
- const days = [];
79
- const prevDays = () => {
80
- const prevMonth = new Date(currentMonthFull);
81
- prevMonth.setDate(prevMonth.getDate() - 1);
82
- const lastDayPrevMohth = prevMonth.getDate();
83
- const prevList = [];
84
- for (let i = 0; i < countPrevDays(currentMonthFull); i++) {
85
- prevList.push(lastDayPrevMohth - i);
86
- }
87
- prevList.reverse();
88
- return prevList;
89
- };
90
- const prevDaysArray = prevDays();
91
- while (currentMonthFull.getMonth() === currentMonthIndex) {
92
- days.push(currentMonthFull.getDate());
93
- currentMonthFull.setDate(currentMonthFull.getDate() + 1);
94
- }
95
- const nextDays = () => {
96
- const totalViewDays = 42;
97
- const daysCount = totalViewDays - (prevDaysArray.length + days.length);
98
- const nextList = [];
99
- for (let i = 1; i <= daysCount; i++) {
100
- nextList.push(i);
101
- }
102
- return nextList;
103
- };
104
- const nextDaysArray = nextDays();
105
- const update = (m2, y) => {
106
- y = m2 > 12 ? y + 1 : m2 < 1 ? y - 1 : y;
107
- m2 = m2 > 12 ? 1 : m2 < 1 ? 12 : m2;
108
- return { y, m: m2 };
109
- };
110
- const onExit = () => {
111
- setActive(false);
112
- };
113
- const next = () => {
114
- setMonth(update(month.m + 1, month.y));
115
- };
116
- const prev2 = () => {
117
- setMonth(update(month.m - 1, month.y));
118
- };
119
- const isBefore = (activeDate) => {
120
- if (before) {
121
- const beforeDate = before.getTime();
122
- if (beforeDate > activeDate) return true;
123
- }
124
- return false;
125
- };
126
- const send = (searchDate) => {
127
- if (isBefore(
128
- (/* @__PURE__ */ new Date(
129
- `${month.y}-${formating.Number(2, month.m)}-${formating.Number(2, searchDate)}`
130
- )).getTime()
131
- ))
132
- return;
133
- onChangeValue(
134
- /* @__PURE__ */ new Date(
135
- `${month.y}-${formating.Number(2, month.m)}-${formating.Number(2, searchDate)}`
136
- )
137
- );
138
- onExit();
139
- };
140
- return /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsxs("div", { className: [cls["calendar-block"]].join(" "), ref: field, children: [
141
- /* @__PURE__ */ jsxs("div", { className: cls["h"], children: [
142
- /* @__PURE__ */ jsx(
143
- Button,
144
- {
145
- isIconButton: true,
146
- iconName: "DropdownArrowLeft16px",
147
- onClick: prev2,
148
- variant: "secondary-gray",
149
- size: "l"
150
- }
151
- ),
152
- /* @__PURE__ */ jsxs("div", { className: cls["d"], children: [
153
- formating.Month(month.m).name,
154
- "’",
155
- month.y.toString().slice(-2)
156
- ] }),
157
- /* @__PURE__ */ jsx(
158
- Button,
159
- {
160
- isIconButton: true,
161
- iconName: "DropdownArrowRight16px",
162
- onClick: next,
163
- variant: "secondary-gray",
164
- size: "l"
165
- }
166
- )
167
- ] }),
168
- /* @__PURE__ */ jsxs("div", { className: cls["b"], children: [
169
- week.map((i, s) => /* @__PURE__ */ jsx(
170
- "div",
171
- {
172
- className: `${s > countWorkDays ? [cls["m"], cls["orange"]].join(" ") : cls["m"]}`,
173
- children: i
174
- },
175
- `v${s}`
176
- )),
177
- prevDaysArray.map((el, key) => /* @__PURE__ */ jsx("div", { className: cls["m"], children: el }, key)),
178
- days.map((i, s) => /* @__PURE__ */ jsx(
179
- "div",
180
- {
181
- className: isBefore(
182
- (/* @__PURE__ */ new Date(
183
- `${month.y}-${formating.Number(2, month.m)}-${formating.Number(2, i)}`
184
- )).getTime()
185
- ) ? cls["m"] : cls["a"],
186
- children: i !== 0 ? /* @__PURE__ */ jsx(
187
- "b",
188
- {
189
- className: current2.y === month.y && current2.m === month.m && current2.d === i ? cls["current"] : "",
190
- onClick: () => send(i),
191
- children: i
192
- }
193
- ) : /* @__PURE__ */ jsx("p", {})
194
- },
195
- s
196
- )),
197
- nextDaysArray.map((el, key) => /* @__PURE__ */ jsx("div", { className: cls["m"], children: el }, key))
198
- ] })
199
- ] }) });
200
- }
201
- export {
202
- DatePickerModal as D,
203
- cls as c
204
- };
@@ -1 +0,0 @@
1
- ._input_1ndkx_2{padding-right:var(--space-3xl)}._date-wrapper_1ndkx_6{position:relative;width:100%}._date-wrapper_1ndkx_6:hover input{background:var(--input-bg-color-hover)}._date-wrapper_1ndkx_6:before{position:absolute;top:0;right:60px;bottom:0;left:0;z-index:3;cursor:pointer;content:""}._wrapper_1ndkx_21{position:relative;display:flex;align-items:center;border-radius:var(--control-radius-s)}._wrapper_1ndkx_21._active_1ndkx_27{border-bottom:1px solid var(--citrine-100)}._input-wrapper_1ndkx_31{flex:1}._button-wrapper_1ndkx_35{position:absolute;top:0;right:0;z-index:2;display:flex;width:44px;height:100%;max-height:var(--button-height-xxl)}._button_1ndkx_35{align-self:center;background-color:transparent;border-radius:var(--control-radius-s)}._field-overlow_1ndkx_52{position:fixed;top:0;right:0;bottom:0;left:0;z-index:3}._calendar-block_1ndkx_58{position:absolute;z-index:3;display:flex;flex-direction:column;width:368px;max-height:none;padding:16px;font-weight:var(--font-weight-text-regular);font-size:var(--size-text-l);font-family:var(--font-inter);font-style:normal;line-height:var(--line-height-text-2xs);text-align:center;text-overflow:ellipsis;background:#fff;border-radius:var(--control-radius-s);box-shadow:0 0 #16172705,0 2px 4px #16172705,0 6px 6px #16172705,0 15px 9px #16172703;opacity:0;transition:height .5s ease-in;font-feature-settings:"zero";font-variant-numeric:slashed-zero}._calendar-block_1ndkx_58 ._h_1ndkx_81{display:flex;width:100%;color:var(--black-100)}._calendar-block_1ndkx_58 ._b_1ndkx_35{display:grid;grid-template-columns:repeat(7,1fr)}._calendar-block_1ndkx_58 ._d_1ndkx_6{display:flex;flex:1;align-items:center;justify-content:center;color:var(--black-100)}._calendar-block_1ndkx_58 ._m_1ndkx_100,._calendar-block_1ndkx_58 ._a_1ndkx_27,._calendar-block_1ndkx_58 ._prev_1ndkx_102{width:48px;height:48px;overflow:hidden}._calendar-block_1ndkx_58 ._m_1ndkx_100{display:flex;align-items:center;justify-content:center;color:var(--disabled)}._calendar-block_1ndkx_58 ._m_1ndkx_100 b{font-weight:var(--font-weight-text-regular)}._calendar-block_1ndkx_58 ._orange_1ndkx_118{color:var(--citrine-100)}._calendar-block_1ndkx_58 ._a_1ndkx_27{color:var(--black-100);border-radius:var(--control-radius-s)}._calendar-block_1ndkx_58 ._a_1ndkx_27 b{display:flex;align-items:center;justify-content:center;width:100%;height:100%;font-weight:var(--font-weight-text-regular);cursor:pointer}._calendar-block_1ndkx_58 ._a_1ndkx_27 b:hover{background:var(--black-10)}._calendar-block_1ndkx_58 ._a_1ndkx_27 b:active{color:var(--white);background:var(--sapphire-100)}._calendar-block_1ndkx_58 ._current_1ndkx_143{background:var(--sapphire-10);border-radius:var(--control-radius-s)}