altum 0.0.4 → 0.0.6

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 (295) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/README.md +47 -1
  3. package/dist/base/FieldPopup/FieldPopup.js +1 -1
  4. package/dist/base/PeriodHeader/PeriodHeader.js +1 -1
  5. package/dist/base/ToggleControlBase/ToggleControlBase.js +1 -1
  6. package/dist/base/ToggleControlBase/ToggleControlBase.module.css.js +1 -1
  7. package/dist/components/Accordion/Accordion.js +1 -1
  8. package/dist/components/Accordion/Accordion.module.css.js +1 -1
  9. package/dist/components/ActionList/ActionList.js +1 -1
  10. package/dist/components/ActionList/ActionList.module.css.js +1 -1
  11. package/dist/components/ActionSheetTrigger/ActionSheetTrigger.js +1 -1
  12. package/dist/components/ActionSheetTrigger/ActionSheetTrigger.module.css.js +1 -1
  13. package/dist/components/Alert/Alert.js +1 -1
  14. package/dist/components/Alert/Alert.module.css.js +1 -1
  15. package/dist/components/Avatar/Avatar.module.css.js +1 -1
  16. package/dist/components/Badge/Badge.js +1 -1
  17. package/dist/components/Badge/Badge.module.css.js +1 -1
  18. package/dist/components/Box/Box.js +1 -1
  19. package/dist/components/Box/Box.module.css.js +1 -1
  20. package/dist/components/Bubble/Bubble.js +1 -1
  21. package/dist/components/Bubble/Bubble.module.css.js +1 -1
  22. package/dist/components/Button/Button.js +1 -1
  23. package/dist/components/Button/Button.module.css.js +1 -0
  24. package/dist/components/ButtonGroup/ButtonGroup.js +1 -1
  25. package/dist/components/ButtonGroup/ButtonGroup.module.css.js +1 -1
  26. package/dist/components/ButtonIcon/ButtonIcon.js +1 -1
  27. package/dist/components/ButtonIcon/ButtonIcon.module.css.js +1 -0
  28. package/dist/components/ButtonIcon/OverlayCloseButton.js +1 -0
  29. package/dist/components/Calendar/Calendar.context.js +1 -1
  30. package/dist/components/Calendar/Calendar.module.css.js +1 -1
  31. package/dist/components/Calendar/Calendar.slots.js +1 -1
  32. package/dist/components/Calendar/Calendar.utils.js +1 -1
  33. package/dist/components/Calendar/Calendar.views.js +1 -1
  34. package/dist/components/CalendarBoard/CalendarBoard.MonthView.js +1 -1
  35. package/dist/components/CalendarBoard/CalendarBoard.Schedule.js +1 -1
  36. package/dist/components/CalendarBoard/CalendarBoard.Schedule.module.css.js +1 -1
  37. package/dist/components/CalendarBoard/CalendarBoard.Schedule.utils.js +1 -1
  38. package/dist/components/CalendarBoard/CalendarBoard.YearView.js +2 -2
  39. package/dist/components/CalendarBoard/CalendarBoard.chrome.js +1 -1
  40. package/dist/components/CalendarBoard/CalendarBoard.context.js +1 -1
  41. package/dist/components/CalendarBoard/CalendarBoard.module.css.js +1 -1
  42. package/dist/components/CalendarBoard/CalendarBoard.utils.js +1 -1
  43. package/dist/components/CalendarBoard/calendar.schedule.js +1 -1
  44. package/dist/components/Card/Card.js +1 -1
  45. package/dist/components/Card/Card.module.css.js +1 -1
  46. package/dist/components/Chip/Chip.js +1 -1
  47. package/dist/components/Chip/Chip.module.css.js +1 -1
  48. package/dist/components/ColorSwatchGroup/ColorSwatchGroup.js +1 -1
  49. package/dist/components/ColorSwatchGroup/ColorSwatchGroup.module.css.js +1 -1
  50. package/dist/components/CommandPalette/CommandPalette.js +1 -1
  51. package/dist/components/CommandPalette/CommandPalette.module.css.js +1 -1
  52. package/dist/components/ConfirmDialog/ConfirmDialog.js +1 -1
  53. package/dist/components/DateField/DateField.js +1 -1
  54. package/dist/components/DateField/DateField.utils.js +1 -1
  55. package/dist/components/DateRangeField/DateRangeField.js +1 -1
  56. package/dist/components/DayStripCalendar/DayStripCalendar.js +1 -1
  57. package/dist/components/DialogLayout/DialogLayout.js +1 -0
  58. package/dist/components/DialogLayout/DialogLayout.module.css.js +1 -0
  59. package/dist/components/Dropdown/Dropdown.js +1 -1
  60. package/dist/components/Dropdown/Dropdown.module.css.js +1 -1
  61. package/dist/components/Dropdown/DropdownMobileSheet.js +1 -1
  62. package/dist/components/FileList/FileList.js +1 -1
  63. package/dist/components/Grid/Grid.js +1 -1
  64. package/dist/components/Grid/Grid.utils.js +1 -1
  65. package/dist/components/ImageCrop/ImageCrop.js +1 -1
  66. package/dist/components/ImageCrop/ImageCrop.module.css.js +1 -1
  67. package/dist/components/ImageGallery/ImageGallery.js +1 -1
  68. package/dist/components/ImageGallery/ImageGallery.module.css.js +1 -1
  69. package/dist/components/ImageLightbox/ImageLightbox.js +1 -1
  70. package/dist/components/ImageLightbox/ImageLightbox.module.css.js +1 -1
  71. package/dist/components/Layout/Layout.js +1 -1
  72. package/dist/components/Layout/Layout.module.css.js +1 -1
  73. package/dist/components/Link/Link.js +1 -1
  74. package/dist/components/Listbox/Listbox.js +1 -1
  75. package/dist/components/Listbox/Listbox.module.css.js +1 -1
  76. package/dist/components/LiveRegion/LiveRegion.js +1 -0
  77. package/dist/components/LocaleProvider/LocaleProvider.js +1 -1
  78. package/dist/components/MaskedField/MaskedField.js +1 -1
  79. package/dist/components/MaskedField/MaskedField.module.css.js +1 -1
  80. package/dist/components/Menu/Menu.js +1 -1
  81. package/dist/components/Menu/Menu.module.css.js +1 -1
  82. package/dist/components/Modal/Modal.js +1 -1
  83. package/dist/components/Modal/Modal.module.css.js +1 -1
  84. package/dist/components/Notification/Notification.js +1 -1
  85. package/dist/components/Notification/Notification.module.css.js +1 -1
  86. package/dist/components/Notification/toast.js +1 -1
  87. package/dist/components/NumberField/NumberField.js +1 -1
  88. package/dist/components/Overflow/Overflow.js +1 -1
  89. package/dist/components/Overflow/Overflow.module.css.js +1 -1
  90. package/dist/components/Overlay/Overlay.frame.js +1 -0
  91. package/dist/components/Overlay/Overlay.js +1 -1
  92. package/dist/components/Overlay/Overlay.module.css.js +1 -1
  93. package/dist/components/Pagination/Pagination.js +1 -1
  94. package/dist/components/PasswordField/PasswordField.js +1 -1
  95. package/dist/components/PasswordField/PasswordField.module.css.js +1 -1
  96. package/dist/components/PinInput/PinInput.js +1 -1
  97. package/dist/components/PinInput/PinInput.module.css.js +1 -1
  98. package/dist/components/Popover/Popover.js +1 -1
  99. package/dist/components/Popover/Popover.module.css.js +1 -1
  100. package/dist/components/PopupSwitch/PopupSwitch.js +1 -0
  101. package/dist/components/PopupSwitch/PopupSwitch.module.css.js +1 -0
  102. package/dist/components/PopupSwitch/PopupSwitch.utils.js +1 -0
  103. package/dist/components/PullToRefresh/PullToRefresh.js +1 -1
  104. package/dist/components/Rating/Rating.js +1 -1
  105. package/dist/components/RelativeTime/RelativeTime.js +1 -1
  106. package/dist/components/SearchField/SearchField.js +1 -1
  107. package/dist/components/SegmentedControl/SegmentedControl.js +1 -1
  108. package/dist/components/Select/Select.js +1 -1
  109. package/dist/components/Select/Select.module.css.js +1 -1
  110. package/dist/components/SelectionGroup/SelectionGroup.js +1 -1
  111. package/dist/components/Sheet/Sheet.js +1 -1
  112. package/dist/components/Sheet/Sheet.module.css.js +1 -1
  113. package/dist/components/Sidebar/Sidebar.js +1 -1
  114. package/dist/components/Sidebar/Sidebar.module.css.js +1 -1
  115. package/dist/components/SkipLink/SkipLink.js +1 -1
  116. package/dist/components/Slider/Slider.js +1 -1
  117. package/dist/components/SortableList/SortableList.js +1 -1
  118. package/dist/components/SortableList/SortableList.module.css.js +1 -1
  119. package/dist/components/Spinner/Spinner.js +1 -1
  120. package/dist/components/Steps/Steps.js +1 -1
  121. package/dist/components/Steps/Steps.module.css.js +1 -1
  122. package/dist/components/SuggestField/SuggestField.js +1 -1
  123. package/dist/components/Table/Table.js +1 -1
  124. package/dist/components/Table/TableRowActions.js +1 -1
  125. package/dist/components/Table/TableView.js +1 -1
  126. package/dist/components/TextField/TextField.js +1 -1
  127. package/dist/components/TextField/TextField.module.css.js +1 -0
  128. package/dist/components/TextareaField/TextareaField.js +1 -1
  129. package/dist/components/TextareaField/TextareaField.module.css.js +1 -0
  130. package/dist/components/ThemeProvider/ThemeProvider.js +1 -1
  131. package/dist/components/ThemeProvider/ThemeProvider.module.css.js +1 -1
  132. package/dist/components/TimeField/TimeField.js +1 -1
  133. package/dist/components/Tooltip/Tooltip.js +1 -1
  134. package/dist/components/Tooltip/Tooltip.module.css.js +1 -1
  135. package/dist/components/UploadZone/UploadZone.js +1 -1
  136. package/dist/components/VirtualList/VirtualList.js +1 -1
  137. package/dist/components/VirtualList/VirtualList.module.css.js +1 -1
  138. package/dist/components/VirtualList/VirtualList.utils.js +1 -1
  139. package/dist/components/VisuallyHidden/VisuallyHidden.js +1 -1
  140. package/dist/components/WheelTimePicker/WheelTimePicker.js +1 -1
  141. package/dist/entries/hooks.js +1 -1
  142. package/dist/entries/icons.js +1 -1
  143. package/dist/entries/locales.js +1 -0
  144. package/dist/entries/utils.js +1 -1
  145. package/dist/hooks/useAutoResize.js +1 -1
  146. package/dist/hooks/useForm.js +1 -1
  147. package/dist/hooks/useFormProvider.js +1 -0
  148. package/dist/hooks/useOtpInputs.js +1 -1
  149. package/dist/hooks/useTrackThumb.js +1 -1
  150. package/dist/icons/icons/IconChevronUpDown.js +1 -0
  151. package/dist/index.js +1 -1
  152. package/dist/locales/en.js +1 -1
  153. package/dist/locales/localeContext.js +1 -1
  154. package/dist/locales/ru.js +1 -1
  155. package/dist/locales/slices/actionList.en.js +1 -0
  156. package/dist/locales/slices/actionList.ru.js +1 -0
  157. package/dist/locales/slices/bubble.en.js +1 -0
  158. package/dist/locales/slices/bubble.ru.js +1 -0
  159. package/dist/locales/slices/buttonGroup.en.js +1 -0
  160. package/dist/locales/slices/buttonGroup.ru.js +1 -0
  161. package/dist/locales/slices/calendar.en.js +1 -0
  162. package/dist/locales/slices/calendar.ru.js +1 -0
  163. package/dist/locales/slices/calendarBoard.en.js +1 -0
  164. package/dist/locales/slices/calendarBoard.ru.js +1 -0
  165. package/dist/locales/slices/chip.en.js +1 -0
  166. package/dist/locales/slices/chip.ru.js +1 -0
  167. package/dist/locales/slices/commandPalette.en.js +1 -0
  168. package/dist/locales/slices/commandPalette.ru.js +1 -0
  169. package/dist/locales/slices/common.en.js +1 -0
  170. package/dist/locales/slices/common.ru.js +1 -0
  171. package/dist/locales/slices/confirmDialog.en.js +1 -0
  172. package/dist/locales/slices/confirmDialog.ru.js +1 -0
  173. package/dist/locales/slices/customSelect.en.js +1 -0
  174. package/dist/locales/slices/customSelect.ru.js +1 -0
  175. package/dist/locales/slices/dateRangeField.en.js +1 -0
  176. package/dist/locales/slices/dateRangeField.ru.js +1 -0
  177. package/dist/locales/slices/dayStrip.en.js +1 -0
  178. package/dist/locales/slices/dayStrip.ru.js +1 -0
  179. package/dist/locales/slices/fileList.en.js +1 -0
  180. package/dist/locales/slices/fileList.ru.js +1 -0
  181. package/dist/locales/slices/imageCrop.en.js +1 -0
  182. package/dist/locales/slices/imageCrop.ru.js +1 -0
  183. package/dist/locales/slices/imageGallery.en.js +1 -0
  184. package/dist/locales/slices/imageGallery.ru.js +1 -0
  185. package/dist/locales/slices/imageLightbox.en.js +1 -0
  186. package/dist/locales/slices/imageLightbox.ru.js +1 -0
  187. package/dist/locales/slices/listbox.en.js +1 -0
  188. package/dist/locales/slices/listbox.ru.js +1 -0
  189. package/dist/locales/slices/menu.en.js +1 -0
  190. package/dist/locales/slices/menu.ru.js +1 -0
  191. package/dist/locales/slices/modal.en.js +1 -0
  192. package/dist/locales/slices/modal.ru.js +1 -0
  193. package/dist/locales/slices/numberField.en.js +1 -0
  194. package/dist/locales/slices/numberField.ru.js +1 -0
  195. package/dist/locales/slices/overflow.en.js +1 -0
  196. package/dist/locales/slices/overflow.ru.js +1 -0
  197. package/dist/locales/slices/pagination.en.js +1 -0
  198. package/dist/locales/slices/pagination.ru.js +1 -0
  199. package/dist/locales/slices/password.en.js +1 -0
  200. package/dist/locales/slices/password.ru.js +1 -0
  201. package/dist/locales/slices/pinInput.en.js +1 -0
  202. package/dist/locales/slices/pinInput.ru.js +1 -0
  203. package/dist/locales/slices/pullToRefresh.en.js +1 -0
  204. package/dist/locales/slices/pullToRefresh.ru.js +1 -0
  205. package/dist/locales/slices/rating.en.js +1 -0
  206. package/dist/locales/slices/rating.ru.js +1 -0
  207. package/dist/locales/slices/searchField.en.js +1 -0
  208. package/dist/locales/slices/searchField.ru.js +1 -0
  209. package/dist/locales/slices/select.en.js +1 -0
  210. package/dist/locales/slices/select.ru.js +1 -0
  211. package/dist/locales/slices/sheet.en.js +1 -0
  212. package/dist/locales/slices/sheet.ru.js +1 -0
  213. package/dist/locales/slices/sidebar.en.js +1 -0
  214. package/dist/locales/slices/sidebar.ru.js +1 -0
  215. package/dist/locales/slices/skipLink.en.js +1 -0
  216. package/dist/locales/slices/skipLink.ru.js +1 -0
  217. package/dist/locales/slices/slider.en.js +1 -0
  218. package/dist/locales/slices/slider.ru.js +1 -0
  219. package/dist/locales/slices/sortable.en.js +1 -0
  220. package/dist/locales/slices/sortable.ru.js +1 -0
  221. package/dist/locales/slices/spinner.en.js +1 -0
  222. package/dist/locales/slices/spinner.ru.js +1 -0
  223. package/dist/locales/slices/steps.en.js +1 -0
  224. package/dist/locales/slices/steps.ru.js +1 -0
  225. package/dist/locales/slices/suggestField.en.js +1 -0
  226. package/dist/locales/slices/suggestField.ru.js +1 -0
  227. package/dist/locales/slices/table.en.js +1 -0
  228. package/dist/locales/slices/table.ru.js +1 -0
  229. package/dist/locales/slices/timeField.en.js +1 -0
  230. package/dist/locales/slices/timeField.ru.js +1 -0
  231. package/dist/locales/slices/upload.en.js +1 -0
  232. package/dist/locales/slices/upload.ru.js +1 -0
  233. package/dist/locales/slices/virtualList.en.js +1 -0
  234. package/dist/locales/slices/virtualList.ru.js +1 -0
  235. package/dist/locales/translate.js +1 -1
  236. package/dist/shared/form/Form.utils.js +1 -0
  237. package/dist/shared/form/formRules.js +1 -0
  238. package/dist/shared/form/formValues.js +1 -0
  239. package/dist/styles/calendarChrome.module.css.js +1 -1
  240. package/dist/styles/status.module.css.js +1 -1
  241. package/dist/styles/toggleBox.module.css.js +1 -1
  242. package/dist/styles/visuallyHidden.module.css.js +1 -0
  243. package/dist/utils/autoHeight.js +1 -1
  244. package/dist/utils/date.js +1 -0
  245. package/dist/utils/duration.js +1 -0
  246. package/dist/utils/eventTarget.js +1 -0
  247. package/dist/utils/fieldMessage.js +1 -0
  248. package/dist/utils/injectCss.js +1 -1
  249. package/dist/utils/locale.js +1 -0
  250. package/dist/utils/plural.js +1 -0
  251. package/dist/utils/timezone.js +1 -0
  252. package/dist/utils/visitElementTree.js +1 -1
  253. package/docs/COMPONENTS.md +18 -16
  254. package/docs/LAYOUT.md +9 -9
  255. package/docs/THEMING.md +9 -16
  256. package/package.json +6 -1
  257. package/types/entries/hooks.d.ts +61 -13
  258. package/types/entries/icons.d.ts +3 -1
  259. package/types/entries/locales.d.ts +275 -0
  260. package/types/entries/utils.d.ts +71 -8
  261. package/types/index.d.ts +583 -661
  262. package/dist/base/ButtonBase/ButtonBase.js +0 -1
  263. package/dist/base/ButtonBase/ButtonBase.module.css.js +0 -1
  264. package/dist/base/ChevronButton/ChevronButton.js +0 -1
  265. package/dist/base/DialogBase/DialogBase.js +0 -1
  266. package/dist/base/DialogBase/DialogBase.module.css.js +0 -1
  267. package/dist/base/FieldBase/FieldBase.js +0 -1
  268. package/dist/base/FieldBase/FieldBase.module.css.js +0 -1
  269. package/dist/base/TextControl/TextControl.js +0 -1
  270. package/dist/components/CustomSelect/CustomSelect.Filter.js +0 -1
  271. package/dist/components/CustomSelect/CustomSelect.List.js +0 -1
  272. package/dist/components/CustomSelect/CustomSelect.Shell.js +0 -1
  273. package/dist/components/CustomSelect/CustomSelect.Shell.module.css.js +0 -1
  274. package/dist/components/CustomSelect/CustomSelect.context.js +0 -1
  275. package/dist/components/CustomSelect/CustomSelect.js +0 -1
  276. package/dist/components/CustomSelect/CustomSelect.module.css.js +0 -1
  277. package/dist/components/CustomSelect/useCustomSelectComboboxKeyboard.js +0 -1
  278. package/dist/components/FocusTrap/FocusTrap.js +0 -1
  279. package/dist/components/Overflow/OverflowActionsMode.js +0 -1
  280. package/dist/components/Overflow/OverflowMeasure.js +0 -1
  281. package/dist/components/Overflow/OverflowMore.js +0 -1
  282. package/dist/components/Overlay/Overlay.Dismiss.js +0 -1
  283. package/dist/components/Overlay/Overlay.Positioner.js +0 -1
  284. package/dist/components/Overlay/Overlay.types.js +0 -1
  285. package/dist/components/SortableList/SortableList.types.js +0 -1
  286. package/dist/components/SortableList/useSortableListDnD.js +0 -1
  287. package/dist/components/TimeField/TimeField.module.css.js +0 -1
  288. package/dist/hooks/useDigitMask.js +0 -1
  289. package/dist/hooks/useFieldControl.js +0 -1
  290. package/dist/hooks/useOverflowEdges.js +0 -1
  291. package/dist/hooks/useScrollFocusedChildIntoView.js +0 -1
  292. package/dist/styles/ControlTrack.module.css.js +0 -1
  293. package/dist/styles/srOnly.module.css.js +0 -1
  294. package/dist/utils/controlTrack.js +0 -1
  295. package/dist/utils/fieldPlaceholder.js +0 -1
package/CHANGELOG.md CHANGED
@@ -8,6 +8,28 @@
8
8
 
9
9
  ## [Unreleased]
10
10
 
