@invoicebox/ui 0.1.0-alpha.318 → 0.1.0-alpha.319

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 (229) hide show
  1. package/dist/components/common/AppCardLink/index.js +1 -2
  2. package/dist/components/common/Arrow/components/StyledSvg/index.js +3 -2
  3. package/dist/components/common/BgCard/index.js +1 -2
  4. package/dist/components/common/BgCard/styles.js +1 -2
  5. package/dist/components/common/Calendar/index.js +1 -2
  6. package/dist/components/common/Calendar/index.stories.js +1 -2
  7. package/dist/components/common/Calendar/styles.js +1 -2
  8. package/dist/components/common/Divider/index.js +1 -2
  9. package/dist/components/common/Drawer/index.js +3 -3
  10. package/dist/components/common/Drawer/index.stories.js +1 -2
  11. package/dist/components/common/Drawer/styles.js +6 -6
  12. package/dist/components/common/Dropdown/index.d.ts +1 -0
  13. package/dist/components/common/Dropdown/index.js +4 -3
  14. package/dist/components/common/Dropdown/styles.js +11 -11
  15. package/dist/components/common/EntityAutocompleteOptionsDrawer/index.js +1 -2
  16. package/dist/components/common/EntityAutocompleteOptionsDrawer/index.stories.js +1 -2
  17. package/dist/components/common/ErrorBoundary/index.d.ts +15 -0
  18. package/dist/components/common/ErrorBoundary/index.js +64 -0
  19. package/dist/components/common/Flag/components/AreFlag/index.d.ts +1 -0
  20. package/dist/components/common/Flag/components/AreFlag/index.js +37 -0
  21. package/dist/components/common/Flag/components/AreFlag/index.stories.d.ts +5 -0
  22. package/dist/components/common/Flag/components/AreFlag/index.stories.js +14 -0
  23. package/dist/components/common/Flag/components/AusFlag/index.d.ts +1 -0
  24. package/dist/components/common/Flag/components/AusFlag/index.js +87 -0
  25. package/dist/components/common/Flag/components/AusFlag/index.stories.d.ts +5 -0
  26. package/dist/components/common/Flag/components/AusFlag/index.stories.js +14 -0
  27. package/dist/components/common/Flag/components/DeuFlag/index.d.ts +1 -0
  28. package/dist/components/common/Flag/components/DeuFlag/index.js +32 -0
  29. package/dist/components/common/Flag/components/DeuFlag/index.stories.d.ts +5 -0
  30. package/dist/components/common/Flag/components/DeuFlag/index.stories.js +14 -0
  31. package/dist/components/common/Flag/components/EcuFlag/index.d.ts +1 -0
  32. package/dist/components/common/Flag/components/EcuFlag/index.js +42 -0
  33. package/dist/components/common/Flag/components/EcuFlag/index.stories.d.ts +5 -0
  34. package/dist/components/common/Flag/components/EcuFlag/index.stories.js +14 -0
  35. package/dist/components/common/Flag/components/FraFlag/index.d.ts +1 -0
  36. package/dist/components/common/Flag/components/FraFlag/index.js +32 -0
  37. package/dist/components/common/Flag/components/FraFlag/index.stories.d.ts +5 -0
  38. package/dist/components/common/Flag/components/FraFlag/index.stories.js +14 -0
  39. package/dist/components/common/Flag/components/IndFlag/index.d.ts +1 -0
  40. package/dist/components/common/Flag/components/IndFlag/index.js +47 -0
  41. package/dist/components/common/Flag/components/IndFlag/index.stories.d.ts +5 -0
  42. package/dist/components/common/Flag/components/IndFlag/index.stories.js +14 -0
  43. package/dist/components/common/Flag/components/SauFlag/index.d.ts +1 -0
  44. package/dist/components/common/Flag/components/SauFlag/index.js +37 -0
  45. package/dist/components/common/Flag/components/SauFlag/index.stories.d.ts +5 -0
  46. package/dist/components/common/Flag/components/SauFlag/index.stories.js +14 -0
  47. package/dist/components/common/Flag/components/SrbFlag/index.d.ts +1 -0
  48. package/dist/components/common/Flag/components/SrbFlag/index.js +42 -0
  49. package/dist/components/common/Flag/components/SrbFlag/index.stories.d.ts +5 -0
  50. package/dist/components/common/Flag/components/SrbFlag/index.stories.js +14 -0
  51. package/dist/components/common/Flag/components/SvkFlag/index.d.ts +1 -0
  52. package/dist/components/common/Flag/components/SvkFlag/index.js +47 -0
  53. package/dist/components/common/Flag/components/SvkFlag/index.stories.d.ts +5 -0
  54. package/dist/components/common/Flag/components/SvkFlag/index.stories.js +14 -0
  55. package/dist/components/common/Flag/components/SvnFlag/index.d.ts +1 -0
  56. package/dist/components/common/Flag/components/SvnFlag/index.js +42 -0
  57. package/dist/components/common/Flag/components/SvnFlag/index.stories.d.ts +5 -0
  58. package/dist/components/common/Flag/components/SvnFlag/index.stories.js +14 -0
  59. package/dist/components/common/Flag/components/TurFlag/index.d.ts +1 -0
  60. package/dist/components/common/Flag/components/TurFlag/index.js +32 -0
  61. package/dist/components/common/Flag/components/TurFlag/index.stories.d.ts +5 -0
  62. package/dist/components/common/Flag/components/TurFlag/index.stories.js +14 -0
  63. package/dist/components/common/Flag/index.d.ts +2 -2
  64. package/dist/components/common/Flag/index.js +24 -3
  65. package/dist/components/common/Flag/index.stories.d.ts +1 -0
  66. package/dist/components/common/Flag/index.stories.js +26 -1
  67. package/dist/components/common/Flag/styles.js +1 -2
  68. package/dist/components/common/InvoiceboxSpinner/index.js +1 -2
  69. package/dist/components/common/InvoiceboxSpinner/styles.js +1 -2
  70. package/dist/components/common/PointsLoader/index.js +1 -2
  71. package/dist/components/common/QRCode/index.js +2 -2
  72. package/dist/components/common/ReadOnlyLabelValueField/index.js +1 -2
  73. package/dist/components/common/Scrollbar/index.js +1 -2
  74. package/dist/components/common/Scrollbar/styles.js +1 -2
  75. package/dist/components/common/SecondaryButton/index.js +3 -4
  76. package/dist/components/common/SecondaryButton/styles.js +4 -4
  77. package/dist/components/common/Skeleton/index.js +1 -2
  78. package/dist/components/common/Skeleton/styles.js +4 -4
  79. package/dist/components/common/Toast/index.d.ts +6 -2
  80. package/dist/components/common/Toast/index.js +12 -4
  81. package/dist/components/common/Tooltip/index.js +12 -3
  82. package/dist/components/common/Typography/index.js +3 -4
  83. package/dist/components/common/WarningIcon/index.js +1 -2
  84. package/dist/components/form/Autocomplete/components/Autocomplete/index.js +16 -4
  85. package/dist/components/form/Autocomplete/components/Autocomplete/index.stories.js +1 -2
  86. package/dist/components/form/Autocomplete/components/AutocompleteDefaultOption/index.js +3 -2
  87. package/dist/components/form/Autocomplete/components/OrganizationAutocompleteItem/index.js +1 -2
  88. package/dist/components/form/Checkbox/index.js +3 -4
  89. package/dist/components/form/Checkbox/index.stories.js +1 -2
  90. package/dist/components/form/Checkbox/styles.js +11 -4
  91. package/dist/components/form/CodeInput/index.js +4 -3
  92. package/dist/components/form/CodeInput/index.stories.js +1 -2
  93. package/dist/components/form/CountrySelect/components/CountryItem/index.js +1 -2
  94. package/dist/components/form/CountrySelect/index.js +3 -4
  95. package/dist/components/form/CurrencyInput/CoreCurrencyInput/index.js +1 -2
  96. package/dist/components/form/CurrencyInput/CoreCurrencyInput/index.stories.js +1 -2
  97. package/dist/components/form/CurrencyInput/CurrencyInputNumber/index.js +2 -2
  98. package/dist/components/form/CurrencyInput/CurrencyInputNumber/index.stories.js +1 -2
  99. package/dist/components/form/CurrencyInput/CurrencyInputString/index.js +2 -2
  100. package/dist/components/form/CurrencyInput/CurrencyInputString/index.stories.js +1 -2
  101. package/dist/components/form/DateInput/components/CalendarIcon/index.js +1 -2
  102. package/dist/components/form/DateInput/components/MobileDrawerDateCalendar/index.js +1 -2
  103. package/dist/components/form/DateInput/components/MobileDrawerDateCalendar/index.stories.js +1 -2
  104. package/dist/components/form/DateInput/index.js +3 -3
  105. package/dist/components/form/DateInput/index.stories.js +1 -2
  106. package/dist/components/form/DateTimeInput/components/MobileDrawerDateTimeCalendar/index.js +1 -2
  107. package/dist/components/form/DateTimeInput/components/MobileDrawerDateTimeCalendar/index.stories.js +1 -2
  108. package/dist/components/form/DateTimeInput/components/MobileNumbersColumn/index.js +1 -2
  109. package/dist/components/form/DateTimeInput/components/MobileNumbersColumn/styles.js +4 -4
  110. package/dist/components/form/DateTimeInput/components/TimePicker/index.js +1 -2
  111. package/dist/components/form/DateTimeInput/components/TimePicker/index.stories.js +1 -2
  112. package/dist/components/form/DateTimeInput/index.js +3 -3
  113. package/dist/components/form/DateTimeInput/index.stories.js +1 -2
  114. package/dist/components/form/InputLabel/index.js +1 -2
  115. package/dist/components/form/InputLabel/styles.js +4 -4
  116. package/dist/components/form/ModernPlaceholder/index.js +1 -2
  117. package/dist/components/form/ModernPlaceholder/styles.js +3 -2
  118. package/dist/components/form/PhoneInput/constants.js +98 -0
  119. package/dist/components/form/PhoneInput/index.js +4 -3
  120. package/dist/components/form/PhoneInput/index.stories.js +43 -2
  121. package/dist/components/form/PhoneInput/phoneInputLogic.d.ts +2 -2
  122. package/dist/components/form/PhoneInput/types.d.ts +1 -1
  123. package/dist/components/form/PhoneInput/types.js +1 -1
  124. package/dist/components/form/PositiveIntegerInput/index.js +1 -2
  125. package/dist/components/form/PositiveIntegerInput/index.stories.js +1 -2
  126. package/dist/components/form/PositiveIntegerInput/styles.js +1 -2
  127. package/dist/components/form/PureInput/index.js +3 -4
  128. package/dist/components/form/PureInput/styles.js +5 -4
  129. package/dist/components/form/ResetButton/index.js +1 -2
  130. package/dist/components/form/SearchInput/index.js +4 -3
  131. package/dist/components/form/SearchInput/index.stories.js +1 -2
  132. package/dist/components/form/SearchInput/styles.js +3 -2
  133. package/dist/components/form/Select/components/Input/index.d.ts +2 -0
  134. package/dist/components/form/Select/components/Input/index.js +8 -4
  135. package/dist/components/form/Select/components/Loader/index.js +1 -2
  136. package/dist/components/form/Select/components/MultipleValue/index.js +1 -2
  137. package/dist/components/form/Select/components/MultipleValue/styles.js +1 -2
  138. package/dist/components/form/Select/index.js +111 -11
  139. package/dist/components/form/Select/index.stories.js +1 -2
  140. package/dist/components/form/Select/styles.d.ts +1 -0
  141. package/dist/components/form/Select/styles.js +18 -14
  142. package/dist/components/form/TagsInput/index.js +1 -2
  143. package/dist/components/form/TagsInput/index.stories.js +1 -2
  144. package/dist/components/form/TagsInput/styles.js +2 -2
  145. package/dist/components/form/TextInput/index.d.ts +1 -1
  146. package/dist/components/form/TextInput/index.js +4 -3
  147. package/dist/components/form/TextInput/index.stories.js +1 -2
  148. package/dist/components/form/Toggle/index.js +4 -4
  149. package/dist/components/form/Toggle/index.stories.js +1 -2
  150. package/dist/components/form/Toggle/styles.js +14 -10
  151. package/dist/components/form/_hooks/useInputStyles.js +1 -2
  152. package/dist/components/form/common/DrawerHeader/index.js +1 -2
  153. package/dist/esm/components/common/Arrow/components/StyledSvg/index.js +3 -2
  154. package/dist/esm/components/common/Drawer/index.js +2 -1
  155. package/dist/esm/components/common/Drawer/styles.js +5 -4
  156. package/dist/esm/components/common/Dropdown/index.js +3 -1
  157. package/dist/esm/components/common/Dropdown/styles.js +11 -9
  158. package/dist/esm/components/common/ErrorBoundary/index.js +58 -0
  159. package/dist/esm/components/common/Flag/components/AreFlag/index.js +30 -0
  160. package/dist/esm/components/common/Flag/components/AreFlag/index.stories.js +8 -0
  161. package/dist/esm/components/common/Flag/components/AusFlag/index.js +80 -0
  162. package/dist/esm/components/common/Flag/components/AusFlag/index.stories.js +8 -0
  163. package/dist/esm/components/common/Flag/components/DeuFlag/index.js +25 -0
  164. package/dist/esm/components/common/Flag/components/DeuFlag/index.stories.js +8 -0
  165. package/dist/esm/components/common/Flag/components/EcuFlag/index.js +35 -0
  166. package/dist/esm/components/common/Flag/components/EcuFlag/index.stories.js +8 -0
  167. package/dist/esm/components/common/Flag/components/FraFlag/index.js +25 -0
  168. package/dist/esm/components/common/Flag/components/FraFlag/index.stories.js +8 -0
  169. package/dist/esm/components/common/Flag/components/IndFlag/index.js +40 -0
  170. package/dist/esm/components/common/Flag/components/IndFlag/index.stories.js +8 -0
  171. package/dist/esm/components/common/Flag/components/SauFlag/index.js +30 -0
  172. package/dist/esm/components/common/Flag/components/SauFlag/index.stories.js +8 -0
  173. package/dist/esm/components/common/Flag/components/SrbFlag/index.js +35 -0
  174. package/dist/esm/components/common/Flag/components/SrbFlag/index.stories.js +8 -0
  175. package/dist/esm/components/common/Flag/components/SvkFlag/index.js +40 -0
  176. package/dist/esm/components/common/Flag/components/SvkFlag/index.stories.js +8 -0
  177. package/dist/esm/components/common/Flag/components/SvnFlag/index.js +35 -0
  178. package/dist/esm/components/common/Flag/components/SvnFlag/index.stories.js +8 -0
  179. package/dist/esm/components/common/Flag/components/TurFlag/index.js +25 -0
  180. package/dist/esm/components/common/Flag/components/TurFlag/index.stories.js +8 -0
  181. package/dist/esm/components/common/Flag/index.js +23 -1
  182. package/dist/esm/components/common/Flag/index.stories.js +24 -0
  183. package/dist/esm/components/common/QRCode/index.js +2 -2
  184. package/dist/esm/components/common/SecondaryButton/index.js +2 -2
  185. package/dist/esm/components/common/SecondaryButton/styles.js +3 -2
  186. package/dist/esm/components/common/Skeleton/styles.js +3 -2
  187. package/dist/esm/components/common/Toast/index.js +11 -2
  188. package/dist/esm/components/common/Tooltip/index.js +12 -2
  189. package/dist/esm/components/common/Typography/index.js +2 -2
  190. package/dist/esm/components/form/Autocomplete/components/Autocomplete/index.js +15 -2
  191. package/dist/esm/components/form/Autocomplete/components/AutocompleteDefaultOption/index.js +3 -2
  192. package/dist/esm/components/form/Checkbox/index.js +2 -2
  193. package/dist/esm/components/form/Checkbox/styles.js +11 -4
  194. package/dist/esm/components/form/CodeInput/index.js +3 -1
  195. package/dist/esm/components/form/CountrySelect/index.js +2 -2
  196. package/dist/esm/components/form/CurrencyInput/CurrencyInputNumber/index.js +2 -2
  197. package/dist/esm/components/form/CurrencyInput/CurrencyInputString/index.js +2 -2
  198. package/dist/esm/components/form/DateInput/index.js +2 -1
  199. package/dist/esm/components/form/DateTimeInput/components/MobileNumbersColumn/styles.js +3 -2
  200. package/dist/esm/components/form/DateTimeInput/index.js +2 -1
  201. package/dist/esm/components/form/InputLabel/styles.js +3 -2
  202. package/dist/esm/components/form/ModernPlaceholder/styles.js +3 -2
  203. package/dist/esm/components/form/PhoneInput/constants.js +98 -0
  204. package/dist/esm/components/form/PhoneInput/index.js +3 -1
  205. package/dist/esm/components/form/PhoneInput/index.stories.js +42 -0
  206. package/dist/esm/components/form/PhoneInput/types.js +1 -1
  207. package/dist/esm/components/form/PureInput/index.js +2 -2
  208. package/dist/esm/components/form/PureInput/styles.js +5 -4
  209. package/dist/esm/components/form/SearchInput/index.js +3 -1
  210. package/dist/esm/components/form/SearchInput/styles.js +3 -2
  211. package/dist/esm/components/form/Select/components/Input/index.js +7 -2
  212. package/dist/esm/components/form/Select/index.js +111 -10
  213. package/dist/esm/components/form/Select/styles.js +17 -12
  214. package/dist/esm/components/form/TagsInput/styles.js +2 -2
  215. package/dist/esm/components/form/TextInput/index.js +3 -1
  216. package/dist/esm/components/form/Toggle/index.js +3 -2
  217. package/dist/esm/components/form/Toggle/styles.js +14 -10
  218. package/dist/esm/utils/reducedMotion.js +8 -0
  219. package/dist/esm/utils/transformColorByHsl.js +117 -4
  220. package/dist/esm/utils/transformColorByHsl.test.js +49 -0
  221. package/dist/hooks/useUnupdatableHandler/index.stories.js +1 -2
  222. package/dist/palette/context.js +46 -46
  223. package/dist/palette/provider.js +47 -48
  224. package/dist/utils/reducedMotion.d.ts +1 -0
  225. package/dist/utils/reducedMotion.js +13 -0
  226. package/dist/utils/transformColorByHsl.js +117 -4
  227. package/dist/utils/transformColorByHsl.test.d.ts +1 -0
  228. package/dist/utils/transformColorByHsl.test.js +50 -0
  229. package/package.json +2 -1
