@mantine/core 9.3.2 → 9.4.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 (828) hide show
  1. package/cjs/components/Accordion/Accordion.cjs +1 -0
  2. package/cjs/components/Accordion/Accordion.cjs.map +1 -1
  3. package/cjs/components/Accordion/Accordion.context.cjs.map +1 -1
  4. package/cjs/components/Accordion/AccordionChevron.cjs.map +1 -1
  5. package/cjs/components/Accordion/AccordionControl/AccordionControl.cjs.map +1 -1
  6. package/cjs/components/Accordion/AccordionItem/AccordionItem.cjs.map +1 -1
  7. package/cjs/components/Accordion/AccordionItem.context.cjs.map +1 -1
  8. package/cjs/components/Accordion/AccordionPanel/AccordionPanel.cjs.map +1 -1
  9. package/cjs/components/ActionIcon/ActionIcon.cjs +1 -0
  10. package/cjs/components/ActionIcon/ActionIcon.cjs.map +1 -1
  11. package/cjs/components/ActionIcon/ActionIconGroup/ActionIconGroup.cjs +1 -1
  12. package/cjs/components/ActionIcon/ActionIconGroup/ActionIconGroup.cjs.map +1 -1
  13. package/cjs/components/ActionIcon/ActionIconGroupSection/ActionIconGroupSection.cjs.map +1 -1
  14. package/cjs/components/Affix/Affix.cjs.map +1 -1
  15. package/cjs/components/Alert/Alert.cjs.map +1 -1
  16. package/cjs/components/Anchor/Anchor.cjs.map +1 -1
  17. package/cjs/components/AngleSlider/AngleSlider.cjs.map +1 -1
  18. package/cjs/components/AppShell/AppShell.cjs.map +1 -1
  19. package/cjs/components/AppShell/AppShell.context.cjs.map +1 -1
  20. package/cjs/components/AppShell/AppShellAside/AppShellAside.cjs.map +1 -1
  21. package/cjs/components/AppShell/AppShellFooter/AppShellFooter.cjs.map +1 -1
  22. package/cjs/components/AppShell/AppShellHeader/AppShellHeader.cjs.map +1 -1
  23. package/cjs/components/AppShell/AppShellMain/AppShellMain.cjs.map +1 -1
  24. package/cjs/components/AppShell/AppShellMediaStyles/AppShellMediaStyles.cjs.map +1 -1
  25. package/cjs/components/AppShell/AppShellMediaStyles/assign-aside-variables/assign-aside-variables.cjs.map +1 -1
  26. package/cjs/components/AppShell/AppShellMediaStyles/assign-footer-variables/assign-footer-variables.cjs.map +1 -1
  27. package/cjs/components/AppShell/AppShellMediaStyles/assign-header-variables/assign-header-variables.cjs.map +1 -1
  28. package/cjs/components/AppShell/AppShellMediaStyles/assign-navbar-variables/assign-navbar-variables.cjs.map +1 -1
  29. package/cjs/components/AppShell/AppShellMediaStyles/assign-padding-variables/assign-padding-variables.cjs.map +1 -1
  30. package/cjs/components/AppShell/AppShellMediaStyles/get-variables/get-variables.cjs.map +1 -1
  31. package/cjs/components/AppShell/AppShellMediaStyles/is-primitive-size/is-primitive-size.cjs.map +1 -1
  32. package/cjs/components/AppShell/AppShellMediaStyles/is-responsive-size/is-responsive-size.cjs.map +1 -1
  33. package/cjs/components/AppShell/AppShellNavbar/AppShellNavbar.cjs.map +1 -1
  34. package/cjs/components/AppShell/AppShellSection/AppShellSection.cjs.map +1 -1
  35. package/cjs/components/AppShell/use-resizing/use-resizing.cjs.map +1 -1
  36. package/cjs/components/AspectRatio/AspectRatio.cjs.map +1 -1
  37. package/cjs/components/Autocomplete/Autocomplete.cjs.map +1 -1
  38. package/cjs/components/Avatar/Avatar.cjs.map +1 -1
  39. package/cjs/components/Avatar/AvatarGroup/AvatarGroup.cjs.map +1 -1
  40. package/cjs/components/Avatar/AvatarPlaceholderIcon.cjs.map +1 -1
  41. package/cjs/components/Avatar/get-initials/get-initials.cjs.map +1 -1
  42. package/cjs/components/BackgroundImage/BackgroundImage.cjs.map +1 -1
  43. package/cjs/components/Badge/Badge.cjs.map +1 -1
  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.map +1 -1
  49. package/cjs/components/Button/ButtonGroupSection/ButtonGroupSection.cjs.map +1 -1
  50. package/cjs/components/Card/Card.cjs.map +1 -1
  51. package/cjs/components/Card/Card.context.cjs.map +1 -1
  52. package/cjs/components/Card/CardSection/CardSection.cjs.map +1 -1
  53. package/cjs/components/Center/Center.cjs.map +1 -1
  54. package/cjs/components/Checkbox/CheckIcon.cjs.map +1 -1
  55. package/cjs/components/Checkbox/Checkbox.cjs.map +1 -1
  56. package/cjs/components/Checkbox/CheckboxCard/CheckboxCard.cjs.map +1 -1
  57. package/cjs/components/Checkbox/CheckboxGroup/CheckboxGroup.cjs.map +1 -1
  58. package/cjs/components/Checkbox/CheckboxIndicator/CheckboxIndicator.cjs.map +1 -1
  59. package/cjs/components/Chip/Chip.cjs.map +1 -1
  60. package/cjs/components/Chip/ChipGroup/ChipGroup.cjs.map +1 -1
  61. package/cjs/components/CloseButton/CloseButton.cjs.map +1 -1
  62. package/cjs/components/CloseButton/CloseIcon.cjs.map +1 -1
  63. package/cjs/components/Code/Code.cjs.map +1 -1
  64. package/cjs/components/Collapse/Collapse.cjs.map +1 -1
  65. package/cjs/components/ColorInput/ColorInput.cjs.map +1 -1
  66. package/cjs/components/ColorInput/EyeDropperIcon.cjs.map +1 -1
  67. package/cjs/components/ColorPicker/AlphaSlider/AlphaSlider.cjs.map +1 -1
  68. package/cjs/components/ColorPicker/ColorPicker.cjs.map +1 -1
  69. package/cjs/components/ColorPicker/ColorPicker.context.cjs.map +1 -1
  70. package/cjs/components/ColorPicker/ColorSlider/ColorSlider.cjs.map +1 -1
  71. package/cjs/components/ColorPicker/HueSlider/HueSlider.cjs.map +1 -1
  72. package/cjs/components/ColorPicker/Saturation/Saturation.cjs.map +1 -1
  73. package/cjs/components/ColorPicker/Swatches/Swatches.cjs.map +1 -1
  74. package/cjs/components/ColorPicker/Thumb/Thumb.cjs.map +1 -1
  75. package/cjs/components/ColorPicker/converters/converters.cjs.map +1 -1
  76. package/cjs/components/ColorPicker/converters/parsers.cjs.map +1 -1
  77. package/cjs/components/ColorSwatch/ColorSwatch.cjs.map +1 -1
  78. package/cjs/components/Combobox/Combobox.cjs.map +1 -1
  79. package/cjs/components/Combobox/Combobox.context.cjs.map +1 -1
  80. package/cjs/components/Combobox/ComboboxChevron/ComboboxChevron.cjs.map +1 -1
  81. package/cjs/components/Combobox/ComboboxClearButton/ComboboxClearButton.cjs.map +1 -1
  82. package/cjs/components/Combobox/ComboboxDropdown/ComboboxDropdown.cjs.map +1 -1
  83. package/cjs/components/Combobox/ComboboxDropdownTarget/ComboboxDropdownTarget.cjs.map +1 -1
  84. package/cjs/components/Combobox/ComboboxEmpty/ComboboxEmpty.cjs.map +1 -1
  85. package/cjs/components/Combobox/ComboboxEventsTarget/ComboboxEventsTarget.cjs.map +1 -1
  86. package/cjs/components/Combobox/ComboboxFooter/ComboboxFooter.cjs.map +1 -1
  87. package/cjs/components/Combobox/ComboboxGroup/ComboboxGroup.cjs +3 -2
  88. package/cjs/components/Combobox/ComboboxGroup/ComboboxGroup.cjs.map +1 -1
  89. package/cjs/components/Combobox/ComboboxHeader/ComboboxHeader.cjs.map +1 -1
  90. package/cjs/components/Combobox/ComboboxHiddenInput/ComboboxHiddenInput.cjs.map +1 -1
  91. package/cjs/components/Combobox/ComboboxOption/ComboboxOption.cjs.map +1 -1
  92. package/cjs/components/Combobox/ComboboxOptions/ComboboxOptions.cjs.map +1 -1
  93. package/cjs/components/Combobox/ComboboxSearch/ComboboxSearch.cjs.map +1 -1
  94. package/cjs/components/Combobox/ComboboxTarget/ComboboxTarget.cjs.map +1 -1
  95. package/cjs/components/Combobox/OptionsDropdown/OptionsDropdown.cjs +2 -2
  96. package/cjs/components/Combobox/OptionsDropdown/OptionsDropdown.cjs.map +1 -1
  97. package/cjs/components/Combobox/OptionsDropdown/default-options-filter.cjs.map +1 -1
  98. package/cjs/components/Combobox/use-combobox/get-index/get-index.cjs.map +1 -1
  99. package/cjs/components/Combobox/use-combobox/use-combobox.cjs.map +1 -1
  100. package/cjs/components/Combobox/use-combobox/use-virtualized-combobox.cjs.map +1 -1
  101. package/cjs/components/Combobox/use-combobox-target-props/use-combobox-target-props.cjs.map +1 -1
  102. package/cjs/components/Combobox/use-pills-reorder/use-pills-reorder.cjs.map +1 -1
  103. package/cjs/components/ComboboxPopover/ComboboxPopover.cjs +218 -0
  104. package/cjs/components/ComboboxPopover/ComboboxPopover.cjs.map +1 -0
  105. package/cjs/components/ComboboxPopover/ComboboxPopoverTarget.cjs +45 -0
  106. package/cjs/components/ComboboxPopover/ComboboxPopoverTarget.cjs.map +1 -0
  107. package/cjs/components/Container/Container.cjs.map +1 -1
  108. package/cjs/components/CopyButton/CopyButton.cjs.map +1 -1
  109. package/cjs/components/DataList/DataList.cjs +61 -0
  110. package/cjs/components/DataList/DataList.cjs.map +1 -0
  111. package/cjs/components/DataList/DataList.context.cjs +8 -0
  112. package/cjs/components/DataList/DataList.context.cjs.map +1 -0
  113. package/cjs/components/DataList/DataList.module.cjs +12 -0
  114. package/cjs/components/DataList/DataList.module.cjs.map +1 -0
  115. package/cjs/components/DataList/DataListItem/DataListItem.cjs +32 -0
  116. package/cjs/components/DataList/DataListItem/DataListItem.cjs.map +1 -0
  117. package/cjs/components/DataList/DataListItemLabel/DataListItemLabel.cjs +33 -0
  118. package/cjs/components/DataList/DataListItemLabel/DataListItemLabel.cjs.map +1 -0
  119. package/cjs/components/DataList/DataListItemValue/DataListItemValue.cjs +33 -0
  120. package/cjs/components/DataList/DataListItemValue/DataListItemValue.cjs.map +1 -0
  121. package/cjs/components/Dialog/Dialog.cjs.map +1 -1
  122. package/cjs/components/Divider/Divider.cjs.map +1 -1
  123. package/cjs/components/Drawer/Drawer.cjs.map +1 -1
  124. package/cjs/components/Drawer/Drawer.context.cjs.map +1 -1
  125. package/cjs/components/Drawer/DrawerBody.cjs.map +1 -1
  126. package/cjs/components/Drawer/DrawerCloseButton.cjs.map +1 -1
  127. package/cjs/components/Drawer/DrawerContent.cjs.map +1 -1
  128. package/cjs/components/Drawer/DrawerHeader.cjs.map +1 -1
  129. package/cjs/components/Drawer/DrawerOverlay.cjs.map +1 -1
  130. package/cjs/components/Drawer/DrawerRoot.cjs.map +1 -1
  131. package/cjs/components/Drawer/DrawerStack.cjs.map +1 -1
  132. package/cjs/components/Drawer/DrawerTitle.cjs.map +1 -1
  133. package/cjs/components/EmptyState/EmptyState.cjs +102 -0
  134. package/cjs/components/EmptyState/EmptyState.cjs.map +1 -0
  135. package/cjs/components/EmptyState/EmptyState.context.cjs +8 -0
  136. package/cjs/components/EmptyState/EmptyState.context.cjs.map +1 -0
  137. package/cjs/components/EmptyState/EmptyState.module.cjs +14 -0
  138. package/cjs/components/EmptyState/EmptyState.module.cjs.map +1 -0
  139. package/cjs/components/EmptyState/EmptyStateActions/EmptyStateActions.cjs +28 -0
  140. package/cjs/components/EmptyState/EmptyStateActions/EmptyStateActions.cjs.map +1 -0
  141. package/cjs/components/EmptyState/EmptyStateDescription/EmptyStateDescription.cjs +29 -0
  142. package/cjs/components/EmptyState/EmptyStateDescription/EmptyStateDescription.cjs.map +1 -0
  143. package/cjs/components/EmptyState/EmptyStateIndicator/EmptyStateIndicator.cjs +29 -0
  144. package/cjs/components/EmptyState/EmptyStateIndicator/EmptyStateIndicator.cjs.map +1 -0
  145. package/cjs/components/EmptyState/EmptyStateTitle/EmptyStateTitle.cjs +30 -0
  146. package/cjs/components/EmptyState/EmptyStateTitle/EmptyStateTitle.cjs.map +1 -0
  147. package/cjs/components/Fieldset/Fieldset.cjs.map +1 -1
  148. package/cjs/components/FileButton/FileButton.cjs.map +1 -1
  149. package/cjs/components/FileInput/FileInput.cjs.map +1 -1
  150. package/cjs/components/Flex/Flex.cjs.map +1 -1
  151. package/cjs/components/FloatingIndicator/FloatingIndicator.cjs.map +1 -1
  152. package/cjs/components/FloatingIndicator/use-floating-indicator.cjs.map +1 -1
  153. package/cjs/components/FloatingWindow/FloatingWindow.cjs.map +1 -1
  154. package/cjs/components/FocusTrap/FocusTrap.cjs.map +1 -1
  155. package/cjs/components/Grid/Grid.cjs.map +1 -1
  156. package/cjs/components/Grid/Grid.context.cjs.map +1 -1
  157. package/cjs/components/Grid/GridCol/GridCol.cjs.map +1 -1
  158. package/cjs/components/Grid/GridCol/GridColVariables.cjs.map +1 -1
  159. package/cjs/components/Grid/GridVariables.cjs.map +1 -1
  160. package/cjs/components/Group/Group.cjs.map +1 -1
  161. package/cjs/components/Group/filter-falsy-children/filter-falsy-children.cjs.map +1 -1
  162. package/cjs/components/Highlight/Highlight.cjs.map +1 -1
  163. package/cjs/components/Highlight/highlighter/highlighter.cjs.map +1 -1
  164. package/cjs/components/HoverCard/HoverCard.cjs.map +1 -1
  165. package/cjs/components/HoverCard/HoverCard.context.cjs.map +1 -1
  166. package/cjs/components/HoverCard/HoverCardDropdown/HoverCardDropdown.cjs.map +1 -1
  167. package/cjs/components/HoverCard/HoverCardGroup/HoverCardGroup.cjs.map +1 -1
  168. package/cjs/components/HoverCard/HoverCardTarget/HoverCardTarget.cjs.map +1 -1
  169. package/cjs/components/HoverCard/use-hover-card.cjs.map +1 -1
  170. package/cjs/components/Image/Image.cjs.map +1 -1
  171. package/cjs/components/Indicator/Indicator.cjs.map +1 -1
  172. package/cjs/components/Input/Input.cjs +7 -2
  173. package/cjs/components/Input/Input.cjs.map +1 -1
  174. package/cjs/components/Input/Input.context.cjs.map +1 -1
  175. package/cjs/components/Input/Input.module.cjs +1 -0
  176. package/cjs/components/Input/Input.module.cjs.map +1 -1
  177. package/cjs/components/Input/InputClearButton/InputClearButton.cjs.map +1 -1
  178. package/cjs/components/Input/InputClearSection/InputClearSection.cjs.map +1 -1
  179. package/cjs/components/Input/InputDescription/InputDescription.cjs.map +1 -1
  180. package/cjs/components/Input/InputError/InputError.cjs.map +1 -1
  181. package/cjs/components/Input/InputLabel/InputLabel.cjs.map +1 -1
  182. package/cjs/components/Input/InputPlaceholder/InputPlaceholder.cjs.map +1 -1
  183. package/cjs/components/Input/InputSuccess/InputSuccess.cjs +48 -0
  184. package/cjs/components/Input/InputSuccess/InputSuccess.cjs.map +1 -0
  185. package/cjs/components/Input/InputWrapper/InputWrapper.cjs +22 -5
  186. package/cjs/components/Input/InputWrapper/InputWrapper.cjs.map +1 -1
  187. package/cjs/components/Input/InputWrapper.context.cjs.map +1 -1
  188. package/cjs/components/Input/use-input-props.cjs +4 -1
  189. package/cjs/components/Input/use-input-props.cjs.map +1 -1
  190. package/cjs/components/InputBase/InputBase.cjs.map +1 -1
  191. package/cjs/components/JsonInput/JsonInput.cjs.map +1 -1
  192. package/cjs/components/JsonInput/validate-json/validate-json.cjs.map +1 -1
  193. package/cjs/components/Kbd/Kbd.cjs.map +1 -1
  194. package/cjs/components/List/List.cjs.map +1 -1
  195. package/cjs/components/List/List.context.cjs.map +1 -1
  196. package/cjs/components/List/ListItem/ListItem.cjs.map +1 -1
  197. package/cjs/components/Loader/Loader.cjs.map +1 -1
  198. package/cjs/components/Loader/loaders/Bars.cjs.map +1 -1
  199. package/cjs/components/Loader/loaders/Dots.cjs.map +1 -1
  200. package/cjs/components/Loader/loaders/Oval.cjs.map +1 -1
  201. package/cjs/components/LoadingOverlay/LoadingOverlay.cjs.map +1 -1
  202. package/cjs/components/Mark/Mark.cjs.map +1 -1
  203. package/cjs/components/Marquee/Marquee.cjs.map +1 -1
  204. package/cjs/components/MaskInput/MaskInput.cjs.map +1 -1
  205. package/cjs/components/MaskInput/use-mask-input-props.cjs.map +1 -1
  206. package/cjs/components/Menu/Menu.cjs.map +1 -1
  207. package/cjs/components/Menu/Menu.context.cjs.map +1 -1
  208. package/cjs/components/Menu/MenuCheckboxGroup/MenuCheckboxGroup.cjs.map +1 -1
  209. package/cjs/components/Menu/MenuCheckboxGroup/MenuCheckboxGroup.context.cjs.map +1 -1
  210. package/cjs/components/Menu/MenuCheckboxItem/MenuCheckboxItem.cjs.map +1 -1
  211. package/cjs/components/Menu/MenuContextMenu/MenuContextMenu.cjs.map +1 -1
  212. package/cjs/components/Menu/MenuDivider/MenuDivider.cjs.map +1 -1
  213. package/cjs/components/Menu/MenuDropdown/MenuDropdown.cjs.map +1 -1
  214. package/cjs/components/Menu/MenuItem/MenuItem.cjs.map +1 -1
  215. package/cjs/components/Menu/MenuLabel/MenuLabel.cjs.map +1 -1
  216. package/cjs/components/Menu/MenuRadioGroup/MenuRadioGroup.cjs.map +1 -1
  217. package/cjs/components/Menu/MenuRadioGroup/MenuRadioGroup.context.cjs.map +1 -1
  218. package/cjs/components/Menu/MenuRadioItem/MenuRadioItem.cjs.map +1 -1
  219. package/cjs/components/Menu/MenuSearch/MenuSearch.cjs.map +1 -1
  220. package/cjs/components/Menu/MenuSelectableItem/MenuSelectableItem.cjs.map +1 -1
  221. package/cjs/components/Menu/MenuSub/MenuSub.cjs.map +1 -1
  222. package/cjs/components/Menu/MenuSub/MenuSub.context.cjs.map +1 -1
  223. package/cjs/components/Menu/MenuSubDropdown/MenuSubDropdown.cjs.map +1 -1
  224. package/cjs/components/Menu/MenuSubItem/MenuSubItem.cjs.map +1 -1
  225. package/cjs/components/Menu/MenuSubTarget/MenuSubTarget.cjs.map +1 -1
  226. package/cjs/components/Menu/MenuTarget/MenuTarget.cjs.map +1 -1
  227. package/cjs/components/Menu/use-menu-type-ahead.cjs.map +1 -1
  228. package/cjs/components/Menubar/Menubar.cjs +146 -0
  229. package/cjs/components/Menubar/Menubar.cjs.map +1 -0
  230. package/cjs/components/Menubar/Menubar.context.cjs +12 -0
  231. package/cjs/components/Menubar/Menubar.context.cjs.map +1 -0
  232. package/cjs/components/Menubar/Menubar.module.cjs +10 -0
  233. package/cjs/components/Menubar/Menubar.module.cjs.map +1 -0
  234. package/cjs/components/Menubar/MenubarDropdown/MenubarDropdown.cjs +61 -0
  235. package/cjs/components/Menubar/MenubarDropdown/MenubarDropdown.cjs.map +1 -0
  236. package/cjs/components/Menubar/MenubarMenu/MenubarMenu.cjs +59 -0
  237. package/cjs/components/Menubar/MenubarMenu/MenubarMenu.cjs.map +1 -0
  238. package/cjs/components/Menubar/MenubarTarget/MenubarTarget.cjs +143 -0
  239. package/cjs/components/Menubar/MenubarTarget/MenubarTarget.cjs.map +1 -0
  240. package/cjs/components/Modal/Modal.cjs.map +1 -1
  241. package/cjs/components/Modal/Modal.context.cjs.map +1 -1
  242. package/cjs/components/Modal/ModalBody.cjs.map +1 -1
  243. package/cjs/components/Modal/ModalCloseButton.cjs.map +1 -1
  244. package/cjs/components/Modal/ModalContent.cjs.map +1 -1
  245. package/cjs/components/Modal/ModalHeader.cjs.map +1 -1
  246. package/cjs/components/Modal/ModalOverlay.cjs.map +1 -1
  247. package/cjs/components/Modal/ModalRoot.cjs.map +1 -1
  248. package/cjs/components/Modal/ModalStack.cjs.map +1 -1
  249. package/cjs/components/Modal/ModalTitle.cjs.map +1 -1
  250. package/cjs/components/Modal/use-modals-stack.cjs.map +1 -1
  251. package/cjs/components/ModalBase/ModalBase.cjs.map +1 -1
  252. package/cjs/components/ModalBase/ModalBase.context.cjs.map +1 -1
  253. package/cjs/components/ModalBase/ModalBaseBody.cjs.map +1 -1
  254. package/cjs/components/ModalBase/ModalBaseCloseButton.cjs.map +1 -1
  255. package/cjs/components/ModalBase/ModalBaseContent.cjs.map +1 -1
  256. package/cjs/components/ModalBase/ModalBaseHeader.cjs.map +1 -1
  257. package/cjs/components/ModalBase/ModalBaseOverlay.cjs.map +1 -1
  258. package/cjs/components/ModalBase/ModalBaseTitle.cjs.map +1 -1
  259. package/cjs/components/ModalBase/NativeScrollArea.cjs.map +1 -1
  260. package/cjs/components/ModalBase/use-lock-scroll.cjs.map +1 -1
  261. package/cjs/components/ModalBase/use-modal-body-id.cjs.map +1 -1
  262. package/cjs/components/ModalBase/use-modal-title-id.cjs.map +1 -1
  263. package/cjs/components/ModalBase/use-modal.cjs.map +1 -1
  264. package/cjs/components/MultiSelect/MultiSelect.cjs +4 -1
  265. package/cjs/components/MultiSelect/MultiSelect.cjs.map +1 -1
  266. package/cjs/components/MultiSelect/filter-picked-values.cjs.map +1 -1
  267. package/cjs/components/NativeSelect/NativeSelect.cjs.map +1 -1
  268. package/cjs/components/NativeSelect/NativeSelectOption.cjs.map +1 -1
  269. package/cjs/components/NavLink/NavLink.cjs.map +1 -1
  270. package/cjs/components/Notification/Notification.cjs.map +1 -1
  271. package/cjs/components/NumberFormatter/NumberFormatter.cjs.map +1 -1
  272. package/cjs/components/NumberInput/NumberInput.cjs.map +1 -1
  273. package/cjs/components/NumberInput/NumberInputChevron.cjs.map +1 -1
  274. package/cjs/components/OverflowList/OverflowList.cjs.map +1 -1
  275. package/cjs/components/OverflowList/get-row-position-data.cjs.map +1 -1
  276. package/cjs/components/OverflowList/use-dimensions.cjs.map +1 -1
  277. package/cjs/components/Overlay/Overlay.cjs.map +1 -1
  278. package/cjs/components/Pagination/Pagination.cjs.map +1 -1
  279. package/cjs/components/Pagination/Pagination.context.cjs.map +1 -1
  280. package/cjs/components/Pagination/Pagination.icons.cjs.map +1 -1
  281. package/cjs/components/Pagination/PaginationControl/PaginationControl.cjs.map +1 -1
  282. package/cjs/components/Pagination/PaginationDots/PaginationDots.cjs.map +1 -1
  283. package/cjs/components/Pagination/PaginationEdges/PaginationEdges.cjs.map +1 -1
  284. package/cjs/components/Pagination/PaginationItems/PaginationItems.cjs.map +1 -1
  285. package/cjs/components/Pagination/PaginationLabel/PaginationLabel.cjs.map +1 -1
  286. package/cjs/components/Pagination/PaginationRoot/PaginationRoot.cjs.map +1 -1
  287. package/cjs/components/Paper/Paper.cjs.map +1 -1
  288. package/cjs/components/PasswordInput/PasswordInput.cjs +11 -2
  289. package/cjs/components/PasswordInput/PasswordInput.cjs.map +1 -1
  290. package/cjs/components/PasswordInput/PasswordToggleIcon.cjs.map +1 -1
  291. package/cjs/components/Pill/Pill.cjs.map +1 -1
  292. package/cjs/components/Pill/PillGroup/PillGroup.cjs.map +1 -1
  293. package/cjs/components/PillsInput/PillsInput.cjs.map +1 -1
  294. package/cjs/components/PillsInput/PillsInput.context.cjs.map +1 -1
  295. package/cjs/components/PillsInput/PillsInputField/PillsInputField.cjs.map +1 -1
  296. package/cjs/components/PinInput/PinInput.cjs +2 -1
  297. package/cjs/components/PinInput/PinInput.cjs.map +1 -1
  298. package/cjs/components/PinInput/create-pin-array/create-pin-array.cjs.map +1 -1
  299. package/cjs/components/Popover/Popover.cjs.map +1 -1
  300. package/cjs/components/Popover/Popover.context.cjs.map +1 -1
  301. package/cjs/components/Popover/PopoverContextMenu/PopoverContextMenu.cjs.map +1 -1
  302. package/cjs/components/Popover/PopoverDropdown/PopoverDropdown.cjs.map +1 -1
  303. package/cjs/components/Popover/PopoverTarget/PopoverTarget.cjs.map +1 -1
  304. package/cjs/components/Popover/use-popover.cjs.map +1 -1
  305. package/cjs/components/Portal/OptionalPortal.cjs.map +1 -1
  306. package/cjs/components/Portal/Portal.cjs.map +1 -1
  307. package/cjs/components/Progress/Progress.cjs.map +1 -1
  308. package/cjs/components/Progress/Progress.context.cjs.map +1 -1
  309. package/cjs/components/Progress/ProgressLabel/ProgressLabel.cjs.map +1 -1
  310. package/cjs/components/Progress/ProgressRoot/ProgressRoot.cjs.map +1 -1
  311. package/cjs/components/Progress/ProgressSection/ProgressSection.cjs.map +1 -1
  312. package/cjs/components/Radio/Radio.cjs.map +1 -1
  313. package/cjs/components/Radio/RadioCard/RadioCard.cjs.map +1 -1
  314. package/cjs/components/Radio/RadioGroup/RadioGroup.cjs.map +1 -1
  315. package/cjs/components/Radio/RadioIcon.cjs.map +1 -1
  316. package/cjs/components/Radio/RadioIndicator/RadioIndicator.cjs.map +1 -1
  317. package/cjs/components/Rating/Rating.cjs.map +1 -1
  318. package/cjs/components/Rating/Rating.context.cjs.map +1 -1
  319. package/cjs/components/Rating/RatingItem/RatingItem.cjs.map +1 -1
  320. package/cjs/components/Rating/StarSymbol/StarIcon.cjs.map +1 -1
  321. package/cjs/components/Rating/StarSymbol/StarSymbol.cjs.map +1 -1
  322. package/cjs/components/RingProgress/Curve/Curve.cjs.map +1 -1
  323. package/cjs/components/RingProgress/RingProgress.cjs.map +1 -1
  324. package/cjs/components/RingProgress/get-curves/get-curves.cjs.map +1 -1
  325. package/cjs/components/RollingNumber/DigitColumn.cjs.map +1 -1
  326. package/cjs/components/RollingNumber/RollingNumber.cjs.map +1 -1
  327. package/cjs/components/RollingNumber/get-digit-parts.cjs.map +1 -1
  328. package/cjs/components/RollingNumber/get-render-slots.cjs.map +1 -1
  329. package/cjs/components/ScrollArea/ScrollArea.cjs.map +1 -1
  330. package/cjs/components/ScrollArea/ScrollArea.context.cjs.map +1 -1
  331. package/cjs/components/ScrollArea/ScrollAreaCorner/ScrollAreaCorner.cjs.map +1 -1
  332. package/cjs/components/ScrollArea/ScrollAreaRoot/ScrollAreaRoot.cjs.map +1 -1
  333. package/cjs/components/ScrollArea/ScrollAreaScrollbar/ScrollAreaScrollbar.cjs.map +1 -1
  334. package/cjs/components/ScrollArea/ScrollAreaScrollbar/ScrollAreaScrollbarAuto.cjs.map +1 -1
  335. package/cjs/components/ScrollArea/ScrollAreaScrollbar/ScrollAreaScrollbarHover.cjs.map +1 -1
  336. package/cjs/components/ScrollArea/ScrollAreaScrollbar/ScrollAreaScrollbarScroll.cjs.map +1 -1
  337. package/cjs/components/ScrollArea/ScrollAreaScrollbar/ScrollAreaScrollbarVisible.cjs.map +1 -1
  338. package/cjs/components/ScrollArea/ScrollAreaScrollbar/Scrollbar.cjs.map +1 -1
  339. package/cjs/components/ScrollArea/ScrollAreaScrollbar/Scrollbar.context.cjs.map +1 -1
  340. package/cjs/components/ScrollArea/ScrollAreaScrollbar/ScrollbarX.cjs.map +1 -1
  341. package/cjs/components/ScrollArea/ScrollAreaScrollbar/ScrollbarY.cjs.map +1 -1
  342. package/cjs/components/ScrollArea/ScrollAreaThumb/ScrollAreaThumb.cjs.map +1 -1
  343. package/cjs/components/ScrollArea/ScrollAreaViewport/ScrollAreaViewport.cjs +1 -0
  344. package/cjs/components/ScrollArea/ScrollAreaViewport/ScrollAreaViewport.cjs.map +1 -1
  345. package/cjs/components/ScrollArea/use-resize-observer.cjs.map +1 -1
  346. package/cjs/components/ScrollArea/utils/add-unlinked-scroll-listener.cjs.map +1 -1
  347. package/cjs/components/ScrollArea/utils/get-scroll-position-from-pointer.cjs.map +1 -1
  348. package/cjs/components/ScrollArea/utils/get-thumb-offset-from-scroll.cjs.map +1 -1
  349. package/cjs/components/Scroller/Scroller.cjs.map +1 -1
  350. package/cjs/components/SegmentedControl/SegmentedControl.cjs.map +1 -1
  351. package/cjs/components/Select/Select.cjs.map +1 -1
  352. package/cjs/components/SemiCircleProgress/SemiCircleProgress.cjs +4 -1
  353. package/cjs/components/SemiCircleProgress/SemiCircleProgress.cjs.map +1 -1
  354. package/cjs/components/SemiCircleProgress/SemiCircleProgress.module.cjs.map +1 -1
  355. package/cjs/components/SimpleGrid/SimpleGrid.cjs.map +1 -1
  356. package/cjs/components/SimpleGrid/SimpleGridVariables.cjs.map +1 -1
  357. package/cjs/components/Skeleton/Skeleton.cjs.map +1 -1
  358. package/cjs/components/Slider/Marks/Marks.cjs.map +1 -1
  359. package/cjs/components/Slider/RangeSlider/RangeSlider.cjs.map +1 -1
  360. package/cjs/components/Slider/Slider/Slider.cjs.map +1 -1
  361. package/cjs/components/Slider/Slider.context.cjs.map +1 -1
  362. package/cjs/components/Slider/SliderRoot/SliderRoot.cjs.map +1 -1
  363. package/cjs/components/Slider/Thumb/Thumb.cjs.map +1 -1
  364. package/cjs/components/Slider/Track/Track.cjs.map +1 -1
  365. package/cjs/components/Slider/utils/get-precision/get-precision.cjs.map +1 -1
  366. package/cjs/components/Slider/utils/get-step-mark-value/get-step-mark-value.cjs.map +1 -1
  367. package/cjs/components/Space/Space.cjs.map +1 -1
  368. package/cjs/components/Splitter/GripIcon.cjs.map +1 -1
  369. package/cjs/components/Splitter/Splitter.cjs +22 -1
  370. package/cjs/components/Splitter/Splitter.cjs.map +1 -1
  371. package/cjs/components/Splitter/Splitter.context.cjs.map +1 -1
  372. package/cjs/components/Splitter/SplitterPane/SplitterPane.cjs +1 -2
  373. package/cjs/components/Splitter/SplitterPane/SplitterPane.cjs.map +1 -1
  374. package/cjs/components/Spoiler/Spoiler.cjs.map +1 -1
  375. package/cjs/components/Stack/Stack.cjs.map +1 -1
  376. package/cjs/components/Stepper/Stepper.cjs.map +1 -1
  377. package/cjs/components/Stepper/Stepper.context.cjs.map +1 -1
  378. package/cjs/components/Stepper/StepperStep/StepperStep.cjs.map +1 -1
  379. package/cjs/components/Switch/Switch.cjs.map +1 -1
  380. package/cjs/components/Switch/SwitchGroup/SwitchGroup.cjs.map +1 -1
  381. package/cjs/components/Table/Table.cjs.map +1 -1
  382. package/cjs/components/Table/Table.components.cjs.map +1 -1
  383. package/cjs/components/Table/Table.context.cjs.map +1 -1
  384. package/cjs/components/Table/TableDataRenderer.cjs.map +1 -1
  385. package/cjs/components/Table/TableScrollContainer.cjs.map +1 -1
  386. package/cjs/components/TableOfContents/TableOfContents.cjs.map +1 -1
  387. package/cjs/components/Tabs/Tabs.cjs +16 -1
  388. package/cjs/components/Tabs/Tabs.cjs.map +1 -1
  389. package/cjs/components/Tabs/Tabs.context.cjs.map +1 -1
  390. package/cjs/components/Tabs/TabsList/TabsList.cjs.map +1 -1
  391. package/cjs/components/Tabs/TabsPanel/TabsPanel.cjs +6 -0
  392. package/cjs/components/Tabs/TabsPanel/TabsPanel.cjs.map +1 -1
  393. package/cjs/components/Tabs/TabsTab/TabsTab.cjs +1 -1
  394. package/cjs/components/Tabs/TabsTab/TabsTab.cjs.map +1 -1
  395. package/cjs/components/TagsInput/TagsInput.cjs +4 -1
  396. package/cjs/components/TagsInput/TagsInput.cjs.map +1 -1
  397. package/cjs/components/TagsInput/filter-picked-tags.cjs.map +1 -1
  398. package/cjs/components/TagsInput/get-splitted-tags.cjs.map +1 -1
  399. package/cjs/components/Text/Text.cjs.map +1 -1
  400. package/cjs/components/TextInput/TextInput.cjs.map +1 -1
  401. package/cjs/components/Textarea/Autosize.cjs.map +1 -1
  402. package/cjs/components/Textarea/Textarea.cjs.map +1 -1
  403. package/cjs/components/ThemeIcon/ThemeIcon.cjs.map +1 -1
  404. package/cjs/components/Timeline/Timeline.cjs.map +1 -1
  405. package/cjs/components/Timeline/Timeline.context.cjs.map +1 -1
  406. package/cjs/components/Timeline/TimelineItem/TimelineItem.cjs.map +1 -1
  407. package/cjs/components/Title/Title.cjs.map +1 -1
  408. package/cjs/components/Tooltip/Tooltip.cjs.map +1 -1
  409. package/cjs/components/Tooltip/TooltipFloating/TooltipFloating.cjs.map +1 -1
  410. package/cjs/components/Tooltip/TooltipFloating/use-floating-tooltip.cjs.map +1 -1
  411. package/cjs/components/Tooltip/TooltipGroup/TooltipGroup.cjs.map +1 -1
  412. package/cjs/components/Tooltip/use-tooltip.cjs.map +1 -1
  413. package/cjs/components/Transition/Transition.cjs.map +1 -1
  414. package/cjs/components/Transition/get-transition-styles/get-transition-styles.cjs.map +1 -1
  415. package/cjs/components/Transition/use-transition.cjs.map +1 -1
  416. package/cjs/components/Tree/FlatTreeNode.cjs.map +1 -1
  417. package/cjs/components/Tree/Tree.cjs.map +1 -1
  418. package/cjs/components/Tree/TreeNode.cjs.map +1 -1
  419. package/cjs/components/Tree/filter-tree-data/filter-tree-data.cjs.map +1 -1
  420. package/cjs/components/Tree/is-node-checked/is-node-checked.cjs.map +1 -1
  421. package/cjs/components/Tree/is-node-indeterminate/is-node-indeterminate.cjs.map +1 -1
  422. package/cjs/components/Tree/use-tree-node-drag-drop.cjs.map +1 -1
  423. package/cjs/components/Tree/use-tree.cjs.map +1 -1
  424. package/cjs/components/TreeSelect/TreeSelect.cjs +7 -1
  425. package/cjs/components/TreeSelect/TreeSelect.cjs.map +1 -1
  426. package/cjs/components/TreeSelect/TreeSelectOption.cjs.map +1 -1
  427. package/cjs/components/TreeSelect/get-checked-values-by-strategy.cjs.map +1 -1
  428. package/cjs/components/Typography/Typography.cjs.map +1 -1
  429. package/cjs/components/UnstyledButton/UnstyledButton.cjs.map +1 -1
  430. package/cjs/components/VisuallyHidden/VisuallyHidden.cjs.map +1 -1
  431. package/cjs/core/Box/Box.cjs.map +1 -1
  432. package/cjs/core/Box/get-box-mod/get-box-mod.cjs.map +1 -1
  433. package/cjs/core/Box/get-box-style/get-box-style.cjs.map +1 -1
  434. package/cjs/core/Box/get-style-object/get-style-object.cjs.map +1 -1
  435. package/cjs/core/Box/style-props/parse-style-props/parse-style-props.cjs.map +1 -1
  436. package/cjs/core/Box/style-props/parse-style-props/sort-media-queries.cjs.map +1 -1
  437. package/cjs/core/Box/style-props/resolvers/border-resolver/border-resolver.cjs.map +1 -1
  438. package/cjs/core/Box/use-random-classname/use-random-classname.cjs.map +1 -1
  439. package/cjs/core/DirectionProvider/DirectionProvider.cjs.map +1 -1
  440. package/cjs/core/InlineStyles/InlineStyles.cjs.map +1 -1
  441. package/cjs/core/InlineStyles/css-object-to-string/css-object-to-string.cjs.map +1 -1
  442. package/cjs/core/InlineStyles/hash-styles.cjs.map +1 -1
  443. package/cjs/core/MantineProvider/ColorSchemeScript/ColorSchemeScript.cjs.map +1 -1
  444. package/cjs/core/MantineProvider/Mantine.context.cjs.map +1 -1
  445. package/cjs/core/MantineProvider/MantineClasses/MantineClasses.cjs.map +1 -1
  446. package/cjs/core/MantineProvider/MantineCssVariables/MantineCssVariables.cjs.map +1 -1
  447. package/cjs/core/MantineProvider/MantineCssVariables/default-css-variables-resolver.cjs +5 -1
  448. package/cjs/core/MantineProvider/MantineCssVariables/default-css-variables-resolver.cjs.map +1 -1
  449. package/cjs/core/MantineProvider/MantineCssVariables/get-css-color-variables.cjs.map +1 -1
  450. package/cjs/core/MantineProvider/MantineCssVariables/remove-default-variables.cjs.map +1 -1
  451. package/cjs/core/MantineProvider/MantineCssVariables/v8-css-variables-resolver.cjs +3 -1
  452. package/cjs/core/MantineProvider/MantineCssVariables/v8-css-variables-resolver.cjs.map +1 -1
  453. package/cjs/core/MantineProvider/MantineCssVariables/virtual-color/virtual-color.cjs.map +1 -1
  454. package/cjs/core/MantineProvider/MantineProvider.cjs.map +1 -1
  455. package/cjs/core/MantineProvider/MantineThemeProvider/MantineThemeProvider.cjs.map +1 -1
  456. package/cjs/core/MantineProvider/color-functions/colors-tuple/colors-tuple.cjs.map +1 -1
  457. package/cjs/core/MantineProvider/color-functions/default-variant-colors-resolver/default-variant-colors-resolver.cjs +3 -1
  458. package/cjs/core/MantineProvider/color-functions/default-variant-colors-resolver/default-variant-colors-resolver.cjs.map +1 -1
  459. package/cjs/core/MantineProvider/color-functions/get-contrast-color/get-contrast-color.cjs +19 -3
  460. package/cjs/core/MantineProvider/color-functions/get-contrast-color/get-contrast-color.cjs.map +1 -1
  461. package/cjs/core/MantineProvider/color-functions/parse-theme-color/parse-theme-color.cjs.map +1 -1
  462. package/cjs/core/MantineProvider/color-functions/to-rgba/to-rgba.cjs.map +1 -1
  463. package/cjs/core/MantineProvider/convert-css-variables/convert-css-variables.cjs.map +1 -1
  464. package/cjs/core/MantineProvider/convert-css-variables/css-variables-object-to-string.cjs.map +1 -1
  465. package/cjs/core/MantineProvider/use-mantine-color-scheme/use-computed-color-scheme.cjs.map +1 -1
  466. package/cjs/core/MantineProvider/use-mantine-color-scheme/use-mantine-color-scheme.cjs.map +1 -1
  467. package/cjs/core/MantineProvider/use-mantine-color-scheme/use-provider-color-scheme.cjs.map +1 -1
  468. package/cjs/core/MantineProvider/use-props/use-props.cjs.map +1 -1
  469. package/cjs/core/MantineProvider/use-respect-reduce-motion/use-respect-reduce-motion.cjs.map +1 -1
  470. package/cjs/core/factory/factory.cjs.map +1 -1
  471. package/cjs/core/factory/polymorphic-factory.cjs.map +1 -1
  472. package/cjs/core/styles-api/use-styles/get-class-name/get-class-name.cjs.map +1 -1
  473. package/cjs/core/styles-api/use-styles/get-class-name/get-global-class-names/get-global-class-names.cjs.map +1 -1
  474. package/cjs/core/styles-api/use-styles/get-class-name/get-options-class-names/get-options-class-names.cjs.map +1 -1
  475. package/cjs/core/styles-api/use-styles/get-class-name/get-resolved-class-names/get-resolved-class-names.cjs.map +1 -1
  476. package/cjs/core/styles-api/use-styles/get-class-name/resolve-class-names/resolve-class-names.cjs.map +1 -1
  477. package/cjs/core/styles-api/use-styles/get-style/get-style.cjs.map +1 -1
  478. package/cjs/core/styles-api/use-styles/get-style/resolve-vars/merge-vars.cjs.map +1 -1
  479. package/cjs/core/styles-api/use-styles/use-styles.cjs.map +1 -1
  480. package/cjs/core/styles-api/use-styles/use-transformed-styles.cjs.map +1 -1
  481. package/cjs/core/utils/create-safe-context/create-safe-context.cjs.map +1 -1
  482. package/cjs/core/utils/create-scoped-keydown-handler/create-scoped-keydown-handler.cjs +3 -5
  483. package/cjs/core/utils/create-scoped-keydown-handler/create-scoped-keydown-handler.cjs.map +1 -1
  484. package/cjs/core/utils/create-use-external-events/create-use-external-events.cjs.map +1 -1
  485. package/cjs/core/utils/deep-merge/deep-merge.cjs.map +1 -1
  486. package/cjs/core/utils/filter-props/filter-props.cjs.map +1 -1
  487. package/cjs/core/utils/get-context-item-index/get-context-item-index.cjs.map +1 -1
  488. package/cjs/core/utils/get-safe-id/get-safe-id.cjs.map +1 -1
  489. package/cjs/core/utils/is-number-like/is-number-like.cjs.map +1 -1
  490. package/cjs/core/utils/units-converters/px.cjs.map +1 -1
  491. package/cjs/core/utils/units-converters/rem.cjs.map +1 -1
  492. package/cjs/core/utils/use-hovered/use-hovered.cjs.map +1 -1
  493. package/cjs/index.cjs +42 -2
  494. package/cjs/utils/Floating/FloatingArrow/FloatingArrow.cjs.map +1 -1
  495. package/cjs/utils/Floating/use-context-menu-handlers.cjs.map +1 -1
  496. package/cjs/utils/Floating/use-delayed-hover.cjs.map +1 -1
  497. package/cjs/utils/InlineInput/InlineInput.cjs.map +1 -1
  498. package/cjs/utils/InputsGroupFieldset/InputsGroupFieldset.cjs.map +1 -1
  499. package/esm/components/Accordion/Accordion.mjs +1 -0
  500. package/esm/components/Accordion/Accordion.mjs.map +1 -1
  501. package/esm/components/ActionIcon/ActionIcon.mjs +1 -0
  502. package/esm/components/ActionIcon/ActionIcon.mjs.map +1 -1
  503. package/esm/components/ActionIcon/ActionIconGroup/ActionIconGroup.mjs +1 -1
  504. package/esm/components/ActionIcon/ActionIconGroup/ActionIconGroup.mjs.map +1 -1
  505. package/esm/components/ActionIcon/ActionIconGroupSection/ActionIconGroupSection.mjs.map +1 -1
  506. package/esm/components/AppShell/AppShellFooter/AppShellFooter.mjs.map +1 -1
  507. package/esm/components/AppShell/AppShellHeader/AppShellHeader.mjs.map +1 -1
  508. package/esm/components/AppShell/AppShellMain/AppShellMain.mjs.map +1 -1
  509. package/esm/components/AppShell/AppShellMediaStyles/assign-aside-variables/assign-aside-variables.mjs.map +1 -1
  510. package/esm/components/AppShell/AppShellMediaStyles/assign-footer-variables/assign-footer-variables.mjs.map +1 -1
  511. package/esm/components/AppShell/AppShellMediaStyles/assign-header-variables/assign-header-variables.mjs.map +1 -1
  512. package/esm/components/AppShell/AppShellMediaStyles/assign-navbar-variables/assign-navbar-variables.mjs.map +1 -1
  513. package/esm/components/AppShell/AppShellMediaStyles/assign-padding-variables/assign-padding-variables.mjs.map +1 -1
  514. package/esm/components/AppShell/AppShellMediaStyles/get-variables/get-variables.mjs.map +1 -1
  515. package/esm/components/AppShell/AppShellMediaStyles/is-primitive-size/is-primitive-size.mjs.map +1 -1
  516. package/esm/components/AppShell/AppShellMediaStyles/is-responsive-size/is-responsive-size.mjs.map +1 -1
  517. package/esm/components/AspectRatio/AspectRatio.mjs.map +1 -1
  518. package/esm/components/Autocomplete/Autocomplete.mjs.map +1 -1
  519. package/esm/components/Avatar/AvatarGroup/AvatarGroup.mjs.map +1 -1
  520. package/esm/components/Avatar/get-initials/get-initials.mjs.map +1 -1
  521. package/esm/components/BackgroundImage/BackgroundImage.mjs.map +1 -1
  522. package/esm/components/Blockquote/Blockquote.mjs.map +1 -1
  523. package/esm/components/Breadcrumbs/Breadcrumbs.mjs.map +1 -1
  524. package/esm/components/Button/ButtonGroup/ButtonGroup.mjs.map +1 -1
  525. package/esm/components/Button/ButtonGroupSection/ButtonGroupSection.mjs.map +1 -1
  526. package/esm/components/Checkbox/Checkbox.mjs.map +1 -1
  527. package/esm/components/Collapse/Collapse.mjs.map +1 -1
  528. package/esm/components/ColorInput/ColorInput.mjs.map +1 -1
  529. package/esm/components/ColorPicker/ColorSlider/ColorSlider.mjs.map +1 -1
  530. package/esm/components/ColorPicker/converters/converters.mjs.map +1 -1
  531. package/esm/components/ColorPicker/converters/parsers.mjs.map +1 -1
  532. package/esm/components/Combobox/ComboboxEmpty/ComboboxEmpty.mjs.map +1 -1
  533. package/esm/components/Combobox/ComboboxFooter/ComboboxFooter.mjs.map +1 -1
  534. package/esm/components/Combobox/ComboboxGroup/ComboboxGroup.mjs +3 -2
  535. package/esm/components/Combobox/ComboboxGroup/ComboboxGroup.mjs.map +1 -1
  536. package/esm/components/Combobox/ComboboxHeader/ComboboxHeader.mjs.map +1 -1
  537. package/esm/components/Combobox/OptionsDropdown/OptionsDropdown.mjs +2 -2
  538. package/esm/components/Combobox/OptionsDropdown/OptionsDropdown.mjs.map +1 -1
  539. package/esm/components/Combobox/OptionsDropdown/default-options-filter.mjs.map +1 -1
  540. package/esm/components/Combobox/use-combobox/get-index/get-index.mjs.map +1 -1
  541. package/esm/components/Combobox/use-combobox/use-combobox.mjs.map +1 -1
  542. package/esm/components/Combobox/use-pills-reorder/use-pills-reorder.mjs.map +1 -1
  543. package/esm/components/ComboboxPopover/ComboboxPopover.mjs +216 -0
  544. package/esm/components/ComboboxPopover/ComboboxPopover.mjs.map +1 -0
  545. package/esm/components/ComboboxPopover/ComboboxPopoverTarget.mjs +45 -0
  546. package/esm/components/ComboboxPopover/ComboboxPopoverTarget.mjs.map +1 -0
  547. package/esm/components/DataList/DataList.context.mjs +8 -0
  548. package/esm/components/DataList/DataList.context.mjs.map +1 -0
  549. package/esm/components/DataList/DataList.mjs +61 -0
  550. package/esm/components/DataList/DataList.mjs.map +1 -0
  551. package/esm/components/DataList/DataList.module.mjs +12 -0
  552. package/esm/components/DataList/DataList.module.mjs.map +1 -0
  553. package/esm/components/DataList/DataListItem/DataListItem.mjs +32 -0
  554. package/esm/components/DataList/DataListItem/DataListItem.mjs.map +1 -0
  555. package/esm/components/DataList/DataListItemLabel/DataListItemLabel.mjs +33 -0
  556. package/esm/components/DataList/DataListItemLabel/DataListItemLabel.mjs.map +1 -0
  557. package/esm/components/DataList/DataListItemValue/DataListItemValue.mjs +33 -0
  558. package/esm/components/DataList/DataListItemValue/DataListItemValue.mjs.map +1 -0
  559. package/esm/components/Drawer/DrawerBody.mjs.map +1 -1
  560. package/esm/components/Drawer/DrawerCloseButton.mjs.map +1 -1
  561. package/esm/components/Drawer/DrawerHeader.mjs.map +1 -1
  562. package/esm/components/Drawer/DrawerOverlay.mjs.map +1 -1
  563. package/esm/components/Drawer/DrawerRoot.mjs.map +1 -1
  564. package/esm/components/Drawer/DrawerTitle.mjs.map +1 -1
  565. package/esm/components/EmptyState/EmptyState.context.mjs +8 -0
  566. package/esm/components/EmptyState/EmptyState.context.mjs.map +1 -0
  567. package/esm/components/EmptyState/EmptyState.mjs +102 -0
  568. package/esm/components/EmptyState/EmptyState.mjs.map +1 -0
  569. package/esm/components/EmptyState/EmptyState.module.mjs +14 -0
  570. package/esm/components/EmptyState/EmptyState.module.mjs.map +1 -0
  571. package/esm/components/EmptyState/EmptyStateActions/EmptyStateActions.mjs +28 -0
  572. package/esm/components/EmptyState/EmptyStateActions/EmptyStateActions.mjs.map +1 -0
  573. package/esm/components/EmptyState/EmptyStateDescription/EmptyStateDescription.mjs +29 -0
  574. package/esm/components/EmptyState/EmptyStateDescription/EmptyStateDescription.mjs.map +1 -0
  575. package/esm/components/EmptyState/EmptyStateIndicator/EmptyStateIndicator.mjs +29 -0
  576. package/esm/components/EmptyState/EmptyStateIndicator/EmptyStateIndicator.mjs.map +1 -0
  577. package/esm/components/EmptyState/EmptyStateTitle/EmptyStateTitle.mjs +30 -0
  578. package/esm/components/EmptyState/EmptyStateTitle/EmptyStateTitle.mjs.map +1 -0
  579. package/esm/components/FileInput/FileInput.mjs.map +1 -1
  580. package/esm/components/Grid/GridCol/GridColVariables.mjs.map +1 -1
  581. package/esm/components/Grid/GridVariables.mjs.map +1 -1
  582. package/esm/components/Group/Group.mjs.map +1 -1
  583. package/esm/components/Group/filter-falsy-children/filter-falsy-children.mjs.map +1 -1
  584. package/esm/components/Highlight/highlighter/highlighter.mjs.map +1 -1
  585. package/esm/components/HoverCard/HoverCardDropdown/HoverCardDropdown.mjs.map +1 -1
  586. package/esm/components/HoverCard/use-hover-card.mjs.map +1 -1
  587. package/esm/components/Input/Input.mjs +7 -2
  588. package/esm/components/Input/Input.mjs.map +1 -1
  589. package/esm/components/Input/Input.module.mjs +1 -0
  590. package/esm/components/Input/Input.module.mjs.map +1 -1
  591. package/esm/components/Input/InputDescription/InputDescription.mjs.map +1 -1
  592. package/esm/components/Input/InputError/InputError.mjs.map +1 -1
  593. package/esm/components/Input/InputPlaceholder/InputPlaceholder.mjs.map +1 -1
  594. package/esm/components/Input/InputSuccess/InputSuccess.mjs +48 -0
  595. package/esm/components/Input/InputSuccess/InputSuccess.mjs.map +1 -0
  596. package/esm/components/Input/InputWrapper/InputWrapper.mjs +22 -5
  597. package/esm/components/Input/InputWrapper/InputWrapper.mjs.map +1 -1
  598. package/esm/components/Input/use-input-props.mjs +4 -1
  599. package/esm/components/Input/use-input-props.mjs.map +1 -1
  600. package/esm/components/JsonInput/validate-json/validate-json.mjs.map +1 -1
  601. package/esm/components/Kbd/Kbd.mjs.map +1 -1
  602. package/esm/components/Mark/Mark.mjs.map +1 -1
  603. package/esm/components/Marquee/Marquee.mjs.map +1 -1
  604. package/esm/components/Menu/MenuDivider/MenuDivider.mjs.map +1 -1
  605. package/esm/components/Menu/MenuDropdown/MenuDropdown.mjs.map +1 -1
  606. package/esm/components/Menu/MenuItem/MenuItem.mjs.map +1 -1
  607. package/esm/components/Menu/MenuLabel/MenuLabel.mjs.map +1 -1
  608. package/esm/components/Menu/MenuSearch/MenuSearch.mjs.map +1 -1
  609. package/esm/components/Menu/MenuSelectableItem/MenuSelectableItem.mjs.map +1 -1
  610. package/esm/components/Menu/MenuSub/MenuSub.mjs.map +1 -1
  611. package/esm/components/Menu/MenuSubItem/MenuSubItem.mjs.map +1 -1
  612. package/esm/components/Menu/use-menu-type-ahead.mjs.map +1 -1
  613. package/esm/components/Menubar/Menubar.context.mjs +9 -0
  614. package/esm/components/Menubar/Menubar.context.mjs.map +1 -0
  615. package/esm/components/Menubar/Menubar.mjs +146 -0
  616. package/esm/components/Menubar/Menubar.mjs.map +1 -0
  617. package/esm/components/Menubar/Menubar.module.mjs +10 -0
  618. package/esm/components/Menubar/Menubar.module.mjs.map +1 -0
  619. package/esm/components/Menubar/MenubarDropdown/MenubarDropdown.mjs +61 -0
  620. package/esm/components/Menubar/MenubarDropdown/MenubarDropdown.mjs.map +1 -0
  621. package/esm/components/Menubar/MenubarMenu/MenubarMenu.mjs +59 -0
  622. package/esm/components/Menubar/MenubarMenu/MenubarMenu.mjs.map +1 -0
  623. package/esm/components/Menubar/MenubarTarget/MenubarTarget.mjs +143 -0
  624. package/esm/components/Menubar/MenubarTarget/MenubarTarget.mjs.map +1 -0
  625. package/esm/components/Modal/ModalBody.mjs.map +1 -1
  626. package/esm/components/Modal/ModalCloseButton.mjs.map +1 -1
  627. package/esm/components/Modal/ModalHeader.mjs.map +1 -1
  628. package/esm/components/Modal/ModalOverlay.mjs.map +1 -1
  629. package/esm/components/Modal/ModalTitle.mjs.map +1 -1
  630. package/esm/components/ModalBase/ModalBase.mjs.map +1 -1
  631. package/esm/components/MultiSelect/MultiSelect.mjs +4 -1
  632. package/esm/components/MultiSelect/MultiSelect.mjs.map +1 -1
  633. package/esm/components/MultiSelect/filter-picked-values.mjs.map +1 -1
  634. package/esm/components/NativeSelect/NativeSelect.mjs.map +1 -1
  635. package/esm/components/NativeSelect/NativeSelectOption.mjs.map +1 -1
  636. package/esm/components/NumberInput/NumberInput.mjs.map +1 -1
  637. package/esm/components/OverflowList/OverflowList.mjs.map +1 -1
  638. package/esm/components/OverflowList/get-row-position-data.mjs.map +1 -1
  639. package/esm/components/OverflowList/use-dimensions.mjs.map +1 -1
  640. package/esm/components/Overlay/Overlay.mjs.map +1 -1
  641. package/esm/components/Pagination/Pagination.mjs.map +1 -1
  642. package/esm/components/Pagination/PaginationDots/PaginationDots.mjs.map +1 -1
  643. package/esm/components/Pagination/PaginationItems/PaginationItems.mjs.map +1 -1
  644. package/esm/components/PasswordInput/PasswordInput.mjs +11 -2
  645. package/esm/components/PasswordInput/PasswordInput.mjs.map +1 -1
  646. package/esm/components/Pill/PillGroup/PillGroup.mjs.map +1 -1
  647. package/esm/components/PillsInput/PillsInput.mjs.map +1 -1
  648. package/esm/components/PinInput/PinInput.mjs +2 -1
  649. package/esm/components/PinInput/PinInput.mjs.map +1 -1
  650. package/esm/components/PinInput/create-pin-array/create-pin-array.mjs.map +1 -1
  651. package/esm/components/Popover/use-popover.mjs.map +1 -1
  652. package/esm/components/Portal/Portal.mjs.map +1 -1
  653. package/esm/components/Progress/ProgressLabel/ProgressLabel.mjs.map +1 -1
  654. package/esm/components/Radio/Radio.mjs.map +1 -1
  655. package/esm/components/Radio/RadioCard/RadioCard.mjs.map +1 -1
  656. package/esm/components/Rating/Rating.mjs.map +1 -1
  657. package/esm/components/Rating/RatingItem/RatingItem.mjs.map +1 -1
  658. package/esm/components/Rating/StarSymbol/StarSymbol.mjs.map +1 -1
  659. package/esm/components/RingProgress/RingProgress.mjs.map +1 -1
  660. package/esm/components/RingProgress/get-curves/get-curves.mjs.map +1 -1
  661. package/esm/components/RollingNumber/get-digit-parts.mjs.map +1 -1
  662. package/esm/components/RollingNumber/get-render-slots.mjs.map +1 -1
  663. package/esm/components/ScrollArea/ScrollAreaViewport/ScrollAreaViewport.mjs +1 -0
  664. package/esm/components/ScrollArea/ScrollAreaViewport/ScrollAreaViewport.mjs.map +1 -1
  665. package/esm/components/ScrollArea/utils/add-unlinked-scroll-listener.mjs.map +1 -1
  666. package/esm/components/ScrollArea/utils/get-scroll-position-from-pointer.mjs.map +1 -1
  667. package/esm/components/ScrollArea/utils/get-thumb-offset-from-scroll.mjs.map +1 -1
  668. package/esm/components/SegmentedControl/SegmentedControl.mjs.map +1 -1
  669. package/esm/components/Select/Select.mjs.map +1 -1
  670. package/esm/components/SemiCircleProgress/SemiCircleProgress.mjs +4 -1
  671. package/esm/components/SemiCircleProgress/SemiCircleProgress.mjs.map +1 -1
  672. package/esm/components/SemiCircleProgress/SemiCircleProgress.module.mjs.map +1 -1
  673. package/esm/components/SimpleGrid/SimpleGridVariables.mjs.map +1 -1
  674. package/esm/components/Skeleton/Skeleton.mjs.map +1 -1
  675. package/esm/components/Slider/RangeSlider/RangeSlider.mjs.map +1 -1
  676. package/esm/components/Slider/utils/get-precision/get-precision.mjs.map +1 -1
  677. package/esm/components/Slider/utils/get-step-mark-value/get-step-mark-value.mjs.map +1 -1
  678. package/esm/components/Splitter/Splitter.context.mjs.map +1 -1
  679. package/esm/components/Splitter/Splitter.mjs +22 -1
  680. package/esm/components/Splitter/Splitter.mjs.map +1 -1
  681. package/esm/components/Splitter/SplitterPane/SplitterPane.mjs +1 -2
  682. package/esm/components/Splitter/SplitterPane/SplitterPane.mjs.map +1 -1
  683. package/esm/components/Stack/Stack.mjs.map +1 -1
  684. package/esm/components/Stepper/Stepper.mjs.map +1 -1
  685. package/esm/components/Switch/Switch.mjs.map +1 -1
  686. package/esm/components/Table/Table.components.mjs.map +1 -1
  687. package/esm/components/TableOfContents/TableOfContents.mjs.map +1 -1
  688. package/esm/components/Tabs/Tabs.context.mjs.map +1 -1
  689. package/esm/components/Tabs/Tabs.mjs +18 -3
  690. package/esm/components/Tabs/Tabs.mjs.map +1 -1
  691. package/esm/components/Tabs/TabsPanel/TabsPanel.mjs +7 -1
  692. package/esm/components/Tabs/TabsPanel/TabsPanel.mjs.map +1 -1
  693. package/esm/components/Tabs/TabsTab/TabsTab.mjs +1 -1
  694. package/esm/components/Tabs/TabsTab/TabsTab.mjs.map +1 -1
  695. package/esm/components/TagsInput/TagsInput.mjs +4 -1
  696. package/esm/components/TagsInput/TagsInput.mjs.map +1 -1
  697. package/esm/components/TagsInput/filter-picked-tags.mjs.map +1 -1
  698. package/esm/components/TagsInput/get-splitted-tags.mjs.map +1 -1
  699. package/esm/components/Text/Text.mjs.map +1 -1
  700. package/esm/components/Textarea/Autosize.mjs.map +1 -1
  701. package/esm/components/ThemeIcon/ThemeIcon.mjs.map +1 -1
  702. package/esm/components/Title/Title.mjs.map +1 -1
  703. package/esm/components/Tooltip/Tooltip.mjs.map +1 -1
  704. package/esm/components/Tooltip/use-tooltip.mjs.map +1 -1
  705. package/esm/components/Transition/get-transition-styles/get-transition-styles.mjs.map +1 -1
  706. package/esm/components/Tree/FlatTreeNode.mjs.map +1 -1
  707. package/esm/components/Tree/TreeNode.mjs.map +1 -1
  708. package/esm/components/Tree/filter-tree-data/filter-tree-data.mjs.map +1 -1
  709. package/esm/components/Tree/is-node-checked/is-node-checked.mjs.map +1 -1
  710. package/esm/components/Tree/is-node-indeterminate/is-node-indeterminate.mjs.map +1 -1
  711. package/esm/components/Tree/use-tree.mjs.map +1 -1
  712. package/esm/components/TreeSelect/TreeSelect.mjs +7 -1
  713. package/esm/components/TreeSelect/TreeSelect.mjs.map +1 -1
  714. package/esm/components/TreeSelect/get-checked-values-by-strategy.mjs.map +1 -1
  715. package/esm/components/Typography/Typography.mjs.map +1 -1
  716. package/esm/components/UnstyledButton/UnstyledButton.mjs.map +1 -1
  717. package/esm/components/VisuallyHidden/VisuallyHidden.mjs.map +1 -1
  718. package/esm/core/Box/Box.mjs.map +1 -1
  719. package/esm/core/Box/get-box-mod/get-box-mod.mjs.map +1 -1
  720. package/esm/core/Box/get-box-style/get-box-style.mjs.map +1 -1
  721. package/esm/core/Box/get-style-object/get-style-object.mjs.map +1 -1
  722. package/esm/core/Box/style-props/parse-style-props/parse-style-props.mjs.map +1 -1
  723. package/esm/core/Box/style-props/parse-style-props/sort-media-queries.mjs.map +1 -1
  724. package/esm/core/Box/style-props/resolvers/border-resolver/border-resolver.mjs.map +1 -1
  725. package/esm/core/Box/use-random-classname/use-random-classname.mjs.map +1 -1
  726. package/esm/core/InlineStyles/InlineStyles.mjs.map +1 -1
  727. package/esm/core/InlineStyles/css-object-to-string/css-object-to-string.mjs.map +1 -1
  728. package/esm/core/InlineStyles/hash-styles.mjs.map +1 -1
  729. package/esm/core/MantineProvider/ColorSchemeScript/ColorSchemeScript.mjs.map +1 -1
  730. package/esm/core/MantineProvider/Mantine.context.mjs.map +1 -1
  731. package/esm/core/MantineProvider/MantineClasses/MantineClasses.mjs.map +1 -1
  732. package/esm/core/MantineProvider/MantineCssVariables/default-css-variables-resolver.mjs +6 -2
  733. package/esm/core/MantineProvider/MantineCssVariables/default-css-variables-resolver.mjs.map +1 -1
  734. package/esm/core/MantineProvider/MantineCssVariables/get-css-color-variables.mjs.map +1 -1
  735. package/esm/core/MantineProvider/MantineCssVariables/remove-default-variables.mjs.map +1 -1
  736. package/esm/core/MantineProvider/MantineCssVariables/v8-css-variables-resolver.mjs +3 -1
  737. package/esm/core/MantineProvider/MantineCssVariables/v8-css-variables-resolver.mjs.map +1 -1
  738. package/esm/core/MantineProvider/MantineCssVariables/virtual-color/virtual-color.mjs.map +1 -1
  739. package/esm/core/MantineProvider/color-functions/colors-tuple/colors-tuple.mjs.map +1 -1
  740. package/esm/core/MantineProvider/color-functions/default-variant-colors-resolver/default-variant-colors-resolver.mjs +3 -1
  741. package/esm/core/MantineProvider/color-functions/default-variant-colors-resolver/default-variant-colors-resolver.mjs.map +1 -1
  742. package/esm/core/MantineProvider/color-functions/get-contrast-color/get-contrast-color.mjs +19 -4
  743. package/esm/core/MantineProvider/color-functions/get-contrast-color/get-contrast-color.mjs.map +1 -1
  744. package/esm/core/MantineProvider/color-functions/parse-theme-color/parse-theme-color.mjs.map +1 -1
  745. package/esm/core/MantineProvider/color-functions/to-rgba/to-rgba.mjs.map +1 -1
  746. package/esm/core/MantineProvider/convert-css-variables/convert-css-variables.mjs.map +1 -1
  747. package/esm/core/MantineProvider/convert-css-variables/css-variables-object-to-string.mjs.map +1 -1
  748. package/esm/core/MantineProvider/use-mantine-color-scheme/use-mantine-color-scheme.mjs.map +1 -1
  749. package/esm/core/MantineProvider/use-mantine-color-scheme/use-provider-color-scheme.mjs.map +1 -1
  750. package/esm/core/MantineProvider/use-props/use-props.mjs.map +1 -1
  751. package/esm/core/MantineProvider/use-respect-reduce-motion/use-respect-reduce-motion.mjs.map +1 -1
  752. package/esm/core/styles-api/use-styles/get-class-name/get-options-class-names/get-options-class-names.mjs.map +1 -1
  753. package/esm/core/styles-api/use-styles/get-class-name/get-resolved-class-names/get-resolved-class-names.mjs.map +1 -1
  754. package/esm/core/styles-api/use-styles/get-class-name/resolve-class-names/resolve-class-names.mjs.map +1 -1
  755. package/esm/core/styles-api/use-styles/get-style/get-style.mjs.map +1 -1
  756. package/esm/core/styles-api/use-styles/get-style/resolve-vars/merge-vars.mjs.map +1 -1
  757. package/esm/core/styles-api/use-styles/use-styles.mjs.map +1 -1
  758. package/esm/core/styles-api/use-styles/use-transformed-styles.mjs.map +1 -1
  759. package/esm/core/utils/create-scoped-keydown-handler/create-scoped-keydown-handler.mjs +3 -5
  760. package/esm/core/utils/create-scoped-keydown-handler/create-scoped-keydown-handler.mjs.map +1 -1
  761. package/esm/core/utils/create-use-external-events/create-use-external-events.mjs.map +1 -1
  762. package/esm/core/utils/deep-merge/deep-merge.mjs.map +1 -1
  763. package/esm/core/utils/filter-props/filter-props.mjs.map +1 -1
  764. package/esm/core/utils/get-context-item-index/get-context-item-index.mjs.map +1 -1
  765. package/esm/core/utils/get-safe-id/get-safe-id.mjs.map +1 -1
  766. package/esm/core/utils/is-number-like/is-number-like.mjs.map +1 -1
  767. package/esm/core/utils/units-converters/px.mjs.map +1 -1
  768. package/esm/core/utils/units-converters/rem.mjs.map +1 -1
  769. package/esm/index.mjs +23 -4
  770. package/lib/components/Accordion/Accordion.d.ts +4 -4
  771. package/lib/components/ActionIcon/ActionIcon.d.ts +3 -3
  772. package/lib/components/Combobox/Combobox.types.d.ts +4 -3
  773. package/lib/components/Combobox/OptionsDropdown/OptionsDropdown.d.ts +1 -1
  774. package/lib/components/Combobox/index.d.ts +1 -1
  775. package/lib/components/ComboboxPopover/ComboboxPopover.d.ts +110 -0
  776. package/lib/components/ComboboxPopover/ComboboxPopover.types.d.ts +2 -0
  777. package/lib/components/ComboboxPopover/ComboboxPopoverTarget.d.ts +16 -0
  778. package/lib/components/ComboboxPopover/index.d.ts +14 -0
  779. package/lib/components/DataList/DataList.context.d.ts +6 -0
  780. package/lib/components/DataList/DataList.d.ts +44 -0
  781. package/lib/components/DataList/DataListItem/DataListItem.d.ts +18 -0
  782. package/lib/components/DataList/DataListItemLabel/DataListItemLabel.d.ts +18 -0
  783. package/lib/components/DataList/DataListItemValue/DataListItemValue.d.ts +18 -0
  784. package/lib/components/DataList/index.d.ts +32 -0
  785. package/lib/components/EmptyState/EmptyState.context.d.ts +8 -0
  786. package/lib/components/EmptyState/EmptyState.d.ts +83 -0
  787. package/lib/components/EmptyState/EmptyStateActions/EmptyStateActions.d.ts +18 -0
  788. package/lib/components/EmptyState/EmptyStateDescription/EmptyStateDescription.d.ts +18 -0
  789. package/lib/components/EmptyState/EmptyStateIndicator/EmptyStateIndicator.d.ts +18 -0
  790. package/lib/components/EmptyState/EmptyStateTitle/EmptyStateTitle.d.ts +20 -0
  791. package/lib/components/EmptyState/index.d.ts +13 -0
  792. package/lib/components/Input/Input.d.ts +11 -0
  793. package/lib/components/Input/InputSuccess/InputSuccess.d.ts +23 -0
  794. package/lib/components/Input/InputWrapper/InputWrapper.d.ts +7 -2
  795. package/lib/components/Input/index.d.ts +3 -1
  796. package/lib/components/Input/use-input-props.d.ts +5 -2
  797. package/lib/components/MaskInput/use-mask-input-props.d.ts +5 -1
  798. package/lib/components/Menubar/Menubar.context.d.ts +51 -0
  799. package/lib/components/Menubar/Menubar.d.ts +56 -0
  800. package/lib/components/Menubar/MenubarDropdown/MenubarDropdown.d.ts +7 -0
  801. package/lib/components/Menubar/MenubarMenu/MenubarMenu.d.ts +9 -0
  802. package/lib/components/Menubar/MenubarTarget/MenubarTarget.d.ts +14 -0
  803. package/lib/components/Menubar/index.d.ts +11 -0
  804. package/lib/components/MultiSelect/MultiSelect.d.ts +1 -1
  805. package/lib/components/NativeSelect/NativeSelect.d.ts +2 -2
  806. package/lib/components/PinInput/PinInput.d.ts +2 -0
  807. package/lib/components/Splitter/Splitter.context.d.ts +3 -1
  808. package/lib/components/Splitter/Splitter.d.ts +10 -10
  809. package/lib/components/Splitter/SplitterPane/SplitterPane.d.ts +9 -8
  810. package/lib/components/Tabs/Tabs.context.d.ts +2 -0
  811. package/lib/components/index.d.ts +4 -0
  812. package/lib/core/MantineProvider/color-functions/get-contrast-color/get-contrast-color.d.ts +7 -2
  813. package/lib/core/MantineProvider/color-functions/index.d.ts +1 -1
  814. package/package.json +5 -5
  815. package/styles/DataList.css +54 -0
  816. package/styles/DataList.layer.css +55 -0
  817. package/styles/EmptyState.css +121 -0
  818. package/styles/EmptyState.layer.css +122 -0
  819. package/styles/Input.css +21 -2
  820. package/styles/Input.layer.css +21 -2
  821. package/styles/Menubar.css +29 -0
  822. package/styles/Menubar.layer.css +30 -0
  823. package/styles/SemiCircleProgress.css +1 -0
  824. package/styles/SemiCircleProgress.layer.css +1 -0
  825. package/styles/default-css-variables.css +2 -0
  826. package/styles/default-css-variables.layer.css +2 -0
  827. package/styles.css +231 -2
  828. package/styles.layer.css +231 -2
