@itcase/ui 1.8.122 → 1.8.124

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 (266) hide show
  1. package/dist/Avatar_cjs_mojzcWRL.js +161 -0
  2. package/dist/Avatar_es_BFom0nAS.js +157 -0
  3. package/dist/{Button_cjs_i0Dn1pkl.js → Button_cjs_CZz8OjWi.js} +42 -30
  4. package/dist/{Button_es_CtH5EKJd.js → Button_es_Cn3wtv3M.js} +42 -30
  5. package/dist/ChipsGroup_cjs_Dgskkc1e.js +344 -0
  6. package/dist/{ChipsGroup_es_ayPPUwQ7.js → ChipsGroup_es_BVQ7_n0k.js} +48 -35
  7. package/dist/DatePicker_cjs_Lzrr9Amf.js +182 -0
  8. package/dist/DatePicker_es_D1LvY5RT.js +178 -0
  9. package/dist/Divider_cjs_DrmV2ezS.js +105 -0
  10. package/dist/Divider_es_BiYozVBS.js +101 -0
  11. package/dist/DropdownItem_cjs_rKLdFxSj.js +211 -0
  12. package/dist/DropdownItem_es_B-1qtEa7.js +206 -0
  13. package/dist/Group_cjs_DmfeUcFI.js +59 -0
  14. package/dist/Group_es_BU5k8f5S.js +55 -0
  15. package/dist/{Icon_cjs_Cz6IyOkb.js → Icon_cjs_DpFxIFv5.js} +170 -121
  16. package/dist/{Icon_es_BrwLifge.js → Icon_es_D5eiycFI.js} +170 -121
  17. package/dist/Image_cjs_CBDMUzv_.js +29 -0
  18. package/dist/Image_es_BHec4iVN.js +27 -0
  19. package/dist/{Input_cjs_Du73R-wm.js → Input_cjs_DDi5JVAV.js} +27 -19
  20. package/dist/{Input_es_CiDHjDqJ.js → Input_es_BnCXATnh.js} +27 -19
  21. package/dist/{Label_cjs_DMoaOoHi.js → Label_cjs_C-x9blCL.js} +45 -33
  22. package/dist/{Label_es_SULlg9bL.js → Label_es_DCqpSw_F.js} +45 -33
  23. package/dist/{Link_cjs_C5UsZUiF.js → Link_cjs_qKXVfU8e.js} +43 -30
  24. package/dist/{Link_es_XiqbdwLp.js → Link_es_P2b6ya7P.js} +43 -30
  25. package/dist/Loader_cjs_DIDsIq3J.js +143 -0
  26. package/dist/Loader_es_CmSggwbR.js +139 -0
  27. package/dist/Overlay_cjs_tGA2fU43.js +42 -0
  28. package/dist/Overlay_es_BS7OTFoy.js +38 -0
  29. package/dist/{Scrollbar_cjs_DcKOfcNp.js → Scrollbar_cjs_Cp-7v2Mt.js} +1 -1
  30. package/dist/{Scrollbar_es_CThJeCLF.js → Scrollbar_es_CcMgNvGi.js} +1 -1
  31. package/dist/Text_cjs_BDTjOTVB.js +69 -0
  32. package/dist/Text_es_CnymlElo.js +65 -0
  33. package/dist/cjs/components/Accordion.js +37 -34
  34. package/dist/cjs/components/Avatar.js +5 -6
  35. package/dist/cjs/components/AvatarStack/stories/__mock__.js +1 -1
  36. package/dist/cjs/components/AvatarStack.js +17 -16
  37. package/dist/cjs/components/Badge.js +3 -4
  38. package/dist/cjs/components/Breadcrumbs/stories/__mock__.js +1 -1
  39. package/dist/cjs/components/Breadcrumbs.js +27 -23
  40. package/dist/cjs/components/Button.js +5 -6
  41. package/dist/cjs/components/Cell/stories/__mock__.js +1 -1
  42. package/dist/cjs/components/Cell.js +28 -25
  43. package/dist/cjs/components/Checkbox.js +33 -26
  44. package/dist/cjs/components/Checkmark.js +28 -23
  45. package/dist/cjs/components/Chips/stories/__mock__.js +1 -1
  46. package/dist/cjs/components/Chips.js +4 -5
  47. package/dist/cjs/components/Choice/stories/__mock__.js +2 -2
  48. package/dist/cjs/components/Choice.js +46 -40
  49. package/dist/cjs/components/Code.js +34 -26
  50. package/dist/cjs/components/CookiesWarning.js +23 -23
  51. package/dist/cjs/components/Dadata.js +14 -9
  52. package/dist/cjs/components/DatePeriod.js +32 -30
  53. package/dist/cjs/components/DatePicker.js +8 -9
  54. package/dist/cjs/components/Divider.js +1 -2
  55. package/dist/cjs/components/Dot.js +5 -6
  56. package/dist/cjs/components/Drawer.js +23 -21
  57. package/dist/cjs/components/Dropdown/stories/__mock__.js +6 -6
  58. package/dist/cjs/components/Dropdown.js +5 -6
  59. package/dist/cjs/components/Flex.js +11 -12
  60. package/dist/cjs/components/Grid.js +15 -16
  61. package/dist/cjs/components/Group.js +1 -2
  62. package/dist/cjs/components/HTMLContent.js +5 -6
  63. package/dist/cjs/components/HeroTitle.js +17 -16
  64. package/dist/cjs/components/Icon.js +3 -4
  65. package/dist/cjs/components/Image.js +1 -2
  66. package/dist/cjs/components/Input.js +1 -2
  67. package/dist/cjs/components/InputPassword.js +114 -84
  68. package/dist/cjs/components/Label.js +4 -5
  69. package/dist/cjs/components/Link.js +1 -2
  70. package/dist/cjs/components/List.js +39 -28
  71. package/dist/cjs/components/Loader.js +2 -3
  72. package/dist/cjs/components/Logo.js +10 -11
  73. package/dist/cjs/components/MenuItem.js +36 -33
  74. package/dist/cjs/components/Modal.js +40 -38
  75. package/dist/cjs/components/ModalSheetBottom.js +17 -18
  76. package/dist/cjs/components/Notification/stories/__mock__.js +1 -1
  77. package/dist/cjs/components/Notification.js +31 -24
  78. package/dist/cjs/components/Overlay.js +1 -2
  79. package/dist/cjs/components/Pagination.js +43 -41
  80. package/dist/cjs/components/Radio.js +34 -26
  81. package/dist/cjs/components/RangeSlider.js +8 -9
  82. package/dist/cjs/components/Response/img.js +1 -1
  83. package/dist/cjs/components/Response.js +102 -84
  84. package/dist/cjs/components/SVGContent.js +6 -7
  85. package/dist/cjs/components/ScrollOnDrag/stories/__mock__.js +2 -2
  86. package/dist/cjs/components/ScrollOnDrag.js +7 -8
  87. package/dist/cjs/components/ScrollToView.js +8 -9
  88. package/dist/cjs/components/Scrollbar/stories/__mock__.js +1 -1
  89. package/dist/cjs/components/Scrollbar.js +1 -1
  90. package/dist/cjs/components/Search.js +39 -31
  91. package/dist/cjs/components/Segmented/stories/__mock__.js +23 -10
  92. package/dist/cjs/components/Segmented.js +47 -42
  93. package/dist/cjs/components/Select.js +118 -113
  94. package/dist/cjs/components/Swiper/stories/__mock__.js +3 -3
  95. package/dist/cjs/components/Swiper.js +27 -29
  96. package/dist/cjs/components/Switch.js +33 -26
  97. package/dist/cjs/components/Tab/stories/__mock__.js +1 -1
  98. package/dist/cjs/components/Tab.js +59 -69
  99. package/dist/cjs/components/Text.js +1 -2
  100. package/dist/cjs/components/Textarea.js +26 -18
  101. package/dist/cjs/components/Tile.js +21 -17
  102. package/dist/cjs/components/Title.js +3 -4
  103. package/dist/cjs/components/Tooltip.js +3 -4
  104. package/dist/cjs/components/Video/stories/__mocks__.js +1 -1
  105. package/dist/cjs/components/Video.js +3 -4
  106. package/dist/cjs/components/Warning.js +26 -20
  107. package/dist/cjs/context/Notifications.js +38 -42
  108. package/dist/cjs/context/UIContext.js +19 -17
  109. package/dist/cjs/context/UrlAssetPrefix.js +3 -3
  110. package/dist/cjs/hoc/urlWithAssetPrefix.js +13 -16
  111. package/dist/cjs/hooks/useActiveClasses/useActiveClasses.helpers.js +13 -40
  112. package/dist/cjs/hooks/useActiveClasses/useActiveClasses.interface.js +1 -1
  113. package/dist/cjs/hooks/useActiveClasses/useActiveClasses.js +25 -29
  114. package/dist/cjs/hooks/useAppearanceConfig/useAppearanceConfig.js +13 -15
  115. package/dist/cjs/hooks/useAppearanceConfig.js +0 -1
  116. package/dist/cjs/hooks/useDevicePropsGenerator/useDevicePropsGenerator.js +21 -28
  117. package/dist/cjs/hooks/useDevicePropsGenerator.js +0 -1
  118. package/dist/cjs/hooks/useDeviceTargetClass.js +0 -1
  119. package/dist/cjs/hooks/useStyles/styleAttributes.js +1 -1
  120. package/dist/cjs/hooks/useStyles/useStyles.js +0 -1
  121. package/dist/cjs/hooks/useStyles.js +0 -1
  122. package/dist/cjs/hooks/useViewportFix.js +5 -5
  123. package/dist/cjs/hooks.js +1 -1
  124. package/dist/cjs/utils/setViewportProperty.js +3 -3
  125. package/dist/components/Accordion.js +37 -34
  126. package/dist/components/Avatar.js +5 -6
  127. package/dist/components/AvatarStack/stories/__mock__.js +1 -1
  128. package/dist/components/AvatarStack.js +17 -16
  129. package/dist/components/Badge.js +3 -4
  130. package/dist/components/Breadcrumbs/stories/__mock__.js +1 -1
  131. package/dist/components/Breadcrumbs.js +27 -23
  132. package/dist/components/Button.js +5 -6
  133. package/dist/components/Cell/stories/__mock__.js +1 -1
  134. package/dist/components/Cell.js +28 -25
  135. package/dist/components/Checkbox.js +33 -26
  136. package/dist/components/Checkmark.js +28 -23
  137. package/dist/components/Chips/stories/__mock__.js +1 -1
  138. package/dist/components/Chips.js +4 -5
  139. package/dist/components/Choice/stories/__mock__.js +2 -2
  140. package/dist/components/Choice.js +46 -40
  141. package/dist/components/Code.js +34 -26
  142. package/dist/components/CookiesWarning.js +23 -23
  143. package/dist/components/Dadata.js +14 -9
  144. package/dist/components/DatePeriod.js +32 -30
  145. package/dist/components/DatePicker.js +8 -9
  146. package/dist/components/Divider.js +1 -2
  147. package/dist/components/Dot.js +5 -6
  148. package/dist/components/Drawer.js +23 -21
  149. package/dist/components/Dropdown/stories/__mock__.js +6 -6
  150. package/dist/components/Dropdown.js +5 -6
  151. package/dist/components/Flex.js +11 -12
  152. package/dist/components/Grid.js +15 -16
  153. package/dist/components/Group.js +1 -2
  154. package/dist/components/HTMLContent.js +5 -6
  155. package/dist/components/HeroTitle.js +17 -16
  156. package/dist/components/Icon.js +3 -4
  157. package/dist/components/Image.js +1 -2
  158. package/dist/components/Input.js +1 -2
  159. package/dist/components/InputPassword.js +114 -84
  160. package/dist/components/Label.js +4 -5
  161. package/dist/components/Link.js +1 -2
  162. package/dist/components/List.js +39 -28
  163. package/dist/components/Loader.js +2 -3
  164. package/dist/components/Logo.js +10 -11
  165. package/dist/components/MenuItem.js +36 -33
  166. package/dist/components/Modal.js +40 -38
  167. package/dist/components/ModalSheetBottom.js +17 -18
  168. package/dist/components/Notification/stories/__mock__.js +1 -1
  169. package/dist/components/Notification.js +31 -24
  170. package/dist/components/Overlay.js +1 -2
  171. package/dist/components/Pagination.js +43 -41
  172. package/dist/components/Radio.js +34 -26
  173. package/dist/components/RangeSlider.js +8 -9
  174. package/dist/components/Response/img.js +1 -1
  175. package/dist/components/Response.js +102 -84
  176. package/dist/components/SVGContent.js +6 -7
  177. package/dist/components/ScrollOnDrag/stories/__mock__.js +2 -2
  178. package/dist/components/ScrollOnDrag.js +7 -8
  179. package/dist/components/ScrollToView.js +8 -9
  180. package/dist/components/Scrollbar/stories/__mock__.js +1 -1
  181. package/dist/components/Scrollbar.js +1 -1
  182. package/dist/components/Search.js +39 -31
  183. package/dist/components/Segmented/stories/__mock__.js +23 -10
  184. package/dist/components/Segmented.js +47 -42
  185. package/dist/components/Select.js +118 -113
  186. package/dist/components/Swiper/stories/__mock__.js +3 -3
  187. package/dist/components/Swiper.js +27 -29
  188. package/dist/components/Switch.js +33 -26
  189. package/dist/components/Tab/stories/__mock__.js +1 -1
  190. package/dist/components/Tab.js +59 -69
  191. package/dist/components/Text.js +1 -2
  192. package/dist/components/Textarea.js +26 -18
  193. package/dist/components/Tile.js +21 -17
  194. package/dist/components/Title.js +3 -4
  195. package/dist/components/Tooltip.js +3 -4
  196. package/dist/components/Video/stories/__mocks__.js +1 -1
  197. package/dist/components/Video.js +3 -4
  198. package/dist/components/Warning.js +26 -20
  199. package/dist/context/Notifications.js +38 -42
  200. package/dist/context/UIContext.js +19 -17
  201. package/dist/context/UrlAssetPrefix.js +3 -3
  202. package/dist/css/components/Checkmark/Checkmark.css +2 -0
  203. package/dist/css/components/DatePeriod/DatePeriod.css +3 -0
  204. package/dist/css/components/Input/Input.css +0 -8
  205. package/dist/css/components/InputPassword/InputPassword.css +34 -43
  206. package/dist/css/components/Tile/Tile.css +3 -3
  207. package/dist/hoc/urlWithAssetPrefix.js +13 -16
  208. package/dist/hooks/useActiveClasses/useActiveClasses.helpers.js +13 -40
  209. package/dist/hooks/useActiveClasses/useActiveClasses.interface.js +1 -1
  210. package/dist/hooks/useActiveClasses/useActiveClasses.js +25 -29
  211. package/dist/hooks/useAppearanceConfig/useAppearanceConfig.js +13 -15
  212. package/dist/hooks/useAppearanceConfig.js +0 -1
  213. package/dist/hooks/useDevicePropsGenerator/useDevicePropsGenerator.js +21 -28
  214. package/dist/hooks/useDevicePropsGenerator.js +0 -1
  215. package/dist/hooks/useDeviceTargetClass.js +0 -1
  216. package/dist/hooks/useStyles/styleAttributes.js +1 -1
  217. package/dist/hooks/useStyles/useStyles.js +0 -1
  218. package/dist/hooks/useStyles.js +0 -1
  219. package/dist/hooks/useViewportFix.js +5 -5
  220. package/dist/hooks.js +1 -1
  221. package/dist/types/components/InputPassword/InputPassword.appearance.d.ts +179 -2
  222. package/dist/types/components/InputPassword/appearance/inputPasswordDefault.d.ts +7 -4
  223. package/dist/types/components/InputPassword/appearance/inputPasswordDisabled.d.ts +6 -4
  224. package/dist/types/components/InputPassword/appearance/inputPasswordError.d.ts +6 -4
  225. package/dist/types/components/InputPassword/appearance/inputPasswordRequire.d.ts +6 -4
  226. package/dist/types/components/InputPassword/appearance/inputPasswordShape.d.ts +25 -0
  227. package/dist/types/components/InputPassword/appearance/inputPasswordSize.d.ts +14 -28
  228. package/dist/types/components/InputPassword/appearance/inputPasswordStyle.d.ts +5 -5
  229. package/dist/types/components/InputPassword/appearance/inputPasswordSuccess.d.ts +6 -4
  230. package/dist/types/components/Response/Response.constant.d.ts +32 -35
  231. package/dist/types/components/Response/appearance/responseConfirm.d.ts +1 -0
  232. package/dist/types/components/Response/appearance/responseDanger.d.ts +1 -0
  233. package/dist/types/components/Response/appearance/responseEmpty.d.ts +1 -0
  234. package/dist/types/components/Response/appearance/responseError.d.ts +1 -0
  235. package/dist/types/components/Response/appearance/responseFail.d.ts +1 -0
  236. package/dist/types/components/Response/appearance/responseNothingFound.d.ts +1 -0
  237. package/dist/types/components/Response/appearance/responseRefresh.d.ts +1 -0
  238. package/dist/types/components/Response/appearance/responseSuccess.d.ts +1 -0
  239. package/dist/types/components/Response/appearance/responseUnableLoadData.d.ts +1 -0
  240. package/dist/types/components/Response/appearance/responseWarning.d.ts +1 -0
  241. package/dist/types/components/Select/SelectContainer.d.ts +1 -1
  242. package/dist/types/components/Tab/appearance/tabSize.d.ts +0 -14
  243. package/dist/types/components/Tab/appearance/tabSurface.d.ts +7 -7
  244. package/dist/utils/setViewportProperty.js +3 -3
  245. package/package.json +14 -14
  246. package/dist/Avatar_cjs_kuE0Rueg.js +0 -157
  247. package/dist/Avatar_es_lx7s4Vla.js +0 -153
  248. package/dist/ChipsGroup_cjs_C8L3ZeD_.js +0 -331
  249. package/dist/DatePicker_cjs_DsIAoi01.js +0 -183
  250. package/dist/DatePicker_es_BP5BrEr-.js +0 -179
  251. package/dist/Divider_cjs_DUYtmwn2.js +0 -97
  252. package/dist/Divider_es_CCLBFIx6.js +0 -93
  253. package/dist/DropdownItem_cjs_Bhss6lyM.js +0 -207
  254. package/dist/DropdownItem_es_BXl6lPJx.js +0 -202
  255. package/dist/Group_cjs_CsJ6ICKK.js +0 -59
  256. package/dist/Group_es_DRqIIM9m.js +0 -55
  257. package/dist/Image_cjs_B6YlGx8G.js +0 -28
  258. package/dist/Image_es_BvYo_cHH.js +0 -26
  259. package/dist/Loader_cjs_D3lnxPlI.js +0 -132
  260. package/dist/Loader_es_BUSqFrCd.js +0 -128
  261. package/dist/Overlay_cjs_CcfJYN5o.js +0 -41
  262. package/dist/Overlay_es_DF3DAdxS.js +0 -37
  263. package/dist/Text_cjs_0EINiUq4.js +0 -68
  264. package/dist/Text_es_CwV9rjFD.js +0 -64
  265. package/dist/tslib.es6_cjs_CCZ3TN_7.js +0 -59
  266. package/dist/tslib.es6_es_Bwu1Cn-t.js +0 -56