@@ -77,6 +77,48 @@ export var MultiCountry = {
77
77
  }, {
78
78
  label: 'Узбекистан',
79
79
  value: 'UZB'
80
+ }, {
81
+ label: 'Китай',
82
+ value: 'CHN'
83
+ }, {
84
+ label: 'Испания',
85
+ value: 'ESP'
86
+ }, {
87
+ label: 'Великобритания',
88
+ value: 'GBR'
89
+ }, {
90
+ label: 'ОАЭ',
91
+ value: 'ARE'
92
+ }, {
93
+ label: 'Франция',
94
+ value: 'FRA'
95
+ }, {
96
+ label: 'Сербия',
97
+ value: 'SRB'
98
+ }, {
99
+ label: 'Индия',
100
+ value: 'IND'
101
+ }, {
102
+ label: 'Турция',
103
+ value: 'TUR'
104
+ }, {
105
+ label: 'Словения',
106
+ value: 'SVN'
107
+ }, {
108
+ label: 'Словакия',
109
+ value: 'SVK'
110
+ }, {
111
+ label: 'Эквадор',
112
+ value: 'ECU'
113
+ }, {
114
+ label: 'Германия',
115
+ value: 'DEU'
116
+ }, {
117
+ label: 'Австралия',
118
+ value: 'AUS'
119
+ }, {
120
+ label: 'Саудовская Аравия',
121
+ value: 'SAU'
80
122
  }]
