colibri-ui 0.7.57 → 0.7.59

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 (225) hide show
  1. package/Badge/Badge.module.css +13 -15
  2. package/Badge/Control/Control.module.css +1 -1
  3. package/Button/Button.module.css +44 -30
  4. package/Button/index.props.d.ts +1 -1
  5. package/Calendar/components/ContinueButton/index.d.ts +10 -0
  6. package/Calendar/components/ContinueButton/index.js +45 -0
  7. package/Calendar/components/ContinueButton/index.module.css +4 -0
  8. package/Calendar/components/Month/Month.d.ts +15 -0
  9. package/Calendar/components/Month/Month.js +142 -0
  10. package/Calendar/components/Month/index.module.css +143 -0
  11. package/Calendar/components/Presets/index.d.ts +19 -0
  12. package/Calendar/components/Presets/index.js +68 -0
  13. package/Calendar/components/Presets/index.module.css +28 -0
  14. package/Calendar/index.d.ts +20 -0
  15. package/Calendar/index.js +196 -0
  16. package/Calendar/index.module.css +98 -0
  17. package/Calendar/package.json +6 -0
  18. package/Calendar/utils/getMonthWeeks.d.ts +20 -0
  19. package/Calendar/utils/getMonthWeeks.js +81 -0
  20. package/Calendar/utils/getNumberOfMonthsBetweenDates.d.ts +4 -0
  21. package/Calendar/utils/getNumberOfMonthsBetweenDates.js +21 -0
  22. package/Calendar/utils/getPresets.d.ts +10 -0
  23. package/Calendar/utils/getStartMonth.d.ts +6 -0
  24. package/Calendar/utils/getStartMonth.js +15 -0
  25. package/Checkbox/Checkbox.module.css +14 -14
  26. package/Checkbox/index.js +1 -1
  27. package/Counter/Counter.module.css +3 -3
  28. package/Dropdown/Dropdown.module.css +7 -7
  29. package/Dropdown/index.js +3 -2
  30. package/Grid/Grid.module.css +5 -10
  31. package/Grid/Item/Grid-Item.module.css +1 -1
  32. package/Grid/Item/index.js +4 -2
  33. package/Grid/Item/index.props.d.ts +2 -1
  34. package/Icons/Check.d.ts +4 -0
  35. package/Icons/Check.js +41 -0
  36. package/Icons/Setting.d.ts +4 -0
  37. package/Image/Image.module.css +5 -6
  38. package/InputRadio/InputRadio.module.css +7 -9
  39. package/Menu/Menu.module.css +3 -3
  40. package/Menu/components/MenuItem/MenuItem.module.css +8 -7
  41. package/Menu/components/MenuItem/index.d.ts +2 -2
  42. package/Menu/components/MenuItem/index.js +9 -9
  43. package/Menu/index.d.ts +3 -2
  44. package/Menu/index.js +3 -4
  45. package/Menu/index.props.d.ts +2 -7
  46. package/Modal/Modal.module.css +19 -19
  47. package/Modal/components/Content/Content.module.css +1 -1
  48. package/Modal/index.js +4 -4
  49. package/RadioGroup/index.d.ts +2 -1
  50. package/Select/components/MenuOverlay/index.d.ts +11 -0
  51. package/Select/components/MenuOverlay/index.js +63 -0
  52. package/Select/components/MenuOverlay/index.module.css +4 -0
  53. package/Select/components/MenuOverlayItem/index.d.ts +13 -0
  54. package/Select/components/MenuOverlayItem/index.js +45 -0
  55. package/Select/index.d.ts +1 -1
  56. package/Select/index.js +19 -34
  57. package/Select/{Select.module.css → index.module.css} +12 -17
  58. package/Select/index.props.d.ts +6 -3
  59. package/Skeleton/Skeleton.module.css +4 -4
  60. package/Switch/Switch.module.css +22 -22
  61. package/Switch/index.js +1 -1
  62. package/Theme/colors/common.d.ts +27 -0
  63. package/Theme/colors/common.js +28 -0
  64. package/Theme/colors/index.d.ts +48 -0
  65. package/Theme/colors/index.js +12 -0
  66. package/Theme/colors/theme_buenos_aires.d.ts +47 -0
  67. package/Theme/colors/theme_buenos_aires.js +40 -0
  68. package/Theme/colors/theme_default.d.ts +47 -0
  69. package/Theme/colors/theme_default.js +40 -0
  70. package/Theme/global.css +7 -5
  71. package/Theme/index.d.ts +12 -0
  72. package/Theme/themes/buenos_aires.js +7 -7
  73. package/Theme/themes/default.d.ts +12 -0
  74. package/Theme/themes/default.js +94 -82
  75. package/TimeSelect/Label/index.d.ts +8 -0
  76. package/TimeSelect/helpers.d.ts +7 -0
  77. package/TimeSelect/index.d.ts +7 -0
  78. package/TimeSelect/index.props.d.ts +4 -0
  79. package/TimeSelect/package.json +6 -0
  80. package/Typography/Typography.module.css +3 -3
  81. package/Typography/index.d.ts +2 -2
  82. package/Typography/index.js +3 -3
  83. package/Typography/index.props.d.ts +2 -1
  84. package/base/BaseInput/BaseInput.module.css +4 -4
  85. package/base/BaseInput/index.js +1 -1
  86. package/base/InputRoot/InputRoot.module.css +22 -20
  87. package/base/InputRoot/index.js +5 -5
  88. package/esm/Badge/Badge.module.css +13 -15
  89. package/esm/Badge/Control/Control.module.css +1 -1
  90. package/esm/Badge/Control/index.js +2 -2
  91. package/esm/Badge/index.js +2 -2
  92. package/esm/Button/Button.module.css +44 -30
  93. package/esm/Button/index.js +5 -5
  94. package/esm/Button/index.props.d.ts +1 -1
  95. package/esm/Calendar/components/ContinueButton/index.d.ts +10 -0
  96. package/esm/Calendar/components/ContinueButton/index.js +37 -0
  97. package/esm/Calendar/components/ContinueButton/index.module.css +4 -0
  98. package/esm/Calendar/components/Month/Month.d.ts +15 -0
  99. package/esm/Calendar/components/Month/Month.js +116 -0
  100. package/esm/Calendar/components/Month/index.module.css +143 -0
  101. package/esm/Calendar/components/Presets/index.d.ts +19 -0
  102. package/esm/Calendar/components/Presets/index.js +42 -0
  103. package/esm/Calendar/components/Presets/index.module.css +28 -0
  104. package/esm/Calendar/index.d.ts +20 -0
  105. package/esm/Calendar/index.js +186 -0
  106. package/esm/Calendar/index.module.css +98 -0
  107. package/esm/Calendar/utils/getMonthWeeks.d.ts +20 -0
  108. package/esm/Calendar/utils/getMonthWeeks.js +79 -0
  109. package/esm/Calendar/utils/getNumberOfMonthsBetweenDates.d.ts +4 -0
  110. package/esm/Calendar/utils/getNumberOfMonthsBetweenDates.js +19 -0
  111. package/esm/Calendar/utils/getPresets.d.ts +10 -0
  112. package/esm/Calendar/utils/getStartMonth.d.ts +6 -0
  113. package/esm/Calendar/utils/getStartMonth.js +13 -0
  114. package/esm/Checkbox/Checkbox.module.css +14 -14
  115. package/esm/Checkbox/index.js +9 -9
  116. package/esm/ClickOutside/index.js +3 -3
  117. package/esm/Counter/Counter.module.css +3 -3
  118. package/esm/Counter/index.js +8 -8
  119. package/esm/DotsLoader/index.js +6 -6
  120. package/esm/Dropdown/Dropdown.module.css +7 -7
  121. package/esm/Dropdown/index.js +9 -8
  122. package/esm/Grid/Grid.module.css +5 -10
  123. package/esm/Grid/Item/Grid-Item.module.css +1 -1
  124. package/esm/Grid/Item/index.js +6 -4
  125. package/esm/Grid/Item/index.props.d.ts +2 -1
  126. package/esm/Grid/index.js +2 -2
  127. package/esm/Icons/Cart.js +3 -3
  128. package/esm/Icons/Check.d.ts +4 -0
  129. package/esm/Icons/Check.js +33 -0
  130. package/esm/Icons/Chevron.js +3 -3
  131. package/esm/Icons/Close.js +3 -3
  132. package/esm/Icons/EyeClosed.js +3 -3
  133. package/esm/Icons/EyeOpen.js +4 -4
  134. package/esm/Icons/Help.js +3 -3
  135. package/esm/Icons/Info.js +3 -3
  136. package/esm/Icons/Minus.js +3 -3
  137. package/esm/Icons/More.js +5 -5
  138. package/esm/Icons/Plus.js +5 -5
  139. package/esm/Icons/Setting.d.ts +4 -0
  140. package/esm/Icons/Trash.js +3 -3
  141. package/esm/Icons/User.js +4 -4
  142. package/esm/Image/Image.module.css +5 -6
  143. package/esm/Image/index.js +4 -4
  144. package/esm/Input/index.js +4 -4
  145. package/esm/InputRadio/InputRadio.module.css +7 -9
  146. package/esm/InputRadio/index.js +7 -7
  147. package/esm/Menu/Menu.module.css +3 -3
  148. package/esm/Menu/components/MenuItem/MenuItem.module.css +8 -7
  149. package/esm/Menu/components/MenuItem/index.d.ts +2 -2
  150. package/esm/Menu/components/MenuItem/index.js +11 -11
  151. package/esm/Menu/index.d.ts +3 -2
  152. package/esm/Menu/index.js +5 -6
  153. package/esm/Menu/index.props.d.ts +2 -7
  154. package/esm/Modal/Modal.module.css +19 -19
  155. package/esm/Modal/components/Close/index.js +2 -2
  156. package/esm/Modal/components/Content/Content.module.css +1 -1
  157. package/esm/Modal/components/Content/index.js +2 -2
  158. package/esm/Modal/components/Title/index.js +3 -3
  159. package/esm/Modal/index.js +13 -13
  160. package/esm/RadioGroup/Radio.js +2 -2
  161. package/esm/RadioGroup/index.d.ts +2 -1
  162. package/esm/RadioGroup/index.js +3 -3
  163. package/esm/Select/components/MenuOverlay/index.d.ts +11 -0
  164. package/esm/Select/components/MenuOverlay/index.js +53 -0
  165. package/esm/Select/components/MenuOverlay/index.module.css +4 -0
  166. package/esm/Select/components/MenuOverlayItem/index.d.ts +13 -0
  167. package/esm/Select/components/MenuOverlayItem/index.js +37 -0
  168. package/esm/Select/index.d.ts +1 -1
  169. package/esm/Select/index.js +26 -41
  170. package/esm/Select/{Select.module.css → index.module.css} +12 -17
  171. package/esm/Select/index.props.d.ts +6 -3
  172. package/esm/Separator/index.js +2 -2
  173. package/esm/Skeleton/Skeleton.module.css +4 -4
  174. package/esm/Skeleton/index.js +3 -3
  175. package/esm/Switch/Switch.module.css +22 -22
  176. package/esm/Switch/index.js +6 -6
  177. package/esm/Theme/colors/common.d.ts +27 -0
  178. package/esm/Theme/colors/common.js +20 -0
  179. package/esm/Theme/colors/index.d.ts +48 -0
  180. package/esm/Theme/colors/index.js +8 -0
  181. package/esm/Theme/colors/theme_buenos_aires.d.ts +47 -0
  182. package/esm/Theme/colors/theme_buenos_aires.js +31 -0
  183. package/esm/Theme/colors/theme_default.d.ts +47 -0
  184. package/esm/Theme/colors/theme_default.js +31 -0
  185. package/esm/Theme/global.css +7 -5
  186. package/esm/Theme/index.d.ts +12 -0
  187. package/esm/Theme/themes/buenos_aires.js +1 -1
  188. package/esm/Theme/themes/default.d.ts +12 -0
  189. package/esm/Theme/themes/default.js +13 -1
  190. package/esm/TimeSelect/Label/index.d.ts +8 -0
  191. package/esm/TimeSelect/helpers.d.ts +7 -0
  192. package/esm/TimeSelect/index.d.ts +7 -0
  193. package/esm/TimeSelect/index.props.d.ts +4 -0
  194. package/esm/Typography/Typography.module.css +3 -3
  195. package/esm/Typography/index.d.ts +2 -2
  196. package/esm/Typography/index.js +5 -5
  197. package/esm/Typography/index.props.d.ts +2 -1
  198. package/esm/base/BaseInput/BaseInput.module.css +4 -4
  199. package/esm/base/BaseInput/index.js +3 -3
  200. package/esm/base/FormField/index.js +4 -4
  201. package/esm/base/InputRoot/InputRoot.module.css +22 -20
  202. package/esm/base/InputRoot/index.js +8 -8
  203. package/esm/helpers/date/index.d.ts +11 -0
  204. package/esm/helpers/date/index.js +69 -0
  205. package/esm/index.d.ts +3 -1
  206. package/esm/index.js +2 -0
  207. package/esm/libs/numbers/leadingZeros.d.ts +4 -0
  208. package/esm/libs/numbers/leadingZeros.js +12 -0
  209. package/esm/libs/requestIdleCallback/index.d.ts +5 -0
  210. package/esm/libs/requestIdleCallback/index.js +9 -0
  211. package/esm/theme_default_variables.css +12 -0
  212. package/helpers/date/index.d.ts +11 -0
  213. package/helpers/date/index.js +79 -0
  214. package/index.d.ts +3 -1
  215. package/index.js +43 -39
  216. package/libs/numbers/leadingZeros.d.ts +4 -0
  217. package/libs/numbers/leadingZeros.js +14 -0
  218. package/libs/requestIdleCallback/index.d.ts +5 -0
  219. package/libs/requestIdleCallback/index.js +11 -0
  220. package/package.json +2 -1
  221. package/theme_default_variables.css +12 -0
  222. package/Theme/color.d.ts +0 -118
  223. package/Theme/color.js +0 -88
  224. package/esm/Theme/color.d.ts +0 -118
  225. package/esm/Theme/color.js +0 -72
