@mantine/core 9.5.1 → 9.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (904) hide show
  1. package/cjs/_virtual/_rolldown/runtime.cjs +1 -1
  2. package/cjs/components/Accordion/Accordion.cjs.map +1 -1
  3. package/cjs/components/Accordion/AccordionChevron.cjs.map +1 -1
  4. package/cjs/components/Accordion/AccordionControl/AccordionControl.cjs.map +1 -1
  5. package/cjs/components/Accordion/AccordionItem/AccordionItem.cjs.map +1 -1
  6. package/cjs/components/Accordion/AccordionPanel/AccordionPanel.cjs.map +1 -1
  7. package/cjs/components/ActionBar/ActionBar.cjs +94 -0
  8. package/cjs/components/ActionBar/ActionBar.cjs.map +1 -0
  9. package/cjs/components/ActionBar/ActionBar.context.cjs +8 -0
  10. package/cjs/components/ActionBar/ActionBar.context.cjs.map +1 -0
  11. package/cjs/components/ActionBar/ActionBar.module.cjs +10 -0
  12. package/cjs/components/ActionBar/ActionBar.module.cjs.map +1 -0
  13. package/cjs/components/ActionBar/ActionBarCloseButton/ActionBarCloseButton.cjs +33 -0
  14. package/cjs/components/ActionBar/ActionBarCloseButton/ActionBarCloseButton.cjs.map +1 -0
  15. package/cjs/components/ActionBar/ActionBarDivider/ActionBarDivider.cjs +30 -0
  16. package/cjs/components/ActionBar/ActionBarDivider/ActionBarDivider.cjs.map +1 -0
  17. package/cjs/components/ActionIcon/ActionIcon.cjs.map +1 -1
  18. package/cjs/components/ActionIcon/ActionIconGroup/ActionIconGroup.cjs +16 -15
  19. package/cjs/components/ActionIcon/ActionIconGroup/ActionIconGroup.cjs.map +1 -1
  20. package/cjs/components/ActionIcon/ActionIconGroupSection/ActionIconGroupSection.cjs +15 -14
  21. package/cjs/components/ActionIcon/ActionIconGroupSection/ActionIconGroupSection.cjs.map +1 -1
  22. package/cjs/components/Affix/Affix.cjs.map +1 -1
  23. package/cjs/components/Alert/Alert.cjs.map +1 -1
  24. package/cjs/components/Anchor/Anchor.cjs.map +1 -1
  25. package/cjs/components/AngleSlider/AngleSlider.cjs +5 -4
  26. package/cjs/components/AngleSlider/AngleSlider.cjs.map +1 -1
  27. package/cjs/components/AppShell/AppShell.cjs.map +1 -1
  28. package/cjs/components/AppShell/AppShellAside/AppShellAside.cjs.map +1 -1
  29. package/cjs/components/AppShell/AppShellFooter/AppShellFooter.cjs.map +1 -1
  30. package/cjs/components/AppShell/AppShellHeader/AppShellHeader.cjs.map +1 -1
  31. package/cjs/components/AppShell/AppShellMain/AppShellMain.cjs +2 -1
  32. package/cjs/components/AppShell/AppShellMain/AppShellMain.cjs.map +1 -1
  33. package/cjs/components/AppShell/use-resizing/use-resizing.cjs.map +1 -1
  34. package/cjs/components/AspectRatio/AspectRatio.cjs +14 -13
  35. package/cjs/components/AspectRatio/AspectRatio.cjs.map +1 -1
  36. package/cjs/components/Autocomplete/Autocomplete.cjs.map +1 -1
  37. package/cjs/components/Avatar/Avatar.cjs.map +1 -1
  38. package/cjs/components/Avatar/AvatarGroup/AvatarGroup.cjs.map +1 -1
  39. package/cjs/components/Avatar/AvatarPlaceholderIcon.cjs.map +1 -1
  40. package/cjs/components/BackgroundImage/BackgroundImage.cjs +14 -13
  41. package/cjs/components/BackgroundImage/BackgroundImage.cjs.map +1 -1
  42. package/cjs/components/Badge/Badge.cjs.map +1 -1
  43. package/cjs/components/Blockquote/Blockquote.cjs +6 -5
  44. package/cjs/components/Blockquote/Blockquote.cjs.map +1 -1
  45. package/cjs/components/Breadcrumbs/Breadcrumbs.cjs.map +1 -1
  46. package/cjs/components/Burger/Burger.cjs.map +1 -1
  47. package/cjs/components/Button/Button.cjs.map +1 -1
  48. package/cjs/components/Button/ButtonGroup/ButtonGroup.cjs +16 -15
  49. package/cjs/components/Button/ButtonGroup/ButtonGroup.cjs.map +1 -1
  50. package/cjs/components/Button/ButtonGroupSection/ButtonGroupSection.cjs +15 -14
  51. package/cjs/components/Button/ButtonGroupSection/ButtonGroupSection.cjs.map +1 -1
  52. package/cjs/components/Card/Card.cjs.map +1 -1
  53. package/cjs/components/Cascader/Cascader.cjs +10 -5
  54. package/cjs/components/Cascader/Cascader.cjs.map +1 -1
  55. package/cjs/components/Cascader/CascaderColumns.cjs +2 -1
  56. package/cjs/components/Cascader/CascaderColumns.cjs.map +1 -1
  57. package/cjs/components/Cascader/get-cascader-columns.cjs.map +1 -1
  58. package/cjs/components/Cascader/use-cascader-safe-area.cjs.map +1 -1
  59. package/cjs/components/Cascader/use-cascader.cjs.map +1 -1
  60. package/cjs/components/Checkbox/CheckIcon.cjs +6 -5
  61. package/cjs/components/Checkbox/CheckIcon.cjs.map +1 -1
  62. package/cjs/components/Checkbox/Checkbox.cjs +1 -1
  63. package/cjs/components/Checkbox/Checkbox.cjs.map +1 -1
  64. package/cjs/components/Checkbox/CheckboxCard/CheckboxCard.cjs +2 -1
  65. package/cjs/components/Checkbox/CheckboxCard/CheckboxCard.cjs.map +1 -1
  66. package/cjs/components/Checkbox/CheckboxGroup/CheckboxGroup.cjs.map +1 -1
  67. package/cjs/components/Checkbox/CheckboxIndicator/CheckboxIndicator.cjs.map +1 -1
  68. package/cjs/components/Chip/Chip.cjs.map +1 -1
  69. package/cjs/components/Chip/ChipGroup/ChipGroup.cjs.map +1 -1
  70. package/cjs/components/CloseButton/CloseButton.cjs.map +1 -1
  71. package/cjs/components/CloseButton/CloseIcon.cjs.map +1 -1
  72. package/cjs/components/Collapse/Collapse.cjs.map +1 -1
  73. package/cjs/components/ColorInput/ColorInput.cjs.map +1 -1
  74. package/cjs/components/ColorInput/EyeDropperIcon.cjs.map +1 -1
  75. package/cjs/components/ColorPicker/ColorPicker.cjs.map +1 -1
  76. package/cjs/components/ColorPicker/ColorPicker.context.cjs.map +1 -1
  77. package/cjs/components/ColorPicker/ColorSlider/ColorSlider.cjs +4 -6
  78. package/cjs/components/ColorPicker/ColorSlider/ColorSlider.cjs.map +1 -1
  79. package/cjs/components/ColorPicker/Saturation/Saturation.cjs +4 -6
  80. package/cjs/components/ColorPicker/Saturation/Saturation.cjs.map +1 -1
  81. package/cjs/components/ColorPicker/Swatches/Swatches.cjs.map +1 -1
  82. package/cjs/components/ColorSwatch/ColorSwatch.cjs.map +1 -1
  83. package/cjs/components/Combobox/Combobox.cjs.map +1 -1
  84. package/cjs/components/Combobox/ComboboxChevron/ComboboxChevron.cjs.map +1 -1
  85. package/cjs/components/Combobox/ComboboxEmpty/ComboboxEmpty.cjs +2 -1
  86. package/cjs/components/Combobox/ComboboxEmpty/ComboboxEmpty.cjs.map +1 -1
  87. package/cjs/components/Combobox/ComboboxEventsTarget/ComboboxEventsTarget.cjs +10 -9
  88. package/cjs/components/Combobox/ComboboxEventsTarget/ComboboxEventsTarget.cjs.map +1 -1
  89. package/cjs/components/Combobox/ComboboxFooter/ComboboxFooter.cjs +2 -1
  90. package/cjs/components/Combobox/ComboboxFooter/ComboboxFooter.cjs.map +1 -1
  91. package/cjs/components/Combobox/ComboboxGroup/ComboboxGroup.cjs.map +1 -1
  92. package/cjs/components/Combobox/ComboboxHeader/ComboboxHeader.cjs +2 -1
  93. package/cjs/components/Combobox/ComboboxHeader/ComboboxHeader.cjs.map +1 -1
  94. package/cjs/components/Combobox/ComboboxOption/ComboboxOption.cjs.map +1 -1
  95. package/cjs/components/Combobox/ComboboxOptions/ComboboxOptions.cjs.map +1 -1
  96. package/cjs/components/Combobox/ComboboxSearch/ComboboxSearch.cjs.map +1 -1
  97. package/cjs/components/Combobox/ComboboxTarget/ComboboxTarget.cjs +10 -9
  98. package/cjs/components/Combobox/ComboboxTarget/ComboboxTarget.cjs.map +1 -1
  99. package/cjs/components/Combobox/OptionsDropdown/OptionsDropdown.cjs.map +1 -1
  100. package/cjs/components/Combobox/OptionsDropdown/default-options-filter.cjs.map +1 -1
  101. package/cjs/components/Combobox/get-options-lockup/get-option-by-label.cjs +17 -0
  102. package/cjs/components/Combobox/get-options-lockup/get-option-by-label.cjs.map +1 -0
  103. package/cjs/components/Combobox/is-external-input-change/is-external-input-change.cjs +17 -0
  104. package/cjs/components/Combobox/is-external-input-change/is-external-input-change.cjs.map +1 -0
  105. package/cjs/components/Combobox/use-combobox/get-index/get-index.cjs.map +1 -1
  106. package/cjs/components/Combobox/use-combobox/get-index/get-virtualized-index.cjs.map +1 -1
  107. package/cjs/components/Combobox/use-combobox/use-combobox.cjs.map +1 -1
  108. package/cjs/components/Combobox/use-combobox/use-virtualized-combobox.cjs.map +1 -1
  109. package/cjs/components/Combobox/use-combobox-target-props/use-combobox-target-props.cjs.map +1 -1
  110. package/cjs/components/Combobox/use-pills-reorder/use-pills-reorder.cjs.map +1 -1
  111. package/cjs/components/ComboboxPopover/ComboboxPopover.cjs.map +1 -1
  112. package/cjs/components/ComboboxPopover/ComboboxPopoverTarget.cjs +13 -12
  113. package/cjs/components/ComboboxPopover/ComboboxPopoverTarget.cjs.map +1 -1
  114. package/cjs/components/CopyButton/CopyButton.cjs.map +1 -1
  115. package/cjs/components/DataList/DataList.cjs.map +1 -1
  116. package/cjs/components/Dialog/Dialog.cjs.map +1 -1
  117. package/cjs/components/Divider/Divider.cjs.map +1 -1
  118. package/cjs/components/Drawer/Drawer.cjs.map +1 -1
  119. package/cjs/components/Drawer/DrawerBody.cjs +2 -1
  120. package/cjs/components/Drawer/DrawerBody.cjs.map +1 -1
  121. package/cjs/components/Drawer/DrawerCloseButton.cjs +2 -1
  122. package/cjs/components/Drawer/DrawerCloseButton.cjs.map +1 -1
  123. package/cjs/components/Drawer/DrawerContent.cjs.map +1 -1
  124. package/cjs/components/Drawer/DrawerHeader.cjs +2 -1
  125. package/cjs/components/Drawer/DrawerHeader.cjs.map +1 -1
  126. package/cjs/components/Drawer/DrawerOverlay.cjs +2 -1
  127. package/cjs/components/Drawer/DrawerOverlay.cjs.map +1 -1
  128. package/cjs/components/Drawer/DrawerRoot.cjs.map +1 -1
  129. package/cjs/components/Drawer/DrawerStack.cjs.map +1 -1
  130. package/cjs/components/Drawer/DrawerTitle.cjs +2 -1
  131. package/cjs/components/Drawer/DrawerTitle.cjs.map +1 -1
  132. package/cjs/components/EmptyState/EmptyState.cjs.map +1 -1
  133. package/cjs/components/EmptyState/EmptyStateActions/EmptyStateActions.cjs +2 -1
  134. package/cjs/components/EmptyState/EmptyStateActions/EmptyStateActions.cjs.map +1 -1
  135. package/cjs/components/EmptyState/EmptyStateDescription/EmptyStateDescription.cjs +2 -1
  136. package/cjs/components/EmptyState/EmptyStateDescription/EmptyStateDescription.cjs.map +1 -1
  137. package/cjs/components/Fieldset/Fieldset.cjs.map +1 -1
  138. package/cjs/components/FileButton/FileButton.cjs.map +1 -1
  139. package/cjs/components/FileInput/FileInput.cjs.map +1 -1
  140. package/cjs/components/FloatingIndicator/FloatingIndicator.cjs.map +1 -1
  141. package/cjs/components/FloatingIndicator/use-floating-indicator.cjs.map +1 -1
  142. package/cjs/components/FloatingWindow/FloatingWindow.cjs.map +1 -1
  143. package/cjs/components/FloatingWindow/FloatingWindowResizeHandle.cjs.map +1 -1
  144. package/cjs/components/FocusTrap/FocusTrap.cjs +2 -1
  145. package/cjs/components/FocusTrap/FocusTrap.cjs.map +1 -1
  146. package/cjs/components/Grid/Grid.cjs.map +1 -1
  147. package/cjs/components/Grid/GridCol/GridCol.cjs.map +1 -1
  148. package/cjs/components/Group/Group.cjs +16 -14
  149. package/cjs/components/Group/Group.cjs.map +1 -1
  150. package/cjs/components/Highlight/Highlight.cjs.map +1 -1
  151. package/cjs/components/HoverCard/HoverCard.cjs.map +1 -1
  152. package/cjs/components/HoverCard/HoverCardDropdown/HoverCardDropdown.cjs.map +1 -1
  153. package/cjs/components/HoverCard/HoverCardGroup/HoverCardGroup.cjs.map +1 -1
  154. package/cjs/components/HoverCard/HoverCardTarget/HoverCardTarget.cjs.map +1 -1
  155. package/cjs/components/HoverCard/use-hover-card.cjs.map +1 -1
  156. package/cjs/components/Image/Image.cjs.map +1 -1
  157. package/cjs/components/Indicator/Indicator.cjs.map +1 -1
  158. package/cjs/components/Input/Input.cjs +3 -3
  159. package/cjs/components/Input/Input.cjs.map +1 -1
  160. package/cjs/components/Input/Input.context.cjs.map +1 -1
  161. package/cjs/components/Input/InputClearButton/InputClearButton.cjs.map +1 -1
  162. package/cjs/components/Input/InputClearSection/InputClearSection.cjs.map +1 -1
  163. package/cjs/components/Input/InputDescription/InputDescription.cjs +2 -1
  164. package/cjs/components/Input/InputDescription/InputDescription.cjs.map +1 -1
  165. package/cjs/components/Input/InputError/InputError.cjs +2 -1
  166. package/cjs/components/Input/InputError/InputError.cjs.map +1 -1
  167. package/cjs/components/Input/InputLabel/InputLabel.cjs.map +1 -1
  168. package/cjs/components/Input/InputPlaceholder/InputPlaceholder.cjs +13 -12
  169. package/cjs/components/Input/InputPlaceholder/InputPlaceholder.cjs.map +1 -1
  170. package/cjs/components/Input/InputSuccess/InputSuccess.cjs +2 -1
  171. package/cjs/components/Input/InputSuccess/InputSuccess.cjs.map +1 -1
  172. package/cjs/components/Input/InputWrapper/InputWrapper.cjs.map +1 -1
  173. package/cjs/components/Input/InputWrapper.context.cjs.map +1 -1
  174. package/cjs/components/InputBase/InputBase.cjs.map +1 -1
  175. package/cjs/components/JsonInput/JsonInput.cjs.map +1 -1
  176. package/cjs/components/Kbd/Kbd.cjs +14 -13
  177. package/cjs/components/Kbd/Kbd.cjs.map +1 -1
  178. package/cjs/components/List/List.cjs.map +1 -1
  179. package/cjs/components/List/ListItem/ListItem.cjs.map +1 -1
  180. package/cjs/components/Loader/loaders/Bars.cjs.map +1 -1
  181. package/cjs/components/Loader/loaders/Dots.cjs.map +1 -1
  182. package/cjs/components/Loader/loaders/Oval.cjs.map +1 -1
  183. package/cjs/components/LoadingOverlay/LoadingOverlay.cjs.map +1 -1
  184. package/cjs/components/Mark/Mark.cjs +14 -13
  185. package/cjs/components/Mark/Mark.cjs.map +1 -1
  186. package/cjs/components/Marquee/Marquee.cjs.map +1 -1
  187. package/cjs/components/MaskInput/MaskInput.cjs +3 -2
  188. package/cjs/components/MaskInput/MaskInput.cjs.map +1 -1
  189. package/cjs/components/MaskInput/use-mask-input-props.cjs.map +1 -1
  190. package/cjs/components/Menu/Menu.cjs.map +1 -1
  191. package/cjs/components/Menu/MenuCheckboxGroup/MenuCheckboxGroup.cjs +4 -3
  192. package/cjs/components/Menu/MenuCheckboxGroup/MenuCheckboxGroup.cjs.map +1 -1
  193. package/cjs/components/Menu/MenuCheckboxGroup/MenuCheckboxGroup.context.cjs.map +1 -1
  194. package/cjs/components/Menu/MenuCheckboxItem/MenuCheckboxItem.cjs +2 -1
  195. package/cjs/components/Menu/MenuCheckboxItem/MenuCheckboxItem.cjs.map +1 -1
  196. package/cjs/components/Menu/MenuContextMenu/MenuContextMenu.cjs +3 -2
  197. package/cjs/components/Menu/MenuContextMenu/MenuContextMenu.cjs.map +1 -1
  198. package/cjs/components/Menu/MenuDivider/MenuDivider.cjs +2 -1
  199. package/cjs/components/Menu/MenuDivider/MenuDivider.cjs.map +1 -1
  200. package/cjs/components/Menu/MenuDropdown/MenuDropdown.cjs.map +1 -1
  201. package/cjs/components/Menu/MenuItem/MenuItem.cjs.map +1 -1
  202. package/cjs/components/Menu/MenuLabel/MenuLabel.cjs +2 -1
  203. package/cjs/components/Menu/MenuLabel/MenuLabel.cjs.map +1 -1
  204. package/cjs/components/Menu/MenuRadioGroup/MenuRadioGroup.cjs.map +1 -1
  205. package/cjs/components/Menu/MenuRadioGroup/MenuRadioGroup.context.cjs.map +1 -1
  206. package/cjs/components/Menu/MenuRadioItem/MenuRadioItem.cjs +2 -1
  207. package/cjs/components/Menu/MenuRadioItem/MenuRadioItem.cjs.map +1 -1
  208. package/cjs/components/Menu/MenuSearch/MenuSearch.cjs.map +1 -1
  209. package/cjs/components/Menu/MenuSelectableItem/MenuSelectableItem.cjs.map +1 -1
  210. package/cjs/components/Menu/MenuSub/MenuSub.cjs.map +1 -1
  211. package/cjs/components/Menu/MenuSub/MenuSub.context.cjs.map +1 -1
  212. package/cjs/components/Menu/MenuSubDropdown/MenuSubDropdown.cjs.map +1 -1
  213. package/cjs/components/Menu/MenuSubItem/MenuSubItem.cjs.map +1 -1
  214. package/cjs/components/Menu/MenuTarget/MenuTarget.cjs.map +1 -1
  215. package/cjs/components/Menu/use-menu-type-ahead.cjs.map +1 -1
  216. package/cjs/components/Menubar/Menubar.cjs.map +1 -1
  217. package/cjs/components/Menubar/MenubarMenu/MenubarMenu.cjs.map +1 -1
  218. package/cjs/components/Menubar/MenubarTarget/MenubarTarget.cjs.map +1 -1
  219. package/cjs/components/Modal/Modal.cjs.map +1 -1
  220. package/cjs/components/Modal/ModalBody.cjs +2 -1
  221. package/cjs/components/Modal/ModalBody.cjs.map +1 -1
  222. package/cjs/components/Modal/ModalCloseButton.cjs +2 -1
  223. package/cjs/components/Modal/ModalCloseButton.cjs.map +1 -1
  224. package/cjs/components/Modal/ModalContent.cjs.map +1 -1
  225. package/cjs/components/Modal/ModalHeader.cjs +2 -1
  226. package/cjs/components/Modal/ModalHeader.cjs.map +1 -1
  227. package/cjs/components/Modal/ModalOverlay.cjs +2 -1
  228. package/cjs/components/Modal/ModalOverlay.cjs.map +1 -1
  229. package/cjs/components/Modal/ModalRoot.cjs.map +1 -1
  230. package/cjs/components/Modal/ModalStack.cjs.map +1 -1
  231. package/cjs/components/Modal/ModalTitle.cjs +2 -1
  232. package/cjs/components/Modal/ModalTitle.cjs.map +1 -1
  233. package/cjs/components/Modal/use-modals-stack.cjs.map +1 -1
  234. package/cjs/components/ModalBase/ModalBase.cjs.map +1 -1
  235. package/cjs/components/ModalBase/ModalBaseBody.cjs.map +1 -1
  236. package/cjs/components/ModalBase/ModalBaseCloseButton.cjs.map +1 -1
  237. package/cjs/components/ModalBase/ModalBaseContent.cjs.map +1 -1
  238. package/cjs/components/ModalBase/ModalBaseHeader.cjs.map +1 -1
  239. package/cjs/components/ModalBase/ModalBaseOverlay.cjs.map +1 -1
  240. package/cjs/components/ModalBase/ModalBaseTitle.cjs.map +1 -1
  241. package/cjs/components/ModalBase/use-lock-scroll.cjs.map +1 -1
  242. package/cjs/components/ModalBase/use-modal.cjs +2 -1
  243. package/cjs/components/ModalBase/use-modal.cjs.map +1 -1
  244. package/cjs/components/MultiSelect/MultiSelect.cjs +9 -0
  245. package/cjs/components/MultiSelect/MultiSelect.cjs.map +1 -1
  246. package/cjs/components/NativeSelect/NativeSelect.cjs.map +1 -1
  247. package/cjs/components/NativeSelect/NativeSelectOption.cjs.map +1 -1
  248. package/cjs/components/NavLink/NavLink.cjs.map +1 -1
  249. package/cjs/components/Notification/Notification.cjs +3 -3
  250. package/cjs/components/Notification/Notification.cjs.map +1 -1
  251. package/cjs/components/NumberInput/NumberInput.cjs +5 -3
  252. package/cjs/components/NumberInput/NumberInput.cjs.map +1 -1
  253. package/cjs/components/NumberInput/NumberInputChevron.cjs.map +1 -1
  254. package/cjs/components/OverflowList/OverflowList.cjs +4 -2
  255. package/cjs/components/OverflowList/OverflowList.cjs.map +1 -1
  256. package/cjs/components/OverflowList/use-dimensions.cjs.map +1 -1
  257. package/cjs/components/Overlay/Overlay.cjs +14 -13
  258. package/cjs/components/Overlay/Overlay.cjs.map +1 -1
  259. package/cjs/components/Pagination/Pagination.cjs +2 -1
  260. package/cjs/components/Pagination/Pagination.cjs.map +1 -1
  261. package/cjs/components/Pagination/Pagination.icons.cjs.map +1 -1
  262. package/cjs/components/Pagination/PaginationDots/PaginationDots.cjs +2 -1
  263. package/cjs/components/Pagination/PaginationDots/PaginationDots.cjs.map +1 -1
  264. package/cjs/components/Pagination/PaginationEdges/PaginationEdges.cjs.map +1 -1
  265. package/cjs/components/Pagination/PaginationItems/PaginationItems.cjs +3 -2
  266. package/cjs/components/Pagination/PaginationItems/PaginationItems.cjs.map +1 -1
  267. package/cjs/components/Pagination/PaginationLabel/PaginationLabel.cjs.map +1 -1
  268. package/cjs/components/Pagination/PaginationRoot/PaginationRoot.cjs.map +1 -1
  269. package/cjs/components/Paper/Paper.cjs +1 -1
  270. package/cjs/components/Paper/Paper.cjs.map +1 -1
  271. package/cjs/components/PasswordInput/PasswordInput.cjs.map +1 -1
  272. package/cjs/components/PasswordInput/PasswordToggleIcon.cjs.map +1 -1
  273. package/cjs/components/Pill/Pill.cjs.map +1 -1
  274. package/cjs/components/Pill/PillGroup/PillGroup.cjs.map +1 -1
  275. package/cjs/components/PillsInput/PillsInput.cjs.map +1 -1
  276. package/cjs/components/PillsInput/PillsInput.context.cjs.map +1 -1
  277. package/cjs/components/PillsInput/PillsInputField/PillsInputField.cjs.map +1 -1
  278. package/cjs/components/PinInput/PinInput.cjs +6 -5
  279. package/cjs/components/PinInput/PinInput.cjs.map +1 -1
  280. package/cjs/components/Popover/Popover.cjs.map +1 -1
  281. package/cjs/components/Popover/PopoverContextMenu/PopoverContextMenu.cjs +3 -2
  282. package/cjs/components/Popover/PopoverContextMenu/PopoverContextMenu.cjs.map +1 -1
  283. package/cjs/components/Popover/PopoverDropdown/PopoverDropdown.cjs.map +1 -1
  284. package/cjs/components/Popover/PopoverTarget/PopoverTarget.cjs.map +1 -1
  285. package/cjs/components/Popover/use-popover.cjs +16 -12
  286. package/cjs/components/Popover/use-popover.cjs.map +1 -1
  287. package/cjs/components/Portal/Portal.cjs.map +1 -1
  288. package/cjs/components/Progress/Progress.cjs.map +1 -1
  289. package/cjs/components/Progress/ProgressLabel/ProgressLabel.cjs +2 -1
  290. package/cjs/components/Progress/ProgressLabel/ProgressLabel.cjs.map +1 -1
  291. package/cjs/components/Progress/ProgressRoot/ProgressRoot.cjs.map +1 -1
  292. package/cjs/components/Radio/Radio.cjs.map +1 -1
  293. package/cjs/components/Radio/RadioCard/RadioCard.cjs.map +1 -1
  294. package/cjs/components/Radio/RadioGroup/RadioGroup.cjs.map +1 -1
  295. package/cjs/components/Radio/RadioIcon.cjs.map +1 -1
  296. package/cjs/components/Radio/RadioIndicator/RadioIndicator.cjs.map +1 -1
  297. package/cjs/components/Rating/Rating.cjs +6 -3
  298. package/cjs/components/Rating/Rating.cjs.map +1 -1
  299. package/cjs/components/Rating/RatingItem/RatingItem.cjs.map +1 -1
  300. package/cjs/components/Rating/StarSymbol/StarIcon.cjs.map +1 -1
  301. package/cjs/components/Rating/StarSymbol/StarSymbol.cjs +2 -1
  302. package/cjs/components/Rating/StarSymbol/StarSymbol.cjs.map +1 -1
  303. package/cjs/components/RingProgress/Curve/Curve.cjs.map +1 -1
  304. package/cjs/components/RingProgress/RingProgress.cjs.map +1 -1
  305. package/cjs/components/RollingNumber/DigitColumn.cjs.map +1 -1
  306. package/cjs/components/RollingNumber/RollingNumber.cjs +19 -13
  307. package/cjs/components/RollingNumber/RollingNumber.cjs.map +1 -1
  308. package/cjs/components/RollingNumber/RollingNumber.module.cjs +1 -0
  309. package/cjs/components/RollingNumber/RollingNumber.module.cjs.map +1 -1
  310. package/cjs/components/ScrollArea/ScrollArea.cjs +8 -6
  311. package/cjs/components/ScrollArea/ScrollArea.cjs.map +1 -1
  312. package/cjs/components/ScrollArea/ScrollAreaCorner/ScrollAreaCorner.cjs.map +1 -1
  313. package/cjs/components/ScrollArea/ScrollAreaRoot/ScrollAreaRoot.cjs.map +1 -1
  314. package/cjs/components/ScrollArea/ScrollAreaScrollbar/ScrollAreaScrollbarAuto.cjs.map +1 -1
  315. package/cjs/components/ScrollArea/ScrollAreaScrollbar/ScrollAreaScrollbarHover.cjs.map +1 -1
  316. package/cjs/components/ScrollArea/ScrollAreaScrollbar/ScrollAreaScrollbarScroll.cjs.map +1 -1
  317. package/cjs/components/ScrollArea/ScrollAreaScrollbar/ScrollAreaScrollbarVisible.cjs.map +1 -1
  318. package/cjs/components/ScrollArea/ScrollAreaScrollbar/Scrollbar.cjs.map +1 -1
  319. package/cjs/components/ScrollArea/ScrollAreaScrollbar/ScrollbarX.cjs.map +1 -1
  320. package/cjs/components/ScrollArea/ScrollAreaScrollbar/ScrollbarY.cjs.map +1 -1
  321. package/cjs/components/ScrollArea/ScrollAreaThumb/ScrollAreaThumb.cjs.map +1 -1
  322. package/cjs/components/ScrollArea/ScrollAreaViewport/ScrollAreaViewport.cjs.map +1 -1
  323. package/cjs/components/ScrollArea/use-resize-observer.cjs.map +1 -1
  324. package/cjs/components/Scroller/Scroller.cjs.map +1 -1
  325. package/cjs/components/SegmentedControl/SegmentedControl.cjs.map +1 -1
  326. package/cjs/components/Select/Select.cjs +12 -0
  327. package/cjs/components/Select/Select.cjs.map +1 -1
  328. package/cjs/components/SemiCircleProgress/SemiCircleProgress.cjs.map +1 -1
  329. package/cjs/components/SimpleGrid/SimpleGrid.cjs.map +1 -1
  330. package/cjs/components/SimpleGrid/SimpleGridVariables.cjs +10 -8
  331. package/cjs/components/SimpleGrid/SimpleGridVariables.cjs.map +1 -1
  332. package/cjs/components/Skeleton/Skeleton.cjs +14 -13
  333. package/cjs/components/Skeleton/Skeleton.cjs.map +1 -1
  334. package/cjs/components/Slider/Marks/Marks.cjs +3 -2
  335. package/cjs/components/Slider/Marks/Marks.cjs.map +1 -1
  336. package/cjs/components/Slider/RangeSlider/RangeSlider.cjs +20 -11
  337. package/cjs/components/Slider/RangeSlider/RangeSlider.cjs.map +1 -1
  338. package/cjs/components/Slider/Slider/Slider.cjs +6 -6
  339. package/cjs/components/Slider/Slider/Slider.cjs.map +1 -1
  340. package/cjs/components/Slider/Thumb/Thumb.cjs.map +1 -1
  341. package/cjs/components/Slider/Track/Track.cjs.map +1 -1
  342. package/cjs/components/Splitter/GripIcon.cjs.map +1 -1
  343. package/cjs/components/Splitter/Splitter.cjs +8 -7
  344. package/cjs/components/Splitter/Splitter.cjs.map +1 -1
  345. package/cjs/components/Spoiler/Spoiler.cjs.map +1 -1
  346. package/cjs/components/Stack/Stack.cjs +14 -13
  347. package/cjs/components/Stack/Stack.cjs.map +1 -1
  348. package/cjs/components/Stepper/Stepper.cjs +6 -3
  349. package/cjs/components/Stepper/Stepper.cjs.map +1 -1
  350. package/cjs/components/Stepper/Stepper.context.cjs.map +1 -1
  351. package/cjs/components/Stepper/Stepper.module.cjs.map +1 -1
  352. package/cjs/components/Stepper/StepperStep/StepperStep.cjs +3 -2
  353. package/cjs/components/Stepper/StepperStep/StepperStep.cjs.map +1 -1
  354. package/cjs/components/Switch/Switch.cjs.map +1 -1
  355. package/cjs/components/Switch/SwitchGroup/SwitchGroup.cjs.map +1 -1
  356. package/cjs/components/Table/Table.cjs +2 -2
  357. package/cjs/components/Table/Table.cjs.map +1 -1
  358. package/cjs/components/Table/TableScrollContainer.cjs.map +1 -1
  359. package/cjs/components/TableOfContents/TableOfContents.cjs.map +1 -1
  360. package/cjs/components/Tabs/Tabs.cjs.map +1 -1
  361. package/cjs/components/Tabs/TabsPanel/TabsPanel.cjs.map +1 -1
  362. package/cjs/components/Tabs/TabsTab/TabsTab.cjs.map +1 -1
  363. package/cjs/components/TagsInput/TagsInput.cjs +5 -1
  364. package/cjs/components/TagsInput/TagsInput.cjs.map +1 -1
  365. package/cjs/components/Text/Text.cjs +18 -17
  366. package/cjs/components/Text/Text.cjs.map +1 -1
  367. package/cjs/components/TextInput/TextInput.cjs +6 -5
  368. package/cjs/components/TextInput/TextInput.cjs.map +1 -1
  369. package/cjs/components/Textarea/Autosize.cjs.map +1 -1
  370. package/cjs/components/ThemeIcon/ThemeIcon.cjs +14 -13
  371. package/cjs/components/ThemeIcon/ThemeIcon.cjs.map +1 -1
  372. package/cjs/components/Timeline/Timeline.cjs.map +1 -1
  373. package/cjs/components/Timeline/TimelineItem/TimelineItem.cjs.map +1 -1
  374. package/cjs/components/Title/Title.cjs +1 -1
  375. package/cjs/components/Title/Title.cjs.map +1 -1
  376. package/cjs/components/Tooltip/Tooltip.cjs.map +1 -1
  377. package/cjs/components/Tooltip/TooltipFloating/TooltipFloating.cjs +2 -2
  378. package/cjs/components/Tooltip/TooltipFloating/TooltipFloating.cjs.map +1 -1
  379. package/cjs/components/Tooltip/TooltipFloating/use-floating-tooltip.cjs +1 -0
  380. package/cjs/components/Tooltip/TooltipFloating/use-floating-tooltip.cjs.map +1 -1
  381. package/cjs/components/Tooltip/TooltipGroup/TooltipGroup.cjs.map +1 -1
  382. package/cjs/components/Tooltip/use-tooltip.cjs.map +1 -1
  383. package/cjs/components/Transition/Transition.cjs.map +1 -1
  384. package/cjs/components/Transition/use-transition.cjs.map +1 -1
  385. package/cjs/components/Tree/FlatTreeNode.cjs.map +1 -1
  386. package/cjs/components/Tree/Tree.cjs +2 -1
  387. package/cjs/components/Tree/Tree.cjs.map +1 -1
  388. package/cjs/components/Tree/TreeNode.cjs.map +1 -1
  389. package/cjs/components/Tree/use-tree-node-drag-drop.cjs.map +1 -1
  390. package/cjs/components/Tree/use-tree.cjs.map +1 -1
  391. package/cjs/components/TreeSelect/TreeSelect.cjs +14 -9
  392. package/cjs/components/TreeSelect/TreeSelect.cjs.map +1 -1
  393. package/cjs/components/TreeSelect/TreeSelectOption.cjs.map +1 -1
  394. package/cjs/components/Typography/Typography.cjs +12 -11
  395. package/cjs/components/Typography/Typography.cjs.map +1 -1
  396. package/cjs/components/Typography/Typography.module.cjs.map +1 -1
  397. package/cjs/components/UnstyledButton/UnstyledButton.cjs +12 -11
  398. package/cjs/components/UnstyledButton/UnstyledButton.cjs.map +1 -1
  399. package/cjs/components/VisuallyHidden/VisuallyHidden.cjs +12 -11
  400. package/cjs/components/VisuallyHidden/VisuallyHidden.cjs.map +1 -1
  401. package/cjs/core/Box/Box.cjs.map +1 -1
  402. package/cjs/core/Box/use-random-classname/use-random-classname.cjs.map +1 -1
  403. package/cjs/core/DirectionProvider/DirectionProvider.cjs +3 -2
  404. package/cjs/core/DirectionProvider/DirectionProvider.cjs.map +1 -1
  405. package/cjs/core/InlineStyles/InlineStyles.cjs.map +1 -1
  406. package/cjs/core/MantineProvider/Mantine.context.cjs.map +1 -1
  407. package/cjs/core/MantineProvider/MantineCssVariables/MantineCssVariables.cjs +4 -2
  408. package/cjs/core/MantineProvider/MantineCssVariables/MantineCssVariables.cjs.map +1 -1
  409. package/cjs/core/MantineProvider/MantineProvider.cjs +3 -3
  410. package/cjs/core/MantineProvider/MantineProvider.cjs.map +1 -1
  411. package/cjs/core/MantineProvider/MantineThemeProvider/MantineThemeProvider.cjs.map +1 -1
  412. package/cjs/core/MantineProvider/color-functions/get-contrast-color/get-contrast-color.cjs.map +1 -1
  413. package/cjs/core/MantineProvider/merge-mantine-theme/merge-mantine-theme.cjs.map +1 -1
  414. package/cjs/core/MantineProvider/use-mantine-color-scheme/use-computed-color-scheme.cjs.map +1 -1
  415. package/cjs/core/MantineProvider/use-mantine-color-scheme/use-mantine-color-scheme.cjs +2 -1
  416. package/cjs/core/MantineProvider/use-mantine-color-scheme/use-mantine-color-scheme.cjs.map +1 -1
  417. package/cjs/core/MantineProvider/use-mantine-color-scheme/use-provider-color-scheme.cjs.map +1 -1
  418. package/cjs/core/MantineProvider/use-matches/use-matches.cjs.map +1 -1
  419. package/cjs/core/styles-api/use-styles/get-class-name/get-class-name.cjs.map +1 -1
  420. package/cjs/core/styles-api/use-styles/get-class-name/get-global-class-names/get-global-class-names.cjs.map +1 -1
  421. package/cjs/core/styles-api/use-styles/get-class-name/resolve-class-names/resolve-class-names.cjs.map +1 -1
  422. package/cjs/core/utils/create-safe-context/create-safe-context.cjs.map +1 -1
  423. package/cjs/core/utils/create-scoped-keydown-handler/create-scoped-keydown-handler.cjs +0 -1
  424. package/cjs/core/utils/create-scoped-keydown-handler/create-scoped-keydown-handler.cjs.map +1 -1
  425. package/cjs/core/utils/deep-merge/deep-merge.cjs +4 -3
  426. package/cjs/core/utils/deep-merge/deep-merge.cjs.map +1 -1
  427. package/cjs/core/utils/use-hovered/use-hovered.cjs.map +1 -1
  428. package/cjs/index.cjs +6 -0
  429. package/cjs/utils/Floating/use-context-menu-handlers.cjs.map +1 -1
  430. package/cjs/utils/Floating/use-delayed-hover.cjs.map +1 -1
  431. package/cjs/utils/InlineInput/InlineInput.cjs.map +1 -1
  432. package/cjs/utils/InputsGroupFieldset/InputsGroupFieldset.cjs.map +1 -1
  433. package/esm/components/Accordion/Accordion.mjs.map +1 -1
  434. package/esm/components/Accordion/AccordionChevron.mjs.map +1 -1
  435. package/esm/components/Accordion/AccordionControl/AccordionControl.mjs.map +1 -1
  436. package/esm/components/Accordion/AccordionItem/AccordionItem.mjs.map +1 -1
  437. package/esm/components/Accordion/AccordionPanel/AccordionPanel.mjs.map +1 -1
  438. package/esm/components/ActionBar/ActionBar.context.mjs +8 -0
  439. package/esm/components/ActionBar/ActionBar.context.mjs.map +1 -0
  440. package/esm/components/ActionBar/ActionBar.mjs +94 -0
  441. package/esm/components/ActionBar/ActionBar.mjs.map +1 -0
  442. package/esm/components/ActionBar/ActionBar.module.mjs +10 -0
  443. package/esm/components/ActionBar/ActionBar.module.mjs.map +1 -0
  444. package/esm/components/ActionBar/ActionBarCloseButton/ActionBarCloseButton.mjs +33 -0
  445. package/esm/components/ActionBar/ActionBarCloseButton/ActionBarCloseButton.mjs.map +1 -0
  446. package/esm/components/ActionBar/ActionBarDivider/ActionBarDivider.mjs +30 -0
  447. package/esm/components/ActionBar/ActionBarDivider/ActionBarDivider.mjs.map +1 -0
  448. package/esm/components/ActionIcon/ActionIcon.mjs.map +1 -1
  449. package/esm/components/ActionIcon/ActionIconGroup/ActionIconGroup.mjs +16 -15
  450. package/esm/components/ActionIcon/ActionIconGroup/ActionIconGroup.mjs.map +1 -1
  451. package/esm/components/ActionIcon/ActionIconGroupSection/ActionIconGroupSection.mjs +15 -14
  452. package/esm/components/ActionIcon/ActionIconGroupSection/ActionIconGroupSection.mjs.map +1 -1
  453. package/esm/components/Affix/Affix.mjs.map +1 -1
  454. package/esm/components/Alert/Alert.mjs.map +1 -1
  455. package/esm/components/AngleSlider/AngleSlider.mjs +5 -4
  456. package/esm/components/AngleSlider/AngleSlider.mjs.map +1 -1
  457. package/esm/components/AppShell/AppShell.mjs.map +1 -1
  458. package/esm/components/AppShell/AppShellMain/AppShellMain.mjs +2 -1
  459. package/esm/components/AppShell/AppShellMain/AppShellMain.mjs.map +1 -1
  460. package/esm/components/AspectRatio/AspectRatio.mjs +14 -13
  461. package/esm/components/AspectRatio/AspectRatio.mjs.map +1 -1
  462. package/esm/components/Autocomplete/Autocomplete.mjs.map +1 -1
  463. package/esm/components/Avatar/Avatar.mjs.map +1 -1
  464. package/esm/components/Avatar/AvatarGroup/AvatarGroup.mjs.map +1 -1
  465. package/esm/components/Avatar/AvatarPlaceholderIcon.mjs.map +1 -1
  466. package/esm/components/BackgroundImage/BackgroundImage.mjs +14 -13
  467. package/esm/components/BackgroundImage/BackgroundImage.mjs.map +1 -1
  468. package/esm/components/Badge/Badge.mjs.map +1 -1
  469. package/esm/components/Blockquote/Blockquote.mjs +6 -5
  470. package/esm/components/Blockquote/Blockquote.mjs.map +1 -1
  471. package/esm/components/Breadcrumbs/Breadcrumbs.mjs.map +1 -1
  472. package/esm/components/Burger/Burger.mjs.map +1 -1
  473. package/esm/components/Button/Button.mjs.map +1 -1
  474. package/esm/components/Button/ButtonGroup/ButtonGroup.mjs +16 -15
  475. package/esm/components/Button/ButtonGroup/ButtonGroup.mjs.map +1 -1
  476. package/esm/components/Button/ButtonGroupSection/ButtonGroupSection.mjs +15 -14
  477. package/esm/components/Button/ButtonGroupSection/ButtonGroupSection.mjs.map +1 -1
  478. package/esm/components/Card/Card.mjs.map +1 -1
  479. package/esm/components/Cascader/Cascader.mjs +10 -5
  480. package/esm/components/Cascader/Cascader.mjs.map +1 -1
  481. package/esm/components/Cascader/CascaderColumns.mjs +2 -1
  482. package/esm/components/Cascader/CascaderColumns.mjs.map +1 -1
  483. package/esm/components/Cascader/get-cascader-columns.mjs.map +1 -1
  484. package/esm/components/Checkbox/CheckIcon.mjs +6 -5
  485. package/esm/components/Checkbox/CheckIcon.mjs.map +1 -1
  486. package/esm/components/Checkbox/Checkbox.mjs +1 -1
  487. package/esm/components/Checkbox/Checkbox.mjs.map +1 -1
  488. package/esm/components/Checkbox/CheckboxCard/CheckboxCard.mjs +2 -1
  489. package/esm/components/Checkbox/CheckboxCard/CheckboxCard.mjs.map +1 -1
  490. package/esm/components/Checkbox/CheckboxGroup/CheckboxGroup.mjs.map +1 -1
  491. package/esm/components/Checkbox/CheckboxIndicator/CheckboxIndicator.mjs.map +1 -1
  492. package/esm/components/Chip/Chip.mjs.map +1 -1
  493. package/esm/components/CloseButton/CloseButton.mjs.map +1 -1
  494. package/esm/components/CloseButton/CloseIcon.mjs.map +1 -1
  495. package/esm/components/Collapse/Collapse.mjs.map +1 -1
  496. package/esm/components/ColorInput/ColorInput.mjs.map +1 -1
  497. package/esm/components/ColorInput/EyeDropperIcon.mjs.map +1 -1
  498. package/esm/components/ColorPicker/ColorPicker.mjs.map +1 -1
  499. package/esm/components/ColorPicker/ColorSlider/ColorSlider.mjs +4 -6
  500. package/esm/components/ColorPicker/ColorSlider/ColorSlider.mjs.map +1 -1
  501. package/esm/components/ColorPicker/Saturation/Saturation.mjs +4 -6
  502. package/esm/components/ColorPicker/Saturation/Saturation.mjs.map +1 -1
  503. package/esm/components/ColorPicker/Swatches/Swatches.mjs.map +1 -1
  504. package/esm/components/ColorSwatch/ColorSwatch.mjs.map +1 -1
  505. package/esm/components/Combobox/Combobox.mjs.map +1 -1
  506. package/esm/components/Combobox/ComboboxChevron/ComboboxChevron.mjs.map +1 -1
  507. package/esm/components/Combobox/ComboboxEmpty/ComboboxEmpty.mjs +2 -1
  508. package/esm/components/Combobox/ComboboxEmpty/ComboboxEmpty.mjs.map +1 -1
  509. package/esm/components/Combobox/ComboboxEventsTarget/ComboboxEventsTarget.mjs +10 -9
  510. package/esm/components/Combobox/ComboboxEventsTarget/ComboboxEventsTarget.mjs.map +1 -1
  511. package/esm/components/Combobox/ComboboxFooter/ComboboxFooter.mjs +2 -1
  512. package/esm/components/Combobox/ComboboxFooter/ComboboxFooter.mjs.map +1 -1
  513. package/esm/components/Combobox/ComboboxGroup/ComboboxGroup.mjs.map +1 -1
  514. package/esm/components/Combobox/ComboboxHeader/ComboboxHeader.mjs +2 -1
  515. package/esm/components/Combobox/ComboboxHeader/ComboboxHeader.mjs.map +1 -1
  516. package/esm/components/Combobox/ComboboxTarget/ComboboxTarget.mjs +10 -9
  517. package/esm/components/Combobox/ComboboxTarget/ComboboxTarget.mjs.map +1 -1
  518. package/esm/components/Combobox/OptionsDropdown/OptionsDropdown.mjs.map +1 -1
  519. package/esm/components/Combobox/OptionsDropdown/default-options-filter.mjs.map +1 -1
  520. package/esm/components/Combobox/get-options-lockup/get-option-by-label.mjs +17 -0
  521. package/esm/components/Combobox/get-options-lockup/get-option-by-label.mjs.map +1 -0
  522. package/esm/components/Combobox/is-external-input-change/is-external-input-change.mjs +17 -0
  523. package/esm/components/Combobox/is-external-input-change/is-external-input-change.mjs.map +1 -0
  524. package/esm/components/Combobox/use-combobox/get-index/get-index.mjs.map +1 -1
  525. package/esm/components/Combobox/use-combobox/get-index/get-virtualized-index.mjs.map +1 -1
  526. package/esm/components/Combobox/use-combobox-target-props/use-combobox-target-props.mjs.map +1 -1
  527. package/esm/components/ComboboxPopover/ComboboxPopover.mjs.map +1 -1
  528. package/esm/components/ComboboxPopover/ComboboxPopoverTarget.mjs +13 -12
  529. package/esm/components/ComboboxPopover/ComboboxPopoverTarget.mjs.map +1 -1
  530. package/esm/components/DataList/DataList.mjs.map +1 -1
  531. package/esm/components/Dialog/Dialog.mjs.map +1 -1
  532. package/esm/components/Divider/Divider.mjs.map +1 -1
  533. package/esm/components/Drawer/Drawer.mjs.map +1 -1
  534. package/esm/components/Drawer/DrawerBody.mjs +2 -1
  535. package/esm/components/Drawer/DrawerBody.mjs.map +1 -1
  536. package/esm/components/Drawer/DrawerCloseButton.mjs +2 -1
  537. package/esm/components/Drawer/DrawerCloseButton.mjs.map +1 -1
  538. package/esm/components/Drawer/DrawerContent.mjs.map +1 -1
  539. package/esm/components/Drawer/DrawerHeader.mjs +2 -1
  540. package/esm/components/Drawer/DrawerHeader.mjs.map +1 -1
  541. package/esm/components/Drawer/DrawerOverlay.mjs +2 -1
  542. package/esm/components/Drawer/DrawerOverlay.mjs.map +1 -1
  543. package/esm/components/Drawer/DrawerRoot.mjs.map +1 -1
  544. package/esm/components/Drawer/DrawerTitle.mjs +2 -1
  545. package/esm/components/Drawer/DrawerTitle.mjs.map +1 -1
  546. package/esm/components/EmptyState/EmptyState.mjs.map +1 -1
  547. package/esm/components/EmptyState/EmptyStateActions/EmptyStateActions.mjs +2 -1
  548. package/esm/components/EmptyState/EmptyStateActions/EmptyStateActions.mjs.map +1 -1
  549. package/esm/components/EmptyState/EmptyStateDescription/EmptyStateDescription.mjs +2 -1
  550. package/esm/components/EmptyState/EmptyStateDescription/EmptyStateDescription.mjs.map +1 -1
  551. package/esm/components/Fieldset/Fieldset.mjs.map +1 -1
  552. package/esm/components/FileInput/FileInput.mjs.map +1 -1
  553. package/esm/components/FloatingWindow/FloatingWindow.mjs.map +1 -1
  554. package/esm/components/FocusTrap/FocusTrap.mjs +2 -1
  555. package/esm/components/FocusTrap/FocusTrap.mjs.map +1 -1
  556. package/esm/components/Grid/Grid.mjs.map +1 -1
  557. package/esm/components/Group/Group.mjs +16 -14
  558. package/esm/components/Group/Group.mjs.map +1 -1
  559. package/esm/components/Highlight/Highlight.mjs.map +1 -1
  560. package/esm/components/HoverCard/HoverCard.mjs.map +1 -1
  561. package/esm/components/HoverCard/HoverCardGroup/HoverCardGroup.mjs.map +1 -1
  562. package/esm/components/HoverCard/HoverCardTarget/HoverCardTarget.mjs.map +1 -1
  563. package/esm/components/Indicator/Indicator.mjs.map +1 -1
  564. package/esm/components/Input/Input.mjs +3 -3
  565. package/esm/components/Input/Input.mjs.map +1 -1
  566. package/esm/components/Input/InputClearSection/InputClearSection.mjs.map +1 -1
  567. package/esm/components/Input/InputDescription/InputDescription.mjs +2 -1
  568. package/esm/components/Input/InputDescription/InputDescription.mjs.map +1 -1
  569. package/esm/components/Input/InputError/InputError.mjs +2 -1
  570. package/esm/components/Input/InputError/InputError.mjs.map +1 -1
  571. package/esm/components/Input/InputLabel/InputLabel.mjs.map +1 -1
  572. package/esm/components/Input/InputPlaceholder/InputPlaceholder.mjs +13 -12
  573. package/esm/components/Input/InputPlaceholder/InputPlaceholder.mjs.map +1 -1
  574. package/esm/components/Input/InputSuccess/InputSuccess.mjs +2 -1
  575. package/esm/components/Input/InputSuccess/InputSuccess.mjs.map +1 -1
  576. package/esm/components/Input/InputWrapper/InputWrapper.mjs.map +1 -1
  577. package/esm/components/InputBase/InputBase.mjs.map +1 -1
  578. package/esm/components/Kbd/Kbd.mjs +14 -13
  579. package/esm/components/Kbd/Kbd.mjs.map +1 -1
  580. package/esm/components/List/List.mjs.map +1 -1
  581. package/esm/components/List/ListItem/ListItem.mjs.map +1 -1
  582. package/esm/components/Loader/loaders/Bars.mjs.map +1 -1
  583. package/esm/components/Loader/loaders/Dots.mjs.map +1 -1
  584. package/esm/components/LoadingOverlay/LoadingOverlay.mjs.map +1 -1
  585. package/esm/components/Mark/Mark.mjs +14 -13
  586. package/esm/components/Mark/Mark.mjs.map +1 -1
  587. package/esm/components/Marquee/Marquee.mjs.map +1 -1
  588. package/esm/components/MaskInput/MaskInput.mjs +3 -2
  589. package/esm/components/MaskInput/MaskInput.mjs.map +1 -1
  590. package/esm/components/Menu/Menu.mjs.map +1 -1
  591. package/esm/components/Menu/MenuCheckboxGroup/MenuCheckboxGroup.mjs +4 -3
  592. package/esm/components/Menu/MenuCheckboxGroup/MenuCheckboxGroup.mjs.map +1 -1
  593. package/esm/components/Menu/MenuCheckboxItem/MenuCheckboxItem.mjs +2 -1
  594. package/esm/components/Menu/MenuCheckboxItem/MenuCheckboxItem.mjs.map +1 -1
  595. package/esm/components/Menu/MenuContextMenu/MenuContextMenu.mjs +3 -2
  596. package/esm/components/Menu/MenuContextMenu/MenuContextMenu.mjs.map +1 -1
  597. package/esm/components/Menu/MenuDivider/MenuDivider.mjs +2 -1
  598. package/esm/components/Menu/MenuDivider/MenuDivider.mjs.map +1 -1
  599. package/esm/components/Menu/MenuDropdown/MenuDropdown.mjs.map +1 -1
  600. package/esm/components/Menu/MenuItem/MenuItem.mjs.map +1 -1
  601. package/esm/components/Menu/MenuLabel/MenuLabel.mjs +2 -1
  602. package/esm/components/Menu/MenuLabel/MenuLabel.mjs.map +1 -1
  603. package/esm/components/Menu/MenuRadioItem/MenuRadioItem.mjs +2 -1
  604. package/esm/components/Menu/MenuRadioItem/MenuRadioItem.mjs.map +1 -1
  605. package/esm/components/Menu/MenuSelectableItem/MenuSelectableItem.mjs.map +1 -1
  606. package/esm/components/Menu/MenuSub/MenuSub.mjs.map +1 -1
  607. package/esm/components/Menu/MenuSubItem/MenuSubItem.mjs.map +1 -1
  608. package/esm/components/Menu/MenuTarget/MenuTarget.mjs.map +1 -1
  609. package/esm/components/Menubar/Menubar.mjs.map +1 -1
  610. package/esm/components/Menubar/MenubarMenu/MenubarMenu.mjs.map +1 -1
  611. package/esm/components/Menubar/MenubarTarget/MenubarTarget.mjs.map +1 -1
  612. package/esm/components/Modal/Modal.mjs.map +1 -1
  613. package/esm/components/Modal/ModalBody.mjs +2 -1
  614. package/esm/components/Modal/ModalBody.mjs.map +1 -1
  615. package/esm/components/Modal/ModalCloseButton.mjs +2 -1
  616. package/esm/components/Modal/ModalCloseButton.mjs.map +1 -1
  617. package/esm/components/Modal/ModalContent.mjs.map +1 -1
  618. package/esm/components/Modal/ModalHeader.mjs +2 -1
  619. package/esm/components/Modal/ModalHeader.mjs.map +1 -1
  620. package/esm/components/Modal/ModalOverlay.mjs +2 -1
  621. package/esm/components/Modal/ModalOverlay.mjs.map +1 -1
  622. package/esm/components/Modal/ModalRoot.mjs.map +1 -1
  623. package/esm/components/Modal/ModalTitle.mjs +2 -1
  624. package/esm/components/Modal/ModalTitle.mjs.map +1 -1
  625. package/esm/components/ModalBase/ModalBase.mjs.map +1 -1
  626. package/esm/components/ModalBase/ModalBaseContent.mjs.map +1 -1
  627. package/esm/components/ModalBase/ModalBaseOverlay.mjs.map +1 -1
  628. package/esm/components/ModalBase/use-modal.mjs +2 -1
  629. package/esm/components/ModalBase/use-modal.mjs.map +1 -1
  630. package/esm/components/MultiSelect/MultiSelect.mjs +9 -0
  631. package/esm/components/MultiSelect/MultiSelect.mjs.map +1 -1
  632. package/esm/components/NativeSelect/NativeSelect.mjs.map +1 -1
  633. package/esm/components/NativeSelect/NativeSelectOption.mjs.map +1 -1
  634. package/esm/components/NavLink/NavLink.mjs.map +1 -1
  635. package/esm/components/Notification/Notification.mjs +3 -3
  636. package/esm/components/Notification/Notification.mjs.map +1 -1
  637. package/esm/components/NumberInput/NumberInput.mjs +5 -3
  638. package/esm/components/NumberInput/NumberInput.mjs.map +1 -1
  639. package/esm/components/NumberInput/NumberInputChevron.mjs.map +1 -1
  640. package/esm/components/OverflowList/OverflowList.mjs +4 -2
  641. package/esm/components/OverflowList/OverflowList.mjs.map +1 -1
  642. package/esm/components/Overlay/Overlay.mjs +14 -13
  643. package/esm/components/Overlay/Overlay.mjs.map +1 -1
  644. package/esm/components/Pagination/Pagination.icons.mjs.map +1 -1
  645. package/esm/components/Pagination/Pagination.mjs +2 -1
  646. package/esm/components/Pagination/Pagination.mjs.map +1 -1
  647. package/esm/components/Pagination/PaginationDots/PaginationDots.mjs +2 -1
  648. package/esm/components/Pagination/PaginationDots/PaginationDots.mjs.map +1 -1
  649. package/esm/components/Pagination/PaginationEdges/PaginationEdges.mjs.map +1 -1
  650. package/esm/components/Pagination/PaginationItems/PaginationItems.mjs +3 -2
  651. package/esm/components/Pagination/PaginationItems/PaginationItems.mjs.map +1 -1
  652. package/esm/components/Pagination/PaginationLabel/PaginationLabel.mjs.map +1 -1
  653. package/esm/components/Pagination/PaginationRoot/PaginationRoot.mjs.map +1 -1
  654. package/esm/components/Paper/Paper.mjs +1 -1
  655. package/esm/components/Paper/Paper.mjs.map +1 -1
  656. package/esm/components/PasswordInput/PasswordInput.mjs.map +1 -1
  657. package/esm/components/PasswordInput/PasswordToggleIcon.mjs.map +1 -1
  658. package/esm/components/Pill/Pill.mjs.map +1 -1
  659. package/esm/components/Pill/PillGroup/PillGroup.mjs.map +1 -1
  660. package/esm/components/PillsInput/PillsInput.mjs.map +1 -1
  661. package/esm/components/PinInput/PinInput.mjs +6 -5
  662. package/esm/components/PinInput/PinInput.mjs.map +1 -1
  663. package/esm/components/Popover/Popover.mjs.map +1 -1
  664. package/esm/components/Popover/PopoverContextMenu/PopoverContextMenu.mjs +3 -2
  665. package/esm/components/Popover/PopoverContextMenu/PopoverContextMenu.mjs.map +1 -1
  666. package/esm/components/Popover/PopoverDropdown/PopoverDropdown.mjs.map +1 -1
  667. package/esm/components/Popover/use-popover.mjs +16 -12
  668. package/esm/components/Popover/use-popover.mjs.map +1 -1
  669. package/esm/components/Progress/Progress.mjs.map +1 -1
  670. package/esm/components/Progress/ProgressLabel/ProgressLabel.mjs +2 -1
  671. package/esm/components/Progress/ProgressLabel/ProgressLabel.mjs.map +1 -1
  672. package/esm/components/Progress/ProgressRoot/ProgressRoot.mjs.map +1 -1
  673. package/esm/components/Radio/Radio.mjs.map +1 -1
  674. package/esm/components/Radio/RadioCard/RadioCard.mjs.map +1 -1
  675. package/esm/components/Radio/RadioGroup/RadioGroup.mjs.map +1 -1
  676. package/esm/components/Radio/RadioIcon.mjs.map +1 -1
  677. package/esm/components/Radio/RadioIndicator/RadioIndicator.mjs.map +1 -1
  678. package/esm/components/Rating/Rating.mjs +6 -3
  679. package/esm/components/Rating/Rating.mjs.map +1 -1
  680. package/esm/components/Rating/RatingItem/RatingItem.mjs.map +1 -1
  681. package/esm/components/Rating/StarSymbol/StarIcon.mjs.map +1 -1
  682. package/esm/components/Rating/StarSymbol/StarSymbol.mjs +2 -1
  683. package/esm/components/Rating/StarSymbol/StarSymbol.mjs.map +1 -1
  684. package/esm/components/RingProgress/Curve/Curve.mjs.map +1 -1
  685. package/esm/components/RingProgress/RingProgress.mjs.map +1 -1
  686. package/esm/components/RollingNumber/DigitColumn.mjs.map +1 -1
  687. package/esm/components/RollingNumber/RollingNumber.mjs +20 -14
  688. package/esm/components/RollingNumber/RollingNumber.mjs.map +1 -1
  689. package/esm/components/RollingNumber/RollingNumber.module.mjs +1 -0
  690. package/esm/components/RollingNumber/RollingNumber.module.mjs.map +1 -1
  691. package/esm/components/ScrollArea/ScrollArea.mjs +8 -6
  692. package/esm/components/ScrollArea/ScrollArea.mjs.map +1 -1
  693. package/esm/components/ScrollArea/ScrollAreaRoot/ScrollAreaRoot.mjs.map +1 -1
  694. package/esm/components/ScrollArea/ScrollAreaScrollbar/Scrollbar.mjs.map +1 -1
  695. package/esm/components/ScrollArea/ScrollAreaViewport/ScrollAreaViewport.mjs.map +1 -1
  696. package/esm/components/Scroller/Scroller.mjs.map +1 -1
  697. package/esm/components/SegmentedControl/SegmentedControl.mjs.map +1 -1
  698. package/esm/components/Select/Select.mjs +12 -0
  699. package/esm/components/Select/Select.mjs.map +1 -1
  700. package/esm/components/SemiCircleProgress/SemiCircleProgress.mjs.map +1 -1
  701. package/esm/components/SimpleGrid/SimpleGrid.mjs.map +1 -1
  702. package/esm/components/SimpleGrid/SimpleGridVariables.mjs +10 -8
  703. package/esm/components/SimpleGrid/SimpleGridVariables.mjs.map +1 -1
  704. package/esm/components/Skeleton/Skeleton.mjs +14 -13
  705. package/esm/components/Skeleton/Skeleton.mjs.map +1 -1
  706. package/esm/components/Slider/Marks/Marks.mjs +3 -2
  707. package/esm/components/Slider/Marks/Marks.mjs.map +1 -1
  708. package/esm/components/Slider/RangeSlider/RangeSlider.mjs +20 -11
  709. package/esm/components/Slider/RangeSlider/RangeSlider.mjs.map +1 -1
  710. package/esm/components/Slider/Slider/Slider.mjs +6 -6
  711. package/esm/components/Slider/Slider/Slider.mjs.map +1 -1
  712. package/esm/components/Slider/Thumb/Thumb.mjs.map +1 -1
  713. package/esm/components/Slider/Track/Track.mjs.map +1 -1
  714. package/esm/components/Splitter/GripIcon.mjs.map +1 -1
  715. package/esm/components/Splitter/Splitter.mjs +8 -7
  716. package/esm/components/Splitter/Splitter.mjs.map +1 -1
  717. package/esm/components/Spoiler/Spoiler.mjs.map +1 -1
  718. package/esm/components/Stack/Stack.mjs +14 -13
  719. package/esm/components/Stack/Stack.mjs.map +1 -1
  720. package/esm/components/Stepper/Stepper.context.mjs.map +1 -1
  721. package/esm/components/Stepper/Stepper.mjs +6 -3
  722. package/esm/components/Stepper/Stepper.mjs.map +1 -1
  723. package/esm/components/Stepper/Stepper.module.mjs.map +1 -1
  724. package/esm/components/Stepper/StepperStep/StepperStep.mjs +3 -2
  725. package/esm/components/Stepper/StepperStep/StepperStep.mjs.map +1 -1
  726. package/esm/components/Switch/Switch.mjs.map +1 -1
  727. package/esm/components/Switch/SwitchGroup/SwitchGroup.mjs.map +1 -1
  728. package/esm/components/Table/Table.mjs +2 -2
  729. package/esm/components/Table/Table.mjs.map +1 -1
  730. package/esm/components/Table/TableScrollContainer.mjs.map +1 -1
  731. package/esm/components/TableOfContents/TableOfContents.mjs.map +1 -1
  732. package/esm/components/Tabs/Tabs.mjs.map +1 -1
  733. package/esm/components/Tabs/TabsPanel/TabsPanel.mjs.map +1 -1
  734. package/esm/components/Tabs/TabsTab/TabsTab.mjs.map +1 -1
  735. package/esm/components/TagsInput/TagsInput.mjs +5 -1
  736. package/esm/components/TagsInput/TagsInput.mjs.map +1 -1
  737. package/esm/components/Text/Text.mjs +18 -17
  738. package/esm/components/Text/Text.mjs.map +1 -1
  739. package/esm/components/TextInput/TextInput.mjs +6 -5
  740. package/esm/components/TextInput/TextInput.mjs.map +1 -1
  741. package/esm/components/ThemeIcon/ThemeIcon.mjs +14 -13
  742. package/esm/components/ThemeIcon/ThemeIcon.mjs.map +1 -1
  743. package/esm/components/Timeline/Timeline.mjs.map +1 -1
  744. package/esm/components/Timeline/TimelineItem/TimelineItem.mjs.map +1 -1
  745. package/esm/components/Title/Title.mjs +1 -1
  746. package/esm/components/Title/Title.mjs.map +1 -1
  747. package/esm/components/Tooltip/Tooltip.mjs.map +1 -1
  748. package/esm/components/Tooltip/TooltipFloating/TooltipFloating.mjs +2 -2
  749. package/esm/components/Tooltip/TooltipFloating/TooltipFloating.mjs.map +1 -1
  750. package/esm/components/Tooltip/TooltipFloating/use-floating-tooltip.mjs +1 -0
  751. package/esm/components/Tooltip/TooltipFloating/use-floating-tooltip.mjs.map +1 -1
  752. package/esm/components/Tooltip/TooltipGroup/TooltipGroup.mjs.map +1 -1
  753. package/esm/components/Transition/Transition.mjs.map +1 -1
  754. package/esm/components/Tree/FlatTreeNode.mjs.map +1 -1
  755. package/esm/components/Tree/Tree.mjs +2 -1
  756. package/esm/components/Tree/Tree.mjs.map +1 -1
  757. package/esm/components/Tree/TreeNode.mjs.map +1 -1
  758. package/esm/components/Tree/use-tree.mjs.map +1 -1
  759. package/esm/components/TreeSelect/TreeSelect.mjs +14 -9
  760. package/esm/components/TreeSelect/TreeSelect.mjs.map +1 -1
  761. package/esm/components/TreeSelect/TreeSelectOption.mjs.map +1 -1
  762. package/esm/components/Typography/Typography.mjs +12 -11
  763. package/esm/components/Typography/Typography.mjs.map +1 -1
  764. package/esm/components/Typography/Typography.module.mjs.map +1 -1
  765. package/esm/components/UnstyledButton/UnstyledButton.mjs +12 -11
  766. package/esm/components/UnstyledButton/UnstyledButton.mjs.map +1 -1
  767. package/esm/components/VisuallyHidden/VisuallyHidden.mjs +12 -11
  768. package/esm/components/VisuallyHidden/VisuallyHidden.mjs.map +1 -1
  769. package/esm/core/DirectionProvider/DirectionProvider.mjs +3 -2
  770. package/esm/core/DirectionProvider/DirectionProvider.mjs.map +1 -1
  771. package/esm/core/InlineStyles/InlineStyles.mjs.map +1 -1
  772. package/esm/core/MantineProvider/MantineCssVariables/MantineCssVariables.mjs +4 -2
  773. package/esm/core/MantineProvider/MantineCssVariables/MantineCssVariables.mjs.map +1 -1
  774. package/esm/core/MantineProvider/MantineProvider.mjs +3 -3
  775. package/esm/core/MantineProvider/MantineProvider.mjs.map +1 -1
  776. package/esm/core/MantineProvider/color-functions/get-contrast-color/get-contrast-color.mjs.map +1 -1
  777. package/esm/core/MantineProvider/merge-mantine-theme/merge-mantine-theme.mjs.map +1 -1
  778. package/esm/core/MantineProvider/use-mantine-color-scheme/use-mantine-color-scheme.mjs +2 -1
  779. package/esm/core/MantineProvider/use-mantine-color-scheme/use-mantine-color-scheme.mjs.map +1 -1
  780. package/esm/core/utils/create-scoped-keydown-handler/create-scoped-keydown-handler.mjs +0 -1
  781. package/esm/core/utils/create-scoped-keydown-handler/create-scoped-keydown-handler.mjs.map +1 -1
  782. package/esm/core/utils/deep-merge/deep-merge.mjs +4 -3
  783. package/esm/core/utils/deep-merge/deep-merge.mjs.map +1 -1
  784. package/esm/index.mjs +4 -1
  785. package/esm/utils/InlineInput/InlineInput.mjs.map +1 -1
  786. package/lib/components/Accordion/Accordion.d.ts +1 -1
  787. package/lib/components/Accordion/AccordionChevron.d.ts +1 -1
  788. package/lib/components/ActionBar/ActionBar.context.d.ts +8 -0
  789. package/lib/components/ActionBar/ActionBar.d.ts +44 -0
  790. package/lib/components/ActionBar/ActionBarCloseButton/ActionBarCloseButton.d.ts +22 -0
  791. package/lib/components/ActionBar/ActionBarDivider/ActionBarDivider.d.ts +16 -0
  792. package/lib/components/ActionBar/index.d.ts +17 -0
  793. package/lib/components/AppShell/AppShellMediaStyles/AppShellMediaStyles.d.ts +1 -1
  794. package/lib/components/Avatar/AvatarPlaceholderIcon.d.ts +1 -1
  795. package/lib/components/Cascader/CascaderColumns.d.ts +1 -1
  796. package/lib/components/Checkbox/CheckIcon.d.ts +2 -2
  797. package/lib/components/CloseButton/CloseIcon.d.ts +1 -1
  798. package/lib/components/ColorInput/EyeDropperIcon.d.ts +1 -1
  799. package/lib/components/ColorPicker/Saturation/Saturation.d.ts +1 -1
  800. package/lib/components/ColorPicker/Swatches/Swatches.d.ts +1 -1
  801. package/lib/components/ColorPicker/Thumb/Thumb.d.ts +1 -1
  802. package/lib/components/Combobox/Combobox.d.ts +1 -1
  803. package/lib/components/Combobox/ComboboxClearButton/ComboboxClearButton.d.ts +1 -1
  804. package/lib/components/Combobox/ComboboxHiddenInput/ComboboxHiddenInput.d.ts +1 -1
  805. package/lib/components/Combobox/OptionsDropdown/OptionsDropdown.d.ts +1 -1
  806. package/lib/components/Combobox/get-options-lockup/get-option-by-label.d.ts +8 -0
  807. package/lib/components/Combobox/is-external-input-change/is-external-input-change.d.ts +7 -0
  808. package/lib/components/ComboboxPopover/ComboboxPopover.d.ts +1 -1
  809. package/lib/components/CopyButton/CopyButton.d.ts +1 -1
  810. package/lib/components/Drawer/DrawerStack.d.ts +1 -1
  811. package/lib/components/FocusTrap/FocusTrap.d.ts +1 -1
  812. package/lib/components/Grid/GridCol/GridColVariables.d.ts +1 -1
  813. package/lib/components/Grid/GridVariables.d.ts +1 -1
  814. package/lib/components/HoverCard/HoverCard.d.ts +1 -1
  815. package/lib/components/HoverCard/HoverCardDropdown/HoverCardDropdown.d.ts +1 -1
  816. package/lib/components/HoverCard/HoverCardGroup/HoverCardGroup.d.ts +1 -1
  817. package/lib/components/HoverCard/HoverCardTarget/HoverCardTarget.d.ts +1 -1
  818. package/lib/components/Input/InputClearSection/InputClearSection.d.ts +1 -1
  819. package/lib/components/Input/index.d.ts +1 -1
  820. package/lib/components/Menu/Menu.d.ts +1 -1
  821. package/lib/components/Menu/MenuCheckboxGroup/MenuCheckboxGroup.d.ts +1 -1
  822. package/lib/components/Menu/MenuRadioGroup/MenuRadioGroup.d.ts +1 -1
  823. package/lib/components/Menu/MenuSelectableItem/MenuSelectableItem.d.ts +1 -1
  824. package/lib/components/Menu/MenuSub/MenuSub.d.ts +1 -1
  825. package/lib/components/Menu/MenuSubTarget/MenuSubTarget.d.ts +1 -1
  826. package/lib/components/Menu/MenuTarget/MenuTarget.d.ts +1 -1
  827. package/lib/components/Menubar/MenubarDropdown/MenubarDropdown.d.ts +1 -1
  828. package/lib/components/Menubar/MenubarMenu/MenubarMenu.d.ts +1 -1
  829. package/lib/components/Menubar/MenubarTarget/MenubarTarget.d.ts +1 -1
  830. package/lib/components/Modal/ModalStack.d.ts +1 -1
  831. package/lib/components/ModalBase/ModalBase.d.ts +1 -1
  832. package/lib/components/ModalBase/ModalBaseBody.d.ts +1 -1
  833. package/lib/components/ModalBase/ModalBaseCloseButton.d.ts +1 -1
  834. package/lib/components/ModalBase/ModalBaseContent.d.ts +1 -1
  835. package/lib/components/ModalBase/ModalBaseHeader.d.ts +1 -1
  836. package/lib/components/ModalBase/ModalBaseOverlay.d.ts +1 -1
  837. package/lib/components/ModalBase/ModalBaseTitle.d.ts +1 -1
  838. package/lib/components/ModalBase/NativeScrollArea.d.ts +1 -1
  839. package/lib/components/NativeSelect/NativeSelectOption.d.ts +1 -1
  840. package/lib/components/Notification/Notification.d.ts +2 -1
  841. package/lib/components/NumberFormatter/NumberFormatter.d.ts +1 -1
  842. package/lib/components/NumberInput/NumberInputChevron.d.ts +1 -1
  843. package/lib/components/Pagination/Pagination.icons.d.ts +5 -5
  844. package/lib/components/Pagination/PaginationItems/PaginationItems.d.ts +1 -1
  845. package/lib/components/PasswordInput/PasswordToggleIcon.d.ts +1 -1
  846. package/lib/components/Popover/Popover.d.ts +2 -2
  847. package/lib/components/Progress/Progress.d.ts +1 -1
  848. package/lib/components/Radio/RadioIcon.d.ts +1 -1
  849. package/lib/components/Rating/RatingItem/RatingItem.d.ts +1 -1
  850. package/lib/components/Rating/StarSymbol/StarIcon.d.ts +1 -1
  851. package/lib/components/Rating/StarSymbol/StarSymbol.d.ts +1 -1
  852. package/lib/components/RingProgress/Curve/Curve.d.ts +1 -1
  853. package/lib/components/RollingNumber/DigitColumn.d.ts +1 -1
  854. package/lib/components/RollingNumber/RollingNumber.d.ts +1 -1
  855. package/lib/components/ScrollArea/ScrollAreaCorner/ScrollAreaCorner.d.ts +2 -2
  856. package/lib/components/ScrollArea/ScrollAreaRoot/ScrollAreaRoot.d.ts +1 -1
  857. package/lib/components/ScrollArea/ScrollAreaScrollbar/ScrollAreaScrollbar.d.ts +1 -1
  858. package/lib/components/ScrollArea/ScrollAreaScrollbar/ScrollAreaScrollbarAuto.d.ts +1 -1
  859. package/lib/components/ScrollArea/ScrollAreaScrollbar/ScrollAreaScrollbarHover.d.ts +1 -1
  860. package/lib/components/ScrollArea/ScrollAreaScrollbar/ScrollAreaScrollbarScroll.d.ts +1 -1
  861. package/lib/components/ScrollArea/ScrollAreaScrollbar/ScrollAreaScrollbarVisible.d.ts +1 -1
  862. package/lib/components/ScrollArea/ScrollAreaScrollbar/Scrollbar.d.ts +1 -1
  863. package/lib/components/ScrollArea/ScrollAreaScrollbar/ScrollbarX.d.ts +1 -1
  864. package/lib/components/ScrollArea/ScrollAreaScrollbar/ScrollbarY.d.ts +1 -1
  865. package/lib/components/ScrollArea/ScrollAreaThumb/ScrollAreaThumb.d.ts +2 -2
  866. package/lib/components/ScrollArea/ScrollAreaViewport/ScrollAreaViewport.d.ts +1 -1
  867. package/lib/components/SimpleGrid/SimpleGridVariables.d.ts +2 -2
  868. package/lib/components/Slider/Marks/Marks.d.ts +1 -1
  869. package/lib/components/Slider/SliderRoot/SliderRoot.d.ts +1 -1
  870. package/lib/components/Slider/Thumb/Thumb.d.ts +1 -1
  871. package/lib/components/Slider/Track/Track.d.ts +1 -1
  872. package/lib/components/Splitter/GripIcon.d.ts +2 -2
  873. package/lib/components/Stepper/Stepper.context.d.ts +1 -0
  874. package/lib/components/Stepper/Stepper.d.ts +3 -1
  875. package/lib/components/Table/TableDataRenderer.d.ts +1 -1
  876. package/lib/components/Textarea/Autosize.d.ts +1 -1
  877. package/lib/components/Tooltip/TooltipGroup/TooltipGroup.d.ts +1 -1
  878. package/lib/components/Transition/Transition.d.ts +1 -1
  879. package/lib/components/Tree/FlatTreeNode.d.ts +1 -1
  880. package/lib/components/Tree/Tree.d.ts +1 -1
  881. package/lib/components/Tree/TreeNode.d.ts +1 -1
  882. package/lib/components/TreeSelect/TreeSelectOption.d.ts +1 -1
  883. package/lib/components/index.d.ts +1 -0
  884. package/lib/core/DirectionProvider/DirectionProvider.d.ts +1 -1
  885. package/lib/core/InlineStyles/InlineStyles.d.ts +1 -1
  886. package/lib/core/MantineProvider/ColorSchemeScript/ColorSchemeScript.d.ts +1 -1
  887. package/lib/core/MantineProvider/MantineClasses/MantineClasses.d.ts +1 -1
  888. package/lib/core/MantineProvider/MantineCssVariables/MantineCssVariables.d.ts +1 -1
  889. package/lib/core/MantineProvider/MantineProvider.d.ts +5 -5
  890. package/lib/core/MantineProvider/MantineThemeProvider/MantineThemeProvider.d.ts +1 -1
  891. package/lib/utils/Floating/FloatingArrow/FloatingArrow.d.ts +1 -1
  892. package/lib/utils/InlineInput/InlineInput.d.ts +1 -1
  893. package/lib/utils/InputsGroupFieldset/InputsGroupFieldset.d.ts +1 -1
  894. package/package.json +5 -5
  895. package/styles/ActionBar.css +13 -0
  896. package/styles/ActionBar.layer.css +14 -0
  897. package/styles/RollingNumber.css +21 -0
  898. package/styles/RollingNumber.layer.css +21 -0
  899. package/styles/Stepper.css +30 -0
  900. package/styles/Stepper.layer.css +30 -0
  901. package/styles/Typography.css +59 -0
  902. package/styles/Typography.layer.css +59 -0
  903. package/styles.css +165 -41
  904. package/styles.layer.css +165 -41