81
123
  }),
82
124
  render: Component
@@ -1,3 +1,3 @@
1
1
  export var RUS_COUNTRY_CODE = 'RUS';
2
2
  export var UNKNOWN_COUNTRY_CODE = 'UNKNOWN';
3
- export var supportedCountries = [RUS_COUNTRY_CODE, 'BLR', 'AZE', 'ARM', 'KAZ', 'TJK', 'UZB', 'KGZ', UNKNOWN_COUNTRY_CODE];
3
+ export var supportedCountries = [RUS_COUNTRY_CODE, 'BLR', 'AZE', 'ARM', 'KAZ', 'TJK', 'UZB', 'KGZ', 'CHN', 'ESP', 'GBR', 'ARE', 'FRA', 'SRB', 'IND', 'TUR', 'SVN', 'SVK', 'ECU', 'DEU', 'AUS', 'SAU', UNKNOWN_COUNTRY_CODE];
@@ -1,7 +1,7 @@
1
1
  var _excluded = ["paddingLeft", "paddingRight", "paddingTop", "paddingBottom", "borderRadius", "hasError", "inFocus", "hasBorder", "isOnlyNumbers", "className", "onChange", "element", "variant", "renderedValue", "useModernStyles", "id"];
2
2
  function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
3
- function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var s = Object.getOwnPropertySymbols(e); for (r = 0; r < s.length; r++) o = s[r], t.includes(o) || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
4
- function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (e.includes(n)) continue; t[n] = r[n]; } return t; }
3
+ function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
4
+ function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
5
5
  import React, { useCallback, useId } from 'react';