@@ -0,0 +1,186 @@
1
+ import { __assign } from 'tslib';
2
+ import React__default, { useRef, useState, useEffect, useCallback } from 'react';
3
+ import classNames from 'classnames/bind';
4
+ import { requestIdleCallback } from '../libs/requestIdleCallback/index.js';
5
+ import { getDaysDiff } from '../helpers/date/index.js';
6
+ import { Month } from './components/Month/Month.js';
7
+ import { getStartMonth } from './utils/getStartMonth.js';
8
+ import { Presets } from './components/Presets/index.js';
9
+ import { getNumberOfMonthsBetweenDates } from './utils/getNumberOfMonthsBetweenDates.js';
10
+ import { ContinueButton } from './components/ContinueButton/index.js';
11
+ import styles from './index.module.css';
12
+
13
+ var clx = classNames.bind(styles);
14
+ var idleCallbackOptions = {
15
+ timeout: 1000
16
+ };
17
+ var Calendar = function Calendar(_a) {
18
+ var today = _a.today,
19
+ initialSelectedDate = _a.selectedDate,
20
+ initialSelectedPeriod = _a.selectedPeriod,
21
+ activeDates = _a.activeDates,
22
+ datePresets = _a.datePresets,
23
+ availableDates = _a.availableDates,
24
+ canSelectRange = _a.canSelectRange,
25
+ onChange = _a.onChange,
26
+ onCancel = _a.onCancel,
27
+ _b = _a.withContinueButton,
28
+ withContinueButton = _b === void 0 ? false : _b;
29
+ var $root = useRef(null);
30
+ var startMonth = getStartMonth({
31
+ today: today,
32
+ activeDates: activeDates
33
+ });
34
+ var _c = useState(initialSelectedDate),
35
+ selectedDate = _c[0],
36
+ setSelectedDate = _c[1];
37
+ var _d = useState(initialSelectedPeriod),
38
+ selectedPeriod = _d[0],
39
+ setSelectedPeriod = _d[1];
40
+ var _e = useState(function () {
41
+ if (initialSelectedDate) {
42
+ return getNumberOfMonthsBetweenDates(startMonth, initialSelectedDate);
43
+ } else if (activeDates && activeDates.length) {
44
+ return getNumberOfMonthsBetweenDates(startMonth, activeDates.sort()[0]);
45
+ }
46
+ return 0;
47
+ }),
48
+ currentMonthOffset = _e[0],
49
+ setCurrentMonthOffset = _e[1];
50
+ var _f = useState(0),
51
+ contentWidth = _f[0],
52
+ setContentWidth = _f[1];
53
+ var _g = useState(true),
54
+ isRangeCompleted = _g[0],
55
+ setIsRangeCompleted = _g[1];
56
+ useEffect(function () {
57
+ var _a;
58
+ setContentWidth(((_a = $root.current) === null || _a === void 0 ? void 0 : _a.offsetWidth) || 0);
59
+ }, []);
60
+ var showPrevMonth = useCallback(function () {
61
+ setCurrentMonthOffset(function (prev) {
62
+ return prev - 1;
63
+ });
64
+ }, []);
65
+ var showNextMonth = useCallback(function () {
66
+ setCurrentMonthOffset(function (prev) {
67
+ return prev + 1;
68
+ });
69
+ }, []);
70
+ var selectDate = useCallback(function (date, period, rangeCompleted) {
71
+ setSelectedDate(date);
72
+ setSelectedPeriod(period);
73
+ setIsRangeCompleted(rangeCompleted);
74
+ setCurrentMonthOffset(getNumberOfMonthsBetweenDates(startMonth, date));
75
+ }, [startMonth]);
76
+ var handleDayClick = useCallback(function (date) {
77
+ if (canSelectRange && selectedDate && !isRangeCompleted) {
78
+ var _a = [date, selectedDate].sort(),
79
+ startDate_1 = _a[0],
80
+ endDate = _a[1];
81
+ var period_1 = getDaysDiff(new Date(startDate_1), new Date(endDate)) + 1;
82
+ if (!withContinueButton && onChange) {
83
+ onChange({
84
+ date: date,
85
+ period: period_1
86
+ });
87
+ return;
88
+ }
89
+ requestIdleCallback(function () {
90
+ return selectDate(startDate_1, period_1, true);
91
+ }, idleCallbackOptions);
92
+ } else {
93
+ if (!withContinueButton && onChange) {
94
+ onChange({
95
+ date: date,
96
+ period: 1
97
+ });
98
+ return;
99
+ }
100
+ requestIdleCallback(function () {
101
+ return selectDate(date, 1, !canSelectRange);
102
+ }, idleCallbackOptions);
103
+ }
104
+ }, [canSelectRange, selectedDate, isRangeCompleted, selectDate]);
105
+ var handlePresetSelect = useCallback(function (preset) {
106
+ requestIdleCallback(function () {
107
+ return selectDate(preset.date, preset.period, true);
108
+ }, idleCallbackOptions);
109
+ }, [selectDate]);
110
+ var commitSelectedDates = useCallback(function () {
111
+ if (selectedDate && selectedPeriod) {
112
+ if (onCancel) {
113
+ onCancel();
114
+ }
115
+ if (onChange) {
116
+ onChange({
117
+ date: selectedDate,
118
+ period: selectedPeriod
119
+ });
120
+ }
121
+ }
122
+ }, [selectedDate, selectedPeriod, onChange, onCancel]);
123
+ var cancelCalendar = useCallback(function () {
124
+ if (onCancel) {
125
+ onCancel();
126
+ }
127
+ }, [onCancel]);
128
+ var getMonthStartDate = useCallback(function (shiftIndex) {
129
+ var startDate = new Date(startMonth);
130
+ startDate.setMonth(startDate.getMonth() + shiftIndex);
131
+ return startDate;
132
+ }, [startMonth]);
133
+ var commonAttrs = {
134
+ selectedDate: selectedDate,
135
+ selectedPeriod: selectedPeriod,
136
+ activeDates: activeDates,
137
+ availableDates: availableDates,
138
+ isRangeCompleted: isRangeCompleted,
139
+ onDayClick: handleDayClick
140
+ };
141
+ return /*#__PURE__*/React__default.createElement("div", {
142
+ className: clx(styles.root),
143
+ "data-component": "Calendar",
144
+ ref: $root
145
+ }, /*#__PURE__*/React__default.createElement("div", null, contentWidth ? ( /*#__PURE__*/React__default.createElement("div", {
146
+ "data-component": "Months",
147
+ className: clx(styles.months),
148
+ style: {
149
+ transform: "translate3D(".concat(-1 * currentMonthOffset * contentWidth, "px, 0, 0)")
150
+ }
151
+ }, [currentMonthOffset - 1, currentMonthOffset, currentMonthOffset + 1].filter(function (index) {
152
+ return index >= 0;
153
+ }).map(function (index) {
154
+ var attrs = __assign(__assign({}, commonAttrs), {
155
+ today: today,
156
+ startDate: getMonthStartDate(index),
157
+ offsetLeft: index * contentWidth
158
+ });
159
+ return /*#__PURE__*/React__default.createElement(Month, __assign({}, attrs, {
160
+ key: "month-".concat(index)
161
+ }));
162
+ }))) : ( /*#__PURE__*/React__default.createElement(Month, __assign({
163
+ today: today,
164
+ startDate: getMonthStartDate(currentMonthOffset),
165
+ offsetLeft: 0
166
+ }, commonAttrs))), /*#__PURE__*/React__default.createElement("button", {
167
+ className: clx(styles["month-control"], styles["month-control-prev"]),
168
+ onClick: showPrevMonth,
169
+ disabled: currentMonthOffset <= 0
170
+ }), /*#__PURE__*/React__default.createElement("button", {
171
+ className: clx(styles["month-control"], styles["month-control-next"]),
172
+ onClick: showNextMonth,
173
+ disabled: currentMonthOffset >= 11
174
+ })), datePresets && ( /*#__PURE__*/React__default.createElement(Presets, {
175
+ presets: datePresets,
176
+ onPresetSelect: handlePresetSelect
177
+ })), withContinueButton && ( /*#__PURE__*/React__default.createElement(ContinueButton, {
178
+ isChanged: selectedDate !== initialSelectedDate || selectedPeriod !== initialSelectedPeriod,
179
+ selectedDate: selectedDate,
180
+ selectedPeriod: selectedPeriod,
181
+ onContinue: commitSelectedDates,
182
+ onCancel: cancelCalendar
183
+ })));
184
+ };
185
+
186
+ export { Calendar as default };
@@ -0,0 +1,98 @@
1
+ .root {
2
+ display: flex;
3
+ flex-direction: column;
4
+ -moz-osx-font-smoothing: grayscale;
5
+ -webkit-font-smoothing: antialiased;
6
+ gap: 16px;
7
+ min-width: 300px;
8
+ overflow: hidden;
9
+ position: relative;
10
+ text-rendering: optimizelegibility;
11
+ text-size-adjust: 100%;
12
+ }
13
+ @media (width >= 360px) {
14
+ .root {
15
+ min-width: 360px;
16
+ }
17
+ }
18
+
19
+ .month-control {
20
+ background: transparent;
21
+ border: 0;
22
+ cursor: pointer;
23
+ height: 48px;
24
+ outline: 0;
25
+ padding: 0 16px;
26
+ position: absolute;
27
+ top: 0;
28
+ width: 80px;
29
+ }
30
+ .month-control::before {
31
+ border: 0 solid #fff;
32
+ content: "";
33
+ display: block;
34
+ height: 100%;
35
+ position: absolute;
36
+ top: 0;
37
+ width: 40px;
38
+ }
39
+ .month-control::after {
40
+ background-repeat: no-repeat;
41
+ background-size: 10px 16px;
42
+ content: "";
43
+ display: inline-block;
44
+ height: 16px;
45
+ opacity: 0.8;
46
+ position: relative;
47
+ transition: opacity 0.3s ease;
48
+ width: 10px;
49
+ }
50
+ .month-control:hover::after {
51
+ opacity: 1;
52
+ }
53
+ .month-control[disabled] {
54
+ cursor: default;
55
+ opacity: 0.3;
56
+ }
57
+ .month-control[disabled]::after {
58
+ opacity: 0.3;
59
+ }
60
+
61
+ .month-control-prev {
62
+ border-left-width: 16px;
63
+ left: 0;
64
+ text-align: left;
65
+ }
66
+ .month-control-prev::before {
67
+ background: linear-gradient(to right, rgb(255, 255, 255) 0%, rgba(255, 255, 255, 0) 100%);
68
+ border-left-width: 26px;
69
+ left: 0;
70
+ }
71
+ .month-control-prev::after {
72
+ background-image: url("./assets/next-arrow.svg");
73
+ transform: rotate(180deg);
74
+ }
75
+
76
+ .month-control-next {
77
+ border-right-width: 16px;
78
+ right: 0;
79
+ text-align: right;
80
+ }
81
+ .month-control-next::before {
82
+ background: linear-gradient(to left, rgb(255, 255, 255) 0%, rgba(255, 255, 255, 0) 100%);
83
+ border-right-width: 26px;
84
+ right: 0;
85
+ }
86
+ .month-control-next::after {
87
+ background-image: url("./assets/next-arrow.svg");
88
+ }
89
+
90
+ .months {
91
+ height: 284px;
92
+ position: relative;
93
+ transition: transform 0.3s ease;
94
+ }
95
+ .months > div {
96
+ position: absolute;
97
+ top: 0;
98
+ }
@@ -0,0 +1,20 @@
1
+ type Day = {
2
+ day: number;
3
+ isDummy?: boolean;
4
+ isActive?: boolean;
5
+ isSelected?: boolean;
6
+ isStartOfSelection?: boolean;
7
+ isEndOfSelection?: boolean;
8
+ isInSelectedRange?: boolean;
9
+ };
10
+ type Week = Day[];
11
+ type Options = {
12
+ today: string;
13
+ startDate: Date;
14
+ activeDays?: string[];
15
+ selectedDate?: string;
16
+ selectedPeriod?: number;
17
+ availableDates?: string[];
18
+ };
19
+ export declare function getMonthWeeks(options: Options): Week[];
20
+ export {};
@@ -0,0 +1,79 @@
1
+ import { leadingZeros } from '../../libs/numbers/leadingZeros.js';
2
+
3
+ var dummyDay = {
4
+ day: 0,
5
+ isDummy: true
6
+ };
7
+ function getMonthWeeks(options) {
8
+ var _a = getSelectedDates(options),
9
+ selectedDateFrom = _a.selectedDateFrom,
10
+ selectedDateTo = _a.selectedDateTo;
11
+ var currMonth = options.startDate.getMonth();
12
+ var weeks = [[]];
13
+ var currWeek = weeks[weeks.length - 1];
14
+ var currDate = new Date(options.startDate);
15
+ {
16
+ // Prepending wirst week with dummy days
17
+ var dayInWeek = getDateDayInWeek(currDate);
18
+ while (dayInWeek) {
19
+ weeks[0].push(dummyDay);
20
+ dayInWeek -= 1;
21
+ }
22
+ }
23
+ while (currDate.getMonth() === currMonth) {
24
+ var currCompareDate = formatToComparable(currDate);
25
+ var isStartOfSelection = currCompareDate === selectedDateFrom;
26
+ var isEndOfSelection = currCompareDate === selectedDateTo;
27
+ currWeek.push({
28
+ day: currDate.getDate(),
29
+ isActive: checkIfDateIsAvailable(currCompareDate, options),
30
+ isSelected: isStartOfSelection || isEndOfSelection,
31
+ isStartOfSelection: isStartOfSelection,
32
+ isEndOfSelection: isEndOfSelection,
33
+ isInSelectedRange: !!selectedDateFrom && !!selectedDateTo && currCompareDate > selectedDateFrom && currCompareDate < selectedDateTo
34
+ });
35
+ if (currWeek.length === 7) {
36
+ currWeek = [];
37
+ weeks.push(currWeek);
38
+ }
39
+ currDate.setDate(currDate.getDate() + 1);
40
+ }
41
+ {
42
+ var lastWeek = weeks[weeks.length - 1];
43
+ while (lastWeek.length < 7) {
44
+ lastWeek.push(dummyDay);
45
+ }
46
+ }
47
+ return weeks;
48
+ }
49
+ function getDateDayInWeek(date) {
50
+ var day = date.getDay() - 1;
51
+ return day >= 0 ? day : 6;
52
+ }
53
+ function getSelectedDates(options) {
54
+ var period = options.selectedPeriod ? options.selectedPeriod - 1 : 0;
55
+ var dateFrom = options.selectedDate ? new Date(options.selectedDate) : undefined;
56
+ var dateTo = dateFrom ? new Date(dateFrom.getTime() + 24 * 60 * 60 * 1000 * period) : undefined;
57
+ return {
58
+ selectedDateFrom: dateFrom ? formatToComparable(dateFrom) : undefined,
59
+ selectedDateTo: dateTo ? formatToComparable(dateTo) : undefined
60
+ };
61
+ }
62
+ function formatToComparable(date) {
63
+ return new Date([date.getFullYear(), doubleDigits(date.getMonth() + 1), doubleDigits(date.getDate())].join("-")).getTime();
64
+ }
65
+ function doubleDigits(v) {
66
+ return leadingZeros(v, 2);
67
+ }
68
+ function checkIfDateIsAvailable(date, options) {
69
+ var availableDates = options.availableDates,
70
+ today = options.today;
71
+ var todayCompatible = formatToComparable(new Date(today));
72
+ var availableDatesComparable = availableDates && availableDates.length > 0 && availableDates.map(function (_date) {
73
+ return formatToComparable(new Date(_date));
74
+ });
75
+ var isAvailableDate = availableDatesComparable ? availableDatesComparable.includes(date) : true;
76
+ return date >= todayCompatible && isAvailableDate;
77
+ }
78
+
79
+ export { getMonthWeeks };
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Returns number of months between dates
3
+ */
4
+ export declare function getNumberOfMonthsBetweenDates(startDate: string, activeDate: string): number;
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Returns number of months between dates
3
+ */
4
+ function getNumberOfMonthsBetweenDates(startDate, activeDate) {
5
+ var start = new Date(normalizeDate(startDate));
6
+ var active = new Date(normalizeDate(activeDate));
7
+ var offset = active > start ? 1 : -1;
8
+ var count = 0;
9
+ while (start.getFullYear() !== active.getFullYear() || start.getMonth() !== active.getMonth()) {
10
+ count += offset;
11
+ start.setMonth(start.getMonth() + offset);
12
+ }
13
+ return count;
14
+ }
15
+ function normalizeDate(date) {
16
+ return date.split("-").slice(0, 2).join("-");
17
+ }
18
+
19
+ export { getNumberOfMonthsBetweenDates };
@@ -0,0 +1,10 @@
1
+ export type DatePreset = {
2
+ name: string;
3
+ date: string;
4
+ period: number;
5
+ };
6
+ export declare function getPresets(presets: string[]): ({
7
+ name: string;
8
+ date: string;
9
+ period: number;
10
+ } | undefined)[] | undefined;
@@ -0,0 +1,6 @@
1
+ type Options = {
2
+ today?: string;
3
+ activeDates?: string[];
4
+ };
5
+ export declare function getStartMonth({ today, activeDates, }: Options): string;
6
+ export {};
@@ -0,0 +1,13 @@
1
+ import { leadingZeros } from '../../libs/numbers/leadingZeros.js';
2
+
3
+ function getStartMonth(_a) {
4
+ var _b = _a.today,
5
+ today = _b === void 0 ? "" : _b,
6
+ _c = _a.activeDates,
7
+ activeDates = _c === void 0 ? [""] : _c;
8
+ var sortedDates = [].concat(activeDates, today).filter(Boolean).sort();
9
+ var date = new Date(sortedDates[0]);
10
+ return [date.getFullYear(), leadingZeros(date.getMonth() + 1, 2)].join("-");
11
+ }
12
+
13
+ export { getStartMonth };
@@ -8,10 +8,10 @@
8
8
  }