11
+ ### Добавлено
12
+ - **`IconChevronUpDown`** — шеврон вверх и шеврон вниз в одной иконке.
13
+ - Storybook **About** — страница **Компоненты**: список с иконкой, кратким описанием и размером собственного кода, плюс сумма по всем компонентам.
14
+
15
+ ### Изменено
16
+ - **`PopupSwitch`** — на кнопке и на выбранном пункте **`IconChevronUpDown`**.
17
+ - Storybook **About** — страница бренда: цветовые токены, шкала шрифта, отступы, радиусы и размеры контролов. Светлая и тёмная тема — из тулбара.
18
+
19
+ ## [0.0.6] — 2026-09-27
20
+
21
+ **`DialogLayout`**, **`PopupSwitch`**, **`LiveRegion`**. **`isExistingLocalDate`** в `altum/utils`. Диалоги (**`Modal`**, **`Sheet`**, **`ImageCrop`**, **`CommandPalette`**) собраны из **`DialogLayout`**, **`Box`** и **`Layout`**. **`Select`** сам держит список, **`SuggestField`** — комбобокс на нём. **`Dropdown`** на **`Popover`**. У **`Layout`** отступы `padding` и `gap` (`sm` / `md` / `lg`): padding на секциях, промежуток у липких шапки и футера остаётся при прокрутке.
22
+
23
+ **Несовместимо.** Снят **`CustomSelect`**: выбор — **`Select`**, подсказки — **`SuggestField`**. У **`Overlay`** нет `popover` / `dropdown`. У **`Popover`** нет `wrap`, корня и стрелки; класс панели — `className`, ширина — `widthMode`. У **`Tooltip`** сторона — `side`, стрелки нет. У **`Chip`** роль — `mode`. **`Layout`** больше не отдаёт `Inline`, `Split`, `ControlRow` и `Item`. У **`Modal`** крестик и имя на корне (`showClose`, `aria-label`); заголовок — **`Title`**, кнопки — **`ControlRow`** в футере. У **`Sheet`** заголовок — **`Title`**, крестик — `showClose` на **`Sheet.Header`**. **`Sidebar.Collapse`** снят. Удалены **`DialogBase`** и неиспользуемые токены темы. `useLocale()` без провайдера возвращает ключ.
24
+
25
+ **Исправлено.** Стрелки **`ImageGallery`** листают кадр только при фокусе в галерее. Бегунок **`SegmentedControl`** при `itemFit="content"` не рвёт анимацию. Ховер кнопок внутри **`TextField`** читается на фоне поля. **`Overflow`** вызывает `onSelect` один раз. Автозакрытие **`Notification`** срабатывает и при `prefers-reduced-motion`.
26
+
27
+ ## [0.0.5] — 2026-09-25
28
+
29
+ **`useForm`**: проверка через `validate` (`fieldRules`, `compose`, `required`, `pattern`, `checkedValue`), плюс `setValue`, `reset`, `handleSubmit`, `isDirty` и **`FormProvider`**. Публичные **`altum/locales`** со склонением и утилиты дат, поясов, длительности и plural.
30
+
31
+ **`TextField`** вбрал `FieldBase`: `description` вместо `helperText` / `footer`, без `labelPlacement`. **`Button`**: `prefix` / `postfix` и `danger` / `danger_tinted` вместо `status`; **`ButtonIcon`** на **`Button`**. Стили в `@layer altum` — один `className` перекрывает библиотеку. **`ThemeProvider`** при `applyTo="document"` не вешает тему на обёртку.
32
+
11
33
  ## [0.0.4] — 2026-09-12
12
34
 
13
35
  `TimePicker` / `DatePicker` / `DateRangePicker` → **`TimeField`** / **`DateField`** / **`DateRangeField`** (ключи словаря `timePicker` → `timeField`, `dateRangePicker` → `dateRangeField`). Время — барабаны **`WheelTimePicker`**. **`Item`** на **`Flex`**, чище **`Attachment`**, `Flex.gap` — любой `SpacingValue`, floating-label выше, маркеры **`ImageCrop`** на углах кадра. Поля в Storybook — в **`FormField`**.
@@ -26,6 +48,8 @@
26
48
  - Storybook: состояния и play по полям, чартам, календарям и оверлеям.
27
49
 
28
50
  ### Исправлено
51
+ - **`ActionList`** — Enter выбирает подсвеченный пункт в порядке групп, а не в сыром порядке `items`.
52
+ - **`VirtualList`** — видимые строки снова следуют за `renderItem` при рендере родителя (подсветка в виртуализированном **`Listbox`**).
29
53
  - **DatePicker** / **TimePicker** / **DateRangePicker** — панель от края поля; **TextField** — кликабельная зона на всю высоту.
30
54
  - **DonutChart** — без нативного tooltip; **Container** не вылезает за колонку; clear/affix в **FieldBase** по центру.
31
55
 
