@mantine/core 9.2.2 → 9.3.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 (851) hide show
  1. package/cjs/components/Accordion/Accordion.cjs +0 -1
  2. package/cjs/components/Accordion/Accordion.cjs.map +1 -1
  3. package/cjs/components/Accordion/AccordionChevron.cjs +0 -1
  4. package/cjs/components/Accordion/AccordionChevron.cjs.map +1 -1
  5. package/cjs/components/Accordion/AccordionControl/AccordionControl.cjs +0 -1
  6. package/cjs/components/Accordion/AccordionControl/AccordionControl.cjs.map +1 -1
  7. package/cjs/components/Accordion/AccordionItem/AccordionItem.cjs +0 -1
  8. package/cjs/components/Accordion/AccordionItem/AccordionItem.cjs.map +1 -1
  9. package/cjs/components/Accordion/AccordionPanel/AccordionPanel.cjs +0 -1
  10. package/cjs/components/Accordion/AccordionPanel/AccordionPanel.cjs.map +1 -1
  11. package/cjs/components/ActionIcon/ActionIcon.cjs +0 -1
  12. package/cjs/components/ActionIcon/ActionIcon.cjs.map +1 -1
  13. package/cjs/components/ActionIcon/ActionIconGroup/ActionIconGroup.cjs +0 -1
  14. package/cjs/components/ActionIcon/ActionIconGroup/ActionIconGroup.cjs.map +1 -1
  15. package/cjs/components/ActionIcon/ActionIconGroupSection/ActionIconGroupSection.cjs +0 -1
  16. package/cjs/components/ActionIcon/ActionIconGroupSection/ActionIconGroupSection.cjs.map +1 -1
  17. package/cjs/components/Affix/Affix.cjs +0 -1
  18. package/cjs/components/Affix/Affix.cjs.map +1 -1
  19. package/cjs/components/Alert/Alert.cjs +0 -1
  20. package/cjs/components/Alert/Alert.cjs.map +1 -1
  21. package/cjs/components/AngleSlider/AngleSlider.cjs +0 -1
  22. package/cjs/components/AngleSlider/AngleSlider.cjs.map +1 -1
  23. package/cjs/components/AppShell/AppShell.cjs +0 -1
  24. package/cjs/components/AppShell/AppShell.cjs.map +1 -1
  25. package/cjs/components/AppShell/AppShellMain/AppShellMain.cjs +0 -1
  26. package/cjs/components/AppShell/AppShellMain/AppShellMain.cjs.map +1 -1
  27. package/cjs/components/AppShell/AppShellMediaStyles/AppShellMediaStyles.cjs +0 -1
  28. package/cjs/components/AppShell/AppShellMediaStyles/AppShellMediaStyles.cjs.map +1 -1
  29. package/cjs/components/AppShell/AppShellSection/AppShellSection.cjs +0 -1
  30. package/cjs/components/AppShell/AppShellSection/AppShellSection.cjs.map +1 -1
  31. package/cjs/components/AppShell/use-resizing/use-resizing.cjs +0 -1
  32. package/cjs/components/AppShell/use-resizing/use-resizing.cjs.map +1 -1
  33. package/cjs/components/AspectRatio/AspectRatio.cjs +0 -1
  34. package/cjs/components/AspectRatio/AspectRatio.cjs.map +1 -1
  35. package/cjs/components/Autocomplete/Autocomplete.cjs +2 -2
  36. package/cjs/components/Autocomplete/Autocomplete.cjs.map +1 -1
  37. package/cjs/components/Avatar/Avatar.cjs +0 -1
  38. package/cjs/components/Avatar/Avatar.cjs.map +1 -1
  39. package/cjs/components/Avatar/AvatarGroup/AvatarGroup.cjs +0 -1
  40. package/cjs/components/Avatar/AvatarGroup/AvatarGroup.cjs.map +1 -1
  41. package/cjs/components/Avatar/AvatarPlaceholderIcon.cjs +0 -1
  42. package/cjs/components/Avatar/AvatarPlaceholderIcon.cjs.map +1 -1
  43. package/cjs/components/BackgroundImage/BackgroundImage.cjs +0 -1
  44. package/cjs/components/BackgroundImage/BackgroundImage.cjs.map +1 -1
  45. package/cjs/components/Badge/Badge.cjs +0 -1
  46. package/cjs/components/Badge/Badge.cjs.map +1 -1
  47. package/cjs/components/Blockquote/Blockquote.cjs +4 -4
  48. package/cjs/components/Blockquote/Blockquote.cjs.map +1 -1
  49. package/cjs/components/Blockquote/Blockquote.module.cjs.map +1 -1
  50. package/cjs/components/Breadcrumbs/Breadcrumbs.cjs +0 -1
  51. package/cjs/components/Breadcrumbs/Breadcrumbs.cjs.map +1 -1
  52. package/cjs/components/Burger/Burger.cjs +0 -1
  53. package/cjs/components/Burger/Burger.cjs.map +1 -1
  54. package/cjs/components/Button/Button.cjs +0 -1
  55. package/cjs/components/Button/Button.cjs.map +1 -1
  56. package/cjs/components/Button/ButtonGroup/ButtonGroup.cjs +0 -1
  57. package/cjs/components/Button/ButtonGroup/ButtonGroup.cjs.map +1 -1
  58. package/cjs/components/Button/ButtonGroupSection/ButtonGroupSection.cjs +0 -1
  59. package/cjs/components/Button/ButtonGroupSection/ButtonGroupSection.cjs.map +1 -1
  60. package/cjs/components/Card/Card.cjs +0 -1
  61. package/cjs/components/Card/Card.cjs.map +1 -1
  62. package/cjs/components/Card/CardSection/CardSection.cjs +0 -1
  63. package/cjs/components/Card/CardSection/CardSection.cjs.map +1 -1
  64. package/cjs/components/Center/Center.cjs +0 -1
  65. package/cjs/components/Center/Center.cjs.map +1 -1
  66. package/cjs/components/Checkbox/CheckIcon.cjs +0 -1
  67. package/cjs/components/Checkbox/CheckIcon.cjs.map +1 -1
  68. package/cjs/components/Checkbox/Checkbox.cjs +0 -1
  69. package/cjs/components/Checkbox/Checkbox.cjs.map +1 -1
  70. package/cjs/components/Checkbox/CheckboxCard/CheckboxCard.cjs +0 -1
  71. package/cjs/components/Checkbox/CheckboxCard/CheckboxCard.cjs.map +1 -1
  72. package/cjs/components/Checkbox/CheckboxGroup/CheckboxGroup.cjs +0 -1
  73. package/cjs/components/Checkbox/CheckboxGroup/CheckboxGroup.cjs.map +1 -1
  74. package/cjs/components/Checkbox/CheckboxIndicator/CheckboxIndicator.cjs +0 -1
  75. package/cjs/components/Checkbox/CheckboxIndicator/CheckboxIndicator.cjs.map +1 -1
  76. package/cjs/components/Chip/Chip.cjs +0 -1
  77. package/cjs/components/Chip/Chip.cjs.map +1 -1
  78. package/cjs/components/Chip/ChipGroup/ChipGroup.cjs +0 -1
  79. package/cjs/components/Chip/ChipGroup/ChipGroup.cjs.map +1 -1
  80. package/cjs/components/CloseButton/CloseButton.cjs +0 -1
  81. package/cjs/components/CloseButton/CloseButton.cjs.map +1 -1
  82. package/cjs/components/Code/Code.cjs +0 -1
  83. package/cjs/components/Code/Code.cjs.map +1 -1
  84. package/cjs/components/Collapse/Collapse.cjs +0 -1
  85. package/cjs/components/Collapse/Collapse.cjs.map +1 -1
  86. package/cjs/components/ColorInput/ColorInput.cjs +0 -1
  87. package/cjs/components/ColorInput/ColorInput.cjs.map +1 -1
  88. package/cjs/components/ColorInput/EyeDropperIcon.cjs +0 -1
  89. package/cjs/components/ColorInput/EyeDropperIcon.cjs.map +1 -1
  90. package/cjs/components/ColorPicker/AlphaSlider/AlphaSlider.cjs +0 -1
  91. package/cjs/components/ColorPicker/AlphaSlider/AlphaSlider.cjs.map +1 -1
  92. package/cjs/components/ColorPicker/ColorPicker.cjs +0 -1
  93. package/cjs/components/ColorPicker/ColorPicker.cjs.map +1 -1
  94. package/cjs/components/ColorPicker/ColorPicker.context.cjs +0 -1
  95. package/cjs/components/ColorPicker/ColorPicker.context.cjs.map +1 -1
  96. package/cjs/components/ColorPicker/ColorSlider/ColorSlider.cjs +0 -1
  97. package/cjs/components/ColorPicker/ColorSlider/ColorSlider.cjs.map +1 -1
  98. package/cjs/components/ColorPicker/HueSlider/HueSlider.cjs +0 -1
  99. package/cjs/components/ColorPicker/HueSlider/HueSlider.cjs.map +1 -1
  100. package/cjs/components/ColorPicker/Saturation/Saturation.cjs +0 -1
  101. package/cjs/components/ColorPicker/Saturation/Saturation.cjs.map +1 -1
  102. package/cjs/components/ColorPicker/Swatches/Swatches.cjs +0 -1
  103. package/cjs/components/ColorPicker/Swatches/Swatches.cjs.map +1 -1
  104. package/cjs/components/ColorPicker/Thumb/Thumb.cjs +0 -1
  105. package/cjs/components/ColorPicker/Thumb/Thumb.cjs.map +1 -1
  106. package/cjs/components/ColorSwatch/ColorSwatch.cjs +0 -1
  107. package/cjs/components/ColorSwatch/ColorSwatch.cjs.map +1 -1
  108. package/cjs/components/Combobox/Combobox.cjs +26 -4
  109. package/cjs/components/Combobox/Combobox.cjs.map +1 -1
  110. package/cjs/components/Combobox/Combobox.context.cjs.map +1 -1
  111. package/cjs/components/Combobox/Combobox.module.cjs.map +1 -1
  112. package/cjs/components/Combobox/ComboboxChevron/ComboboxChevron.cjs +0 -1
  113. package/cjs/components/Combobox/ComboboxChevron/ComboboxChevron.cjs.map +1 -1
  114. package/cjs/components/Combobox/ComboboxClearButton/ComboboxClearButton.cjs +0 -1
  115. package/cjs/components/Combobox/ComboboxClearButton/ComboboxClearButton.cjs.map +1 -1
  116. package/cjs/components/Combobox/ComboboxDropdown/ComboboxDropdown.cjs +1 -1
  117. package/cjs/components/Combobox/ComboboxDropdown/ComboboxDropdown.cjs.map +1 -1
  118. package/cjs/components/Combobox/ComboboxDropdownTarget/ComboboxDropdownTarget.cjs +0 -1
  119. package/cjs/components/Combobox/ComboboxDropdownTarget/ComboboxDropdownTarget.cjs.map +1 -1
  120. package/cjs/components/Combobox/ComboboxEmpty/ComboboxEmpty.cjs +0 -1
  121. package/cjs/components/Combobox/ComboboxEmpty/ComboboxEmpty.cjs.map +1 -1
  122. package/cjs/components/Combobox/ComboboxEventsTarget/ComboboxEventsTarget.cjs +0 -1
  123. package/cjs/components/Combobox/ComboboxEventsTarget/ComboboxEventsTarget.cjs.map +1 -1
  124. package/cjs/components/Combobox/ComboboxFooter/ComboboxFooter.cjs +0 -1
  125. package/cjs/components/Combobox/ComboboxFooter/ComboboxFooter.cjs.map +1 -1
  126. package/cjs/components/Combobox/ComboboxGroup/ComboboxGroup.cjs +0 -1
  127. package/cjs/components/Combobox/ComboboxGroup/ComboboxGroup.cjs.map +1 -1
  128. package/cjs/components/Combobox/ComboboxHeader/ComboboxHeader.cjs +0 -1
  129. package/cjs/components/Combobox/ComboboxHeader/ComboboxHeader.cjs.map +1 -1
  130. package/cjs/components/Combobox/ComboboxHiddenInput/ComboboxHiddenInput.cjs +0 -1
  131. package/cjs/components/Combobox/ComboboxHiddenInput/ComboboxHiddenInput.cjs.map +1 -1
  132. package/cjs/components/Combobox/ComboboxOption/ComboboxOption.cjs +0 -1
  133. package/cjs/components/Combobox/ComboboxOption/ComboboxOption.cjs.map +1 -1
  134. package/cjs/components/Combobox/ComboboxOptions/ComboboxOptions.cjs +0 -1
  135. package/cjs/components/Combobox/ComboboxOptions/ComboboxOptions.cjs.map +1 -1
  136. package/cjs/components/Combobox/ComboboxSearch/ComboboxSearch.cjs +0 -1
  137. package/cjs/components/Combobox/ComboboxSearch/ComboboxSearch.cjs.map +1 -1
  138. package/cjs/components/Combobox/ComboboxTarget/ComboboxTarget.cjs +0 -1
  139. package/cjs/components/Combobox/ComboboxTarget/ComboboxTarget.cjs.map +1 -1
  140. package/cjs/components/Combobox/OptionsDropdown/OptionsDropdown.cjs +4 -2
  141. package/cjs/components/Combobox/OptionsDropdown/OptionsDropdown.cjs.map +1 -1
  142. package/cjs/components/Combobox/use-combobox/use-combobox.cjs +0 -1
  143. package/cjs/components/Combobox/use-combobox/use-combobox.cjs.map +1 -1
  144. package/cjs/components/Combobox/use-combobox/use-virtualized-combobox.cjs +0 -1
  145. package/cjs/components/Combobox/use-combobox/use-virtualized-combobox.cjs.map +1 -1
  146. package/cjs/components/Combobox/use-combobox-target-props/use-combobox-target-props.cjs +0 -1
  147. package/cjs/components/Combobox/use-combobox-target-props/use-combobox-target-props.cjs.map +1 -1
  148. package/cjs/components/Combobox/use-pills-reorder/use-pills-reorder.cjs +0 -1
  149. package/cjs/components/Combobox/use-pills-reorder/use-pills-reorder.cjs.map +1 -1
  150. package/cjs/components/Container/Container.cjs +0 -1
  151. package/cjs/components/Container/Container.cjs.map +1 -1
  152. package/cjs/components/CopyButton/CopyButton.cjs +0 -1
  153. package/cjs/components/CopyButton/CopyButton.cjs.map +1 -1
  154. package/cjs/components/Dialog/Dialog.cjs +0 -1
  155. package/cjs/components/Dialog/Dialog.cjs.map +1 -1
  156. package/cjs/components/Divider/Divider.cjs +0 -1
  157. package/cjs/components/Divider/Divider.cjs.map +1 -1
  158. package/cjs/components/Drawer/Drawer.cjs +0 -1
  159. package/cjs/components/Drawer/Drawer.cjs.map +1 -1
  160. package/cjs/components/Drawer/DrawerBody.cjs +0 -1
  161. package/cjs/components/Drawer/DrawerBody.cjs.map +1 -1
  162. package/cjs/components/Drawer/DrawerCloseButton.cjs +0 -1
  163. package/cjs/components/Drawer/DrawerCloseButton.cjs.map +1 -1
  164. package/cjs/components/Drawer/DrawerContent.cjs +0 -1
  165. package/cjs/components/Drawer/DrawerContent.cjs.map +1 -1
  166. package/cjs/components/Drawer/DrawerHeader.cjs +0 -1
  167. package/cjs/components/Drawer/DrawerHeader.cjs.map +1 -1
  168. package/cjs/components/Drawer/DrawerOverlay.cjs +0 -1
  169. package/cjs/components/Drawer/DrawerOverlay.cjs.map +1 -1
  170. package/cjs/components/Drawer/DrawerRoot.cjs +0 -1
  171. package/cjs/components/Drawer/DrawerRoot.cjs.map +1 -1
  172. package/cjs/components/Drawer/DrawerStack.cjs +0 -1
  173. package/cjs/components/Drawer/DrawerStack.cjs.map +1 -1
  174. package/cjs/components/Drawer/DrawerTitle.cjs +0 -1
  175. package/cjs/components/Drawer/DrawerTitle.cjs.map +1 -1
  176. package/cjs/components/Fieldset/Fieldset.cjs +0 -1
  177. package/cjs/components/Fieldset/Fieldset.cjs.map +1 -1
  178. package/cjs/components/FileInput/FileInput.cjs +0 -1
  179. package/cjs/components/FileInput/FileInput.cjs.map +1 -1
  180. package/cjs/components/Flex/Flex.cjs +0 -1
  181. package/cjs/components/Flex/Flex.cjs.map +1 -1
  182. package/cjs/components/FloatingIndicator/FloatingIndicator.cjs +0 -1
  183. package/cjs/components/FloatingIndicator/FloatingIndicator.cjs.map +1 -1
  184. package/cjs/components/FloatingIndicator/use-floating-indicator.cjs +0 -1
  185. package/cjs/components/FloatingIndicator/use-floating-indicator.cjs.map +1 -1
  186. package/cjs/components/FloatingWindow/FloatingWindow.cjs +0 -1
  187. package/cjs/components/FloatingWindow/FloatingWindow.cjs.map +1 -1
  188. package/cjs/components/FocusTrap/FocusTrap.cjs +0 -1
  189. package/cjs/components/FocusTrap/FocusTrap.cjs.map +1 -1
  190. package/cjs/components/Grid/Grid.cjs +0 -1
  191. package/cjs/components/Grid/Grid.cjs.map +1 -1
  192. package/cjs/components/Grid/GridCol/GridColVariables.cjs +0 -1
  193. package/cjs/components/Grid/GridCol/GridColVariables.cjs.map +1 -1
  194. package/cjs/components/Grid/GridVariables.cjs +0 -1
  195. package/cjs/components/Grid/GridVariables.cjs.map +1 -1
  196. package/cjs/components/Group/Group.cjs +0 -1
  197. package/cjs/components/Group/Group.cjs.map +1 -1
  198. package/cjs/components/Group/filter-falsy-children/filter-falsy-children.cjs +0 -1
  199. package/cjs/components/Group/filter-falsy-children/filter-falsy-children.cjs.map +1 -1
  200. package/cjs/components/Highlight/Highlight.cjs +0 -1
  201. package/cjs/components/Highlight/Highlight.cjs.map +1 -1
  202. package/cjs/components/HoverCard/HoverCard.cjs +0 -1
  203. package/cjs/components/HoverCard/HoverCard.cjs.map +1 -1
  204. package/cjs/components/HoverCard/HoverCardDropdown/HoverCardDropdown.cjs +0 -1
  205. package/cjs/components/HoverCard/HoverCardDropdown/HoverCardDropdown.cjs.map +1 -1
  206. package/cjs/components/HoverCard/HoverCardGroup/HoverCardGroup.cjs +0 -1
  207. package/cjs/components/HoverCard/HoverCardGroup/HoverCardGroup.cjs.map +1 -1
  208. package/cjs/components/HoverCard/HoverCardTarget/HoverCardTarget.cjs +0 -1
  209. package/cjs/components/HoverCard/HoverCardTarget/HoverCardTarget.cjs.map +1 -1
  210. package/cjs/components/HoverCard/use-hover-card.cjs +0 -1
  211. package/cjs/components/HoverCard/use-hover-card.cjs.map +1 -1
  212. package/cjs/components/Image/Image.cjs +0 -1
  213. package/cjs/components/Image/Image.cjs.map +1 -1
  214. package/cjs/components/Indicator/Indicator.cjs +0 -1
  215. package/cjs/components/Indicator/Indicator.cjs.map +1 -1
  216. package/cjs/components/Input/Input.cjs +11 -3
  217. package/cjs/components/Input/Input.cjs.map +1 -1
  218. package/cjs/components/Input/Input.context.cjs +0 -1
  219. package/cjs/components/Input/Input.context.cjs.map +1 -1
  220. package/cjs/components/Input/Input.module.cjs +1 -0
  221. package/cjs/components/Input/Input.module.cjs.map +1 -1
  222. package/cjs/components/Input/InputClearButton/InputClearButton.cjs +0 -1
  223. package/cjs/components/Input/InputClearButton/InputClearButton.cjs.map +1 -1
  224. package/cjs/components/Input/InputClearSection/InputClearSection.cjs +0 -1
  225. package/cjs/components/Input/InputClearSection/InputClearSection.cjs.map +1 -1
  226. package/cjs/components/Input/InputDescription/InputDescription.cjs +0 -1
  227. package/cjs/components/Input/InputDescription/InputDescription.cjs.map +1 -1
  228. package/cjs/components/Input/InputError/InputError.cjs +0 -1
  229. package/cjs/components/Input/InputError/InputError.cjs.map +1 -1
  230. package/cjs/components/Input/InputLabel/InputLabel.cjs +0 -1
  231. package/cjs/components/Input/InputLabel/InputLabel.cjs.map +1 -1
  232. package/cjs/components/Input/InputPlaceholder/InputPlaceholder.cjs +0 -1
  233. package/cjs/components/Input/InputPlaceholder/InputPlaceholder.cjs.map +1 -1
  234. package/cjs/components/Input/InputWrapper/InputWrapper.cjs +0 -1
  235. package/cjs/components/Input/InputWrapper/InputWrapper.cjs.map +1 -1
  236. package/cjs/components/Input/InputWrapper.context.cjs +0 -1
  237. package/cjs/components/Input/InputWrapper.context.cjs.map +1 -1
  238. package/cjs/components/InputBase/InputBase.cjs +0 -1
  239. package/cjs/components/InputBase/InputBase.cjs.map +1 -1
  240. package/cjs/components/JsonInput/JsonInput.cjs +0 -1
  241. package/cjs/components/JsonInput/JsonInput.cjs.map +1 -1
  242. package/cjs/components/Kbd/Kbd.cjs +0 -1
  243. package/cjs/components/Kbd/Kbd.cjs.map +1 -1
  244. package/cjs/components/List/List.cjs +0 -1
  245. package/cjs/components/List/List.cjs.map +1 -1
  246. package/cjs/components/List/ListItem/ListItem.cjs +0 -1
  247. package/cjs/components/List/ListItem/ListItem.cjs.map +1 -1
  248. package/cjs/components/Loader/Loader.cjs +0 -1
  249. package/cjs/components/Loader/Loader.cjs.map +1 -1
  250. package/cjs/components/LoadingOverlay/LoadingOverlay.cjs +0 -1
  251. package/cjs/components/LoadingOverlay/LoadingOverlay.cjs.map +1 -1
  252. package/cjs/components/Mark/Mark.cjs +0 -1
  253. package/cjs/components/Mark/Mark.cjs.map +1 -1
  254. package/cjs/components/Marquee/Marquee.cjs +0 -1
  255. package/cjs/components/Marquee/Marquee.cjs.map +1 -1
  256. package/cjs/components/MaskInput/MaskInput.cjs +0 -1
  257. package/cjs/components/MaskInput/MaskInput.cjs.map +1 -1
  258. package/cjs/components/MaskInput/use-mask-input-props.cjs +0 -1
  259. package/cjs/components/MaskInput/use-mask-input-props.cjs.map +1 -1
  260. package/cjs/components/Menu/Menu.cjs +37 -4
  261. package/cjs/components/Menu/Menu.cjs.map +1 -1
  262. package/cjs/components/Menu/Menu.context.cjs.map +1 -1
  263. package/cjs/components/Menu/Menu.module.cjs +2 -0
  264. package/cjs/components/Menu/Menu.module.cjs.map +1 -1
  265. package/cjs/components/Menu/MenuCheckboxGroup/MenuCheckboxGroup.cjs +30 -0
  266. package/cjs/components/Menu/MenuCheckboxGroup/MenuCheckboxGroup.cjs.map +1 -0
  267. package/cjs/components/Menu/MenuCheckboxGroup/MenuCheckboxGroup.context.cjs +7 -0
  268. package/cjs/components/Menu/MenuCheckboxGroup/MenuCheckboxGroup.context.cjs.map +1 -0
  269. package/cjs/components/Menu/MenuCheckboxItem/MenuCheckboxItem.cjs +52 -0
  270. package/cjs/components/Menu/MenuCheckboxItem/MenuCheckboxItem.cjs.map +1 -0
  271. package/cjs/components/Menu/MenuContextMenu/MenuContextMenu.cjs +27 -0
  272. package/cjs/components/Menu/MenuContextMenu/MenuContextMenu.cjs.map +1 -0
  273. package/cjs/components/Menu/MenuDivider/MenuDivider.cjs +0 -1
  274. package/cjs/components/Menu/MenuDivider/MenuDivider.cjs.map +1 -1
  275. package/cjs/components/Menu/MenuDropdown/MenuDropdown.cjs +9 -2
  276. package/cjs/components/Menu/MenuDropdown/MenuDropdown.cjs.map +1 -1
  277. package/cjs/components/Menu/MenuItem/MenuItem.cjs +18 -2
  278. package/cjs/components/Menu/MenuItem/MenuItem.cjs.map +1 -1
  279. package/cjs/components/Menu/MenuLabel/MenuLabel.cjs +0 -1
  280. package/cjs/components/Menu/MenuLabel/MenuLabel.cjs.map +1 -1
  281. package/cjs/components/Menu/MenuRadioGroup/MenuRadioGroup.cjs +27 -0
  282. package/cjs/components/Menu/MenuRadioGroup/MenuRadioGroup.cjs.map +1 -0
  283. package/cjs/components/Menu/MenuRadioGroup/MenuRadioGroup.context.cjs +7 -0
  284. package/cjs/components/Menu/MenuRadioGroup/MenuRadioGroup.context.cjs.map +1 -0
  285. package/cjs/components/Menu/MenuRadioItem/MenuRadioItem.cjs +46 -0
  286. package/cjs/components/Menu/MenuRadioItem/MenuRadioItem.cjs.map +1 -0
  287. package/cjs/components/Menu/MenuSearch/MenuSearch.cjs +115 -0
  288. package/cjs/components/Menu/MenuSearch/MenuSearch.cjs.map +1 -0
  289. package/cjs/components/Menu/MenuSelectableItem/MenuSelectableItem.cjs +114 -0
  290. package/cjs/components/Menu/MenuSelectableItem/MenuSelectableItem.cjs.map +1 -0
  291. package/cjs/components/Menu/MenuSub/MenuSub.cjs +0 -1
  292. package/cjs/components/Menu/MenuSub/MenuSub.cjs.map +1 -1
  293. package/cjs/components/Menu/MenuSub/MenuSub.context.cjs +0 -1
  294. package/cjs/components/Menu/MenuSub/MenuSub.context.cjs.map +1 -1
  295. package/cjs/components/Menu/MenuSubDropdown/MenuSubDropdown.cjs +13 -2
  296. package/cjs/components/Menu/MenuSubDropdown/MenuSubDropdown.cjs.map +1 -1
  297. package/cjs/components/Menu/MenuSubItem/MenuSubItem.cjs +18 -2
  298. package/cjs/components/Menu/MenuSubItem/MenuSubItem.cjs.map +1 -1
  299. package/cjs/components/Menu/MenuSubTarget/MenuSubTarget.cjs +0 -1
  300. package/cjs/components/Menu/MenuSubTarget/MenuSubTarget.cjs.map +1 -1
  301. package/cjs/components/Menu/MenuTarget/MenuTarget.cjs +0 -1
  302. package/cjs/components/Menu/MenuTarget/MenuTarget.cjs.map +1 -1
  303. package/cjs/components/Menu/use-menu-type-ahead.cjs +72 -0
  304. package/cjs/components/Menu/use-menu-type-ahead.cjs.map +1 -0
  305. package/cjs/components/Modal/Modal.cjs +0 -1
  306. package/cjs/components/Modal/Modal.cjs.map +1 -1
  307. package/cjs/components/Modal/ModalBody.cjs +0 -1
  308. package/cjs/components/Modal/ModalBody.cjs.map +1 -1
  309. package/cjs/components/Modal/ModalCloseButton.cjs +0 -1
  310. package/cjs/components/Modal/ModalCloseButton.cjs.map +1 -1
  311. package/cjs/components/Modal/ModalContent.cjs +0 -1
  312. package/cjs/components/Modal/ModalContent.cjs.map +1 -1
  313. package/cjs/components/Modal/ModalHeader.cjs +0 -1
  314. package/cjs/components/Modal/ModalHeader.cjs.map +1 -1
  315. package/cjs/components/Modal/ModalOverlay.cjs +0 -1
  316. package/cjs/components/Modal/ModalOverlay.cjs.map +1 -1
  317. package/cjs/components/Modal/ModalRoot.cjs +0 -1
  318. package/cjs/components/Modal/ModalRoot.cjs.map +1 -1
  319. package/cjs/components/Modal/ModalStack.cjs +0 -1
  320. package/cjs/components/Modal/ModalStack.cjs.map +1 -1
  321. package/cjs/components/Modal/ModalTitle.cjs +0 -1
  322. package/cjs/components/Modal/ModalTitle.cjs.map +1 -1
  323. package/cjs/components/Modal/use-modals-stack.cjs +0 -1
  324. package/cjs/components/Modal/use-modals-stack.cjs.map +1 -1
  325. package/cjs/components/ModalBase/ModalBase.cjs +0 -1
  326. package/cjs/components/ModalBase/ModalBase.cjs.map +1 -1
  327. package/cjs/components/ModalBase/ModalBaseOverlay.cjs +0 -1
  328. package/cjs/components/ModalBase/ModalBaseOverlay.cjs.map +1 -1
  329. package/cjs/components/ModalBase/NativeScrollArea.cjs +0 -1
  330. package/cjs/components/ModalBase/NativeScrollArea.cjs.map +1 -1
  331. package/cjs/components/ModalBase/use-lock-scroll.cjs +0 -1
  332. package/cjs/components/ModalBase/use-lock-scroll.cjs.map +1 -1
  333. package/cjs/components/ModalBase/use-modal-body-id.cjs +0 -1
  334. package/cjs/components/ModalBase/use-modal-body-id.cjs.map +1 -1
  335. package/cjs/components/ModalBase/use-modal-title-id.cjs +0 -1
  336. package/cjs/components/ModalBase/use-modal-title-id.cjs.map +1 -1
  337. package/cjs/components/ModalBase/use-modal.cjs +0 -1
  338. package/cjs/components/ModalBase/use-modal.cjs.map +1 -1
  339. package/cjs/components/MultiSelect/MultiSelect.cjs +2 -2
  340. package/cjs/components/MultiSelect/MultiSelect.cjs.map +1 -1
  341. package/cjs/components/NativeSelect/NativeSelect.cjs +0 -1
  342. package/cjs/components/NativeSelect/NativeSelect.cjs.map +1 -1
  343. package/cjs/components/NativeSelect/NativeSelectOption.cjs +0 -1
  344. package/cjs/components/NativeSelect/NativeSelectOption.cjs.map +1 -1
  345. package/cjs/components/NavLink/NavLink.cjs +0 -1
  346. package/cjs/components/NavLink/NavLink.cjs.map +1 -1
  347. package/cjs/components/Notification/Notification.cjs +0 -1
  348. package/cjs/components/Notification/Notification.cjs.map +1 -1
  349. package/cjs/components/NumberFormatter/NumberFormatter.cjs +0 -1
  350. package/cjs/components/NumberFormatter/NumberFormatter.cjs.map +1 -1
  351. package/cjs/components/NumberInput/NumberInputChevron.cjs +0 -1
  352. package/cjs/components/NumberInput/NumberInputChevron.cjs.map +1 -1
  353. package/cjs/components/OverflowList/OverflowList.cjs +68 -10
  354. package/cjs/components/OverflowList/OverflowList.cjs.map +1 -1
  355. package/cjs/components/OverflowList/use-dimensions.cjs +0 -1
  356. package/cjs/components/OverflowList/use-dimensions.cjs.map +1 -1
  357. package/cjs/components/Overlay/Overlay.cjs +0 -1
  358. package/cjs/components/Overlay/Overlay.cjs.map +1 -1
  359. package/cjs/components/Pagination/Pagination.cjs +14 -3
  360. package/cjs/components/Pagination/Pagination.cjs.map +1 -1
  361. package/cjs/components/Pagination/Pagination.context.cjs.map +1 -1
  362. package/cjs/components/Pagination/Pagination.icons.cjs +0 -1
  363. package/cjs/components/Pagination/Pagination.icons.cjs.map +1 -1
  364. package/cjs/components/Pagination/Pagination.module.cjs +3 -1
  365. package/cjs/components/Pagination/Pagination.module.cjs.map +1 -1
  366. package/cjs/components/Pagination/PaginationControl/PaginationControl.cjs +0 -1
  367. package/cjs/components/Pagination/PaginationControl/PaginationControl.cjs.map +1 -1
  368. package/cjs/components/Pagination/PaginationDots/PaginationDots.cjs +0 -1
  369. package/cjs/components/Pagination/PaginationDots/PaginationDots.cjs.map +1 -1
  370. package/cjs/components/Pagination/PaginationEdges/PaginationEdges.cjs +0 -1
  371. package/cjs/components/Pagination/PaginationEdges/PaginationEdges.cjs.map +1 -1
  372. package/cjs/components/Pagination/PaginationItems/PaginationItems.cjs +0 -1
  373. package/cjs/components/Pagination/PaginationItems/PaginationItems.cjs.map +1 -1
  374. package/cjs/components/Pagination/PaginationLabel/PaginationLabel.cjs +32 -0
  375. package/cjs/components/Pagination/PaginationLabel/PaginationLabel.cjs.map +1 -0
  376. package/cjs/components/Pagination/PaginationRoot/PaginationRoot.cjs +3 -2
  377. package/cjs/components/Pagination/PaginationRoot/PaginationRoot.cjs.map +1 -1
  378. package/cjs/components/Paper/Paper.cjs +0 -1
  379. package/cjs/components/Paper/Paper.cjs.map +1 -1
  380. package/cjs/components/PasswordInput/PasswordToggleIcon.cjs +0 -1
  381. package/cjs/components/PasswordInput/PasswordToggleIcon.cjs.map +1 -1
  382. package/cjs/components/Pill/Pill.cjs +0 -1
  383. package/cjs/components/Pill/Pill.cjs.map +1 -1
  384. package/cjs/components/Pill/PillGroup/PillGroup.cjs +0 -1
  385. package/cjs/components/Pill/PillGroup/PillGroup.cjs.map +1 -1
  386. package/cjs/components/PillsInput/PillsInput.cjs +0 -1
  387. package/cjs/components/PillsInput/PillsInput.cjs.map +1 -1
  388. package/cjs/components/PillsInput/PillsInput.context.cjs +0 -1
  389. package/cjs/components/PillsInput/PillsInput.context.cjs.map +1 -1
  390. package/cjs/components/PillsInput/PillsInputField/PillsInputField.cjs +0 -1
  391. package/cjs/components/PillsInput/PillsInputField/PillsInputField.cjs.map +1 -1
  392. package/cjs/components/PinInput/PinInput.cjs +0 -1
  393. package/cjs/components/PinInput/PinInput.cjs.map +1 -1
  394. package/cjs/components/Popover/Popover.cjs +5 -10
  395. package/cjs/components/Popover/Popover.cjs.map +1 -1
  396. package/cjs/components/Popover/PopoverContextMenu/PopoverContextMenu.cjs +27 -0
  397. package/cjs/components/Popover/PopoverContextMenu/PopoverContextMenu.cjs.map +1 -0
  398. package/cjs/components/Popover/PopoverDropdown/PopoverDropdown.cjs +8 -1
  399. package/cjs/components/Popover/PopoverDropdown/PopoverDropdown.cjs.map +1 -1
  400. package/cjs/components/Popover/use-popover.cjs +52 -20
  401. package/cjs/components/Popover/use-popover.cjs.map +1 -1
  402. package/cjs/components/Portal/OptionalPortal.cjs +0 -1
  403. package/cjs/components/Portal/OptionalPortal.cjs.map +1 -1
  404. package/cjs/components/Portal/Portal.cjs +0 -1
  405. package/cjs/components/Portal/Portal.cjs.map +1 -1
  406. package/cjs/components/Progress/Progress.cjs +0 -1
  407. package/cjs/components/Progress/Progress.cjs.map +1 -1
  408. package/cjs/components/Progress/ProgressLabel/ProgressLabel.cjs +0 -1
  409. package/cjs/components/Progress/ProgressLabel/ProgressLabel.cjs.map +1 -1
  410. package/cjs/components/Progress/ProgressRoot/ProgressRoot.cjs +0 -1
  411. package/cjs/components/Progress/ProgressRoot/ProgressRoot.cjs.map +1 -1
  412. package/cjs/components/Progress/ProgressSection/ProgressSection.cjs +0 -1
  413. package/cjs/components/Progress/ProgressSection/ProgressSection.cjs.map +1 -1
  414. package/cjs/components/Radio/Radio.cjs +1 -2
  415. package/cjs/components/Radio/Radio.cjs.map +1 -1
  416. package/cjs/components/Radio/RadioCard/RadioCard.cjs +0 -1
  417. package/cjs/components/Radio/RadioCard/RadioCard.cjs.map +1 -1
  418. package/cjs/components/Radio/RadioGroup/RadioGroup.cjs +0 -1
  419. package/cjs/components/Radio/RadioGroup/RadioGroup.cjs.map +1 -1
  420. package/cjs/components/Radio/RadioIcon.cjs +0 -1
  421. package/cjs/components/Radio/RadioIcon.cjs.map +1 -1
  422. package/cjs/components/Radio/RadioIndicator/RadioIndicator.cjs +2 -3
  423. package/cjs/components/Radio/RadioIndicator/RadioIndicator.cjs.map +1 -1
  424. package/cjs/components/Rating/Rating.cjs +0 -1
  425. package/cjs/components/Rating/Rating.cjs.map +1 -1
  426. package/cjs/components/Rating/RatingItem/RatingItem.cjs +0 -1
  427. package/cjs/components/Rating/RatingItem/RatingItem.cjs.map +1 -1
  428. package/cjs/components/Rating/StarSymbol/StarIcon.cjs +0 -1
  429. package/cjs/components/Rating/StarSymbol/StarIcon.cjs.map +1 -1
  430. package/cjs/components/Rating/StarSymbol/StarSymbol.cjs +0 -1
  431. package/cjs/components/Rating/StarSymbol/StarSymbol.cjs.map +1 -1
  432. package/cjs/components/RingProgress/Curve/Curve.cjs +0 -1
  433. package/cjs/components/RingProgress/Curve/Curve.cjs.map +1 -1
  434. package/cjs/components/RingProgress/RingProgress.cjs +0 -1
  435. package/cjs/components/RingProgress/RingProgress.cjs.map +1 -1
  436. package/cjs/components/RollingNumber/DigitColumn.cjs +0 -1
  437. package/cjs/components/RollingNumber/DigitColumn.cjs.map +1 -1
  438. package/cjs/components/RollingNumber/RollingNumber.cjs +0 -1
  439. package/cjs/components/RollingNumber/RollingNumber.cjs.map +1 -1
  440. package/cjs/components/ScrollArea/ScrollArea.cjs +0 -1
  441. package/cjs/components/ScrollArea/ScrollArea.cjs.map +1 -1
  442. package/cjs/components/ScrollArea/ScrollAreaCorner/ScrollAreaCorner.cjs +0 -1
  443. package/cjs/components/ScrollArea/ScrollAreaCorner/ScrollAreaCorner.cjs.map +1 -1
  444. package/cjs/components/ScrollArea/ScrollAreaRoot/ScrollAreaRoot.cjs +0 -1
  445. package/cjs/components/ScrollArea/ScrollAreaRoot/ScrollAreaRoot.cjs.map +1 -1
  446. package/cjs/components/ScrollArea/ScrollAreaScrollbar/ScrollAreaScrollbar.cjs +0 -1
  447. package/cjs/components/ScrollArea/ScrollAreaScrollbar/ScrollAreaScrollbar.cjs.map +1 -1
  448. package/cjs/components/ScrollArea/ScrollAreaScrollbar/ScrollAreaScrollbarAuto.cjs +0 -1
  449. package/cjs/components/ScrollArea/ScrollAreaScrollbar/ScrollAreaScrollbarAuto.cjs.map +1 -1
  450. package/cjs/components/ScrollArea/ScrollAreaScrollbar/ScrollAreaScrollbarHover.cjs +0 -1
  451. package/cjs/components/ScrollArea/ScrollAreaScrollbar/ScrollAreaScrollbarHover.cjs.map +1 -1
  452. package/cjs/components/ScrollArea/ScrollAreaScrollbar/ScrollAreaScrollbarScroll.cjs +0 -1
  453. package/cjs/components/ScrollArea/ScrollAreaScrollbar/ScrollAreaScrollbarScroll.cjs.map +1 -1
  454. package/cjs/components/ScrollArea/ScrollAreaScrollbar/ScrollAreaScrollbarVisible.cjs +0 -1
  455. package/cjs/components/ScrollArea/ScrollAreaScrollbar/ScrollAreaScrollbarVisible.cjs.map +1 -1
  456. package/cjs/components/ScrollArea/ScrollAreaScrollbar/Scrollbar.cjs +0 -1
  457. package/cjs/components/ScrollArea/ScrollAreaScrollbar/Scrollbar.cjs.map +1 -1
  458. package/cjs/components/ScrollArea/ScrollAreaScrollbar/ScrollbarX.cjs +0 -1
  459. package/cjs/components/ScrollArea/ScrollAreaScrollbar/ScrollbarX.cjs.map +1 -1
  460. package/cjs/components/ScrollArea/ScrollAreaScrollbar/ScrollbarY.cjs +0 -1
  461. package/cjs/components/ScrollArea/ScrollAreaScrollbar/ScrollbarY.cjs.map +1 -1
  462. package/cjs/components/ScrollArea/ScrollAreaThumb/ScrollAreaThumb.cjs +0 -1
  463. package/cjs/components/ScrollArea/ScrollAreaThumb/ScrollAreaThumb.cjs.map +1 -1
  464. package/cjs/components/ScrollArea/ScrollAreaViewport/ScrollAreaViewport.cjs +0 -1
  465. package/cjs/components/ScrollArea/ScrollAreaViewport/ScrollAreaViewport.cjs.map +1 -1
  466. package/cjs/components/ScrollArea/use-resize-observer.cjs +0 -1
  467. package/cjs/components/ScrollArea/use-resize-observer.cjs.map +1 -1
  468. package/cjs/components/Scroller/Scroller.cjs +0 -1
  469. package/cjs/components/Scroller/Scroller.cjs.map +1 -1
  470. package/cjs/components/SegmentedControl/SegmentedControl.cjs +0 -1
  471. package/cjs/components/SegmentedControl/SegmentedControl.cjs.map +1 -1
  472. package/cjs/components/Select/Select.cjs +2 -2
  473. package/cjs/components/Select/Select.cjs.map +1 -1
  474. package/cjs/components/SemiCircleProgress/SemiCircleProgress.cjs +0 -1
  475. package/cjs/components/SemiCircleProgress/SemiCircleProgress.cjs.map +1 -1
  476. package/cjs/components/SimpleGrid/SimpleGrid.cjs +0 -1
  477. package/cjs/components/SimpleGrid/SimpleGrid.cjs.map +1 -1
  478. package/cjs/components/SimpleGrid/SimpleGridVariables.cjs +0 -1
  479. package/cjs/components/SimpleGrid/SimpleGridVariables.cjs.map +1 -1
  480. package/cjs/components/Skeleton/Skeleton.cjs +0 -1
  481. package/cjs/components/Skeleton/Skeleton.cjs.map +1 -1
  482. package/cjs/components/Slider/Marks/Marks.cjs +0 -1
  483. package/cjs/components/Slider/Marks/Marks.cjs.map +1 -1
  484. package/cjs/components/Slider/RangeSlider/RangeSlider.cjs +0 -1
  485. package/cjs/components/Slider/RangeSlider/RangeSlider.cjs.map +1 -1
  486. package/cjs/components/Slider/Slider/Slider.cjs +0 -1
  487. package/cjs/components/Slider/Slider/Slider.cjs.map +1 -1
  488. package/cjs/components/Slider/SliderRoot/SliderRoot.cjs +0 -1
  489. package/cjs/components/Slider/SliderRoot/SliderRoot.cjs.map +1 -1
  490. package/cjs/components/Slider/Thumb/Thumb.cjs +0 -1
  491. package/cjs/components/Slider/Thumb/Thumb.cjs.map +1 -1
  492. package/cjs/components/Slider/Track/Track.cjs +0 -1
  493. package/cjs/components/Slider/Track/Track.cjs.map +1 -1
  494. package/cjs/components/Space/Space.cjs +0 -1
  495. package/cjs/components/Space/Space.cjs.map +1 -1
  496. package/cjs/components/Splitter/GripIcon.cjs +55 -0
  497. package/cjs/components/Splitter/GripIcon.cjs.map +1 -0
  498. package/cjs/components/Splitter/Splitter.cjs +111 -0
  499. package/cjs/components/Splitter/Splitter.cjs.map +1 -0
  500. package/cjs/components/Splitter/Splitter.context.cjs +8 -0
  501. package/cjs/components/Splitter/Splitter.context.cjs.map +1 -0
  502. package/cjs/components/Splitter/Splitter.module.cjs +12 -0
  503. package/cjs/components/Splitter/Splitter.module.cjs.map +1 -0
  504. package/cjs/components/Splitter/SplitterPane/SplitterPane.cjs +34 -0
  505. package/cjs/components/Splitter/SplitterPane/SplitterPane.cjs.map +1 -0
  506. package/cjs/components/Spoiler/Spoiler.cjs +0 -1
  507. package/cjs/components/Spoiler/Spoiler.cjs.map +1 -1
  508. package/cjs/components/Stack/Stack.cjs +0 -1
  509. package/cjs/components/Stack/Stack.cjs.map +1 -1
  510. package/cjs/components/Stepper/Stepper.cjs +0 -1
  511. package/cjs/components/Stepper/Stepper.cjs.map +1 -1
  512. package/cjs/components/Stepper/Stepper.module.cjs.map +1 -1
  513. package/cjs/components/Stepper/StepperStep/StepperStep.cjs +0 -1
  514. package/cjs/components/Stepper/StepperStep/StepperStep.cjs.map +1 -1
  515. package/cjs/components/Switch/Switch.cjs +0 -1
  516. package/cjs/components/Switch/Switch.cjs.map +1 -1
  517. package/cjs/components/Switch/SwitchGroup/SwitchGroup.cjs +0 -1
  518. package/cjs/components/Switch/SwitchGroup/SwitchGroup.cjs.map +1 -1
  519. package/cjs/components/Table/Table.cjs +0 -1
  520. package/cjs/components/Table/Table.cjs.map +1 -1
  521. package/cjs/components/Table/Table.components.cjs +0 -1
  522. package/cjs/components/Table/Table.components.cjs.map +1 -1
  523. package/cjs/components/Table/Table.module.cjs.map +1 -1
  524. package/cjs/components/Table/TableDataRenderer.cjs +0 -1
  525. package/cjs/components/Table/TableDataRenderer.cjs.map +1 -1
  526. package/cjs/components/Table/TableScrollContainer.cjs +0 -1
  527. package/cjs/components/Table/TableScrollContainer.cjs.map +1 -1
  528. package/cjs/components/TableOfContents/TableOfContents.cjs +0 -1
  529. package/cjs/components/TableOfContents/TableOfContents.cjs.map +1 -1
  530. package/cjs/components/Tabs/Tabs.cjs +0 -1
  531. package/cjs/components/Tabs/Tabs.cjs.map +1 -1
  532. package/cjs/components/Tabs/Tabs.module.cjs.map +1 -1
  533. package/cjs/components/Tabs/TabsList/TabsList.cjs +0 -1
  534. package/cjs/components/Tabs/TabsList/TabsList.cjs.map +1 -1
  535. package/cjs/components/Tabs/TabsPanel/TabsPanel.cjs +0 -1
  536. package/cjs/components/Tabs/TabsPanel/TabsPanel.cjs.map +1 -1
  537. package/cjs/components/Tabs/TabsTab/TabsTab.cjs +0 -1
  538. package/cjs/components/Tabs/TabsTab/TabsTab.cjs.map +1 -1
  539. package/cjs/components/TagsInput/TagsInput.cjs +2 -2
  540. package/cjs/components/TagsInput/TagsInput.cjs.map +1 -1
  541. package/cjs/components/Text/Text.cjs +4 -4
  542. package/cjs/components/Text/Text.cjs.map +1 -1
  543. package/cjs/components/Text/Text.module.cjs.map +1 -1
  544. package/cjs/components/TextInput/TextInput.cjs +0 -1
  545. package/cjs/components/TextInput/TextInput.cjs.map +1 -1
  546. package/cjs/components/Textarea/Textarea.cjs +3 -2
  547. package/cjs/components/Textarea/Textarea.cjs.map +1 -1
  548. package/cjs/components/ThemeIcon/ThemeIcon.cjs +0 -1
  549. package/cjs/components/ThemeIcon/ThemeIcon.cjs.map +1 -1
  550. package/cjs/components/Timeline/Timeline.cjs +0 -1
  551. package/cjs/components/Timeline/Timeline.cjs.map +1 -1
  552. package/cjs/components/Timeline/Timeline.module.cjs.map +1 -1
  553. package/cjs/components/Timeline/TimelineItem/TimelineItem.cjs +0 -1
  554. package/cjs/components/Timeline/TimelineItem/TimelineItem.cjs.map +1 -1
  555. package/cjs/components/Title/Title.cjs +0 -1
  556. package/cjs/components/Title/Title.cjs.map +1 -1
  557. package/cjs/components/Tooltip/Tooltip.cjs +7 -0
  558. package/cjs/components/Tooltip/Tooltip.cjs.map +1 -1
  559. package/cjs/components/Tooltip/TooltipFloating/TooltipFloating.cjs +0 -1
  560. package/cjs/components/Tooltip/TooltipFloating/TooltipFloating.cjs.map +1 -1
  561. package/cjs/components/Tooltip/TooltipFloating/use-floating-tooltip.cjs +0 -1
  562. package/cjs/components/Tooltip/TooltipFloating/use-floating-tooltip.cjs.map +1 -1
  563. package/cjs/components/Tooltip/TooltipGroup/TooltipGroup.cjs +0 -1
  564. package/cjs/components/Tooltip/TooltipGroup/TooltipGroup.cjs.map +1 -1
  565. package/cjs/components/Tooltip/use-tooltip.cjs +6 -3
  566. package/cjs/components/Tooltip/use-tooltip.cjs.map +1 -1
  567. package/cjs/components/Transition/Transition.cjs +0 -1
  568. package/cjs/components/Transition/Transition.cjs.map +1 -1
  569. package/cjs/components/Tree/FlatTreeNode.cjs +13 -5
  570. package/cjs/components/Tree/FlatTreeNode.cjs.map +1 -1
  571. package/cjs/components/Tree/Tree.cjs +0 -1
  572. package/cjs/components/Tree/Tree.cjs.map +1 -1
  573. package/cjs/components/Tree/Tree.module.cjs +3 -1
  574. package/cjs/components/Tree/Tree.module.cjs.map +1 -1
  575. package/cjs/components/Tree/TreeNode.cjs +6 -2
  576. package/cjs/components/Tree/TreeNode.cjs.map +1 -1
  577. package/cjs/components/Tree/flatten-tree-data/flatten-tree-data.cjs +9 -4
  578. package/cjs/components/Tree/flatten-tree-data/flatten-tree-data.cjs.map +1 -1
  579. package/cjs/components/Tree/use-tree-node-drag-drop.cjs +13 -5
  580. package/cjs/components/Tree/use-tree-node-drag-drop.cjs.map +1 -1
  581. package/cjs/components/Tree/use-tree.cjs +0 -1
  582. package/cjs/components/Tree/use-tree.cjs.map +1 -1
  583. package/cjs/components/TreeSelect/TreeSelect.cjs +0 -1
  584. package/cjs/components/TreeSelect/TreeSelect.cjs.map +1 -1
  585. package/cjs/components/TreeSelect/TreeSelectOption.cjs +0 -1
  586. package/cjs/components/TreeSelect/TreeSelectOption.cjs.map +1 -1
  587. package/cjs/components/Typography/Typography.cjs +0 -1
  588. package/cjs/components/Typography/Typography.cjs.map +1 -1
  589. package/cjs/components/Typography/Typography.module.cjs.map +1 -1
  590. package/cjs/components/UnstyledButton/UnstyledButton.cjs +0 -1
  591. package/cjs/components/UnstyledButton/UnstyledButton.cjs.map +1 -1
  592. package/cjs/components/UnstyledButton/UnstyledButton.module.cjs.map +1 -1
  593. package/cjs/components/VisuallyHidden/VisuallyHidden.cjs +0 -1
  594. package/cjs/components/VisuallyHidden/VisuallyHidden.cjs.map +1 -1
  595. package/cjs/core/Box/use-random-classname/use-random-classname.cjs +0 -1
  596. package/cjs/core/Box/use-random-classname/use-random-classname.cjs.map +1 -1
  597. package/cjs/core/DirectionProvider/DirectionProvider.cjs +0 -1
  598. package/cjs/core/DirectionProvider/DirectionProvider.cjs.map +1 -1
  599. package/cjs/core/InlineStyles/InlineStyles.cjs +0 -1
  600. package/cjs/core/InlineStyles/InlineStyles.cjs.map +1 -1
  601. package/cjs/core/MantineProvider/ColorSchemeScript/ColorSchemeScript.cjs +0 -1
  602. package/cjs/core/MantineProvider/ColorSchemeScript/ColorSchemeScript.cjs.map +1 -1
  603. package/cjs/core/MantineProvider/Mantine.context.cjs +0 -1
  604. package/cjs/core/MantineProvider/Mantine.context.cjs.map +1 -1
  605. package/cjs/core/MantineProvider/MantineClasses/MantineClasses.cjs +0 -1
  606. package/cjs/core/MantineProvider/MantineClasses/MantineClasses.cjs.map +1 -1
  607. package/cjs/core/MantineProvider/MantineCssVariables/MantineCssVariables.cjs +0 -1
  608. package/cjs/core/MantineProvider/MantineCssVariables/MantineCssVariables.cjs.map +1 -1
  609. package/cjs/core/MantineProvider/MantineProvider.cjs +0 -1
  610. package/cjs/core/MantineProvider/MantineProvider.cjs.map +1 -1
  611. package/cjs/core/MantineProvider/MantineThemeProvider/MantineThemeProvider.cjs +0 -1
  612. package/cjs/core/MantineProvider/MantineThemeProvider/MantineThemeProvider.cjs.map +1 -1
  613. package/cjs/core/MantineProvider/use-mantine-color-scheme/use-computed-color-scheme.cjs +0 -1
  614. package/cjs/core/MantineProvider/use-mantine-color-scheme/use-computed-color-scheme.cjs.map +1 -1
  615. package/cjs/core/MantineProvider/use-mantine-color-scheme/use-mantine-color-scheme.cjs +0 -1
  616. package/cjs/core/MantineProvider/use-mantine-color-scheme/use-mantine-color-scheme.cjs.map +1 -1
  617. package/cjs/core/MantineProvider/use-mantine-color-scheme/use-provider-color-scheme.cjs +0 -1
  618. package/cjs/core/MantineProvider/use-mantine-color-scheme/use-provider-color-scheme.cjs.map +1 -1
  619. package/cjs/core/MantineProvider/use-matches/use-matches.cjs +0 -1
  620. package/cjs/core/MantineProvider/use-matches/use-matches.cjs.map +1 -1
  621. package/cjs/core/MantineProvider/use-respect-reduce-motion/use-respect-reduce-motion.cjs +0 -1
  622. package/cjs/core/MantineProvider/use-respect-reduce-motion/use-respect-reduce-motion.cjs.map +1 -1
  623. package/cjs/core/factory/factory.cjs +0 -1
  624. package/cjs/core/factory/factory.cjs.map +1 -1
  625. package/cjs/core/factory/polymorphic-factory.cjs +0 -1
  626. package/cjs/core/factory/polymorphic-factory.cjs.map +1 -1
  627. package/cjs/core/utils/create-safe-context/create-safe-context.cjs +0 -1
  628. package/cjs/core/utils/create-safe-context/create-safe-context.cjs.map +1 -1
  629. package/cjs/core/utils/create-use-external-events/create-use-external-events.cjs +0 -1
  630. package/cjs/core/utils/create-use-external-events/create-use-external-events.cjs.map +1 -1
  631. package/cjs/core/utils/get-single-element-child/get-single-element-child.cjs +0 -1
  632. package/cjs/core/utils/get-single-element-child/get-single-element-child.cjs.map +1 -1
  633. package/cjs/core/utils/is-element/is-element.cjs +0 -1
  634. package/cjs/core/utils/is-element/is-element.cjs.map +1 -1
  635. package/cjs/core/utils/use-hovered/use-hovered.cjs +0 -1
  636. package/cjs/core/utils/use-hovered/use-hovered.cjs.map +1 -1
  637. package/cjs/index.cjs +25 -2
  638. package/cjs/utils/Floating/FloatingArrow/FloatingArrow.cjs +0 -1
  639. package/cjs/utils/Floating/FloatingArrow/FloatingArrow.cjs.map +1 -1
  640. package/cjs/utils/Floating/FloatingArrow/get-arrow-position-styles.cjs +59 -0
  641. package/cjs/utils/Floating/FloatingArrow/get-arrow-position-styles.cjs.map +1 -1
  642. package/cjs/utils/Floating/create-context-menu-handlers.cjs +38 -0
  643. package/cjs/utils/Floating/create-context-menu-handlers.cjs.map +1 -0
  644. package/cjs/utils/Floating/use-delayed-hover.cjs +0 -1
  645. package/cjs/utils/Floating/use-delayed-hover.cjs.map +1 -1
  646. package/cjs/utils/InlineInput/InlineInput.cjs +0 -1
  647. package/cjs/utils/InlineInput/InlineInput.cjs.map +1 -1
  648. package/cjs/utils/InputsGroupFieldset/InputsGroupFieldset.cjs +0 -1
  649. package/cjs/utils/InputsGroupFieldset/InputsGroupFieldset.cjs.map +1 -1
  650. package/esm/components/Autocomplete/Autocomplete.mjs +2 -1
  651. package/esm/components/Autocomplete/Autocomplete.mjs.map +1 -1
  652. package/esm/components/Blockquote/Blockquote.mjs +4 -3
  653. package/esm/components/Blockquote/Blockquote.mjs.map +1 -1
  654. package/esm/components/Blockquote/Blockquote.module.mjs.map +1 -1
  655. package/esm/components/Checkbox/CheckboxIndicator/CheckboxIndicator.mjs.map +1 -1
  656. package/esm/components/Combobox/Combobox.context.mjs.map +1 -1
  657. package/esm/components/Combobox/Combobox.mjs +26 -3
  658. package/esm/components/Combobox/Combobox.mjs.map +1 -1
  659. package/esm/components/Combobox/Combobox.module.mjs.map +1 -1
  660. package/esm/components/Combobox/ComboboxDropdown/ComboboxDropdown.mjs +1 -0
  661. package/esm/components/Combobox/ComboboxDropdown/ComboboxDropdown.mjs.map +1 -1
  662. package/esm/components/Combobox/OptionsDropdown/OptionsDropdown.mjs +4 -2
  663. package/esm/components/Combobox/OptionsDropdown/OptionsDropdown.mjs.map +1 -1
  664. package/esm/components/Input/Input.mjs +11 -2
  665. package/esm/components/Input/Input.mjs.map +1 -1
  666. package/esm/components/Input/Input.module.mjs +1 -0
  667. package/esm/components/Input/Input.module.mjs.map +1 -1
  668. package/esm/components/Menu/Menu.context.mjs.map +1 -1
  669. package/esm/components/Menu/Menu.mjs +37 -3
  670. package/esm/components/Menu/Menu.mjs.map +1 -1
  671. package/esm/components/Menu/Menu.module.mjs +2 -0
  672. package/esm/components/Menu/Menu.module.mjs.map +1 -1
  673. package/esm/components/Menu/MenuCheckboxGroup/MenuCheckboxGroup.context.mjs +8 -0
  674. package/esm/components/Menu/MenuCheckboxGroup/MenuCheckboxGroup.context.mjs.map +1 -0
  675. package/esm/components/Menu/MenuCheckboxGroup/MenuCheckboxGroup.mjs +30 -0
  676. package/esm/components/Menu/MenuCheckboxGroup/MenuCheckboxGroup.mjs.map +1 -0
  677. package/esm/components/Menu/MenuCheckboxItem/MenuCheckboxItem.mjs +52 -0
  678. package/esm/components/Menu/MenuCheckboxItem/MenuCheckboxItem.mjs.map +1 -0
  679. package/esm/components/Menu/MenuContextMenu/MenuContextMenu.mjs +27 -0
  680. package/esm/components/Menu/MenuContextMenu/MenuContextMenu.mjs.map +1 -0
  681. package/esm/components/Menu/MenuDropdown/MenuDropdown.mjs +9 -1
  682. package/esm/components/Menu/MenuDropdown/MenuDropdown.mjs.map +1 -1
  683. package/esm/components/Menu/MenuItem/MenuItem.mjs +18 -1
  684. package/esm/components/Menu/MenuItem/MenuItem.mjs.map +1 -1
  685. package/esm/components/Menu/MenuRadioGroup/MenuRadioGroup.context.mjs +8 -0
  686. package/esm/components/Menu/MenuRadioGroup/MenuRadioGroup.context.mjs.map +1 -0
  687. package/esm/components/Menu/MenuRadioGroup/MenuRadioGroup.mjs +27 -0
  688. package/esm/components/Menu/MenuRadioGroup/MenuRadioGroup.mjs.map +1 -0
  689. package/esm/components/Menu/MenuRadioItem/MenuRadioItem.mjs +46 -0
  690. package/esm/components/Menu/MenuRadioItem/MenuRadioItem.mjs.map +1 -0
  691. package/esm/components/Menu/MenuSearch/MenuSearch.mjs +115 -0
  692. package/esm/components/Menu/MenuSearch/MenuSearch.mjs.map +1 -0
  693. package/esm/components/Menu/MenuSelectableItem/MenuSelectableItem.mjs +114 -0
  694. package/esm/components/Menu/MenuSelectableItem/MenuSelectableItem.mjs.map +1 -0
  695. package/esm/components/Menu/MenuSubDropdown/MenuSubDropdown.mjs +13 -1
  696. package/esm/components/Menu/MenuSubDropdown/MenuSubDropdown.mjs.map +1 -1
  697. package/esm/components/Menu/MenuSubItem/MenuSubItem.mjs +18 -1
  698. package/esm/components/Menu/MenuSubItem/MenuSubItem.mjs.map +1 -1
  699. package/esm/components/Menu/use-menu-type-ahead.mjs +72 -0
  700. package/esm/components/Menu/use-menu-type-ahead.mjs.map +1 -0
  701. package/esm/components/MultiSelect/MultiSelect.mjs +2 -1
  702. package/esm/components/MultiSelect/MultiSelect.mjs.map +1 -1
  703. package/esm/components/OverflowList/OverflowList.mjs +69 -10
  704. package/esm/components/OverflowList/OverflowList.mjs.map +1 -1
  705. package/esm/components/Pagination/Pagination.context.mjs.map +1 -1
  706. package/esm/components/Pagination/Pagination.mjs +15 -3
  707. package/esm/components/Pagination/Pagination.mjs.map +1 -1
  708. package/esm/components/Pagination/Pagination.module.mjs +3 -1
  709. package/esm/components/Pagination/Pagination.module.mjs.map +1 -1
  710. package/esm/components/Pagination/PaginationLabel/PaginationLabel.mjs +32 -0
  711. package/esm/components/Pagination/PaginationLabel/PaginationLabel.mjs.map +1 -0
  712. package/esm/components/Pagination/PaginationRoot/PaginationRoot.mjs +3 -1
  713. package/esm/components/Pagination/PaginationRoot/PaginationRoot.mjs.map +1 -1
  714. package/esm/components/Popover/Popover.mjs +5 -9
  715. package/esm/components/Popover/Popover.mjs.map +1 -1
  716. package/esm/components/Popover/PopoverContextMenu/PopoverContextMenu.mjs +27 -0
  717. package/esm/components/Popover/PopoverContextMenu/PopoverContextMenu.mjs.map +1 -0
  718. package/esm/components/Popover/PopoverDropdown/PopoverDropdown.mjs +8 -0
  719. package/esm/components/Popover/PopoverDropdown/PopoverDropdown.mjs.map +1 -1
  720. package/esm/components/Popover/use-popover.mjs +53 -20
  721. package/esm/components/Popover/use-popover.mjs.map +1 -1
  722. package/esm/components/Radio/Radio.mjs +1 -1
  723. package/esm/components/Radio/RadioIndicator/RadioIndicator.mjs +2 -2
  724. package/esm/components/Radio/RadioIndicator/RadioIndicator.mjs.map +1 -1
  725. package/esm/components/Select/Select.mjs +2 -1
  726. package/esm/components/Select/Select.mjs.map +1 -1
  727. package/esm/components/Splitter/GripIcon.mjs +52 -0
  728. package/esm/components/Splitter/GripIcon.mjs.map +1 -0
  729. package/esm/components/Splitter/Splitter.context.mjs +8 -0
  730. package/esm/components/Splitter/Splitter.context.mjs.map +1 -0
  731. package/esm/components/Splitter/Splitter.mjs +111 -0
  732. package/esm/components/Splitter/Splitter.mjs.map +1 -0
  733. package/esm/components/Splitter/Splitter.module.mjs +12 -0
  734. package/esm/components/Splitter/Splitter.module.mjs.map +1 -0
  735. package/esm/components/Splitter/SplitterPane/SplitterPane.mjs +34 -0
  736. package/esm/components/Splitter/SplitterPane/SplitterPane.mjs.map +1 -0
  737. package/esm/components/Stepper/Stepper.module.mjs.map +1 -1
  738. package/esm/components/Table/Table.module.mjs.map +1 -1
  739. package/esm/components/Tabs/Tabs.module.mjs.map +1 -1
  740. package/esm/components/TagsInput/TagsInput.mjs +2 -1
  741. package/esm/components/TagsInput/TagsInput.mjs.map +1 -1
  742. package/esm/components/Text/Text.mjs +4 -3
  743. package/esm/components/Text/Text.mjs.map +1 -1
  744. package/esm/components/Text/Text.module.mjs.map +1 -1
  745. package/esm/components/Textarea/Textarea.mjs +3 -1
  746. package/esm/components/Textarea/Textarea.mjs.map +1 -1
  747. package/esm/components/Timeline/Timeline.module.mjs.map +1 -1
  748. package/esm/components/Tooltip/Tooltip.mjs +7 -0
  749. package/esm/components/Tooltip/Tooltip.mjs.map +1 -1
  750. package/esm/components/Tooltip/use-tooltip.mjs +8 -4
  751. package/esm/components/Tooltip/use-tooltip.mjs.map +1 -1
  752. package/esm/components/Tree/FlatTreeNode.mjs +14 -5
  753. package/esm/components/Tree/FlatTreeNode.mjs.map +1 -1
  754. package/esm/components/Tree/Tree.mjs.map +1 -1
  755. package/esm/components/Tree/Tree.module.mjs +3 -1
  756. package/esm/components/Tree/Tree.module.mjs.map +1 -1
  757. package/esm/components/Tree/TreeNode.mjs +6 -1
  758. package/esm/components/Tree/TreeNode.mjs.map +1 -1
  759. package/esm/components/Tree/flatten-tree-data/flatten-tree-data.mjs +9 -4
  760. package/esm/components/Tree/flatten-tree-data/flatten-tree-data.mjs.map +1 -1
  761. package/esm/components/Tree/use-tree-node-drag-drop.mjs +13 -4
  762. package/esm/components/Tree/use-tree-node-drag-drop.mjs.map +1 -1
  763. package/esm/components/Typography/Typography.module.mjs.map +1 -1
  764. package/esm/components/UnstyledButton/UnstyledButton.module.mjs.map +1 -1
  765. package/esm/index.mjs +14 -2
  766. package/esm/utils/Floating/FloatingArrow/get-arrow-position-styles.mjs +59 -1
  767. package/esm/utils/Floating/FloatingArrow/get-arrow-position-styles.mjs.map +1 -1
  768. package/esm/utils/Floating/create-context-menu-handlers.mjs +38 -0
  769. package/esm/utils/Floating/create-context-menu-handlers.mjs.map +1 -0
  770. package/lib/components/Blockquote/Blockquote.d.ts +3 -1
  771. package/lib/components/Checkbox/CheckboxIndicator/CheckboxIndicator.d.ts +1 -1
  772. package/lib/components/Combobox/Combobox.context.d.ts +1 -0
  773. package/lib/components/Combobox/Combobox.d.ts +2 -0
  774. package/lib/components/Combobox/Combobox.types.d.ts +2 -0
  775. package/lib/components/Combobox/OptionsDropdown/OptionsDropdown.d.ts +3 -1
  776. package/lib/components/Input/Input.d.ts +5 -1
  777. package/lib/components/MaskInput/use-mask-input-props.d.ts +3 -0
  778. package/lib/components/Menu/Menu.context.d.ts +5 -0
  779. package/lib/components/Menu/Menu.d.ts +41 -1
  780. package/lib/components/Menu/MenuCheckboxGroup/MenuCheckboxGroup.context.d.ts +5 -0
  781. package/lib/components/Menu/MenuCheckboxGroup/MenuCheckboxGroup.d.ts +14 -0
  782. package/lib/components/Menu/MenuCheckboxItem/MenuCheckboxItem.d.ts +37 -0
  783. package/lib/components/Menu/MenuContextMenu/MenuContextMenu.d.ts +10 -0
  784. package/lib/components/Menu/MenuItem/MenuItem.d.ts +1 -1
  785. package/lib/components/Menu/MenuRadioGroup/MenuRadioGroup.context.d.ts +5 -0
  786. package/lib/components/Menu/MenuRadioGroup/MenuRadioGroup.d.ts +14 -0
  787. package/lib/components/Menu/MenuRadioItem/MenuRadioItem.d.ts +35 -0
  788. package/lib/components/Menu/MenuSearch/MenuSearch.d.ts +19 -0
  789. package/lib/components/Menu/MenuSelectableItem/MenuSelectableItem.d.ts +20 -0
  790. package/lib/components/Menu/MenuSubItem/MenuSubItem.d.ts +1 -1
  791. package/lib/components/Menu/index.d.ts +13 -1
  792. package/lib/components/Menu/use-menu-type-ahead.d.ts +7 -0
  793. package/lib/components/OverflowList/OverflowList.d.ts +7 -2
  794. package/lib/components/Pagination/Pagination.context.d.ts +1 -0
  795. package/lib/components/Pagination/Pagination.d.ts +8 -0
  796. package/lib/components/Pagination/PaginationLabel/PaginationLabel.d.ts +22 -0
  797. package/lib/components/Pagination/PaginationRoot/PaginationRoot.d.ts +3 -1
  798. package/lib/components/Pagination/index.d.ts +3 -1
  799. package/lib/components/Popover/Popover.d.ts +6 -1
  800. package/lib/components/Popover/PopoverContextMenu/PopoverContextMenu.d.ts +10 -0
  801. package/lib/components/Popover/index.d.ts +3 -1
  802. package/lib/components/Popover/use-popover.d.ts +1 -3
  803. package/lib/components/Radio/RadioIndicator/RadioIndicator.d.ts +1 -1
  804. package/lib/components/Splitter/GripIcon.d.ts +3 -0
  805. package/lib/components/Splitter/Splitter.context.d.ts +9 -0
  806. package/lib/components/Splitter/Splitter.d.ts +57 -0
  807. package/lib/components/Splitter/SplitterPane/SplitterPane.d.ts +30 -0
  808. package/lib/components/Splitter/index.d.ts +18 -0
  809. package/lib/components/Text/Text.d.ts +3 -1
  810. package/lib/components/Textarea/Textarea.d.ts +4 -0
  811. package/lib/components/Tree/FlatTreeNode.d.ts +5 -1
  812. package/lib/components/Tree/Tree.d.ts +2 -0
  813. package/lib/components/Tree/flatten-tree-data/flatten-tree-data.d.ts +10 -0
  814. package/lib/components/Tree/index.d.ts +1 -1
  815. package/lib/components/Tree/use-tree-node-drag-drop.d.ts +2 -1
  816. package/lib/components/index.d.ts +1 -0
  817. package/lib/utils/Floating/FloatingArrow/get-arrow-position-styles.d.ts +4 -0
  818. package/lib/utils/Floating/create-context-menu-handlers.d.ts +18 -0
  819. package/lib/utils/Floating/index.d.ts +1 -0
  820. package/lib/utils/Floating/types.d.ts +1 -1
  821. package/package.json +2 -2
  822. package/styles/Blockquote.css +1 -0
  823. package/styles/Blockquote.layer.css +1 -0
  824. package/styles/Combobox.css +8 -0
  825. package/styles/Combobox.layer.css +8 -0
  826. package/styles/Input.css +25 -4
  827. package/styles/Input.layer.css +25 -4
  828. package/styles/Menu.css +41 -2
  829. package/styles/Menu.layer.css +41 -2
  830. package/styles/Pagination.css +33 -0
  831. package/styles/Pagination.layer.css +33 -0
  832. package/styles/Splitter.css +76 -0
  833. package/styles/Splitter.layer.css +77 -0
  834. package/styles/Stepper.css +1 -5
  835. package/styles/Stepper.layer.css +1 -5
  836. package/styles/Table.css +1 -5
  837. package/styles/Table.layer.css +1 -5
  838. package/styles/Tabs.css +13 -28
  839. package/styles/Tabs.layer.css +13 -28
  840. package/styles/Text.css +3 -2
  841. package/styles/Text.layer.css +3 -2
  842. package/styles/Timeline.css +14 -42
  843. package/styles/Timeline.layer.css +14 -42
  844. package/styles/Tree.css +55 -11
  845. package/styles/Tree.layer.css +55 -11
  846. package/styles/Typography.css +1 -1
  847. package/styles/Typography.layer.css +1 -1
  848. package/styles/UnstyledButton.css +1 -5
  849. package/styles/UnstyledButton.layer.css +1 -5
  850. package/styles.css +274 -105
  851. package/styles.layer.css +274 -105