9
9
 
10
10
  .label {
11
+ cursor: pointer;
11
12
  display: inline-flex;
12
13
  line-height: 18px;
13
14
  position: relative;
14
- cursor: pointer;
15
15
  }
16
16
 
17
17
  .text {
@@ -20,7 +20,7 @@
20
20
  margin-inline-start: 8px;
21
21
  }
22
22
 
23
- .fakeCheckbox {
23
+ .fake-checkbox {
24
24
  background-color: var(--palette-white);
25
25
  block-size: 16px;
26
26
  border: 1px solid var(--palette-bg-3);
@@ -35,20 +35,20 @@
35
35
  }
36
36
 
37
37
  .checked {
38
- border: 0;
39
38
  background-color: var(--checkbox-primary-background-color-checked);
39
+ border: 0;
40
40
  }
41
41
  .checked::after {
42
- box-sizing: content-box;
43
- content: "";
44
- display: block;
45
- position: absolute;
46
42
  block-size: 8px;
47
43
  border-block-end: 2px solid var(--palette-black);
48
44
  border-inline-end: 2px solid var(--palette-black);
45
+ box-sizing: content-box;
46
+ content: "";
47
+ display: block;
49
48
  inline-size: 4px;
50
49
  inset-block-start: 45%;
51
50
  inset-inline-start: 50%;
51
+ position: absolute;
52
52
  transform: translate(-50%, -50%) rotate(45deg);
53
53
  }
54
54
 
@@ -65,25 +65,25 @@
65
65
  inset-inline-start: -9999px;
66
66
  position: absolute;
67
67
  }