@@ -0,0 +1,105 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var clsx = require('clsx');
5
+ var useAppearanceConfig = require('./cjs/hooks/useAppearanceConfig/useAppearanceConfig.js');
6
+ var useDevicePropsGenerator = require('./cjs/hooks/useDevicePropsGenerator/useDevicePropsGenerator.js');
7
+ var useStyles = require('./cjs/hooks/useStyles/useStyles.js');
8
+
9
+ const dividerAppearanceAccent = {
10
+ accentPrimary: {
11
+ fill: 'accentPrimary',
12
+ },
13
+ };
14
+
15
+ const dividerAppearanceError = {
16
+ errorPrimary: {
17
+ fill: 'errorPrimary',
18
+ },
19
+ };
20
+
21
+ const dividerAppearancePrimary = {
22
+ primaryPrimary: {
23
+ fill: 'primaryPrimary',
24
+ },
25
+ };
26
+
27
+ const dividerAppearanceSecondary = {
28
+ secondaryPrimary: {
29
+ fill: 'secondaryPrimary',
30
+ },
31
+ };
32
+
33
+ const dividerAppearanceSize = {
34
+ sizeL: {
35
+ size: 'l',
36
+ },
37
+ sizeM: {
38
+ size: 'm',
39
+ },
40
+ sizeS: {
41
+ size: 's',
42
+ },
43
+ };
44
+
45
+ const dividerAppearanceSuccess = {
46
+ successPrimary: {
47
+ fill: 'successPrimary',
48
+ },
49
+ };
50
+
51
+ const dividerAppearanceSurface = {
52
+ surfacePrimary: {
53
+ fill: 'surfacePrimary',
54
+ },
55
+ surfaceSecondary: {
56
+ fill: 'surfaceSecondary',
57
+ },
58
+ surfaceTertiary: {
59
+ fill: 'surfaceTertiary',
60
+ },
61
+ surfaceQuaternary: {
62
+ fill: 'surfaceQuaternary',
63
+ },
64
+ };
65
+
66
+ const dividerAppearanceWarning = {
67
+ warningPrimary: {
68
+ fill: 'warningPrimary',
69
+ },
70
+ };
71
+
72
+ const dividerAppearance = {
73
+ ...dividerAppearanceSize,
74
+ ...dividerAppearanceAccent,
75
+ ...dividerAppearanceError,
76
+ ...dividerAppearancePrimary,
77
+ ...dividerAppearanceSecondary,
78
+ ...dividerAppearanceSuccess,
79
+ ...dividerAppearanceSurface,
80
+ ...dividerAppearanceWarning,
81
+ };
82
+
83
+ const dividerConfig = {
84
+ appearance: dividerAppearance,
85
+ setAppearance: (appearanceConfig) => {
86
+ dividerConfig.appearance = appearanceConfig;
87
+ },
88
+ };
89
+ function Divider(props) {
90
+ const { className, appearance, isDisabled, isActive, isSkeleton } = props;
91
+ const appearanceConfig = useAppearanceConfig.useAppearanceConfig(appearance, dividerConfig);
92
+ const propsGenerator = useDevicePropsGenerator.useDevicePropsGenerator(props, appearanceConfig);
93
+ const { directionClass, fillActiveClass, fillActiveHoverClass, fillClass, fillDisabledClass, fillHoverClass, shapeClass, shapeStrengthClass, sizeClass, widthClass, } = propsGenerator;
94
+ // @ts-expect-error
95
+ const { styles: hrStyles } = useStyles.useStyles(props);
96
+ return (jsxRuntime.jsx("hr", { className: clsx(className, 'divider', widthClass && `width_${widthClass}`, directionClass && `divider_direction_${directionClass}`, shapeClass && `shape_${shapeClass}`, shapeStrengthClass && `shape-strength_${shapeStrengthClass}`, sizeClass && `divider_size_${sizeClass}`, !isActive
97
+ ? fillClass && `fill_${fillClass}`
98
+ : fillActiveClass && `fill_active_${fillActiveClass}`, !isActive
99
+ ? fillHoverClass && `fill_hover_${fillHoverClass}`
100
+ : fillActiveHoverClass && `fill_active_hover_${fillActiveHoverClass}`, isDisabled && fillDisabledClass && `fill_disabled_${fillDisabledClass}`, isSkeleton && `divider_skeleton`), style: hrStyles }));
101
+ }
102
+
103
+ exports.Divider = Divider;
104
+ exports.dividerAppearance = dividerAppearance;
105
+ exports.dividerConfig = dividerConfig;
@@ -0,0 +1,101 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import clsx from 'clsx';
3
+ import { useAppearanceConfig } from './hooks/useAppearanceConfig/useAppearanceConfig.js';
4
+ import { useDevicePropsGenerator } from './hooks/useDevicePropsGenerator/useDevicePropsGenerator.js';
5
+ import { useStyles } from './hooks/useStyles/useStyles.js';
6
+
7
+ const dividerAppearanceAccent = {
8
+ accentPrimary: {
9
+ fill: 'accentPrimary',
10
+ },
11
+ };
12
+
13
+ const dividerAppearanceError = {
14
+ errorPrimary: {
15
+ fill: 'errorPrimary',
16
+ },
17
+ };
18
+
19
+ const dividerAppearancePrimary = {
20
+ primaryPrimary: {
21
+ fill: 'primaryPrimary',
22
+ },
23
+ };
24
+
25
+ const dividerAppearanceSecondary = {
26
+ secondaryPrimary: {
27
+ fill: 'secondaryPrimary',
28
+ },
29
+ };
30
+
31
+ const dividerAppearanceSize = {
32
+ sizeL: {
33
+ size: 'l',
34
+ },
35
+ sizeM: {
36
+ size: 'm',
37
+ },
38
+ sizeS: {
39
+ size: 's',
40
+ },
41
+ };
42
+
43
+ const dividerAppearanceSuccess = {
44
+ successPrimary: {
45
+ fill: 'successPrimary',
46
+ },
47
+ };
48
+
49
+ const dividerAppearanceSurface = {
50
+ surfacePrimary: {
51
+ fill: 'surfacePrimary',
52
+ },
53
+ surfaceSecondary: {
54
+ fill: 'surfaceSecondary',
55
+ },
56
+ surfaceTertiary: {
57
+ fill: 'surfaceTertiary',
58
+ },
59
+ surfaceQuaternary: {
60
+ fill: 'surfaceQuaternary',
61
+ },
62
+ };
63
+
64
+ const dividerAppearanceWarning = {
65
+ warningPrimary: {
66
+ fill: 'warningPrimary',
67
+ },
68
+ };
69
+
70
+ const dividerAppearance = {
71
+ ...dividerAppearanceSize,
72
+ ...dividerAppearanceAccent,
73
+ ...dividerAppearanceError,
74
+ ...dividerAppearancePrimary,
75
+ ...dividerAppearanceSecondary,
76
+ ...dividerAppearanceSuccess,
77
+ ...dividerAppearanceSurface,
78
+ ...dividerAppearanceWarning,
79
+ };
80
+
81
+ const dividerConfig = {
82
+ appearance: dividerAppearance,
83
+ setAppearance: (appearanceConfig) => {
84
+ dividerConfig.appearance = appearanceConfig;
85
+ },
86
+ };
87
+ function Divider(props) {
88
+ const { className, appearance, isDisabled, isActive, isSkeleton } = props;
89
+ const appearanceConfig = useAppearanceConfig(appearance, dividerConfig);
90
+ const propsGenerator = useDevicePropsGenerator(props, appearanceConfig);
91
+ const { directionClass, fillActiveClass, fillActiveHoverClass, fillClass, fillDisabledClass, fillHoverClass, shapeClass, shapeStrengthClass, sizeClass, widthClass, } = propsGenerator;
92
+ // @ts-expect-error
93
+ const { styles: hrStyles } = useStyles(props);
94
+ return (jsx("hr", { className: clsx(className, 'divider', widthClass && `width_${widthClass}`, directionClass && `divider_direction_${directionClass}`, shapeClass && `shape_${shapeClass}`, shapeStrengthClass && `shape-strength_${shapeStrengthClass}`, sizeClass && `divider_size_${sizeClass}`, !isActive
95
+ ? fillClass && `fill_${fillClass}`
96
+ : fillActiveClass && `fill_active_${fillActiveClass}`, !isActive
97
+ ? fillHoverClass && `fill_hover_${fillHoverClass}`
98
+ : fillActiveHoverClass && `fill_active_hover_${fillActiveHoverClass}`, isDisabled && fillDisabledClass && `fill_disabled_${fillDisabledClass}`, isSkeleton && `divider_skeleton`), style: hrStyles }));
99
+ }
100
+
101
+ export { Divider as D, dividerAppearance as a, dividerConfig as d };
@@ -0,0 +1,211 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var React = require('react');
5
+ var clsx = require('clsx');
6
+ var useDevicePropsGenerator = require('./cjs/hooks/useDevicePropsGenerator/useDevicePropsGenerator.js');
7
+ var useStyles = require('./cjs/hooks/useStyles/useStyles.js');
8
+ var Icon = require('./Icon_cjs_DpFxIFv5.js');
9
+ var useAppearanceConfig = require('./cjs/hooks/useAppearanceConfig/useAppearanceConfig.js');
10
+ var Divider = require('./Divider_cjs_DrmV2ezS.js');
11
+ var Text = require('./Text_cjs_BDTjOTVB.js');
12
+
13
+ function Dropdown(props) {
14
+ const { className, appearance, animationClose = 'dropdown_animation_close', animationOpen = 'dropdown_animation_open', dropdownList, before, after, isOpen, isSkeleton, setIsOpen, onClickItem, children, } = props;
15
+ const dropdownRef = React.useRef(null);
16
+ // const [isOpen, setIsOpen] = useState(false)
17
+ const [animationState, setAnimationState] = React.useState({
18
+ className: '',
19
+ });
20
+ const onAnimationEnd = React.useCallback(() => {
21
+ // When component is change his visibility(display) in DOM,
22
+ // animation of close can run unnecessary on showing element.
23
+ // const dropdownElement = dropdownRef.current
24
+ setAnimationState((prevState) => ({
25
+ className: isOpen ? prevState.className : '',
26
+ }));
27
+ }, [isOpen]);
28
+ React.useEffect(() => {
29
+ if (animationOpen && animationClose) {
30
+ setAnimationState(() => ({
31
+ className: isOpen ? animationOpen : animationClose,
32
+ }));
33
+ }
34
+ }, [isOpen, animationOpen, animationClose]);
35
+ // Close dropdown by click outside
36
+ React.useEffect(() => {
37
+ // Add a handler to keep track of the click target.
38
+ function onClickWindow(event) {
39
+ const dropdownElement = dropdownRef.current;
40
+ if (dropdownElement && animationOpen) {
41
+ // Is event target inside of dropdown element
42
+ const isContainsTarget = dropdownElement.contains(event.target);
43
+ // Is dropdown element has "open" class
44
+ const hasOpenClass = dropdownElement.classList.contains(animationOpen);
45
+ if (!isContainsTarget && hasOpenClass) {
46
+ // Trigger close event with animation
47
+ // dropdownElement.click() - trigger "onClickWindow" again
48
+ setIsOpen(false);
49
+ }
50
+ }
51
+ }
52
+ // Add event listener for current dropdown on first render
53
+ window.addEventListener('click', onClickWindow);
54
+ return () => {
55
+ // Remove event listener for current dropdown on unmount
56
+ window.removeEventListener('click', onClickWindow);
57
+ };
58
+ // eslint-disable-next-line react-hooks/exhaustive-deps
59
+ }, []);
60
+ const propsGenerator = useDevicePropsGenerator.useDevicePropsGenerator(props);
61
+ const { alignmentClass, fillClass, fillHoverClass, elevationClass, shapeClass, shapeStrengthClass, } = propsGenerator;
62
+ const { styles } = useStyles.useStyles(props);
63
+ return (jsxRuntime.jsxs("div", { className: clsx(className, 'dropdown', alignmentClass && `alignment_${alignmentClass}`, shapeClass && `shape_${shapeClass}`, shapeStrengthClass && `shape-strength_${shapeStrengthClass}`, elevationClass && `elevation_${elevationClass}`, isOpen ? 'dropdown_state_open' : 'dropdown_state_close', animationState.className), ref: dropdownRef, style: styles, children: [before, (children || dropdownList) && (jsxRuntime.jsxs("div", { className: clsx('dropdown__wrapper', fillClass && `fill_${fillClass}`, fillHoverClass && `fill_hover_${fillHoverClass}`),
64
+ // Add "onAnimationEnd" only for wrapper for ignore dropdown button
65
+ onAnimationEnd: onAnimationEnd, children: [dropdownList?.map((item) => (jsxRuntime.jsx(DropdownItem, { appearance: appearance, label: item.label, badgeValue: item.badgeValue, emptyMessage: item.emptyMessage, iconAfter: item.iconAfter, iconBefore: item.iconBefore, iconSrc: item.icon, isActive: item.isActive, isSkeleton: isSkeleton, onClick: item.onClick || ((event) => onClickItem?.(item, event)) }, item.key))), children] })), after] }));
66
+ }
67
+
68
+ const dropdownAppearanceAccent = {
69
+ accentPrimary: {
70
+ fill: 'accentPrimary',
71
+ fillActive: 'accentPrimaryActive',
72
+ fillActiveHover: 'accentHoverPrimary',
73
+ fillHover: 'accentHoverPrimary',
74
+ labelTextColor: 'accentTextPrimary',
75
+ labelTextColorActive: 'accentTextPrimary',
76
+ labelTextColorActiveHover: 'accentTextPrimary',
77
+ labelTextColorHover: 'accentTextPrimary',
78
+ badgeAppearance: 'surfacePrimary',
79
+ dividerFill: 'surfaceTertiary',
80
+ emptyMessageTextColor: 'accentTextPrimary',
81
+ iconAfterFillIcon: 'accentItemPrimary',
82
+ iconBeforeFillIcon: 'accentItemPrimary',
83
+ },
84
+ accentSecondary: {
85
+ fill: 'accentPrimary',
86
+ fillHover: 'accentPrimaryHover',
87
+ labelTextColor: 'accentTextSecondary',
88
+ labelTextColorHover: 'accentTextSecondary',
89
+ borderColor: 'accentBorderPrimary',
90
+ },
91
+ };
92
+
93
+ const dropdownAppearanceSize = {
94
+ sizeL: {
95
+ size: 'l',
96
+ labelTextSize: 'm',
97
+ badgeSize: 'xs',
98
+ badgeTextSize: 'xs',
99
+ dividerSize: 's',
100
+ emptyMessageTextSize: 'm',
101
+ iconAfterFillSize: '24',
102
+ iconAfterSize: '24',
103
+ iconBeforeFillSize: '24',
104
+ iconBeforeSize: '24',
105
+ },
106
+ sizeS: {
107
+ size: 's',
108
+ labelTextSize: 's',
109
+ badgeSize: 'xs',
110
+ badgeTextSize: 'xs',
111
+ dividerSize: 's',
112
+ emptyMessageTextSize: 'm',
113
+ iconAfterFillSize: '16',
114
+ iconAfterSize: '16',
115
+ iconBeforeFillSize: '16',
116
+ iconBeforeSize: '16',
117
+ },
118
+ sizeXS: {
119
+ size: 'xs',
120
+ labelTextSize: 'xs',
121
+ badgeSize: 'xs',
122
+ badgeTextSize: 'xs',
123
+ dividerSize: 's',
124
+ emptyMessageTextSize: 'xs',
125
+ iconAfterFillSize: '12',
126
+ iconAfterSize: '12',
127
+ iconBeforeFillSize: '12',
128
+ iconBeforeSize: '12',
129
+ },
130
+ };
131
+
132
+ const dropdownAppearanceStyle = {
133
+ solid: {
134
+ borderColor: 'none',
135
+ },
136
+ outlined: {
137
+ fill: 'none',
138
+ },
139
+ full: {},
140
+ ghost: {
141
+ fill: 'none',
142
+ borderColor: 'none',
143
+ },
144
+ };
145
+
146
+ const dropdownAppearanceSurface = {
147
+ surfacePrimary: {
148
+ fill: 'surfacePrimary',
149
+ fillActive: 'surfacePrimaryActive',
150
+ fillHover: 'surfaceHoverPrimary',
151
+ labelTextColor: 'surfaceTextPrimary',
152
+ labelTextColorActive: 'surfaceTextPrimary',
153
+ labelTextColorActiveHover: 'surfaceTextPrimary',
154
+ labelTextColorHover: 'surfaceTextPrimary',
155
+ badgeAppearance: 'accentPrimary',
156
+ dividerFill: 'surfaceTertiary',
157
+ emptyMessageTextColor: 'surfaceTextPrimary',
158
+ iconAfterFillIcon: 'surfaceItemPrimary',
159
+ iconBeforeFillIcon: 'surfaceItemPrimary',
160
+ },
161
+ surfaceSecondary: {
162
+ fill: 'surfaceSecondary',
163
+ fillHover: 'surfaceSecondaryHover',
164
+ labelTextColor: 'surfaceTextPrimary',
165
+ loaderFill: 'surfaceSecondary',
166
+ loaderItemFill: 'surfaceItemPrimary',
167
+ },
168
+ surfaceTertiary: {
169
+ fill: 'surfaceTertiary',
170
+ fillHover: 'surfaceTertiaryHover',
171
+ labelTextColor: 'surfaceTextPrimary',
172
+ },
173
+ surfaceQuaternary: {
174
+ fill: 'surfaceQuaternary',
175
+ fillHover: 'surfaceQuaternaryHover',
176
+ labelTextColor: 'surfaceTextPrimary',
177
+ },
178
+ };
179
+
180
+ const dropdownItemAppearance = {
181
+ ...dropdownAppearanceSurface,
182
+ ...dropdownAppearanceStyle,
183
+ ...dropdownAppearanceAccent,
184
+ ...dropdownAppearanceSize,
185
+ };
186
+
187
+ const dropdownItemConfig = {
188
+ appearance: dropdownItemAppearance,
189
+ setAppearance: (appearanceConfig) => {
190
+ dropdownItemConfig.appearance = appearanceConfig;
191
+ },
192
+ };
193
+ function DropdownItem(props) {
194
+ const { className, appearance, label, desc, isDisabled, badgeValue, emptyMessage, showDivider, before, after, isActive, isHover, isSkeleton, onClick, onMouseEnter, children, } = props;
195
+ const appearanceConfig = useAppearanceConfig.useAppearanceConfig(appearance, dropdownItemConfig);
196
+ const propsGenerator = useDevicePropsGenerator.useDevicePropsGenerator(props, appearanceConfig);
197
+ const { directionClass, justifyContentClass, fillActiveClass, fillActiveHoverClass, fillClass, fillDisabledClass, fillHoverClass, labelTextAlign, labelTextColor, labelTextColorActive, labelTextColorActiveHover, labelTextColorHover, labelTextSize, labelTextStyle, labelTextWeight, labelTextWrap, descTextColor, descTextColorHover, descTextGradient, descTextSize, descTextStyle, descTextWeight, descTextWrap, badgeAppearance, badgeShape, badgeSize, badgeTextColor, badgeTextSize, dividerDirection, dividerFill, dividerSize, emptyMessageTextColor, emptyMessageTextColorHover, emptyMessageTextSize, emptyMessageTextStyle, emptyMessageTextWeight, emptyMessageTextWrap, iconAfter, iconAfterFill, iconAfterFillIcon, iconAfterFillSize, iconAfterShape, iconAfterSize, iconAfterSrc, iconBadgeAppearance, iconBadgeShape, iconBadgeSize, iconBadgeTextColor, iconBadgeTextSize, iconBadgeValue, iconBefore, iconBeforeFill, iconBeforeFillIcon, iconBeforeFillSize, iconBeforeShape, iconBeforeSize, iconBeforeSrc, shapeClass, sizeClass, widthClass, } = propsGenerator;
198
+ // @ts-expect-error
199
+ const { styles: dropdownItem } = useStyles.useStyles(props);
200
+ return (jsxRuntime.jsxs("div", { className: clsx('dropdown__item', isActive && 'dropdown__item_state_active', isHover && 'dropdown__item_state_hover', directionClass && `dropdown__item_direction_${directionClass}`, className, !isActive
201
+ ? fillClass && `fill_${fillClass}`
202
+ : fillActiveClass && `fill_active_${fillActiveClass}`, !isActive
203
+ ? fillHoverClass && `fill_hover_${fillHoverClass}`
204
+ : fillActiveHoverClass && `fill_active_hover_${fillActiveHoverClass}`, fillDisabledClass && `fill_disabled_${fillDisabledClass}`, sizeClass && `dropdown__item_size_${sizeClass}`, shapeClass && `dropdown__item_shape_${shapeClass}`, widthClass && `dropdown__item_width_${widthClass}`, isDisabled && `dropdown__item_state_disabled`, onClick && 'cursor_type_pointer', isSkeleton && `dropdown__item_skeleton`, justifyContentClass &&
205
+ `dropdown__item_justify-content_${justifyContentClass}`), style: dropdownItem, onClick: onClick, onMouseEnter: onMouseEnter, children: [jsxRuntime.jsx("div", { className: "dropdown__item-wrapper", children: jsxRuntime.jsxs(React.Fragment, { children: [before, (iconBefore || iconBeforeSrc) && (jsxRuntime.jsx(Icon.Icon, { className: clsx('dropdown__item_before', iconBadgeValue && 'dropdown__item_before-badge'), fill: iconBeforeFill, fillSize: iconBeforeFillSize, badgeAppearance: iconBadgeAppearance, badgeClass: 'dropdown__item_before_badge', badgeShape: iconBadgeShape, badgeSize: iconBadgeSize, badgeTextColor: iconBadgeTextColor, badgeTextSize: iconBadgeTextSize, badgeValue: iconBadgeValue, iconFill: iconBeforeFillIcon, iconSize: iconBeforeSize, imageSrc: iconBeforeSrc, shape: iconBeforeShape, SvgImage: iconBefore })), children || (jsxRuntime.jsxs(React.Fragment, { children: [label && (jsxRuntime.jsx(Text.Text, { className: "dropdown__item-label", size: labelTextSize, textAlign: labelTextAlign, textColor: !isActive && labelTextColor, textColorActive: "accentTextPrimary", textColorActive: isActive && labelTextColorActive, textColorHover: !isActive && labelTextColorHover, textColorHoverActive: isActive && labelTextColorActiveHover, textStyle: labelTextStyle, textWeight: labelTextWeight, textWrap: labelTextWrap, isActive: isActive, children: label })), badgeValue && (jsxRuntime.jsx(Icon.Badge, { appearance: badgeAppearance, size: badgeSize, textColor: badgeTextColor, textSize: badgeTextSize, shape: badgeShape, value: badgeValue })), desc && (jsxRuntime.jsx(Text.Text, { className: "dropdown__item-desc", size: descTextSize, textColor: descTextColor, textColorGradient: descTextGradient, textColorHover: descTextColorHover, textStyle: descTextStyle, textWeight: descTextWeight, textWrap: descTextWrap, isActive: isActive, children: desc })), emptyMessage && (jsxRuntime.jsx(Text.Text, { className: "dropdown__item", size: emptyMessageTextSize, textColor: emptyMessageTextColor, textColorHover: emptyMessageTextColorHover, textStyle: emptyMessageTextStyle, textWeight: emptyMessageTextWeight, textWrap: emptyMessageTextWrap, isActive: isActive, children: emptyMessage }))] })), after, (iconAfter || iconAfterSrc) && (jsxRuntime.jsx(Icon.Icon, { className: clsx('dropdown__item_after', iconBadgeValue && 'dropdown__item_after-badge'), fill: iconAfterFill, fillSize: iconAfterFillSize, badgeAppearance: iconBadgeAppearance, badgeClass: 'dropdown__item_after_badge', badgeShape: iconBadgeShape, badgeSize: iconBadgeSize, badgeTextColor: iconBadgeTextColor, badgeTextSize: iconBadgeTextSize, badgeValue: iconBadgeValue, iconFill: iconAfterFillIcon, iconSize: iconAfterSize, imageSrc: iconAfterSrc, shape: iconAfterShape, SvgImage: iconAfter }))] }) }), showDivider && (jsxRuntime.jsx(Divider.Divider, { width: "fill", direction: dividerDirection, size: dividerSize, fill: dividerFill }))] }));
206
+ }
207
+
208
+ exports.Dropdown = Dropdown;
209
+ exports.DropdownItem = DropdownItem;
210
+ exports.dropdownItemAppearance = dropdownItemAppearance;
211
+ exports.dropdownItemConfig = dropdownItemConfig;
@@ -0,0 +1,206 @@
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
2
+ import React, { useRef, useState, useCallback, useEffect } from 'react';
3
+ import clsx from 'clsx';
4
+ import { useDevicePropsGenerator } from './hooks/useDevicePropsGenerator/useDevicePropsGenerator.js';
5
+ import { useStyles } from './hooks/useStyles/useStyles.js';
6
+ import { I as Icon, B as Badge } from './Icon_es_D5eiycFI.js';
7
+ import { useAppearanceConfig } from './hooks/useAppearanceConfig/useAppearanceConfig.js';
8
+ import { D as Divider } from './Divider_es_BiYozVBS.js';
9
+ import { T as Text } from './Text_es_CnymlElo.js';
10
+
11
+ function Dropdown(props) {
12
+ const { className, appearance, animationClose = 'dropdown_animation_close', animationOpen = 'dropdown_animation_open', dropdownList, before, after, isOpen, isSkeleton, setIsOpen, onClickItem, children, } = props;
13
+ const dropdownRef = useRef(null);
14
+ // const [isOpen, setIsOpen] = useState(false)
15
+ const [animationState, setAnimationState] = useState({
16
+ className: '',
17
+ });
18
+ const onAnimationEnd = useCallback(() => {
19
+ // When component is change his visibility(display) in DOM,
20
+ // animation of close can run unnecessary on showing element.
21
+ // const dropdownElement = dropdownRef.current
22
+ setAnimationState((prevState) => ({
23
+ className: isOpen ? prevState.className : '',
24
+ }));
25
+ }, [isOpen]);
26
+ useEffect(() => {
27
+ if (animationOpen && animationClose) {
28
+ setAnimationState(() => ({
29
+ className: isOpen ? animationOpen : animationClose,
30
+ }));
31
+ }
32
+ }, [isOpen, animationOpen, animationClose]);
33
+ // Close dropdown by click outside
34
+ useEffect(() => {
35
+ // Add a handler to keep track of the click target.
36
+ function onClickWindow(event) {
37
+ const dropdownElement = dropdownRef.current;
38
+ if (dropdownElement && animationOpen) {
39
+ // Is event target inside of dropdown element
40
+ const isContainsTarget = dropdownElement.contains(event.target);
41
+ // Is dropdown element has "open" class
42
+ const hasOpenClass = dropdownElement.classList.contains(animationOpen);
43
+ if (!isContainsTarget && hasOpenClass) {
44
+ // Trigger close event with animation
45
+ // dropdownElement.click() - trigger "onClickWindow" again
46
+ setIsOpen(false);
47
+ }
48
+ }
49
+ }
50
+ // Add event listener for current dropdown on first render
51
+ window.addEventListener('click', onClickWindow);
52
+ return () => {
53
+ // Remove event listener for current dropdown on unmount
54
+ window.removeEventListener('click', onClickWindow);
55
+ };
56
+ // eslint-disable-next-line react-hooks/exhaustive-deps
57
+ }, []);
58
+ const propsGenerator = useDevicePropsGenerator(props);
59
+ const { alignmentClass, fillClass, fillHoverClass, elevationClass, shapeClass, shapeStrengthClass, } = propsGenerator;
60
+ const { styles } = useStyles(props);
61
+ return (jsxs("div", { className: clsx(className, 'dropdown', alignmentClass && `alignment_${alignmentClass}`, shapeClass && `shape_${shapeClass}`, shapeStrengthClass && `shape-strength_${shapeStrengthClass}`, elevationClass && `elevation_${elevationClass}`, isOpen ? 'dropdown_state_open' : 'dropdown_state_close', animationState.className), ref: dropdownRef, style: styles, children: [before, (children || dropdownList) && (jsxs("div", { className: clsx('dropdown__wrapper', fillClass && `fill_${fillClass}`, fillHoverClass && `fill_hover_${fillHoverClass}`),
62
+ // Add "onAnimationEnd" only for wrapper for ignore dropdown button
63
+ onAnimationEnd: onAnimationEnd, children: [dropdownList?.map((item) => (jsx(DropdownItem, { appearance: appearance, label: item.label, badgeValue: item.badgeValue, emptyMessage: item.emptyMessage, iconAfter: item.iconAfter, iconBefore: item.iconBefore, iconSrc: item.icon, isActive: item.isActive, isSkeleton: isSkeleton, onClick: item.onClick || ((event) => onClickItem?.(item, event)) }, item.key))), children] })), after] }));
64
+ }
65
+
66
+ const dropdownAppearanceAccent = {
67
+ accentPrimary: {
68
+ fill: 'accentPrimary',
69
+ fillActive: 'accentPrimaryActive',
70
+ fillActiveHover: 'accentHoverPrimary',
71
+ fillHover: 'accentHoverPrimary',
72
+ labelTextColor: 'accentTextPrimary',
73
+ labelTextColorActive: 'accentTextPrimary',
74
+ labelTextColorActiveHover: 'accentTextPrimary',
75
+ labelTextColorHover: 'accentTextPrimary',
76
+ badgeAppearance: 'surfacePrimary',
77
+ dividerFill: 'surfaceTertiary',
78
+ emptyMessageTextColor: 'accentTextPrimary',
79
+ iconAfterFillIcon: 'accentItemPrimary',
80
+ iconBeforeFillIcon: 'accentItemPrimary',
81
+ },
82
+ accentSecondary: {
83
+ fill: 'accentPrimary',
84
+ fillHover: 'accentPrimaryHover',
85
+ labelTextColor: 'accentTextSecondary',
86
+ labelTextColorHover: 'accentTextSecondary',
87
+ borderColor: 'accentBorderPrimary',
88
+ },
89
+ };
90
+
91
+ const dropdownAppearanceSize = {
92
+ sizeL: {
93
+ size: 'l',
94
+ labelTextSize: 'm',
95
+ badgeSize: 'xs',
96
+ badgeTextSize: 'xs',
97
+ dividerSize: 's',
98
+ emptyMessageTextSize: 'm',
99
+ iconAfterFillSize: '24',
100
+ iconAfterSize: '24',
101
+ iconBeforeFillSize: '24',
102
+ iconBeforeSize: '24',
103
+ },
104
+ sizeS: {
105
+ size: 's',
106
+ labelTextSize: 's',
107
+ badgeSize: 'xs',
108
+ badgeTextSize: 'xs',
109
+ dividerSize: 's',
110
+ emptyMessageTextSize: 'm',
111
+ iconAfterFillSize: '16',
112
+ iconAfterSize: '16',
113
+ iconBeforeFillSize: '16',
114
+ iconBeforeSize: '16',
115
+ },
116
+ sizeXS: {
117
+ size: 'xs',
118
+ labelTextSize: 'xs',
119
+ badgeSize: 'xs',
120
+ badgeTextSize: 'xs',
121
+ dividerSize: 's',
122
+ emptyMessageTextSize: 'xs',
123
+ iconAfterFillSize: '12',
124
+ iconAfterSize: '12',
125
+ iconBeforeFillSize: '12',
126
+ iconBeforeSize: '12',
127
+ },
128
+ };
129
+
130
+ const dropdownAppearanceStyle = {
131
+ solid: {
132
+ borderColor: 'none',
133
+ },
134
+ outlined: {
135
+ fill: 'none',
136
+ },
137
+ full: {},
138
+ ghost: {
139
+ fill: 'none',
140
+ borderColor: 'none',
141
+ },
142
+ };
143
+
144
+ const dropdownAppearanceSurface = {
145
+ surfacePrimary: {
146
+ fill: 'surfacePrimary',
147
+ fillActive: 'surfacePrimaryActive',
148
+ fillHover: 'surfaceHoverPrimary',
149
+ labelTextColor: 'surfaceTextPrimary',
150
+ labelTextColorActive: 'surfaceTextPrimary',
151
+ labelTextColorActiveHover: 'surfaceTextPrimary',
152
+ labelTextColorHover: 'surfaceTextPrimary',
153
+ badgeAppearance: 'accentPrimary',
154
+ dividerFill: 'surfaceTertiary',
155
+ emptyMessageTextColor: 'surfaceTextPrimary',
156
+ iconAfterFillIcon: 'surfaceItemPrimary',
157
+ iconBeforeFillIcon: 'surfaceItemPrimary',
158
+ },
159
+ surfaceSecondary: {
160
+ fill: 'surfaceSecondary',
161
+ fillHover: 'surfaceSecondaryHover',
162
+ labelTextColor: 'surfaceTextPrimary',
163
+ loaderFill: 'surfaceSecondary',
164
+ loaderItemFill: 'surfaceItemPrimary',
165
+ },
166
+ surfaceTertiary: {
167
+ fill: 'surfaceTertiary',
168
+ fillHover: 'surfaceTertiaryHover',
169
+ labelTextColor: 'surfaceTextPrimary',
170
+ },
171
+ surfaceQuaternary: {
172
+ fill: 'surfaceQuaternary',
173
+ fillHover: 'surfaceQuaternaryHover',
174
+ labelTextColor: 'surfaceTextPrimary',
175
+ },
176
+ };
177
+
178
+ const dropdownItemAppearance = {
179
+ ...dropdownAppearanceSurface,
180
+ ...dropdownAppearanceStyle,
181
+ ...dropdownAppearanceAccent,
182
+ ...dropdownAppearanceSize,
183
+ };
184
+
185
+ const dropdownItemConfig = {
186
+ appearance: dropdownItemAppearance,
187
+ setAppearance: (appearanceConfig) => {
188
+ dropdownItemConfig.appearance = appearanceConfig;
189
+ },
190
+ };
191
+ function DropdownItem(props) {
192
+ const { className, appearance, label, desc, isDisabled, badgeValue, emptyMessage, showDivider, before, after, isActive, isHover, isSkeleton, onClick, onMouseEnter, children, } = props;
193
+ const appearanceConfig = useAppearanceConfig(appearance, dropdownItemConfig);
194
+ const propsGenerator = useDevicePropsGenerator(props, appearanceConfig);
195
+ const { directionClass, justifyContentClass, fillActiveClass, fillActiveHoverClass, fillClass, fillDisabledClass, fillHoverClass, labelTextAlign, labelTextColor, labelTextColorActive, labelTextColorActiveHover, labelTextColorHover, labelTextSize, labelTextStyle, labelTextWeight, labelTextWrap, descTextColor, descTextColorHover, descTextGradient, descTextSize, descTextStyle, descTextWeight, descTextWrap, badgeAppearance, badgeShape, badgeSize, badgeTextColor, badgeTextSize, dividerDirection, dividerFill, dividerSize, emptyMessageTextColor, emptyMessageTextColorHover, emptyMessageTextSize, emptyMessageTextStyle, emptyMessageTextWeight, emptyMessageTextWrap, iconAfter, iconAfterFill, iconAfterFillIcon, iconAfterFillSize, iconAfterShape, iconAfterSize, iconAfterSrc, iconBadgeAppearance, iconBadgeShape, iconBadgeSize, iconBadgeTextColor, iconBadgeTextSize, iconBadgeValue, iconBefore, iconBeforeFill, iconBeforeFillIcon, iconBeforeFillSize, iconBeforeShape, iconBeforeSize, iconBeforeSrc, shapeClass, sizeClass, widthClass, } = propsGenerator;
196
+ // @ts-expect-error
197
+ const { styles: dropdownItem } = useStyles(props);
198
+ return (jsxs("div", { className: clsx('dropdown__item', isActive && 'dropdown__item_state_active', isHover && 'dropdown__item_state_hover', directionClass && `dropdown__item_direction_${directionClass}`, className, !isActive
199
+ ? fillClass && `fill_${fillClass}`
200
+ : fillActiveClass && `fill_active_${fillActiveClass}`, !isActive
201
+ ? fillHoverClass && `fill_hover_${fillHoverClass}`
202
+ : fillActiveHoverClass && `fill_active_hover_${fillActiveHoverClass}`, fillDisabledClass && `fill_disabled_${fillDisabledClass}`, sizeClass && `dropdown__item_size_${sizeClass}`, shapeClass && `dropdown__item_shape_${shapeClass}`, widthClass && `dropdown__item_width_${widthClass}`, isDisabled && `dropdown__item_state_disabled`, onClick && 'cursor_type_pointer', isSkeleton && `dropdown__item_skeleton`, justifyContentClass &&
203
+ `dropdown__item_justify-content_${justifyContentClass}`), style: dropdownItem, onClick: onClick, onMouseEnter: onMouseEnter, children: [jsx("div", { className: "dropdown__item-wrapper", children: jsxs(React.Fragment, { children: [before, (iconBefore || iconBeforeSrc) && (jsx(Icon, { className: clsx('dropdown__item_before', iconBadgeValue && 'dropdown__item_before-badge'), fill: iconBeforeFill, fillSize: iconBeforeFillSize, badgeAppearance: iconBadgeAppearance, badgeClass: 'dropdown__item_before_badge', badgeShape: iconBadgeShape, badgeSize: iconBadgeSize, badgeTextColor: iconBadgeTextColor, badgeTextSize: iconBadgeTextSize, badgeValue: iconBadgeValue, iconFill: iconBeforeFillIcon, iconSize: iconBeforeSize, imageSrc: iconBeforeSrc, shape: iconBeforeShape, SvgImage: iconBefore })), children || (jsxs(React.Fragment, { children: [label && (jsx(Text, { className: "dropdown__item-label", size: labelTextSize, textAlign: labelTextAlign, textColor: !isActive && labelTextColor, textColorActive: "accentTextPrimary", textColorActive: isActive && labelTextColorActive, textColorHover: !isActive && labelTextColorHover, textColorHoverActive: isActive && labelTextColorActiveHover, textStyle: labelTextStyle, textWeight: labelTextWeight, textWrap: labelTextWrap, isActive: isActive, children: label })), badgeValue && (jsx(Badge, { appearance: badgeAppearance, size: badgeSize, textColor: badgeTextColor, textSize: badgeTextSize, shape: badgeShape, value: badgeValue })), desc && (jsx(Text, { className: "dropdown__item-desc", size: descTextSize, textColor: descTextColor, textColorGradient: descTextGradient, textColorHover: descTextColorHover, textStyle: descTextStyle, textWeight: descTextWeight, textWrap: descTextWrap, isActive: isActive, children: desc })), emptyMessage && (jsx(Text, { className: "dropdown__item", size: emptyMessageTextSize, textColor: emptyMessageTextColor, textColorHover: emptyMessageTextColorHover, textStyle: emptyMessageTextStyle, textWeight: emptyMessageTextWeight, textWrap: emptyMessageTextWrap, isActive: isActive, children: emptyMessage }))] })), after, (iconAfter || iconAfterSrc) && (jsx(Icon, { className: clsx('dropdown__item_after', iconBadgeValue && 'dropdown__item_after-badge'), fill: iconAfterFill, fillSize: iconAfterFillSize, badgeAppearance: iconBadgeAppearance, badgeClass: 'dropdown__item_after_badge', badgeShape: iconBadgeShape, badgeSize: iconBadgeSize, badgeTextColor: iconBadgeTextColor, badgeTextSize: iconBadgeTextSize, badgeValue: iconBadgeValue, iconFill: iconAfterFillIcon, iconSize: iconAfterSize, imageSrc: iconAfterSrc, shape: iconAfterShape, SvgImage: iconAfter }))] }) }), showDivider && (jsx(Divider, { width: "fill", direction: dividerDirection, size: dividerSize, fill: dividerFill }))] }));
204
+ }
205
+
206
+ export { Dropdown as D, DropdownItem as a, dropdownItemConfig as b, dropdownItemAppearance as d };