@@ -33,7 +33,7 @@ const TagsInput = factory((_props) => {
33
33
  "InputWrapper",
34
34
  "TagsInput"
35
35
  ], defaultProps, _props);
36
- const { classNames, className, style, styles, unstyled, vars, size, value, defaultValue, onChange, onKeyDown, maxTags, allowDuplicates, onDuplicate, variant, data, dropdownOpened, defaultDropdownOpened, onDropdownOpen, onDropdownClose, selectFirstOptionOnChange, selectFirstOptionOnDropdownOpen, onOptionSubmit, comboboxProps, filter, limit, withScrollArea, maxDropdownHeight, searchValue, defaultSearchValue, onSearchChange, readOnly, disabled, splitChars, onFocus, onBlur, onPaste, radius, rightSection, rightSectionWidth, rightSectionPointerEvents, rightSectionProps, leftSection, leftSectionWidth, leftSectionPointerEvents, leftSectionProps, inputContainer, inputWrapperOrder, withAsterisk, required, labelProps, descriptionProps, errorProps, wrapperProps, description, label, error, withErrorStyles, name, form, id, clearable, clearSectionMode, clearButtonProps, hiddenInputProps, hiddenInputValuesDivider, mod, renderOption, renderPill, onRemove, onClear, onMaxTags, scrollAreaProps, acceptValueOnBlur, isDuplicate, openOnFocus, attributes, ref, loading, loadingPosition, withPillsReorder, ...others } = props;
36
+ const { classNames, className, style, styles, unstyled, vars, size, value, defaultValue, onChange, onKeyDown, maxTags, allowDuplicates, onDuplicate, variant, data, dropdownOpened, defaultDropdownOpened, onDropdownOpen, onDropdownClose, selectFirstOptionOnChange, selectFirstOptionOnDropdownOpen, onOptionSubmit, comboboxProps, filter, limit, withScrollArea, maxDropdownHeight, floatingHeight, searchValue, defaultSearchValue, onSearchChange, readOnly, disabled, splitChars, onFocus, onBlur, onPaste, radius, rightSection, rightSectionWidth, rightSectionPointerEvents, rightSectionProps, leftSection, leftSectionWidth, leftSectionPointerEvents, leftSectionProps, inputContainer, inputWrapperOrder, withAsterisk, required, labelProps, descriptionProps, errorProps, wrapperProps, description, label, error, withErrorStyles, name, form, id, clearable, clearSectionMode, clearButtonProps, hiddenInputProps, hiddenInputValuesDivider, mod, renderOption, renderPill, onRemove, onClear, onMaxTags, scrollAreaProps, acceptValueOnBlur, isDuplicate, openOnFocus, attributes, ref, loading, loadingPosition, withPillsReorder, ...others } = props;
37
37
  const _id = useId$1(id);