68
- .control:disabled + .fakeCheckbox::after {
68
+ .control:disabled + .fake-checkbox::after {
69
69
  border-block-end: 2px solid var(--palette-bg-4);
70
70
  border-inline-end: 2px solid var(--palette-bg-4);
71
71
  }
72
- .control:hover:not(:disabled) + .fakeCheckbox {
72
+ .control:hover:not(:disabled) + .fake-checkbox {
73
73
  border-color: var(--palette-bg-3);
74
74
  }
75
- .control_variant_primary:focus:not(:disabled) + .fakeCheckbox {
75
+ .control_variant_primary:focus:not(:disabled) + .fake-checkbox {
76
76
  box-shadow: 0 0 0 2px var(--checkbox-primary-box-shadow-focused);
77
77
  }
78
- .control_variant_primary:hover:not(:disabled) + .fakeCheckbox {
78
+ .control_variant_primary:hover:not(:disabled) + .fake-checkbox {
79
79
  background-color: var(--checkbox-primary-background-color-hovered);
80
80
  }
81
- .control_variant_primary:active:not(:disabled) + .fakeCheckbox {
81
+ .control_variant_primary:active:not(:disabled) + .fake-checkbox {
82
82
  background-color: var(--checkbox-primary-background-color-active);
83
83
  border-color: var(--checkbox-primary-border-color-active);
84
84
  box-shadow: var(--checkbox-primary-box-shadow-active);
85
85
  }
86
- .control_variant_primary:disabled + .fakeCheckbox {
87
- z-index: 1;
86
+ .control_variant_primary:disabled + .fake-checkbox {
88
87
  background-color: var(--checkbox-primary-background-color-disabled);
88
+ z-index: 1;
89
89
  }
@@ -1,4 +1,4 @@
1
- import React from 'react';
1
+ import React__default from 'react';
2
2
  import classNames from 'classnames/bind';
3
3
  import Typography from '../Typography/index.js';
4
4
  import styles from './Checkbox.module.css';
@@ -20,11 +20,11 @@ var Checkbox = function Checkbox(_a) {
20
20
  className = _a.className,
21
21
  disabled = _a.disabled,
22
22
  isError = _a.isError;
23
- var control = /*#__PURE__*/React.createElement("label", {
23
+ var control = /*#__PURE__*/React__default.createElement("label", {
24
24
  className: clx(styles.label)
25
- }, /*#__PURE__*/React.createElement("div", {
25
+ }, /*#__PURE__*/React__default.createElement("div", {
26
26
  className: clx(styles.wrapper)
27
- }, /*#__PURE__*/React.createElement("input", {
27
+ }, /*#__PURE__*/React__default.createElement("input", {
28
28
  className: clx(styles.control, (_b = {}, _b["control_variant_".concat(variant)] = !!variant, _b), className),
29
29
  type: "checkbox",
30
30
  id: id,
@@ -35,14 +35,14 @@ var Checkbox = function Checkbox(_a) {
35
35
  onFocus: onFocus,
36
36
  onBlur: onBlur,
37
37
  disabled: disabled
38
- }), /*#__PURE__*/React.createElement("span", {
39
- className: clx(styles.fakeCheckbox, (_c = {}, _c["variant_".concat(variant, "_disabled")] = disabled ? 1 : 0, _c["variant_".concat(variant, "_error")] = isError ? 1 : 0, _c["variant_".concat(variant, "_checked")] = checked ? 1 : 0, _c.checked = checked ? 1 : 0, _c["variant_".concat(variant)] = !!variant, _c))
40
- }), /*#__PURE__*/React.createElement("span", {
38
+ }), /*#__PURE__*/React__default.createElement("span", {
39
+ className: clx(styles["fake-checkbox"], (_c = {}, _c["variant_".concat(variant, "_disabled")] = disabled ? 1 : 0, _c["variant_".concat(variant, "_error")] = isError ? 1 : 0, _c["variant_".concat(variant, "_checked")] = checked ? 1 : 0, _c.checked = checked ? 1 : 0, _c["variant_".concat(variant)] = !!variant, _c))
40
+ }), /*#__PURE__*/React__default.createElement("span", {
41
41
  className: clx(styles.text)
42
42
  }, label)));
43
- return /*#__PURE__*/React.createElement("div", {
43
+ return /*#__PURE__*/React__default.createElement("div", {
44
44
  className: clx(styles.root)
45
- }, control, hint && ( /*#__PURE__*/React.createElement(Typography, {
45
+ }, control, hint && ( /*#__PURE__*/React__default.createElement(Typography, {
46
46
  variant: isError ? "alert" : "secondary",
47
47
  tag: "span"
48
48
  }, hint)));
@@ -1,4 +1,4 @@
1
- import React, { useRef } from 'react';
1
+ import React__default, { useRef } from 'react';
2
2
  import useOnClickOutside from '../hooks/useOnClickOutside/index.js';
3
3
 
4
4
  var ClickOutside = function ClickOutside(_a) {
@@ -6,8 +6,8 @@ var ClickOutside = function ClickOutside(_a) {
6
6
  onClick = _a.onClick;
7
7
  var childRef = useRef();
8
8
  useOnClickOutside(childRef, onClick);
9
- if (! /*#__PURE__*/React.isValidElement(children)) return null;
10
- return /*#__PURE__*/React.cloneElement(children, {
9
+ if (! /*#__PURE__*/React__default.isValidElement(children)) return null;
10
+ return /*#__PURE__*/React__default.cloneElement(children, {
11
11
  // @ts-expect-error expected
12
12
  ref: function ref(node) {
13
13
  childRef.current = node;
@@ -18,17 +18,17 @@
18
18
  align-items: center;
19
19
  block-size: 38px;
20
20
  display: flex;
21
- justify-content: space-between;
22
21
  gap: 4px;
22
+ justify-content: space-between;
23
23
  }
24
24
  .control_fullWidth {
25
25
  inline-size: 100%;
26
26
  }
27
27
 
28
28
  .value {
29
- font-weight: 500;
30
29
  font-size: 18px;
30
+ font-weight: 500;
31
31
  inline-size: 24px;
32
- user-select: none;
33
32
  text-align: center;
33
+ user-select: none;
34
34
  }
@@ -1,4 +1,4 @@
1
- import React, { useRef } from 'react';
1
+ import React__default, { useRef } from 'react';
2
2
  import classNames from 'classnames/bind';
3
3
  import Button from '../Button/index.js';
4
4
  import MinusIcon from '../Icons/Minus.js';
@@ -19,16 +19,16 @@ var Counter = function Counter(_a) {
19
19
  var lastNumValue = useRef(value);
20
20
  var minusDisabled = disabled || value <= min;
21
21
  var plusDisabled = disabled || value >= max;
22
- return /*#__PURE__*/React.createElement("div", {
22
+ return /*#__PURE__*/React__default.createElement("div", {
23
23
  className: clx(styles.root, {
24
24
  root_fullWidth: fullWidth ? 1 : 0
25
25
  }, className)
26
- }, /*#__PURE__*/React.createElement("div", {
26
+ }, /*#__PURE__*/React__default.createElement("div", {
27
27
  className: clx(styles.control, {
28
28
  control_fullWidth: fullWidth ? 1 : 0
29
29
  })
30
- }, /*#__PURE__*/React.createElement(Button, {
31
- icon: /*#__PURE__*/React.createElement(MinusIcon, {
30
+ }, /*#__PURE__*/React__default.createElement(Button, {
31
+ icon: /*#__PURE__*/React__default.createElement(MinusIcon, {
32
32
  width: 16,
33
33
  height: 16
34
34
  }),
@@ -38,10 +38,10 @@ var Counter = function Counter(_a) {
38
38
  lastNumValue.current = value - 1;
39
39
  },
40
40
  "aria-label": "decrease"
41
- }), /*#__PURE__*/React.createElement("div", {
41
+ }), /*#__PURE__*/React__default.createElement("div", {
42
42
  className: clx(styles.value)
43
- }, value), /*#__PURE__*/React.createElement(Button, {
44
- icon: /*#__PURE__*/React.createElement(PlusIcon, {
43
+ }, value), /*#__PURE__*/React__default.createElement(Button, {
44
+ icon: /*#__PURE__*/React__default.createElement(PlusIcon, {
45
45
  width: 16,
46
46
  height: 16
47
47
  }),