package/README.md CHANGED
@@ -31,13 +31,59 @@ export function App() {
31
31
  |--------|------------|
32
32
  | `altum` | Компоненты, `ThemeProvider`, `LocaleProvider`, словари `ru` / `en` |
33
33
  | `altum/hooks` | Универсальные хуки (`useMediaQuery`, `useOutsideClick`, …) |
34
- | `altum/utils` | Хелперы (`cn`, `composeRefs`, listbox/якорь, стек оверлеев) |
34
+ | `altum/utils` | Хелперы (`cn`, `composeRefs`, `set`, таймзоны, listbox/якорь, стек оверлеев) |
35
35
  | `altum/icons` | Каталог иконок (не реэкспортируется из главного барреля) |
36
+ | `altum/locales` | Словари и `translate` для строк приложения |
36
37
 
37
38
  Стили подключаются вместе с JS-модулем. Оберните приложение в `ThemeProvider`. Для порталов (`Modal`, `Sheet`, выпадающие панели) используйте `applyTo="document"`. Императивным тостам нужен смонтированный `NotificationProvider`.
38
39
 
39
40
  Видимость оверлея: `open` + `onOpenChange` + `onClose`. Держите компонент смонтированным (`open={false}` всё равно проигрывает выход; `{open && <Modal>}` — нет).
40
41
 
42
+ ## Локализация
43
+
44
+ `LocaleProvider` задаёт язык встроенных строк компонентов. Свои тексты переводите через `altum/locales`: словарь по кодам `ru` / `en` и `translate`. Текущая локаль — `useLocale()`.
45
+
46
+ Строка поддерживает подстановку `{name}`. Если значение — объект `{one, few, many}`, форма выбирается по `params.count` (для английского используются `one` и `many`).
47
+
48
+ ```tsx
49
+ import {LocaleProvider} from 'altum';
50
+ import {translate, useLocale, type LocaleCode, type MessageTree} from 'altum/locales';
51
+
52
+ const appMessages = {
53
+ ru: {
54
+ greeting: 'Привет, {name}',
55
+ files: {
56
+ one: '{count} файл',
57
+ few: '{count} файла',
58
+ many: '{count} файлов',
59
+ },
60
+ },
61
+ en: {
62
+ greeting: 'Hello, {name}',
63
+ files: {
64
+ one: '{count} file',
65
+ few: '{count} files',
66
+ many: '{count} files',
67
+ },
68
+ },
69
+ } satisfies Record<LocaleCode, MessageTree>;
70
+
71
+ function FilesLabel() {
72
+ const {locale} = useLocale();
73
+ return <span>{translate(appMessages[locale], 'files', {count: 2}, locale)}</span>;
74
+ }
75
+
76
+ export function App() {
77
+ return (
78
+ <LocaleProvider locale="ru">
79
+ <FilesLabel />
80
+ </LocaleProvider>
81
+ );
82
+ }
83
+ ```
84
+
85
+ Словари библиотеки — `ru`, `en` и `builtInMessages`. Точечная замена встроенных фраз — проп `messages` у `LocaleProvider`.
86
+
41
87
  ## Документация
42
88
 
43
89
  - [Компоненты](docs/COMPONENTS.md)
@@ -1 +1 @@
1
- "use client";import{jsx as f}from"react/jsx-runtime";import{useState as a,useCallback as m,useEffect as u}from"react";import{Dropdown as g}from"../../components/Dropdown/Dropdown.js";import{renderChildren as b}from"../../utils/renderChildren.js";import{getFormControlState as C}from"../../utils/formControl.js";import c from"./FieldPopup.module.css.js";const h=c.field;function P({disabled:t=!1,readOnly:o=!1,digitsFromValue:e}){const[i,n]=a(!1),[s,d]=a(e??""),{isInteractive:r}=C({disabled:t,readOnly:o}),l=m(()=>n(!1),[]),p=m(()=>{r&&n(!0)},[r]);return u(()=>{e!==void 0&&d(e)},[e]),{open:i,setOpen:n,close:l,openPopup:p,isInteractive:r,digits:s,setDigits:d}}function O(t){return o=>{if(!o){t(null);return}const e=o.closest("[data-field-chrome]");t(e instanceof HTMLElement?e:o)}}const v=({open:t,onOpen:o,onClose:e,mobileChrome:i,trigger:n,contentPadding:s,align:d,children:r})=>f(g,{open:t,onOpenChange:l=>{l?o():e()},triggerMode:"combobox",popupRole:"dialog",boxProps:s?{padding:s}:void 0,widthMode:"content",align:d,panelScroll:"content",className:c.field,mobileTitle:i?.mobileTitle,mobileLeftControls:i?.mobileLeftControls,mobileRightControls:i?.mobileRightControls,renderTrigger:(l,p)=>b({children:n,props:l,contentRef:O(p)}),children:r});export{v as FieldPopupDropdown,h as fieldPopupClassName,P as useMaskedPopupField};
1
+ "use client";import{useState as n,useCallback as r,useEffect as c}from"react";import{getFormControlState as p}from"../../utils/formControl.js";import m from"./FieldPopup.module.css.js";const b=m.field;function g({disabled:s=!1,readOnly:t=!1,digitsFromValue:e}){const[a,i]=n(!1),[d,l]=n(e??""),{isInteractive:o}=p({disabled:s,readOnly:t}),f=r(()=>i(!1),[]),u=r(()=>{o&&i(!0)},[o]);return c(()=>{e!==void 0&&l(e)},[e]),{open:a,setOpen:i,close:f,openPopup:u,isInteractive:o,digits:d,setDigits:l}}function C(s){return t=>{if(!t){s(null);return}const e=t.closest("[data-field-chrome]");s(e instanceof HTMLElement?e:t)}}export{C as bindFieldChromeRef,b as fieldPopupClassName,g as useMaskedPopupField};
@@ -1 +1 @@
1
- "use client";import{jsxs as p,jsx as e}from"react/jsx-runtime";import{cn as u}from"../../utils/cn.js";import v from"../../styles/unstyledControl.module.css.js";import r from"../../styles/calendarChrome.module.css.js";import{ChevronButton as l}from"../ChevronButton/ChevronButton.js";function f({title:n,titleId:o,showTitle:i=!0,showNav:t=!0,onPrev:s,onNext:c,prevLabel:m,nextLabel:d}){if(!i&&!t)return null;const a=u(v.control,r.navBtn);return p("div",{className:r.header,children:[t&&e(l,{direction:"prev",className:a,"aria-label":m,onClick:s}),i?e("div",{id:o,className:r.title,children:n}):e("span",{className:r.titleSpacer}),t&&e(l,{direction:"next",className:a,"aria-label":d,onClick:c})]})}export{f as PeriodHeader};
1
+ "use client";import{jsxs as d,jsx as e}from"react/jsx-runtime";import{ButtonIcon as o}from"../../components/ButtonIcon/ButtonIcon.js";import{IconChevronLeft as h}from"../../icons/icons/IconChevronLeft.js";import{IconChevronRight as p}from"../../icons/icons/IconChevronRight.js";import t from"../../styles/calendarChrome.module.css.js";function u({title:a,titleId:n,showTitle:r=!0,showNav:i=!0,onPrev:l,onNext:s,prevLabel:c,nextLabel:m}){return!r&&!i?null:d("div",{className:t.header,children:[i&&e(o,{variant:"ghost",size:"sm",icon:e(h,{size:16,"aria-hidden":!0}),"aria-label":c,onClick:l}),r?e("div",{id:n,className:t.title,children:a}):e("span",{className:t.titleSpacer}),i&&e(o,{variant:"ghost",size:"sm",icon:e(p,{size:16,"aria-hidden":!0}),"aria-label":m,onClick:s})]})}export{u as PeriodHeader};
@@ -1 +1 @@
1
- "use client";import{jsxs as B,jsx as l}from"react/jsx-runtime";import{forwardRef as w,useId as F}from"react";import{cn as s}from"../../utils/cn.js";import{preventWhen as t}from"../../utils/preventWhen.js";import n from"./ToggleControlBase.module.css.js";const r=w(function({id:d,size:m="md",align:c="center",boxClassName:p,labelClassName:b,inputClassName:f,labelSide:C="end",readOnly:u=!1,disabled:o,label:e,labelHidden:N=!1,boxContent:g,className:h,style:x,onChange:y,onClick:T,...j},k){const v=F(),i=d||v,a=!!u&&!o,z=!N&&e!=null&&e!==!1&&e!=="";return B("label",{className:s(n.root,h),style:x,htmlFor:i,"data-size":m,"data-align":c,"data-label-side":C,children:[l("input",{ref:k,id:i,className:s(n.input,f),disabled:o,"aria-readonly":a||void 0,...j,onChange:t(a,y),onClick:t(a,T)}),l("span",{className:p,children:g}),z?l("span",{className:s(n.labelText,b),children:e}):null]})});r.displayName="ToggleControlBase";export{r as ToggleControlBase};
1
+ "use client";import{jsxs as z,jsx as n}from"react/jsx-runtime";import{forwardRef as B,useId as F}from"react";import{cn as l}from"../../utils/cn.js";import{preventWhen as r}from"../../utils/preventWhen.js";import{getFormControlState as I}from"../../utils/formControl.js";import a from"./ToggleControlBase.module.css.js";const i=B(function({id:d,size:m="md",align:c="center",boxClassName:p,labelClassName:b,inputClassName:f,labelSide:C="end",readOnly:g=!1,disabled:o,label:e,labelHidden:u=!1,boxContent:N,className:h,style:x,onChange:y,onClick:O,...T},j){const k=F(),t=d||k,{isReadOnly:s}=I({disabled:o,readOnly:g}),v=!u&&e!=null&&e!==!1&&e!=="";return z("label",{className:l(a.root,h),style:x,htmlFor:t,"data-size":m,"data-align":c,"data-label-side":C,children:[n("input",{ref:j,id:t,className:l(a.input,f),disabled:o,"aria-readonly":s||void 0,...T,onChange:r(s,y),onClick:r(s,O)}),n("span",{className:l(a.box,p),children:N}),v?n("span",{className:l(a.labelText,b),children:e}):null]})});i.displayName="ToggleControlBase";export{i as ToggleControlBase};
@@ -1 +1 @@
1
- "use client";import{injectCss as a}from"../../utils/injectCss.js";var t=".ULs8K{align-items:center;color:var(--altum-color-control-text-color);cursor:pointer;display:inline-flex;font-family:var(--altum-g-font-family-ui);font-size:var(--altum-g-font-size-base);gap:var(--altum-toggle-label-gap);position:relative;-webkit-user-select:none;user-select:none}.ULs8K[data-align=start]{align-items:flex-start}.ULs8K[data-label-side=start]{flex-direction:row-reverse}.ULs8K[data-size=sm]{--altum-toggle-box-size:var(--altum-toggle-box-size-sm);font-size:var(--altum-g-font-size-sm);gap:var(--altum-g-space-2)}.ULs8K[data-size=lg]{--altum-toggle-box-size:var(--altum-toggle-box-size-lg);font-size:var(--altum-g-font-size-lg);gap:var(--altum-g-space-3)}.ULs8K:has(._0JKPE[aria-readonly=true]){cursor:default}.ULs8K:has(._0JKPE[aria-readonly=true]) ._0JKPE{pointer-events:none}.ULs8K:has(._0JKPE:disabled){cursor:not-allowed;opacity:var(--altum-opacity-disabled)}.ULs8K .YQos0{min-width:0}.ULs8K ._0JKPE{height:0;opacity:0;position:absolute;width:0}";const e={root:"ULs8K",input:"_0JKPE",labelText:"YQos0"};a(t);export{e as default};
1
+ "use client";import{injectCss as t}from"../../utils/injectCss.js";var a=".ULs8K{align-items:center;color:var(--altum-color-control-text-color);cursor:pointer;display:inline-flex;font-family:var(--altum-g-font-family-ui);font-size:var(--altum-g-font-size-base);gap:var(--altum-toggle-label-gap);position:relative;-webkit-user-select:none;user-select:none}.ULs8K[data-align=start]{align-items:flex-start}.ULs8K[data-label-side=start]{flex-direction:row-reverse}.ULs8K[data-size=sm]{--altum-toggle-box-size:var(--altum-toggle-box-size-sm);font-size:var(--altum-g-font-size-sm);gap:var(--altum-g-space-2)}.ULs8K[data-size=lg]{--altum-toggle-box-size:var(--altum-toggle-box-size-lg);font-size:var(--altum-g-font-size-lg);gap:var(--altum-g-space-3)}.ULs8K:has(._0JKPE[aria-readonly=true]){cursor:default}.ULs8K:has(._0JKPE[aria-readonly=true]) ._0JKPE{pointer-events:none}.ULs8K:has(._0JKPE:disabled){cursor:not-allowed;opacity:var(--altum-opacity-disabled)}.ULs8K .dl3-U{flex-shrink:0}.ULs8K .YQos0{min-width:0}.ULs8K ._0JKPE{height:0;opacity:0;position:absolute;width:0}";const e={root:"ULs8K",input:"_0JKPE",box:"dl3-U",labelText:"YQos0"};t(a);export{e as default};
@@ -1 +1 @@
1
- "use client";import{jsx as t,jsxs as N}from"react/jsx-runtime";import{forwardRef as C,useId as $,createContext as D}from"react";import w from"../../styles/unstyledControl.module.css.js";import e from"./Accordion.module.css.js";import{handleVerticalTriggerKeyDown as O}from"../../utils/keyboard.js";import{useControlledStateWithCallback as j}from"../../hooks/useControlledState.js";import{useRequiredContext as E}from"../../hooks/useRequiredContext.js";import{cn as b}from"../../utils/cn.js";import{IconChevronDown as T}from"../../icons/icons/IconChevronDown.js";import{Collapse as k}from"../Collapse/Collapse.js";const v=D(null),y=C(function({children:o,multiple:r=!1,variant:s="flush",defaultOpenIds:u,openIds:m,onOpenChange:p,className:f,...g},h){const l=$(),[n,c]=j(m,u??[],p);return t(v.Provider,{value:{openIds:n,baseId:l,toggle:i=>{const d=n.includes(i);c(d?n.filter(a=>a!==i):r?[...n,i]:[i])}},children:t("div",{ref:h,className:b(e.accordion,e[s],f),...g,children:o})})}),x=C(function({value:o,disabled:r=!1,className:s,title:u,headingLevel:m="h3",children:p,...f},g){const{openIds:h,baseId:l,toggle:n}=E(v,"Accordion.Item \u0434\u043E\u043B\u0436\u0435\u043D \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C\u0441\u044F \u0432\u043D\u0443\u0442\u0440\u0438 Accordion"),c=h.includes(o)&&!r,i=`${l}-trigger-${o}`,d=`${l}-panel-${o}`;return N("div",{ref:g,className:b(e.item,r?e.disabled:"",s),...f,children:[t(m,{className:e.heading,children:N("button",{type:"button",id:i,className:b(w.control,e.trigger),disabled:r,"aria-expanded":c,"aria-controls":d,onClick:()=>{r||n(o)},onKeyDown:a=>{const A=a.currentTarget.closest(`.${e.accordion}`),I=Array.from(A?.querySelectorAll(`:scope > .${e.item} .${e.trigger}:not(:disabled)`)??[]);O(a,I,I.indexOf(a.currentTarget),()=>{r||n(o)})},children:[u,t(T,{className:e.icon,size:"1em","aria-hidden":!0})]})}),t(k,{open:c,children:t("div",{className:e.panelInner,id:d,role:"region","aria-labelledby":i,children:p})})]})});y.displayName="Accordion",x.displayName="Accordion.Item";const q=Object.assign(y,{Item:x});export{q as Accordion};
1
+ "use client";import{jsx as t,jsxs as N}from"react/jsx-runtime";import{forwardRef as C,useId as $,createContext as w}from"react";import D from"../../styles/unstyledControl.module.css.js";import e from"./Accordion.module.css.js";import{handleVerticalTriggerKeyDown as O}from"../../utils/keyboard.js";import{useControlledStateWithCallback as j}from"../../hooks/useControlledState.js";import{useRequiredContext as E}from"../../hooks/useRequiredContext.js";import{cn as b}from"../../utils/cn.js";import{IconChevronDown as T}from"../../icons/icons/IconChevronDown.js";import{Collapse as k}from"../Collapse/Collapse.js";const v=w(null),y=C(function({children:o,multiple:r=!1,variant:s="flush",defaultOpenIds:u,openIds:m,onOpenChange:p,className:f,...g},h){const l=$(),[n,c]=j(m,u??[],p);return t(v.Provider,{value:{openIds:n,baseId:l,toggle:i=>{const d=n.includes(i);c(d?n.filter(a=>a!==i):r?[...n,i]:[i])}},children:t("div",{ref:h,className:b(e.accordion,e[s],f),...g,children:o})})}),x=C(function({value:o,disabled:r=!1,className:s,title:u,headingLevel:m="h3",children:p,...f},g){const{openIds:h,baseId:l,toggle:n}=E(v,"Accordion.Item \u0434\u043E\u043B\u0436\u0435\u043D \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C\u0441\u044F \u0432\u043D\u0443\u0442\u0440\u0438 Accordion"),c=h.includes(o)&&!r,i=`${l}-trigger-${o}`,d=`${l}-panel-${o}`;return N("div",{ref:g,className:b(e.item,r?e.disabled:"",s),...f,children:[t(m,{className:e.heading,children:N("button",{type:"button",id:i,className:b(D.control,e.trigger),disabled:r,"aria-expanded":c,"aria-controls":d,onClick:()=>{r||n(o)},onKeyDown:a=>{const A=a.currentTarget.closest(`.${e.accordion}`),I=Array.from(A?.querySelectorAll(`:scope > .${e.item} .${e.trigger}:not(:disabled)`)??[]);O(a,I,I.indexOf(a.currentTarget),()=>{r||n(o)})},children:[u,t(T,{className:e.icon,size:"1em","aria-hidden":!0})]})}),t(k,{open:c,children:t("div",{className:e.panelInner,id:d,role:"region","aria-labelledby":i,children:p})})]})});y.displayName="Accordion",x.displayName="Accordion.Item";const q=Object.assign(y,{Item:x});export{q as Accordion};
@@ -1 +1 @@
1
- "use client";import{injectCss as a}from"../../utils/injectCss.js";var r=".LVhhv{display:flex;flex-direction:column}.LVhhv.P0DaU{gap:var(--altum-g-space-2)}.LVhhv.P0DaU ._7ryVk{background-color:var(--altum-color-surface);border:1px solid var(--altum-color-border);border-radius:var(--altum-g-radius)}.LVhhv.X24HB ._7ryVk{border-bottom:1px solid var(--altum-color-panel-border)}:is(.LVhhv.X24HB ._7ryVk):last-child{border-bottom:none}.LVhhv ._7ryVk{min-width:0;overflow:hidden}.x7TBB:is(.LVhhv ._7ryVk){opacity:var(--altum-opacity-disabled)}.LVhhv ._6PDIo{margin:0}.LVhhv ._9BYFY{align-items:center;color:var(--altum-color-ink-default);display:flex;font-size:var(--altum-g-font-size-base);font-weight:var(--altum-g-font-weight-semibold);justify-content:space-between;padding:var(--altum-g-space-3) var(--altum-g-space-4);text-align:left;transition:var(--altum-transition-smooth);width:100%}:is(.LVhhv ._9BYFY):focus-visible{outline-offset:-2px}:is(.LVhhv ._9BYFY):hover:not(:disabled){background-color:var(--altum-color-option-hover)}[aria-expanded=true]:is(.LVhhv ._9BYFY) .xfHxX{transform:rotate(180deg)}.LVhhv .xfHxX{color:var(--altum-field-label);flex-shrink:0;height:1em;margin-inline-start:auto;transition:var(--altum-transition-smooth);width:1em}.LVhhv .nTSIr{color:var(--altum-color-text-secondary);font-size:var(--altum-g-font-size-sm);line-height:var(--altum-g-line-height-base);padding:var(--altum-g-space-3) var(--altum-g-space-4)}@media (prefers-reduced-motion:reduce){.LVhhv ._9BYFY,.LVhhv .xfHxX{transition:none}}";const e={accordion:"LVhhv",bordered:"P0DaU",item:"_7ryVk",flush:"X24HB",disabled:"x7TBB",heading:"_6PDIo",trigger:"_9BYFY",icon:"xfHxX",panelInner:"nTSIr"};a(r);export{e as default};
1
+ "use client";import{injectCss as a}from"../../utils/injectCss.js";var r=".LVhhv{display:flex;flex-direction:column}.LVhhv.P0DaU{gap:var(--altum-g-space-2)}.LVhhv.P0DaU ._7ryVk{background-color:var(--altum-color-surface);border:1px solid var(--altum-color-border);border-radius:var(--altum-g-radius)}.LVhhv.X24HB ._7ryVk{border-bottom:1px solid var(--altum-color-panel-border)}:is(.LVhhv.X24HB ._7ryVk):last-child{border-bottom:none}.LVhhv ._7ryVk{min-width:0;overflow:hidden}.x7TBB:is(.LVhhv ._7ryVk){opacity:var(--altum-opacity-disabled)}.LVhhv ._6PDIo{margin:0}.LVhhv ._9BYFY{align-items:center;color:var(--altum-color-ink-default);display:flex;font-size:var(--altum-g-font-size-base);font-weight:var(--altum-g-font-weight-semibold);justify-content:space-between;padding:var(--altum-g-space-3) var(--altum-g-space-4);text-align:left;transition:var(--altum-transition-smooth);width:100%}:is(.LVhhv ._9BYFY):focus-visible{outline-offset:-2px}:is(.LVhhv ._9BYFY):hover:not(:disabled){background-color:var(--altum-color-option-hover)}[aria-expanded=true]:is(.LVhhv ._9BYFY) .xfHxX{transform:rotate(180deg)}.LVhhv .xfHxX{color:var(--altum-field-label);flex-shrink:0;margin-inline-start:auto;transition:var(--altum-transition-smooth)}.LVhhv .nTSIr{color:var(--altum-color-text-secondary);font-size:var(--altum-g-font-size-sm);line-height:var(--altum-g-line-height-base);padding:var(--altum-g-space-3) var(--altum-g-space-4)}@media (prefers-reduced-motion:reduce){.LVhhv ._9BYFY,.LVhhv .xfHxX{transition:none}}";const o={accordion:"LVhhv",bordered:"P0DaU",item:"_7ryVk",flush:"X24HB",disabled:"x7TBB",heading:"_6PDIo",trigger:"_9BYFY",icon:"xfHxX",panelInner:"nTSIr"};a(r);export{o as default};
@@ -1 +1 @@
1
- "use client";import{jsxs as u,jsx as r,Fragment as R}from"react/jsx-runtime";import{forwardRef as T,useId as q,useRef as K,useState as M,useMemo as x,useImperativeHandle as V}from"react";import{Listbox as z}from"../Listbox/Listbox.js";import{handleListHighlightKeyDown as G}from"../../utils/keyboard.js";import{filterListboxOptions as Q,getListboxOptionDomId as W}from"../../utils/listboxOptions.js";import{cn as Z}from"../../utils/cn.js";import{useControlledStateWithCallback as _}from"../../hooks/useControlledState.js";import{useLocale as E}from"../../locales/localeContext.js";import{TextField as J}from"../TextField/TextField.js";import{IconSearch as U}from"../../icons/icons/IconSearch.js";import o from"./ActionList.module.css.js";import{FieldBaseIcon as X}from"../../base/FieldBase/FieldBase.js";function Y(t){return[t.textValue??(typeof t.label=="string"||typeof t.label=="number"?String(t.label):t.id),...t.keywords??[],typeof t.description=="string"?t.description:""].join(" ")}function $(t){return u(R,{children:[t.icon&&r("span",{className:o.icon,"aria-hidden":!0,children:t.icon}),u("span",{className:o.itemBody,children:[r("span",{className:o.itemLabel,children:t.label}),t.description!=null&&r("span",{className:o.itemDescription,children:t.description})]}),t.shortcut!=null&&r("span",{className:o.shortcut,children:t.shortcut})]})}const v=T(function({items:t,groups:h,className:L="",id:y,"aria-label":I,onAction:N,onHighlightChange:P,filterable:m=!1,filterPlaceholder:C,query:p,onQueryChange:D,emptyText:F,...H},S){const{t:c}=E(),w=q(),l=y??w,n=K(null),[d,A]=_(p,"",D),[a,O]=M(-1),s=x(()=>Q({query:d,options:t.map(e=>({value:e.id,label:$(e),textValue:Y(e),disabled:e.disabled,groupId:e.groupId,buttonProps:e.buttonProps}))}),[t,d]),j=x(()=>{if(!h?.length)return;const e=new Set(s.map(i=>i.groupId).filter(i=>!!i));return h.filter(i=>e.has(i.id))},[s,h]),f=e=>{const i=t.find(g=>g.id===e);if(!(!i||i.disabled))return i.onSelect?.(),N?.(i),i},k=e=>{O(e),P?.(e)};V(S,()=>{const e=()=>n.current;return{highlightNext:()=>e()?.highlightNext(),highlightPrev:()=>e()?.highlightPrev(),highlightFirst:()=>e()?.highlightFirst(),highlightLast:()=>e()?.highlightLast(),selectHighlighted:()=>{const i=e()?.selectHighlighted();return i?t.find(g=>g.id===i):void 0},getHighlightedIndex:()=>e()?.getHighlightedIndex()??-1,getActiveDescendantId:()=>e()?.getActiveDescendantId(),getListId:()=>l}},[t,l]);const b=C??c("actionList.filterPlaceholder"),B={onNext:()=>n.current?.highlightNext(),onPrev:()=>n.current?.highlightPrev(),onFirst:()=>n.current?.highlightFirst(),onLast:()=>n.current?.highlightLast(),onSelect:()=>{const e=s[a]?.value;e&&f(e)}};return u("div",{className:Z(o.root,L),...H,children:[m&&r("div",{className:o.filter,children:r(J,{type:"search",size:"sm",width:"full",labelPlacement:"none",keepPlaceholder:!0,label:b,placeholder:b,value:d,autoComplete:"off",prefix:r(X,{children:r(U,{})}),role:"combobox","aria-expanded":!0,"aria-controls":l,"aria-autocomplete":"list","aria-activedescendant":a>=0?W(l,a):void 0,autoFocus:!0,onChange:e=>A(e.target.value),onKeyDown:e=>G(e,B)})}),r(z,{ref:n,id:l,className:o.list,options:s,groups:j,navigation:"highlight",highlightedIndex:a,onHighlightChange:k,preventOptionMouseDown:m||p!==void 0,multiline:!0,noOptionsText:F??c("actionList.empty"),"aria-label":I??c("actionList.ariaLabel"),onSelect:f})]})});v.displayName="ActionList";export{v as ActionList};
1
+ "use client";import{jsxs as d,jsx as r,Fragment as A}from"react/jsx-runtime";import{forwardRef as j,useRef as k,useState as O,useMemo as q,useImperativeHandle as K}from"react";import{Listbox as M}from"../Listbox/Listbox.js";import{handleListHighlightKeyDown as R}from"../../utils/keyboard.js";import{filterListboxOptions as T,getListboxOptionDomId as V}from"../../utils/listboxOptions.js";import{cn as z}from"../../utils/cn.js";import{useControlledStateWithCallback as B}from"../../hooks/useControlledState.js";import{useFallbackId as E}from"../../hooks/useFallbackId.js";import{useLocale as J}from"../../locales/localeContext.js";import{SearchField as Q}from"../SearchField/SearchField.js";import o from"./ActionList.module.css.js";import{ruSlice as W}from"../../locales/slices/actionList.ru.js";const G={actionList:W};function U(t){return[t.textValue??(typeof t.label=="string"||typeof t.label=="number"?String(t.label):t.id),...t.keywords??[],typeof t.description=="string"?t.description:""].join(" ")}function X(t){return d(A,{children:[t.icon&&r("span",{className:o.icon,"aria-hidden":!0,children:t.icon}),d("span",{className:o.itemBody,children:[r("span",{className:o.itemLabel,children:t.label}),t.description!=null&&r("span",{className:o.itemDescription,children:t.description})]}),t.shortcut!=null&&r("span",{className:o.shortcut,children:t.shortcut})]})}const u=j(function({items:t,groups:f,className:b,id:x,"aria-label":L,onAction:v,onHighlightChange:N,filterable:g=!1,filterPlaceholder:y,query:m,onQueryChange:I,emptyText:F,...H},P){const{t:a}=J(G),l=E(x),n=k(null),[s,S]=B(m,"",I),[h,C]=O(-1),D=q(()=>T({query:s,options:t.map(e=>({value:e.id,label:X(e),textValue:U(e),disabled:e.disabled,groupId:e.groupId,buttonProps:e.buttonProps}))}),[t,s]),w=e=>{const i=t.find(c=>c.id===e);i&&(i.onSelect?.(),v?.(i))};K(P,()=>{const e=()=>n.current;return{highlightNext:()=>e()?.highlightNext(),highlightPrev:()=>e()?.highlightPrev(),highlightFirst:()=>e()?.highlightFirst(),highlightLast:()=>e()?.highlightLast(),selectHighlighted:()=>{const i=e()?.selectHighlighted();return i?t.find(c=>c.id===i):void 0},getHighlightedIndex:()=>e()?.getHighlightedIndex()??-1,getActiveDescendantId:()=>e()?.getActiveDescendantId(),getListId:()=>l}},[t,l]);const p=y??a("actionList.filterPlaceholder");return d("div",{className:z(o.root,b),...H,children:[g&&r(Q,{wrapperClassName:o.filter,size:"sm",keepPlaceholder:!0,"aria-label":p,placeholder:p,value:s,autoComplete:"off",role:"combobox","aria-expanded":!0,"aria-controls":l,"aria-autocomplete":"list","aria-activedescendant":h>=0?V(l,h):void 0,autoFocus:!0,onChange:e=>S(e.target.value),onKeyDown:e=>{const i=n.current;R(e,{onNext:()=>i?.highlightNext(),onPrev:()=>i?.highlightPrev(),onFirst:()=>i?.highlightFirst(),onLast:()=>i?.highlightLast(),onSelect:()=>i?.selectHighlighted()})}}),r(M,{ref:n,id:l,className:o.list,options:D,groups:f,navigation:"highlight",highlightedIndex:h,onHighlightChange:e=>{C(e),N?.(e)},preventOptionMouseDown:g||m!==void 0,multiline:!0,noOptionsText:F??a("actionList.empty"),"aria-label":L??a("actionList.ariaLabel"),onSelect:w})]})});u.displayName="ActionList";export{u as ActionList};
@@ -1 +1 @@
1
- "use client";import{injectCss as t}from"../../utils/injectCss.js";var o=".TM61E{background-color:var(--altum-color-dropdown-bg);color:var(--altum-color-input-text);display:flex;flex-direction:column;max-height:100%;min-height:0}.TM61E ._2qgo-{border-bottom:1px solid var(--altum-color-dropdown-border);flex-shrink:0;padding:var(--altum-g-space-2) var(--altum-g-space-3)}.TM61E ._2MsDw{flex:1 1 auto;min-height:0;overflow-y:auto;padding:var(--altum-g-space-2)}.TM61E .-sQQx{align-items:center;color:var(--altum-color-muted);display:inline-flex;flex-shrink:0;height:var(--altum-toggle-box-size);justify-content:center;width:var(--altum-toggle-box-size)}.TM61E ._5z1Uj{display:flex;flex:1 1 auto;flex-direction:column;gap:var(--altum-g-space-1);min-width:0}.TM61E ._6Z9Na{font-size:var(--altum-g-font-size-base);font-weight:var(--altum-g-font-weight-medium);line-height:1.3}.TM61E ._0UGgw{color:var(--altum-color-ink-muted);font-size:var(--altum-g-font-size-2xs);line-height:var(--altum-g-line-height-2xs)}.TM61E .HT3A4{color:var(--altum-color-muted);flex-shrink:0;font-size:var(--altum-g-font-size-xs);font-variant-numeric:tabular-nums;margin-left:auto}";const e={root:"TM61E",filter:"_2qgo-",list:"_2MsDw",icon:"-sQQx",itemBody:"_5z1Uj",itemLabel:"_6Z9Na",itemDescription:"_0UGgw",shortcut:"HT3A4"};t(o);export{e as default};
1
+ "use client";import{injectCss as t}from"../../utils/injectCss.js";var e=".TM61E{background-color:var(--altum-color-dropdown-bg);display:flex;flex-direction:column;max-height:100%;min-height:0}.TM61E ._2qgo-{border-bottom:1px solid var(--altum-color-dropdown-border);flex-shrink:0;padding:var(--altum-g-space-2) var(--altum-g-space-3)}.TM61E ._2MsDw{flex:1 1 auto;min-height:0;overflow-y:auto;padding:var(--altum-g-space-2)}.TM61E .-sQQx{align-items:center;color:var(--altum-color-muted);display:inline-flex;flex-shrink:0;height:var(--altum-toggle-box-size);justify-content:center;width:var(--altum-toggle-box-size)}.TM61E ._5z1Uj{display:flex;flex:1 1 auto;flex-direction:column;gap:var(--altum-g-space-1);min-width:0}.TM61E ._6Z9Na{font-size:var(--altum-g-font-size-base);font-weight:var(--altum-g-font-weight-medium);line-height:1.3}.TM61E ._0UGgw{color:var(--altum-color-ink-muted);font-size:var(--altum-g-font-size-2xs);line-height:var(--altum-g-line-height-2xs)}.TM61E .HT3A4{color:var(--altum-color-muted);flex-shrink:0;font-size:var(--altum-g-font-size-xs);font-variant-numeric:tabular-nums}";const o={root:"TM61E",filter:"_2qgo-",list:"_2MsDw",icon:"-sQQx",itemBody:"_5z1Uj",itemLabel:"_6Z9Na",itemDescription:"_0UGgw",shortcut:"HT3A4"};t(e);export{o as default};
@@ -1 +1 @@
1
- "use client";import{jsx as l}from"react/jsx-runtime";import{forwardRef as D,useState as c,useCallback as U,useMemo as b}from"react";import{useMediaQuery as y,MOBILE_MEDIA_QUERY as L}from"../../hooks/useMediaQuery.js";import{useLongPress as N}from"../../hooks/useLongPress.js";import{cn as I}from"../../utils/cn.js";import{composeEventHandlers as o}from"../../utils/composeEvents.js";import{ActionSheetProvider as Q}from"./actionSheetContext.js";import m from"./ActionSheetTrigger.module.css.js";const d=D(function({children:f,showOverflowTrigger:g=!1,longPressMs:h=500,moveThreshold:u=8,disabled:n=!1,className:p,onPointerDown:P,onPointerUp:v,onPointerCancel:w,onContextMenu:C,onClick:M,onAnimationEnd:T,...E},x){const A=y(`(hover: none) and ${L}`),[r,t]=c(!1),[O,i]=c(!1),s=g||!A,S=U(()=>{n||(i(!0),t(!0))},[n]),e=N(S,{delay:h,disabled:n,moveThreshold:u}),k=b(()=>({overflowOpen:r,setOverflowOpen:t,shouldShowOverflowTrigger:s,cancelLongPress:e.cancel}),[r,s,e.cancel]);return l(Q,{value:k,children:l("div",{ref:x,...E,className:I(m.host,O&&m.hostTriggered,p),onPointerDown:o(P,e.onPointerDown),onPointerUp:o(v,e.onPointerUp),onPointerCancel:o(w,e.onPointerCancel),onContextMenu:o(C,e.onContextMenu),onClick:o(M,e.onClick),onAnimationEnd:o(T,a=>{a.target===a.currentTarget&&i(!1)}),"data-action-sheet-trigger":"",children:f})})});d.displayName="ActionSheetTrigger";export{d as ActionSheetTrigger};
1
+ "use client";import{jsx as E}from"react/jsx-runtime";import{forwardRef as D,useState as M,useEffect as b,useMemo as k}from"react";import{useMediaQuery as x,MOBILE_MEDIA_QUERY as A}from"../../hooks/useMediaQuery.js";import{cn as O}from"../../utils/cn.js";import{composeEventHandlers as w}from"../../utils/composeEvents.js";import{ActionSheetProvider as U}from"./actionSheetContext.js";import P from"./ActionSheetTrigger.module.css.js";const S=`(hover: none) and ${A}`,I=400;function Y(){const r={disabled:!1,delay:500,move:8,fire:()=>{}};let d=0,h=0,g=0,m=!1,u=!1,p=!1,a=null,v=null;const s=()=>{window.clearTimeout(d),d=0,m=!1,a?.(),a=null},f=()=>{v?.(),v=null},T=()=>{f(),p=!0;const o=n=>{n.preventDefault(),n.stopPropagation(),n.stopImmediatePropagation(),p=!1,f()};window.addEventListener("click",o,!0);const i=window.setTimeout(()=>{p=!1,f()},I);v=()=>{window.removeEventListener("click",o,!0),window.clearTimeout(i)}},c=(o,i,n)=>{window.addEventListener(o,i,n);const l=a;a=()=>{l?.(),window.removeEventListener(o,i,n)}};return{opts:r,stop:s,onPointerDown:o=>{if(r.disabled||o.button>0)return;s(),u=!1,h=o.clientX,g=o.clientY,m=!0;const i=o.currentTarget;d=window.setTimeout(()=>{u=!0,d=0,m=!1,a?.(),a=null,T(),!r.disabled&&(i.classList.remove(P.pulse),i.classList.add(P.pulse),r.fire(!0))},r.delay);const n=(e,t)=>{!m||d===0||Math.hypot(e-h,t-g)>r.move&&s()},l=()=>s();c("pointermove",e=>{const t=e;n(t.clientX,t.clientY)}),c("pointerup",l),c("pointercancel",l),c("touchmove",e=>{const t=e.touches[0];t&&n(t.clientX,t.clientY)},{passive:!0}),c("touchend",l),c("touchcancel",l)},onPointerUp:s,onPointerCancel:s,onContextMenu:o=>{(u||r.disabled)&&o.preventDefault()},onClick:o=>{!p&&!u||(o.preventDefault(),o.stopPropagation(),p=!1,u=!1,f())},destroy:()=>{s(),f()}}}const L=D(function({children:r,showOverflowTrigger:d=!1,longPressMs:h=500,moveThreshold:g=8,disabled:m=!1,className:u,onPointerDown:p,onPointerUp:a,onPointerCancel:v,onContextMenu:s,onClick:f,onAnimationEnd:T,...c},o){const i=x(S),[n,l]=M(!1),[e]=M(Y);e.opts.disabled=m,e.opts.delay=h,e.opts.move=g,e.opts.fire=l;const t=d||!i;b(()=>()=>e.destroy(),[e]);const y=k(()=>({overflowOpen:n,setOverflowOpen:l,shouldShowOverflowTrigger:t,cancelLongPress:e.stop}),[n,t,e.stop]);return E(U,{value:y,children:E("div",{ref:o,...c,className:O(P.host,u),onPointerDown:w(p,e.onPointerDown),onPointerUp:w(a,e.onPointerUp),onPointerCancel:w(v,e.onPointerCancel),onContextMenu:w(s,e.onContextMenu),onClick:w(f,e.onClick),onAnimationEnd:w(T,C=>{C.target===C.currentTarget&&C.currentTarget.classList.remove(P.pulse)}),"data-action-sheet-trigger":"",children:r})})});L.displayName="ActionSheetTrigger";export{L as ActionSheetTrigger};
@@ -1 +1 @@
1
- "use client";import{injectCss as e}from"../../utils/injectCss.js";var t=".B707S{-webkit-touch-callout:none;display:block;min-width:0;transform-origin:center center;-webkit-user-select:none;user-select:none;width:100%}.n3bW3{animation:qUA-M .32s cubic-bezier(.22,1,.36,1)}@keyframes qUA-M{0%{transform:scale(1)}35%{transform:scale(.97)}70%{transform:scale(1.015)}to{transform:scale(1)}}@media (hover:hover) and (pointer:fine){.B707S{-webkit-user-select:auto;user-select:auto}}@media (prefers-reduced-motion:reduce){.n3bW3{animation:none}}";const r={host:"B707S",hostTriggered:"n3bW3"};e(t);export{r as default};
1
+ "use client";import{injectCss as e}from"../../utils/injectCss.js";var n=".B707S{-webkit-touch-callout:none;min-width:0;width:100%}@media (hover:none),(pointer:coarse){.B707S{-webkit-user-select:none;user-select:none}}.NJ4Ii{animation:ATj1M .32s cubic-bezier(.22,1,.36,1)}@keyframes ATj1M{35%{transform:scale(.97)}70%{transform:scale(1.015)}to{transform:scale(1)}}@media (prefers-reduced-motion:reduce){.NJ4Ii{animation:none}}";const o={host:"B707S",pulse:"NJ4Ii"};e(n);export{o as default};
@@ -1 +1 @@
1
- "use client";import{jsxs as d,jsx as o}from"react/jsx-runtime";import{forwardRef as b}from"react";import{IconCheckmark as w}from"../../icons/icons/IconCheckmark.js";import{IconCross as g}from"../../icons/icons/IconCross.js";import{IconInformation as x}from"../../icons/icons/IconInformation.js";import{IconWarning as y}from"../../icons/icons/IconWarning.js";import{IconWrong as L}from"../../icons/icons/IconWrong.js";import{ButtonIcon as j}from"../ButtonIcon/ButtonIcon.js";import e from"../../styles/MediaItem.module.css.js";import A from"../../styles/overlayClose.module.css.js";import r from"./Alert.module.css.js";import f from"../../styles/status.module.css.js";import{cn as i}from"../../utils/cn.js";import{useLocale as W}from"../../locales/localeContext.js";const q={info:o(x,{size:16}),success:o(w,{size:16}),warning:o(y,{size:16}),error:o(L,{size:16})},p=b(function({variant:n="info",size:l="md",layout:u="block",className:h,role:N,title:t,icon:a,actions:s,onClose:m,closeLabel:I,children:c,...v},z){const{t:k}=W(),C=I??k("common.close");return d("div",{ref:z,className:i(e.row,e.wrap,r.alert,r[n],f[n],f.surface,l!=="md"&&r[l],u==="inline"&&r.inline,h),role:N??(n==="error"?"alert":"status"),...v,children:[a!==null&&o("div",{className:i(e.media,r.icon),"aria-hidden":!0,children:a??q[n]}),d("div",{className:i(e.content,r.body),children:[t!=null&&t!==""&&o("div",{className:i(e.title,r.title),children:t}),c!=null&&c!==""&&o("div",{className:i(e.description,r.content),children:c}),s!=null&&o("div",{className:i(e.actions,r.actions),children:s})]}),m!=null&&o(j,{appearance:"diskClose","aria-label":C,icon:o(g,{className:A.icon,size:16,"aria-hidden":!0}),onClick:m})]})});p.displayName="Alert";export{p as Alert};
1
+ "use client";import{jsxs as d,jsx as o}from"react/jsx-runtime";import{forwardRef as w}from"react";import{IconCheckmark as y}from"../../icons/icons/IconCheckmark.js";import{IconInformation as C}from"../../icons/icons/IconInformation.js";import{IconWarning as g}from"../../icons/icons/IconWarning.js";import{IconWrong as x}from"../../icons/icons/IconWrong.js";import{OverlayCloseButton as j}from"../ButtonIcon/OverlayCloseButton.js";import e from"../../styles/MediaItem.module.css.js";import r from"./Alert.module.css.js";import f from"../../styles/status.module.css.js";import{cn as i}from"../../utils/cn.js";import{useLocale as A}from"../../locales/localeContext.js";import{ruSlice as L}from"../../locales/slices/common.ru.js";const W={common:L},B={info:o(C,{size:16}),success:o(y,{size:16}),warning:o(g,{size:16}),error:o(x,{size:16})},p=w(function({variant:n="info",size:c="md",layout:u="block",className:h,role:v,title:l,icon:m,actions:s,onClose:a,closeLabel:N,children:t,...I},b){const{t:z}=A(W),k=N??z("common.close");return d("div",{ref:b,className:i(e.row,e.wrap,r.alert,r[n],f[n],f.surface,c!=="md"&&r[c],u==="inline"&&r.inline,h),role:v??(n==="error"?"alert":"status"),...I,children:[m!==null&&o("div",{className:i(e.media,r.icon),"aria-hidden":!0,children:m??B[n]}),d("div",{className:i(e.content,r.body),children:[l!=null&&l!==""&&o("div",{className:i(e.title,r.title),children:l}),t!=null&&t!==""&&o("div",{className:i(e.description,r.content),children:t}),s!=null&&o("div",{className:i(e.actions,r.actions),children:s})]}),a!=null&&o(j,{"aria-label":k,onClick:a})]})});p.displayName="Alert";export{p as Alert};
@@ -1 +1 @@
1
- "use client";import{injectCss as a}from"../../utils/injectCss.js";var t="._7cYyI{align-items:flex-start;background-color:var(--altum-status-bg);border:1px solid var(--altum-status-border);border-radius:var(--altum-g-radius);color:var(--altum-status-fg);padding:var(--altum-g-space-3) var(--altum-g-space-4)}._7cYyI .Zg6SB{color:inherit;margin-top:var(--altum-g-space-1)}._7cYyI .abGgF{color:inherit;font-weight:var(--altum-g-font-weight-semibold,600);line-height:var(--altum-g-line-height-xs)}._7cYyI .UXnmZ,._7cYyI .abGgF{font-size:var(--altum-g-font-size-sm)}._7cYyI .UXnmZ{color:var(--altum-color-muted);line-height:var(--altum-g-line-height-base)}._7cYyI .RW9lv{align-items:flex-start;flex-wrap:wrap;gap:var(--altum-g-space-2);margin-top:var(--altum-g-space-2)}._7cYyI._8W0SD{gap:var(--altum-g-space-2);padding:var(--altum-g-space-2) var(--altum-g-space-3)}._7cYyI._8W0SD .UXnmZ,._7cYyI._8W0SD .abGgF{font-size:var(--altum-g-font-size-xs)}._7cYyI.-rVFO{padding:var(--altum-g-space-4) var(--altum-g-space-5)}._7cYyI.-rVFO .abGgF{font-size:var(--altum-g-font-size-base)}._7cYyI.OCIzv{display:inline-flex;max-width:100%;vertical-align:middle;width:auto}._7cYyI.OCIzv .RW9lv{margin-left:var(--altum-g-space-2);margin-top:0}._7cYyI.OCIzv .B60Rk{align-items:center;flex-direction:row;flex-wrap:wrap;gap:var(--altum-g-space-2)}";const r={alert:"_7cYyI",icon:"Zg6SB",title:"abGgF",content:"UXnmZ",actions:"RW9lv",sm:"_8W0SD",lg:"-rVFO",inline:"OCIzv",body:"B60Rk"};a(t);export{r as default};
1
+ "use client";import{injectCss as a}from"../../utils/injectCss.js";var t="._7cYyI{align-items:flex-start;background-color:var(--altum-status-bg);border:1px solid var(--altum-status-border);border-radius:var(--altum-g-radius);color:var(--altum-status-fg);padding:var(--altum-g-space-3) var(--altum-g-space-4)}._7cYyI .Zg6SB{color:inherit;margin-top:var(--altum-g-space-1)}._7cYyI .abGgF{color:inherit;font-weight:var(--altum-g-font-weight-semibold);line-height:var(--altum-g-line-height-xs)}._7cYyI .UXnmZ,._7cYyI .abGgF{font-size:var(--altum-g-font-size-sm)}._7cYyI .UXnmZ{color:var(--altum-color-muted);line-height:var(--altum-g-line-height-base)}._7cYyI .RW9lv{align-items:flex-start;flex-wrap:wrap;gap:var(--altum-g-space-2);margin-top:var(--altum-g-space-2)}._7cYyI._8W0SD{gap:var(--altum-g-space-2);padding:var(--altum-g-space-2) var(--altum-g-space-3)}._7cYyI._8W0SD .UXnmZ,._7cYyI._8W0SD .abGgF{font-size:var(--altum-g-font-size-xs)}._7cYyI.-rVFO{padding:var(--altum-g-space-4) var(--altum-g-space-5)}._7cYyI.-rVFO .abGgF{font-size:var(--altum-g-font-size-base)}._7cYyI.OCIzv{display:inline-flex;max-width:100%;vertical-align:middle;width:auto}._7cYyI.OCIzv .RW9lv{margin-left:var(--altum-g-space-2);margin-top:0}._7cYyI.OCIzv .B60Rk{align-items:center;flex-direction:row;flex-wrap:wrap;gap:var(--altum-g-space-2)}";const e={alert:"_7cYyI",icon:"Zg6SB",title:"abGgF",content:"UXnmZ",actions:"RW9lv",sm:"_8W0SD",lg:"-rVFO",inline:"OCIzv",body:"B60Rk"};a(t);export{e as default};
@@ -1 +1 @@
1
- "use client";import{injectCss as a}from"../../utils/injectCss.js";var t='._3xMuZ{--altum-avatar-size:44px;align-items:center;background-color:var(--altum-color-fill-primary-bg);border:2px solid var(--altum-color-surface);border-radius:50%;color:var(--altum-color-fill-primary-fg);display:inline-flex;flex-shrink:0;font-family:inherit;font-size:calc(var(--altum-avatar-size)/2.5);font-weight:var(--altum-g-font-weight-semibold);height:var(--altum-avatar-size);justify-content:center;overflow:hidden;position:relative;width:var(--altum-avatar-size)}._3xMuZ[data-status]{overflow:visible}._3xMuZ[data-status]:after{aspect-ratio:1;background-color:var(--altum-avatar-status);border:2px solid var(--altum-color-surface);border-radius:50%;bottom:0;box-sizing:border-box;content:"";min-height:8px;min-width:8px;position:absolute;right:0;width:22%}._3xMuZ[data-status=online]{--altum-avatar-status:var(--altum-color-status-success)}._3xMuZ[data-status=offline]{--altum-avatar-status:var(--altum-color-border)}._3xMuZ[data-status=busy]{--altum-avatar-status:var(--altum-color-status-error)}._3xMuZ[data-status=away]{--altum-avatar-status:var(--altum-color-status-warning)}.oSaLL{--altum-avatar-size:24px}.sZ2bk{--altum-avatar-size:32px}.pTTUA{--altum-avatar-size:52px}.mW58F{--altum-avatar-size:64px}.SqXNw{border-radius:50%;height:100%;object-fit:cover;width:100%}.zRtul{align-items:center;display:inline-flex;justify-content:center;line-height:1}.zRtul:not(:has(svg)){max-width:100%;padding-inline:10%;text-align:center}.zRtul svg{height:50%;width:50%}.LHuq2{display:inline-flex;flex-direction:row}.LHuq2>*+*{margin-left:calc(var(--altum-g-space-2)*-1)}';const r={avatar:"_3xMuZ",xs:"oSaLL",sm:"sZ2bk",lg:"pTTUA",xl:"mW58F",img:"SqXNw",icon:"zRtul",group:"LHuq2"};a(t);export{r as default};
1
+ "use client";import{injectCss as a}from"../../utils/injectCss.js";var t='._3xMuZ{--altum-avatar-size:var(--altum-control-height-md);align-items:center;background-color:var(--altum-color-fill-primary-bg);border:2px solid var(--altum-color-surface);border-radius:50%;color:var(--altum-color-fill-primary-fg);display:inline-flex;flex-shrink:0;font-family:inherit;font-size:calc(var(--altum-avatar-size)/2.5);font-weight:var(--altum-g-font-weight-semibold);height:var(--altum-avatar-size);justify-content:center;overflow:hidden;position:relative;width:var(--altum-avatar-size)}._3xMuZ[data-status]{overflow:visible}._3xMuZ[data-status]:after{aspect-ratio:1;background-color:var(--altum-avatar-status);border:2px solid var(--altum-color-surface);border-radius:50%;bottom:0;box-sizing:border-box;content:"";min-height:var(--altum-g-space-2);min-width:var(--altum-g-space-2);position:absolute;right:0;width:22%}._3xMuZ[data-status=online]{--altum-avatar-status:var(--altum-color-status-success)}._3xMuZ[data-status=offline]{--altum-avatar-status:var(--altum-color-border)}._3xMuZ[data-status=busy]{--altum-avatar-status:var(--altum-color-status-error)}._3xMuZ[data-status=away]{--altum-avatar-status:var(--altum-color-status-warning)}.oSaLL{--altum-avatar-size:var(--altum-g-space-6)}.sZ2bk{--altum-avatar-size:var(--altum-control-height-sm)}.pTTUA{--altum-avatar-size:var(--altum-control-height-lg)}.mW58F{--altum-avatar-size:calc(var(--altum-g-space-8)*2)}.SqXNw{border-radius:50%;height:100%;object-fit:cover;width:100%}.zRtul{align-items:center;display:inline-flex;justify-content:center;line-height:1}.zRtul:not(:has(svg)){max-width:100%;padding-inline:10%;text-align:center}.zRtul svg{height:50%;width:50%}.LHuq2{display:inline-flex;flex-direction:row}.LHuq2>*+*{margin-left:calc(var(--altum-g-space-2)*-1)}';const r={avatar:"_3xMuZ",xs:"oSaLL",sm:"sZ2bk",lg:"pTTUA",xl:"mW58F",img:"SqXNw",icon:"zRtul",group:"LHuq2"};a(t);export{r as default};
@@ -1 +1 @@
1
- "use client";import{jsxs as x,jsx as g}from"react/jsx-runtime";import{forwardRef as y}from"react";import n from"./Badge.module.css.js";import s from"../../styles/status.module.css.js";import{cn as N}from"../../utils/cn.js";function j(e,l){if(typeof e!="number"||!Number.isFinite(e))return e;const r=l===!1?null:l??9;return r==null||e<=r?e:`${r}+`}const v=y(function({label:e,dot:l=!1,variant:r="error",size:b="md",position:h,max:w,children:i,className:o,...t},m){const c=r==="error"||r==="success"||r==="info"||r==="warning",a=i!=null&&(h??"overlay")!=="standalone",u=j(e,w),d=e!==void 0||l,f=N(n.badge,c?s[r]:n[r],c?r==="warning"&&!l?s.surface:s.fill:"",n[b],l?n.dot:"",a?n.overlay:n.standalone,a?"":o),p=!l&&u!=null?u:null;return a?x("div",{ref:m,className:N(n.wrap,o),...t,children:[i,d?g("span",{className:f,children:p}):null]}):d?g("span",{ref:m,className:f,...t,children:p}):null});v.displayName="Badge";export{v as Badge};
1
+ "use client";import{jsxs as w,jsx as b}from"react/jsx-runtime";import{forwardRef as j}from"react";import l from"./Badge.module.css.js";import o from"../../styles/status.module.css.js";import{cn as g}from"../../utils/cn.js";const h=j(function({label:r,dot:a=!1,variant:n="error",size:v="md",position:x,max:s,children:m,className:t,...d},c){const f=n==="primary"||n==="secondary",e=m!=null&&x!=="standalone",i=s===!1||typeof r!="number"||!Number.isFinite(r)?null:s??9,u=typeof r=="number"&&i!=null&&r>i?`${i}+`:r,p=r!==void 0||a,y=g(l.badge,f?l[n]:o[n],!f&&(n==="warning"&&!a?o.surface:o.fill),v==="sm"&&l.sm,a&&l.dot,e&&l.overlay,!e&&t),N=a||u==null?null:u;return e?w("div",{ref:c,className:g(l.wrap,t),...d,children:[m,p?b("span",{className:y,children:N}):null]}):p?b("span",{ref:c,className:y,...d,children:N}):null});h.displayName="Badge";export{h as Badge};
@@ -1 +1 @@
1
- "use client";import{injectCss as a}from"../../utils/injectCss.js";var t=".yp-V3{margin-right:calc(var(--altum-badge-overhang)*-1);margin-top:calc(var(--altum-badge-overhang)*-1);overflow:visible;padding-right:var(--altum-badge-overhang);padding-top:var(--altum-badge-overhang);position:relative}.RsuMz,.yp-V3{display:inline-flex}.RsuMz{align-items:center;border:2px solid var(--altum-color-surface);border-radius:var(--altum-g-radius-pill);box-sizing:border-box;font-family:inherit;font-size:var(--altum-badge-font-size);font-weight:var(--altum-g-font-weight-bold);justify-content:center;line-height:1;translate:0 var(--altum-badge-digit-nudge);z-index:var(--altum-g-z-local)}.RsuMz.cGsYh{position:absolute;right:var(--altum-badge-overhang);top:var(--altum-badge-overhang);transform:translate(40%,-40%)}.RsuMz.cGsYh.LYsCn{max-width:calc(var(--altum-badge-size-sm) + var(--altum-g-space-2));padding-inline:var(--altum-control-inset);transform:translate(25%,-25%)}.RsuMz.etUpX{position:static;transform:none;vertical-align:middle}.RsuMz._4Or8q{height:var(--altum-badge-size-md);min-width:var(--altum-badge-size-md);padding:0 var(--altum-g-space-1)}.RsuMz.LYsCn{border-width:1px;font-size:var(--altum-badge-font-size-sm,var(--altum-badge-font-size));height:var(--altum-badge-size-sm);min-width:var(--altum-badge-size-sm);padding:0 var(--altum-control-inset)}.RsuMz.S0WCS{background-color:var(--altum-color-brand);color:var(--altum-color-brand-text)}.RsuMz.AhhB9{background-color:var(--altum-color-text-secondary);color:var(--altum-color-surface)}.RsuMz.i0c-G{height:var(--altum-g-space-2);min-width:var(--altum-g-space-2);padding:0;translate:none;width:var(--altum-g-space-2)}.RsuMz.i0c-G.LYsCn{height:calc(var(--altum-g-space-1) + var(--altum-control-inset));min-width:calc(var(--altum-g-space-1) + var(--altum-control-inset));width:calc(var(--altum-g-space-1) + var(--altum-control-inset))}";const r={wrap:"yp-V3",badge:"RsuMz",overlay:"cGsYh",sm:"LYsCn",standalone:"etUpX",md:"_4Or8q",primary:"S0WCS",secondary:"AhhB9",dot:"i0c-G"};a(t);export{r as default};
1
+ "use client";import{injectCss as a}from"../../utils/injectCss.js";var t=".yp-V3{--altum-badge-outset:var(--altum-badge-overhang);display:inline-flex;margin:calc(var(--altum-badge-outset)*-1) calc(var(--altum-badge-outset)*-1) 0 0;padding:var(--altum-badge-outset) var(--altum-badge-outset) 0 0;position:relative}.RsuMz{--altum-badge-box:var(--altum-badge-size-md);--altum-badge-pad:var(--altum-g-space-1);border:2px solid var(--altum-color-surface);border-radius:var(--altum-g-radius-pill);box-sizing:border-box;display:inline-grid;font-size:var(--altum-badge-font-size);font-weight:var(--altum-g-font-weight-bold);height:var(--altum-badge-box);line-height:1;min-width:var(--altum-badge-box);padding:0 var(--altum-badge-pad);place-items:center;translate:0 var(--altum-badge-digit-nudge);vertical-align:middle}.RsuMz.cGsYh{position:absolute;right:var(--altum-badge-outset);top:var(--altum-badge-outset);transform:translate(40%,-40%);z-index:var(--altum-g-z-local)}.RsuMz.LYsCn{--altum-badge-box:var(--altum-badge-size-sm);--altum-badge-pad:var(--altum-control-inset);border-width:1px;font-size:var(--altum-badge-font-size-sm,var(--altum-badge-font-size))}.RsuMz.cGsYh.LYsCn{max-width:calc(var(--altum-badge-size-sm) + var(--altum-g-space-2));transform:translate(25%,-25%)}.RsuMz.S0WCS{background-color:var(--altum-color-brand);color:var(--altum-color-brand-text)}.RsuMz.AhhB9{background-color:var(--altum-color-text-secondary);color:var(--altum-color-surface)}.RsuMz.i0c-G{--altum-badge-box:var(--altum-g-space-2);padding:0;translate:none;width:var(--altum-badge-box)}.RsuMz.i0c-G.LYsCn{--altum-badge-box:calc(var(--altum-g-space-1) + var(--altum-control-inset))}";const e={wrap:"yp-V3",badge:"RsuMz",overlay:"cGsYh",sm:"LYsCn",primary:"S0WCS",secondary:"AhhB9",dot:"i0c-G"};a(t);export{e as default};
@@ -1 +1 @@
1
- "use client";import{jsx as p}from"react/jsx-runtime";import{forwardRef as h}from"react";import e from"./Box.module.css.js";import{cn as b}from"../../utils/cn.js";const s=h(function({variant:i="outlined",border:d,borderStyle:m="solid",shadow:o,as:r="div",padding:n="none",radius:a="md",className:l,children:f,...t},u){const c=r==="button"?{type:t.type??"button"}:void 0;return p(r,{ref:u,className:b(e.root,e[i],d===!0&&e.bordered,d===!1&&e.unbordered,d!==!1&&m==="dashed"&&e.dashed,o==="none"&&e.noShadow,o&&o!=="none"&&e[`shadow_${o}`],n!=="none"&&e[`pad_${n}`],a!=="md"&&e[`radius_${a}`],l),...t,...c,children:f})});s.displayName="Box";export{s as Box};
1
+ "use client";import{jsx as u}from"react/jsx-runtime";import{forwardRef as p}from"react";import o from"./Box.module.css.js";import{cn as b}from"../../utils/cn.js";const t=p(function({variant:i="outlined",border:r,borderStyle:m="solid",shadow:d,as:e="div",padding:a="none",radius:n="md",className:l,...s},f){return u(e,{ref:f,className:b(o.root,o[i],r&&o.bordered,r===!1&&o.unbordered,r!==!1&&m==="dashed"&&o.dashed,d==="none"&&o.noShadow,d&&d!=="none"&&o[`shadow_${d}`],a!=="none"&&o[`pad_${a}`],n!=="md"&&o[`radius_${n}`],l),...s,...e==="button"?{type:s.type??"button"}:null})});t.displayName="Box";export{t as Box};
@@ -1 +1 @@
1
- "use client";import{injectCss as r}from"../../utils/injectCss.js";var o=".qArCi{border:1px solid #0000;border-radius:var(--altum-g-radius);box-sizing:border-box;color:var(--altum-color-input-text)}.qArCi,.qArCi.w5IF6{--altum-box-border-color:var(--altum-color-border)}.qArCi.w5IF6{background-color:var(--altum-color-surface);border-color:var(--altum-box-border-color)}.qArCi.m4sbd{--altum-box-border-color:var(--altum-color-border);background-color:var(--altum-color-surface-elevated);box-shadow:var(--altum-shadow-surface)}.qArCi.BP-0Q{--altum-box-border-color:var(--altum-color-dropdown-border);background-color:var(--altum-color-fill-floating-bg);box-shadow:var(--altum-shadow-dropdown);color:var(--altum-color-fill-floating-fg)}.qArCi.BP-0Q,.qArCi.nY-ng{border-color:var(--altum-box-border-color)}.qArCi.nY-ng{--altum-box-border-color:var(--altum-color-brand-tint-border);background-color:var(--altum-color-brand-tint);color:var(--altum-color-brand-tint-text)}.qArCi.-vlP5{background-color:color-mix(in srgb,var(--altum-color-text-secondary) 10%,var(--altum-color-surface));border-color:var(--altum-box-border-color);color:var(--altum-color-text-secondary)}.qArCi.-vlP5,.qArCi.fZLvl{--altum-box-border-color:var(--altum-color-border)}.qArCi.fZLvl{background-color:var(--altum-color-surface-active)}.qArCi.fZLvl,.qArCi.pzfbU{color:var(--altum-color-input-text)}.qArCi.pzfbU{--altum-box-border-color:color-mix(in srgb,var(--altum-color-border) 55%,#0000);-webkit-backdrop-filter:blur(var(--altum-backdrop-blur,12px));backdrop-filter:blur(var(--altum-backdrop-blur,12px));background-color:color-mix(in srgb,var(--altum-color-surface) 62%,#0000);box-shadow:var(--altum-shadow-surface)}.qArCi._0SOwa,.qArCi.pzfbU{border-color:var(--altum-box-border-color)}.qArCi._0SOwa{--altum-box-border-color:var(--altum-overlay-content-border);background-color:var(--altum-overlay-content-bg);color:var(--altum-overlay-on-scrim)}.qArCi.nLsOn{--altum-box-border-color:var(--altum-color-border);background-color:initial}.qArCi.ihDGT{--altum-box-border-color:#0000;background-color:initial;border:none;border-radius:0}.qArCi._6Vf0j{border-color:var(--altum-box-border-color);border-width:1px}.qArCi.A3tye{border-color:#0000}.qArCi.uLa77{border-style:dashed}.qArCi.Q4six{box-shadow:none}.qArCi._0wr3M{box-shadow:var(--altum-shadow-surface)}.qArCi.Yx1LC{box-shadow:var(--altum-shadow-dropdown)}.qArCi.g3it5{box-shadow:var(--altum-shadow-lg)}.qArCi.MQcDi{border-radius:0}.qArCi._9oy-Z{border-radius:var(--altum-g-radius-sm)}.qArCi.eCoHt{border-radius:var(--altum-g-radius-lg,12px)}.qArCi.xpq30{padding:var(--altum-g-space-1)}.qArCi.khFW-{padding:var(--altum-g-space-2)}.qArCi.Ch4pq{padding:var(--altum-g-space-3)}.qArCi.jJ8ob{padding:var(--altum-g-space-4)}.qArCi._3AlQG{padding:var(--altum-g-space-6)}";const a={root:"qArCi",outlined:"w5IF6",elevated:"m4sbd",floating:"BP-0Q",tinted:"nY-ng",secondary:"-vlP5",muted:"fZLvl",glass:"pzfbU",overlay:"_0SOwa",ghost:"nLsOn",plain:"ihDGT",bordered:"_6Vf0j",unbordered:"A3tye",dashed:"uLa77",noShadow:"Q4six",shadow_sm:"_0wr3M",shadow_md:"Yx1LC",shadow_lg:"g3it5",radius_none:"MQcDi",radius_sm:"_9oy-Z",radius_lg:"eCoHt",pad_xs:"xpq30",pad_sm:"khFW-",pad_md:"Ch4pq",pad_lg:"jJ8ob",pad_xl:"_3AlQG"};r(o);export{a as default};
1
+ "use client";import{injectCss as r}from"../../utils/injectCss.js";var o=".qArCi{--altum-box-border-color:var(--altum-color-border);border:1px solid #0000;border-radius:var(--altum-g-radius);box-sizing:border-box;color:var(--altum-color-input-text)}.qArCi:is(.w5IF6,.BP-0Q,.nY-ng,.-vlP5,.pzfbU,._0SOwa){border-color:var(--altum-box-border-color)}.qArCi:is(.m4sbd,.pzfbU){box-shadow:var(--altum-shadow-surface)}.qArCi.w5IF6{background-color:var(--altum-color-surface)}.qArCi.m4sbd{background-color:var(--altum-color-surface-elevated)}.qArCi.BP-0Q{--altum-box-border-color:var(--altum-color-dropdown-border);background-color:var(--altum-color-fill-floating-bg);box-shadow:var(--altum-shadow-dropdown);color:var(--altum-color-fill-floating-fg)}.qArCi.nY-ng{--altum-box-border-color:var(--altum-color-brand-tint-border);background-color:var(--altum-color-brand-tint);color:var(--altum-color-brand-tint-text)}.qArCi.-vlP5{background-color:color-mix(in srgb,var(--altum-color-text-secondary) 10%,var(--altum-color-surface));color:var(--altum-color-text-secondary)}.qArCi.fZLvl{background-color:var(--altum-color-surface-active)}.qArCi.pzfbU{--altum-box-border-color:color-mix(in srgb,var(--altum-color-border) 55%,#0000);-webkit-backdrop-filter:blur(var(--altum-backdrop-blur,12px));backdrop-filter:blur(var(--altum-backdrop-blur,12px));background-color:color-mix(in srgb,var(--altum-color-surface) 62%,#0000)}.qArCi._0SOwa{--altum-box-border-color:var(--altum-overlay-content-border);background-color:var(--altum-overlay-content-bg);color:var(--altum-overlay-on-scrim)}.qArCi.ihDGT{--altum-box-border-color:#0000;border:none;border-radius:0}.qArCi._6Vf0j{border-color:var(--altum-box-border-color);border-width:1px}.qArCi.A3tye{border-color:#0000}.qArCi.uLa77{border-style:dashed}.qArCi.Q4six{box-shadow:none}.qArCi._0wr3M{box-shadow:var(--altum-shadow-surface)}.qArCi.Yx1LC{box-shadow:var(--altum-shadow-dropdown)}.qArCi.g3it5{box-shadow:var(--altum-shadow-lg)}.qArCi.MQcDi{border-radius:0}.qArCi._9oy-Z{border-radius:var(--altum-g-radius-sm)}.qArCi.eCoHt{border-radius:var(--altum-g-radius-lg,12px)}.qArCi.xpq30{padding:var(--altum-g-space-1)}.qArCi.khFW-{padding:var(--altum-g-space-2)}.qArCi.Ch4pq{padding:var(--altum-g-space-3)}.qArCi.jJ8ob{padding:var(--altum-g-space-4)}.qArCi._3AlQG{padding:var(--altum-g-space-6)}";const a={root:"qArCi",outlined:"w5IF6",floating:"BP-0Q",tinted:"nY-ng",secondary:"-vlP5",glass:"pzfbU",overlay:"_0SOwa",elevated:"m4sbd",muted:"fZLvl",plain:"ihDGT",bordered:"_6Vf0j",unbordered:"A3tye",dashed:"uLa77",noShadow:"Q4six",shadow_sm:"_0wr3M",shadow_md:"Yx1LC",shadow_lg:"g3it5",radius_none:"MQcDi",radius_sm:"_9oy-Z",radius_lg:"eCoHt",pad_xs:"xpq30",pad_sm:"khFW-",pad_md:"Ch4pq",pad_lg:"jJ8ob",pad_xl:"_3AlQG"};r(o);export{a as default};
@@ -1 +1 @@
1
- "use client";import{jsxs as r,jsx as a}from"react/jsx-runtime";import{forwardRef as $,useState as w,useId as B}from"react";import m from"../../styles/unstyledControl.module.css.js";import l from"./Bubble.module.css.js";import{cn as o}from"../../utils/cn.js";import{useLocale as S}from"../../locales/localeContext.js";const p=$(function({children:f,variant:c="default",align:h,group:g="single",meta:s,reactions:n,collapsible:t=!1,collapsedLines:N=4,expandLabel:v,collapseLabel:j,className:x,style:d,...y},C){const{t:i}=S(),[u,L]=w(!1),b=B(),k=h??(c==="outgoing"?"end":"start");return r("div",{ref:C,className:o(l.wrap,k==="end"?l.alignEnd:"",t?l.collapsible:"",x),style:t?{"--altum-bubble-lines":N,...d}:d,...y,children:[s&&a("div",{className:l.meta,children:s}),r("div",{className:o(l.bubble,l[c],l[`group_${g}`]),children:[a("div",{id:b,className:l.body,children:f}),t&&a("button",{type:"button",className:o(m.control,l.toggle),"aria-expanded":u,"aria-controls":b,onClick:()=>L(e=>!e),children:u?j??i("bubble.collapse"):v??i("bubble.expand")})]}),n&&n.length>0&&a("div",{className:l.reactions,role:"group","aria-label":i("bubble.reactions"),children:n.map(e=>r("button",{type:"button",className:o(m.control,l.reaction,e.active?l.reactionActive:""),onClick:e.onClick,"aria-pressed":e.active,"aria-label":e.count!=null&&e.count>0?`${e.emoji} ${e.count}`:e.emoji,children:[a("span",{"aria-hidden":!0,children:e.emoji}),e.count!=null&&e.count>0&&a("span",{className:l.reactionCount,children:e.count})]},e.emoji))})]})});p.displayName="Bubble";export{p as Bubble};
1
+ "use client";import{jsxs as r,jsx as a}from"react/jsx-runtime";import{forwardRef as w,useState as $,useId as B}from"react";import b from"../../styles/unstyledControl.module.css.js";import l from"./Bubble.module.css.js";import{cn as o}from"../../utils/cn.js";import{useLocale as S}from"../../locales/localeContext.js";import{ruSlice as A}from"../../locales/slices/bubble.ru.js";const E={bubble:A},p=w(function({children:f,variant:c="default",align:h,group:g="single",meta:s,reactions:n,collapsible:t=!1,collapsedLines:N=4,expandLabel:v,collapseLabel:x,className:j,style:u,...y},k){const{t:i}=S(E),[d,C]=$(!1),m=B(),L=h??(c==="outgoing"?"end":"start");return r("div",{ref:k,className:o(l.wrap,L==="end"?l.alignEnd:"",t?l.collapsible:"",j),style:t?{"--altum-bubble-lines":N,...u}:u,...y,children:[s&&a("div",{className:l.meta,children:s}),r("div",{className:o(l.bubble,l[c],l[`group_${g}`]),children:[a("div",{id:m,className:l.body,children:f}),t&&a("button",{type:"button",className:o(b.control,l.toggle),"aria-expanded":d,"aria-controls":m,onClick:()=>C(e=>!e),children:d?x??i("bubble.collapse"):v??i("bubble.expand")})]}),n&&n.length>0&&a("div",{className:l.reactions,role:"group","aria-label":i("bubble.reactions"),children:n.map(e=>r("button",{type:"button",className:o(b.control,l.reaction,e.active?l.reactionActive:""),onClick:e.onClick,"aria-pressed":e.active,"aria-label":e.count!=null&&e.count>0?`${e.emoji} ${e.count}`:e.emoji,children:[a("span",{"aria-hidden":!0,children:e.emoji}),e.count!=null&&e.count>0&&a("span",{className:l.reactionCount,children:e.count})]},e.emoji))})]})});p.displayName="Bubble";export{p as Bubble};
@@ -1 +1 @@
1
- "use client";import{injectCss as a}from"../../utils/injectCss.js";var r=".URvSq{align-items:flex-start;align-self:flex-start;display:flex;flex-direction:column;font-family:var(--altum-g-font-family-ui);gap:var(--altum-g-space-1);max-width:min(100%,420px)}.URvSq.hfCqn{align-items:flex-end;align-self:flex-end}.URvSq.hfCqn ._980gE{border-bottom-left-radius:var(--altum-g-radius-lg,12px);border-bottom-right-radius:var(--altum-g-radius-sm)}.URvSq.hfCqn .EDs9V{border-top-left-radius:var(--altum-g-radius-lg,12px);border-top-right-radius:var(--altum-g-radius-sm)}.URvSq.dmQu2:not(:has([aria-expanded=true])) .jHlUX{-webkit-box-orient:vertical;-webkit-line-clamp:var(--altum-bubble-lines,4);display:-webkit-box;overflow:hidden}.URvSq .rJQLB{color:var(--altum-field-label);font-size:var(--altum-g-font-size-xs);line-height:1.3;padding:0 var(--altum-g-space-2)}.URvSq .NBDS9{background-color:var(--altum-color-surface-active);border:1px solid #0000;border-radius:var(--altum-g-radius-lg,12px);box-sizing:border-box;color:var(--altum-color-input-text);min-width:0;padding:var(--altum-g-space-2) var(--altum-g-space-3);transition:var(--altum-transition-smooth)}.URvSq .eb1YB{background-color:var(--altum-color-brand-tint);border-color:var(--altum-color-brand-tint-border);color:var(--altum-color-brand-tint-text)}.URvSq ._7qOPo{background-color:initial;border-color:var(--altum-color-border);border-style:dashed;color:var(--altum-field-label);font-size:var(--altum-g-font-size-2xs);padding:var(--altum-g-space-1) var(--altum-g-space-3)}.URvSq ._980gE{border-bottom-left-radius:var(--altum-g-radius-sm)}.URvSq ._9mEAO{border-radius:var(--altum-g-radius-sm)}.URvSq .EDs9V{border-top-left-radius:var(--altum-g-radius-sm)}.URvSq .jHlUX{font-size:var(--altum-g-font-size-base);line-height:1.45;margin:0;white-space:pre-wrap;word-break:break-word}.URvSq .Omawa{color:var(--altum-color-brand-tint-text);font-size:var(--altum-g-font-size-2xs);font-weight:var(--altum-g-font-weight-semibold);margin:var(--altum-g-space-1) 0 0}:is(.URvSq .Omawa):hover:not(:disabled){text-decoration:underline}.URvSq ._7eiRp{flex-wrap:wrap;margin-top:var(--altum-control-inset)}.URvSq ._7eiRp,.URvSq .m9Win{display:inline-flex;gap:var(--altum-g-space-1)}.URvSq .m9Win{align-items:center;background:var(--altum-color-panel-bg);border:1px solid var(--altum-color-panel-border);border-radius:var(--altum-g-radius-pill);color:var(--altum-color-field-text);font-size:var(--altum-g-font-size-2xs);line-height:1;min-height:var(--altum-g-space-5);padding:0 var(--altum-g-space-2);transition:var(--altum-transition-smooth)}:is(.URvSq .m9Win):hover:not(:disabled){background:var(--altum-color-panel-bg-hover)}.URvSq .v8Uhm{background:var(--altum-color-brand-tint);border-color:var(--altum-color-brand-tint-border)}.URvSq .v8Uhm,:is(.URvSq .v8Uhm) ._5gpJy{color:var(--altum-color-brand-tint-text)}.URvSq ._5gpJy{color:var(--altum-field-label);font-weight:var(--altum-g-font-weight-semibold)}";const t={wrap:"URvSq",alignEnd:"hfCqn",group_first:"_980gE",group_last:"EDs9V",collapsible:"dmQu2",body:"jHlUX",meta:"rJQLB",bubble:"NBDS9",outgoing:"eb1YB",system:"_7qOPo",group_middle:"_9mEAO",toggle:"Omawa",reactions:"_7eiRp",reaction:"m9Win",reactionActive:"v8Uhm",reactionCount:"_5gpJy"};a(r);export{t as default};
1
+ "use client";import{injectCss as a}from"../../utils/injectCss.js";var r=".URvSq{align-items:flex-start;align-self:flex-start;display:flex;flex-direction:column;font-family:var(--altum-g-font-family-ui);gap:var(--altum-g-space-1);max-width:min(100%,420px)}.URvSq.hfCqn{align-items:flex-end;align-self:flex-end}.URvSq.hfCqn ._980gE{border-bottom-left-radius:var(--altum-g-radius-lg);border-bottom-right-radius:var(--altum-g-radius-sm)}.URvSq.hfCqn .EDs9V{border-top-left-radius:var(--altum-g-radius-lg);border-top-right-radius:var(--altum-g-radius-sm)}.URvSq.dmQu2:not(:has([aria-expanded=true])) .jHlUX{-webkit-box-orient:vertical;-webkit-line-clamp:var(--altum-bubble-lines,4);display:-webkit-box;overflow:hidden}.URvSq .rJQLB{color:var(--altum-field-label);font-size:var(--altum-g-font-size-xs);line-height:1.3;padding:0 var(--altum-g-space-2)}.URvSq .NBDS9{background-color:var(--altum-color-surface-active);border:1px solid #0000;border-radius:var(--altum-g-radius-lg);box-sizing:border-box;color:var(--altum-color-input-text);min-width:0;padding:var(--altum-g-space-2) var(--altum-g-space-3);transition:var(--altum-transition-smooth)}.URvSq .eb1YB{background-color:var(--altum-color-brand-tint);border-color:var(--altum-color-brand-tint-border);color:var(--altum-color-brand-tint-text)}.URvSq ._7qOPo{background-color:initial;border-color:var(--altum-color-border);border-style:dashed;color:var(--altum-field-label);font-size:var(--altum-g-font-size-2xs);padding:var(--altum-g-space-1) var(--altum-g-space-3)}.URvSq ._980gE{border-bottom-left-radius:var(--altum-g-radius-sm)}.URvSq ._9mEAO{border-radius:var(--altum-g-radius-sm)}.URvSq .EDs9V{border-top-left-radius:var(--altum-g-radius-sm)}.URvSq .jHlUX{font-size:var(--altum-g-font-size-base);line-height:var(--altum-g-line-height-base);margin:0;white-space:pre-wrap;word-break:break-word}.URvSq .Omawa{color:var(--altum-color-brand-tint-text);font-size:var(--altum-g-font-size-2xs);font-weight:var(--altum-g-font-weight-semibold);margin:var(--altum-g-space-1) 0 0}:is(.URvSq .Omawa):hover:not(:disabled){text-decoration:underline}.URvSq ._7eiRp{flex-wrap:wrap;margin-top:var(--altum-control-inset)}.URvSq ._7eiRp,.URvSq .m9Win{display:inline-flex;gap:var(--altum-g-space-1)}.URvSq .m9Win{align-items:center;background:var(--altum-color-panel-bg);border:1px solid var(--altum-color-panel-border);border-radius:var(--altum-g-radius-pill);color:var(--altum-color-field-text);font-size:var(--altum-g-font-size-2xs);line-height:1;min-height:var(--altum-g-space-5);padding:0 var(--altum-g-space-2);transition:var(--altum-transition-smooth)}:is(.URvSq .m9Win):hover:not(:disabled){background:var(--altum-color-panel-bg-hover)}.URvSq .v8Uhm{background:var(--altum-color-brand-tint);border-color:var(--altum-color-brand-tint-border)}.URvSq .v8Uhm,:is(.URvSq .v8Uhm) ._5gpJy{color:var(--altum-color-brand-tint-text)}.URvSq ._5gpJy{color:var(--altum-field-label);font-weight:var(--altum-g-font-weight-semibold)}";const t={wrap:"URvSq",alignEnd:"hfCqn",group_first:"_980gE",group_last:"EDs9V",collapsible:"dmQu2",body:"jHlUX",meta:"rJQLB",bubble:"NBDS9",outgoing:"eb1YB",system:"_7qOPo",group_middle:"_9mEAO",toggle:"Omawa",reactions:"_7eiRp",reaction:"m9Win",reactionActive:"v8Uhm",reactionCount:"_5gpJy"};a(r);export{t as default};
@@ -1 +1 @@
1
- "use client";import{jsxs as p,jsx as h}from"react/jsx-runtime";import{forwardRef as y}from"react";import{formatKeyboardShortcut as B,formatAriaKeyShortcuts as b}from"../../utils/keyboardShortcut.js";import{cn as N}from"../../utils/cn.js";import{ButtonBase as v}from"../../base/ButtonBase/ButtonBase.js";import o from"../../base/ButtonBase/ButtonBase.module.css.js";const i=y(function({iconStart:a,iconEnd:s,children:e,className:n,disabled:d,loading:r=!1,fullWidth:m,shortcut:t,title:l,...c},f){const u=t?B(t):"";return p(v,{ref:f,className:N(m&&o.fullWidth,n),disabled:d||r,"aria-keyshortcuts":t?b(t):void 0,title:l??(u||void 0),...c,"aria-busy":r||void 0,children:[r?h("span",{className:o.spin,"aria-hidden":!0}):a,e,s]})});i.displayName="Button";export{i as Button};
1
+ "use client";import{forwardRef as y,createElement as h}from"react";import t from"./Button.module.css.js";import k from"../../styles/textLink.module.css.js";import{cn as N}from"../../utils/cn.js";const l=y(function({variant:a="primary",size:o="md",active:n,className:s,children:f,type:m="button",disabled:d,as:p,prefix:c,postfix:u,loading:e=!1,fullWidth:b,...v},x){const i=p==="a",r=!!(d||e);return h(i?"a":"button",{ref:x,className:N(t.btn,t[a],o!=="md"&&a!=="link"&&t[o],a==="link"&&k.link,d&&!e&&t.off,b&&t.fullWidth,s),type:i?void 0:m,disabled:i?void 0:r,"aria-disabled":i&&r?!0:void 0,tabIndex:i&&r?-1:void 0,...v,"aria-pressed":n,"aria-busy":e||void 0},!e&&c,f,u)});l.displayName="Button";export{l as Button};
@@ -0,0 +1 @@
1
+ "use client";import{injectCss as t}from"../../utils/injectCss.js";var a='.Fx11X{--altum-btn-border:#0000;--altum-btn-text:inherit;--altum-btn-text-hover:var(--altum-btn-text);--altum-btn-bg:#0000;--altum-btn-bg-hover:var(--altum-btn-bg);--altum-btn-bg-active:var(--altum-btn-bg-hover);--altum-btn-shadow:0 0 0 0 #0000;--altum-btn-focus-ring:var(--altum-focus-ring-color);--altum-btn-height:var(--altum-control-height-md);--altum-btn-pad-x:var(--altum-g-space-5);--altum-btn-font-size:var(--altum-g-font-size-base);--altum-btn-icon-size:var(--altum-control-icon-size-md);align-items:center;appearance:none;background:var(--altum-btn-bg);border:1px solid var(--altum-btn-border);border-radius:var(--altum-g-radius);box-shadow:var(--altum-btn-shadow);box-sizing:border-box;color:var(--altum-btn-text);cursor:pointer;display:inline-flex;font-family:var(--altum-g-font-family-ui);font-size:var(--altum-btn-font-size);font-weight:var(--altum-g-font-weight-medium);gap:var(--altum-g-space-2);height:var(--altum-btn-height);justify-content:center;outline:none;padding:0 var(--altum-btn-pad-x);transition:var(--altum-transition-smooth);-webkit-user-select:none;user-select:none}.Fx11X svg{height:var(--altum-btn-icon-size);width:var(--altum-btn-icon-size)}.Fx11X._69HBo{color:color-mix(in srgb,var(--altum-btn-text) 48%,var(--altum-color-bg));cursor:not-allowed}.Fx11X._69HBo:not(._1KINV,.Zt5hw){background:color-mix(in srgb,var(--altum-btn-bg) 36%,var(--altum-color-surface));border-color:#0000;box-shadow:none}.Fx11X[aria-disabled=true]{pointer-events:none}.Fx11X[aria-busy=true]{cursor:progress}.Fx11X[aria-busy=true]:before{animation:JvkZu .75s linear infinite;border:2px solid;border-radius:50%;border-right:2px solid #0000;box-sizing:border-box;content:"";display:inline-block;height:var(--altum-btn-icon-size);width:var(--altum-btn-icon-size)}.Fx11X:not(:disabled,[aria-disabled=true]):hover{background-color:var(--altum-btn-bg-hover);color:var(--altum-btn-text-hover)}.Fx11X:not(:disabled,[aria-disabled=true]):active{background-color:var(--altum-btn-bg-active)}.Fx11X:focus-visible{box-shadow:var(--altum-btn-shadow),0 0 0 var(--altum-button-focus-inner) var(--altum-color-bg),0 0 0 var(--altum-button-focus-outer) var(--altum-btn-focus-ring)}.Fx11X:where(.NhG0g){--altum-btn-height:var(--altum-control-height-sm);--altum-btn-pad-x:var(--altum-g-space-3);--altum-btn-font-size:var(--altum-g-font-size-2xs);--altum-btn-icon-size:var(--altum-control-icon-size-sm)}.Fx11X:where(._2plQf){--altum-btn-height:var(--altum-control-height-lg);--altum-btn-pad-x:var(--altum-g-space-7);--altum-btn-font-size:var(--altum-g-font-size-lg);--altum-btn-icon-size:var(--altum-control-icon-size-lg)}.Fx11X.s1sM6{--altum-btn-border:var(--altum-color-button-border-primary);--altum-btn-text:var(--altum-color-brand-text);--altum-btn-bg:var(--altum-color-brand);--altum-btn-bg-hover:var(--altum-color-brand-hover);--altum-btn-bg-active:var(--altum-color-brand-active);--altum-btn-shadow:var(--altum-shadow-brand)}.Fx11X.fahpj{--altum-btn-border:var(--altum-color-button-tinted-border);--altum-btn-text:var(--altum-color-button-tinted-text);--altum-btn-bg:var(--altum-color-button-tinted-bg);--altum-btn-bg-hover:var(--altum-color-button-tinted-bg-hover);--altum-btn-bg-active:var(--altum-color-button-tinted-bg-active)}.Fx11X.R0waJ{--altum-btn-border:var(--altum-color-button-secondary-border);--altum-btn-text:var(--altum-color-button-secondary-text);--altum-btn-bg:var(--altum-color-button-secondary-bg);--altum-btn-bg-hover:var(--altum-color-button-secondary-bg-hover);--altum-btn-bg-active:var(--altum-color-button-secondary-bg-active);--altum-btn-shadow:var(--altum-color-button-secondary-shadow)}.Fx11X.V4fX8{--altum-btn-border:var(--altum-color-button-border-danger);--altum-btn-text:var(--altum-color-danger-text);--altum-btn-bg:var(--altum-color-danger-bg-solid);--altum-btn-bg-hover:var(--altum-color-danger-bg-hover);--altum-btn-bg-active:var(--altum-color-danger-bg-active);--altum-btn-shadow:var(--altum-color-danger-shadow)}.Fx11X.U-Isv{--altum-btn-border:var(--altum-color-button-border-danger-tinted);--altum-btn-text:var(--altum-color-danger-tint-text);--altum-btn-text-hover:var(--altum-color-danger-text-secondary-hover);--altum-btn-bg:var(--altum-color-danger-tint-bg);--altum-btn-bg-hover:var(--altum-color-danger-tint-bg-hover);--altum-btn-bg-active:var(--altum-color-danger-tint-bg-active)}.Fx11X.U-Isv,.Fx11X.V4fX8{--altum-btn-focus-ring:var(--altum-color-danger-bg-solid)}.Fx11X._1KINV{--altum-btn-text:var(--altum-color-button-ghost-text);--altum-btn-text-hover:var(--altum-color-button-ghost-text-hover);--altum-btn-bg-hover:var(--altum-color-button-ghost-hover-bg);--altum-btn-bg-active:var(--altum-color-button-ghost-active-bg)}.Fx11X.Zt5hw{--altum-btn-text:var(--altum-color-link-color);--altum-btn-text-hover:var(--altum-color-link-color-hover);align-self:center;border:none;border-radius:var(--altum-g-radius-sm);font-weight:var(--altum-g-font-weight-normal);height:auto;padding:0}.Fx11X.Zt5hw:not(:disabled,[aria-disabled=true]):active{color:var(--altum-color-link-color-hover)}.Fx11X[aria-pressed=false]{background-color:initial;border-color:#0000;box-shadow:none;opacity:.75}.Fx11X[aria-pressed=false]:not(:disabled,[aria-disabled=true]):hover{opacity:1}.Fx11X._36oJT{display:flex;width:100%}@media (prefers-reduced-motion:reduce){.Fx11X[aria-busy=true]:before{animation:none;border-right-color:initial;opacity:.55}}@keyframes JvkZu{to{transform:rotate(1turn)}}';const r={btn:"Fx11X",off:"_69HBo",ghost:"_1KINV",link:"Zt5hw",spin:"JvkZu",sm:"NhG0g",lg:"_2plQf",primary:"s1sM6",tinted:"fahpj",secondary:"R0waJ",danger:"V4fX8",danger_tinted:"U-Isv",fullWidth:"_36oJT"};t(a);export{r as default};
@@ -1 +1 @@
1
- "use client";import{jsx as S,jsxs as _}from"react/jsx-runtime";import $,{forwardRef as U,useRef as Y,useState as J,useCallback as Q,useMemo as X,useLayoutEffect as Z,useId as ee,createContext as te}from"react";import oe from"../../styles/unstyledControl.module.css.js";import t from"./ButtonGroup.module.css.js";import{cn as D}from"../../utils/cn.js";import{composeEventHandlers as G}from"../../utils/composeEvents.js";import{composeRefs as re}from"../../utils/composeRefs.js";import{useControlledStateWithCallback as ae}from"../../hooks/useControlledState.js";import{useLocale as ue}from"../../locales/localeContext.js";import{useRequiredContext as le}from"../../hooks/useRequiredContext.js";import{useRovingList as ie,ROVING_ITEM_ATTR as j}from"../../hooks/useRovingList.js";import{useTrackThumb as se}from"../../hooks/useTrackThumb.js";import{controlTrackClassName as de}from"../../utils/controlTrack.js";const M="data-button-group-value",V=te(null);function ne(r,e,i,d){return r==="button"||i==null?!!d:r==="toggle"?e===i:Array.isArray(e)&&e.includes(i)}const L=U(function({children:r,mode:e="button",variant:i="secondary",status:d="default",size:y="md",disabled:o=!1,readOnly:C=!1,borderless:A=!1,focusable:n=!0,width:F="auto",itemFit:N="equal",value:m,defaultValue:g,onChange:O,activateOnFocus:c=!0,"aria-label":v,className:I,onKeyDown:k,...h},E){const{t:f}=ue(),s=Y(null),[R,T]=J(null),l=C&&!o,H=e==="multi_toggle"?[]:"",[b,w]=ae(m,g??H,O),x=Q(a=>{if(o||l||e==="button")return;if(e==="toggle"){w(a);return}const u=Array.isArray(b)?b:[];w(u.includes(a)?u.filter(p=>p!==a):[...u,a])},[o,l,e,b,w]),K=X(()=>({mode:e,disabled:o,readOnly:l,focusable:n,selected:b,selectItem:x,focusedId:R,setFocusedId:T}),[o,n,R,l,e,x,b]),B=e==="toggle",q=se(s,B?`.${t.itemActive}`:"",b),P=ie("horizontal",a=>{if(T(a.dataset.itemId??""),e==="toggle"&&c){const u=a.getAttribute(M);u&&x(u)}});return Z(()=>{if(!n||o||l)return;const a=s.current;if(!a)return;const u=Array.from(a.querySelectorAll(`[${j}]:not([disabled])`));u.length!==0&&T(p=>p&&u.some(W=>W.dataset.itemId===p)?p:u[0].dataset.itemId??p)},[r,o,n,l]),S(V.Provider,{value:K,children:_("div",{ref:re(E,s),className:D(t.group,de(i,{readOnly:l}),t[i]??"",y!=="md"&&t[y],B&&t.modeToggle,d==="danger"&&t.statusDanger,A&&t.borderless,o&&t.disabled,F==="full"&&t.widthFull,N==="content"&&t.fitContent,I),...h,role:e==="toggle"?"radiogroup":"group","aria-label":v??f("buttonGroup.ariaLabel"),"aria-readonly":l||void 0,"aria-disabled":o||void 0,onKeyDown:G(k,n&&!o&&!l?P:void 0),children:[B&&S("div",{className:D(t.slider,q.ready&&t.sliderReady),style:q.style,"aria-hidden":"true"}),r]})})}),z=$.forwardRef(function({value:r,active:e,icon:i,children:d,disabled:y=!1,className:o,onClick:C,onFocus:A,"aria-label":n,...F},N){const m=ee(),{mode:g,disabled:O,readOnly:c,focusable:v,selected:I,selectItem:k,focusedId:h,setFocusedId:E}=le(V,"ButtonGroup.Item \u0434\u043E\u043B\u0436\u0435\u043D \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C\u0441\u044F \u0432\u043D\u0443\u0442\u0440\u0438 ButtonGroup"),f=O||y,s=ne(g,I,r,e),R=!v||f||c?!1:g==="toggle"?s||I===""&&h===m:h===m;return _("button",{ref:N,type:"button",...F,[j]:"",...r!=null?{[M]:r}:{},"data-item-id":m,className:D(oe.control,t.item,s&&t.itemActive,c&&t.itemReadOnly,o),"aria-label":n??(typeof d=="string"?d:void 0),disabled:f,"aria-disabled":c||void 0,tabIndex:R?0:-1,...g==="toggle"?{role:"radio","aria-checked":s}:{"aria-pressed":s||void 0},onFocus:G(A,()=>{v&&!f&&!c&&E(m)}),onClick:G(C,()=>{f||c||r==null||k(r)}),children:[i,d]})});L.displayName="ButtonGroup",z.displayName="ButtonGroup.Item";const ce=Object.assign(L,{Root:L,Item:z});export{ce as ButtonGroup};
1
+ "use client";import{jsx as q,jsxs as _}from"react/jsx-runtime";import{getFormControlState as H}from"../../utils/formControl.js";import J,{forwardRef as U,useRef as Q,useState as X,useCallback as Y,useMemo as Z,useLayoutEffect as ee,useId as te,createContext as oe}from"react";import re from"../../styles/unstyledControl.module.css.js";import e from"./ButtonGroup.module.css.js";import{cn as D}from"../../utils/cn.js";import{composeEventHandlers as S}from"../../utils/composeEvents.js";import{composeRefs as ae}from"../../utils/composeRefs.js";import{useControlledStateWithCallback as ue}from"../../hooks/useControlledState.js";import{useLocale as le}from"../../locales/localeContext.js";import{useRequiredContext as se}from"../../hooks/useRequiredContext.js";import{useRovingList as ie,ROVING_ITEM_ATTR as j}from"../../hooks/useRovingList.js";import{useTrackThumb as de}from"../../hooks/useTrackThumb.js";import{ruSlice as ne}from"../../locales/slices/buttonGroup.ru.js";const ce={buttonGroup:ne},M="data-button-group-value",V=oe(null);function me(r,t,i,d){return r==="button"||i==null?!!d:r==="toggle"?t===i:Array.isArray(t)&&t.includes(i)}const T=U(function({children:r,mode:t="button",variant:i="secondary",status:d="default",size:y="md",disabled:o=!1,readOnly:C=!1,borderless:F=!1,focusable:n=!0,width:A="auto",itemFit:O="equal",value:m,defaultValue:g,onChange:G,activateOnFocus:c=!0,"aria-label":v,className:I,onKeyDown:N,...h},k){const{t:f}=le(ce),s=Q(null),[R,w]=X(null),{isReadOnly:l}=H({disabled:o,readOnly:C}),K=t==="multi_toggle"?[]:"",[b,E]=ue(m,g??K,G),x=Y(a=>{if(o||l||t==="button")return;if(t==="toggle"){E(a);return}const u=Array.isArray(b)?b:[];E(u.includes(a)?u.filter(p=>p!==a):[...u,a])},[o,l,t,b,E]),P=Z(()=>({mode:t,disabled:o,readOnly:l,focusable:n,selected:b,selectItem:x,focusedId:R,setFocusedId:w}),[o,n,R,l,t,x,b]),B=t==="toggle",L=de(s,B?`.${e.itemActive}`:"",b),W=ie("horizontal",a=>{if(w(a.dataset.itemId??""),t==="toggle"&&c){const u=a.getAttribute(M);u&&x(u)}});return ee(()=>{if(!n||o||l)return;const a=s.current;if(!a)return;const u=Array.from(a.querySelectorAll(`[${j}]:not([disabled])`));u.length!==0&&w(p=>p&&u.some($=>$.dataset.itemId===p)?p:u[0].dataset.itemId??p)},[r,o,n,l]),q(V.Provider,{value:P,children:_("div",{ref:ae(k,s),className:D(e.group,e[i]??"",y!=="md"&&e[y],B&&e.modeToggle,d==="danger"&&e.statusDanger,F&&e.borderless,o&&e.disabled,l&&e.readOnly,A==="full"&&e.widthFull,O==="content"&&e.fitContent,I),...h,role:t==="toggle"?"radiogroup":"group","aria-label":v??f("buttonGroup.ariaLabel"),"aria-readonly":l||void 0,"aria-disabled":o||void 0,onKeyDown:S(N,n&&!o&&!l?W:void 0),children:[B&&q("div",{className:D(e.slider,L.ready&&e.sliderReady),style:L.style,"data-track-thumb":"","aria-hidden":"true"}),r]})})}),z=J.forwardRef(function({value:r,active:t,icon:i,children:d,disabled:y=!1,className:o,onClick:C,onFocus:F,"aria-label":n,...A},O){const m=te(),{mode:g,disabled:G,readOnly:c,focusable:v,selected:I,selectItem:N,focusedId:h,setFocusedId:k}=se(V,"ButtonGroup.Item \u0434\u043E\u043B\u0436\u0435\u043D \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C\u0441\u044F \u0432\u043D\u0443\u0442\u0440\u0438 ButtonGroup"),f=G||y,s=me(g,I,r,t),R=!v||f||c?!1:g==="toggle"?s||I===""&&h===m:h===m;return _("button",{ref:O,type:"button",...A,[j]:"",...r!=null?{[M]:r}:{},"data-item-id":m,className:D(re.control,e.item,s&&e.itemActive,c&&e.itemReadOnly,o),"aria-label":n??(typeof d=="string"?d:void 0),disabled:f,"aria-disabled":c||void 0,tabIndex:R?0:-1,...g==="toggle"?{role:"radio","aria-checked":s}:{"aria-pressed":s||void 0},onFocus:S(F,()=>{v&&!f&&!c&&k(m)}),onClick:S(C,()=>{f||c||r==null||N(r)}),children:[i,d]})});T.displayName="ButtonGroup",z.displayName="ButtonGroup.Item";const fe=Object.assign(T,{Root:T,Item:z});export{fe as ButtonGroup};
@@ -1 +1 @@
1
- "use client";import{injectCss as t}from"../../utils/injectCss.js";var a=".Tgazn{--altum-button-group-spring:linear(0,0.009,0.035,0.076,0.129,0.192,0.264,0.341,0.421,0.503,0.583,0.661,0.734,0.801,0.86,0.91,0.951,0.981,1.002,1.014,1.019,1.019,1.016,1.011,1.006,1.001,0.997,0.995,0.994,0.995,0.996,0.998,1,1);--altum-button-group-height:var(--altum-control-height-md);--altum-button-group-pad:var(--altum-control-inset);--altum-button-group-font-size:var(--altum-g-font-size-base);--altum-button-group-item-min:var(--altum-button-group-item-min-md);--altum-button-group-item-pad:var(--altum-g-space-2);--altum-button-group-icon-size:var(--altum-control-icon-size-md);--altum-bg-thumb:var(--altum-color-surface-active);--altum-bg-thumb-shadow:var(--altum-color-segmented-slider-shadow);--altum-fg-item:var(--altum-color-type-secondary);--altum-fg-item-on:var(--altum-color-type);--altum-bg-item-hover:var(--altum-color-surface-hover);align-items:stretch;border-radius:var(--altum-g-radius);box-sizing:border-box;display:inline-flex;font-size:var(--altum-button-group-font-size);gap:var(--altum-g-space-1);height:var(--altum-button-group-height);max-width:100%;padding:var(--altum-button-group-pad);position:relative;transition:var(--altum-transition-smooth);vertical-align:middle}.Tgazn.rss-L{--altum-fg-item:var(--altum-color-brand-text);--altum-fg-item-on:var(--altum-color-brand-text);--altum-bg-item-hover:color-mix(in srgb,var(--altum-g-color-black) 16%,var(--altum-color-brand));--altum-bg-thumb:var(--altum-color-brand-active);--altum-bg-thumb-shadow:inset 0 0 0 1px var(--altum-color-brand-border)}.Tgazn.j78gV.rss-L{--altum-fg-item:color-mix(in srgb,var(--altum-color-brand-text) 72%,#0000)}.Tgazn._3VCs2{--altum-bg-item-hover:color-mix(in srgb,var(--altum-color-brand) 28%,#0000);--altum-bg-thumb:var(--altum-color-button-tinted-bg-active);--altum-bg-thumb-shadow:inset 0 0 0 1px var(--altum-color-button-tinted-border)}.Tgazn.g1MNC{--altum-bg-item-hover:color-mix(in srgb,var(--altum-color-text-secondary) 12%,#0000);--altum-bg-thumb:color-mix(in srgb,var(--altum-color-text-secondary) 18%,var(--altum-color-surface))}.Tgazn.Ep0ha,.Tgazn.dfR5t,.Tgazn.zBpYa{--altum-fg-item:var(--altum-color-button-ghost-text);--altum-fg-item-on:var(--altum-color-button-ghost-text-hover);--altum-bg-item-hover:var(--altum-color-button-ghost-hover-bg);--altum-bg-thumb:var(--altum-color-segmented-ghost-slider-bg)}.Tgazn.dfR5t,.Tgazn.zBpYa{gap:0;padding:0}.Tgazn.zBpYa .otlEF{bottom:0;top:0}.Tgazn.f5kUO{border:none}.Tgazn.noOCG{--altum-fg-item:var(--altum-color-danger-text);--altum-fg-item-on:var(--altum-color-danger-text);--altum-bg-thumb:var(--altum-color-danger-bg-hover);--altum-bg-thumb-shadow:var(--altum-color-danger-shadow)}.Tgazn.noOCG.rss-L{background-color:var(--altum-color-danger-bg-solid);box-shadow:var(--altum-color-danger-shadow)}.Tgazn.noOCG._3VCs2,.Tgazn.noOCG.g1MNC{--altum-fg-item:var(--altum-color-danger-text-secondary);--altum-fg-item-on:var(--altum-color-danger-text-secondary-hover);--altum-bg-thumb:var(--altum-color-danger-bg-secondary-hover);--altum-bg-thumb-shadow:var(--altum-color-danger-shadow-secondary);background-color:var(--altum-color-danger-bg-secondary);border-color:var(--altum-color-button-border-danger-secondary)}.Tgazn.noOCG.Ep0ha,.Tgazn.noOCG.dfR5t{--altum-fg-item:var(--altum-color-danger-text-secondary);--altum-fg-item-on:var(--altum-color-danger-text-secondary-hover);border-color:var(--altum-color-button-border-danger-secondary)}.Tgazn.TCMDW{display:flex;width:100%}.Tgazn.TCMDW>._-1Y6t{flex:1 1 0;min-width:0}.Tgazn.hRI2x{--altum-button-group-height:var(--altum-control-height-sm);--altum-button-group-font-size:var(--altum-g-font-size-2xs);--altum-button-group-item-min:var(--altum-button-group-item-min-sm);--altum-button-group-item-pad:var(--altum-g-space-1);--altum-button-group-icon-size:var(--altum-control-icon-size-sm)}.Tgazn._4FjZc{--altum-button-group-height:var(--altum-control-height-lg);--altum-button-group-pad:var(--altum-g-space-1);--altum-button-group-font-size:var(--altum-g-font-size-lg);--altum-button-group-item-min:var(--altum-button-group-item-min-lg);--altum-button-group-item-pad:var(--altum-g-space-3);--altum-button-group-icon-size:var(--altum-control-icon-size-lg)}.Tgazn._73VqR{cursor:not-allowed;opacity:var(--altum-opacity-disabled)}.Tgazn.j78gV{gap:var(--altum-control-inset)}.Tgazn.j78gV ._-1Y6t{overflow:hidden}:is(.Tgazn.j78gV ._-1Y6t):hover:not(:disabled):not(.nQoWy){background-color:var(--altum-bg-item-hover)}.nQoWy:is(.Tgazn.j78gV ._-1Y6t){background:#0000;box-shadow:none}:is(.Tgazn.j78gV ._-1Y6t):active:not(:disabled){transform:scale(.98)}.Tgazn.j78gV.hRI2x ._-1Y6t{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.Tgazn.j78gV._4FjZc ._-1Y6t{-webkit-box-orient:vertical;-webkit-line-clamp:2;display:-webkit-box;overflow:hidden;text-overflow:ellipsis;white-space:normal}.Tgazn.yscI->._-1Y6t{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:auto}._-1Y6t{align-items:center;align-self:stretch;border-radius:calc(var(--altum-g-radius) - 2px);color:var(--altum-fg-item);display:inline-flex;font-size:var(--altum-button-group-font-size);font-weight:var(--altum-g-font-weight-medium,500);gap:var(--altum-g-space-1);height:100%;justify-content:center;line-height:1;min-height:0;min-width:var(--altum-button-group-item-min);padding:0 var(--altum-button-group-item-pad);position:relative;white-space:nowrap;z-index:var(--altum-g-z-raised-above)}._-1Y6t:hover:not(:disabled){background-color:var(--altum-bg-item-hover);color:var(--altum-fg-item-on)}._-1Y6t:disabled{opacity:var(--altum-opacity-disabled)}._-1Y6t svg{flex-shrink:0;height:var(--altum-button-group-icon-size);width:var(--altum-button-group-icon-size)}.nQoWy{background-color:var(--altum-bg-thumb);box-shadow:var(--altum-bg-thumb-shadow);color:var(--altum-fg-item-on)}.ZOyZ9{cursor:default}.otlEF{background-color:var(--altum-bg-thumb);border-radius:calc(var(--altum-g-radius) - 2px);bottom:var(--altum-button-group-pad);box-shadow:var(--altum-bg-thumb-shadow);left:0;pointer-events:none;position:absolute;top:var(--altum-button-group-pad);transition:none;z-index:var(--altum-g-z-raised)}.otlEF.hd-IQ{transition:transform .45s var(--altum-button-group-spring),width .45s var(--altum-button-group-spring)}@media (prefers-reduced-motion:reduce){.otlEF.hd-IQ{transition:none}.j78gV ._-1Y6t:active:not(:disabled){transform:none}}";const o={group:"Tgazn",primary:"rss-L",modeToggle:"j78gV",tinted:"_3VCs2",secondary:"g1MNC",ghost:"Ep0ha",link:"dfR5t",plain:"zBpYa",slider:"otlEF",borderless:"f5kUO",statusDanger:"noOCG",widthFull:"TCMDW",item:"_-1Y6t",sm:"hRI2x",lg:"_4FjZc",disabled:"_73VqR",itemActive:"nQoWy",fitContent:"yscI-",itemReadOnly:"ZOyZ9",sliderReady:"hd-IQ"};t(a);export{o as default};
1
+ "use client";import{injectCss as t}from"../../utils/injectCss.js";var a=".Tgazn{--altum-button-group-spring:linear(0,0.009,0.035,0.076,0.129,0.192,0.264,0.341,0.421,0.503,0.583,0.661,0.734,0.801,0.86,0.91,0.951,0.981,1.002,1.014,1.019,1.019,1.016,1.011,1.006,1.001,0.997,0.995,0.994,0.995,0.996,0.998,1,1);--altum-button-group-height:var(--altum-control-height-md);--altum-button-group-pad:var(--altum-control-inset);--altum-button-group-font-size:var(--altum-g-font-size-base);--altum-button-group-item-min:var(--altum-button-group-item-min-md);--altum-button-group-item-pad:var(--altum-g-space-2);--altum-button-group-icon-size:var(--altum-control-icon-size-md);--altum-bg-thumb:var(--altum-color-surface-active);--altum-bg-thumb-shadow:var(--altum-color-segmented-slider-shadow);--altum-fg-item:var(--altum-color-type-secondary);--altum-fg-item-on:var(--altum-color-type);--altum-bg-item-hover:var(--altum-color-surface-hover);align-items:stretch;border-radius:var(--altum-g-radius);box-sizing:border-box;display:inline-flex;font-size:var(--altum-button-group-font-size);gap:var(--altum-g-space-1);height:var(--altum-button-group-height);max-width:100%;padding:var(--altum-button-group-pad);position:relative;transition:var(--altum-transition-smooth);vertical-align:middle}.Tgazn.rss-L{--altum-fg-item:var(--altum-color-brand-text);--altum-fg-item-on:var(--altum-color-brand-text);--altum-bg-item-hover:color-mix(in srgb,var(--altum-g-color-black) 16%,var(--altum-color-brand));--altum-bg-thumb:var(--altum-color-brand-active);--altum-bg-thumb-shadow:inset 0 0 0 1px var(--altum-color-brand-border);background-color:var(--altum-color-brand);border:1px solid #0000;box-shadow:var(--altum-shadow-brand)}.Tgazn.j78gV.rss-L{--altum-fg-item:color-mix(in srgb,var(--altum-color-brand-text) 72%,#0000)}.Tgazn._3VCs2{--altum-bg-item-hover:color-mix(in srgb,var(--altum-color-brand) 28%,#0000);--altum-bg-thumb:var(--altum-color-button-tinted-bg-active);--altum-bg-thumb-shadow:inset 0 0 0 1px var(--altum-color-button-tinted-border);background-color:var(--altum-color-button-tinted-bg);border:1px solid var(--altum-color-button-tinted-border);box-shadow:none}.Tgazn.g1MNC{--altum-bg-item-hover:color-mix(in srgb,var(--altum-color-text-secondary) 12%,#0000);--altum-bg-thumb:color-mix(in srgb,var(--altum-color-text-secondary) 18%,var(--altum-color-surface));background-color:var(--altum-color-button-secondary-bg);border:1px solid var(--altum-color-button-secondary-border);box-shadow:none}.Tgazn.Ep0ha,.Tgazn.dfR5t,.Tgazn.zBpYa{--altum-fg-item:var(--altum-color-button-ghost-text);--altum-fg-item-on:var(--altum-color-button-ghost-text-hover);--altum-bg-item-hover:var(--altum-color-button-ghost-hover-bg);--altum-bg-thumb:var(--altum-color-segmented-ghost-slider-bg)}.Tgazn.Ep0ha{border:1px solid var(--altum-color-button-secondary-border)}.Tgazn.Ep0ha,.Tgazn.dfR5t,.Tgazn.zBpYa{background-color:initial;box-shadow:none}.Tgazn.dfR5t,.Tgazn.zBpYa{border:1px solid #0000;gap:0;padding:0}.Tgazn.zBpYa .otlEF{bottom:0;top:0}.Tgazn.f5kUO{border:none}.Tgazn.uDoMb{background-color:var(--altum-field-bg-readonly);border:1px dashed var(--altum-field-border-readonly);box-shadow:none;cursor:default}.Tgazn.noOCG{--altum-fg-item:var(--altum-color-danger-text);--altum-fg-item-on:var(--altum-color-danger-text);--altum-bg-thumb:var(--altum-color-danger-bg-hover);--altum-bg-thumb-shadow:var(--altum-color-danger-shadow)}.Tgazn.noOCG.rss-L{background-color:var(--altum-color-danger-bg-solid);box-shadow:var(--altum-color-danger-shadow)}.Tgazn.noOCG._3VCs2,.Tgazn.noOCG.g1MNC{--altum-fg-item:var(--altum-color-danger-text-secondary);--altum-fg-item-on:var(--altum-color-danger-text-secondary-hover);--altum-bg-thumb:var(--altum-color-danger-bg-secondary-hover);--altum-bg-thumb-shadow:var(--altum-color-danger-shadow-secondary);background-color:var(--altum-color-danger-bg-secondary);border-color:var(--altum-color-button-border-danger-secondary)}.Tgazn.noOCG.Ep0ha,.Tgazn.noOCG.dfR5t{--altum-fg-item:var(--altum-color-danger-text-secondary);--altum-fg-item-on:var(--altum-color-danger-text-secondary-hover);border-color:var(--altum-color-button-border-danger-secondary)}.Tgazn.TCMDW{display:flex;width:100%}.Tgazn.TCMDW>._-1Y6t{flex:1 1 0;min-width:0}.Tgazn.hRI2x{--altum-button-group-height:var(--altum-control-height-sm);--altum-button-group-font-size:var(--altum-g-font-size-2xs);--altum-button-group-item-min:var(--altum-button-group-item-min-sm);--altum-button-group-item-pad:var(--altum-g-space-1);--altum-button-group-icon-size:var(--altum-control-icon-size-sm)}.Tgazn._4FjZc{--altum-button-group-height:var(--altum-control-height-lg);--altum-button-group-pad:var(--altum-g-space-1);--altum-button-group-font-size:var(--altum-g-font-size-lg);--altum-button-group-item-min:var(--altum-button-group-item-min-lg);--altum-button-group-item-pad:var(--altum-g-space-3);--altum-button-group-icon-size:var(--altum-control-icon-size-lg)}.Tgazn._73VqR{cursor:not-allowed;opacity:var(--altum-opacity-disabled)}.Tgazn.j78gV{gap:var(--altum-control-inset)}.Tgazn.j78gV ._-1Y6t{overflow:hidden}:is(.Tgazn.j78gV ._-1Y6t):hover:not(:disabled):not(.nQoWy){background-color:var(--altum-bg-item-hover)}.nQoWy:is(.Tgazn.j78gV ._-1Y6t){background:#0000;box-shadow:none}:is(.Tgazn.j78gV ._-1Y6t):active:not(:disabled){transform:scale(.98)}.Tgazn.j78gV.hRI2x ._-1Y6t{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.Tgazn.j78gV._4FjZc ._-1Y6t{-webkit-box-orient:vertical;-webkit-line-clamp:2;display:-webkit-box;overflow:hidden;text-overflow:ellipsis;white-space:normal}.Tgazn.yscI->._-1Y6t{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:auto}._-1Y6t{align-items:center;align-self:stretch;border-radius:calc(var(--altum-g-radius) - var(--altum-control-inset));color:var(--altum-fg-item);display:inline-flex;font-size:var(--altum-button-group-font-size);font-weight:var(--altum-g-font-weight-medium,500);gap:var(--altum-g-space-1);height:100%;justify-content:center;line-height:1;min-height:0;min-width:var(--altum-button-group-item-min);padding:0 var(--altum-button-group-item-pad);position:relative;white-space:nowrap;z-index:var(--altum-g-z-raised-above)}._-1Y6t:hover:not(:disabled){background-color:var(--altum-bg-item-hover);color:var(--altum-fg-item-on)}._-1Y6t:disabled{opacity:var(--altum-opacity-disabled)}._-1Y6t svg{flex-shrink:0;height:var(--altum-button-group-icon-size);width:var(--altum-button-group-icon-size)}.nQoWy{background-color:var(--altum-bg-thumb);box-shadow:var(--altum-bg-thumb-shadow);color:var(--altum-fg-item-on)}.ZOyZ9{cursor:default}.otlEF{background-color:var(--altum-bg-thumb);border-radius:calc(var(--altum-g-radius) - var(--altum-control-inset));bottom:var(--altum-button-group-pad);box-shadow:var(--altum-bg-thumb-shadow);left:0;pointer-events:none;position:absolute;top:var(--altum-button-group-pad);transition:none;z-index:var(--altum-g-z-raised)}.otlEF.hd-IQ{transition:transform .45s var(--altum-button-group-spring),width .45s var(--altum-button-group-spring)}@media (prefers-reduced-motion:reduce){.otlEF.hd-IQ{transition:none}.j78gV ._-1Y6t:active:not(:disabled){transform:none}}";const o={group:"Tgazn",primary:"rss-L",modeToggle:"j78gV",tinted:"_3VCs2",secondary:"g1MNC",ghost:"Ep0ha",link:"dfR5t",plain:"zBpYa",slider:"otlEF",borderless:"f5kUO",readOnly:"uDoMb",statusDanger:"noOCG",widthFull:"TCMDW",item:"_-1Y6t",sm:"hRI2x",lg:"_4FjZc",disabled:"_73VqR",itemActive:"nQoWy",fitContent:"yscI-",itemReadOnly:"ZOyZ9",sliderReady:"hd-IQ"};t(a);export{o as default};
@@ -1 +1 @@
1
- "use client";import{jsx as f}from"react/jsx-runtime";import{forwardRef as p}from"react";import u from"../../styles/overlayClose.module.css.js";import{cn as d}from"../../utils/cn.js";import{ButtonBase as h}from"../../base/ButtonBase/ButtonBase.js";import t from"../../base/ButtonBase/ButtonBase.module.css.js";const e=p(function({variant:r="ghost",shape:n="square",appearance:c="default",icon:i,children:a,className:s,...m},l){const o=c==="diskClose";return f(h,{ref:l,variant:o?"ghost":r,className:d(o?u.close:r==="link"?"":t.icon,!o&&n==="circle"&&t.circle,s),...m,children:i??a})});e.displayName="ButtonIcon";export{e as ButtonIcon};
1
+ "use client";import{jsx as d}from"react/jsx-runtime";import{forwardRef as h,isValidElement as N,cloneElement as B}from"react";import{Button as g}from"../Button/Button.js";import n from"../../styles/overlayClose.module.css.js";import i from"./ButtonIcon.module.css.js";import{cn as a}from"../../utils/cn.js";function k(r){if(!N(r))return r;const e=r;return B(e,{className:a(n.icon,e.props.className),"aria-hidden":!0})}const c=h(function({variant:r="ghost",shape:e="square",appearance:s="default",icon:m,children:l,className:f,...p},u){const o=s==="diskClose",t=m??l;return d(g,{ref:u,variant:o?"ghost":r,className:a(o?n.close:r==="link"?"":i.root,!o&&e==="circle"&&i.circle,f),...p,children:o?k(t):t})});c.displayName="ButtonIcon";export{c as ButtonIcon};
@@ -0,0 +1 @@
1
+ "use client";import{injectCss as t}from"../../utils/injectCss.js";var a=".omUD9{--altum-btn-pad-x:0;aspect-ratio:1;width:auto}.omUD9 svg{transform:translateY(.5px)}.omUD9.z-iaD{border-radius:50%}";const o={root:"omUD9",circle:"z-iaD"};t(a);export{o as default};
@@ -0,0 +1 @@
1
+ "use client";import{jsx as o}from"react/jsx-runtime";import{forwardRef as n}from"react";import{IconCross as m}from"../../icons/icons/IconCross.js";import{useLocale as l}from"../../locales/localeContext.js";import{ButtonIcon as s}from"./ButtonIcon.js";import{ruSlice as c}from"../../locales/slices/common.ru.js";const f={common:c},r=n(function({"aria-label":e,...t},a){const{t:i}=l(f);return o(s,{ref:a,appearance:"diskClose","aria-label":e??i("common.close"),icon:o(m,{size:"var(--altum-overlay-close-icon-size)","aria-hidden":!0}),...t})});r.displayName="OverlayCloseButton";export{r as OverlayCloseButton};
@@ -1 +1 @@
1
- "use client";import{jsx as R}from"react/jsx-runtime";import{useState as g,createContext as V}from"react";import{useRequiredContext as S}from"../../hooks/useRequiredContext.js";import{buildMonthDays as b}from"./Calendar.utils.js";import{YEARS_PER_PAGE as h}from"./Calendar.types.js";const w=V(null);function A(n){return S(w,`${n} \u0434\u043E\u043B\u0436\u0435\u043D \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C\u0441\u044F \u0432\u043D\u0443\u0442\u0440\u0438 Calendar.Provider`)}function l(n){return Math.floor(n/h)*h}const B={};function _(n){return n!=null&&!(n instanceof Date)}const y=({selectionMode:n="single",value:u,onChange:f,viewDate:s,onViewDateChange:p,renderDayCell:M,children:P})=>{const d=n==="range"&&_(u)?u:B,m=n==="single"&&u instanceof Date?u:void 0,v=s??m??d.end??d.start??new Date,[x,E]=g(v),[c,C]=g("days"),[F,o]=g(()=>l(v.getFullYear())),D=s??x,t=D.getFullYear(),r=D.getMonth(),a=e=>{s===void 0&&E(e),p?.(e)},Y=e=>{if(c==="days"){a(new Date(t,r+e,1));return}if(c==="months"){const i=new Date(t+e,r,1);a(i),o(l(i.getFullYear()));return}o(i=>i+e*h)};return R(w.Provider,{value:{selectionMode:n,value:m,onChange:e=>f?.(e),rangeValue:d,onRangeChange:e=>f?.(e),viewDate:D,year:t,month:r,days:b(t,r),view:c,setView:e=>{e==="years"&&o(l(t)),C(e)},yearPageStart:F,setViewDate:a,shiftView:Y,selectMonth:e=>{a(new Date(t,e,1)),C("days")},selectYear:e=>{a(new Date(e,r,1)),o(l(e)),C("months")},renderDayCell:M},children:P})};y.displayName="Calendar.Provider";export{y as CalendarProvider,A as useCalendarContext};
1
+ "use client";import{jsx as R}from"react/jsx-runtime";import{useState as C,createContext as A}from"react";import{useRequiredContext as B}from"../../hooks/useRequiredContext.js";import{useLocale as G}from"../../locales/localeContext.js";import{ruSlice as _}from"../../locales/slices/calendar.ru.js";import{YEARS_PER_PAGE as D}from"./Calendar.types.js";const j={calendar:_},w=A(null);function q(t){return B(w,`${t} \u0434\u043E\u043B\u0436\u0435\u043D \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C\u0441\u044F \u0432\u043D\u0443\u0442\u0440\u0438 Calendar.Provider`)}function i(t){return Math.floor(t/D)*D}const L={};function N(t){return t!=null&&!(t instanceof Date)}const y=({selectionMode:t="single",value:a,onChange:f,viewDate:s,onViewDateChange:p,renderDayCell:P,children:x})=>{const{messages:E,t:F}=G(j),c=t==="range"&&N(a)?a:L,h=t==="single"&&a instanceof Date?a:void 0,v=s??h??c.end??c.start??new Date,[M,V]=C(v),[d,g]=C("days"),[S,u]=C(()=>i(v.getFullYear())),m=s??M,n=m.getFullYear(),o=m.getMonth(),r=e=>{s===void 0&&V(e),p?.(e)},Y=e=>{if(d==="days"){r(new Date(n,o+e,1));return}if(d==="months"){const l=new Date(n+e,o,1);r(l),u(i(l.getFullYear()));return}u(l=>l+e*D)};return R(w.Provider,{value:{selectionMode:t,value:h,onChange:e=>f?.(e),rangeValue:c,onRangeChange:e=>f?.(e),viewDate:m,year:n,month:o,view:d,setView:e=>{e==="years"&&u(i(n)),g(e)},yearPageStart:S,setViewDate:r,shiftView:Y,selectMonth:e=>{r(new Date(n,e,1)),g("days")},selectYear:e=>{r(new Date(e,o,1)),u(i(e)),g("months")},renderDayCell:P,calendar:E.calendar,t:F},children:x})};y.displayName="Calendar.Provider";export{y as CalendarProvider,q as useCalendarContext};
@@ -1 +1 @@
1
- "use client";import{injectCss as a}from"../../utils/injectCss.js";var t=".oplxF{--altum-calendar-width:280px;box-sizing:border-box;color:var(--altum-color-input-text);font-family:var(--altum-g-font-family-ui);max-width:100%;-webkit-user-select:none;user-select:none;width:var(--altum-calendar-width)}.oplxF .OimmF{color:var(--altum-color-ink-default);font-size:var(--altum-g-font-size-sm);font-weight:var(--altum-g-font-weight-semibold);margin-bottom:var(--altum-g-space-3)}.oplxF .jixIO{align-items:center;display:inline-flex;gap:var(--altum-g-space-1)}.oplxF ._95lLK{color:var(--altum-color-ink-default);font-size:var(--altum-g-font-size-base);font-weight:var(--altum-g-font-weight-semibold);padding:var(--altum-control-inset) var(--altum-g-space-1)}.oplxF .bYde3{display:flex;flex-direction:column}.oplxF .Afnz6{color:var(--altum-color-muted);font-size:var(--altum-g-font-size-xs);margin-bottom:var(--altum-g-space-2)}.oplxF .J-3Vr{align-content:stretch;display:grid;gap:var(--altum-g-space-1);min-height:calc(var(--altum-control-height-sm)*6);text-align:center}.oplxF .VrPnd{grid-template-columns:repeat(3,1fr)}.oplxF .vo94R{grid-template-columns:repeat(4,1fr)}.oplxF .tNYuD{font-weight:var(--altum-g-font-weight-medium,500);padding:var(--altum-g-space-2) var(--altum-g-space-1)}.oplxF .dF8j7,.oplxF .tNYuD{font-size:var(--altum-g-font-size-2xs);width:100%}.oplxF .dF8j7{align-items:center;aspect-ratio:1;display:inline-flex;justify-content:center}.oplxF .dF8j7.eoULr{background-color:color-mix(in srgb,var(--altum-color-brand) 16%,#0000);border-radius:0}.oplxF .dF8j7.Jusrw{border-radius:var(--altum-g-radius-sm) 0 0 var(--altum-g-radius-sm)}.H5X-t:is(.oplxF .dF8j7.Jusrw){border-radius:var(--altum-g-radius-sm)}.oplxF .dF8j7.H5X-t{border-radius:0 var(--altum-g-radius-sm) var(--altum-g-radius-sm) 0}.oplxF .zOR5-{cursor:default;pointer-events:none}@media (max-width:768px){.oplxF{width:100%}}";const e={calendar:"oplxF",calendarHeader:"OimmF",calendarTitleSplit:"jixIO",calendarTitleButton:"_95lLK",calendarBody:"bYde3",calendarWeekdays:"Afnz6",calendarPeriodGrid:"J-3Vr",calendarMonths:"VrPnd",calendarYears:"vo94R",periodCell:"tNYuD",dayCell:"dF8j7",dayInRange:"eoULr",dayRangeStart:"Jusrw",dayRangeEnd:"H5X-t",dayEmpty:"zOR5-"};a(t);export{e as default};
1
+ "use client";import{injectCss as a}from"../../utils/injectCss.js";var t=".oplxF{--altum-calendar-width:280px;color:var(--altum-color-input-text);font-family:var(--altum-g-font-family-ui);max-width:100%;-webkit-user-select:none;user-select:none;width:var(--altum-calendar-width)}.oplxF .OimmF{color:var(--altum-color-ink-default);font-size:var(--altum-g-font-size-sm);font-weight:var(--altum-g-font-weight-semibold);margin-bottom:var(--altum-g-space-3)}.oplxF .jixIO{align-items:center;display:inline-flex;gap:var(--altum-g-space-1)}.oplxF ._95lLK{color:var(--altum-color-ink-default);font-size:var(--altum-g-font-size-base);font-weight:var(--altum-g-font-weight-semibold);padding:var(--altum-control-inset) var(--altum-g-space-1)}.oplxF .Afnz6{color:var(--altum-color-muted);font-size:var(--altum-g-font-size-xs);margin-bottom:var(--altum-g-space-2)}.oplxF .J-3Vr{align-content:stretch;display:grid;gap:var(--altum-g-space-1);min-height:calc(var(--altum-control-height-sm)*6);text-align:center}.oplxF .VrPnd{grid-template-columns:repeat(3,1fr)}.oplxF .vo94R{grid-template-columns:repeat(4,1fr)}.oplxF .tNYuD{font-weight:var(--altum-g-font-weight-medium);padding:var(--altum-g-space-2) var(--altum-g-space-1)}.oplxF .dF8j7,.oplxF .tNYuD{font-size:var(--altum-g-font-size-2xs);width:100%}.oplxF .dF8j7{align-items:center;aspect-ratio:1;display:inline-flex;justify-content:center}.oplxF .dF8j7.eoULr{background-color:color-mix(in srgb,var(--altum-color-brand) 16%,#0000);border-radius:0}.oplxF .dF8j7.Jusrw{border-radius:var(--altum-g-radius-sm) 0 0 var(--altum-g-radius-sm)}.H5X-t:is(.oplxF .dF8j7.Jusrw){border-radius:var(--altum-g-radius-sm)}.oplxF .dF8j7.H5X-t{border-radius:0 var(--altum-g-radius-sm) var(--altum-g-radius-sm) 0}.oplxF .zOR5-{cursor:default;pointer-events:none}@media (max-width:768px){.oplxF{width:100%}}";const r={calendar:"oplxF",calendarHeader:"OimmF",calendarTitleSplit:"jixIO",calendarTitleButton:"_95lLK",calendarWeekdays:"Afnz6",calendarPeriodGrid:"J-3Vr",calendarMonths:"VrPnd",calendarYears:"vo94R",periodCell:"tNYuD",dayCell:"dF8j7",dayInRange:"eoULr",dayRangeStart:"Jusrw",dayRangeEnd:"H5X-t",dayEmpty:"zOR5-"};a(t);export{r as default};
@@ -1 +1 @@
1
- "use client";import{jsx as o,jsxs as v,Fragment as g}from"react/jsx-runtime";import{forwardRef as m}from"react";import{cn as p}from"../../utils/cn.js";import{composeEventHandlers as b}from"../../utils/composeEvents.js";import{useLocale as Y}from"../../locales/localeContext.js";import{useCalendarContext as h}from"./Calendar.context.js";import{CalendarMonthsPanel as R,CalendarYearsPanel as D,CalendarDaysPanel as E}from"./Calendar.views.js";import{YEARS_PER_PAGE as H}from"./Calendar.types.js";import P from"../../styles/unstyledControl.module.css.js";import u from"../../styles/calendarChrome.module.css.js";import C from"./Calendar.module.css.js";import{ChevronButton as M}from"../../base/ChevronButton/ChevronButton.js";const k=m(function({className:e,children:t,onClick:r,...n},l){return o("div",{ref:l,className:p(C.calendar,e),onClick:b(r,s=>{s.stopPropagation()}),...n,children:t})});k.displayName="Calendar.Root";const x=m(function({className:e,children:t,...r},n){return o("div",{ref:n,className:p(u.header,C.calendarHeader,e),...r,children:t})});x.displayName="Calendar.Header";const B=m(function({className:e,...t},r){const{messages:n,t:l}=Y(),s=n.calendar.months,{year:a,month:f,view:d,yearPageStart:c,setView:i}=h("Calendar.Title"),N=s[f]??"",y=p(P.control,u.cell,C.calendarTitleButton);return v("span",{ref:r,className:p(C.calendarTitle,d==="days"?C.calendarTitleSplit:"",e),...t,children:[d==="years"&&`${c} \u2013 ${c+H-1}`,d==="months"&&o("button",{type:"button",className:y,onClick:()=>i("years"),"aria-label":l("calendar.selectYear",{year:a}),children:a}),d==="days"&&v(g,{children:[o("button",{type:"button",className:y,onClick:()=>i("months"),"aria-label":l("calendar.selectMonth",{month:N}),children:N}),o("button",{type:"button",className:y,onClick:()=>i("years"),"aria-label":l("calendar.selectYear",{year:a}),children:a})]})]})});B.displayName="Calendar.Title";const w=m(function({direction:e,className:t,"aria-label":r,onClick:n,...l},s){const{messages:a}=Y(),{view:f,shiftView:d}=h("Calendar.Nav"),c=e==="prev",i=f==="days"?c?a.calendar.prevMonth:a.calendar.nextMonth:f==="months"?c?a.calendar.prevYear:a.calendar.nextYear:c?a.calendar.prevYears:a.calendar.nextYears;return o(M,{ref:s,direction:e,className:p(P.control,u.navBtn,t),onClick:b(n,()=>d(c?-1:1)),"aria-label":r??i,...l})});w.displayName="Calendar.Nav";const T=m(function({className:e,renderDayCell:t,...r},n){const{view:l,renderDayCell:s}=h("Calendar.Body");return l==="months"?o(R,{ref:n,className:e,...r}):l==="years"?o(D,{ref:n,className:e,...r}):o(E,{ref:n,className:e,renderDayCell:t??s,...r})});T.displayName="Calendar.Body";export{T as CalendarBody,x as CalendarHeader,w as CalendarNav,k as CalendarRoot,B as CalendarTitle};
1
+ "use client";import{jsx as s,jsxs as N,Fragment as B}from"react/jsx-runtime";import{forwardRef as d}from"react";import{ButtonIcon as D}from"../ButtonIcon/ButtonIcon.js";import{IconChevronLeft as E}from"../../icons/icons/IconChevronLeft.js";import{IconChevronRight as H}from"../../icons/icons/IconChevronRight.js";import{cn as p}from"../../utils/cn.js";import{composeEventHandlers as u}from"../../utils/composeEvents.js";import{useCalendarContext as y}from"./Calendar.context.js";import{CalendarDaysPanel as z,CalendarPeriodPanel as I}from"./Calendar.views.js";import{YEARS_PER_PAGE as M}from"./Calendar.types.js";import S from"../../styles/unstyledControl.module.css.js";import v from"../../styles/calendarChrome.module.css.js";import C from"./Calendar.module.css.js";const w=d(function({className:e,children:t,onClick:a,...r},l){return s("div",{ref:l,className:p(C.calendar,e),onClick:u(a,n=>{n.stopPropagation()}),...r,children:t})});w.displayName="Calendar.Root";const x=d(function({className:e,children:t,...a},r){return s("div",{ref:r,className:p(v.header,C.calendarHeader,e),...a,children:t})});x.displayName="Calendar.Header";const P=d(function({className:e,...t},a){const{calendar:r,t:l,year:n,month:o,view:i,yearPageStart:m,setView:c}=y("Calendar.Title"),f=r.months[o]??"",T=p(S.control,v.cell,C.calendarTitleButton),h=(b,g,k)=>s("button",{type:"button",className:T,onClick:()=>c(g),"aria-label":k,children:b});return N("span",{ref:a,className:p(i==="days"&&C.calendarTitleSplit,e),...t,children:[i==="years"&&`${m} \u2013 ${m+M-1}`,i==="months"&&h(n,"years",l("calendar.selectYear",{year:n})),i==="days"&&N(B,{children:[h(f,"months",l("calendar.selectMonth",{month:f})),h(n,"years",l("calendar.selectYear",{year:n}))]})]})});P.displayName="Calendar.Title";const Y=d(function({direction:e,className:t,"aria-label":a,onClick:r,...l},n){const{calendar:o,view:i,shiftView:m}=y("Calendar.Nav"),c=e==="prev",f=i==="days"?c?o.prevMonth:o.nextMonth:i==="months"?c?o.prevYear:o.nextYear:c?o.prevYears:o.nextYears;return s(D,{ref:n,variant:"ghost",size:"sm",className:t,onClick:u(r,()=>m(c?-1:1)),"aria-label":a??f,...l,icon:c?s(E,{size:16,"aria-hidden":!0}):s(H,{size:16,"aria-hidden":!0})})});Y.displayName="Calendar.Nav";const R=d(function({className:e,renderDayCell:t,...a},r){const{view:l,renderDayCell:n}=y("Calendar.Body");return l==="days"?s(z,{ref:r,className:e,renderDayCell:t??n,...a}):s(I,{ref:r,className:e,...a})});R.displayName="Calendar.Body";export{R as CalendarBody,x as CalendarHeader,Y as CalendarNav,w as CalendarRoot,P as CalendarTitle};
@@ -1 +1 @@
1
- "use client";function i(t,e){const n=new Date(t,e+1,0).getDate();let a=new Date(t,e,1).getDay()-1;a<0&&(a=6);const r=[];for(let o=0;o<a;o++)r.push({day:0,isEmpty:!0,date:null});for(let o=1;o<=n;o++)r.push({day:o,isEmpty:!1,date:new Date(t,e,o)});return r}function g(t,e){return t.getFullYear()===e.getFullYear()&&t.getMonth()===e.getMonth()&&t.getDate()===e.getDate()}function s(t,e){const n=t.getFullYear()-e.getFullYear();if(n)return n<0?-1:1;const a=t.getMonth()-e.getMonth();if(a)return a<0?-1:1;const r=t.getDate()-e.getDate();return r<0?-1:r>0?1:0}function D(t,e,n){return!e||!n?!1:s(t,e)>0&&s(t,n)<0}function f(t,e){const n=u(e);return!t.start||t.start&&t.end?{start:n,end:void 0}:s(n,t.start)<0?{start:n,end:u(t.start)}:{start:u(t.start),end:n}}function y(t){return g(t,new Date)}function u(t){return new Date(t.getFullYear(),t.getMonth(),t.getDate())}function c(t,e){const n=u(t);return n.setDate(n.getDate()+e),n}function d(t,e=1){const n=u(t),a=n.getDay(),r=e===1?a===0?-6:1-a:-a;return c(n,r)}function h(t,e){const n=u(t);return Array.from({length:Math.max(1,e)},(a,r)=>c(n,r))}function M(t,e){return`${e[t.getMonth()]??""} ${t.getFullYear()}`}function l(t,e=1){return e===1?[...t]:[t[6]??"",...t.slice(0,6)]}function m(t,e=1,n){const a=l(n,e),r=e===1?t.getDay()===0?6:t.getDay()-1:t.getDay();return a[r]??""}export{c as addDays,h as buildDayStrip,i as buildMonthDays,s as compareDay,M as formatMonthYear,D as isDateInRange,g as isSameDay,y as isToday,f as selectNextRange,u as startOfDay,d as startOfWeek,m as weekdayLabelFor,l as weekdayLabels};
1
+ "use client";import{startOfDay as r,addDays as u,isSameDay as i,compareDay as n}from"../../utils/date.js";import{getWeekStart as x}from"../../utils/date.js";function f(t,e,a){return!e||!a?!1:n(t,e)>0&&n(t,a)<0}function y(t,e){const a=r(e);return!t.start||t.start&&t.end?{start:a,end:void 0}:n(a,t.start)<0?{start:a,end:r(t.start)}:{start:r(t.start),end:a}}function d(t){return i(t,new Date)}function l(t,e){const a=r(t);return Array.from({length:Math.max(1,e)},(s,o)=>u(a,o))}function D(t,e){return`${e[t.getMonth()]??""} ${t.getFullYear()}`}function c(t,e=1){return e===1?[...t]:[t[6]??"",...t.slice(0,6)]}function g(t,e=1,a){const s=c(a,e),o=e===1?t.getDay()===0?6:t.getDay()-1:t.getDay();return s[o]??""}export{u as addDays,l as buildDayStrip,n as compareDay,D as formatMonthYear,x as getWeekStart,f as isDateInRange,i as isSameDay,d as isToday,y as selectNextRange,r as startOfDay,g as weekdayLabelFor,c as weekdayLabels};