38
38
  const parsedData = getParsedComboboxData(data);
39
39
  const optionsLockup = getOptionsLockup(parsedData);
@@ -203,6 +203,7 @@ const TagsInput = factory((_props) => {
203
203
  readOnly,
204
204
  __staticSelector: "TagsInput",
205
205
  attributes,
206
+ floatingHeight,
206
207
  onOptionSubmit: (val) => {
207
208
  onOptionSubmit?.(val);
208
209
  handleSearchChange("");
@@ -1 +1 @@
1
- {"version":3,"file":"TagsInput.mjs","names":["useId"],"sources":["../../../src/components/TagsInput/TagsInput.tsx"],"sourcesContent":["import { Fragment, useEffect, useRef } from 'react';\nimport { useId, useMergedRef, useUncontrolled } from '@mantine/hooks';\nimport {\n BoxProps,\n ElementProps,\n extractStyleProps,\n factory,\n Factory,\n Primitive,\n StylesApiProps,\n useProps,\n useResolvedStylesApi,\n useStyles,\n} from '../../core';\nimport {\n Combobox,\n ComboboxGenericData,\n ComboboxGenericItem,\n ComboboxLikeProps,\n ComboboxLikeRenderOptionInput,\n ComboboxLikeStylesNames,\n ComboboxRenderPillInput,\n getOptionsLockup,\n getParsedComboboxData,\n OptionsDropdown,\n OptionsFilter,\n useCombobox,\n usePillsReorder,\n} from '../Combobox';\nimport {\n __BaseInputProps,\n __InputStylesNames,\n ClearSectionMode,\n InputClearButtonProps,\n} from '../Input';\nimport { InputBase } from '../InputBase';\nimport { Pill } from '../Pill';\nimport { PillsInput } from '../PillsInput';\nimport { ScrollAreaProps } from '../ScrollArea';\nimport { filterPickedTags } from './filter-picked-tags';\nimport { getSplittedTags } from './get-splitted-tags';\n\nexport type TagsInputStylesNames =\n | __InputStylesNames\n | ComboboxLikeStylesNames\n | 'pill'\n | 'pillsList'\n | 'inputField';\n\nexport interface TagsInputProps\n extends\n BoxProps,\n __BaseInputProps,\n Omit<ComboboxLikeProps, 'data'>,\n StylesApiProps<TagsInputFactory>,\n ElementProps<'input', 'size' | 'value' | 'defaultValue' | 'onChange'> {\n /** Data displayed in the dropdown. Values must be unique. */\n data?: ComboboxGenericData;\n\n /** Controlled component value */\n value?: string[];\n\n /** Uncontrolled component default value */\n defaultValue?: string[];\n\n /** Called when value changes */\n onChange?: (value: string[]) => void;\n\n /** Called when tag is removed */\n onRemove?: (value: string) => void;\n\n /** Called when the clear button is clicked */\n onClear?: () => void;\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 /** Maximum number of tags @default Infinity */\n maxTags?: number;\n\n /** Called when user tries to add more tags than maxTags */\n onMaxTags?: (value: string) => void;\n\n /** If set, duplicate tags are allowed @default false */\n allowDuplicates?: boolean;\n\n /** Called when user tries to submit a duplicated tag */\n onDuplicate?: (value: string) => void;\n\n /** Characters that should trigger tags split, `[',']` by default */\n splitChars?: string[];\n\n /** If set, the clear button is displayed in the right section when the 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 /** Divider used to separate values in the hidden input `value` attribute @default ',' */\n hiddenInputValuesDivider?: string;\n\n /** A function to render content of the option, replaces the default content of the option */\n renderOption?: (input: ComboboxLikeRenderOptionInput<ComboboxGenericItem>) => React.ReactNode;\n\n /** A function to render content of the pill, replaces the default content of the pill */\n renderPill?: (props: ComboboxRenderPillInput) => React.ReactNode;\n\n /** Props passed down to the underlying `ScrollArea` component in the dropdown */\n scrollAreaProps?: ScrollAreaProps;\n\n /** If set, the value typed in by the user but not submitted is accepted when the input is blurred @default true */\n acceptValueOnBlur?: boolean;\n\n /** Custom function to determine if a tag is duplicate. Accepts tag value and array of current values. By default, checks if the tag exists case-insensitively. */\n isDuplicate?: (value: string, currentValues: string[]) => boolean;\n\n /** If set, the dropdown opens when the input receives focus @default true */\n openOnFocus?: boolean;\n\n /** If set, tags can be reordered by dragging pills. Disabled when `disabled` or `readOnly` is set. @default false */\n withPillsReorder?: boolean;\n}\n\nexport type TagsInputFactory = Factory<{\n props: TagsInputProps;\n ref: HTMLInputElement;\n stylesNames: TagsInputStylesNames;\n}>;\n\nconst defaultProps = {\n maxTags: Infinity,\n acceptValueOnBlur: true,\n splitChars: [','],\n hiddenInputValuesDivider: ',',\n openOnFocus: true,\n size: 'sm',\n} satisfies Partial<TagsInputProps>;\n\nexport const TagsInput = factory<TagsInputFactory>((_props) => {\n const props = useProps(['Input', 'InputWrapper', 'TagsInput'], defaultProps, _props);\n const {\n classNames,\n className,\n style,\n styles,\n unstyled,\n vars,\n size,\n value,\n defaultValue,\n onChange,\n onKeyDown,\n maxTags,\n allowDuplicates,\n onDuplicate,\n variant,\n data,\n dropdownOpened,\n defaultDropdownOpened,\n onDropdownOpen,\n onDropdownClose,\n selectFirstOptionOnChange,\n selectFirstOptionOnDropdownOpen,\n onOptionSubmit,\n comboboxProps,\n filter,\n limit,\n withScrollArea,\n maxDropdownHeight,\n searchValue,\n defaultSearchValue,\n onSearchChange,\n readOnly,\n disabled,\n splitChars,\n onFocus,\n onBlur,\n onPaste,\n radius,\n rightSection,\n rightSectionWidth,\n rightSectionPointerEvents,\n rightSectionProps,\n leftSection,\n leftSectionWidth,\n leftSectionPointerEvents,\n leftSectionProps,\n inputContainer,\n inputWrapperOrder,\n withAsterisk,\n required,\n labelProps,\n descriptionProps,\n errorProps,\n wrapperProps,\n description,\n label,\n error,\n withErrorStyles,\n name,\n form,\n id,\n clearable,\n clearSectionMode,\n clearButtonProps,\n hiddenInputProps,\n hiddenInputValuesDivider,\n mod,\n renderOption,\n renderPill,\n onRemove,\n onClear,\n onMaxTags,\n scrollAreaProps,\n acceptValueOnBlur,\n isDuplicate,\n openOnFocus,\n attributes,\n ref,\n loading,\n loadingPosition,\n withPillsReorder,\n ...others\n } = props;\n\n const _id = useId(id);\n const parsedData = getParsedComboboxData(data);\n const optionsLockup = getOptionsLockup(parsedData);\n const inputRef = useRef<HTMLInputElement>(null);\n const _ref = useMergedRef(inputRef, ref);\n\n const combobox = useCombobox({\n opened: dropdownOpened,\n defaultOpened: defaultDropdownOpened,\n onDropdownOpen: () => {\n onDropdownOpen?.();\n if (selectFirstOptionOnDropdownOpen) {\n combobox.selectFirstOption();\n }\n },\n onDropdownClose: () => {\n onDropdownClose?.();\n combobox.resetSelectedOption();\n },\n });\n\n const {\n styleProps,\n rest: { type, autoComplete, ...rest },\n } = extractStyleProps(others);\n\n const [_value, setValue] = useUncontrolled({\n value,\n defaultValue,\n finalValue: [],\n onChange,\n });\n\n const { getPillProps, getListProps, handleInputKeyDown } = usePillsReorder({\n value: _value,\n onChange: setValue,\n enabled: withPillsReorder && !disabled && !readOnly,\n });\n\n const [_searchValue, setSearchValue] = useUncontrolled({\n value: searchValue,\n defaultValue: defaultSearchValue,\n finalValue: '',\n onChange: onSearchChange,\n });\n\n const handleSearchChange = (value: string) => {\n setSearchValue(value);\n combobox.resetSelectedOption();\n };\n\n const getStyles = useStyles<TagsInputFactory>({\n name: 'TagsInput',\n classes: {} as any,\n props: props as any,\n classNames,\n styles,\n unstyled,\n });\n\n const { resolvedClassNames, resolvedStyles } = useResolvedStylesApi<TagsInputFactory>({\n props,\n styles,\n classNames,\n });\n\n const handleValueSelect = (val: string) => {\n const isDuplicated = isDuplicate\n ? isDuplicate(val, _value)\n : _value.some((tag) => tag.toLowerCase() === val.toLowerCase());\n\n if (isDuplicated) {\n onDuplicate?.(val);\n if (!allowDuplicates) {\n handleSearchChange('');\n return;\n }\n }\n\n if (_value.length >= maxTags) {\n onMaxTags?.(val);\n return;\n }\n\n onOptionSubmit?.(val);\n handleSearchChange('');\n if (val.length > 0) {\n setValue([..._value, val]);\n }\n };\n\n const handleInputKeydown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n onKeyDown?.(event);\n\n if (event.defaultPrevented || event.isPropagationStopped()) {\n return;\n }\n\n const inputValue = _searchValue.trim();\n const { length } = inputValue;\n\n if (splitChars.includes(event.key) && length > 0) {\n setValue(\n getSplittedTags({\n splitChars,\n allowDuplicates,\n maxTags,\n value: _searchValue,\n currentTags: _value,\n isDuplicate,\n onDuplicate,\n })\n );\n handleSearchChange('');\n event.preventDefault();\n }\n\n if (event.key === 'Enter' && length > 0 && !event.nativeEvent.isComposing) {\n event.preventDefault();\n\n const hasActiveSelection = !!document.querySelector<HTMLDivElement>(\n `#${combobox.listId} [data-combobox-option][data-combobox-selected]`\n );\n\n if (hasActiveSelection) {\n return;\n }\n\n handleValueSelect(inputValue);\n }\n\n if (\n event.key === 'Backspace' &&\n length === 0 &&\n _value.length > 0 &&\n !event.nativeEvent.isComposing &&\n !readOnly\n ) {\n onRemove?.(_value[_value.length - 1]);\n setValue(_value.slice(0, _value.length - 1));\n }\n\n handleInputKeyDown(event);\n };\n\n const handlePaste = (event: React.ClipboardEvent<HTMLInputElement>) => {\n onPaste?.(event);\n event.preventDefault();\n\n if (event.clipboardData) {\n const pastedText = event.clipboardData.getData('text/plain');\n setValue(\n getSplittedTags({\n splitChars,\n allowDuplicates,\n maxTags,\n value: `${_searchValue}${pastedText}`,\n currentTags: _value,\n isDuplicate,\n onDuplicate,\n })\n );\n handleSearchChange('');\n }\n };\n\n const values = _value.map((item, index) => {\n const onRemoveItem = () => {\n const next_value = _value.slice();\n next_value.splice(index, 1);\n setValue(next_value);\n onRemove?.(item);\n };\n\n const reorderProps = getPillProps(index);\n\n if (renderPill) {\n return (\n <Fragment key={`${item}-${index}`}>\n {renderPill({\n option: optionsLockup[item] || { value: item, label: item, disabled: false },\n value: item,\n onRemove: onRemoveItem,\n disabled: disabled || readOnly,\n reorderProps,\n })}\n </Fragment>\n );\n }\n\n return (\n <Pill\n key={`${item}-${index}`}\n withRemoveButton={!readOnly}\n onRemove={onRemoveItem}\n unstyled={unstyled}\n disabled={disabled}\n attributes={attributes}\n {...getStyles('pill')}\n {...reorderProps}\n >\n {item}\n </Pill>\n );\n });\n\n useEffect(() => {\n if (selectFirstOptionOnChange) {\n combobox.selectFirstOption();\n }\n }, [selectFirstOptionOnChange, _value, _searchValue]);\n\n const clearButton = (\n <Combobox.ClearButton\n {...clearButtonProps}\n onClear={() => {\n setValue([]);\n handleSearchChange('');\n inputRef.current?.focus();\n combobox.openDropdown();\n onClear?.();\n }}\n />\n );\n\n return (\n <>\n <Combobox\n store={combobox}\n classNames={resolvedClassNames}\n styles={resolvedStyles}\n unstyled={unstyled}\n size={size}\n readOnly={readOnly}\n __staticSelector=\"TagsInput\"\n attributes={attributes}\n onOptionSubmit={(val) => {\n onOptionSubmit?.(val);\n handleSearchChange('');\n\n if (_value.length >= maxTags) {\n onMaxTags?.(val);\n } else {\n setValue([..._value, optionsLockup[val].value]);\n }\n\n combobox.resetSelectedOption();\n }}\n {...comboboxProps}\n >\n <Combobox.DropdownTarget>\n <PillsInput\n {...styleProps}\n __staticSelector=\"TagsInput\"\n classNames={resolvedClassNames}\n styles={resolvedStyles}\n unstyled={unstyled}\n size={size}\n className={className}\n style={style}\n variant={variant}\n disabled={disabled}\n radius={radius}\n rightSection={rightSection}\n __clearSection={clearButton}\n __clearable={clearable && _value.length > 0 && !disabled && !readOnly}\n __clearSectionMode={clearSectionMode}\n rightSectionWidth={rightSectionWidth}\n rightSectionPointerEvents={rightSectionPointerEvents}\n rightSectionProps={rightSectionProps}\n leftSection={leftSection}\n leftSectionWidth={leftSectionWidth}\n leftSectionPointerEvents={leftSectionPointerEvents}\n leftSectionProps={leftSectionProps}\n loading={loading}\n loadingPosition={loadingPosition}\n inputContainer={inputContainer}\n inputWrapperOrder={inputWrapperOrder}\n withAsterisk={withAsterisk}\n required={required}\n labelProps={labelProps}\n descriptionProps={descriptionProps}\n errorProps={errorProps}\n wrapperProps={wrapperProps}\n description={description}\n label={label}\n error={error}\n withErrorStyles={withErrorStyles}\n __stylesApiProps={{ ...props, multiline: true }}\n id={_id}\n mod={mod}\n attributes={attributes}\n >\n <Pill.Group\n disabled={disabled}\n unstyled={unstyled}\n {...getStyles('pillsList')}\n {...getListProps()}\n >\n {values}\n <Combobox.EventsTarget autoComplete={autoComplete} withExpandedAttribute>\n <PillsInput.Field\n {...rest}\n ref={_ref}\n {...getStyles('inputField')}\n unstyled={unstyled}\n onKeyDown={handleInputKeydown}\n onFocus={(event) => {\n onFocus?.(event);\n openOnFocus && combobox.openDropdown();\n }}\n onBlur={(event) => {\n onBlur?.(event);\n acceptValueOnBlur && handleValueSelect(_searchValue);\n combobox.closeDropdown();\n }}\n onPaste={handlePaste}\n value={_searchValue}\n onChange={(event) => handleSearchChange(event.currentTarget.value)}\n required={required && _value.length === 0}\n disabled={disabled}\n readOnly={readOnly}\n id={_id}\n />\n </Combobox.EventsTarget>\n </Pill.Group>\n </PillsInput>\n </Combobox.DropdownTarget>\n\n <OptionsDropdown\n data={filterPickedTags({ data: parsedData, value: _value })}\n hidden={readOnly || disabled}\n filter={filter as OptionsFilter<Primitive> | undefined}\n search={_searchValue}\n limit={limit}\n hiddenWhenEmpty\n withScrollArea={withScrollArea}\n maxDropdownHeight={maxDropdownHeight}\n unstyled={unstyled}\n labelId={label ? `${_id}-label` : undefined}\n aria-label={label ? undefined : others['aria-label']}\n renderOption={renderOption}\n scrollAreaProps={scrollAreaProps}\n />\n </Combobox>\n <Combobox.HiddenInput\n name={name}\n form={form}\n value={_value}\n valuesDivider={hiddenInputValuesDivider}\n disabled={disabled}\n {...hiddenInputProps}\n />\n </>\n );\n});\n\nTagsInput.classes = { ...InputBase.classes, ...Combobox.classes };\nTagsInput.displayName = '@mantine/core/TagsInput';\n\nexport namespace TagsInput {\n export type Props = TagsInputProps;\n export type StylesNames = TagsInputStylesNames;\n export type Factory = TagsInputFactory;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"TagsInput.mjs","names":["useId"],"sources":["../../../src/components/TagsInput/TagsInput.tsx"],"sourcesContent":["import { Fragment, useEffect, useRef } from 'react';\nimport { useId, useMergedRef, useUncontrolled } from '@mantine/hooks';\nimport {\n BoxProps,\n ElementProps,\n extractStyleProps,\n factory,\n Factory,\n Primitive,\n StylesApiProps,\n useProps,\n useResolvedStylesApi,\n useStyles,\n} from '../../core';\nimport {\n Combobox,\n ComboboxGenericData,\n ComboboxGenericItem,\n ComboboxLikeProps,\n ComboboxLikeRenderOptionInput,\n ComboboxLikeStylesNames,\n ComboboxRenderPillInput,\n getOptionsLockup,\n getParsedComboboxData,\n OptionsDropdown,\n OptionsFilter,\n useCombobox,\n usePillsReorder,\n} from '../Combobox';\nimport {\n __BaseInputProps,\n __InputStylesNames,\n ClearSectionMode,\n InputClearButtonProps,\n} from '../Input';\nimport { InputBase } from '../InputBase';\nimport { Pill } from '../Pill';\nimport { PillsInput } from '../PillsInput';\nimport { ScrollAreaProps } from '../ScrollArea';\nimport { filterPickedTags } from './filter-picked-tags';\nimport { getSplittedTags } from './get-splitted-tags';\n\nexport type TagsInputStylesNames =\n | __InputStylesNames\n | ComboboxLikeStylesNames\n | 'pill'\n | 'pillsList'\n | 'inputField';\n\nexport interface TagsInputProps\n extends\n BoxProps,\n __BaseInputProps,\n Omit<ComboboxLikeProps, 'data'>,\n StylesApiProps<TagsInputFactory>,\n ElementProps<'input', 'size' | 'value' | 'defaultValue' | 'onChange'> {\n /** Data displayed in the dropdown. Values must be unique. */\n data?: ComboboxGenericData;\n\n /** Controlled component value */\n value?: string[];\n\n /** Uncontrolled component default value */\n defaultValue?: string[];\n\n /** Called when value changes */\n onChange?: (value: string[]) => void;\n\n /** Called when tag is removed */\n onRemove?: (value: string) => void;\n\n /** Called when the clear button is clicked */\n onClear?: () => void;\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 /** Maximum number of tags @default Infinity */\n maxTags?: number;\n\n /** Called when user tries to add more tags than maxTags */\n onMaxTags?: (value: string) => void;\n\n /** If set, duplicate tags are allowed @default false */\n allowDuplicates?: boolean;\n\n /** Called when user tries to submit a duplicated tag */\n onDuplicate?: (value: string) => void;\n\n /** Characters that should trigger tags split, `[',']` by default */\n splitChars?: string[];\n\n /** If set, the clear button is displayed in the right section when the 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 /** Divider used to separate values in the hidden input `value` attribute @default ',' */\n hiddenInputValuesDivider?: string;\n\n /** A function to render content of the option, replaces the default content of the option */\n renderOption?: (input: ComboboxLikeRenderOptionInput<ComboboxGenericItem>) => React.ReactNode;\n\n /** A function to render content of the pill, replaces the default content of the pill */\n renderPill?: (props: ComboboxRenderPillInput) => React.ReactNode;\n\n /** Props passed down to the underlying `ScrollArea` component in the dropdown */\n scrollAreaProps?: ScrollAreaProps;\n\n /** If set, the value typed in by the user but not submitted is accepted when the input is blurred @default true */\n acceptValueOnBlur?: boolean;\n\n /** Custom function to determine if a tag is duplicate. Accepts tag value and array of current values. By default, checks if the tag exists case-insensitively. */\n isDuplicate?: (value: string, currentValues: string[]) => boolean;\n\n /** If set, the dropdown opens when the input receives focus @default true */\n openOnFocus?: boolean;\n\n /** If set, tags can be reordered by dragging pills. Disabled when `disabled` or `readOnly` is set. @default false */\n withPillsReorder?: boolean;\n}\n\nexport type TagsInputFactory = Factory<{\n props: TagsInputProps;\n ref: HTMLInputElement;\n stylesNames: TagsInputStylesNames;\n}>;\n\nconst defaultProps = {\n maxTags: Infinity,\n acceptValueOnBlur: true,\n splitChars: [','],\n hiddenInputValuesDivider: ',',\n openOnFocus: true,\n size: 'sm',\n} satisfies Partial<TagsInputProps>;\n\nexport const TagsInput = factory<TagsInputFactory>((_props) => {\n const props = useProps(['Input', 'InputWrapper', 'TagsInput'], defaultProps, _props);\n const {\n classNames,\n className,\n style,\n styles,\n unstyled,\n vars,\n size,\n value,\n defaultValue,\n onChange,\n onKeyDown,\n maxTags,\n allowDuplicates,\n onDuplicate,\n variant,\n data,\n dropdownOpened,\n defaultDropdownOpened,\n onDropdownOpen,\n onDropdownClose,\n selectFirstOptionOnChange,\n selectFirstOptionOnDropdownOpen,\n onOptionSubmit,\n comboboxProps,\n filter,\n limit,\n withScrollArea,\n maxDropdownHeight,\n floatingHeight,\n searchValue,\n defaultSearchValue,\n onSearchChange,\n readOnly,\n disabled,\n splitChars,\n onFocus,\n onBlur,\n onPaste,\n radius,\n rightSection,\n rightSectionWidth,\n rightSectionPointerEvents,\n rightSectionProps,\n leftSection,\n leftSectionWidth,\n leftSectionPointerEvents,\n leftSectionProps,\n inputContainer,\n inputWrapperOrder,\n withAsterisk,\n required,\n labelProps,\n descriptionProps,\n errorProps,\n wrapperProps,\n description,\n label,\n error,\n withErrorStyles,\n name,\n form,\n id,\n clearable,\n clearSectionMode,\n clearButtonProps,\n hiddenInputProps,\n hiddenInputValuesDivider,\n mod,\n renderOption,\n renderPill,\n onRemove,\n onClear,\n onMaxTags,\n scrollAreaProps,\n acceptValueOnBlur,\n isDuplicate,\n openOnFocus,\n attributes,\n ref,\n loading,\n loadingPosition,\n withPillsReorder,\n ...others\n } = props;\n\n const _id = useId(id);\n const parsedData = getParsedComboboxData(data);\n const optionsLockup = getOptionsLockup(parsedData);\n const inputRef = useRef<HTMLInputElement>(null);\n const _ref = useMergedRef(inputRef, ref);\n\n const combobox = useCombobox({\n opened: dropdownOpened,\n defaultOpened: defaultDropdownOpened,\n onDropdownOpen: () => {\n onDropdownOpen?.();\n if (selectFirstOptionOnDropdownOpen) {\n combobox.selectFirstOption();\n }\n },\n onDropdownClose: () => {\n onDropdownClose?.();\n combobox.resetSelectedOption();\n },\n });\n\n const {\n styleProps,\n rest: { type, autoComplete, ...rest },\n } = extractStyleProps(others);\n\n const [_value, setValue] = useUncontrolled({\n value,\n defaultValue,\n finalValue: [],\n onChange,\n });\n\n const { getPillProps, getListProps, handleInputKeyDown } = usePillsReorder({\n value: _value,\n onChange: setValue,\n enabled: withPillsReorder && !disabled && !readOnly,\n });\n\n const [_searchValue, setSearchValue] = useUncontrolled({\n value: searchValue,\n defaultValue: defaultSearchValue,\n finalValue: '',\n onChange: onSearchChange,\n });\n\n const handleSearchChange = (value: string) => {\n setSearchValue(value);\n combobox.resetSelectedOption();\n };\n\n const getStyles = useStyles<TagsInputFactory>({\n name: 'TagsInput',\n classes: {} as any,\n props: props as any,\n classNames,\n styles,\n unstyled,\n });\n\n const { resolvedClassNames, resolvedStyles } = useResolvedStylesApi<TagsInputFactory>({\n props,\n styles,\n classNames,\n });\n\n const handleValueSelect = (val: string) => {\n const isDuplicated = isDuplicate\n ? isDuplicate(val, _value)\n : _value.some((tag) => tag.toLowerCase() === val.toLowerCase());\n\n if (isDuplicated) {\n onDuplicate?.(val);\n if (!allowDuplicates) {\n handleSearchChange('');\n return;\n }\n }\n\n if (_value.length >= maxTags) {\n onMaxTags?.(val);\n return;\n }\n\n onOptionSubmit?.(val);\n handleSearchChange('');\n if (val.length > 0) {\n setValue([..._value, val]);\n }\n };\n\n const handleInputKeydown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n onKeyDown?.(event);\n\n if (event.defaultPrevented || event.isPropagationStopped()) {\n return;\n }\n\n const inputValue = _searchValue.trim();\n const { length } = inputValue;\n\n if (splitChars.includes(event.key) && length > 0) {\n setValue(\n getSplittedTags({\n splitChars,\n allowDuplicates,\n maxTags,\n value: _searchValue,\n currentTags: _value,\n isDuplicate,\n onDuplicate,\n })\n );\n handleSearchChange('');\n event.preventDefault();\n }\n\n if (event.key === 'Enter' && length > 0 && !event.nativeEvent.isComposing) {\n event.preventDefault();\n\n const hasActiveSelection = !!document.querySelector<HTMLDivElement>(\n `#${combobox.listId} [data-combobox-option][data-combobox-selected]`\n );\n\n if (hasActiveSelection) {\n return;\n }\n\n handleValueSelect(inputValue);\n }\n\n if (\n event.key === 'Backspace' &&\n length === 0 &&\n _value.length > 0 &&\n !event.nativeEvent.isComposing &&\n !readOnly\n ) {\n onRemove?.(_value[_value.length - 1]);\n setValue(_value.slice(0, _value.length - 1));\n }\n\n handleInputKeyDown(event);\n };\n\n const handlePaste = (event: React.ClipboardEvent<HTMLInputElement>) => {\n onPaste?.(event);\n event.preventDefault();\n\n if (event.clipboardData) {\n const pastedText = event.clipboardData.getData('text/plain');\n setValue(\n getSplittedTags({\n splitChars,\n allowDuplicates,\n maxTags,\n value: `${_searchValue}${pastedText}`,\n currentTags: _value,\n isDuplicate,\n onDuplicate,\n })\n );\n handleSearchChange('');\n }\n };\n\n const values = _value.map((item, index) => {\n const onRemoveItem = () => {\n const next_value = _value.slice();\n next_value.splice(index, 1);\n setValue(next_value);\n onRemove?.(item);\n };\n\n const reorderProps = getPillProps(index);\n\n if (renderPill) {\n return (\n <Fragment key={`${item}-${index}`}>\n {renderPill({\n option: optionsLockup[item] || { value: item, label: item, disabled: false },\n value: item,\n onRemove: onRemoveItem,\n disabled: disabled || readOnly,\n reorderProps,\n })}\n </Fragment>\n );\n }\n\n return (\n <Pill\n key={`${item}-${index}`}\n withRemoveButton={!readOnly}\n onRemove={onRemoveItem}\n unstyled={unstyled}\n disabled={disabled}\n attributes={attributes}\n {...getStyles('pill')}\n {...reorderProps}\n >\n {item}\n </Pill>\n );\n });\n\n useEffect(() => {\n if (selectFirstOptionOnChange) {\n combobox.selectFirstOption();\n }\n }, [selectFirstOptionOnChange, _value, _searchValue]);\n\n const clearButton = (\n <Combobox.ClearButton\n {...clearButtonProps}\n onClear={() => {\n setValue([]);\n handleSearchChange('');\n inputRef.current?.focus();\n combobox.openDropdown();\n onClear?.();\n }}\n />\n );\n\n return (\n <>\n <Combobox\n store={combobox}\n classNames={resolvedClassNames}\n styles={resolvedStyles}\n unstyled={unstyled}\n size={size}\n readOnly={readOnly}\n __staticSelector=\"TagsInput\"\n attributes={attributes}\n floatingHeight={floatingHeight}\n onOptionSubmit={(val) => {\n onOptionSubmit?.(val);\n handleSearchChange('');\n\n if (_value.length >= maxTags) {\n onMaxTags?.(val);\n } else {\n setValue([..._value, optionsLockup[val].value]);\n }\n\n combobox.resetSelectedOption();\n }}\n {...comboboxProps}\n >\n <Combobox.DropdownTarget>\n <PillsInput\n {...styleProps}\n __staticSelector=\"TagsInput\"\n classNames={resolvedClassNames}\n styles={resolvedStyles}\n unstyled={unstyled}\n size={size}\n className={className}\n style={style}\n variant={variant}\n disabled={disabled}\n radius={radius}\n rightSection={rightSection}\n __clearSection={clearButton}\n __clearable={clearable && _value.length > 0 && !disabled && !readOnly}\n __clearSectionMode={clearSectionMode}\n rightSectionWidth={rightSectionWidth}\n rightSectionPointerEvents={rightSectionPointerEvents}\n rightSectionProps={rightSectionProps}\n leftSection={leftSection}\n leftSectionWidth={leftSectionWidth}\n leftSectionPointerEvents={leftSectionPointerEvents}\n leftSectionProps={leftSectionProps}\n loading={loading}\n loadingPosition={loadingPosition}\n inputContainer={inputContainer}\n inputWrapperOrder={inputWrapperOrder}\n withAsterisk={withAsterisk}\n required={required}\n labelProps={labelProps}\n descriptionProps={descriptionProps}\n errorProps={errorProps}\n wrapperProps={wrapperProps}\n description={description}\n label={label}\n error={error}\n withErrorStyles={withErrorStyles}\n __stylesApiProps={{ ...props, multiline: true }}\n id={_id}\n mod={mod}\n attributes={attributes}\n >\n <Pill.Group\n disabled={disabled}\n unstyled={unstyled}\n {...getStyles('pillsList')}\n {...getListProps()}\n >\n {values}\n <Combobox.EventsTarget autoComplete={autoComplete} withExpandedAttribute>\n <PillsInput.Field\n {...rest}\n ref={_ref}\n {...getStyles('inputField')}\n unstyled={unstyled}\n onKeyDown={handleInputKeydown}\n onFocus={(event) => {\n onFocus?.(event);\n openOnFocus && combobox.openDropdown();\n }}\n onBlur={(event) => {\n onBlur?.(event);\n acceptValueOnBlur && handleValueSelect(_searchValue);\n combobox.closeDropdown();\n }}\n onPaste={handlePaste}\n value={_searchValue}\n onChange={(event) => handleSearchChange(event.currentTarget.value)}\n required={required && _value.length === 0}\n disabled={disabled}\n readOnly={readOnly}\n id={_id}\n />\n </Combobox.EventsTarget>\n </Pill.Group>\n </PillsInput>\n </Combobox.DropdownTarget>\n\n <OptionsDropdown\n data={filterPickedTags({ data: parsedData, value: _value })}\n hidden={readOnly || disabled}\n filter={filter as OptionsFilter<Primitive> | undefined}\n search={_searchValue}\n limit={limit}\n hiddenWhenEmpty\n withScrollArea={withScrollArea}\n maxDropdownHeight={maxDropdownHeight}\n unstyled={unstyled}\n labelId={label ? `${_id}-label` : undefined}\n aria-label={label ? undefined : others['aria-label']}\n renderOption={renderOption}\n scrollAreaProps={scrollAreaProps}\n />\n </Combobox>\n <Combobox.HiddenInput\n name={name}\n form={form}\n value={_value}\n valuesDivider={hiddenInputValuesDivider}\n disabled={disabled}\n {...hiddenInputProps}\n />\n </>\n );\n});\n\nTagsInput.classes = { ...InputBase.classes, ...Combobox.classes };\nTagsInput.displayName = '@mantine/core/TagsInput';\n\nexport namespace TagsInput {\n export type Props = TagsInputProps;\n export type StylesNames = TagsInputStylesNames;\n export type Factory = TagsInputFactory;\n}\n"],"mappings":"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"}
@@ -14,15 +14,16 @@ function getTextTruncate(truncate) {
14
14
  if (truncate === "end" || truncate) return "end";
15
15
  }
16
16
  const defaultProps = { inherit: false };
17
- const varsResolver = createVarsResolver((theme, { variant, lineClamp, gradient, size }) => ({ root: {
17
+ const varsResolver = createVarsResolver((theme, { variant, lineClamp, gradient, size, textWrap }) => ({ root: {
18
18
  "--text-fz": getFontSize(size),
19
19
  "--text-lh": getLineHeight(size),
20
20
  "--text-gradient": variant === "gradient" ? getGradient(gradient, theme) : void 0,
21
- "--text-line-clamp": typeof lineClamp === "number" ? lineClamp.toString() : void 0
21
+ "--text-line-clamp": typeof lineClamp === "number" ? lineClamp.toString() : void 0,
22
+ "--text-text-wrap": textWrap
22
23
  } }));
23
24
  const Text = polymorphicFactory((_props) => {
24
25
  const props = useProps("Text", defaultProps, _props);
25
- const { lineClamp, truncate, inline, inherit, gradient, span, __staticSelector, vars, className, style, classNames, styles, unstyled, variant, mod, size, attributes, ...others } = props;
26
+ const { lineClamp, truncate, inline, inherit, gradient, span, textWrap, __staticSelector, vars, className, style, classNames, styles, unstyled, variant, mod, size, attributes, ...others } = props;
26
27
  return /* @__PURE__ */ jsx(Box, {
27
28
  ...useStyles({
28
29
  name: ["Text", __staticSelector],
@@ -1 +1 @@
1
- {"version":3,"file":"Text.mjs","names":["classes"],"sources":["../../../src/components/Text/Text.tsx"],"sourcesContent":["import {\n Box,\n BoxProps,\n createVarsResolver,\n getFontSize,\n getGradient,\n getLineHeight,\n MantineFontSize,\n MantineGradient,\n MantineLineHeight,\n polymorphicFactory,\n PolymorphicFactory,\n StylesApiProps,\n useProps,\n useStyles,\n} from '../../core';\nimport classes from './Text.module.css';\n\ntype TextTruncate = 'end' | 'start' | boolean;\n\nfunction getTextTruncate(truncate: TextTruncate | undefined) {\n if (truncate === 'start') {\n return 'start';\n }\n\n if (truncate === 'end' || truncate) {\n return 'end';\n }\n\n return undefined;\n}\n\nexport type TextStylesNames = 'root';\nexport type TextVariant = 'text' | 'gradient';\nexport type TextCssVariables = {\n root: '--text-gradient' | '--text-line-clamp' | '--text-fz' | '--text-lh';\n};\n\nexport interface TextProps extends BoxProps, StylesApiProps<TextFactory> {\n __staticSelector?: string;\n\n /** Controls `font-size` and `line-height` @default 'md' */\n size?: MantineFontSize | MantineLineHeight;\n\n /** Number of lines after which Text will be truncated */\n lineClamp?: number;\n\n /** Side on which Text must be truncated, if `true`, text is truncated from the start */\n truncate?: TextTruncate;\n\n /** Sets `line-height` to 1 for centering @default false */\n inline?: boolean;\n\n /** Determines whether font properties should be inherited from the parent @default false */\n inherit?: boolean;\n\n /** Gradient configuration, ignored when `variant` is not `gradient` @default theme.defaultGradient */\n gradient?: MantineGradient;\n\n /** Shorthand for `component=\"span\"` */\n span?: boolean;\n}\n\nexport type TextFactory = PolymorphicFactory<{\n props: TextProps;\n defaultComponent: 'p';\n defaultRef: HTMLParagraphElement;\n stylesNames: TextStylesNames;\n vars: TextCssVariables;\n variant: TextVariant;\n}>;\n\nconst defaultProps = {\n inherit: false,\n} satisfies Partial<TextProps>;\n\nconst varsResolver = createVarsResolver<TextFactory>(\n // Will be removed in 9.0\n\n (theme, { variant, lineClamp, gradient, size }) => ({\n root: {\n '--text-fz': getFontSize(size),\n '--text-lh': getLineHeight(size),\n '--text-gradient': variant === 'gradient' ? getGradient(gradient, theme) : undefined,\n '--text-line-clamp': typeof lineClamp === 'number' ? lineClamp.toString() : undefined,\n },\n })\n);\n\nexport const Text = polymorphicFactory<TextFactory>((_props) => {\n const props = useProps('Text', defaultProps, _props);\n const {\n lineClamp,\n truncate,\n inline,\n inherit,\n gradient,\n span,\n __staticSelector,\n vars,\n className,\n style,\n classNames,\n styles,\n unstyled,\n variant,\n mod,\n size,\n attributes,\n ...others\n } = props;\n\n const getStyles = useStyles<TextFactory>({\n name: ['Text', __staticSelector],\n props,\n classes,\n className,\n style,\n classNames,\n styles,\n unstyled,\n attributes,\n vars,\n varsResolver,\n });\n\n return (\n <Box\n {...getStyles('root', { focusable: true })}\n component={span ? 'span' : 'p'}\n variant={variant}\n mod={[\n {\n 'data-truncate': getTextTruncate(truncate),\n 'data-line-clamp': typeof lineClamp === 'number',\n 'data-inline': inline,\n 'data-inherit': inherit,\n },\n mod,\n ]}\n size={size}\n {...others}\n />\n );\n});\n\nText.classes = classes;\nText.varsResolver = varsResolver;\nText.displayName = '@mantine/core/Text';\n\nexport namespace Text {\n export type Props = TextProps;\n export type StylesNames = TextStylesNames;\n export type CssVariables = TextCssVariables;\n export type Factory = TextFactory;\n export type Variant = TextVariant;\n}\n"],"mappings":";;;;;;;;;;;AAoBA,SAAS,gBAAgB,UAAoC;CAC3D,IAAI,aAAa,SACf,OAAO;CAGT,IAAI,aAAa,SAAS,UACxB,OAAO;AAIX;AA0CA,MAAM,eAAe,EACnB,SAAS,MACX;AAEA,MAAM,eAAe,oBAGlB,OAAO,EAAE,SAAS,WAAW,UAAU,YAAY,EAClD,MAAM;CACJ,aAAa,YAAY,IAAI;CAC7B,aAAa,cAAc,IAAI;CAC/B,mBAAmB,YAAY,aAAa,YAAY,UAAU,KAAK,IAAI,KAAA;CAC3E,qBAAqB,OAAO,cAAc,WAAW,UAAU,SAAS,IAAI,KAAA;AAC9E,EACF,EACF;AAEA,MAAa,OAAO,oBAAiC,WAAW;CAC9D,MAAM,QAAQ,SAAS,QAAQ,cAAc,MAAM;CACnD,MAAM,EACJ,WACA,UACA,QACA,SACA,UACA,MACA,kBACA,MACA,WACA,OACA,YACA,QACA,UACA,SACA,KACA,MACA,YACA,GAAG,WACD;CAgBJ,OACE,oBAAC,KAAD;EACE,GAhBc,UAAuB;GACvC,MAAM,CAAC,QAAQ,gBAAgB;GAC/B;GACA,SAAA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACF,CAIgB,EAAE,QAAQ,EAAE,WAAW,KAAK,CAAC;EACzC,WAAW,OAAO,SAAS;EAClB;EACT,KAAK,CACH;GACE,iBAAiB,gBAAgB,QAAQ;GACzC,mBAAmB,OAAO,cAAc;GACxC,eAAe;GACf,gBAAgB;EAClB,GACA,GACF;EACM;EACN,GAAI;CACL,CAAA;AAEL,CAAC;AAED,KAAK,UAAUA;AACf,KAAK,eAAe;AACpB,KAAK,cAAc"}
1
+ {"version":3,"file":"Text.mjs","names":["classes"],"sources":["../../../src/components/Text/Text.tsx"],"sourcesContent":["import {\n Box,\n BoxProps,\n createVarsResolver,\n getFontSize,\n getGradient,\n getLineHeight,\n MantineFontSize,\n MantineGradient,\n MantineLineHeight,\n polymorphicFactory,\n PolymorphicFactory,\n StylesApiProps,\n useProps,\n useStyles,\n} from '../../core';\nimport classes from './Text.module.css';\n\ntype TextTruncate = 'end' | 'start' | boolean;\n\nfunction getTextTruncate(truncate: TextTruncate | undefined) {\n if (truncate === 'start') {\n return 'start';\n }\n\n if (truncate === 'end' || truncate) {\n return 'end';\n }\n\n return undefined;\n}\n\nexport type TextStylesNames = 'root';\nexport type TextVariant = 'text' | 'gradient';\nexport type TextCssVariables = {\n root: '--text-gradient' | '--text-line-clamp' | '--text-fz' | '--text-lh' | '--text-text-wrap';\n};\n\nexport interface TextProps extends BoxProps, StylesApiProps<TextFactory> {\n __staticSelector?: string;\n\n /** Controls `font-size` and `line-height` @default 'md' */\n size?: MantineFontSize | MantineLineHeight;\n\n /** Number of lines after which Text will be truncated */\n lineClamp?: number;\n\n /** Side on which Text must be truncated, if `true`, text is truncated from the start */\n truncate?: TextTruncate;\n\n /** Sets `line-height` to 1 for centering @default false */\n inline?: boolean;\n\n /** Determines whether font properties should be inherited from the parent @default false */\n inherit?: boolean;\n\n /** Gradient configuration, ignored when `variant` is not `gradient` @default theme.defaultGradient */\n gradient?: MantineGradient;\n\n /** Shorthand for `component=\"span\"` */\n span?: boolean;\n\n /** Controls `text-wrap` CSS property */\n textWrap?: 'wrap' | 'nowrap' | 'balance' | 'pretty' | 'stable';\n}\n\nexport type TextFactory = PolymorphicFactory<{\n props: TextProps;\n defaultComponent: 'p';\n defaultRef: HTMLParagraphElement;\n stylesNames: TextStylesNames;\n vars: TextCssVariables;\n variant: TextVariant;\n}>;\n\nconst defaultProps = {\n inherit: false,\n} satisfies Partial<TextProps>;\n\nconst varsResolver = createVarsResolver<TextFactory>(\n // Will be removed in 9.0\n\n (theme, { variant, lineClamp, gradient, size, textWrap }) => ({\n root: {\n '--text-fz': getFontSize(size),\n '--text-lh': getLineHeight(size),\n '--text-gradient': variant === 'gradient' ? getGradient(gradient, theme) : undefined,\n '--text-line-clamp': typeof lineClamp === 'number' ? lineClamp.toString() : undefined,\n '--text-text-wrap': textWrap,\n },\n })\n);\n\nexport const Text = polymorphicFactory<TextFactory>((_props) => {\n const props = useProps('Text', defaultProps, _props);\n const {\n lineClamp,\n truncate,\n inline,\n inherit,\n gradient,\n span,\n textWrap,\n __staticSelector,\n vars,\n className,\n style,\n classNames,\n styles,\n unstyled,\n variant,\n mod,\n size,\n attributes,\n ...others\n } = props;\n\n const getStyles = useStyles<TextFactory>({\n name: ['Text', __staticSelector],\n props,\n classes,\n className,\n style,\n classNames,\n styles,\n unstyled,\n attributes,\n vars,\n varsResolver,\n });\n\n return (\n <Box\n {...getStyles('root', { focusable: true })}\n component={span ? 'span' : 'p'}\n variant={variant}\n mod={[\n {\n 'data-truncate': getTextTruncate(truncate),\n 'data-line-clamp': typeof lineClamp === 'number',\n 'data-inline': inline,\n 'data-inherit': inherit,\n },\n mod,\n ]}\n size={size}\n {...others}\n />\n );\n});\n\nText.classes = classes;\nText.varsResolver = varsResolver;\nText.displayName = '@mantine/core/Text';\n\nexport namespace Text {\n export type Props = TextProps;\n export type StylesNames = TextStylesNames;\n export type CssVariables = TextCssVariables;\n export type Factory = TextFactory;\n export type Variant = TextVariant;\n}\n"],"mappings":";;;;;;;;;;;AAoBA,SAAS,gBAAgB,UAAoC;CAC3D,IAAI,aAAa,SACf,OAAO;CAGT,IAAI,aAAa,SAAS,UACxB,OAAO;AAIX;AA6CA,MAAM,eAAe,EACnB,SAAS,MACX;AAEA,MAAM,eAAe,oBAGlB,OAAO,EAAE,SAAS,WAAW,UAAU,MAAM,gBAAgB,EAC5D,MAAM;CACJ,aAAa,YAAY,IAAI;CAC7B,aAAa,cAAc,IAAI;CAC/B,mBAAmB,YAAY,aAAa,YAAY,UAAU,KAAK,IAAI,KAAA;CAC3E,qBAAqB,OAAO,cAAc,WAAW,UAAU,SAAS,IAAI,KAAA;CAC5E,oBAAoB;AACtB,EACF,EACF;AAEA,MAAa,OAAO,oBAAiC,WAAW;CAC9D,MAAM,QAAQ,SAAS,QAAQ,cAAc,MAAM;CACnD,MAAM,EACJ,WACA,UACA,QACA,SACA,UACA,MACA,UACA,kBACA,MACA,WACA,OACA,YACA,QACA,UACA,SACA,KACA,MACA,YACA,GAAG,WACD;CAgBJ,OACE,oBAAC,KAAD;EACE,GAhBc,UAAuB;GACvC,MAAM,CAAC,QAAQ,gBAAgB;GAC/B;GACA,SAAA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACF,CAIgB,EAAE,QAAQ,EAAE,WAAW,KAAK,CAAC;EACzC,WAAW,OAAO,SAAS;EAClB;EACT,KAAK,CACH;GACE,iBAAiB,gBAAgB,QAAQ;GACzC,mBAAmB,OAAO,cAAc;GACxC,eAAe;GACf,gBAAgB;EAClB,GACA,GACF;EACM;EACN,GAAI;CACL,CAAA;AAEL,CAAC;AAED,KAAK,UAAUA;AACf,KAAK,eAAe;AACpB,KAAK,cAAc"}
@@ -1 +1 @@
1
- {"version":3,"file":"Text.module.mjs","names":[],"sources":["../../../src/components/Text/Text.module.css"],"sourcesContent":[".root {\n -webkit-tap-highlight-color: transparent;\n text-decoration: none;\n font-size: var(--text-fz, var(--mantine-font-size-md));\n line-height: var(--text-lh, var(--mantine-line-height-md));\n font-weight: var(--mantine-font-weight-regular);\n margin: 0;\n padding: 0;\n\n &:where([data-truncate]) {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n &:where([data-truncate='start']) {\n direction: rtl;\n text-align: right;\n\n @mixin where-rtl {\n direction: ltr;\n text-align: left;\n }\n }\n\n &:where([data-variant='gradient']) {\n background-image: var(--text-gradient);\n background-clip: text;\n -webkit-background-clip: text;\n -webkit-text-fill-color: transparent;\n }\n\n &:where([data-line-clamp]) {\n overflow: hidden;\n text-overflow: ellipsis;\n display: -webkit-box;\n -webkit-line-clamp: var(--text-line-clamp);\n -webkit-box-orient: vertical;\n }\n\n &:where([data-inherit]) {\n line-height: inherit;\n font-weight: inherit;\n font-size: inherit;\n }\n\n &:where([data-inline]) {\n line-height: 1;\n }\n}\n"],"mappings":""}
1
+ {"version":3,"file":"Text.module.mjs","names":[],"sources":["../../../src/components/Text/Text.module.css"],"sourcesContent":[".root {\n -webkit-tap-highlight-color: transparent;\n text-decoration: none;\n font-size: var(--text-fz, var(--mantine-font-size-md));\n line-height: var(--text-lh, var(--mantine-line-height-md));\n font-weight: var(--mantine-font-weight-regular);\n text-wrap: var(--text-text-wrap, var(--mantine-text-wrap, wrap));\n margin: 0;\n padding: 0;\n\n &:where([data-truncate]) {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n &:where([data-truncate='start']) {\n direction: rtl;\n text-align: end;\n\n @mixin where-rtl {\n direction: ltr;\n text-align: start;\n }\n }\n\n &:where([data-variant='gradient']) {\n background-image: var(--text-gradient);\n background-clip: text;\n -webkit-background-clip: text;\n -webkit-text-fill-color: transparent;\n }\n\n &:where([data-line-clamp]) {\n overflow: hidden;\n text-overflow: ellipsis;\n display: -webkit-box;\n -webkit-line-clamp: var(--text-line-clamp);\n -webkit-box-orient: vertical;\n }\n\n &:where([data-inherit]) {\n line-height: inherit;\n font-weight: inherit;\n font-size: inherit;\n }\n\n &:where([data-inline]) {\n line-height: 1;\n }\n}\n"],"mappings":""}
@@ -7,7 +7,7 @@ import { TextareaAutosize } from "./Autosize.mjs";
7
7
  import { jsx } from "react/jsx-runtime";
8
8
  //#region packages/@mantine/core/src/components/Textarea/Textarea.tsx
9
9
  const Textarea = factory((props) => {
10
- const { autosize, maxRows, minRows, __staticSelector, resize, ...others } = useProps([
10
+ const { autosize, maxRows, minRows, __staticSelector, resize, bottomSection, bottomSectionProps, ...others } = useProps([
11
11
  "Input",
12
12
  "InputWrapper",
13
13
  "Textarea"
@@ -21,6 +21,8 @@ const Textarea = factory((props) => {
21
21
  component: shouldAutosize ? TextareaAutosize : "textarea",
22
22
  ...others,
23
23
  __staticSelector: __staticSelector || "Textarea",
24
+ __bottomSection: bottomSection,
25
+ __bottomSectionProps: bottomSectionProps,
24
26
  multiline: true,
25
27
  "data-no-overflow": autosize && maxRows === void 0 || void 0,
26
28
  __vars: { "--input-resize": resize },
@@ -1 +1 @@
1
- {"version":3,"file":"Textarea.mjs","names":[],"sources":["../../../src/components/Textarea/Textarea.tsx"],"sourcesContent":["import {\n BoxProps,\n ElementProps,\n factory,\n Factory,\n getEnv,\n StylesApiProps,\n useProps,\n} from '../../core';\nimport { __BaseInputProps, __InputStylesNames } from '../Input';\nimport { InputBase } from '../InputBase';\nimport { TextareaAutosize } from './Autosize';\n\nexport interface TextareaProps\n extends\n BoxProps,\n __BaseInputProps,\n StylesApiProps<TextareaFactory>,\n ElementProps<'textarea', 'size'> {\n __staticSelector?: string;\n\n /** If set, enables textarea height growing with its content @default false */\n autosize?: boolean;\n\n /** Maximum rows for autosize textarea to grow, ignored if `autosize` prop is not set */\n maxRows?: number;\n\n /** Minimum rows of autosize textarea, ignored if `autosize` prop is not set */\n minRows?: number;\n\n /** Controls `resize` CSS property @default 'none' */\n resize?: React.CSSProperties['resize'];\n}\n\nexport type TextareaFactory = Factory<{\n props: TextareaProps;\n ref: HTMLTextAreaElement;\n stylesNames: __InputStylesNames;\n}>;\n\nexport const Textarea = factory<TextareaFactory>((props) => {\n const { autosize, maxRows, minRows, __staticSelector, resize, ...others } = useProps(\n ['Input', 'InputWrapper', 'Textarea'],\n null,\n props\n );\n\n const shouldAutosize = autosize && getEnv() !== 'test';\n const autosizeProps = shouldAutosize ? { maxRows, minRows } : {};\n\n return (\n <InputBase<any>\n component={shouldAutosize ? TextareaAutosize : 'textarea'}\n {...others}\n __staticSelector={__staticSelector || 'Textarea'}\n multiline\n data-no-overflow={(autosize && maxRows === undefined) || undefined}\n __vars={{ '--input-resize': resize }}\n {...autosizeProps}\n />\n );\n});\n\nTextarea.classes = InputBase.classes;\nTextarea.displayName = '@mantine/core/Textarea';\n\nexport namespace Textarea {\n export type Props = TextareaProps;\n export type Factory = TextareaFactory;\n}\n"],"mappings":";;;;;;;;AAwCA,MAAa,WAAW,SAA0B,UAAU;CAC1D,MAAM,EAAE,UAAU,SAAS,SAAS,kBAAkB,QAAQ,GAAG,WAAW,SAC1E;EAAC;EAAS;EAAgB;CAAU,GACpC,MACA,KACF;CAEA,MAAM,iBAAiB,YAAY,OAAO,MAAM;CAChD,MAAM,gBAAgB,iBAAiB;EAAE;EAAS;CAAQ,IAAI,CAAC;CAE/D,OACE,oBAAC,WAAD;EACE,WAAW,iBAAiB,mBAAmB;EAC/C,GAAI;EACJ,kBAAkB,oBAAoB;EACtC,WAAA;EACA,oBAAmB,YAAY,YAAY,KAAA,KAAc,KAAA;EACzD,QAAQ,EAAE,kBAAkB,OAAO;EACnC,GAAI;CACL,CAAA;AAEL,CAAC;AAED,SAAS,UAAU,UAAU;AAC7B,SAAS,cAAc"}
1
+ {"version":3,"file":"Textarea.mjs","names":[],"sources":["../../../src/components/Textarea/Textarea.tsx"],"sourcesContent":["import {\n BoxProps,\n ElementProps,\n factory,\n Factory,\n getEnv,\n StylesApiProps,\n useProps,\n} from '../../core';\nimport { __BaseInputProps, __InputStylesNames } from '../Input';\nimport { InputBase } from '../InputBase';\nimport { TextareaAutosize } from './Autosize';\n\nexport interface TextareaProps\n extends\n BoxProps,\n __BaseInputProps,\n StylesApiProps<TextareaFactory>,\n ElementProps<'textarea', 'size'> {\n __staticSelector?: string;\n\n /** If set, enables textarea height growing with its content @default false */\n autosize?: boolean;\n\n /** Maximum rows for autosize textarea to grow, ignored if `autosize` prop is not set */\n maxRows?: number;\n\n /** Minimum rows of autosize textarea, ignored if `autosize` prop is not set */\n minRows?: number;\n\n /** Controls `resize` CSS property @default 'none' */\n resize?: React.CSSProperties['resize'];\n\n /** Content rendered at the bottom of the input, inside the border */\n bottomSection?: React.ReactNode;\n\n /** Props passed down to the `bottomSection` element */\n bottomSectionProps?: React.ComponentProps<'div'>;\n}\n\nexport type TextareaFactory = Factory<{\n props: TextareaProps;\n ref: HTMLTextAreaElement;\n stylesNames: __InputStylesNames;\n}>;\n\nexport const Textarea = factory<TextareaFactory>((props) => {\n const {\n autosize,\n maxRows,\n minRows,\n __staticSelector,\n resize,\n bottomSection,\n bottomSectionProps,\n ...others\n } = useProps(['Input', 'InputWrapper', 'Textarea'], null, props);\n\n const shouldAutosize = autosize && getEnv() !== 'test';\n const autosizeProps = shouldAutosize ? { maxRows, minRows } : {};\n\n return (\n <InputBase<any>\n component={shouldAutosize ? TextareaAutosize : 'textarea'}\n {...others}\n __staticSelector={__staticSelector || 'Textarea'}\n __bottomSection={bottomSection}\n __bottomSectionProps={bottomSectionProps}\n multiline\n data-no-overflow={(autosize && maxRows === undefined) || undefined}\n __vars={{ '--input-resize': resize }}\n {...autosizeProps}\n />\n );\n});\n\nTextarea.classes = InputBase.classes;\nTextarea.displayName = '@mantine/core/Textarea';\n\nexport namespace Textarea {\n export type Props = TextareaProps;\n export type Factory = TextareaFactory;\n}\n"],"mappings":";;;;;;;;AA8CA,MAAa,WAAW,SAA0B,UAAU;CAC1D,MAAM,EACJ,UACA,SACA,SACA,kBACA,QACA,eACA,oBACA,GAAG,WACD,SAAS;EAAC;EAAS;EAAgB;CAAU,GAAG,MAAM,KAAK;CAE/D,MAAM,iBAAiB,YAAY,OAAO,MAAM;CAChD,MAAM,gBAAgB,iBAAiB;EAAE;EAAS;CAAQ,IAAI,CAAC;CAE/D,OACE,oBAAC,WAAD;EACE,WAAW,iBAAiB,mBAAmB;EAC/C,GAAI;EACJ,kBAAkB,oBAAoB;EACtC,iBAAiB;EACjB,sBAAsB;EACtB,WAAA;EACA,oBAAmB,YAAY,YAAY,KAAA,KAAc,KAAA;EACzD,QAAQ,EAAE,kBAAkB,OAAO;EACnC,GAAI;CACL,CAAA;AAEL,CAAC;AAED,SAAS,UAAU,UAAU;AAC7B,SAAS,cAAc"}
@@ -1 +1 @@
1
- {"version":3,"file":"Timeline.module.mjs","names":[],"sources":["../../../src/components/Timeline/Timeline.module.css"],"sourcesContent":[".root {\n --offset: calc(var(--tl-bullet-size) / 2 + var(--tl-line-width) / 2);\n --tl-bullet-size: 20px;\n --tl-line-width: 4px;\n --tl-radius: 1000px;\n --tl-color: var(--mantine-primary-color-filled);\n\n &:where([data-align='left']) {\n padding-inline-start: var(--offset);\n }\n\n &:where([data-align='right']) {\n padding-inline-end: var(--offset);\n }\n}\n\n.itemTitle {\n font-weight: var(--mantine-font-weight-medium);\n line-height: 1;\n margin-bottom: calc(var(--mantine-spacing-xs) / 2);\n}\n\n.item {\n --item-border: var(--tl-line-width) var(--tli-border-style, solid) var(--item-border-color);\n\n position: relative;\n color: var(--mantine-color-text);\n\n &::before {\n content: '';\n pointer-events: none;\n position: absolute;\n top: 0;\n left: var(--timeline-line-left, 0);\n right: var(--timeline-line-right, 0);\n bottom: calc(var(--mantine-spacing-xl) * -1);\n border-inline-start: var(--item-border);\n display: var(--timeline-line-display, none);\n\n .root[data-align='left'] & {\n --timeline-line-left: calc(var(--tl-line-width) * -1);\n --timeline-line-right: auto;\n\n @mixin rtl {\n --timeline-line-left: auto;\n --timeline-line-right: calc(var(--tl-line-width) * -1);\n }\n }\n\n .root[data-align='right'] & {\n --timeline-line-left: auto;\n --timeline-line-right: calc(var(--tl-line-width) * -1);\n\n @mixin rtl {\n --timeline-line-left: calc(var(--tl-line-width) * -1);\n --timeline-line-right: auto;\n }\n }\n }\n\n .root:where([data-align='left']) & {\n padding-inline-start: var(--offset);\n text-align: left;\n }\n\n .root:where([data-align='right']) & {\n padding-inline-end: var(--offset);\n text-align: right;\n }\n\n @mixin where-light {\n --item-border-color: var(--mantine-color-gray-3);\n }\n\n @mixin where-dark {\n --item-border-color: var(--mantine-color-dark-4);\n }\n\n &:where([data-line-active]) {\n &::before {\n border-color: var(--tli-color, var(--tl-color));\n }\n }\n\n &:where(:not(:last-of-type)) {\n --timeline-line-display: block;\n }\n\n &:where(:not(:first-of-type)) {\n margin-top: var(--mantine-spacing-xl);\n }\n}\n\n.itemBullet {\n width: var(--tl-bullet-size);\n height: var(--tl-bullet-size);\n border-radius: var(--tli-radius, var(--tl-radius));\n border: var(--tl-line-width) solid;\n background-color: var(--mantine-color-body);\n position: absolute;\n top: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mantine-color-text);\n\n @mixin where-light {\n border-color: var(--mantine-color-gray-3);\n }\n\n @mixin where-dark {\n border-color: var(--mantine-color-dark-4);\n }\n\n .root:where([data-align='left']) & {\n left: calc((var(--tl-bullet-size) / 2 + var(--tl-line-width) / 2) * -1);\n right: auto;\n\n @mixin where-rtl {\n left: auto;\n right: calc((var(--tl-bullet-size) / 2 + var(--tl-line-width) / 2) * -1);\n }\n }\n\n .root:where([data-align='right']) & {\n left: auto;\n right: calc((var(--tl-bullet-size) / 2 + var(--tl-line-width) / 2) * -1);\n\n @mixin where-rtl {\n left: calc((var(--tl-bullet-size) / 2 + var(--tl-line-width) / 2) * -1);\n right: auto;\n }\n }\n\n &:where([data-with-child]) {\n border-width: var(--tl-line-width);\n\n @mixin where-light {\n background-color: var(--mantine-color-gray-3);\n }\n\n @mixin where-dark {\n background-color: var(--mantine-color-dark-4);\n }\n }\n\n &:where([data-active]) {\n border-color: var(--tli-color, var(--tl-color));\n background-color: var(--mantine-color-white);\n color: var(--tl-icon-color, var(--mantine-color-white));\n\n &:where([data-with-child]) {\n background-color: var(--tli-color, var(--tl-color));\n color: var(--tl-icon-color, var(--mantine-color-white));\n }\n }\n}\n\n.itemBody {\n .root:where([data-align='left']) & {\n padding-inline-start: var(--offset);\n text-align: left;\n\n @mixin where-rtl {\n text-align: right;\n }\n }\n\n .root:where([data-align='right']) & {\n padding-inline-end: var(--offset);\n text-align: right;\n\n @mixin where-rtl {\n text-align: left;\n }\n }\n}\n"],"mappings":""}
1
+ {"version":3,"file":"Timeline.module.mjs","names":[],"sources":["../../../src/components/Timeline/Timeline.module.css"],"sourcesContent":[".root {\n --offset: calc(var(--tl-bullet-size) / 2 + var(--tl-line-width) / 2);\n --tl-bullet-size: 20px;\n --tl-line-width: 4px;\n --tl-radius: 1000px;\n --tl-color: var(--mantine-primary-color-filled);\n\n &:where([data-align='left']) {\n padding-inline-start: var(--offset);\n }\n\n &:where([data-align='right']) {\n padding-inline-end: var(--offset);\n }\n}\n\n.itemTitle {\n font-weight: var(--mantine-font-weight-medium);\n line-height: 1;\n margin-bottom: calc(var(--mantine-spacing-xs) / 2);\n}\n\n.item {\n --item-border: var(--tl-line-width) var(--tli-border-style, solid) var(--item-border-color);\n\n position: relative;\n color: var(--mantine-color-text);\n\n &::before {\n content: '';\n pointer-events: none;\n position: absolute;\n top: 0;\n inset-inline-start: var(--timeline-line-start, 0);\n inset-inline-end: var(--timeline-line-end, 0);\n bottom: calc(var(--mantine-spacing-xl) * -1);\n border-inline-start: var(--item-border);\n display: var(--timeline-line-display, none);\n\n .root[data-align='left'] & {\n --timeline-line-start: calc(var(--tl-line-width) * -1);\n --timeline-line-end: auto;\n }\n\n .root[data-align='right'] & {\n --timeline-line-start: auto;\n --timeline-line-end: calc(var(--tl-line-width) * -1);\n }\n }\n\n .root:where([data-align='left']) & {\n padding-inline-start: var(--offset);\n text-align: start;\n }\n\n .root:where([data-align='right']) & {\n padding-inline-end: var(--offset);\n text-align: end;\n }\n\n @mixin where-light {\n --item-border-color: var(--mantine-color-gray-3);\n }\n\n @mixin where-dark {\n --item-border-color: var(--mantine-color-dark-4);\n }\n\n &:where([data-line-active]) {\n &::before {\n border-color: var(--tli-color, var(--tl-color));\n }\n }\n\n &:where(:not(:last-of-type)) {\n --timeline-line-display: block;\n }\n\n &:where(:not(:first-of-type)) {\n margin-top: var(--mantine-spacing-xl);\n }\n}\n\n.itemBullet {\n width: var(--tl-bullet-size);\n height: var(--tl-bullet-size);\n border-radius: var(--tli-radius, var(--tl-radius));\n border: var(--tl-line-width) solid;\n background-color: var(--mantine-color-body);\n position: absolute;\n top: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mantine-color-text);\n\n @mixin where-light {\n border-color: var(--mantine-color-gray-3);\n }\n\n @mixin where-dark {\n border-color: var(--mantine-color-dark-4);\n }\n\n .root:where([data-align='left']) & {\n inset-inline-start: calc((var(--tl-bullet-size) / 2 + var(--tl-line-width) / 2) * -1);\n inset-inline-end: auto;\n }\n\n .root:where([data-align='right']) & {\n inset-inline-start: auto;\n inset-inline-end: calc((var(--tl-bullet-size) / 2 + var(--tl-line-width) / 2) * -1);\n }\n\n &:where([data-with-child]) {\n border-width: var(--tl-line-width);\n\n @mixin where-light {\n background-color: var(--mantine-color-gray-3);\n }\n\n @mixin where-dark {\n background-color: var(--mantine-color-dark-4);\n }\n }\n\n &:where([data-active]) {\n border-color: var(--tli-color, var(--tl-color));\n background-color: var(--mantine-color-white);\n color: var(--tl-icon-color, var(--mantine-color-white));\n\n &:where([data-with-child]) {\n background-color: var(--tli-color, var(--tl-color));\n color: var(--tl-icon-color, var(--mantine-color-white));\n }\n }\n}\n\n.itemBody {\n .root:where([data-align='left']) & {\n padding-inline-start: var(--offset);\n text-align: start;\n }\n\n .root:where([data-align='right']) & {\n padding-inline-end: var(--offset);\n text-align: end;\n }\n}\n"],"mappings":""}
@@ -9,6 +9,7 @@ import { useStyles } from "../../core/styles-api/use-styles/use-styles.mjs";
9
9
  import { factory } from "../../core/factory/factory.mjs";
10
10
  import { Box } from "../../core/Box/Box.mjs";
11
11
  import { useDirection } from "../../core/DirectionProvider/DirectionProvider.mjs";
12
+ import { getArrowMergeDropdownStyles } from "../../utils/Floating/FloatingArrow/get-arrow-position-styles.mjs";
12
13
  import { FloatingArrow } from "../../utils/Floating/FloatingArrow/FloatingArrow.mjs";
13
14
  import { getFloatingPosition } from "../../utils/Floating/get-floating-position/get-floating-position.mjs";
14
15
  import { OptionalPortal } from "../Portal/OptionalPortal.mjs";
@@ -102,6 +103,10 @@ const Tooltip = factory((_props) => {
102
103
  const child = getSingleElementChild(children);
103
104
  if (!target && !child) throw new Error("[@mantine/core] Tooltip component children should be an element or a component that accepts ref, fragments, strings, numbers and other primitive values are not supported");
104
105
  const tooltipStyles = getStyles("tooltip");
106
+ const mergeStyles = arrowPosition === "merge" && withArrow ? getArrowMergeDropdownStyles({
107
+ position: tooltip.placement,
108
+ dir
109
+ }) : void 0;
105
110
  if (target) {
106
111
  const transition = getTransitionProps(transitionProps, {
107
112
  duration: 100,
@@ -127,6 +132,7 @@ const Tooltip = factory((_props) => {
127
132
  style: {
128
133
  ...tooltipStyles.style,
129
134
  ...transitionStyles,
135
+ ...mergeStyles,
130
136
  zIndex,
131
137
  top: tooltip.y ?? 0,
132
138
  left: tooltip.x ?? 0
@@ -173,6 +179,7 @@ const Tooltip = factory((_props) => {
173
179
  style: {
174
180
  ...getStyles("tooltip").style,
175
181
  ...transitionStyles,
182
+ ...mergeStyles,
176
183
  zIndex,
177
184
  top: tooltip.y ?? 0,
178
185
  left: tooltip.x ?? 0
@@ -1 +1 @@
1
- {"version":3,"file":"Tooltip.mjs","names":["classes"],"sources":["../../../src/components/Tooltip/Tooltip.tsx"],"sourcesContent":["import { cloneElement, useEffect, useRef } from 'react';\nimport cx from 'clsx';\nimport { useMergedRef } from '@mantine/hooks';\nimport {\n Box,\n createVarsResolver,\n factory,\n Factory,\n getDefaultZIndex,\n getRadius,\n getRefProp,\n getSingleElementChild,\n useDirection,\n useProps,\n useStyles,\n} from '../../core';\nimport {\n ArrowPosition,\n FloatingArrow,\n FloatingAxesOffsets,\n FloatingPosition,\n FloatingStrategy,\n getFloatingPosition,\n} from '../../utils/Floating';\nimport { OptionalPortal } from '../Portal';\nimport { getTransitionProps, Transition, TransitionOverride } from '../Transition';\nimport { TooltipBaseProps, TooltipCssVariables, TooltipStylesNames } from './Tooltip.types';\nimport { TooltipFloating, type TooltipFloatingProps } from './TooltipFloating/TooltipFloating';\nimport {\n TooltipGroup,\n type TooltipGroupProps,\n type TooltipGroupContextValue,\n} from './TooltipGroup/TooltipGroup';\nimport { useTooltip } from './use-tooltip';\nimport classes from './Tooltip.module.css';\nexport interface TooltipProps extends TooltipBaseProps {\n /** Called when tooltip position changes */\n onPositionChange?: (position: FloatingPosition) => void;\n\n /** Open delay in ms */\n openDelay?: number;\n\n /** Close delay in ms @default 0 */\n closeDelay?: number;\n\n /** Controlled opened state */\n opened?: boolean;\n\n /** Uncontrolled tooltip initial opened state */\n defaultOpened?: boolean;\n\n /** Space between target element and tooltip in px @default 5 */\n offset?: number | FloatingAxesOffsets;\n\n /** If set, the tooltip has an arrow @default false */\n withArrow?: boolean;\n\n /** Arrow size in px @default 4 */\n arrowSize?: number;\n\n /** Arrow offset in px @default 5 */\n arrowOffset?: number;\n\n /** Arrow `border-radius` in px @default 0 */\n arrowRadius?: number;\n\n /** Arrow position relative to the tooltip @default side */\n arrowPosition?: ArrowPosition;\n\n /** Props passed down to the `Transition` component that used to animate tooltip presence, use to configure duration and animation type @default { duration: 100, transition: 'fade' } */\n transitionProps?: TransitionOverride;\n\n /** Determines which events will be used to show tooltip @default { hover: true, focus: false, touch: false } */\n events?: { hover: boolean; focus: boolean; touch: boolean };\n\n /** Must be set if the tooltip target is an inline element */\n inline?: boolean;\n\n /** If set, the tooltip is not unmounted from the DOM when hidden, `display: none` styles are applied instead */\n keepMounted?: boolean;\n\n /** Changes floating ui [position strategy](https://floating-ui.com/docs/usefloating#strategy) @default 'absolute' */\n floatingStrategy?: FloatingStrategy;\n\n /** If set, adjusts text color based on background color for `filled` variant */\n autoContrast?: boolean;\n\n /** Selector, ref of an element or element itself that should be used for positioning */\n target?: React.RefObject<HTMLElement | null> | HTMLElement | null | string;\n}\n\nexport type TooltipFactory = Factory<{\n props: TooltipProps;\n ref: HTMLDivElement;\n stylesNames: TooltipStylesNames;\n vars: TooltipCssVariables;\n staticComponents: {\n Floating: typeof TooltipFloating;\n Group: typeof TooltipGroup;\n };\n}>;\n\nconst defaultProps = {\n position: 'top',\n refProp: 'ref',\n withinPortal: true,\n arrowSize: 4,\n arrowOffset: 5,\n arrowRadius: 0,\n arrowPosition: 'side',\n offset: 5,\n transitionProps: { duration: 100, transition: 'fade' },\n events: { hover: true, focus: false, touch: false },\n zIndex: getDefaultZIndex('popover'),\n middlewares: { flip: true, shift: true, inline: false },\n} satisfies Partial<TooltipProps>;\n\nconst varsResolver = createVarsResolver<TooltipFactory>(\n (theme, { radius, color, variant, autoContrast }) => {\n const colors = theme.variantColorResolver({\n theme,\n color: color || theme.primaryColor,\n autoContrast,\n variant: variant || 'filled',\n });\n\n return {\n tooltip: {\n '--tooltip-radius': radius === undefined ? undefined : getRadius(radius),\n '--tooltip-bg': color ? colors.background : undefined,\n '--tooltip-color': color ? colors.color : undefined,\n },\n };\n }\n);\n\nexport const Tooltip = factory<TooltipFactory>((_props) => {\n const props = useProps('Tooltip', defaultProps, _props);\n const {\n children,\n position,\n refProp,\n label,\n openDelay,\n closeDelay,\n onPositionChange,\n opened,\n defaultOpened,\n withinPortal,\n radius,\n color,\n classNames,\n styles,\n unstyled,\n style,\n className,\n withArrow,\n arrowSize,\n arrowOffset,\n arrowRadius,\n arrowPosition,\n offset,\n transitionProps,\n multiline,\n events,\n zIndex,\n disabled,\n onClick,\n onMouseEnter,\n onMouseLeave,\n inline,\n variant,\n keepMounted,\n vars,\n portalProps,\n mod,\n floatingStrategy,\n middlewares,\n autoContrast,\n attributes,\n target,\n ref,\n ...others\n } = props;\n\n const { dir } = useDirection();\n const arrowRef = useRef<HTMLDivElement>(null);\n\n const tooltip = useTooltip({\n position: getFloatingPosition(dir, position),\n closeDelay,\n openDelay,\n onPositionChange,\n opened,\n defaultOpened,\n events,\n arrowRef,\n arrowOffset,\n offset: typeof offset === 'number' ? offset + (withArrow ? arrowSize / 2 : 0) : offset,\n inline,\n strategy: floatingStrategy,\n middlewares,\n });\n\n useEffect(() => {\n const targetNode =\n target instanceof HTMLElement\n ? target\n : typeof target === 'string'\n ? document.querySelector(target)\n : target?.current || null;\n\n if (targetNode) {\n tooltip.reference(targetNode);\n }\n }, [target, tooltip]);\n\n const getStyles = useStyles<TooltipFactory>({\n name: 'Tooltip',\n props,\n classes,\n className,\n style,\n classNames,\n styles,\n unstyled,\n attributes,\n rootSelector: 'tooltip',\n vars,\n varsResolver,\n });\n\n const child = getSingleElementChild(children);\n if (!target && !child) {\n throw new Error(\n '[@mantine/core] Tooltip component children should be an element or a component that accepts ref, fragments, strings, numbers and other primitive values are not supported'\n );\n }\n\n const tooltipStyles = getStyles('tooltip');\n\n if (target) {\n const transition = getTransitionProps(transitionProps, { duration: 100, transition: 'fade' });\n return (\n <>\n <OptionalPortal {...portalProps} withinPortal={withinPortal}>\n <Transition\n {...transition}\n keepMounted={keepMounted}\n mounted={!disabled && !!tooltip.opened}\n duration={tooltip.isGroupPhase ? 10 : transition.duration}\n >\n {(transitionStyles) => (\n <Box\n {...others}\n data-fixed={floatingStrategy === 'fixed' || undefined}\n variant={variant}\n mod={[{ multiline }, mod]}\n {...tooltipStyles}\n {...tooltip.getFloatingProps({\n ref: tooltip.floating,\n className: tooltipStyles.className,\n style: {\n ...tooltipStyles.style,\n ...transitionStyles,\n zIndex: zIndex as React.CSSProperties['zIndex'],\n top: tooltip.y ?? 0,\n left: tooltip.x ?? 0,\n },\n })}\n >\n {label}\n <FloatingArrow\n ref={arrowRef}\n arrowX={tooltip.arrowX}\n arrowY={tooltip.arrowY}\n visible={withArrow}\n position={tooltip.placement}\n arrowSize={arrowSize}\n arrowOffset={arrowOffset}\n arrowRadius={arrowRadius}\n arrowPosition={arrowPosition}\n {...getStyles('arrow')}\n />\n </Box>\n )}\n </Transition>\n </OptionalPortal>\n </>\n );\n }\n\n // fallback to children-based approach\n const childProps = child!.props as any;\n const targetRef = useMergedRef(tooltip.reference, getRefProp(child), ref);\n const transition = getTransitionProps(transitionProps, { duration: 100, transition: 'fade' });\n\n return (\n <>\n <OptionalPortal {...portalProps} withinPortal={withinPortal}>\n <Transition\n {...transition}\n keepMounted={keepMounted}\n mounted={!disabled && !!tooltip.opened}\n duration={tooltip.isGroupPhase ? 10 : transition.duration}\n >\n {(transitionStyles) => (\n <Box\n {...others}\n data-fixed={floatingStrategy === 'fixed' || undefined}\n variant={variant}\n mod={[{ multiline }, mod]}\n {...tooltip.getFloatingProps({\n ref: tooltip.floating,\n className: getStyles('tooltip').className,\n style: {\n ...getStyles('tooltip').style,\n ...transitionStyles,\n zIndex: zIndex as React.CSSProperties['zIndex'],\n top: tooltip.y ?? 0,\n left: tooltip.x ?? 0,\n },\n })}\n >\n {label}\n <FloatingArrow\n ref={arrowRef}\n arrowX={tooltip.arrowX}\n arrowY={tooltip.arrowY}\n visible={withArrow}\n position={tooltip.placement}\n arrowSize={arrowSize}\n arrowOffset={arrowOffset}\n arrowRadius={arrowRadius}\n arrowPosition={arrowPosition}\n {...getStyles('arrow')}\n />\n </Box>\n )}\n </Transition>\n </OptionalPortal>\n\n {cloneElement(\n child!,\n tooltip.getReferenceProps({\n onClick,\n onMouseEnter,\n onMouseLeave,\n onMouseMove: props.onMouseMove,\n onPointerDown: props.onPointerDown,\n onPointerEnter: props.onPointerEnter,\n ...childProps,\n className: cx(className, childProps.className),\n [refProp]: targetRef,\n })\n )}\n </>\n );\n});\n\nTooltip.classes = classes;\nTooltip.varsResolver = varsResolver;\nTooltip.displayName = '@mantine/core/Tooltip';\nTooltip.Floating = TooltipFloating;\nTooltip.Group = TooltipGroup;\n\nexport namespace Tooltip {\n export type Props = TooltipProps;\n export type Factory = TooltipFactory;\n export type CssVariables = TooltipCssVariables;\n export type StylesNames = TooltipStylesNames;\n\n export namespace Group {\n export type Props = TooltipGroupProps;\n export type ContextValue = TooltipGroupContextValue;\n }\n\n export namespace Floating {\n export type Props = TooltipFloatingProps;\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"Tooltip.mjs","names":["classes"],"sources":["../../../src/components/Tooltip/Tooltip.tsx"],"sourcesContent":["import { cloneElement, useEffect, useRef } from 'react';\nimport cx from 'clsx';\nimport { useMergedRef } from '@mantine/hooks';\nimport {\n Box,\n createVarsResolver,\n factory,\n Factory,\n getDefaultZIndex,\n getRadius,\n getRefProp,\n getSingleElementChild,\n useDirection,\n useProps,\n useStyles,\n} from '../../core';\nimport {\n ArrowPosition,\n FloatingArrow,\n FloatingAxesOffsets,\n FloatingPosition,\n FloatingStrategy,\n getArrowMergeDropdownStyles,\n getFloatingPosition,\n} from '../../utils/Floating';\nimport { OptionalPortal } from '../Portal';\nimport { getTransitionProps, Transition, TransitionOverride } from '../Transition';\nimport { TooltipBaseProps, TooltipCssVariables, TooltipStylesNames } from './Tooltip.types';\nimport { TooltipFloating, type TooltipFloatingProps } from './TooltipFloating/TooltipFloating';\nimport {\n TooltipGroup,\n type TooltipGroupProps,\n type TooltipGroupContextValue,\n} from './TooltipGroup/TooltipGroup';\nimport { useTooltip } from './use-tooltip';\nimport classes from './Tooltip.module.css';\nexport interface TooltipProps extends TooltipBaseProps {\n /** Called when tooltip position changes */\n onPositionChange?: (position: FloatingPosition) => void;\n\n /** Open delay in ms */\n openDelay?: number;\n\n /** Close delay in ms @default 0 */\n closeDelay?: number;\n\n /** Controlled opened state */\n opened?: boolean;\n\n /** Uncontrolled tooltip initial opened state */\n defaultOpened?: boolean;\n\n /** Space between target element and tooltip in px @default 5 */\n offset?: number | FloatingAxesOffsets;\n\n /** If set, the tooltip has an arrow @default false */\n withArrow?: boolean;\n\n /** Arrow size in px @default 4 */\n arrowSize?: number;\n\n /** Arrow offset in px @default 5 */\n arrowOffset?: number;\n\n /** Arrow `border-radius` in px @default 0 */\n arrowRadius?: number;\n\n /** Arrow position relative to the tooltip @default side */\n arrowPosition?: ArrowPosition;\n\n /** Props passed down to the `Transition` component that used to animate tooltip presence, use to configure duration and animation type @default { duration: 100, transition: 'fade' } */\n transitionProps?: TransitionOverride;\n\n /** Determines which events will be used to show tooltip @default { hover: true, focus: false, touch: false } */\n events?: { hover: boolean; focus: boolean; touch: boolean };\n\n /** Must be set if the tooltip target is an inline element */\n inline?: boolean;\n\n /** If set, the tooltip is not unmounted from the DOM when hidden, `display: none` styles are applied instead */\n keepMounted?: boolean;\n\n /** Changes floating ui [position strategy](https://floating-ui.com/docs/usefloating#strategy) @default 'absolute' */\n floatingStrategy?: FloatingStrategy;\n\n /** If set, adjusts text color based on background color for `filled` variant */\n autoContrast?: boolean;\n\n /** Selector, ref of an element or element itself that should be used for positioning */\n target?: React.RefObject<HTMLElement | null> | HTMLElement | null | string;\n}\n\nexport type TooltipFactory = Factory<{\n props: TooltipProps;\n ref: HTMLDivElement;\n stylesNames: TooltipStylesNames;\n vars: TooltipCssVariables;\n staticComponents: {\n Floating: typeof TooltipFloating;\n Group: typeof TooltipGroup;\n };\n}>;\n\nconst defaultProps = {\n position: 'top',\n refProp: 'ref',\n withinPortal: true,\n arrowSize: 4,\n arrowOffset: 5,\n arrowRadius: 0,\n arrowPosition: 'side',\n offset: 5,\n transitionProps: { duration: 100, transition: 'fade' },\n events: { hover: true, focus: false, touch: false },\n zIndex: getDefaultZIndex('popover'),\n middlewares: { flip: true, shift: true, inline: false },\n} satisfies Partial<TooltipProps>;\n\nconst varsResolver = createVarsResolver<TooltipFactory>(\n (theme, { radius, color, variant, autoContrast }) => {\n const colors = theme.variantColorResolver({\n theme,\n color: color || theme.primaryColor,\n autoContrast,\n variant: variant || 'filled',\n });\n\n return {\n tooltip: {\n '--tooltip-radius': radius === undefined ? undefined : getRadius(radius),\n '--tooltip-bg': color ? colors.background : undefined,\n '--tooltip-color': color ? colors.color : undefined,\n },\n };\n }\n);\n\nexport const Tooltip = factory<TooltipFactory>((_props) => {\n const props = useProps('Tooltip', defaultProps, _props);\n const {\n children,\n position,\n refProp,\n label,\n openDelay,\n closeDelay,\n onPositionChange,\n opened,\n defaultOpened,\n withinPortal,\n radius,\n color,\n classNames,\n styles,\n unstyled,\n style,\n className,\n withArrow,\n arrowSize,\n arrowOffset,\n arrowRadius,\n arrowPosition,\n offset,\n transitionProps,\n multiline,\n events,\n zIndex,\n disabled,\n onClick,\n onMouseEnter,\n onMouseLeave,\n inline,\n variant,\n keepMounted,\n vars,\n portalProps,\n mod,\n floatingStrategy,\n middlewares,\n autoContrast,\n attributes,\n target,\n ref,\n ...others\n } = props;\n\n const { dir } = useDirection();\n const arrowRef = useRef<HTMLDivElement>(null);\n\n const tooltip = useTooltip({\n position: getFloatingPosition(dir, position),\n closeDelay,\n openDelay,\n onPositionChange,\n opened,\n defaultOpened,\n events,\n arrowRef,\n arrowOffset,\n offset: typeof offset === 'number' ? offset + (withArrow ? arrowSize / 2 : 0) : offset,\n inline,\n strategy: floatingStrategy,\n middlewares,\n });\n\n useEffect(() => {\n const targetNode =\n target instanceof HTMLElement\n ? target\n : typeof target === 'string'\n ? document.querySelector(target)\n : target?.current || null;\n\n if (targetNode) {\n tooltip.reference(targetNode);\n }\n }, [target, tooltip]);\n\n const getStyles = useStyles<TooltipFactory>({\n name: 'Tooltip',\n props,\n classes,\n className,\n style,\n classNames,\n styles,\n unstyled,\n attributes,\n rootSelector: 'tooltip',\n vars,\n varsResolver,\n });\n\n const child = getSingleElementChild(children);\n if (!target && !child) {\n throw new Error(\n '[@mantine/core] Tooltip component children should be an element or a component that accepts ref, fragments, strings, numbers and other primitive values are not supported'\n );\n }\n\n const tooltipStyles = getStyles('tooltip');\n const mergeStyles =\n arrowPosition === 'merge' && withArrow\n ? getArrowMergeDropdownStyles({ position: tooltip.placement, dir })\n : undefined;\n\n if (target) {\n const transition = getTransitionProps(transitionProps, { duration: 100, transition: 'fade' });\n return (\n <>\n <OptionalPortal {...portalProps} withinPortal={withinPortal}>\n <Transition\n {...transition}\n keepMounted={keepMounted}\n mounted={!disabled && !!tooltip.opened}\n duration={tooltip.isGroupPhase ? 10 : transition.duration}\n >\n {(transitionStyles) => (\n <Box\n {...others}\n data-fixed={floatingStrategy === 'fixed' || undefined}\n variant={variant}\n mod={[{ multiline }, mod]}\n {...tooltipStyles}\n {...tooltip.getFloatingProps({\n ref: tooltip.floating,\n className: tooltipStyles.className,\n style: {\n ...tooltipStyles.style,\n ...transitionStyles,\n ...mergeStyles,\n zIndex: zIndex as React.CSSProperties['zIndex'],\n top: tooltip.y ?? 0,\n left: tooltip.x ?? 0,\n },\n })}\n >\n {label}\n <FloatingArrow\n ref={arrowRef}\n arrowX={tooltip.arrowX}\n arrowY={tooltip.arrowY}\n visible={withArrow}\n position={tooltip.placement}\n arrowSize={arrowSize!}\n arrowOffset={arrowOffset!}\n arrowRadius={arrowRadius!}\n arrowPosition={arrowPosition!}\n {...getStyles('arrow')}\n />\n </Box>\n )}\n </Transition>\n </OptionalPortal>\n </>\n );\n }\n\n // fallback to children-based approach\n const childProps = child!.props as any;\n const targetRef = useMergedRef(tooltip.reference, getRefProp(child), ref);\n const transition = getTransitionProps(transitionProps, { duration: 100, transition: 'fade' });\n\n return (\n <>\n <OptionalPortal {...portalProps} withinPortal={withinPortal}>\n <Transition\n {...transition}\n keepMounted={keepMounted}\n mounted={!disabled && !!tooltip.opened}\n duration={tooltip.isGroupPhase ? 10 : transition.duration}\n >\n {(transitionStyles) => (\n <Box\n {...others}\n data-fixed={floatingStrategy === 'fixed' || undefined}\n variant={variant}\n mod={[{ multiline }, mod]}\n {...tooltip.getFloatingProps({\n ref: tooltip.floating,\n className: getStyles('tooltip').className,\n style: {\n ...getStyles('tooltip').style,\n ...transitionStyles,\n ...mergeStyles,\n zIndex: zIndex as React.CSSProperties['zIndex'],\n top: tooltip.y ?? 0,\n left: tooltip.x ?? 0,\n },\n })}\n >\n {label}\n <FloatingArrow\n ref={arrowRef}\n arrowX={tooltip.arrowX}\n arrowY={tooltip.arrowY}\n visible={withArrow}\n position={tooltip.placement}\n arrowSize={arrowSize}\n arrowOffset={arrowOffset}\n arrowRadius={arrowRadius}\n arrowPosition={arrowPosition}\n {...getStyles('arrow')}\n />\n </Box>\n )}\n </Transition>\n </OptionalPortal>\n\n {cloneElement(\n child!,\n tooltip.getReferenceProps({\n onClick,\n onMouseEnter,\n onMouseLeave,\n onMouseMove: props.onMouseMove,\n onPointerDown: props.onPointerDown,\n onPointerEnter: props.onPointerEnter,\n ...childProps,\n className: cx(className, childProps.className),\n [refProp]: targetRef,\n })\n )}\n </>\n );\n});\n\nTooltip.classes = classes;\nTooltip.varsResolver = varsResolver;\nTooltip.displayName = '@mantine/core/Tooltip';\nTooltip.Floating = TooltipFloating;\nTooltip.Group = TooltipGroup;\n\nexport namespace Tooltip {\n export type Props = TooltipProps;\n export type Factory = TooltipFactory;\n export type CssVariables = TooltipCssVariables;\n export type StylesNames = TooltipStylesNames;\n\n export namespace Group {\n export type Props = TooltipGroupProps;\n export type ContextValue = TooltipGroupContextValue;\n }\n\n export namespace Floating {\n export type Props = TooltipFloatingProps;\n }\n}\n"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import { TooltipGroupContext } from "./TooltipGroup/TooltipGroup.mjs";
3
- import { use, useCallback, useState } from "react";
4
- import { useDidUpdate, useId as useId$1 } from "@mantine/hooks";
3
+ import { use, useCallback, useRef, useState } from "react";
4
+ import { useId as useId$1, useIsomorphicEffect } from "@mantine/hooks";
5
5
  import { arrow, autoUpdate, flip, inline, offset, shift, useDelayGroup, useDismiss, useFloating, useFocus, useHover, useInteractions, useRole } from "@floating-ui/react";
6
6
  //#region packages/@mantine/core/src/components/Tooltip/use-tooltip.ts
7
7
  function getDefaultMiddlewares(middlewares) {
@@ -64,8 +64,12 @@ function useTooltip(settings) {
64
64
  useRole(context, { role: "tooltip" }),
65
65
  useDismiss(context, { enabled: typeof settings.opened === "undefined" })
66
66
  ]);
67
- useDidUpdate(() => {
68
- settings.onPositionChange?.(placement);
67
+ const previousPlacementRef = useRef(placement);
68
+ useIsomorphicEffect(() => {
69
+ if (previousPlacementRef.current !== placement) {
70
+ previousPlacementRef.current = placement;
71
+ settings.onPositionChange?.(placement);
72
+ }
69
73
  }, [placement]);
70
74
  const isGroupPhase = opened && currentId && currentId !== uid;
71
75
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"use-tooltip.mjs","names":["useId"],"sources":["../../../src/components/Tooltip/use-tooltip.ts"],"sourcesContent":["import { use, useCallback, useState } from 'react';\nimport {\n arrow,\n autoUpdate,\n flip,\n inline,\n offset,\n shift,\n useDelayGroup,\n useDismiss,\n useFloating,\n useFocus,\n useHover,\n useInteractions,\n useRole,\n type Middleware,\n} from '@floating-ui/react';\nimport { useDidUpdate, useId } from '@mantine/hooks';\nimport { FloatingAxesOffsets, FloatingPosition, FloatingStrategy } from '../../utils/Floating';\nimport { type TooltipMiddlewares } from './Tooltip.types';\nimport { TooltipGroupContext } from './TooltipGroup/TooltipGroup';\n\ninterface UseTooltip {\n position: FloatingPosition;\n closeDelay?: number;\n openDelay?: number;\n onPositionChange?: (position: FloatingPosition) => void;\n opened?: boolean;\n defaultOpened?: boolean;\n offset: number | FloatingAxesOffsets;\n arrowRef?: React.RefObject<HTMLDivElement | null>;\n arrowOffset?: number;\n events?: { hover: boolean; focus: boolean; touch: boolean };\n inline?: boolean;\n strategy?: FloatingStrategy;\n middlewares?: TooltipMiddlewares;\n}\n\nfunction getDefaultMiddlewares(middlewares: TooltipMiddlewares | undefined): TooltipMiddlewares {\n if (middlewares === undefined) {\n return { shift: true, flip: true };\n }\n\n const result = { ...middlewares };\n if (middlewares.shift === undefined) {\n result.shift = true;\n }\n\n if (middlewares.flip === undefined) {\n result.flip = true;\n }\n\n return result;\n}\n\nfunction getTooltipMiddlewares(settings: UseTooltip) {\n const middlewaresOptions = getDefaultMiddlewares(settings.middlewares);\n const middlewares: Middleware[] = [offset(settings.offset)];\n\n if (middlewaresOptions.shift) {\n middlewares.push(\n shift(\n typeof middlewaresOptions.shift === 'boolean'\n ? { padding: 8 }\n : { padding: 8, ...middlewaresOptions.shift }\n )\n );\n }\n\n if (middlewaresOptions.flip) {\n middlewares.push(\n typeof middlewaresOptions.flip === 'boolean' ? flip() : flip(middlewaresOptions.flip)\n );\n }\n\n middlewares.push(arrow({ element: settings.arrowRef!, padding: settings.arrowOffset }));\n\n if (middlewaresOptions.inline) {\n middlewares.push(\n typeof middlewaresOptions.inline === 'boolean' ? inline() : inline(middlewaresOptions.inline)\n );\n } else if (settings.inline) {\n middlewares.push(inline());\n }\n\n return middlewares;\n}\n\nexport function useTooltip(settings: UseTooltip) {\n const [uncontrolledOpened, setUncontrolledOpened] = useState(settings.defaultOpened);\n const controlled = typeof settings.opened === 'boolean';\n const opened = controlled ? settings.opened : uncontrolledOpened;\n const withinGroup = use(TooltipGroupContext).withinGroup;\n const uid = useId();\n\n const onChange = useCallback(\n (_opened: boolean) => {\n setUncontrolledOpened(_opened);\n\n if (_opened) {\n setCurrentId(uid);\n }\n },\n [uid]\n );\n\n const {\n x,\n y,\n context,\n refs,\n placement,\n middlewareData: { arrow: { x: arrowX, y: arrowY } = {} },\n } = useFloating({\n strategy: settings.strategy,\n placement: settings.position,\n open: opened,\n onOpenChange: onChange,\n middleware: getTooltipMiddlewares(settings),\n whileElementsMounted: autoUpdate,\n });\n\n const { delay: groupDelay, currentId, setCurrentId } = useDelayGroup(context, { id: uid });\n\n const { getReferenceProps, getFloatingProps } = useInteractions([\n useHover(context, {\n enabled: settings.events?.hover,\n delay: withinGroup ? groupDelay : { open: settings.openDelay, close: settings.closeDelay },\n mouseOnly: !settings.events?.touch,\n }),\n useFocus(context, { enabled: settings.events?.focus, visibleOnly: true }),\n useRole(context, { role: 'tooltip' }),\n // Cannot be used with controlled tooltip, page jumps\n useDismiss(context, { enabled: typeof settings.opened === 'undefined' }),\n ]);\n\n useDidUpdate(() => {\n settings.onPositionChange?.(placement);\n }, [placement]);\n\n const isGroupPhase = opened && currentId && currentId !== uid;\n\n return {\n x,\n y,\n arrowX,\n arrowY,\n reference: refs.setReference,\n floating: refs.setFloating,\n getFloatingProps,\n getReferenceProps,\n isGroupPhase,\n opened,\n placement,\n };\n}\n"],"mappings":";;;;;;AAsCA,SAAS,sBAAsB,aAAiE;CAC9F,IAAI,gBAAgB,KAAA,GAClB,OAAO;EAAE,OAAO;EAAM,MAAM;CAAK;CAGnC,MAAM,SAAS,EAAE,GAAG,YAAY;CAChC,IAAI,YAAY,UAAU,KAAA,GACxB,OAAO,QAAQ;CAGjB,IAAI,YAAY,SAAS,KAAA,GACvB,OAAO,OAAO;CAGhB,OAAO;AACT;AAEA,SAAS,sBAAsB,UAAsB;CACnD,MAAM,qBAAqB,sBAAsB,SAAS,WAAW;CACrE,MAAM,cAA4B,CAAC,OAAO,SAAS,MAAM,CAAC;CAE1D,IAAI,mBAAmB,OACrB,YAAY,KACV,MACE,OAAO,mBAAmB,UAAU,YAChC,EAAE,SAAS,EAAE,IACb;EAAE,SAAS;EAAG,GAAG,mBAAmB;CAAM,CAChD,CACF;CAGF,IAAI,mBAAmB,MACrB,YAAY,KACV,OAAO,mBAAmB,SAAS,YAAY,KAAK,IAAI,KAAK,mBAAmB,IAAI,CACtF;CAGF,YAAY,KAAK,MAAM;EAAE,SAAS,SAAS;EAAW,SAAS,SAAS;CAAY,CAAC,CAAC;CAEtF,IAAI,mBAAmB,QACrB,YAAY,KACV,OAAO,mBAAmB,WAAW,YAAY,OAAO,IAAI,OAAO,mBAAmB,MAAM,CAC9F;MACK,IAAI,SAAS,QAClB,YAAY,KAAK,OAAO,CAAC;CAG3B,OAAO;AACT;AAEA,SAAgB,WAAW,UAAsB;CAC/C,MAAM,CAAC,oBAAoB,yBAAyB,SAAS,SAAS,aAAa;CAEnF,MAAM,SADa,OAAO,SAAS,WAAW,YAClB,SAAS,SAAS;CAC9C,MAAM,cAAc,IAAI,mBAAmB,EAAE;CAC7C,MAAM,MAAMA,QAAM;CAElB,MAAM,WAAW,aACd,YAAqB;EACpB,sBAAsB,OAAO;EAE7B,IAAI,SACF,aAAa,GAAG;CAEpB,GACA,CAAC,GAAG,CACN;CAEA,MAAM,EACJ,GACA,GACA,SACA,MACA,WACA,gBAAgB,EAAE,OAAO,EAAE,GAAG,QAAQ,GAAG,WAAW,CAAC,QACnD,YAAY;EACd,UAAU,SAAS;EACnB,WAAW,SAAS;EACpB,MAAM;EACN,cAAc;EACd,YAAY,sBAAsB,QAAQ;EAC1C,sBAAsB;CACxB,CAAC;CAED,MAAM,EAAE,OAAO,YAAY,WAAW,iBAAiB,cAAc,SAAS,EAAE,IAAI,IAAI,CAAC;CAEzF,MAAM,EAAE,mBAAmB,qBAAqB,gBAAgB;EAC9D,SAAS,SAAS;GAChB,SAAS,SAAS,QAAQ;GAC1B,OAAO,cAAc,aAAa;IAAE,MAAM,SAAS;IAAW,OAAO,SAAS;GAAW;GACzF,WAAW,CAAC,SAAS,QAAQ;EAC/B,CAAC;EACD,SAAS,SAAS;GAAE,SAAS,SAAS,QAAQ;GAAO,aAAa;EAAK,CAAC;EACxE,QAAQ,SAAS,EAAE,MAAM,UAAU,CAAC;EAEpC,WAAW,SAAS,EAAE,SAAS,OAAO,SAAS,WAAW,YAAY,CAAC;CACzE,CAAC;CAED,mBAAmB;EACjB,SAAS,mBAAmB,SAAS;CACvC,GAAG,CAAC,SAAS,CAAC;CAEd,MAAM,eAAe,UAAU,aAAa,cAAc;CAE1D,OAAO;EACL;EACA;EACA;EACA;EACA,WAAW,KAAK;EAChB,UAAU,KAAK;EACf;EACA;EACA;EACA;EACA;CACF;AACF"}
1
+ {"version":3,"file":"use-tooltip.mjs","names":["useId"],"sources":["../../../src/components/Tooltip/use-tooltip.ts"],"sourcesContent":["import { use, useCallback, useRef, useState } from 'react';\nimport {\n arrow,\n autoUpdate,\n flip,\n inline,\n offset,\n shift,\n useDelayGroup,\n useDismiss,\n useFloating,\n useFocus,\n useHover,\n useInteractions,\n useRole,\n type Middleware,\n} from '@floating-ui/react';\nimport { useId, useIsomorphicEffect } from '@mantine/hooks';\nimport { FloatingAxesOffsets, FloatingPosition, FloatingStrategy } from '../../utils/Floating';\nimport { type TooltipMiddlewares } from './Tooltip.types';\nimport { TooltipGroupContext } from './TooltipGroup/TooltipGroup';\n\ninterface UseTooltip {\n position: FloatingPosition;\n closeDelay?: number;\n openDelay?: number;\n onPositionChange?: (position: FloatingPosition) => void;\n opened?: boolean;\n defaultOpened?: boolean;\n offset: number | FloatingAxesOffsets;\n arrowRef?: React.RefObject<HTMLDivElement | null>;\n arrowOffset?: number;\n events?: { hover: boolean; focus: boolean; touch: boolean };\n inline?: boolean;\n strategy?: FloatingStrategy;\n middlewares?: TooltipMiddlewares;\n}\n\nfunction getDefaultMiddlewares(middlewares: TooltipMiddlewares | undefined): TooltipMiddlewares {\n if (middlewares === undefined) {\n return { shift: true, flip: true };\n }\n\n const result = { ...middlewares };\n if (middlewares.shift === undefined) {\n result.shift = true;\n }\n\n if (middlewares.flip === undefined) {\n result.flip = true;\n }\n\n return result;\n}\n\nfunction getTooltipMiddlewares(settings: UseTooltip) {\n const middlewaresOptions = getDefaultMiddlewares(settings.middlewares);\n const middlewares: Middleware[] = [offset(settings.offset)];\n\n if (middlewaresOptions.shift) {\n middlewares.push(\n shift(\n typeof middlewaresOptions.shift === 'boolean'\n ? { padding: 8 }\n : { padding: 8, ...middlewaresOptions.shift }\n )\n );\n }\n\n if (middlewaresOptions.flip) {\n middlewares.push(\n typeof middlewaresOptions.flip === 'boolean' ? flip() : flip(middlewaresOptions.flip)\n );\n }\n\n middlewares.push(arrow({ element: settings.arrowRef!, padding: settings.arrowOffset }));\n\n if (middlewaresOptions.inline) {\n middlewares.push(\n typeof middlewaresOptions.inline === 'boolean' ? inline() : inline(middlewaresOptions.inline)\n );\n } else if (settings.inline) {\n middlewares.push(inline());\n }\n\n return middlewares;\n}\n\nexport function useTooltip(settings: UseTooltip) {\n const [uncontrolledOpened, setUncontrolledOpened] = useState(settings.defaultOpened);\n const controlled = typeof settings.opened === 'boolean';\n const opened = controlled ? settings.opened : uncontrolledOpened;\n const withinGroup = use(TooltipGroupContext).withinGroup;\n const uid = useId();\n\n const onChange = useCallback(\n (_opened: boolean) => {\n setUncontrolledOpened(_opened);\n\n if (_opened) {\n setCurrentId(uid);\n }\n },\n [uid]\n );\n\n const {\n x,\n y,\n context,\n refs,\n placement,\n middlewareData: { arrow: { x: arrowX, y: arrowY } = {} },\n } = useFloating({\n strategy: settings.strategy,\n placement: settings.position,\n open: opened,\n onOpenChange: onChange,\n middleware: getTooltipMiddlewares(settings),\n whileElementsMounted: autoUpdate,\n });\n\n const { delay: groupDelay, currentId, setCurrentId } = useDelayGroup(context, { id: uid });\n\n const { getReferenceProps, getFloatingProps } = useInteractions([\n useHover(context, {\n enabled: settings.events?.hover,\n delay: withinGroup ? groupDelay : { open: settings.openDelay, close: settings.closeDelay },\n mouseOnly: !settings.events?.touch,\n }),\n useFocus(context, { enabled: settings.events?.focus, visibleOnly: true }),\n useRole(context, { role: 'tooltip' }),\n // Cannot be used with controlled tooltip, page jumps\n useDismiss(context, { enabled: typeof settings.opened === 'undefined' }),\n ]);\n\n const previousPlacementRef = useRef(placement);\n useIsomorphicEffect(() => {\n if (previousPlacementRef.current !== placement) {\n previousPlacementRef.current = placement;\n settings.onPositionChange?.(placement);\n }\n }, [placement]);\n\n const isGroupPhase = opened && currentId && currentId !== uid;\n\n return {\n x,\n y,\n arrowX,\n arrowY,\n reference: refs.setReference,\n floating: refs.setFloating,\n getFloatingProps,\n getReferenceProps,\n isGroupPhase,\n opened,\n placement,\n };\n}\n"],"mappings":";;;;;;AAsCA,SAAS,sBAAsB,aAAiE;CAC9F,IAAI,gBAAgB,KAAA,GAClB,OAAO;EAAE,OAAO;EAAM,MAAM;CAAK;CAGnC,MAAM,SAAS,EAAE,GAAG,YAAY;CAChC,IAAI,YAAY,UAAU,KAAA,GACxB,OAAO,QAAQ;CAGjB,IAAI,YAAY,SAAS,KAAA,GACvB,OAAO,OAAO;CAGhB,OAAO;AACT;AAEA,SAAS,sBAAsB,UAAsB;CACnD,MAAM,qBAAqB,sBAAsB,SAAS,WAAW;CACrE,MAAM,cAA4B,CAAC,OAAO,SAAS,MAAM,CAAC;CAE1D,IAAI,mBAAmB,OACrB,YAAY,KACV,MACE,OAAO,mBAAmB,UAAU,YAChC,EAAE,SAAS,EAAE,IACb;EAAE,SAAS;EAAG,GAAG,mBAAmB;CAAM,CAChD,CACF;CAGF,IAAI,mBAAmB,MACrB,YAAY,KACV,OAAO,mBAAmB,SAAS,YAAY,KAAK,IAAI,KAAK,mBAAmB,IAAI,CACtF;CAGF,YAAY,KAAK,MAAM;EAAE,SAAS,SAAS;EAAW,SAAS,SAAS;CAAY,CAAC,CAAC;CAEtF,IAAI,mBAAmB,QACrB,YAAY,KACV,OAAO,mBAAmB,WAAW,YAAY,OAAO,IAAI,OAAO,mBAAmB,MAAM,CAC9F;MACK,IAAI,SAAS,QAClB,YAAY,KAAK,OAAO,CAAC;CAG3B,OAAO;AACT;AAEA,SAAgB,WAAW,UAAsB;CAC/C,MAAM,CAAC,oBAAoB,yBAAyB,SAAS,SAAS,aAAa;CAEnF,MAAM,SADa,OAAO,SAAS,WAAW,YAClB,SAAS,SAAS;CAC9C,MAAM,cAAc,IAAI,mBAAmB,EAAE;CAC7C,MAAM,MAAMA,QAAM;CAElB,MAAM,WAAW,aACd,YAAqB;EACpB,sBAAsB,OAAO;EAE7B,IAAI,SACF,aAAa,GAAG;CAEpB,GACA,CAAC,GAAG,CACN;CAEA,MAAM,EACJ,GACA,GACA,SACA,MACA,WACA,gBAAgB,EAAE,OAAO,EAAE,GAAG,QAAQ,GAAG,WAAW,CAAC,QACnD,YAAY;EACd,UAAU,SAAS;EACnB,WAAW,SAAS;EACpB,MAAM;EACN,cAAc;EACd,YAAY,sBAAsB,QAAQ;EAC1C,sBAAsB;CACxB,CAAC;CAED,MAAM,EAAE,OAAO,YAAY,WAAW,iBAAiB,cAAc,SAAS,EAAE,IAAI,IAAI,CAAC;CAEzF,MAAM,EAAE,mBAAmB,qBAAqB,gBAAgB;EAC9D,SAAS,SAAS;GAChB,SAAS,SAAS,QAAQ;GAC1B,OAAO,cAAc,aAAa;IAAE,MAAM,SAAS;IAAW,OAAO,SAAS;GAAW;GACzF,WAAW,CAAC,SAAS,QAAQ;EAC/B,CAAC;EACD,SAAS,SAAS;GAAE,SAAS,SAAS,QAAQ;GAAO,aAAa;EAAK,CAAC;EACxE,QAAQ,SAAS,EAAE,MAAM,UAAU,CAAC;EAEpC,WAAW,SAAS,EAAE,SAAS,OAAO,SAAS,WAAW,YAAY,CAAC;CACzE,CAAC;CAED,MAAM,uBAAuB,OAAO,SAAS;CAC7C,0BAA0B;EACxB,IAAI,qBAAqB,YAAY,WAAW;GAC9C,qBAAqB,UAAU;GAC/B,SAAS,mBAAmB,SAAS;EACvC;CACF,GAAG,CAAC,SAAS,CAAC;CAEd,MAAM,eAAe,UAAU,aAAa,cAAc;CAE1D,OAAO;EACL;EACA;EACA;EACA;EACA,WAAW,KAAK;EAChB,UAAU,KAAK;EACf;EACA;EACA;EACA;EACA;CACF;AACF"}
@@ -2,9 +2,9 @@
2
2
  import { findElementAncestor } from "../../core/utils/find-element-ancestor/find-element-ancestor.mjs";
3
3
  import Tree_module_default from "./Tree.module.mjs";
4
4
  import { memo, useRef } from "react";
5
- import { jsx } from "react/jsx-runtime";
5
+ import { jsx, jsxs } from "react/jsx-runtime";
6
6
  //#region packages/@mantine/core/src/components/Tree/FlatTreeNode.tsx
7
- const FlatTreeNode = memo(function FlatTreeNode({ node, level, parent, hasChildren, expanded, tree, expandOnClick = true, selectOnClick, expandOnSpace = true, checkOnSpace, renderNode, style, tabIndex = -1 }) {
7
+ const FlatTreeNode = memo(function FlatTreeNode({ node, level, parent, hasChildren, expanded, tree, expandOnClick = true, selectOnClick, expandOnSpace = true, checkOnSpace, renderNode, style, tabIndex = -1, linesPath }) {
8
8
  const ref = useRef(null);
9
9
  const isLoading = tree.isNodeLoading(node.value);
10
10
  const loadError = tree.getNodeLoadError(node.value);
@@ -63,7 +63,7 @@ const FlatTreeNode = memo(function FlatTreeNode({ node, level, parent, hasChildr
63
63
  "data-selected": selected || void 0,
64
64
  "data-value": node.value
65
65
  };
66
- return /* @__PURE__ */ jsx("div", {
66
+ return /* @__PURE__ */ jsxs("div", {
67
67
  ref,
68
68
  className: Tree_module_default.node,
69
69
  style: {
@@ -78,10 +78,19 @@ const FlatTreeNode = memo(function FlatTreeNode({ node, level, parent, hasChildr
78
78
  "data-level": level,
79
79
  tabIndex,
80
80
  onKeyDown: handleKeyDown,
81
- children: typeof renderNode === "function" ? renderNode({
81
+ children: [linesPath?.map((state, idx) => {
82
+ if (state === "none") return null;
83
+ const column = idx + 2;
84
+ return /* @__PURE__ */ jsx("span", {
85
+ "aria-hidden": true,
86
+ className: `${Tree_module_default.flatLine}${state === "closing" ? ` ${Tree_module_default.flatLineClosing}` : ""}`,
87
+ style: { "--flat-line-column": column }
88
+ }, column);
89
+ }), typeof renderNode === "function" ? renderNode({
82
90
  node,
83
91
  level,
84
92
  selected,
93
+ isRoot: level === 1,
85
94
  tree,
86
95
  expanded,
87
96
  hasChildren,
@@ -92,7 +101,7 @@ const FlatTreeNode = memo(function FlatTreeNode({ node, level, parent, hasChildr
92
101
  }) : /* @__PURE__ */ jsx("div", {
93
102
  ...elementProps,
94
103
  children: node.label
95
- })
104
+ })]
96
105
  });
97
106
  });
98
107
  FlatTreeNode.displayName = "@mantine/core/FlatTreeNode";
@@ -1 +1 @@
1
- {"version":3,"file":"FlatTreeNode.mjs","names":["classes"],"sources":["../../../src/components/Tree/FlatTreeNode.tsx"],"sourcesContent":["import { memo, useRef } from 'react';\nimport { findElementAncestor } from '../../core';\nimport type { RenderNode, TreeNodeData } from './Tree';\nimport type { TreeController } from './use-tree';\nimport classes from './Tree.module.css';\n\nexport interface FlatTreeNodeProps {\n /** Node data from tree data */\n node: TreeNodeData;\n\n /** Nesting level of the node, starts at 1 */\n level: number;\n\n /** Value of the parent node, `null` for root nodes */\n parent: string | null;\n\n /** Whether the node has children */\n hasChildren: boolean;\n\n /** Whether the node is expanded */\n expanded: boolean;\n\n /** Tree controller instance, return value of `useTree` hook */\n tree: TreeController;\n\n /** If set, tree node with children is expanded on click @default true */\n expandOnClick?: boolean;\n\n /** If set, tree node is selected on click @default false */\n selectOnClick?: boolean;\n\n /** If set, tree node with children is expanded on space key press @default true */\n expandOnSpace?: boolean;\n\n /** If set, tree node is checked on space key press @default false */\n checkOnSpace?: boolean;\n\n /** A function to render tree node label */\n renderNode?: RenderNode;\n\n /** Style to apply to the root element, used for virtualizer positioning */\n style?: React.CSSProperties;\n\n /** Tab index for the node */\n tabIndex?: number;\n}\n\nexport const FlatTreeNode = memo(function FlatTreeNode({\n node,\n level,\n parent,\n hasChildren,\n expanded,\n tree,\n expandOnClick = true,\n selectOnClick,\n expandOnSpace = true,\n checkOnSpace,\n renderNode,\n style,\n tabIndex = -1,\n}: FlatTreeNodeProps) {\n const ref = useRef<HTMLDivElement>(null);\n const isLoading = tree.isNodeLoading(node.value);\n const loadError = tree.getNodeLoadError(node.value);\n const selected = tree.selectedState.includes(node.value);\n\n const handleClick = (event: React.MouseEvent) => {\n event.stopPropagation();\n\n if (expandOnClick && hasChildren) {\n tree.toggleExpanded(node.value);\n }\n\n if (selectOnClick) {\n tree.select(node.value);\n }\n\n ref.current?.focus();\n };\n\n const handleKeyDown = (event: React.KeyboardEvent) => {\n if (event.nativeEvent.code === 'ArrowRight') {\n event.stopPropagation();\n event.preventDefault();\n\n if (expanded && hasChildren) {\n const root = findElementAncestor(event.currentTarget as HTMLElement, '[data-tree-root]');\n const nodes = root\n ? Array.from(root.querySelectorAll<HTMLElement>('[role=treeitem]')).filter(\n (treeNode) => treeNode.style.display !== 'none'\n )\n : [];\n const index = nodes.indexOf(event.currentTarget as HTMLElement);\n if (index !== -1) {\n nodes[index + 1]?.focus();\n }\n } else if (hasChildren) {\n tree.expand(node.value);\n }\n }\n\n if (event.nativeEvent.code === 'ArrowLeft') {\n event.stopPropagation();\n event.preventDefault();\n\n if (expanded && hasChildren) {\n tree.collapse(node.value);\n } else if (parent) {\n const root = findElementAncestor(event.currentTarget as HTMLElement, '[data-tree-root]');\n const parentElement = root?.querySelector<HTMLElement>(\n `[role=treeitem][data-value=\"${CSS.escape(parent)}\"]`\n );\n parentElement?.focus();\n }\n }\n\n if (event.nativeEvent.code === 'ArrowDown' || event.nativeEvent.code === 'ArrowUp') {\n const root = findElementAncestor(event.currentTarget as HTMLElement, '[data-tree-root]');\n\n if (!root) {\n return;\n }\n\n event.stopPropagation();\n event.preventDefault();\n const nodes = Array.from(root.querySelectorAll<HTMLElement>('[role=treeitem]')).filter(\n (treeNode) => treeNode.style.display !== 'none'\n );\n const index = nodes.indexOf(event.currentTarget as HTMLElement);\n\n if (index === -1) {\n return;\n }\n\n const nextIndex = event.nativeEvent.code === 'ArrowDown' ? index + 1 : index - 1;\n nodes[nextIndex]?.focus();\n }\n\n if (event.nativeEvent.code === 'Space') {\n if (expandOnSpace) {\n event.stopPropagation();\n event.preventDefault();\n tree.toggleExpanded(node.value);\n }\n\n if (checkOnSpace) {\n event.stopPropagation();\n event.preventDefault();\n if (tree.isNodeChecked(node.value)) {\n tree.uncheckNode(node.value);\n } else {\n tree.checkNode(node.value);\n }\n }\n }\n };\n\n const elementProps = {\n className: classes.label,\n style: {} as React.CSSProperties,\n onClick: handleClick,\n 'data-selected': selected || undefined,\n 'data-value': node.value,\n };\n\n return (\n <div\n ref={ref}\n className={classes.node}\n style={{\n ...({\n '--label-offset': `calc(var(--level-offset, var(--mantine-spacing-lg)) * ${level - 1})`,\n } as React.CSSProperties),\n ...style,\n }}\n role=\"treeitem\"\n aria-selected={selected}\n aria-expanded={hasChildren ? expanded : undefined}\n data-value={node.value}\n data-selected={selected || undefined}\n data-level={level}\n tabIndex={tabIndex}\n onKeyDown={handleKeyDown}\n >\n {typeof renderNode === 'function' ? (\n renderNode({\n node,\n level,\n selected,\n tree,\n expanded,\n hasChildren,\n isLoading,\n loadError,\n elementProps,\n dragHandleProps: undefined,\n })\n ) : (\n <div {...elementProps}>{node.label}</div>\n )}\n </div>\n );\n});\n\nFlatTreeNode.displayName = '@mantine/core/FlatTreeNode';\n"],"mappings":"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"}
1
+ {"version":3,"file":"FlatTreeNode.mjs","names":["classes"],"sources":["../../../src/components/Tree/FlatTreeNode.tsx"],"sourcesContent":["import { memo, useRef } from 'react';\nimport { findElementAncestor } from '../../core';\nimport type { FlatTreeLineState } from './flatten-tree-data/flatten-tree-data';\nimport type { RenderNode, TreeNodeData } from './Tree';\nimport type { TreeController } from './use-tree';\nimport classes from './Tree.module.css';\n\nexport interface FlatTreeNodeProps {\n /** Node data from tree data */\n node: TreeNodeData;\n\n /** Nesting level of the node, starts at 1 */\n level: number;\n\n /** Value of the parent node, `null` for root nodes */\n parent: string | null;\n\n /** Whether the node has children */\n hasChildren: boolean;\n\n /** Whether the node is expanded */\n expanded: boolean;\n\n /** Tree controller instance, return value of `useTree` hook */\n tree: TreeController;\n\n /** If set, tree node with children is expanded on click @default true */\n expandOnClick?: boolean;\n\n /** If set, tree node is selected on click @default false */\n selectOnClick?: boolean;\n\n /** If set, tree node with children is expanded on space key press @default true */\n expandOnSpace?: boolean;\n\n /** If set, tree node is checked on space key press @default false */\n checkOnSpace?: boolean;\n\n /** A function to render tree node label */\n renderNode?: RenderNode;\n\n /** Style to apply to the root element, used for virtualizer positioning */\n style?: React.CSSProperties;\n\n /** Tab index for the node */\n tabIndex?: number;\n\n /** Line state per ancestor + own level, computed by `flattenTreeData`.\n * When provided and the tree root has `data-with-lines`, connector lines are rendered. */\n linesPath?: FlatTreeLineState[];\n}\n\nexport const FlatTreeNode = memo(function FlatTreeNode({\n node,\n level,\n parent,\n hasChildren,\n expanded,\n tree,\n expandOnClick = true,\n selectOnClick,\n expandOnSpace = true,\n checkOnSpace,\n renderNode,\n style,\n tabIndex = -1,\n linesPath,\n}: FlatTreeNodeProps) {\n const ref = useRef<HTMLDivElement>(null);\n const isLoading = tree.isNodeLoading(node.value);\n const loadError = tree.getNodeLoadError(node.value);\n const selected = tree.selectedState.includes(node.value);\n\n const handleClick = (event: React.MouseEvent) => {\n event.stopPropagation();\n\n if (expandOnClick && hasChildren) {\n tree.toggleExpanded(node.value);\n }\n\n if (selectOnClick) {\n tree.select(node.value);\n }\n\n ref.current?.focus();\n };\n\n const handleKeyDown = (event: React.KeyboardEvent) => {\n if (event.nativeEvent.code === 'ArrowRight') {\n event.stopPropagation();\n event.preventDefault();\n\n if (expanded && hasChildren) {\n const root = findElementAncestor(event.currentTarget as HTMLElement, '[data-tree-root]');\n const nodes = root\n ? Array.from(root.querySelectorAll<HTMLElement>('[role=treeitem]')).filter(\n (treeNode) => treeNode.style.display !== 'none'\n )\n : [];\n const index = nodes.indexOf(event.currentTarget as HTMLElement);\n if (index !== -1) {\n nodes[index + 1]?.focus();\n }\n } else if (hasChildren) {\n tree.expand(node.value);\n }\n }\n\n if (event.nativeEvent.code === 'ArrowLeft') {\n event.stopPropagation();\n event.preventDefault();\n\n if (expanded && hasChildren) {\n tree.collapse(node.value);\n } else if (parent) {\n const root = findElementAncestor(event.currentTarget as HTMLElement, '[data-tree-root]');\n const parentElement = root?.querySelector<HTMLElement>(\n `[role=treeitem][data-value=\"${CSS.escape(parent)}\"]`\n );\n parentElement?.focus();\n }\n }\n\n if (event.nativeEvent.code === 'ArrowDown' || event.nativeEvent.code === 'ArrowUp') {\n const root = findElementAncestor(event.currentTarget as HTMLElement, '[data-tree-root]');\n\n if (!root) {\n return;\n }\n\n event.stopPropagation();\n event.preventDefault();\n const nodes = Array.from(root.querySelectorAll<HTMLElement>('[role=treeitem]')).filter(\n (treeNode) => treeNode.style.display !== 'none'\n );\n const index = nodes.indexOf(event.currentTarget as HTMLElement);\n\n if (index === -1) {\n return;\n }\n\n const nextIndex = event.nativeEvent.code === 'ArrowDown' ? index + 1 : index - 1;\n nodes[nextIndex]?.focus();\n }\n\n if (event.nativeEvent.code === 'Space') {\n if (expandOnSpace) {\n event.stopPropagation();\n event.preventDefault();\n tree.toggleExpanded(node.value);\n }\n\n if (checkOnSpace) {\n event.stopPropagation();\n event.preventDefault();\n if (tree.isNodeChecked(node.value)) {\n tree.uncheckNode(node.value);\n } else {\n tree.checkNode(node.value);\n }\n }\n }\n };\n\n const elementProps = {\n className: classes.label,\n style: {} as React.CSSProperties,\n onClick: handleClick,\n 'data-selected': selected || undefined,\n 'data-value': node.value,\n };\n\n return (\n <div\n ref={ref}\n className={classes.node}\n style={{\n ...({\n '--label-offset': `calc(var(--level-offset, var(--mantine-spacing-lg)) * ${level - 1})`,\n } as React.CSSProperties),\n ...style,\n }}\n role=\"treeitem\"\n aria-selected={selected}\n aria-expanded={hasChildren ? expanded : undefined}\n data-value={node.value}\n data-selected={selected || undefined}\n data-level={level}\n tabIndex={tabIndex}\n onKeyDown={handleKeyDown}\n >\n {linesPath?.map((state, idx) => {\n if (state === 'none') {\n return null;\n }\n const column = idx + 2;\n return (\n <span\n key={column}\n aria-hidden\n className={`${classes.flatLine}${state === 'closing' ? ` ${classes.flatLineClosing}` : ''}`}\n style={{ '--flat-line-column': column } as React.CSSProperties}\n />\n );\n })}\n {typeof renderNode === 'function' ? (\n renderNode({\n node,\n level,\n selected,\n isRoot: level === 1,\n tree,\n expanded,\n hasChildren,\n isLoading,\n loadError,\n elementProps,\n dragHandleProps: undefined,\n })\n ) : (\n <div {...elementProps}>{node.label}</div>\n )}\n </div>\n );\n});\n\nFlatTreeNode.displayName = '@mantine/core/FlatTreeNode';\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Tree.mjs","names":["classes"],"sources":["../../../src/components/Tree/Tree.tsx"],"sourcesContent":["import { useEffect, useMemo, useRef } from 'react';\nimport { useClickOutside, useMergedRef } from '@mantine/hooks';\nimport {\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 type { TreeDragDropPayload } from './move-tree-node/move-tree-node';\nimport { TreeNode } from './TreeNode';\nimport type { TreeAllowDrop, TreeDragHandleProps } from './use-tree-node-drag-drop';\nimport { TreeController, useTree } from './use-tree';\nimport classes from './Tree.module.css';\n\nexport interface TreeNodeData {\n label: React.ReactNode;\n value: string;\n nodeProps?: Record<string, any>;\n children?: TreeNodeData[];\n hasChildren?: boolean;\n}\n\nexport interface RenderTreeNodePayload {\n /** Node level in the tree */\n level: number;\n\n /** `true` if the node is expanded, applicable only for nodes with `children` */\n expanded: boolean;\n\n /** `true` if the node has non-empty `children` array or `hasChildren` is set to `true` in the data */\n hasChildren: boolean;\n\n /** `true` if the node is selected */\n selected: boolean;\n\n /** `true` if the node's children are currently being loaded */\n isLoading: boolean;\n\n /** Error from the last failed load attempt, or `null` */\n loadError: Error | null;\n\n /** Node data from the `data` prop of `Tree` */\n node: TreeNodeData;\n\n /** Tree controller instance, return value of `useTree` hook */\n tree: TreeController;\n\n /** Props to spread into the root node element */\n elementProps: {\n className: string;\n style: React.CSSProperties;\n onClick: (event: React.MouseEvent) => void;\n 'data-selected': boolean | undefined;\n 'data-value': string;\n draggable?: boolean;\n onDragStart?: (event: React.DragEvent) => void;\n onDragOver?: (event: React.DragEvent) => void;\n onDragLeave?: (event: React.DragEvent) => void;\n onDrop?: (event: React.DragEvent) => void;\n onDragEnd?: (event: React.DragEvent) => void;\n };\n\n /** Props to spread into the drag handle element when `withDragHandle` is set on `Tree`.\n * `undefined` when `withDragHandle` is not enabled or drag-and-drop is disabled. */\n dragHandleProps: TreeDragHandleProps | undefined;\n}\n\nexport type RenderNode = (payload: RenderTreeNodePayload) => React.ReactNode;\n\nexport type TreeStylesNames = 'root' | 'node' | 'subtree' | 'label';\nexport type TreeCssVariables = {\n root: '--level-offset';\n};\n\nexport interface TreeDragState {\n draggedValue: string | null;\n currentDropTarget: HTMLElement | null;\n}\n\nexport interface TreeProps extends BoxProps, StylesApiProps<TreeFactory>, ElementProps<'ul'> {\n /** Data used to render nodes */\n data: TreeNodeData[];\n\n /** Horizontal padding of each subtree level, key of `theme.spacing` or any valid CSS value @default 'lg' */\n levelOffset?: MantineSpacing;\n\n /** If set, tree node with children is expanded on click @default true */\n expandOnClick?: boolean;\n\n /** If set, tree node with children is expanded on space key press @default true */\n expandOnSpace?: boolean;\n\n /** If set, tree node is checked on space key press @default false */\n checkOnSpace?: boolean;\n\n /** If set, tree node is selected on click @default false */\n selectOnClick?: boolean;\n\n /** Use-tree hook instance that can be used to manipulate component state */\n tree?: TreeController;\n\n /** A function to render tree node label */\n renderNode?: RenderNode;\n\n /** If set, selection is cleared when user clicks outside of the tree @default false */\n clearSelectionOnOutsideClick?: boolean;\n\n /** If set, tree nodes range can be selected with click when `Shift` key is pressed @default true */\n allowRangeSelection?: boolean;\n\n /** If set, subtree content is kept mounted when collapsed. React 19 `Activity` is used to preserve state. @default false */\n keepMounted?: boolean;\n\n /** Called when a node is dropped on another node, enables drag-and-drop when provided */\n onDragDrop?: (payload: TreeDragDropPayload) => void;\n\n /** Called for each potential drop target to determine whether a drop is allowed.\n * When it returns `false`, the drop indicator is hidden and the drop is rejected. */\n allowDrop?: TreeAllowDrop;\n\n /** If set, drag-and-drop must be initiated from an element that spreads `dragHandleProps`\n * from the `renderNode` payload, rather than anywhere on the node. @default false */\n withDragHandle?: boolean;\n\n /** If set, connecting lines are rendered showing parent-child relationships @default false */\n withLines?: boolean;\n}\n\nfunction getFlatValues(data: TreeNodeData[]): string[] {\n return data.reduce<string[]>((acc, item) => {\n acc.push(item.value);\n if (item.children) {\n acc.push(...getFlatValues(item.children));\n }\n return acc;\n }, []);\n}\n\nexport type TreeFactory = Factory<{\n props: TreeProps;\n ref: HTMLUListElement;\n stylesNames: TreeStylesNames;\n vars: TreeCssVariables;\n}>;\n\nconst defaultProps = {\n expandOnClick: true,\n allowRangeSelection: true,\n expandOnSpace: true,\n} satisfies Partial<TreeProps>;\n\nconst varsResolver = createVarsResolver<TreeFactory>((_theme, { levelOffset }) => ({\n root: {\n '--level-offset': getSpacing(levelOffset),\n },\n}));\n\nexport const Tree = factory<TreeFactory>((_props) => {\n const props = useProps('Tree', defaultProps, _props);\n const {\n classNames,\n className,\n style,\n styles,\n unstyled,\n vars,\n data,\n expandOnClick,\n tree,\n renderNode,\n selectOnClick,\n clearSelectionOnOutsideClick,\n allowRangeSelection,\n expandOnSpace,\n levelOffset,\n checkOnSpace,\n keepMounted,\n onDragDrop,\n allowDrop,\n withDragHandle,\n withLines,\n attributes,\n ref,\n ...others\n } = props;\n\n const defaultController = useTree();\n const controller = tree || defaultController;\n\n const dragStateRef = useRef<TreeDragState>({ draggedValue: null, currentDropTarget: null });\n\n const getStyles = useStyles<TreeFactory>({\n name: 'Tree',\n classes,\n props,\n className,\n style,\n classNames,\n styles,\n unstyled,\n attributes,\n vars,\n varsResolver,\n });\n\n const clickOutsideRef = useClickOutside(\n () => clearSelectionOnOutsideClick && controller.clearSelected()\n );\n\n const mergedRef = useMergedRef(ref, clickOutsideRef);\n\n const flatValues = useMemo(() => getFlatValues(data), [data]);\n\n useEffect(() => {\n controller.initialize(data);\n }, [data]);\n\n const nodes = data.map((node, index) => (\n <TreeNode\n key={node.value}\n node={node}\n getStyles={getStyles}\n rootIndex={index}\n expandOnClick={expandOnClick}\n selectOnClick={selectOnClick}\n controller={controller}\n renderNode={renderNode}\n flatValues={flatValues}\n allowRangeSelection={allowRangeSelection}\n expandOnSpace={expandOnSpace}\n checkOnSpace={checkOnSpace}\n keepMounted={keepMounted}\n onDragDrop={onDragDrop}\n allowDrop={allowDrop}\n withDragHandle={withDragHandle}\n dragStateRef={dragStateRef}\n data={data}\n />\n ));\n\n return (\n <Box\n component=\"ul\"\n ref={mergedRef}\n {...getStyles('root')}\n {...others}\n role=\"tree\"\n aria-multiselectable={controller.multiple}\n data-tree-root\n data-with-lines={withLines || undefined}\n >\n {nodes}\n </Box>\n );\n});\n\nTree.displayName = '@mantine/core/Tree';\nTree.classes = classes;\nTree.varsResolver = varsResolver;\n\nexport namespace Tree {\n export type Props = TreeProps;\n export type StylesNames = TreeStylesNames;\n export type Factory = TreeFactory;\n export type NodeData = TreeNodeData;\n export type RenderNodePayload = RenderTreeNodePayload;\n}\n"],"mappings":";;;;;;;;;;;;;;AAuIA,SAAS,cAAc,MAAgC;CACrD,OAAO,KAAK,QAAkB,KAAK,SAAS;EAC1C,IAAI,KAAK,KAAK,KAAK;EACnB,IAAI,KAAK,UACP,IAAI,KAAK,GAAG,cAAc,KAAK,QAAQ,CAAC;EAE1C,OAAO;CACT,GAAG,CAAC,CAAC;AACP;AASA,MAAM,eAAe;CACnB,eAAe;CACf,qBAAqB;CACrB,eAAe;AACjB;AAEA,MAAM,eAAe,oBAAiC,QAAQ,EAAE,mBAAmB,EACjF,MAAM,EACJ,kBAAkB,WAAW,WAAW,EAC1C,EACF,EAAE;AAEF,MAAa,OAAO,SAAsB,WAAW;CACnD,MAAM,QAAQ,SAAS,QAAQ,cAAc,MAAM;CACnD,MAAM,EACJ,YACA,WACA,OACA,QACA,UACA,MACA,MACA,eACA,MACA,YACA,eACA,8BACA,qBACA,eACA,aACA,cACA,aACA,YACA,WACA,gBACA,WACA,YACA,KACA,GAAG,WACD;CAEJ,MAAM,oBAAoB,QAAQ;CAClC,MAAM,aAAa,QAAQ;CAE3B,MAAM,eAAe,OAAsB;EAAE,cAAc;EAAM,mBAAmB;CAAK,CAAC;CAE1F,MAAM,YAAY,UAAuB;EACvC,MAAM;EACN,SAAA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,CAAC;CAMD,MAAM,YAAY,aAAa,KAJP,sBAChB,gCAAgC,WAAW,cAAc,CAGf,CAAC;CAEnD,MAAM,aAAa,cAAc,cAAc,IAAI,GAAG,CAAC,IAAI,CAAC;CAE5D,gBAAgB;EACd,WAAW,WAAW,IAAI;CAC5B,GAAG,CAAC,IAAI,CAAC;CAET,MAAM,QAAQ,KAAK,KAAK,MAAM,UAC5B,oBAAC,UAAD;EAEQ;EACK;EACX,WAAW;EACI;EACA;EACH;EACA;EACA;EACS;EACN;EACD;EACD;EACD;EACD;EACK;EACF;EACR;CACP,GAlBM,KAAK,KAkBX,CACF;CAED,OACE,oBAAC,KAAD;EACE,WAAU;EACV,KAAK;EACL,GAAI,UAAU,MAAM;EACpB,GAAI;EACJ,MAAK;EACL,wBAAsB,WAAW;EACjC,kBAAA;EACA,mBAAiB,aAAa,KAAA;YAE7B;CACE,CAAA;AAET,CAAC;AAED,KAAK,cAAc;AACnB,KAAK,UAAUA;AACf,KAAK,eAAe"}
1
+ {"version":3,"file":"Tree.mjs","names":["classes"],"sources":["../../../src/components/Tree/Tree.tsx"],"sourcesContent":["import { useEffect, useMemo, useRef } from 'react';\nimport { useClickOutside, useMergedRef } from '@mantine/hooks';\nimport {\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 type { TreeDragDropPayload } from './move-tree-node/move-tree-node';\nimport { TreeNode } from './TreeNode';\nimport type { TreeAllowDrop, TreeDragHandleProps } from './use-tree-node-drag-drop';\nimport { TreeController, useTree } from './use-tree';\nimport classes from './Tree.module.css';\n\nexport interface TreeNodeData {\n label: React.ReactNode;\n value: string;\n nodeProps?: Record<string, any>;\n children?: TreeNodeData[];\n hasChildren?: boolean;\n}\n\nexport interface RenderTreeNodePayload {\n /** Node level in the tree */\n level: number;\n\n /** `true` if the node is expanded, applicable only for nodes with `children` */\n expanded: boolean;\n\n /** `true` if the node has non-empty `children` array or `hasChildren` is set to `true` in the data */\n hasChildren: boolean;\n\n /** `true` if the node is selected */\n selected: boolean;\n\n /** `true` if the node is at the top-most level of the tree (level 1) */\n isRoot: boolean;\n\n /** `true` if the node's children are currently being loaded */\n isLoading: boolean;\n\n /** Error from the last failed load attempt, or `null` */\n loadError: Error | null;\n\n /** Node data from the `data` prop of `Tree` */\n node: TreeNodeData;\n\n /** Tree controller instance, return value of `useTree` hook */\n tree: TreeController;\n\n /** Props to spread into the root node element */\n elementProps: {\n className: string;\n style: React.CSSProperties;\n onClick: (event: React.MouseEvent) => void;\n 'data-selected': boolean | undefined;\n 'data-value': string;\n draggable?: boolean;\n onDragStart?: (event: React.DragEvent) => void;\n onDragOver?: (event: React.DragEvent) => void;\n onDragLeave?: (event: React.DragEvent) => void;\n onDrop?: (event: React.DragEvent) => void;\n onDragEnd?: (event: React.DragEvent) => void;\n };\n\n /** Props to spread into the drag handle element when `withDragHandle` is set on `Tree`.\n * `undefined` when `withDragHandle` is not enabled or drag-and-drop is disabled. */\n dragHandleProps: TreeDragHandleProps | undefined;\n}\n\nexport type RenderNode = (payload: RenderTreeNodePayload) => React.ReactNode;\n\nexport type TreeStylesNames = 'root' | 'node' | 'subtree' | 'label';\nexport type TreeCssVariables = {\n root: '--level-offset';\n};\n\nexport interface TreeDragState {\n draggedValue: string | null;\n currentDropTarget: HTMLElement | null;\n}\n\nexport interface TreeProps extends BoxProps, StylesApiProps<TreeFactory>, ElementProps<'ul'> {\n /** Data used to render nodes */\n data: TreeNodeData[];\n\n /** Horizontal padding of each subtree level, key of `theme.spacing` or any valid CSS value @default 'lg' */\n levelOffset?: MantineSpacing;\n\n /** If set, tree node with children is expanded on click @default true */\n expandOnClick?: boolean;\n\n /** If set, tree node with children is expanded on space key press @default true */\n expandOnSpace?: boolean;\n\n /** If set, tree node is checked on space key press @default false */\n checkOnSpace?: boolean;\n\n /** If set, tree node is selected on click @default false */\n selectOnClick?: boolean;\n\n /** Use-tree hook instance that can be used to manipulate component state */\n tree?: TreeController;\n\n /** A function to render tree node label */\n renderNode?: RenderNode;\n\n /** If set, selection is cleared when user clicks outside of the tree @default false */\n clearSelectionOnOutsideClick?: boolean;\n\n /** If set, tree nodes range can be selected with click when `Shift` key is pressed @default true */\n allowRangeSelection?: boolean;\n\n /** If set, subtree content is kept mounted when collapsed. React 19 `Activity` is used to preserve state. @default false */\n keepMounted?: boolean;\n\n /** Called when a node is dropped on another node, enables drag-and-drop when provided */\n onDragDrop?: (payload: TreeDragDropPayload) => void;\n\n /** Called for each potential drop target to determine whether a drop is allowed.\n * When it returns `false`, the drop indicator is hidden and the drop is rejected. */\n allowDrop?: TreeAllowDrop;\n\n /** If set, drag-and-drop must be initiated from an element that spreads `dragHandleProps`\n * from the `renderNode` payload, rather than anywhere on the node. @default false */\n withDragHandle?: boolean;\n\n /** If set, connecting lines are rendered showing parent-child relationships @default false */\n withLines?: boolean;\n}\n\nfunction getFlatValues(data: TreeNodeData[]): string[] {\n return data.reduce<string[]>((acc, item) => {\n acc.push(item.value);\n if (item.children) {\n acc.push(...getFlatValues(item.children));\n }\n return acc;\n }, []);\n}\n\nexport type TreeFactory = Factory<{\n props: TreeProps;\n ref: HTMLUListElement;\n stylesNames: TreeStylesNames;\n vars: TreeCssVariables;\n}>;\n\nconst defaultProps = {\n expandOnClick: true,\n allowRangeSelection: true,\n expandOnSpace: true,\n} satisfies Partial<TreeProps>;\n\nconst varsResolver = createVarsResolver<TreeFactory>((_theme, { levelOffset }) => ({\n root: {\n '--level-offset': getSpacing(levelOffset),\n },\n}));\n\nexport const Tree = factory<TreeFactory>((_props) => {\n const props = useProps('Tree', defaultProps, _props);\n const {\n classNames,\n className,\n style,\n styles,\n unstyled,\n vars,\n data,\n expandOnClick,\n tree,\n renderNode,\n selectOnClick,\n clearSelectionOnOutsideClick,\n allowRangeSelection,\n expandOnSpace,\n levelOffset,\n checkOnSpace,\n keepMounted,\n onDragDrop,\n allowDrop,\n withDragHandle,\n withLines,\n attributes,\n ref,\n ...others\n } = props;\n\n const defaultController = useTree();\n const controller = tree || defaultController;\n\n const dragStateRef = useRef<TreeDragState>({ draggedValue: null, currentDropTarget: null });\n\n const getStyles = useStyles<TreeFactory>({\n name: 'Tree',\n classes,\n props,\n className,\n style,\n classNames,\n styles,\n unstyled,\n attributes,\n vars,\n varsResolver,\n });\n\n const clickOutsideRef = useClickOutside(\n () => clearSelectionOnOutsideClick && controller.clearSelected()\n );\n\n const mergedRef = useMergedRef(ref, clickOutsideRef);\n\n const flatValues = useMemo(() => getFlatValues(data), [data]);\n\n useEffect(() => {\n controller.initialize(data);\n }, [data]);\n\n const nodes = data.map((node, index) => (\n <TreeNode\n key={node.value}\n node={node}\n getStyles={getStyles}\n rootIndex={index}\n expandOnClick={expandOnClick}\n selectOnClick={selectOnClick}\n controller={controller}\n renderNode={renderNode}\n flatValues={flatValues}\n allowRangeSelection={allowRangeSelection}\n expandOnSpace={expandOnSpace}\n checkOnSpace={checkOnSpace}\n keepMounted={keepMounted}\n onDragDrop={onDragDrop}\n allowDrop={allowDrop}\n withDragHandle={withDragHandle}\n dragStateRef={dragStateRef}\n data={data}\n />\n ));\n\n return (\n <Box\n component=\"ul\"\n ref={mergedRef}\n {...getStyles('root')}\n {...others}\n role=\"tree\"\n aria-multiselectable={controller.multiple}\n data-tree-root\n data-with-lines={withLines || undefined}\n >\n {nodes}\n </Box>\n );\n});\n\nTree.displayName = '@mantine/core/Tree';\nTree.classes = classes;\nTree.varsResolver = varsResolver;\n\nexport namespace Tree {\n export type Props = TreeProps;\n export type StylesNames = TreeStylesNames;\n export type Factory = TreeFactory;\n export type NodeData = TreeNodeData;\n export type RenderNodePayload = RenderTreeNodePayload;\n}\n"],"mappings":";;;;;;;;;;;;;;AA0IA,SAAS,cAAc,MAAgC;CACrD,OAAO,KAAK,QAAkB,KAAK,SAAS;EAC1C,IAAI,KAAK,KAAK,KAAK;EACnB,IAAI,KAAK,UACP,IAAI,KAAK,GAAG,cAAc,KAAK,QAAQ,CAAC;EAE1C,OAAO;CACT,GAAG,CAAC,CAAC;AACP;AASA,MAAM,eAAe;CACnB,eAAe;CACf,qBAAqB;CACrB,eAAe;AACjB;AAEA,MAAM,eAAe,oBAAiC,QAAQ,EAAE,mBAAmB,EACjF,MAAM,EACJ,kBAAkB,WAAW,WAAW,EAC1C,EACF,EAAE;AAEF,MAAa,OAAO,SAAsB,WAAW;CACnD,MAAM,QAAQ,SAAS,QAAQ,cAAc,MAAM;CACnD,MAAM,EACJ,YACA,WACA,OACA,QACA,UACA,MACA,MACA,eACA,MACA,YACA,eACA,8BACA,qBACA,eACA,aACA,cACA,aACA,YACA,WACA,gBACA,WACA,YACA,KACA,GAAG,WACD;CAEJ,MAAM,oBAAoB,QAAQ;CAClC,MAAM,aAAa,QAAQ;CAE3B,MAAM,eAAe,OAAsB;EAAE,cAAc;EAAM,mBAAmB;CAAK,CAAC;CAE1F,MAAM,YAAY,UAAuB;EACvC,MAAM;EACN,SAAA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,CAAC;CAMD,MAAM,YAAY,aAAa,KAJP,sBAChB,gCAAgC,WAAW,cAAc,CAGf,CAAC;CAEnD,MAAM,aAAa,cAAc,cAAc,IAAI,GAAG,CAAC,IAAI,CAAC;CAE5D,gBAAgB;EACd,WAAW,WAAW,IAAI;CAC5B,GAAG,CAAC,IAAI,CAAC;CAET,MAAM,QAAQ,KAAK,KAAK,MAAM,UAC5B,oBAAC,UAAD;EAEQ;EACK;EACX,WAAW;EACI;EACA;EACH;EACA;EACA;EACS;EACN;EACD;EACD;EACD;EACD;EACK;EACF;EACR;CACP,GAlBM,KAAK,KAkBX,CACF;CAED,OACE,oBAAC,KAAD;EACE,WAAU;EACV,KAAK;EACL,GAAI,UAAU,MAAM;EACpB,GAAI;EACJ,MAAK;EACL,wBAAsB,WAAW;EACjC,kBAAA;EACA,mBAAiB,aAAa,KAAA;YAE7B;CACE,CAAA;AAET,CAAC;AAED,KAAK,cAAc;AACnB,KAAK,UAAUA;AACf,KAAK,eAAe"}
@@ -4,7 +4,9 @@ var Tree_module_default = {
4
4
  "root": "m_f698e191",
5
5
  "subtree": "m_75f3ecf",
6
6
  "node": "m_f6970eb1",
7
- "label": "m_dc283425"
7
+ "label": "m_dc283425",
8
+ "flatLine": "m_c03b303c",
9
+ "flatLineClosing": "m_bf7448d9"
8
10
  };
9
11
  //#endregion
10
12
  export { Tree_module_default as default };