@true-engineering/true-react-common-ui-kit 2.1.1 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (258) hide show
  1. package/LICENSE +201 -201
  2. package/README.md +16 -0
  3. package/dist/components/Button/Button.d.ts +3 -4
  4. package/dist/components/Flag/augment.d.ts +1 -1
  5. package/dist/components/Icon/complexIcons/augment.d.ts +1 -1
  6. package/dist/components/Input/Input.d.ts +3 -4
  7. package/dist/components/List/List.d.ts +3 -4
  8. package/dist/components/Modal/Modal.d.ts +3 -3
  9. package/dist/components/ScrollIntoViewIfNeeded/ScrollIntoViewIfNeeded.d.ts +4 -4
  10. package/dist/components/Select/Select.d.ts +2 -3
  11. package/dist/helpers/deprecated.d.ts +12 -0
  12. package/dist/helpers/index.d.ts +2 -2
  13. package/dist/helpers/misc.d.ts +19 -0
  14. package/dist/helpers/snippets.d.ts +3 -3
  15. package/dist/true-react-common-ui-kit.js +389 -405
  16. package/dist/true-react-common-ui-kit.js.map +1 -1
  17. package/dist/true-react-common-ui-kit.umd.cjs +389 -406
  18. package/dist/true-react-common-ui-kit.umd.cjs.map +1 -1
  19. package/dist/types.d.ts +3 -1
  20. package/dist/vite-env.d.ts +1 -1
  21. package/package.json +93 -92
  22. package/src/components/AccountInfo/AccountInfo.stories.tsx +32 -32
  23. package/src/components/AccountInfo/AccountInfo.styles.ts +55 -55
  24. package/src/components/AccountInfo/AccountInfo.tsx +77 -77
  25. package/src/components/AccountInfo/index.ts +2 -2
  26. package/src/components/AddButton/AddButton.stories.tsx +21 -21
  27. package/src/components/AddButton/AddButton.styles.ts +34 -34
  28. package/src/components/AddButton/AddButton.tsx +48 -48
  29. package/src/components/AddButton/index.ts +2 -2
  30. package/src/components/Button/Button.stories.tsx +52 -52
  31. package/src/components/Button/Button.styles.ts +196 -196
  32. package/src/components/Button/Button.tsx +167 -187
  33. package/src/components/Button/index.ts +2 -2
  34. package/src/components/Checkbox/Checkbox.stories.tsx +32 -32
  35. package/src/components/Checkbox/Checkbox.styles.ts +62 -62
  36. package/src/components/Checkbox/Checkbox.tsx +105 -100
  37. package/src/components/Checkbox/index.ts +2 -2
  38. package/src/components/CloseButton/CloseButton.styles.ts +34 -34
  39. package/src/components/CloseButton/CloseButton.tsx +35 -35
  40. package/src/components/CloseButton/index.ts +2 -2
  41. package/src/components/Colors/Colors.stories.tsx +7 -7
  42. package/src/components/Colors/Colors.styles.ts +38 -38
  43. package/src/components/Colors/Colors.tsx +26 -26
  44. package/src/components/Colors/index.ts +2 -2
  45. package/src/components/CssBaseline/CssBaseline.styles.ts +15 -15
  46. package/src/components/CssBaseline/CssBaseline.tsx +15 -15
  47. package/src/components/CssBaseline/index.ts +2 -2
  48. package/src/components/DateInput/DateInput.stories.tsx +61 -61
  49. package/src/components/DateInput/DateInput.styles.ts +14 -14
  50. package/src/components/DateInput/DateInput.tsx +82 -82
  51. package/src/components/DateInput/constants.ts +2 -2
  52. package/src/components/DateInput/index.ts +3 -3
  53. package/src/components/DatePicker/DatePicker.stories.tsx +87 -87
  54. package/src/components/DatePicker/DatePicker.styles.ts +44 -44
  55. package/src/components/DatePicker/DatePicker.tsx +327 -322
  56. package/src/components/DatePicker/DatePickerHeader/DatePickerHeader.styles.ts +84 -84
  57. package/src/components/DatePicker/DatePickerHeader/DatePickerHeader.tsx +79 -79
  58. package/src/components/DatePicker/DatePickerHeader/index.ts +2 -2
  59. package/src/components/DatePicker/constants.ts +1 -1
  60. package/src/components/DatePicker/helpers.ts +23 -19
  61. package/src/components/DatePicker/index.ts +3 -3
  62. package/src/components/DatePicker/types.ts +45 -45
  63. package/src/components/Description/Description.stories.tsx +27 -27
  64. package/src/components/Description/Description.styles.ts +31 -31
  65. package/src/components/Description/Description.tsx +60 -60
  66. package/src/components/Description/index.ts +2 -2
  67. package/src/components/FiltersPane/FilterInterval/FilterInterval.styles.ts +64 -64
  68. package/src/components/FiltersPane/FilterInterval/FilterInterval.tsx +143 -143
  69. package/src/components/FiltersPane/FilterInterval/index.ts +1 -1
  70. package/src/components/FiltersPane/FilterMultiSelect/FilterMultiSelect.tsx +10 -10
  71. package/src/components/FiltersPane/FilterMultiSelect/index.ts +1 -1
  72. package/src/components/FiltersPane/FilterSelect/FilterSelect.styles.ts +143 -143
  73. package/src/components/FiltersPane/FilterSelect/FilterSelect.tsx +348 -347
  74. package/src/components/FiltersPane/FilterSelect/index.ts +1 -1
  75. package/src/components/FiltersPane/FilterSelect/locales.ts +37 -37
  76. package/src/components/FiltersPane/FilterValueView/FilterValueView.styles.tsx +15 -15
  77. package/src/components/FiltersPane/FilterValueView/FilterValueView.tsx +166 -166
  78. package/src/components/FiltersPane/FilterValueView/index.tsx +1 -1
  79. package/src/components/FiltersPane/FilterWithDates/FilterWithDates.styles.ts +60 -60
  80. package/src/components/FiltersPane/FilterWithDates/FilterWithDates.tsx +184 -183
  81. package/src/components/FiltersPane/FilterWithDates/index.ts +1 -1
  82. package/src/components/FiltersPane/FilterWithPeriod/FilterWithPeriod.styles.ts +17 -17
  83. package/src/components/FiltersPane/FilterWithPeriod/FilterWithPeriod.tsx +198 -198
  84. package/src/components/FiltersPane/FilterWithPeriod/index.ts +1 -1
  85. package/src/components/FiltersPane/FilterWrapper/FilterWrapper.styles.ts +110 -110
  86. package/src/components/FiltersPane/FilterWrapper/FilterWrapper.tsx +346 -346
  87. package/src/components/FiltersPane/FilterWrapper/index.ts +1 -1
  88. package/src/components/FiltersPane/FiltersPane.stories.tsx +295 -295
  89. package/src/components/FiltersPane/FiltersPane.styles.ts +71 -71
  90. package/src/components/FiltersPane/FiltersPane.tsx +151 -151
  91. package/src/components/FiltersPane/FiltersPaneSearch/FiltersPaneSearch.styles.ts +109 -109
  92. package/src/components/FiltersPane/FiltersPaneSearch/FiltersPaneSearch.tsx +155 -155
  93. package/src/components/FiltersPane/FiltersPaneSearch/index.ts +1 -1
  94. package/src/components/FiltersPane/index.ts +20 -20
  95. package/src/components/FiltersPane/locales.ts +107 -107
  96. package/src/components/FiltersPane/types.ts +112 -112
  97. package/src/components/Flag/Flag.stories.tsx +29 -29
  98. package/src/components/Flag/Flag.styles.ts +18 -18
  99. package/src/components/Flag/Flag.tsx +27 -27
  100. package/src/components/Flag/augment.d.ts +1 -1
  101. package/src/components/Flag/index.ts +2 -2
  102. package/src/components/FlexibleTable/FlexibleTable.stories.tsx +84 -84
  103. package/src/components/FlexibleTable/FlexibleTable.styles.ts +131 -131
  104. package/src/components/FlexibleTable/FlexibleTable.tsx +205 -205
  105. package/src/components/FlexibleTable/TableRow.tsx +152 -152
  106. package/src/components/FlexibleTable/TableValue.tsx +75 -75
  107. package/src/components/FlexibleTable/fixture-test.ts +254 -254
  108. package/src/components/FlexibleTable/index.ts +3 -3
  109. package/src/components/FlexibleTable/types.ts +52 -52
  110. package/src/components/Icon/ComplexIconBoilerplate.tsx +17 -17
  111. package/src/components/Icon/Icon.stories.tsx +85 -85
  112. package/src/components/Icon/Icon.styles.ts +10 -10
  113. package/src/components/Icon/Icon.tsx +32 -32
  114. package/src/components/Icon/IconBoilerplate.tsx +42 -42
  115. package/src/components/Icon/complexIcons/augment.d.ts +1 -1
  116. package/src/components/Icon/complexIcons/avatarGreen.svg +57 -57
  117. package/src/components/Icon/complexIcons/icons.ts +7 -7
  118. package/src/components/Icon/complexIcons/index.ts +1 -1
  119. package/src/components/Icon/icons/icons.ts +838 -838
  120. package/src/components/Icon/icons/index.ts +1 -1
  121. package/src/components/Icon/index.ts +4 -4
  122. package/src/components/IncrementInput/ChangeButton.tsx +33 -33
  123. package/src/components/IncrementInput/IncrementInput.stories.tsx +31 -31
  124. package/src/components/IncrementInput/IncrementInput.styles.ts +77 -77
  125. package/src/components/IncrementInput/IncrementInput.tsx +80 -79
  126. package/src/components/IncrementInput/index.ts +2 -2
  127. package/src/components/Input/Input.stories.tsx +86 -86
  128. package/src/components/Input/Input.styles.ts +307 -307
  129. package/src/components/Input/Input.tsx +311 -306
  130. package/src/components/Input/index.ts +2 -2
  131. package/src/components/List/List.stories.tsx +62 -62
  132. package/src/components/List/List.styles.ts +52 -52
  133. package/src/components/List/List.tsx +64 -61
  134. package/src/components/List/index.ts +2 -2
  135. package/src/components/Modal/Modal.stories.tsx +105 -105
  136. package/src/components/Modal/Modal.styles.ts +305 -305
  137. package/src/components/Modal/Modal.tsx +200 -181
  138. package/src/components/Modal/index.ts +2 -2
  139. package/src/components/MoreMenu/MoreMenu.stories.tsx +46 -46
  140. package/src/components/MoreMenu/MoreMenu.styles.ts +70 -70
  141. package/src/components/MoreMenu/MoreMenu.tsx +90 -89
  142. package/src/components/MoreMenu/index.ts +2 -2
  143. package/src/components/MultiSelect/MultiSelect.stories.tsx +46 -46
  144. package/src/components/MultiSelect/MultiSelect.styles.ts +55 -55
  145. package/src/components/MultiSelect/MultiSelect.tsx +89 -89
  146. package/src/components/MultiSelect/MultiSelectInput/MultiSelectInput.styles.ts +73 -73
  147. package/src/components/MultiSelect/MultiSelectInput/MultiSelectInput.tsx +51 -51
  148. package/src/components/MultiSelect/MultiSelectInput/index.ts +1 -1
  149. package/src/components/MultiSelect/index.ts +3 -3
  150. package/src/components/MultiSelectList/MultiSelectList.styles.ts +124 -124
  151. package/src/components/MultiSelectList/MultiSelectList.tsx +451 -451
  152. package/src/components/MultiSelectList/index.ts +2 -2
  153. package/src/components/MultiSelectList/locales.ts +37 -37
  154. package/src/components/Notification/Notification.stories.tsx +46 -46
  155. package/src/components/Notification/Notification.styles.ts +50 -50
  156. package/src/components/Notification/Notification.tsx +79 -75
  157. package/src/components/Notification/index.ts +2 -2
  158. package/src/components/NumberInput/NumberInput.stories.tsx +35 -35
  159. package/src/components/NumberInput/NumberInput.tsx +133 -133
  160. package/src/components/NumberInput/helpers.ts +86 -85
  161. package/src/components/NumberInput/index.ts +1 -1
  162. package/src/components/PhoneInput/PhoneInput.stories.tsx +70 -70
  163. package/src/components/PhoneInput/PhoneInput.styles.ts +84 -84
  164. package/src/components/PhoneInput/PhoneInput.tsx +194 -194
  165. package/src/components/PhoneInput/PhoneInputCountryList/PhoneInputCountryList.stories.tsx +21 -21
  166. package/src/components/PhoneInput/PhoneInputCountryList/PhoneInputCountryList.styles.ts +100 -100
  167. package/src/components/PhoneInput/PhoneInputCountryList/PhoneInputCountryList.tsx +147 -147
  168. package/src/components/PhoneInput/PhoneInputCountryList/index.ts +2 -2
  169. package/src/components/PhoneInput/index.ts +6 -6
  170. package/src/components/PhoneInput/phone-info.ts +2147 -2147
  171. package/src/components/PhoneInput/types.ts +16 -16
  172. package/src/components/RadioButton/RadioButton.stories.tsx +46 -46
  173. package/src/components/RadioButton/RadioButton.styles.ts +37 -37
  174. package/src/components/RadioButton/RadioButton.tsx +55 -54
  175. package/src/components/RadioButton/index.ts +2 -2
  176. package/src/components/ScrollIntoViewIfNeeded/ScrollIntoViewIfNeeded.ts +61 -61
  177. package/src/components/ScrollIntoViewIfNeeded/index.ts +1 -1
  178. package/src/components/SearchInput/SearchInput.stories.tsx +23 -23
  179. package/src/components/SearchInput/SearchInput.styles.ts +50 -50
  180. package/src/components/SearchInput/SearchInput.tsx +50 -49
  181. package/src/components/SearchInput/index.ts +2 -2
  182. package/src/components/Select/MultiSelect.stories.tsx +240 -240
  183. package/src/components/Select/Select.stories.tsx +235 -235
  184. package/src/components/Select/Select.styles.ts +96 -96
  185. package/src/components/Select/Select.tsx +575 -575
  186. package/src/components/Select/SelectList/SelectList.styles.ts +72 -72
  187. package/src/components/Select/SelectList/SelectList.tsx +158 -152
  188. package/src/components/Select/SelectList/index.ts +1 -1
  189. package/src/components/Select/SelectListItem/SelectListItem.styles.ts +14 -14
  190. package/src/components/Select/SelectListItem/SelectListItem.tsx +68 -67
  191. package/src/components/Select/constants.ts +2 -2
  192. package/src/components/Select/helpers.ts +26 -26
  193. package/src/components/Select/index.ts +4 -4
  194. package/src/components/Select/types.ts +1 -1
  195. package/src/components/SmartInput/SmartInput.stories.tsx +50 -50
  196. package/src/components/SmartInput/SmartInput.tsx +147 -147
  197. package/src/components/SmartInput/helpers.ts +85 -85
  198. package/src/components/SmartInput/index.ts +1 -1
  199. package/src/components/Switch/Switch.stories.tsx +40 -40
  200. package/src/components/Switch/Switch.styles.ts +75 -75
  201. package/src/components/Switch/Switch.tsx +83 -82
  202. package/src/components/Switch/index.ts +2 -2
  203. package/src/components/TextArea/TextArea.stories.tsx +35 -35
  204. package/src/components/TextArea/TextArea.styles.ts +153 -153
  205. package/src/components/TextArea/TextArea.tsx +165 -165
  206. package/src/components/TextArea/index.ts +2 -2
  207. package/src/components/TextWithInfo/TextWithInfo.stories.tsx +53 -53
  208. package/src/components/TextWithInfo/TextWithInfo.styles.ts +60 -60
  209. package/src/components/TextWithInfo/TextWithInfo.tsx +60 -60
  210. package/src/components/TextWithInfo/index.ts +2 -2
  211. package/src/components/TextWithTooltip/TextWithTooltip.stories.tsx +58 -58
  212. package/src/components/TextWithTooltip/TextWithTooltip.styles.ts +19 -19
  213. package/src/components/TextWithTooltip/TextWithTooltip.tsx +143 -143
  214. package/src/components/TextWithTooltip/index.ts +2 -2
  215. package/src/components/ThemedPreloader/ThemedPreloader.stories.tsx +41 -41
  216. package/src/components/ThemedPreloader/ThemedPreloader.styles.ts +21 -21
  217. package/src/components/ThemedPreloader/ThemedPreloader.tsx +50 -50
  218. package/src/components/ThemedPreloader/components/DefaultPreloader/DefaultPreloader.tsx +29 -29
  219. package/src/components/ThemedPreloader/components/DefaultPreloader/index.ts +1 -1
  220. package/src/components/ThemedPreloader/components/DotsPreloader/DotsPreloader.styles.ts +54 -54
  221. package/src/components/ThemedPreloader/components/DotsPreloader/DotsPreloader.tsx +18 -18
  222. package/src/components/ThemedPreloader/components/DotsPreloader/index.ts +2 -2
  223. package/src/components/ThemedPreloader/components/SvgPreloader/SvgPreloader.styles.ts +11 -11
  224. package/src/components/ThemedPreloader/components/SvgPreloader/SvgPreloader.tsx +25 -25
  225. package/src/components/ThemedPreloader/components/SvgPreloader/index.ts +2 -2
  226. package/src/components/ThemedPreloader/components/index.ts +2 -2
  227. package/src/components/ThemedPreloader/index.ts +2 -2
  228. package/src/components/Toaster/Toaster.stories.tsx +30 -30
  229. package/src/components/Toaster/Toaster.styles.ts +59 -59
  230. package/src/components/Toaster/Toaster.tsx +110 -105
  231. package/src/components/Toaster/index.ts +2 -2
  232. package/src/components/Tooltip/Tooltip.stories.tsx +19 -19
  233. package/src/components/Tooltip/Tooltip.styles.ts +45 -45
  234. package/src/components/Tooltip/Tooltip.tsx +35 -35
  235. package/src/components/Tooltip/index.ts +3 -3
  236. package/src/components/Tooltip/types.ts +1 -1
  237. package/src/components/index.ts +36 -36
  238. package/src/helpers/deprecated.ts +22 -0
  239. package/src/helpers/index.ts +4 -4
  240. package/src/helpers/{utils.ts → misc.ts} +158 -231
  241. package/src/helpers/phone.ts +87 -87
  242. package/src/helpers/popper-helpers.ts +17 -17
  243. package/src/helpers/snippets.tsx +6 -5
  244. package/src/hooks/index.ts +6 -6
  245. package/src/hooks/use-did-mount-effect.ts +18 -18
  246. package/src/hooks/use-dropdown.ts +82 -82
  247. package/src/hooks/use-is-mounted.ts +15 -15
  248. package/src/hooks/use-on-click-outside.ts +77 -77
  249. package/src/hooks/use-theme.ts +32 -32
  250. package/src/hooks/use-tweak-styles.ts +13 -13
  251. package/src/index.ts +6 -6
  252. package/src/theme.ts +149 -149
  253. package/src/types.ts +107 -98
  254. package/src/vite-env.d.ts +1 -1
  255. package/dist/helpers/colors.d.ts +0 -2
  256. package/dist/helpers/utils.d.ts +0 -43
  257. package/src/helpers/colors.ts +0 -3
  258. package/src/helpers/dateHelpers/date-helpers.ts +0 -9