6
6
  import * as S from './styles';
7
7
  import { useComponentPalette } from '../../../palette';
@@ -1,11 +1,12 @@
1
1
  import styled from 'styled-components';
2
+ import { reducedMotion } from '../../../utils/reducedMotion';
2
3
  import { InputWithTypography } from '../../common/Typography';
3
4
  import { typography } from '../../common/Typography/typography';
4
5
  export var getPureInputStyled = function getPureInputStyled(component) {
5
6
  return styled(component).withConfig({
6
7
  displayName: "styles",
7
8
  componentId: "sc-1g8ijo6-0"
8
- })(["", " resize:none;color:", ";border-radius:", "px;border:none;width:100%;text-overflow:ellipsis;background-color:", ";transition:all 0.2s ease-in-out 0s;box-sizing:border-box;padding-right:", "px;padding-left:", "px;padding-top:", "px;padding-bottom:", "px;outline:1px solid ", ";&::placeholder{color:", ";}&::-webkit-outer-spin-button,&::-webkit-inner-spin-button{-webkit-appearance:none;margin:0;}&[type='number']{-moz-appearance:textfield;}&:-webkit-autofill,&:-webkit-autofill:hover,&:-webkit-autofill:focus{transition:background-color 0s 600000s,color 0s 600000s !important;}"], function (_ref) {
9
+ })(["", " resize:none;color:", ";border-radius:", "px;border:none;width:100%;text-overflow:ellipsis;background-color:", ";transition:all 0.2s ease-in-out 0s;box-sizing:border-box;padding-right:", "px;padding-left:", "px;padding-top:", "px;padding-bottom:", "px;outline:1px solid ", ";&::placeholder{color:", ";}&::-webkit-outer-spin-button,&::-webkit-inner-spin-button{-webkit-appearance:none;margin:0;}&[type='number']{-moz-appearance:textfield;}&:-webkit-autofill,&:-webkit-autofill:hover,&:-webkit-autofill:focus{transition:background-color 0s 600000s,color 0s 600000s !important;}", ""], function (_ref) {
9
10
  var $variant = _ref.$variant;
10
11
  return $variant && typography[$variant];
11
12
  }, function (_ref2) {
@@ -36,9 +37,9 @@ export var getPureInputStyled = function getPureInputStyled(component) {
36
37
  $hasBorder = _ref9.$hasBorder,
37
38
  $palette = _ref9.$palette;
38
39
  return !$hasBorder ? 'transparent' : $hasError ? $palette.error : $inFocus ? $palette.borderFocus : $palette.border;
39
- }, function (_ref10) {
40
- var $palette = _ref10.$palette;
40
+ }, function (_ref0) {
41
+ var $palette = _ref0.$palette;
41
42
  return $palette.placeholder;
42
- });
43
+ }, reducedMotion);
43
44
  };
44
45
  export var Wrapper = getPureInputStyled(InputWithTypography);