@@ -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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"}
@@ -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 {\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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"}
@@ -85,7 +85,10 @@ const SemiCircleProgress = factory((_props) => {
85
85
  stroke: "var(--scp-filled-segment-color)",
86
86
  strokeWidth: thickness,
87
87
  strokeDasharray: circumference,
88
- ...getStyles("filledSegment", { style: { strokeDashoffset: semiCirclePercentage } })
88
+ ...getStyles("filledSegment", { style: {
89
+ strokeDashoffset: semiCirclePercentage,
90
+ ...semiCirclePercentage === 0 ? { strokeOpacity: 0 } : null
91
+ } })
89
92
  })]
90
93
  })]
91
94
  });
@@ -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', { style: { strokeDashoffset: semiCirclePercentage } })}\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,EAAE,OAAO,EAAE,kBAAkB,qBAAqB,EAAE,CAAC;GACrF,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;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 +1 @@
1
- {"version":3,"file":"SemiCircleProgress.module.mjs","names":[],"sources":["../../../src/components/SemiCircleProgress/SemiCircleProgress.module.css"],"sourcesContent":[".root {\n --scp-filled-segment-color: var(--mantine-primary-color-filled);\n --scp-transition-duration: 0ms;\n --scp-thickness: 12px;\n\n @mixin where-light {\n --scp-empty-segment-color: var(--mantine-color-gray-2);\n }\n\n @mixin where-dark {\n --scp-empty-segment-color: var(--mantine-color-dark-4);\n }\n\n position: relative;\n width: fit-content;\n}\n\n.svg {\n display: block;\n transform: var(--scp-rotation);\n overflow: hidden;\n}\n\n.filledSegment {\n transition:\n stroke-dashoffset var(--scp-transition-duration) ease,\n stroke-dasharray var(--scp-transition-duration) ease,\n stroke var(--scp-transition-duration);\n}\n\n.label {\n position: absolute;\n margin: 0;\n padding: 0;\n inset-inline: 0;\n text-align: center;\n z-index: 1;\n\n &:where([data-position='bottom']) {\n bottom: 0;\n padding-inline: calc(var(--scp-thickness) * 2);\n\n &:where([data-orientation='down']) {\n bottom: auto;\n top: 0;\n }\n }\n\n &:where([data-position='center']) {\n top: 50%;\n transform: translateY(-50%);\n padding-inline: calc(var(--scp-thickness) * 3);\n }\n}\n"],"mappings":""}
1
+ {"version":3,"file":"SemiCircleProgress.module.mjs","names":[],"sources":["../../../src/components/SemiCircleProgress/SemiCircleProgress.module.css"],"sourcesContent":[".root {\n --scp-filled-segment-color: var(--mantine-primary-color-filled);\n --scp-transition-duration: 0ms;\n --scp-thickness: 12px;\n\n @mixin where-light {\n --scp-empty-segment-color: var(--mantine-color-gray-2);\n }\n\n @mixin where-dark {\n --scp-empty-segment-color: var(--mantine-color-dark-4);\n }\n\n position: relative;\n width: fit-content;\n}\n\n.svg {\n display: block;\n transform: var(--scp-rotation);\n overflow: hidden;\n}\n\n.filledSegment {\n transition:\n stroke-dashoffset var(--scp-transition-duration) ease,\n stroke-dasharray var(--scp-transition-duration) ease,\n stroke-opacity var(--scp-transition-duration) ease,\n stroke var(--scp-transition-duration);\n}\n\n.label {\n position: absolute;\n margin: 0;\n padding: 0;\n inset-inline: 0;\n text-align: center;\n z-index: 1;\n\n &:where([data-position='bottom']) {\n bottom: 0;\n padding-inline: calc(var(--scp-thickness) * 2);\n\n &:where([data-orientation='down']) {\n bottom: auto;\n top: 0;\n }\n }\n\n &:where([data-position='center']) {\n top: 50%;\n transform: translateY(-50%);\n padding-inline: calc(var(--scp-thickness) * 3);\n }\n}\n"],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"SimpleGridVariables.mjs","names":[],"sources":["../../../src/components/SimpleGrid/SimpleGridVariables.tsx"],"sourcesContent":["import {\n filterProps,\n getBaseValue,\n getSortedBreakpoints,\n getSpacing,\n InlineStyles,\n keys,\n MantineBreakpoint,\n px,\n rem,\n useMantineTheme,\n} from '../../core';\nimport type { SimpleGridProps } from './SimpleGrid';\n\ninterface SimpleGridVariablesProps extends SimpleGridProps {\n selector: string;\n}\n\nfunction getMinColWidthValue(value: string | number | undefined): string | undefined {\n if (value === undefined) {\n return undefined;\n }\n\n if (typeof value === 'number') {\n return rem(value);\n }\n\n return value;\n}\n\nexport function SimpleGridMediaVariables({\n spacing,\n verticalSpacing,\n cols,\n minColWidth,\n autoRows,\n selector,\n}: SimpleGridVariablesProps) {\n const theme = useMantineTheme();\n const _verticalSpacing = verticalSpacing === undefined ? spacing : verticalSpacing;\n const useAutoColumns = minColWidth !== undefined;\n\n const baseStyles: Record<string, string | undefined> = filterProps({\n '--sg-spacing-x': getSpacing(getBaseValue(spacing)),\n '--sg-spacing-y': getSpacing(getBaseValue(_verticalSpacing)),\n '--sg-auto-rows': autoRows,\n ...(useAutoColumns\n ? { '--sg-min-col-width': getMinColWidthValue(minColWidth) }\n : { '--sg-cols': getBaseValue(cols)?.toString() }),\n });\n\n const queries = keys(theme.breakpoints).reduce<Record<string, Record<string, any>>>(\n (acc, breakpoint) => {\n if (!acc[breakpoint]) {\n acc[breakpoint] = {};\n }\n\n if (typeof spacing === 'object' && spacing[breakpoint] !== undefined) {\n acc[breakpoint]['--sg-spacing-x'] = getSpacing(spacing[breakpoint]);\n }\n\n if (typeof _verticalSpacing === 'object' && _verticalSpacing[breakpoint] !== undefined) {\n acc[breakpoint]['--sg-spacing-y'] = getSpacing(_verticalSpacing[breakpoint]);\n }\n\n if (!useAutoColumns && typeof cols === 'object' && cols[breakpoint] !== undefined) {\n acc[breakpoint]['--sg-cols'] = cols[breakpoint];\n }\n\n return acc;\n },\n {}\n );\n\n const sortedBreakpoints = getSortedBreakpoints(keys(queries), theme.breakpoints).filter(\n (breakpoint) => keys(queries[breakpoint.value]).length > 0\n );\n\n const media = sortedBreakpoints.map((breakpoint) => ({\n query: `(min-width: ${theme.breakpoints[breakpoint.value as MantineBreakpoint]})`,\n styles: queries[breakpoint.value],\n }));\n\n return <InlineStyles styles={baseStyles} media={media} selector={selector} />;\n}\n\nfunction getBreakpoints(values: unknown) {\n if (typeof values === 'object' && values !== null) {\n return keys(values);\n }\n\n return [];\n}\n\nfunction sortBreakpoints(breakpoints: string[]) {\n return breakpoints.sort((a, b) => (px(a) as number) - (px(b) as number));\n}\n\nfunction getUniqueBreakpoints({\n spacing,\n verticalSpacing,\n cols,\n minColWidth,\n}: Omit<SimpleGridVariablesProps, 'selector'>) {\n const breakpoints = Array.from(\n new Set([\n ...getBreakpoints(spacing),\n ...getBreakpoints(verticalSpacing),\n ...(minColWidth !== undefined ? [] : getBreakpoints(cols)),\n ])\n );\n\n return sortBreakpoints(breakpoints);\n}\n\nexport function SimpleGridContainerVariables({\n spacing,\n verticalSpacing,\n cols,\n minColWidth,\n autoRows,\n selector,\n}: SimpleGridVariablesProps) {\n const _verticalSpacing = verticalSpacing === undefined ? spacing : verticalSpacing;\n const useAutoColumns = minColWidth !== undefined;\n\n const baseStyles: Record<string, string | undefined> = filterProps({\n '--sg-spacing-x': getSpacing(getBaseValue(spacing)),\n '--sg-spacing-y': getSpacing(getBaseValue(_verticalSpacing)),\n '--sg-auto-rows': autoRows,\n ...(useAutoColumns\n ? { '--sg-min-col-width': getMinColWidthValue(minColWidth) }\n : { '--sg-cols': getBaseValue(cols)?.toString() }),\n });\n\n const uniqueBreakpoints = getUniqueBreakpoints({ spacing, verticalSpacing, cols, minColWidth });\n\n const queries = uniqueBreakpoints.reduce<Record<string, Record<string, any>>>(\n (acc, breakpoint) => {\n if (!acc[breakpoint]) {\n acc[breakpoint] = {};\n }\n\n if (typeof spacing === 'object' && spacing[breakpoint] !== undefined) {\n acc[breakpoint]['--sg-spacing-x'] = getSpacing(spacing[breakpoint]);\n }\n\n if (typeof _verticalSpacing === 'object' && _verticalSpacing[breakpoint] !== undefined) {\n acc[breakpoint]['--sg-spacing-y'] = getSpacing(_verticalSpacing[breakpoint]);\n }\n\n if (!useAutoColumns && typeof cols === 'object' && cols[breakpoint] !== undefined) {\n acc[breakpoint]['--sg-cols'] = cols[breakpoint];\n }\n\n return acc;\n },\n {}\n );\n\n const media = uniqueBreakpoints.map((breakpoint) => ({\n query: `simple-grid (min-width: ${breakpoint})`,\n styles: queries[breakpoint],\n }));\n\n return <InlineStyles styles={baseStyles} container={media} selector={selector} />;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"SimpleGridVariables.mjs","names":[],"sources":["../../../src/components/SimpleGrid/SimpleGridVariables.tsx"],"sourcesContent":["import {\n filterProps,\n getBaseValue,\n getSortedBreakpoints,\n getSpacing,\n InlineStyles,\n keys,\n MantineBreakpoint,\n px,\n rem,\n useMantineTheme,\n} from '../../core';\nimport type { SimpleGridProps } from './SimpleGrid';\n\ninterface SimpleGridVariablesProps extends SimpleGridProps {\n selector: string;\n}\n\nfunction getMinColWidthValue(value: string | number | undefined): string | undefined {\n if (value === undefined) {\n return undefined;\n }\n\n if (typeof value === 'number') {\n return rem(value);\n }\n\n return value;\n}\n\nexport function SimpleGridMediaVariables({\n spacing,\n verticalSpacing,\n cols,\n minColWidth,\n autoRows,\n selector,\n}: SimpleGridVariablesProps) {\n const theme = useMantineTheme();\n const _verticalSpacing = verticalSpacing === undefined ? spacing : verticalSpacing;\n const useAutoColumns = minColWidth !== undefined;\n\n const baseStyles: Record<string, string | undefined> = filterProps({\n '--sg-spacing-x': getSpacing(getBaseValue(spacing)),\n '--sg-spacing-y': getSpacing(getBaseValue(_verticalSpacing)),\n '--sg-auto-rows': autoRows,\n ...(useAutoColumns\n ? { '--sg-min-col-width': getMinColWidthValue(minColWidth) }\n : { '--sg-cols': getBaseValue(cols)?.toString() }),\n });\n\n const queries = keys(theme.breakpoints).reduce<Record<string, Record<string, any>>>(\n (acc, breakpoint) => {\n if (!acc[breakpoint]) {\n acc[breakpoint] = {};\n }\n\n if (typeof spacing === 'object' && spacing[breakpoint] !== undefined) {\n acc[breakpoint]['--sg-spacing-x'] = getSpacing(spacing[breakpoint]);\n }\n\n if (typeof _verticalSpacing === 'object' && _verticalSpacing[breakpoint] !== undefined) {\n acc[breakpoint]['--sg-spacing-y'] = getSpacing(_verticalSpacing[breakpoint]);\n }\n\n if (!useAutoColumns && typeof cols === 'object' && cols[breakpoint] !== undefined) {\n acc[breakpoint]['--sg-cols'] = cols[breakpoint];\n }\n\n return acc;\n },\n {}\n );\n\n const sortedBreakpoints = getSortedBreakpoints(keys(queries), theme.breakpoints).filter(\n (breakpoint) => keys(queries[breakpoint.value]).length > 0\n );\n\n const media = sortedBreakpoints.map((breakpoint) => ({\n query: `(min-width: ${theme.breakpoints[breakpoint.value as MantineBreakpoint]})`,\n styles: queries[breakpoint.value],\n }));\n\n return <InlineStyles styles={baseStyles} media={media} selector={selector} />;\n}\n\nfunction getBreakpoints(values: unknown) {\n if (typeof values === 'object' && values !== null) {\n return keys(values);\n }\n\n return [];\n}\n\nfunction sortBreakpoints(breakpoints: string[]) {\n return breakpoints.sort((a, b) => (px(a) as number) - (px(b) as number));\n}\n\nfunction getUniqueBreakpoints({\n spacing,\n verticalSpacing,\n cols,\n minColWidth,\n}: Omit<SimpleGridVariablesProps, 'selector'>) {\n const breakpoints = Array.from(\n new Set([\n ...getBreakpoints(spacing),\n ...getBreakpoints(verticalSpacing),\n ...(minColWidth !== undefined ? [] : getBreakpoints(cols)),\n ])\n );\n\n return sortBreakpoints(breakpoints);\n}\n\nexport function SimpleGridContainerVariables({\n spacing,\n verticalSpacing,\n cols,\n minColWidth,\n autoRows,\n selector,\n}: SimpleGridVariablesProps) {\n const _verticalSpacing = verticalSpacing === undefined ? spacing : verticalSpacing;\n const useAutoColumns = minColWidth !== undefined;\n\n const baseStyles: Record<string, string | undefined> = filterProps({\n '--sg-spacing-x': getSpacing(getBaseValue(spacing)),\n '--sg-spacing-y': getSpacing(getBaseValue(_verticalSpacing)),\n '--sg-auto-rows': autoRows,\n ...(useAutoColumns\n ? { '--sg-min-col-width': getMinColWidthValue(minColWidth) }\n : { '--sg-cols': getBaseValue(cols)?.toString() }),\n });\n\n const uniqueBreakpoints = getUniqueBreakpoints({ spacing, verticalSpacing, cols, minColWidth });\n\n const queries = uniqueBreakpoints.reduce<Record<string, Record<string, any>>>(\n (acc, breakpoint) => {\n if (!acc[breakpoint]) {\n acc[breakpoint] = {};\n }\n\n if (typeof spacing === 'object' && spacing[breakpoint] !== undefined) {\n acc[breakpoint]['--sg-spacing-x'] = getSpacing(spacing[breakpoint]);\n }\n\n if (typeof _verticalSpacing === 'object' && _verticalSpacing[breakpoint] !== undefined) {\n acc[breakpoint]['--sg-spacing-y'] = getSpacing(_verticalSpacing[breakpoint]);\n }\n\n if (!useAutoColumns && typeof cols === 'object' && cols[breakpoint] !== undefined) {\n acc[breakpoint]['--sg-cols'] = cols[breakpoint];\n }\n\n return acc;\n },\n {}\n );\n\n const media = uniqueBreakpoints.map((breakpoint) => ({\n query: `simple-grid (min-width: ${breakpoint})`,\n styles: queries[breakpoint],\n }));\n\n return <InlineStyles styles={baseStyles} container={media} selector={selector} />;\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Skeleton.mjs","names":["classes"],"sources":["../../../src/components/Skeleton/Skeleton.tsx"],"sourcesContent":["import {\n Box,\n BoxProps,\n createVarsResolver,\n ElementProps,\n factory,\n Factory,\n getRadius,\n rem,\n StylesApiProps,\n useProps,\n useStyles,\n} from '../../core';\nimport classes from './Skeleton.module.css';\n\nexport type SkeletonStylesNames = 'root';\nexport type SkeletonCssVariables = {\n root: '--skeleton-width' | '--skeleton-height' | '--skeleton-radius';\n};\n\nexport interface SkeletonProps\n extends BoxProps, StylesApiProps<SkeletonFactory>, ElementProps<'div'> {\n /** Determines whether Skeleton overlay should be displayed @default true */\n visible?: boolean;\n\n /** Skeleton `height`, numbers are converted to rem @default auto */\n height?: React.CSSProperties['height'];\n\n /** Skeleton `width`, numbers are converted to rem, ignored when `circle` prop is set. @default 100% */\n width?: React.CSSProperties['width'];\n\n /** If set, Skeleton `width` and `border-radius` are equal to its `height` @default false */\n circle?: boolean;\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?: React.CSSProperties['borderRadius'];\n\n /** Enables animation @default true */\n animate?: boolean;\n}\n\nexport type SkeletonFactory = Factory<{\n props: SkeletonProps;\n ref: HTMLDivElement;\n stylesNames: SkeletonStylesNames;\n vars: SkeletonCssVariables;\n}>;\n\nconst defaultProps = {\n visible: true,\n animate: true,\n} satisfies Partial<SkeletonProps>;\n\nconst varsResolver = createVarsResolver<SkeletonFactory>(\n (_, { width, height, radius, circle }) => ({\n root: {\n '--skeleton-height': rem(height),\n '--skeleton-width': circle ? rem(height) : rem(width),\n '--skeleton-radius': circle ? '1000px' : radius === undefined ? undefined : getRadius(radius),\n },\n })\n);\n\nexport const Skeleton = factory<SkeletonFactory>((_props) => {\n const props = useProps('Skeleton', defaultProps, _props);\n const {\n classNames,\n className,\n style,\n styles,\n unstyled,\n vars,\n width,\n height,\n circle,\n visible,\n radius,\n animate,\n mod,\n attributes,\n ...others\n } = props;\n\n const getStyles = useStyles<SkeletonFactory>({\n name: 'Skeleton',\n classes,\n props,\n className,\n style,\n classNames,\n styles,\n unstyled,\n attributes,\n vars,\n varsResolver,\n });\n\n return <Box {...getStyles('root')} mod={[{ visible, animate }, mod]} {...others} />;\n});\n\nSkeleton.classes = classes;\nSkeleton.varsResolver = varsResolver;\nSkeleton.displayName = '@mantine/core/Skeleton';\n\nexport namespace Skeleton {\n export type Props = SkeletonProps;\n export type StylesNames = SkeletonStylesNames;\n export type CssVariables = SkeletonCssVariables;\n export type Factory = SkeletonFactory;\n}\n"],"mappings":";;;;;;;;;;;AAgDA,MAAM,eAAe;CACnB,SAAS;CACT,SAAS;AACX;AAEA,MAAM,eAAe,oBAClB,GAAG,EAAE,OAAO,QAAQ,QAAQ,cAAc,EACzC,MAAM;CACJ,qBAAqB,IAAI,MAAM;CAC/B,oBAAoB,SAAS,IAAI,MAAM,IAAI,IAAI,KAAK;CACpD,qBAAqB,SAAS,WAAW,WAAW,KAAA,IAAY,KAAA,IAAY,UAAU,MAAM;AAC9F,EACF,EACF;AAEA,MAAa,WAAW,SAA0B,WAAW;CAC3D,MAAM,QAAQ,SAAS,YAAY,cAAc,MAAM;CACvD,MAAM,EACJ,YACA,WACA,OACA,QACA,UACA,MACA,OACA,QACA,QACA,SACA,QACA,SACA,KACA,YACA,GAAG,WACD;CAgBJ,OAAO,oBAAC,KAAD;EAAK,GAdM,UAA2B;GAC3C,MAAM;GACN,SAAA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACF,CAEwB,EAAE,MAAM;EAAG,KAAK,CAAC;GAAE;GAAS;EAAQ,GAAG,GAAG;EAAG,GAAI;CAAS,CAAA;AACpF,CAAC;AAED,SAAS,UAAUA;AACnB,SAAS,eAAe;AACxB,SAAS,cAAc"}
1
+ {"version":3,"file":"Skeleton.mjs","names":["classes"],"sources":["../../../src/components/Skeleton/Skeleton.tsx"],"sourcesContent":["import {\n Box,\n BoxProps,\n createVarsResolver,\n ElementProps,\n factory,\n Factory,\n getRadius,\n rem,\n StylesApiProps,\n useProps,\n useStyles,\n} from '../../core';\nimport classes from './Skeleton.module.css';\n\nexport type SkeletonStylesNames = 'root';\nexport type SkeletonCssVariables = {\n root: '--skeleton-width' | '--skeleton-height' | '--skeleton-radius';\n};\n\nexport interface SkeletonProps\n extends BoxProps, StylesApiProps<SkeletonFactory>, ElementProps<'div'> {\n /** Determines whether Skeleton overlay should be displayed @default true */\n visible?: boolean;\n\n /** Skeleton `height`, numbers are converted to rem @default auto */\n height?: React.CSSProperties['height'];\n\n /** Skeleton `width`, numbers are converted to rem, ignored when `circle` prop is set. @default 100% */\n width?: React.CSSProperties['width'];\n\n /** If set, Skeleton `width` and `border-radius` are equal to its `height` @default false */\n circle?: boolean;\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?: React.CSSProperties['borderRadius'];\n\n /** Enables animation @default true */\n animate?: boolean;\n}\n\nexport type SkeletonFactory = Factory<{\n props: SkeletonProps;\n ref: HTMLDivElement;\n stylesNames: SkeletonStylesNames;\n vars: SkeletonCssVariables;\n}>;\n\nconst defaultProps = {\n visible: true,\n animate: true,\n} satisfies Partial<SkeletonProps>;\n\nconst varsResolver = createVarsResolver<SkeletonFactory>(\n (_, { width, height, radius, circle }) => ({\n root: {\n '--skeleton-height': rem(height),\n '--skeleton-width': circle ? rem(height) : rem(width),\n '--skeleton-radius': circle ? '1000px' : radius === undefined ? undefined : getRadius(radius),\n },\n })\n);\n\nexport const Skeleton = factory<SkeletonFactory>((_props) => {\n const props = useProps('Skeleton', defaultProps, _props);\n const {\n classNames,\n className,\n style,\n styles,\n unstyled,\n vars,\n width,\n height,\n circle,\n visible,\n radius,\n animate,\n mod,\n attributes,\n ...others\n } = props;\n\n const getStyles = useStyles<SkeletonFactory>({\n name: 'Skeleton',\n classes,\n props,\n className,\n style,\n classNames,\n styles,\n unstyled,\n attributes,\n vars,\n varsResolver,\n });\n\n return <Box {...getStyles('root')} mod={[{ visible, animate }, mod]} {...others} />;\n});\n\nSkeleton.classes = classes;\nSkeleton.varsResolver = varsResolver;\nSkeleton.displayName = '@mantine/core/Skeleton';\n\nexport namespace Skeleton {\n export type Props = SkeletonProps;\n export type StylesNames = SkeletonStylesNames;\n export type CssVariables = SkeletonCssVariables;\n export type Factory = SkeletonFactory;\n}\n"],"mappings":";;;;;;;;;;;AAgDA,MAAM,eAAe;CACnB,SAAS;CACT,SAAS;AACX;AAEA,MAAM,eAAe,oBAClB,GAAG,EAAE,OAAO,QAAQ,QAAQ,cAAc,EACzC,MAAM;CACJ,qBAAqB,IAAI,MAAM;CAC/B,oBAAoB,SAAS,IAAI,MAAM,IAAI,IAAI,KAAK;CACpD,qBAAqB,SAAS,WAAW,WAAW,KAAA,IAAY,KAAA,IAAY,UAAU,MAAM;AAC9F,EACF,EACF;AAEA,MAAa,WAAW,SAA0B,WAAW;CAC3D,MAAM,QAAQ,SAAS,YAAY,cAAc,MAAM;CACvD,MAAM,EACJ,YACA,WACA,OACA,QACA,UACA,MACA,OACA,QACA,QACA,SACA,QACA,SACA,KACA,YACA,GAAG,WACD;CAgBJ,OAAO,oBAAC,KAAD;EAAK,GAdM,UAA2B;GAC3C,MAAM;GACN,SAAA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACF,CAEwB,CAAC,CAAC,MAAM;EAAG,KAAK,CAAC;GAAE;GAAS;EAAQ,GAAG,GAAG;EAAG,GAAI;CAAS,CAAA;AACpF,CAAC;AAED,SAAS,UAAUA;AACnB,SAAS,eAAe;AACxB,SAAS,cAAc"}
@@ -1 +1 @@
1
- {"version":3,"file":"RangeSlider.mjs","names":["classes"],"sources":["../../../../src/components/Slider/RangeSlider/RangeSlider.tsx"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\nimport { clamp, useMergedRef, useMove, useUncontrolled } from '@mantine/hooks';\nimport {\n BoxProps,\n createVarsResolver,\n ElementProps,\n factory,\n Factory,\n findClosestNumber,\n getRadius,\n getSize,\n getThemeColor,\n MantineColor,\n MantineRadius,\n MantineSize,\n rem,\n StylesApiProps,\n useDirection,\n useProps,\n useStyles,\n} from '../../../core';\nimport { TransitionOverride } from '../../Transition';\nimport { SliderCssVariables, SliderProvider, SliderStylesNames } from '../Slider.context';\nimport { SliderMark } from '../SliderMark';\nimport { SliderRoot } from '../SliderRoot/SliderRoot';\nimport { Thumb } from '../Thumb/Thumb';\nimport { Track } from '../Track/Track';\nimport { getChangeValue } from '../utils/get-change-value/get-change-value';\nimport { getClientPosition } from '../utils/get-client-position/get-client-position';\nimport { getFloatingValue } from '../utils/get-floating-value/get-floating-value';\nimport { getPosition } from '../utils/get-position/get-position';\nimport { getPrecision } from '../utils/get-precision/get-precision';\nimport {\n getFirstMarkValue,\n getLastMarkValue,\n getNextMarkValue,\n getPreviousMarkValue,\n} from '../utils/get-step-mark-value/get-step-mark-value';\nimport classes from '../Slider.module.css';\n\nexport type RangeSliderValue = [number, number];\n\nexport interface RangeSliderProps\n extends\n BoxProps,\n StylesApiProps<RangeSliderFactory>,\n ElementProps<'div', 'onChange' | 'value' | 'defaultValue'> {\n /** Key of `theme.colors` or any valid CSS color, controls color of track and thumb @default theme.primaryColor */\n color?: MantineColor;\n\n /** Key of `theme.radius` or any valid CSS value to set `border-radius`, numbers are converted to rem @default 'xl' */\n radius?: MantineRadius;\n\n /** Controls size of the track @default 'md' */\n size?: MantineSize | (string & {}) | number;\n\n /** Minimal possible value @default 0 */\n min?: number;\n\n /** Maximum possible value @default 100 */\n max?: number;\n\n /** Domain of the slider, defines the selectable value range independently of min/max. Useful when you want to display a wider track range (min/max) but restrict actual selection to a subset (domain). @default [min, max] */\n domain?: [number, number];\n\n /** Number by which value will be incremented/decremented with thumb drag and arrows @default 1 */\n step?: number;\n\n /** Number of significant digits after the decimal point */\n precision?: number;\n\n /** Controlled component value */\n value?: RangeSliderValue;\n\n /** Uncontrolled component default value */\n defaultValue?: RangeSliderValue;\n\n /** Called when value changes */\n onChange?: (value: RangeSliderValue) => void;\n\n /** Called when user stops dragging slider or changes value with arrows */\n onChangeEnd?: (value: RangeSliderValue) => void;\n\n /** Hidden input name, use with uncontrolled component */\n name?: string;\n\n /** Marks displayed on the track */\n marks?: SliderMark[];\n\n /** Function to generate label or any react node to render instead, set to null to disable label */\n label?: React.ReactNode | ((value: number) => React.ReactNode);\n\n /** Props passed down to the `Transition` component @default { transition: 'fade', duration: 0 } */\n labelTransitionProps?: TransitionOverride;\n\n /** Determines whether the label should be visible when the slider is not being dragged or hovered @default false */\n labelAlwaysOn?: boolean;\n\n /** Determines whether the label should be displayed when the slider is hovered @default true */\n showLabelOnHover?: boolean;\n\n /** Content rendered inside thumb */\n thumbChildren?: React.ReactNode;\n\n /** Disables slider */\n disabled?: boolean;\n\n /** Thumb `width` and `height`, by default value is computed based on `size` prop */\n thumbSize?: number | string;\n\n /** A transformation function to change the scale of the slider */\n scale?: (value: number) => number;\n\n /** Determines whether track values representation should be inverted @default false */\n inverted?: boolean;\n\n /** Slider orientation @default 'horizontal' */\n orientation?: 'horizontal' | 'vertical';\n\n /** Minimal range interval between the two thumbs. Consider this value relative to the total range (max - min). @default 10 */\n minRange?: number;\n\n /** Maximum range interval @default Infinity */\n maxRange?: number;\n\n /** `aria-label` for both thumbs (overridden by thumbFromLabel/thumbToLabel if provided) */\n thumbLabel?: string;\n\n /** `aria-valuetext` for both thumbs. When a function is provided, it receives the scaled value. */\n thumbValueText?: string | ((value: number) => string);\n\n /** First thumb `aria-label` */\n thumbFromLabel?: string;\n\n /** Second thumb `aria-label` */\n thumbToLabel?: string;\n\n /** Props passed down to the hidden input */\n hiddenInputProps?: React.ComponentProps<'input'>;\n\n /** Determines whether the selection should be only allowed from the given marks array @default false */\n restrictToMarks?: boolean;\n\n /** Props passed down to thumb element based on the thumb index */\n thumbProps?: (index: 0 | 1) => React.ComponentProps<'div'>;\n\n /** Determines whether the other thumb should be pushed by the current thumb dragging when `minRange`/`maxRange` is reached @default true */\n pushOnOverlap?: boolean;\n}\n\nexport type RangeSliderFactory = Factory<{\n props: RangeSliderProps;\n ref: HTMLDivElement;\n stylesNames: SliderStylesNames;\n vars: SliderCssVariables;\n}>;\n\nconst varsResolver = createVarsResolver<RangeSliderFactory>(\n (theme, { size, color, thumbSize, radius }) => ({\n root: {\n '--slider-size': getSize(size, 'slider-size'),\n '--slider-color': color ? getThemeColor(color, theme) : undefined,\n '--slider-radius': radius === undefined ? undefined : getRadius(radius),\n '--slider-thumb-size':\n thumbSize !== undefined ? rem(thumbSize) : 'calc(var(--slider-size) * 2)',\n },\n })\n);\n\nconst defaultProps = {\n min: 0,\n max: 100,\n minRange: 10,\n step: 1,\n marks: [],\n label: (f) => f,\n labelTransitionProps: { transition: 'fade', duration: 0 },\n labelAlwaysOn: false,\n showLabelOnHover: true,\n disabled: false,\n pushOnOverlap: true,\n scale: (v) => v,\n size: 'md',\n maxRange: Infinity,\n} satisfies Partial<RangeSliderProps>;\n\nexport const RangeSlider = factory<RangeSliderFactory>((_props) => {\n const props = useProps('RangeSlider', defaultProps, _props);\n const {\n classNames,\n styles,\n value,\n onChange,\n onChangeEnd,\n size,\n min,\n max,\n domain,\n minRange,\n maxRange,\n step,\n precision: _precision,\n defaultValue,\n name,\n marks,\n label,\n labelTransitionProps,\n labelAlwaysOn,\n thumbFromLabel,\n thumbToLabel,\n thumbValueText,\n showLabelOnHover,\n thumbChildren,\n disabled,\n unstyled,\n scale,\n inverted,\n orientation,\n className,\n style,\n vars,\n hiddenInputProps,\n restrictToMarks,\n thumbProps,\n pushOnOverlap,\n attributes,\n ref,\n ...others\n } = props;\n\n const getStyles = useStyles<RangeSliderFactory>({\n name: 'RangeSlider',\n props,\n classes,\n classNames,\n className,\n styles,\n style,\n attributes,\n vars,\n varsResolver,\n unstyled,\n });\n\n const containerRef = useRef<HTMLDivElement | null>(null);\n const { dir } = useDirection();\n const [focused, setFocused] = useState(-1);\n const [hovered, setHovered] = useState(false);\n const [_value, setValue] = useUncontrolled<RangeSliderValue>({\n value,\n defaultValue,\n finalValue: [min, max],\n onChange,\n });\n const valueRef = useRef(_value);\n const thumbs = useRef<HTMLDivElement[]>([]);\n const root = useRef<HTMLDivElement>(null);\n const thumbIndex = useRef<number | undefined>(undefined);\n const [domainMin, domainMax] = domain || [min!, max!];\n const positions = [\n getPosition({ value: _value[0], min: domainMin, max: domainMax }),\n getPosition({ value: _value[1], min: domainMin, max: domainMax }),\n ];\n\n const precision = _precision ?? getPrecision(step);\n\n const _setValue = (val: RangeSliderValue) => {\n setValue(val);\n valueRef.current = val;\n };\n\n useEffect(\n () => {\n if (Array.isArray(value)) {\n valueRef.current = value;\n }\n },\n Array.isArray(value) ? [value[0], value[1]] : [null, null]\n );\n\n const setRangedValue = (val: number, index: number, triggerChangeEnd: boolean) => {\n if (index === -1) {\n return;\n }\n\n const clone: RangeSliderValue = [...valueRef.current];\n\n if (restrictToMarks && marks) {\n const closest = findClosestNumber(\n val,\n marks.map((m) => m.value)\n );\n\n const current = clone[index];\n clone[index] = closest;\n const otherIndex = index === 0 ? 1 : 0;\n\n const lastMarkValue = getLastMarkValue(marks);\n const firstMarkValue = getFirstMarkValue(marks);\n\n if (closest === lastMarkValue && clone[otherIndex] === lastMarkValue) {\n clone[index] = current;\n } else if (closest === firstMarkValue && clone[otherIndex] === firstMarkValue) {\n clone[index] = current;\n } else if (closest === clone[otherIndex]) {\n if (current > clone[otherIndex]) {\n clone[otherIndex] = getPreviousMarkValue(closest, marks);\n } else {\n clone[otherIndex] = getNextMarkValue(closest, marks);\n }\n }\n } else {\n const clampedVal = clamp(val, min!, max!);\n clone[index] = clampedVal;\n\n if (index === 0) {\n if (clampedVal > clone[1] - (minRange - 0.000000001)) {\n if (pushOnOverlap) {\n clone[1] = Math.min(val + minRange, max);\n } else {\n clone[index] = valueRef.current[index];\n }\n }\n\n if (clampedVal > (max - (minRange - 0.000000001) || min)) {\n clone[index] = valueRef.current[index];\n }\n\n if (clone[1] - val > maxRange) {\n if (pushOnOverlap) {\n clone[1] = val + maxRange;\n } else {\n clone[index] = valueRef.current[index];\n }\n }\n }\n\n if (index === 1) {\n if (clampedVal < clone[0] + minRange) {\n if (pushOnOverlap) {\n clone[0] = Math.max(val - minRange, min);\n } else {\n clone[index] = valueRef.current[index];\n }\n }\n\n if (clampedVal < clone[0] + minRange) {\n clone[index] = valueRef.current[index];\n }\n\n if (clampedVal - clone[0] > maxRange) {\n if (pushOnOverlap) {\n clone[0] = val - maxRange;\n } else {\n clone[index] = valueRef.current[index];\n }\n }\n }\n }\n\n clone[0] = getFloatingValue(clone[0], precision);\n clone[1] = getFloatingValue(clone[1], precision);\n\n if (clone[0] > clone[1]) {\n const temp = clone[0];\n clone[0] = clone[1];\n clone[1] = temp;\n }\n\n _setValue(clone);\n\n if (triggerChangeEnd) {\n onChangeEnd?.(valueRef.current);\n }\n };\n\n const handleChange = (val: number) => {\n if (!disabled && thumbIndex.current !== undefined) {\n const nextValue = getChangeValue({\n value: val,\n min: domainMin,\n max: domainMax,\n step,\n precision,\n });\n setRangedValue(nextValue, thumbIndex.current, false);\n }\n };\n\n const { ref: useMoveRef, active } = useMove(\n ({ x, y }) => handleChange(orientation === 'vertical' ? 1 - y : x),\n { onScrubEnd: () => !disabled && onChangeEnd?.(valueRef.current) },\n dir\n );\n\n function handleThumbMouseDown(index: number) {\n thumbIndex.current = index;\n }\n\n const handleTrackMouseDownCapture = (\n event: React.MouseEvent<HTMLDivElement> | React.TouchEvent<HTMLDivElement>\n ) => {\n if (containerRef.current) {\n containerRef.current.focus();\n const rect = containerRef.current.getBoundingClientRect();\n const changePosition = getClientPosition(event.nativeEvent, orientation);\n\n const changeValue =\n orientation === 'vertical'\n ? getChangeValue({\n value: rect.bottom - changePosition,\n max,\n min,\n step,\n containerWidth: rect.height,\n })\n : getChangeValue({\n value: changePosition - rect.left,\n max,\n min,\n step,\n containerWidth: rect.width,\n });\n\n const nearestHandle =\n Math.abs(_value[0] - changeValue) > Math.abs(_value[1] - changeValue) ? 1 : 0;\n const _nearestHandle =\n orientation === 'vertical'\n ? nearestHandle\n : dir === 'ltr'\n ? nearestHandle\n : nearestHandle === 1\n ? 0\n : 1;\n\n thumbIndex.current = _nearestHandle;\n }\n };\n\n const getFocusedThumbIndex = () => {\n if (focused !== 1 && focused !== 0) {\n setFocused(0);\n return 0;\n }\n\n return focused;\n };\n\n const handleTrackKeydownCapture = (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (!disabled) {\n switch (event.key) {\n case 'ArrowUp': {\n event.preventDefault();\n const focusedIndex = getFocusedThumbIndex();\n thumbs.current[focusedIndex].focus();\n const nextValue =\n restrictToMarks && marks\n ? getNextMarkValue(valueRef.current[focusedIndex], marks)\n : Math.min(Math.max(valueRef.current[focusedIndex] + step, domainMin), domainMax);\n setRangedValue(getFloatingValue(nextValue, precision), focusedIndex, true);\n break;\n }\n\n case 'ArrowRight': {\n event.preventDefault();\n const focusedIndex = getFocusedThumbIndex();\n thumbs.current[focusedIndex].focus();\n\n const nextValue =\n restrictToMarks && marks\n ? (dir === 'rtl' ? getPreviousMarkValue : getNextMarkValue)(\n valueRef.current[focusedIndex],\n marks\n )\n : Math.min(\n Math.max(\n dir === 'rtl'\n ? valueRef.current[focusedIndex] - step\n : valueRef.current[focusedIndex] + step,\n domainMin\n ),\n domainMax\n );\n\n setRangedValue(getFloatingValue(nextValue, precision), focusedIndex, true);\n break;\n }\n\n case 'ArrowDown': {\n event.preventDefault();\n const focusedIndex = getFocusedThumbIndex();\n thumbs.current[focusedIndex].focus();\n const nextValue =\n restrictToMarks && marks\n ? getPreviousMarkValue(valueRef.current[focusedIndex], marks)\n : Math.min(Math.max(valueRef.current[focusedIndex] - step, domainMin), domainMax);\n setRangedValue(getFloatingValue(nextValue, precision), focusedIndex, true);\n break;\n }\n\n case 'ArrowLeft': {\n event.preventDefault();\n const focusedIndex = getFocusedThumbIndex();\n thumbs.current[focusedIndex].focus();\n\n const nextValue =\n restrictToMarks && marks\n ? (dir === 'rtl' ? getNextMarkValue : getPreviousMarkValue)(\n valueRef.current[focusedIndex],\n marks\n )\n : Math.min(\n Math.max(\n dir === 'rtl'\n ? valueRef.current[focusedIndex] + step\n : valueRef.current[focusedIndex] - step,\n domainMin\n ),\n domainMax\n );\n\n setRangedValue(getFloatingValue(nextValue, precision), focusedIndex, true);\n break;\n }\n\n default: {\n break;\n }\n }\n }\n };\n\n const sharedThumbProps = {\n max,\n min,\n size,\n labelTransitionProps,\n labelAlwaysOn,\n orientation,\n onBlur: () => setFocused(-1),\n };\n\n const hasArrayThumbChildren = Array.isArray(thumbChildren);\n\n return (\n <SliderProvider value={{ getStyles }}>\n <SliderRoot\n {...others}\n size={size}\n ref={useMergedRef(ref, root)}\n disabled={disabled}\n orientation={orientation}\n onMouseDownCapture={() => root.current?.focus()}\n onKeyDownCapture={() => {\n if (thumbs.current[0]?.parentElement?.contains(document.activeElement)) {\n return;\n }\n thumbs.current[0]?.focus();\n }}\n >\n <Track\n offset={positions[0]}\n marksOffset={_value[0]}\n filled={positions[1] - positions[0]}\n marks={marks}\n inverted={inverted}\n min={domainMin}\n max={domainMax}\n value={_value[1]}\n disabled={disabled}\n containerProps={{\n ref: useMergedRef(containerRef, useMoveRef) as any,\n onMouseEnter: showLabelOnHover ? () => setHovered(true) : undefined,\n onMouseLeave: showLabelOnHover ? () => setHovered(false) : undefined,\n onTouchStartCapture: handleTrackMouseDownCapture,\n onTouchEndCapture: () => {\n thumbIndex.current = -1;\n },\n onMouseDownCapture: handleTrackMouseDownCapture,\n onMouseUpCapture: () => {\n thumbIndex.current = -1;\n },\n onKeyDownCapture: handleTrackKeydownCapture,\n }}\n >\n <Thumb\n {...sharedThumbProps}\n value={scale(_value[0])}\n position={positions[0]}\n dragging={active}\n label={\n typeof label === 'function'\n ? label(getFloatingValue(scale(_value[0]), precision))\n : label\n }\n ref={(node) => {\n if (node) {\n thumbs.current[0] = node;\n }\n }}\n thumbLabel={thumbFromLabel}\n thumbValueText={thumbValueText}\n onMouseDown={() => handleThumbMouseDown(0)}\n onFocus={() => setFocused(0)}\n showLabelOnHover={showLabelOnHover}\n isHovered={hovered}\n disabled={disabled}\n {...thumbProps?.(0)}\n >\n {hasArrayThumbChildren ? thumbChildren[0] : thumbChildren}\n </Thumb>\n\n <Thumb\n {...sharedThumbProps}\n thumbLabel={thumbToLabel}\n value={scale(_value[1])}\n position={positions[1]}\n dragging={active}\n label={\n typeof label === 'function'\n ? label(getFloatingValue(scale(_value[1]), precision))\n : label\n }\n ref={(node) => {\n if (node) {\n thumbs.current[1] = node;\n }\n }}\n thumbValueText={thumbValueText}\n onMouseDown={() => handleThumbMouseDown(1)}\n onFocus={() => setFocused(1)}\n showLabelOnHover={showLabelOnHover}\n isHovered={hovered}\n disabled={disabled}\n {...thumbProps?.(1)}\n >\n {hasArrayThumbChildren ? thumbChildren[1] : thumbChildren}\n </Thumb>\n </Track>\n\n <input type=\"hidden\" name={`${name}_from`} value={_value[0]} {...hiddenInputProps} />\n <input type=\"hidden\" name={`${name}_to`} value={_value[1]} {...hiddenInputProps} />\n </SliderRoot>\n </SliderProvider>\n );\n});\n\nRangeSlider.classes = classes;\nRangeSlider.varsResolver = varsResolver;\nRangeSlider.displayName = '@mantine/core/RangeSlider';\n\nexport namespace RangeSlider {\n export type Props = RangeSliderProps;\n export type Value = RangeSliderValue;\n export type Factory = RangeSliderFactory;\n export type StylesNames = SliderStylesNames;\n export type CssVariables = SliderCssVariables;\n export type Mark = SliderMark;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"RangeSlider.mjs","names":["classes"],"sources":["../../../../src/components/Slider/RangeSlider/RangeSlider.tsx"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\nimport { clamp, useMergedRef, useMove, useUncontrolled } from '@mantine/hooks';\nimport {\n BoxProps,\n createVarsResolver,\n ElementProps,\n factory,\n Factory,\n findClosestNumber,\n getRadius,\n getSize,\n getThemeColor,\n MantineColor,\n MantineRadius,\n MantineSize,\n rem,\n StylesApiProps,\n useDirection,\n useProps,\n useStyles,\n} from '../../../core';\nimport { TransitionOverride } from '../../Transition';\nimport { SliderCssVariables, SliderProvider, SliderStylesNames } from '../Slider.context';\nimport { SliderMark } from '../SliderMark';\nimport { SliderRoot } from '../SliderRoot/SliderRoot';\nimport { Thumb } from '../Thumb/Thumb';\nimport { Track } from '../Track/Track';\nimport { getChangeValue } from '../utils/get-change-value/get-change-value';\nimport { getClientPosition } from '../utils/get-client-position/get-client-position';\nimport { getFloatingValue } from '../utils/get-floating-value/get-floating-value';\nimport { getPosition } from '../utils/get-position/get-position';\nimport { getPrecision } from '../utils/get-precision/get-precision';\nimport {\n getFirstMarkValue,\n getLastMarkValue,\n getNextMarkValue,\n getPreviousMarkValue,\n} from '../utils/get-step-mark-value/get-step-mark-value';\nimport classes from '../Slider.module.css';\n\nexport type RangeSliderValue = [number, number];\n\nexport interface RangeSliderProps\n extends\n BoxProps,\n StylesApiProps<RangeSliderFactory>,\n ElementProps<'div', 'onChange' | 'value' | 'defaultValue'> {\n /** Key of `theme.colors` or any valid CSS color, controls color of track and thumb @default theme.primaryColor */\n color?: MantineColor;\n\n /** Key of `theme.radius` or any valid CSS value to set `border-radius`, numbers are converted to rem @default 'xl' */\n radius?: MantineRadius;\n\n /** Controls size of the track @default 'md' */\n size?: MantineSize | (string & {}) | number;\n\n /** Minimal possible value @default 0 */\n min?: number;\n\n /** Maximum possible value @default 100 */\n max?: number;\n\n /** Domain of the slider, defines the selectable value range independently of min/max. Useful when you want to display a wider track range (min/max) but restrict actual selection to a subset (domain). @default [min, max] */\n domain?: [number, number];\n\n /** Number by which value will be incremented/decremented with thumb drag and arrows @default 1 */\n step?: number;\n\n /** Number of significant digits after the decimal point */\n precision?: number;\n\n /** Controlled component value */\n value?: RangeSliderValue;\n\n /** Uncontrolled component default value */\n defaultValue?: RangeSliderValue;\n\n /** Called when value changes */\n onChange?: (value: RangeSliderValue) => void;\n\n /** Called when user stops dragging slider or changes value with arrows */\n onChangeEnd?: (value: RangeSliderValue) => void;\n\n /** Hidden input name, use with uncontrolled component */\n name?: string;\n\n /** Marks displayed on the track */\n marks?: SliderMark[];\n\n /** Function to generate label or any react node to render instead, set to null to disable label */\n label?: React.ReactNode | ((value: number) => React.ReactNode);\n\n /** Props passed down to the `Transition` component @default { transition: 'fade', duration: 0 } */\n labelTransitionProps?: TransitionOverride;\n\n /** Determines whether the label should be visible when the slider is not being dragged or hovered @default false */\n labelAlwaysOn?: boolean;\n\n /** Determines whether the label should be displayed when the slider is hovered @default true */\n showLabelOnHover?: boolean;\n\n /** Content rendered inside thumb */\n thumbChildren?: React.ReactNode;\n\n /** Disables slider */\n disabled?: boolean;\n\n /** Thumb `width` and `height`, by default value is computed based on `size` prop */\n thumbSize?: number | string;\n\n /** A transformation function to change the scale of the slider */\n scale?: (value: number) => number;\n\n /** Determines whether track values representation should be inverted @default false */\n inverted?: boolean;\n\n /** Slider orientation @default 'horizontal' */\n orientation?: 'horizontal' | 'vertical';\n\n /** Minimal range interval between the two thumbs. Consider this value relative to the total range (max - min). @default 10 */\n minRange?: number;\n\n /** Maximum range interval @default Infinity */\n maxRange?: number;\n\n /** `aria-label` for both thumbs (overridden by thumbFromLabel/thumbToLabel if provided) */\n thumbLabel?: string;\n\n /** `aria-valuetext` for both thumbs. When a function is provided, it receives the scaled value. */\n thumbValueText?: string | ((value: number) => string);\n\n /** First thumb `aria-label` */\n thumbFromLabel?: string;\n\n /** Second thumb `aria-label` */\n thumbToLabel?: string;\n\n /** Props passed down to the hidden input */\n hiddenInputProps?: React.ComponentProps<'input'>;\n\n /** Determines whether the selection should be only allowed from the given marks array @default false */\n restrictToMarks?: boolean;\n\n /** Props passed down to thumb element based on the thumb index */\n thumbProps?: (index: 0 | 1) => React.ComponentProps<'div'>;\n\n /** Determines whether the other thumb should be pushed by the current thumb dragging when `minRange`/`maxRange` is reached @default true */\n pushOnOverlap?: boolean;\n}\n\nexport type RangeSliderFactory = Factory<{\n props: RangeSliderProps;\n ref: HTMLDivElement;\n stylesNames: SliderStylesNames;\n vars: SliderCssVariables;\n}>;\n\nconst varsResolver = createVarsResolver<RangeSliderFactory>(\n (theme, { size, color, thumbSize, radius }) => ({\n root: {\n '--slider-size': getSize(size, 'slider-size'),\n '--slider-color': color ? getThemeColor(color, theme) : undefined,\n '--slider-radius': radius === undefined ? undefined : getRadius(radius),\n '--slider-thumb-size':\n thumbSize !== undefined ? rem(thumbSize) : 'calc(var(--slider-size) * 2)',\n },\n })\n);\n\nconst defaultProps = {\n min: 0,\n max: 100,\n minRange: 10,\n step: 1,\n marks: [],\n label: (f) => f,\n labelTransitionProps: { transition: 'fade', duration: 0 },\n labelAlwaysOn: false,\n showLabelOnHover: true,\n disabled: false,\n pushOnOverlap: true,\n scale: (v) => v,\n size: 'md',\n maxRange: Infinity,\n} satisfies Partial<RangeSliderProps>;\n\nexport const RangeSlider = factory<RangeSliderFactory>((_props) => {\n const props = useProps('RangeSlider', defaultProps, _props);\n const {\n classNames,\n styles,\n value,\n onChange,\n onChangeEnd,\n size,\n min,\n max,\n domain,\n minRange,\n maxRange,\n step,\n precision: _precision,\n defaultValue,\n name,\n marks,\n label,\n labelTransitionProps,\n labelAlwaysOn,\n thumbFromLabel,\n thumbToLabel,\n thumbValueText,\n showLabelOnHover,\n thumbChildren,\n disabled,\n unstyled,\n scale,\n inverted,\n orientation,\n className,\n style,\n vars,\n hiddenInputProps,\n restrictToMarks,\n thumbProps,\n pushOnOverlap,\n attributes,\n ref,\n ...others\n } = props;\n\n const getStyles = useStyles<RangeSliderFactory>({\n name: 'RangeSlider',\n props,\n classes,\n classNames,\n className,\n styles,\n style,\n attributes,\n vars,\n varsResolver,\n unstyled,\n });\n\n const containerRef = useRef<HTMLDivElement | null>(null);\n const { dir } = useDirection();\n const [focused, setFocused] = useState(-1);\n const [hovered, setHovered] = useState(false);\n const [_value, setValue] = useUncontrolled<RangeSliderValue>({\n value,\n defaultValue,\n finalValue: [min, max],\n onChange,\n });\n const valueRef = useRef(_value);\n const thumbs = useRef<HTMLDivElement[]>([]);\n const root = useRef<HTMLDivElement>(null);\n const thumbIndex = useRef<number | undefined>(undefined);\n const [domainMin, domainMax] = domain || [min!, max!];\n const positions = [\n getPosition({ value: _value[0], min: domainMin, max: domainMax }),\n getPosition({ value: _value[1], min: domainMin, max: domainMax }),\n ];\n\n const precision = _precision ?? getPrecision(step);\n\n const _setValue = (val: RangeSliderValue) => {\n setValue(val);\n valueRef.current = val;\n };\n\n useEffect(\n () => {\n if (Array.isArray(value)) {\n valueRef.current = value;\n }\n },\n Array.isArray(value) ? [value[0], value[1]] : [null, null]\n );\n\n const setRangedValue = (val: number, index: number, triggerChangeEnd: boolean) => {\n if (index === -1) {\n return;\n }\n\n const clone: RangeSliderValue = [...valueRef.current];\n\n if (restrictToMarks && marks) {\n const closest = findClosestNumber(\n val,\n marks.map((m) => m.value)\n );\n\n const current = clone[index];\n clone[index] = closest;\n const otherIndex = index === 0 ? 1 : 0;\n\n const lastMarkValue = getLastMarkValue(marks);\n const firstMarkValue = getFirstMarkValue(marks);\n\n if (closest === lastMarkValue && clone[otherIndex] === lastMarkValue) {\n clone[index] = current;\n } else if (closest === firstMarkValue && clone[otherIndex] === firstMarkValue) {\n clone[index] = current;\n } else if (closest === clone[otherIndex]) {\n if (current > clone[otherIndex]) {\n clone[otherIndex] = getPreviousMarkValue(closest, marks);\n } else {\n clone[otherIndex] = getNextMarkValue(closest, marks);\n }\n }\n } else {\n const clampedVal = clamp(val, min!, max!);\n clone[index] = clampedVal;\n\n if (index === 0) {\n if (clampedVal > clone[1] - (minRange - 0.000000001)) {\n if (pushOnOverlap) {\n clone[1] = Math.min(val + minRange, max);\n } else {\n clone[index] = valueRef.current[index];\n }\n }\n\n if (clampedVal > (max - (minRange - 0.000000001) || min)) {\n clone[index] = valueRef.current[index];\n }\n\n if (clone[1] - val > maxRange) {\n if (pushOnOverlap) {\n clone[1] = val + maxRange;\n } else {\n clone[index] = valueRef.current[index];\n }\n }\n }\n\n if (index === 1) {\n if (clampedVal < clone[0] + minRange) {\n if (pushOnOverlap) {\n clone[0] = Math.max(val - minRange, min);\n } else {\n clone[index] = valueRef.current[index];\n }\n }\n\n if (clampedVal < clone[0] + minRange) {\n clone[index] = valueRef.current[index];\n }\n\n if (clampedVal - clone[0] > maxRange) {\n if (pushOnOverlap) {\n clone[0] = val - maxRange;\n } else {\n clone[index] = valueRef.current[index];\n }\n }\n }\n }\n\n clone[0] = getFloatingValue(clone[0], precision);\n clone[1] = getFloatingValue(clone[1], precision);\n\n if (clone[0] > clone[1]) {\n const temp = clone[0];\n clone[0] = clone[1];\n clone[1] = temp;\n }\n\n _setValue(clone);\n\n if (triggerChangeEnd) {\n onChangeEnd?.(valueRef.current);\n }\n };\n\n const handleChange = (val: number) => {\n if (!disabled && thumbIndex.current !== undefined) {\n const nextValue = getChangeValue({\n value: val,\n min: domainMin,\n max: domainMax,\n step,\n precision,\n });\n setRangedValue(nextValue, thumbIndex.current, false);\n }\n };\n\n const { ref: useMoveRef, active } = useMove(\n ({ x, y }) => handleChange(orientation === 'vertical' ? 1 - y : x),\n { onScrubEnd: () => !disabled && onChangeEnd?.(valueRef.current) },\n dir\n );\n\n function handleThumbMouseDown(index: number) {\n thumbIndex.current = index;\n }\n\n const handleTrackMouseDownCapture = (\n event: React.MouseEvent<HTMLDivElement> | React.TouchEvent<HTMLDivElement>\n ) => {\n if (containerRef.current) {\n containerRef.current.focus();\n const rect = containerRef.current.getBoundingClientRect();\n const changePosition = getClientPosition(event.nativeEvent, orientation);\n\n const changeValue =\n orientation === 'vertical'\n ? getChangeValue({\n value: rect.bottom - changePosition,\n max,\n min,\n step,\n containerWidth: rect.height,\n })\n : getChangeValue({\n value: changePosition - rect.left,\n max,\n min,\n step,\n containerWidth: rect.width,\n });\n\n const nearestHandle =\n Math.abs(_value[0] - changeValue) > Math.abs(_value[1] - changeValue) ? 1 : 0;\n const _nearestHandle =\n orientation === 'vertical'\n ? nearestHandle\n : dir === 'ltr'\n ? nearestHandle\n : nearestHandle === 1\n ? 0\n : 1;\n\n thumbIndex.current = _nearestHandle;\n }\n };\n\n const getFocusedThumbIndex = () => {\n if (focused !== 1 && focused !== 0) {\n setFocused(0);\n return 0;\n }\n\n return focused;\n };\n\n const handleTrackKeydownCapture = (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (!disabled) {\n switch (event.key) {\n case 'ArrowUp': {\n event.preventDefault();\n const focusedIndex = getFocusedThumbIndex();\n thumbs.current[focusedIndex].focus();\n const nextValue =\n restrictToMarks && marks\n ? getNextMarkValue(valueRef.current[focusedIndex], marks)\n : Math.min(Math.max(valueRef.current[focusedIndex] + step, domainMin), domainMax);\n setRangedValue(getFloatingValue(nextValue, precision), focusedIndex, true);\n break;\n }\n\n case 'ArrowRight': {\n event.preventDefault();\n const focusedIndex = getFocusedThumbIndex();\n thumbs.current[focusedIndex].focus();\n\n const nextValue =\n restrictToMarks && marks\n ? (dir === 'rtl' ? getPreviousMarkValue : getNextMarkValue)(\n valueRef.current[focusedIndex],\n marks\n )\n : Math.min(\n Math.max(\n dir === 'rtl'\n ? valueRef.current[focusedIndex] - step\n : valueRef.current[focusedIndex] + step,\n domainMin\n ),\n domainMax\n );\n\n setRangedValue(getFloatingValue(nextValue, precision), focusedIndex, true);\n break;\n }\n\n case 'ArrowDown': {\n event.preventDefault();\n const focusedIndex = getFocusedThumbIndex();\n thumbs.current[focusedIndex].focus();\n const nextValue =\n restrictToMarks && marks\n ? getPreviousMarkValue(valueRef.current[focusedIndex], marks)\n : Math.min(Math.max(valueRef.current[focusedIndex] - step, domainMin), domainMax);\n setRangedValue(getFloatingValue(nextValue, precision), focusedIndex, true);\n break;\n }\n\n case 'ArrowLeft': {\n event.preventDefault();\n const focusedIndex = getFocusedThumbIndex();\n thumbs.current[focusedIndex].focus();\n\n const nextValue =\n restrictToMarks && marks\n ? (dir === 'rtl' ? getNextMarkValue : getPreviousMarkValue)(\n valueRef.current[focusedIndex],\n marks\n )\n : Math.min(\n Math.max(\n dir === 'rtl'\n ? valueRef.current[focusedIndex] + step\n : valueRef.current[focusedIndex] - step,\n domainMin\n ),\n domainMax\n );\n\n setRangedValue(getFloatingValue(nextValue, precision), focusedIndex, true);\n break;\n }\n\n default: {\n break;\n }\n }\n }\n };\n\n const sharedThumbProps = {\n max,\n min,\n size,\n labelTransitionProps,\n labelAlwaysOn,\n orientation,\n onBlur: () => setFocused(-1),\n };\n\n const hasArrayThumbChildren = Array.isArray(thumbChildren);\n\n return (\n <SliderProvider value={{ getStyles }}>\n <SliderRoot\n {...others}\n size={size}\n ref={useMergedRef(ref, root)}\n disabled={disabled}\n orientation={orientation}\n onMouseDownCapture={() => root.current?.focus()}\n onKeyDownCapture={() => {\n if (thumbs.current[0]?.parentElement?.contains(document.activeElement)) {\n return;\n }\n thumbs.current[0]?.focus();\n }}\n >\n <Track\n offset={positions[0]}\n marksOffset={_value[0]}\n filled={positions[1] - positions[0]}\n marks={marks}\n inverted={inverted}\n min={domainMin}\n max={domainMax}\n value={_value[1]}\n disabled={disabled}\n containerProps={{\n ref: useMergedRef(containerRef, useMoveRef) as any,\n onMouseEnter: showLabelOnHover ? () => setHovered(true) : undefined,\n onMouseLeave: showLabelOnHover ? () => setHovered(false) : undefined,\n onTouchStartCapture: handleTrackMouseDownCapture,\n onTouchEndCapture: () => {\n thumbIndex.current = -1;\n },\n onMouseDownCapture: handleTrackMouseDownCapture,\n onMouseUpCapture: () => {\n thumbIndex.current = -1;\n },\n onKeyDownCapture: handleTrackKeydownCapture,\n }}\n >\n <Thumb\n {...sharedThumbProps}\n value={scale(_value[0])}\n position={positions[0]}\n dragging={active}\n label={\n typeof label === 'function'\n ? label(getFloatingValue(scale(_value[0]), precision))\n : label\n }\n ref={(node) => {\n if (node) {\n thumbs.current[0] = node;\n }\n }}\n thumbLabel={thumbFromLabel}\n thumbValueText={thumbValueText}\n onMouseDown={() => handleThumbMouseDown(0)}\n onFocus={() => setFocused(0)}\n showLabelOnHover={showLabelOnHover}\n isHovered={hovered}\n disabled={disabled}\n {...thumbProps?.(0)}\n >\n {hasArrayThumbChildren ? thumbChildren[0] : thumbChildren}\n </Thumb>\n\n <Thumb\n {...sharedThumbProps}\n thumbLabel={thumbToLabel}\n value={scale(_value[1])}\n position={positions[1]}\n dragging={active}\n label={\n typeof label === 'function'\n ? label(getFloatingValue(scale(_value[1]), precision))\n : label\n }\n ref={(node) => {\n if (node) {\n thumbs.current[1] = node;\n }\n }}\n thumbValueText={thumbValueText}\n onMouseDown={() => handleThumbMouseDown(1)}\n onFocus={() => setFocused(1)}\n showLabelOnHover={showLabelOnHover}\n isHovered={hovered}\n disabled={disabled}\n {...thumbProps?.(1)}\n >\n {hasArrayThumbChildren ? thumbChildren[1] : thumbChildren}\n </Thumb>\n </Track>\n\n <input type=\"hidden\" name={`${name}_from`} value={_value[0]} {...hiddenInputProps} />\n <input type=\"hidden\" name={`${name}_to`} value={_value[1]} {...hiddenInputProps} />\n </SliderRoot>\n </SliderProvider>\n );\n});\n\nRangeSlider.classes = classes;\nRangeSlider.varsResolver = varsResolver;\nRangeSlider.displayName = '@mantine/core/RangeSlider';\n\nexport namespace RangeSlider {\n export type Props = RangeSliderProps;\n export type Value = RangeSliderValue;\n export type Factory = RangeSliderFactory;\n export type StylesNames = SliderStylesNames;\n export type CssVariables = SliderCssVariables;\n export type Mark = SliderMark;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AA6JA,MAAM,eAAe,oBAClB,OAAO,EAAE,MAAM,OAAO,WAAW,cAAc,EAC9C,MAAM;CACJ,iBAAiB,QAAQ,MAAM,aAAa;CAC5C,kBAAkB,QAAQ,cAAc,OAAO,KAAK,IAAI,KAAA;CACxD,mBAAmB,WAAW,KAAA,IAAY,KAAA,IAAY,UAAU,MAAM;CACtE,uBACE,cAAc,KAAA,IAAY,IAAI,SAAS,IAAI;AAC/C,EACF,EACF;AAEA,MAAM,eAAe;CACnB,KAAK;CACL,KAAK;CACL,UAAU;CACV,MAAM;CACN,OAAO,CAAC;CACR,QAAQ,MAAM;CACd,sBAAsB;EAAE,YAAY;EAAQ,UAAU;CAAE;CACxD,eAAe;CACf,kBAAkB;CAClB,UAAU;CACV,eAAe;CACf,QAAQ,MAAM;CACd,MAAM;CACN,UAAU;AACZ;AAEA,MAAa,cAAc,SAA6B,WAAW;CACjE,MAAM,QAAQ,SAAS,eAAe,cAAc,MAAM;CAC1D,MAAM,EACJ,YACA,QACA,OACA,UACA,aACA,MACA,KACA,KACA,QACA,UACA,UACA,MACA,WAAW,YACX,cACA,MACA,OACA,OACA,sBACA,eACA,gBACA,cACA,gBACA,kBACA,eACA,UACA,UACA,OACA,UACA,aACA,WACA,OACA,MACA,kBACA,iBACA,YACA,eACA,YACA,KACA,GAAG,WACD;CAEJ,MAAM,YAAY,UAA8B;EAC9C,MAAM;EACN;EACA,SAAA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,CAAC;CAED,MAAM,eAAe,OAA8B,IAAI;CACvD,MAAM,EAAE,QAAQ,aAAa;CAC7B,MAAM,CAAC,SAAS,cAAc,SAAS,EAAE;CACzC,MAAM,CAAC,SAAS,cAAc,SAAS,KAAK;CAC5C,MAAM,CAAC,QAAQ,YAAY,gBAAkC;EAC3D;EACA;EACA,YAAY,CAAC,KAAK,GAAG;EACrB;CACF,CAAC;CACD,MAAM,WAAW,OAAO,MAAM;CAC9B,MAAM,SAAS,OAAyB,CAAC,CAAC;CAC1C,MAAM,OAAO,OAAuB,IAAI;CACxC,MAAM,aAAa,OAA2B,KAAA,CAAS;CACvD,MAAM,CAAC,WAAW,aAAa,UAAU,CAAC,KAAM,GAAI;CACpD,MAAM,YAAY,CAChB,YAAY;EAAE,OAAO,OAAO;EAAI,KAAK;EAAW,KAAK;CAAU,CAAC,GAChE,YAAY;EAAE,OAAO,OAAO;EAAI,KAAK;EAAW,KAAK;CAAU,CAAC,CAClE;CAEA,MAAM,YAAY,cAAc,aAAa,IAAI;CAEjD,MAAM,aAAa,QAA0B;EAC3C,SAAS,GAAG;EACZ,SAAS,UAAU;CACrB;CAEA,gBACQ;EACJ,IAAI,MAAM,QAAQ,KAAK,GACrB,SAAS,UAAU;CAEvB,GACA,MAAM,QAAQ,KAAK,IAAI,CAAC,MAAM,IAAI,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,CAC3D;CAEA,MAAM,kBAAkB,KAAa,OAAe,qBAA8B;EAChF,IAAI,UAAU,IACZ;EAGF,MAAM,QAA0B,CAAC,GAAG,SAAS,OAAO;EAEpD,IAAI,mBAAmB,OAAO;GAC5B,MAAM,UAAU,kBACd,KACA,MAAM,KAAK,MAAM,EAAE,KAAK,CAC1B;GAEA,MAAM,UAAU,MAAM;GACtB,MAAM,SAAS;GACf,MAAM,aAAa,UAAU,IAAI,IAAI;GAErC,MAAM,gBAAgB,iBAAiB,KAAK;GAC5C,MAAM,iBAAiB,kBAAkB,KAAK;GAE9C,IAAI,YAAY,iBAAiB,MAAM,gBAAgB,eACrD,MAAM,SAAS;QACV,IAAI,YAAY,kBAAkB,MAAM,gBAAgB,gBAC7D,MAAM,SAAS;QACV,IAAI,YAAY,MAAM,aAC3B,IAAI,UAAU,MAAM,aAClB,MAAM,cAAc,qBAAqB,SAAS,KAAK;QAEvD,MAAM,cAAc,iBAAiB,SAAS,KAAK;EAGzD,OAAO;GACL,MAAM,aAAa,MAAM,KAAK,KAAM,GAAI;GACxC,MAAM,SAAS;GAEf,IAAI,UAAU,GAAG;IACf,IAAI,aAAa,MAAM,MAAM,WAAW,OACtC,IAAI,eACF,MAAM,KAAK,KAAK,IAAI,MAAM,UAAU,GAAG;SAEvC,MAAM,SAAS,SAAS,QAAQ;IAIpC,IAAI,cAAc,OAAO,WAAW,SAAgB,MAClD,MAAM,SAAS,SAAS,QAAQ;IAGlC,IAAI,MAAM,KAAK,MAAM,UACnB,IAAI,eACF,MAAM,KAAK,MAAM;SAEjB,MAAM,SAAS,SAAS,QAAQ;GAGtC;GAEA,IAAI,UAAU,GAAG;IACf,IAAI,aAAa,MAAM,KAAK,UAC1B,IAAI,eACF,MAAM,KAAK,KAAK,IAAI,MAAM,UAAU,GAAG;SAEvC,MAAM,SAAS,SAAS,QAAQ;IAIpC,IAAI,aAAa,MAAM,KAAK,UAC1B,MAAM,SAAS,SAAS,QAAQ;IAGlC,IAAI,aAAa,MAAM,KAAK,UAC1B,IAAI,eACF,MAAM,KAAK,MAAM;SAEjB,MAAM,SAAS,SAAS,QAAQ;GAGtC;EACF;EAEA,MAAM,KAAK,iBAAiB,MAAM,IAAI,SAAS;EAC/C,MAAM,KAAK,iBAAiB,MAAM,IAAI,SAAS;EAE/C,IAAI,MAAM,KAAK,MAAM,IAAI;GACvB,MAAM,OAAO,MAAM;GACnB,MAAM,KAAK,MAAM;GACjB,MAAM,KAAK;EACb;EAEA,UAAU,KAAK;EAEf,IAAI,kBACF,cAAc,SAAS,OAAO;CAElC;CAEA,MAAM,gBAAgB,QAAgB;EACpC,IAAI,CAAC,YAAY,WAAW,YAAY,KAAA,GAQtC,eAPkB,eAAe;GAC/B,OAAO;GACP,KAAK;GACL,KAAK;GACL;GACA;EACF,CACuB,GAAG,WAAW,SAAS,KAAK;CAEvD;CAEA,MAAM,EAAE,KAAK,YAAY,WAAW,SACjC,EAAE,GAAG,QAAQ,aAAa,gBAAgB,aAAa,IAAI,IAAI,CAAC,GACjE,EAAE,kBAAkB,CAAC,YAAY,cAAc,SAAS,OAAO,EAAE,GACjE,GACF;CAEA,SAAS,qBAAqB,OAAe;EAC3C,WAAW,UAAU;CACvB;CAEA,MAAM,+BACJ,UACG;EACH,IAAI,aAAa,SAAS;GACxB,aAAa,QAAQ,MAAM;GAC3B,MAAM,OAAO,aAAa,QAAQ,sBAAsB;GACxD,MAAM,iBAAiB,kBAAkB,MAAM,aAAa,WAAW;GAEvE,MAAM,cACJ,gBAAgB,aACZ,eAAe;IACb,OAAO,KAAK,SAAS;IACrB;IACA;IACA;IACA,gBAAgB,KAAK;GACvB,CAAC,IACD,eAAe;IACb,OAAO,iBAAiB,KAAK;IAC7B;IACA;IACA;IACA,gBAAgB,KAAK;GACvB,CAAC;GAEP,MAAM,gBACJ,KAAK,IAAI,OAAO,KAAK,WAAW,IAAI,KAAK,IAAI,OAAO,KAAK,WAAW,IAAI,IAAI;GAU9E,WAAW,UART,gBAAgB,aACZ,gBACA,QAAQ,QACN,gBACA,kBAAkB,IAChB,IACA;EAGZ;CACF;CAEA,MAAM,6BAA6B;EACjC,IAAI,YAAY,KAAK,YAAY,GAAG;GAClC,WAAW,CAAC;GACZ,OAAO;EACT;EAEA,OAAO;CACT;CAEA,MAAM,6BAA6B,UAA+C;EAChF,IAAI,CAAC,UACH,QAAQ,MAAM,KAAd;GACE,KAAK,WAAW;IACd,MAAM,eAAe;IACrB,MAAM,eAAe,qBAAqB;IAC1C,OAAO,QAAQ,aAAa,CAAC,MAAM;IAKnC,eAAe,iBAHb,mBAAmB,QACf,iBAAiB,SAAS,QAAQ,eAAe,KAAK,IACtD,KAAK,IAAI,KAAK,IAAI,SAAS,QAAQ,gBAAgB,MAAM,SAAS,GAAG,SAAS,GACzC,SAAS,GAAG,cAAc,IAAI;IACzE;GACF;GAEA,KAAK,cAAc;IACjB,MAAM,eAAe;IACrB,MAAM,eAAe,qBAAqB;IAC1C,OAAO,QAAQ,aAAa,CAAC,MAAM;IAkBnC,eAAe,iBAfb,mBAAmB,SACd,QAAQ,QAAQ,uBAAuB,iBAAA,CACtC,SAAS,QAAQ,eACjB,KACF,IACA,KAAK,IACH,KAAK,IACH,QAAQ,QACJ,SAAS,QAAQ,gBAAgB,OACjC,SAAS,QAAQ,gBAAgB,MACrC,SACF,GACA,SACF,GAEqC,SAAS,GAAG,cAAc,IAAI;IACzE;GACF;GAEA,KAAK,aAAa;IAChB,MAAM,eAAe;IACrB,MAAM,eAAe,qBAAqB;IAC1C,OAAO,QAAQ,aAAa,CAAC,MAAM;IAKnC,eAAe,iBAHb,mBAAmB,QACf,qBAAqB,SAAS,QAAQ,eAAe,KAAK,IAC1D,KAAK,IAAI,KAAK,IAAI,SAAS,QAAQ,gBAAgB,MAAM,SAAS,GAAG,SAAS,GACzC,SAAS,GAAG,cAAc,IAAI;IACzE;GACF;GAEA,KAAK,aAAa;IAChB,MAAM,eAAe;IACrB,MAAM,eAAe,qBAAqB;IAC1C,OAAO,QAAQ,aAAa,CAAC,MAAM;IAkBnC,eAAe,iBAfb,mBAAmB,SACd,QAAQ,QAAQ,mBAAmB,qBAAA,CAClC,SAAS,QAAQ,eACjB,KACF,IACA,KAAK,IACH,KAAK,IACH,QAAQ,QACJ,SAAS,QAAQ,gBAAgB,OACjC,SAAS,QAAQ,gBAAgB,MACrC,SACF,GACA,SACF,GAEqC,SAAS,GAAG,cAAc,IAAI;IACzE;GACF;GAEA,SACE;EAEJ;CAEJ;CAEA,MAAM,mBAAmB;EACvB;EACA;EACA;EACA;EACA;EACA;EACA,cAAc,WAAW,EAAE;CAC7B;CAEA,MAAM,wBAAwB,MAAM,QAAQ,aAAa;CAEzD,OACE,oBAAC,gBAAD;EAAgB,OAAO,EAAE,UAAU;YACjC,qBAAC,YAAD;GACE,GAAI;GACE;GACN,KAAK,aAAa,KAAK,IAAI;GACjB;GACG;GACb,0BAA0B,KAAK,SAAS,MAAM;GAC9C,wBAAwB;IACtB,IAAI,OAAO,QAAQ,EAAE,EAAE,eAAe,SAAS,SAAS,aAAa,GACnE;IAEF,OAAO,QAAQ,EAAE,EAAE,MAAM;GAC3B;aAZF;IAcE,qBAAC,OAAD;KACE,QAAQ,UAAU;KAClB,aAAa,OAAO;KACpB,QAAQ,UAAU,KAAK,UAAU;KAC1B;KACG;KACV,KAAK;KACL,KAAK;KACL,OAAO,OAAO;KACJ;KACV,gBAAgB;MACd,KAAK,aAAa,cAAc,UAAU;MAC1C,cAAc,yBAAyB,WAAW,IAAI,IAAI,KAAA;MAC1D,cAAc,yBAAyB,WAAW,KAAK,IAAI,KAAA;MAC3D,qBAAqB;MACrB,yBAAyB;OACvB,WAAW,UAAU;MACvB;MACA,oBAAoB;MACpB,wBAAwB;OACtB,WAAW,UAAU;MACvB;MACA,kBAAkB;KACpB;eAvBF,CAyBE,oBAAC,OAAD;MACE,GAAI;MACJ,OAAO,MAAM,OAAO,EAAE;MACtB,UAAU,UAAU;MACpB,UAAU;MACV,OACE,OAAO,UAAU,aACb,MAAM,iBAAiB,MAAM,OAAO,EAAE,GAAG,SAAS,CAAC,IACnD;MAEN,MAAM,SAAS;OACb,IAAI,MACF,OAAO,QAAQ,KAAK;MAExB;MACA,YAAY;MACI;MAChB,mBAAmB,qBAAqB,CAAC;MACzC,eAAe,WAAW,CAAC;MACT;MAClB,WAAW;MACD;MACV,GAAI,aAAa,CAAC;gBAEjB,wBAAwB,cAAc,KAAK;KACvC,CAAA,GAEP,oBAAC,OAAD;MACE,GAAI;MACJ,YAAY;MACZ,OAAO,MAAM,OAAO,EAAE;MACtB,UAAU,UAAU;MACpB,UAAU;MACV,OACE,OAAO,UAAU,aACb,MAAM,iBAAiB,MAAM,OAAO,EAAE,GAAG,SAAS,CAAC,IACnD;MAEN,MAAM,SAAS;OACb,IAAI,MACF,OAAO,QAAQ,KAAK;MAExB;MACgB;MAChB,mBAAmB,qBAAqB,CAAC;MACzC,eAAe,WAAW,CAAC;MACT;MAClB,WAAW;MACD;MACV,GAAI,aAAa,CAAC;gBAEjB,wBAAwB,cAAc,KAAK;KACvC,CAAA,CACF;;IAEP,oBAAC,SAAD;KAAO,MAAK;KAAS,MAAM,GAAG,KAAK;KAAQ,OAAO,OAAO;KAAI,GAAI;IAAmB,CAAA;IACpF,oBAAC,SAAD;KAAO,MAAK;KAAS,MAAM,GAAG,KAAK;KAAM,OAAO,OAAO;KAAI,GAAI;IAAmB,CAAA;GACxE;;CACE,CAAA;AAEpB,CAAC;AAED,YAAY,UAAUA;AACtB,YAAY,eAAe;AAC3B,YAAY,cAAc"}
@@ -1 +1 @@
1
- {"version":3,"file":"get-precision.mjs","names":[],"sources":["../../../../../src/components/Slider/utils/get-precision/get-precision.ts"],"sourcesContent":["export function getPrecision(step: number) {\n if (!step) {\n return 0;\n }\n const split = step.toString().split('.');\n return split.length > 1 ? split[1].length : 0;\n}\n"],"mappings":";;AAAA,SAAgB,aAAa,MAAc;CACzC,IAAI,CAAC,MACH,OAAO;CAET,MAAM,QAAQ,KAAK,SAAS,EAAE,MAAM,GAAG;CACvC,OAAO,MAAM,SAAS,IAAI,MAAM,GAAG,SAAS;AAC9C"}
1
+ {"version":3,"file":"get-precision.mjs","names":[],"sources":["../../../../../src/components/Slider/utils/get-precision/get-precision.ts"],"sourcesContent":["export function getPrecision(step: number) {\n if (!step) {\n return 0;\n }\n const split = step.toString().split('.');\n return split.length > 1 ? split[1].length : 0;\n}\n"],"mappings":";;AAAA,SAAgB,aAAa,MAAc;CACzC,IAAI,CAAC,MACH,OAAO;CAET,MAAM,QAAQ,KAAK,SAAS,CAAC,CAAC,MAAM,GAAG;CACvC,OAAO,MAAM,SAAS,IAAI,MAAM,EAAE,CAAC,SAAS;AAC9C"}
@@ -1 +1 @@
1
- {"version":3,"file":"get-step-mark-value.mjs","names":[],"sources":["../../../../../src/components/Slider/utils/get-step-mark-value/get-step-mark-value.ts"],"sourcesContent":["export function getNextMarkValue(\n currentValue: number,\n marks: { value: number; label?: React.ReactNode }[]\n) {\n const sortedMarks = [...marks].sort((a, b) => a.value - b.value);\n const nextMark = sortedMarks.find((mark) => mark.value > currentValue);\n return nextMark ? nextMark.value : currentValue;\n}\n\nexport function getPreviousMarkValue(\n currentValue: number,\n marks: { value: number; label?: React.ReactNode }[]\n) {\n const sortedMarks = [...marks].sort((a, b) => b.value - a.value);\n const previousMark = sortedMarks.find((mark) => mark.value < currentValue);\n return previousMark ? previousMark.value : currentValue;\n}\n\nexport function getFirstMarkValue(marks: { value: number; label?: React.ReactNode }[]) {\n const sortedMarks = [...marks].sort((a, b) => a.value - b.value);\n return sortedMarks.length > 0 ? sortedMarks[0].value : 0;\n}\n\nexport function getLastMarkValue(marks: { value: number; label?: React.ReactNode }[]) {\n const sortedMarks = [...marks].sort((a, b) => a.value - b.value);\n return sortedMarks.length > 0 ? sortedMarks[sortedMarks.length - 1].value : 100;\n}\n"],"mappings":";;AAAA,SAAgB,iBACd,cACA,OACA;CAEA,MAAM,WADc,CAAC,GAAG,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAE,KAC/B,EAAE,MAAM,SAAS,KAAK,QAAQ,YAAY;CACrE,OAAO,WAAW,SAAS,QAAQ;AACrC;AAEA,SAAgB,qBACd,cACA,OACA;CAEA,MAAM,eADc,CAAC,GAAG,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAE,KAC3B,EAAE,MAAM,SAAS,KAAK,QAAQ,YAAY;CACzE,OAAO,eAAe,aAAa,QAAQ;AAC7C;AAEA,SAAgB,kBAAkB,OAAqD;CACrF,MAAM,cAAc,CAAC,GAAG,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAE,KAAK;CAC/D,OAAO,YAAY,SAAS,IAAI,YAAY,GAAG,QAAQ;AACzD;AAEA,SAAgB,iBAAiB,OAAqD;CACpF,MAAM,cAAc,CAAC,GAAG,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAE,KAAK;CAC/D,OAAO,YAAY,SAAS,IAAI,YAAY,YAAY,SAAS,GAAG,QAAQ;AAC9E"}
1
+ {"version":3,"file":"get-step-mark-value.mjs","names":[],"sources":["../../../../../src/components/Slider/utils/get-step-mark-value/get-step-mark-value.ts"],"sourcesContent":["export function getNextMarkValue(\n currentValue: number,\n marks: { value: number; label?: React.ReactNode }[]\n) {\n const sortedMarks = [...marks].sort((a, b) => a.value - b.value);\n const nextMark = sortedMarks.find((mark) => mark.value > currentValue);\n return nextMark ? nextMark.value : currentValue;\n}\n\nexport function getPreviousMarkValue(\n currentValue: number,\n marks: { value: number; label?: React.ReactNode }[]\n) {\n const sortedMarks = [...marks].sort((a, b) => b.value - a.value);\n const previousMark = sortedMarks.find((mark) => mark.value < currentValue);\n return previousMark ? previousMark.value : currentValue;\n}\n\nexport function getFirstMarkValue(marks: { value: number; label?: React.ReactNode }[]) {\n const sortedMarks = [...marks].sort((a, b) => a.value - b.value);\n return sortedMarks.length > 0 ? sortedMarks[0].value : 0;\n}\n\nexport function getLastMarkValue(marks: { value: number; label?: React.ReactNode }[]) {\n const sortedMarks = [...marks].sort((a, b) => a.value - b.value);\n return sortedMarks.length > 0 ? sortedMarks[sortedMarks.length - 1].value : 100;\n}\n"],"mappings":";;AAAA,SAAgB,iBACd,cACA,OACA;CAEA,MAAM,WADc,CAAC,GAAG,KAAK,CAAC,CAAC,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAE,KAC/B,CAAC,CAAC,MAAM,SAAS,KAAK,QAAQ,YAAY;CACrE,OAAO,WAAW,SAAS,QAAQ;AACrC;AAEA,SAAgB,qBACd,cACA,OACA;CAEA,MAAM,eADc,CAAC,GAAG,KAAK,CAAC,CAAC,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAE,KAC3B,CAAC,CAAC,MAAM,SAAS,KAAK,QAAQ,YAAY;CACzE,OAAO,eAAe,aAAa,QAAQ;AAC7C;AAEA,SAAgB,kBAAkB,OAAqD;CACrF,MAAM,cAAc,CAAC,GAAG,KAAK,CAAC,CAAC,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAE,KAAK;CAC/D,OAAO,YAAY,SAAS,IAAI,YAAY,EAAE,CAAC,QAAQ;AACzD;AAEA,SAAgB,iBAAiB,OAAqD;CACpF,MAAM,cAAc,CAAC,GAAG,KAAK,CAAC,CAAC,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAE,KAAK;CAC/D,OAAO,YAAY,SAAS,IAAI,YAAY,YAAY,SAAS,EAAE,CAAC,QAAQ;AAC9E"}
@@ -1 +1 @@
1
- {"version":3,"file":"Splitter.context.mjs","names":[],"sources":["../../../src/components/Splitter/Splitter.context.ts"],"sourcesContent":["import { createSafeContext, GetStylesApi } from '../../core';\nimport type { SplitterFactory } from './Splitter';\n\nexport interface SplitterContextValue {\n getStyles: GetStylesApi<SplitterFactory>;\n sizes: number[];\n collapsed: boolean[];\n orientation: 'horizontal' | 'vertical';\n}\n\nexport const [SplitterProvider, useSplitterContext] = createSafeContext<SplitterContextValue>(\n 'Splitter component was not found in the tree'\n);\n"],"mappings":";;;AAUA,MAAa,CAAC,kBAAkB,sBAAsB,kBACpD,8CACF"}
1
+ {"version":3,"file":"Splitter.context.mjs","names":[],"sources":["../../../src/components/Splitter/Splitter.context.ts"],"sourcesContent":["import type { SplitterPaneSize } from '@mantine/hooks';\nimport { createSafeContext, GetStylesApi } from '../../core';\nimport type { SplitterFactory } from './Splitter';\n\nexport interface SplitterContextValue {\n getStyles: GetStylesApi<SplitterFactory>;\n sizes: SplitterPaneSize[];\n collapsed: boolean[];\n orientation: 'horizontal' | 'vertical';\n getPaneStyle: (index: number) => React.CSSProperties;\n}\n\nexport const [SplitterProvider, useSplitterContext] = createSafeContext<SplitterContextValue>(\n 'Splitter component was not found in the tree'\n);\n"],"mappings":";;;AAYA,MAAa,CAAC,kBAAkB,sBAAsB,kBACpD,8CACF"}
@@ -15,6 +15,25 @@ import { Children, cloneElement, createElement, useImperativeHandle } from "reac
15
15
  import { useMergedRef, useSplitter } from "@mantine/hooks";
16
16
  import { jsx } from "react/jsx-runtime";
17
17
  //#region packages/@mantine/core/src/components/Splitter/Splitter.tsx
18
+ const PX_RE = /^(-?[\d.]+)px$/;
19
+ const REM_RE = /^(-?[\d.]+)rem$/;
20
+ function isFixedPaneSize(size) {
21
+ return typeof size === "string" && (PX_RE.test(size) || REM_RE.test(size));
22
+ }
23
+ function getPaneFlexStyle(size, pixelMode) {
24
+ const magnitude = typeof size === "number" ? size : parseFloat(size);
25
+ if (!pixelMode) return { flexBasis: `${magnitude}%` };
26
+ if (isFixedPaneSize(size)) return {
27
+ flexGrow: 0,
28
+ flexShrink: 1,
29
+ flexBasis: size
30
+ };
31
+ return {
32
+ flexGrow: magnitude,
33
+ flexShrink: 1,
34
+ flexBasis: 0
35
+ };
36
+ }
18
37
  const defaultProps = {
19
38
  orientation: "horizontal",
20
39
  lineSize: 2,
@@ -51,6 +70,7 @@ const Splitter = factory((_props) => {
51
70
  resetOnDoubleClick
52
71
  });
53
72
  useImperativeHandle(splitterRef, () => splitter, [splitter]);
73
+ const getPaneStyle = (index) => getPaneFlexStyle(splitter.sizes[index], splitter.pixelMode);
54
74
  const mergedRef = useMergedRef(ref, splitter.ref);
55
75
  const getStyles = useStyles({
56
76
  name: "Splitter",
@@ -92,7 +112,8 @@ const Splitter = factory((_props) => {
92
112
  getStyles,
93
113
  sizes: splitter.sizes,
94
114
  collapsed: splitter.collapsed,
95
- orientation
115
+ orientation,
116
+ getPaneStyle
96
117
  },
97
118
  children: /* @__PURE__ */ jsx(Box, {
98
119
  ref: mergedRef,
@@ -1 +1 @@
1
- {"version":3,"file":"Splitter.mjs","names":["classes"],"sources":["../../../src/components/Splitter/Splitter.tsx"],"sourcesContent":["import { Children, cloneElement, useImperativeHandle } from 'react';\nimport {\n useMergedRef,\n useSplitter,\n UseSplitterRedistributeFn,\n UseSplitterReturnValue,\n} 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 useDirection,\n useProps,\n useStyles,\n} from '../../core';\nimport { GripHorizontalIcon, GripVerticalIcon } from './GripIcon';\nimport { SplitterProvider } from './Splitter.context';\nimport {\n SplitterPane,\n SplitterPaneProps,\n SplitterPaneStylesNames,\n} from './SplitterPane/SplitterPane';\nimport classes from './Splitter.module.css';\n\nexport type SplitterStylesNames = 'root' | 'handle' | 'thumb' | SplitterPaneStylesNames;\n\nexport type SplitterCssVariables = {\n root: '--splitter-line-size' | '--splitter-handle-color';\n};\n\nexport interface SplitterProps\n extends BoxProps, StylesApiProps<SplitterFactory>, ElementProps<'div'> {\n /** Layout direction @default 'horizontal' */\n orientation?: 'horizontal' | 'vertical';\n\n /** Controlled sizes (percentages summing to 100) */\n sizes?: number[];\n\n /** Called during resize with updated sizes */\n onSizeChange?: (sizes: number[]) => void;\n\n /** Called when drag starts */\n onResizeStart?: (handleIndex: number) => void;\n\n /** Called when drag ends */\n onResizeEnd?: (handleIndex: number, sizes: number[]) => void;\n\n /** Called when a panel collapses or expands */\n onCollapseChange?: (panelIndex: number, collapsed: boolean) => void;\n\n /** How to redistribute space when immediate neighbor is at its min/max */\n redistribute?: 'nearest' | 'equal' | UseSplitterRedistributeFn;\n\n /** Keyboard step size in percentage @default 1 */\n step?: number;\n\n /** Shift+arrow step size in percentage @default 10 */\n shiftStep?: number;\n\n /** CSS value for separator line thickness between panes @default 2 */\n lineSize?: number | string;\n\n /** Key of `theme.colors` or any valid CSS color for the separator line */\n handleColor?: MantineColor;\n\n /** Custom icon displayed in the handle thumb, by default uses grip icon based on orientation */\n handleIcon?: React.ReactNode;\n\n /** Determines whether the thumb with grip icon is displayed on the handle @default true */\n withHandle?: boolean;\n\n /** Restore the two panes adjacent to a handle to their default ratio (preserving their combined size) when the handle is double-clicked @default true */\n resetOnDoubleClick?: boolean;\n\n /** Ref to imperative splitter API (sizes, collapse, expand, etc.) */\n splitterRef?: React.RefObject<UseSplitterReturnValue | null>;\n\n /** Splitter panes */\n children?: React.ReactNode;\n}\n\nexport type SplitterFactory = Factory<{\n props: SplitterProps;\n ref: HTMLDivElement;\n stylesNames: SplitterStylesNames;\n vars: SplitterCssVariables;\n staticComponents: {\n Pane: typeof SplitterPane;\n };\n}>;\n\nconst defaultProps = {\n orientation: 'horizontal',\n lineSize: 2,\n withHandle: true,\n resetOnDoubleClick: true,\n} satisfies Partial<SplitterProps>;\n\nconst varsResolver = createVarsResolver<SplitterFactory>((theme, { lineSize, handleColor }) => ({\n root: {\n '--splitter-line-size': rem(lineSize),\n '--splitter-handle-color': handleColor ? getThemeColor(handleColor, theme) : undefined,\n },\n}));\n\nexport const Splitter = factory<SplitterFactory>((_props) => {\n const props = useProps('Splitter', defaultProps, _props);\n const {\n orientation,\n sizes: controlledSizes,\n onSizeChange,\n onResizeStart,\n onResizeEnd,\n onCollapseChange,\n redistribute,\n step,\n shiftStep,\n lineSize,\n handleColor,\n handleIcon,\n withHandle,\n resetOnDoubleClick,\n splitterRef,\n children,\n className,\n classNames,\n style,\n styles,\n unstyled,\n vars,\n mod,\n attributes,\n ref,\n ...others\n } = props;\n\n const { dir } = useDirection();\n\n const paneChildren = Children.toArray(children) as React.ReactElement<SplitterPaneProps>[];\n\n const panels = paneChildren.map((child) => ({\n defaultSize: child.props.defaultSize,\n min: child.props.min,\n max: child.props.max,\n collapsible: child.props.collapsible,\n collapseThreshold: child.props.collapseThreshold,\n }));\n\n const splitter = useSplitter({\n panels,\n orientation,\n sizes: controlledSizes,\n onSizeChange,\n onResizeStart,\n onResizeEnd,\n onCollapseChange,\n redistribute,\n step,\n shiftStep,\n dir,\n resetOnDoubleClick,\n });\n\n useImperativeHandle(splitterRef, () => splitter, [splitter]);\n\n const mergedRef = useMergedRef(ref, splitter.ref);\n\n const getStyles = useStyles<SplitterFactory>({\n name: 'Splitter',\n classes,\n props,\n className,\n style,\n classNames,\n styles,\n unstyled,\n attributes,\n vars,\n varsResolver,\n });\n\n const defaultIcon = orientation === 'vertical' ? <GripHorizontalIcon /> : <GripVerticalIcon />;\n const thumbIcon = handleIcon !== undefined ? handleIcon : defaultIcon;\n\n const items: React.ReactNode[] = [];\n\n paneChildren.forEach((child, index) => {\n if (index > 0) {\n const handleProps = splitter.getHandleProps({ index: index - 1 });\n const isActive = splitter.activeHandle === index - 1;\n items.push(\n <Box {...getStyles('handle')} key={`handle-${index - 1}`} {...handleProps}>\n {withHandle && (\n <div\n {...getStyles('thumb')}\n data-orientation={orientation}\n data-active={isActive || undefined}\n >\n {thumbIcon}\n </div>\n )}\n </Box>\n );\n }\n\n items.push(\n cloneElement(child, {\n key: `pane-${index}`,\n __index: index,\n })\n );\n });\n\n return (\n <SplitterProvider\n value={{\n getStyles,\n sizes: splitter.sizes,\n collapsed: splitter.collapsed,\n orientation: orientation!,\n }}\n >\n <Box ref={mergedRef} {...getStyles('root')} mod={[{ orientation }, mod]} {...others}>\n {items}\n </Box>\n </SplitterProvider>\n );\n});\n\nSplitter.classes = classes;\nSplitter.varsResolver = varsResolver;\nSplitter.displayName = '@mantine/core/Splitter';\nSplitter.Pane = SplitterPane;\n"],"mappings":";;;;;;;;;;;;;;;;;AAkGA,MAAM,eAAe;CACnB,aAAa;CACb,UAAU;CACV,YAAY;CACZ,oBAAoB;AACtB;AAEA,MAAM,eAAe,oBAAqC,OAAO,EAAE,UAAU,mBAAmB,EAC9F,MAAM;CACJ,wBAAwB,IAAI,QAAQ;CACpC,2BAA2B,cAAc,cAAc,aAAa,KAAK,IAAI,KAAA;AAC/E,EACF,EAAE;AAEF,MAAa,WAAW,SAA0B,WAAW;CAC3D,MAAM,QAAQ,SAAS,YAAY,cAAc,MAAM;CACvD,MAAM,EACJ,aACA,OAAO,iBACP,cACA,eACA,aACA,kBACA,cACA,MACA,WACA,UACA,aACA,YACA,YACA,oBACA,aACA,UACA,WACA,YACA,OACA,QACA,UACA,MACA,KACA,YACA,KACA,GAAG,WACD;CAEJ,MAAM,EAAE,QAAQ,aAAa;CAE7B,MAAM,eAAe,SAAS,QAAQ,QAAQ;CAU9C,MAAM,WAAW,YAAY;EAC3B,QATa,aAAa,KAAK,WAAW;GAC1C,aAAa,MAAM,MAAM;GACzB,KAAK,MAAM,MAAM;GACjB,KAAK,MAAM,MAAM;GACjB,aAAa,MAAM,MAAM;GACzB,mBAAmB,MAAM,MAAM;EACjC,EAGO;EACL;EACA,OAAO;EACP;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,CAAC;CAED,oBAAoB,mBAAmB,UAAU,CAAC,QAAQ,CAAC;CAE3D,MAAM,YAAY,aAAa,KAAK,SAAS,GAAG;CAEhD,MAAM,YAAY,UAA2B;EAC3C,MAAM;EACN,SAAA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,CAAC;CAGD,MAAM,YAAY,eAAe,KAAA,IAAY,aADzB,gBAAgB,aAAa,oBAAC,oBAAD,CAAqB,CAAA,IAAI,oBAAC,kBAAD,CAAmB,CAAA;CAG7F,MAAM,QAA2B,CAAC;CAElC,aAAa,SAAS,OAAO,UAAU;EACrC,IAAI,QAAQ,GAAG;GACb,MAAM,cAAc,SAAS,eAAe,EAAE,OAAO,QAAQ,EAAE,CAAC;GAChE,MAAM,WAAW,SAAS,iBAAiB,QAAQ;GACnD,MAAM,KACJ,8BAAC,KAAD;IAAK,GAAI,UAAU,QAAQ;IAAG,KAAK,UAAU,QAAQ;IAAK,GAAI;GAUzD,GATF,cACC,oBAAC,OAAD;IACE,GAAI,UAAU,OAAO;IACrB,oBAAkB;IAClB,eAAa,YAAY,KAAA;cAExB;GACE,CAAA,CAEJ,CACP;EACF;EAEA,MAAM,KACJ,aAAa,OAAO;GAClB,KAAK,QAAQ;GACb,SAAS;EACX,CAAC,CACH;CACF,CAAC;CAED,OACE,oBAAC,kBAAD;EACE,OAAO;GACL;GACA,OAAO,SAAS;GAChB,WAAW,SAAS;GACP;EACf;YAEA,oBAAC,KAAD;GAAK,KAAK;GAAW,GAAI,UAAU,MAAM;GAAG,KAAK,CAAC,EAAE,YAAY,GAAG,GAAG;GAAG,GAAI;aAC1E;EACE,CAAA;CACW,CAAA;AAEtB,CAAC;AAED,SAAS,UAAUA;AACnB,SAAS,eAAe;AACxB,SAAS,cAAc;AACvB,SAAS,OAAO"}
1
+ {"version":3,"file":"Splitter.mjs","names":["classes"],"sources":["../../../src/components/Splitter/Splitter.tsx"],"sourcesContent":["import { Children, cloneElement, useImperativeHandle } from 'react';\nimport {\n SplitterPaneSize,\n SplitterStep,\n useMergedRef,\n useSplitter,\n UseSplitterRedistributeFn,\n UseSplitterReturnValue,\n} 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 useDirection,\n useProps,\n useStyles,\n} from '../../core';\nimport { GripHorizontalIcon, GripVerticalIcon } from './GripIcon';\nimport { SplitterProvider } from './Splitter.context';\nimport {\n SplitterPane,\n SplitterPaneProps,\n SplitterPaneStylesNames,\n} from './SplitterPane/SplitterPane';\nimport classes from './Splitter.module.css';\n\nconst PX_RE = /^(-?[\\d.]+)px$/;\nconst REM_RE = /^(-?[\\d.]+)rem$/;\n\nfunction isFixedPaneSize(size: SplitterPaneSize): boolean {\n return typeof size === 'string' && (PX_RE.test(size) || REM_RE.test(size));\n}\n\nfunction getPaneFlexStyle(size: SplitterPaneSize, pixelMode: boolean): React.CSSProperties {\n const magnitude = typeof size === 'number' ? size : parseFloat(size);\n\n if (!pixelMode) {\n return { flexBasis: `${magnitude}%` };\n }\n\n if (isFixedPaneSize(size)) {\n return { flexGrow: 0, flexShrink: 1, flexBasis: size as string };\n }\n\n return { flexGrow: magnitude, flexShrink: 1, flexBasis: 0 };\n}\n\nexport type SplitterStylesNames = 'root' | 'handle' | 'thumb' | SplitterPaneStylesNames;\n\nexport type SplitterCssVariables = {\n root: '--splitter-line-size' | '--splitter-handle-color';\n};\n\nexport interface SplitterProps\n extends BoxProps, StylesApiProps<SplitterFactory>, ElementProps<'div'> {\n /** Layout direction @default 'horizontal' */\n orientation?: 'horizontal' | 'vertical';\n\n /** Controlled sizes, each value keeps the unit it was declared in (number/`%` flexible, `px`/`rem` fixed) */\n sizes?: SplitterPaneSize[];\n\n /** Called during resize with updated sizes, each value keeps its declared unit */\n onSizeChange?: (sizes: SplitterPaneSize[]) => void;\n\n /** Called when drag starts */\n onResizeStart?: (handleIndex: number) => void;\n\n /** Called when drag ends */\n onResizeEnd?: (handleIndex: number, sizes: SplitterPaneSize[]) => void;\n\n /** Called when a panel collapses or expands */\n onCollapseChange?: (panelIndex: number, collapsed: boolean) => void;\n\n /** How to redistribute space when immediate neighbor is at its min/max */\n redistribute?: 'nearest' | 'equal' | UseSplitterRedistributeFn;\n\n /** Keyboard step size, a `number`/`%` is a percentage, `px`/`rem` is resolved to pixels @default 1 */\n step?: SplitterStep;\n\n /** Shift+arrow step size, a `number`/`%` is a percentage, `px`/`rem` is resolved to pixels @default 10 */\n shiftStep?: SplitterStep;\n\n /** CSS value for separator line thickness between panes @default 2 */\n lineSize?: number | string;\n\n /** Key of `theme.colors` or any valid CSS color for the separator line */\n handleColor?: MantineColor;\n\n /** Custom icon displayed in the handle thumb, by default uses grip icon based on orientation */\n handleIcon?: React.ReactNode;\n\n /** Determines whether the thumb with grip icon is displayed on the handle @default true */\n withHandle?: boolean;\n\n /** Restore the two panes adjacent to a handle to their default ratio (preserving their combined size) when the handle is double-clicked @default true */\n resetOnDoubleClick?: boolean;\n\n /** Ref to imperative splitter API (sizes, collapse, expand, etc.) */\n splitterRef?: React.RefObject<UseSplitterReturnValue | null>;\n\n /** Splitter panes */\n children?: React.ReactNode;\n}\n\nexport type SplitterFactory = Factory<{\n props: SplitterProps;\n ref: HTMLDivElement;\n stylesNames: SplitterStylesNames;\n vars: SplitterCssVariables;\n staticComponents: {\n Pane: typeof SplitterPane;\n };\n}>;\n\nconst defaultProps = {\n orientation: 'horizontal',\n lineSize: 2,\n withHandle: true,\n resetOnDoubleClick: true,\n} satisfies Partial<SplitterProps>;\n\nconst varsResolver = createVarsResolver<SplitterFactory>((theme, { lineSize, handleColor }) => ({\n root: {\n '--splitter-line-size': rem(lineSize),\n '--splitter-handle-color': handleColor ? getThemeColor(handleColor, theme) : undefined,\n },\n}));\n\nexport const Splitter = factory<SplitterFactory>((_props) => {\n const props = useProps('Splitter', defaultProps, _props);\n const {\n orientation,\n sizes: controlledSizes,\n onSizeChange,\n onResizeStart,\n onResizeEnd,\n onCollapseChange,\n redistribute,\n step,\n shiftStep,\n lineSize,\n handleColor,\n handleIcon,\n withHandle,\n resetOnDoubleClick,\n splitterRef,\n children,\n className,\n classNames,\n style,\n styles,\n unstyled,\n vars,\n mod,\n attributes,\n ref,\n ...others\n } = props;\n\n const { dir } = useDirection();\n\n const paneChildren = Children.toArray(children) as React.ReactElement<SplitterPaneProps>[];\n\n const panels = paneChildren.map((child) => ({\n defaultSize: child.props.defaultSize,\n min: child.props.min,\n max: child.props.max,\n collapsible: child.props.collapsible,\n collapseThreshold: child.props.collapseThreshold,\n }));\n\n const splitter = useSplitter({\n panels,\n orientation,\n sizes: controlledSizes,\n onSizeChange,\n onResizeStart,\n onResizeEnd,\n onCollapseChange,\n redistribute,\n step,\n shiftStep,\n dir,\n resetOnDoubleClick,\n });\n\n useImperativeHandle(splitterRef, () => splitter, [splitter]);\n\n const getPaneStyle = (index: number) =>\n getPaneFlexStyle(splitter.sizes[index], splitter.pixelMode);\n\n const mergedRef = useMergedRef(ref, splitter.ref);\n\n const getStyles = useStyles<SplitterFactory>({\n name: 'Splitter',\n classes,\n props,\n className,\n style,\n classNames,\n styles,\n unstyled,\n attributes,\n vars,\n varsResolver,\n });\n\n const defaultIcon = orientation === 'vertical' ? <GripHorizontalIcon /> : <GripVerticalIcon />;\n const thumbIcon = handleIcon !== undefined ? handleIcon : defaultIcon;\n\n const items: React.ReactNode[] = [];\n\n paneChildren.forEach((child, index) => {\n if (index > 0) {\n const handleProps = splitter.getHandleProps({ index: index - 1 });\n const isActive = splitter.activeHandle === index - 1;\n items.push(\n <Box {...getStyles('handle')} key={`handle-${index - 1}`} {...handleProps}>\n {withHandle && (\n <div\n {...getStyles('thumb')}\n data-orientation={orientation}\n data-active={isActive || undefined}\n >\n {thumbIcon}\n </div>\n )}\n </Box>\n );\n }\n\n items.push(\n cloneElement(child, {\n key: `pane-${index}`,\n __index: index,\n })\n );\n });\n\n return (\n <SplitterProvider\n value={{\n getStyles,\n sizes: splitter.sizes,\n collapsed: splitter.collapsed,\n orientation: orientation!,\n getPaneStyle,\n }}\n >\n <Box ref={mergedRef} {...getStyles('root')} mod={[{ orientation }, mod]} {...others}>\n {items}\n </Box>\n </SplitterProvider>\n );\n});\n\nSplitter.classes = classes;\nSplitter.varsResolver = varsResolver;\nSplitter.displayName = '@mantine/core/Splitter';\nSplitter.Pane = SplitterPane;\n"],"mappings":"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"}
@@ -10,9 +10,8 @@ const SplitterPane = factory((_props) => {
10
10
  const props = useProps("SplitterPane", null, _props);
11
11
  const { className, classNames, style, styles, vars, children, defaultSize, min, max, collapsible, collapseThreshold, __index, mod, ...others } = props;
12
12
  const ctx = useSplitterContext();
13
- const size = ctx.sizes[__index];
14
13
  const isCollapsed = ctx.collapsed[__index];
15
- const sizeStyle = { flexBasis: `${size}%` };
14
+ const sizeStyle = ctx.getPaneStyle(__index);
16
15
  return /* @__PURE__ */ jsx(Box, {
17
16
  ...ctx.getStyles("pane", {
18
17
  className,
@@ -1 +1 @@
1
- {"version":3,"file":"SplitterPane.mjs","names":["classes"],"sources":["../../../../src/components/Splitter/SplitterPane/SplitterPane.tsx"],"sourcesContent":["import {\n Box,\n BoxProps,\n CompoundStylesApiProps,\n ElementProps,\n factory,\n Factory,\n useProps,\n} from '../../../core';\nimport { useSplitterContext } from '../Splitter.context';\nimport classes from '../Splitter.module.css';\n\nexport type SplitterPaneStylesNames = 'pane';\n\nexport interface SplitterPaneProps\n extends BoxProps, CompoundStylesApiProps<SplitterPaneFactory>, ElementProps<'div'> {\n /** Initial size as percentage (0-100). All panes must sum to 100. */\n defaultSize: number;\n\n /** Minimum size percentage @default 0 */\n min?: number;\n\n /** Maximum size percentage @default 100 */\n max?: number;\n\n /** Whether this pane can be collapsed @default false */\n collapsible?: boolean;\n\n /** Size below which the pane snaps to collapsed (percentage), defaults to `min` */\n collapseThreshold?: number;\n\n /** Pane content */\n children?: React.ReactNode;\n\n /** @internal Index set by parent */\n __index?: number;\n}\n\nexport type SplitterPaneFactory = Factory<{\n props: SplitterPaneProps;\n ref: HTMLDivElement;\n stylesNames: SplitterPaneStylesNames;\n compound: true;\n}>;\n\nexport const SplitterPane = factory<SplitterPaneFactory>((_props) => {\n const props = useProps('SplitterPane', null, _props);\n const {\n className,\n classNames,\n style,\n styles,\n vars,\n children,\n defaultSize,\n min,\n max,\n collapsible,\n collapseThreshold,\n __index,\n mod,\n ...others\n } = props;\n\n const ctx = useSplitterContext();\n const size = ctx.sizes[__index!];\n const isCollapsed = ctx.collapsed[__index!];\n\n const sizeStyle = { flexBasis: `${size}%` };\n\n return (\n <Box\n {...ctx.getStyles('pane', {\n className,\n classNames,\n style: [sizeStyle, style],\n styles,\n props,\n })}\n mod={[{ collapsed: isCollapsed || undefined }, mod]}\n {...others}\n >\n {children}\n </Box>\n );\n});\n\nSplitterPane.classes = classes;\nSplitterPane.displayName = '@mantine/core/SplitterPane';\n"],"mappings":";;;;;;;;AA6CA,MAAa,eAAe,SAA8B,WAAW;CACnE,MAAM,QAAQ,SAAS,gBAAgB,MAAM,MAAM;CACnD,MAAM,EACJ,WACA,YACA,OACA,QACA,MACA,UACA,aACA,KACA,KACA,aACA,mBACA,SACA,KACA,GAAG,WACD;CAEJ,MAAM,MAAM,mBAAmB;CAC/B,MAAM,OAAO,IAAI,MAAM;CACvB,MAAM,cAAc,IAAI,UAAU;CAElC,MAAM,YAAY,EAAE,WAAW,GAAG,KAAK,GAAG;CAE1C,OACE,oBAAC,KAAD;EACE,GAAI,IAAI,UAAU,QAAQ;GACxB;GACA;GACA,OAAO,CAAC,WAAW,KAAK;GACxB;GACA;EACF,CAAC;EACD,KAAK,CAAC,EAAE,WAAW,eAAe,KAAA,EAAU,GAAG,GAAG;EAClD,GAAI;EAEH;CACE,CAAA;AAET,CAAC;AAED,aAAa,UAAUA;AACvB,aAAa,cAAc"}
1
+ {"version":3,"file":"SplitterPane.mjs","names":["classes"],"sources":["../../../../src/components/Splitter/SplitterPane/SplitterPane.tsx"],"sourcesContent":["import type { SplitterPaneSize } from '@mantine/hooks';\nimport {\n Box,\n BoxProps,\n CompoundStylesApiProps,\n ElementProps,\n factory,\n Factory,\n useProps,\n} from '../../../core';\nimport { useSplitterContext } from '../Splitter.context';\nimport classes from '../Splitter.module.css';\n\nexport type SplitterPaneStylesNames = 'pane';\n\nexport interface SplitterPaneProps\n extends BoxProps, CompoundStylesApiProps<SplitterPaneFactory>, ElementProps<'div'> {\n /** Initial size, a `number`/`%` is a flexible size (shares leftover space), `px`/`rem` is a fixed size. A bare number is treated as a percentage. */\n defaultSize: SplitterPaneSize;\n\n /** Minimum size in the same units as `defaultSize` @default 0 */\n min?: SplitterPaneSize;\n\n /** Maximum size in the same units as `defaultSize`, no limit by default */\n max?: SplitterPaneSize;\n\n /** Whether this pane can be collapsed @default false */\n collapsible?: boolean;\n\n /** Size below which the pane snaps to collapsed, defaults to `min` */\n collapseThreshold?: SplitterPaneSize;\n\n /** Pane content */\n children?: React.ReactNode;\n\n /** @internal Index set by parent */\n __index?: number;\n}\n\nexport type SplitterPaneFactory = Factory<{\n props: SplitterPaneProps;\n ref: HTMLDivElement;\n stylesNames: SplitterPaneStylesNames;\n compound: true;\n}>;\n\nexport const SplitterPane = factory<SplitterPaneFactory>((_props) => {\n const props = useProps('SplitterPane', null, _props);\n const {\n className,\n classNames,\n style,\n styles,\n vars,\n children,\n defaultSize,\n min,\n max,\n collapsible,\n collapseThreshold,\n __index,\n mod,\n ...others\n } = props;\n\n const ctx = useSplitterContext();\n const isCollapsed = ctx.collapsed[__index!];\n\n const sizeStyle = ctx.getPaneStyle(__index!);\n\n return (\n <Box\n {...ctx.getStyles('pane', {\n className,\n classNames,\n style: [sizeStyle, style],\n styles,\n props,\n })}\n mod={[{ collapsed: isCollapsed || undefined }, mod]}\n {...others}\n >\n {children}\n </Box>\n );\n});\n\nSplitterPane.classes = classes;\nSplitterPane.displayName = '@mantine/core/SplitterPane';\n"],"mappings":";;;;;;;;AA8CA,MAAa,eAAe,SAA8B,WAAW;CACnE,MAAM,QAAQ,SAAS,gBAAgB,MAAM,MAAM;CACnD,MAAM,EACJ,WACA,YACA,OACA,QACA,MACA,UACA,aACA,KACA,KACA,aACA,mBACA,SACA,KACA,GAAG,WACD;CAEJ,MAAM,MAAM,mBAAmB;CAC/B,MAAM,cAAc,IAAI,UAAU;CAElC,MAAM,YAAY,IAAI,aAAa,OAAQ;CAE3C,OACE,oBAAC,KAAD;EACE,GAAI,IAAI,UAAU,QAAQ;GACxB;GACA;GACA,OAAO,CAAC,WAAW,KAAK;GACxB;GACA;EACF,CAAC;EACD,KAAK,CAAC,EAAE,WAAW,eAAe,KAAA,EAAU,GAAG,GAAG;EAClD,GAAI;EAEH;CACE,CAAA;AAET,CAAC;AAED,aAAa,UAAUA;AACvB,aAAa,cAAc"}
@@ -1 +1 @@
1
- {"version":3,"file":"Stack.mjs","names":["classes"],"sources":["../../../src/components/Stack/Stack.tsx"],"sourcesContent":["import {\n Box,\n BoxProps,\n createVarsResolver,\n ElementProps,\n factory,\n Factory,\n getSpacing,\n MantineSpacing,\n StylesApiProps,\n useProps,\n useStyles,\n} from '../../core';\nimport classes from './Stack.module.css';\n\nexport type StackStylesNames = 'root';\nexport type StackCssVariables = {\n root: '--stack-gap' | '--stack-align' | '--stack-justify';\n};\n\nexport interface StackProps extends BoxProps, StylesApiProps<StackFactory>, ElementProps<'div'> {\n /** Key of `theme.spacing` or any valid CSS value to set `gap` property, numbers are converted to rem @default 'md' */\n gap?: MantineSpacing;\n\n /** Controls `align-items` CSS property @default 'stretch' */\n align?: React.CSSProperties['alignItems'];\n\n /** Controls `justify-content` CSS property @default 'flex-start' */\n justify?: React.CSSProperties['justifyContent'];\n}\n\nexport type StackFactory = Factory<{\n props: StackProps;\n ref: HTMLDivElement;\n stylesNames: StackStylesNames;\n vars: StackCssVariables;\n}>;\n\nconst defaultProps = {\n gap: 'md',\n align: 'stretch',\n justify: 'flex-start',\n} satisfies Partial<StackProps>;\n\nconst varsResolver = createVarsResolver<StackFactory>((_, { gap, align, justify }) => ({\n root: {\n '--stack-gap': getSpacing(gap),\n '--stack-align': align,\n '--stack-justify': justify,\n },\n}));\n\nexport const Stack = factory<StackFactory>((_props) => {\n const props = useProps('Stack', defaultProps, _props);\n const {\n classNames,\n className,\n style,\n styles,\n unstyled,\n vars,\n align,\n justify,\n gap,\n variant,\n attributes,\n ...others\n } = props;\n\n const getStyles = useStyles<StackFactory>({\n name: 'Stack',\n props,\n classes,\n className,\n style,\n classNames,\n styles,\n unstyled,\n attributes,\n vars,\n varsResolver,\n });\n\n return <Box {...getStyles('root')} variant={variant} {...others} />;\n});\n\nStack.classes = classes;\nStack.varsResolver = varsResolver;\nStack.displayName = '@mantine/core/Stack';\n\nexport namespace Stack {\n export type Props = StackProps;\n export type StylesNames = StackStylesNames;\n export type CssVariables = StackCssVariables;\n export type Factory = StackFactory;\n}\n"],"mappings":";;;;;;;;;;AAsCA,MAAM,eAAe;CACnB,KAAK;CACL,OAAO;CACP,SAAS;AACX;AAEA,MAAM,eAAe,oBAAkC,GAAG,EAAE,KAAK,OAAO,eAAe,EACrF,MAAM;CACJ,eAAe,WAAW,GAAG;CAC7B,iBAAiB;CACjB,mBAAmB;AACrB,EACF,EAAE;AAEF,MAAa,QAAQ,SAAuB,WAAW;CACrD,MAAM,QAAQ,SAAS,SAAS,cAAc,MAAM;CACpD,MAAM,EACJ,YACA,WACA,OACA,QACA,UACA,MACA,OACA,SACA,KACA,SACA,YACA,GAAG,WACD;CAgBJ,OAAO,oBAAC,KAAD;EAAK,GAdM,UAAwB;GACxC,MAAM;GACN;GACA,SAAA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACF,CAEwB,EAAE,MAAM;EAAY;EAAS,GAAI;CAAS,CAAA;AACpE,CAAC;AAED,MAAM,UAAUA;AAChB,MAAM,eAAe;AACrB,MAAM,cAAc"}
1
+ {"version":3,"file":"Stack.mjs","names":["classes"],"sources":["../../../src/components/Stack/Stack.tsx"],"sourcesContent":["import {\n Box,\n BoxProps,\n createVarsResolver,\n ElementProps,\n factory,\n Factory,\n getSpacing,\n MantineSpacing,\n StylesApiProps,\n useProps,\n useStyles,\n} from '../../core';\nimport classes from './Stack.module.css';\n\nexport type StackStylesNames = 'root';\nexport type StackCssVariables = {\n root: '--stack-gap' | '--stack-align' | '--stack-justify';\n};\n\nexport interface StackProps extends BoxProps, StylesApiProps<StackFactory>, ElementProps<'div'> {\n /** Key of `theme.spacing` or any valid CSS value to set `gap` property, numbers are converted to rem @default 'md' */\n gap?: MantineSpacing;\n\n /** Controls `align-items` CSS property @default 'stretch' */\n align?: React.CSSProperties['alignItems'];\n\n /** Controls `justify-content` CSS property @default 'flex-start' */\n justify?: React.CSSProperties['justifyContent'];\n}\n\nexport type StackFactory = Factory<{\n props: StackProps;\n ref: HTMLDivElement;\n stylesNames: StackStylesNames;\n vars: StackCssVariables;\n}>;\n\nconst defaultProps = {\n gap: 'md',\n align: 'stretch',\n justify: 'flex-start',\n} satisfies Partial<StackProps>;\n\nconst varsResolver = createVarsResolver<StackFactory>((_, { gap, align, justify }) => ({\n root: {\n '--stack-gap': getSpacing(gap),\n '--stack-align': align,\n '--stack-justify': justify,\n },\n}));\n\nexport const Stack = factory<StackFactory>((_props) => {\n const props = useProps('Stack', defaultProps, _props);\n const {\n classNames,\n className,\n style,\n styles,\n unstyled,\n vars,\n align,\n justify,\n gap,\n variant,\n attributes,\n ...others\n } = props;\n\n const getStyles = useStyles<StackFactory>({\n name: 'Stack',\n props,\n classes,\n className,\n style,\n classNames,\n styles,\n unstyled,\n attributes,\n vars,\n varsResolver,\n });\n\n return <Box {...getStyles('root')} variant={variant} {...others} />;\n});\n\nStack.classes = classes;\nStack.varsResolver = varsResolver;\nStack.displayName = '@mantine/core/Stack';\n\nexport namespace Stack {\n export type Props = StackProps;\n export type StylesNames = StackStylesNames;\n export type CssVariables = StackCssVariables;\n export type Factory = StackFactory;\n}\n"],"mappings":";;;;;;;;;;AAsCA,MAAM,eAAe;CACnB,KAAK;CACL,OAAO;CACP,SAAS;AACX;AAEA,MAAM,eAAe,oBAAkC,GAAG,EAAE,KAAK,OAAO,eAAe,EACrF,MAAM;CACJ,eAAe,WAAW,GAAG;CAC7B,iBAAiB;CACjB,mBAAmB;AACrB,EACF,EAAE;AAEF,MAAa,QAAQ,SAAuB,WAAW;CACrD,MAAM,QAAQ,SAAS,SAAS,cAAc,MAAM;CACpD,MAAM,EACJ,YACA,WACA,OACA,QACA,UACA,MACA,OACA,SACA,KACA,SACA,YACA,GAAG,WACD;CAgBJ,OAAO,oBAAC,KAAD;EAAK,GAdM,UAAwB;GACxC,MAAM;GACN;GACA,SAAA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACF,CAEwB,CAAC,CAAC,MAAM;EAAY;EAAS,GAAI;CAAS,CAAA;AACpE,CAAC;AAED,MAAM,UAAUA;AAChB,MAAM,eAAe;AACrB,MAAM,cAAc"}