@mantine/core 9.3.2 → 9.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cjs/components/Accordion/Accordion.cjs +1 -0
- package/cjs/components/Accordion/Accordion.cjs.map +1 -1
- package/cjs/components/Accordion/Accordion.context.cjs.map +1 -1
- package/cjs/components/Accordion/AccordionChevron.cjs.map +1 -1
- package/cjs/components/Accordion/AccordionControl/AccordionControl.cjs.map +1 -1
- package/cjs/components/Accordion/AccordionItem/AccordionItem.cjs.map +1 -1
- package/cjs/components/Accordion/AccordionItem.context.cjs.map +1 -1
- package/cjs/components/Accordion/AccordionPanel/AccordionPanel.cjs.map +1 -1
- package/cjs/components/ActionIcon/ActionIcon.cjs +1 -0
- package/cjs/components/ActionIcon/ActionIcon.cjs.map +1 -1
- package/cjs/components/ActionIcon/ActionIconGroup/ActionIconGroup.cjs +1 -1
- package/cjs/components/ActionIcon/ActionIconGroup/ActionIconGroup.cjs.map +1 -1
- package/cjs/components/ActionIcon/ActionIconGroupSection/ActionIconGroupSection.cjs.map +1 -1
- package/cjs/components/Affix/Affix.cjs.map +1 -1
- package/cjs/components/Alert/Alert.cjs.map +1 -1
- package/cjs/components/Anchor/Anchor.cjs.map +1 -1
- package/cjs/components/AngleSlider/AngleSlider.cjs.map +1 -1
- package/cjs/components/AppShell/AppShell.cjs.map +1 -1
- package/cjs/components/AppShell/AppShell.context.cjs.map +1 -1
- package/cjs/components/AppShell/AppShellAside/AppShellAside.cjs.map +1 -1
- package/cjs/components/AppShell/AppShellFooter/AppShellFooter.cjs.map +1 -1
- package/cjs/components/AppShell/AppShellHeader/AppShellHeader.cjs.map +1 -1
- package/cjs/components/AppShell/AppShellMain/AppShellMain.cjs.map +1 -1
- package/cjs/components/AppShell/AppShellMediaStyles/AppShellMediaStyles.cjs.map +1 -1
- package/cjs/components/AppShell/AppShellMediaStyles/assign-aside-variables/assign-aside-variables.cjs.map +1 -1
- package/cjs/components/AppShell/AppShellMediaStyles/assign-footer-variables/assign-footer-variables.cjs.map +1 -1
- package/cjs/components/AppShell/AppShellMediaStyles/assign-header-variables/assign-header-variables.cjs.map +1 -1
- package/cjs/components/AppShell/AppShellMediaStyles/assign-navbar-variables/assign-navbar-variables.cjs.map +1 -1
- package/cjs/components/AppShell/AppShellMediaStyles/assign-padding-variables/assign-padding-variables.cjs.map +1 -1
- package/cjs/components/AppShell/AppShellMediaStyles/get-variables/get-variables.cjs.map +1 -1
- package/cjs/components/AppShell/AppShellMediaStyles/is-primitive-size/is-primitive-size.cjs.map +1 -1
- package/cjs/components/AppShell/AppShellMediaStyles/is-responsive-size/is-responsive-size.cjs.map +1 -1
- package/cjs/components/AppShell/AppShellNavbar/AppShellNavbar.cjs.map +1 -1
- package/cjs/components/AppShell/AppShellSection/AppShellSection.cjs.map +1 -1
- package/cjs/components/AppShell/use-resizing/use-resizing.cjs.map +1 -1
- package/cjs/components/AspectRatio/AspectRatio.cjs.map +1 -1
- package/cjs/components/Autocomplete/Autocomplete.cjs.map +1 -1
- package/cjs/components/Avatar/Avatar.cjs.map +1 -1
- package/cjs/components/Avatar/AvatarGroup/AvatarGroup.cjs.map +1 -1
- package/cjs/components/Avatar/AvatarPlaceholderIcon.cjs.map +1 -1
- package/cjs/components/Avatar/get-initials/get-initials.cjs.map +1 -1
- package/cjs/components/BackgroundImage/BackgroundImage.cjs.map +1 -1
- package/cjs/components/Badge/Badge.cjs.map +1 -1
- package/cjs/components/Blockquote/Blockquote.cjs.map +1 -1
- package/cjs/components/Breadcrumbs/Breadcrumbs.cjs.map +1 -1
- package/cjs/components/Burger/Burger.cjs.map +1 -1
- package/cjs/components/Button/Button.cjs.map +1 -1
- package/cjs/components/Button/ButtonGroup/ButtonGroup.cjs.map +1 -1
- package/cjs/components/Button/ButtonGroupSection/ButtonGroupSection.cjs.map +1 -1
- package/cjs/components/Card/Card.cjs.map +1 -1
- package/cjs/components/Card/Card.context.cjs.map +1 -1
- package/cjs/components/Card/CardSection/CardSection.cjs.map +1 -1
- package/cjs/components/Center/Center.cjs.map +1 -1
- package/cjs/components/Checkbox/CheckIcon.cjs.map +1 -1
- package/cjs/components/Checkbox/Checkbox.cjs.map +1 -1
- package/cjs/components/Checkbox/CheckboxCard/CheckboxCard.cjs.map +1 -1
- package/cjs/components/Checkbox/CheckboxGroup/CheckboxGroup.cjs.map +1 -1
- package/cjs/components/Checkbox/CheckboxIndicator/CheckboxIndicator.cjs.map +1 -1
- package/cjs/components/Chip/Chip.cjs.map +1 -1
- package/cjs/components/Chip/ChipGroup/ChipGroup.cjs.map +1 -1
- package/cjs/components/CloseButton/CloseButton.cjs.map +1 -1
- package/cjs/components/CloseButton/CloseIcon.cjs.map +1 -1
- package/cjs/components/Code/Code.cjs.map +1 -1
- package/cjs/components/Collapse/Collapse.cjs.map +1 -1
- package/cjs/components/ColorInput/ColorInput.cjs.map +1 -1
- package/cjs/components/ColorInput/EyeDropperIcon.cjs.map +1 -1
- package/cjs/components/ColorPicker/AlphaSlider/AlphaSlider.cjs.map +1 -1
- package/cjs/components/ColorPicker/ColorPicker.cjs.map +1 -1
- package/cjs/components/ColorPicker/ColorPicker.context.cjs.map +1 -1
- package/cjs/components/ColorPicker/ColorSlider/ColorSlider.cjs.map +1 -1
- package/cjs/components/ColorPicker/HueSlider/HueSlider.cjs.map +1 -1
- package/cjs/components/ColorPicker/Saturation/Saturation.cjs.map +1 -1
- package/cjs/components/ColorPicker/Swatches/Swatches.cjs.map +1 -1
- package/cjs/components/ColorPicker/Thumb/Thumb.cjs.map +1 -1
- package/cjs/components/ColorPicker/converters/converters.cjs.map +1 -1
- package/cjs/components/ColorPicker/converters/parsers.cjs.map +1 -1
- package/cjs/components/ColorSwatch/ColorSwatch.cjs.map +1 -1
- package/cjs/components/Combobox/Combobox.cjs.map +1 -1
- package/cjs/components/Combobox/Combobox.context.cjs.map +1 -1
- package/cjs/components/Combobox/ComboboxChevron/ComboboxChevron.cjs.map +1 -1
- package/cjs/components/Combobox/ComboboxClearButton/ComboboxClearButton.cjs.map +1 -1
- package/cjs/components/Combobox/ComboboxDropdown/ComboboxDropdown.cjs.map +1 -1
- package/cjs/components/Combobox/ComboboxDropdownTarget/ComboboxDropdownTarget.cjs.map +1 -1
- package/cjs/components/Combobox/ComboboxEmpty/ComboboxEmpty.cjs.map +1 -1
- package/cjs/components/Combobox/ComboboxEventsTarget/ComboboxEventsTarget.cjs.map +1 -1
- package/cjs/components/Combobox/ComboboxFooter/ComboboxFooter.cjs.map +1 -1
- package/cjs/components/Combobox/ComboboxGroup/ComboboxGroup.cjs +3 -2
- package/cjs/components/Combobox/ComboboxGroup/ComboboxGroup.cjs.map +1 -1
- package/cjs/components/Combobox/ComboboxHeader/ComboboxHeader.cjs.map +1 -1
- package/cjs/components/Combobox/ComboboxHiddenInput/ComboboxHiddenInput.cjs.map +1 -1
- package/cjs/components/Combobox/ComboboxOption/ComboboxOption.cjs.map +1 -1
- package/cjs/components/Combobox/ComboboxOptions/ComboboxOptions.cjs.map +1 -1
- package/cjs/components/Combobox/ComboboxSearch/ComboboxSearch.cjs.map +1 -1
- package/cjs/components/Combobox/ComboboxTarget/ComboboxTarget.cjs.map +1 -1
- package/cjs/components/Combobox/OptionsDropdown/OptionsDropdown.cjs +2 -2
- package/cjs/components/Combobox/OptionsDropdown/OptionsDropdown.cjs.map +1 -1
- package/cjs/components/Combobox/OptionsDropdown/default-options-filter.cjs.map +1 -1
- package/cjs/components/Combobox/use-combobox/get-index/get-index.cjs.map +1 -1
- package/cjs/components/Combobox/use-combobox/use-combobox.cjs.map +1 -1
- package/cjs/components/Combobox/use-combobox/use-virtualized-combobox.cjs.map +1 -1
- package/cjs/components/Combobox/use-combobox-target-props/use-combobox-target-props.cjs.map +1 -1
- package/cjs/components/Combobox/use-pills-reorder/use-pills-reorder.cjs.map +1 -1
- package/cjs/components/ComboboxPopover/ComboboxPopover.cjs +218 -0
- package/cjs/components/ComboboxPopover/ComboboxPopover.cjs.map +1 -0
- package/cjs/components/ComboboxPopover/ComboboxPopoverTarget.cjs +45 -0
- package/cjs/components/ComboboxPopover/ComboboxPopoverTarget.cjs.map +1 -0
- package/cjs/components/Container/Container.cjs.map +1 -1
- package/cjs/components/CopyButton/CopyButton.cjs.map +1 -1
- package/cjs/components/DataList/DataList.cjs +61 -0
- package/cjs/components/DataList/DataList.cjs.map +1 -0
- package/cjs/components/DataList/DataList.context.cjs +8 -0
- package/cjs/components/DataList/DataList.context.cjs.map +1 -0
- package/cjs/components/DataList/DataList.module.cjs +12 -0
- package/cjs/components/DataList/DataList.module.cjs.map +1 -0
- package/cjs/components/DataList/DataListItem/DataListItem.cjs +32 -0
- package/cjs/components/DataList/DataListItem/DataListItem.cjs.map +1 -0
- package/cjs/components/DataList/DataListItemLabel/DataListItemLabel.cjs +33 -0
- package/cjs/components/DataList/DataListItemLabel/DataListItemLabel.cjs.map +1 -0
- package/cjs/components/DataList/DataListItemValue/DataListItemValue.cjs +33 -0
- package/cjs/components/DataList/DataListItemValue/DataListItemValue.cjs.map +1 -0
- package/cjs/components/Dialog/Dialog.cjs.map +1 -1
- package/cjs/components/Divider/Divider.cjs.map +1 -1
- package/cjs/components/Drawer/Drawer.cjs.map +1 -1
- package/cjs/components/Drawer/Drawer.context.cjs.map +1 -1
- package/cjs/components/Drawer/DrawerBody.cjs.map +1 -1
- package/cjs/components/Drawer/DrawerCloseButton.cjs.map +1 -1
- package/cjs/components/Drawer/DrawerContent.cjs.map +1 -1
- package/cjs/components/Drawer/DrawerHeader.cjs.map +1 -1
- package/cjs/components/Drawer/DrawerOverlay.cjs.map +1 -1
- package/cjs/components/Drawer/DrawerRoot.cjs.map +1 -1
- package/cjs/components/Drawer/DrawerStack.cjs.map +1 -1
- package/cjs/components/Drawer/DrawerTitle.cjs.map +1 -1
- package/cjs/components/EmptyState/EmptyState.cjs +102 -0
- package/cjs/components/EmptyState/EmptyState.cjs.map +1 -0
- package/cjs/components/EmptyState/EmptyState.context.cjs +8 -0
- package/cjs/components/EmptyState/EmptyState.context.cjs.map +1 -0
- package/cjs/components/EmptyState/EmptyState.module.cjs +14 -0
- package/cjs/components/EmptyState/EmptyState.module.cjs.map +1 -0
- package/cjs/components/EmptyState/EmptyStateActions/EmptyStateActions.cjs +28 -0
- package/cjs/components/EmptyState/EmptyStateActions/EmptyStateActions.cjs.map +1 -0
- package/cjs/components/EmptyState/EmptyStateDescription/EmptyStateDescription.cjs +29 -0
- package/cjs/components/EmptyState/EmptyStateDescription/EmptyStateDescription.cjs.map +1 -0
- package/cjs/components/EmptyState/EmptyStateIndicator/EmptyStateIndicator.cjs +29 -0
- package/cjs/components/EmptyState/EmptyStateIndicator/EmptyStateIndicator.cjs.map +1 -0
- package/cjs/components/EmptyState/EmptyStateTitle/EmptyStateTitle.cjs +30 -0
- package/cjs/components/EmptyState/EmptyStateTitle/EmptyStateTitle.cjs.map +1 -0
- package/cjs/components/Fieldset/Fieldset.cjs.map +1 -1
- package/cjs/components/FileButton/FileButton.cjs.map +1 -1
- package/cjs/components/FileInput/FileInput.cjs.map +1 -1
- package/cjs/components/Flex/Flex.cjs.map +1 -1
- package/cjs/components/FloatingIndicator/FloatingIndicator.cjs.map +1 -1
- package/cjs/components/FloatingIndicator/use-floating-indicator.cjs.map +1 -1
- package/cjs/components/FloatingWindow/FloatingWindow.cjs.map +1 -1
- package/cjs/components/FocusTrap/FocusTrap.cjs.map +1 -1
- package/cjs/components/Grid/Grid.cjs.map +1 -1
- package/cjs/components/Grid/Grid.context.cjs.map +1 -1
- package/cjs/components/Grid/GridCol/GridCol.cjs.map +1 -1
- package/cjs/components/Grid/GridCol/GridColVariables.cjs.map +1 -1
- package/cjs/components/Grid/GridVariables.cjs.map +1 -1
- package/cjs/components/Group/Group.cjs.map +1 -1
- package/cjs/components/Group/filter-falsy-children/filter-falsy-children.cjs.map +1 -1
- package/cjs/components/Highlight/Highlight.cjs.map +1 -1
- package/cjs/components/Highlight/highlighter/highlighter.cjs.map +1 -1
- package/cjs/components/HoverCard/HoverCard.cjs.map +1 -1
- package/cjs/components/HoverCard/HoverCard.context.cjs.map +1 -1
- package/cjs/components/HoverCard/HoverCardDropdown/HoverCardDropdown.cjs.map +1 -1
- package/cjs/components/HoverCard/HoverCardGroup/HoverCardGroup.cjs.map +1 -1
- package/cjs/components/HoverCard/HoverCardTarget/HoverCardTarget.cjs.map +1 -1
- package/cjs/components/HoverCard/use-hover-card.cjs.map +1 -1
- package/cjs/components/Image/Image.cjs.map +1 -1
- package/cjs/components/Indicator/Indicator.cjs.map +1 -1
- package/cjs/components/Input/Input.cjs +7 -2
- package/cjs/components/Input/Input.cjs.map +1 -1
- package/cjs/components/Input/Input.context.cjs.map +1 -1
- package/cjs/components/Input/Input.module.cjs +1 -0
- package/cjs/components/Input/Input.module.cjs.map +1 -1
- package/cjs/components/Input/InputClearButton/InputClearButton.cjs.map +1 -1
- package/cjs/components/Input/InputClearSection/InputClearSection.cjs.map +1 -1
- package/cjs/components/Input/InputDescription/InputDescription.cjs.map +1 -1
- package/cjs/components/Input/InputError/InputError.cjs.map +1 -1
- package/cjs/components/Input/InputLabel/InputLabel.cjs.map +1 -1
- package/cjs/components/Input/InputPlaceholder/InputPlaceholder.cjs.map +1 -1
- package/cjs/components/Input/InputSuccess/InputSuccess.cjs +48 -0
- package/cjs/components/Input/InputSuccess/InputSuccess.cjs.map +1 -0
- package/cjs/components/Input/InputWrapper/InputWrapper.cjs +22 -5
- package/cjs/components/Input/InputWrapper/InputWrapper.cjs.map +1 -1
- package/cjs/components/Input/InputWrapper.context.cjs.map +1 -1
- package/cjs/components/Input/use-input-props.cjs +4 -1
- package/cjs/components/Input/use-input-props.cjs.map +1 -1
- package/cjs/components/InputBase/InputBase.cjs.map +1 -1
- package/cjs/components/JsonInput/JsonInput.cjs.map +1 -1
- package/cjs/components/JsonInput/validate-json/validate-json.cjs.map +1 -1
- package/cjs/components/Kbd/Kbd.cjs.map +1 -1
- package/cjs/components/List/List.cjs.map +1 -1
- package/cjs/components/List/List.context.cjs.map +1 -1
- package/cjs/components/List/ListItem/ListItem.cjs.map +1 -1
- package/cjs/components/Loader/Loader.cjs.map +1 -1
- package/cjs/components/Loader/loaders/Bars.cjs.map +1 -1
- package/cjs/components/Loader/loaders/Dots.cjs.map +1 -1
- package/cjs/components/Loader/loaders/Oval.cjs.map +1 -1
- package/cjs/components/LoadingOverlay/LoadingOverlay.cjs.map +1 -1
- package/cjs/components/Mark/Mark.cjs.map +1 -1
- package/cjs/components/Marquee/Marquee.cjs.map +1 -1
- package/cjs/components/MaskInput/MaskInput.cjs.map +1 -1
- package/cjs/components/MaskInput/use-mask-input-props.cjs.map +1 -1
- package/cjs/components/Menu/Menu.cjs.map +1 -1
- package/cjs/components/Menu/Menu.context.cjs.map +1 -1
- package/cjs/components/Menu/MenuCheckboxGroup/MenuCheckboxGroup.cjs.map +1 -1
- package/cjs/components/Menu/MenuCheckboxGroup/MenuCheckboxGroup.context.cjs.map +1 -1
- package/cjs/components/Menu/MenuCheckboxItem/MenuCheckboxItem.cjs.map +1 -1
- package/cjs/components/Menu/MenuContextMenu/MenuContextMenu.cjs.map +1 -1
- package/cjs/components/Menu/MenuDivider/MenuDivider.cjs.map +1 -1
- package/cjs/components/Menu/MenuDropdown/MenuDropdown.cjs.map +1 -1
- package/cjs/components/Menu/MenuItem/MenuItem.cjs.map +1 -1
- package/cjs/components/Menu/MenuLabel/MenuLabel.cjs.map +1 -1
- package/cjs/components/Menu/MenuRadioGroup/MenuRadioGroup.cjs.map +1 -1
- package/cjs/components/Menu/MenuRadioGroup/MenuRadioGroup.context.cjs.map +1 -1
- package/cjs/components/Menu/MenuRadioItem/MenuRadioItem.cjs.map +1 -1
- package/cjs/components/Menu/MenuSearch/MenuSearch.cjs.map +1 -1
- package/cjs/components/Menu/MenuSelectableItem/MenuSelectableItem.cjs.map +1 -1
- package/cjs/components/Menu/MenuSub/MenuSub.cjs.map +1 -1
- package/cjs/components/Menu/MenuSub/MenuSub.context.cjs.map +1 -1
- package/cjs/components/Menu/MenuSubDropdown/MenuSubDropdown.cjs.map +1 -1
- package/cjs/components/Menu/MenuSubItem/MenuSubItem.cjs.map +1 -1
- package/cjs/components/Menu/MenuSubTarget/MenuSubTarget.cjs.map +1 -1
- package/cjs/components/Menu/MenuTarget/MenuTarget.cjs.map +1 -1
- package/cjs/components/Menu/use-menu-type-ahead.cjs.map +1 -1
- package/cjs/components/Menubar/Menubar.cjs +146 -0
- package/cjs/components/Menubar/Menubar.cjs.map +1 -0
- package/cjs/components/Menubar/Menubar.context.cjs +12 -0
- package/cjs/components/Menubar/Menubar.context.cjs.map +1 -0
- package/cjs/components/Menubar/Menubar.module.cjs +10 -0
- package/cjs/components/Menubar/Menubar.module.cjs.map +1 -0
- package/cjs/components/Menubar/MenubarDropdown/MenubarDropdown.cjs +61 -0
- package/cjs/components/Menubar/MenubarDropdown/MenubarDropdown.cjs.map +1 -0
- package/cjs/components/Menubar/MenubarMenu/MenubarMenu.cjs +59 -0
- package/cjs/components/Menubar/MenubarMenu/MenubarMenu.cjs.map +1 -0
- package/cjs/components/Menubar/MenubarTarget/MenubarTarget.cjs +143 -0
- package/cjs/components/Menubar/MenubarTarget/MenubarTarget.cjs.map +1 -0
- package/cjs/components/Modal/Modal.cjs.map +1 -1
- package/cjs/components/Modal/Modal.context.cjs.map +1 -1
- package/cjs/components/Modal/ModalBody.cjs.map +1 -1
- package/cjs/components/Modal/ModalCloseButton.cjs.map +1 -1
- package/cjs/components/Modal/ModalContent.cjs.map +1 -1
- package/cjs/components/Modal/ModalHeader.cjs.map +1 -1
- package/cjs/components/Modal/ModalOverlay.cjs.map +1 -1
- package/cjs/components/Modal/ModalRoot.cjs.map +1 -1
- package/cjs/components/Modal/ModalStack.cjs.map +1 -1
- package/cjs/components/Modal/ModalTitle.cjs.map +1 -1
- package/cjs/components/Modal/use-modals-stack.cjs.map +1 -1
- package/cjs/components/ModalBase/ModalBase.cjs.map +1 -1
- package/cjs/components/ModalBase/ModalBase.context.cjs.map +1 -1
- package/cjs/components/ModalBase/ModalBaseBody.cjs.map +1 -1
- package/cjs/components/ModalBase/ModalBaseCloseButton.cjs.map +1 -1
- package/cjs/components/ModalBase/ModalBaseContent.cjs.map +1 -1
- package/cjs/components/ModalBase/ModalBaseHeader.cjs.map +1 -1
- package/cjs/components/ModalBase/ModalBaseOverlay.cjs.map +1 -1
- package/cjs/components/ModalBase/ModalBaseTitle.cjs.map +1 -1
- package/cjs/components/ModalBase/NativeScrollArea.cjs.map +1 -1
- package/cjs/components/ModalBase/use-lock-scroll.cjs.map +1 -1
- package/cjs/components/ModalBase/use-modal-body-id.cjs.map +1 -1
- package/cjs/components/ModalBase/use-modal-title-id.cjs.map +1 -1
- package/cjs/components/ModalBase/use-modal.cjs.map +1 -1
- package/cjs/components/MultiSelect/MultiSelect.cjs +4 -1
- package/cjs/components/MultiSelect/MultiSelect.cjs.map +1 -1
- package/cjs/components/MultiSelect/filter-picked-values.cjs.map +1 -1
- package/cjs/components/NativeSelect/NativeSelect.cjs.map +1 -1
- package/cjs/components/NativeSelect/NativeSelectOption.cjs.map +1 -1
- package/cjs/components/NavLink/NavLink.cjs.map +1 -1
- package/cjs/components/Notification/Notification.cjs.map +1 -1
- package/cjs/components/NumberFormatter/NumberFormatter.cjs.map +1 -1
- package/cjs/components/NumberInput/NumberInput.cjs.map +1 -1
- package/cjs/components/NumberInput/NumberInputChevron.cjs.map +1 -1
- package/cjs/components/OverflowList/OverflowList.cjs.map +1 -1
- package/cjs/components/OverflowList/get-row-position-data.cjs.map +1 -1
- package/cjs/components/OverflowList/use-dimensions.cjs.map +1 -1
- package/cjs/components/Overlay/Overlay.cjs.map +1 -1
- package/cjs/components/Pagination/Pagination.cjs.map +1 -1
- package/cjs/components/Pagination/Pagination.context.cjs.map +1 -1
- package/cjs/components/Pagination/Pagination.icons.cjs.map +1 -1
- package/cjs/components/Pagination/PaginationControl/PaginationControl.cjs.map +1 -1
- package/cjs/components/Pagination/PaginationDots/PaginationDots.cjs.map +1 -1
- package/cjs/components/Pagination/PaginationEdges/PaginationEdges.cjs.map +1 -1
- package/cjs/components/Pagination/PaginationItems/PaginationItems.cjs.map +1 -1
- package/cjs/components/Pagination/PaginationLabel/PaginationLabel.cjs.map +1 -1
- package/cjs/components/Pagination/PaginationRoot/PaginationRoot.cjs.map +1 -1
- package/cjs/components/Paper/Paper.cjs.map +1 -1
- package/cjs/components/PasswordInput/PasswordInput.cjs +11 -2
- package/cjs/components/PasswordInput/PasswordInput.cjs.map +1 -1
- package/cjs/components/PasswordInput/PasswordToggleIcon.cjs.map +1 -1
- package/cjs/components/Pill/Pill.cjs.map +1 -1
- package/cjs/components/Pill/PillGroup/PillGroup.cjs.map +1 -1
- package/cjs/components/PillsInput/PillsInput.cjs.map +1 -1
- package/cjs/components/PillsInput/PillsInput.context.cjs.map +1 -1
- package/cjs/components/PillsInput/PillsInputField/PillsInputField.cjs.map +1 -1
- package/cjs/components/PinInput/PinInput.cjs +2 -1
- package/cjs/components/PinInput/PinInput.cjs.map +1 -1
- package/cjs/components/PinInput/create-pin-array/create-pin-array.cjs.map +1 -1
- package/cjs/components/Popover/Popover.cjs.map +1 -1
- package/cjs/components/Popover/Popover.context.cjs.map +1 -1
- package/cjs/components/Popover/PopoverContextMenu/PopoverContextMenu.cjs.map +1 -1
- package/cjs/components/Popover/PopoverDropdown/PopoverDropdown.cjs.map +1 -1
- package/cjs/components/Popover/PopoverTarget/PopoverTarget.cjs.map +1 -1
- package/cjs/components/Popover/use-popover.cjs.map +1 -1
- package/cjs/components/Portal/OptionalPortal.cjs.map +1 -1
- package/cjs/components/Portal/Portal.cjs.map +1 -1
- package/cjs/components/Progress/Progress.cjs.map +1 -1
- package/cjs/components/Progress/Progress.context.cjs.map +1 -1
- package/cjs/components/Progress/ProgressLabel/ProgressLabel.cjs.map +1 -1
- package/cjs/components/Progress/ProgressRoot/ProgressRoot.cjs.map +1 -1
- package/cjs/components/Progress/ProgressSection/ProgressSection.cjs.map +1 -1
- package/cjs/components/Radio/Radio.cjs.map +1 -1
- package/cjs/components/Radio/RadioCard/RadioCard.cjs.map +1 -1
- package/cjs/components/Radio/RadioGroup/RadioGroup.cjs.map +1 -1
- package/cjs/components/Radio/RadioIcon.cjs.map +1 -1
- package/cjs/components/Radio/RadioIndicator/RadioIndicator.cjs.map +1 -1
- package/cjs/components/Rating/Rating.cjs.map +1 -1
- package/cjs/components/Rating/Rating.context.cjs.map +1 -1
- package/cjs/components/Rating/RatingItem/RatingItem.cjs.map +1 -1
- package/cjs/components/Rating/StarSymbol/StarIcon.cjs.map +1 -1
- package/cjs/components/Rating/StarSymbol/StarSymbol.cjs.map +1 -1
- package/cjs/components/RingProgress/Curve/Curve.cjs.map +1 -1
- package/cjs/components/RingProgress/RingProgress.cjs.map +1 -1
- package/cjs/components/RingProgress/get-curves/get-curves.cjs.map +1 -1
- package/cjs/components/RollingNumber/DigitColumn.cjs.map +1 -1
- package/cjs/components/RollingNumber/RollingNumber.cjs.map +1 -1
- package/cjs/components/RollingNumber/get-digit-parts.cjs.map +1 -1
- package/cjs/components/RollingNumber/get-render-slots.cjs.map +1 -1
- package/cjs/components/ScrollArea/ScrollArea.cjs.map +1 -1
- package/cjs/components/ScrollArea/ScrollArea.context.cjs.map +1 -1
- package/cjs/components/ScrollArea/ScrollAreaCorner/ScrollAreaCorner.cjs.map +1 -1
- package/cjs/components/ScrollArea/ScrollAreaRoot/ScrollAreaRoot.cjs.map +1 -1
- package/cjs/components/ScrollArea/ScrollAreaScrollbar/ScrollAreaScrollbar.cjs.map +1 -1
- package/cjs/components/ScrollArea/ScrollAreaScrollbar/ScrollAreaScrollbarAuto.cjs.map +1 -1
- package/cjs/components/ScrollArea/ScrollAreaScrollbar/ScrollAreaScrollbarHover.cjs.map +1 -1
- package/cjs/components/ScrollArea/ScrollAreaScrollbar/ScrollAreaScrollbarScroll.cjs.map +1 -1
- package/cjs/components/ScrollArea/ScrollAreaScrollbar/ScrollAreaScrollbarVisible.cjs.map +1 -1
- package/cjs/components/ScrollArea/ScrollAreaScrollbar/Scrollbar.cjs.map +1 -1
- package/cjs/components/ScrollArea/ScrollAreaScrollbar/Scrollbar.context.cjs.map +1 -1
- package/cjs/components/ScrollArea/ScrollAreaScrollbar/ScrollbarX.cjs.map +1 -1
- package/cjs/components/ScrollArea/ScrollAreaScrollbar/ScrollbarY.cjs.map +1 -1
- package/cjs/components/ScrollArea/ScrollAreaThumb/ScrollAreaThumb.cjs.map +1 -1
- package/cjs/components/ScrollArea/ScrollAreaViewport/ScrollAreaViewport.cjs +1 -0
- package/cjs/components/ScrollArea/ScrollAreaViewport/ScrollAreaViewport.cjs.map +1 -1
- package/cjs/components/ScrollArea/use-resize-observer.cjs.map +1 -1
- package/cjs/components/ScrollArea/utils/add-unlinked-scroll-listener.cjs.map +1 -1
- package/cjs/components/ScrollArea/utils/get-scroll-position-from-pointer.cjs.map +1 -1
- package/cjs/components/ScrollArea/utils/get-thumb-offset-from-scroll.cjs.map +1 -1
- package/cjs/components/Scroller/Scroller.cjs.map +1 -1
- package/cjs/components/SegmentedControl/SegmentedControl.cjs.map +1 -1
- package/cjs/components/Select/Select.cjs.map +1 -1
- package/cjs/components/SemiCircleProgress/SemiCircleProgress.cjs +4 -1
- package/cjs/components/SemiCircleProgress/SemiCircleProgress.cjs.map +1 -1
- package/cjs/components/SemiCircleProgress/SemiCircleProgress.module.cjs.map +1 -1
- package/cjs/components/SimpleGrid/SimpleGrid.cjs.map +1 -1
- package/cjs/components/SimpleGrid/SimpleGridVariables.cjs.map +1 -1
- package/cjs/components/Skeleton/Skeleton.cjs.map +1 -1
- package/cjs/components/Slider/Marks/Marks.cjs.map +1 -1
- package/cjs/components/Slider/RangeSlider/RangeSlider.cjs.map +1 -1
- package/cjs/components/Slider/Slider/Slider.cjs.map +1 -1
- package/cjs/components/Slider/Slider.context.cjs.map +1 -1
- package/cjs/components/Slider/SliderRoot/SliderRoot.cjs.map +1 -1
- package/cjs/components/Slider/Thumb/Thumb.cjs.map +1 -1
- package/cjs/components/Slider/Track/Track.cjs.map +1 -1
- package/cjs/components/Slider/utils/get-precision/get-precision.cjs.map +1 -1
- package/cjs/components/Slider/utils/get-step-mark-value/get-step-mark-value.cjs.map +1 -1
- package/cjs/components/Space/Space.cjs.map +1 -1
- package/cjs/components/Splitter/GripIcon.cjs.map +1 -1
- package/cjs/components/Splitter/Splitter.cjs +22 -1
- package/cjs/components/Splitter/Splitter.cjs.map +1 -1
- package/cjs/components/Splitter/Splitter.context.cjs.map +1 -1
- package/cjs/components/Splitter/SplitterPane/SplitterPane.cjs +1 -2
- package/cjs/components/Splitter/SplitterPane/SplitterPane.cjs.map +1 -1
- package/cjs/components/Spoiler/Spoiler.cjs.map +1 -1
- package/cjs/components/Stack/Stack.cjs.map +1 -1
- package/cjs/components/Stepper/Stepper.cjs.map +1 -1
- package/cjs/components/Stepper/Stepper.context.cjs.map +1 -1
- package/cjs/components/Stepper/StepperStep/StepperStep.cjs.map +1 -1
- package/cjs/components/Switch/Switch.cjs.map +1 -1
- package/cjs/components/Switch/SwitchGroup/SwitchGroup.cjs.map +1 -1
- package/cjs/components/Table/Table.cjs.map +1 -1
- package/cjs/components/Table/Table.components.cjs.map +1 -1
- package/cjs/components/Table/Table.context.cjs.map +1 -1
- package/cjs/components/Table/TableDataRenderer.cjs.map +1 -1
- package/cjs/components/Table/TableScrollContainer.cjs.map +1 -1
- package/cjs/components/TableOfContents/TableOfContents.cjs.map +1 -1
- package/cjs/components/Tabs/Tabs.cjs +16 -1
- package/cjs/components/Tabs/Tabs.cjs.map +1 -1
- package/cjs/components/Tabs/Tabs.context.cjs.map +1 -1
- package/cjs/components/Tabs/TabsList/TabsList.cjs.map +1 -1
- package/cjs/components/Tabs/TabsPanel/TabsPanel.cjs +6 -0
- package/cjs/components/Tabs/TabsPanel/TabsPanel.cjs.map +1 -1
- package/cjs/components/Tabs/TabsTab/TabsTab.cjs +1 -1
- package/cjs/components/Tabs/TabsTab/TabsTab.cjs.map +1 -1
- package/cjs/components/TagsInput/TagsInput.cjs +4 -1
- package/cjs/components/TagsInput/TagsInput.cjs.map +1 -1
- package/cjs/components/TagsInput/filter-picked-tags.cjs.map +1 -1
- package/cjs/components/TagsInput/get-splitted-tags.cjs.map +1 -1
- package/cjs/components/Text/Text.cjs.map +1 -1
- package/cjs/components/TextInput/TextInput.cjs.map +1 -1
- package/cjs/components/Textarea/Autosize.cjs.map +1 -1
- package/cjs/components/Textarea/Textarea.cjs.map +1 -1
- package/cjs/components/ThemeIcon/ThemeIcon.cjs.map +1 -1
- package/cjs/components/Timeline/Timeline.cjs.map +1 -1
- package/cjs/components/Timeline/Timeline.context.cjs.map +1 -1
- package/cjs/components/Timeline/TimelineItem/TimelineItem.cjs.map +1 -1
- package/cjs/components/Title/Title.cjs.map +1 -1
- package/cjs/components/Tooltip/Tooltip.cjs.map +1 -1
- package/cjs/components/Tooltip/TooltipFloating/TooltipFloating.cjs.map +1 -1
- package/cjs/components/Tooltip/TooltipFloating/use-floating-tooltip.cjs.map +1 -1
- package/cjs/components/Tooltip/TooltipGroup/TooltipGroup.cjs.map +1 -1
- package/cjs/components/Tooltip/use-tooltip.cjs.map +1 -1
- package/cjs/components/Transition/Transition.cjs.map +1 -1
- package/cjs/components/Transition/get-transition-styles/get-transition-styles.cjs.map +1 -1
- package/cjs/components/Transition/use-transition.cjs.map +1 -1
- package/cjs/components/Tree/FlatTreeNode.cjs.map +1 -1
- package/cjs/components/Tree/Tree.cjs.map +1 -1
- package/cjs/components/Tree/TreeNode.cjs.map +1 -1
- package/cjs/components/Tree/filter-tree-data/filter-tree-data.cjs.map +1 -1
- package/cjs/components/Tree/is-node-checked/is-node-checked.cjs.map +1 -1
- package/cjs/components/Tree/is-node-indeterminate/is-node-indeterminate.cjs.map +1 -1
- package/cjs/components/Tree/use-tree-node-drag-drop.cjs.map +1 -1
- package/cjs/components/Tree/use-tree.cjs.map +1 -1
- package/cjs/components/TreeSelect/TreeSelect.cjs +7 -1
- package/cjs/components/TreeSelect/TreeSelect.cjs.map +1 -1
- package/cjs/components/TreeSelect/TreeSelectOption.cjs.map +1 -1
- package/cjs/components/TreeSelect/get-checked-values-by-strategy.cjs.map +1 -1
- package/cjs/components/Typography/Typography.cjs.map +1 -1
- package/cjs/components/UnstyledButton/UnstyledButton.cjs.map +1 -1
- package/cjs/components/VisuallyHidden/VisuallyHidden.cjs.map +1 -1
- package/cjs/core/Box/Box.cjs.map +1 -1
- package/cjs/core/Box/get-box-mod/get-box-mod.cjs.map +1 -1
- package/cjs/core/Box/get-box-style/get-box-style.cjs.map +1 -1
- package/cjs/core/Box/get-style-object/get-style-object.cjs.map +1 -1
- package/cjs/core/Box/style-props/parse-style-props/parse-style-props.cjs.map +1 -1
- package/cjs/core/Box/style-props/parse-style-props/sort-media-queries.cjs.map +1 -1
- package/cjs/core/Box/style-props/resolvers/border-resolver/border-resolver.cjs.map +1 -1
- package/cjs/core/Box/use-random-classname/use-random-classname.cjs.map +1 -1
- package/cjs/core/DirectionProvider/DirectionProvider.cjs.map +1 -1
- package/cjs/core/InlineStyles/InlineStyles.cjs.map +1 -1
- package/cjs/core/InlineStyles/css-object-to-string/css-object-to-string.cjs.map +1 -1
- package/cjs/core/InlineStyles/hash-styles.cjs.map +1 -1
- package/cjs/core/MantineProvider/ColorSchemeScript/ColorSchemeScript.cjs.map +1 -1
- package/cjs/core/MantineProvider/Mantine.context.cjs.map +1 -1
- package/cjs/core/MantineProvider/MantineClasses/MantineClasses.cjs.map +1 -1
- package/cjs/core/MantineProvider/MantineCssVariables/MantineCssVariables.cjs.map +1 -1
- package/cjs/core/MantineProvider/MantineCssVariables/default-css-variables-resolver.cjs +5 -1
- package/cjs/core/MantineProvider/MantineCssVariables/default-css-variables-resolver.cjs.map +1 -1
- package/cjs/core/MantineProvider/MantineCssVariables/get-css-color-variables.cjs.map +1 -1
- package/cjs/core/MantineProvider/MantineCssVariables/remove-default-variables.cjs.map +1 -1
- package/cjs/core/MantineProvider/MantineCssVariables/v8-css-variables-resolver.cjs +3 -1
- package/cjs/core/MantineProvider/MantineCssVariables/v8-css-variables-resolver.cjs.map +1 -1
- package/cjs/core/MantineProvider/MantineCssVariables/virtual-color/virtual-color.cjs.map +1 -1
- package/cjs/core/MantineProvider/MantineProvider.cjs.map +1 -1
- package/cjs/core/MantineProvider/MantineThemeProvider/MantineThemeProvider.cjs.map +1 -1
- package/cjs/core/MantineProvider/color-functions/colors-tuple/colors-tuple.cjs.map +1 -1
- package/cjs/core/MantineProvider/color-functions/default-variant-colors-resolver/default-variant-colors-resolver.cjs +3 -1
- package/cjs/core/MantineProvider/color-functions/default-variant-colors-resolver/default-variant-colors-resolver.cjs.map +1 -1
- package/cjs/core/MantineProvider/color-functions/get-contrast-color/get-contrast-color.cjs +19 -3
- package/cjs/core/MantineProvider/color-functions/get-contrast-color/get-contrast-color.cjs.map +1 -1
- package/cjs/core/MantineProvider/color-functions/parse-theme-color/parse-theme-color.cjs.map +1 -1
- package/cjs/core/MantineProvider/color-functions/to-rgba/to-rgba.cjs.map +1 -1
- package/cjs/core/MantineProvider/convert-css-variables/convert-css-variables.cjs.map +1 -1
- package/cjs/core/MantineProvider/convert-css-variables/css-variables-object-to-string.cjs.map +1 -1
- package/cjs/core/MantineProvider/use-mantine-color-scheme/use-computed-color-scheme.cjs.map +1 -1
- package/cjs/core/MantineProvider/use-mantine-color-scheme/use-mantine-color-scheme.cjs.map +1 -1
- package/cjs/core/MantineProvider/use-mantine-color-scheme/use-provider-color-scheme.cjs.map +1 -1
- package/cjs/core/MantineProvider/use-props/use-props.cjs.map +1 -1
- package/cjs/core/MantineProvider/use-respect-reduce-motion/use-respect-reduce-motion.cjs.map +1 -1
- package/cjs/core/factory/factory.cjs.map +1 -1
- package/cjs/core/factory/polymorphic-factory.cjs.map +1 -1
- package/cjs/core/styles-api/use-styles/get-class-name/get-class-name.cjs.map +1 -1
- package/cjs/core/styles-api/use-styles/get-class-name/get-global-class-names/get-global-class-names.cjs.map +1 -1
- package/cjs/core/styles-api/use-styles/get-class-name/get-options-class-names/get-options-class-names.cjs.map +1 -1
- package/cjs/core/styles-api/use-styles/get-class-name/get-resolved-class-names/get-resolved-class-names.cjs.map +1 -1
- package/cjs/core/styles-api/use-styles/get-class-name/resolve-class-names/resolve-class-names.cjs.map +1 -1
- package/cjs/core/styles-api/use-styles/get-style/get-style.cjs.map +1 -1
- package/cjs/core/styles-api/use-styles/get-style/resolve-vars/merge-vars.cjs.map +1 -1
- package/cjs/core/styles-api/use-styles/use-styles.cjs.map +1 -1
- package/cjs/core/styles-api/use-styles/use-transformed-styles.cjs.map +1 -1
- package/cjs/core/utils/create-safe-context/create-safe-context.cjs.map +1 -1
- package/cjs/core/utils/create-scoped-keydown-handler/create-scoped-keydown-handler.cjs +3 -5
- package/cjs/core/utils/create-scoped-keydown-handler/create-scoped-keydown-handler.cjs.map +1 -1
- package/cjs/core/utils/create-use-external-events/create-use-external-events.cjs.map +1 -1
- package/cjs/core/utils/deep-merge/deep-merge.cjs.map +1 -1
- package/cjs/core/utils/filter-props/filter-props.cjs.map +1 -1
- package/cjs/core/utils/get-context-item-index/get-context-item-index.cjs.map +1 -1
- package/cjs/core/utils/get-safe-id/get-safe-id.cjs.map +1 -1
- package/cjs/core/utils/is-number-like/is-number-like.cjs.map +1 -1
- package/cjs/core/utils/units-converters/px.cjs.map +1 -1
- package/cjs/core/utils/units-converters/rem.cjs.map +1 -1
- package/cjs/core/utils/use-hovered/use-hovered.cjs.map +1 -1
- package/cjs/index.cjs +42 -2
- package/cjs/utils/Floating/FloatingArrow/FloatingArrow.cjs.map +1 -1
- package/cjs/utils/Floating/use-context-menu-handlers.cjs.map +1 -1
- package/cjs/utils/Floating/use-delayed-hover.cjs.map +1 -1
- package/cjs/utils/InlineInput/InlineInput.cjs.map +1 -1
- package/cjs/utils/InputsGroupFieldset/InputsGroupFieldset.cjs.map +1 -1
- package/esm/components/Accordion/Accordion.mjs +1 -0
- package/esm/components/Accordion/Accordion.mjs.map +1 -1
- package/esm/components/ActionIcon/ActionIcon.mjs +1 -0
- package/esm/components/ActionIcon/ActionIcon.mjs.map +1 -1
- package/esm/components/ActionIcon/ActionIconGroup/ActionIconGroup.mjs +1 -1
- package/esm/components/ActionIcon/ActionIconGroup/ActionIconGroup.mjs.map +1 -1
- package/esm/components/ActionIcon/ActionIconGroupSection/ActionIconGroupSection.mjs.map +1 -1
- package/esm/components/AppShell/AppShellFooter/AppShellFooter.mjs.map +1 -1
- package/esm/components/AppShell/AppShellHeader/AppShellHeader.mjs.map +1 -1
- package/esm/components/AppShell/AppShellMain/AppShellMain.mjs.map +1 -1
- package/esm/components/AppShell/AppShellMediaStyles/assign-aside-variables/assign-aside-variables.mjs.map +1 -1
- package/esm/components/AppShell/AppShellMediaStyles/assign-footer-variables/assign-footer-variables.mjs.map +1 -1
- package/esm/components/AppShell/AppShellMediaStyles/assign-header-variables/assign-header-variables.mjs.map +1 -1
- package/esm/components/AppShell/AppShellMediaStyles/assign-navbar-variables/assign-navbar-variables.mjs.map +1 -1
- package/esm/components/AppShell/AppShellMediaStyles/assign-padding-variables/assign-padding-variables.mjs.map +1 -1
- package/esm/components/AppShell/AppShellMediaStyles/get-variables/get-variables.mjs.map +1 -1
- package/esm/components/AppShell/AppShellMediaStyles/is-primitive-size/is-primitive-size.mjs.map +1 -1
- package/esm/components/AppShell/AppShellMediaStyles/is-responsive-size/is-responsive-size.mjs.map +1 -1
- package/esm/components/AspectRatio/AspectRatio.mjs.map +1 -1
- package/esm/components/Autocomplete/Autocomplete.mjs.map +1 -1
- package/esm/components/Avatar/AvatarGroup/AvatarGroup.mjs.map +1 -1
- package/esm/components/Avatar/get-initials/get-initials.mjs.map +1 -1
- package/esm/components/BackgroundImage/BackgroundImage.mjs.map +1 -1
- package/esm/components/Blockquote/Blockquote.mjs.map +1 -1
- package/esm/components/Breadcrumbs/Breadcrumbs.mjs.map +1 -1
- package/esm/components/Button/ButtonGroup/ButtonGroup.mjs.map +1 -1
- package/esm/components/Button/ButtonGroupSection/ButtonGroupSection.mjs.map +1 -1
- package/esm/components/Checkbox/Checkbox.mjs.map +1 -1
- package/esm/components/Collapse/Collapse.mjs.map +1 -1
- package/esm/components/ColorInput/ColorInput.mjs.map +1 -1
- package/esm/components/ColorPicker/ColorSlider/ColorSlider.mjs.map +1 -1
- package/esm/components/ColorPicker/converters/converters.mjs.map +1 -1
- package/esm/components/ColorPicker/converters/parsers.mjs.map +1 -1
- package/esm/components/Combobox/ComboboxEmpty/ComboboxEmpty.mjs.map +1 -1
- package/esm/components/Combobox/ComboboxFooter/ComboboxFooter.mjs.map +1 -1
- package/esm/components/Combobox/ComboboxGroup/ComboboxGroup.mjs +3 -2
- package/esm/components/Combobox/ComboboxGroup/ComboboxGroup.mjs.map +1 -1
- package/esm/components/Combobox/ComboboxHeader/ComboboxHeader.mjs.map +1 -1
- package/esm/components/Combobox/OptionsDropdown/OptionsDropdown.mjs +2 -2
- package/esm/components/Combobox/OptionsDropdown/OptionsDropdown.mjs.map +1 -1
- package/esm/components/Combobox/OptionsDropdown/default-options-filter.mjs.map +1 -1
- package/esm/components/Combobox/use-combobox/get-index/get-index.mjs.map +1 -1
- package/esm/components/Combobox/use-combobox/use-combobox.mjs.map +1 -1
- package/esm/components/Combobox/use-pills-reorder/use-pills-reorder.mjs.map +1 -1
- package/esm/components/ComboboxPopover/ComboboxPopover.mjs +216 -0
- package/esm/components/ComboboxPopover/ComboboxPopover.mjs.map +1 -0
- package/esm/components/ComboboxPopover/ComboboxPopoverTarget.mjs +45 -0
- package/esm/components/ComboboxPopover/ComboboxPopoverTarget.mjs.map +1 -0
- package/esm/components/DataList/DataList.context.mjs +8 -0
- package/esm/components/DataList/DataList.context.mjs.map +1 -0
- package/esm/components/DataList/DataList.mjs +61 -0
- package/esm/components/DataList/DataList.mjs.map +1 -0
- package/esm/components/DataList/DataList.module.mjs +12 -0
- package/esm/components/DataList/DataList.module.mjs.map +1 -0
- package/esm/components/DataList/DataListItem/DataListItem.mjs +32 -0
- package/esm/components/DataList/DataListItem/DataListItem.mjs.map +1 -0
- package/esm/components/DataList/DataListItemLabel/DataListItemLabel.mjs +33 -0
- package/esm/components/DataList/DataListItemLabel/DataListItemLabel.mjs.map +1 -0
- package/esm/components/DataList/DataListItemValue/DataListItemValue.mjs +33 -0
- package/esm/components/DataList/DataListItemValue/DataListItemValue.mjs.map +1 -0
- package/esm/components/Drawer/DrawerBody.mjs.map +1 -1
- package/esm/components/Drawer/DrawerCloseButton.mjs.map +1 -1
- package/esm/components/Drawer/DrawerHeader.mjs.map +1 -1
- package/esm/components/Drawer/DrawerOverlay.mjs.map +1 -1
- package/esm/components/Drawer/DrawerRoot.mjs.map +1 -1
- package/esm/components/Drawer/DrawerTitle.mjs.map +1 -1
- package/esm/components/EmptyState/EmptyState.context.mjs +8 -0
- package/esm/components/EmptyState/EmptyState.context.mjs.map +1 -0
- package/esm/components/EmptyState/EmptyState.mjs +102 -0
- package/esm/components/EmptyState/EmptyState.mjs.map +1 -0
- package/esm/components/EmptyState/EmptyState.module.mjs +14 -0
- package/esm/components/EmptyState/EmptyState.module.mjs.map +1 -0
- package/esm/components/EmptyState/EmptyStateActions/EmptyStateActions.mjs +28 -0
- package/esm/components/EmptyState/EmptyStateActions/EmptyStateActions.mjs.map +1 -0
- package/esm/components/EmptyState/EmptyStateDescription/EmptyStateDescription.mjs +29 -0
- package/esm/components/EmptyState/EmptyStateDescription/EmptyStateDescription.mjs.map +1 -0
- package/esm/components/EmptyState/EmptyStateIndicator/EmptyStateIndicator.mjs +29 -0
- package/esm/components/EmptyState/EmptyStateIndicator/EmptyStateIndicator.mjs.map +1 -0
- package/esm/components/EmptyState/EmptyStateTitle/EmptyStateTitle.mjs +30 -0
- package/esm/components/EmptyState/EmptyStateTitle/EmptyStateTitle.mjs.map +1 -0
- package/esm/components/FileInput/FileInput.mjs.map +1 -1
- package/esm/components/Grid/GridCol/GridColVariables.mjs.map +1 -1
- package/esm/components/Grid/GridVariables.mjs.map +1 -1
- package/esm/components/Group/Group.mjs.map +1 -1
- package/esm/components/Group/filter-falsy-children/filter-falsy-children.mjs.map +1 -1
- package/esm/components/Highlight/highlighter/highlighter.mjs.map +1 -1
- package/esm/components/HoverCard/HoverCardDropdown/HoverCardDropdown.mjs.map +1 -1
- package/esm/components/HoverCard/use-hover-card.mjs.map +1 -1
- package/esm/components/Input/Input.mjs +7 -2
- package/esm/components/Input/Input.mjs.map +1 -1
- package/esm/components/Input/Input.module.mjs +1 -0
- package/esm/components/Input/Input.module.mjs.map +1 -1
- package/esm/components/Input/InputDescription/InputDescription.mjs.map +1 -1
- package/esm/components/Input/InputError/InputError.mjs.map +1 -1
- package/esm/components/Input/InputPlaceholder/InputPlaceholder.mjs.map +1 -1
- package/esm/components/Input/InputSuccess/InputSuccess.mjs +48 -0
- package/esm/components/Input/InputSuccess/InputSuccess.mjs.map +1 -0
- package/esm/components/Input/InputWrapper/InputWrapper.mjs +22 -5
- package/esm/components/Input/InputWrapper/InputWrapper.mjs.map +1 -1
- package/esm/components/Input/use-input-props.mjs +4 -1
- package/esm/components/Input/use-input-props.mjs.map +1 -1
- package/esm/components/JsonInput/validate-json/validate-json.mjs.map +1 -1
- package/esm/components/Kbd/Kbd.mjs.map +1 -1
- package/esm/components/Mark/Mark.mjs.map +1 -1
- package/esm/components/Marquee/Marquee.mjs.map +1 -1
- package/esm/components/Menu/MenuDivider/MenuDivider.mjs.map +1 -1
- package/esm/components/Menu/MenuDropdown/MenuDropdown.mjs.map +1 -1
- package/esm/components/Menu/MenuItem/MenuItem.mjs.map +1 -1
- package/esm/components/Menu/MenuLabel/MenuLabel.mjs.map +1 -1
- package/esm/components/Menu/MenuSearch/MenuSearch.mjs.map +1 -1
- package/esm/components/Menu/MenuSelectableItem/MenuSelectableItem.mjs.map +1 -1
- package/esm/components/Menu/MenuSub/MenuSub.mjs.map +1 -1
- package/esm/components/Menu/MenuSubItem/MenuSubItem.mjs.map +1 -1
- package/esm/components/Menu/use-menu-type-ahead.mjs.map +1 -1
- package/esm/components/Menubar/Menubar.context.mjs +9 -0
- package/esm/components/Menubar/Menubar.context.mjs.map +1 -0
- package/esm/components/Menubar/Menubar.mjs +146 -0
- package/esm/components/Menubar/Menubar.mjs.map +1 -0
- package/esm/components/Menubar/Menubar.module.mjs +10 -0
- package/esm/components/Menubar/Menubar.module.mjs.map +1 -0
- package/esm/components/Menubar/MenubarDropdown/MenubarDropdown.mjs +61 -0
- package/esm/components/Menubar/MenubarDropdown/MenubarDropdown.mjs.map +1 -0
- package/esm/components/Menubar/MenubarMenu/MenubarMenu.mjs +59 -0
- package/esm/components/Menubar/MenubarMenu/MenubarMenu.mjs.map +1 -0
- package/esm/components/Menubar/MenubarTarget/MenubarTarget.mjs +143 -0
- package/esm/components/Menubar/MenubarTarget/MenubarTarget.mjs.map +1 -0
- package/esm/components/Modal/ModalBody.mjs.map +1 -1
- package/esm/components/Modal/ModalCloseButton.mjs.map +1 -1
- package/esm/components/Modal/ModalHeader.mjs.map +1 -1
- package/esm/components/Modal/ModalOverlay.mjs.map +1 -1
- package/esm/components/Modal/ModalTitle.mjs.map +1 -1
- package/esm/components/ModalBase/ModalBase.mjs.map +1 -1
- package/esm/components/MultiSelect/MultiSelect.mjs +4 -1
- package/esm/components/MultiSelect/MultiSelect.mjs.map +1 -1
- package/esm/components/MultiSelect/filter-picked-values.mjs.map +1 -1
- package/esm/components/NativeSelect/NativeSelect.mjs.map +1 -1
- package/esm/components/NativeSelect/NativeSelectOption.mjs.map +1 -1
- package/esm/components/NumberInput/NumberInput.mjs.map +1 -1
- package/esm/components/OverflowList/OverflowList.mjs.map +1 -1
- package/esm/components/OverflowList/get-row-position-data.mjs.map +1 -1
- package/esm/components/OverflowList/use-dimensions.mjs.map +1 -1
- package/esm/components/Overlay/Overlay.mjs.map +1 -1
- package/esm/components/Pagination/Pagination.mjs.map +1 -1
- package/esm/components/Pagination/PaginationDots/PaginationDots.mjs.map +1 -1
- package/esm/components/Pagination/PaginationItems/PaginationItems.mjs.map +1 -1
- package/esm/components/PasswordInput/PasswordInput.mjs +11 -2
- package/esm/components/PasswordInput/PasswordInput.mjs.map +1 -1
- package/esm/components/Pill/PillGroup/PillGroup.mjs.map +1 -1
- package/esm/components/PillsInput/PillsInput.mjs.map +1 -1
- package/esm/components/PinInput/PinInput.mjs +2 -1
- package/esm/components/PinInput/PinInput.mjs.map +1 -1
- package/esm/components/PinInput/create-pin-array/create-pin-array.mjs.map +1 -1
- package/esm/components/Popover/use-popover.mjs.map +1 -1
- package/esm/components/Portal/Portal.mjs.map +1 -1
- package/esm/components/Progress/ProgressLabel/ProgressLabel.mjs.map +1 -1
- package/esm/components/Radio/Radio.mjs.map +1 -1
- package/esm/components/Radio/RadioCard/RadioCard.mjs.map +1 -1
- package/esm/components/Rating/Rating.mjs.map +1 -1
- package/esm/components/Rating/RatingItem/RatingItem.mjs.map +1 -1
- package/esm/components/Rating/StarSymbol/StarSymbol.mjs.map +1 -1
- package/esm/components/RingProgress/RingProgress.mjs.map +1 -1
- package/esm/components/RingProgress/get-curves/get-curves.mjs.map +1 -1
- package/esm/components/RollingNumber/get-digit-parts.mjs.map +1 -1
- package/esm/components/RollingNumber/get-render-slots.mjs.map +1 -1
- package/esm/components/ScrollArea/ScrollAreaViewport/ScrollAreaViewport.mjs +1 -0
- package/esm/components/ScrollArea/ScrollAreaViewport/ScrollAreaViewport.mjs.map +1 -1
- package/esm/components/ScrollArea/utils/add-unlinked-scroll-listener.mjs.map +1 -1
- package/esm/components/ScrollArea/utils/get-scroll-position-from-pointer.mjs.map +1 -1
- package/esm/components/ScrollArea/utils/get-thumb-offset-from-scroll.mjs.map +1 -1
- package/esm/components/SegmentedControl/SegmentedControl.mjs.map +1 -1
- package/esm/components/Select/Select.mjs.map +1 -1
- package/esm/components/SemiCircleProgress/SemiCircleProgress.mjs +4 -1
- package/esm/components/SemiCircleProgress/SemiCircleProgress.mjs.map +1 -1
- package/esm/components/SemiCircleProgress/SemiCircleProgress.module.mjs.map +1 -1
- package/esm/components/SimpleGrid/SimpleGridVariables.mjs.map +1 -1
- package/esm/components/Skeleton/Skeleton.mjs.map +1 -1
- package/esm/components/Slider/RangeSlider/RangeSlider.mjs.map +1 -1
- package/esm/components/Slider/utils/get-precision/get-precision.mjs.map +1 -1
- package/esm/components/Slider/utils/get-step-mark-value/get-step-mark-value.mjs.map +1 -1
- package/esm/components/Splitter/Splitter.context.mjs.map +1 -1
- package/esm/components/Splitter/Splitter.mjs +22 -1
- package/esm/components/Splitter/Splitter.mjs.map +1 -1
- package/esm/components/Splitter/SplitterPane/SplitterPane.mjs +1 -2
- package/esm/components/Splitter/SplitterPane/SplitterPane.mjs.map +1 -1
- package/esm/components/Stack/Stack.mjs.map +1 -1
- package/esm/components/Stepper/Stepper.mjs.map +1 -1
- package/esm/components/Switch/Switch.mjs.map +1 -1
- package/esm/components/Table/Table.components.mjs.map +1 -1
- package/esm/components/TableOfContents/TableOfContents.mjs.map +1 -1
- package/esm/components/Tabs/Tabs.context.mjs.map +1 -1
- package/esm/components/Tabs/Tabs.mjs +18 -3
- package/esm/components/Tabs/Tabs.mjs.map +1 -1
- package/esm/components/Tabs/TabsPanel/TabsPanel.mjs +7 -1
- package/esm/components/Tabs/TabsPanel/TabsPanel.mjs.map +1 -1
- package/esm/components/Tabs/TabsTab/TabsTab.mjs +1 -1
- package/esm/components/Tabs/TabsTab/TabsTab.mjs.map +1 -1
- package/esm/components/TagsInput/TagsInput.mjs +4 -1
- package/esm/components/TagsInput/TagsInput.mjs.map +1 -1
- package/esm/components/TagsInput/filter-picked-tags.mjs.map +1 -1
- package/esm/components/TagsInput/get-splitted-tags.mjs.map +1 -1
- package/esm/components/Text/Text.mjs.map +1 -1
- package/esm/components/Textarea/Autosize.mjs.map +1 -1
- package/esm/components/ThemeIcon/ThemeIcon.mjs.map +1 -1
- package/esm/components/Title/Title.mjs.map +1 -1
- package/esm/components/Tooltip/Tooltip.mjs.map +1 -1
- package/esm/components/Tooltip/use-tooltip.mjs.map +1 -1
- package/esm/components/Transition/get-transition-styles/get-transition-styles.mjs.map +1 -1
- package/esm/components/Tree/FlatTreeNode.mjs.map +1 -1
- package/esm/components/Tree/TreeNode.mjs.map +1 -1
- package/esm/components/Tree/filter-tree-data/filter-tree-data.mjs.map +1 -1
- package/esm/components/Tree/is-node-checked/is-node-checked.mjs.map +1 -1
- package/esm/components/Tree/is-node-indeterminate/is-node-indeterminate.mjs.map +1 -1
- package/esm/components/Tree/use-tree.mjs.map +1 -1
- package/esm/components/TreeSelect/TreeSelect.mjs +7 -1
- package/esm/components/TreeSelect/TreeSelect.mjs.map +1 -1
- package/esm/components/TreeSelect/get-checked-values-by-strategy.mjs.map +1 -1
- package/esm/components/Typography/Typography.mjs.map +1 -1
- package/esm/components/UnstyledButton/UnstyledButton.mjs.map +1 -1
- package/esm/components/VisuallyHidden/VisuallyHidden.mjs.map +1 -1
- package/esm/core/Box/Box.mjs.map +1 -1
- package/esm/core/Box/get-box-mod/get-box-mod.mjs.map +1 -1
- package/esm/core/Box/get-box-style/get-box-style.mjs.map +1 -1
- package/esm/core/Box/get-style-object/get-style-object.mjs.map +1 -1
- package/esm/core/Box/style-props/parse-style-props/parse-style-props.mjs.map +1 -1
- package/esm/core/Box/style-props/parse-style-props/sort-media-queries.mjs.map +1 -1
- package/esm/core/Box/style-props/resolvers/border-resolver/border-resolver.mjs.map +1 -1
- package/esm/core/Box/use-random-classname/use-random-classname.mjs.map +1 -1
- package/esm/core/InlineStyles/InlineStyles.mjs.map +1 -1
- package/esm/core/InlineStyles/css-object-to-string/css-object-to-string.mjs.map +1 -1
- package/esm/core/InlineStyles/hash-styles.mjs.map +1 -1
- package/esm/core/MantineProvider/ColorSchemeScript/ColorSchemeScript.mjs.map +1 -1
- package/esm/core/MantineProvider/Mantine.context.mjs.map +1 -1
- package/esm/core/MantineProvider/MantineClasses/MantineClasses.mjs.map +1 -1
- package/esm/core/MantineProvider/MantineCssVariables/default-css-variables-resolver.mjs +6 -2
- package/esm/core/MantineProvider/MantineCssVariables/default-css-variables-resolver.mjs.map +1 -1
- package/esm/core/MantineProvider/MantineCssVariables/get-css-color-variables.mjs.map +1 -1
- package/esm/core/MantineProvider/MantineCssVariables/remove-default-variables.mjs.map +1 -1
- package/esm/core/MantineProvider/MantineCssVariables/v8-css-variables-resolver.mjs +3 -1
- package/esm/core/MantineProvider/MantineCssVariables/v8-css-variables-resolver.mjs.map +1 -1
- package/esm/core/MantineProvider/MantineCssVariables/virtual-color/virtual-color.mjs.map +1 -1
- package/esm/core/MantineProvider/color-functions/colors-tuple/colors-tuple.mjs.map +1 -1
- package/esm/core/MantineProvider/color-functions/default-variant-colors-resolver/default-variant-colors-resolver.mjs +3 -1
- package/esm/core/MantineProvider/color-functions/default-variant-colors-resolver/default-variant-colors-resolver.mjs.map +1 -1
- package/esm/core/MantineProvider/color-functions/get-contrast-color/get-contrast-color.mjs +19 -4
- package/esm/core/MantineProvider/color-functions/get-contrast-color/get-contrast-color.mjs.map +1 -1
- package/esm/core/MantineProvider/color-functions/parse-theme-color/parse-theme-color.mjs.map +1 -1
- package/esm/core/MantineProvider/color-functions/to-rgba/to-rgba.mjs.map +1 -1
- package/esm/core/MantineProvider/convert-css-variables/convert-css-variables.mjs.map +1 -1
- package/esm/core/MantineProvider/convert-css-variables/css-variables-object-to-string.mjs.map +1 -1
- package/esm/core/MantineProvider/use-mantine-color-scheme/use-mantine-color-scheme.mjs.map +1 -1
- package/esm/core/MantineProvider/use-mantine-color-scheme/use-provider-color-scheme.mjs.map +1 -1
- package/esm/core/MantineProvider/use-props/use-props.mjs.map +1 -1
- package/esm/core/MantineProvider/use-respect-reduce-motion/use-respect-reduce-motion.mjs.map +1 -1
- package/esm/core/styles-api/use-styles/get-class-name/get-options-class-names/get-options-class-names.mjs.map +1 -1
- package/esm/core/styles-api/use-styles/get-class-name/get-resolved-class-names/get-resolved-class-names.mjs.map +1 -1
- package/esm/core/styles-api/use-styles/get-class-name/resolve-class-names/resolve-class-names.mjs.map +1 -1
- package/esm/core/styles-api/use-styles/get-style/get-style.mjs.map +1 -1
- package/esm/core/styles-api/use-styles/get-style/resolve-vars/merge-vars.mjs.map +1 -1
- package/esm/core/styles-api/use-styles/use-styles.mjs.map +1 -1
- package/esm/core/styles-api/use-styles/use-transformed-styles.mjs.map +1 -1
- package/esm/core/utils/create-scoped-keydown-handler/create-scoped-keydown-handler.mjs +3 -5
- package/esm/core/utils/create-scoped-keydown-handler/create-scoped-keydown-handler.mjs.map +1 -1
- package/esm/core/utils/create-use-external-events/create-use-external-events.mjs.map +1 -1
- package/esm/core/utils/deep-merge/deep-merge.mjs.map +1 -1
- package/esm/core/utils/filter-props/filter-props.mjs.map +1 -1
- package/esm/core/utils/get-context-item-index/get-context-item-index.mjs.map +1 -1
- package/esm/core/utils/get-safe-id/get-safe-id.mjs.map +1 -1
- package/esm/core/utils/is-number-like/is-number-like.mjs.map +1 -1
- package/esm/core/utils/units-converters/px.mjs.map +1 -1
- package/esm/core/utils/units-converters/rem.mjs.map +1 -1
- package/esm/index.mjs +23 -4
- package/lib/components/Accordion/Accordion.d.ts +4 -4
- package/lib/components/ActionIcon/ActionIcon.d.ts +3 -3
- package/lib/components/Combobox/Combobox.types.d.ts +4 -3
- package/lib/components/Combobox/OptionsDropdown/OptionsDropdown.d.ts +1 -1
- package/lib/components/Combobox/index.d.ts +1 -1
- package/lib/components/ComboboxPopover/ComboboxPopover.d.ts +110 -0
- package/lib/components/ComboboxPopover/ComboboxPopover.types.d.ts +2 -0
- package/lib/components/ComboboxPopover/ComboboxPopoverTarget.d.ts +16 -0
- package/lib/components/ComboboxPopover/index.d.ts +14 -0
- package/lib/components/DataList/DataList.context.d.ts +6 -0
- package/lib/components/DataList/DataList.d.ts +44 -0
- package/lib/components/DataList/DataListItem/DataListItem.d.ts +18 -0
- package/lib/components/DataList/DataListItemLabel/DataListItemLabel.d.ts +18 -0
- package/lib/components/DataList/DataListItemValue/DataListItemValue.d.ts +18 -0
- package/lib/components/DataList/index.d.ts +32 -0
- package/lib/components/EmptyState/EmptyState.context.d.ts +8 -0
- package/lib/components/EmptyState/EmptyState.d.ts +83 -0
- package/lib/components/EmptyState/EmptyStateActions/EmptyStateActions.d.ts +18 -0
- package/lib/components/EmptyState/EmptyStateDescription/EmptyStateDescription.d.ts +18 -0
- package/lib/components/EmptyState/EmptyStateIndicator/EmptyStateIndicator.d.ts +18 -0
- package/lib/components/EmptyState/EmptyStateTitle/EmptyStateTitle.d.ts +20 -0
- package/lib/components/EmptyState/index.d.ts +13 -0
- package/lib/components/Input/Input.d.ts +11 -0
- package/lib/components/Input/InputSuccess/InputSuccess.d.ts +23 -0
- package/lib/components/Input/InputWrapper/InputWrapper.d.ts +7 -2
- package/lib/components/Input/index.d.ts +3 -1
- package/lib/components/Input/use-input-props.d.ts +5 -2
- package/lib/components/MaskInput/use-mask-input-props.d.ts +5 -1
- package/lib/components/Menubar/Menubar.context.d.ts +51 -0
- package/lib/components/Menubar/Menubar.d.ts +56 -0
- package/lib/components/Menubar/MenubarDropdown/MenubarDropdown.d.ts +7 -0
- package/lib/components/Menubar/MenubarMenu/MenubarMenu.d.ts +9 -0
- package/lib/components/Menubar/MenubarTarget/MenubarTarget.d.ts +14 -0
- package/lib/components/Menubar/index.d.ts +11 -0
- package/lib/components/MultiSelect/MultiSelect.d.ts +1 -1
- package/lib/components/NativeSelect/NativeSelect.d.ts +2 -2
- package/lib/components/PinInput/PinInput.d.ts +2 -0
- package/lib/components/Splitter/Splitter.context.d.ts +3 -1
- package/lib/components/Splitter/Splitter.d.ts +10 -10
- package/lib/components/Splitter/SplitterPane/SplitterPane.d.ts +9 -8
- package/lib/components/Tabs/Tabs.context.d.ts +2 -0
- package/lib/components/index.d.ts +4 -0
- package/lib/core/MantineProvider/color-functions/get-contrast-color/get-contrast-color.d.ts +7 -2
- package/lib/core/MantineProvider/color-functions/index.d.ts +1 -1
- package/package.json +5 -5
- package/styles/DataList.css +54 -0
- package/styles/DataList.layer.css +55 -0
- package/styles/EmptyState.css +121 -0
- package/styles/EmptyState.layer.css +122 -0
- package/styles/Input.css +21 -2
- package/styles/Input.layer.css +21 -2
- package/styles/Menubar.css +29 -0
- package/styles/Menubar.layer.css +30 -0
- package/styles/SemiCircleProgress.css +1 -0
- package/styles/SemiCircleProgress.layer.css +1 -0
- package/styles/default-css-variables.css +2 -0
- package/styles/default-css-variables.layer.css +2 -0
- package/styles.css +231 -2
- package/styles.layer.css +231 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Stepper.mjs","names":["classes"],"sources":["../../../src/components/Stepper/Stepper.tsx"],"sourcesContent":["import { Activity, Children, cloneElement } from 'react';\nimport {\n Box,\n BoxProps,\n createVarsResolver,\n ElementProps,\n factory,\n Factory,\n getAutoContrastValue,\n getContrastColor,\n getFontSize,\n getRadius,\n getSize,\n getSpacing,\n getThemeColor,\n MantineColor,\n MantineRadius,\n MantineSize,\n MantineSpacing,\n rem,\n StylesApiProps,\n useProps,\n useStyles,\n} from '../../core';\nimport { StepperProvider, type StepperContextValue } from './Stepper.context';\nimport { StepperCompleted, StepperCompletedProps } from './StepperCompleted/StepperCompleted';\nimport { StepperStep, StepperStepProps } from './StepperStep/StepperStep';\nimport classes from './Stepper.module.css';\nexport type StepFragmentComponent = React.FC<{ step: number }>;\n\nexport type StepperStylesNames =\n | 'root'\n | 'separator'\n | 'steps'\n | 'content'\n | 'step'\n | 'stepLoader'\n | 'verticalSeparator'\n | 'stepWrapper'\n | 'stepIcon'\n | 'stepCompletedIcon'\n | 'stepIconContent'\n | 'stepBody'\n | 'stepLabel'\n | 'stepDescription';\n\nexport type StepperCssVariables = {\n root:\n | '--stepper-color'\n | '--stepper-icon-color'\n | '--stepper-icon-size'\n | '--stepper-content-padding'\n | '--stepper-radius'\n | '--stepper-fz'\n | '--stepper-spacing';\n};\n\nexport interface StepperProps\n extends BoxProps, StylesApiProps<StepperFactory>, ElementProps<'div'> {\n /** `Stepper.Step` components */\n children: React.ReactNode;\n\n /** Called when a clickable step is clicked with its 0-based index. Not called for the currently active step. */\n onStepClick?: (stepIndex: number) => void;\n\n /** Index of the active step */\n active: number;\n\n /** Step icon @default step index + 1 */\n icon?: React.ReactNode | StepFragmentComponent;\n\n /** Step icon displayed when step is completed @default CheckIcon */\n completedIcon?: React.ReactNode | StepFragmentComponent;\n\n /** Step icon displayed when step is in progress @default step index + 1 */\n progressIcon?: React.ReactNode | StepFragmentComponent;\n\n /** Key of `theme.colors` or any valid CSS color, controls colors of active and progress steps @default theme.primaryColor */\n color?: MantineColor;\n\n /** Controls size of the step icon, by default icon size is inferred from `size` prop */\n iconSize?: number | string;\n\n /** Key of `theme.spacing` or any valid CSS value to set `padding-top` of the content @default 'md' */\n contentPadding?: MantineSpacing;\n\n /** Stepper orientation @default 'horizontal' */\n orientation?: 'vertical' | 'horizontal';\n\n /** Icon position relative to the step body @default 'left' */\n iconPosition?: 'right' | 'left';\n\n /** Controls size of various Stepper elements */\n size?: MantineSize;\n\n /** Key of `theme.radius` or any valid CSS value to set steps border-radius @default \"xl\" */\n radius?: MantineRadius;\n\n /** When true, users can click and jump to any step. When false, users can only navigate to completed steps @default true */\n allowNextStepsSelect?: boolean;\n\n /** Determines whether steps should wrap to the next line if no space is available @default true */\n wrap?: boolean;\n\n /** When true, automatically adjusts the icon color in completed steps to ensure sufficient contrast against the step background color */\n autoContrast?: boolean;\n\n /** If set, all step content is kept mounted. React 19 `Activity` is used to preserve state while content is hidden. @default false */\n keepMounted?: boolean;\n}\n\nexport type StepperFactory = Factory<{\n props: StepperProps;\n ref: HTMLDivElement;\n stylesNames: StepperStylesNames;\n vars: StepperCssVariables;\n staticComponents: {\n Step: typeof StepperStep;\n Completed: typeof StepperCompleted;\n };\n}>;\n\nconst defaultProps = {\n orientation: 'horizontal',\n iconPosition: 'left',\n allowNextStepsSelect: true,\n wrap: true,\n} satisfies Partial<StepperProps>;\n\nconst varsResolver = createVarsResolver<StepperFactory>(\n (theme, { color, iconSize, size, contentPadding, radius, autoContrast }) => ({\n root: {\n '--stepper-color': color ? getThemeColor(color, theme) : undefined,\n '--stepper-icon-color': getAutoContrastValue(autoContrast, theme)\n ? getContrastColor({ color, theme, autoContrast })\n : undefined,\n '--stepper-icon-size':\n iconSize === undefined ? getSize(size, 'stepper-icon-size') : rem(iconSize),\n '--stepper-content-padding': getSpacing(contentPadding),\n '--stepper-radius': radius === undefined ? undefined : getRadius(radius),\n '--stepper-fz': getFontSize(size),\n '--stepper-spacing': getSpacing(size),\n },\n })\n);\n\nexport const Stepper = factory<StepperFactory>((_props) => {\n const props = useProps('Stepper', defaultProps, _props);\n const {\n classNames,\n className,\n style,\n styles,\n unstyled,\n vars,\n children,\n onStepClick,\n active,\n icon,\n completedIcon,\n progressIcon,\n color,\n iconSize,\n contentPadding,\n orientation,\n iconPosition,\n size,\n radius,\n allowNextStepsSelect,\n wrap,\n autoContrast,\n keepMounted,\n attributes,\n ...others\n } = props;\n\n const getStyles = useStyles<StepperFactory>({\n name: 'Stepper',\n classes,\n props,\n className,\n style,\n classNames,\n styles,\n unstyled,\n attributes,\n vars,\n varsResolver,\n });\n\n const convertedChildren = Children.toArray(children) as React.ReactElement[];\n const _children = convertedChildren.filter(\n (child) => child.type !== StepperCompleted\n ) as React.ReactElement<StepperStepProps>[];\n const completedStep = convertedChildren.find(\n (item) => item.type === StepperCompleted\n ) as React.ReactElement<StepperCompletedProps>;\n\n const items = _children.reduce<React.ReactElement<StepperStepProps>[]>(\n (acc, item: React.ReactElement<StepperStepProps>, index) => {\n const state =\n active === index ? 'stepProgress' : active > index ? 'stepCompleted' : 'stepInactive';\n\n const shouldAllowSelect = () => {\n if (typeof onStepClick !== 'function') {\n return false;\n }\n\n if (typeof item.props.allowStepSelect === 'boolean') {\n return item.props.allowStepSelect;\n }\n\n return state === 'stepCompleted' || allowNextStepsSelect;\n };\n\n const isStepSelectionEnabled = shouldAllowSelect();\n\n acc.push(\n cloneElement(item, {\n icon: item.props.icon || icon || index + 1,\n key: index,\n step: index,\n state,\n onClick: () => isStepSelectionEnabled && onStepClick?.(index),\n allowStepClick: isStepSelectionEnabled,\n completedIcon: item.props.completedIcon || completedIcon,\n progressIcon: item.props.progressIcon || progressIcon,\n color: item.props.color || color,\n iconSize,\n iconPosition: item.props.iconPosition || iconPosition,\n orientation,\n })\n );\n\n if (orientation === 'horizontal' && index !== _children.length - 1) {\n acc.push(\n <div\n {...getStyles('separator')}\n data-active={index < active || undefined}\n data-orientation={orientation}\n key={`separator-${index}`}\n />\n );\n }\n\n return acc;\n },\n []\n );\n\n const stepContent = _children[active]?.props?.children;\n const completedContent = completedStep?.props?.children;\n const content = active > _children.length - 1 ? completedContent : stepContent;\n\n const contentSection = keepMounted ? (\n <>\n {_children.map((child, index) => (\n <Activity key={index} mode={active === index ? 'visible' : 'hidden'}>\n <div {...getStyles('content')}>{child.props.children}</div>\n </Activity>\n ))}\n {completedStep && (\n <Activity mode={active > _children.length - 1 ? 'visible' : 'hidden'}>\n <div {...getStyles('content')}>{completedStep.props.children}</div>\n </Activity>\n )}\n </>\n ) : (\n content && <div {...getStyles('content')}>{content}</div>\n );\n\n return (\n <StepperProvider value={{ getStyles, orientation, iconPosition }}>\n <Box {...getStyles('root')} size={size} {...others}>\n <Box\n {...getStyles('steps')}\n mod={{\n orientation,\n 'icon-position': iconPosition,\n wrap: wrap && orientation !== 'vertical',\n }}\n >\n {items}\n </Box>\n {contentSection}\n </Box>\n </StepperProvider>\n );\n});\n\nStepper.classes = classes;\nStepper.varsResolver = varsResolver;\nStepper.displayName = '@mantine/core/Stepper';\nStepper.Completed = StepperCompleted;\nStepper.Step = StepperStep;\n\nexport namespace Stepper {\n export type Props = StepperProps;\n export type StylesNames = StepperStylesNames;\n export type CssVariables = StepperCssVariables;\n export type Factory = StepperFactory;\n export type Step = StepFragmentComponent;\n export type ContextValue = StepperContextValue;\n\n export namespace Step {\n export type Props = StepperStepProps;\n }\n\n export namespace Completed {\n export type Props = StepperCompletedProps;\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Stepper.mjs","names":["classes"],"sources":["../../../src/components/Stepper/Stepper.tsx"],"sourcesContent":["import { Activity, Children, cloneElement } from 'react';\nimport {\n Box,\n BoxProps,\n createVarsResolver,\n ElementProps,\n factory,\n Factory,\n getAutoContrastValue,\n getContrastColor,\n getFontSize,\n getRadius,\n getSize,\n getSpacing,\n getThemeColor,\n MantineColor,\n MantineRadius,\n MantineSize,\n MantineSpacing,\n rem,\n StylesApiProps,\n useProps,\n useStyles,\n} from '../../core';\nimport { StepperProvider, type StepperContextValue } from './Stepper.context';\nimport { StepperCompleted, StepperCompletedProps } from './StepperCompleted/StepperCompleted';\nimport { StepperStep, StepperStepProps } from './StepperStep/StepperStep';\nimport classes from './Stepper.module.css';\nexport type StepFragmentComponent = React.FC<{ step: number }>;\n\nexport type StepperStylesNames =\n | 'root'\n | 'separator'\n | 'steps'\n | 'content'\n | 'step'\n | 'stepLoader'\n | 'verticalSeparator'\n | 'stepWrapper'\n | 'stepIcon'\n | 'stepCompletedIcon'\n | 'stepIconContent'\n | 'stepBody'\n | 'stepLabel'\n | 'stepDescription';\n\nexport type StepperCssVariables = {\n root:\n | '--stepper-color'\n | '--stepper-icon-color'\n | '--stepper-icon-size'\n | '--stepper-content-padding'\n | '--stepper-radius'\n | '--stepper-fz'\n | '--stepper-spacing';\n};\n\nexport interface StepperProps\n extends BoxProps, StylesApiProps<StepperFactory>, ElementProps<'div'> {\n /** `Stepper.Step` components */\n children: React.ReactNode;\n\n /** Called when a clickable step is clicked with its 0-based index. Not called for the currently active step. */\n onStepClick?: (stepIndex: number) => void;\n\n /** Index of the active step */\n active: number;\n\n /** Step icon @default step index + 1 */\n icon?: React.ReactNode | StepFragmentComponent;\n\n /** Step icon displayed when step is completed @default CheckIcon */\n completedIcon?: React.ReactNode | StepFragmentComponent;\n\n /** Step icon displayed when step is in progress @default step index + 1 */\n progressIcon?: React.ReactNode | StepFragmentComponent;\n\n /** Key of `theme.colors` or any valid CSS color, controls colors of active and progress steps @default theme.primaryColor */\n color?: MantineColor;\n\n /** Controls size of the step icon, by default icon size is inferred from `size` prop */\n iconSize?: number | string;\n\n /** Key of `theme.spacing` or any valid CSS value to set `padding-top` of the content @default 'md' */\n contentPadding?: MantineSpacing;\n\n /** Stepper orientation @default 'horizontal' */\n orientation?: 'vertical' | 'horizontal';\n\n /** Icon position relative to the step body @default 'left' */\n iconPosition?: 'right' | 'left';\n\n /** Controls size of various Stepper elements */\n size?: MantineSize;\n\n /** Key of `theme.radius` or any valid CSS value to set steps border-radius @default \"xl\" */\n radius?: MantineRadius;\n\n /** When true, users can click and jump to any step. When false, users can only navigate to completed steps @default true */\n allowNextStepsSelect?: boolean;\n\n /** Determines whether steps should wrap to the next line if no space is available @default true */\n wrap?: boolean;\n\n /** When true, automatically adjusts the icon color in completed steps to ensure sufficient contrast against the step background color */\n autoContrast?: boolean;\n\n /** If set, all step content is kept mounted. React 19 `Activity` is used to preserve state while content is hidden. @default false */\n keepMounted?: boolean;\n}\n\nexport type StepperFactory = Factory<{\n props: StepperProps;\n ref: HTMLDivElement;\n stylesNames: StepperStylesNames;\n vars: StepperCssVariables;\n staticComponents: {\n Step: typeof StepperStep;\n Completed: typeof StepperCompleted;\n };\n}>;\n\nconst defaultProps = {\n orientation: 'horizontal',\n iconPosition: 'left',\n allowNextStepsSelect: true,\n wrap: true,\n} satisfies Partial<StepperProps>;\n\nconst varsResolver = createVarsResolver<StepperFactory>(\n (theme, { color, iconSize, size, contentPadding, radius, autoContrast }) => ({\n root: {\n '--stepper-color': color ? getThemeColor(color, theme) : undefined,\n '--stepper-icon-color': getAutoContrastValue(autoContrast, theme)\n ? getContrastColor({ color, theme, autoContrast })\n : undefined,\n '--stepper-icon-size':\n iconSize === undefined ? getSize(size, 'stepper-icon-size') : rem(iconSize),\n '--stepper-content-padding': getSpacing(contentPadding),\n '--stepper-radius': radius === undefined ? undefined : getRadius(radius),\n '--stepper-fz': getFontSize(size),\n '--stepper-spacing': getSpacing(size),\n },\n })\n);\n\nexport const Stepper = factory<StepperFactory>((_props) => {\n const props = useProps('Stepper', defaultProps, _props);\n const {\n classNames,\n className,\n style,\n styles,\n unstyled,\n vars,\n children,\n onStepClick,\n active,\n icon,\n completedIcon,\n progressIcon,\n color,\n iconSize,\n contentPadding,\n orientation,\n iconPosition,\n size,\n radius,\n allowNextStepsSelect,\n wrap,\n autoContrast,\n keepMounted,\n attributes,\n ...others\n } = props;\n\n const getStyles = useStyles<StepperFactory>({\n name: 'Stepper',\n classes,\n props,\n className,\n style,\n classNames,\n styles,\n unstyled,\n attributes,\n vars,\n varsResolver,\n });\n\n const convertedChildren = Children.toArray(children) as React.ReactElement[];\n const _children = convertedChildren.filter(\n (child) => child.type !== StepperCompleted\n ) as React.ReactElement<StepperStepProps>[];\n const completedStep = convertedChildren.find(\n (item) => item.type === StepperCompleted\n ) as React.ReactElement<StepperCompletedProps>;\n\n const items = _children.reduce<React.ReactElement<StepperStepProps>[]>(\n (acc, item: React.ReactElement<StepperStepProps>, index) => {\n const state =\n active === index ? 'stepProgress' : active > index ? 'stepCompleted' : 'stepInactive';\n\n const shouldAllowSelect = () => {\n if (typeof onStepClick !== 'function') {\n return false;\n }\n\n if (typeof item.props.allowStepSelect === 'boolean') {\n return item.props.allowStepSelect;\n }\n\n return state === 'stepCompleted' || allowNextStepsSelect;\n };\n\n const isStepSelectionEnabled = shouldAllowSelect();\n\n acc.push(\n cloneElement(item, {\n icon: item.props.icon || icon || index + 1,\n key: index,\n step: index,\n state,\n onClick: () => isStepSelectionEnabled && onStepClick?.(index),\n allowStepClick: isStepSelectionEnabled,\n completedIcon: item.props.completedIcon || completedIcon,\n progressIcon: item.props.progressIcon || progressIcon,\n color: item.props.color || color,\n iconSize,\n iconPosition: item.props.iconPosition || iconPosition,\n orientation,\n })\n );\n\n if (orientation === 'horizontal' && index !== _children.length - 1) {\n acc.push(\n <div\n {...getStyles('separator')}\n data-active={index < active || undefined}\n data-orientation={orientation}\n key={`separator-${index}`}\n />\n );\n }\n\n return acc;\n },\n []\n );\n\n const stepContent = _children[active]?.props?.children;\n const completedContent = completedStep?.props?.children;\n const content = active > _children.length - 1 ? completedContent : stepContent;\n\n const contentSection = keepMounted ? (\n <>\n {_children.map((child, index) => (\n <Activity key={index} mode={active === index ? 'visible' : 'hidden'}>\n <div {...getStyles('content')}>{child.props.children}</div>\n </Activity>\n ))}\n {completedStep && (\n <Activity mode={active > _children.length - 1 ? 'visible' : 'hidden'}>\n <div {...getStyles('content')}>{completedStep.props.children}</div>\n </Activity>\n )}\n </>\n ) : (\n content && <div {...getStyles('content')}>{content}</div>\n );\n\n return (\n <StepperProvider value={{ getStyles, orientation, iconPosition }}>\n <Box {...getStyles('root')} size={size} {...others}>\n <Box\n {...getStyles('steps')}\n mod={{\n orientation,\n 'icon-position': iconPosition,\n wrap: wrap && orientation !== 'vertical',\n }}\n >\n {items}\n </Box>\n {contentSection}\n </Box>\n </StepperProvider>\n );\n});\n\nStepper.classes = classes;\nStepper.varsResolver = varsResolver;\nStepper.displayName = '@mantine/core/Stepper';\nStepper.Completed = StepperCompleted;\nStepper.Step = StepperStep;\n\nexport namespace Stepper {\n export type Props = StepperProps;\n export type StylesNames = StepperStylesNames;\n export type CssVariables = StepperCssVariables;\n export type Factory = StepperFactory;\n export type Step = StepFragmentComponent;\n export type ContextValue = StepperContextValue;\n\n export namespace Step {\n export type Props = StepperStepProps;\n }\n\n export namespace Completed {\n export type Props = StepperCompletedProps;\n }\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Switch.mjs","names":["useId","classes"],"sources":["../../../src/components/Switch/Switch.tsx"],"sourcesContent":["import { use } from 'react';\nimport { useId, useUncontrolled } from '@mantine/hooks';\nimport {\n Box,\n BoxProps,\n createVarsResolver,\n DataAttributes,\n ElementProps,\n extractStyleProps,\n factory,\n Factory,\n getRadius,\n getSize,\n getThemeColor,\n MantineColor,\n MantineRadius,\n MantineSize,\n StylesApiProps,\n useProps,\n useStyles,\n} from '../../core';\nimport { InlineInput, InlineInputClasses, InlineInputStylesNames } from '../../utils/InlineInput';\nimport {\n SwitchGroup,\n SwitchGroupContext,\n type SwitchGroupProps,\n type SwitchGroupStylesNames,\n type SwitchGroupFactory,\n type SwitchGroupContextValue,\n} from './SwitchGroup/SwitchGroup';\nimport classes from './Switch.module.css';\nexport type SwitchStylesNames =\n | 'root'\n | 'track'\n | 'trackLabel'\n | 'thumb'\n | 'input'\n | InlineInputStylesNames;\n\nexport type SwitchCssVariables = {\n root:\n | '--switch-radius'\n | '--switch-height'\n | '--switch-width'\n | '--switch-thumb-size'\n | '--switch-label-font-size'\n | '--switch-track-label-padding'\n | '--switch-color';\n};\n\nexport interface SwitchProps\n extends BoxProps, StylesApiProps<SwitchFactory>, ElementProps<'input', 'size' | 'children'> {\n /** Id used to bind input and label, if not passed, unique id will be generated instead */\n id?: string;\n\n /** Content of the label associated with the switch */\n label?: React.ReactNode;\n\n /** Inner label when the `Switch` is in unchecked state */\n offLabel?: React.ReactNode;\n\n /** Inner label when the `Switch` is in checked state */\n onLabel?: React.ReactNode;\n\n /** Key of `theme.colors` or any valid CSS color to set input color in checked state @default theme.primaryColor */\n color?: MantineColor;\n\n /** Controls size of all elements */\n size?: MantineSize | (string & {});\n\n /** Key of `theme.radius` or any valid CSS value to set `border-radius` @default 'xl' */\n radius?: MantineRadius;\n\n /** Props passed down to the root element */\n wrapperProps?: React.ComponentProps<'div'> & DataAttributes;\n\n /** Icon inside the thumb of the switch */\n thumbIcon?: React.ReactNode;\n\n /** Position of the label relative to the input @default 'right' */\n labelPosition?: 'left' | 'right';\n\n /** Description displayed below the label */\n description?: React.ReactNode;\n\n /** Error displayed below the label */\n error?: React.ReactNode;\n\n /** Assigns ref of the root element */\n rootRef?: React.Ref<HTMLDivElement>;\n\n /** If set, displays a colored dot inside the thumb that matches the track background color @default true */\n withThumbIndicator?: boolean;\n}\n\nexport type SwitchFactory = Factory<{\n props: SwitchProps;\n ref: HTMLInputElement;\n stylesNames: SwitchStylesNames;\n vars: SwitchCssVariables;\n staticComponents: {\n Group: typeof SwitchGroup;\n };\n}>;\n\nconst defaultProps = {\n labelPosition: 'right',\n withThumbIndicator: true,\n} satisfies Partial<SwitchProps>;\n\nconst varsResolver = createVarsResolver<SwitchFactory>((theme, { radius, color, size }) => ({\n root: {\n '--switch-radius': radius === undefined ? undefined : getRadius(radius),\n '--switch-height': getSize(size, 'switch-height'),\n '--switch-width': getSize(size, 'switch-width'),\n '--switch-thumb-size': getSize(size, 'switch-thumb-size'),\n '--switch-label-font-size': getSize(size, 'switch-label-font-size'),\n '--switch-track-label-padding': getSize(size, 'switch-track-label-padding'),\n '--switch-color': color ? getThemeColor(color, theme) : undefined,\n },\n}));\n\nexport const Switch = factory<SwitchFactory>((_props) => {\n const props = useProps('Switch', defaultProps, _props);\n const {\n classNames,\n className,\n style,\n styles,\n unstyled,\n vars,\n color,\n label,\n offLabel,\n onLabel,\n id,\n size,\n radius,\n wrapperProps,\n thumbIcon,\n checked,\n defaultChecked,\n onChange,\n labelPosition,\n description,\n error,\n disabled,\n variant,\n rootRef,\n mod,\n withThumbIndicator,\n attributes,\n ...others\n } = props;\n\n const ctx = use(SwitchGroupContext);\n const _size = size || ctx?.size;\n\n const getStyles = useStyles<SwitchFactory>({\n name: 'Switch',\n props,\n classes,\n className,\n style,\n classNames,\n styles,\n unstyled,\n attributes,\n vars,\n varsResolver,\n });\n\n const { styleProps, rest } = extractStyleProps(others);\n const uuid = useId(id);\n const descriptionId = description ? `${uuid}-description` : undefined;\n const errorId = error && typeof error !== 'boolean' ? `${uuid}-error` : undefined;\n const describedBy =\n [descriptionId, errorId, rest['aria-describedby']].filter(Boolean).join(' ') || undefined;\n\n const withContextProps = {\n checked: ctx?.value.includes(rest.value as string) ?? checked,\n onChange: (event: React.ChangeEvent<HTMLInputElement>) => {\n ctx?.onChange(event);\n onChange?.(event);\n },\n };\n\n const _disabled = disabled || ctx?.isDisabled?.(rest.value as string);\n\n const [_checked, handleChange] = useUncontrolled({\n value: withContextProps.checked ?? checked,\n defaultValue: defaultChecked,\n finalValue: false,\n });\n\n return (\n <InlineInput\n {...getStyles('root')}\n __staticSelector=\"Switch\"\n __stylesApiProps={props}\n id={uuid}\n size={_size}\n labelPosition={labelPosition}\n label={label}\n description={description}\n error={error}\n disabled={_disabled}\n bodyElement=\"label\"\n labelElement=\"span\"\n classNames={classNames}\n styles={styles}\n unstyled={unstyled}\n data-checked={withContextProps.checked}\n variant={variant}\n ref={rootRef}\n mod={mod}\n attributes={attributes}\n inert={rest.inert}\n {...styleProps}\n {...wrapperProps}\n >\n <input\n {...rest}\n {...withContextProps}\n disabled={_disabled}\n checked={_checked}\n data-checked={withContextProps.checked}\n onChange={(event) => {\n withContextProps.onChange?.(event);\n handleChange(event.currentTarget.checked);\n }}\n id={uuid}\n type=\"checkbox\"\n role=\"switch\"\n inert={rest.inert}\n aria-describedby={describedBy}\n {...getStyles('input')}\n />\n\n <Box\n aria-hidden=\"true\"\n component=\"span\"\n mod={{ error, 'label-position': labelPosition, 'without-labels': !onLabel && !offLabel }}\n {...getStyles('track')}\n >\n <Box\n component=\"span\"\n mod={{ 'reduce-motion': true, 'with-thumb-indicator': withThumbIndicator && !thumbIcon }}\n {...getStyles('thumb')}\n >\n {thumbIcon}\n </Box>\n <span {...getStyles('trackLabel')}>{_checked ? onLabel : offLabel}</span>\n </Box>\n </InlineInput>\n );\n});\n\nSwitch.classes = { ...classes, ...InlineInputClasses };\nSwitch.varsResolver = varsResolver;\nSwitch.displayName = '@mantine/core/Switch';\nSwitch.Group = SwitchGroup;\n\nexport namespace Switch {\n export type Props = SwitchProps;\n export type StylesNames = SwitchStylesNames;\n export type CssVariables = SwitchCssVariables;\n export type Factory = SwitchFactory;\n\n export namespace Group {\n export type Props = SwitchGroupProps;\n export type StylesNames = SwitchGroupStylesNames;\n export type Factory = SwitchGroupFactory;\n export type Context = SwitchGroupContextValue;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAyGA,MAAM,eAAe;CACnB,eAAe;CACf,oBAAoB;AACtB;AAEA,MAAM,eAAe,oBAAmC,OAAO,EAAE,QAAQ,OAAO,YAAY,EAC1F,MAAM;CACJ,mBAAmB,WAAW,KAAA,IAAY,KAAA,IAAY,UAAU,MAAM;CACtE,mBAAmB,QAAQ,MAAM,eAAe;CAChD,kBAAkB,QAAQ,MAAM,cAAc;CAC9C,uBAAuB,QAAQ,MAAM,mBAAmB;CACxD,4BAA4B,QAAQ,MAAM,wBAAwB;CAClE,gCAAgC,QAAQ,MAAM,4BAA4B;CAC1E,kBAAkB,QAAQ,cAAc,OAAO,KAAK,IAAI,KAAA;AAC1D,EACF,EAAE;AAEF,MAAa,SAAS,SAAwB,WAAW;CACvD,MAAM,QAAQ,SAAS,UAAU,cAAc,MAAM;CACrD,MAAM,EACJ,YACA,WACA,OACA,QACA,UACA,MACA,OACA,OACA,UACA,SACA,IACA,MACA,QACA,cACA,WACA,SACA,gBACA,UACA,eACA,aACA,OACA,UACA,SACA,SACA,KACA,oBACA,YACA,GAAG,WACD;CAEJ,MAAM,MAAM,IAAI,kBAAkB;CAClC,MAAM,QAAQ,QAAQ,KAAK;CAE3B,MAAM,YAAY,UAAyB;EACzC,MAAM;EACN;EACA,SAAA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,CAAC;CAED,MAAM,EAAE,YAAY,SAAS,kBAAkB,MAAM;CACrD,MAAM,OAAOA,QAAM,EAAE;CAGrB,MAAM,cACJ;EAHoB,cAAc,GAAG,KAAK,gBAAgB,KAAA;EAC5C,SAAS,OAAO,UAAU,YAAY,GAAG,KAAK,UAAU,KAAA;EAE7C,KAAK;CAAmB,
|
|
1
|
+
{"version":3,"file":"Switch.mjs","names":["useId","classes"],"sources":["../../../src/components/Switch/Switch.tsx"],"sourcesContent":["import { use } from 'react';\nimport { useId, useUncontrolled } from '@mantine/hooks';\nimport {\n Box,\n BoxProps,\n createVarsResolver,\n DataAttributes,\n ElementProps,\n extractStyleProps,\n factory,\n Factory,\n getRadius,\n getSize,\n getThemeColor,\n MantineColor,\n MantineRadius,\n MantineSize,\n StylesApiProps,\n useProps,\n useStyles,\n} from '../../core';\nimport { InlineInput, InlineInputClasses, InlineInputStylesNames } from '../../utils/InlineInput';\nimport {\n SwitchGroup,\n SwitchGroupContext,\n type SwitchGroupProps,\n type SwitchGroupStylesNames,\n type SwitchGroupFactory,\n type SwitchGroupContextValue,\n} from './SwitchGroup/SwitchGroup';\nimport classes from './Switch.module.css';\nexport type SwitchStylesNames =\n | 'root'\n | 'track'\n | 'trackLabel'\n | 'thumb'\n | 'input'\n | InlineInputStylesNames;\n\nexport type SwitchCssVariables = {\n root:\n | '--switch-radius'\n | '--switch-height'\n | '--switch-width'\n | '--switch-thumb-size'\n | '--switch-label-font-size'\n | '--switch-track-label-padding'\n | '--switch-color';\n};\n\nexport interface SwitchProps\n extends BoxProps, StylesApiProps<SwitchFactory>, ElementProps<'input', 'size' | 'children'> {\n /** Id used to bind input and label, if not passed, unique id will be generated instead */\n id?: string;\n\n /** Content of the label associated with the switch */\n label?: React.ReactNode;\n\n /** Inner label when the `Switch` is in unchecked state */\n offLabel?: React.ReactNode;\n\n /** Inner label when the `Switch` is in checked state */\n onLabel?: React.ReactNode;\n\n /** Key of `theme.colors` or any valid CSS color to set input color in checked state @default theme.primaryColor */\n color?: MantineColor;\n\n /** Controls size of all elements */\n size?: MantineSize | (string & {});\n\n /** Key of `theme.radius` or any valid CSS value to set `border-radius` @default 'xl' */\n radius?: MantineRadius;\n\n /** Props passed down to the root element */\n wrapperProps?: React.ComponentProps<'div'> & DataAttributes;\n\n /** Icon inside the thumb of the switch */\n thumbIcon?: React.ReactNode;\n\n /** Position of the label relative to the input @default 'right' */\n labelPosition?: 'left' | 'right';\n\n /** Description displayed below the label */\n description?: React.ReactNode;\n\n /** Error displayed below the label */\n error?: React.ReactNode;\n\n /** Assigns ref of the root element */\n rootRef?: React.Ref<HTMLDivElement>;\n\n /** If set, displays a colored dot inside the thumb that matches the track background color @default true */\n withThumbIndicator?: boolean;\n}\n\nexport type SwitchFactory = Factory<{\n props: SwitchProps;\n ref: HTMLInputElement;\n stylesNames: SwitchStylesNames;\n vars: SwitchCssVariables;\n staticComponents: {\n Group: typeof SwitchGroup;\n };\n}>;\n\nconst defaultProps = {\n labelPosition: 'right',\n withThumbIndicator: true,\n} satisfies Partial<SwitchProps>;\n\nconst varsResolver = createVarsResolver<SwitchFactory>((theme, { radius, color, size }) => ({\n root: {\n '--switch-radius': radius === undefined ? undefined : getRadius(radius),\n '--switch-height': getSize(size, 'switch-height'),\n '--switch-width': getSize(size, 'switch-width'),\n '--switch-thumb-size': getSize(size, 'switch-thumb-size'),\n '--switch-label-font-size': getSize(size, 'switch-label-font-size'),\n '--switch-track-label-padding': getSize(size, 'switch-track-label-padding'),\n '--switch-color': color ? getThemeColor(color, theme) : undefined,\n },\n}));\n\nexport const Switch = factory<SwitchFactory>((_props) => {\n const props = useProps('Switch', defaultProps, _props);\n const {\n classNames,\n className,\n style,\n styles,\n unstyled,\n vars,\n color,\n label,\n offLabel,\n onLabel,\n id,\n size,\n radius,\n wrapperProps,\n thumbIcon,\n checked,\n defaultChecked,\n onChange,\n labelPosition,\n description,\n error,\n disabled,\n variant,\n rootRef,\n mod,\n withThumbIndicator,\n attributes,\n ...others\n } = props;\n\n const ctx = use(SwitchGroupContext);\n const _size = size || ctx?.size;\n\n const getStyles = useStyles<SwitchFactory>({\n name: 'Switch',\n props,\n classes,\n className,\n style,\n classNames,\n styles,\n unstyled,\n attributes,\n vars,\n varsResolver,\n });\n\n const { styleProps, rest } = extractStyleProps(others);\n const uuid = useId(id);\n const descriptionId = description ? `${uuid}-description` : undefined;\n const errorId = error && typeof error !== 'boolean' ? `${uuid}-error` : undefined;\n const describedBy =\n [descriptionId, errorId, rest['aria-describedby']].filter(Boolean).join(' ') || undefined;\n\n const withContextProps = {\n checked: ctx?.value.includes(rest.value as string) ?? checked,\n onChange: (event: React.ChangeEvent<HTMLInputElement>) => {\n ctx?.onChange(event);\n onChange?.(event);\n },\n };\n\n const _disabled = disabled || ctx?.isDisabled?.(rest.value as string);\n\n const [_checked, handleChange] = useUncontrolled({\n value: withContextProps.checked ?? checked,\n defaultValue: defaultChecked,\n finalValue: false,\n });\n\n return (\n <InlineInput\n {...getStyles('root')}\n __staticSelector=\"Switch\"\n __stylesApiProps={props}\n id={uuid}\n size={_size}\n labelPosition={labelPosition}\n label={label}\n description={description}\n error={error}\n disabled={_disabled}\n bodyElement=\"label\"\n labelElement=\"span\"\n classNames={classNames}\n styles={styles}\n unstyled={unstyled}\n data-checked={withContextProps.checked}\n variant={variant}\n ref={rootRef}\n mod={mod}\n attributes={attributes}\n inert={rest.inert}\n {...styleProps}\n {...wrapperProps}\n >\n <input\n {...rest}\n {...withContextProps}\n disabled={_disabled}\n checked={_checked}\n data-checked={withContextProps.checked}\n onChange={(event) => {\n withContextProps.onChange?.(event);\n handleChange(event.currentTarget.checked);\n }}\n id={uuid}\n type=\"checkbox\"\n role=\"switch\"\n inert={rest.inert}\n aria-describedby={describedBy}\n {...getStyles('input')}\n />\n\n <Box\n aria-hidden=\"true\"\n component=\"span\"\n mod={{ error, 'label-position': labelPosition, 'without-labels': !onLabel && !offLabel }}\n {...getStyles('track')}\n >\n <Box\n component=\"span\"\n mod={{ 'reduce-motion': true, 'with-thumb-indicator': withThumbIndicator && !thumbIcon }}\n {...getStyles('thumb')}\n >\n {thumbIcon}\n </Box>\n <span {...getStyles('trackLabel')}>{_checked ? onLabel : offLabel}</span>\n </Box>\n </InlineInput>\n );\n});\n\nSwitch.classes = { ...classes, ...InlineInputClasses };\nSwitch.varsResolver = varsResolver;\nSwitch.displayName = '@mantine/core/Switch';\nSwitch.Group = SwitchGroup;\n\nexport namespace Switch {\n export type Props = SwitchProps;\n export type StylesNames = SwitchStylesNames;\n export type CssVariables = SwitchCssVariables;\n export type Factory = SwitchFactory;\n\n export namespace Group {\n export type Props = SwitchGroupProps;\n export type StylesNames = SwitchGroupStylesNames;\n export type Factory = SwitchGroupFactory;\n export type Context = SwitchGroupContextValue;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAyGA,MAAM,eAAe;CACnB,eAAe;CACf,oBAAoB;AACtB;AAEA,MAAM,eAAe,oBAAmC,OAAO,EAAE,QAAQ,OAAO,YAAY,EAC1F,MAAM;CACJ,mBAAmB,WAAW,KAAA,IAAY,KAAA,IAAY,UAAU,MAAM;CACtE,mBAAmB,QAAQ,MAAM,eAAe;CAChD,kBAAkB,QAAQ,MAAM,cAAc;CAC9C,uBAAuB,QAAQ,MAAM,mBAAmB;CACxD,4BAA4B,QAAQ,MAAM,wBAAwB;CAClE,gCAAgC,QAAQ,MAAM,4BAA4B;CAC1E,kBAAkB,QAAQ,cAAc,OAAO,KAAK,IAAI,KAAA;AAC1D,EACF,EAAE;AAEF,MAAa,SAAS,SAAwB,WAAW;CACvD,MAAM,QAAQ,SAAS,UAAU,cAAc,MAAM;CACrD,MAAM,EACJ,YACA,WACA,OACA,QACA,UACA,MACA,OACA,OACA,UACA,SACA,IACA,MACA,QACA,cACA,WACA,SACA,gBACA,UACA,eACA,aACA,OACA,UACA,SACA,SACA,KACA,oBACA,YACA,GAAG,WACD;CAEJ,MAAM,MAAM,IAAI,kBAAkB;CAClC,MAAM,QAAQ,QAAQ,KAAK;CAE3B,MAAM,YAAY,UAAyB;EACzC,MAAM;EACN;EACA,SAAA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,CAAC;CAED,MAAM,EAAE,YAAY,SAAS,kBAAkB,MAAM;CACrD,MAAM,OAAOA,QAAM,EAAE;CAGrB,MAAM,cACJ;EAHoB,cAAc,GAAG,KAAK,gBAAgB,KAAA;EAC5C,SAAS,OAAO,UAAU,YAAY,GAAG,KAAK,UAAU,KAAA;EAE7C,KAAK;CAAmB,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG,KAAK,KAAA;CAElF,MAAM,mBAAmB;EACvB,SAAS,KAAK,MAAM,SAAS,KAAK,KAAe,KAAK;EACtD,WAAW,UAA+C;GACxD,KAAK,SAAS,KAAK;GACnB,WAAW,KAAK;EAClB;CACF;CAEA,MAAM,YAAY,YAAY,KAAK,aAAa,KAAK,KAAe;CAEpE,MAAM,CAAC,UAAU,gBAAgB,gBAAgB;EAC/C,OAAO,iBAAiB,WAAW;EACnC,cAAc;EACd,YAAY;CACd,CAAC;CAED,OACE,qBAAC,aAAD;EACE,GAAI,UAAU,MAAM;EACpB,kBAAiB;EACjB,kBAAkB;EAClB,IAAI;EACJ,MAAM;EACS;EACR;EACM;EACN;EACP,UAAU;EACV,aAAY;EACZ,cAAa;EACD;EACJ;EACE;EACV,gBAAc,iBAAiB;EACtB;EACT,KAAK;EACA;EACO;EACZ,OAAO,KAAK;EACZ,GAAI;EACJ,GAAI;YAvBN,CAyBE,oBAAC,SAAD;GACE,GAAI;GACJ,GAAI;GACJ,UAAU;GACV,SAAS;GACT,gBAAc,iBAAiB;GAC/B,WAAW,UAAU;IACnB,iBAAiB,WAAW,KAAK;IACjC,aAAa,MAAM,cAAc,OAAO;GAC1C;GACA,IAAI;GACJ,MAAK;GACL,MAAK;GACL,OAAO,KAAK;GACZ,oBAAkB;GAClB,GAAI,UAAU,OAAO;EACtB,CAAA,GAED,qBAAC,KAAD;GACE,eAAY;GACZ,WAAU;GACV,KAAK;IAAE;IAAO,kBAAkB;IAAe,kBAAkB,CAAC,WAAW,CAAC;GAAS;GACvF,GAAI,UAAU,OAAO;aAJvB,CAME,oBAAC,KAAD;IACE,WAAU;IACV,KAAK;KAAE,iBAAiB;KAAM,wBAAwB,sBAAsB,CAAC;IAAU;IACvF,GAAI,UAAU,OAAO;cAEpB;GACE,CAAA,GACL,oBAAC,QAAD;IAAM,GAAI,UAAU,YAAY;cAAI,WAAW,UAAU;GAAe,CAAA,CACrE;IACM;;AAEjB,CAAC;AAED,OAAO,UAAU;CAAE,GAAGC;CAAS,GAAG;AAAmB;AACrD,OAAO,eAAe;AACtB,OAAO,cAAc;AACrB,OAAO,QAAQ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Table.components.mjs","names":["classes"],"sources":["../../../src/components/Table/Table.components.tsx"],"sourcesContent":["import {\n Box,\n BoxProps,\n CompoundStylesApiProps,\n ElementProps,\n factory,\n Factory,\n FactoryPayload,\n useProps,\n} from '../../core';\nimport type { TableFactory } from './Table';\nimport { TableContextValue, useTableContext } from './Table.context';\nimport classes from './Table.module.css';\n\nexport interface TableElementProps<Selector extends string>\n extends\n BoxProps,\n CompoundStylesApiProps<Omit<TableFactory, 'stylesNames'> & { stylesNames: Selector }> {}\n\nexport interface TableThProps extends TableElementProps<'th'>, ElementProps<'th'> {}\nexport interface TableTdProps extends TableElementProps<'td'>, ElementProps<'td'> {}\nexport interface TableTrProps extends TableElementProps<'tr'>, ElementProps<'tr'> {}\nexport interface TableTheadProps extends TableElementProps<'thead'>, ElementProps<'thead'> {}\nexport interface TableTbodyProps extends TableElementProps<'tbody'>, ElementProps<'tbody'> {}\nexport interface TableTfootProps extends TableElementProps<'tfoot'>, ElementProps<'tfoot'> {}\nexport interface TableCaptionProps extends TableElementProps<'caption'>, ElementProps<'caption'> {}\n\nexport type TableThFactory = Factory<{\n props: TableThProps;\n ref: HTMLTableCellElement;\n stylesNames: 'th';\n compound: true;\n}>;\n\nexport type TableTdFactory = Factory<{\n props: TableTdProps;\n ref: HTMLTableCellElement;\n stylesNames: 'td';\n compound: true;\n}>;\n\nexport type TableTrFactory = Factory<{\n props: TableTrProps;\n ref: HTMLTableRowElement;\n stylesNames: 'tr';\n compound: true;\n}>;\n\nexport type TableTheadFactory = Factory<{\n props: TableTheadProps;\n ref: HTMLTableSectionElement;\n stylesNames: 'thead';\n compound: true;\n}>;\n\nexport type TableTbodyFactory = Factory<{\n props: TableTbodyProps;\n ref: HTMLTableSectionElement;\n stylesNames: 'tbody';\n compound: true;\n}>;\n\nexport type TableTfootFactory = Factory<{\n props: TableTfootProps;\n ref: HTMLTableSectionElement;\n stylesNames: 'tfoot';\n compound: true;\n}>;\n\nexport type TableCaptionFactory = Factory<{\n props: TableCaptionProps;\n ref: HTMLTableCaptionElement;\n stylesNames: 'caption';\n compound: true;\n}>;\n\ninterface TableElementOptions {\n columnBorder?: true;\n rowBorder?: true;\n striped?: true;\n highlightOnHover?: true;\n captionSide?: true;\n stickyHeader?: true;\n}\n\nfunction getDataAttributes(ctx: TableContextValue, options?: TableElementOptions) {\n if (!options) {\n return undefined;\n }\n\n const data: Record<string, boolean | string> = {};\n\n if (options.columnBorder && ctx.withColumnBorders) {\n data['data-with-column-border'] = true;\n }\n\n if (options.rowBorder && ctx.withRowBorders) {\n data['data-with-row-border'] = true;\n }\n\n if (options.striped && ctx.striped) {\n data['data-striped'] = ctx.striped;\n }\n\n if (options.highlightOnHover && ctx.highlightOnHover) {\n data['data-hover'] = true;\n }\n\n if (options.captionSide && ctx.captionSide) {\n data['data-side'] = ctx.captionSide;\n }\n\n if (options.stickyHeader && ctx.stickyHeader) {\n data['data-sticky'] = true;\n }\n\n return data;\n}\n\nexport function tableElement<Factory extends FactoryPayload>(\n element: 'th' | 'td' | 'tr' | 'thead' | 'tbody' | 'tfoot' | 'caption',\n options?: TableElementOptions\n) {\n const name = `Table${element.charAt(0).toUpperCase()}${element.slice(1)}`;\n const Component = factory<Factory>((_props) => {\n const props = useProps(name, {}, _props);\n const { classNames, className, style, styles, ...others } = props;\n\n const ctx = useTableContext();\n\n return (\n <Box\n component={element}\n {...getDataAttributes(ctx, options)}\n {...ctx.getStyles(element, { className, classNames, style, styles, props })}\n {...others}\n />\n );\n });\n\n Component.displayName = `@mantine/core/${name}`;\n Component.classes = classes;\n return Component;\n}\n\nexport const TableTh = tableElement<TableThFactory>('th', { columnBorder: true });\nexport const TableTd = tableElement<TableTdFactory>('td', { columnBorder: true });\nexport const TableTr = tableElement<TableTrFactory>('tr', {\n rowBorder: true,\n striped: true,\n highlightOnHover: true,\n});\nexport const TableThead = tableElement<TableTheadFactory>('thead', { stickyHeader: true });\nexport const TableTbody = tableElement<TableTbodyFactory>('tbody');\nexport const TableTfoot = tableElement<TableTfootFactory>('tfoot');\nexport const TableCaption = tableElement<TableCaptionFactory>('caption', { captionSide: true });\n"],"mappings":";;;;;;;;AAqFA,SAAS,kBAAkB,KAAwB,SAA+B;CAChF,IAAI,CAAC,SACH;CAGF,MAAM,OAAyC,CAAC;CAEhD,IAAI,QAAQ,gBAAgB,IAAI,mBAC9B,KAAK,6BAA6B;CAGpC,IAAI,QAAQ,aAAa,IAAI,gBAC3B,KAAK,0BAA0B;CAGjC,IAAI,QAAQ,WAAW,IAAI,SACzB,KAAK,kBAAkB,IAAI;CAG7B,IAAI,QAAQ,oBAAoB,IAAI,kBAClC,KAAK,gBAAgB;CAGvB,IAAI,QAAQ,eAAe,IAAI,aAC7B,KAAK,eAAe,IAAI;CAG1B,IAAI,QAAQ,gBAAgB,IAAI,cAC9B,KAAK,iBAAiB;CAGxB,OAAO;AACT;AAEA,SAAgB,aACd,SACA,SACA;CACA,MAAM,OAAO,QAAQ,QAAQ,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"Table.components.mjs","names":["classes"],"sources":["../../../src/components/Table/Table.components.tsx"],"sourcesContent":["import {\n Box,\n BoxProps,\n CompoundStylesApiProps,\n ElementProps,\n factory,\n Factory,\n FactoryPayload,\n useProps,\n} from '../../core';\nimport type { TableFactory } from './Table';\nimport { TableContextValue, useTableContext } from './Table.context';\nimport classes from './Table.module.css';\n\nexport interface TableElementProps<Selector extends string>\n extends\n BoxProps,\n CompoundStylesApiProps<Omit<TableFactory, 'stylesNames'> & { stylesNames: Selector }> {}\n\nexport interface TableThProps extends TableElementProps<'th'>, ElementProps<'th'> {}\nexport interface TableTdProps extends TableElementProps<'td'>, ElementProps<'td'> {}\nexport interface TableTrProps extends TableElementProps<'tr'>, ElementProps<'tr'> {}\nexport interface TableTheadProps extends TableElementProps<'thead'>, ElementProps<'thead'> {}\nexport interface TableTbodyProps extends TableElementProps<'tbody'>, ElementProps<'tbody'> {}\nexport interface TableTfootProps extends TableElementProps<'tfoot'>, ElementProps<'tfoot'> {}\nexport interface TableCaptionProps extends TableElementProps<'caption'>, ElementProps<'caption'> {}\n\nexport type TableThFactory = Factory<{\n props: TableThProps;\n ref: HTMLTableCellElement;\n stylesNames: 'th';\n compound: true;\n}>;\n\nexport type TableTdFactory = Factory<{\n props: TableTdProps;\n ref: HTMLTableCellElement;\n stylesNames: 'td';\n compound: true;\n}>;\n\nexport type TableTrFactory = Factory<{\n props: TableTrProps;\n ref: HTMLTableRowElement;\n stylesNames: 'tr';\n compound: true;\n}>;\n\nexport type TableTheadFactory = Factory<{\n props: TableTheadProps;\n ref: HTMLTableSectionElement;\n stylesNames: 'thead';\n compound: true;\n}>;\n\nexport type TableTbodyFactory = Factory<{\n props: TableTbodyProps;\n ref: HTMLTableSectionElement;\n stylesNames: 'tbody';\n compound: true;\n}>;\n\nexport type TableTfootFactory = Factory<{\n props: TableTfootProps;\n ref: HTMLTableSectionElement;\n stylesNames: 'tfoot';\n compound: true;\n}>;\n\nexport type TableCaptionFactory = Factory<{\n props: TableCaptionProps;\n ref: HTMLTableCaptionElement;\n stylesNames: 'caption';\n compound: true;\n}>;\n\ninterface TableElementOptions {\n columnBorder?: true;\n rowBorder?: true;\n striped?: true;\n highlightOnHover?: true;\n captionSide?: true;\n stickyHeader?: true;\n}\n\nfunction getDataAttributes(ctx: TableContextValue, options?: TableElementOptions) {\n if (!options) {\n return undefined;\n }\n\n const data: Record<string, boolean | string> = {};\n\n if (options.columnBorder && ctx.withColumnBorders) {\n data['data-with-column-border'] = true;\n }\n\n if (options.rowBorder && ctx.withRowBorders) {\n data['data-with-row-border'] = true;\n }\n\n if (options.striped && ctx.striped) {\n data['data-striped'] = ctx.striped;\n }\n\n if (options.highlightOnHover && ctx.highlightOnHover) {\n data['data-hover'] = true;\n }\n\n if (options.captionSide && ctx.captionSide) {\n data['data-side'] = ctx.captionSide;\n }\n\n if (options.stickyHeader && ctx.stickyHeader) {\n data['data-sticky'] = true;\n }\n\n return data;\n}\n\nexport function tableElement<Factory extends FactoryPayload>(\n element: 'th' | 'td' | 'tr' | 'thead' | 'tbody' | 'tfoot' | 'caption',\n options?: TableElementOptions\n) {\n const name = `Table${element.charAt(0).toUpperCase()}${element.slice(1)}`;\n const Component = factory<Factory>((_props) => {\n const props = useProps(name, {}, _props);\n const { classNames, className, style, styles, ...others } = props;\n\n const ctx = useTableContext();\n\n return (\n <Box\n component={element}\n {...getDataAttributes(ctx, options)}\n {...ctx.getStyles(element, { className, classNames, style, styles, props })}\n {...others}\n />\n );\n });\n\n Component.displayName = `@mantine/core/${name}`;\n Component.classes = classes;\n return Component;\n}\n\nexport const TableTh = tableElement<TableThFactory>('th', { columnBorder: true });\nexport const TableTd = tableElement<TableTdFactory>('td', { columnBorder: true });\nexport const TableTr = tableElement<TableTrFactory>('tr', {\n rowBorder: true,\n striped: true,\n highlightOnHover: true,\n});\nexport const TableThead = tableElement<TableTheadFactory>('thead', { stickyHeader: true });\nexport const TableTbody = tableElement<TableTbodyFactory>('tbody');\nexport const TableTfoot = tableElement<TableTfootFactory>('tfoot');\nexport const TableCaption = tableElement<TableCaptionFactory>('caption', { captionSide: true });\n"],"mappings":";;;;;;;;AAqFA,SAAS,kBAAkB,KAAwB,SAA+B;CAChF,IAAI,CAAC,SACH;CAGF,MAAM,OAAyC,CAAC;CAEhD,IAAI,QAAQ,gBAAgB,IAAI,mBAC9B,KAAK,6BAA6B;CAGpC,IAAI,QAAQ,aAAa,IAAI,gBAC3B,KAAK,0BAA0B;CAGjC,IAAI,QAAQ,WAAW,IAAI,SACzB,KAAK,kBAAkB,IAAI;CAG7B,IAAI,QAAQ,oBAAoB,IAAI,kBAClC,KAAK,gBAAgB;CAGvB,IAAI,QAAQ,eAAe,IAAI,aAC7B,KAAK,eAAe,IAAI;CAG1B,IAAI,QAAQ,gBAAgB,IAAI,cAC9B,KAAK,iBAAiB;CAGxB,OAAO;AACT;AAEA,SAAgB,aACd,SACA,SACA;CACA,MAAM,OAAO,QAAQ,QAAQ,OAAO,CAAC,CAAC,CAAC,YAAY,IAAI,QAAQ,MAAM,CAAC;CACtE,MAAM,YAAY,SAAkB,WAAW;EAC7C,MAAM,QAAQ,SAAS,MAAM,CAAC,GAAG,MAAM;EACvC,MAAM,EAAE,YAAY,WAAW,OAAO,QAAQ,GAAG,WAAW;EAE5D,MAAM,MAAM,gBAAgB;EAE5B,OACE,oBAAC,KAAD;GACE,WAAW;GACX,GAAI,kBAAkB,KAAK,OAAO;GAClC,GAAI,IAAI,UAAU,SAAS;IAAE;IAAW;IAAY;IAAO;IAAQ;GAAM,CAAC;GAC1E,GAAI;EACL,CAAA;CAEL,CAAC;CAED,UAAU,cAAc,iBAAiB;CACzC,UAAU,UAAUA;CACpB,OAAO;AACT;AAEA,MAAa,UAAU,aAA6B,MAAM,EAAE,cAAc,KAAK,CAAC;AAChF,MAAa,UAAU,aAA6B,MAAM,EAAE,cAAc,KAAK,CAAC;AAChF,MAAa,UAAU,aAA6B,MAAM;CACxD,WAAW;CACX,SAAS;CACT,kBAAkB;AACpB,CAAC;AACD,MAAa,aAAa,aAAgC,SAAS,EAAE,cAAc,KAAK,CAAC;AACzF,MAAa,aAAa,aAAgC,OAAO;AACjE,MAAa,aAAa,aAAgC,OAAO;AACjE,MAAa,eAAe,aAAkC,WAAW,EAAE,aAAa,KAAK,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableOfContents.mjs","names":["classes"],"sources":["../../../src/components/TableOfContents/TableOfContents.tsx"],"sourcesContent":["import {\n assignRef,\n useId,\n useScrollSpy,\n UseScrollSpyHeadingData,\n UseScrollSpyOptions,\n} from '@mantine/hooks';\nimport {\n Box,\n BoxProps,\n createVarsResolver,\n ElementProps,\n factory,\n Factory,\n getFontSize,\n getRadius,\n MantineColor,\n MantineRadius,\n MantineSize,\n noop,\n rem,\n StylesApiProps,\n useProps,\n useStyles,\n} from '../../core';\nimport { UnstyledButton, UnstyledButtonProps } from '../UnstyledButton';\nimport classes from './TableOfContents.module.css';\n\nexport type TableOfContentsStylesNames = 'root' | 'control';\nexport type TableOfContentsVariant = 'filled' | 'light' | 'none';\nexport type TableOfContentsCssVariables = {\n root: '--toc-bg' | '--toc-color' | '--toc-size' | '--toc-depth-offset' | '--toc-radius';\n};\n\nexport interface InitialTableOfContentsData {\n /** Heading depth, 1-6 */\n depth: number;\n\n /** Heading text content value */\n value: string;\n\n /** Heading id, must be unique, used as `key` */\n id?: string;\n}\n\nexport interface TableOfContentsGetControlPropsPayload {\n /** True if the associated heading is currently the best match in the viewport */\n active: boolean;\n\n /** Data passed down from `use-scroll-spy` hook: depth, id, value */\n data: UseScrollSpyHeadingData;\n}\n\nexport interface TableOfContentsProps\n extends BoxProps, StylesApiProps<TableOfContentsFactory>, ElementProps<'div'> {\n /** Key of `theme.colors` or any valid CSS color value @default theme.primaryColor */\n color?: MantineColor;\n\n /** Controls font-size and padding of all elements @default 'md' */\n size?: MantineSize | (string & {}) | number;\n\n /** If set, adjusts text color based on background color for `filled` variant */\n autoContrast?: boolean;\n\n /** Options passed down to `use-scroll-spy` hook */\n scrollSpyOptions?: UseScrollSpyOptions;\n\n /** Data used to render content until actual values are retrieved from the DOM */\n initialData?: InitialTableOfContentsData[];\n\n /** A function to pass props down to controls, accepts values from `use-scroll-spy` hook as an argument and active state. */\n getControlProps?: (\n payload: TableOfContentsGetControlPropsPayload\n ) => UnstyledButtonProps & ElementProps<'button'> & Record<`data-${string}`, any>;\n\n /** Minimum `depth` value that requires offset, `1` by default */\n minDepthToOffset?: number;\n\n /** Controls padding on the left side of control, multiplied by (`depth` - `minDepthToOffset`), `20px` by default */\n depthOffset?: number | string;\n\n /** Key of `theme.radius` or any valid CSS value to set `border-radius` @default theme.defaultRadius */\n radius?: MantineRadius;\n\n /** A function to reinitialize headings from `use-scroll-spy` hook */\n reinitializeRef?: React.RefObject<() => void>;\n}\n\nexport type TableOfContentsFactory = Factory<{\n props: TableOfContentsProps;\n ref: HTMLDivElement;\n stylesNames: TableOfContentsStylesNames;\n vars: TableOfContentsCssVariables;\n variant: TableOfContentsVariant;\n}>;\n\nconst defaultProps = {\n getControlProps: ({ data }) => ({\n children: data.value,\n }),\n} satisfies Partial<TableOfContentsProps>;\n\nconst varsResolver = createVarsResolver<TableOfContentsFactory>(\n (theme, { color, size, variant, autoContrast, depthOffset, radius }) => {\n const colors = theme.variantColorResolver({\n color: color || theme.primaryColor,\n theme,\n variant: variant || 'filled',\n autoContrast,\n });\n\n return {\n root: {\n '--toc-bg': variant !== 'none' ? colors.background : undefined,\n '--toc-color': variant !== 'none' ? colors.color : undefined,\n '--toc-size': getFontSize(size),\n '--toc-depth-offset': rem(depthOffset),\n '--toc-radius': getRadius(radius),\n },\n };\n }\n);\n\nexport const TableOfContents = factory<TableOfContentsFactory>((_props) => {\n const props = useProps('TableOfContents', defaultProps, _props);\n const {\n classNames,\n className,\n style,\n styles,\n unstyled,\n vars,\n color,\n autoContrast,\n scrollSpyOptions,\n initialData,\n getControlProps,\n minDepthToOffset,\n depthOffset,\n variant,\n radius,\n reinitializeRef,\n attributes,\n ...others\n } = props;\n\n const getStyles = useStyles<TableOfContentsFactory>({\n name: 'TableOfContents',\n classes,\n props,\n className,\n style,\n classNames,\n styles,\n unstyled,\n attributes,\n vars,\n varsResolver,\n });\n\n const idBase = useId();\n const spy = useScrollSpy(scrollSpyOptions);\n\n assignRef(reinitializeRef, spy.reinitialize);\n\n const headingsData = (\n spy.initialized ? spy.data : initialData || []\n ) as UseScrollSpyHeadingData[];\n\n const controls = headingsData.map((data, index) => {\n const controlProps = getControlProps?.({\n active: index === spy.active,\n data: { ...data, getNode: data.getNode || noop },\n });\n\n return (\n <UnstyledButton\n key={data.id || `${idBase}-${index}`}\n __vars={{ '--depth-offset': `${data.depth - (minDepthToOffset || 1)}` }}\n data-active={index === spy.active || undefined}\n variant={variant}\n {...controlProps}\n {...getStyles('control', {\n className: controlProps?.className,\n style: controlProps?.style,\n })}\n />\n );\n });\n\n return (\n <Box variant={variant} {...getStyles('root')} {...others}>\n {controls}\n </Box>\n );\n});\n\nTableOfContents.displayName = '@mantine/core/TableOfContents';\nTableOfContents.classes = classes;\nTableOfContents.varsResolver = varsResolver;\n\nexport namespace TableOfContents {\n export type Props = TableOfContentsProps;\n export type StylesNames = TableOfContentsStylesNames;\n export type CssVariables = TableOfContentsCssVariables;\n export type Factory = TableOfContentsFactory;\n export type Variant = TableOfContentsVariant;\n}\n"],"mappings":";;;;;;;;;;;;;;AAgGA,MAAM,eAAe,EACnB,kBAAkB,EAAE,YAAY,EAC9B,UAAU,KAAK,MACjB,GACF;AAEA,MAAM,eAAe,oBAClB,OAAO,EAAE,OAAO,MAAM,SAAS,cAAc,aAAa,aAAa;CACtE,MAAM,SAAS,MAAM,qBAAqB;EACxC,OAAO,SAAS,MAAM;EACtB;EACA,SAAS,WAAW;EACpB;CACF,CAAC;CAED,OAAO,EACL,MAAM;EACJ,YAAY,YAAY,SAAS,OAAO,aAAa,KAAA;EACrD,eAAe,YAAY,SAAS,OAAO,QAAQ,KAAA;EACnD,cAAc,YAAY,IAAI;EAC9B,sBAAsB,IAAI,WAAW;EACrC,gBAAgB,UAAU,MAAM;CAClC,EACF;AACF,CACF;AAEA,MAAa,kBAAkB,SAAiC,WAAW;CACzE,MAAM,QAAQ,SAAS,mBAAmB,cAAc,MAAM;CAC9D,MAAM,EACJ,YACA,WACA,OACA,QACA,UACA,MACA,OACA,cACA,kBACA,aACA,iBACA,kBACA,aACA,SACA,QACA,iBACA,YACA,GAAG,WACD;CAEJ,MAAM,YAAY,UAAkC;EAClD,MAAM;EACN,SAAA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,CAAC;CAED,MAAM,SAAS,MAAM;CACrB,MAAM,MAAM,aAAa,gBAAgB;CAEzC,UAAU,iBAAiB,IAAI,YAAY;CAM3C,MAAM,YAHJ,IAAI,cAAc,IAAI,OAAO,eAAe,CAAC,
|
|
1
|
+
{"version":3,"file":"TableOfContents.mjs","names":["classes"],"sources":["../../../src/components/TableOfContents/TableOfContents.tsx"],"sourcesContent":["import {\n assignRef,\n useId,\n useScrollSpy,\n UseScrollSpyHeadingData,\n UseScrollSpyOptions,\n} from '@mantine/hooks';\nimport {\n Box,\n BoxProps,\n createVarsResolver,\n ElementProps,\n factory,\n Factory,\n getFontSize,\n getRadius,\n MantineColor,\n MantineRadius,\n MantineSize,\n noop,\n rem,\n StylesApiProps,\n useProps,\n useStyles,\n} from '../../core';\nimport { UnstyledButton, UnstyledButtonProps } from '../UnstyledButton';\nimport classes from './TableOfContents.module.css';\n\nexport type TableOfContentsStylesNames = 'root' | 'control';\nexport type TableOfContentsVariant = 'filled' | 'light' | 'none';\nexport type TableOfContentsCssVariables = {\n root: '--toc-bg' | '--toc-color' | '--toc-size' | '--toc-depth-offset' | '--toc-radius';\n};\n\nexport interface InitialTableOfContentsData {\n /** Heading depth, 1-6 */\n depth: number;\n\n /** Heading text content value */\n value: string;\n\n /** Heading id, must be unique, used as `key` */\n id?: string;\n}\n\nexport interface TableOfContentsGetControlPropsPayload {\n /** True if the associated heading is currently the best match in the viewport */\n active: boolean;\n\n /** Data passed down from `use-scroll-spy` hook: depth, id, value */\n data: UseScrollSpyHeadingData;\n}\n\nexport interface TableOfContentsProps\n extends BoxProps, StylesApiProps<TableOfContentsFactory>, ElementProps<'div'> {\n /** Key of `theme.colors` or any valid CSS color value @default theme.primaryColor */\n color?: MantineColor;\n\n /** Controls font-size and padding of all elements @default 'md' */\n size?: MantineSize | (string & {}) | number;\n\n /** If set, adjusts text color based on background color for `filled` variant */\n autoContrast?: boolean;\n\n /** Options passed down to `use-scroll-spy` hook */\n scrollSpyOptions?: UseScrollSpyOptions;\n\n /** Data used to render content until actual values are retrieved from the DOM */\n initialData?: InitialTableOfContentsData[];\n\n /** A function to pass props down to controls, accepts values from `use-scroll-spy` hook as an argument and active state. */\n getControlProps?: (\n payload: TableOfContentsGetControlPropsPayload\n ) => UnstyledButtonProps & ElementProps<'button'> & Record<`data-${string}`, any>;\n\n /** Minimum `depth` value that requires offset, `1` by default */\n minDepthToOffset?: number;\n\n /** Controls padding on the left side of control, multiplied by (`depth` - `minDepthToOffset`), `20px` by default */\n depthOffset?: number | string;\n\n /** Key of `theme.radius` or any valid CSS value to set `border-radius` @default theme.defaultRadius */\n radius?: MantineRadius;\n\n /** A function to reinitialize headings from `use-scroll-spy` hook */\n reinitializeRef?: React.RefObject<() => void>;\n}\n\nexport type TableOfContentsFactory = Factory<{\n props: TableOfContentsProps;\n ref: HTMLDivElement;\n stylesNames: TableOfContentsStylesNames;\n vars: TableOfContentsCssVariables;\n variant: TableOfContentsVariant;\n}>;\n\nconst defaultProps = {\n getControlProps: ({ data }) => ({\n children: data.value,\n }),\n} satisfies Partial<TableOfContentsProps>;\n\nconst varsResolver = createVarsResolver<TableOfContentsFactory>(\n (theme, { color, size, variant, autoContrast, depthOffset, radius }) => {\n const colors = theme.variantColorResolver({\n color: color || theme.primaryColor,\n theme,\n variant: variant || 'filled',\n autoContrast,\n });\n\n return {\n root: {\n '--toc-bg': variant !== 'none' ? colors.background : undefined,\n '--toc-color': variant !== 'none' ? colors.color : undefined,\n '--toc-size': getFontSize(size),\n '--toc-depth-offset': rem(depthOffset),\n '--toc-radius': getRadius(radius),\n },\n };\n }\n);\n\nexport const TableOfContents = factory<TableOfContentsFactory>((_props) => {\n const props = useProps('TableOfContents', defaultProps, _props);\n const {\n classNames,\n className,\n style,\n styles,\n unstyled,\n vars,\n color,\n autoContrast,\n scrollSpyOptions,\n initialData,\n getControlProps,\n minDepthToOffset,\n depthOffset,\n variant,\n radius,\n reinitializeRef,\n attributes,\n ...others\n } = props;\n\n const getStyles = useStyles<TableOfContentsFactory>({\n name: 'TableOfContents',\n classes,\n props,\n className,\n style,\n classNames,\n styles,\n unstyled,\n attributes,\n vars,\n varsResolver,\n });\n\n const idBase = useId();\n const spy = useScrollSpy(scrollSpyOptions);\n\n assignRef(reinitializeRef, spy.reinitialize);\n\n const headingsData = (\n spy.initialized ? spy.data : initialData || []\n ) as UseScrollSpyHeadingData[];\n\n const controls = headingsData.map((data, index) => {\n const controlProps = getControlProps?.({\n active: index === spy.active,\n data: { ...data, getNode: data.getNode || noop },\n });\n\n return (\n <UnstyledButton\n key={data.id || `${idBase}-${index}`}\n __vars={{ '--depth-offset': `${data.depth - (minDepthToOffset || 1)}` }}\n data-active={index === spy.active || undefined}\n variant={variant}\n {...controlProps}\n {...getStyles('control', {\n className: controlProps?.className,\n style: controlProps?.style,\n })}\n />\n );\n });\n\n return (\n <Box variant={variant} {...getStyles('root')} {...others}>\n {controls}\n </Box>\n );\n});\n\nTableOfContents.displayName = '@mantine/core/TableOfContents';\nTableOfContents.classes = classes;\nTableOfContents.varsResolver = varsResolver;\n\nexport namespace TableOfContents {\n export type Props = TableOfContentsProps;\n export type StylesNames = TableOfContentsStylesNames;\n export type CssVariables = TableOfContentsCssVariables;\n export type Factory = TableOfContentsFactory;\n export type Variant = TableOfContentsVariant;\n}\n"],"mappings":";;;;;;;;;;;;;;AAgGA,MAAM,eAAe,EACnB,kBAAkB,EAAE,YAAY,EAC9B,UAAU,KAAK,MACjB,GACF;AAEA,MAAM,eAAe,oBAClB,OAAO,EAAE,OAAO,MAAM,SAAS,cAAc,aAAa,aAAa;CACtE,MAAM,SAAS,MAAM,qBAAqB;EACxC,OAAO,SAAS,MAAM;EACtB;EACA,SAAS,WAAW;EACpB;CACF,CAAC;CAED,OAAO,EACL,MAAM;EACJ,YAAY,YAAY,SAAS,OAAO,aAAa,KAAA;EACrD,eAAe,YAAY,SAAS,OAAO,QAAQ,KAAA;EACnD,cAAc,YAAY,IAAI;EAC9B,sBAAsB,IAAI,WAAW;EACrC,gBAAgB,UAAU,MAAM;CAClC,EACF;AACF,CACF;AAEA,MAAa,kBAAkB,SAAiC,WAAW;CACzE,MAAM,QAAQ,SAAS,mBAAmB,cAAc,MAAM;CAC9D,MAAM,EACJ,YACA,WACA,OACA,QACA,UACA,MACA,OACA,cACA,kBACA,aACA,iBACA,kBACA,aACA,SACA,QACA,iBACA,YACA,GAAG,WACD;CAEJ,MAAM,YAAY,UAAkC;EAClD,MAAM;EACN,SAAA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,CAAC;CAED,MAAM,SAAS,MAAM;CACrB,MAAM,MAAM,aAAa,gBAAgB;CAEzC,UAAU,iBAAiB,IAAI,YAAY;CAM3C,MAAM,YAHJ,IAAI,cAAc,IAAI,OAAO,eAAe,CAAC,EAAA,CAGjB,KAAK,MAAM,UAAU;EACjD,MAAM,eAAe,kBAAkB;GACrC,QAAQ,UAAU,IAAI;GACtB,MAAM;IAAE,GAAG;IAAM,SAAS,KAAK,WAAW;GAAK;EACjD,CAAC;EAED,OACE,oBAAC,gBAAD;GAEE,QAAQ,EAAE,kBAAkB,GAAG,KAAK,SAAS,oBAAoB,KAAK;GACtE,eAAa,UAAU,IAAI,UAAU,KAAA;GAC5B;GACT,GAAI;GACJ,GAAI,UAAU,WAAW;IACvB,WAAW,cAAc;IACzB,OAAO,cAAc;GACvB,CAAC;EACF,GATM,KAAK,MAAM,GAAG,OAAO,GAAG,OAS9B;CAEL,CAAC;CAED,OACE,oBAAC,KAAD;EAAc;EAAS,GAAI,UAAU,MAAM;EAAG,GAAI;YAC/C;CACE,CAAA;AAET,CAAC;AAED,gBAAgB,cAAc;AAC9B,gBAAgB,UAAUA;AAC1B,gBAAgB,eAAe"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tabs.context.mjs","names":[],"sources":["../../../src/components/Tabs/Tabs.context.ts"],"sourcesContent":["import { createSafeContext, GetStylesApi } from '../../core';\nimport type { TabsFactory } from './Tabs';\n\nexport interface TabsContextValue {\n id: string;\n value: string | null;\n orientation: 'horizontal' | 'vertical' | undefined;\n loop: boolean | undefined;\n activateTabWithKeyboard: boolean | undefined;\n allowTabDeactivation: boolean | undefined;\n onChange: (value: string | null) => void;\n getTabId: (value: string) => string;\n getPanelId: (value: string) => string;\n variant: string | undefined;\n color: string | undefined;\n radius: string | number | undefined;\n inverted: boolean | undefined;\n keepMounted: boolean | undefined;\n keepMountedMode: 'activity' | 'display-none' | undefined;\n placement: 'right' | 'left' | undefined;\n unstyled: boolean | undefined;\n getStyles: GetStylesApi<TabsFactory>;\n}\n\nexport const [TabsProvider, useTabsContext] = createSafeContext<TabsContextValue>(\n 'Tabs component was not found in the tree'\n);\n"],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"Tabs.context.mjs","names":[],"sources":["../../../src/components/Tabs/Tabs.context.ts"],"sourcesContent":["import { createSafeContext, GetStylesApi } from '../../core';\nimport type { TabsFactory } from './Tabs';\n\nexport interface TabsContextValue {\n id: string;\n value: string | null;\n orientation: 'horizontal' | 'vertical' | undefined;\n loop: boolean | undefined;\n activateTabWithKeyboard: boolean | undefined;\n allowTabDeactivation: boolean | undefined;\n onChange: (value: string | null) => void;\n getTabId: (value: string) => string;\n getPanelId: (value: string) => string;\n variant: string | undefined;\n color: string | undefined;\n radius: string | number | undefined;\n inverted: boolean | undefined;\n keepMounted: boolean | undefined;\n keepMountedMode: 'activity' | 'display-none' | undefined;\n placement: 'right' | 'left' | undefined;\n unstyled: boolean | undefined;\n getStyles: GetStylesApi<TabsFactory>;\n mountedPanels: React.RefObject<Set<string>>;\n setMountedPanel: (value: string, mounted: boolean) => void;\n}\n\nexport const [TabsProvider, useTabsContext] = createSafeContext<TabsContextValue>(\n 'Tabs component was not found in the tree'\n);\n"],"mappings":";;;AA0BA,MAAa,CAAC,cAAc,kBAAkB,kBAC5C,0CACF"}
|
|
@@ -14,7 +14,8 @@ import Tabs_module_default from "./Tabs.module.mjs";
|
|
|
14
14
|
import { TabsList } from "./TabsList/TabsList.mjs";
|
|
15
15
|
import { TabsPanel } from "./TabsPanel/TabsPanel.mjs";
|
|
16
16
|
import { TabsTab } from "./TabsTab/TabsTab.mjs";
|
|
17
|
-
import {
|
|
17
|
+
import { useCallback, useRef } from "react";
|
|
18
|
+
import { useForceUpdate, useId as useId$1, useUncontrolled } from "@mantine/hooks";
|
|
18
19
|
import { jsx } from "react/jsx-runtime";
|
|
19
20
|
//#region packages/@mantine/core/src/components/Tabs/Tabs.tsx
|
|
20
21
|
const VALUE_ERROR = "Tabs.Tab or Tabs.Panel component was rendered with invalid value or without value";
|
|
@@ -39,7 +40,19 @@ const varsResolver = createVarsResolver((theme, { radius, color, autoContrast })
|
|
|
39
40
|
const Tabs = factory((_props) => {
|
|
40
41
|
const props = useProps("Tabs", defaultProps, _props);
|
|
41
42
|
const { defaultValue, value, onChange, orientation, children, loop, id, activateTabWithKeyboard, allowTabDeactivation, variant, color, radius, inverted, placement, keepMounted, keepMountedMode, classNames, styles, unstyled, className, style, vars, autoContrast, mod, attributes, ...others } = props;
|
|
42
|
-
const uid = useId(id);
|
|
43
|
+
const uid = useId$1(id);
|
|
44
|
+
const mountedPanels = useRef(/* @__PURE__ */ new Set());
|
|
45
|
+
const forceUpdate = useForceUpdate();
|
|
46
|
+
const setMountedPanel = useCallback((panelValue, mounted) => {
|
|
47
|
+
const panels = mountedPanels.current;
|
|
48
|
+
if (mounted && !panels.has(panelValue)) {
|
|
49
|
+
panels.add(panelValue);
|
|
50
|
+
forceUpdate();
|
|
51
|
+
} else if (!mounted && panels.has(panelValue)) {
|
|
52
|
+
panels.delete(panelValue);
|
|
53
|
+
forceUpdate();
|
|
54
|
+
}
|
|
55
|
+
}, []);
|
|
43
56
|
const [currentTab, setCurrentTab] = useUncontrolled({
|
|
44
57
|
value,
|
|
45
58
|
defaultValue,
|
|
@@ -78,7 +91,9 @@ const Tabs = factory((_props) => {
|
|
|
78
91
|
keepMounted,
|
|
79
92
|
keepMountedMode,
|
|
80
93
|
unstyled,
|
|
81
|
-
getStyles
|
|
94
|
+
getStyles,
|
|
95
|
+
mountedPanels,
|
|
96
|
+
setMountedPanel
|
|
82
97
|
},
|
|
83
98
|
children: /* @__PURE__ */ jsx(Box, {
|
|
84
99
|
id: uid,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tabs.mjs","names":["classes"],"sources":["../../../src/components/Tabs/Tabs.tsx"],"sourcesContent":["import { useId, useUncontrolled } from '@mantine/hooks';\nimport {\n Box,\n BoxProps,\n createVarsResolver,\n ElementProps,\n factory,\n Factory,\n getAutoContrastValue,\n getContrastColor,\n getRadius,\n getSafeId,\n getThemeColor,\n MantineColor,\n MantineRadius,\n StylesApiProps,\n useProps,\n useStyles,\n} from '../../core';\nimport { TabsProvider, type TabsContextValue } from './Tabs.context';\nimport { TabsList, TabsListStylesNames, type TabsListProps } from './TabsList/TabsList';\nimport { TabsPanel, TabsPanelStylesNames, type TabsPanelProps } from './TabsPanel/TabsPanel';\nimport { TabsTab, TabsTabStylesNames, type TabsTabProps } from './TabsTab/TabsTab';\nimport classes from './Tabs.module.css';\nexport type TabsStylesNames =\n | 'root'\n | TabsListStylesNames\n | TabsPanelStylesNames\n | TabsTabStylesNames;\n\nexport type TabsVariant = 'default' | 'outline' | 'pills';\nexport type TabsCssVariables = {\n root: '--tabs-color' | '--tabs-radius';\n};\n\nexport interface TabsProps\n extends\n BoxProps,\n StylesApiProps<TabsFactory>,\n ElementProps<'div', 'defaultValue' | 'value' | 'onChange'> {\n /** Uncontrolled component default value */\n defaultValue?: string | null;\n\n /** Controlled component value */\n value?: string | null;\n\n /** Called when value changes */\n onChange?: (value: string | null) => void;\n\n /** Tabs orientation @default 'horizontal' */\n orientation?: 'vertical' | 'horizontal';\n\n /** `Tabs.List` placement relative to `Tabs.Panel`, applicable only when `orientation=\"vertical\"` @default 'left' */\n placement?: 'left' | 'right';\n\n /** Base id, used to generate ids to connect labels with controls, generated randomly by default */\n id?: string;\n\n /** If set, arrow key presses loop though items (first to last and last to first) @default true */\n loop?: boolean;\n\n /** If set, tab is activated with arrow key press @default true */\n activateTabWithKeyboard?: boolean;\n\n /** If set, tab can be deactivated @default false */\n allowTabDeactivation?: boolean;\n\n /** Tabs content */\n children?: React.ReactNode;\n\n /** Changes colors of `Tabs.Tab` components when variant is `pills` or `default`, does nothing for other variants */\n color?: MantineColor;\n\n /** Key of `theme.radius` or any valid CSS value to set `border-radius` @default theme.defaultRadius */\n radius?: MantineRadius;\n\n /** Determines whether tabs should have inverted styles @default false */\n inverted?: boolean;\n\n /** If set to `false`, `Tabs.Panel` content will be unmounted when the associated tab is not active @default true */\n keepMounted?: boolean;\n\n /** Controls how inactive tabs content is hidden when `keepMounted` is `true`, `'activity'` – hidden with `Activity` component, `'display-none'` – hidden with `display: none` styles @default 'activity' */\n keepMountedMode?: 'activity' | 'display-none';\n\n /** If set, adjusts text color based on background color for `pills` variant */\n autoContrast?: boolean;\n}\n\nexport type TabsFactory = Factory<{\n props: TabsProps;\n ref: HTMLDivElement;\n variant: TabsVariant;\n stylesNames: TabsStylesNames;\n vars: TabsCssVariables;\n staticComponents: {\n Tab: typeof TabsTab;\n Panel: typeof TabsPanel;\n List: typeof TabsList;\n };\n}>;\n\nconst VALUE_ERROR =\n 'Tabs.Tab or Tabs.Panel component was rendered with invalid value or without value';\n\nconst defaultProps = {\n keepMounted: true,\n keepMountedMode: 'activity',\n orientation: 'horizontal',\n loop: true,\n activateTabWithKeyboard: true,\n variant: 'default',\n placement: 'left',\n} satisfies Partial<TabsProps>;\n\nconst varsResolver = createVarsResolver<TabsFactory>((theme, { radius, color, autoContrast }) => ({\n root: {\n '--tabs-radius': getRadius(radius),\n '--tabs-color': getThemeColor(color, theme),\n '--tabs-text-color': getAutoContrastValue(autoContrast, theme)\n ? getContrastColor({ color, theme, autoContrast })\n : undefined,\n },\n}));\n\nexport const Tabs = factory<TabsFactory>((_props) => {\n const props = useProps('Tabs', defaultProps, _props);\n const {\n defaultValue,\n value,\n onChange,\n orientation,\n children,\n loop,\n id,\n activateTabWithKeyboard,\n allowTabDeactivation,\n variant,\n color,\n radius,\n inverted,\n placement,\n keepMounted,\n keepMountedMode,\n classNames,\n styles,\n unstyled,\n className,\n style,\n vars,\n autoContrast,\n mod,\n attributes,\n ...others\n } = props;\n\n const uid = useId(id);\n\n const [currentTab, setCurrentTab] = useUncontrolled({\n value,\n defaultValue,\n finalValue: null,\n onChange,\n });\n\n const getStyles = useStyles<TabsFactory>({\n name: 'Tabs',\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 <TabsProvider\n value={{\n placement,\n value: currentTab,\n orientation,\n id: uid,\n loop,\n activateTabWithKeyboard,\n getTabId: getSafeId(`${uid}-tab`, VALUE_ERROR),\n getPanelId: getSafeId(`${uid}-panel`, VALUE_ERROR),\n onChange: setCurrentTab,\n allowTabDeactivation,\n variant,\n color,\n radius,\n inverted,\n keepMounted,\n keepMountedMode,\n unstyled,\n getStyles,\n }}\n >\n <Box\n id={uid}\n variant={variant}\n mod={[\n {\n orientation,\n inverted: orientation === 'horizontal' && inverted,\n placement: orientation === 'vertical' && placement,\n },\n mod,\n ]}\n {...getStyles('root')}\n {...others}\n >\n {children}\n </Box>\n </TabsProvider>\n );\n});\n\nTabs.classes = classes;\nTabs.varsResolver = varsResolver;\nTabs.displayName = '@mantine/core/Tabs';\nTabs.Tab = TabsTab;\nTabs.Panel = TabsPanel;\nTabs.List = TabsList;\n\nexport namespace Tabs {\n export type Props = TabsProps;\n export type StylesNames = TabsStylesNames;\n export type CssVariables = TabsCssVariables;\n export type Factory = TabsFactory;\n export type Variant = TabsVariant;\n export type ContextValue = TabsContextValue;\n\n export namespace Tab {\n export type Props = TabsTabProps;\n export type StylesNames = TabsTabStylesNames;\n }\n\n export namespace Panel {\n export type Props = TabsPanelProps;\n export type StylesNames = TabsPanelStylesNames;\n }\n\n export namespace List {\n export type Props = TabsListProps;\n export type StylesNames = TabsListStylesNames;\n }\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"Tabs.mjs","names":["useId","classes"],"sources":["../../../src/components/Tabs/Tabs.tsx"],"sourcesContent":["import { useCallback, useRef } from 'react';\nimport { useForceUpdate, useId, useUncontrolled } from '@mantine/hooks';\nimport {\n Box,\n BoxProps,\n createVarsResolver,\n ElementProps,\n factory,\n Factory,\n getAutoContrastValue,\n getContrastColor,\n getRadius,\n getSafeId,\n getThemeColor,\n MantineColor,\n MantineRadius,\n StylesApiProps,\n useProps,\n useStyles,\n} from '../../core';\nimport { TabsProvider, type TabsContextValue } from './Tabs.context';\nimport { TabsList, TabsListStylesNames, type TabsListProps } from './TabsList/TabsList';\nimport { TabsPanel, TabsPanelStylesNames, type TabsPanelProps } from './TabsPanel/TabsPanel';\nimport { TabsTab, TabsTabStylesNames, type TabsTabProps } from './TabsTab/TabsTab';\nimport classes from './Tabs.module.css';\nexport type TabsStylesNames =\n | 'root'\n | TabsListStylesNames\n | TabsPanelStylesNames\n | TabsTabStylesNames;\n\nexport type TabsVariant = 'default' | 'outline' | 'pills';\nexport type TabsCssVariables = {\n root: '--tabs-color' | '--tabs-radius';\n};\n\nexport interface TabsProps\n extends\n BoxProps,\n StylesApiProps<TabsFactory>,\n ElementProps<'div', 'defaultValue' | 'value' | 'onChange'> {\n /** Uncontrolled component default value */\n defaultValue?: string | null;\n\n /** Controlled component value */\n value?: string | null;\n\n /** Called when value changes */\n onChange?: (value: string | null) => void;\n\n /** Tabs orientation @default 'horizontal' */\n orientation?: 'vertical' | 'horizontal';\n\n /** `Tabs.List` placement relative to `Tabs.Panel`, applicable only when `orientation=\"vertical\"` @default 'left' */\n placement?: 'left' | 'right';\n\n /** Base id, used to generate ids to connect labels with controls, generated randomly by default */\n id?: string;\n\n /** If set, arrow key presses loop though items (first to last and last to first) @default true */\n loop?: boolean;\n\n /** If set, tab is activated with arrow key press @default true */\n activateTabWithKeyboard?: boolean;\n\n /** If set, tab can be deactivated @default false */\n allowTabDeactivation?: boolean;\n\n /** Tabs content */\n children?: React.ReactNode;\n\n /** Changes colors of `Tabs.Tab` components when variant is `pills` or `default`, does nothing for other variants */\n color?: MantineColor;\n\n /** Key of `theme.radius` or any valid CSS value to set `border-radius` @default theme.defaultRadius */\n radius?: MantineRadius;\n\n /** Determines whether tabs should have inverted styles @default false */\n inverted?: boolean;\n\n /** If set to `false`, `Tabs.Panel` content will be unmounted when the associated tab is not active @default true */\n keepMounted?: boolean;\n\n /** Controls how inactive tabs content is hidden when `keepMounted` is `true`, `'activity'` – hidden with `Activity` component, `'display-none'` – hidden with `display: none` styles @default 'activity' */\n keepMountedMode?: 'activity' | 'display-none';\n\n /** If set, adjusts text color based on background color for `pills` variant */\n autoContrast?: boolean;\n}\n\nexport type TabsFactory = Factory<{\n props: TabsProps;\n ref: HTMLDivElement;\n variant: TabsVariant;\n stylesNames: TabsStylesNames;\n vars: TabsCssVariables;\n staticComponents: {\n Tab: typeof TabsTab;\n Panel: typeof TabsPanel;\n List: typeof TabsList;\n };\n}>;\n\nconst VALUE_ERROR =\n 'Tabs.Tab or Tabs.Panel component was rendered with invalid value or without value';\n\nconst defaultProps = {\n keepMounted: true,\n keepMountedMode: 'activity',\n orientation: 'horizontal',\n loop: true,\n activateTabWithKeyboard: true,\n variant: 'default',\n placement: 'left',\n} satisfies Partial<TabsProps>;\n\nconst varsResolver = createVarsResolver<TabsFactory>((theme, { radius, color, autoContrast }) => ({\n root: {\n '--tabs-radius': getRadius(radius),\n '--tabs-color': getThemeColor(color, theme),\n '--tabs-text-color': getAutoContrastValue(autoContrast, theme)\n ? getContrastColor({ color, theme, autoContrast })\n : undefined,\n },\n}));\n\nexport const Tabs = factory<TabsFactory>((_props) => {\n const props = useProps('Tabs', defaultProps, _props);\n const {\n defaultValue,\n value,\n onChange,\n orientation,\n children,\n loop,\n id,\n activateTabWithKeyboard,\n allowTabDeactivation,\n variant,\n color,\n radius,\n inverted,\n placement,\n keepMounted,\n keepMountedMode,\n classNames,\n styles,\n unstyled,\n className,\n style,\n vars,\n autoContrast,\n mod,\n attributes,\n ...others\n } = props;\n\n const uid = useId(id);\n const mountedPanels = useRef(new Set<string>());\n const forceUpdate = useForceUpdate();\n\n const setMountedPanel = useCallback((panelValue: string, mounted: boolean) => {\n const panels = mountedPanels.current;\n if (mounted && !panels.has(panelValue)) {\n panels.add(panelValue);\n forceUpdate();\n } else if (!mounted && panels.has(panelValue)) {\n panels.delete(panelValue);\n forceUpdate();\n }\n }, []);\n\n const [currentTab, setCurrentTab] = useUncontrolled({\n value,\n defaultValue,\n finalValue: null,\n onChange,\n });\n\n const getStyles = useStyles<TabsFactory>({\n name: 'Tabs',\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 <TabsProvider\n value={{\n placement,\n value: currentTab,\n orientation,\n id: uid,\n loop,\n activateTabWithKeyboard,\n getTabId: getSafeId(`${uid}-tab`, VALUE_ERROR),\n getPanelId: getSafeId(`${uid}-panel`, VALUE_ERROR),\n onChange: setCurrentTab,\n allowTabDeactivation,\n variant,\n color,\n radius,\n inverted,\n keepMounted,\n keepMountedMode,\n unstyled,\n getStyles,\n mountedPanels,\n setMountedPanel,\n }}\n >\n <Box\n id={uid}\n variant={variant}\n mod={[\n {\n orientation,\n inverted: orientation === 'horizontal' && inverted,\n placement: orientation === 'vertical' && placement,\n },\n mod,\n ]}\n {...getStyles('root')}\n {...others}\n >\n {children}\n </Box>\n </TabsProvider>\n );\n});\n\nTabs.classes = classes;\nTabs.varsResolver = varsResolver;\nTabs.displayName = '@mantine/core/Tabs';\nTabs.Tab = TabsTab;\nTabs.Panel = TabsPanel;\nTabs.List = TabsList;\n\nexport namespace Tabs {\n export type Props = TabsProps;\n export type StylesNames = TabsStylesNames;\n export type CssVariables = TabsCssVariables;\n export type Factory = TabsFactory;\n export type Variant = TabsVariant;\n export type ContextValue = TabsContextValue;\n\n export namespace Tab {\n export type Props = TabsTabProps;\n export type StylesNames = TabsTabStylesNames;\n }\n\n export namespace Panel {\n export type Props = TabsPanelProps;\n export type StylesNames = TabsPanelStylesNames;\n }\n\n export namespace List {\n export type Props = TabsListProps;\n export type StylesNames = TabsListStylesNames;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAuGA,MAAM,cACJ;AAEF,MAAM,eAAe;CACnB,aAAa;CACb,iBAAiB;CACjB,aAAa;CACb,MAAM;CACN,yBAAyB;CACzB,SAAS;CACT,WAAW;AACb;AAEA,MAAM,eAAe,oBAAiC,OAAO,EAAE,QAAQ,OAAO,oBAAoB,EAChG,MAAM;CACJ,iBAAiB,UAAU,MAAM;CACjC,gBAAgB,cAAc,OAAO,KAAK;CAC1C,qBAAqB,qBAAqB,cAAc,KAAK,IACzD,iBAAiB;EAAE;EAAO;EAAO;CAAa,CAAC,IAC/C,KAAA;AACN,EACF,EAAE;AAEF,MAAa,OAAO,SAAsB,WAAW;CACnD,MAAM,QAAQ,SAAS,QAAQ,cAAc,MAAM;CACnD,MAAM,EACJ,cACA,OACA,UACA,aACA,UACA,MACA,IACA,yBACA,sBACA,SACA,OACA,QACA,UACA,WACA,aACA,iBACA,YACA,QACA,UACA,WACA,OACA,MACA,cACA,KACA,YACA,GAAG,WACD;CAEJ,MAAM,MAAMA,QAAM,EAAE;CACpB,MAAM,gBAAgB,uBAAO,IAAI,IAAY,CAAC;CAC9C,MAAM,cAAc,eAAe;CAEnC,MAAM,kBAAkB,aAAa,YAAoB,YAAqB;EAC5E,MAAM,SAAS,cAAc;EAC7B,IAAI,WAAW,CAAC,OAAO,IAAI,UAAU,GAAG;GACtC,OAAO,IAAI,UAAU;GACrB,YAAY;EACd,OAAO,IAAI,CAAC,WAAW,OAAO,IAAI,UAAU,GAAG;GAC7C,OAAO,OAAO,UAAU;GACxB,YAAY;EACd;CACF,GAAG,CAAC,CAAC;CAEL,MAAM,CAAC,YAAY,iBAAiB,gBAAgB;EAClD;EACA;EACA,YAAY;EACZ;CACF,CAAC;CAED,MAAM,YAAY,UAAuB;EACvC,MAAM;EACN;EACA,SAAA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,CAAC;CAED,OACE,oBAAC,cAAD;EACE,OAAO;GACL;GACA,OAAO;GACP;GACA,IAAI;GACJ;GACA;GACA,UAAU,UAAU,GAAG,IAAI,OAAO,WAAW;GAC7C,YAAY,UAAU,GAAG,IAAI,SAAS,WAAW;GACjD,UAAU;GACV;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACF;YAEA,oBAAC,KAAD;GACE,IAAI;GACK;GACT,KAAK,CACH;IACE;IACA,UAAU,gBAAgB,gBAAgB;IAC1C,WAAW,gBAAgB,cAAc;GAC3C,GACA,GACF;GACA,GAAI,UAAU,MAAM;GACpB,GAAI;GAEH;EACE,CAAA;CACO,CAAA;AAElB,CAAC;AAED,KAAK,UAAUC;AACf,KAAK,eAAe;AACpB,KAAK,cAAc;AACnB,KAAK,MAAM;AACX,KAAK,QAAQ;AACb,KAAK,OAAO"}
|
|
@@ -5,7 +5,7 @@ import { factory } from "../../../core/factory/factory.mjs";
|
|
|
5
5
|
import { Box } from "../../../core/Box/Box.mjs";
|
|
6
6
|
import { useTabsContext } from "../Tabs.context.mjs";
|
|
7
7
|
import Tabs_module_default from "../Tabs.module.mjs";
|
|
8
|
-
import { Activity } from "react";
|
|
8
|
+
import { Activity, useEffect } from "react";
|
|
9
9
|
import { jsx } from "react/jsx-runtime";
|
|
10
10
|
//#region packages/@mantine/core/src/components/Tabs/TabsPanel/TabsPanel.tsx
|
|
11
11
|
const TabsPanel = factory((_props) => {
|
|
@@ -13,6 +13,12 @@ const TabsPanel = factory((_props) => {
|
|
|
13
13
|
const { children, className, value, classNames, styles, style, mod, keepMounted, ...others } = props;
|
|
14
14
|
const env = useMantineEnv();
|
|
15
15
|
const ctx = useTabsContext();
|
|
16
|
+
useEffect(() => {
|
|
17
|
+
ctx.setMountedPanel(value, true);
|
|
18
|
+
return () => {
|
|
19
|
+
ctx.setMountedPanel(value, false);
|
|
20
|
+
};
|
|
21
|
+
}, [value]);
|
|
16
22
|
const active = ctx.value === value;
|
|
17
23
|
const shouldKeepMounted = ctx.keepMounted || keepMounted;
|
|
18
24
|
const useActivity = ctx.keepMountedMode !== "display-none";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TabsPanel.mjs","names":["classes"],"sources":["../../../../src/components/Tabs/TabsPanel/TabsPanel.tsx"],"sourcesContent":["import { Activity } from 'react';\nimport {\n Box,\n BoxProps,\n CompoundStylesApiProps,\n ElementProps,\n factory,\n Factory,\n useMantineEnv,\n useProps,\n} from '../../../core';\nimport { useTabsContext } from '../Tabs.context';\nimport classes from '../Tabs.module.css';\n\nexport type TabsPanelStylesNames = 'panel';\n\nexport interface TabsPanelProps\n extends BoxProps, CompoundStylesApiProps<TabsPanelFactory>, ElementProps<'div'> {\n /** Panel content */\n children: React.ReactNode;\n\n /** If set, the content is kept mounted, even if `keepMounted` is set `false` in the parent `Tabs` component */\n keepMounted?: boolean;\n\n /** Value of associated control */\n value: string;\n}\n\nexport type TabsPanelFactory = Factory<{\n props: TabsPanelProps;\n ref: HTMLDivElement;\n stylesNames: TabsPanelStylesNames;\n compound: true;\n}>;\n\nexport const TabsPanel = factory<TabsPanelFactory>((_props) => {\n const props = useProps('TabsPanel', null, _props);\n const { children, className, value, classNames, styles, style, mod, keepMounted, ...others } =\n props;\n\n const env = useMantineEnv();\n const ctx = useTabsContext();\n\n const active = ctx.value === value;\n const shouldKeepMounted = ctx.keepMounted || keepMounted;\n const useActivity = ctx.keepMountedMode !== 'display-none';\n const content =\n shouldKeepMounted && useActivity && env !== 'test' ? (\n <Activity mode={active ? 'visible' : 'hidden'}>{children}</Activity>\n ) : shouldKeepMounted ? (\n children\n ) : active ? (\n children\n ) : null;\n\n return (\n <Box\n {...ctx.getStyles('panel', {\n className,\n classNames,\n styles,\n style: [style, !active ? { display: 'none' } : undefined],\n props,\n })}\n mod={[{ orientation: ctx.orientation }, mod]}\n role=\"tabpanel\"\n id={ctx.getPanelId(value)}\n aria-labelledby={ctx.getTabId(value)}\n {...others}\n >\n {content}\n </Box>\n );\n});\n\nTabsPanel.classes = classes;\nTabsPanel.displayName = '@mantine/core/TabsPanel';\n"],"mappings":";;;;;;;;;;AAmCA,MAAa,YAAY,SAA2B,WAAW;CAC7D,MAAM,QAAQ,SAAS,aAAa,MAAM,MAAM;CAChD,MAAM,EAAE,UAAU,WAAW,OAAO,YAAY,QAAQ,OAAO,KAAK,aAAa,GAAG,WAClF;CAEF,MAAM,MAAM,cAAc;CAC1B,MAAM,MAAM,eAAe;CAE3B,MAAM,SAAS,IAAI,UAAU;CAC7B,MAAM,oBAAoB,IAAI,eAAe;CAC7C,MAAM,cAAc,IAAI,oBAAoB;CAC5C,MAAM,UACJ,qBAAqB,eAAe,QAAQ,SAC1C,oBAAC,UAAD;EAAU,MAAM,SAAS,YAAY;EAAW;CAAmB,CAAA,IACjE,oBACF,WACE,SACF,WACE;CAEN,OACE,oBAAC,KAAD;EACE,GAAI,IAAI,UAAU,SAAS;GACzB;GACA;GACA;GACA,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,OAAO,IAAI,KAAA,CAAS;GACxD;EACF,CAAC;EACD,KAAK,CAAC,EAAE,aAAa,IAAI,YAAY,GAAG,GAAG;EAC3C,MAAK;EACL,IAAI,IAAI,WAAW,KAAK;EACxB,mBAAiB,IAAI,SAAS,KAAK;EACnC,GAAI;YAEH;CACE,CAAA;AAET,CAAC;AAED,UAAU,UAAUA;AACpB,UAAU,cAAc"}
|
|
1
|
+
{"version":3,"file":"TabsPanel.mjs","names":["classes"],"sources":["../../../../src/components/Tabs/TabsPanel/TabsPanel.tsx"],"sourcesContent":["import { Activity, useEffect } from 'react';\nimport {\n Box,\n BoxProps,\n CompoundStylesApiProps,\n ElementProps,\n factory,\n Factory,\n useMantineEnv,\n useProps,\n} from '../../../core';\nimport { useTabsContext } from '../Tabs.context';\nimport classes from '../Tabs.module.css';\n\nexport type TabsPanelStylesNames = 'panel';\n\nexport interface TabsPanelProps\n extends BoxProps, CompoundStylesApiProps<TabsPanelFactory>, ElementProps<'div'> {\n /** Panel content */\n children: React.ReactNode;\n\n /** If set, the content is kept mounted, even if `keepMounted` is set `false` in the parent `Tabs` component */\n keepMounted?: boolean;\n\n /** Value of associated control */\n value: string;\n}\n\nexport type TabsPanelFactory = Factory<{\n props: TabsPanelProps;\n ref: HTMLDivElement;\n stylesNames: TabsPanelStylesNames;\n compound: true;\n}>;\n\nexport const TabsPanel = factory<TabsPanelFactory>((_props) => {\n const props = useProps('TabsPanel', null, _props);\n const { children, className, value, classNames, styles, style, mod, keepMounted, ...others } =\n props;\n\n const env = useMantineEnv();\n const ctx = useTabsContext();\n\n useEffect(() => {\n ctx.setMountedPanel(value, true);\n return () => {\n ctx.setMountedPanel(value, false);\n };\n }, [value]);\n\n const active = ctx.value === value;\n const shouldKeepMounted = ctx.keepMounted || keepMounted;\n const useActivity = ctx.keepMountedMode !== 'display-none';\n const content =\n shouldKeepMounted && useActivity && env !== 'test' ? (\n <Activity mode={active ? 'visible' : 'hidden'}>{children}</Activity>\n ) : shouldKeepMounted ? (\n children\n ) : active ? (\n children\n ) : null;\n\n return (\n <Box\n {...ctx.getStyles('panel', {\n className,\n classNames,\n styles,\n style: [style, !active ? { display: 'none' } : undefined],\n props,\n })}\n mod={[{ orientation: ctx.orientation }, mod]}\n role=\"tabpanel\"\n id={ctx.getPanelId(value)}\n aria-labelledby={ctx.getTabId(value)}\n {...others}\n >\n {content}\n </Box>\n );\n});\n\nTabsPanel.classes = classes;\nTabsPanel.displayName = '@mantine/core/TabsPanel';\n"],"mappings":";;;;;;;;;;AAmCA,MAAa,YAAY,SAA2B,WAAW;CAC7D,MAAM,QAAQ,SAAS,aAAa,MAAM,MAAM;CAChD,MAAM,EAAE,UAAU,WAAW,OAAO,YAAY,QAAQ,OAAO,KAAK,aAAa,GAAG,WAClF;CAEF,MAAM,MAAM,cAAc;CAC1B,MAAM,MAAM,eAAe;CAE3B,gBAAgB;EACd,IAAI,gBAAgB,OAAO,IAAI;EAC/B,aAAa;GACX,IAAI,gBAAgB,OAAO,KAAK;EAClC;CACF,GAAG,CAAC,KAAK,CAAC;CAEV,MAAM,SAAS,IAAI,UAAU;CAC7B,MAAM,oBAAoB,IAAI,eAAe;CAC7C,MAAM,cAAc,IAAI,oBAAoB;CAC5C,MAAM,UACJ,qBAAqB,eAAe,QAAQ,SAC1C,oBAAC,UAAD;EAAU,MAAM,SAAS,YAAY;EAAW;CAAmB,CAAA,IACjE,oBACF,WACE,SACF,WACE;CAEN,OACE,oBAAC,KAAD;EACE,GAAI,IAAI,UAAU,SAAS;GACzB;GACA;GACA;GACA,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,OAAO,IAAI,KAAA,CAAS;GACxD;EACF,CAAC;EACD,KAAK,CAAC,EAAE,aAAa,IAAI,YAAY,GAAG,GAAG;EAC3C,MAAK;EACL,IAAI,IAAI,WAAW,KAAK;EACxB,mBAAiB,IAAI,SAAS,KAAK;EACnC,GAAI;YAEH;CACE,CAAA;AAET,CAAC;AAED,UAAU,UAAUA;AACpB,UAAU,cAAc"}
|
|
@@ -47,7 +47,7 @@ const TabsTab = factory((_props) => {
|
|
|
47
47
|
id: ctx.getTabId(value),
|
|
48
48
|
"aria-selected": active,
|
|
49
49
|
tabIndex: tabIndex !== void 0 ? tabIndex : active || ctx.value === null ? 0 : -1,
|
|
50
|
-
"aria-controls": ctx.getPanelId(value),
|
|
50
|
+
"aria-controls": ctx.mountedPanels.current.has(value) ? ctx.getPanelId(value) : void 0,
|
|
51
51
|
onClick: activateTab,
|
|
52
52
|
__vars: { "--tabs-color": color ? getThemeColor(color, theme) : void 0 },
|
|
53
53
|
onKeyDown: createScopedKeydownHandler({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TabsTab.mjs","names":["classes"],"sources":["../../../../src/components/Tabs/TabsTab/TabsTab.tsx"],"sourcesContent":["import {\n CompoundStylesApiProps,\n createScopedKeydownHandler,\n ElementProps,\n factory,\n Factory,\n getThemeColor,\n MantineColor,\n useDirection,\n useMantineTheme,\n useProps,\n} from '../../../core';\nimport { UnstyledButton, UnstyledButtonProps } from '../../UnstyledButton';\nimport { useTabsContext } from '../Tabs.context';\nimport classes from '../Tabs.module.css';\n\nexport type TabsTabStylesNames = 'tab' | 'tabSection' | 'tabLabel';\n\nexport interface TabsTabProps\n extends\n Omit<UnstyledButtonProps, 'classNames' | 'styles' | 'vars'>,\n CompoundStylesApiProps<TabsTabFactory>,\n ElementProps<'button'> {\n /** Value of associated panel */\n value: string;\n\n /** Tab label */\n children?: React.ReactNode;\n\n /** Content displayed on the right side of the label */\n rightSection?: React.ReactNode;\n\n /** Content displayed on the left side of the label */\n leftSection?: React.ReactNode;\n\n /** Key of `theme.colors` or any valid CSS color, controls tab color based on `variant` */\n color?: MantineColor;\n}\n\nexport type TabsTabFactory = Factory<{\n props: TabsTabProps;\n ref: HTMLButtonElement;\n stylesNames: TabsTabStylesNames;\n compound: true;\n}>;\n\nexport const TabsTab = factory<TabsTabFactory>((_props) => {\n const props = useProps('TabsTab', null, _props);\n const {\n className,\n children,\n rightSection,\n leftSection,\n value,\n onClick,\n onKeyDown,\n disabled,\n color,\n style,\n classNames,\n styles,\n vars,\n mod,\n tabIndex,\n ...others\n } = props;\n\n const theme = useMantineTheme();\n const { dir } = useDirection();\n const ctx = useTabsContext();\n const active = value === ctx.value;\n const activateTab = (event: React.MouseEvent<HTMLButtonElement, MouseEvent>) => {\n ctx.onChange(ctx.allowTabDeactivation ? (value === ctx.value ? null : value) : value);\n onClick?.(event);\n };\n\n const stylesApiProps = { classNames, styles, props };\n\n return (\n <UnstyledButton\n {...ctx.getStyles('tab', { className, style, variant: ctx.variant, ...stylesApiProps })}\n disabled={disabled}\n unstyled={ctx.unstyled}\n variant={ctx.variant}\n mod={[\n {\n active,\n disabled,\n orientation: ctx.orientation,\n inverted: ctx.inverted,\n placement: ctx.orientation === 'vertical' && ctx.placement,\n },\n mod,\n ]}\n role=\"tab\"\n id={ctx.getTabId(value)}\n aria-selected={active}\n tabIndex={tabIndex !== undefined ? tabIndex : active || ctx.value === null ? 0 : -1}\n aria-controls={ctx.getPanelId(value)}\n onClick={activateTab}\n __vars={{ '--tabs-color': color ? getThemeColor(color, theme) : undefined }}\n onKeyDown={createScopedKeydownHandler({\n siblingSelector: '[role=\"tab\"]',\n parentSelector: '[role=\"tablist\"]',\n activateOnFocus: ctx.activateTabWithKeyboard,\n loop: ctx.loop,\n orientation: ctx.orientation || 'horizontal',\n dir,\n onKeyDown,\n })}\n {...others}\n >\n {leftSection && (\n <span {...ctx.getStyles('tabSection', stylesApiProps)} data-position=\"left\">\n {leftSection}\n </span>\n )}\n {children && <span {...ctx.getStyles('tabLabel', stylesApiProps)}>{children}</span>}\n {rightSection && (\n <span {...ctx.getStyles('tabSection', stylesApiProps)} data-position=\"right\">\n {rightSection}\n </span>\n )}\n </UnstyledButton>\n );\n});\n\nTabsTab.classes = classes;\nTabsTab.displayName = '@mantine/core/TabsTab';\n"],"mappings":";;;;;;;;;;;;AA8CA,MAAa,UAAU,SAAyB,WAAW;CACzD,MAAM,QAAQ,SAAS,WAAW,MAAM,MAAM;CAC9C,MAAM,EACJ,WACA,UACA,cACA,aACA,OACA,SACA,WACA,UACA,OACA,OACA,YACA,QACA,MACA,KACA,UACA,GAAG,WACD;CAEJ,MAAM,QAAQ,gBAAgB;CAC9B,MAAM,EAAE,QAAQ,aAAa;CAC7B,MAAM,MAAM,eAAe;CAC3B,MAAM,SAAS,UAAU,IAAI;CAC7B,MAAM,eAAe,UAA2D;EAC9E,IAAI,SAAS,IAAI,uBAAwB,UAAU,IAAI,QAAQ,OAAO,QAAS,KAAK;EACpF,UAAU,KAAK;CACjB;CAEA,MAAM,iBAAiB;EAAE;EAAY;EAAQ;CAAM;CAEnD,OACE,qBAAC,gBAAD;EACE,GAAI,IAAI,UAAU,OAAO;GAAE;GAAW;GAAO,SAAS,IAAI;GAAS,GAAG;EAAe,CAAC;EAC5E;EACV,UAAU,IAAI;EACd,SAAS,IAAI;EACb,KAAK,CACH;GACE;GACA;GACA,aAAa,IAAI;GACjB,UAAU,IAAI;GACd,WAAW,IAAI,gBAAgB,cAAc,IAAI;EACnD,GACA,GACF;EACA,MAAK;EACL,IAAI,IAAI,SAAS,KAAK;EACtB,iBAAe;EACf,UAAU,aAAa,KAAA,IAAY,WAAW,UAAU,IAAI,UAAU,OAAO,IAAI;EACjF,iBAAe,IAAI,WAAW,KAAK;
|
|
1
|
+
{"version":3,"file":"TabsTab.mjs","names":["classes"],"sources":["../../../../src/components/Tabs/TabsTab/TabsTab.tsx"],"sourcesContent":["import {\n CompoundStylesApiProps,\n createScopedKeydownHandler,\n ElementProps,\n factory,\n Factory,\n getThemeColor,\n MantineColor,\n useDirection,\n useMantineTheme,\n useProps,\n} from '../../../core';\nimport { UnstyledButton, UnstyledButtonProps } from '../../UnstyledButton';\nimport { useTabsContext } from '../Tabs.context';\nimport classes from '../Tabs.module.css';\n\nexport type TabsTabStylesNames = 'tab' | 'tabSection' | 'tabLabel';\n\nexport interface TabsTabProps\n extends\n Omit<UnstyledButtonProps, 'classNames' | 'styles' | 'vars'>,\n CompoundStylesApiProps<TabsTabFactory>,\n ElementProps<'button'> {\n /** Value of associated panel */\n value: string;\n\n /** Tab label */\n children?: React.ReactNode;\n\n /** Content displayed on the right side of the label */\n rightSection?: React.ReactNode;\n\n /** Content displayed on the left side of the label */\n leftSection?: React.ReactNode;\n\n /** Key of `theme.colors` or any valid CSS color, controls tab color based on `variant` */\n color?: MantineColor;\n}\n\nexport type TabsTabFactory = Factory<{\n props: TabsTabProps;\n ref: HTMLButtonElement;\n stylesNames: TabsTabStylesNames;\n compound: true;\n}>;\n\nexport const TabsTab = factory<TabsTabFactory>((_props) => {\n const props = useProps('TabsTab', null, _props);\n const {\n className,\n children,\n rightSection,\n leftSection,\n value,\n onClick,\n onKeyDown,\n disabled,\n color,\n style,\n classNames,\n styles,\n vars,\n mod,\n tabIndex,\n ...others\n } = props;\n\n const theme = useMantineTheme();\n const { dir } = useDirection();\n const ctx = useTabsContext();\n const active = value === ctx.value;\n const activateTab = (event: React.MouseEvent<HTMLButtonElement, MouseEvent>) => {\n ctx.onChange(ctx.allowTabDeactivation ? (value === ctx.value ? null : value) : value);\n onClick?.(event);\n };\n\n const stylesApiProps = { classNames, styles, props };\n\n return (\n <UnstyledButton\n {...ctx.getStyles('tab', { className, style, variant: ctx.variant, ...stylesApiProps })}\n disabled={disabled}\n unstyled={ctx.unstyled}\n variant={ctx.variant}\n mod={[\n {\n active,\n disabled,\n orientation: ctx.orientation,\n inverted: ctx.inverted,\n placement: ctx.orientation === 'vertical' && ctx.placement,\n },\n mod,\n ]}\n role=\"tab\"\n id={ctx.getTabId(value)}\n aria-selected={active}\n tabIndex={tabIndex !== undefined ? tabIndex : active || ctx.value === null ? 0 : -1}\n aria-controls={ctx.mountedPanels.current.has(value) ? ctx.getPanelId(value) : undefined}\n onClick={activateTab}\n __vars={{ '--tabs-color': color ? getThemeColor(color, theme) : undefined }}\n onKeyDown={createScopedKeydownHandler({\n siblingSelector: '[role=\"tab\"]',\n parentSelector: '[role=\"tablist\"]',\n activateOnFocus: ctx.activateTabWithKeyboard,\n loop: ctx.loop,\n orientation: ctx.orientation || 'horizontal',\n dir,\n onKeyDown,\n })}\n {...others}\n >\n {leftSection && (\n <span {...ctx.getStyles('tabSection', stylesApiProps)} data-position=\"left\">\n {leftSection}\n </span>\n )}\n {children && <span {...ctx.getStyles('tabLabel', stylesApiProps)}>{children}</span>}\n {rightSection && (\n <span {...ctx.getStyles('tabSection', stylesApiProps)} data-position=\"right\">\n {rightSection}\n </span>\n )}\n </UnstyledButton>\n );\n});\n\nTabsTab.classes = classes;\nTabsTab.displayName = '@mantine/core/TabsTab';\n"],"mappings":";;;;;;;;;;;;AA8CA,MAAa,UAAU,SAAyB,WAAW;CACzD,MAAM,QAAQ,SAAS,WAAW,MAAM,MAAM;CAC9C,MAAM,EACJ,WACA,UACA,cACA,aACA,OACA,SACA,WACA,UACA,OACA,OACA,YACA,QACA,MACA,KACA,UACA,GAAG,WACD;CAEJ,MAAM,QAAQ,gBAAgB;CAC9B,MAAM,EAAE,QAAQ,aAAa;CAC7B,MAAM,MAAM,eAAe;CAC3B,MAAM,SAAS,UAAU,IAAI;CAC7B,MAAM,eAAe,UAA2D;EAC9E,IAAI,SAAS,IAAI,uBAAwB,UAAU,IAAI,QAAQ,OAAO,QAAS,KAAK;EACpF,UAAU,KAAK;CACjB;CAEA,MAAM,iBAAiB;EAAE;EAAY;EAAQ;CAAM;CAEnD,OACE,qBAAC,gBAAD;EACE,GAAI,IAAI,UAAU,OAAO;GAAE;GAAW;GAAO,SAAS,IAAI;GAAS,GAAG;EAAe,CAAC;EAC5E;EACV,UAAU,IAAI;EACd,SAAS,IAAI;EACb,KAAK,CACH;GACE;GACA;GACA,aAAa,IAAI;GACjB,UAAU,IAAI;GACd,WAAW,IAAI,gBAAgB,cAAc,IAAI;EACnD,GACA,GACF;EACA,MAAK;EACL,IAAI,IAAI,SAAS,KAAK;EACtB,iBAAe;EACf,UAAU,aAAa,KAAA,IAAY,WAAW,UAAU,IAAI,UAAU,OAAO,IAAI;EACjF,iBAAe,IAAI,cAAc,QAAQ,IAAI,KAAK,IAAI,IAAI,WAAW,KAAK,IAAI,KAAA;EAC9E,SAAS;EACT,QAAQ,EAAE,gBAAgB,QAAQ,cAAc,OAAO,KAAK,IAAI,KAAA,EAAU;EAC1E,WAAW,2BAA2B;GACpC,iBAAiB;GACjB,gBAAgB;GAChB,iBAAiB,IAAI;GACrB,MAAM,IAAI;GACV,aAAa,IAAI,eAAe;GAChC;GACA;EACF,CAAC;EACD,GAAI;YA/BN;GAiCG,eACC,oBAAC,QAAD;IAAM,GAAI,IAAI,UAAU,cAAc,cAAc;IAAG,iBAAc;cAClE;GACG,CAAA;GAEP,YAAY,oBAAC,QAAD;IAAM,GAAI,IAAI,UAAU,YAAY,cAAc;IAAI;GAAe,CAAA;GACjF,gBACC,oBAAC,QAAD;IAAM,GAAI,IAAI,UAAU,cAAc,cAAc;IAAG,iBAAc;cAClE;GACG,CAAA;EAEM;;AAEpB,CAAC;AAED,QAAQ,UAAUA;AAClB,QAAQ,cAAc"}
|
|
@@ -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, 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;
|
|
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, successProps, wrapperProps, description, label, error, success, withErrorStyles, withSuccessStyles, 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);
|
|
@@ -244,11 +244,14 @@ const TagsInput = factory((_props) => {
|
|
|
244
244
|
labelProps,
|
|
245
245
|
descriptionProps,
|
|
246
246
|
errorProps,
|
|
247
|
+
successProps,
|
|
247
248
|
wrapperProps,
|
|
248
249
|
description,
|
|
249
250
|
label,
|
|
250
251
|
error,
|
|
252
|
+
success,
|
|
251
253
|
withErrorStyles,
|
|
254
|
+
withSuccessStyles,
|
|
252
255
|
__stylesApiProps: {
|
|
253
256
|
...props,
|
|
254
257
|
multiline: true
|
|
@@ -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 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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"}
|
|
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 successProps,\n wrapperProps,\n description,\n label,\n error,\n success,\n withErrorStyles,\n withSuccessStyles,\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 successProps={successProps}\n wrapperProps={wrapperProps}\n description={description}\n label={label}\n error={error}\n success={success}\n withErrorStyles={withErrorStyles}\n withSuccessStyles={withSuccessStyles}\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":";;;;;;;;;;;;;;;;;;;;;AA6IA,MAAM,eAAe;CACnB,SAAS;CACT,mBAAmB;CACnB,YAAY,CAAC,GAAG;CAChB,0BAA0B;CAC1B,aAAa;CACb,MAAM;AACR;AAEA,MAAa,YAAY,SAA2B,WAAW;CAC7D,MAAM,QAAQ,SAAS;EAAC;EAAS;EAAgB;CAAW,GAAG,cAAc,MAAM;CACnF,MAAM,EACJ,YACA,WACA,OACA,QACA,UACA,MACA,MACA,OACA,cACA,UACA,WACA,SACA,iBACA,aACA,SACA,MACA,gBACA,uBACA,gBACA,iBACA,2BACA,iCACA,gBACA,eACA,QACA,OACA,gBACA,mBACA,gBACA,aACA,oBACA,gBACA,UACA,UACA,YACA,SACA,QACA,SACA,QACA,cACA,mBACA,2BACA,mBACA,aACA,kBACA,0BACA,kBACA,gBACA,mBACA,cACA,UACA,YACA,kBACA,YACA,cACA,cACA,aACA,OACA,OACA,SACA,iBACA,mBACA,MACA,MACA,IACA,WACA,kBACA,kBACA,kBACA,0BACA,KACA,cACA,YACA,UACA,SACA,WACA,iBACA,mBACA,aACA,aACA,YACA,KACA,SACA,iBACA,kBACA,GAAG,WACD;CAEJ,MAAM,MAAMA,QAAM,EAAE;CACpB,MAAM,aAAa,sBAAsB,IAAI;CAC7C,MAAM,gBAAgB,iBAAiB,UAAU;CACjD,MAAM,WAAW,OAAyB,IAAI;CAC9C,MAAM,OAAO,aAAa,UAAU,GAAG;CAEvC,MAAM,WAAW,YAAY;EAC3B,QAAQ;EACR,eAAe;EACf,sBAAsB;GACpB,iBAAiB;GACjB,IAAI,iCACF,SAAS,kBAAkB;EAE/B;EACA,uBAAuB;GACrB,kBAAkB;GAClB,SAAS,oBAAoB;EAC/B;CACF,CAAC;CAED,MAAM,EACJ,YACA,MAAM,EAAE,MAAM,cAAc,GAAG,WAC7B,kBAAkB,MAAM;CAE5B,MAAM,CAAC,QAAQ,YAAY,gBAAgB;EACzC;EACA;EACA,YAAY,CAAC;EACb;CACF,CAAC;CAED,MAAM,EAAE,cAAc,cAAc,uBAAuB,gBAAgB;EACzE,OAAO;EACP,UAAU;EACV,SAAS,oBAA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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filter-picked-tags.mjs","names":[],"sources":["../../../src/components/TagsInput/filter-picked-tags.ts"],"sourcesContent":["import { ComboboxParsedItem, isOptionsGroup } from '../Combobox';\n\ninterface FilterPickedTagsInput {\n data: ComboboxParsedItem[];\n value: string[];\n}\n\nexport function filterPickedTags({ data, value }: FilterPickedTagsInput) {\n const normalizedValue = value.map((item) => item.trim().toLowerCase());\n\n const filtered = data.reduce<ComboboxParsedItem[]>((acc, item) => {\n if (isOptionsGroup(item)) {\n acc.push({\n group: item.group,\n items: item.items.filter(\n (option) => normalizedValue.indexOf(option.label.toLowerCase().trim()) === -1\n ),\n });\n } else if (normalizedValue.indexOf(item.label.toLowerCase().trim()) === -1) {\n acc.push(item);\n }\n\n return acc;\n }, []);\n\n return filtered;\n}\n"],"mappings":";;;AAOA,SAAgB,iBAAiB,EAAE,MAAM,SAAgC;CACvE,MAAM,kBAAkB,MAAM,KAAK,SAAS,KAAK,KAAK,
|
|
1
|
+
{"version":3,"file":"filter-picked-tags.mjs","names":[],"sources":["../../../src/components/TagsInput/filter-picked-tags.ts"],"sourcesContent":["import { ComboboxParsedItem, isOptionsGroup } from '../Combobox';\n\ninterface FilterPickedTagsInput {\n data: ComboboxParsedItem[];\n value: string[];\n}\n\nexport function filterPickedTags({ data, value }: FilterPickedTagsInput) {\n const normalizedValue = value.map((item) => item.trim().toLowerCase());\n\n const filtered = data.reduce<ComboboxParsedItem[]>((acc, item) => {\n if (isOptionsGroup(item)) {\n acc.push({\n group: item.group,\n items: item.items.filter(\n (option) => normalizedValue.indexOf(option.label.toLowerCase().trim()) === -1\n ),\n });\n } else if (normalizedValue.indexOf(item.label.toLowerCase().trim()) === -1) {\n acc.push(item);\n }\n\n return acc;\n }, []);\n\n return filtered;\n}\n"],"mappings":";;;AAOA,SAAgB,iBAAiB,EAAE,MAAM,SAAgC;CACvE,MAAM,kBAAkB,MAAM,KAAK,SAAS,KAAK,KAAK,CAAC,CAAC,YAAY,CAAC;CAiBrE,OAfiB,KAAK,QAA8B,KAAK,SAAS;EAChE,IAAI,eAAe,IAAI,GACrB,IAAI,KAAK;GACP,OAAO,KAAK;GACZ,OAAO,KAAK,MAAM,QACf,WAAW,gBAAgB,QAAQ,OAAO,MAAM,YAAY,CAAC,CAAC,KAAK,CAAC,MAAM,EAC7E;EACF,CAAC;OACI,IAAI,gBAAgB,QAAQ,KAAK,MAAM,YAAY,CAAC,CAAC,KAAK,CAAC,MAAM,IACtE,IAAI,KAAK,IAAI;EAGf,OAAO;CACT,GAAG,CAAC,CAEU;AAChB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-splitted-tags.mjs","names":[],"sources":["../../../src/components/TagsInput/get-splitted-tags.ts"],"sourcesContent":["function splitTags(splitChars: string[] | undefined, value: string) {\n if (!splitChars) {\n return [value];\n }\n\n return value\n .split(new RegExp(`[${splitChars.join('')}]`))\n .map((tag) => tag.trim())\n .filter((tag) => tag !== '');\n}\n\ninterface GetSplittedTagsInput {\n splitChars: string[] | undefined;\n allowDuplicates: boolean | undefined;\n maxTags: number | undefined;\n value: string;\n currentTags: string[];\n isDuplicate?: (value: string, currentValues: string[]) => boolean;\n onDuplicate?: (value: string) => void;\n}\n\nexport function getSplittedTags({\n splitChars,\n allowDuplicates,\n maxTags,\n value,\n currentTags,\n isDuplicate,\n onDuplicate,\n}: GetSplittedTagsInput) {\n const splitted = splitTags(splitChars, value);\n const merged: string[] = [];\n\n if (allowDuplicates) {\n merged.push(...currentTags, ...splitted);\n } else {\n merged.push(...currentTags);\n for (const tag of splitted) {\n const checkDuplicate = isDuplicate\n ? (val: string) => isDuplicate(val, merged)\n : (val: string) => merged.some((t) => t.toLowerCase() === val.toLowerCase());\n\n if (checkDuplicate(tag)) {\n onDuplicate?.(tag);\n } else {\n merged.push(tag);\n }\n }\n }\n\n return maxTags ? merged.slice(0, maxTags) : merged;\n}\n"],"mappings":";;AAAA,SAAS,UAAU,YAAkC,OAAe;CAClE,IAAI,CAAC,YACH,OAAO,CAAC,KAAK;CAGf,OAAO,MACJ,MAAM,IAAI,OAAO,IAAI,WAAW,KAAK,EAAE,EAAE,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"get-splitted-tags.mjs","names":[],"sources":["../../../src/components/TagsInput/get-splitted-tags.ts"],"sourcesContent":["function splitTags(splitChars: string[] | undefined, value: string) {\n if (!splitChars) {\n return [value];\n }\n\n return value\n .split(new RegExp(`[${splitChars.join('')}]`))\n .map((tag) => tag.trim())\n .filter((tag) => tag !== '');\n}\n\ninterface GetSplittedTagsInput {\n splitChars: string[] | undefined;\n allowDuplicates: boolean | undefined;\n maxTags: number | undefined;\n value: string;\n currentTags: string[];\n isDuplicate?: (value: string, currentValues: string[]) => boolean;\n onDuplicate?: (value: string) => void;\n}\n\nexport function getSplittedTags({\n splitChars,\n allowDuplicates,\n maxTags,\n value,\n currentTags,\n isDuplicate,\n onDuplicate,\n}: GetSplittedTagsInput) {\n const splitted = splitTags(splitChars, value);\n const merged: string[] = [];\n\n if (allowDuplicates) {\n merged.push(...currentTags, ...splitted);\n } else {\n merged.push(...currentTags);\n for (const tag of splitted) {\n const checkDuplicate = isDuplicate\n ? (val: string) => isDuplicate(val, merged)\n : (val: string) => merged.some((t) => t.toLowerCase() === val.toLowerCase());\n\n if (checkDuplicate(tag)) {\n onDuplicate?.(tag);\n } else {\n merged.push(tag);\n }\n }\n }\n\n return maxTags ? merged.slice(0, maxTags) : merged;\n}\n"],"mappings":";;AAAA,SAAS,UAAU,YAAkC,OAAe;CAClE,IAAI,CAAC,YACH,OAAO,CAAC,KAAK;CAGf,OAAO,MACJ,MAAM,IAAI,OAAO,IAAI,WAAW,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,CAC7C,KAAK,QAAQ,IAAI,KAAK,CAAC,CAAC,CACxB,QAAQ,QAAQ,QAAQ,EAAE;AAC/B;AAYA,SAAgB,gBAAgB,EAC9B,YACA,iBACA,SACA,OACA,aACA,aACA,eACuB;CACvB,MAAM,WAAW,UAAU,YAAY,KAAK;CAC5C,MAAM,SAAmB,CAAC;CAE1B,IAAI,iBACF,OAAO,KAAK,GAAG,aAAa,GAAG,QAAQ;MAClC;EACL,OAAO,KAAK,GAAG,WAAW;EAC1B,KAAK,MAAM,OAAO,UAKhB,KAJuB,eAClB,QAAgB,YAAY,KAAK,MAAM,KACvC,QAAgB,OAAO,MAAM,MAAM,EAAE,YAAY,MAAM,IAAI,YAAY,CAAC,EAAA,CAE1D,GAAG,GACpB,cAAc,GAAG;OAEjB,OAAO,KAAK,GAAG;CAGrB;CAEA,OAAO,UAAU,OAAO,MAAM,GAAG,OAAO,IAAI;AAC9C"}
|
|
@@ -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' | '--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,
|
|
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,CAAC,CAAC,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"}
|