@@ -68,7 +68,9 @@ export var SearchInput = /*#__PURE__*/forwardRef(function (_ref, ref) {
68
68
  value: value,
69
69
  onFocus: handleFocus,
70
70
  onBlur: handleBlur,
71
- inFocus: inFocus,
71
+ inFocus: inFocus
72
+ // eslint-disable-next-line jsx-a11y/no-autofocus -- проп прокидывается потребителю, решение об автофокусе за ним
73
+ ,
72
74
  autoFocus: autoFocus,
73
75
  name: name,
74
76
  maxLength: maxLength,
@@ -1,8 +1,9 @@
1
1
  import styled from 'styled-components';
2
+ import { reducedMotion } from '../../../utils/reducedMotion';
2
3
  export var IconWrapper = styled.span.withConfig({
3
4
  displayName: "styles__IconWrapper",
4
5
  componentId: "sc-1cx3n6g-0"
5
- })(["position:absolute;right:20px;bottom:", ";transform:translateY(50%);display:flex;align-content:center;justify-content:center;opacity:", ";transition:all 0.2s ease-in-out 0s;color:", ";"], function (_ref) {
6
+ })(["position:absolute;right:20px;bottom:", ";transform:translateY(50%);display:flex;align-content:center;justify-content:center;opacity:", ";transition:all 0.2s ease-in-out 0s;color:", ";", ""], function (_ref) {
6
7
  var $useModernStyles = _ref.$useModernStyles;
7
8
  return !$useModernStyles ? "calc(50% - 5px)" : '50%';
8
9
  }, function (_ref2) {
@@ -11,4 +12,4 @@ export var IconWrapper = styled.span.withConfig({
11
12
  }, function (_ref3) {
12
13
  var $palette = _ref3.$palette;
13
14
  return $palette.icon;
14
- });
15
+ }, reducedMotion);
@@ -24,7 +24,8 @@ export var Input = /*#__PURE__*/forwardRef(function (_ref, ref) {
24
24
  required = _ref.required,
25
25
  _ref$useModernStyles = _ref.useModernStyles,
26
26
  useModernStyles = _ref$useModernStyles === void 0 ? false : _ref$useModernStyles,
27
- id = _ref.id;
27
+ id = _ref.id,
28
+ comboboxProps = _ref.comboboxProps;
28
29
  var fallbackId = useId();
29
30
  var inputId = id !== null && id !== void 0 ? id : fallbackId;
30
31
  var _useInputStyles = useInputStyles({
@@ -65,7 +66,11 @@ export var Input = /*#__PURE__*/forwardRef(function (_ref, ref) {
65
66
  paddingRight: 52,
66
67
  onClick: onClick,
67
68
  useModernStyles: useModernStyles
68
- }, paddingAndVariantOptions)), /*#__PURE__*/React.createElement(S.IconWrapper, {
69
+ // с renderedValue PureInput рендерится как div — без tabIndex
70
+ // он был бы недостижим с клавиатуры
71
+ ,
72
+ tabIndex: renderedValue ? 0 : undefined
73
+ }, comboboxProps, paddingAndVariantOptions)), /*#__PURE__*/React.createElement(S.IconWrapper, {
69
74
  $pointerEvents: isShowResetIcon ? 'default' : 'none'
70
75
  }, isShowResetIcon ? /*#__PURE__*/React.createElement(ResetButton, {
71
76
  onClick: onReset
@@ -8,7 +8,7 @@ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r)
8
8
  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
9
9
  function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
10
10
  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
11
- import React, { Fragment, useCallback, useMemo, useRef, useState } from 'react';
11
+ import React, { Fragment, useCallback, useEffect, useId, useMemo, useRef, useState } from 'react';
12
12
  import * as S from './styles';
13
13
  import { Input } from './components/Input';
14
14
  import { useInputFocus } from '../../../hooks/useInputFocus';
@@ -21,9 +21,10 @@ import { Drawer } from '../../common/Drawer';
21
21
  import Loader from './components/Loader';
22
22
  import { MultipleValue } from './components/MultipleValue';
23
23
  import { Checkbox } from '../Checkbox';
24
+ import { ErrorBoundary } from '../../common/ErrorBoundary';
24
25
  var MAX_LIST_HEIGHT = 294;
25
26
  var OPTION_IDENTIFIER = 'option-identifier';
26
- export var Select = function Select(props) {
27
+ var SelectInner = function SelectInner(props) {
27
28
  var _collapseTags;
28
29
  var label = props.label,
29
30
  hasError = props.hasError,
@@ -104,12 +105,47 @@ export var Select = function Select(props) {
104
105
  return new Set(multipleValue);
105
106
  }, [multipleValue]);
106
107
  var optionGroups = useOptionGroups(options, groups);
108
+
109
+ // Плоский список опций в порядке отрисовки (группы разворачиваются) —
110
+ // по нему ходит клавиатурная навигация и считаются id для activedescendant
111
+ var flatOptions = useMemo(function () {
112
+ return optionGroups.reduce(function (acc, group) {
113
+ return acc.concat(group.options);
114
+ }, []);
115
+ }, [optionGroups]);
116
+ var optionIndexByValue = useMemo(function () {
117
+ return new Map(flatOptions.map(function (option, index) {
118
+ return [option.value, index];
119
+ }));
120
+ }, [flatOptions]);
121
+ var baseId = useId();
122
+ var listboxId = "".concat(baseId, "-listbox");
123
+ var getOptionId = function getOptionId(index) {
124
+ return "".concat(baseId, "-option-").concat(index);
125
+ };
126
+
127
+ // Позиция клавиатурного фокуса в списке (aria-activedescendant)
128
+ var _useState3 = useState(-1),
129
+ _useState4 = _slicedToArray(_useState3, 2),
130
+ activeIndex = _useState4[0],
131
+ setActiveIndex = _useState4[1];
107
132
  var handleShow = useCallback(function () {
108
- return setIsOpen(true);
109
- }, []);
133
+ setIsOpen(true);
134
+ // при открытии встаём на выбранную опцию (single), иначе — вне списка
135
+ setActiveIndex(isMultiple ? -1 : flatOptions.findIndex(function (option) {
136
+ return option.value === value;
137
+ }));
138
+ }, [flatOptions, isMultiple, value]);
110
139
  var handleHide = useCallback(function () {
111
140
  return setIsOpen(false);
112
141
  }, []);
142
+ useEffect(function () {
143
+ var _document$getElementB;
144
+ if (activeIndex < 0) return;
145
+ (_document$getElementB = document.getElementById("".concat(baseId, "-option-").concat(activeIndex))) === null || _document$getElementB === void 0 || _document$getElementB.scrollIntoView({
146
+ block: 'nearest'
147
+ });
148
+ }, [activeIndex, baseId]);
113
149
  var dropdownRef = useRef(null);
114
150
  var wrapperRef = useOutsideClick(handleHide, [dropdownRef]);
115
151
  var handleFocus = useCallback(function (event) {
@@ -127,8 +163,7 @@ export var Select = function Select(props) {
127
163
  return blurHandler(event);
128
164
  };
129
165
  }, [blurHandler]);
130
- var handleSelect = useCallback(function (event) {
131
- var newValue = JSON.parse(event.currentTarget.dataset.value);
166
+ var selectValue = useCallback(function (newValue) {
132
167
  if (isMultiple) {
133
168
  var next = multipleValue.includes(newValue) ? multipleValue.filter(function (item) {
134
169
  return item !== newValue;
@@ -144,6 +179,45 @@ export var Select = function Select(props) {
144
179
  delayBlur.current = null;
145
180
  }
146
181
  }, [handleHide, isMultiple, multipleValue, onChangeMultiple, onChangeSingle]);
182
+ var handleSelect = useCallback(function (event) {
183
+ selectValue(JSON.parse(event.currentTarget.dataset.value));
184
+ }, [selectValue]);
185
+
186
+ // Клавиатурная навигация комбобокса — тот же набор клавиш, что в Autocomplete
187
+ var handleKeyDown = useCallback(function (event) {
188
+ var count = flatOptions.length;
189
+ switch (event.key) {
190
+ case 'ArrowDown':
191
+ event.preventDefault();
192
+ if (!isOpen) handleShow();else if (count) setActiveIndex(function (prev) {
193
+ return (prev + 1) % count;
194
+ });
195
+ break;
196
+ case 'ArrowUp':
197
+ event.preventDefault();
198
+ if (!isOpen) handleShow();else if (count) setActiveIndex(function (prev) {
199
+ return prev <= 0 ? count - 1 : prev - 1;
200
+ });
201
+ break;
202
+ case 'Enter':
203
+ case ' ':
204
+ event.preventDefault();
205
+ if (!isOpen) {
206
+ handleShow();
207
+ } else if (activeIndex >= 0 && activeIndex < count) {
208
+ selectValue(flatOptions[activeIndex].value);
209
+ }
210
+ break;
211
+ case 'Escape':
212
+ if (isOpen) {
213
+ event.preventDefault();
214
+ handleHide();
215
+ }
216
+ break;
217
+ default:
218
+ break;
219
+ }
220
+ }, [activeIndex, flatOptions, handleHide, handleShow, isOpen, selectValue]);
147
221
  var handleRemoveTag = useCallback(function (removedValue) {
148
222
  return onChangeMultiple(multipleValue.filter(function (item) {
149
223
  return item !== removedValue;
@@ -187,17 +261,26 @@ export var Select = function Select(props) {
187
261
  }
188
262
  return null;
189
263
  };
190
- var scrollbarContent = /*#__PURE__*/React.createElement(S.ScrollbarContent, null, scrollbarHeader, optionGroups.map(function (_ref2) {
264
+ var scrollbarContent = /*#__PURE__*/React.createElement(S.ScrollbarContent, {
265
+ role: "listbox",
266
+ id: listboxId,
267
+ "aria-multiselectable": isMultiple || undefined
268
+ }, scrollbarHeader, optionGroups.map(function (_ref2) {
191
269
  var group = _ref2.group,
192
270
  groupOptions = _ref2.options;
193
271
  return /*#__PURE__*/React.createElement(Fragment, {
194
272
  key: (group === null || group === void 0 ? void 0 : group.id) || null
195
273
  }, handleGroupRender(group), groupOptions.map(function (option) {
274
+ var flatIndex = optionIndexByValue.get(option.value);
275
+ var isSelected = isMultiple ? selectedValuesSet.has(option.value) : option.value === value;
196
276
  return /*#__PURE__*/React.createElement(S.OptionWrapper, {
197
277
  $usePadding: usePadding,
198
278
  key: option.value
199
279
  }, /*#__PURE__*/React.createElement(S.Option, {
200
280
  key: option.value,
281
+ id: getOptionId(flatIndex),
282
+ role: "option",
283
+ "aria-selected": isSelected,
201
284
  $palette: palette,
202
285
  variant: "bodyMRegular",
203
286
  onClick: handleSelect,
@@ -205,10 +288,13 @@ export var Select = function Select(props) {
205
288
  "data-option-identifier": OPTION_IDENTIFIER,
206
289
  $isGrouped: !!group && !renderOption,
207
290
  $usePadding: usePadding,
208
- $isSelected: !isMultiple && option.value === value
291
+ $isSelected: !isMultiple && option.value === value,
292
+ $isActive: flatIndex === activeIndex
209
293
  }, isMultiple ? /*#__PURE__*/React.createElement(S.OptionContent, null, /*#__PURE__*/React.createElement(S.CheckboxWrapper, null, /*#__PURE__*/React.createElement(Checkbox, {
210
294
  checked: selectedValuesSet.has(option.value),
211
- readOnly: true
295
+ readOnly: true,
296
+ tabIndex: -1,
297
+ "aria-hidden": true
212
298
  })), handleOptionRender(option)) : handleOptionRender(option)));
213
299
  }));
214
300
  }));
@@ -273,7 +359,15 @@ export var Select = function Select(props) {
273
359
  size: fieldSize,
274
360
  onClick: isDrawerOptions || !!renderedValue ? handleInputClick : undefined,
275
361
  required: required,
276
- useModernStyles: useModernStyles
362
+ useModernStyles: useModernStyles,
363
+ comboboxProps: {
364
+ role: 'combobox',
365
+ 'aria-expanded': isOpen,
366
+ 'aria-haspopup': 'listbox',
367
+ 'aria-controls': isOpen && optionGroups.length ? listboxId : undefined,
368
+ 'aria-activedescendant': isOpen && activeIndex >= 0 ? getOptionId(activeIndex) : undefined,
369
+ onKeyDown: isDrawerOptions ? undefined : handleKeyDown
370
+ }
277
371
  })), isDrawerOptions ? /*#__PURE__*/React.createElement(Drawer, {
278
372
  onClose: handleHide,
279
373
  isOpen: isOpen,
@@ -286,4 +380,11 @@ export var Select = function Select(props) {
286
380
  usePadding: usePadding,
287
381
  positionVertical: useModernStyles ? -1 : undefined
288
382
  }, handleDropdownContentRender()));
383
+ };
384
+
385
+ // Граница ошибок снаружи: renderOption/renderGroup/renderValue вызываются в
386
+ // рендере SelectInner, и исключение потребительского колбэка иначе валило бы
387
+ // всё дерево приложения (RES-001). Fallback — null: поле исчезает, страница живёт.
388
+ export var Select = function Select(props) {
389
+ return /*#__PURE__*/React.createElement(ErrorBoundary, null, /*#__PURE__*/React.createElement(SelectInner, props));
289
390
  };
@@ -1,5 +1,6 @@
1
1
  import styled, { css } from 'styled-components';
2
2
  import { Typography } from '../../common/Typography';
3
+ import { reducedMotion } from '../../../utils/reducedMotion';
3
4
  export var Wrapper = styled.div.withConfig({
4
5
  displayName: "styles__Wrapper",
5
6
  componentId: "sc-1x9n0z5-0"
@@ -18,7 +19,7 @@ export var OptionWrapper = styled.div.withConfig({
18
19
  export var Option = styled(Typography).withConfig({
19
20
  displayName: "styles__Option",
20
21
  componentId: "sc-1x9n0z5-3"
21
- })(["overflow:hidden;width:100%;text-align:left;transition:all 0.2s ease-in-out 0s;box-sizing:border-box;cursor:pointer;border-radius:", ";", " &:hover{background-color:", ";}", ""], function (_ref2) {
22
+ })(["overflow:hidden;width:100%;text-align:left;transition:all 0.2s ease-in-out 0s;box-sizing:border-box;cursor:pointer;border-radius:", ";", " ", " &:hover{background-color:", ";}", " ", ""], function (_ref2) {
22
23
  var $usePadding = _ref2.$usePadding;
23
24
  return $usePadding ? '12px' : 'none';
24
25
  }, function (_ref3) {
@@ -26,12 +27,16 @@ export var Option = styled(Typography).withConfig({
26
27
  $palette = _ref3.$palette;
27
28
  return $isSelected && css(["background-color:", ";border-radius:8px;"], $palette.bgHover);
28
29
  }, function (_ref4) {
29
- var $palette = _ref4.$palette;
30
- return $palette.bgHover;
30
+ var $isActive = _ref4.$isActive,
31
+ $palette = _ref4.$palette;
32
+ return $isActive && css(["background-color:", ";"], $palette.bgHover);
31
33
  }, function (_ref5) {
32
- var $isGrouped = _ref5.$isGrouped;
34
+ var $palette = _ref5.$palette;
35
+ return $palette.bgHover;
36
+ }, function (_ref6) {
37
+ var $isGrouped = _ref6.$isGrouped;
33
38
  return $isGrouped && css(["padding-left:30px;"]);
34
- });
39
+ }, reducedMotion);
35
40
  export var Group = styled(Typography).withConfig({
36
41
  displayName: "styles__Group",
37
42
  componentId: "sc-1x9n0z5-4"
@@ -39,12 +44,12 @@ export var Group = styled(Typography).withConfig({
39
44
  export var DefaultOptionWrapper = styled.div.withConfig({
40
45
  displayName: "styles__DefaultOptionWrapper",
41
46
  componentId: "sc-1x9n0z5-5"
42
- })(["padding:", ";padding-left:", ";"], function (_ref6) {
43
- var $usePadding = _ref6.$usePadding;
47
+ })(["padding:", ";padding-left:", ";"], function (_ref7) {
48
+ var $usePadding = _ref7.$usePadding;
44
49
  return $usePadding ? '12px' : '12px 20px';
45
- }, function (_ref7) {
46
- var $isMultiple = _ref7.$isMultiple,
47
- $usePadding = _ref7.$usePadding;
50
+ }, function (_ref8) {
51
+ var $isMultiple = _ref8.$isMultiple,
52
+ $usePadding = _ref8.$usePadding;
48
53
  return $isMultiple && !$usePadding ? '6px' : undefined;
49
54
  });
50
55
  export var DrawerContent = styled.div.withConfig({
@@ -58,8 +63,8 @@ export var DrawerBottom = styled.div.withConfig({
58
63
  export var EmptyLabel = styled(Typography).withConfig({
59
64
  displayName: "styles__EmptyLabel",
60
65
  componentId: "sc-1x9n0z5-8"
61
- })(["color:", ";"], function (_ref8) {
62
- var $color = _ref8.$color;
66
+ })(["color:", ";"], function (_ref9) {
67
+ var $color = _ref9.$color;
63
68
  return $color;
64
69
  });
65
70
  export var ScrollbarContent = styled.div.withConfig({
@@ -1,7 +1,7 @@
1
1
  var _excluded = ["children"];
2
2
  function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
3
- function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var s = Object.getOwnPropertySymbols(e); for (r = 0; r < s.length; r++) o = s[r], t.includes(o) || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
4
- function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (e.includes(n)) continue; t[n] = r[n]; } return t; }
3
+ function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
4
+ function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
5
5
  import React from 'react';
6
6
  import { getPureInputStyled } from '../PureInput/styles';
7
7
  import styled from 'styled-components';
@@ -90,7 +90,9 @@ export var TextInput = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
90
90
  placeholder: useModernStyles ? undefined : placeholder,
91
91
  paddingRight: paddingRight,
92
92
  type: type,
93
- isOnlyNumbers: isOnlyNumbers,
93
+ isOnlyNumbers: isOnlyNumbers
94
+ // eslint-disable-next-line jsx-a11y/no-autofocus -- проп прокидывается потребителю, решение об автофокусе за ним
95
+ ,
94
96
  autoFocus: autoFocus,
95
97
  element: element,
96
98
  rows: rows,
@@ -1,7 +1,7 @@
1
1
  var _excluded = ["checked", "variant", "label", "onChange", "disabled", "alwaysHighlighted"];
2
2
  function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
3
- function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var s = Object.getOwnPropertySymbols(e); for (r = 0; r < s.length; r++) o = s[r], t.includes(o) || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
4
- function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (e.includes(n)) continue; t[n] = r[n]; } return t; }
3
+ function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
4
+ function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
5
5
  import React from 'react';
6
6
  import * as S from './styles';
7
7
  import { INPUT_VARIANT_MAP } from './styles';
@@ -33,6 +33,7 @@ export var Toggle = function Toggle(_ref) {
33
33
  checked: checked,
34
34
  onChange: handleChange,
35
35
  type: "checkbox",
36
+ role: "switch",
36
37
  disabled: disabled
37
38
  }, other)), label && /*#__PURE__*/React.createElement(Typography, {
38
39
  variant: labelVariant
@@ -1,4 +1,5 @@
1
1
  import styled from 'styled-components';
2
+ import { reducedMotion } from '../../../utils/reducedMotion';
2
3
  export var Label = styled.label.withConfig({
3
4
  displayName: "styles__Label",
4
5
  componentId: "sc-1pe8ina-0"
@@ -34,7 +35,7 @@ export var INPUT_VARIANT_MAP = {
34
35
  export var StyledInput = styled.input.withConfig({
35
36
  displayName: "styles__StyledInput",
36
37
  componentId: "sc-1pe8ina-1"
37
- })(["position:relative;width:", "px;height:", "px;cursor:pointer;flex-shrink:0;box-sizing:border-box;border:", "px solid;border-color:rgba(0,0,0,0);-webkit-appearance:none;box-shadow:none;background:", ";border-radius:50px;&:after{content:'';display:block;position:absolute;left:", "px;top:50%;transform:translateY(-50%);width:", "px;height:", "px;border-radius:50%;background-color:", ";transition:all 0.2s ease-in-out 0s;}&:checked::after{left:", "px;}&:checked{background:", ";}&:disabled{cursor:not-allowed;border:", "px solid ", ";background:white;&:after{box-shadow:0 3px 8px rgba(0,0,0,0.15);}}"], function (_ref3) {
38
+ })(["position:relative;width:", "px;height:", "px;cursor:pointer;flex-shrink:0;box-sizing:border-box;border:", "px solid;border-color:rgba(0,0,0,0);-webkit-appearance:none;box-shadow:none;background:", ";border-radius:50px;&:after{content:'';display:block;position:absolute;left:", "px;top:50%;transform:translateY(-50%);width:", "px;height:", "px;border-radius:50%;background-color:", ";transition:all 0.2s ease-in-out 0s;}&:checked::after{left:", "px;}&:checked{background:", ";}&:disabled{cursor:not-allowed;border:", "px solid ", ";background:white;&:after{box-shadow:0 3px 8px rgba(0,0,0,0.15);}}&:focus-visible{outline:2px solid ", ";outline-offset:2px;}", ""], function (_ref3) {
38
39
  var $variant = _ref3.$variant;
39
40
  return INPUT_VARIANT_MAP[$variant].width;
40
41
  }, function (_ref4) {
@@ -56,19 +57,22 @@ export var StyledInput = styled.input.withConfig({
56
57
  }, function (_ref9) {
57
58
  var $variant = _ref9.$variant;
58
59
  return INPUT_VARIANT_MAP[$variant].circleSize;
60
+ }, function (_ref0) {
61
+ var $palette = _ref0.$palette;
62
+ return $palette.circle;
63
+ }, function (_ref1) {
64
+ var $variant = _ref1.$variant;
65
+ return INPUT_VARIANT_MAP[$variant].leftChecked;
59
66
  }, function (_ref10) {
60
67
  var $palette = _ref10.$palette;
61
- return $palette.circle;
68
+ return $palette.activeBg;
62
69
  }, function (_ref11) {
63
70
  var $variant = _ref11.$variant;
64
- return INPUT_VARIANT_MAP[$variant].leftChecked;
71
+ return INPUT_VARIANT_MAP[$variant].border;
65
72
  }, function (_ref12) {
66
73
  var $palette = _ref12.$palette;
67
- return $palette.activeBg;
68
- }, function (_ref13) {
69
- var $variant = _ref13.$variant;
70
- return INPUT_VARIANT_MAP[$variant].border;
71
- }, function (_ref14) {
72
- var $palette = _ref14.$palette;
73
74
  return $palette.disabledBorder;
74
- });
75
+ }, function (_ref13) {
76
+ var $palette = _ref13.$palette;
77
+ return $palette.activeBg;
78
+ }, reducedMotion);
@@ -0,0 +1,8 @@
1
+ import { css } from 'styled-components';
2
+
3
+ // Общий миксин: отключает анимации/переходы для пользователей с системной
4
+ // настройкой reduced motion (WCAG 2.3.3). Добавлять последним в styled-блок,
5
+ // содержащий transition/animation (включая правила в ::before/::after) —
6
+ // поздние декларации побеждают. Глобального стиля здесь быть не может:
7
+ // sideEffects: false.
8
+ export var reducedMotion = css(["@media (prefers-reduced-motion:reduce){&,&::before,&::after,&::placeholder{transition:none;animation:none;}}"]);
@@ -1,12 +1,125 @@
1
- import { hslToColorString, parseToHsl } from 'polished';
1
+ // Математика ниже повторяет parseToHsl/hslToColorString из polished 4.3.1
2
+ // (включая округление и сокращение hex до 3 знаков), чтобы не тащить polished
3
+ // как runtime-зависимость. Палитра библиотеки оперирует hex-цветами (см.
4
+ // defaultAbstractPalette и hexToRgba), поэтому поддерживается только hex.
5
+
6
+ var parseHex = function parseHex(color) {
7
+ var normalized = color.startsWith('#') ? color.slice(1) : color;
8
+ if (/^[0-9a-fA-F]{3}$/.test(normalized)) {
9
+ return {
10
+ red: parseInt(normalized[0] + normalized[0], 16),
11
+ green: parseInt(normalized[1] + normalized[1], 16),
12
+ blue: parseInt(normalized[2] + normalized[2], 16)
13
+ };
14
+ }
15
+ if (/^[0-9a-fA-F]{6}$/.test(normalized)) {
16
+ return {
17
+ red: parseInt(normalized.slice(0, 2), 16),
18
+ green: parseInt(normalized.slice(2, 4), 16),
19
+ blue: parseInt(normalized.slice(4, 6), 16)
20
+ };
21
+ }
22
+ throw new Error("transformColorByHsl: unsupported color \"".concat(color, "\", expected #rgb or #rrggbb"));
23
+ };
24
+ var rgbToHsl = function rgbToHsl(_ref) {
25
+ var red = _ref.red,
26
+ green = _ref.green,
27
+ blue = _ref.blue;
28
+ var r = red / 255;
29
+ var g = green / 255;
30
+ var b = blue / 255;
31
+ var max = Math.max(r, g, b);
32
+ var min = Math.min(r, g, b);
33
+ var lightness = (max + min) / 2;
34
+ if (max === min) {
35
+ return {
36
+ hue: 0,
37
+ saturation: 0,
38
+ lightness: lightness
39
+ };
40
+ }
41
+ var delta = max - min;
42
+ var saturation = lightness > 0.5 ? delta / (2 - max - min) : delta / (max + min);
43
+ var hue;
44
+ if (max === r) {
45
+ hue = (g - b) / delta + (g < b ? 6 : 0);
46
+ } else if (max === g) {
47
+ hue = (b - r) / delta + 2;
48
+ } else {
49
+ hue = (r - g) / delta + 4;
50
+ }
51
+ return {
52
+ hue: hue * 60,
53
+ saturation: saturation,
54
+ lightness: lightness
55
+ };
56
+ };
57
+ var hslToRgb = function hslToRgb(_ref2) {
58
+ var hue = _ref2.hue,
59
+ saturation = _ref2.saturation,
60
+ lightness = _ref2.lightness;
61
+ if (saturation === 0) {
62
+ var value = Math.round(lightness * 255);
63
+ return {
64
+ red: value,
65
+ green: value,
66
+ blue: value
67
+ };
68
+ }
69
+ var chroma = (1 - Math.abs(2 * lightness - 1)) * saturation;
70
+ var huePrime = (hue % 360 + 360) % 360 / 60;
71
+ var secondComponent = chroma * (1 - Math.abs(huePrime % 2 - 1));
72
+ var red = 0;
73
+ var green = 0;
74
+ var blue = 0;
75
+ if (huePrime >= 0 && huePrime < 1) {
76
+ red = chroma;
77
+ green = secondComponent;
78
+ } else if (huePrime >= 1 && huePrime < 2) {
79
+ red = secondComponent;
80
+ green = chroma;
81
+ } else if (huePrime >= 2 && huePrime < 3) {
82
+ green = chroma;
83
+ blue = secondComponent;
84
+ } else if (huePrime >= 3 && huePrime < 4) {
85
+ green = secondComponent;
86
+ blue = chroma;
87
+ } else if (huePrime >= 4 && huePrime < 5) {
88
+ red = secondComponent;
89
+ blue = chroma;
90
+ } else {
91
+ red = chroma;
92
+ blue = secondComponent;
93
+ }
94
+ var lightnessModification = lightness - chroma / 2;
95
+ return {
96
+ red: Math.round((red + lightnessModification) * 255),
97
+ green: Math.round((green + lightnessModification) * 255),
98
+ blue: Math.round((blue + lightnessModification) * 255)
99
+ };
100
+ };
101
+ var numberToHex = function numberToHex(value) {
102
+ var hex = value.toString(16);
103
+ return hex.length === 1 ? "0".concat(hex) : hex;
104
+ };
105
+ var rgbToHexString = function rgbToHexString(_ref3) {
106
+ var red = _ref3.red,
107
+ green = _ref3.green,
108
+ blue = _ref3.blue;
109
+ var value = "#".concat(numberToHex(red)).concat(numberToHex(green)).concat(numberToHex(blue));
110
+ if (value[1] === value[2] && value[3] === value[4] && value[5] === value[6]) {
111
+ return "#".concat(value[1]).concat(value[3]).concat(value[5]);
112
+ }
113
+ return value;
114
+ };
2
115
  export var transformColorByHsl = function transformColorByHsl(base, diff) {
3
- var hslBase = parseToHsl(base);
116
+ var hslBase = rgbToHsl(parseHex(base));
4
117
  var hue = hslBase.hue - diff.hue;
5
118
  var saturation = hslBase.saturation - diff.saturation;
6
119
  var lightness = hslBase.lightness - diff.lightness;
7
- return hslToColorString({
120
+ return rgbToHexString(hslToRgb({
8
121
  hue: Math.min(Math.max(hue, 0), 360),
9
122
  saturation: Math.min(Math.max(saturation, 0), 1),
10
123
  lightness: Math.min(Math.max(lightness, 0), 1)
11
- });
124
+ }));
12
125
  };