package/src/theme.ts CHANGED
@@ -1,149 +1,149 @@
1
- import { Styles } from 'react-jss';
2
- import { UiKitHelpers, UiKitTheme } from './types';
3
-
4
- export const colors = {
5
- FONT_MAIN: '#222a37',
6
- FONT_MEDIUM: '#505f79',
7
- FONT_LABEL: '#7a869a',
8
- FONT_DISABLED: '#95a0b3',
9
- GREY_ACTIVE: '#95a0b3',
10
- BORDER_MAIN: '#d0d6e1',
11
- BORDER_LIGHT: '#dde3ed',
12
- GREY_HOVER: '#dde3ed',
13
- GREY_FOCUS: '#eceff5',
14
- GREY_DISABLED: '#eceff5',
15
- GREY_BACKGROUND: '#f6f8fc',
16
- CLASSIC_WHITE: '#ffffff',
17
- RED_ACTIVE: '#912e34',
18
- RED_HOVER: '#c13e45',
19
- RED_WARNING: '#f14d56',
20
- RED_WARNING_LIGHT: '#ff6261',
21
- RED_BACKGROUND: '#feedee',
22
- ORANGE_BACKGROUND: '#fff4e9',
23
- GREEN_BACKGROUND: '#f4f9e6',
24
- BLUE_BACKGROUND: '#ebf1ff',
25
- // временные константы пока не будет полной темизации
26
- GREEN_FOCUS: '#97ba1e',
27
- ORANGE_FOCUS: '#ff991f',
28
- } as const;
29
-
30
- export const dimensions = {
31
- BORDER_RADIUS_LARGE: 16,
32
- BORDER_RADIUS_MEDIUM: 12,
33
- BORDER_RADIUS_STD: 8,
34
- BORDER_RADIUS_SMALL: 6,
35
- BORDER_RADIUS_EXTRA_SMALL: 4,
36
- CONTROL_HEIGHT: 48,
37
- } as const;
38
-
39
- export const helpers: UiKitHelpers = {
40
- withAngle: (angleSize = 6, position: 'left' | 'right' = 'left', distance = 100) =>
41
- ({
42
- display: 'inline-block',
43
- position: 'relative',
44
- marginTop: angleSize * 2 - 1,
45
- boxShadow: '0 8px 20px 0 rgba(0, 0, 0, 0.04)',
46
- border: ['solid', 1, colors.BORDER_MAIN],
47
- borderRadius: dimensions.BORDER_RADIUS_EXTRA_SMALL,
48
-
49
- '&:before': {
50
- content: '""',
51
- position: 'absolute',
52
- top: -angleSize,
53
- left: position === 'left' && distance,
54
- right: position === 'right' && distance,
55
- width: 0,
56
- height: 0,
57
- borderLeft: [angleSize, 'solid', 'transparent'],
58
- borderRight: [angleSize, 'solid', 'transparent'],
59
- borderBottom: [angleSize, 'solid', colors.BORDER_MAIN],
60
- },
61
-
62
- '&:after': {
63
- content: '""',
64
- position: 'absolute',
65
- top: -angleSize + 1,
66
- left: position === 'left' && distance + 1,
67
- right: position === 'right' && distance + 1,
68
- width: 0,
69
- height: 0,
70
- borderLeft: [angleSize - 1, 'solid', 'transparent'],
71
- borderRight: [angleSize - 1, 'solid', 'transparent'],
72
- borderBottom: [angleSize - 1, 'solid', colors.CLASSIC_WHITE],
73
- },
74
- } as unknown as Styles),
75
-
76
- withScrollBar: {
77
- overflow: 'auto',
78
- boxSizing: 'border-box',
79
- scrollbarWidth: 'thin' /* Firefox */,
80
- scrollbarColor: '#d0d6e1 transparent',
81
-
82
- '&::-webkit-scrollbar': {
83
- height: 10,
84
- width: 10,
85
- },
86
-
87
- '&::-webkit-scrollbar-thumb': {
88
- backgroundClip: 'padding-box',
89
- backgroundColor: colors.BORDER_MAIN,
90
- border: [2, 'solid', 'transparent'],
91
- borderRadius: 5,
92
- minHeight: 30,
93
- width: 6,
94
-
95
- '&:hover': {
96
- backgroundColor: colors.GREY_ACTIVE,
97
- },
98
- },
99
-
100
- '&::-webkit-scrollbar-track-piece': {
101
- backgroundColor: 'transparent',
102
- },
103
- },
104
- };
105
-
106
- const SLIDE_UP_POSITION_START = 15;
107
- const SLIDE_UP_POSITION_END = 0;
108
-
109
- export const animations = {
110
- // Если понадобится, сюда можно пробросить параметры через useTheme props
111
- slideUp: {
112
- 'slide-up-enter': {
113
- opacity: 0,
114
- transform: `translateY(${SLIDE_UP_POSITION_START}px)`,
115
- },
116
-
117
- 'slide-up-enter-active': {
118
- opacity: 1,
119
- transform: `translateY(${SLIDE_UP_POSITION_END}px)`,
120
- transition: ({ timeout = 150 }: { timeout: number }): string => `${timeout}ms ease-in-out`,
121
- transitionProperty: 'opacity, transform',
122
- },
123
-
124
- 'slide-up-exit-active': {
125
- opacity: 1,
126
- transform: `translateY(${SLIDE_UP_POSITION_END}px)`,
127
- },
128
-
129
- 'slide-up-exit': {
130
- opacity: 0,
131
- transform: `translateY(${SLIDE_UP_POSITION_START}px)`,
132
- transition: ({ timeout = 150 }: { timeout: number }): string => `${timeout}ms ease-in-out`,
133
- transitionProperty: 'opacity, transform',
134
- },
135
- },
136
- };
137
-
138
- export interface CommonUiKitTheme extends UiKitTheme {
139
- colors: typeof colors;
140
- dimensions: typeof dimensions;
141
- }
142
-
143
- export const commonTheme: CommonUiKitTheme = {
144
- name: 'common',
145
- animations,
146
- colors,
147
- dimensions,
148
- helpers,
149
- };
1
+ import { Styles } from 'react-jss';
2
+ import { UiKitHelpers, UiKitTheme } from './types';
3
+
4
+ export const colors = {
5
+ FONT_MAIN: '#222a37',
6
+ FONT_MEDIUM: '#505f79',
7
+ FONT_LABEL: '#7a869a',
8
+ FONT_DISABLED: '#95a0b3',
9
+ GREY_ACTIVE: '#95a0b3',
10
+ BORDER_MAIN: '#d0d6e1',
11
+ BORDER_LIGHT: '#dde3ed',
12
+ GREY_HOVER: '#dde3ed',
13
+ GREY_FOCUS: '#eceff5',
14
+ GREY_DISABLED: '#eceff5',
15
+ GREY_BACKGROUND: '#f6f8fc',
16
+ CLASSIC_WHITE: '#ffffff',
17
+ RED_ACTIVE: '#912e34',
18
+ RED_HOVER: '#c13e45',
19
+ RED_WARNING: '#f14d56',
20
+ RED_WARNING_LIGHT: '#ff6261',
21
+ RED_BACKGROUND: '#feedee',
22
+ ORANGE_BACKGROUND: '#fff4e9',
23
+ GREEN_BACKGROUND: '#f4f9e6',
24
+ BLUE_BACKGROUND: '#ebf1ff',
25
+ // временные константы пока не будет полной темизации
26
+ GREEN_FOCUS: '#97ba1e',
27
+ ORANGE_FOCUS: '#ff991f',
28
+ } as const;
29
+
30
+ export const dimensions = {
31
+ BORDER_RADIUS_LARGE: 16,
32
+ BORDER_RADIUS_MEDIUM: 12,
33
+ BORDER_RADIUS_STD: 8,
34
+ BORDER_RADIUS_SMALL: 6,
35
+ BORDER_RADIUS_EXTRA_SMALL: 4,
36
+ CONTROL_HEIGHT: 48,
37
+ } as const;
38
+
39
+ export const helpers: UiKitHelpers = {
40
+ withAngle: (angleSize = 6, position: 'left' | 'right' = 'left', distance = 100) =>
41
+ ({
42
+ display: 'inline-block',
43
+ position: 'relative',
44
+ marginTop: angleSize * 2 - 1,
45
+ boxShadow: '0 8px 20px 0 rgba(0, 0, 0, 0.04)',
46
+ border: ['solid', 1, colors.BORDER_MAIN],
47
+ borderRadius: dimensions.BORDER_RADIUS_EXTRA_SMALL,
48
+
49
+ '&:before': {
50
+ content: '""',
51
+ position: 'absolute',
52
+ top: -angleSize,
53
+ left: position === 'left' && distance,
54
+ right: position === 'right' && distance,
55
+ width: 0,
56
+ height: 0,
57
+ borderLeft: [angleSize, 'solid', 'transparent'],
58
+ borderRight: [angleSize, 'solid', 'transparent'],
59
+ borderBottom: [angleSize, 'solid', colors.BORDER_MAIN],
60
+ },
61
+
62
+ '&:after': {
63
+ content: '""',
64
+ position: 'absolute',
65
+ top: -angleSize + 1,
66
+ left: position === 'left' && distance + 1,
67
+ right: position === 'right' && distance + 1,
68
+ width: 0,
69
+ height: 0,
70
+ borderLeft: [angleSize - 1, 'solid', 'transparent'],
71
+ borderRight: [angleSize - 1, 'solid', 'transparent'],
72
+ borderBottom: [angleSize - 1, 'solid', colors.CLASSIC_WHITE],
73
+ },
74
+ } as unknown as Styles),
75
+
76
+ withScrollBar: {
77
+ overflow: 'auto',
78
+ boxSizing: 'border-box',
79
+ scrollbarWidth: 'thin' /* Firefox */,
80
+ scrollbarColor: '#d0d6e1 transparent',
81
+
82
+ '&::-webkit-scrollbar': {
83
+ height: 10,
84
+ width: 10,
85
+ },
86
+
87
+ '&::-webkit-scrollbar-thumb': {
88
+ backgroundClip: 'padding-box',
89
+ backgroundColor: colors.BORDER_MAIN,
90
+ border: [2, 'solid', 'transparent'],
91
+ borderRadius: 5,
92
+ minHeight: 30,
93
+ width: 6,
94
+
95
+ '&:hover': {
96
+ backgroundColor: colors.GREY_ACTIVE,
97
+ },
98
+ },
99
+
100
+ '&::-webkit-scrollbar-track-piece': {
101
+ backgroundColor: 'transparent',
102
+ },
103
+ },
104
+ };
105
+
106
+ const SLIDE_UP_POSITION_START = 15;
107
+ const SLIDE_UP_POSITION_END = 0;
108
+
109
+ export const animations = {
110
+ // Если понадобится, сюда можно пробросить параметры через useTheme props
111
+ slideUp: {
112
+ 'slide-up-enter': {
113
+ opacity: 0,
114
+ transform: `translateY(${SLIDE_UP_POSITION_START}px)`,
115
+ },
116
+
117
+ 'slide-up-enter-active': {
118
+ opacity: 1,
119
+ transform: `translateY(${SLIDE_UP_POSITION_END}px)`,
120
+ transition: ({ timeout = 150 }: { timeout: number }): string => `${timeout}ms ease-in-out`,
121
+ transitionProperty: 'opacity, transform',
122
+ },
123
+
124
+ 'slide-up-exit-active': {
125
+ opacity: 1,
126
+ transform: `translateY(${SLIDE_UP_POSITION_END}px)`,
127
+ },
128
+
129
+ 'slide-up-exit': {
130
+ opacity: 0,
131
+ transform: `translateY(${SLIDE_UP_POSITION_START}px)`,
132
+ transition: ({ timeout = 150 }: { timeout: number }): string => `${timeout}ms ease-in-out`,
133
+ transitionProperty: 'opacity, transform',
134
+ },
135
+ },
136
+ };
137
+
138
+ export interface CommonUiKitTheme extends UiKitTheme {
139
+ colors: typeof colors;
140
+ dimensions: typeof dimensions;
141
+ }
142
+
143
+ export const commonTheme: CommonUiKitTheme = {
144
+ name: 'common',
145
+ animations,
146
+ colors,
147
+ dimensions,
148
+ helpers,
149
+ };
package/src/types.ts CHANGED
@@ -1,98 +1,107 @@
1
- import { Styles } from 'react-jss';
2
- import { Modifier, Placement } from 'react-overlays/usePopper';
3
- import { ICommonIcon, IComplexIcon, IPreloaderSvgType, ISvgIcon } from './components';
4
-
5
- export interface IDataAttributes {
6
- [key: string]: unknown;
7
- }
8
-
9
- export interface ICommonProps {
10
- data?: IDataAttributes;
11
- }
12
-
13
- export interface IDropdownWithPopperOptions {
14
- shouldUsePopper?: boolean;
15
- shouldRenderInBody?: boolean;
16
- scrollParent?: 'auto' | 'document' | Element;
17
-
18
- shouldHideOnScroll?: boolean; // работает весьма условно без shouldUsePopper
19
- canBeFlipped?: boolean; // только с shouldUsePopper
20
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
21
- modifiers?: Array<Partial<Modifier<any, any>>>; // только с shouldUsePopper
22
- placement?: Placement; // only with shouldUsePopper
23
- // https://popper.js.org/docs/v2/modifiers/flip/
24
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
25
- flipOptions?: Record<string, any>; // только с shouldUsePopper
26
- }
27
-
28
- export type ComponentStyles<StyleSheet, Props = unknown> = Partial<Styles<keyof StyleSheet, Props>>;
29
-
30
- // TODO: Скрипт
31
- export type ComponentName =
32
- | 'AccountInfo'
33
- | 'AddButton'
34
- | 'Button'
35
- | 'CloseButton'
36
- | 'Checkbox'
37
- | 'CssBaseline'
38
- | 'Colors'
39
- | 'DateInput'
40
- | 'DatePicker'
41
- | 'DatePickerHeader'
42
- | 'Description'
43
- | 'DotsPreloader'
44
- | 'SvgPreloader'
45
- | 'FiltersPane'
46
- | 'FilterInterval'
47
- | 'FilterSelect'
48
- | 'FilterWithDates'
49
- | 'FilterWithPeriod'
50
- | 'FilterWrapper'
51
- | 'FiltersPaneSearch'
52
- | 'Flag'
53
- | 'FlexibleTable'
54
- | 'Icon'
55
- | 'IncrementInput'
56
- | 'Input'
57
- | 'List'
58
- | 'Modal'
59
- | 'MoreMenu'
60
- | 'MultiSelect'
61
- | 'MultiSelectInput'
62
- | 'MultiSelectList'
63
- | 'Notification'
64
- | 'PhoneInput'
65
- | 'PhoneInputCountryList'
66
- | 'RadioButton'
67
- | 'SearchInput'
68
- | 'Select'
69
- | 'SelectList'
70
- | 'ScrollIntoViewIfNeeded'
71
- | 'Switch'
72
- | 'TextArea'
73
- | 'TextWithInfo'
74
- | 'TextWithTooltip'
75
- | 'ThemedPreloader'
76
- | 'Tooltip'
77
- | 'Toaster';
78
-
79
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
80
- export type UiKitAnimations = Record<string, any>;
81
- export type UiKitHelpers = Record<string, Styles | (() => Styles)>;
82
-
83
- export interface UiKitTheme {
84
- name: string;
85
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
86
- components?: Partial<Record<ComponentName, ComponentStyles<any, any>>>;
87
- /**
88
- * Для переопределения иконок, которые есть в UiKit
89
- */
90
- icons?: Partial<Record<ICommonIcon, ISvgIcon>>;
91
- complexIcons?: Partial<Record<IComplexIcon, string>>;
92
- preloaders?: Partial<Record<IPreloaderSvgType, string>>; // TODO: заменить string
93
- animations?: UiKitAnimations;
94
- colors?: Record<string, string>;
95
- dimensions?: Record<string, number>;
96
- boxShadows?: Record<string, string>;
97
- helpers?: UiKitHelpers;
98
- }
1
+ import { ReactElement } from 'react';
2
+ import { Styles } from 'react-jss';
3
+ import { Modifier, Placement } from 'react-overlays/usePopper';
4
+ import type {
5
+ ICommonIcon,
6
+ IComplexIcon,
7
+ IIconType,
8
+ IPreloaderSvgType,
9
+ ISvgIcon,
10
+ } from './components';
11
+
12
+ export interface IDataAttributes {
13
+ [key: string]: unknown;
14
+ }
15
+
16
+ export interface ICommonProps {
17
+ data?: IDataAttributes;
18
+ }
19
+
20
+ export interface IDropdownWithPopperOptions {
21
+ shouldUsePopper?: boolean;
22
+ shouldRenderInBody?: boolean;
23
+ scrollParent?: 'auto' | 'document' | Element;
24
+
25
+ shouldHideOnScroll?: boolean; // работает весьма условно без shouldUsePopper
26
+ canBeFlipped?: boolean; // только с shouldUsePopper
27
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
28
+ modifiers?: Array<Partial<Modifier<any, any>>>; // только с shouldUsePopper
29
+ placement?: Placement; // only with shouldUsePopper
30
+ // https://popper.js.org/docs/v2/modifiers/flip/
31
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
32
+ flipOptions?: Record<string, any>; // только с shouldUsePopper
33
+ }
34
+
35
+ export type IIcon = IIconType | ReactElement;
36
+
37
+ export type ComponentStyles<StyleSheet, Props = unknown> = Partial<Styles<keyof StyleSheet, Props>>;
38
+
39
+ // TODO: Скрипт
40
+ export type ComponentName =
41
+ | 'AccountInfo'
42
+ | 'AddButton'
43
+ | 'Button'
44
+ | 'CloseButton'
45
+ | 'Checkbox'
46
+ | 'CssBaseline'
47
+ | 'Colors'
48
+ | 'DateInput'
49
+ | 'DatePicker'
50
+ | 'DatePickerHeader'
51
+ | 'Description'
52
+ | 'DotsPreloader'
53
+ | 'SvgPreloader'
54
+ | 'FiltersPane'
55
+ | 'FilterInterval'
56
+ | 'FilterSelect'
57
+ | 'FilterWithDates'
58
+ | 'FilterWithPeriod'
59
+ | 'FilterWrapper'
60
+ | 'FiltersPaneSearch'
61
+ | 'Flag'
62
+ | 'FlexibleTable'
63
+ | 'Icon'
64
+ | 'IncrementInput'
65
+ | 'Input'
66
+ | 'List'
67
+ | 'Modal'
68
+ | 'MoreMenu'
69
+ | 'MultiSelect'
70
+ | 'MultiSelectInput'
71
+ | 'MultiSelectList'
72
+ | 'Notification'
73
+ | 'PhoneInput'
74
+ | 'PhoneInputCountryList'
75
+ | 'RadioButton'
76
+ | 'SearchInput'
77
+ | 'Select'
78
+ | 'SelectList'
79
+ | 'ScrollIntoViewIfNeeded'
80
+ | 'Switch'
81
+ | 'TextArea'
82
+ | 'TextWithInfo'
83
+ | 'TextWithTooltip'
84
+ | 'ThemedPreloader'
85
+ | 'Tooltip'
86
+ | 'Toaster';
87
+
88
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
89
+ export type UiKitAnimations = Record<string, any>;
90
+ export type UiKitHelpers = Record<string, Styles | (() => Styles)>;
91
+
92
+ export interface UiKitTheme {
93
+ name: string;
94
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
95
+ components?: Partial<Record<ComponentName, ComponentStyles<any, any>>>;
96
+ /**
97
+ * Для переопределения иконок, которые есть в UiKit
98
+ */
99
+ icons?: Partial<Record<ICommonIcon, ISvgIcon>>;
100
+ complexIcons?: Partial<Record<IComplexIcon, string>>;
101
+ preloaders?: Partial<Record<IPreloaderSvgType, string>>; // TODO: заменить string
102
+ animations?: UiKitAnimations;
103
+ colors?: Record<string, string>;
104
+ dimensions?: Record<string, number>;
105
+ boxShadows?: Record<string, string>;
106
+ helpers?: UiKitHelpers;
107
+ }
package/src/vite-env.d.ts CHANGED
@@ -1 +1 @@
1
- /// <reference types="vite/client" />
1
+ /// <reference types="vite/client" />
@@ -1,2 +0,0 @@
1
- import hexToRgba from 'hex-to-rgba';
2
- export declare const rgba: typeof hexToRgba;
@@ -1,43 +0,0 @@
1
- import { HTMLAttributes, KeyboardEvent, MouseEvent } from 'react';
2
- import { IDataAttributes } from '../types';
3
- export declare const transformToKebab: (string: string) => string;
4
- export declare const hasExactParent: (element: Element, parent: Element) => boolean;
5
- export declare const getParentNode: (element: Element | ShadowRoot | Document) => Element;
6
- export declare const getStyleComputedProperty: (element: Element) => Partial<CSSStyleDeclaration>;
7
- export declare const getScrollParent: (element: Element | Document) => Element;
8
- export declare const isElementOffScreen: (element: HTMLElement, input?: HTMLElement) => boolean;
9
- export declare const getNumberInRange: (value: number, min?: number, max?: number) => number;
10
- export declare const formatStringNumber: (val?: string, separator?: string) => string;
11
- export declare const formatNumber: (val?: number, separator?: string) => string;
12
- export declare const removeStringFormat: (val?: string) => string;
13
- export declare const stringToNumber: (val?: string) => number | undefined;
14
- export declare const setCaretPosition: (elem: HTMLInputElement, caretPos: number | null) => void;
15
- export declare const isSpaceChar: (char?: string) => boolean;
16
- export declare const isInt: (n: number) => boolean;
17
- export declare const getNumberLength: (n?: number) => number;
18
- /**
19
- * Проверяет, что `val` не `null`, не `undefined` и не пустая строка
20
- */
21
- export declare const isNotEmpty: <T>(val: T | null | undefined) => val is T;
22
- /**
23
- * Проверяет, что переданное значение `null` или `undefined`
24
- */
25
- export declare const isEmpty: <T>(val: T | null | undefined) => val is null | undefined;
26
- /**
27
- * Проверяет, что передана непустая строка
28
- */
29
- export declare const isStringNotEmpty: <T extends string>(value: T | null | undefined) => value is T;
30
- export declare const trimStringToMaxLength: (val: string, maxLength: number) => string;
31
- export declare const addDataAttributes: (data?: IDataAttributes) => IDataAttributes;
32
- export declare const addDataTestId: (testId: string | undefined, postfix?: string | number | undefined) => {
33
- 'data-testid': string;
34
- } | undefined;
35
- export declare const getTestId: (testId: string | undefined, postfix?: string | number) => string | undefined;
36
- export declare const getSelectKeyHandler: (cb: (e: KeyboardEvent) => void) => (e: KeyboardEvent) => void;
37
- export declare const addClickHandler: (cb?: ((e: MouseEvent | KeyboardEvent) => void) | undefined, hasAction?: boolean) => HTMLAttributes<unknown>;
38
- /**
39
- * Позволяет создать текстовый фильтр для набора items
40
- * @param getter - функция возвращающая набор строковых значений из каждого item,
41
- * по которым должен осуществляться поиск
42
- */
43
- export declare const createFilter: <T>(getter: (item: T) => Array<string | undefined>, compareFn?: ((item: string, query: string) => boolean) | undefined) => (items: T[], query: string) => T[];
@@ -1,3 +0,0 @@
1
- import hexToRgba from 'hex-to-rgba';
2
-
3
- export const rgba = hexToRgba;
@@ -1,9 +0,0 @@
1
- import { parse, isValid } from 'date-fns';
2
-
3
- export const DATE_FORMAT = 'dd.MM.yyyy';
4
-
5
- export const isDateValid = (value: string): boolean =>
6
- isValid(parse(value, DATE_FORMAT, new Date()));
7
-
8
- export const parseStringToDate = (value: string): Date =>
9
- parse(value, DATE_FORMAT, new Date()) || null;