@@ -10,7 +10,7 @@ import { DigitColumn } from "./DigitColumn.mjs";
10
10
  import { getRenderSlots } from "./get-render-slots.mjs";
11
11
  import RollingNumber_module_default from "./RollingNumber.module.mjs";
12
12
  import { useEffect, useRef } from "react";
13
- import { jsx } from "react/jsx-runtime";
13
+ import { jsx, jsxs } from "react/jsx-runtime";
14
14
  //#region packages/@mantine/core/src/components/RollingNumber/RollingNumber.tsx
15
15
  const defaultProps = {
16
16
  animationDuration: 600,
@@ -44,17 +44,19 @@ const RollingNumber = factory((_props) => {
44
44
  previousValueRef.current = value;
45
45
  });
46
46
  const valueDirection = value >= previousValue ? "up" : "down";
47
+ const current = getDigitParts({
48
+ value,
49
+ decimalScale,
50
+ fixedDecimalScale
51
+ });
52
+ const prev = getDigitParts({
53
+ value: previousValue,
54
+ decimalScale,
55
+ fixedDecimalScale
56
+ });
47
57
  const slots = getRenderSlots({
48
- current: getDigitParts({
49
- value,
50
- decimalScale,
51
- fixedDecimalScale
52
- }),
53
- previous: getDigitParts({
54
- value: previousValue,
55
- decimalScale,
56
- fixedDecimalScale
57
- }),
58
+ current,
59
+ previous: prev,
58
60
  prefix,
59
61
  suffix,
60
62
  decimalSeparator,
@@ -69,13 +71,17 @@ const RollingNumber = factory((_props) => {
69
71
  decimalScale,
70
72
  fixedDecimalScale
71
73
  });
72
- return /* @__PURE__ */ jsx(Box, {
74
+ return /* @__PURE__ */ jsxs(Box, {
73
75
  ...getStyles("root"),
74
76
  mod: [{ "tabular-numbers": tabularNumbers }, mod],
75
77
  role: withLiveRegion ? "status" : "img",
76
78
  "aria-label": accessibleValue,
77
79
  ...others,
78
- children: slots.map((slot) => {
80
+ children: [/* @__PURE__ */ jsx("span", {
81
+ ...getStyles("copyValue"),
82
+ "aria-hidden": "true",
83
+ children: accessibleValue
84
+ }), slots.map((slot) => {
79
85
  if (slot.type === "digit") return /* @__PURE__ */ jsx(DigitColumn, {
80
86
  digit: slot.digit,
81
87
  previousDigit: slot.previousDigit,
@@ -89,7 +95,7 @@ const RollingNumber = factory((_props) => {
89
95
  "aria-hidden": "true",
90
96
  children: slot.char
91
97
  }, slot.key);
92
- })
98
+ })]
93
99
  });
94
100
  });
95
101
  RollingNumber.classes = RollingNumber_module_default;
@@ -1 +1 @@
1
- {"version":3,"file":"RollingNumber.mjs","names":["classes"],"sources":["../../../src/components/RollingNumber/RollingNumber.tsx"],"sourcesContent":["import { useEffect, useRef } from 'react';\nimport {\n Box,\n BoxProps,\n createVarsResolver,\n ElementProps,\n factory,\n Factory,\n StylesApiProps,\n useProps,\n useStyles,\n} from '../../core';\nimport { buildValue } from './build-value';\nimport { DigitColumn } from './DigitColumn';\nimport { getDigitParts } from './get-digit-parts';\nimport { getRenderSlots } from './get-render-slots';\nimport classes from './RollingNumber.module.css';\n\nexport type RollingNumberStylesNames = 'root' | 'digit' | 'digitColumn' | 'char';\nexport type RollingNumberCssVariables = {\n root: '--rn-duration' | '--rn-timing-function';\n};\n\nexport interface RollingNumberProps\n extends BoxProps, StylesApiProps<RollingNumberFactory>, ElementProps<'div'> {\n /** Number value to display */\n value: number;\n\n /** Prefix added before the value */\n prefix?: string;\n\n /** Suffix added after the value */\n suffix?: string;\n\n /** Character used as a decimal separator @default '.' */\n decimalSeparator?: string;\n\n /** Character used to separate thousands, set to `true` for `,` @default false */\n thousandSeparator?: string | boolean;\n\n /** Number of decimal places to display */\n decimalScale?: number;\n\n /** If set, trailing zeros are added to match `decimalScale` @default false */\n fixedDecimalScale?: boolean;\n\n /** Animation duration in milliseconds @default 600 */\n animationDuration?: number;\n\n /** CSS timing function for animation @default 'ease' */\n timingFunction?: string;\n\n /** If set, use tabular (monospace) numbers @default true */\n tabularNumbers?: boolean;\n\n /** If set, the root element acts as an `aria-live=\"polite\"` region (`role=\"status\"`) and screen readers announce every value change. When `false`, the root uses `role=\"img\"` so the current value is still accessible but updates are not announced. @default false */\n withLiveRegion?: boolean;\n}\n\nexport type RollingNumberFactory = Factory<{\n props: RollingNumberProps;\n ref: HTMLDivElement;\n stylesNames: RollingNumberStylesNames;\n vars: RollingNumberCssVariables;\n}>;\n\nconst defaultProps = {\n animationDuration: 600,\n timingFunction: 'ease',\n decimalSeparator: '.',\n tabularNumbers: true,\n} satisfies Partial<RollingNumberProps>;\n\nconst varsResolver = createVarsResolver<RollingNumberFactory>(\n (_, { animationDuration, timingFunction }) => ({\n root: {\n '--rn-duration': `${animationDuration}ms`,\n '--rn-timing-function': timingFunction,\n },\n })\n);\n\nexport const RollingNumber = factory<RollingNumberFactory>((_props) => {\n const props = useProps('RollingNumber', defaultProps, _props);\n const {\n classNames,\n className,\n style,\n styles,\n unstyled,\n vars,\n value,\n prefix,\n suffix,\n decimalSeparator,\n thousandSeparator,\n decimalScale,\n fixedDecimalScale,\n animationDuration,\n timingFunction,\n tabularNumbers,\n withLiveRegion,\n mod,\n attributes,\n ...others\n } = props;\n\n const getStyles = useStyles<RollingNumberFactory>({\n name: 'RollingNumber',\n classes,\n props,\n className,\n style,\n classNames,\n styles,\n unstyled,\n attributes,\n vars,\n varsResolver,\n });\n\n const previousValueRef = useRef(value);\n const previousValue = previousValueRef.current;\n\n useEffect(() => {\n previousValueRef.current = value;\n });\n\n const valueDirection: 'up' | 'down' = value >= previousValue ? 'up' : 'down';\n\n const current = getDigitParts({ value, decimalScale, fixedDecimalScale });\n const prev = getDigitParts({ value: previousValue, decimalScale, fixedDecimalScale });\n\n const slots = getRenderSlots({\n current,\n previous: prev,\n prefix,\n suffix,\n decimalSeparator,\n thousandSeparator,\n });\n\n const accessibleValue = buildValue({\n value,\n prefix,\n suffix,\n decimalSeparator,\n thousandSeparator,\n decimalScale,\n fixedDecimalScale,\n });\n\n return (\n <Box\n {...getStyles('root')}\n mod={[{ 'tabular-numbers': tabularNumbers }, mod]}\n role={withLiveRegion ? 'status' : 'img'}\n aria-label={accessibleValue}\n {...others}\n >\n {slots.map((slot) => {\n if (slot.type === 'digit') {\n return (\n <DigitColumn\n key={slot.key}\n digit={slot.digit}\n previousDigit={slot.previousDigit}\n getStyles={getStyles}\n empty={slot.empty}\n valueDirection={valueDirection}\n />\n );\n }\n\n return (\n <span\n key={slot.key}\n {...getStyles('char')}\n data-empty={slot.empty || undefined}\n aria-hidden=\"true\"\n >\n {slot.char}\n </span>\n );\n })}\n </Box>\n );\n});\n\nRollingNumber.classes = classes;\nRollingNumber.varsResolver = varsResolver;\nRollingNumber.displayName = '@mantine/core/RollingNumber';\n"],"mappings":";;;;;;;;;;;;;;AAkEA,MAAM,eAAe;CACnB,mBAAmB;CACnB,gBAAgB;CAChB,kBAAkB;CAClB,gBAAgB;AAClB;AAEA,MAAM,eAAe,oBAClB,GAAG,EAAE,mBAAmB,sBAAsB,EAC7C,MAAM;CACJ,iBAAiB,GAAG,kBAAkB;CACtC,wBAAwB;AAC1B,EACF,EACF;AAEA,MAAa,gBAAgB,SAA+B,WAAW;CACrE,MAAM,QAAQ,SAAS,iBAAiB,cAAc,MAAM;CAC5D,MAAM,EACJ,YACA,WACA,OACA,QACA,UACA,MACA,OACA,QACA,QACA,kBACA,mBACA,cACA,mBACA,mBACA,gBACA,gBACA,gBACA,KACA,YACA,GAAG,WACD;CAEJ,MAAM,YAAY,UAAgC;EAChD,MAAM;EACN,SAAA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,CAAC;CAED,MAAM,mBAAmB,OAAO,KAAK;CACrC,MAAM,gBAAgB,iBAAiB;CAEvC,gBAAgB;EACd,iBAAiB,UAAU;CAC7B,CAAC;CAED,MAAM,iBAAgC,SAAS,gBAAgB,OAAO;CAKtE,MAAM,QAAQ,eAAe;EAC3B,SAJc,cAAc;GAAE;GAAO;GAAc;EAAkB,CAI/D;EACN,UAJW,cAAc;GAAE,OAAO;GAAe;GAAc;EAAkB,CAIpE;EACb;EACA;EACA;EACA;CACF,CAAC;CAED,MAAM,kBAAkB,WAAW;EACjC;EACA;EACA;EACA;EACA;EACA;EACA;CACF,CAAC;CAED,OACE,oBAAC,KAAD;EACE,GAAI,UAAU,MAAM;EACpB,KAAK,CAAC,EAAE,mBAAmB,eAAe,GAAG,GAAG;EAChD,MAAM,iBAAiB,WAAW;EAClC,cAAY;EACZ,GAAI;YAEH,MAAM,KAAK,SAAS;GACnB,IAAI,KAAK,SAAS,SAChB,OACE,oBAAC,aAAD;IAEE,OAAO,KAAK;IACZ,eAAe,KAAK;IACT;IACX,OAAO,KAAK;IACI;GACjB,GANM,KAAK,GAMX;GAIL,OACE,oBAAC,QAAD;IAEE,GAAI,UAAU,MAAM;IACpB,cAAY,KAAK,SAAS,KAAA;IAC1B,eAAY;cAEX,KAAK;GACF,GANC,KAAK,GAMN;EAEV,CAAC;CACE,CAAA;AAET,CAAC;AAED,cAAc,UAAUA;AACxB,cAAc,eAAe;AAC7B,cAAc,cAAc"}
1
+ {"version":3,"file":"RollingNumber.mjs","names":["classes"],"sources":["../../../src/components/RollingNumber/RollingNumber.tsx"],"sourcesContent":["import { useEffect, useRef } from 'react';\nimport {\n Box,\n BoxProps,\n createVarsResolver,\n ElementProps,\n factory,\n Factory,\n StylesApiProps,\n useProps,\n useStyles,\n} from '../../core';\nimport { buildValue } from './build-value';\nimport { DigitColumn } from './DigitColumn';\nimport { getDigitParts } from './get-digit-parts';\nimport { getRenderSlots } from './get-render-slots';\nimport classes from './RollingNumber.module.css';\n\nexport type RollingNumberStylesNames = 'root' | 'copyValue' | 'digit' | 'digitColumn' | 'char';\nexport type RollingNumberCssVariables = {\n root: '--rn-duration' | '--rn-timing-function';\n};\n\nexport interface RollingNumberProps\n extends BoxProps, StylesApiProps<RollingNumberFactory>, ElementProps<'div'> {\n /** Number value to display */\n value: number;\n\n /** Prefix added before the value */\n prefix?: string;\n\n /** Suffix added after the value */\n suffix?: string;\n\n /** Character used as a decimal separator @default '.' */\n decimalSeparator?: string;\n\n /** Character used to separate thousands, set to `true` for `,` @default false */\n thousandSeparator?: string | boolean;\n\n /** Number of decimal places to display */\n decimalScale?: number;\n\n /** If set, trailing zeros are added to match `decimalScale` @default false */\n fixedDecimalScale?: boolean;\n\n /** Animation duration in milliseconds @default 600 */\n animationDuration?: number;\n\n /** CSS timing function for animation @default 'ease' */\n timingFunction?: string;\n\n /** If set, use tabular (monospace) numbers @default true */\n tabularNumbers?: boolean;\n\n /** If set, the root element acts as an `aria-live=\"polite\"` region (`role=\"status\"`) and screen readers announce every value change. When `false`, the root uses `role=\"img\"` so the current value is still accessible but updates are not announced. @default false */\n withLiveRegion?: boolean;\n}\n\nexport type RollingNumberFactory = Factory<{\n props: RollingNumberProps;\n ref: HTMLDivElement;\n stylesNames: RollingNumberStylesNames;\n vars: RollingNumberCssVariables;\n}>;\n\nconst defaultProps = {\n animationDuration: 600,\n timingFunction: 'ease',\n decimalSeparator: '.',\n tabularNumbers: true,\n} satisfies Partial<RollingNumberProps>;\n\nconst varsResolver = createVarsResolver<RollingNumberFactory>(\n (_, { animationDuration, timingFunction }) => ({\n root: {\n '--rn-duration': `${animationDuration}ms`,\n '--rn-timing-function': timingFunction,\n },\n })\n);\n\nexport const RollingNumber = factory<RollingNumberFactory>((_props) => {\n const props = useProps('RollingNumber', defaultProps, _props);\n const {\n classNames,\n className,\n style,\n styles,\n unstyled,\n vars,\n value,\n prefix,\n suffix,\n decimalSeparator,\n thousandSeparator,\n decimalScale,\n fixedDecimalScale,\n animationDuration,\n timingFunction,\n tabularNumbers,\n withLiveRegion,\n mod,\n attributes,\n ...others\n } = props;\n\n const getStyles = useStyles<RollingNumberFactory>({\n name: 'RollingNumber',\n classes,\n props,\n className,\n style,\n classNames,\n styles,\n unstyled,\n attributes,\n vars,\n varsResolver,\n });\n\n const previousValueRef = useRef(value);\n const previousValue = previousValueRef.current;\n\n useEffect(() => {\n previousValueRef.current = value;\n });\n\n const valueDirection: 'up' | 'down' = value >= previousValue ? 'up' : 'down';\n\n const current = getDigitParts({ value, decimalScale, fixedDecimalScale });\n const prev = getDigitParts({ value: previousValue, decimalScale, fixedDecimalScale });\n\n const slots = getRenderSlots({\n current,\n previous: prev,\n prefix,\n suffix,\n decimalSeparator,\n thousandSeparator,\n });\n\n const accessibleValue = buildValue({\n value,\n prefix,\n suffix,\n decimalSeparator,\n thousandSeparator,\n decimalScale,\n fixedDecimalScale,\n });\n\n return (\n <Box\n {...getStyles('root')}\n mod={[{ 'tabular-numbers': tabularNumbers }, mod]}\n role={withLiveRegion ? 'status' : 'img'}\n aria-label={accessibleValue}\n {...others}\n >\n <span {...getStyles('copyValue')} aria-hidden=\"true\">\n {accessibleValue}\n </span>\n {slots.map((slot) => {\n if (slot.type === 'digit') {\n return (\n <DigitColumn\n key={slot.key}\n digit={slot.digit}\n previousDigit={slot.previousDigit}\n getStyles={getStyles}\n empty={slot.empty}\n valueDirection={valueDirection}\n />\n );\n }\n\n return (\n <span\n key={slot.key}\n {...getStyles('char')}\n data-empty={slot.empty || undefined}\n aria-hidden=\"true\"\n >\n {slot.char}\n </span>\n );\n })}\n </Box>\n );\n});\n\nRollingNumber.classes = classes;\nRollingNumber.varsResolver = varsResolver;\nRollingNumber.displayName = '@mantine/core/RollingNumber';\n"],"mappings":";;;;;;;;;;;;;;AAkEA,MAAM,eAAe;CACnB,mBAAmB;CACnB,gBAAgB;CAChB,kBAAkB;CAClB,gBAAgB;AAClB;AAEA,MAAM,eAAe,oBAClB,GAAG,EAAE,mBAAmB,sBAAsB,EAC7C,MAAM;CACJ,iBAAiB,GAAG,kBAAkB;CACtC,wBAAwB;AAC1B,EACF,EACF;AAEA,MAAa,gBAAgB,SAA+B,WAAW;CACrE,MAAM,QAAQ,SAAS,iBAAiB,cAAc,MAAM;CAC5D,MAAM,EACJ,YACA,WACA,OACA,QACA,UACA,MACA,OACA,QACA,QACA,kBACA,mBACA,cACA,mBACA,mBACA,gBACA,gBACA,gBACA,KACA,YACA,GAAG,WACD;CAEJ,MAAM,YAAY,UAAgC;EAChD,MAAM;EACN,SAAA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,CAAC;CAED,MAAM,mBAAmB,OAAO,KAAK;CACrC,MAAM,gBAAgB,iBAAiB;CAEvC,gBAAgB;EACd,iBAAiB,UAAU;CAC7B,CAAC;CAED,MAAM,iBAAgC,SAAS,gBAAgB,OAAO;CAEtE,MAAM,UAAU,cAAc;EAAE;EAAO;EAAc;CAAkB,CAAC;CACxE,MAAM,OAAO,cAAc;EAAE,OAAO;EAAe;EAAc;CAAkB,CAAC;CAEpF,MAAM,QAAQ,eAAe;EAC3B;EACA,UAAU;EACV;EACA;EACA;EACA;CACF,CAAC;CAED,MAAM,kBAAkB,WAAW;EACjC;EACA;EACA;EACA;EACA;EACA;EACA;CACF,CAAC;CAED,OACE,qBAAC,KAAD;EACE,GAAI,UAAU,MAAM;EACpB,KAAK,CAAC,EAAE,mBAAmB,eAAe,GAAG,GAAG;EAChD,MAAM,iBAAiB,WAAW;EAClC,cAAY;EACZ,GAAI;EALN,UAAA,CAOE,oBAAC,QAAD;GAAM,GAAI,UAAU,WAAW;GAAG,eAAY;GAC3C,UAAA;EACG,CAAA,GACL,MAAM,KAAK,SAAS;GACnB,IAAI,KAAK,SAAS,SAChB,OACE,oBAAC,aAAD;IAEE,OAAO,KAAK;IACZ,eAAe,KAAK;IACT;IACX,OAAO,KAAK;IACI;GACjB,GANM,KAAK,GAMX;GAIL,OACE,oBAAC,QAAD;IAEE,GAAI,UAAU,MAAM;IACpB,cAAY,KAAK,SAAS,KAAA;IAC1B,eAAY;IAEX,UAAA,KAAK;GACF,GANC,KAAK,GAMN;EAEV,CAAC,CACE;;AAET,CAAC;AAED,cAAc,UAAUA;AACxB,cAAc,eAAe;AAC7B,cAAc,cAAc"}
@@ -2,6 +2,7 @@
2
2
  //#region packages/@mantine/core/src/components/RollingNumber/RollingNumber.module.css
3
3
  var RollingNumber_module_default = {
4
4
  "root": "m_47dd3981",
5
+ "copyValue": "m_ccf525bd",
5
6
  "digit": "m_b301d46e",
6
7
  "digitColumn": "m_8ae40964",
7
8
  "mantine-rolling-number-roll": "m_18d73873",
@@ -1 +1 @@
1
- {"version":3,"file":"RollingNumber.module.mjs","names":[],"sources":["../../../src/components/RollingNumber/RollingNumber.module.css"],"sourcesContent":[".root {\n display: inline-flex;\n align-items: baseline;\n overflow: hidden;\n\n &[data-tabular-numbers] {\n font-variant-numeric: tabular-nums;\n }\n}\n\n.digit {\n display: inline-block;\n width: 1ch;\n height: 1em;\n overflow: hidden;\n line-height: 1;\n transition:\n width var(--rn-duration) var(--rn-timing-function),\n opacity var(--rn-duration) var(--rn-timing-function);\n\n &[data-empty] {\n width: 0;\n opacity: 0;\n }\n}\n\n.digitColumn {\n display: flex;\n flex-direction: column;\n animation: mantine-rolling-number-roll var(--rn-duration) var(--rn-timing-function);\n\n & > span {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 1em;\n }\n}\n\n.char {\n display: inline-block;\n overflow: hidden;\n white-space: pre;\n transition: opacity var(--rn-duration) var(--rn-timing-function);\n\n &[data-empty] {\n width: 0;\n opacity: 0;\n }\n}\n\n@keyframes mantine-rolling-number-roll {\n from {\n transform: var(--rn-roll-from);\n }\n\n to {\n transform: var(--rn-roll-to);\n }\n}\n"],"mappings":""}
1
+ {"version":3,"file":"RollingNumber.module.mjs","names":[],"sources":["../../../src/components/RollingNumber/RollingNumber.module.css"],"sourcesContent":[".root {\n position: relative;\n display: inline-flex;\n align-items: baseline;\n overflow: hidden;\n\n &[data-tabular-numbers] {\n font-variant-numeric: tabular-nums;\n }\n}\n\n.copyValue {\n position: absolute;\n inset: 0;\n z-index: 1;\n overflow: hidden;\n white-space: pre;\n color: transparent;\n forced-color-adjust: none;\n}\n\n.digit {\n position: relative;\n z-index: 2;\n display: inline-block;\n width: 1ch;\n height: 1em;\n overflow: hidden;\n line-height: 1;\n pointer-events: none;\n user-select: none;\n -webkit-user-select: none;\n transition:\n width var(--rn-duration) var(--rn-timing-function),\n opacity var(--rn-duration) var(--rn-timing-function);\n\n &[data-empty] {\n width: 0;\n opacity: 0;\n }\n}\n\n.digitColumn {\n display: flex;\n flex-direction: column;\n animation: mantine-rolling-number-roll var(--rn-duration) var(--rn-timing-function);\n\n & > span {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 1em;\n }\n}\n\n.char {\n position: relative;\n z-index: 2;\n display: inline-block;\n overflow: hidden;\n white-space: pre;\n pointer-events: none;\n user-select: none;\n -webkit-user-select: none;\n transition: opacity var(--rn-duration) var(--rn-timing-function);\n\n &[data-empty] {\n width: 0;\n opacity: 0;\n }\n}\n\n@keyframes mantine-rolling-number-roll {\n from {\n transform: var(--rn-roll-from);\n }\n\n to {\n transform: var(--rn-roll-to);\n }\n}\n"],"mappings":""}
@@ -58,12 +58,13 @@ const ScrollArea = factory((_props) => {
58
58
  });
59
59
  const localViewportRef = useRef(null);
60
60
  const [viewportElement, setViewportElement] = useState(null);
61
+ const viewportCallbackRef = useCallback((node) => {
62
+ setViewportElement((current) => current === node ? current : node);
63
+ }, []);
61
64
  const combinedViewportRef = useMergeRefs([
62
65
  viewportRef,
63
66
  localViewportRef,
64
- useCallback((node) => {
65
- setViewportElement((current) => current === node ? current : node);
66
- }, [])
67
+ viewportCallbackRef
67
68
  ]);
68
69
  useResizeObserver(offsetScrollbars === "present" ? viewportElement : null, () => {
69
70
  const element = localViewportRef.current;
@@ -151,12 +152,13 @@ const ScrollAreaAutosize = factory((props) => {
151
152
  const { children, classNames, styles, scrollbarSize, scrollHideDelay, type, dir, offsetScrollbars, overscrollBehavior, viewportRef, onScrollPositionChange, unstyled, variant, viewportProps, scrollbars, style, vars, onBottomReached, onTopReached, startScrollPosition, verticalScrollbarPosition, onOverflowChange, ...others } = useProps("ScrollAreaAutosize", defaultProps, props);
152
153
  const viewportObserverRef = useRef(null);
153
154
  const [viewportObserverElement, setViewportObserverElement] = useState(null);
155
+ const viewportObserverCallbackRef = useCallback((node) => {
156
+ setViewportObserverElement((current) => current === node ? current : node);
157
+ }, []);
154
158
  const combinedViewportRef = useMergeRefs([
155
159
  viewportRef,
156
160
  viewportObserverRef,
157
- useCallback((node) => {
158
- setViewportObserverElement((current) => current === node ? current : node);
159
- }, [])
161
+ viewportObserverCallbackRef
160
162
  ]);
161
163
  const overflowingRef = useRef(false);
162
164
  const didMountRef = useRef(false);
@@ -1 +1 @@
1
- {"version":3,"file":"ScrollArea.mjs","names":["classes"],"sources":["../../../src/components/ScrollArea/ScrollArea.tsx"],"sourcesContent":["import { useCallback, useEffectEvent, useRef, useState } from 'react';\nimport { useMergeRefs } from '@floating-ui/react';\nimport { useIsomorphicEffect } from '@mantine/hooks';\nimport {\n Box,\n BoxProps,\n createVarsResolver,\n ElementProps,\n factory,\n Factory,\n rem,\n StylesApiProps,\n useProps,\n useStyles,\n} from '../../core';\nimport { ScrollAreaCorner } from './ScrollAreaCorner/ScrollAreaCorner';\nimport { ScrollAreaRoot } from './ScrollAreaRoot/ScrollAreaRoot';\nimport { ScrollAreaScrollbar } from './ScrollAreaScrollbar/ScrollAreaScrollbar';\nimport { ScrollAreaThumb } from './ScrollAreaThumb/ScrollAreaThumb';\nimport { ScrollAreaViewport } from './ScrollAreaViewport/ScrollAreaViewport';\nimport { useResizeObserver } from './use-resize-observer';\nimport classes from './ScrollArea.module.css';\n\nexport type ScrollAreaStylesNames =\n | 'root'\n | 'viewport'\n | 'scrollbar'\n | 'thumb'\n | 'corner'\n | 'content';\n\nexport type ScrollAreaCssVariables = {\n root: '--scrollarea-scrollbar-size';\n};\n\nexport interface ScrollAreaProps\n extends BoxProps, StylesApiProps<ScrollAreaFactory>, ElementProps<'div'> {\n /** Scrollbar size, any valid CSS value for width/height, numbers are converted to rem, default value is 12px (0.75rem) */\n scrollbarSize?: number | string;\n\n /**\n * Defines scrollbars behavior\n * - `'hover'` – scrollbars visible on hover (default)\n * - `'scroll'` – scrollbars visible during scrolling\n * - `'auto'` – scrollbars visible only when content overflows (like CSS overflow: auto)\n * - `'always'` – scrollbars always visible, even when content doesn't overflow\n * - `'never'` – scrollbars always hidden\n * @default 'hover'\n * */\n type?: 'auto' | 'always' | 'scroll' | 'hover' | 'never';\n\n /** Scroll hide delay in ms, applicable only when type is set to `hover` or `scroll` @default 1000 */\n scrollHideDelay?: number;\n\n /**\n * Axis at which scrollbars must be rendered\n * - `'x'` - horizontal scrollbar only\n * - `'y'` - vertical scrollbar only\n * - `'xy'` - both scrollbars\n * - `false` - no scrollbars rendered (content remains scrollable via mouse/touch)\n * @default 'xy'\n */\n scrollbars?: 'x' | 'y' | 'xy' | false;\n\n /**\n * Determines whether scrollbars should be offset with padding on given axis\n * - `true` - adds padding to offset both scrollbars (always)\n * - `'x'` - adds padding to offset horizontal scrollbar (always)\n * - `'y'` - adds padding to offset vertical scrollbar (always)\n * - `'present'` - adds padding only when scrollbars are visible (dynamic)\n * @default false\n */\n offsetScrollbars?: boolean | 'x' | 'y' | 'present';\n\n /** Assigns viewport element (scrollable container) ref */\n viewportRef?: React.Ref<HTMLDivElement>;\n\n /** Props passed down to the viewport element */\n viewportProps?: React.ComponentProps<'div'>;\n\n /** Called with current position (`x` and `y` coordinates) when viewport is scrolled */\n onScrollPositionChange?: (position: { x: number; y: number }) => void;\n\n /**\n * Called when scrollarea is scrolled to the bottom (within 0.8px tolerance for sub-pixel rendering)\n */\n onBottomReached?: () => void;\n\n /** Called when scrollarea is scrolled all the way to the top */\n onTopReached?: () => void;\n\n /** Called when scrollarea is scrolled to the left (within 0.8px tolerance for sub-pixel rendering) */\n onLeftReached?: () => void;\n\n /** Called when scrollarea is scrolled to the right (within 0.8px tolerance for sub-pixel rendering) */\n onRightReached?: () => void;\n\n /** Defines `overscroll-behavior` of the viewport */\n overscrollBehavior?: React.CSSProperties['overscrollBehavior'];\n\n /** Initial scroll position set on mount */\n startScrollPosition?: { x?: number; y?: number };\n\n /**\n * Pins the vertical scrollbar to a physical side (`left` or `right`) regardless of direction.\n * By default, the scrollbar follows the inline-end edge (right in LTR, left in RTL).\n */\n verticalScrollbarPosition?: 'left' | 'right';\n}\n\nexport interface ScrollAreaAutosizeProps extends ScrollAreaProps {\n /** Called when content overflows due to max-height, making the container scrollable */\n onOverflowChange?: (overflowing: boolean) => void;\n}\n\nexport type ScrollAreaFactory = Factory<{\n props: ScrollAreaProps;\n ref: HTMLDivElement;\n stylesNames: ScrollAreaStylesNames;\n vars: ScrollAreaCssVariables;\n staticComponents: {\n Autosize: typeof ScrollAreaAutosize;\n };\n}>;\n\nexport type ScrollAreaAutosizeFactory = Factory<{\n props: ScrollAreaAutosizeProps;\n ref: HTMLDivElement;\n stylesNames: ScrollAreaStylesNames;\n vars: ScrollAreaCssVariables;\n}>;\n\nconst defaultProps = {\n scrollHideDelay: 1000,\n type: 'hover',\n scrollbars: 'xy',\n} satisfies Partial<ScrollAreaProps>;\n\nconst varsResolver = createVarsResolver<ScrollAreaFactory>(\n (_, { scrollbarSize, overscrollBehavior, scrollbars }) => {\n let overrideOverscrollBehavior = overscrollBehavior;\n\n if (overscrollBehavior && scrollbars) {\n if (scrollbars === 'x') {\n overrideOverscrollBehavior = `${overscrollBehavior} auto`;\n } else if (scrollbars === 'y') {\n overrideOverscrollBehavior = `auto ${overscrollBehavior}`;\n }\n }\n\n return {\n root: {\n '--scrollarea-scrollbar-size': rem(scrollbarSize),\n '--scrollarea-over-scroll-behavior': overrideOverscrollBehavior,\n },\n };\n }\n);\n\nexport const ScrollArea = factory<ScrollAreaFactory>((_props) => {\n const props = useProps('ScrollArea', defaultProps, _props);\n const {\n classNames,\n className,\n style,\n styles,\n unstyled,\n scrollbarSize,\n vars,\n type,\n scrollHideDelay,\n viewportProps,\n viewportRef,\n onScrollPositionChange,\n children,\n offsetScrollbars,\n scrollbars,\n onBottomReached,\n onTopReached,\n onLeftReached,\n onRightReached,\n overscrollBehavior,\n startScrollPosition,\n verticalScrollbarPosition,\n attributes,\n ...others\n } = props;\n\n const [scrollbarHovered, setScrollbarHovered] = useState(false);\n const [verticalThumbVisible, setVerticalThumbVisible] = useState(false);\n const [horizontalThumbVisible, setHorizontalThumbVisible] = useState(false);\n\n // Refs to track previous boundary states\n const prevAtTopRef = useRef(true);\n const prevAtBottomRef = useRef(false);\n const prevAtLeftRef = useRef(true);\n const prevAtRightRef = useRef(false);\n\n const getStyles = useStyles<ScrollAreaFactory>({\n name: 'ScrollArea',\n props,\n classes,\n className,\n style,\n classNames,\n styles,\n unstyled,\n attributes,\n vars,\n varsResolver,\n });\n\n const localViewportRef = useRef<HTMLDivElement>(null);\n const [viewportElement, setViewportElement] = useState<HTMLDivElement | null>(null);\n const viewportCallbackRef = useCallback((node: HTMLDivElement | null) => {\n setViewportElement((current) => (current === node ? current : node));\n }, []);\n const combinedViewportRef = useMergeRefs([viewportRef, localViewportRef, viewportCallbackRef]);\n\n useResizeObserver(offsetScrollbars === 'present' ? viewportElement : null, () => {\n const element = localViewportRef.current;\n if (element) {\n setVerticalThumbVisible(element.scrollHeight > element.clientHeight);\n setHorizontalThumbVisible(element.scrollWidth > element.clientWidth);\n }\n });\n\n useIsomorphicEffect(() => {\n if (startScrollPosition && localViewportRef.current) {\n localViewportRef.current.scrollTo({\n left: startScrollPosition.x ?? 0,\n top: startScrollPosition.y ?? 0,\n });\n }\n }, []);\n\n return (\n <ScrollAreaRoot\n getStyles={getStyles}\n type={type === 'never' ? 'always' : type}\n scrollHideDelay={scrollHideDelay}\n scrollbars={scrollbars}\n {...getStyles('root')}\n {...others}\n >\n <ScrollAreaViewport\n {...viewportProps}\n {...getStyles('viewport', { style: viewportProps?.style })}\n ref={combinedViewportRef}\n data-offset-scrollbars={offsetScrollbars === true ? 'xy' : offsetScrollbars || undefined}\n data-scrollbars={scrollbars || undefined}\n data-vertical-scrollbar-position={verticalScrollbarPosition || undefined}\n data-horizontal-hidden={\n offsetScrollbars === 'present' && !horizontalThumbVisible ? 'true' : undefined\n }\n data-vertical-hidden={\n offsetScrollbars === 'present' && !verticalThumbVisible ? 'true' : undefined\n }\n onScroll={(e) => {\n viewportProps?.onScroll?.(e);\n onScrollPositionChange?.({ x: e.currentTarget.scrollLeft, y: e.currentTarget.scrollTop });\n const { scrollTop, scrollHeight, clientHeight, scrollLeft, scrollWidth, clientWidth } =\n e.currentTarget;\n\n // Vertical boundaries\n // threshold of -0.8 is required for some browsers that use sub-pixel rendering, specifically when zoomed out.\n const isAtBottom = scrollTop - (scrollHeight - clientHeight) >= -0.8;\n const isAtTop = scrollTop === 0;\n\n if (isAtBottom && !prevAtBottomRef.current) {\n onBottomReached?.();\n }\n if (isAtTop && !prevAtTopRef.current) {\n onTopReached?.();\n }\n\n prevAtBottomRef.current = isAtBottom;\n prevAtTopRef.current = isAtTop;\n\n // Horizontal boundaries\n const isAtRight = scrollLeft - (scrollWidth - clientWidth) >= -0.8;\n const isAtLeft = scrollLeft === 0;\n\n if (isAtRight && !prevAtRightRef.current) {\n onRightReached?.();\n }\n if (isAtLeft && !prevAtLeftRef.current) {\n onLeftReached?.();\n }\n\n prevAtRightRef.current = isAtRight;\n prevAtLeftRef.current = isAtLeft;\n }}\n >\n {children}\n </ScrollAreaViewport>\n\n {(scrollbars === 'xy' || scrollbars === 'x') && (\n <ScrollAreaScrollbar\n {...getStyles('scrollbar')}\n orientation=\"horizontal\"\n data-vertical-scrollbar-position={verticalScrollbarPosition || undefined}\n data-hidden={\n type === 'never' || (offsetScrollbars === 'present' && !horizontalThumbVisible)\n ? true\n : undefined\n }\n forceMount\n onMouseEnter={() => setScrollbarHovered(true)}\n onMouseLeave={() => setScrollbarHovered(false)}\n >\n <ScrollAreaThumb {...getStyles('thumb')} />\n </ScrollAreaScrollbar>\n )}\n\n {(scrollbars === 'xy' || scrollbars === 'y') && (\n <ScrollAreaScrollbar\n {...getStyles('scrollbar')}\n orientation=\"vertical\"\n data-vertical-scrollbar-position={verticalScrollbarPosition || undefined}\n data-hidden={\n type === 'never' || (offsetScrollbars === 'present' && !verticalThumbVisible)\n ? true\n : undefined\n }\n forceMount\n onMouseEnter={() => setScrollbarHovered(true)}\n onMouseLeave={() => setScrollbarHovered(false)}\n >\n <ScrollAreaThumb {...getStyles('thumb')} />\n </ScrollAreaScrollbar>\n )}\n\n <ScrollAreaCorner\n {...getStyles('corner')}\n data-vertical-scrollbar-position={verticalScrollbarPosition || undefined}\n data-hovered={scrollbarHovered || undefined}\n data-hidden={type === 'never' || undefined}\n />\n </ScrollAreaRoot>\n );\n});\n\nScrollArea.displayName = '@mantine/core/ScrollArea';\n\nexport const ScrollAreaAutosize = factory<ScrollAreaAutosizeFactory>((props) => {\n const {\n children,\n classNames,\n styles,\n scrollbarSize,\n scrollHideDelay,\n type,\n dir,\n offsetScrollbars,\n overscrollBehavior,\n viewportRef,\n onScrollPositionChange,\n unstyled,\n variant,\n viewportProps,\n scrollbars,\n style,\n vars,\n onBottomReached,\n onTopReached,\n startScrollPosition,\n verticalScrollbarPosition,\n onOverflowChange,\n ...others\n } = useProps('ScrollAreaAutosize', defaultProps, props as ScrollAreaAutosizeProps);\n\n // Overflow detection (Autosize-only)\n const viewportObserverRef = useRef<HTMLDivElement>(null);\n const [viewportObserverElement, setViewportObserverElement] = useState<HTMLDivElement | null>(\n null\n );\n const viewportObserverCallbackRef = useCallback((node: HTMLDivElement | null) => {\n setViewportObserverElement((current) => (current === node ? current : node));\n }, []);\n const combinedViewportRef = useMergeRefs([\n viewportRef,\n viewportObserverRef,\n viewportObserverCallbackRef,\n ]);\n\n const overflowingRef = useRef(false);\n const didMountRef = useRef(false);\n\n const handleOverflowCheck = useEffectEvent(() => {\n const el = viewportObserverRef.current;\n if (!el || !onOverflowChange) {\n return;\n }\n\n const isOverflowing = el.scrollHeight > el.clientHeight;\n\n if (isOverflowing !== overflowingRef.current) {\n if (didMountRef.current) {\n onOverflowChange(isOverflowing);\n } else {\n didMountRef.current = true;\n if (isOverflowing) {\n onOverflowChange(true);\n }\n }\n\n overflowingRef.current = isOverflowing;\n }\n });\n\n useResizeObserver(onOverflowChange ? viewportObserverElement : null, handleOverflowCheck);\n\n return (\n <Box {...others} variant={variant} style={[{ display: 'flex', overflow: 'hidden' }, style]}>\n <Box\n style={{\n display: 'flex',\n flexDirection: 'column',\n flex: 1,\n overflow: 'hidden',\n ...(scrollbars === 'y' && { minWidth: 0 }),\n ...(scrollbars === 'x' && { minHeight: 0 }),\n ...(scrollbars === 'xy' && { minWidth: 0, minHeight: 0 }),\n ...(scrollbars === false && { minWidth: 0, minHeight: 0 }),\n }}\n >\n <ScrollArea\n classNames={classNames}\n styles={styles}\n scrollHideDelay={scrollHideDelay}\n scrollbarSize={scrollbarSize}\n type={type}\n dir={dir}\n offsetScrollbars={offsetScrollbars}\n overscrollBehavior={overscrollBehavior}\n viewportRef={combinedViewportRef}\n onScrollPositionChange={onScrollPositionChange}\n unstyled={unstyled}\n variant={variant}\n viewportProps={viewportProps}\n vars={vars}\n scrollbars={scrollbars}\n onBottomReached={onBottomReached}\n onTopReached={onTopReached}\n startScrollPosition={startScrollPosition}\n verticalScrollbarPosition={verticalScrollbarPosition}\n data-autosize=\"true\"\n >\n {children}\n </ScrollArea>\n </Box>\n </Box>\n );\n});\n\nScrollArea.classes = classes;\nScrollArea.varsResolver = varsResolver;\nScrollAreaAutosize.displayName = '@mantine/core/ScrollAreaAutosize';\nScrollAreaAutosize.classes = classes;\nScrollArea.Autosize = ScrollAreaAutosize;\n\nexport namespace ScrollArea {\n export type Props = ScrollAreaProps;\n export type AutosizeProps = ScrollAreaAutosizeProps;\n export type StylesNames = ScrollAreaStylesNames;\n export type CssVariables = ScrollAreaCssVariables;\n export type Factory = ScrollAreaFactory;\n\n export namespace Autosize {\n export type Props = ScrollAreaAutosizeProps;\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"ScrollArea.mjs","names":["classes"],"sources":["../../../src/components/ScrollArea/ScrollArea.tsx"],"sourcesContent":["import { useCallback, useEffectEvent, useRef, useState } from 'react';\nimport { useMergeRefs } from '@floating-ui/react';\nimport { useIsomorphicEffect } from '@mantine/hooks';\nimport {\n Box,\n BoxProps,\n createVarsResolver,\n ElementProps,\n factory,\n Factory,\n rem,\n StylesApiProps,\n useProps,\n useStyles,\n} from '../../core';\nimport { ScrollAreaCorner } from './ScrollAreaCorner/ScrollAreaCorner';\nimport { ScrollAreaRoot } from './ScrollAreaRoot/ScrollAreaRoot';\nimport { ScrollAreaScrollbar } from './ScrollAreaScrollbar/ScrollAreaScrollbar';\nimport { ScrollAreaThumb } from './ScrollAreaThumb/ScrollAreaThumb';\nimport { ScrollAreaViewport } from './ScrollAreaViewport/ScrollAreaViewport';\nimport { useResizeObserver } from './use-resize-observer';\nimport classes from './ScrollArea.module.css';\n\nexport type ScrollAreaStylesNames =\n | 'root'\n | 'viewport'\n | 'scrollbar'\n | 'thumb'\n | 'corner'\n | 'content';\n\nexport type ScrollAreaCssVariables = {\n root: '--scrollarea-scrollbar-size';\n};\n\nexport interface ScrollAreaProps\n extends BoxProps, StylesApiProps<ScrollAreaFactory>, ElementProps<'div'> {\n /** Scrollbar size, any valid CSS value for width/height, numbers are converted to rem, default value is 12px (0.75rem) */\n scrollbarSize?: number | string;\n\n /**\n * Defines scrollbars behavior\n * - `'hover'` – scrollbars visible on hover (default)\n * - `'scroll'` – scrollbars visible during scrolling\n * - `'auto'` – scrollbars visible only when content overflows (like CSS overflow: auto)\n * - `'always'` – scrollbars always visible, even when content doesn't overflow\n * - `'never'` – scrollbars always hidden\n * @default 'hover'\n * */\n type?: 'auto' | 'always' | 'scroll' | 'hover' | 'never';\n\n /** Scroll hide delay in ms, applicable only when type is set to `hover` or `scroll` @default 1000 */\n scrollHideDelay?: number;\n\n /**\n * Axis at which scrollbars must be rendered\n * - `'x'` - horizontal scrollbar only\n * - `'y'` - vertical scrollbar only\n * - `'xy'` - both scrollbars\n * - `false` - no scrollbars rendered (content remains scrollable via mouse/touch)\n * @default 'xy'\n */\n scrollbars?: 'x' | 'y' | 'xy' | false;\n\n /**\n * Determines whether scrollbars should be offset with padding on given axis\n * - `true` - adds padding to offset both scrollbars (always)\n * - `'x'` - adds padding to offset horizontal scrollbar (always)\n * - `'y'` - adds padding to offset vertical scrollbar (always)\n * - `'present'` - adds padding only when scrollbars are visible (dynamic)\n * @default false\n */\n offsetScrollbars?: boolean | 'x' | 'y' | 'present';\n\n /** Assigns viewport element (scrollable container) ref */\n viewportRef?: React.Ref<HTMLDivElement>;\n\n /** Props passed down to the viewport element */\n viewportProps?: React.ComponentProps<'div'>;\n\n /** Called with current position (`x` and `y` coordinates) when viewport is scrolled */\n onScrollPositionChange?: (position: { x: number; y: number }) => void;\n\n /**\n * Called when scrollarea is scrolled to the bottom (within 0.8px tolerance for sub-pixel rendering)\n */\n onBottomReached?: () => void;\n\n /** Called when scrollarea is scrolled all the way to the top */\n onTopReached?: () => void;\n\n /** Called when scrollarea is scrolled to the left (within 0.8px tolerance for sub-pixel rendering) */\n onLeftReached?: () => void;\n\n /** Called when scrollarea is scrolled to the right (within 0.8px tolerance for sub-pixel rendering) */\n onRightReached?: () => void;\n\n /** Defines `overscroll-behavior` of the viewport */\n overscrollBehavior?: React.CSSProperties['overscrollBehavior'];\n\n /** Initial scroll position set on mount */\n startScrollPosition?: { x?: number; y?: number };\n\n /**\n * Pins the vertical scrollbar to a physical side (`left` or `right`) regardless of direction.\n * By default, the scrollbar follows the inline-end edge (right in LTR, left in RTL).\n */\n verticalScrollbarPosition?: 'left' | 'right';\n}\n\nexport interface ScrollAreaAutosizeProps extends ScrollAreaProps {\n /** Called when content overflows due to max-height, making the container scrollable */\n onOverflowChange?: (overflowing: boolean) => void;\n}\n\nexport type ScrollAreaFactory = Factory<{\n props: ScrollAreaProps;\n ref: HTMLDivElement;\n stylesNames: ScrollAreaStylesNames;\n vars: ScrollAreaCssVariables;\n staticComponents: {\n Autosize: typeof ScrollAreaAutosize;\n };\n}>;\n\nexport type ScrollAreaAutosizeFactory = Factory<{\n props: ScrollAreaAutosizeProps;\n ref: HTMLDivElement;\n stylesNames: ScrollAreaStylesNames;\n vars: ScrollAreaCssVariables;\n}>;\n\nconst defaultProps = {\n scrollHideDelay: 1000,\n type: 'hover',\n scrollbars: 'xy',\n} satisfies Partial<ScrollAreaProps>;\n\nconst varsResolver = createVarsResolver<ScrollAreaFactory>(\n (_, { scrollbarSize, overscrollBehavior, scrollbars }) => {\n let overrideOverscrollBehavior = overscrollBehavior;\n\n if (overscrollBehavior && scrollbars) {\n if (scrollbars === 'x') {\n overrideOverscrollBehavior = `${overscrollBehavior} auto`;\n } else if (scrollbars === 'y') {\n overrideOverscrollBehavior = `auto ${overscrollBehavior}`;\n }\n }\n\n return {\n root: {\n '--scrollarea-scrollbar-size': rem(scrollbarSize),\n '--scrollarea-over-scroll-behavior': overrideOverscrollBehavior,\n },\n };\n }\n);\n\nexport const ScrollArea = factory<ScrollAreaFactory>((_props) => {\n const props = useProps('ScrollArea', defaultProps, _props);\n const {\n classNames,\n className,\n style,\n styles,\n unstyled,\n scrollbarSize,\n vars,\n type,\n scrollHideDelay,\n viewportProps,\n viewportRef,\n onScrollPositionChange,\n children,\n offsetScrollbars,\n scrollbars,\n onBottomReached,\n onTopReached,\n onLeftReached,\n onRightReached,\n overscrollBehavior,\n startScrollPosition,\n verticalScrollbarPosition,\n attributes,\n ...others\n } = props;\n\n const [scrollbarHovered, setScrollbarHovered] = useState(false);\n const [verticalThumbVisible, setVerticalThumbVisible] = useState(false);\n const [horizontalThumbVisible, setHorizontalThumbVisible] = useState(false);\n\n // Refs to track previous boundary states\n const prevAtTopRef = useRef(true);\n const prevAtBottomRef = useRef(false);\n const prevAtLeftRef = useRef(true);\n const prevAtRightRef = useRef(false);\n\n const getStyles = useStyles<ScrollAreaFactory>({\n name: 'ScrollArea',\n props,\n classes,\n className,\n style,\n classNames,\n styles,\n unstyled,\n attributes,\n vars,\n varsResolver,\n });\n\n const localViewportRef = useRef<HTMLDivElement>(null);\n const [viewportElement, setViewportElement] = useState<HTMLDivElement | null>(null);\n const viewportCallbackRef = useCallback((node: HTMLDivElement | null) => {\n setViewportElement((current) => (current === node ? current : node));\n }, []);\n const combinedViewportRef = useMergeRefs([viewportRef, localViewportRef, viewportCallbackRef]);\n\n useResizeObserver(offsetScrollbars === 'present' ? viewportElement : null, () => {\n const element = localViewportRef.current;\n if (element) {\n setVerticalThumbVisible(element.scrollHeight > element.clientHeight);\n setHorizontalThumbVisible(element.scrollWidth > element.clientWidth);\n }\n });\n\n useIsomorphicEffect(() => {\n if (startScrollPosition && localViewportRef.current) {\n localViewportRef.current.scrollTo({\n left: startScrollPosition.x ?? 0,\n top: startScrollPosition.y ?? 0,\n });\n }\n }, []);\n\n return (\n <ScrollAreaRoot\n getStyles={getStyles}\n type={type === 'never' ? 'always' : type}\n scrollHideDelay={scrollHideDelay}\n scrollbars={scrollbars}\n {...getStyles('root')}\n {...others}\n >\n <ScrollAreaViewport\n {...viewportProps}\n {...getStyles('viewport', { style: viewportProps?.style })}\n ref={combinedViewportRef}\n data-offset-scrollbars={offsetScrollbars === true ? 'xy' : offsetScrollbars || undefined}\n data-scrollbars={scrollbars || undefined}\n data-vertical-scrollbar-position={verticalScrollbarPosition || undefined}\n data-horizontal-hidden={\n offsetScrollbars === 'present' && !horizontalThumbVisible ? 'true' : undefined\n }\n data-vertical-hidden={\n offsetScrollbars === 'present' && !verticalThumbVisible ? 'true' : undefined\n }\n onScroll={(e) => {\n viewportProps?.onScroll?.(e);\n onScrollPositionChange?.({ x: e.currentTarget.scrollLeft, y: e.currentTarget.scrollTop });\n const { scrollTop, scrollHeight, clientHeight, scrollLeft, scrollWidth, clientWidth } =\n e.currentTarget;\n\n // Vertical boundaries\n // threshold of -0.8 is required for some browsers that use sub-pixel rendering, specifically when zoomed out.\n const isAtBottom = scrollTop - (scrollHeight - clientHeight) >= -0.8;\n const isAtTop = scrollTop === 0;\n\n if (isAtBottom && !prevAtBottomRef.current) {\n onBottomReached?.();\n }\n if (isAtTop && !prevAtTopRef.current) {\n onTopReached?.();\n }\n\n prevAtBottomRef.current = isAtBottom;\n prevAtTopRef.current = isAtTop;\n\n // Horizontal boundaries\n const isAtRight = scrollLeft - (scrollWidth - clientWidth) >= -0.8;\n const isAtLeft = scrollLeft === 0;\n\n if (isAtRight && !prevAtRightRef.current) {\n onRightReached?.();\n }\n if (isAtLeft && !prevAtLeftRef.current) {\n onLeftReached?.();\n }\n\n prevAtRightRef.current = isAtRight;\n prevAtLeftRef.current = isAtLeft;\n }}\n >\n {children}\n </ScrollAreaViewport>\n\n {(scrollbars === 'xy' || scrollbars === 'x') && (\n <ScrollAreaScrollbar\n {...getStyles('scrollbar')}\n orientation=\"horizontal\"\n data-vertical-scrollbar-position={verticalScrollbarPosition || undefined}\n data-hidden={\n type === 'never' || (offsetScrollbars === 'present' && !horizontalThumbVisible)\n ? true\n : undefined\n }\n forceMount\n onMouseEnter={() => setScrollbarHovered(true)}\n onMouseLeave={() => setScrollbarHovered(false)}\n >\n <ScrollAreaThumb {...getStyles('thumb')} />\n </ScrollAreaScrollbar>\n )}\n\n {(scrollbars === 'xy' || scrollbars === 'y') && (\n <ScrollAreaScrollbar\n {...getStyles('scrollbar')}\n orientation=\"vertical\"\n data-vertical-scrollbar-position={verticalScrollbarPosition || undefined}\n data-hidden={\n type === 'never' || (offsetScrollbars === 'present' && !verticalThumbVisible)\n ? true\n : undefined\n }\n forceMount\n onMouseEnter={() => setScrollbarHovered(true)}\n onMouseLeave={() => setScrollbarHovered(false)}\n >\n <ScrollAreaThumb {...getStyles('thumb')} />\n </ScrollAreaScrollbar>\n )}\n\n <ScrollAreaCorner\n {...getStyles('corner')}\n data-vertical-scrollbar-position={verticalScrollbarPosition || undefined}\n data-hovered={scrollbarHovered || undefined}\n data-hidden={type === 'never' || undefined}\n />\n </ScrollAreaRoot>\n );\n});\n\nScrollArea.displayName = '@mantine/core/ScrollArea';\n\nexport const ScrollAreaAutosize = factory<ScrollAreaAutosizeFactory>((props) => {\n const {\n children,\n classNames,\n styles,\n scrollbarSize,\n scrollHideDelay,\n type,\n dir,\n offsetScrollbars,\n overscrollBehavior,\n viewportRef,\n onScrollPositionChange,\n unstyled,\n variant,\n viewportProps,\n scrollbars,\n style,\n vars,\n onBottomReached,\n onTopReached,\n startScrollPosition,\n verticalScrollbarPosition,\n onOverflowChange,\n ...others\n } = useProps('ScrollAreaAutosize', defaultProps, props as ScrollAreaAutosizeProps);\n\n // Overflow detection (Autosize-only)\n const viewportObserverRef = useRef<HTMLDivElement>(null);\n const [viewportObserverElement, setViewportObserverElement] = useState<HTMLDivElement | null>(\n null\n );\n const viewportObserverCallbackRef = useCallback((node: HTMLDivElement | null) => {\n setViewportObserverElement((current) => (current === node ? current : node));\n }, []);\n const combinedViewportRef = useMergeRefs([\n viewportRef,\n viewportObserverRef,\n viewportObserverCallbackRef,\n ]);\n\n const overflowingRef = useRef(false);\n const didMountRef = useRef(false);\n\n const handleOverflowCheck = useEffectEvent(() => {\n const el = viewportObserverRef.current;\n if (!el || !onOverflowChange) {\n return;\n }\n\n const isOverflowing = el.scrollHeight > el.clientHeight;\n\n if (isOverflowing !== overflowingRef.current) {\n if (didMountRef.current) {\n onOverflowChange(isOverflowing);\n } else {\n didMountRef.current = true;\n if (isOverflowing) {\n onOverflowChange(true);\n }\n }\n\n overflowingRef.current = isOverflowing;\n }\n });\n\n useResizeObserver(onOverflowChange ? viewportObserverElement : null, handleOverflowCheck);\n\n return (\n <Box {...others} variant={variant} style={[{ display: 'flex', overflow: 'hidden' }, style]}>\n <Box\n style={{\n display: 'flex',\n flexDirection: 'column',\n flex: 1,\n overflow: 'hidden',\n ...(scrollbars === 'y' && { minWidth: 0 }),\n ...(scrollbars === 'x' && { minHeight: 0 }),\n ...(scrollbars === 'xy' && { minWidth: 0, minHeight: 0 }),\n ...(scrollbars === false && { minWidth: 0, minHeight: 0 }),\n }}\n >\n <ScrollArea\n classNames={classNames}\n styles={styles}\n scrollHideDelay={scrollHideDelay}\n scrollbarSize={scrollbarSize}\n type={type}\n dir={dir}\n offsetScrollbars={offsetScrollbars}\n overscrollBehavior={overscrollBehavior}\n viewportRef={combinedViewportRef}\n onScrollPositionChange={onScrollPositionChange}\n unstyled={unstyled}\n variant={variant}\n viewportProps={viewportProps}\n vars={vars}\n scrollbars={scrollbars}\n onBottomReached={onBottomReached}\n onTopReached={onTopReached}\n startScrollPosition={startScrollPosition}\n verticalScrollbarPosition={verticalScrollbarPosition}\n data-autosize=\"true\"\n >\n {children}\n </ScrollArea>\n </Box>\n </Box>\n );\n});\n\nScrollArea.classes = classes;\nScrollArea.varsResolver = varsResolver;\nScrollAreaAutosize.displayName = '@mantine/core/ScrollAreaAutosize';\nScrollAreaAutosize.classes = classes;\nScrollArea.Autosize = ScrollAreaAutosize;\n\nexport namespace ScrollArea {\n export type Props = ScrollAreaProps;\n export type AutosizeProps = ScrollAreaAutosizeProps;\n export type StylesNames = ScrollAreaStylesNames;\n export type CssVariables = ScrollAreaCssVariables;\n export type Factory = ScrollAreaFactory;\n\n export namespace Autosize {\n export type Props = ScrollAreaAutosizeProps;\n }\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ScrollAreaRoot.mjs","names":[],"sources":["../../../../src/components/ScrollArea/ScrollAreaRoot/ScrollAreaRoot.tsx"],"sourcesContent":["import { useState } from 'react';\nimport { useMergedRef } from '@mantine/hooks';\nimport { Box, BoxProps, ElementProps, Factory, GetStylesApi, useProps } from '../../../core';\nimport type { ScrollAreaFactory } from '../ScrollArea';\nimport { ScrollAreaProvider } from '../ScrollArea.context';\n\nexport type ScrollAreaRootStylesNames =\n | 'root'\n | 'viewport'\n | 'viewportInner'\n | 'scrollbar'\n | 'thumb'\n | 'corner';\n\nexport type ScrollAreaRootCssVariables = {\n root: '--sa-corner-width' | '--sa-corner-height';\n};\n\nexport interface ScrollAreaRootStylesCtx {\n cornerWidth: number;\n cornerHeight: number;\n}\n\nexport interface ScrollAreaRootProps extends BoxProps, ElementProps<'div'> {\n getStyles: GetStylesApi<ScrollAreaFactory>;\n type?: 'auto' | 'always' | 'scroll' | 'hover' | 'never';\n scrollbars?: 'x' | 'y' | 'xy' | false;\n scrollHideDelay?: number;\n}\n\nexport type ScrollAreaRootFactory = Factory<{\n props: ScrollAreaRootProps;\n ref: HTMLDivElement;\n stylesNames: ScrollAreaRootStylesNames;\n}>;\n\nconst defaultProps = {\n scrollHideDelay: 1000,\n type: 'hover',\n} satisfies Partial<ScrollAreaRootProps>;\n\nexport function ScrollAreaRoot(_props: ScrollAreaRootProps) {\n const { type, scrollHideDelay, scrollbars, getStyles, ref, ...others } = useProps(\n 'ScrollAreaRoot',\n defaultProps,\n _props\n );\n\n const [scrollArea, setScrollArea] = useState<HTMLDivElement | null>(null);\n const [viewport, setViewport] = useState<HTMLDivElement | null>(null);\n const [content, setContent] = useState<HTMLDivElement | null>(null);\n const [scrollbarX, setScrollbarX] = useState<HTMLDivElement | null>(null);\n const [scrollbarY, setScrollbarY] = useState<HTMLDivElement | null>(null);\n const [cornerWidth, setCornerWidth] = useState(0);\n const [cornerHeight, setCornerHeight] = useState(0);\n const [scrollbarXEnabled, setScrollbarXEnabled] = useState(false);\n const [scrollbarYEnabled, setScrollbarYEnabled] = useState(false);\n const rootRef = useMergedRef(ref, setScrollArea);\n\n return (\n <ScrollAreaProvider\n value={{\n type,\n scrollHideDelay,\n scrollArea,\n viewport,\n onViewportChange: setViewport,\n content,\n onContentChange: setContent,\n scrollbarX,\n onScrollbarXChange: setScrollbarX,\n scrollbarXEnabled,\n onScrollbarXEnabledChange: setScrollbarXEnabled,\n scrollbarY,\n onScrollbarYChange: setScrollbarY,\n scrollbarYEnabled,\n onScrollbarYEnabledChange: setScrollbarYEnabled,\n onCornerWidthChange: setCornerWidth,\n onCornerHeightChange: setCornerHeight,\n getStyles,\n }}\n >\n <Box\n {...others}\n ref={rootRef}\n __vars={{\n '--sa-corner-width': scrollbars !== 'xy' ? '0px' : `${cornerWidth}px`,\n '--sa-corner-height': scrollbars !== 'xy' ? '0px' : `${cornerHeight}px`,\n }}\n />\n </ScrollAreaProvider>\n );\n}\n\nScrollAreaRoot.displayName = '@mantine/core/ScrollAreaRoot';\n"],"mappings":";;;;;;;;AAoCA,MAAM,eAAe;CACnB,iBAAiB;CACjB,MAAM;AACR;AAEA,SAAgB,eAAe,QAA6B;CAC1D,MAAM,EAAE,MAAM,iBAAiB,YAAY,WAAW,KAAK,GAAG,WAAW,SACvE,kBACA,cACA,MACF;CAEA,MAAM,CAAC,YAAY,iBAAiB,SAAgC,IAAI;CACxE,MAAM,CAAC,UAAU,eAAe,SAAgC,IAAI;CACpE,MAAM,CAAC,SAAS,cAAc,SAAgC,IAAI;CAClE,MAAM,CAAC,YAAY,iBAAiB,SAAgC,IAAI;CACxE,MAAM,CAAC,YAAY,iBAAiB,SAAgC,IAAI;CACxE,MAAM,CAAC,aAAa,kBAAkB,SAAS,CAAC;CAChD,MAAM,CAAC,cAAc,mBAAmB,SAAS,CAAC;CAClD,MAAM,CAAC,mBAAmB,wBAAwB,SAAS,KAAK;CAChE,MAAM,CAAC,mBAAmB,wBAAwB,SAAS,KAAK;CAChE,MAAM,UAAU,aAAa,KAAK,aAAa;CAE/C,OACE,oBAAC,oBAAD;EACE,OAAO;GACL;GACA;GACA;GACA;GACA,kBAAkB;GAClB;GACA,iBAAiB;GACjB;GACA,oBAAoB;GACpB;GACA,2BAA2B;GAC3B;GACA,oBAAoB;GACpB;GACA,2BAA2B;GAC3B,qBAAqB;GACrB,sBAAsB;GACtB;EACF;YAEA,oBAAC,KAAD;GACE,GAAI;GACJ,KAAK;GACL,QAAQ;IACN,qBAAqB,eAAe,OAAO,QAAQ,GAAG,YAAY;IAClE,sBAAsB,eAAe,OAAO,QAAQ,GAAG,aAAa;GACtE;EACD,CAAA;CACiB,CAAA;AAExB;AAEA,eAAe,cAAc"}
1
+ {"version":3,"file":"ScrollAreaRoot.mjs","names":[],"sources":["../../../../src/components/ScrollArea/ScrollAreaRoot/ScrollAreaRoot.tsx"],"sourcesContent":["import { useState } from 'react';\nimport { useMergedRef } from '@mantine/hooks';\nimport { Box, BoxProps, ElementProps, Factory, GetStylesApi, useProps } from '../../../core';\nimport type { ScrollAreaFactory } from '../ScrollArea';\nimport { ScrollAreaProvider } from '../ScrollArea.context';\n\nexport type ScrollAreaRootStylesNames =\n | 'root'\n | 'viewport'\n | 'viewportInner'\n | 'scrollbar'\n | 'thumb'\n | 'corner';\n\nexport type ScrollAreaRootCssVariables = {\n root: '--sa-corner-width' | '--sa-corner-height';\n};\n\nexport interface ScrollAreaRootStylesCtx {\n cornerWidth: number;\n cornerHeight: number;\n}\n\nexport interface ScrollAreaRootProps extends BoxProps, ElementProps<'div'> {\n getStyles: GetStylesApi<ScrollAreaFactory>;\n type?: 'auto' | 'always' | 'scroll' | 'hover' | 'never';\n scrollbars?: 'x' | 'y' | 'xy' | false;\n scrollHideDelay?: number;\n}\n\nexport type ScrollAreaRootFactory = Factory<{\n props: ScrollAreaRootProps;\n ref: HTMLDivElement;\n stylesNames: ScrollAreaRootStylesNames;\n}>;\n\nconst defaultProps = {\n scrollHideDelay: 1000,\n type: 'hover',\n} satisfies Partial<ScrollAreaRootProps>;\n\nexport function ScrollAreaRoot(_props: ScrollAreaRootProps) {\n const { type, scrollHideDelay, scrollbars, getStyles, ref, ...others } = useProps(\n 'ScrollAreaRoot',\n defaultProps,\n _props\n );\n\n const [scrollArea, setScrollArea] = useState<HTMLDivElement | null>(null);\n const [viewport, setViewport] = useState<HTMLDivElement | null>(null);\n const [content, setContent] = useState<HTMLDivElement | null>(null);\n const [scrollbarX, setScrollbarX] = useState<HTMLDivElement | null>(null);\n const [scrollbarY, setScrollbarY] = useState<HTMLDivElement | null>(null);\n const [cornerWidth, setCornerWidth] = useState(0);\n const [cornerHeight, setCornerHeight] = useState(0);\n const [scrollbarXEnabled, setScrollbarXEnabled] = useState(false);\n const [scrollbarYEnabled, setScrollbarYEnabled] = useState(false);\n const rootRef = useMergedRef(ref, setScrollArea);\n\n return (\n <ScrollAreaProvider\n value={{\n type,\n scrollHideDelay,\n scrollArea,\n viewport,\n onViewportChange: setViewport,\n content,\n onContentChange: setContent,\n scrollbarX,\n onScrollbarXChange: setScrollbarX,\n scrollbarXEnabled,\n onScrollbarXEnabledChange: setScrollbarXEnabled,\n scrollbarY,\n onScrollbarYChange: setScrollbarY,\n scrollbarYEnabled,\n onScrollbarYEnabledChange: setScrollbarYEnabled,\n onCornerWidthChange: setCornerWidth,\n onCornerHeightChange: setCornerHeight,\n getStyles,\n }}\n >\n <Box\n {...others}\n ref={rootRef}\n __vars={{\n '--sa-corner-width': scrollbars !== 'xy' ? '0px' : `${cornerWidth}px`,\n '--sa-corner-height': scrollbars !== 'xy' ? '0px' : `${cornerHeight}px`,\n }}\n />\n </ScrollAreaProvider>\n );\n}\n\nScrollAreaRoot.displayName = '@mantine/core/ScrollAreaRoot';\n"],"mappings":";;;;;;;;AAoCA,MAAM,eAAe;CACnB,iBAAiB;CACjB,MAAM;AACR;AAEA,SAAgB,eAAe,QAA6B;CAC1D,MAAM,EAAE,MAAM,iBAAiB,YAAY,WAAW,KAAK,GAAG,WAAW,SACvE,kBACA,cACA,MACF;CAEA,MAAM,CAAC,YAAY,iBAAiB,SAAgC,IAAI;CACxE,MAAM,CAAC,UAAU,eAAe,SAAgC,IAAI;CACpE,MAAM,CAAC,SAAS,cAAc,SAAgC,IAAI;CAClE,MAAM,CAAC,YAAY,iBAAiB,SAAgC,IAAI;CACxE,MAAM,CAAC,YAAY,iBAAiB,SAAgC,IAAI;CACxE,MAAM,CAAC,aAAa,kBAAkB,SAAS,CAAC;CAChD,MAAM,CAAC,cAAc,mBAAmB,SAAS,CAAC;CAClD,MAAM,CAAC,mBAAmB,wBAAwB,SAAS,KAAK;CAChE,MAAM,CAAC,mBAAmB,wBAAwB,SAAS,KAAK;CAChE,MAAM,UAAU,aAAa,KAAK,aAAa;CAE/C,OACE,oBAAC,oBAAD;EACE,OAAO;GACL;GACA;GACA;GACA;GACA,kBAAkB;GAClB;GACA,iBAAiB;GACjB;GACA,oBAAoB;GACpB;GACA,2BAA2B;GAC3B;GACA,oBAAoB;GACpB;GACA,2BAA2B;GAC3B,qBAAqB;GACrB,sBAAsB;GACtB;EACF;EAEA,UAAA,oBAAC,KAAD;GACE,GAAI;GACJ,KAAK;GACL,QAAQ;IACN,qBAAqB,eAAe,OAAO,QAAQ,GAAG,YAAY;IAClE,sBAAsB,eAAe,OAAO,QAAQ,GAAG,aAAa;GACtE;EACD,CAAA;CACiB,CAAA;AAExB;AAEA,eAAe,cAAc"}
@@ -1 +1 @@
1
- {"version":3,"file":"Scrollbar.mjs","names":[],"sources":["../../../../src/components/ScrollArea/ScrollAreaScrollbar/Scrollbar.tsx"],"sourcesContent":["import { useEffect, useEffectEvent, useRef, useState } from 'react';\nimport { useCallbackRef, useDebouncedCallback, useMergedRef } from '@mantine/hooks';\nimport { useScrollAreaContext } from '../ScrollArea.context';\nimport { Sizes } from '../ScrollArea.types';\nimport { useResizeObserver } from '../use-resize-observer';\nimport { composeEventHandlers } from '../utils';\nimport { ScrollbarContextValue, ScrollbarProvider } from './Scrollbar.context';\n\nexport interface ScrollbarPrivateProps {\n sizes: Sizes;\n hasThumb: boolean;\n onThumbChange: ScrollbarContextValue['onThumbChange'];\n onThumbPointerUp: ScrollbarContextValue['onThumbPointerUp'];\n onThumbPointerDown: ScrollbarContextValue['onThumbPointerDown'];\n onThumbPositionChange: ScrollbarContextValue['onThumbPositionChange'];\n onWheelScroll: (event: WheelEvent, maxScrollPos: number) => void;\n onDragScroll: (pointerPos: { x: number; y: number }) => void;\n onResize: () => void;\n}\n\ninterface ScrollbarProps\n extends ScrollbarPrivateProps, Omit<React.ComponentProps<'div'>, 'onResize'> {}\n\nexport function Scrollbar(props: ScrollbarProps) {\n const {\n sizes,\n hasThumb,\n onThumbChange,\n onThumbPointerUp,\n onThumbPointerDown,\n onThumbPositionChange,\n onDragScroll,\n onWheelScroll,\n onResize,\n ref,\n ...scrollbarProps\n } = props;\n const context = useScrollAreaContext();\n const [scrollbar, setScrollbar] = useState<HTMLDivElement | null>(null);\n const composeRefs = useMergedRef(ref, setScrollbar);\n const rectRef = useRef<DOMRect | null>(null);\n const prevWebkitUserSelectRef = useRef<string>('');\n const { viewport } = context;\n const maxScrollPos = sizes.content - sizes.viewport;\n const handleWheelScroll = useEffectEvent(onWheelScroll);\n const handleThumbPositionChange = useCallbackRef(onThumbPositionChange);\n const handleResize = useDebouncedCallback(onResize, 10);\n\n const handleDragScroll = (event: React.PointerEvent<HTMLElement>) => {\n if (rectRef.current) {\n const x = event.clientX - rectRef.current.left;\n const y = event.clientY - rectRef.current.top;\n onDragScroll({ x, y });\n }\n };\n\n useEffect(() => {\n const handleWheel = (event: WheelEvent) => {\n const element = event.target as HTMLElement;\n const isScrollbarWheel = scrollbar?.contains(element);\n if (isScrollbarWheel) {\n handleWheelScroll(event, maxScrollPos);\n }\n };\n document.addEventListener('wheel', handleWheel, { passive: false });\n return () => document.removeEventListener('wheel', handleWheel, { passive: false } as any);\n }, [viewport, scrollbar, maxScrollPos]);\n\n useEffect(handleThumbPositionChange, [sizes, handleThumbPositionChange]);\n\n useResizeObserver(scrollbar, handleResize);\n useResizeObserver(context.content, handleResize);\n\n return (\n <ScrollbarProvider\n value={{\n scrollbar,\n hasThumb,\n onThumbChange: useCallbackRef(onThumbChange),\n onThumbPointerUp: useCallbackRef(onThumbPointerUp),\n onThumbPositionChange: handleThumbPositionChange,\n onThumbPointerDown: useCallbackRef(onThumbPointerDown),\n }}\n >\n <div\n {...scrollbarProps}\n ref={composeRefs}\n data-mantine-scrollbar\n style={{ position: 'absolute', ...scrollbarProps.style }}\n onPointerDown={composeEventHandlers(props.onPointerDown, (event) => {\n event.preventDefault();\n\n const mainPointer = 0;\n if (event.button === mainPointer) {\n const element = event.target as HTMLElement;\n element.setPointerCapture(event.pointerId);\n rectRef.current = scrollbar!.getBoundingClientRect();\n /* oxlint-disable typescript/no-deprecated */\n prevWebkitUserSelectRef.current = document.body.style.webkitUserSelect;\n document.body.style.webkitUserSelect = 'none';\n handleDragScroll(event);\n }\n })}\n onPointerMove={composeEventHandlers(props.onPointerMove, handleDragScroll)}\n onPointerUp={composeEventHandlers(props.onPointerUp, (event) => {\n const element = event.target as HTMLElement;\n if (element.hasPointerCapture(event.pointerId)) {\n event.preventDefault();\n element.releasePointerCapture(event.pointerId);\n }\n })}\n onLostPointerCapture={() => {\n document.body.style.webkitUserSelect = prevWebkitUserSelectRef.current;\n /* oxlint-enable typescript/no-deprecated */\n rectRef.current = null;\n }}\n />\n </ScrollbarProvider>\n );\n}\n"],"mappings":";;;;;;;;;AAuBA,SAAgB,UAAU,OAAuB;CAC/C,MAAM,EACJ,OACA,UACA,eACA,kBACA,oBACA,uBACA,cACA,eACA,UACA,KACA,GAAG,mBACD;CACJ,MAAM,UAAU,qBAAqB;CACrC,MAAM,CAAC,WAAW,gBAAgB,SAAgC,IAAI;CACtE,MAAM,cAAc,aAAa,KAAK,YAAY;CAClD,MAAM,UAAU,OAAuB,IAAI;CAC3C,MAAM,0BAA0B,OAAe,EAAE;CACjD,MAAM,EAAE,aAAa;CACrB,MAAM,eAAe,MAAM,UAAU,MAAM;CAC3C,MAAM,oBAAoB,eAAe,aAAa;CACtD,MAAM,4BAA4B,eAAe,qBAAqB;CACtE,MAAM,eAAe,qBAAqB,UAAU,EAAE;CAEtD,MAAM,oBAAoB,UAA2C;EACnE,IAAI,QAAQ,SAAS;GACnB,MAAM,IAAI,MAAM,UAAU,QAAQ,QAAQ;GAC1C,MAAM,IAAI,MAAM,UAAU,QAAQ,QAAQ;GAC1C,aAAa;IAAE;IAAG;GAAE,CAAC;EACvB;CACF;CAEA,gBAAgB;EACd,MAAM,eAAe,UAAsB;GACzC,MAAM,UAAU,MAAM;GAEtB,IADyB,WAAW,SAAS,OAAO,GAElD,kBAAkB,OAAO,YAAY;EAEzC;EACA,SAAS,iBAAiB,SAAS,aAAa,EAAE,SAAS,MAAM,CAAC;EAClE,aAAa,SAAS,oBAAoB,SAAS,aAAa,EAAE,SAAS,MAAM,CAAQ;CAC3F,GAAG;EAAC;EAAU;EAAW;CAAY,CAAC;CAEtC,UAAU,2BAA2B,CAAC,OAAO,yBAAyB,CAAC;CAEvE,kBAAkB,WAAW,YAAY;CACzC,kBAAkB,QAAQ,SAAS,YAAY;CAE/C,OACE,oBAAC,mBAAD;EACE,OAAO;GACL;GACA;GACA,eAAe,eAAe,aAAa;GAC3C,kBAAkB,eAAe,gBAAgB;GACjD,uBAAuB;GACvB,oBAAoB,eAAe,kBAAkB;EACvD;YAEA,oBAAC,OAAD;GACE,GAAI;GACJ,KAAK;GACL,0BAAA;GACA,OAAO;IAAE,UAAU;IAAY,GAAG,eAAe;GAAM;GACvD,eAAe,qBAAqB,MAAM,gBAAgB,UAAU;IAClE,MAAM,eAAe;IAGrB,IAAI,MAAM,WAAW,GAAa;KAEhC,MADsB,OACd,kBAAkB,MAAM,SAAS;KACzC,QAAQ,UAAU,UAAW,sBAAsB;KAEnD,wBAAwB,UAAU,SAAS,KAAK,MAAM;KACtD,SAAS,KAAK,MAAM,mBAAmB;KACvC,iBAAiB,KAAK;IACxB;GACF,CAAC;GACD,eAAe,qBAAqB,MAAM,eAAe,gBAAgB;GACzE,aAAa,qBAAqB,MAAM,cAAc,UAAU;IAC9D,MAAM,UAAU,MAAM;IACtB,IAAI,QAAQ,kBAAkB,MAAM,SAAS,GAAG;KAC9C,MAAM,eAAe;KACrB,QAAQ,sBAAsB,MAAM,SAAS;IAC/C;GACF,CAAC;GACD,4BAA4B;IAC1B,SAAS,KAAK,MAAM,mBAAmB,wBAAwB;IAE/D,QAAQ,UAAU;GACpB;EACD,CAAA;CACgB,CAAA;AAEvB"}
1
+ {"version":3,"file":"Scrollbar.mjs","names":[],"sources":["../../../../src/components/ScrollArea/ScrollAreaScrollbar/Scrollbar.tsx"],"sourcesContent":["import { useEffect, useEffectEvent, useRef, useState } from 'react';\nimport { useCallbackRef, useDebouncedCallback, useMergedRef } from '@mantine/hooks';\nimport { useScrollAreaContext } from '../ScrollArea.context';\nimport { Sizes } from '../ScrollArea.types';\nimport { useResizeObserver } from '../use-resize-observer';\nimport { composeEventHandlers } from '../utils';\nimport { ScrollbarContextValue, ScrollbarProvider } from './Scrollbar.context';\n\nexport interface ScrollbarPrivateProps {\n sizes: Sizes;\n hasThumb: boolean;\n onThumbChange: ScrollbarContextValue['onThumbChange'];\n onThumbPointerUp: ScrollbarContextValue['onThumbPointerUp'];\n onThumbPointerDown: ScrollbarContextValue['onThumbPointerDown'];\n onThumbPositionChange: ScrollbarContextValue['onThumbPositionChange'];\n onWheelScroll: (event: WheelEvent, maxScrollPos: number) => void;\n onDragScroll: (pointerPos: { x: number; y: number }) => void;\n onResize: () => void;\n}\n\ninterface ScrollbarProps\n extends ScrollbarPrivateProps, Omit<React.ComponentProps<'div'>, 'onResize'> {}\n\nexport function Scrollbar(props: ScrollbarProps) {\n const {\n sizes,\n hasThumb,\n onThumbChange,\n onThumbPointerUp,\n onThumbPointerDown,\n onThumbPositionChange,\n onDragScroll,\n onWheelScroll,\n onResize,\n ref,\n ...scrollbarProps\n } = props;\n const context = useScrollAreaContext();\n const [scrollbar, setScrollbar] = useState<HTMLDivElement | null>(null);\n const composeRefs = useMergedRef(ref, setScrollbar);\n const rectRef = useRef<DOMRect | null>(null);\n const prevWebkitUserSelectRef = useRef<string>('');\n const { viewport } = context;\n const maxScrollPos = sizes.content - sizes.viewport;\n const handleWheelScroll = useEffectEvent(onWheelScroll);\n const handleThumbPositionChange = useCallbackRef(onThumbPositionChange);\n const handleResize = useDebouncedCallback(onResize, 10);\n\n const handleDragScroll = (event: React.PointerEvent<HTMLElement>) => {\n if (rectRef.current) {\n const x = event.clientX - rectRef.current.left;\n const y = event.clientY - rectRef.current.top;\n onDragScroll({ x, y });\n }\n };\n\n useEffect(() => {\n const handleWheel = (event: WheelEvent) => {\n const element = event.target as HTMLElement;\n const isScrollbarWheel = scrollbar?.contains(element);\n if (isScrollbarWheel) {\n handleWheelScroll(event, maxScrollPos);\n }\n };\n document.addEventListener('wheel', handleWheel, { passive: false });\n return () => document.removeEventListener('wheel', handleWheel, { passive: false } as any);\n }, [viewport, scrollbar, maxScrollPos]);\n\n useEffect(handleThumbPositionChange, [sizes, handleThumbPositionChange]);\n\n useResizeObserver(scrollbar, handleResize);\n useResizeObserver(context.content, handleResize);\n\n return (\n <ScrollbarProvider\n value={{\n scrollbar,\n hasThumb,\n onThumbChange: useCallbackRef(onThumbChange),\n onThumbPointerUp: useCallbackRef(onThumbPointerUp),\n onThumbPositionChange: handleThumbPositionChange,\n onThumbPointerDown: useCallbackRef(onThumbPointerDown),\n }}\n >\n <div\n {...scrollbarProps}\n ref={composeRefs}\n data-mantine-scrollbar\n style={{ position: 'absolute', ...scrollbarProps.style }}\n onPointerDown={composeEventHandlers(props.onPointerDown, (event) => {\n event.preventDefault();\n\n const mainPointer = 0;\n if (event.button === mainPointer) {\n const element = event.target as HTMLElement;\n element.setPointerCapture(event.pointerId);\n rectRef.current = scrollbar!.getBoundingClientRect();\n /* oxlint-disable typescript/no-deprecated */\n prevWebkitUserSelectRef.current = document.body.style.webkitUserSelect;\n document.body.style.webkitUserSelect = 'none';\n handleDragScroll(event);\n }\n })}\n onPointerMove={composeEventHandlers(props.onPointerMove, handleDragScroll)}\n onPointerUp={composeEventHandlers(props.onPointerUp, (event) => {\n const element = event.target as HTMLElement;\n if (element.hasPointerCapture(event.pointerId)) {\n event.preventDefault();\n element.releasePointerCapture(event.pointerId);\n }\n })}\n onLostPointerCapture={() => {\n document.body.style.webkitUserSelect = prevWebkitUserSelectRef.current;\n /* oxlint-enable typescript/no-deprecated */\n rectRef.current = null;\n }}\n />\n </ScrollbarProvider>\n );\n}\n"],"mappings":";;;;;;;;;AAuBA,SAAgB,UAAU,OAAuB;CAC/C,MAAM,EACJ,OACA,UACA,eACA,kBACA,oBACA,uBACA,cACA,eACA,UACA,KACA,GAAG,mBACD;CACJ,MAAM,UAAU,qBAAqB;CACrC,MAAM,CAAC,WAAW,gBAAgB,SAAgC,IAAI;CACtE,MAAM,cAAc,aAAa,KAAK,YAAY;CAClD,MAAM,UAAU,OAAuB,IAAI;CAC3C,MAAM,0BAA0B,OAAe,EAAE;CACjD,MAAM,EAAE,aAAa;CACrB,MAAM,eAAe,MAAM,UAAU,MAAM;CAC3C,MAAM,oBAAoB,eAAe,aAAa;CACtD,MAAM,4BAA4B,eAAe,qBAAqB;CACtE,MAAM,eAAe,qBAAqB,UAAU,EAAE;CAEtD,MAAM,oBAAoB,UAA2C;EACnE,IAAI,QAAQ,SAAS;GACnB,MAAM,IAAI,MAAM,UAAU,QAAQ,QAAQ;GAC1C,MAAM,IAAI,MAAM,UAAU,QAAQ,QAAQ;GAC1C,aAAa;IAAE;IAAG;GAAE,CAAC;EACvB;CACF;CAEA,gBAAgB;EACd,MAAM,eAAe,UAAsB;GACzC,MAAM,UAAU,MAAM;GAEtB,IADyB,WAAW,SAAS,OAAO,GAElD,kBAAkB,OAAO,YAAY;EAEzC;EACA,SAAS,iBAAiB,SAAS,aAAa,EAAE,SAAS,MAAM,CAAC;EAClE,aAAa,SAAS,oBAAoB,SAAS,aAAa,EAAE,SAAS,MAAM,CAAQ;CAC3F,GAAG;EAAC;EAAU;EAAW;CAAY,CAAC;CAEtC,UAAU,2BAA2B,CAAC,OAAO,yBAAyB,CAAC;CAEvE,kBAAkB,WAAW,YAAY;CACzC,kBAAkB,QAAQ,SAAS,YAAY;CAE/C,OACE,oBAAC,mBAAD;EACE,OAAO;GACL;GACA;GACA,eAAe,eAAe,aAAa;GAC3C,kBAAkB,eAAe,gBAAgB;GACjD,uBAAuB;GACvB,oBAAoB,eAAe,kBAAkB;EACvD;EAEA,UAAA,oBAAC,OAAD;GACE,GAAI;GACJ,KAAK;GACL,0BAAA;GACA,OAAO;IAAE,UAAU;IAAY,GAAG,eAAe;GAAM;GACvD,eAAe,qBAAqB,MAAM,gBAAgB,UAAU;IAClE,MAAM,eAAe;IAGrB,IAAI,MAAM,WAAW,GAAa;KAEhC,MADsB,OACd,kBAAkB,MAAM,SAAS;KACzC,QAAQ,UAAU,UAAW,sBAAsB;KAEnD,wBAAwB,UAAU,SAAS,KAAK,MAAM;KACtD,SAAS,KAAK,MAAM,mBAAmB;KACvC,iBAAiB,KAAK;IACxB;GACF,CAAC;GACD,eAAe,qBAAqB,MAAM,eAAe,gBAAgB;GACzE,aAAa,qBAAqB,MAAM,cAAc,UAAU;IAC9D,MAAM,UAAU,MAAM;IACtB,IAAI,QAAQ,kBAAkB,MAAM,SAAS,GAAG;KAC9C,MAAM,eAAe;KACrB,QAAQ,sBAAsB,MAAM,SAAS;IAC/C;GACF,CAAC;GACD,4BAA4B;IAC1B,SAAS,KAAK,MAAM,mBAAmB,wBAAwB;IAE/D,QAAQ,UAAU;GACpB;EACD,CAAA;CACgB,CAAA;AAEvB"}
@@ -1 +1 @@
1
- {"version":3,"file":"ScrollAreaViewport.mjs","names":[],"sources":["../../../../src/components/ScrollArea/ScrollAreaViewport/ScrollAreaViewport.tsx"],"sourcesContent":["import { useMergedRef } from '@mantine/hooks';\nimport { Box, BoxProps, ElementProps } from '../../../core';\nimport { useScrollAreaContext } from '../ScrollArea.context';\n\nexport interface ScrollAreaViewportProps extends BoxProps, ElementProps<'div'> {}\n\nexport function ScrollAreaViewport({\n children,\n style,\n ref,\n onWheel,\n ...others\n}: ScrollAreaViewportProps) {\n const ctx = useScrollAreaContext();\n const rootRef = useMergedRef(ref, ctx.onViewportChange);\n\n const handleWheel = (event: React.WheelEvent<HTMLDivElement>) => {\n onWheel?.(event);\n\n // Fix for Windows: Allow horizontal scrolling even when vertical scroll is at boundaries\n // When at vertical boundaries, Windows tries to scroll the parent/page instead of allowing horizontal scroll\n if (ctx.scrollbarXEnabled && ctx.viewport && event.shiftKey) {\n const { scrollTop, scrollHeight, clientHeight, scrollWidth, clientWidth } = ctx.viewport;\n const isAtTop = scrollTop < 1;\n const isAtBottom = scrollTop >= scrollHeight - clientHeight - 1;\n const canScrollHorizontally = scrollWidth > clientWidth;\n\n if (canScrollHorizontally && (isAtTop || isAtBottom)) {\n event.stopPropagation();\n }\n }\n };\n\n return (\n <Box\n {...others}\n ref={rootRef}\n onWheel={handleWheel}\n data-scrollarea-viewport\n style={{\n overflowX: ctx.scrollbarXEnabled ? 'scroll' : 'hidden',\n overflowY: ctx.scrollbarYEnabled ? 'scroll' : 'hidden',\n ...style,\n }}\n >\n <div {...ctx.getStyles('content')} ref={ctx.onContentChange}>\n {children}\n </div>\n </Box>\n );\n}\n\nScrollAreaViewport.displayName = '@mantine/core/ScrollAreaViewport';\n"],"mappings":";;;;;;AAMA,SAAgB,mBAAmB,EACjC,UACA,OACA,KACA,SACA,GAAG,UACuB;CAC1B,MAAM,MAAM,qBAAqB;CACjC,MAAM,UAAU,aAAa,KAAK,IAAI,gBAAgB;CAEtD,MAAM,eAAe,UAA4C;EAC/D,UAAU,KAAK;EAIf,IAAI,IAAI,qBAAqB,IAAI,YAAY,MAAM,UAAU;GAC3D,MAAM,EAAE,WAAW,cAAc,cAAc,aAAa,gBAAgB,IAAI;GAChF,MAAM,UAAU,YAAY;GAC5B,MAAM,aAAa,aAAa,eAAe,eAAe;GAG9D,IAF8B,cAAc,gBAEd,WAAW,aACvC,MAAM,gBAAgB;EAE1B;CACF;CAEA,OACE,oBAAC,KAAD;EACE,GAAI;EACJ,KAAK;EACL,SAAS;EACT,4BAAA;EACA,OAAO;GACL,WAAW,IAAI,oBAAoB,WAAW;GAC9C,WAAW,IAAI,oBAAoB,WAAW;GAC9C,GAAG;EACL;YAEA,oBAAC,OAAD;GAAK,GAAI,IAAI,UAAU,SAAS;GAAG,KAAK,IAAI;GACzC;EACE,CAAA;CACF,CAAA;AAET;AAEA,mBAAmB,cAAc"}
1
+ {"version":3,"file":"ScrollAreaViewport.mjs","names":[],"sources":["../../../../src/components/ScrollArea/ScrollAreaViewport/ScrollAreaViewport.tsx"],"sourcesContent":["import { useMergedRef } from '@mantine/hooks';\nimport { Box, BoxProps, ElementProps } from '../../../core';\nimport { useScrollAreaContext } from '../ScrollArea.context';\n\nexport interface ScrollAreaViewportProps extends BoxProps, ElementProps<'div'> {}\n\nexport function ScrollAreaViewport({\n children,\n style,\n ref,\n onWheel,\n ...others\n}: ScrollAreaViewportProps) {\n const ctx = useScrollAreaContext();\n const rootRef = useMergedRef(ref, ctx.onViewportChange);\n\n const handleWheel = (event: React.WheelEvent<HTMLDivElement>) => {\n onWheel?.(event);\n\n // Fix for Windows: Allow horizontal scrolling even when vertical scroll is at boundaries\n // When at vertical boundaries, Windows tries to scroll the parent/page instead of allowing horizontal scroll\n if (ctx.scrollbarXEnabled && ctx.viewport && event.shiftKey) {\n const { scrollTop, scrollHeight, clientHeight, scrollWidth, clientWidth } = ctx.viewport;\n const isAtTop = scrollTop < 1;\n const isAtBottom = scrollTop >= scrollHeight - clientHeight - 1;\n const canScrollHorizontally = scrollWidth > clientWidth;\n\n if (canScrollHorizontally && (isAtTop || isAtBottom)) {\n event.stopPropagation();\n }\n }\n };\n\n return (\n <Box\n {...others}\n ref={rootRef}\n onWheel={handleWheel}\n data-scrollarea-viewport\n style={{\n overflowX: ctx.scrollbarXEnabled ? 'scroll' : 'hidden',\n overflowY: ctx.scrollbarYEnabled ? 'scroll' : 'hidden',\n ...style,\n }}\n >\n <div {...ctx.getStyles('content')} ref={ctx.onContentChange}>\n {children}\n </div>\n </Box>\n );\n}\n\nScrollAreaViewport.displayName = '@mantine/core/ScrollAreaViewport';\n"],"mappings":";;;;;;AAMA,SAAgB,mBAAmB,EACjC,UACA,OACA,KACA,SACA,GAAG,UACuB;CAC1B,MAAM,MAAM,qBAAqB;CACjC,MAAM,UAAU,aAAa,KAAK,IAAI,gBAAgB;CAEtD,MAAM,eAAe,UAA4C;EAC/D,UAAU,KAAK;EAIf,IAAI,IAAI,qBAAqB,IAAI,YAAY,MAAM,UAAU;GAC3D,MAAM,EAAE,WAAW,cAAc,cAAc,aAAa,gBAAgB,IAAI;GAChF,MAAM,UAAU,YAAY;GAC5B,MAAM,aAAa,aAAa,eAAe,eAAe;GAG9D,IAF8B,cAAc,gBAEd,WAAW,aACvC,MAAM,gBAAgB;EAE1B;CACF;CAEA,OACE,oBAAC,KAAD;EACE,GAAI;EACJ,KAAK;EACL,SAAS;EACT,4BAAA;EACA,OAAO;GACL,WAAW,IAAI,oBAAoB,WAAW;GAC9C,WAAW,IAAI,oBAAoB,WAAW;GAC9C,GAAG;EACL;EAEA,UAAA,oBAAC,OAAD;GAAK,GAAI,IAAI,UAAU,SAAS;GAAG,KAAK,IAAI;GACzC;EACE,CAAA;CACF,CAAA;AAET;AAEA,mBAAmB,cAAc"}
@@ -1 +1 @@
1
- {"version":3,"file":"Scroller.mjs","names":["classes"],"sources":["../../../src/components/Scroller/Scroller.tsx"],"sourcesContent":["import { Ref } from 'react';\nimport { useScroller } from '@mantine/hooks';\nimport {\n Box,\n BoxProps,\n createVarsResolver,\n ElementProps,\n factory,\n Factory,\n getThemeColor,\n rem,\n StylesApiProps,\n useProps,\n useStyles,\n} from '../../core';\nimport { AccordionChevron } from '../Accordion';\nimport { UnstyledButton } from '../UnstyledButton';\nimport classes from './Scroller.module.css';\n\nexport type ScrollerStylesNames = 'root' | 'container' | 'content' | 'control' | 'chevron';\nexport type ScrollerCssVariables = {\n root: '--scroller-control-size' | '--scroller-background-color';\n};\n\nexport interface ScrollerProps\n extends BoxProps, StylesApiProps<ScrollerFactory>, ElementProps<'div'> {\n /** Content to display */\n children: React.ReactNode;\n\n /** Amount of pixels to scroll when clicking the control buttons, `200` by default */\n scrollAmount?: number;\n\n /** Size of the control buttons, @default 60px */\n controlSize?: string | number;\n\n /** Background color for the gradient fade on controls, `'var(--mantine-color-body)'` by default */\n edgeGradientColor?: string;\n\n /** Props passed to the start control button */\n startControlProps?: React.ComponentProps<'button'>;\n\n /** Props passed to the end control button */\n endControlProps?: React.ComponentProps<'button'>;\n\n /** Icon component for the start control, AccordionChevron by default */\n startControlIcon?: React.ReactNode;\n\n /** Icon component for the end control, AccordionChevron by default */\n endControlIcon?: React.ReactNode;\n\n /** Determines whether start control should always be visible regardless of scroll position, `false` by default */\n showStartControl?: boolean;\n\n /** Determines whether end control should always be visible regardless of scroll position, `false` by default */\n showEndControl?: boolean;\n\n /** Determines whether content can be scrolled by dragging with mouse, `true` by default */\n draggable?: boolean;\n\n /** Ref for the scroll container element */\n ref?: Ref<HTMLDivElement>;\n}\n\nexport type ScrollerFactory = Factory<{\n props: ScrollerProps;\n ref: HTMLDivElement;\n stylesNames: ScrollerStylesNames;\n vars: ScrollerCssVariables;\n}>;\n\nconst defaultProps: Partial<ScrollerProps> = {\n scrollAmount: 200,\n draggable: true,\n};\n\nconst varsResolver = createVarsResolver<ScrollerFactory>(\n (theme, { controlSize, edgeGradientColor }) => ({\n root: {\n '--scroller-control-size': rem(controlSize),\n '--scroller-background-color': edgeGradientColor\n ? getThemeColor(edgeGradientColor, theme)\n : undefined,\n },\n })\n);\n\nexport const Scroller = factory<ScrollerFactory>((_props) => {\n const props = useProps('Scroller', defaultProps, _props);\n const {\n classNames,\n className,\n style,\n styles,\n unstyled,\n vars,\n children,\n scrollAmount,\n controlSize,\n edgeGradientColor,\n startControlProps,\n endControlProps,\n startControlIcon,\n endControlIcon,\n showStartControl,\n showEndControl,\n draggable,\n mod,\n ref,\n attributes,\n ...others\n } = props;\n\n const getStyles = useStyles<ScrollerFactory>({\n name: 'Scroller',\n classes,\n props,\n className,\n style,\n classNames,\n styles,\n unstyled,\n vars,\n varsResolver,\n attributes,\n });\n\n const scroller = useScroller({\n scrollAmount,\n draggable,\n });\n\n const showStart = showStartControl || scroller.canScrollStart;\n const showEnd = showEndControl || scroller.canScrollEnd;\n\n return (\n <Box {...getStyles('root')} ref={ref} mod={mod} {...others}>\n <UnstyledButton\n {...getStyles('control')}\n onClick={scroller.scrollStart}\n data-position=\"start\"\n data-hidden={!showStart || undefined}\n aria-label=\"Scroll left\"\n tabIndex={showStart ? 0 : -1}\n {...startControlProps}\n >\n {startControlIcon || <AccordionChevron {...getStyles('chevron')} />}\n </UnstyledButton>\n\n <div\n {...getStyles('container')}\n ref={scroller.ref}\n role=\"presentation\"\n data-draggable={draggable || undefined}\n {...scroller.dragHandlers}\n >\n <div {...getStyles('content')}>{children}</div>\n </div>\n\n <UnstyledButton\n {...getStyles('control')}\n onClick={scroller.scrollEnd}\n data-position=\"end\"\n data-hidden={!showEnd || undefined}\n aria-label=\"Scroll right\"\n tabIndex={showEnd ? 0 : -1}\n {...endControlProps}\n >\n {endControlIcon || <AccordionChevron {...getStyles('chevron')} />}\n </UnstyledButton>\n </Box>\n );\n});\n\nScroller.classes = classes;\nScroller.varsResolver = varsResolver;\nScroller.displayName = '@mantine/core/Scroller';\n\nexport namespace Scroller {\n export type Props = ScrollerProps;\n export type StylesNames = ScrollerStylesNames;\n export type CssVariables = ScrollerCssVariables;\n export type Factory = ScrollerFactory;\n}\n"],"mappings":";;;;;;;;;;;;;;AAsEA,MAAM,eAAuC;CAC3C,cAAc;CACd,WAAW;AACb;AAEA,MAAM,eAAe,oBAClB,OAAO,EAAE,aAAa,yBAAyB,EAC9C,MAAM;CACJ,2BAA2B,IAAI,WAAW;CAC1C,+BAA+B,oBAC3B,cAAc,mBAAmB,KAAK,IACtC,KAAA;AACN,EACF,EACF;AAEA,MAAa,WAAW,SAA0B,WAAW;CAC3D,MAAM,QAAQ,SAAS,YAAY,cAAc,MAAM;CACvD,MAAM,EACJ,YACA,WACA,OACA,QACA,UACA,MACA,UACA,cACA,aACA,mBACA,mBACA,iBACA,kBACA,gBACA,kBACA,gBACA,WACA,KACA,KACA,YACA,GAAG,WACD;CAEJ,MAAM,YAAY,UAA2B;EAC3C,MAAM;EACN,SAAA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,CAAC;CAED,MAAM,WAAW,YAAY;EAC3B;EACA;CACF,CAAC;CAED,MAAM,YAAY,oBAAoB,SAAS;CAC/C,MAAM,UAAU,kBAAkB,SAAS;CAE3C,OACE,qBAAC,KAAD;EAAK,GAAI,UAAU,MAAM;EAAQ;EAAU;EAAK,GAAI;YAApD;GACE,oBAAC,gBAAD;IACE,GAAI,UAAU,SAAS;IACvB,SAAS,SAAS;IAClB,iBAAc;IACd,eAAa,CAAC,aAAa,KAAA;IAC3B,cAAW;IACX,UAAU,YAAY,IAAI;IAC1B,GAAI;cAEH,oBAAoB,oBAAC,kBAAD,EAAkB,GAAI,UAAU,SAAS,EAAI,CAAA;GACpD,CAAA;GAEhB,oBAAC,OAAD;IACE,GAAI,UAAU,WAAW;IACzB,KAAK,SAAS;IACd,MAAK;IACL,kBAAgB,aAAa,KAAA;IAC7B,GAAI,SAAS;cAEb,oBAAC,OAAD;KAAK,GAAI,UAAU,SAAS;KAAI;IAAc,CAAA;GAC3C,CAAA;GAEL,oBAAC,gBAAD;IACE,GAAI,UAAU,SAAS;IACvB,SAAS,SAAS;IAClB,iBAAc;IACd,eAAa,CAAC,WAAW,KAAA;IACzB,cAAW;IACX,UAAU,UAAU,IAAI;IACxB,GAAI;cAEH,kBAAkB,oBAAC,kBAAD,EAAkB,GAAI,UAAU,SAAS,EAAI,CAAA;GAClD,CAAA;EACb;;AAET,CAAC;AAED,SAAS,UAAUA;AACnB,SAAS,eAAe;AACxB,SAAS,cAAc"}
1
+ {"version":3,"file":"Scroller.mjs","names":["classes"],"sources":["../../../src/components/Scroller/Scroller.tsx"],"sourcesContent":["import { Ref } from 'react';\nimport { useScroller } from '@mantine/hooks';\nimport {\n Box,\n BoxProps,\n createVarsResolver,\n ElementProps,\n factory,\n Factory,\n getThemeColor,\n rem,\n StylesApiProps,\n useProps,\n useStyles,\n} from '../../core';\nimport { AccordionChevron } from '../Accordion';\nimport { UnstyledButton } from '../UnstyledButton';\nimport classes from './Scroller.module.css';\n\nexport type ScrollerStylesNames = 'root' | 'container' | 'content' | 'control' | 'chevron';\nexport type ScrollerCssVariables = {\n root: '--scroller-control-size' | '--scroller-background-color';\n};\n\nexport interface ScrollerProps\n extends BoxProps, StylesApiProps<ScrollerFactory>, ElementProps<'div'> {\n /** Content to display */\n children: React.ReactNode;\n\n /** Amount of pixels to scroll when clicking the control buttons, `200` by default */\n scrollAmount?: number;\n\n /** Size of the control buttons, @default 60px */\n controlSize?: string | number;\n\n /** Background color for the gradient fade on controls, `'var(--mantine-color-body)'` by default */\n edgeGradientColor?: string;\n\n /** Props passed to the start control button */\n startControlProps?: React.ComponentProps<'button'>;\n\n /** Props passed to the end control button */\n endControlProps?: React.ComponentProps<'button'>;\n\n /** Icon component for the start control, AccordionChevron by default */\n startControlIcon?: React.ReactNode;\n\n /** Icon component for the end control, AccordionChevron by default */\n endControlIcon?: React.ReactNode;\n\n /** Determines whether start control should always be visible regardless of scroll position, `false` by default */\n showStartControl?: boolean;\n\n /** Determines whether end control should always be visible regardless of scroll position, `false` by default */\n showEndControl?: boolean;\n\n /** Determines whether content can be scrolled by dragging with mouse, `true` by default */\n draggable?: boolean;\n\n /** Ref for the scroll container element */\n ref?: Ref<HTMLDivElement>;\n}\n\nexport type ScrollerFactory = Factory<{\n props: ScrollerProps;\n ref: HTMLDivElement;\n stylesNames: ScrollerStylesNames;\n vars: ScrollerCssVariables;\n}>;\n\nconst defaultProps: Partial<ScrollerProps> = {\n scrollAmount: 200,\n draggable: true,\n};\n\nconst varsResolver = createVarsResolver<ScrollerFactory>(\n (theme, { controlSize, edgeGradientColor }) => ({\n root: {\n '--scroller-control-size': rem(controlSize),\n '--scroller-background-color': edgeGradientColor\n ? getThemeColor(edgeGradientColor, theme)\n : undefined,\n },\n })\n);\n\nexport const Scroller = factory<ScrollerFactory>((_props) => {\n const props = useProps('Scroller', defaultProps, _props);\n const {\n classNames,\n className,\n style,\n styles,\n unstyled,\n vars,\n children,\n scrollAmount,\n controlSize,\n edgeGradientColor,\n startControlProps,\n endControlProps,\n startControlIcon,\n endControlIcon,\n showStartControl,\n showEndControl,\n draggable,\n mod,\n ref,\n attributes,\n ...others\n } = props;\n\n const getStyles = useStyles<ScrollerFactory>({\n name: 'Scroller',\n classes,\n props,\n className,\n style,\n classNames,\n styles,\n unstyled,\n vars,\n varsResolver,\n attributes,\n });\n\n const scroller = useScroller({\n scrollAmount,\n draggable,\n });\n\n const showStart = showStartControl || scroller.canScrollStart;\n const showEnd = showEndControl || scroller.canScrollEnd;\n\n return (\n <Box {...getStyles('root')} ref={ref} mod={mod} {...others}>\n <UnstyledButton\n {...getStyles('control')}\n onClick={scroller.scrollStart}\n data-position=\"start\"\n data-hidden={!showStart || undefined}\n aria-label=\"Scroll left\"\n tabIndex={showStart ? 0 : -1}\n {...startControlProps}\n >\n {startControlIcon || <AccordionChevron {...getStyles('chevron')} />}\n </UnstyledButton>\n\n <div\n {...getStyles('container')}\n ref={scroller.ref}\n role=\"presentation\"\n data-draggable={draggable || undefined}\n {...scroller.dragHandlers}\n >\n <div {...getStyles('content')}>{children}</div>\n </div>\n\n <UnstyledButton\n {...getStyles('control')}\n onClick={scroller.scrollEnd}\n data-position=\"end\"\n data-hidden={!showEnd || undefined}\n aria-label=\"Scroll right\"\n tabIndex={showEnd ? 0 : -1}\n {...endControlProps}\n >\n {endControlIcon || <AccordionChevron {...getStyles('chevron')} />}\n </UnstyledButton>\n </Box>\n );\n});\n\nScroller.classes = classes;\nScroller.varsResolver = varsResolver;\nScroller.displayName = '@mantine/core/Scroller';\n\nexport namespace Scroller {\n export type Props = ScrollerProps;\n export type StylesNames = ScrollerStylesNames;\n export type CssVariables = ScrollerCssVariables;\n export type Factory = ScrollerFactory;\n}\n"],"mappings":";;;;;;;;;;;;;;AAsEA,MAAM,eAAuC;CAC3C,cAAc;CACd,WAAW;AACb;AAEA,MAAM,eAAe,oBAClB,OAAO,EAAE,aAAa,yBAAyB,EAC9C,MAAM;CACJ,2BAA2B,IAAI,WAAW;CAC1C,+BAA+B,oBAC3B,cAAc,mBAAmB,KAAK,IACtC,KAAA;AACN,EACF,EACF;AAEA,MAAa,WAAW,SAA0B,WAAW;CAC3D,MAAM,QAAQ,SAAS,YAAY,cAAc,MAAM;CACvD,MAAM,EACJ,YACA,WACA,OACA,QACA,UACA,MACA,UACA,cACA,aACA,mBACA,mBACA,iBACA,kBACA,gBACA,kBACA,gBACA,WACA,KACA,KACA,YACA,GAAG,WACD;CAEJ,MAAM,YAAY,UAA2B;EAC3C,MAAM;EACN,SAAA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,CAAC;CAED,MAAM,WAAW,YAAY;EAC3B;EACA;CACF,CAAC;CAED,MAAM,YAAY,oBAAoB,SAAS;CAC/C,MAAM,UAAU,kBAAkB,SAAS;CAE3C,OACE,qBAAC,KAAD;EAAK,GAAI,UAAU,MAAM;EAAQ;EAAU;EAAK,GAAI;EAApD,UAAA;GACE,oBAAC,gBAAD;IACE,GAAI,UAAU,SAAS;IACvB,SAAS,SAAS;IAClB,iBAAc;IACd,eAAa,CAAC,aAAa,KAAA;IAC3B,cAAW;IACX,UAAU,YAAY,IAAI;IAC1B,GAAI;IAEH,UAAA,oBAAoB,oBAAC,kBAAD,EAAkB,GAAI,UAAU,SAAS,EAAI,CAAA;GACpD,CAAA;GAEhB,oBAAC,OAAD;IACE,GAAI,UAAU,WAAW;IACzB,KAAK,SAAS;IACd,MAAK;IACL,kBAAgB,aAAa,KAAA;IAC7B,GAAI,SAAS;IAEb,UAAA,oBAAC,OAAD;KAAK,GAAI,UAAU,SAAS;KAAI;IAAc,CAAA;GAC3C,CAAA;GAEL,oBAAC,gBAAD;IACE,GAAI,UAAU,SAAS;IACvB,SAAS,SAAS;IAClB,iBAAc;IACd,eAAa,CAAC,WAAW,KAAA;IACzB,cAAW;IACX,UAAU,UAAU,IAAI;IACxB,GAAI;IAEH,UAAA,kBAAkB,oBAAC,kBAAD,EAAkB,GAAI,UAAU,SAAS,EAAI,CAAA;GAClD,CAAA;EACb;;AAET,CAAC;AAED,SAAS,UAAUA;AACnB,SAAS,eAAe;AACxB,SAAS,cAAc"}
@@ -1 +1 @@
1
- {"version":3,"file":"SegmentedControl.mjs","names":["useId","classes"],"sources":["../../../src/components/SegmentedControl/SegmentedControl.tsx"],"sourcesContent":["import { useState } from 'react';\nimport {\n randomId,\n useId,\n useMergedRef,\n useMounted,\n useShallowEffect,\n useUncontrolled,\n} from '@mantine/hooks';\nimport {\n Box,\n BoxProps,\n createVarsResolver,\n ElementProps,\n Factory,\n genericFactory,\n getContrastColor,\n getFontSize,\n getRadius,\n getSize,\n getThemeColor,\n isPrimitive,\n MantineColor,\n MantineRadius,\n MantineSize,\n Primitive,\n StylesApiProps,\n useMantineTheme,\n useProps,\n useStyles,\n} from '../../core';\nimport { FloatingIndicator } from '../FloatingIndicator';\nimport classes from './SegmentedControl.module.css';\n\nexport type SegmentedControlStylesNames =\n | 'root'\n | 'input'\n | 'label'\n | 'control'\n | 'indicator'\n | 'innerLabel';\nexport type SegmentedControlCssVariables = {\n root:\n | '--sc-radius'\n | '--sc-color'\n | '--sc-font-size'\n | '--sc-padding'\n | '--sc-shadow'\n | '--sc-transition-duration'\n | '--sc-transition-timing-function';\n};\n\nexport interface SegmentedControlItem<Value = string> {\n value: Value;\n label: React.ReactNode;\n disabled?: boolean;\n}\n\nexport interface SegmentedControlProps<Value extends Primitive = string>\n extends\n BoxProps,\n StylesApiProps<SegmentedControlFactory>,\n ElementProps<'div', 'onChange' | 'value' | 'defaultValue'> {\n /** Data based on which controls are rendered */\n data: (Value | SegmentedControlItem<Value>)[];\n\n /** Controlled component value */\n value?: Value;\n\n /** Uncontrolled component default value */\n defaultValue?: Value;\n\n /** Called when value changes */\n onChange?: (value: Value) => void;\n\n /** Determines whether the component is disabled */\n disabled?: boolean;\n\n /** Name attribute for the radio group. A random name is auto-generated if not provided */\n name?: string;\n\n /** Determines whether the component should take 100% width of its parent @default false */\n fullWidth?: boolean;\n\n /** Key of `theme.colors` or any valid CSS color, changes indicator background color. By default, uses white in light mode and dark.5 in dark mode */\n color?: MantineColor;\n\n /** Controls `font-size`, `padding` and `height` properties @default 'sm' */\n size?: MantineSize | (string & {});\n\n /** Key of `theme.radius` or any valid CSS value to set `border-radius`, numbers are converted to rem @default theme.defaultRadius */\n radius?: MantineRadius;\n\n /** Indicator `transition-duration` in ms, set `0` to turn off transitions @default 200 */\n transitionDuration?: number;\n\n /** Indicator `transition-timing-function` property @default ease */\n transitionTimingFunction?: string;\n\n /** Component orientation @default 'horizontal' */\n orientation?: 'vertical' | 'horizontal';\n\n /** If set to `false`, prevents changing the value */\n readOnly?: boolean;\n\n /** If set, automatically adjusts label text color for optimal contrast against the indicator background color */\n autoContrast?: boolean;\n\n /** Determines whether there should be borders between items @default true */\n withItemsBorders?: boolean;\n}\n\nexport type SegmentedControlFactory = Factory<{\n props: SegmentedControlProps;\n ref: HTMLDivElement;\n stylesNames: SegmentedControlStylesNames;\n vars: SegmentedControlCssVariables;\n signature: <Value extends Primitive = string>(\n props: SegmentedControlProps<Value>\n ) => React.JSX.Element | null;\n}>;\n\nconst defaultProps = {\n withItemsBorders: true,\n} satisfies Partial<SegmentedControlProps>;\n\nconst varsResolver = createVarsResolver<SegmentedControlFactory>(\n (theme, { radius, color, transitionDuration, size, transitionTimingFunction }) => ({\n root: {\n '--sc-radius': radius === undefined ? undefined : getRadius(radius),\n '--sc-color': color ? getThemeColor(color, theme) : undefined,\n '--sc-shadow': color ? undefined : 'var(--mantine-shadow-xs)',\n '--sc-transition-duration':\n transitionDuration === undefined ? undefined : `${transitionDuration}ms`,\n '--sc-transition-timing-function': transitionTimingFunction,\n '--sc-padding': getSize(size, 'sc-padding'),\n '--sc-font-size': getFontSize(size),\n },\n })\n);\n\nexport const SegmentedControl = genericFactory<SegmentedControlFactory>((_props) => {\n const props = useProps('SegmentedControl', defaultProps, _props);\n const {\n classNames,\n className,\n style,\n styles,\n unstyled,\n vars,\n data,\n value,\n defaultValue,\n onChange,\n size,\n name,\n disabled,\n readOnly,\n fullWidth,\n orientation,\n radius,\n color,\n transitionDuration,\n transitionTimingFunction,\n variant,\n autoContrast,\n withItemsBorders,\n mod,\n attributes,\n ref,\n ...others\n } = props;\n\n const getStyles = useStyles<SegmentedControlFactory>({\n name: 'SegmentedControl',\n props: props as any,\n classes,\n className,\n style,\n classNames,\n styles,\n unstyled,\n attributes,\n vars,\n varsResolver,\n });\n\n const theme = useMantineTheme();\n\n const _data = data.map((item) => (isPrimitive(item) ? { label: `${item}`, value: item } : item));\n\n const initialized = useMounted();\n const [key, setKey] = useState(randomId());\n const [parent, setParent] = useState<HTMLElement | null>(null);\n const [refs, setRefs] = useState<Record<string, HTMLElement | null>>({});\n const setElementRef = (element: HTMLElement | null, val: string) => {\n refs[val] = element;\n setRefs(refs);\n };\n\n const [_value, handleValueChange] = useUncontrolled({\n value,\n defaultValue,\n finalValue: Array.isArray(data)\n ? (_data.find((item) => !item.disabled)?.value ?? (data[0] as any)?.value ?? null)\n : null,\n onChange,\n });\n\n const uuid = useId(name);\n\n const controls = _data.map((item) => (\n <Box\n {...getStyles('control')}\n mod={{ active: _value === item.value, orientation }}\n key={`${item.value}`}\n >\n <input\n {...getStyles('input')}\n disabled={disabled || item.disabled}\n type=\"radio\"\n name={uuid}\n value={`${item.value}`}\n id={`${uuid}-${item.value}`}\n checked={_value === item.value}\n onChange={() => !readOnly && handleValueChange(item.value)}\n data-focus-ring={theme.focusRing}\n key={`${item.value}-input`}\n />\n\n <Box\n component=\"label\"\n {...getStyles('label')}\n mod={{\n active: _value === item.value && !(disabled || item.disabled),\n disabled: disabled || item.disabled,\n 'read-only': readOnly,\n }}\n htmlFor={`${uuid}-${item.value}`}\n ref={(node) => setElementRef(node, `${item.value}`)}\n __vars={{\n '--sc-label-color':\n color !== undefined ? getContrastColor({ color, theme, autoContrast }) : undefined,\n }}\n key={`${item.value}-label`}\n >\n <span {...getStyles('innerLabel')}>{item.label}</span>\n </Box>\n </Box>\n ));\n\n const mergedRef = useMergedRef(ref, setParent);\n\n useShallowEffect(() => {\n setKey(randomId());\n }, [data.length]);\n\n if (data.length === 0) {\n return null;\n }\n\n return (\n <Box\n {...getStyles('root')}\n variant={variant}\n size={size}\n ref={mergedRef}\n mod={[\n {\n 'full-width': fullWidth,\n orientation,\n initialized,\n 'with-items-borders': withItemsBorders,\n },\n mod,\n ]}\n {...others}\n role=\"radiogroup\"\n data-disabled={disabled}\n >\n {typeof _value !== 'undefined' && (\n <FloatingIndicator\n target={refs[`${_value}`]}\n parent={parent}\n component=\"span\"\n transitionDuration=\"var(--sc-transition-duration)\"\n key={key}\n {...getStyles('indicator')}\n />\n )}\n\n {controls}\n </Box>\n );\n});\n\nSegmentedControl.classes = classes;\nSegmentedControl.varsResolver = varsResolver;\nSegmentedControl.displayName = '@mantine/core/SegmentedControl';\n\nexport namespace SegmentedControl {\n export type CssVariables = SegmentedControlCssVariables;\n export type Factory = SegmentedControlFactory;\n export type Item<Value extends Primitive = string> = SegmentedControlItem<Value>;\n export type Props<Value extends Primitive = string> = SegmentedControlProps<Value>;\n export type StylesNames = SegmentedControlStylesNames;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"SegmentedControl.mjs","names":["useId","classes"],"sources":["../../../src/components/SegmentedControl/SegmentedControl.tsx"],"sourcesContent":["import { useState } from 'react';\nimport {\n randomId,\n useId,\n useMergedRef,\n useMounted,\n useShallowEffect,\n useUncontrolled,\n} from '@mantine/hooks';\nimport {\n Box,\n BoxProps,\n createVarsResolver,\n ElementProps,\n Factory,\n genericFactory,\n getContrastColor,\n getFontSize,\n getRadius,\n getSize,\n getThemeColor,\n isPrimitive,\n MantineColor,\n MantineRadius,\n MantineSize,\n Primitive,\n StylesApiProps,\n useMantineTheme,\n useProps,\n useStyles,\n} from '../../core';\nimport { FloatingIndicator } from '../FloatingIndicator';\nimport classes from './SegmentedControl.module.css';\n\nexport type SegmentedControlStylesNames =\n | 'root'\n | 'input'\n | 'label'\n | 'control'\n | 'indicator'\n | 'innerLabel';\nexport type SegmentedControlCssVariables = {\n root:\n | '--sc-radius'\n | '--sc-color'\n | '--sc-font-size'\n | '--sc-padding'\n | '--sc-shadow'\n | '--sc-transition-duration'\n | '--sc-transition-timing-function';\n};\n\nexport interface SegmentedControlItem<Value = string> {\n value: Value;\n label: React.ReactNode;\n disabled?: boolean;\n}\n\nexport interface SegmentedControlProps<Value extends Primitive = string>\n extends\n BoxProps,\n StylesApiProps<SegmentedControlFactory>,\n ElementProps<'div', 'onChange' | 'value' | 'defaultValue'> {\n /** Data based on which controls are rendered */\n data: (Value | SegmentedControlItem<Value>)[];\n\n /** Controlled component value */\n value?: Value;\n\n /** Uncontrolled component default value */\n defaultValue?: Value;\n\n /** Called when value changes */\n onChange?: (value: Value) => void;\n\n /** Determines whether the component is disabled */\n disabled?: boolean;\n\n /** Name attribute for the radio group. A random name is auto-generated if not provided */\n name?: string;\n\n /** Determines whether the component should take 100% width of its parent @default false */\n fullWidth?: boolean;\n\n /** Key of `theme.colors` or any valid CSS color, changes indicator background color. By default, uses white in light mode and dark.5 in dark mode */\n color?: MantineColor;\n\n /** Controls `font-size`, `padding` and `height` properties @default 'sm' */\n size?: MantineSize | (string & {});\n\n /** Key of `theme.radius` or any valid CSS value to set `border-radius`, numbers are converted to rem @default theme.defaultRadius */\n radius?: MantineRadius;\n\n /** Indicator `transition-duration` in ms, set `0` to turn off transitions @default 200 */\n transitionDuration?: number;\n\n /** Indicator `transition-timing-function` property @default ease */\n transitionTimingFunction?: string;\n\n /** Component orientation @default 'horizontal' */\n orientation?: 'vertical' | 'horizontal';\n\n /** If set to `false`, prevents changing the value */\n readOnly?: boolean;\n\n /** If set, automatically adjusts label text color for optimal contrast against the indicator background color */\n autoContrast?: boolean;\n\n /** Determines whether there should be borders between items @default true */\n withItemsBorders?: boolean;\n}\n\nexport type SegmentedControlFactory = Factory<{\n props: SegmentedControlProps;\n ref: HTMLDivElement;\n stylesNames: SegmentedControlStylesNames;\n vars: SegmentedControlCssVariables;\n signature: <Value extends Primitive = string>(\n props: SegmentedControlProps<Value>\n ) => React.JSX.Element | null;\n}>;\n\nconst defaultProps = {\n withItemsBorders: true,\n} satisfies Partial<SegmentedControlProps>;\n\nconst varsResolver = createVarsResolver<SegmentedControlFactory>(\n (theme, { radius, color, transitionDuration, size, transitionTimingFunction }) => ({\n root: {\n '--sc-radius': radius === undefined ? undefined : getRadius(radius),\n '--sc-color': color ? getThemeColor(color, theme) : undefined,\n '--sc-shadow': color ? undefined : 'var(--mantine-shadow-xs)',\n '--sc-transition-duration':\n transitionDuration === undefined ? undefined : `${transitionDuration}ms`,\n '--sc-transition-timing-function': transitionTimingFunction,\n '--sc-padding': getSize(size, 'sc-padding'),\n '--sc-font-size': getFontSize(size),\n },\n })\n);\n\nexport const SegmentedControl = genericFactory<SegmentedControlFactory>((_props) => {\n const props = useProps('SegmentedControl', defaultProps, _props);\n const {\n classNames,\n className,\n style,\n styles,\n unstyled,\n vars,\n data,\n value,\n defaultValue,\n onChange,\n size,\n name,\n disabled,\n readOnly,\n fullWidth,\n orientation,\n radius,\n color,\n transitionDuration,\n transitionTimingFunction,\n variant,\n autoContrast,\n withItemsBorders,\n mod,\n attributes,\n ref,\n ...others\n } = props;\n\n const getStyles = useStyles<SegmentedControlFactory>({\n name: 'SegmentedControl',\n props: props as any,\n classes,\n className,\n style,\n classNames,\n styles,\n unstyled,\n attributes,\n vars,\n varsResolver,\n });\n\n const theme = useMantineTheme();\n\n const _data = data.map((item) => (isPrimitive(item) ? { label: `${item}`, value: item } : item));\n\n const initialized = useMounted();\n const [key, setKey] = useState(randomId());\n const [parent, setParent] = useState<HTMLElement | null>(null);\n const [refs, setRefs] = useState<Record<string, HTMLElement | null>>({});\n const setElementRef = (element: HTMLElement | null, val: string) => {\n refs[val] = element;\n setRefs(refs);\n };\n\n const [_value, handleValueChange] = useUncontrolled({\n value,\n defaultValue,\n finalValue: Array.isArray(data)\n ? (_data.find((item) => !item.disabled)?.value ?? (data[0] as any)?.value ?? null)\n : null,\n onChange,\n });\n\n const uuid = useId(name);\n\n const controls = _data.map((item) => (\n <Box\n {...getStyles('control')}\n mod={{ active: _value === item.value, orientation }}\n key={`${item.value}`}\n >\n <input\n {...getStyles('input')}\n disabled={disabled || item.disabled}\n type=\"radio\"\n name={uuid}\n value={`${item.value}`}\n id={`${uuid}-${item.value}`}\n checked={_value === item.value}\n onChange={() => !readOnly && handleValueChange(item.value)}\n data-focus-ring={theme.focusRing}\n key={`${item.value}-input`}\n />\n\n <Box\n component=\"label\"\n {...getStyles('label')}\n mod={{\n active: _value === item.value && !(disabled || item.disabled),\n disabled: disabled || item.disabled,\n 'read-only': readOnly,\n }}\n htmlFor={`${uuid}-${item.value}`}\n ref={(node) => setElementRef(node, `${item.value}`)}\n __vars={{\n '--sc-label-color':\n color !== undefined ? getContrastColor({ color, theme, autoContrast }) : undefined,\n }}\n key={`${item.value}-label`}\n >\n <span {...getStyles('innerLabel')}>{item.label}</span>\n </Box>\n </Box>\n ));\n\n const mergedRef = useMergedRef(ref, setParent);\n\n useShallowEffect(() => {\n setKey(randomId());\n }, [data.length]);\n\n if (data.length === 0) {\n return null;\n }\n\n return (\n <Box\n {...getStyles('root')}\n variant={variant}\n size={size}\n ref={mergedRef}\n mod={[\n {\n 'full-width': fullWidth,\n orientation,\n initialized,\n 'with-items-borders': withItemsBorders,\n },\n mod,\n ]}\n {...others}\n role=\"radiogroup\"\n data-disabled={disabled}\n >\n {typeof _value !== 'undefined' && (\n <FloatingIndicator\n target={refs[`${_value}`]}\n parent={parent}\n component=\"span\"\n transitionDuration=\"var(--sc-transition-duration)\"\n key={key}\n {...getStyles('indicator')}\n />\n )}\n\n {controls}\n </Box>\n );\n});\n\nSegmentedControl.classes = classes;\nSegmentedControl.varsResolver = varsResolver;\nSegmentedControl.displayName = '@mantine/core/SegmentedControl';\n\nexport namespace SegmentedControl {\n export type CssVariables = SegmentedControlCssVariables;\n export type Factory = SegmentedControlFactory;\n export type Item<Value extends Primitive = string> = SegmentedControlItem<Value>;\n export type Props<Value extends Primitive = string> = SegmentedControlProps<Value>;\n export type StylesNames = SegmentedControlStylesNames;\n}\n"],"mappings":"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"}
@@ -8,6 +8,8 @@ import { getOptionsLockup } from "../Combobox/get-options-lockup/get-options-loc
8
8
  import { useCombobox } from "../Combobox/use-combobox/use-combobox.mjs";
9
9
  import { Combobox } from "../Combobox/Combobox.mjs";
10
10
  import { OptionsDropdown } from "../Combobox/OptionsDropdown/OptionsDropdown.mjs";
11
+ import { isExternalInputChange } from "../Combobox/is-external-input-change/is-external-input-change.mjs";
12
+ import { getOptionByLabel } from "../Combobox/get-options-lockup/get-option-by-label.mjs";
11
13
  import { useEffect, useMemo, useRef } from "react";
12
14
  import { useId as useId$1, usePrevious, useUncontrolled } from "@mantine/hooks";
13
15
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
@@ -134,6 +136,16 @@ const Select = genericFactory((_props) => {
134
136
  readOnly: readOnly || !searchable,
135
137
  value: search,
136
138
  onChange: (event) => {
139
+ if (isExternalInputChange(event)) {
140
+ if (!readOnly) {
141
+ const externalOption = getOptionByLabel(optionsLockup, event.currentTarget.value);
142
+ if (externalOption && `${externalOption.value}` !== `${_value}`) {
143
+ setValue(externalOption.value, externalOption);
144
+ !controlled && handleSearchChange(externalOption.label);
145
+ }
146
+ }
147
+ return;
148
+ }
137
149
  handleSearchChange(event.currentTarget.value);
138
150
  combobox.openDropdown();
139
151
  selectFirstOptionOnChange && combobox.selectFirstOption();
@@ -1 +1 @@
1
- {"version":3,"file":"Select.mjs","names":["useId"],"sources":["../../../src/components/Select/Select.tsx"],"sourcesContent":["import { useEffect, useMemo, useRef } from 'react';\nimport { useId, usePrevious, useUncontrolled } from '@mantine/hooks';\nimport {\n BoxProps,\n ElementProps,\n Factory,\n genericFactory,\n MantineColor,\n Primitive,\n StylesApiProps,\n useProps,\n useResolvedStylesApi,\n} from '../../core';\nimport {\n Combobox,\n ComboboxItem,\n ComboboxLikeProps,\n ComboboxLikeRenderOptionInput,\n ComboboxLikeStylesNames,\n getOptionsLockup,\n getParsedComboboxData,\n OptionsDropdown,\n OptionsFilter,\n useCombobox,\n} from '../Combobox';\nimport {\n __BaseInputProps,\n __InputStylesNames,\n ClearSectionMode,\n InputClearButtonProps,\n InputVariant,\n} from '../Input';\nimport { InputBase } from '../InputBase';\nimport { ScrollAreaProps } from '../ScrollArea';\n\nexport type SelectStylesNames = __InputStylesNames | ComboboxLikeStylesNames;\n\nexport interface SelectProps<Value extends Primitive = string>\n extends\n BoxProps,\n __BaseInputProps,\n ComboboxLikeProps<Value>,\n StylesApiProps<SelectFactory>,\n ElementProps<'input', 'onChange' | 'size' | 'value' | 'defaultValue'> {\n /** Controlled component value */\n value?: Value | null;\n\n /** Uncontrolled component default value */\n defaultValue?: Value | null;\n\n /** Called when value changes */\n onChange?: (value: Value | null, option: ComboboxItem<Value>) => void;\n\n /** Called when the clear button is clicked */\n onClear?: () => void;\n\n /** Determines whether the select should be searchable @default false */\n searchable?: boolean;\n\n /** Displays check icon near the selected option label @default true */\n withCheckIcon?: boolean;\n\n /** Aligns unchecked labels with the checked one @default false */\n withAlignedLabels?: boolean;\n\n /** Position of the check icon relative to the option label @default 'left' */\n checkIconPosition?: 'left' | 'right';\n\n /** Message displayed when no options match the search query or when there is no data */\n nothingFoundMessage?: React.ReactNode;\n\n /** Controlled search value */\n searchValue?: string;\n\n /** Default search value */\n defaultSearchValue?: string;\n\n /** Called when search changes */\n onSearchChange?: (value: string) => void;\n\n /** Allows deselecting the selected option by clicking it @default true */\n allowDeselect?: boolean;\n\n /** Displays clear button in the right section when component has value @default false */\n clearable?: boolean;\n\n /** Determines how the clear button and rightSection are rendered @default 'both' */\n clearSectionMode?: ClearSectionMode;\n\n /** Props passed down to the clear button */\n clearButtonProps?: InputClearButtonProps;\n\n /** Props passed down to the hidden input */\n hiddenInputProps?: Omit<React.ComponentProps<'input'>, 'value'>;\n\n /** A function to render content of the option, replaces the default content of the option */\n renderOption?: (item: ComboboxLikeRenderOptionInput<ComboboxItem<Value>>) => React.ReactNode;\n\n /** Props passed down to the underlying `ScrollArea` component in the dropdown */\n scrollAreaProps?: ScrollAreaProps;\n\n /** Controls color of the default chevron, by default depends on the color scheme */\n chevronColor?: MantineColor;\n\n /** Automatically selects the highlighted option when input loses focus @default false */\n autoSelectOnBlur?: boolean;\n\n /** Opens dropdown when input receives focus (requires searchable={true}) @default true */\n openOnFocus?: boolean;\n}\n\nexport type SelectFactory = Factory<{\n props: SelectProps;\n ref: HTMLInputElement;\n stylesNames: SelectStylesNames;\n variant: InputVariant;\n signature: <Value extends Primitive = string>(props: SelectProps<Value>) => React.JSX.Element;\n}>;\n\nconst defaultProps = {\n size: 'sm',\n withCheckIcon: true,\n allowDeselect: true,\n checkIconPosition: 'left',\n openOnFocus: true,\n} satisfies Partial<SelectProps>;\n\nexport const Select = genericFactory<SelectFactory>((_props) => {\n const props = useProps(['Input', 'InputWrapper', 'Select'], defaultProps, _props);\n const {\n classNames,\n styles,\n unstyled,\n vars,\n dropdownOpened,\n defaultDropdownOpened,\n onDropdownClose,\n onDropdownOpen,\n onFocus,\n onBlur,\n onClick,\n onChange,\n data,\n value,\n defaultValue,\n selectFirstOptionOnChange,\n selectFirstOptionOnDropdownOpen,\n onOptionSubmit,\n comboboxProps,\n readOnly,\n disabled,\n filter,\n limit,\n withScrollArea,\n maxDropdownHeight,\n floatingHeight,\n size,\n searchable,\n rightSection,\n checkIconPosition,\n withCheckIcon,\n withAlignedLabels,\n nothingFoundMessage,\n name,\n form,\n searchValue,\n defaultSearchValue,\n onSearchChange,\n allowDeselect,\n error,\n rightSectionPointerEvents,\n id,\n clearable,\n clearSectionMode,\n clearButtonProps,\n hiddenInputProps,\n renderOption,\n onClear,\n autoComplete,\n scrollAreaProps,\n __defaultRightSection,\n __clearSection,\n __clearable,\n chevronColor,\n autoSelectOnBlur,\n openOnFocus,\n attributes,\n ...others\n } = props;\n\n const parsedData = useMemo(() => getParsedComboboxData(data), [data]);\n const retainedSelectedOptions = useRef<Record<string, ComboboxItem<Primitive>>>({});\n const optionsLockup = useMemo(() => getOptionsLockup(parsedData), [parsedData]);\n const _id = useId(id);\n\n const [_value, setValue, controlled] = useUncontrolled({\n value,\n defaultValue,\n finalValue: null,\n onChange,\n });\n\n const selectedOption =\n _value != null\n ? `${_value}` in optionsLockup\n ? optionsLockup[`${_value}`]\n : retainedSelectedOptions.current[`${_value}`]\n : undefined;\n const previousSelectedOption = usePrevious(selectedOption);\n\n const [search, setSearch, searchControlled] = useUncontrolled({\n value: searchValue,\n defaultValue: defaultSearchValue,\n finalValue: selectedOption ? selectedOption.label : '',\n onChange: onSearchChange,\n });\n\n const combobox = useCombobox({\n opened: dropdownOpened,\n defaultOpened: defaultDropdownOpened,\n onDropdownOpen: () => {\n onDropdownOpen?.();\n if (selectFirstOptionOnDropdownOpen) {\n combobox.selectFirstOption();\n } else {\n combobox.updateSelectedOptionIndex('active', { scrollIntoView: true });\n }\n },\n onDropdownClose: () => {\n onDropdownClose?.();\n // Required for autoSelectOnBlur to work correctly\n setTimeout(combobox.resetSelectedOption, 0);\n },\n });\n\n const handleSearchChange = (value: string) => {\n setSearch(value);\n combobox.resetSelectedOption();\n };\n\n const { resolvedClassNames, resolvedStyles } = useResolvedStylesApi<SelectFactory>({\n props,\n styles,\n classNames,\n });\n\n useEffect(() => {\n if (selectFirstOptionOnChange) {\n combobox.selectFirstOption();\n }\n }, [selectFirstOptionOnChange, search]);\n\n useEffect(() => {\n if (value === null) {\n handleSearchChange('');\n }\n\n if (\n value != null &&\n selectedOption &&\n (previousSelectedOption?.value !== selectedOption.value ||\n previousSelectedOption?.label !== selectedOption.label)\n ) {\n handleSearchChange(selectedOption.label);\n }\n }, [value, selectedOption]);\n\n useEffect(() => {\n if (!controlled && !searchControlled) {\n handleSearchChange(\n _value != null\n ? `${_value}` in optionsLockup\n ? optionsLockup[`${_value}`]?.label\n : retainedSelectedOptions.current[`${_value}`]?.label || ''\n : ''\n );\n }\n }, [optionsLockup, _value]);\n\n useEffect(() => {\n if (_value) {\n if (`${_value}` in optionsLockup) {\n retainedSelectedOptions.current[`${_value}`] = optionsLockup[`${_value}`];\n }\n }\n }, [optionsLockup, _value]);\n\n const clearButton = (\n <Combobox.ClearButton\n {...clearButtonProps}\n onClear={() => {\n setValue(null, null);\n handleSearchChange('');\n onClear?.();\n }}\n />\n );\n\n const _clearable = clearable && _value != null && !disabled && !readOnly;\n\n return (\n <>\n <Combobox\n store={combobox}\n __staticSelector=\"Select\"\n classNames={resolvedClassNames}\n styles={resolvedStyles}\n unstyled={unstyled}\n readOnly={readOnly}\n size={size}\n attributes={attributes}\n floatingHeight={floatingHeight}\n keepMounted={autoSelectOnBlur}\n onOptionSubmit={(val) => {\n onOptionSubmit?.(val as any);\n const optionLockup = allowDeselect\n ? `${optionsLockup[val].value}` === `${_value}`\n ? null\n : optionsLockup[val]\n : optionsLockup[val];\n\n const nextValue = optionLockup ? optionLockup.value : null;\n\n nextValue !== _value && setValue(nextValue as any, optionLockup);\n !controlled && handleSearchChange(nextValue != null ? optionLockup?.label || '' : '');\n combobox.closeDropdown();\n }}\n {...comboboxProps}\n >\n <Combobox.Target\n targetType={searchable ? 'input' : 'button'}\n autoComplete={autoComplete}\n withExpandedAttribute\n >\n <InputBase\n id={_id}\n __defaultRightSection={\n <Combobox.Chevron\n size={size}\n error={error}\n unstyled={unstyled}\n color={chevronColor}\n />\n }\n __clearSection={clearButton}\n __clearable={_clearable}\n __clearSectionMode={clearSectionMode}\n rightSection={rightSection}\n rightSectionPointerEvents={rightSectionPointerEvents || 'none'}\n {...others}\n size={size}\n __staticSelector=\"Select\"\n disabled={disabled}\n readOnly={readOnly || !searchable}\n value={search}\n onChange={(event) => {\n handleSearchChange(event.currentTarget.value);\n combobox.openDropdown();\n selectFirstOptionOnChange && combobox.selectFirstOption();\n }}\n onFocus={(event) => {\n openOnFocus && !!searchable && combobox.openDropdown();\n onFocus?.(event);\n }}\n onBlur={(event) => {\n if (autoSelectOnBlur) {\n combobox.clickSelectedOption();\n }\n\n !!searchable && combobox.closeDropdown();\n const optionLockup =\n _value != null &&\n (`${_value}` in optionsLockup\n ? optionsLockup[`${_value}`]\n : retainedSelectedOptions.current[`${_value}`]);\n handleSearchChange(optionLockup ? optionLockup.label || '' : '');\n onBlur?.(event);\n }}\n onClick={(event) => {\n searchable ? combobox.openDropdown() : combobox.toggleDropdown();\n onClick?.(event);\n }}\n classNames={resolvedClassNames}\n styles={resolvedStyles}\n unstyled={unstyled}\n pointer={!searchable}\n error={error}\n attributes={attributes}\n />\n </Combobox.Target>\n <OptionsDropdown\n data={parsedData as any}\n hidden={readOnly || disabled}\n filter={filter as OptionsFilter<Primitive> | undefined}\n search={search}\n limit={limit}\n hiddenWhenEmpty={!nothingFoundMessage}\n withScrollArea={withScrollArea}\n maxDropdownHeight={maxDropdownHeight}\n filterOptions={!!searchable && selectedOption?.label !== search}\n value={_value}\n checkIconPosition={checkIconPosition}\n withCheckIcon={withCheckIcon}\n withAlignedLabels={withAlignedLabels}\n nothingFoundMessage={nothingFoundMessage}\n unstyled={unstyled}\n labelId={others.label ? `${_id}-label` : undefined}\n aria-label={others.label ? undefined : others['aria-label']}\n renderOption={renderOption}\n scrollAreaProps={scrollAreaProps}\n />\n </Combobox>\n <Combobox.HiddenInput\n value={_value}\n name={name}\n form={form}\n disabled={disabled}\n {...hiddenInputProps}\n />\n </>\n );\n});\n\nSelect.classes = { ...InputBase.classes, ...Combobox.classes };\nSelect.displayName = '@mantine/core/Select';\n\nexport namespace Select {\n export type Props<Value extends Primitive = string> = SelectProps<Value>;\n export type StylesNames = SelectStylesNames;\n export type Factory = SelectFactory;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"Select.mjs","names":["useId"],"sources":["../../../src/components/Select/Select.tsx"],"sourcesContent":["import { useEffect, useMemo, useRef } from 'react';\nimport { useId, usePrevious, useUncontrolled } from '@mantine/hooks';\nimport {\n BoxProps,\n ElementProps,\n Factory,\n genericFactory,\n MantineColor,\n Primitive,\n StylesApiProps,\n useProps,\n useResolvedStylesApi,\n} from '../../core';\nimport {\n Combobox,\n ComboboxItem,\n ComboboxLikeProps,\n ComboboxLikeRenderOptionInput,\n ComboboxLikeStylesNames,\n getOptionsLockup,\n getParsedComboboxData,\n OptionsDropdown,\n OptionsFilter,\n useCombobox,\n} from '../Combobox';\nimport { getOptionByLabel } from '../Combobox/get-options-lockup/get-option-by-label';\nimport { isExternalInputChange } from '../Combobox/is-external-input-change/is-external-input-change';\nimport {\n __BaseInputProps,\n __InputStylesNames,\n ClearSectionMode,\n InputClearButtonProps,\n InputVariant,\n} from '../Input';\nimport { InputBase } from '../InputBase';\nimport { ScrollAreaProps } from '../ScrollArea';\n\nexport type SelectStylesNames = __InputStylesNames | ComboboxLikeStylesNames;\n\nexport interface SelectProps<Value extends Primitive = string>\n extends\n BoxProps,\n __BaseInputProps,\n ComboboxLikeProps<Value>,\n StylesApiProps<SelectFactory>,\n ElementProps<'input', 'onChange' | 'size' | 'value' | 'defaultValue'> {\n /** Controlled component value */\n value?: Value | null;\n\n /** Uncontrolled component default value */\n defaultValue?: Value | null;\n\n /** Called when value changes */\n onChange?: (value: Value | null, option: ComboboxItem<Value>) => void;\n\n /** Called when the clear button is clicked */\n onClear?: () => void;\n\n /** Determines whether the select should be searchable @default false */\n searchable?: boolean;\n\n /** Displays check icon near the selected option label @default true */\n withCheckIcon?: boolean;\n\n /** Aligns unchecked labels with the checked one @default false */\n withAlignedLabels?: boolean;\n\n /** Position of the check icon relative to the option label @default 'left' */\n checkIconPosition?: 'left' | 'right';\n\n /** Message displayed when no options match the search query or when there is no data */\n nothingFoundMessage?: React.ReactNode;\n\n /** Controlled search value */\n searchValue?: string;\n\n /** Default search value */\n defaultSearchValue?: string;\n\n /** Called when search changes */\n onSearchChange?: (value: string) => void;\n\n /** Allows deselecting the selected option by clicking it @default true */\n allowDeselect?: boolean;\n\n /** Displays clear button in the right section when component has value @default false */\n clearable?: boolean;\n\n /** Determines how the clear button and rightSection are rendered @default 'both' */\n clearSectionMode?: ClearSectionMode;\n\n /** Props passed down to the clear button */\n clearButtonProps?: InputClearButtonProps;\n\n /** Props passed down to the hidden input */\n hiddenInputProps?: Omit<React.ComponentProps<'input'>, 'value'>;\n\n /** A function to render content of the option, replaces the default content of the option */\n renderOption?: (item: ComboboxLikeRenderOptionInput<ComboboxItem<Value>>) => React.ReactNode;\n\n /** Props passed down to the underlying `ScrollArea` component in the dropdown */\n scrollAreaProps?: ScrollAreaProps;\n\n /** Controls color of the default chevron, by default depends on the color scheme */\n chevronColor?: MantineColor;\n\n /** Automatically selects the highlighted option when input loses focus @default false */\n autoSelectOnBlur?: boolean;\n\n /** Opens dropdown when input receives focus (requires searchable={true}) @default true */\n openOnFocus?: boolean;\n}\n\nexport type SelectFactory = Factory<{\n props: SelectProps;\n ref: HTMLInputElement;\n stylesNames: SelectStylesNames;\n variant: InputVariant;\n signature: <Value extends Primitive = string>(props: SelectProps<Value>) => React.JSX.Element;\n}>;\n\nconst defaultProps = {\n size: 'sm',\n withCheckIcon: true,\n allowDeselect: true,\n checkIconPosition: 'left',\n openOnFocus: true,\n} satisfies Partial<SelectProps>;\n\nexport const Select = genericFactory<SelectFactory>((_props) => {\n const props = useProps(['Input', 'InputWrapper', 'Select'], defaultProps, _props);\n const {\n classNames,\n styles,\n unstyled,\n vars,\n dropdownOpened,\n defaultDropdownOpened,\n onDropdownClose,\n onDropdownOpen,\n onFocus,\n onBlur,\n onClick,\n onChange,\n data,\n value,\n defaultValue,\n selectFirstOptionOnChange,\n selectFirstOptionOnDropdownOpen,\n onOptionSubmit,\n comboboxProps,\n readOnly,\n disabled,\n filter,\n limit,\n withScrollArea,\n maxDropdownHeight,\n floatingHeight,\n size,\n searchable,\n rightSection,\n checkIconPosition,\n withCheckIcon,\n withAlignedLabels,\n nothingFoundMessage,\n name,\n form,\n searchValue,\n defaultSearchValue,\n onSearchChange,\n allowDeselect,\n error,\n rightSectionPointerEvents,\n id,\n clearable,\n clearSectionMode,\n clearButtonProps,\n hiddenInputProps,\n renderOption,\n onClear,\n autoComplete,\n scrollAreaProps,\n __defaultRightSection,\n __clearSection,\n __clearable,\n chevronColor,\n autoSelectOnBlur,\n openOnFocus,\n attributes,\n ...others\n } = props;\n\n const parsedData = useMemo(() => getParsedComboboxData(data), [data]);\n const retainedSelectedOptions = useRef<Record<string, ComboboxItem<Primitive>>>({});\n const optionsLockup = useMemo(() => getOptionsLockup(parsedData), [parsedData]);\n const _id = useId(id);\n\n const [_value, setValue, controlled] = useUncontrolled({\n value,\n defaultValue,\n finalValue: null,\n onChange,\n });\n\n const selectedOption =\n _value != null\n ? `${_value}` in optionsLockup\n ? optionsLockup[`${_value}`]\n : retainedSelectedOptions.current[`${_value}`]\n : undefined;\n const previousSelectedOption = usePrevious(selectedOption);\n\n const [search, setSearch, searchControlled] = useUncontrolled({\n value: searchValue,\n defaultValue: defaultSearchValue,\n finalValue: selectedOption ? selectedOption.label : '',\n onChange: onSearchChange,\n });\n\n const combobox = useCombobox({\n opened: dropdownOpened,\n defaultOpened: defaultDropdownOpened,\n onDropdownOpen: () => {\n onDropdownOpen?.();\n if (selectFirstOptionOnDropdownOpen) {\n combobox.selectFirstOption();\n } else {\n combobox.updateSelectedOptionIndex('active', { scrollIntoView: true });\n }\n },\n onDropdownClose: () => {\n onDropdownClose?.();\n // Required for autoSelectOnBlur to work correctly\n setTimeout(combobox.resetSelectedOption, 0);\n },\n });\n\n const handleSearchChange = (value: string) => {\n setSearch(value);\n combobox.resetSelectedOption();\n };\n\n const { resolvedClassNames, resolvedStyles } = useResolvedStylesApi<SelectFactory>({\n props,\n styles,\n classNames,\n });\n\n useEffect(() => {\n if (selectFirstOptionOnChange) {\n combobox.selectFirstOption();\n }\n }, [selectFirstOptionOnChange, search]);\n\n useEffect(() => {\n if (value === null) {\n handleSearchChange('');\n }\n\n if (\n value != null &&\n selectedOption &&\n (previousSelectedOption?.value !== selectedOption.value ||\n previousSelectedOption?.label !== selectedOption.label)\n ) {\n handleSearchChange(selectedOption.label);\n }\n }, [value, selectedOption]);\n\n useEffect(() => {\n if (!controlled && !searchControlled) {\n handleSearchChange(\n _value != null\n ? `${_value}` in optionsLockup\n ? optionsLockup[`${_value}`]?.label\n : retainedSelectedOptions.current[`${_value}`]?.label || ''\n : ''\n );\n }\n }, [optionsLockup, _value]);\n\n useEffect(() => {\n if (_value) {\n if (`${_value}` in optionsLockup) {\n retainedSelectedOptions.current[`${_value}`] = optionsLockup[`${_value}`];\n }\n }\n }, [optionsLockup, _value]);\n\n const clearButton = (\n <Combobox.ClearButton\n {...clearButtonProps}\n onClear={() => {\n setValue(null, null);\n handleSearchChange('');\n onClear?.();\n }}\n />\n );\n\n const _clearable = clearable && _value != null && !disabled && !readOnly;\n\n return (\n <>\n <Combobox\n store={combobox}\n __staticSelector=\"Select\"\n classNames={resolvedClassNames}\n styles={resolvedStyles}\n unstyled={unstyled}\n readOnly={readOnly}\n size={size}\n attributes={attributes}\n floatingHeight={floatingHeight}\n keepMounted={autoSelectOnBlur}\n onOptionSubmit={(val) => {\n onOptionSubmit?.(val as any);\n const optionLockup = allowDeselect\n ? `${optionsLockup[val].value}` === `${_value}`\n ? null\n : optionsLockup[val]\n : optionsLockup[val];\n\n const nextValue = optionLockup ? optionLockup.value : null;\n\n nextValue !== _value && setValue(nextValue as any, optionLockup);\n !controlled && handleSearchChange(nextValue != null ? optionLockup?.label || '' : '');\n combobox.closeDropdown();\n }}\n {...comboboxProps}\n >\n <Combobox.Target\n targetType={searchable ? 'input' : 'button'}\n autoComplete={autoComplete}\n withExpandedAttribute\n >\n <InputBase\n id={_id}\n __defaultRightSection={\n <Combobox.Chevron\n size={size}\n error={error}\n unstyled={unstyled}\n color={chevronColor}\n />\n }\n __clearSection={clearButton}\n __clearable={_clearable}\n __clearSectionMode={clearSectionMode}\n rightSection={rightSection}\n rightSectionPointerEvents={rightSectionPointerEvents || 'none'}\n {...others}\n size={size}\n __staticSelector=\"Select\"\n disabled={disabled}\n readOnly={readOnly || !searchable}\n value={search}\n onChange={(event) => {\n if (isExternalInputChange(event)) {\n if (!readOnly) {\n const externalOption = getOptionByLabel(optionsLockup, event.currentTarget.value);\n\n if (externalOption && `${externalOption.value}` !== `${_value}`) {\n setValue(externalOption.value as any, externalOption);\n !controlled && handleSearchChange(externalOption.label);\n }\n }\n\n return;\n }\n\n handleSearchChange(event.currentTarget.value);\n combobox.openDropdown();\n selectFirstOptionOnChange && combobox.selectFirstOption();\n }}\n onFocus={(event) => {\n openOnFocus && !!searchable && combobox.openDropdown();\n onFocus?.(event);\n }}\n onBlur={(event) => {\n if (autoSelectOnBlur) {\n combobox.clickSelectedOption();\n }\n\n !!searchable && combobox.closeDropdown();\n const optionLockup =\n _value != null &&\n (`${_value}` in optionsLockup\n ? optionsLockup[`${_value}`]\n : retainedSelectedOptions.current[`${_value}`]);\n handleSearchChange(optionLockup ? optionLockup.label || '' : '');\n onBlur?.(event);\n }}\n onClick={(event) => {\n searchable ? combobox.openDropdown() : combobox.toggleDropdown();\n onClick?.(event);\n }}\n classNames={resolvedClassNames}\n styles={resolvedStyles}\n unstyled={unstyled}\n pointer={!searchable}\n error={error}\n attributes={attributes}\n />\n </Combobox.Target>\n <OptionsDropdown\n data={parsedData as any}\n hidden={readOnly || disabled}\n filter={filter as OptionsFilter<Primitive> | undefined}\n search={search}\n limit={limit}\n hiddenWhenEmpty={!nothingFoundMessage}\n withScrollArea={withScrollArea}\n maxDropdownHeight={maxDropdownHeight}\n filterOptions={!!searchable && selectedOption?.label !== search}\n value={_value}\n checkIconPosition={checkIconPosition}\n withCheckIcon={withCheckIcon}\n withAlignedLabels={withAlignedLabels}\n nothingFoundMessage={nothingFoundMessage}\n unstyled={unstyled}\n labelId={others.label ? `${_id}-label` : undefined}\n aria-label={others.label ? undefined : others['aria-label']}\n renderOption={renderOption}\n scrollAreaProps={scrollAreaProps}\n />\n </Combobox>\n <Combobox.HiddenInput\n value={_value}\n name={name}\n form={form}\n disabled={disabled}\n {...hiddenInputProps}\n />\n </>\n );\n});\n\nSelect.classes = { ...InputBase.classes, ...Combobox.classes };\nSelect.displayName = '@mantine/core/Select';\n\nexport namespace Select {\n export type Props<Value extends Primitive = string> = SelectProps<Value>;\n export type StylesNames = SelectStylesNames;\n export type Factory = SelectFactory;\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"SemiCircleProgress.mjs","names":["classes"],"sources":["../../../src/components/SemiCircleProgress/SemiCircleProgress.tsx"],"sourcesContent":["import { clamp } from '@mantine/hooks';\nimport {\n Box,\n BoxProps,\n createVarsResolver,\n ElementProps,\n factory,\n Factory,\n getThemeColor,\n MantineColor,\n rem,\n StylesApiProps,\n useProps,\n useStyles,\n} from '../../core';\nimport classes from './SemiCircleProgress.module.css';\n\nexport type SemiCircleProgressStylesNames =\n | 'root'\n | 'svg'\n | 'emptySegment'\n | 'filledSegment'\n | 'label';\n\nexport type SemiCircleProgressCssVariables = {\n root:\n | '--scp-filled-segment-color'\n | '--scp-empty-segment-color'\n | '--scp-rotation'\n | '--scp-transition-duration'\n | '--scp-thickness';\n};\n\nexport interface SemiCircleProgressProps\n extends BoxProps, StylesApiProps<SemiCircleProgressFactory>, ElementProps<'div'> {\n /** Progress value from `0` to `100` */\n value: number;\n\n /** Width of the component and diameter of the full circle in px. The visible SVG height will be size/2 @default 200 */\n size?: number;\n\n /** Stroke width of the circle segments in px @default 12 */\n thickness?: number;\n\n /** Orientation of the circle @default 'up' */\n orientation?: 'up' | 'down';\n\n /** Direction from which the circle is filled @default 'left-to-right' */\n fillDirection?: 'right-to-left' | 'left-to-right';\n\n /** Key of `theme.colors` or any valid CSS color value @default theme.primaryColor */\n filledSegmentColor?: MantineColor;\n\n /** Key of `theme.colors` or any valid CSS color value @default 'gray.2' in light mode, 'dark.4' in dark mode */\n emptySegmentColor?: MantineColor;\n\n /** Transition duration for the filled segment progress changes in ms. Does not affect color transitions @default 0 */\n transitionDuration?: number;\n\n /** Label rendered inside the circle */\n label?: React.ReactNode;\n\n /** Label position relative to the circle center @default 'bottom' */\n labelPosition?: 'center' | 'bottom';\n}\n\nexport type SemiCircleProgressFactory = Factory<{\n props: SemiCircleProgressProps;\n ref: HTMLDivElement;\n stylesNames: SemiCircleProgressStylesNames;\n vars: SemiCircleProgressCssVariables;\n}>;\n\nconst defaultProps = {\n size: 200,\n thickness: 12,\n orientation: 'up',\n fillDirection: 'left-to-right',\n labelPosition: 'bottom',\n} satisfies Partial<SemiCircleProgressProps>;\n\nfunction getRotation({\n orientation,\n fillDirection,\n}: Pick<SemiCircleProgressProps, 'orientation' | 'fillDirection'>) {\n if (orientation === 'down') {\n if (fillDirection === 'right-to-left') {\n return 'rotate(180deg) rotateY(180deg)';\n }\n return 'rotate(180deg)';\n }\n if (fillDirection === 'left-to-right') {\n return 'rotateY(180deg)';\n }\n\n return undefined;\n}\n\nconst varsResolver = createVarsResolver<SemiCircleProgressFactory>(\n (\n theme,\n {\n filledSegmentColor,\n emptySegmentColor,\n orientation,\n fillDirection,\n transitionDuration,\n thickness,\n }\n ) => ({\n root: {\n '--scp-filled-segment-color': filledSegmentColor\n ? getThemeColor(filledSegmentColor, theme)\n : undefined,\n '--scp-empty-segment-color': emptySegmentColor\n ? getThemeColor(emptySegmentColor, theme)\n : undefined,\n '--scp-rotation': getRotation({ orientation, fillDirection }),\n '--scp-transition-duration': transitionDuration ? `${transitionDuration}ms` : undefined,\n '--scp-thickness': rem(thickness),\n },\n })\n);\n\nexport const SemiCircleProgress = factory<SemiCircleProgressFactory>((_props) => {\n const props = useProps('SemiCircleProgress', defaultProps, _props);\n const {\n classNames,\n className,\n style,\n styles,\n unstyled,\n vars,\n size,\n thickness,\n value,\n orientation,\n fillDirection,\n filledSegmentColor,\n emptySegmentColor,\n transitionDuration,\n label,\n labelPosition,\n attributes,\n ...others\n } = props;\n\n const getStyles = useStyles<SemiCircleProgressFactory>({\n name: 'SemiCircleProgress',\n classes,\n props,\n className,\n style,\n classNames,\n styles,\n unstyled,\n attributes,\n vars,\n varsResolver,\n });\n\n const coordinateForCircle = size / 2;\n const radius = (size - 2 * thickness) / 2;\n const circumference = Math.PI * radius;\n const semiCirclePercentage = clamp(value, 0, 100) * (circumference / 100);\n\n return (\n <Box size={size} {...getStyles('root')} {...others}>\n {label && (\n <div {...getStyles('label')} data-position={labelPosition} data-orientation={orientation}>\n {label}\n </div>\n )}\n\n <svg width={size} height={size / 2} viewBox={`0 0 ${size} ${size / 2}`} {...getStyles('svg')}>\n <circle\n cx={coordinateForCircle}\n cy={coordinateForCircle}\n r={radius}\n fill=\"none\"\n stroke=\"var(--scp-empty-segment-color)\"\n strokeWidth={thickness}\n strokeDasharray={circumference}\n {...getStyles('emptySegment', { style: { strokeDashoffset: circumference } })}\n />\n\n <circle\n cx={coordinateForCircle}\n cy={coordinateForCircle}\n r={radius}\n fill=\"none\"\n stroke=\"var(--scp-filled-segment-color)\"\n strokeWidth={thickness}\n strokeDasharray={circumference}\n {...getStyles('filledSegment', {\n style: {\n strokeDashoffset: semiCirclePercentage,\n ...(semiCirclePercentage === 0 ? { strokeOpacity: 0 } : null),\n },\n })}\n />\n </svg>\n </Box>\n );\n});\n\nSemiCircleProgress.displayName = '@mantine/core/SemiCircleProgress';\nSemiCircleProgress.classes = classes;\nSemiCircleProgress.varsResolver = varsResolver;\n\nexport namespace SemiCircleProgress {\n export type Props = SemiCircleProgressProps;\n export type StylesNames = SemiCircleProgressStylesNames;\n export type CssVariables = SemiCircleProgressCssVariables;\n export type Factory = SemiCircleProgressFactory;\n}\n"],"mappings":";;;;;;;;;;;;AAyEA,MAAM,eAAe;CACnB,MAAM;CACN,WAAW;CACX,aAAa;CACb,eAAe;CACf,eAAe;AACjB;AAEA,SAAS,YAAY,EACnB,aACA,iBACiE;CACjE,IAAI,gBAAgB,QAAQ;EAC1B,IAAI,kBAAkB,iBACpB,OAAO;EAET,OAAO;CACT;CACA,IAAI,kBAAkB,iBACpB,OAAO;AAIX;AAEA,MAAM,eAAe,oBAEjB,OACA,EACE,oBACA,mBACA,aACA,eACA,oBACA,iBAEE,EACJ,MAAM;CACJ,8BAA8B,qBAC1B,cAAc,oBAAoB,KAAK,IACvC,KAAA;CACJ,6BAA6B,oBACzB,cAAc,mBAAmB,KAAK,IACtC,KAAA;CACJ,kBAAkB,YAAY;EAAE;EAAa;CAAc,CAAC;CAC5D,6BAA6B,qBAAqB,GAAG,mBAAmB,MAAM,KAAA;CAC9E,mBAAmB,IAAI,SAAS;AAClC,EACF,EACF;AAEA,MAAa,qBAAqB,SAAoC,WAAW;CAC/E,MAAM,QAAQ,SAAS,sBAAsB,cAAc,MAAM;CACjE,MAAM,EACJ,YACA,WACA,OACA,QACA,UACA,MACA,MACA,WACA,OACA,aACA,eACA,oBACA,mBACA,oBACA,OACA,eACA,YACA,GAAG,WACD;CAEJ,MAAM,YAAY,UAAqC;EACrD,MAAM;EACN,SAAA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,CAAC;CAED,MAAM,sBAAsB,OAAO;CACnC,MAAM,UAAU,OAAO,IAAI,aAAa;CACxC,MAAM,gBAAgB,KAAK,KAAK;CAChC,MAAM,uBAAuB,MAAM,OAAO,GAAG,GAAG,KAAK,gBAAgB;CAErE,OACE,qBAAC,KAAD;EAAW;EAAM,GAAI,UAAU,MAAM;EAAG,GAAI;YAA5C,CACG,SACC,oBAAC,OAAD;GAAK,GAAI,UAAU,OAAO;GAAG,iBAAe;GAAe,oBAAkB;aAC1E;EACE,CAAA,GAGP,qBAAC,OAAD;GAAK,OAAO;GAAM,QAAQ,OAAO;GAAG,SAAS,OAAO,KAAK,GAAG,OAAO;GAAK,GAAI,UAAU,KAAK;aAA3F,CACE,oBAAC,UAAD;IACE,IAAI;IACJ,IAAI;IACJ,GAAG;IACH,MAAK;IACL,QAAO;IACP,aAAa;IACb,iBAAiB;IACjB,GAAI,UAAU,gBAAgB,EAAE,OAAO,EAAE,kBAAkB,cAAc,EAAE,CAAC;GAC7E,CAAA,GAED,oBAAC,UAAD;IACE,IAAI;IACJ,IAAI;IACJ,GAAG;IACH,MAAK;IACL,QAAO;IACP,aAAa;IACb,iBAAiB;IACjB,GAAI,UAAU,iBAAiB,EAC7B,OAAO;KACL,kBAAkB;KAClB,GAAI,yBAAyB,IAAI,EAAE,eAAe,EAAE,IAAI;IAC1D,EACF,CAAC;GACF,CAAA,CACE;IACF;;AAET,CAAC;AAED,mBAAmB,cAAc;AACjC,mBAAmB,UAAUA;AAC7B,mBAAmB,eAAe"}
1
+ {"version":3,"file":"SemiCircleProgress.mjs","names":["classes"],"sources":["../../../src/components/SemiCircleProgress/SemiCircleProgress.tsx"],"sourcesContent":["import { clamp } from '@mantine/hooks';\nimport {\n Box,\n BoxProps,\n createVarsResolver,\n ElementProps,\n factory,\n Factory,\n getThemeColor,\n MantineColor,\n rem,\n StylesApiProps,\n useProps,\n useStyles,\n} from '../../core';\nimport classes from './SemiCircleProgress.module.css';\n\nexport type SemiCircleProgressStylesNames =\n | 'root'\n | 'svg'\n | 'emptySegment'\n | 'filledSegment'\n | 'label';\n\nexport type SemiCircleProgressCssVariables = {\n root:\n | '--scp-filled-segment-color'\n | '--scp-empty-segment-color'\n | '--scp-rotation'\n | '--scp-transition-duration'\n | '--scp-thickness';\n};\n\nexport interface SemiCircleProgressProps\n extends BoxProps, StylesApiProps<SemiCircleProgressFactory>, ElementProps<'div'> {\n /** Progress value from `0` to `100` */\n value: number;\n\n /** Width of the component and diameter of the full circle in px. The visible SVG height will be size/2 @default 200 */\n size?: number;\n\n /** Stroke width of the circle segments in px @default 12 */\n thickness?: number;\n\n /** Orientation of the circle @default 'up' */\n orientation?: 'up' | 'down';\n\n /** Direction from which the circle is filled @default 'left-to-right' */\n fillDirection?: 'right-to-left' | 'left-to-right';\n\n /** Key of `theme.colors` or any valid CSS color value @default theme.primaryColor */\n filledSegmentColor?: MantineColor;\n\n /** Key of `theme.colors` or any valid CSS color value @default 'gray.2' in light mode, 'dark.4' in dark mode */\n emptySegmentColor?: MantineColor;\n\n /** Transition duration for the filled segment progress changes in ms. Does not affect color transitions @default 0 */\n transitionDuration?: number;\n\n /** Label rendered inside the circle */\n label?: React.ReactNode;\n\n /** Label position relative to the circle center @default 'bottom' */\n labelPosition?: 'center' | 'bottom';\n}\n\nexport type SemiCircleProgressFactory = Factory<{\n props: SemiCircleProgressProps;\n ref: HTMLDivElement;\n stylesNames: SemiCircleProgressStylesNames;\n vars: SemiCircleProgressCssVariables;\n}>;\n\nconst defaultProps = {\n size: 200,\n thickness: 12,\n orientation: 'up',\n fillDirection: 'left-to-right',\n labelPosition: 'bottom',\n} satisfies Partial<SemiCircleProgressProps>;\n\nfunction getRotation({\n orientation,\n fillDirection,\n}: Pick<SemiCircleProgressProps, 'orientation' | 'fillDirection'>) {\n if (orientation === 'down') {\n if (fillDirection === 'right-to-left') {\n return 'rotate(180deg) rotateY(180deg)';\n }\n return 'rotate(180deg)';\n }\n if (fillDirection === 'left-to-right') {\n return 'rotateY(180deg)';\n }\n\n return undefined;\n}\n\nconst varsResolver = createVarsResolver<SemiCircleProgressFactory>(\n (\n theme,\n {\n filledSegmentColor,\n emptySegmentColor,\n orientation,\n fillDirection,\n transitionDuration,\n thickness,\n }\n ) => ({\n root: {\n '--scp-filled-segment-color': filledSegmentColor\n ? getThemeColor(filledSegmentColor, theme)\n : undefined,\n '--scp-empty-segment-color': emptySegmentColor\n ? getThemeColor(emptySegmentColor, theme)\n : undefined,\n '--scp-rotation': getRotation({ orientation, fillDirection }),\n '--scp-transition-duration': transitionDuration ? `${transitionDuration}ms` : undefined,\n '--scp-thickness': rem(thickness),\n },\n })\n);\n\nexport const SemiCircleProgress = factory<SemiCircleProgressFactory>((_props) => {\n const props = useProps('SemiCircleProgress', defaultProps, _props);\n const {\n classNames,\n className,\n style,\n styles,\n unstyled,\n vars,\n size,\n thickness,\n value,\n orientation,\n fillDirection,\n filledSegmentColor,\n emptySegmentColor,\n transitionDuration,\n label,\n labelPosition,\n attributes,\n ...others\n } = props;\n\n const getStyles = useStyles<SemiCircleProgressFactory>({\n name: 'SemiCircleProgress',\n classes,\n props,\n className,\n style,\n classNames,\n styles,\n unstyled,\n attributes,\n vars,\n varsResolver,\n });\n\n const coordinateForCircle = size / 2;\n const radius = (size - 2 * thickness) / 2;\n const circumference = Math.PI * radius;\n const semiCirclePercentage = clamp(value, 0, 100) * (circumference / 100);\n\n return (\n <Box size={size} {...getStyles('root')} {...others}>\n {label && (\n <div {...getStyles('label')} data-position={labelPosition} data-orientation={orientation}>\n {label}\n </div>\n )}\n\n <svg width={size} height={size / 2} viewBox={`0 0 ${size} ${size / 2}`} {...getStyles('svg')}>\n <circle\n cx={coordinateForCircle}\n cy={coordinateForCircle}\n r={radius}\n fill=\"none\"\n stroke=\"var(--scp-empty-segment-color)\"\n strokeWidth={thickness}\n strokeDasharray={circumference}\n {...getStyles('emptySegment', { style: { strokeDashoffset: circumference } })}\n />\n\n <circle\n cx={coordinateForCircle}\n cy={coordinateForCircle}\n r={radius}\n fill=\"none\"\n stroke=\"var(--scp-filled-segment-color)\"\n strokeWidth={thickness}\n strokeDasharray={circumference}\n {...getStyles('filledSegment', {\n style: {\n strokeDashoffset: semiCirclePercentage,\n ...(semiCirclePercentage === 0 ? { strokeOpacity: 0 } : null),\n },\n })}\n />\n </svg>\n </Box>\n );\n});\n\nSemiCircleProgress.displayName = '@mantine/core/SemiCircleProgress';\nSemiCircleProgress.classes = classes;\nSemiCircleProgress.varsResolver = varsResolver;\n\nexport namespace SemiCircleProgress {\n export type Props = SemiCircleProgressProps;\n export type StylesNames = SemiCircleProgressStylesNames;\n export type CssVariables = SemiCircleProgressCssVariables;\n export type Factory = SemiCircleProgressFactory;\n}\n"],"mappings":";;;;;;;;;;;;AAyEA,MAAM,eAAe;CACnB,MAAM;CACN,WAAW;CACX,aAAa;CACb,eAAe;CACf,eAAe;AACjB;AAEA,SAAS,YAAY,EACnB,aACA,iBACiE;CACjE,IAAI,gBAAgB,QAAQ;EAC1B,IAAI,kBAAkB,iBACpB,OAAO;EAET,OAAO;CACT;CACA,IAAI,kBAAkB,iBACpB,OAAO;AAIX;AAEA,MAAM,eAAe,oBAEjB,OACA,EACE,oBACA,mBACA,aACA,eACA,oBACA,iBAEE,EACJ,MAAM;CACJ,8BAA8B,qBAC1B,cAAc,oBAAoB,KAAK,IACvC,KAAA;CACJ,6BAA6B,oBACzB,cAAc,mBAAmB,KAAK,IACtC,KAAA;CACJ,kBAAkB,YAAY;EAAE;EAAa;CAAc,CAAC;CAC5D,6BAA6B,qBAAqB,GAAG,mBAAmB,MAAM,KAAA;CAC9E,mBAAmB,IAAI,SAAS;AAClC,EACF,EACF;AAEA,MAAa,qBAAqB,SAAoC,WAAW;CAC/E,MAAM,QAAQ,SAAS,sBAAsB,cAAc,MAAM;CACjE,MAAM,EACJ,YACA,WACA,OACA,QACA,UACA,MACA,MACA,WACA,OACA,aACA,eACA,oBACA,mBACA,oBACA,OACA,eACA,YACA,GAAG,WACD;CAEJ,MAAM,YAAY,UAAqC;EACrD,MAAM;EACN,SAAA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,CAAC;CAED,MAAM,sBAAsB,OAAO;CACnC,MAAM,UAAU,OAAO,IAAI,aAAa;CACxC,MAAM,gBAAgB,KAAK,KAAK;CAChC,MAAM,uBAAuB,MAAM,OAAO,GAAG,GAAG,KAAK,gBAAgB;CAErE,OACE,qBAAC,KAAD;EAAW;EAAM,GAAI,UAAU,MAAM;EAAG,GAAI;EAA5C,UAAA,CACG,SACC,oBAAC,OAAD;GAAK,GAAI,UAAU,OAAO;GAAG,iBAAe;GAAe,oBAAkB;GAC1E,UAAA;EACE,CAAA,GAGP,qBAAC,OAAD;GAAK,OAAO;GAAM,QAAQ,OAAO;GAAG,SAAS,OAAO,KAAK,GAAG,OAAO;GAAK,GAAI,UAAU,KAAK;GAA3F,UAAA,CACE,oBAAC,UAAD;IACE,IAAI;IACJ,IAAI;IACJ,GAAG;IACH,MAAK;IACL,QAAO;IACP,aAAa;IACb,iBAAiB;IACjB,GAAI,UAAU,gBAAgB,EAAE,OAAO,EAAE,kBAAkB,cAAc,EAAE,CAAC;GAC7E,CAAA,GAED,oBAAC,UAAD;IACE,IAAI;IACJ,IAAI;IACJ,GAAG;IACH,MAAK;IACL,QAAO;IACP,aAAa;IACb,iBAAiB;IACjB,GAAI,UAAU,iBAAiB,EAC7B,OAAO;KACL,kBAAkB;KAClB,GAAI,yBAAyB,IAAI,EAAE,eAAe,EAAE,IAAI;IAC1D,EACF,CAAC;GACF,CAAA,CACE;EACF,CAAA,CAAA;;AAET,CAAC;AAED,mBAAmB,cAAc;AACjC,mBAAmB,UAAUA;AAC7B,mBAAmB,eAAe"}