@react-md/core 1.0.0-next.2 → 1.0.0-next.4
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/.turbo/turbo-build.log +5 -5
- package/.turbo/turbo-lint.log +12 -0
- package/.turbo/turbo-test.log +179 -0
- package/.turbo/turbo-typecheck.log +4 -0
- package/CHANGELOG.md +109 -0
- package/coverage/clover.xml +529 -3
- package/coverage/coverage-final.json +4 -1
- package/coverage/lcov-report/Avatar.tsx.html +472 -0
- package/coverage/lcov-report/IconRotator.tsx.html +322 -0
- package/coverage/lcov-report/ListItem.tsx.html +892 -0
- package/coverage/lcov-report/ListItemLink.tsx.html +616 -0
- package/coverage/lcov-report/Portal.tsx.html +223 -0
- package/coverage/lcov-report/PortalContainerProvider.tsx.html +367 -0
- package/coverage/lcov-report/SkeletonPlaceholder.tsx.html +613 -0
- package/coverage/lcov-report/Tab.tsx.html +261 -147
- package/coverage/lcov-report/TreeGroup.tsx.html +313 -0
- package/coverage/lcov-report/app-bar/AppBar.tsx.html +178 -28
- package/coverage/lcov-report/app-bar/index.html +7 -7
- package/coverage/lcov-report/button/TooltippedButton.tsx.html +445 -0
- package/coverage/lcov-report/button/index.html +10 -10
- package/coverage/lcov-report/card/Card.tsx.html +349 -0
- package/coverage/lcov-report/card/CardContent.tsx.html +223 -0
- package/coverage/lcov-report/card/ClickableCard.tsx.html +400 -0
- package/coverage/lcov-report/card/index.html +21 -21
- package/coverage/lcov-report/card/styles.ts.html +428 -392
- package/coverage/lcov-report/cssUtils.ts.html +86 -59
- package/coverage/lcov-report/draggable/index.html +21 -36
- package/coverage/lcov-report/draggable/useDraggable.ts.html +377 -368
- package/coverage/lcov-report/draggable/utils.ts.html +96 -195
- package/coverage/lcov-report/expansion-panel/ExpansionList.tsx.html +211 -0
- package/coverage/lcov-report/expansion-panel/ExpansionPanel.tsx.html +12 -15
- package/coverage/lcov-report/expansion-panel/index.html +34 -19
- package/coverage/lcov-report/expansion-panel/useExpansionPanels.ts.html +928 -0
- package/coverage/lcov-report/form/MenuItemInputToggle.tsx.html +2 -2
- package/coverage/lcov-report/form/Select.tsx.html +1663 -0
- package/coverage/lcov-report/form/Slider.tsx.html +163 -40
- package/coverage/lcov-report/form/index.html +21 -21
- package/coverage/lcov-report/getListItemHeight.ts.html +298 -0
- package/coverage/lcov-report/icon/FontIcon.tsx.html +28 -28
- package/coverage/lcov-report/icon/index.html +1 -1
- package/coverage/lcov-report/index.html +56 -11
- package/coverage/lcov-report/interaction/UserInteractionModeProvider.tsx.html +679 -0
- package/coverage/lcov-report/interaction/config.ts.html +181 -0
- package/coverage/lcov-report/interaction/index.html +33 -18
- package/coverage/lcov-report/list/List.tsx.html +490 -0
- package/coverage/lcov-report/list/ListItem.tsx.html +886 -0
- package/coverage/lcov-report/list/ListItemAddon.tsx.html +286 -0
- package/coverage/lcov-report/list/ListItemChildren.tsx.html +445 -0
- package/coverage/lcov-report/list/ListItemLink.tsx.html +5 -5
- package/coverage/lcov-report/list/index.html +81 -6
- package/coverage/lcov-report/list/listItemStyles.ts.html +703 -0
- package/coverage/lcov-report/media-queries/appSize.ts.html +1 -1
- package/coverage/lcov-report/media-queries/index.html +1 -1
- package/coverage/lcov-report/menu/Menu.tsx.html +37 -19
- package/coverage/lcov-report/menu/index.html +14 -44
- package/coverage/lcov-report/sheet/index.html +8 -8
- package/coverage/lcov-report/sheet/styles.ts.html +376 -0
- package/coverage/lcov-report/skeletonPlaceholderUtils.ts.html +400 -0
- package/coverage/lcov-report/src/CoreProviders.tsx.html +20 -20
- package/coverage/lcov-report/src/NoSsr.tsx.html +1 -1
- package/coverage/lcov-report/src/SsrProvider.tsx.html +10 -10
- package/coverage/lcov-report/src/app-bar/AppBar.tsx.html +143 -23
- package/coverage/lcov-report/src/app-bar/AppBarTitle.tsx.html +1 -1
- package/coverage/lcov-report/src/app-bar/index.html +5 -5
- package/coverage/lcov-report/src/avatar/Avatar.tsx.html +2 -2
- package/coverage/lcov-report/src/avatar/index.html +1 -1
- package/coverage/lcov-report/src/avatar/styles.ts.html +1 -1
- package/coverage/lcov-report/src/badge/Badge.tsx.html +1 -1
- package/coverage/lcov-report/src/badge/index.html +1 -1
- package/coverage/lcov-report/src/box/Box.tsx.html +1 -1
- package/coverage/lcov-report/src/box/index.html +23 -8
- package/coverage/lcov-report/src/box/styles.ts.html +46 -46
- package/coverage/lcov-report/src/button/AsyncButton.tsx.html +1 -1
- package/coverage/lcov-report/src/button/Button.tsx.html +84 -84
- package/coverage/lcov-report/src/button/ButtonUnstyled.tsx.html +1 -1
- package/coverage/lcov-report/src/button/FloatingActionButton.tsx.html +11 -11
- package/coverage/lcov-report/src/button/TooltippedButton.tsx.html +445 -0
- package/coverage/lcov-report/src/button/buttonStyles.ts.html +52 -52
- package/coverage/lcov-report/src/button/buttonUnstyledStyles.ts.html +1 -1
- package/coverage/lcov-report/src/button/index.html +83 -8
- package/coverage/lcov-report/src/card/Card.tsx.html +37 -31
- package/coverage/lcov-report/src/card/CardContent.tsx.html +4 -4
- package/coverage/lcov-report/src/card/CardFooter.tsx.html +1 -1
- package/coverage/lcov-report/src/card/CardHeader.tsx.html +1 -1
- package/coverage/lcov-report/src/card/CardSubtitle.tsx.html +1 -1
- package/coverage/lcov-report/src/card/CardTitle.tsx.html +1 -1
- package/coverage/lcov-report/src/card/ClickableCard.tsx.html +400 -0
- package/coverage/lcov-report/src/card/index.html +24 -9
- package/coverage/lcov-report/src/card/styles.ts.html +58 -31
- package/coverage/lcov-report/src/chip/Chip.tsx.html +1 -1
- package/coverage/lcov-report/src/chip/index.html +7 -7
- package/coverage/lcov-report/src/chip/styles.ts.html +9 -12
- package/coverage/lcov-report/src/cssUtils.ts.html +53 -53
- package/coverage/lcov-report/src/delegateEvent.ts.html +109 -109
- package/coverage/lcov-report/src/dialog/Dialog.tsx.html +1 -1
- package/coverage/lcov-report/src/dialog/DialogContainer.tsx.html +1 -1
- package/coverage/lcov-report/src/dialog/DialogContent.tsx.html +1 -1
- package/coverage/lcov-report/src/dialog/DialogFooter.tsx.html +1 -1
- package/coverage/lcov-report/src/dialog/DialogHeader.tsx.html +1 -1
- package/coverage/lcov-report/src/dialog/DialogTitle.tsx.html +1 -1
- package/coverage/lcov-report/src/dialog/FixedDialog.tsx.html +1 -1
- package/coverage/lcov-report/src/dialog/NestedDialogProvider.ts.html +1 -1
- package/coverage/lcov-report/src/dialog/index.html +129 -9
- package/coverage/lcov-report/src/dialog/styles.ts.html +1 -1
- package/coverage/lcov-report/src/divider/Divider.tsx.html +4 -7
- package/coverage/lcov-report/src/divider/index.html +5 -5
- package/coverage/lcov-report/src/divider/styles.ts.html +1 -1
- package/coverage/lcov-report/src/draggable/index.html +27 -27
- package/coverage/lcov-report/src/draggable/useDraggable.ts.html +47 -44
- package/coverage/lcov-report/src/draggable/utils.ts.html +29 -131
- package/coverage/lcov-report/src/expansion-panel/ExpansionList.tsx.html +1 -1
- package/coverage/lcov-report/src/expansion-panel/ExpansionPanel.tsx.html +1 -1
- package/coverage/lcov-report/src/expansion-panel/ExpansionPanelHeader.tsx.html +1 -1
- package/coverage/lcov-report/src/expansion-panel/index.html +8 -8
- package/coverage/lcov-report/src/expansion-panel/useExpansionList.ts.html +1 -1
- package/coverage/lcov-report/src/expansion-panel/useExpansionPanels.ts.html +36 -24
- package/coverage/lcov-report/src/focus/index.html +1 -1
- package/coverage/lcov-report/src/focus/useFocusContainer.ts.html +1 -1
- package/coverage/lcov-report/src/focus/utils.ts.html +1 -1
- package/coverage/lcov-report/src/form/Checkbox.tsx.html +1 -1
- package/coverage/lcov-report/src/form/Fieldset.tsx.html +1 -1
- package/coverage/lcov-report/src/form/FileInput.tsx.html +1 -1
- package/coverage/lcov-report/src/form/Form.tsx.html +1 -1
- package/coverage/lcov-report/src/form/FormMessage.tsx.html +1 -1
- package/coverage/lcov-report/src/form/FormMessageContainer.tsx.html +5 -5
- package/coverage/lcov-report/src/form/FormMessageCounter.tsx.html +1 -1
- package/coverage/lcov-report/src/form/InputToggle.tsx.html +110 -110
- package/coverage/lcov-report/src/form/InputToggleIcon.tsx.html +63 -63
- package/coverage/lcov-report/src/form/Label.tsx.html +98 -98
- package/coverage/lcov-report/src/form/Legend.tsx.html +1 -1
- package/coverage/lcov-report/src/form/MenuItemCheckbox.tsx.html +1 -1
- package/coverage/lcov-report/src/form/MenuItemFileInput.tsx.html +1 -1
- package/coverage/lcov-report/src/form/MenuItemInputToggle.tsx.html +2 -2
- package/coverage/lcov-report/src/form/MenuItemRadio.tsx.html +1 -1
- package/coverage/lcov-report/src/form/MenuItemSwitch.tsx.html +1 -1
- package/coverage/lcov-report/src/form/MenuItemTextField.tsx.html +1 -1
- package/coverage/lcov-report/src/form/NativeSelect.tsx.html +1 -1
- package/coverage/lcov-report/src/form/OptGroup.tsx.html +1 -1
- package/coverage/lcov-report/src/form/Option.tsx.html +1 -1
- package/coverage/lcov-report/src/form/Password.tsx.html +1 -1
- package/coverage/lcov-report/src/form/Radio.tsx.html +3 -3
- package/coverage/lcov-report/src/form/Select.tsx.html +29 -5
- package/coverage/lcov-report/src/form/SelectValue.tsx.html +1 -1
- package/coverage/lcov-report/src/form/Slider.tsx.html +1 -1
- package/coverage/lcov-report/src/form/SliderContainer.tsx.html +1 -1
- package/coverage/lcov-report/src/form/SliderMark.tsx.html +1 -1
- package/coverage/lcov-report/src/form/SliderMarkLabel.tsx.html +1 -1
- package/coverage/lcov-report/src/form/SliderThumb.tsx.html +1 -1
- package/coverage/lcov-report/src/form/SliderTrack.tsx.html +1 -1
- package/coverage/lcov-report/src/form/SliderValueMarks.tsx.html +1 -1
- package/coverage/lcov-report/src/form/SliderValueTooltip.tsx.html +1 -1
- package/coverage/lcov-report/src/form/Switch.tsx.html +1 -1
- package/coverage/lcov-report/src/form/SwitchTrack.tsx.html +1 -1
- package/coverage/lcov-report/src/form/TextArea.tsx.html +2 -2
- package/coverage/lcov-report/src/form/TextField.tsx.html +1 -1
- package/coverage/lcov-report/src/form/TextFieldAddon.tsx.html +1 -1
- package/coverage/lcov-report/src/form/TextFieldContainer.tsx.html +1 -1
- package/coverage/lcov-report/src/form/TextFieldContainerStyles.ts.html +8 -8
- package/coverage/lcov-report/src/form/fileUtils.ts.html +1 -1
- package/coverage/lcov-report/src/form/formConfig.ts.html +1 -1
- package/coverage/lcov-report/src/form/formMessageStyles.ts.html +1 -1
- package/coverage/lcov-report/src/form/index.html +940 -10
- package/coverage/lcov-report/src/form/inputToggleStyles.ts.html +30 -30
- package/coverage/lcov-report/src/form/nativeSelectStyles.ts.html +1 -1
- package/coverage/lcov-report/src/form/optionStyles.ts.html +1 -1
- package/coverage/lcov-report/src/form/passwordStyles.ts.html +1 -1
- package/coverage/lcov-report/src/form/selectStyles.ts.html +1 -1
- package/coverage/lcov-report/src/form/selectUtils.ts.html +1 -1
- package/coverage/lcov-report/src/form/sliderUtils.ts.html +1 -1
- package/coverage/lcov-report/src/form/switchStyles.ts.html +1 -1
- package/coverage/lcov-report/src/form/textAreaStyles.ts.html +3 -3
- package/coverage/lcov-report/src/form/textFieldStyles.ts.html +1 -1
- package/coverage/lcov-report/src/form/useCheckboxGroup.ts.html +1 -1
- package/coverage/lcov-report/src/form/useFileUpload.ts.html +1 -1
- package/coverage/lcov-report/src/form/useListboxProvider.ts.html +1 -1
- package/coverage/lcov-report/src/form/useNumberField.ts.html +1 -1
- package/coverage/lcov-report/src/form/useRadioGroup.ts.html +47 -47
- package/coverage/lcov-report/src/form/useRangeSlider.ts.html +1 -1
- package/coverage/lcov-report/src/form/useResizingTextArea.ts.html +1 -1
- package/coverage/lcov-report/src/form/useSlider.ts.html +1 -1
- package/coverage/lcov-report/src/form/useTextField.ts.html +1 -1
- package/coverage/lcov-report/src/form/utils.ts.html +1 -1
- package/coverage/lcov-report/src/form/validation.ts.html +1 -1
- package/coverage/lcov-report/src/hoverMode/index.html +1 -1
- package/coverage/lcov-report/src/hoverMode/useHoverMode.ts.html +98 -98
- package/coverage/lcov-report/src/hoverMode/useHoverModeProvider.ts.html +19 -19
- package/coverage/lcov-report/src/icon/FontIcon.tsx.html +28 -28
- package/coverage/lcov-report/src/icon/IconRotator.tsx.html +5 -8
- package/coverage/lcov-report/src/icon/MaterialIcon.tsx.html +1 -1
- package/coverage/lcov-report/src/icon/MaterialSymbol.tsx.html +1 -1
- package/coverage/lcov-report/src/icon/SVGIcon.tsx.html +1 -1
- package/coverage/lcov-report/src/icon/TextIconSpacing.tsx.html +1 -1
- package/coverage/lcov-report/src/icon/iconConfig.tsx.html +8 -8
- package/coverage/lcov-report/src/icon/index.html +7 -7
- package/coverage/lcov-report/src/icon/material.ts.html +1 -1
- package/coverage/lcov-report/src/icon/materialConfig.ts.html +1 -1
- package/coverage/lcov-report/src/icon/styles.ts.html +38 -38
- package/coverage/lcov-report/src/index.html +354 -9
- package/coverage/lcov-report/src/interaction/Ripple.tsx.html +1 -1
- package/coverage/lcov-report/src/interaction/RippleContainer.tsx.html +1 -1
- package/coverage/lcov-report/src/interaction/UserInteractionModeProvider.tsx.html +87 -87
- package/coverage/lcov-report/src/interaction/config.ts.html +7 -7
- package/coverage/lcov-report/src/interaction/index.html +1 -1
- package/coverage/lcov-report/src/interaction/useElementInteraction.tsx.html +123 -123
- package/coverage/lcov-report/src/interaction/useHigherContrastChildren.tsx.html +17 -17
- package/coverage/lcov-report/src/interaction/utils.ts.html +1 -1
- package/coverage/lcov-report/src/layout/LayoutAppBar.tsx.html +1 -1
- package/coverage/lcov-report/src/layout/LayoutNav.tsx.html +60 -60
- package/coverage/lcov-report/src/layout/LayoutWindowSplitter.tsx.html +1 -1
- package/coverage/lcov-report/src/layout/Main.tsx.html +1 -1
- package/coverage/lcov-report/src/layout/index.html +15 -15
- package/coverage/lcov-report/src/layout/layoutNavStyles.ts.html +5 -5
- package/coverage/lcov-report/src/layout/layoutWindowSplitterStyles.ts.html +1 -1
- package/coverage/lcov-report/src/layout/mainStyles.ts.html +1 -1
- package/coverage/lcov-report/src/layout/useExpandableLayout.ts.html +1 -1
- package/coverage/lcov-report/src/layout/useHorizontalLayoutTransition.ts.html +1 -1
- package/coverage/lcov-report/src/layout/useLayoutAppBarHeight.ts.html +20 -32
- package/coverage/lcov-report/src/layout/useLayoutTree.ts.html +1 -1
- package/coverage/lcov-report/src/layout/useLayoutWindowSplitter.ts.html +1 -1
- package/coverage/lcov-report/src/layout/useMainTabIndex.ts.html +1 -1
- package/coverage/lcov-report/src/layout/useResizableLayout.ts.html +1 -1
- package/coverage/lcov-report/src/layout/useTemporaryLayout.ts.html +1 -1
- package/coverage/lcov-report/src/link/Link.tsx.html +1 -1
- package/coverage/lcov-report/src/link/SkipToMainContent.tsx.html +1 -1
- package/coverage/lcov-report/src/link/index.html +1 -1
- package/coverage/lcov-report/src/link/styles.ts.html +1 -1
- package/coverage/lcov-report/src/list/List.tsx.html +30 -30
- package/coverage/lcov-report/src/list/ListItem.tsx.html +37 -16
- package/coverage/lcov-report/src/list/ListItemAddon.tsx.html +13 -7
- package/coverage/lcov-report/src/list/ListItemChildren.tsx.html +12 -6
- package/coverage/lcov-report/src/list/ListItemLink.tsx.html +4 -4
- package/coverage/lcov-report/src/list/ListItemText.tsx.html +1 -1
- package/coverage/lcov-report/src/list/ListSubheader.tsx.html +1 -1
- package/coverage/lcov-report/src/list/getListItemHeight.ts.html +1 -1
- package/coverage/lcov-report/src/list/index.html +11 -11
- package/coverage/lcov-report/src/list/listItemStyles.ts.html +39 -9
- package/coverage/lcov-report/src/media-queries/AppSizeProvider.tsx.html +54 -54
- package/coverage/lcov-report/src/media-queries/appSize.ts.html +1 -1
- package/coverage/lcov-report/src/media-queries/index.html +1 -1
- package/coverage/lcov-report/src/media-queries/useMediaQuery.ts.html +25 -25
- package/coverage/lcov-report/src/menu/DropdownMenu.tsx.html +1 -1
- package/coverage/lcov-report/src/menu/Menu.tsx.html +2 -2
- package/coverage/lcov-report/src/menu/MenuBar.tsx.html +1 -1
- package/coverage/lcov-report/src/menu/MenuButton.tsx.html +1 -1
- package/coverage/lcov-report/src/menu/MenuConfigurationProvider.tsx.html +1 -1
- package/coverage/lcov-report/src/menu/MenuItem.tsx.html +1 -1
- package/coverage/lcov-report/src/menu/MenuItemButton.tsx.html +1 -1
- package/coverage/lcov-report/src/menu/MenuItemGroup.tsx.html +1 -1
- package/coverage/lcov-report/src/menu/MenuItemSeparator.tsx.html +1 -1
- package/coverage/lcov-report/src/menu/MenuSheet.tsx.html +1 -1
- package/coverage/lcov-report/src/menu/MenuVisibilityProvider.tsx.html +1 -1
- package/coverage/lcov-report/src/menu/MenuWidget.tsx.html +1 -1
- package/coverage/lcov-report/src/menu/MenuWidgetKeyboardProvider.tsx.html +1 -1
- package/coverage/lcov-report/src/menu/index.html +1 -1
- package/coverage/lcov-report/src/menu/useContextMenu.ts.html +1 -1
- package/coverage/lcov-report/src/menu/useMenuBarProvider.ts.html +1 -1
- package/coverage/lcov-report/src/menu/utils.ts.html +1 -1
- package/coverage/lcov-report/src/movement/constants.ts.html +1 -1
- package/coverage/lcov-report/src/movement/findMatchIndex.ts.html +1 -1
- package/coverage/lcov-report/src/movement/index.html +1 -1
- package/coverage/lcov-report/src/movement/useKeyboardMovementProvider.ts.html +3 -3
- package/coverage/lcov-report/src/movement/utils.ts.html +1 -1
- package/coverage/lcov-report/src/overlay/Overlay.tsx.html +1 -1
- package/coverage/lcov-report/src/overlay/index.html +1 -1
- package/coverage/lcov-report/src/overlay/overlayStyles.ts.html +1 -1
- package/coverage/lcov-report/src/portal/Portal.tsx.html +7 -7
- package/coverage/lcov-report/src/portal/PortalContainerProvider.tsx.html +59 -35
- package/coverage/lcov-report/src/portal/index.html +7 -7
- package/coverage/lcov-report/src/positioning/constants.ts.html +1 -1
- package/coverage/lcov-report/src/positioning/createHorizontalPosition.ts.html +47 -47
- package/coverage/lcov-report/src/positioning/createVerticalPosition.ts.html +55 -55
- package/coverage/lcov-report/src/positioning/getFixedPosition.ts.html +89 -89
- package/coverage/lcov-report/src/positioning/index.html +1 -1
- package/coverage/lcov-report/src/positioning/useFixedPositioning.ts.html +193 -193
- package/coverage/lcov-report/src/positioning/utils.ts.html +59 -59
- package/coverage/lcov-report/src/progress/CircularProgress.tsx.html +3 -3
- package/coverage/lcov-report/src/progress/LinearProgress.tsx.html +3 -3
- package/coverage/lcov-report/src/progress/getProgressA11y.ts.html +1 -1
- package/coverage/lcov-report/src/progress/index.html +20 -5
- package/coverage/lcov-report/src/responsive-item/ResponsiveItemContainer.tsx.html +1 -1
- package/coverage/lcov-report/src/responsive-item/ResponsiveItemOverlay.tsx.html +1 -1
- package/coverage/lcov-report/src/responsive-item/index.html +1 -1
- package/coverage/lcov-report/src/responsive-item/styles.ts.html +1 -1
- package/coverage/lcov-report/src/scroll/ScrollLock.tsx.html +1 -1
- package/coverage/lcov-report/src/scroll/getScrollbarWidth.ts.html +1 -1
- package/coverage/lcov-report/src/scroll/index.html +1 -1
- package/coverage/lcov-report/src/scroll/useScrollLock.ts.html +1 -1
- package/coverage/lcov-report/src/segmented-button/SegmentedButton.tsx.html +1 -1
- package/coverage/lcov-report/src/segmented-button/SegmentedButtonContainer.tsx.html +1 -1
- package/coverage/lcov-report/src/segmented-button/index.html +1 -1
- package/coverage/lcov-report/src/segmented-button/segmentedButtonContainerStyles.ts.html +1 -1
- package/coverage/lcov-report/src/segmented-button/segmentedButtonStyles.ts.html +1 -1
- package/coverage/lcov-report/src/sheet/Sheet.tsx.html +1 -1
- package/coverage/lcov-report/src/sheet/index.html +5 -5
- package/coverage/lcov-report/src/sheet/styles.ts.html +45 -48
- package/coverage/lcov-report/src/snackbar/DefaultToastRenderer.tsx.html +80 -80
- package/coverage/lcov-report/src/snackbar/Snackbar.tsx.html +21 -45
- package/coverage/lcov-report/src/snackbar/Toast.tsx.html +108 -93
- package/coverage/lcov-report/src/snackbar/ToastActionButton.tsx.html +1 -1
- package/coverage/lcov-report/src/snackbar/ToastCloseButton.tsx.html +1 -1
- package/coverage/lcov-report/src/snackbar/ToastContent.tsx.html +48 -48
- package/coverage/lcov-report/src/snackbar/ToastManager.tsx.html +278 -275
- package/coverage/lcov-report/src/snackbar/ToastManagerProvider.tsx.html +6 -6
- package/coverage/lcov-report/src/snackbar/index.html +19 -19
- package/coverage/lcov-report/src/snackbar/snackbarStyles.ts.html +15 -15
- package/coverage/lcov-report/src/snackbar/toastContentStyles.ts.html +14 -14
- package/coverage/lcov-report/src/snackbar/toastStyles.ts.html +27 -27
- package/coverage/lcov-report/src/snackbar/useCurrentToastActions.ts.html +1 -1
- package/coverage/lcov-report/src/suspense/CircularProgressSuspense.tsx.html +1 -1
- package/coverage/lcov-report/src/suspense/NullSuspense.tsx.html +1 -1
- package/coverage/lcov-report/src/suspense/index.html +20 -5
- package/coverage/lcov-report/src/table/Table.tsx.html +45 -114
- package/coverage/lcov-report/src/table/TableBody.tsx.html +43 -43
- package/coverage/lcov-report/src/table/TableCell.tsx.html +109 -298
- package/coverage/lcov-report/src/table/TableCellContent.tsx.html +81 -27
- package/coverage/lcov-report/src/table/TableCheckbox.tsx.html +16 -10
- package/coverage/lcov-report/src/table/TableConfigurationProvider.tsx.html +20 -20
- package/coverage/lcov-report/src/table/TableContainer.tsx.html +7 -28
- package/coverage/lcov-report/src/table/TableContainerProvider.tsx.html +1 -1
- package/coverage/lcov-report/src/table/TableFooter.tsx.html +64 -43
- package/coverage/lcov-report/src/table/TableHeader.tsx.html +41 -92
- package/coverage/lcov-report/src/table/TableRadio.tsx.html +676 -0
- package/coverage/lcov-report/src/table/TableRow.tsx.html +38 -119
- package/coverage/lcov-report/src/table/index.html +151 -46
- package/coverage/lcov-report/src/table/tableCellStyles.ts.html +334 -0
- package/coverage/lcov-report/src/table/tableContainerStyles.ts.html +142 -0
- package/coverage/lcov-report/src/table/tableFooterStyles.ts.html +166 -0
- package/coverage/lcov-report/src/table/tableHeaderStyles.ts.html +172 -0
- package/coverage/lcov-report/src/table/tableRowStyles.ts.html +169 -0
- package/coverage/lcov-report/src/table/tableStyles.ts.html +157 -0
- package/coverage/lcov-report/src/tabs/Tab.tsx.html +263 -143
- package/coverage/lcov-report/src/tabs/TabList.tsx.html +1 -1
- package/coverage/lcov-report/src/tabs/TabListScrollButton.tsx.html +1 -1
- package/coverage/lcov-report/src/tabs/index.html +25 -25
- package/coverage/lcov-report/src/tabs/tabIndicatorStyles.ts.html +37 -7
- package/coverage/lcov-report/src/tabs/tabListScrollButtonStyles.ts.html +1 -1
- package/coverage/lcov-report/src/tabs/tabListStyles.ts.html +2 -2
- package/coverage/lcov-report/src/tabs/tabStyles.ts.html +64 -28
- package/coverage/lcov-report/src/tabs/useTabList.ts.html +44 -38
- package/coverage/lcov-report/src/tabs/useTabs.ts.html +1 -1
- package/coverage/lcov-report/src/tabs/utils.ts.html +3 -3
- package/coverage/lcov-report/src/test-utils/IntersectionObserver.ts.html +1 -1
- package/coverage/lcov-report/src/test-utils/ResizeObserver.ts.html +205 -205
- package/coverage/lcov-report/src/test-utils/data-testid.ts.html +1 -1
- package/coverage/lcov-report/src/test-utils/drag.ts.html +1 -1
- package/coverage/lcov-report/src/test-utils/index.html +4 -4
- package/coverage/lcov-report/src/test-utils/jest-setup.ts.html +9 -9
- package/coverage/lcov-report/src/test-utils/matchMedia.ts.html +4 -4
- package/coverage/lcov-report/src/test-utils/polyfills/IntersectionObserver.ts.html +4 -4
- package/coverage/lcov-report/src/test-utils/polyfills/ResizeObserver.ts.html +3 -3
- package/coverage/lcov-report/src/test-utils/polyfills/index.html +1 -1
- package/coverage/lcov-report/src/test-utils/polyfills/matchMedia.ts.html +6 -6
- package/coverage/lcov-report/src/test-utils/polyfills/offsetParent.ts.html +14 -14
- package/coverage/lcov-report/src/test-utils/polyfills/scrollIntoView.ts.html +5 -5
- package/coverage/lcov-report/src/test-utils/render.tsx.html +21 -21
- package/coverage/lcov-report/src/test-utils/timers.ts.html +1 -1
- package/coverage/lcov-report/src/theme/LocalStorageColorSchemeProvider.tsx.html +1 -1
- package/coverage/lcov-report/src/theme/ThemeProvider.tsx.html +1 -1
- package/coverage/lcov-report/src/theme/colors.ts.html +1 -1
- package/coverage/lcov-report/src/theme/cssVars.ts.html +1 -1
- package/coverage/lcov-report/src/theme/index.html +1 -1
- package/coverage/lcov-report/src/theme/useCSSVariables.ts.html +25 -25
- package/coverage/lcov-report/src/theme/useColorScheme.ts.html +1 -1
- package/coverage/lcov-report/src/theme/useColorSchemeMetaTag.ts.html +1 -1
- package/coverage/lcov-report/src/theme/useColorSchemeProvider.ts.html +1 -1
- package/coverage/lcov-report/src/theme/usePrefersColorScheme.ts.html +1 -1
- package/coverage/lcov-report/src/theme/utils.ts.html +1 -1
- package/coverage/lcov-report/src/tooltip/Tooltip.tsx.html +62 -62
- package/coverage/lcov-report/src/tooltip/TooltipHoverModeProvider.tsx.html +3 -3
- package/coverage/lcov-report/src/tooltip/constants.ts.html +1 -1
- package/coverage/lcov-report/src/tooltip/index.html +9 -9
- package/coverage/lcov-report/src/tooltip/tooltipStyles.ts.html +12 -12
- package/coverage/lcov-report/src/tooltip/useTooltip.ts.html +243 -222
- package/coverage/lcov-report/src/tooltip/useTooltipPosition.ts.html +27 -27
- package/coverage/lcov-report/src/tooltip/utils.ts.html +22 -22
- package/coverage/lcov-report/src/transition/CSSTransition.tsx.html +1 -1
- package/coverage/lcov-report/src/transition/Collapse.tsx.html +1 -1
- package/coverage/lcov-report/src/transition/CrossFade.tsx.html +1 -1
- package/coverage/lcov-report/src/transition/ScaleTransition.tsx.html +1 -1
- package/coverage/lcov-report/src/transition/SkeletonPlaceholder.tsx.html +374 -338
- package/coverage/lcov-report/src/transition/Slide.tsx.html +1 -1
- package/coverage/lcov-report/src/transition/SlideContainer.tsx.html +1 -1
- package/coverage/lcov-report/src/transition/collapseStyles.ts.html +13 -13
- package/coverage/lcov-report/src/transition/config.ts.html +5 -5
- package/coverage/lcov-report/src/transition/index.html +47 -32
- package/coverage/lcov-report/src/transition/maxWidthTransition.ts.html +1 -1
- package/coverage/lcov-report/src/transition/skeletonPlaceholderUtils.ts.html +400 -0
- package/coverage/lcov-report/src/transition/useCSSTransition.ts.html +68 -68
- package/coverage/lcov-report/src/transition/useCarousel.ts.html +1 -1
- package/coverage/lcov-report/src/transition/useCollapseTransition.ts.html +87 -87
- package/coverage/lcov-report/src/transition/useCrossFadeTransition.ts.html +1 -1
- package/coverage/lcov-report/src/transition/useMaxWidthTransition.ts.html +1 -1
- package/coverage/lcov-report/src/transition/useScaleTransition.ts.html +18 -18
- package/coverage/lcov-report/src/transition/useSkeletonPlaceholder.ts.html +607 -562
- package/coverage/lcov-report/src/transition/useSlideTransition.ts.html +1 -1
- package/coverage/lcov-report/src/transition/useTransition.ts.html +237 -237
- package/coverage/lcov-report/src/transition/utils.ts.html +43 -43
- package/coverage/lcov-report/src/tree/DefaultTreeItemRenderer.tsx.html +18 -6
- package/coverage/lcov-report/src/tree/Tree.tsx.html +20 -8
- package/coverage/lcov-report/src/tree/TreeGroup.tsx.html +45 -45
- package/coverage/lcov-report/src/tree/TreeItem.tsx.html +7 -10
- package/coverage/lcov-report/src/tree/TreeItemExpander.tsx.html +1 -1
- package/coverage/lcov-report/src/tree/TreeProvider.tsx.html +8 -8
- package/coverage/lcov-report/src/tree/index.html +11 -11
- package/coverage/lcov-report/src/tree/styles.ts.html +8 -35
- package/coverage/lcov-report/src/tree/useTree.ts.html +1 -1
- package/coverage/lcov-report/src/tree/useTreeExpansion.ts.html +1 -1
- package/coverage/lcov-report/src/tree/useTreeItems.ts.html +1 -1
- package/coverage/lcov-report/src/tree/useTreeMovement.ts.html +1 -1
- package/coverage/lcov-report/src/tree/useTreeSelection.ts.html +1 -1
- package/coverage/lcov-report/src/tree/utils.ts.html +1 -1
- package/coverage/lcov-report/src/typography/SrOnly.tsx.html +1 -1
- package/coverage/lcov-report/src/typography/TextContainer.tsx.html +1 -1
- package/coverage/lcov-report/src/typography/Typography.tsx.html +1 -1
- package/coverage/lcov-report/src/typography/WritingDirectionProvider.tsx.html +1 -1
- package/coverage/lcov-report/src/typography/index.html +1 -1
- package/coverage/lcov-report/src/useAsyncAction.ts.html +1 -1
- package/coverage/lcov-report/src/useDebouncedFunction.ts.html +1 -1
- package/coverage/lcov-report/src/useDropzone.ts.html +1 -1
- package/coverage/lcov-report/src/useElementSize.ts.html +334 -0
- package/coverage/lcov-report/src/useEnsuredId.ts.html +8 -8
- package/coverage/lcov-report/src/useEnsuredRef.ts.html +14 -14
- package/coverage/lcov-report/src/useEnsuredState.ts.html +1 -1
- package/coverage/lcov-report/src/useHtmlClassName.ts.html +1 -1
- package/coverage/lcov-report/src/useIntersectionObserver.ts.html +1 -1
- package/coverage/lcov-report/src/useIsomorphicLayoutEffect.ts.html +1 -1
- package/coverage/lcov-report/src/useLocalStorage.ts.html +1 -1
- package/coverage/lcov-report/src/useOrientation.ts.html +32 -32
- package/coverage/lcov-report/src/usePageInactive.ts.html +30 -30
- package/coverage/lcov-report/src/useResizeListener.ts.html +38 -32
- package/coverage/lcov-report/src/useResizeObserver.ts.html +68 -179
- package/coverage/lcov-report/src/useThrottledFunction.ts.html +1 -1
- package/coverage/lcov-report/src/useToggle.ts.html +1 -1
- package/coverage/lcov-report/src/useUnmounted.ts.html +1 -1
- package/coverage/lcov-report/src/useWindowSize.ts.html +124 -94
- package/coverage/lcov-report/src/utils/RenderRecursively.tsx.html +1 -1
- package/coverage/lcov-report/src/utils/alphaNumericSort.ts.html +1 -1
- package/coverage/lcov-report/src/utils/applyRef.ts.html +11 -11
- package/coverage/lcov-report/src/utils/bem.ts.html +45 -45
- package/coverage/lcov-report/src/utils/filters.ts.html +1 -1
- package/coverage/lcov-report/src/utils/getClientPosition.ts.html +1 -1
- package/coverage/lcov-report/src/utils/getMiddleOfRange.ts.html +163 -0
- package/coverage/lcov-report/src/utils/getPercentage.ts.html +9 -9
- package/coverage/lcov-report/src/utils/getRangeDefaultValue.ts.html +66 -87
- package/coverage/lcov-report/src/utils/getRangeSteps.ts.html +7 -7
- package/coverage/lcov-report/src/utils/identity.ts.html +1 -1
- package/coverage/lcov-report/src/utils/index.html +46 -31
- package/coverage/lcov-report/src/utils/isElementVisible.ts.html +1 -1
- package/coverage/lcov-report/src/utils/isValidNumber.ts.html +118 -0
- package/coverage/lcov-report/src/utils/loop.ts.html +1 -1
- package/coverage/lcov-report/src/utils/nearest.ts.html +21 -21
- package/coverage/lcov-report/src/utils/parseCssLengthUnit.ts.html +18 -18
- package/coverage/lcov-report/src/utils/randomInt.ts.html +52 -52
- package/coverage/lcov-report/src/utils/wait.ts.html +1 -1
- package/coverage/lcov-report/src/utils/withinRange.ts.html +1 -1
- package/coverage/lcov-report/src/window-splitter/WindowSplitter.tsx.html +1 -1
- package/coverage/lcov-report/src/window-splitter/index.html +14 -14
- package/coverage/lcov-report/src/window-splitter/useWindowSplitter.ts.html +19 -67
- package/coverage/lcov-report/src/window-splitter/useWindowSplitterMaxValue.ts.html +256 -0
- package/coverage/lcov-report/suspense/CircularProgressSuspense.tsx.html +283 -0
- package/coverage/lcov-report/suspense/NullSuspense.tsx.html +202 -0
- package/coverage/lcov-report/suspense/index.html +131 -0
- package/coverage/lcov-report/tabIndicatorStyles.ts.html +43 -13
- package/coverage/lcov-report/tabListStyles.ts.html +35 -26
- package/coverage/lcov-report/tabStyles.ts.html +68 -26
- package/coverage/lcov-report/tabs/Tab.tsx.html +233 -143
- package/coverage/lcov-report/tabs/TabList.tsx.html +85 -85
- package/coverage/lcov-report/tabs/index.html +56 -11
- package/coverage/lcov-report/tabs/tabIndicatorStyles.ts.html +187 -0
- package/coverage/lcov-report/tabs/tabListStyles.ts.html +241 -0
- package/coverage/lcov-report/tabs/tabStyles.ts.html +253 -0
- package/coverage/lcov-report/tabs/useTabList.ts.html +736 -0
- package/coverage/lcov-report/tabs/useTabs.ts.html +1 -1
- package/coverage/lcov-report/tabs/utils.ts.html +1 -1
- package/coverage/lcov-report/test-utils/index.html +21 -21
- package/coverage/lcov-report/test-utils/use.ts.html +187 -0
- package/coverage/lcov-report/tooltip/Tooltip.tsx.html +62 -62
- package/coverage/lcov-report/tooltip/index.html +10 -70
- package/coverage/lcov-report/tooltip/useTooltip.ts.html +243 -222
- package/coverage/lcov-report/transition/SkeletonPlaceholder.tsx.html +595 -0
- package/coverage/lcov-report/transition/config.ts.html +5 -5
- package/coverage/lcov-report/transition/index.html +1 -1
- package/coverage/lcov-report/transition/skeletonPlaceholderUtils.ts.html +400 -0
- package/coverage/lcov-report/transition/useSkeletonPlaceholder.ts.html +952 -0
- package/coverage/lcov-report/tree/TreeItem.tsx.html +7 -10
- package/coverage/lcov-report/tree/index.html +12 -27
- package/coverage/lcov-report/tree/styles.ts.html +538 -0
- package/coverage/lcov-report/typography/Typography.tsx.html +110 -110
- package/coverage/lcov-report/typography/WritingDirectionProvider.tsx.html +75 -75
- package/coverage/lcov-report/typography/index.html +15 -15
- package/coverage/lcov-report/useSkeletonPlaceholder.ts.html +952 -0
- package/coverage/lcov-report/useTabList.ts.html +142 -136
- package/coverage/lcov-report/useWindowSplitter.ts.html +640 -0
- package/coverage/lcov-report/useWindowSplitterMaxValue.ts.html +256 -0
- package/coverage/lcov-report/utils/index.html +16 -31
- package/coverage/lcov-report/utils/isElementVisible.ts.html +14 -14
- package/coverage/lcov-report/utils/randomInt.ts.html +148 -0
- package/coverage/lcov-report/utils/wait.ts.html +1 -1
- package/coverage/lcov-report/window-splitter/index.html +21 -36
- package/coverage/lcov-report/window-splitter/useWindowSplitter.ts.html +406 -328
- package/coverage/lcov.info +580 -0
- package/dist/_box-shadows.scss +12 -2
- package/dist/_core.scss +1 -3
- package/dist/_utils.scss +22 -0
- package/dist/app-bar/AppBar.d.ts +4 -9
- package/dist/app-bar/_app-bar.scss +7 -9
- package/dist/avatar/Avatar.d.ts +1 -1
- package/dist/badge/_badge.scss +12 -7
- package/dist/button/TooltippedButton.d.ts +62 -0
- package/dist/card/ClickableCard.d.ts +42 -0
- package/dist/card/_card.scss +15 -9
- package/dist/card/styles.d.ts +8 -0
- package/dist/dialog/_dialog.scss +28 -15
- package/dist/divider/_divider.scss +9 -10
- package/dist/draggable/useDraggable.d.ts +12 -23
- package/dist/draggable/utils.d.ts +4 -17
- package/dist/expansion-panel/_expansion-panel.scss +25 -16
- package/dist/expansion-panel/useExpansionPanels.d.ts +5 -3
- package/dist/form/MenuItemInputToggle.d.ts +1 -1
- package/dist/form/_form.scss +41 -23
- package/dist/icon/_icon.scss +7 -2
- package/dist/index.d.ts +5 -0
- package/dist/interaction/_interaction.scss +12 -9
- package/dist/link/_link.scss +26 -12
- package/dist/list/ListItem.d.ts +8 -3
- package/dist/list/_list.scss +29 -18
- package/dist/list/getListItemHeight.d.ts +0 -1
- package/dist/list/listItemStyles.d.ts +9 -1
- package/dist/list/types.d.ts +15 -5
- package/dist/menu/Menu.d.ts +1 -1
- package/dist/menu/_menu.scss +3 -16
- package/dist/portal/PortalContainerProvider.d.ts +2 -2
- package/dist/sheet/styles.d.ts +14 -15
- package/dist/src/CoreProviders.js.map +1 -0
- package/dist/src/NoSsr.js.map +1 -0
- package/dist/src/SsrProvider.js.map +1 -0
- package/dist/src/app-bar/AppBar.js +96 -0
- package/dist/src/app-bar/AppBar.js.map +1 -0
- package/dist/src/app-bar/AppBarTitle.js.map +1 -0
- package/dist/src/avatar/Avatar.js.map +1 -0
- package/dist/src/avatar/styles.js.map +1 -0
- package/dist/src/badge/Badge.js.map +1 -0
- package/dist/src/box/Box.js.map +1 -0
- package/dist/src/box/styles.js.map +1 -0
- package/dist/src/button/AsyncButton.js.map +1 -0
- package/dist/src/button/Button.js.map +1 -0
- package/dist/src/button/ButtonUnstyled.js.map +1 -0
- package/dist/src/button/FloatingActionButton.js.map +1 -0
- package/dist/src/button/TooltippedButton.js +62 -0
- package/dist/src/button/TooltippedButton.js.map +1 -0
- package/dist/src/button/buttonStyles.js.map +1 -0
- package/dist/src/button/buttonUnstyledStyles.js.map +1 -0
- package/dist/src/card/Card.js +60 -0
- package/dist/src/card/Card.js.map +1 -0
- package/dist/src/card/CardContent.js +25 -0
- package/dist/src/card/CardContent.js.map +1 -0
- package/dist/src/card/CardFooter.js.map +1 -0
- package/dist/src/card/CardHeader.js.map +1 -0
- package/dist/src/card/CardSubtitle.js.map +1 -0
- package/dist/src/card/CardTitle.js.map +1 -0
- package/dist/src/card/ClickableCard.js +73 -0
- package/dist/src/card/ClickableCard.js.map +1 -0
- package/dist/src/card/styles.js +65 -0
- package/dist/src/card/styles.js.map +1 -0
- package/dist/src/chip/Chip.js.map +1 -0
- package/dist/src/chip/styles.js.map +1 -0
- package/dist/src/cssUtils.js.map +1 -0
- package/dist/src/delegateEvent.js.map +1 -0
- package/dist/src/dialog/Dialog.js.map +1 -0
- package/dist/src/dialog/DialogContainer.js.map +1 -0
- package/dist/src/dialog/DialogContent.js.map +1 -0
- package/dist/src/dialog/DialogFooter.js.map +1 -0
- package/dist/src/dialog/DialogHeader.js.map +1 -0
- package/dist/src/dialog/DialogTitle.js.map +1 -0
- package/dist/src/dialog/FixedDialog.js.map +1 -0
- package/dist/src/dialog/NestedDialogProvider.js.map +1 -0
- package/dist/src/dialog/styles.js.map +1 -0
- package/dist/src/divider/Divider.js.map +1 -0
- package/dist/src/divider/styles.js.map +1 -0
- package/dist/src/draggable/useDraggable.js +434 -0
- package/dist/src/draggable/useDraggable.js.map +1 -0
- package/dist/src/draggable/utils.js +130 -0
- package/dist/src/draggable/utils.js.map +1 -0
- package/dist/src/expansion-panel/ExpansionList.js.map +1 -0
- package/dist/src/expansion-panel/ExpansionPanel.js.map +1 -0
- package/dist/src/expansion-panel/ExpansionPanelHeader.js.map +1 -0
- package/dist/src/expansion-panel/useExpansionList.js.map +1 -0
- package/dist/src/expansion-panel/useExpansionPanels.js +142 -0
- package/dist/src/expansion-panel/useExpansionPanels.js.map +1 -0
- package/dist/src/focus/useFocusContainer.js.map +1 -0
- package/dist/src/focus/utils.js.map +1 -0
- package/dist/src/form/Checkbox.js.map +1 -0
- package/dist/src/form/Fieldset.js.map +1 -0
- package/dist/src/form/FileInput.js.map +1 -0
- package/dist/src/form/Form.js.map +1 -0
- package/dist/src/form/FormMessage.js.map +1 -0
- package/dist/src/form/FormMessageContainer.js.map +1 -0
- package/dist/src/form/FormMessageCounter.js.map +1 -0
- package/dist/src/form/InputToggle.js.map +1 -0
- package/dist/src/form/InputToggleIcon.js.map +1 -0
- package/dist/src/form/Label.js.map +1 -0
- package/dist/src/form/Legend.js.map +1 -0
- package/dist/src/form/MenuItemCheckbox.js.map +1 -0
- package/dist/src/form/MenuItemFileInput.js.map +1 -0
- package/dist/src/form/MenuItemInputToggle.js.map +1 -0
- package/dist/src/form/MenuItemRadio.js.map +1 -0
- package/dist/src/form/MenuItemSwitch.js.map +1 -0
- package/dist/src/form/MenuItemTextField.js.map +1 -0
- package/dist/src/form/NativeSelect.js.map +1 -0
- package/dist/src/form/OptGroup.js.map +1 -0
- package/dist/src/form/Option.js.map +1 -0
- package/dist/src/form/Password.js.map +1 -0
- package/dist/src/form/Radio.js.map +1 -0
- package/dist/src/form/Select.js +304 -0
- package/dist/src/form/Select.js.map +1 -0
- package/dist/src/form/SelectValue.js.map +1 -0
- package/dist/src/form/Slider.js.map +1 -0
- package/dist/src/form/SliderContainer.js.map +1 -0
- package/dist/src/form/SliderMark.js.map +1 -0
- package/dist/src/form/SliderMarkLabel.js.map +1 -0
- package/dist/src/form/SliderThumb.js.map +1 -0
- package/dist/src/form/SliderTrack.js.map +1 -0
- package/dist/src/form/SliderValueMarks.js.map +1 -0
- package/dist/src/form/SliderValueTooltip.js.map +1 -0
- package/dist/src/form/Switch.js.map +1 -0
- package/dist/src/form/SwitchTrack.js.map +1 -0
- package/dist/src/form/TextArea.js.map +1 -0
- package/dist/src/form/TextField.js.map +1 -0
- package/dist/src/form/TextFieldAddon.js.map +1 -0
- package/dist/src/form/TextFieldContainer.js.map +1 -0
- package/dist/src/form/TextFieldContainerStyles.js.map +1 -0
- package/dist/src/form/fileUtils.js.map +1 -0
- package/dist/src/form/formConfig.js.map +1 -0
- package/dist/src/form/formMessageStyles.js.map +1 -0
- package/dist/src/form/inputToggleStyles.js.map +1 -0
- package/dist/src/form/nativeSelectStyles.js.map +1 -0
- package/dist/src/form/optionStyles.js.map +1 -0
- package/dist/src/form/passwordStyles.js.map +1 -0
- package/dist/src/form/selectStyles.js.map +1 -0
- package/dist/src/form/selectUtils.js.map +1 -0
- package/dist/src/form/sliderUtils.js.map +1 -0
- package/dist/src/form/switchStyles.js.map +1 -0
- package/dist/src/form/textAreaStyles.js.map +1 -0
- package/dist/src/form/textFieldStyles.js.map +1 -0
- package/dist/src/form/types.js.map +1 -0
- package/dist/src/form/useCheckboxGroup.js.map +1 -0
- package/dist/src/form/useFileUpload.js.map +1 -0
- package/dist/src/form/useListboxProvider.js.map +1 -0
- package/dist/src/form/useNumberField.js.map +1 -0
- package/dist/src/form/useRadioGroup.js.map +1 -0
- package/dist/src/form/useRangeSlider.js.map +1 -0
- package/dist/src/form/useResizingTextArea.js.map +1 -0
- package/dist/src/form/useSlider.js.map +1 -0
- package/dist/src/form/useTextField.js.map +1 -0
- package/dist/src/form/utils.js.map +1 -0
- package/dist/src/form/validation.js.map +1 -0
- package/dist/src/hoverMode/useHoverMode.js.map +1 -0
- package/dist/src/hoverMode/useHoverModeProvider.js.map +1 -0
- package/dist/src/icon/FontIcon.js.map +1 -0
- package/dist/src/icon/IconRotator.js +31 -0
- package/dist/src/icon/IconRotator.js.map +1 -0
- package/dist/src/icon/MaterialIcon.js.map +1 -0
- package/dist/src/icon/MaterialSymbol.js.map +1 -0
- package/dist/src/icon/SVGIcon.js.map +1 -0
- package/dist/src/icon/TextIconSpacing.js.map +1 -0
- package/dist/src/icon/iconConfig.js.map +1 -0
- package/dist/src/icon/material.js.map +1 -0
- package/dist/src/icon/materialConfig.js.map +1 -0
- package/dist/src/icon/styles.js.map +1 -0
- package/dist/src/index.js +329 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/interaction/Ripple.js.map +1 -0
- package/dist/src/interaction/RippleContainer.js.map +1 -0
- package/dist/src/interaction/UserInteractionModeProvider.js.map +1 -0
- package/dist/src/interaction/config.js.map +1 -0
- package/dist/src/interaction/types.js.map +1 -0
- package/dist/src/interaction/useElementInteraction.js.map +1 -0
- package/dist/src/interaction/useHigherContrastChildren.js.map +1 -0
- package/dist/src/interaction/utils.js.map +1 -0
- package/dist/src/layout/LayoutAppBar.js.map +1 -0
- package/dist/src/layout/LayoutNav.js.map +1 -0
- package/dist/src/layout/LayoutWindowSplitter.js.map +1 -0
- package/dist/src/layout/Main.js.map +1 -0
- package/dist/src/layout/layoutNavStyles.js.map +1 -0
- package/dist/src/layout/layoutWindowSplitterStyles.js.map +1 -0
- package/dist/src/layout/mainStyles.js.map +1 -0
- package/dist/src/layout/useExpandableLayout.js.map +1 -0
- package/dist/src/layout/useHorizontalLayoutTransition.js.map +1 -0
- package/dist/src/layout/useLayoutAppBarHeight.js +78 -0
- package/dist/src/layout/useLayoutAppBarHeight.js.map +1 -0
- package/dist/src/layout/useLayoutTree.js.map +1 -0
- package/dist/src/layout/useLayoutWindowSplitter.js.map +1 -0
- package/dist/src/layout/useMainTabIndex.js.map +1 -0
- package/dist/src/layout/useResizableLayout.js.map +1 -0
- package/dist/src/layout/useTemporaryLayout.js.map +1 -0
- package/dist/src/link/Link.js.map +1 -0
- package/dist/src/link/SkipToMainContent.js.map +1 -0
- package/dist/src/link/styles.js.map +1 -0
- package/dist/src/list/List.js.map +1 -0
- package/dist/src/list/ListItem.js +148 -0
- package/dist/src/list/ListItem.js.map +1 -0
- package/dist/src/list/ListItemAddon.js +31 -0
- package/dist/src/list/ListItemAddon.js.map +1 -0
- package/dist/src/list/ListItemChildren.js +82 -0
- package/dist/src/list/ListItemChildren.js.map +1 -0
- package/dist/src/list/ListItemLink.js +89 -0
- package/dist/src/list/ListItemLink.js.map +1 -0
- package/dist/src/list/ListItemText.js.map +1 -0
- package/dist/src/list/ListSubheader.js.map +1 -0
- package/dist/src/list/getListItemHeight.js +28 -0
- package/dist/src/list/getListItemHeight.js.map +1 -0
- package/dist/src/list/listItemStyles.js +45 -0
- package/dist/src/list/listItemStyles.js.map +1 -0
- package/dist/src/list/types.js.map +1 -0
- package/dist/src/media-queries/AppSizeProvider.js.map +1 -0
- package/dist/src/media-queries/appSize.js.map +1 -0
- package/dist/src/media-queries/useMediaQuery.js.map +1 -0
- package/dist/src/menu/DropdownMenu.js.map +1 -0
- package/dist/src/menu/Menu.js.map +1 -0
- package/dist/src/menu/MenuBar.js.map +1 -0
- package/dist/src/menu/MenuButton.js.map +1 -0
- package/dist/src/menu/MenuConfigurationProvider.js.map +1 -0
- package/dist/src/menu/MenuItem.js.map +1 -0
- package/dist/src/menu/MenuItemButton.js.map +1 -0
- package/dist/src/menu/MenuItemGroup.js.map +1 -0
- package/dist/src/menu/MenuItemSeparator.js.map +1 -0
- package/dist/src/menu/MenuSheet.js.map +1 -0
- package/dist/src/menu/MenuVisibilityProvider.js.map +1 -0
- package/dist/src/menu/MenuWidget.js.map +1 -0
- package/dist/src/menu/MenuWidgetKeyboardProvider.js.map +1 -0
- package/dist/src/menu/useContextMenu.js.map +1 -0
- package/dist/src/menu/useMenuBarProvider.js.map +1 -0
- package/dist/src/menu/utils.js.map +1 -0
- package/dist/src/movement/constants.js.map +1 -0
- package/dist/src/movement/findMatchIndex.js.map +1 -0
- package/dist/src/movement/types.js.map +1 -0
- package/dist/src/movement/useKeyboardMovementProvider.js.map +1 -0
- package/dist/src/movement/utils.js.map +1 -0
- package/dist/src/overlay/Overlay.js.map +1 -0
- package/dist/src/overlay/overlayStyles.js.map +1 -0
- package/dist/src/portal/Portal.js.map +1 -0
- package/dist/src/portal/PortalContainerProvider.js +60 -0
- package/dist/src/portal/PortalContainerProvider.js.map +1 -0
- package/dist/src/positioning/constants.js.map +1 -0
- package/dist/src/positioning/createHorizontalPosition.js.map +1 -0
- package/dist/src/positioning/createVerticalPosition.js.map +1 -0
- package/dist/src/positioning/getFixedPosition.js.map +1 -0
- package/dist/src/positioning/types.js.map +1 -0
- package/dist/src/positioning/useFixedPositioning.js.map +1 -0
- package/dist/src/positioning/utils.js.map +1 -0
- package/dist/src/progress/CircularProgress.js.map +1 -0
- package/dist/src/progress/LinearProgress.js.map +1 -0
- package/dist/src/progress/getProgressA11y.js.map +1 -0
- package/dist/src/progress/types.js.map +1 -0
- package/dist/src/responsive-item/ResponsiveItemContainer.js.map +1 -0
- package/dist/src/responsive-item/ResponsiveItemOverlay.js.map +1 -0
- package/dist/src/responsive-item/styles.js.map +1 -0
- package/dist/src/scroll/ScrollLock.js.map +1 -0
- package/dist/src/scroll/getScrollbarWidth.js.map +1 -0
- package/dist/src/scroll/useScrollLock.js.map +1 -0
- package/dist/src/segmented-button/SegmentedButton.js.map +1 -0
- package/dist/src/segmented-button/SegmentedButtonContainer.js.map +1 -0
- package/dist/src/segmented-button/segmentedButtonContainerStyles.js.map +1 -0
- package/dist/src/segmented-button/segmentedButtonStyles.js.map +1 -0
- package/dist/src/sheet/Sheet.js.map +1 -0
- package/dist/src/sheet/styles.js.map +1 -0
- package/dist/src/snackbar/DefaultToastRenderer.js.map +1 -0
- package/dist/src/snackbar/Snackbar.js.map +1 -0
- package/dist/src/snackbar/Toast.js.map +1 -0
- package/dist/src/snackbar/ToastActionButton.js.map +1 -0
- package/dist/src/snackbar/ToastCloseButton.js.map +1 -0
- package/dist/src/snackbar/ToastContent.js.map +1 -0
- package/dist/src/snackbar/ToastManager.js.map +1 -0
- package/dist/src/snackbar/ToastManagerProvider.js.map +1 -0
- package/dist/src/snackbar/snackbarStyles.js.map +1 -0
- package/dist/src/snackbar/toastContentStyles.js.map +1 -0
- package/dist/src/snackbar/toastStyles.js.map +1 -0
- package/dist/src/snackbar/useCurrentToastActions.js.map +1 -0
- package/dist/src/suspense/CircularProgressSuspense.js.map +1 -0
- package/dist/src/suspense/NullSuspense.js.map +1 -0
- package/dist/src/table/Table.js.map +1 -0
- package/dist/src/table/TableBody.js.map +1 -0
- package/dist/src/table/TableCell.js.map +1 -0
- package/dist/src/table/TableCellContent.js.map +1 -0
- package/dist/src/table/TableCheckbox.js +115 -0
- package/dist/src/table/TableCheckbox.js.map +1 -0
- package/dist/src/table/TableConfigurationProvider.js.map +1 -0
- package/dist/src/table/TableContainer.js.map +1 -0
- package/dist/src/table/TableContainerProvider.js.map +1 -0
- package/dist/src/table/TableFooter.js.map +1 -0
- package/dist/src/table/TableHeader.js.map +1 -0
- package/dist/src/table/TableRadio.js +108 -0
- package/dist/src/table/TableRadio.js.map +1 -0
- package/dist/src/table/TableRow.js.map +1 -0
- package/dist/src/table/tableCellStyles.js.map +1 -0
- package/dist/src/table/tableContainerStyles.js.map +1 -0
- package/dist/src/table/tableFooterStyles.js.map +1 -0
- package/dist/src/table/tableHeaderStyles.js.map +1 -0
- package/dist/src/table/tableRowStyles.js.map +1 -0
- package/dist/src/table/tableStyles.js.map +1 -0
- package/dist/src/table/types.js.map +1 -0
- package/dist/src/tabs/Tab.js +70 -0
- package/dist/src/tabs/Tab.js.map +1 -0
- package/dist/src/tabs/TabList.js.map +1 -0
- package/dist/src/tabs/TabListScrollButton.js.map +1 -0
- package/dist/src/tabs/tabIndicatorStyles.js +17 -0
- package/dist/src/tabs/tabIndicatorStyles.js.map +1 -0
- package/dist/src/tabs/tabListScrollButtonStyles.js.map +1 -0
- package/dist/src/tabs/tabListStyles.js +22 -0
- package/dist/src/tabs/tabListStyles.js.map +1 -0
- package/dist/src/tabs/tabStyles.js +24 -0
- package/dist/src/tabs/tabStyles.js.map +1 -0
- package/dist/src/tabs/useTabList.js +131 -0
- package/dist/src/tabs/useTabList.js.map +1 -0
- package/dist/src/tabs/useTabs.js.map +1 -0
- package/dist/src/tabs/utils.js.map +1 -0
- package/dist/src/test-utils/IntersectionObserver.js.map +1 -0
- package/dist/src/test-utils/ResizeObserver.js.map +1 -0
- package/dist/src/test-utils/data-testid.js.map +1 -0
- package/dist/src/test-utils/index.js.map +1 -0
- package/dist/src/test-utils/jest-setup.js.map +1 -0
- package/dist/src/test-utils/matchMedia.js.map +1 -0
- package/dist/src/test-utils/polyfills/IntersectionObserver.js.map +1 -0
- package/dist/src/test-utils/polyfills/ResizeObserver.js.map +1 -0
- package/dist/src/test-utils/polyfills/index.js.map +1 -0
- package/dist/src/test-utils/polyfills/matchMedia.js.map +1 -0
- package/dist/src/test-utils/polyfills/offsetParent.js.map +1 -0
- package/dist/src/test-utils/polyfills/scrollIntoView.js.map +1 -0
- package/dist/src/test-utils/render.js.map +1 -0
- package/dist/src/test-utils/timers.js.map +1 -0
- package/dist/src/theme/LocalStorageColorSchemeProvider.js.map +1 -0
- package/dist/src/theme/ThemeProvider.js.map +1 -0
- package/dist/src/theme/colors.js.map +1 -0
- package/dist/src/theme/cssVars.js.map +1 -0
- package/dist/src/theme/types.js.map +1 -0
- package/dist/src/theme/useCSSVariables.js.map +1 -0
- package/dist/src/theme/useColorScheme.js.map +1 -0
- package/dist/src/theme/useColorSchemeMetaTag.js.map +1 -0
- package/dist/src/theme/useColorSchemeProvider.js.map +1 -0
- package/dist/src/theme/usePrefersColorScheme.js.map +1 -0
- package/dist/src/theme/utils.js.map +1 -0
- package/dist/src/tooltip/Tooltip.js.map +1 -0
- package/dist/src/tooltip/TooltipHoverModeProvider.js.map +1 -0
- package/dist/src/tooltip/constants.js.map +1 -0
- package/dist/src/tooltip/tooltipStyles.js.map +1 -0
- package/dist/src/tooltip/useTooltip.js.map +1 -0
- package/dist/src/tooltip/useTooltipPosition.js.map +1 -0
- package/dist/src/tooltip/utils.js.map +1 -0
- package/dist/src/transition/CSSTransition.js.map +1 -0
- package/dist/src/transition/Collapse.js.map +1 -0
- package/dist/src/transition/CrossFade.js.map +1 -0
- package/dist/src/transition/ScaleTransition.js.map +1 -0
- package/dist/src/transition/SkeletonPlaceholder.js +131 -0
- package/dist/src/transition/SkeletonPlaceholder.js.map +1 -0
- package/dist/src/transition/Slide.js.map +1 -0
- package/dist/src/transition/SlideContainer.js.map +1 -0
- package/dist/src/transition/collapseStyles.js.map +1 -0
- package/dist/src/transition/config.js.map +1 -0
- package/dist/src/transition/maxWidthTransition.js.map +1 -0
- package/dist/src/transition/skeletonPlaceholderUtils.js +38 -0
- package/dist/src/transition/skeletonPlaceholderUtils.js.map +1 -0
- package/dist/src/transition/types.js.map +1 -0
- package/dist/src/transition/useCSSTransition.js.map +1 -0
- package/dist/src/transition/useCarousel.js.map +1 -0
- package/dist/src/transition/useCollapseTransition.js.map +1 -0
- package/dist/src/transition/useCrossFadeTransition.js.map +1 -0
- package/dist/src/transition/useMaxWidthTransition.js.map +1 -0
- package/dist/src/transition/useScaleTransition.js.map +1 -0
- package/dist/src/transition/useSkeletonPlaceholder.js +69 -0
- package/dist/src/transition/useSkeletonPlaceholder.js.map +1 -0
- package/dist/src/transition/useSlideTransition.js.map +1 -0
- package/dist/src/transition/useTransition.js.map +1 -0
- package/dist/src/transition/utils.js.map +1 -0
- package/dist/src/tree/DefaultTreeItemRenderer.js.map +1 -0
- package/dist/src/tree/Tree.js.map +1 -0
- package/dist/src/tree/TreeGroup.js.map +1 -0
- package/dist/src/tree/TreeItem.js +173 -0
- package/dist/src/tree/TreeItem.js.map +1 -0
- package/dist/src/tree/TreeItemExpander.js.map +1 -0
- package/dist/src/tree/TreeProvider.js.map +1 -0
- package/dist/src/tree/styles.js +58 -0
- package/dist/src/tree/styles.js.map +1 -0
- package/dist/src/tree/types.js.map +1 -0
- package/dist/src/tree/useTree.js.map +1 -0
- package/dist/src/tree/useTreeExpansion.js.map +1 -0
- package/dist/src/tree/useTreeItems.js.map +1 -0
- package/dist/src/tree/useTreeMovement.js.map +1 -0
- package/dist/src/tree/useTreeSelection.js.map +1 -0
- package/dist/src/tree/utils.js.map +1 -0
- package/dist/src/types.js +5 -0
- package/dist/src/types.js.map +1 -0
- package/dist/src/typography/SrOnly.js.map +1 -0
- package/dist/src/typography/TextContainer.js.map +1 -0
- package/dist/src/typography/Typography.js.map +1 -0
- package/dist/src/typography/WritingDirectionProvider.js.map +1 -0
- package/dist/src/useAsyncAction.js.map +1 -0
- package/dist/src/useDebouncedFunction.js.map +1 -0
- package/dist/src/useDropzone.js.map +1 -0
- package/dist/src/useElementSize.js +53 -0
- package/dist/src/useElementSize.js.map +1 -0
- package/dist/src/useEnsuredId.js.map +1 -0
- package/dist/src/useEnsuredRef.js.map +1 -0
- package/dist/src/useEnsuredState.js.map +1 -0
- package/dist/src/useHtmlClassName.js.map +1 -0
- package/dist/src/useIntersectionObserver.js.map +1 -0
- package/dist/src/useIsomorphicLayoutEffect.js.map +1 -0
- package/dist/src/useLocalStorage.js.map +1 -0
- package/dist/src/useOrientation.js.map +1 -0
- package/dist/src/usePageInactive.js.map +1 -0
- package/dist/src/useResizeListener.js +71 -0
- package/dist/src/useResizeListener.js.map +1 -0
- package/dist/src/useResizeObserver.js +134 -0
- package/dist/src/useResizeObserver.js.map +1 -0
- package/dist/src/useThrottledFunction.js.map +1 -0
- package/dist/src/useToggle.js.map +1 -0
- package/dist/src/useUnmounted.js.map +1 -0
- package/dist/src/useWindowSize.js +68 -0
- package/dist/src/useWindowSize.js.map +1 -0
- package/dist/src/utils/RenderRecursively.js.map +1 -0
- package/dist/src/utils/alphaNumericSort.js.map +1 -0
- package/dist/src/utils/applyRef.js.map +1 -0
- package/dist/src/utils/bem.js.map +1 -0
- package/dist/src/utils/filters.js.map +1 -0
- package/dist/src/utils/getClientPosition.js.map +1 -0
- package/dist/src/utils/getMiddleOfRange.js +20 -0
- package/dist/src/utils/getMiddleOfRange.js.map +1 -0
- package/dist/src/utils/getPercentage.js.map +1 -0
- package/dist/src/utils/getRangeDefaultValue.js +13 -0
- package/dist/src/utils/getRangeDefaultValue.js.map +1 -0
- package/dist/src/utils/getRangeSteps.js +17 -0
- package/dist/src/utils/getRangeSteps.js.map +1 -0
- package/dist/src/utils/identity.js.map +1 -0
- package/dist/src/utils/isElementVisible.js.map +1 -0
- package/dist/src/utils/loop.js.map +1 -0
- package/dist/src/utils/nearest.js +27 -0
- package/dist/src/utils/nearest.js.map +1 -0
- package/dist/src/utils/parseCssLengthUnit.js.map +1 -0
- package/dist/src/utils/randomInt.js.map +1 -0
- package/dist/src/utils/wait.js.map +1 -0
- package/dist/src/utils/withinRange.js.map +1 -0
- package/dist/src/window-splitter/WindowSplitter.js.map +1 -0
- package/dist/src/window-splitter/useWindowSplitter.js +59 -0
- package/dist/src/window-splitter/useWindowSplitter.js.map +1 -0
- package/dist/table/TableCheckbox.d.ts +3 -2
- package/dist/table/TableRadio.d.ts +3 -2
- package/dist/table/tableCellStyles.d.ts +1 -1
- package/dist/tabs/Tab.d.ts +24 -3
- package/dist/tabs/_tabs.scss +28 -16
- package/dist/tabs/tabIndicatorStyles.d.ts +2 -1
- package/dist/tabs/tabStyles.d.ts +2 -0
- package/dist/tabs/useTabList.d.ts +3 -3
- package/dist/theme/_theme.scss +20 -10
- package/dist/tooltip/useTooltip.d.ts +14 -14
- package/dist/transition/SkeletonPlaceholder.d.ts +2 -2
- package/dist/transition/_transition.scss +12 -7
- package/dist/transition/skeletonPlaceholderUtils.d.ts +77 -0
- package/dist/transition/useSkeletonPlaceholder.d.ts +12 -7
- package/dist/tree/DefaultTreeItemRenderer.d.ts +2 -2
- package/dist/tree/Tree.d.ts +8 -4
- package/dist/tree/_tree.scss +29 -22
- package/dist/tree/styles.d.ts +0 -6
- package/dist/types.d.ts +7 -0
- package/dist/typography/_typography.scss +12 -2
- package/dist/useElementSize.d.ts +40 -0
- package/dist/useResizeListener.d.ts +1 -1
- package/dist/useResizeObserver.d.ts +4 -43
- package/dist/useWindowSize.d.ts +14 -11
- package/dist/utils/getMiddleOfRange.d.ts +13 -0
- package/dist/utils/getRangeDefaultValue.d.ts +3 -5
- package/dist/utils/getRangeSteps.d.ts +1 -1
- package/dist/window-splitter/_window-splitter.scss +11 -16
- package/dist/window-splitter/useWindowSplitter.d.ts +3 -5
- package/package.json +19 -19
- package/src/__tests__/useElementSize.tsx +181 -0
- package/src/__tests__/useWindowSize.node.tsx +56 -0
- package/src/__tests__/useWindowSize.tsx +156 -0
- package/src/_box-shadows.scss +12 -2
- package/src/_core.scss +1 -3
- package/src/_utils.scss +22 -0
- package/src/app-bar/AppBar.tsx +59 -19
- package/src/app-bar/__tests__/__snapshots__/AppBar.tsx.snap +21 -21
- package/src/app-bar/_app-bar.scss +7 -9
- package/src/avatar/Avatar.tsx +1 -1
- package/src/badge/_badge.scss +12 -7
- package/src/button/TooltippedButton.tsx +120 -0
- package/src/button/__tests__/TooltippedButton.tsx +60 -0
- package/src/button/__tests__/__snapshots__/TooltippedButton.tsx.snap +26 -0
- package/src/card/Card.tsx +5 -3
- package/src/card/CardContent.tsx +3 -3
- package/src/card/ClickableCard.tsx +105 -0
- package/src/card/__tests__/ClickableCard.tsx +66 -0
- package/src/card/__tests__/__snapshots__/CardHeader.tsx.snap +1 -1
- package/src/card/__tests__/__snapshots__/CardSubtitle.tsx.snap +2 -2
- package/src/card/__tests__/__snapshots__/ClickableCard.tsx.snap +20 -0
- package/src/card/__tests__/__snapshots__/styles.ts.snap +1 -1
- package/src/card/_card.scss +15 -9
- package/src/card/styles.ts +19 -10
- package/src/dialog/_dialog.scss +28 -15
- package/src/divider/_divider.scss +9 -10
- package/src/draggable/useDraggable.ts +26 -25
- package/src/draggable/utils.ts +16 -50
- package/src/expansion-panel/__tests__/ExpansionPanel.tsx +2 -2
- package/src/expansion-panel/_expansion-panel.scss +25 -16
- package/src/expansion-panel/useExpansionPanels.ts +20 -16
- package/src/form/MenuItemInputToggle.tsx +1 -1
- package/src/form/Select.tsx +9 -1
- package/src/form/_form.scss +41 -23
- package/src/icon/IconRotator.tsx +1 -2
- package/src/icon/_icon.scss +7 -2
- package/src/index.ts +5 -0
- package/src/interaction/_interaction.scss +12 -9
- package/src/layout/__tests__/__snapshots__/LayoutAppBar.tsx.snap +4 -4
- package/src/layout/__tests__/__snapshots__/useExpandableLayout.tsx.snap +1 -1
- package/src/layout/__tests__/__snapshots__/useLayoutTree.tsx.snap +18 -18
- package/src/layout/__tests__/__snapshots__/useResizableLayout.tsx.snap +1 -1
- package/src/layout/__tests__/__snapshots__/useTemporaryLayout.tsx.snap +1 -1
- package/src/layout/useLayoutAppBarHeight.ts +5 -9
- package/src/link/_link.scss +26 -12
- package/src/list/ListItem.tsx +20 -13
- package/src/list/ListItemAddon.tsx +5 -3
- package/src/list/ListItemChildren.tsx +4 -2
- package/src/list/ListItemLink.tsx +4 -4
- package/src/list/__tests__/ListItem.tsx +1 -1
- package/src/list/__tests__/__snapshots__/ListItem.tsx.snap +1 -1
- package/src/list/__tests__/getListItemHeight.ts +2 -2
- package/src/list/_list.scss +29 -18
- package/src/list/getListItemHeight.ts +2 -3
- package/src/list/listItemStyles.ts +15 -5
- package/src/list/types.ts +16 -5
- package/src/menu/Menu.tsx +1 -1
- package/src/menu/_menu.scss +3 -16
- package/src/portal/PortalContainerProvider.tsx +10 -2
- package/src/portal/__tests__/PortalContainerProvider.tsx +23 -0
- package/src/sheet/styles.ts +14 -15
- package/src/suspense/__tests__/CircularProgressSuspense.tsx +90 -0
- package/src/suspense/__tests__/NullSuspense.tsx +46 -0
- package/src/suspense/__tests__/__snapshots__/CircularProgressSuspense.tsx.snap +24 -0
- package/src/table/TableCheckbox.tsx +4 -2
- package/src/table/TableRadio.tsx +4 -2
- package/src/table/tableCellStyles.ts +1 -1
- package/src/tabs/Tab.tsx +110 -70
- package/src/tabs/__tests__/Tab.tsx +25 -2
- package/src/tabs/__tests__/TabList.tsx +4 -4
- package/src/tabs/__tests__/__snapshots__/TabList.tsx.snap +2 -2
- package/src/tabs/_tabs.scss +28 -16
- package/src/tabs/tabIndicatorStyles.ts +13 -3
- package/src/tabs/tabListStyles.ts +1 -1
- package/src/tabs/tabStyles.ts +16 -4
- package/src/tabs/useTabList.ts +10 -8
- package/src/theme/_theme.scss +20 -10
- package/src/tooltip/useTooltip.ts +23 -16
- package/src/transition/SkeletonPlaceholder.tsx +18 -6
- package/src/transition/__tests__/SkeletonPlaceholder.tsx +72 -0
- package/src/transition/__tests__/__snapshots__/SkeletonPlaceholder.tsx.snap +24 -0
- package/src/transition/_transition.scss +12 -7
- package/src/transition/skeletonPlaceholderUtils.ts +105 -0
- package/src/transition/useSkeletonPlaceholder.ts +62 -47
- package/src/tree/DefaultTreeItemRenderer.tsx +6 -2
- package/src/tree/Tree.tsx +8 -4
- package/src/tree/TreeItem.tsx +3 -4
- package/src/tree/__tests__/Tree.tsx +1 -1
- package/src/tree/__tests__/__snapshots__/Tree.tsx.snap +124 -124
- package/src/tree/_tree.scss +29 -22
- package/src/tree/styles.ts +0 -9
- package/src/types.ts +8 -0
- package/src/typography/_typography.scss +12 -2
- package/src/useElementSize.ts +83 -0
- package/src/useResizeListener.ts +3 -1
- package/src/useResizeObserver.ts +7 -44
- package/src/useWindowSize.ts +29 -19
- package/src/utils/__tests__/getMiddleOfRange.ts +12 -0
- package/src/utils/__tests__/getRangeDefaultValue.ts +47 -0
- package/src/utils/getMiddleOfRange.ts +26 -0
- package/src/utils/getRangeDefaultValue.ts +8 -15
- package/src/utils/getRangeSteps.ts +2 -2
- package/src/utils/nearest.ts +1 -1
- package/src/window-splitter/_window-splitter.scss +11 -16
- package/src/window-splitter/useWindowSplitter.ts +12 -28
- package/dist/CoreProviders.js.map +0 -1
- package/dist/NoSsr.js.map +0 -1
- package/dist/SsrProvider.js.map +0 -1
- package/dist/app-bar/AppBar.js +0 -74
- package/dist/app-bar/AppBar.js.map +0 -1
- package/dist/app-bar/AppBarTitle.js.map +0 -1
- package/dist/avatar/Avatar.js.map +0 -1
- package/dist/avatar/styles.js.map +0 -1
- package/dist/badge/Badge.js.map +0 -1
- package/dist/box/Box.js.map +0 -1
- package/dist/box/styles.js.map +0 -1
- package/dist/button/AsyncButton.js.map +0 -1
- package/dist/button/Button.js.map +0 -1
- package/dist/button/ButtonUnstyled.js.map +0 -1
- package/dist/button/FloatingActionButton.js.map +0 -1
- package/dist/button/buttonStyles.js.map +0 -1
- package/dist/button/buttonUnstyledStyles.js.map +0 -1
- package/dist/card/Card.js +0 -59
- package/dist/card/Card.js.map +0 -1
- package/dist/card/CardContent.js +0 -25
- package/dist/card/CardContent.js.map +0 -1
- package/dist/card/CardFooter.js.map +0 -1
- package/dist/card/CardHeader.js.map +0 -1
- package/dist/card/CardSubtitle.js.map +0 -1
- package/dist/card/CardTitle.js.map +0 -1
- package/dist/card/styles.js +0 -62
- package/dist/card/styles.js.map +0 -1
- package/dist/chip/Chip.js.map +0 -1
- package/dist/chip/styles.js.map +0 -1
- package/dist/cssUtils.js.map +0 -1
- package/dist/delegateEvent.js.map +0 -1
- package/dist/dialog/Dialog.js.map +0 -1
- package/dist/dialog/DialogContainer.js.map +0 -1
- package/dist/dialog/DialogContent.js.map +0 -1
- package/dist/dialog/DialogFooter.js.map +0 -1
- package/dist/dialog/DialogHeader.js.map +0 -1
- package/dist/dialog/DialogTitle.js.map +0 -1
- package/dist/dialog/FixedDialog.js.map +0 -1
- package/dist/dialog/NestedDialogProvider.js.map +0 -1
- package/dist/dialog/styles.js.map +0 -1
- package/dist/divider/Divider.js.map +0 -1
- package/dist/divider/styles.js.map +0 -1
- package/dist/draggable/useDraggable.js +0 -425
- package/dist/draggable/useDraggable.js.map +0 -1
- package/dist/draggable/utils.js +0 -146
- package/dist/draggable/utils.js.map +0 -1
- package/dist/expansion-panel/ExpansionList.js.map +0 -1
- package/dist/expansion-panel/ExpansionPanel.js.map +0 -1
- package/dist/expansion-panel/ExpansionPanelHeader.js.map +0 -1
- package/dist/expansion-panel/useExpansionList.js.map +0 -1
- package/dist/expansion-panel/useExpansionPanels.js +0 -135
- package/dist/expansion-panel/useExpansionPanels.js.map +0 -1
- package/dist/focus/useFocusContainer.js.map +0 -1
- package/dist/focus/utils.js.map +0 -1
- package/dist/form/Checkbox.js.map +0 -1
- package/dist/form/Fieldset.js.map +0 -1
- package/dist/form/FileInput.js.map +0 -1
- package/dist/form/Form.js.map +0 -1
- package/dist/form/FormMessage.js.map +0 -1
- package/dist/form/FormMessageContainer.js.map +0 -1
- package/dist/form/FormMessageCounter.js.map +0 -1
- package/dist/form/InputToggle.js.map +0 -1
- package/dist/form/InputToggleIcon.js.map +0 -1
- package/dist/form/Label.js.map +0 -1
- package/dist/form/Legend.js.map +0 -1
- package/dist/form/MenuItemCheckbox.js.map +0 -1
- package/dist/form/MenuItemFileInput.js.map +0 -1
- package/dist/form/MenuItemInputToggle.js.map +0 -1
- package/dist/form/MenuItemRadio.js.map +0 -1
- package/dist/form/MenuItemSwitch.js.map +0 -1
- package/dist/form/MenuItemTextField.js.map +0 -1
- package/dist/form/NativeSelect.js.map +0 -1
- package/dist/form/OptGroup.js.map +0 -1
- package/dist/form/Option.js.map +0 -1
- package/dist/form/Password.js.map +0 -1
- package/dist/form/Radio.js.map +0 -1
- package/dist/form/Select.js +0 -299
- package/dist/form/Select.js.map +0 -1
- package/dist/form/SelectValue.js.map +0 -1
- package/dist/form/Slider.js.map +0 -1
- package/dist/form/SliderContainer.js.map +0 -1
- package/dist/form/SliderMark.js.map +0 -1
- package/dist/form/SliderMarkLabel.js.map +0 -1
- package/dist/form/SliderThumb.js.map +0 -1
- package/dist/form/SliderTrack.js.map +0 -1
- package/dist/form/SliderValueMarks.js.map +0 -1
- package/dist/form/SliderValueTooltip.js.map +0 -1
- package/dist/form/Switch.js.map +0 -1
- package/dist/form/SwitchTrack.js.map +0 -1
- package/dist/form/TextArea.js.map +0 -1
- package/dist/form/TextField.js.map +0 -1
- package/dist/form/TextFieldAddon.js.map +0 -1
- package/dist/form/TextFieldContainer.js.map +0 -1
- package/dist/form/TextFieldContainerStyles.js.map +0 -1
- package/dist/form/fileUtils.js.map +0 -1
- package/dist/form/formConfig.js.map +0 -1
- package/dist/form/formMessageStyles.js.map +0 -1
- package/dist/form/inputToggleStyles.js.map +0 -1
- package/dist/form/nativeSelectStyles.js.map +0 -1
- package/dist/form/optionStyles.js.map +0 -1
- package/dist/form/passwordStyles.js.map +0 -1
- package/dist/form/selectStyles.js.map +0 -1
- package/dist/form/selectUtils.js.map +0 -1
- package/dist/form/sliderUtils.js.map +0 -1
- package/dist/form/switchStyles.js.map +0 -1
- package/dist/form/textAreaStyles.js.map +0 -1
- package/dist/form/textFieldStyles.js.map +0 -1
- package/dist/form/types.js.map +0 -1
- package/dist/form/useCheckboxGroup.js.map +0 -1
- package/dist/form/useFileUpload.js.map +0 -1
- package/dist/form/useListboxProvider.js.map +0 -1
- package/dist/form/useNumberField.js.map +0 -1
- package/dist/form/useRadioGroup.js.map +0 -1
- package/dist/form/useRangeSlider.js.map +0 -1
- package/dist/form/useResizingTextArea.js.map +0 -1
- package/dist/form/useSlider.js.map +0 -1
- package/dist/form/useTextField.js.map +0 -1
- package/dist/form/utils.js.map +0 -1
- package/dist/form/validation.js.map +0 -1
- package/dist/hoverMode/useHoverMode.js.map +0 -1
- package/dist/hoverMode/useHoverModeProvider.js.map +0 -1
- package/dist/icon/FontIcon.js.map +0 -1
- package/dist/icon/IconRotator.js +0 -32
- package/dist/icon/IconRotator.js.map +0 -1
- package/dist/icon/MaterialIcon.js.map +0 -1
- package/dist/icon/MaterialSymbol.js.map +0 -1
- package/dist/icon/SVGIcon.js.map +0 -1
- package/dist/icon/TextIconSpacing.js.map +0 -1
- package/dist/icon/iconConfig.js.map +0 -1
- package/dist/icon/material.js.map +0 -1
- package/dist/icon/materialConfig.js.map +0 -1
- package/dist/icon/styles.js.map +0 -1
- package/dist/index.js +0 -324
- package/dist/index.js.map +0 -1
- package/dist/interaction/Ripple.js.map +0 -1
- package/dist/interaction/RippleContainer.js.map +0 -1
- package/dist/interaction/UserInteractionModeProvider.js.map +0 -1
- package/dist/interaction/config.js.map +0 -1
- package/dist/interaction/types.js.map +0 -1
- package/dist/interaction/useElementInteraction.js.map +0 -1
- package/dist/interaction/useHigherContrastChildren.js.map +0 -1
- package/dist/interaction/utils.js.map +0 -1
- package/dist/layout/LayoutAppBar.js.map +0 -1
- package/dist/layout/LayoutNav.js.map +0 -1
- package/dist/layout/LayoutWindowSplitter.js.map +0 -1
- package/dist/layout/Main.js.map +0 -1
- package/dist/layout/layoutNavStyles.js.map +0 -1
- package/dist/layout/layoutWindowSplitterStyles.js.map +0 -1
- package/dist/layout/mainStyles.js.map +0 -1
- package/dist/layout/useExpandableLayout.js.map +0 -1
- package/dist/layout/useHorizontalLayoutTransition.js.map +0 -1
- package/dist/layout/useLayoutAppBarHeight.js +0 -82
- package/dist/layout/useLayoutAppBarHeight.js.map +0 -1
- package/dist/layout/useLayoutTree.js.map +0 -1
- package/dist/layout/useLayoutWindowSplitter.js.map +0 -1
- package/dist/layout/useMainTabIndex.js.map +0 -1
- package/dist/layout/useResizableLayout.js.map +0 -1
- package/dist/layout/useTemporaryLayout.js.map +0 -1
- package/dist/link/Link.js.map +0 -1
- package/dist/link/SkipToMainContent.js.map +0 -1
- package/dist/link/styles.js.map +0 -1
- package/dist/list/List.js.map +0 -1
- package/dist/list/ListItem.js +0 -147
- package/dist/list/ListItem.js.map +0 -1
- package/dist/list/ListItemAddon.js +0 -30
- package/dist/list/ListItemAddon.js.map +0 -1
- package/dist/list/ListItemChildren.js +0 -81
- package/dist/list/ListItemChildren.js.map +0 -1
- package/dist/list/ListItemLink.js +0 -89
- package/dist/list/ListItemLink.js.map +0 -1
- package/dist/list/ListItemText.js.map +0 -1
- package/dist/list/ListSubheader.js.map +0 -1
- package/dist/list/getListItemHeight.js +0 -28
- package/dist/list/getListItemHeight.js.map +0 -1
- package/dist/list/listItemStyles.js +0 -45
- package/dist/list/listItemStyles.js.map +0 -1
- package/dist/list/types.js.map +0 -1
- package/dist/media-queries/AppSizeProvider.js.map +0 -1
- package/dist/media-queries/appSize.js.map +0 -1
- package/dist/media-queries/useMediaQuery.js.map +0 -1
- package/dist/menu/DropdownMenu.js.map +0 -1
- package/dist/menu/Menu.js.map +0 -1
- package/dist/menu/MenuBar.js.map +0 -1
- package/dist/menu/MenuButton.js.map +0 -1
- package/dist/menu/MenuConfigurationProvider.js.map +0 -1
- package/dist/menu/MenuItem.js.map +0 -1
- package/dist/menu/MenuItemButton.js.map +0 -1
- package/dist/menu/MenuItemGroup.js.map +0 -1
- package/dist/menu/MenuItemSeparator.js.map +0 -1
- package/dist/menu/MenuSheet.js.map +0 -1
- package/dist/menu/MenuVisibilityProvider.js.map +0 -1
- package/dist/menu/MenuWidget.js.map +0 -1
- package/dist/menu/MenuWidgetKeyboardProvider.js.map +0 -1
- package/dist/menu/useContextMenu.js.map +0 -1
- package/dist/menu/useMenuBarProvider.js.map +0 -1
- package/dist/menu/utils.js.map +0 -1
- package/dist/movement/constants.js.map +0 -1
- package/dist/movement/findMatchIndex.js.map +0 -1
- package/dist/movement/types.js.map +0 -1
- package/dist/movement/useKeyboardMovementProvider.js.map +0 -1
- package/dist/movement/utils.js.map +0 -1
- package/dist/overlay/Overlay.js.map +0 -1
- package/dist/overlay/overlayStyles.js.map +0 -1
- package/dist/portal/Portal.js.map +0 -1
- package/dist/portal/PortalContainerProvider.js +0 -55
- package/dist/portal/PortalContainerProvider.js.map +0 -1
- package/dist/positioning/constants.js.map +0 -1
- package/dist/positioning/createHorizontalPosition.js.map +0 -1
- package/dist/positioning/createVerticalPosition.js.map +0 -1
- package/dist/positioning/getFixedPosition.js.map +0 -1
- package/dist/positioning/types.js.map +0 -1
- package/dist/positioning/useFixedPositioning.js.map +0 -1
- package/dist/positioning/utils.js.map +0 -1
- package/dist/progress/CircularProgress.js.map +0 -1
- package/dist/progress/LinearProgress.js.map +0 -1
- package/dist/progress/getProgressA11y.js.map +0 -1
- package/dist/progress/types.js.map +0 -1
- package/dist/responsive-item/ResponsiveItemContainer.js.map +0 -1
- package/dist/responsive-item/ResponsiveItemOverlay.js.map +0 -1
- package/dist/responsive-item/styles.js.map +0 -1
- package/dist/scroll/ScrollLock.js.map +0 -1
- package/dist/scroll/getScrollbarWidth.js.map +0 -1
- package/dist/scroll/useScrollLock.js.map +0 -1
- package/dist/segmented-button/SegmentedButton.js.map +0 -1
- package/dist/segmented-button/SegmentedButtonContainer.js.map +0 -1
- package/dist/segmented-button/segmentedButtonContainerStyles.js.map +0 -1
- package/dist/segmented-button/segmentedButtonStyles.js.map +0 -1
- package/dist/sheet/Sheet.js.map +0 -1
- package/dist/sheet/styles.js.map +0 -1
- package/dist/snackbar/DefaultToastRenderer.js.map +0 -1
- package/dist/snackbar/Snackbar.js.map +0 -1
- package/dist/snackbar/Toast.js.map +0 -1
- package/dist/snackbar/ToastActionButton.js.map +0 -1
- package/dist/snackbar/ToastCloseButton.js.map +0 -1
- package/dist/snackbar/ToastContent.js.map +0 -1
- package/dist/snackbar/ToastManager.js.map +0 -1
- package/dist/snackbar/ToastManagerProvider.js.map +0 -1
- package/dist/snackbar/snackbarStyles.js.map +0 -1
- package/dist/snackbar/toastContentStyles.js.map +0 -1
- package/dist/snackbar/toastStyles.js.map +0 -1
- package/dist/snackbar/useCurrentToastActions.js.map +0 -1
- package/dist/suspense/CircularProgressSuspense.js.map +0 -1
- package/dist/suspense/NullSuspense.js.map +0 -1
- package/dist/table/Table.js.map +0 -1
- package/dist/table/TableBody.js.map +0 -1
- package/dist/table/TableCell.js.map +0 -1
- package/dist/table/TableCellContent.js.map +0 -1
- package/dist/table/TableCheckbox.js +0 -113
- package/dist/table/TableCheckbox.js.map +0 -1
- package/dist/table/TableConfigurationProvider.js.map +0 -1
- package/dist/table/TableContainer.js.map +0 -1
- package/dist/table/TableContainerProvider.js.map +0 -1
- package/dist/table/TableFooter.js.map +0 -1
- package/dist/table/TableHeader.js.map +0 -1
- package/dist/table/TableRadio.js +0 -106
- package/dist/table/TableRadio.js.map +0 -1
- package/dist/table/TableRow.js.map +0 -1
- package/dist/table/tableCellStyles.js.map +0 -1
- package/dist/table/tableContainerStyles.js.map +0 -1
- package/dist/table/tableFooterStyles.js.map +0 -1
- package/dist/table/tableHeaderStyles.js.map +0 -1
- package/dist/table/tableRowStyles.js.map +0 -1
- package/dist/table/tableStyles.js.map +0 -1
- package/dist/table/types.js.map +0 -1
- package/dist/tabs/Tab.js +0 -63
- package/dist/tabs/Tab.js.map +0 -1
- package/dist/tabs/TabList.js.map +0 -1
- package/dist/tabs/TabListScrollButton.js.map +0 -1
- package/dist/tabs/tabIndicatorStyles.js +0 -14
- package/dist/tabs/tabIndicatorStyles.js.map +0 -1
- package/dist/tabs/tabListScrollButtonStyles.js.map +0 -1
- package/dist/tabs/tabListStyles.js +0 -21
- package/dist/tabs/tabListStyles.js.map +0 -1
- package/dist/tabs/tabStyles.js +0 -21
- package/dist/tabs/tabStyles.js.map +0 -1
- package/dist/tabs/useTabList.js +0 -128
- package/dist/tabs/useTabList.js.map +0 -1
- package/dist/tabs/useTabs.js.map +0 -1
- package/dist/tabs/utils.js.map +0 -1
- package/dist/test-utils/IntersectionObserver.js.map +0 -1
- package/dist/test-utils/ResizeObserver.js.map +0 -1
- package/dist/test-utils/data-testid.js.map +0 -1
- package/dist/test-utils/index.js.map +0 -1
- package/dist/test-utils/jest-setup.js.map +0 -1
- package/dist/test-utils/matchMedia.js.map +0 -1
- package/dist/test-utils/polyfills/IntersectionObserver.js.map +0 -1
- package/dist/test-utils/polyfills/ResizeObserver.js.map +0 -1
- package/dist/test-utils/polyfills/index.js.map +0 -1
- package/dist/test-utils/polyfills/matchMedia.js.map +0 -1
- package/dist/test-utils/polyfills/offsetParent.js.map +0 -1
- package/dist/test-utils/polyfills/scrollIntoView.js.map +0 -1
- package/dist/test-utils/render.js.map +0 -1
- package/dist/test-utils/timers.js.map +0 -1
- package/dist/theme/LocalStorageColorSchemeProvider.js.map +0 -1
- package/dist/theme/ThemeProvider.js.map +0 -1
- package/dist/theme/colors.js.map +0 -1
- package/dist/theme/cssVars.js.map +0 -1
- package/dist/theme/types.js.map +0 -1
- package/dist/theme/useCSSVariables.js.map +0 -1
- package/dist/theme/useColorScheme.js.map +0 -1
- package/dist/theme/useColorSchemeMetaTag.js.map +0 -1
- package/dist/theme/useColorSchemeProvider.js.map +0 -1
- package/dist/theme/usePrefersColorScheme.js.map +0 -1
- package/dist/theme/utils.js.map +0 -1
- package/dist/tooltip/Tooltip.js.map +0 -1
- package/dist/tooltip/TooltipHoverModeProvider.js.map +0 -1
- package/dist/tooltip/constants.js.map +0 -1
- package/dist/tooltip/tooltipStyles.js.map +0 -1
- package/dist/tooltip/useTooltip.js.map +0 -1
- package/dist/tooltip/useTooltipPosition.js.map +0 -1
- package/dist/tooltip/utils.js.map +0 -1
- package/dist/transition/CSSTransition.js.map +0 -1
- package/dist/transition/Collapse.js.map +0 -1
- package/dist/transition/CrossFade.js.map +0 -1
- package/dist/transition/ScaleTransition.js.map +0 -1
- package/dist/transition/SkeletonPlaceholder.js +0 -126
- package/dist/transition/SkeletonPlaceholder.js.map +0 -1
- package/dist/transition/Slide.js.map +0 -1
- package/dist/transition/SlideContainer.js.map +0 -1
- package/dist/transition/collapseStyles.js.map +0 -1
- package/dist/transition/config.js.map +0 -1
- package/dist/transition/maxWidthTransition.js.map +0 -1
- package/dist/transition/types.js.map +0 -1
- package/dist/transition/useCSSTransition.js.map +0 -1
- package/dist/transition/useCarousel.js.map +0 -1
- package/dist/transition/useCollapseTransition.js.map +0 -1
- package/dist/transition/useCrossFadeTransition.js.map +0 -1
- package/dist/transition/useMaxWidthTransition.js.map +0 -1
- package/dist/transition/useScaleTransition.js.map +0 -1
- package/dist/transition/useSkeletonPlaceholder.js +0 -68
- package/dist/transition/useSkeletonPlaceholder.js.map +0 -1
- package/dist/transition/useSlideTransition.js.map +0 -1
- package/dist/transition/useTransition.js.map +0 -1
- package/dist/transition/utils.js.map +0 -1
- package/dist/tree/DefaultTreeItemRenderer.js.map +0 -1
- package/dist/tree/Tree.js.map +0 -1
- package/dist/tree/TreeGroup.js.map +0 -1
- package/dist/tree/TreeItem.js +0 -174
- package/dist/tree/TreeItem.js.map +0 -1
- package/dist/tree/TreeItemExpander.js.map +0 -1
- package/dist/tree/TreeProvider.js.map +0 -1
- package/dist/tree/styles.js +0 -59
- package/dist/tree/styles.js.map +0 -1
- package/dist/tree/types.js.map +0 -1
- package/dist/tree/useTree.js.map +0 -1
- package/dist/tree/useTreeExpansion.js.map +0 -1
- package/dist/tree/useTreeItems.js.map +0 -1
- package/dist/tree/useTreeMovement.js.map +0 -1
- package/dist/tree/useTreeSelection.js.map +0 -1
- package/dist/tree/utils.js.map +0 -1
- package/dist/types.js +0 -6
- package/dist/types.js.map +0 -1
- package/dist/typography/SrOnly.js.map +0 -1
- package/dist/typography/TextContainer.js.map +0 -1
- package/dist/typography/Typography.js.map +0 -1
- package/dist/typography/WritingDirectionProvider.js.map +0 -1
- package/dist/useAsyncAction.js.map +0 -1
- package/dist/useDebouncedFunction.js.map +0 -1
- package/dist/useDropzone.js.map +0 -1
- package/dist/useEnsuredId.js.map +0 -1
- package/dist/useEnsuredRef.js.map +0 -1
- package/dist/useEnsuredState.js.map +0 -1
- package/dist/useHtmlClassName.js.map +0 -1
- package/dist/useIntersectionObserver.js.map +0 -1
- package/dist/useIsomorphicLayoutEffect.js.map +0 -1
- package/dist/useLocalStorage.js.map +0 -1
- package/dist/useOrientation.js.map +0 -1
- package/dist/usePageInactive.js.map +0 -1
- package/dist/useResizeListener.js +0 -70
- package/dist/useResizeListener.js.map +0 -1
- package/dist/useResizeObserver.js +0 -173
- package/dist/useResizeObserver.js.map +0 -1
- package/dist/useThrottledFunction.js.map +0 -1
- package/dist/useToggle.js.map +0 -1
- package/dist/useUnmounted.js.map +0 -1
- package/dist/useWindowSize.js +0 -63
- package/dist/useWindowSize.js.map +0 -1
- package/dist/utils/RenderRecursively.js.map +0 -1
- package/dist/utils/alphaNumericSort.js.map +0 -1
- package/dist/utils/applyRef.js.map +0 -1
- package/dist/utils/bem.js.map +0 -1
- package/dist/utils/filters.js.map +0 -1
- package/dist/utils/getClientPosition.js.map +0 -1
- package/dist/utils/getPercentage.js.map +0 -1
- package/dist/utils/getRangeDefaultValue.js +0 -23
- package/dist/utils/getRangeDefaultValue.js.map +0 -1
- package/dist/utils/getRangeSteps.js +0 -17
- package/dist/utils/getRangeSteps.js.map +0 -1
- package/dist/utils/identity.js.map +0 -1
- package/dist/utils/isElementVisible.js.map +0 -1
- package/dist/utils/loop.js.map +0 -1
- package/dist/utils/nearest.js +0 -27
- package/dist/utils/nearest.js.map +0 -1
- package/dist/utils/parseCssLengthUnit.js.map +0 -1
- package/dist/utils/randomInt.js.map +0 -1
- package/dist/utils/wait.js.map +0 -1
- package/dist/utils/withinRange.js.map +0 -1
- package/dist/window-splitter/WindowSplitter.js.map +0 -1
- package/dist/window-splitter/useWindowSplitter.js +0 -67
- package/dist/window-splitter/useWindowSplitter.js.map +0 -1
- /package/dist/{CoreProviders.js → src/CoreProviders.js} +0 -0
- /package/dist/{NoSsr.js → src/NoSsr.js} +0 -0
- /package/dist/{SsrProvider.js → src/SsrProvider.js} +0 -0
- /package/dist/{app-bar → src/app-bar}/AppBarTitle.js +0 -0
- /package/dist/{avatar → src/avatar}/Avatar.js +0 -0
- /package/dist/{avatar → src/avatar}/styles.js +0 -0
- /package/dist/{badge → src/badge}/Badge.js +0 -0
- /package/dist/{box → src/box}/Box.js +0 -0
- /package/dist/{box → src/box}/styles.js +0 -0
- /package/dist/{button → src/button}/AsyncButton.js +0 -0
- /package/dist/{button → src/button}/Button.js +0 -0
- /package/dist/{button → src/button}/ButtonUnstyled.js +0 -0
- /package/dist/{button → src/button}/FloatingActionButton.js +0 -0
- /package/dist/{button → src/button}/buttonStyles.js +0 -0
- /package/dist/{button → src/button}/buttonUnstyledStyles.js +0 -0
- /package/dist/{card → src/card}/CardFooter.js +0 -0
- /package/dist/{card → src/card}/CardHeader.js +0 -0
- /package/dist/{card → src/card}/CardSubtitle.js +0 -0
- /package/dist/{card → src/card}/CardTitle.js +0 -0
- /package/dist/{chip → src/chip}/Chip.js +0 -0
- /package/dist/{chip → src/chip}/styles.js +0 -0
- /package/dist/{cssUtils.js → src/cssUtils.js} +0 -0
- /package/dist/{delegateEvent.js → src/delegateEvent.js} +0 -0
- /package/dist/{dialog → src/dialog}/Dialog.js +0 -0
- /package/dist/{dialog → src/dialog}/DialogContainer.js +0 -0
- /package/dist/{dialog → src/dialog}/DialogContent.js +0 -0
- /package/dist/{dialog → src/dialog}/DialogFooter.js +0 -0
- /package/dist/{dialog → src/dialog}/DialogHeader.js +0 -0
- /package/dist/{dialog → src/dialog}/DialogTitle.js +0 -0
- /package/dist/{dialog → src/dialog}/FixedDialog.js +0 -0
- /package/dist/{dialog → src/dialog}/NestedDialogProvider.js +0 -0
- /package/dist/{dialog → src/dialog}/styles.js +0 -0
- /package/dist/{divider → src/divider}/Divider.js +0 -0
- /package/dist/{divider → src/divider}/styles.js +0 -0
- /package/dist/{expansion-panel → src/expansion-panel}/ExpansionList.js +0 -0
- /package/dist/{expansion-panel → src/expansion-panel}/ExpansionPanel.js +0 -0
- /package/dist/{expansion-panel → src/expansion-panel}/ExpansionPanelHeader.js +0 -0
- /package/dist/{expansion-panel → src/expansion-panel}/useExpansionList.js +0 -0
- /package/dist/{focus → src/focus}/useFocusContainer.js +0 -0
- /package/dist/{focus → src/focus}/utils.js +0 -0
- /package/dist/{form → src/form}/Checkbox.js +0 -0
- /package/dist/{form → src/form}/Fieldset.js +0 -0
- /package/dist/{form → src/form}/FileInput.js +0 -0
- /package/dist/{form → src/form}/Form.js +0 -0
- /package/dist/{form → src/form}/FormMessage.js +0 -0
- /package/dist/{form → src/form}/FormMessageContainer.js +0 -0
- /package/dist/{form → src/form}/FormMessageCounter.js +0 -0
- /package/dist/{form → src/form}/InputToggle.js +0 -0
- /package/dist/{form → src/form}/InputToggleIcon.js +0 -0
- /package/dist/{form → src/form}/Label.js +0 -0
- /package/dist/{form → src/form}/Legend.js +0 -0
- /package/dist/{form → src/form}/MenuItemCheckbox.js +0 -0
- /package/dist/{form → src/form}/MenuItemFileInput.js +0 -0
- /package/dist/{form → src/form}/MenuItemInputToggle.js +0 -0
- /package/dist/{form → src/form}/MenuItemRadio.js +0 -0
- /package/dist/{form → src/form}/MenuItemSwitch.js +0 -0
- /package/dist/{form → src/form}/MenuItemTextField.js +0 -0
- /package/dist/{form → src/form}/NativeSelect.js +0 -0
- /package/dist/{form → src/form}/OptGroup.js +0 -0
- /package/dist/{form → src/form}/Option.js +0 -0
- /package/dist/{form → src/form}/Password.js +0 -0
- /package/dist/{form → src/form}/Radio.js +0 -0
- /package/dist/{form → src/form}/SelectValue.js +0 -0
- /package/dist/{form → src/form}/Slider.js +0 -0
- /package/dist/{form → src/form}/SliderContainer.js +0 -0
- /package/dist/{form → src/form}/SliderMark.js +0 -0
- /package/dist/{form → src/form}/SliderMarkLabel.js +0 -0
- /package/dist/{form → src/form}/SliderThumb.js +0 -0
- /package/dist/{form → src/form}/SliderTrack.js +0 -0
- /package/dist/{form → src/form}/SliderValueMarks.js +0 -0
- /package/dist/{form → src/form}/SliderValueTooltip.js +0 -0
- /package/dist/{form → src/form}/Switch.js +0 -0
- /package/dist/{form → src/form}/SwitchTrack.js +0 -0
- /package/dist/{form → src/form}/TextArea.js +0 -0
- /package/dist/{form → src/form}/TextField.js +0 -0
- /package/dist/{form → src/form}/TextFieldAddon.js +0 -0
- /package/dist/{form → src/form}/TextFieldContainer.js +0 -0
- /package/dist/{form → src/form}/TextFieldContainerStyles.js +0 -0
- /package/dist/{form → src/form}/fileUtils.js +0 -0
- /package/dist/{form → src/form}/formConfig.js +0 -0
- /package/dist/{form → src/form}/formMessageStyles.js +0 -0
- /package/dist/{form → src/form}/inputToggleStyles.js +0 -0
- /package/dist/{form → src/form}/nativeSelectStyles.js +0 -0
- /package/dist/{form → src/form}/optionStyles.js +0 -0
- /package/dist/{form → src/form}/passwordStyles.js +0 -0
- /package/dist/{form → src/form}/selectStyles.js +0 -0
- /package/dist/{form → src/form}/selectUtils.js +0 -0
- /package/dist/{form → src/form}/sliderUtils.js +0 -0
- /package/dist/{form → src/form}/switchStyles.js +0 -0
- /package/dist/{form → src/form}/textAreaStyles.js +0 -0
- /package/dist/{form → src/form}/textFieldStyles.js +0 -0
- /package/dist/{form → src/form}/types.js +0 -0
- /package/dist/{form → src/form}/useCheckboxGroup.js +0 -0
- /package/dist/{form → src/form}/useFileUpload.js +0 -0
- /package/dist/{form → src/form}/useListboxProvider.js +0 -0
- /package/dist/{form → src/form}/useNumberField.js +0 -0
- /package/dist/{form → src/form}/useRadioGroup.js +0 -0
- /package/dist/{form → src/form}/useRangeSlider.js +0 -0
- /package/dist/{form → src/form}/useResizingTextArea.js +0 -0
- /package/dist/{form → src/form}/useSlider.js +0 -0
- /package/dist/{form → src/form}/useTextField.js +0 -0
- /package/dist/{form → src/form}/utils.js +0 -0
- /package/dist/{form → src/form}/validation.js +0 -0
- /package/dist/{hoverMode → src/hoverMode}/useHoverMode.js +0 -0
- /package/dist/{hoverMode → src/hoverMode}/useHoverModeProvider.js +0 -0
- /package/dist/{icon → src/icon}/FontIcon.js +0 -0
- /package/dist/{icon → src/icon}/MaterialIcon.js +0 -0
- /package/dist/{icon → src/icon}/MaterialSymbol.js +0 -0
- /package/dist/{icon → src/icon}/SVGIcon.js +0 -0
- /package/dist/{icon → src/icon}/TextIconSpacing.js +0 -0
- /package/dist/{icon → src/icon}/iconConfig.js +0 -0
- /package/dist/{icon → src/icon}/material.js +0 -0
- /package/dist/{icon → src/icon}/materialConfig.js +0 -0
- /package/dist/{icon → src/icon}/styles.js +0 -0
- /package/dist/{interaction → src/interaction}/Ripple.js +0 -0
- /package/dist/{interaction → src/interaction}/RippleContainer.js +0 -0
- /package/dist/{interaction → src/interaction}/UserInteractionModeProvider.js +0 -0
- /package/dist/{interaction → src/interaction}/config.js +0 -0
- /package/dist/{interaction → src/interaction}/types.js +0 -0
- /package/dist/{interaction → src/interaction}/useElementInteraction.js +0 -0
- /package/dist/{interaction → src/interaction}/useHigherContrastChildren.js +0 -0
- /package/dist/{interaction → src/interaction}/utils.js +0 -0
- /package/dist/{layout → src/layout}/LayoutAppBar.js +0 -0
- /package/dist/{layout → src/layout}/LayoutNav.js +0 -0
- /package/dist/{layout → src/layout}/LayoutWindowSplitter.js +0 -0
- /package/dist/{layout → src/layout}/Main.js +0 -0
- /package/dist/{layout → src/layout}/layoutNavStyles.js +0 -0
- /package/dist/{layout → src/layout}/layoutWindowSplitterStyles.js +0 -0
- /package/dist/{layout → src/layout}/mainStyles.js +0 -0
- /package/dist/{layout → src/layout}/useExpandableLayout.js +0 -0
- /package/dist/{layout → src/layout}/useHorizontalLayoutTransition.js +0 -0
- /package/dist/{layout → src/layout}/useLayoutTree.js +0 -0
- /package/dist/{layout → src/layout}/useLayoutWindowSplitter.js +0 -0
- /package/dist/{layout → src/layout}/useMainTabIndex.js +0 -0
- /package/dist/{layout → src/layout}/useResizableLayout.js +0 -0
- /package/dist/{layout → src/layout}/useTemporaryLayout.js +0 -0
- /package/dist/{link → src/link}/Link.js +0 -0
- /package/dist/{link → src/link}/SkipToMainContent.js +0 -0
- /package/dist/{link → src/link}/styles.js +0 -0
- /package/dist/{list → src/list}/List.js +0 -0
- /package/dist/{list → src/list}/ListItemText.js +0 -0
- /package/dist/{list → src/list}/ListSubheader.js +0 -0
- /package/dist/{list → src/list}/types.js +0 -0
- /package/dist/{media-queries → src/media-queries}/AppSizeProvider.js +0 -0
- /package/dist/{media-queries → src/media-queries}/appSize.js +0 -0
- /package/dist/{media-queries → src/media-queries}/useMediaQuery.js +0 -0
- /package/dist/{menu → src/menu}/DropdownMenu.js +0 -0
- /package/dist/{menu → src/menu}/Menu.js +0 -0
- /package/dist/{menu → src/menu}/MenuBar.js +0 -0
- /package/dist/{menu → src/menu}/MenuButton.js +0 -0
- /package/dist/{menu → src/menu}/MenuConfigurationProvider.js +0 -0
- /package/dist/{menu → src/menu}/MenuItem.js +0 -0
- /package/dist/{menu → src/menu}/MenuItemButton.js +0 -0
- /package/dist/{menu → src/menu}/MenuItemGroup.js +0 -0
- /package/dist/{menu → src/menu}/MenuItemSeparator.js +0 -0
- /package/dist/{menu → src/menu}/MenuSheet.js +0 -0
- /package/dist/{menu → src/menu}/MenuVisibilityProvider.js +0 -0
- /package/dist/{menu → src/menu}/MenuWidget.js +0 -0
- /package/dist/{menu → src/menu}/MenuWidgetKeyboardProvider.js +0 -0
- /package/dist/{menu → src/menu}/useContextMenu.js +0 -0
- /package/dist/{menu → src/menu}/useMenuBarProvider.js +0 -0
- /package/dist/{menu → src/menu}/utils.js +0 -0
- /package/dist/{movement → src/movement}/constants.js +0 -0
- /package/dist/{movement → src/movement}/findMatchIndex.js +0 -0
- /package/dist/{movement → src/movement}/types.js +0 -0
- /package/dist/{movement → src/movement}/useKeyboardMovementProvider.js +0 -0
- /package/dist/{movement → src/movement}/utils.js +0 -0
- /package/dist/{overlay → src/overlay}/Overlay.js +0 -0
- /package/dist/{overlay → src/overlay}/overlayStyles.js +0 -0
- /package/dist/{portal → src/portal}/Portal.js +0 -0
- /package/dist/{positioning → src/positioning}/constants.js +0 -0
- /package/dist/{positioning → src/positioning}/createHorizontalPosition.js +0 -0
- /package/dist/{positioning → src/positioning}/createVerticalPosition.js +0 -0
- /package/dist/{positioning → src/positioning}/getFixedPosition.js +0 -0
- /package/dist/{positioning → src/positioning}/types.js +0 -0
- /package/dist/{positioning → src/positioning}/useFixedPositioning.js +0 -0
- /package/dist/{positioning → src/positioning}/utils.js +0 -0
- /package/dist/{progress → src/progress}/CircularProgress.js +0 -0
- /package/dist/{progress → src/progress}/LinearProgress.js +0 -0
- /package/dist/{progress → src/progress}/getProgressA11y.js +0 -0
- /package/dist/{progress → src/progress}/types.js +0 -0
- /package/dist/{responsive-item → src/responsive-item}/ResponsiveItemContainer.js +0 -0
- /package/dist/{responsive-item → src/responsive-item}/ResponsiveItemOverlay.js +0 -0
- /package/dist/{responsive-item → src/responsive-item}/styles.js +0 -0
- /package/dist/{scroll → src/scroll}/ScrollLock.js +0 -0
- /package/dist/{scroll → src/scroll}/getScrollbarWidth.js +0 -0
- /package/dist/{scroll → src/scroll}/useScrollLock.js +0 -0
- /package/dist/{segmented-button → src/segmented-button}/SegmentedButton.js +0 -0
- /package/dist/{segmented-button → src/segmented-button}/SegmentedButtonContainer.js +0 -0
- /package/dist/{segmented-button → src/segmented-button}/segmentedButtonContainerStyles.js +0 -0
- /package/dist/{segmented-button → src/segmented-button}/segmentedButtonStyles.js +0 -0
- /package/dist/{sheet → src/sheet}/Sheet.js +0 -0
- /package/dist/{sheet → src/sheet}/styles.js +0 -0
- /package/dist/{snackbar → src/snackbar}/DefaultToastRenderer.js +0 -0
- /package/dist/{snackbar → src/snackbar}/Snackbar.js +0 -0
- /package/dist/{snackbar → src/snackbar}/Toast.js +0 -0
- /package/dist/{snackbar → src/snackbar}/ToastActionButton.js +0 -0
- /package/dist/{snackbar → src/snackbar}/ToastCloseButton.js +0 -0
- /package/dist/{snackbar → src/snackbar}/ToastContent.js +0 -0
- /package/dist/{snackbar → src/snackbar}/ToastManager.js +0 -0
- /package/dist/{snackbar → src/snackbar}/ToastManagerProvider.js +0 -0
- /package/dist/{snackbar → src/snackbar}/snackbarStyles.js +0 -0
- /package/dist/{snackbar → src/snackbar}/toastContentStyles.js +0 -0
- /package/dist/{snackbar → src/snackbar}/toastStyles.js +0 -0
- /package/dist/{snackbar → src/snackbar}/useCurrentToastActions.js +0 -0
- /package/dist/{suspense → src/suspense}/CircularProgressSuspense.js +0 -0
- /package/dist/{suspense → src/suspense}/NullSuspense.js +0 -0
- /package/dist/{table → src/table}/Table.js +0 -0
- /package/dist/{table → src/table}/TableBody.js +0 -0
- /package/dist/{table → src/table}/TableCell.js +0 -0
- /package/dist/{table → src/table}/TableCellContent.js +0 -0
- /package/dist/{table → src/table}/TableConfigurationProvider.js +0 -0
- /package/dist/{table → src/table}/TableContainer.js +0 -0
- /package/dist/{table → src/table}/TableContainerProvider.js +0 -0
- /package/dist/{table → src/table}/TableFooter.js +0 -0
- /package/dist/{table → src/table}/TableHeader.js +0 -0
- /package/dist/{table → src/table}/TableRow.js +0 -0
- /package/dist/{table → src/table}/tableCellStyles.js +0 -0
- /package/dist/{table → src/table}/tableContainerStyles.js +0 -0
- /package/dist/{table → src/table}/tableFooterStyles.js +0 -0
- /package/dist/{table → src/table}/tableHeaderStyles.js +0 -0
- /package/dist/{table → src/table}/tableRowStyles.js +0 -0
- /package/dist/{table → src/table}/tableStyles.js +0 -0
- /package/dist/{table → src/table}/types.js +0 -0
- /package/dist/{tabs → src/tabs}/TabList.js +0 -0
- /package/dist/{tabs → src/tabs}/TabListScrollButton.js +0 -0
- /package/dist/{tabs → src/tabs}/tabListScrollButtonStyles.js +0 -0
- /package/dist/{tabs → src/tabs}/useTabs.js +0 -0
- /package/dist/{tabs → src/tabs}/utils.js +0 -0
- /package/dist/{test-utils → src/test-utils}/IntersectionObserver.js +0 -0
- /package/dist/{test-utils → src/test-utils}/ResizeObserver.js +0 -0
- /package/dist/{test-utils → src/test-utils}/data-testid.js +0 -0
- /package/dist/{test-utils → src/test-utils}/index.js +0 -0
- /package/dist/{test-utils → src/test-utils}/jest-setup.js +0 -0
- /package/dist/{test-utils → src/test-utils}/matchMedia.js +0 -0
- /package/dist/{test-utils → src/test-utils}/polyfills/IntersectionObserver.js +0 -0
- /package/dist/{test-utils → src/test-utils}/polyfills/ResizeObserver.js +0 -0
- /package/dist/{test-utils → src/test-utils}/polyfills/index.js +0 -0
- /package/dist/{test-utils → src/test-utils}/polyfills/matchMedia.js +0 -0
- /package/dist/{test-utils → src/test-utils}/polyfills/offsetParent.js +0 -0
- /package/dist/{test-utils → src/test-utils}/polyfills/scrollIntoView.js +0 -0
- /package/dist/{test-utils → src/test-utils}/render.js +0 -0
- /package/dist/{test-utils → src/test-utils}/timers.js +0 -0
- /package/dist/{theme → src/theme}/LocalStorageColorSchemeProvider.js +0 -0
- /package/dist/{theme → src/theme}/ThemeProvider.js +0 -0
- /package/dist/{theme → src/theme}/colors.js +0 -0
- /package/dist/{theme → src/theme}/cssVars.js +0 -0
- /package/dist/{theme → src/theme}/types.js +0 -0
- /package/dist/{theme → src/theme}/useCSSVariables.js +0 -0
- /package/dist/{theme → src/theme}/useColorScheme.js +0 -0
- /package/dist/{theme → src/theme}/useColorSchemeMetaTag.js +0 -0
- /package/dist/{theme → src/theme}/useColorSchemeProvider.js +0 -0
- /package/dist/{theme → src/theme}/usePrefersColorScheme.js +0 -0
- /package/dist/{theme → src/theme}/utils.js +0 -0
- /package/dist/{tooltip → src/tooltip}/Tooltip.js +0 -0
- /package/dist/{tooltip → src/tooltip}/TooltipHoverModeProvider.js +0 -0
- /package/dist/{tooltip → src/tooltip}/constants.js +0 -0
- /package/dist/{tooltip → src/tooltip}/tooltipStyles.js +0 -0
- /package/dist/{tooltip → src/tooltip}/useTooltip.js +0 -0
- /package/dist/{tooltip → src/tooltip}/useTooltipPosition.js +0 -0
- /package/dist/{tooltip → src/tooltip}/utils.js +0 -0
- /package/dist/{transition → src/transition}/CSSTransition.js +0 -0
- /package/dist/{transition → src/transition}/Collapse.js +0 -0
- /package/dist/{transition → src/transition}/CrossFade.js +0 -0
- /package/dist/{transition → src/transition}/ScaleTransition.js +0 -0
- /package/dist/{transition → src/transition}/Slide.js +0 -0
- /package/dist/{transition → src/transition}/SlideContainer.js +0 -0
- /package/dist/{transition → src/transition}/collapseStyles.js +0 -0
- /package/dist/{transition → src/transition}/config.js +0 -0
- /package/dist/{transition → src/transition}/maxWidthTransition.js +0 -0
- /package/dist/{transition → src/transition}/types.js +0 -0
- /package/dist/{transition → src/transition}/useCSSTransition.js +0 -0
- /package/dist/{transition → src/transition}/useCarousel.js +0 -0
- /package/dist/{transition → src/transition}/useCollapseTransition.js +0 -0
- /package/dist/{transition → src/transition}/useCrossFadeTransition.js +0 -0
- /package/dist/{transition → src/transition}/useMaxWidthTransition.js +0 -0
- /package/dist/{transition → src/transition}/useScaleTransition.js +0 -0
- /package/dist/{transition → src/transition}/useSlideTransition.js +0 -0
- /package/dist/{transition → src/transition}/useTransition.js +0 -0
- /package/dist/{transition → src/transition}/utils.js +0 -0
- /package/dist/{tree → src/tree}/DefaultTreeItemRenderer.js +0 -0
- /package/dist/{tree → src/tree}/Tree.js +0 -0
- /package/dist/{tree → src/tree}/TreeGroup.js +0 -0
- /package/dist/{tree → src/tree}/TreeItemExpander.js +0 -0
- /package/dist/{tree → src/tree}/TreeProvider.js +0 -0
- /package/dist/{tree → src/tree}/types.js +0 -0
- /package/dist/{tree → src/tree}/useTree.js +0 -0
- /package/dist/{tree → src/tree}/useTreeExpansion.js +0 -0
- /package/dist/{tree → src/tree}/useTreeItems.js +0 -0
- /package/dist/{tree → src/tree}/useTreeMovement.js +0 -0
- /package/dist/{tree → src/tree}/useTreeSelection.js +0 -0
- /package/dist/{tree → src/tree}/utils.js +0 -0
- /package/dist/{typography → src/typography}/SrOnly.js +0 -0
- /package/dist/{typography → src/typography}/TextContainer.js +0 -0
- /package/dist/{typography → src/typography}/Typography.js +0 -0
- /package/dist/{typography → src/typography}/WritingDirectionProvider.js +0 -0
- /package/dist/{useAsyncAction.js → src/useAsyncAction.js} +0 -0
- /package/dist/{useDebouncedFunction.js → src/useDebouncedFunction.js} +0 -0
- /package/dist/{useDropzone.js → src/useDropzone.js} +0 -0
- /package/dist/{useEnsuredId.js → src/useEnsuredId.js} +0 -0
- /package/dist/{useEnsuredRef.js → src/useEnsuredRef.js} +0 -0
- /package/dist/{useEnsuredState.js → src/useEnsuredState.js} +0 -0
- /package/dist/{useHtmlClassName.js → src/useHtmlClassName.js} +0 -0
- /package/dist/{useIntersectionObserver.js → src/useIntersectionObserver.js} +0 -0
- /package/dist/{useIsomorphicLayoutEffect.js → src/useIsomorphicLayoutEffect.js} +0 -0
- /package/dist/{useLocalStorage.js → src/useLocalStorage.js} +0 -0
- /package/dist/{useOrientation.js → src/useOrientation.js} +0 -0
- /package/dist/{usePageInactive.js → src/usePageInactive.js} +0 -0
- /package/dist/{useThrottledFunction.js → src/useThrottledFunction.js} +0 -0
- /package/dist/{useToggle.js → src/useToggle.js} +0 -0
- /package/dist/{useUnmounted.js → src/useUnmounted.js} +0 -0
- /package/dist/{utils → src/utils}/RenderRecursively.js +0 -0
- /package/dist/{utils → src/utils}/alphaNumericSort.js +0 -0
- /package/dist/{utils → src/utils}/applyRef.js +0 -0
- /package/dist/{utils → src/utils}/bem.js +0 -0
- /package/dist/{utils → src/utils}/filters.js +0 -0
- /package/dist/{utils → src/utils}/getClientPosition.js +0 -0
- /package/dist/{utils → src/utils}/getPercentage.js +0 -0
- /package/dist/{utils → src/utils}/identity.js +0 -0
- /package/dist/{utils → src/utils}/isElementVisible.js +0 -0
- /package/dist/{utils → src/utils}/loop.js +0 -0
- /package/dist/{utils → src/utils}/parseCssLengthUnit.js +0 -0
- /package/dist/{utils → src/utils}/randomInt.js +0 -0
- /package/dist/{utils → src/utils}/wait.js +0 -0
- /package/dist/{utils → src/utils}/withinRange.js +0 -0
- /package/dist/{window-splitter → src/window-splitter}/WindowSplitter.js +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/expansion-panel/ExpansionPanel.tsx"],"sourcesContent":["\"use client\";\nimport { cnb } from \"cnbuilder\";\nimport { forwardRef, type CSSProperties, type ReactNode } from \"react\";\nimport { Card, type CardProps } from \"../card/Card.js\";\nimport { CardContent, type CardContentProps } from \"../card/CardContent.js\";\nimport { useCollapseTransition } from \"../transition/useCollapseTransition.js\";\nimport { type PropsWithRef } from \"../types.js\";\nimport { useEnsuredId } from \"../useEnsuredId.js\";\nimport { bem } from \"../utils/bem.js\";\nimport {\n ExpansionPanelHeader,\n type ExpansionPanelHeaderProps,\n} from \"./ExpansionPanelHeader.js\";\n\nconst styles = bem(\"rmd-expansion-panel\");\n\n/** @remarks \\@since 6.0.0 */\nexport interface ExpansionPanelClassNameOptions {\n className?: string;\n\n /**\n * @defaultValue `false`\n */\n expanded?: boolean;\n\n /**\n * Set this to `true` to disable the `margin-top` transition between multiple\n * panels\n *\n * @defaultValue `false`\n */\n disableTransition?: boolean;\n}\n\n/**\n * @remarks \\@since 6.0.0\n */\nexport function expansionPanel(\n options: ExpansionPanelClassNameOptions = {}\n): string {\n const { className, expanded = false, disableTransition = false } = options;\n\n return cnb(styles({ expanded, animate: !disableTransition }), className);\n}\n\n/**\n * @remarks \\@since 6.0.0 Renamed some card props and updated for the latest\n * API.\n */\nexport interface ExpansionPanelProps extends CardProps {\n /**\n * Set this to `true` if the {@link children} should be visible. This should\n * generally be provided by the `useExpansionPanels` hook.\n */\n expanded: boolean;\n\n /**\n * A function that should toggle the {@link expanded} state. This should\n * generally be provided by the `useExpansionPanels` hook.\n */\n onExpandClick(): void;\n\n /**\n * Set this to `true` to prevent the panel from toggling the {@link expanded}\n * state. This should generally be provided by the `useExpansionPanels` hook.\n *\n * @defaultValue `false`\n */\n disabled?: boolean;\n\n /**\n * @defaultValue `true`\n * @see {@link CardProps.fullWidth}\n */\n fullWidth?: boolean;\n\n /**\n * This can be used to implement a custom header implementation, but it\n * probably shouldn't be needed.\n *\n * @remarks \\@since 6.0.0 This was renamed from `customHeader`\n * @see {@link headerProps}\n */\n header?: ReactNode;\n\n /**\n * This can be used to apply additional props to the header element.\n *\n * Note: You can override the `style` and `className` using\n * {@link headerStyle} and {@link headerClassName} instead for convenience.\n *\n * @example\n * ```tsx\n * <ExpansionPanel\n * {...props}\n * headerProps={{\n * style: {\n * // custom inline style\n * },\n * className: \"come-class-name\",\n * icon: <MyCustomIcon />,\n * iconRotatorProps: {\n * className: \"another-custom-class-name\",\n * },\n * }}\n * />\n * ```\n */\n headerProps?: Omit<\n ExpansionPanelHeaderProps,\n \"id\" | \"aria-disabled\" | \"onClick\" | \"expanded\"\n >;\n\n /**\n * Convenience prop to apply custom style to the `ExpansionPanelHeader`\n * component.\n */\n headerStyle?: CSSProperties;\n\n /**\n * Convenience prop to apply custom class name to the `ExpansionPanelHeader`\n * component.\n */\n headerClassName?: string;\n\n /**\n * Content to display within the header of the expansion panel that toggles\n * the expanded state. THis should generally contain some accessible text\n * describing the expansion panel's content.\n *\n * @remarks \\@since 6.0.0 THis was renamed from `header`\n */\n headerChildren?: ReactNode;\n\n /**\n * This can be used to apply additional props to the `CardContent` component\n * if needed.\n *\n * Note: The `disableLastChildPadding` defaults to `true` in this\n * implementation.\n *\n * @example\n * ```tsx\n * contentProps={{\n * style: {},\n * className: \"some-class-name\",\n * disablePadding: true,\n * disableSecondaryColor: true,\n * disableLastChildPadding: false,\n * // whatever else\n * }}\n * ```\n *\n * @see {@link contentStyle}\n * @see {@link contentClassName}\n * @see {@link disableContentPadding}\n */\n contentProps?: PropsWithRef<Omit<CardContentProps, \"role\">, HTMLDivElement>;\n\n /**\n * Convenience prop to apply custom style to the `CardContent` component.\n */\n contentStyle?: CSSProperties;\n\n /**\n * Convenience prop to apply custom class name to the `CardContent` component.\n */\n contentClassName?: string;\n\n /**\n * Set to `true` to disable the collapse transition for the card content\n * whenever the {@link expanded} state changes.\n *\n * @defaultValue `false`\n */\n disableTransition?: boolean;\n\n /**\n * @defaultValue `false`\n * @see {@link CardContentProps.disablePadding}\n */\n disableContentPadding?: boolean;\n\n /**\n * Set this to `true` to unmount the {@link children} when the\n * {@link expanded} state is `false`.\n *\n * @defaultValue `false`\n * @remarks \\@since 6.0.0 Renamed from `persistent` to match the\n * `useCollapseTransition` naming convention.\n */\n temporary?: boolean;\n}\n\n/**\n * **Client Component**\n *\n * @see `useExpansionPanels` for examples.\n * @remarks\n * \\@since 6.0.0 The content will be persistent and invisible using `display: none`\n * instead of unmounting and also animate the `margin-top` style.\n */\nexport const ExpansionPanel = forwardRef<\n HTMLHeadingElement,\n ExpansionPanelProps\n>(function ExpansionPanel(props, ref) {\n const {\n id: propId,\n className,\n contentProps,\n contentStyle,\n contentClassName,\n header: propHeader,\n headerProps,\n headerStyle,\n headerClassName,\n headerChildren,\n children,\n expanded,\n onExpandClick,\n disabled = false,\n fullWidth = true,\n temporary = false,\n disableTransition = false,\n disableContentPadding = false,\n ...remaining\n } = props;\n\n const id = useEnsuredId(propId, \"expansion-panel\");\n const { elementProps, rendered } = useCollapseTransition({\n nodeRef: contentProps?.ref,\n style: contentStyle,\n className: contentClassName,\n timeout: disableTransition ? 0 : undefined,\n temporary,\n transitionIn: expanded,\n });\n\n let header = propHeader;\n if (typeof header === \"undefined\") {\n header = (\n <ExpansionPanelHeader\n style={headerStyle}\n className={headerClassName}\n disableTransition={disableTransition}\n {...headerProps}\n aria-disabled={disabled || undefined}\n id={id}\n onClick={onExpandClick}\n expanded={expanded}\n >\n {headerChildren}\n </ExpansionPanelHeader>\n );\n }\n\n return (\n <Card\n {...remaining}\n id={`${id}-container`}\n ref={ref}\n fullWidth={fullWidth}\n className={expansionPanel({\n expanded,\n disableTransition,\n className,\n })}\n >\n {header}\n {rendered && (\n <CardContent\n id={`${id}-content`}\n aria-labelledby={id}\n disablePadding={disableContentPadding}\n disableSecondaryColor\n disableLastChildPadding\n {...contentProps}\n {...elementProps}\n role=\"region\"\n >\n {children}\n </CardContent>\n )}\n </Card>\n );\n});\n"],"names":["cnb","forwardRef","Card","CardContent","useCollapseTransition","useEnsuredId","bem","ExpansionPanelHeader","styles","expansionPanel","options","className","expanded","disableTransition","animate","ExpansionPanel","props","ref","id","propId","contentProps","contentStyle","contentClassName","header","propHeader","headerProps","headerStyle","headerClassName","headerChildren","children","onExpandClick","disabled","fullWidth","temporary","disableContentPadding","remaining","elementProps","rendered","nodeRef","style","timeout","undefined","transitionIn","aria-disabled","onClick","aria-labelledby","disablePadding","disableSecondaryColor","disableLastChildPadding","role"],"mappings":"AAAA;;AACA,SAASA,GAAG,QAAQ,YAAY;AAChC,SAASC,UAAU,QAA4C,QAAQ;AACvE,SAASC,IAAI,QAAwB,kBAAkB;AACvD,SAASC,WAAW,QAA+B,yBAAyB;AAC5E,SAASC,qBAAqB,QAAQ,yCAAyC;AAE/E,SAASC,YAAY,QAAQ,qBAAqB;AAClD,SAASC,GAAG,QAAQ,kBAAkB;AACtC,SACEC,oBAAoB,QAEf,4BAA4B;AAEnC,MAAMC,SAASF,IAAI;AAoBnB;;CAEC,GACD,OAAO,SAASG,eACdC,UAA0C,CAAC,CAAC;IAE5C,MAAM,EAAEC,SAAS,EAAEC,WAAW,KAAK,EAAEC,oBAAoB,KAAK,EAAE,GAAGH;IAEnE,OAAOV,IAAIQ,OAAO;QAAEI;QAAUE,SAAS,CAACD;IAAkB,IAAIF;AAChE;AAuJA;;;;;;;CAOC,GACD,OAAO,MAAMI,+BAAiBd,WAG5B,SAASc,eAAeC,KAAK,EAAEC,GAAG;IAClC,MAAM,EACJC,IAAIC,MAAM,EACVR,SAAS,EACTS,YAAY,EACZC,YAAY,EACZC,gBAAgB,EAChBC,QAAQC,UAAU,EAClBC,WAAW,EACXC,WAAW,EACXC,eAAe,EACfC,cAAc,EACdC,QAAQ,EACRjB,QAAQ,EACRkB,aAAa,EACbC,WAAW,KAAK,EAChBC,YAAY,IAAI,EAChBC,YAAY,KAAK,EACjBpB,oBAAoB,KAAK,EACzBqB,wBAAwB,KAAK,EAC7B,GAAGC,WACJ,GAAGnB;IAEJ,MAAME,KAAKb,aAAac,QAAQ;IAChC,MAAM,EAAEiB,YAAY,EAAEC,QAAQ,EAAE,GAAGjC,sBAAsB;QACvDkC,SAASlB,cAAcH;QACvBsB,OAAOlB;QACPV,WAAWW;QACXkB,SAAS3B,oBAAoB,IAAI4B;QACjCR;QACAS,cAAc9B;IAChB;IAEA,IAAIW,SAASC;IACb,IAAI,OAAOD,WAAW,aAAa;QACjCA,uBACE,KAAChB;YACCgC,OAAOb;YACPf,WAAWgB;YACXd,mBAAmBA;YAClB,GAAGY,WAAW;YACfkB,iBAAeZ,YAAYU;YAC3BvB,IAAIA;YACJ0B,SAASd;YACTlB,UAAUA;sBAETgB;;IAGP;IAEA,qBACE,MAAC1B;QACE,GAAGiC,SAAS;QACbjB,IAAI,CAAC,EAAEA,GAAG,UAAU,CAAC;QACrBD,KAAKA;QACLe,WAAWA;QACXrB,WAAWF,eAAe;YACxBG;YACAC;YACAF;QACF;;YAECY;YACAc,0BACC,KAAClC;gBACCe,IAAI,CAAC,EAAEA,GAAG,QAAQ,CAAC;gBACnB2B,mBAAiB3B;gBACjB4B,gBAAgBZ;gBAChBa,qBAAqB;gBACrBC,uBAAuB;gBACtB,GAAG5B,YAAY;gBACf,GAAGgB,YAAY;gBAChBa,MAAK;0BAEJpB;;;;AAKX,GAAG"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/expansion-panel/ExpansionPanelHeader.tsx"],"sourcesContent":["import { cnb } from \"cnbuilder\";\nimport {\n forwardRef,\n type ButtonHTMLAttributes,\n type MouseEventHandler,\n type ReactNode,\n} from \"react\";\nimport { ButtonUnstyled } from \"../button/ButtonUnstyled.js\";\nimport { getIcon } from \"../icon/iconConfig.js\";\nimport { IconRotator, type IconRotatorProps } from \"../icon/IconRotator.js\";\nimport { type PropsWithRef } from \"../types.js\";\nimport {\n Typography,\n type TypographyProps,\n type TypographyType,\n} from \"../typography/Typography.js\";\n\n/**\n * @remarks \\@since 6.0.0 Updated to include additional heading/Typography\n * props.\n */\nexport interface ExpansionPanelHeaderProps\n extends ButtonHTMLAttributes<HTMLButtonElement> {\n id: string;\n\n /**\n * This should be a function that toggles the expansion state for the parent\n * `ExpansionPanel`.\n */\n onClick: MouseEventHandler<HTMLButtonElement>;\n expanded: boolean;\n\n /**\n * @defaultValue `\"h3\"`\n */\n as?: \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\";\n\n /**\n * @defaultValue `getIcon(\"expander\")`\n */\n icon?: ReactNode;\n\n /**\n * @defaultValue `\"subtitle-1\"`\n */\n headingType?: TypographyType;\n\n /**\n * Any additional props to provide to the heading element that wraps the\n * expansion panel button.\n */\n headingProps?: PropsWithRef<TypographyProps, HTMLHeadingElement>;\n iconRotatorProps?: Omit<IconRotatorProps, \"rotated\" | \"disableTransition\">;\n\n /**\n * Any children to display **before** the button in the heading element. This\n * should really only be used if you need to add additional clickable elements\n * within the header.\n */\n beforeChildren?: ReactNode;\n\n /**\n * Any children to display **after** the button in the heading element.This\n * should really only be used if you need to add additional clickable elements\n * within the header.\n *\n * @example\n * ```tsx\n * afterChildren={\n * <DropdownMenu buttonType=\"icon\" ButtonChildren={<MoreVertSVGIcon />}>\n * <MenuItem>Item 1</MenuItem>\n * <MenuItem>Item 2</MenuItem>\n * <MenuItem>Item 3</MenuItem>\n * </DropdownMenu>\n * }\n * ```\n */\n afterChildren?: ReactNode;\n\n /**\n * @defaultValue `false`\n */\n disableTransition?: boolean;\n}\n\n/**\n * **Server Component**\n * This is mostly an internal component, but can also be used to implement a\n * custom header implementation if needed. This might really be a client\n * component in practice since the `onClick` prop must be provided.\n *\n * @example\n * Custom Header\n * ```tsx\n * import type { ExpansionPanelProps } from \"@react-md/core\";\n * import {\n * ExpansionPanel,\n * ExpansionPanelHeader,\n * } from \"@react-md/core\";\n * import type { ReactElement } from \"react\";\n * const { useId } from \"react\";\n *\n * export type CustomExpansionPanelProps = ExpansionPanelProps & { id: string; };\n *\n * export function CustomExpansionPanel(props: CustomExpansionPanelProps): ReactElement {\n * const {\n * id,\n * disabled,\n * onExpandClick,\n * expanded,\n * disableTransition,\n * headerChildren,\n * } = props;\n *\n * return (\n * <ExpansionPanel\n * {...props}\n * header={(\n * <ExpansionPanelHeader\n * aria-disabled={disabled || undefined}\n * id={id}\n * onClick={onExpandClick}\n * expanded={expanded}\n * disableTransition={disableTransition}\n * // whatever props and any custom implementation\n * >\n * {headerChildren}\n * </ExpansionPanelHeader>\n * )}\n * />\n * );\n * }\n * ```\n *\n * @remarks \\@since 6.0.0 Updated to be wrapped by the {@link Typography}\n * component and rendered as an `<h6>`.\n */\nexport const ExpansionPanelHeader = forwardRef<\n HTMLHeadingElement,\n ExpansionPanelHeaderProps\n>(function ExpansionPanelHeader(props, ref) {\n const {\n id,\n headingType = \"subtitle-1\",\n headingProps,\n iconRotatorProps,\n icon: propIcon,\n expanded,\n className,\n children,\n beforeChildren,\n afterChildren,\n disableTransition = false,\n ...remaining\n } = props;\n\n const icon = getIcon(\"expander\", propIcon);\n\n return (\n <Typography\n ref={ref}\n type={headingType}\n margin=\"none\"\n {...headingProps}\n className={cnb(\"rmd-expansion-panel__heading\", headingProps?.className)}\n >\n {beforeChildren}\n <ButtonUnstyled\n {...remaining}\n aria-expanded={expanded}\n id={id}\n className={cnb(\"rmd-expansion-panel__button\", className)}\n >\n {children}\n {icon && (\n <IconRotator\n {...iconRotatorProps}\n rotated={expanded}\n disableTransition={disableTransition}\n >\n {icon}\n </IconRotator>\n )}\n </ButtonUnstyled>\n {afterChildren}\n </Typography>\n );\n});\n"],"names":["cnb","forwardRef","ButtonUnstyled","getIcon","IconRotator","Typography","ExpansionPanelHeader","props","ref","id","headingType","headingProps","iconRotatorProps","icon","propIcon","expanded","className","children","beforeChildren","afterChildren","disableTransition","remaining","type","margin","aria-expanded","rotated"],"mappings":";AAAA,SAASA,GAAG,QAAQ,YAAY;AAChC,SACEC,UAAU,QAIL,QAAQ;AACf,SAASC,cAAc,QAAQ,8BAA8B;AAC7D,SAASC,OAAO,QAAQ,wBAAwB;AAChD,SAASC,WAAW,QAA+B,yBAAyB;AAE5E,SACEC,UAAU,QAGL,8BAA8B;AAsErC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmDC,GACD,OAAO,MAAMC,qCAAuBL,WAGlC,SAASK,qBAAqBC,KAAK,EAAEC,GAAG;IACxC,MAAM,EACJC,EAAE,EACFC,cAAc,YAAY,EAC1BC,YAAY,EACZC,gBAAgB,EAChBC,MAAMC,QAAQ,EACdC,QAAQ,EACRC,SAAS,EACTC,QAAQ,EACRC,cAAc,EACdC,aAAa,EACbC,oBAAoB,KAAK,EACzB,GAAGC,WACJ,GAAGd;IAEJ,MAAMM,OAAOV,QAAQ,YAAYW;IAEjC,qBACE,MAACT;QACCG,KAAKA;QACLc,MAAMZ;QACNa,QAAO;QACN,GAAGZ,YAAY;QAChBK,WAAWhB,IAAI,gCAAgCW,cAAcK;;YAE5DE;0BACD,MAAChB;gBACE,GAAGmB,SAAS;gBACbG,iBAAeT;gBACfN,IAAIA;gBACJO,WAAWhB,IAAI,+BAA+BgB;;oBAE7CC;oBACAJ,sBACC,KAACT;wBACE,GAAGQ,gBAAgB;wBACpBa,SAASV;wBACTK,mBAAmBA;kCAElBP;;;;YAINM;;;AAGP,GAAG"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/expansion-panel/useExpansionList.ts"],"sourcesContent":["\"use client\";\nimport type {\n FocusEventHandler,\n KeyboardEventHandler,\n MouseEventHandler,\n} from \"react\";\nimport type { KeyboardMovementProviderImplementation } from \"../movement/types.js\";\nimport { useKeyboardMovementProvider } from \"../movement/useKeyboardMovementProvider.js\";\n\n/**\n * @internal\n * @remarks \\@since 6.0.0\n */\nconst getPanelsOnly = (container: HTMLElement): readonly HTMLElement[] => [\n ...container.querySelectorAll<HTMLElement>(\".rmd-expansion-panel__button\"),\n];\n\n/** @remarks \\@since 6.0.0 */\nexport interface ExpansionListHookOptions<E extends HTMLElement> {\n onClick?: MouseEventHandler<E>;\n onFocus?: FocusEventHandler<E>;\n onKeyDown?: KeyboardEventHandler<E>;\n}\n\n/** @remarks \\@since 6.0.0 */\nexport type ExpansionListImplementation<E extends HTMLElement> =\n KeyboardMovementProviderImplementation<E>;\n\n/**\n * @example\n * Custom Implementation\n * ```tsx\n * import {\n * ExpansionPanel,\n * Form,\n * KeyboardMovementProvider,\n * useExpansionList,\n * useExpansionPanels,\n * } from \"@react-md/core\";\n * import type { ReactElement } from \"react\";\n *\n * import { BillingAddress } from \"./BillingAddress\";\n * import { BillingInformation } from \"./BillingInformation\";\n * import { PersonalInformation } from \"./PersonalInformation\";\n *\n * function Example(): ReactElement {\n * const { movementContext, movementProps } = useExpansionList();\n * const { getPanelProps } = useExpansionPanels();\n *\n * return (\n * <KeyboardMovementProvider value={movementContext}>\n * <Form {...movementProps}>\n * <ExpansionPanel {...getPanelProps(\"personal-information-panel\")}>\n * <PersonalInformation />\n * </ExpansionPanel>\n * <ExpansionPanel {...getPanelProps(\"billing-information-panel\")}>\n * <BillingInformation />\n * </ExpansionPanel>\n * <ExpansionPanel {...getPanelProps(\"billing-address-panel\")}>\n * <BillingAddress />\n * </ExpansionPanel>\n * </FOrm>\n * </KeyboardMovementProvider>\n * );\n * }\n * ```\n *\n * @remarks \\@since 6.0.0\n */\nexport function useExpansionList<E extends HTMLElement>(\n options: ExpansionListHookOptions<E> = {}\n): ExpansionListImplementation<E> {\n return useKeyboardMovementProvider({\n ...options,\n loopable: true,\n includeDisabled: true,\n getFocusableElements: getPanelsOnly,\n });\n}\n"],"names":["useKeyboardMovementProvider","getPanelsOnly","container","querySelectorAll","useExpansionList","options","loopable","includeDisabled","getFocusableElements"],"mappings":"AAAA;AAOA,SAASA,2BAA2B,QAAQ,6CAA6C;AAEzF;;;CAGC,GACD,MAAMC,gBAAgB,CAACC,YAAmD;WACrEA,UAAUC,gBAAgB,CAAc;KAC5C;AAaD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwCC,GACD,OAAO,SAASC,iBACdC,UAAuC,CAAC,CAAC;IAEzC,OAAOL,4BAA4B;QACjC,GAAGK,OAAO;QACVC,UAAU;QACVC,iBAAiB;QACjBC,sBAAsBP;IACxB;AACF"}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useState } from "react";
|
|
3
|
+
import { useEnsuredId } from "../useEnsuredId.js";
|
|
4
|
+
/**
|
|
5
|
+
* Use this hook to control the expanded state for a group of `ExpansionPanel`.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* Index Based Panels
|
|
9
|
+
* ```tsx
|
|
10
|
+
* import {
|
|
11
|
+
* ExpansionList,
|
|
12
|
+
* ExpansionPanel,
|
|
13
|
+
* useExpansionPanels,
|
|
14
|
+
* } from "@react-md/core";
|
|
15
|
+
* import { type ReactElement } from "react";
|
|
16
|
+
*
|
|
17
|
+
* function Example(): ReactElement {
|
|
18
|
+
* const { getPanelProps } = useExpansionPanels();
|
|
19
|
+
*
|
|
20
|
+
* return (
|
|
21
|
+
* <ExpansionList>
|
|
22
|
+
* <ExpansionPanel {...getPanelProps(0)} headerChildren="Panel 1">
|
|
23
|
+
* Panel 1 Contents
|
|
24
|
+
* </ExpansionPanel>
|
|
25
|
+
* <ExpansionPanel {...getPanelProps(1)} headerChildren="Panel 2">
|
|
26
|
+
* Panel 2 Contents
|
|
27
|
+
* </ExpansionPanel>
|
|
28
|
+
* <ExpansionPanel {...getPanelProps(2)} headerChildren="Panel 3">
|
|
29
|
+
* Panel 3 Contents
|
|
30
|
+
* </ExpansionPanel>
|
|
31
|
+
* </ExpansionList>
|
|
32
|
+
* );
|
|
33
|
+
* }
|
|
34
|
+
* ```
|
|
35
|
+
*
|
|
36
|
+
* @example
|
|
37
|
+
* Custom Panel Ids and Expand All Panels by Default
|
|
38
|
+
* ```tsx
|
|
39
|
+
* import {
|
|
40
|
+
* ExpansionList,
|
|
41
|
+
* ExpansionPanel,
|
|
42
|
+
* useExpansionPanels,
|
|
43
|
+
* } from "@react-md/core";
|
|
44
|
+
* import { type ReactElement } from "react";
|
|
45
|
+
*
|
|
46
|
+
* import { BillingAddress } from "./BillingAddress";
|
|
47
|
+
* import { BillingInformation } from "./BillingInformation";
|
|
48
|
+
* import { PersonalInformation } from "./PersonalInformation";
|
|
49
|
+
*
|
|
50
|
+
* const panel1Id = "personal-information-panel";
|
|
51
|
+
* const panel2Id = "billing-information-panel";
|
|
52
|
+
* const panel3Id = "billing-address-panel";
|
|
53
|
+
*
|
|
54
|
+
* function Example(): ReactElement {
|
|
55
|
+
* const { getPanelProps } = useExpansionPanels({
|
|
56
|
+
* multiple: true,
|
|
57
|
+
* defaultExpandedIds: () => [panel1Id, panel2Id, panel3Id],
|
|
58
|
+
* });
|
|
59
|
+
*
|
|
60
|
+
* return (
|
|
61
|
+
* <ExpansionList>
|
|
62
|
+
* <ExpansionPanel {...getPanelProps(panel1Id)} headerChildren="Personal Information">
|
|
63
|
+
* <PersonalInformation />
|
|
64
|
+
* </ExpansionPanel>
|
|
65
|
+
* <ExpansionPanel {...getPanelProps(panel2Id)} headerChildren="Billing Information">
|
|
66
|
+
* <BillingInformation />
|
|
67
|
+
* </ExpansionPanel>
|
|
68
|
+
* <ExpansionPanel {...getPanelProps(panel3Id)} headerChildren="Billing Address">
|
|
69
|
+
* <BillingAddress />
|
|
70
|
+
* </ExpansionPanel>
|
|
71
|
+
* </ExpansionList>
|
|
72
|
+
* );
|
|
73
|
+
* }
|
|
74
|
+
* ```
|
|
75
|
+
*
|
|
76
|
+
*
|
|
77
|
+
* @remarks
|
|
78
|
+
* \@since 6.0.0 The hook was renamed from `usePanels` to `useExpansionPanels`,
|
|
79
|
+
* the API changed to return `getPanelProps` instead of a generated list of
|
|
80
|
+
* panel props based on the provided `count`, and the hook no longer supports
|
|
81
|
+
* having all panels expanded by default.
|
|
82
|
+
*/ export function useExpansionPanels(options = {}) {
|
|
83
|
+
const { baseId: propBaseId, multiple = false, preventAllCollapsed = false, disableTransition = false, defaultExpandedIds, defaultExpandedIndex, disableContentPadding = false } = options;
|
|
84
|
+
const baseId = useEnsuredId(propBaseId, "expansion-panel");
|
|
85
|
+
const createId = (index)=>`${baseId}-${index + 1}`;
|
|
86
|
+
const [expandedIds, setExpandedIds] = useState(()=>{
|
|
87
|
+
if (typeof defaultExpandedIds === "undefined") {
|
|
88
|
+
const initialList = [];
|
|
89
|
+
if (typeof defaultExpandedIndex === "number" || preventAllCollapsed) {
|
|
90
|
+
initialList.push(createId(defaultExpandedIndex ?? 0));
|
|
91
|
+
}
|
|
92
|
+
return new Set(initialList);
|
|
93
|
+
}
|
|
94
|
+
const ids = typeof defaultExpandedIds === "function" ? defaultExpandedIds() : defaultExpandedIds;
|
|
95
|
+
return new Set(ids);
|
|
96
|
+
});
|
|
97
|
+
return {
|
|
98
|
+
expandedIds,
|
|
99
|
+
setExpandedIds,
|
|
100
|
+
getPanelProps (indexOrPanelId) {
|
|
101
|
+
let id;
|
|
102
|
+
let panelId;
|
|
103
|
+
if (typeof indexOrPanelId === "number") {
|
|
104
|
+
id = createId(indexOrPanelId);
|
|
105
|
+
panelId = id;
|
|
106
|
+
} else {
|
|
107
|
+
panelId = indexOrPanelId;
|
|
108
|
+
}
|
|
109
|
+
const expanded = expandedIds.has(panelId);
|
|
110
|
+
const disabled = expanded && preventAllCollapsed && expandedIds.size === 1;
|
|
111
|
+
return {
|
|
112
|
+
id,
|
|
113
|
+
disabled,
|
|
114
|
+
expanded,
|
|
115
|
+
onExpandClick () {
|
|
116
|
+
if (disabled) {
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
setExpandedIds((prevIds)=>{
|
|
120
|
+
const expanded = prevIds.has(panelId);
|
|
121
|
+
if (!multiple) {
|
|
122
|
+
return new Set(expanded ? [] : [
|
|
123
|
+
panelId
|
|
124
|
+
]);
|
|
125
|
+
}
|
|
126
|
+
const nextIds = new Set(prevIds);
|
|
127
|
+
if (expanded) {
|
|
128
|
+
nextIds.delete(panelId);
|
|
129
|
+
} else {
|
|
130
|
+
nextIds.add(panelId);
|
|
131
|
+
}
|
|
132
|
+
return nextIds;
|
|
133
|
+
});
|
|
134
|
+
},
|
|
135
|
+
disableTransition,
|
|
136
|
+
disableContentPadding
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
//# sourceMappingURL=useExpansionPanels.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/expansion-panel/useExpansionPanels.ts"],"sourcesContent":["\"use client\";\nimport { useState } from \"react\";\nimport type { UseStateInitializer, UseStateSetter } from \"../types.js\";\nimport { useEnsuredId } from \"../useEnsuredId.js\";\nimport type { ExpansionPanelProps } from \"./ExpansionPanel.js\";\n\n/** @remarks \\@since 6.0.0 */\nexport interface ExpansionPanelHookOptions {\n /**\n * An optional id to prefix each panel with.\n *\n * @defaultValue `\"expansion-panel-\" + useId()`\n */\n baseId?: string;\n\n /**\n * Set this to `true` if multiple panels can be open at the same time.\n *\n * @defaultValue `false`\n */\n multiple?: boolean;\n\n /**\n * Set this to `true` to enforce that at least one panel must always be\n * expanded.\n *\n * @defaultValue `false`\n */\n preventAllCollapsed?: boolean;\n\n /**\n * This is a convenience option to disable the expansion transition for all\n * panels.\n *\n * @defaultValue `false`\n */\n disableTransition?: boolean;\n\n /**\n * @defaultValue `preventAllCollapsed ? [\"expansion-panel-\" + useId() + \"-1\"] : []`\n */\n defaultExpandedIds?: UseStateInitializer<string[]>;\n\n /**\n * This can only be used if the {@link defaultExpandedIds} was not provided\n * and using index based panels.\n *\n * @example\n * ```tsx\n * const { getPanelProps } = useExpansionPanels({\n * defaultExpandedIndex: 2,\n * });\n *\n * return (\n * <ExpansionPanel {...getPanelProps(0)} />\n * <ExpansionPanel {...getPanelProps(1)} />\n * // expanded on first render\n * <ExpansionPanel {...getPanelProps(2)} />\n * <ExpansionPanel {...getPanelProps(3)} />\n * );\n * ```\n */\n defaultExpandedIndex?: number;\n\n /**\n * @defaultValue `false`\n */\n disableContentPadding?: boolean;\n}\n\n/** @remarks \\@since 6.0.0 */\nexport type ProvidedExpansionPanelProps = Pick<\n Required<ExpansionPanelProps>,\n | \"disabled\"\n | \"expanded\"\n | \"onExpandClick\"\n | \"disableTransition\"\n | \"disableContentPadding\"\n> & { id?: string };\n\n/**\n * @param indexOrPanelId - This should either be a DOM id to use for the panel\n * or the panel's index.\n * @returns Props to pass to an `ExpansionPanel` for it to work correctly.\n * @remarks \\@since 6.0.0\n */\nexport type GetExpansionPanelProps = (\n indexOrPanelId: string | number\n) => ProvidedExpansionPanelProps;\n\n/** @remarks \\@since 6.0.0 */\nexport interface ExpansionPanelImplementation {\n /**\n * The current set of expanded panel ids if you need this for some reason.\n */\n expandedIds: ReadonlySet<string>;\n\n /**\n * This can be used to manually control which panels are expanded if the\n * default behavior does not work for your use case.\n */\n setExpandedIds: UseStateSetter<ReadonlySet<string>>;\n\n /**\n * @example\n * Index Based Panels\n * ```tsx\n * <ExpansionPanel {...getPanelProps(0)} />\n * <ExpansionPanel {...getPanelProps(1)} />\n * <ExpansionPanel {...getPanelProps(2)} />\n * ```\n *\n * @example\n * Custom Panel Ids\n * ```tsx\n * <ExpansionPanel {...getPanelProps(\"address-panel\")} />\n * <ExpansionPanel {...getPanelProps(\"billing-panel\")} />\n * <ExpansionPanel {...getPanelProps(\"confirmation-panel\")} />\n * ```\n */\n getPanelProps: GetExpansionPanelProps;\n}\n\n/**\n * Use this hook to control the expanded state for a group of `ExpansionPanel`.\n *\n * @example\n * Index Based Panels\n * ```tsx\n * import {\n * ExpansionList,\n * ExpansionPanel,\n * useExpansionPanels,\n * } from \"@react-md/core\";\n * import { type ReactElement } from \"react\";\n *\n * function Example(): ReactElement {\n * const { getPanelProps } = useExpansionPanels();\n *\n * return (\n * <ExpansionList>\n * <ExpansionPanel {...getPanelProps(0)} headerChildren=\"Panel 1\">\n * Panel 1 Contents\n * </ExpansionPanel>\n * <ExpansionPanel {...getPanelProps(1)} headerChildren=\"Panel 2\">\n * Panel 2 Contents\n * </ExpansionPanel>\n * <ExpansionPanel {...getPanelProps(2)} headerChildren=\"Panel 3\">\n * Panel 3 Contents\n * </ExpansionPanel>\n * </ExpansionList>\n * );\n * }\n * ```\n *\n * @example\n * Custom Panel Ids and Expand All Panels by Default\n * ```tsx\n * import {\n * ExpansionList,\n * ExpansionPanel,\n * useExpansionPanels,\n * } from \"@react-md/core\";\n * import { type ReactElement } from \"react\";\n *\n * import { BillingAddress } from \"./BillingAddress\";\n * import { BillingInformation } from \"./BillingInformation\";\n * import { PersonalInformation } from \"./PersonalInformation\";\n *\n * const panel1Id = \"personal-information-panel\";\n * const panel2Id = \"billing-information-panel\";\n * const panel3Id = \"billing-address-panel\";\n *\n * function Example(): ReactElement {\n * const { getPanelProps } = useExpansionPanels({\n * multiple: true,\n * defaultExpandedIds: () => [panel1Id, panel2Id, panel3Id],\n * });\n *\n * return (\n * <ExpansionList>\n * <ExpansionPanel {...getPanelProps(panel1Id)} headerChildren=\"Personal Information\">\n * <PersonalInformation />\n * </ExpansionPanel>\n * <ExpansionPanel {...getPanelProps(panel2Id)} headerChildren=\"Billing Information\">\n * <BillingInformation />\n * </ExpansionPanel>\n * <ExpansionPanel {...getPanelProps(panel3Id)} headerChildren=\"Billing Address\">\n * <BillingAddress />\n * </ExpansionPanel>\n * </ExpansionList>\n * );\n * }\n * ```\n *\n *\n * @remarks\n * \\@since 6.0.0 The hook was renamed from `usePanels` to `useExpansionPanels`,\n * the API changed to return `getPanelProps` instead of a generated list of\n * panel props based on the provided `count`, and the hook no longer supports\n * having all panels expanded by default.\n */\nexport function useExpansionPanels(\n options: ExpansionPanelHookOptions = {}\n): ExpansionPanelImplementation {\n const {\n baseId: propBaseId,\n multiple = false,\n preventAllCollapsed = false,\n disableTransition = false,\n defaultExpandedIds,\n defaultExpandedIndex,\n disableContentPadding = false,\n } = options;\n\n const baseId = useEnsuredId(propBaseId, \"expansion-panel\");\n const createId = (index: number): string => `${baseId}-${index + 1}`;\n const [expandedIds, setExpandedIds] = useState<ReadonlySet<string>>(() => {\n if (typeof defaultExpandedIds === \"undefined\") {\n const initialList: string[] = [];\n if (typeof defaultExpandedIndex === \"number\" || preventAllCollapsed) {\n initialList.push(createId(defaultExpandedIndex ?? 0));\n }\n\n return new Set(initialList);\n }\n\n const ids =\n typeof defaultExpandedIds === \"function\"\n ? defaultExpandedIds()\n : defaultExpandedIds;\n return new Set(ids);\n });\n\n return {\n expandedIds,\n setExpandedIds,\n getPanelProps(indexOrPanelId) {\n let id: string | undefined;\n let panelId: string;\n if (typeof indexOrPanelId === \"number\") {\n id = createId(indexOrPanelId);\n panelId = id;\n } else {\n panelId = indexOrPanelId;\n }\n\n const expanded = expandedIds.has(panelId);\n const disabled =\n expanded && preventAllCollapsed && expandedIds.size === 1;\n return {\n id,\n disabled,\n expanded,\n onExpandClick() {\n if (disabled) {\n return;\n }\n\n setExpandedIds((prevIds) => {\n const expanded = prevIds.has(panelId);\n if (!multiple) {\n return new Set(expanded ? [] : [panelId]);\n }\n\n const nextIds = new Set(prevIds);\n if (expanded) {\n nextIds.delete(panelId);\n } else {\n nextIds.add(panelId);\n }\n\n return nextIds;\n });\n },\n disableTransition,\n disableContentPadding,\n };\n },\n };\n}\n"],"names":["useState","useEnsuredId","useExpansionPanels","options","baseId","propBaseId","multiple","preventAllCollapsed","disableTransition","defaultExpandedIds","defaultExpandedIndex","disableContentPadding","createId","index","expandedIds","setExpandedIds","initialList","push","Set","ids","getPanelProps","indexOrPanelId","id","panelId","expanded","has","disabled","size","onExpandClick","prevIds","nextIds","delete","add"],"mappings":"AAAA;AACA,SAASA,QAAQ,QAAQ,QAAQ;AAEjC,SAASC,YAAY,QAAQ,qBAAqB;AAwHlD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8EC,GACD,OAAO,SAASC,mBACdC,UAAqC,CAAC,CAAC;IAEvC,MAAM,EACJC,QAAQC,UAAU,EAClBC,WAAW,KAAK,EAChBC,sBAAsB,KAAK,EAC3BC,oBAAoB,KAAK,EACzBC,kBAAkB,EAClBC,oBAAoB,EACpBC,wBAAwB,KAAK,EAC9B,GAAGR;IAEJ,MAAMC,SAASH,aAAaI,YAAY;IACxC,MAAMO,WAAW,CAACC,QAA0B,CAAC,EAAET,OAAO,CAAC,EAAES,QAAQ,EAAE,CAAC;IACpE,MAAM,CAACC,aAAaC,eAAe,GAAGf,SAA8B;QAClE,IAAI,OAAOS,uBAAuB,aAAa;YAC7C,MAAMO,cAAwB,EAAE;YAChC,IAAI,OAAON,yBAAyB,YAAYH,qBAAqB;gBACnES,YAAYC,IAAI,CAACL,SAASF,wBAAwB;YACpD;YAEA,OAAO,IAAIQ,IAAIF;QACjB;QAEA,MAAMG,MACJ,OAAOV,uBAAuB,aAC1BA,uBACAA;QACN,OAAO,IAAIS,IAAIC;IACjB;IAEA,OAAO;QACLL;QACAC;QACAK,eAAcC,cAAc;YAC1B,IAAIC;YACJ,IAAIC;YACJ,IAAI,OAAOF,mBAAmB,UAAU;gBACtCC,KAAKV,SAASS;gBACdE,UAAUD;YACZ,OAAO;gBACLC,UAAUF;YACZ;YAEA,MAAMG,WAAWV,YAAYW,GAAG,CAACF;YACjC,MAAMG,WACJF,YAAYjB,uBAAuBO,YAAYa,IAAI,KAAK;YAC1D,OAAO;gBACLL;gBACAI;gBACAF;gBACAI;oBACE,IAAIF,UAAU;wBACZ;oBACF;oBAEAX,eAAe,CAACc;wBACd,MAAML,WAAWK,QAAQJ,GAAG,CAACF;wBAC7B,IAAI,CAACjB,UAAU;4BACb,OAAO,IAAIY,IAAIM,WAAW,EAAE,GAAG;gCAACD;6BAAQ;wBAC1C;wBAEA,MAAMO,UAAU,IAAIZ,IAAIW;wBACxB,IAAIL,UAAU;4BACZM,QAAQC,MAAM,CAACR;wBACjB,OAAO;4BACLO,QAAQE,GAAG,CAACT;wBACd;wBAEA,OAAOO;oBACT;gBACF;gBACAtB;gBACAG;YACF;QACF;IACF;AACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/focus/useFocusContainer.ts"],"sourcesContent":["\"use client\";\nimport type { KeyboardEventHandler, Ref, RefObject } from \"react\";\nimport { useEffect, useRef } from \"react\";\nimport { TRANSITION_CONFIG } from \"../transition/config.js\";\nimport type {\n TransitionCallbacks,\n TransitionEnterHandler,\n TransitionExitHandler,\n} from \"../transition/types.js\";\nimport { useEnsuredRef } from \"../useEnsuredRef.js\";\nimport type { FocusElementWithinType } from \"./utils.js\";\nimport { focusElementWithin, getFocusableElements } from \"./utils.js\";\n\nconst noop = (): void => {\n // do nothing\n};\n\n/**\n * `\"mount\"` - this will attempt to focus the container element if:\n * - there is no `document.activeElement`\n * - the container element does not contain the `document.activeElement`\n *\n * `\"unmount\"` - attempts to re-focus the element that was focused before the\n * focus container became active. The previous focus element is captured\n * whenever the `activate` option on the `useFocusContainer` hook is set to\n * `true`. This is normally when an element becomes `visible`.\n *\n * `\"keyboard\"` - refocuses the first focusable element if pressing `Tab` would\n * move the focus outside of the container element. If `Shift + Tab` was used,\n * the last focusable element will be used instead.\n *\n * @remarks \\@since 6.0.0\n */\nexport type FocusType = \"mount\" | \"unmount\" | \"keyboard\";\n\n/** @remarks \\@since 6.0.0 */\nexport type FocusContainerTransitionCallbacks = Pick<\n TransitionCallbacks,\n \"onEntering\" | \"onEntered\" | \"onExiting\" | \"onExited\"\n>;\n\n/** @remarks \\@since 6.0.0 */\nexport interface FocusContainerTransitionOptions<E extends HTMLElement>\n extends FocusContainerTransitionCallbacks {\n /**\n * An optional ref that will be merged with the\n * {@link FocusContainerImplementation.nodeRef}\n */\n nodeRef?: Ref<E>;\n}\n\n/** @remarks \\@since 6.0.0 */\nexport interface FocusContainerEventHandlers<E extends HTMLElement> {\n onKeyDown?: KeyboardEventHandler<E>;\n}\n\n/**\n * @remarks \\@since 6.0.0\n */\nexport type IsFocusTypeDisabled = (type: FocusType) => boolean;\n\nexport interface FocusContainerComponentProps {\n /**\n * @defaultValue `() => false`\n */\n isFocusTypeDisabled?: IsFocusTypeDisabled;\n\n /**\n * @defaultValue `false`\n */\n disableTransition?: boolean;\n}\n\n/** @remarks \\@since 6.0.0 */\nexport interface FocusContainerOptions<E extends HTMLElement>\n extends FocusContainerTransitionOptions<E>,\n FocusContainerComponentProps {\n onKeyDown?: KeyboardEventHandler<E>;\n /**\n * This to `true` will capture the current focused element as a focus target\n * once the `onExited` hook is fired. This should usually be set to the\n * `transitionIn` prop for `useTransition`.\n */\n activate: boolean;\n\n /**\n * Set this to true if elements that can be programmatically focused should be\n * included. These would be elements with a `tabIndex={-1}`.\n *\n * @defaultValue `false`\n */\n programmatic?: boolean;\n}\n\n/** @remarks \\@since 6.0.0 */\nexport interface FocusContainerImplementation<E extends HTMLElement> {\n nodeRef: RefObject<E>;\n eventHandlers: Required<FocusContainerEventHandlers<E>>;\n transitionOptions: Required<FocusContainerTransitionOptions<E>>;\n}\n\n/**\n * This hook is mostly for internal use only for dialog accessibility behavior\n * to prevent the focus from moving outside of the dialog while it is visible.\n * This API was developed to be used with the `useCSSTransition`/`useTransition`\n * hooks as well.\n *\n * @example\n * Main Usage\n * ```tsx\n * import {\n * Button,\n * useFocusContainer,\n * useScaleTransition,\n * useToggle,\n * } from \"@react-md/core\";\n * import type { ReactElement } from \"react\";\n *\n * function Example(): ReactElement {\n * const { toggled, enable, disable } = useToggle(false);\n *\n * const { eventHandlers, transitionOptions } = useFocusContainer({\n * activate: toggled,\n * });\n * const { elementProps, rendered } = useScaleTransition({\n * transitionIn: toggled,\n * temporary: true,\n * ...transitionOptions,\n * });\n *\n * return (\n * <>\n * <Button onClick={enable}>Toggle</Button>\n * {rendered && (\n * <div {...eventHandlers} {...elementProps}>\n * <Button onClick={disable}>Button 1</Button>\n * <Button onClick={disable}>Button 2</Button>\n * <Button onClick={disable}>Button 3</Button>\n * <Button onClick={disable}>Button 4</Button>\n * </div>\n * )}\n * </>\n * );\n * }\n * ```\n *\n * @remarks \\@since 6.0.0\n */\nexport function useFocusContainer<E extends HTMLElement>(\n options: FocusContainerOptions<E>\n): FocusContainerImplementation<E> {\n const {\n nodeRef,\n activate,\n onEntering = noop,\n onEntered = noop,\n onExiting = noop,\n onExited = noop,\n onKeyDown = noop,\n programmatic = false,\n disableTransition = false,\n isFocusTypeDisabled = noop,\n } = options;\n\n const [ref, refCallback] = useEnsuredRef(nodeRef);\n const prevFocus = useRef<HTMLElement | null>(null);\n\n useEffect(() => {\n if (!activate || !(document.activeElement instanceof HTMLElement)) {\n return;\n }\n\n prevFocus.current = document.activeElement;\n }, [activate]);\n\n const handleMountFocus =\n (callback: TransitionEnterHandler, skipped: boolean) =>\n (appearing: boolean) => {\n callback(appearing);\n const instance = ref.current;\n if (\n instance &&\n !skipped &&\n !isFocusTypeDisabled(\"mount\") &&\n (!document.activeElement || !instance.contains(document.activeElement))\n ) {\n instance.focus();\n }\n };\n\n const handleUnmountFocus =\n (callback: TransitionExitHandler, skipped: boolean) => (): void => {\n callback();\n if (skipped || isFocusTypeDisabled(\"unmount\")) {\n return;\n }\n\n // For some reason, the `\"Enter\"` keydown event fires at a different timing\n // than the Space keydown event.\n window.requestAnimationFrame(() => {\n prevFocus.current?.focus();\n });\n };\n\n return {\n nodeRef: ref,\n transitionOptions: {\n nodeRef: refCallback,\n onEntering: handleMountFocus(onEntering, false),\n onEntered: handleMountFocus(\n onEntered,\n !disableTransition && !TRANSITION_CONFIG.disabled\n ),\n onExiting: handleUnmountFocus(onExiting, false),\n onExited: handleUnmountFocus(\n onExited,\n !disableTransition && !TRANSITION_CONFIG.disabled\n ),\n },\n eventHandlers: {\n onKeyDown(event) {\n onKeyDown(event);\n if (\n event.isPropagationStopped() ||\n event.key !== \"Tab\" ||\n isFocusTypeDisabled(\"keyboard\")\n ) {\n return;\n }\n\n const { target, shiftKey, currentTarget } = event;\n const elements = getFocusableElements(currentTarget, programmatic);\n const count = elements.length;\n if (count === 0) {\n event.preventDefault();\n return;\n }\n\n // if the container element is the current focus, need to either focus\n // the first or last element so focus doesn't escape\n let type: FocusElementWithinType | undefined;\n if (\n count === 1 ||\n (!shiftKey &&\n (target === currentTarget || target === elements[count - 1]))\n ) {\n type = \"first\";\n } else if (\n shiftKey &&\n (target === currentTarget || target === elements[0])\n ) {\n type = \"last\";\n }\n\n if (type) {\n event.preventDefault();\n focusElementWithin({\n type,\n elements,\n container: currentTarget,\n });\n }\n },\n },\n };\n}\n"],"names":["useEffect","useRef","TRANSITION_CONFIG","useEnsuredRef","focusElementWithin","getFocusableElements","noop","useFocusContainer","options","nodeRef","activate","onEntering","onEntered","onExiting","onExited","onKeyDown","programmatic","disableTransition","isFocusTypeDisabled","ref","refCallback","prevFocus","document","activeElement","HTMLElement","current","handleMountFocus","callback","skipped","appearing","instance","contains","focus","handleUnmountFocus","window","requestAnimationFrame","transitionOptions","disabled","eventHandlers","event","isPropagationStopped","key","target","shiftKey","currentTarget","elements","count","length","preventDefault","type","container"],"mappings":"AAAA;AAEA,SAASA,SAAS,EAAEC,MAAM,QAAQ,QAAQ;AAC1C,SAASC,iBAAiB,QAAQ,0BAA0B;AAM5D,SAASC,aAAa,QAAQ,sBAAsB;AAEpD,SAASC,kBAAkB,EAAEC,oBAAoB,QAAQ,aAAa;AAEtE,MAAMC,OAAO;AACX,aAAa;AACf;AAsFA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8CC,GACD,OAAO,SAASC,kBACdC,OAAiC;IAEjC,MAAM,EACJC,OAAO,EACPC,QAAQ,EACRC,aAAaL,IAAI,EACjBM,YAAYN,IAAI,EAChBO,YAAYP,IAAI,EAChBQ,WAAWR,IAAI,EACfS,YAAYT,IAAI,EAChBU,eAAe,KAAK,EACpBC,oBAAoB,KAAK,EACzBC,sBAAsBZ,IAAI,EAC3B,GAAGE;IAEJ,MAAM,CAACW,KAAKC,YAAY,GAAGjB,cAAcM;IACzC,MAAMY,YAAYpB,OAA2B;IAE7CD,UAAU;QACR,IAAI,CAACU,YAAY,CAAEY,CAAAA,SAASC,aAAa,YAAYC,WAAU,GAAI;YACjE;QACF;QAEAH,UAAUI,OAAO,GAAGH,SAASC,aAAa;IAC5C,GAAG;QAACb;KAAS;IAEb,MAAMgB,mBACJ,CAACC,UAAkCC,UACnC,CAACC;YACCF,SAASE;YACT,MAAMC,WAAWX,IAAIM,OAAO;YAC5B,IACEK,YACA,CAACF,WACD,CAACV,oBAAoB,YACpB,CAAA,CAACI,SAASC,aAAa,IAAI,CAACO,SAASC,QAAQ,CAACT,SAASC,aAAa,CAAA,GACrE;gBACAO,SAASE,KAAK;YAChB;QACF;IAEF,MAAMC,qBACJ,CAACN,UAAiCC,UAAqB;YACrDD;YACA,IAAIC,WAAWV,oBAAoB,YAAY;gBAC7C;YACF;YAEA,2EAA2E;YAC3E,iCAAiC;YACjCgB,OAAOC,qBAAqB,CAAC;gBAC3Bd,UAAUI,OAAO,EAAEO;YACrB;QACF;IAEF,OAAO;QACLvB,SAASU;QACTiB,mBAAmB;YACjB3B,SAASW;YACTT,YAAYe,iBAAiBf,YAAY;YACzCC,WAAWc,iBACTd,WACA,CAACK,qBAAqB,CAACf,kBAAkBmC,QAAQ;YAEnDxB,WAAWoB,mBAAmBpB,WAAW;YACzCC,UAAUmB,mBACRnB,UACA,CAACG,qBAAqB,CAACf,kBAAkBmC,QAAQ;QAErD;QACAC,eAAe;YACbvB,WAAUwB,KAAK;gBACbxB,UAAUwB;gBACV,IACEA,MAAMC,oBAAoB,MAC1BD,MAAME,GAAG,KAAK,SACdvB,oBAAoB,aACpB;oBACA;gBACF;gBAEA,MAAM,EAAEwB,MAAM,EAAEC,QAAQ,EAAEC,aAAa,EAAE,GAAGL;gBAC5C,MAAMM,WAAWxC,qBAAqBuC,eAAe5B;gBACrD,MAAM8B,QAAQD,SAASE,MAAM;gBAC7B,IAAID,UAAU,GAAG;oBACfP,MAAMS,cAAc;oBACpB;gBACF;gBAEA,sEAAsE;gBACtE,oDAAoD;gBACpD,IAAIC;gBACJ,IACEH,UAAU,KACT,CAACH,YACCD,CAAAA,WAAWE,iBAAiBF,WAAWG,QAAQ,CAACC,QAAQ,EAAE,AAAD,GAC5D;oBACAG,OAAO;gBACT,OAAO,IACLN,YACCD,CAAAA,WAAWE,iBAAiBF,WAAWG,QAAQ,CAAC,EAAE,AAAD,GAClD;oBACAI,OAAO;gBACT;gBAEA,IAAIA,MAAM;oBACRV,MAAMS,cAAc;oBACpB5C,mBAAmB;wBACjB6C;wBACAJ;wBACAK,WAAWN;oBACb;gBACF;YACF;QACF;IACF;AACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/focus/utils.ts"],"sourcesContent":["const queries = [\n 'input:not([type=\"hidden\"]):not([disabled])',\n \"button:not([disabled])\",\n \"textarea:not([disabled])\",\n \"select:not([disabled])\",\n \"a[href]\",\n \"area[href]\",\n \"[tabindex]\",\n] as const;\n\n/**\n * A query selector to find elements that are programmatically focusable.\n *\n * Example:\n *\n * ```ts\n * const focusableElements = document.querySelectorAll(PROGRAMMATICALLY_FOCUSABLE);\n * // do something with elements\n * ```\n */\nexport const PROGRAMMATICALLY_FOCUSABLE = queries.join(\",\");\n\n/**\n * A query selector to find elements that are focusable only with tab and shift+tab.\n *\n * Example:\n *\n * ```ts\n * const focusableElements = document.querySelectorAll(TAB_FOCUSABLE);\n * // do something with elements\n * ```\n *\n * @remarks \\@since 6.0.0 This was updated to remove ALL elements that have a\n * `tabindex=\"-1\"` applied instead of only elements that had a manual tab index\n * applied.\n */\nexport const TAB_FOCUSABLE = queries.reduce((fullQuery, query) => {\n const prefix = `${fullQuery}${fullQuery ? \",\" : \"\"}`;\n const notProgrammaticQuery = `${query}:not([tabindex=\"-1\"])`;\n\n return `${prefix}${notProgrammaticQuery}`;\n}, \"\");\n\n/**\n * A simple util that will find all the tab focusable elements within a\n * container element. The container should normally be a specific HTMLElement,\n * but it can also be the entire document if you want to find **all** focusable\n * elements within your page.\n *\n * @remarks\n * \\@since 6.0.0 This function will be used for all keyboard focus behavior\n * instead of trying to use refs. I did some performance testing in Firefox and\n * Chrome and the `querySelectorAll` takes 4ms with 5000 elements for my use\n * cases. There is more of a performance issue around rendering all 5000\n * elements and since this is only used for specific keydown events, this is\n * good enough for me.\n *\n * @param container - The container element/document to find focusable elements\n * within.\n * @param programmatic - Boolean if programmatically focusable elements should be\n * included instead of only tab focusable.\n * @returns A list of HTMLElements that are focusable within the container.\n */\nexport function getFocusableElements(\n container: HTMLElement | Document,\n programmatic = false\n): readonly HTMLElement[] {\n // spread operator is faster than Array.from\n return [\n ...container.querySelectorAll<HTMLElement>(\n programmatic ? PROGRAMMATICALLY_FOCUSABLE : TAB_FOCUSABLE\n ),\n ];\n}\n\n/**\n * Attempts to find the first focusable element within a container.\n *\n * @remarks \\@since 6.0.0\n * @param container - The container element/document to find focusable elements\n * within.\n * @param programmatic - Boolean if programmatically focusable elements should be\n * included instead of only tab focusable.\n * @returns A list of HTMLElements that are focusable within the container.\n */\nexport function getFocusableElement(\n container: HTMLElement | Document,\n programmatic = false\n): HTMLElement | null {\n return container.querySelector<HTMLElement>(\n programmatic ? PROGRAMMATICALLY_FOCUSABLE : TAB_FOCUSABLE\n );\n}\n\n/**\n * An element can be tab focused if it is:\n * - an anchor or area with an `href`\n * - a non-disabled `input` element that is not `type=\"hidden\"`\n * - a non-disabled `button`, `textarea`, or `select` element\n * - an element with a `tabIndex >= 0`\n *\n * An element can be noted as \"programmatically focusable only\" has the above\n * rules, but the `tabIndex` will be set to `-1`.\n *\n * @remarks \\@since 2.8.0\n */\nexport type ElementFocusType = \"tab\" | \"programmatic\";\n\nexport function isFocusable(\n element: HTMLElement | Document | Window,\n type: ElementFocusType = \"programmatic\"\n): element is HTMLElement {\n const selector = type === \"tab\" ? TAB_FOCUSABLE : PROGRAMMATICALLY_FOCUSABLE;\n\n return \"matches\" in element && element.matches(selector);\n}\n\nexport type FocusElementWithinType =\n | \"first\"\n | \"last\"\n | \"query\"\n | \"self\"\n | \"none\";\n\nexport interface FocusElementWithinOptions {\n type: FocusElementWithinType;\n query?: string;\n elements: readonly HTMLElement[];\n container: HTMLElement | Document;\n}\n\nexport function focusElementWithin(options: FocusElementWithinOptions): void {\n const { type, query = \"\", container, elements } = options;\n if (type === \"none\") {\n return;\n }\n\n let element: HTMLElement | null = null;\n if (type === \"first\") {\n [element] = elements;\n } else if (type === \"last\") {\n element = elements[elements.length - 1];\n } else if (type === \"query\") {\n element = document.querySelector<HTMLElement>(query);\n }\n\n if (!element && isFocusable(container)) {\n element = container;\n }\n\n // TODO: Why did I add preventScroll?\n element?.focus();\n}\n"],"names":["queries","PROGRAMMATICALLY_FOCUSABLE","join","TAB_FOCUSABLE","reduce","fullQuery","query","prefix","notProgrammaticQuery","getFocusableElements","container","programmatic","querySelectorAll","getFocusableElement","querySelector","isFocusable","element","type","selector","matches","focusElementWithin","options","elements","length","document","focus"],"mappings":"AAAA,MAAMA,UAAU;IACd;IACA;IACA;IACA;IACA;IACA;IACA;CACD;AAED;;;;;;;;;CASC,GACD,OAAO,MAAMC,6BAA6BD,QAAQE,IAAI,CAAC,KAAK;AAE5D;;;;;;;;;;;;;CAaC,GACD,OAAO,MAAMC,gBAAgBH,QAAQI,MAAM,CAAC,CAACC,WAAWC;IACtD,MAAMC,SAAS,CAAC,EAAEF,UAAU,EAAEA,YAAY,MAAM,GAAG,CAAC;IACpD,MAAMG,uBAAuB,CAAC,EAAEF,MAAM,qBAAqB,CAAC;IAE5D,OAAO,CAAC,EAAEC,OAAO,EAAEC,qBAAqB,CAAC;AAC3C,GAAG,IAAI;AAEP;;;;;;;;;;;;;;;;;;;CAmBC,GACD,OAAO,SAASC,qBACdC,SAAiC,EACjCC,eAAe,KAAK;IAEpB,4CAA4C;IAC5C,OAAO;WACFD,UAAUE,gBAAgB,CAC3BD,eAAeV,6BAA6BE;KAE/C;AACH;AAEA;;;;;;;;;CASC,GACD,OAAO,SAASU,oBACdH,SAAiC,EACjCC,eAAe,KAAK;IAEpB,OAAOD,UAAUI,aAAa,CAC5BH,eAAeV,6BAA6BE;AAEhD;AAgBA,OAAO,SAASY,YACdC,OAAwC,EACxCC,OAAyB,cAAc;IAEvC,MAAMC,WAAWD,SAAS,QAAQd,gBAAgBF;IAElD,OAAO,aAAae,WAAWA,QAAQG,OAAO,CAACD;AACjD;AAgBA,OAAO,SAASE,mBAAmBC,OAAkC;IACnE,MAAM,EAAEJ,IAAI,EAAEX,QAAQ,EAAE,EAAEI,SAAS,EAAEY,QAAQ,EAAE,GAAGD;IAClD,IAAIJ,SAAS,QAAQ;QACnB;IACF;IAEA,IAAID,UAA8B;IAClC,IAAIC,SAAS,SAAS;QACpB,CAACD,QAAQ,GAAGM;IACd,OAAO,IAAIL,SAAS,QAAQ;QAC1BD,UAAUM,QAAQ,CAACA,SAASC,MAAM,GAAG,EAAE;IACzC,OAAO,IAAIN,SAAS,SAAS;QAC3BD,UAAUQ,SAASV,aAAa,CAAcR;IAChD;IAEA,IAAI,CAACU,WAAWD,YAAYL,YAAY;QACtCM,UAAUN;IACZ;IAEA,qCAAqC;IACrCM,SAASS;AACX"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/form/Checkbox.tsx"],"sourcesContent":["import { forwardRef } from \"react\";\nimport { InputToggle, type CheckboxProps } from \"./InputToggle.js\";\n\n/**\n * **Client Component**\n *\n * You'll generally want to use the `useCheckboxGroup` hook for managing the\n * checked state for groups of checkboxes and indeterminate checkbox behavior.\n *\n * @example\n * Simple Example\n * ```tsx\n * import type { ReactElement } from \"react\";\n * import { Checkbox } from \"@react-md/core\";\n *\n * function Example(): ReactElement {\n * return <Checkbox label=\"Checkbox\" value=\"a\" />;\n * }\n * ```\n */\nexport const Checkbox = forwardRef<HTMLInputElement, CheckboxProps>(\n function Checkbox(props, ref) {\n return <InputToggle {...props} ref={ref} type=\"checkbox\" />;\n }\n);\n"],"names":["forwardRef","InputToggle","Checkbox","props","ref","type"],"mappings":";AAAA,SAASA,UAAU,QAAQ,QAAQ;AACnC,SAASC,WAAW,QAA4B,mBAAmB;AAEnE;;;;;;;;;;;;;;;;CAgBC,GACD,OAAO,MAAMC,yBAAWF,WACtB,SAASE,SAASC,KAAK,EAAEC,GAAG;IAC1B,qBAAO,KAACH;QAAa,GAAGE,KAAK;QAAEC,KAAKA;QAAKC,MAAK;;AAChD,GACA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/form/Fieldset.tsx"],"sourcesContent":["import { cnb } from \"cnbuilder\";\nimport { forwardRef, type FieldsetHTMLAttributes } from \"react\";\nimport { bem } from \"../utils/bem.js\";\n\nconst styles = bem(\"rmd-fieldset\");\n\n/** @remarks \\@since 6.0.0 */\nexport interface FieldsetClassNameOptions {\n className?: string;\n\n /**\n * Set this to `true` to enable the default browser styles for a fieldset.\n *\n * @remarks \\@since 6.0.0 This was renamed from `unstyled`.\n * @defaultValue `false`\n */\n browserStyles?: boolean;\n\n /**\n * @defaultValue `false`\n */\n fullWidth?: boolean;\n}\n\n/**\n * @remarks \\@since 6.0.0\n */\nexport function fieldset(options: FieldsetClassNameOptions = {}): string {\n const { className, fullWidth, browserStyles = false } = options;\n\n return cnb(\n styles({ unstyled: !browserStyles, \"full-width\": fullWidth }),\n className\n );\n}\n\n/**\n * **Server Component**\n *\n * @remarks \\@since 6.0.0 Removed the `legend`, `legendStyle`,\n * `legendClassName`, and `legendSROnly` props. You must provide a `Legend`\n * yourself manually instead of using a prop.\n */\nexport interface FieldsetProps\n extends FieldsetHTMLAttributes<HTMLFieldSetElement>,\n FieldsetClassNameOptions {}\n\n/**\n * @example\n * Simple Example\n * ```tsx\n * import { Form, Fieldset, Legend } from \"@react-md/core\";\n *\n * function Example(): ReactElement {\n * return (\n * <Form>\n * <Fieldset>\n * <Legend>Some Title</Legend>\n * // form components\n * </Fieldset>\n * </Form>\n * );\n * }\n * ```\n */\nexport const Fieldset = forwardRef<HTMLFieldSetElement, FieldsetProps>(\n function Fieldset(props, ref) {\n const {\n className,\n fullWidth = false,\n browserStyles = false,\n children,\n ...remaining\n } = props;\n\n return (\n <fieldset\n {...remaining}\n ref={ref}\n className={fieldset({\n className,\n fullWidth,\n browserStyles,\n })}\n >\n {children}\n </fieldset>\n );\n }\n);\n"],"names":["cnb","forwardRef","bem","styles","fieldset","options","className","fullWidth","browserStyles","unstyled","Fieldset","props","ref","children","remaining"],"mappings":";AAAA,SAASA,GAAG,QAAQ,YAAY;AAChC,SAASC,UAAU,QAAqC,QAAQ;AAChE,SAASC,GAAG,QAAQ,kBAAkB;AAEtC,MAAMC,SAASD,IAAI;AAoBnB;;CAEC,GACD,OAAO,SAASE,SAASC,UAAoC,CAAC,CAAC;IAC7D,MAAM,EAAEC,SAAS,EAAEC,SAAS,EAAEC,gBAAgB,KAAK,EAAE,GAAGH;IAExD,OAAOL,IACLG,OAAO;QAAEM,UAAU,CAACD;QAAe,cAAcD;IAAU,IAC3DD;AAEJ;AAaA;;;;;;;;;;;;;;;;;CAiBC,GACD,OAAO,MAAMI,yBAAWT,WACtB,SAASS,SAASC,KAAK,EAAEC,GAAG;IAC1B,MAAM,EACJN,SAAS,EACTC,YAAY,KAAK,EACjBC,gBAAgB,KAAK,EACrBK,QAAQ,EACR,GAAGC,WACJ,GAAGH;IAEJ,qBACE,KAACP;QACE,GAAGU,SAAS;QACbF,KAAKA;QACLN,WAAWF,SAAS;YAClBE;YACAC;YACAC;QACF;kBAECK;;AAGP,GACA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/form/FileInput.tsx"],"sourcesContent":["\"use client\";\nimport { cnb } from \"cnbuilder\";\nimport {\n forwardRef,\n type InputHTMLAttributes,\n type LabelHTMLAttributes,\n type ReactNode,\n} from \"react\";\nimport {\n button,\n type ButtonClassNameOptions,\n type ButtonClassNameThemeOptions,\n} from \"../button/buttonStyles.js\";\nimport { getIcon } from \"../icon/iconConfig.js\";\nimport { useElementInteraction } from \"../interaction/useElementInteraction.js\";\nimport { type PropsWithRef } from \"../types.js\";\nimport { SrOnly } from \"../typography/SrOnly.js\";\nimport { useEnsuredId } from \"../useEnsuredId.js\";\n\n/** @remarks \\@since 6.0.0 */\nexport type FileInputClassNameOptions = ButtonClassNameOptions;\n\n/** @remarks \\@since 6.0.0 */\nexport function fileInput(options: FileInputClassNameOptions = {}): string {\n return cnb(\"rmd-file-input\", button(options));\n}\n\n/** @remarks \\@since 6.0.0 */\nexport type FileInputHTMLAttributes = Omit<\n InputHTMLAttributes<HTMLInputElement>,\n \"type\"\n>;\n\n/**\n * @remarks \\@since 6.0.0 Removed the `disableIconSpacing` prop since it is no\n * longer required.\n */\nexport interface FileInputProps\n extends ButtonClassNameThemeOptions,\n FileInputHTMLAttributes {\n /**\n * This is the label text for icon-only file inputs.\n *\n * @defaultValue `\"Upload\"`\n */\n srOnlyLabel?: ReactNode;\n\n /**\n * Any additional props to provide to the container `<label>` element since\n * most props get passed to the `<input type=\"file\">`. So this would be useful\n * for inline style or click handlers.\n */\n labelProps?: PropsWithRef<\n LabelHTMLAttributes<HTMLLabelElement>,\n HTMLLabelElement\n >;\n\n /**\n * An optional icon to display for the file input.\n *\n * @defaultValue `getIcon(\"upload\")`\n */\n icon?: ReactNode;\n\n /**\n * Boolean if the icon should appear after the children in the label.\n *\n * @defaultValue `false`\n */\n iconAfter?: boolean;\n\n /**\n * Boolean if the file input should no longer allow the same file to be\n * selected multiple times and trigger the `onChange` each time it is\n * selected.\n *\n * @defaultValue `false`\n */\n disableRepeatableFiles?: boolean;\n\n /**\n * Children should generally be provided when the {@link buttonType} is\n * set to `\"text\"`. This defaults to a screen-reader only accessible text.\n *\n * @defaultValue `<SrOnly phoneOnly={responsive}>Upload</SrOnly>`\n */\n children?: ReactNode;\n}\n\n/**\n * **Client Component**\n * This might be able to become a server component if I remove the getIcon hook\n *\n * @example\n * Simple Example\n * ```tsx\n * import { FileInput, Form } from \"@react-md/core\";\n * import type { ReactElement } from \"react\";\n *\n * const extensions = [\n * \"svg\",\n * \"jpeg\",\n * \"jpg\",\n * \"png\",\n * \"apng\",\n * \"mkv\",\n * \"mp4\",\n * \"mpeg\",\n * \"mpg\",\n * \"webm\",\n * \"mov\",\n * ] as const;\n *\n * const FOUR_HUNDRED_MB = 400 * 1024 * 1024;\n * const maxFiles = 10;\n *\n * function Example(): ReactElement {\n * const { stats, errors, onChange, clearErrors, reset, remove, accept } =\n * useFileUpload({\n * maxFiles,\n * maxFileSize: FOUR_HUNDRED_MB,\n * extensions,\n * });\n *\n * return (\n * <Form>\n * <FileInput accept={accept} multiple={maxFiles > 1} onChange={onChange} />\n * <Button onClick={reset} disabled={!stats.length}>\n * Remove all files\n * </Button>\n * </Form>\n * );\n * }\n * ```\n *\n * @remarks \\@since 6.0.0 Added additional support for `iconSize` and\n * `responsive`. Also removed the `disableIconSpacing` prop since it is no\n * longer required.\n */\nexport const FileInput = forwardRef<HTMLInputElement, FileInputProps>(\n function FileInput(props, ref) {\n const {\n id: propId,\n className,\n children: propChildren,\n icon: propIcon,\n iconAfter = false,\n srOnlyLabel = \"Upload\",\n disableRepeatableFiles = false,\n labelProps,\n theme = \"primary\",\n themeType = \"contained\",\n buttonType = propChildren ? \"text\" : \"icon\",\n disabled = false,\n iconSize,\n responsive,\n multiple = false,\n ...remaining\n } = props;\n const id = useEnsuredId(propId, \"file-input\");\n const { pressed, pressedClassName, ripples, handlers } =\n useElementInteraction({\n ...labelProps,\n onClick(event) {\n labelProps?.onClick?.(event);\n\n // stop propagation so 2 ripples are not created\n event.stopPropagation();\n },\n disabled,\n });\n\n const icon = getIcon(\"upload\", propIcon);\n let children = propChildren;\n if (\n typeof propChildren === \"undefined\" &&\n !props[\"aria-label\"] &&\n !props[\"aria-labelledby\"]\n ) {\n children = <SrOnly phoneOnly={responsive}>{srOnlyLabel}</SrOnly>;\n }\n\n return (\n <label\n {...labelProps}\n {...handlers}\n className={fileInput({\n theme,\n themeType,\n buttonType,\n disabled,\n iconSize,\n pressed,\n responsive,\n pressedClassName,\n className: className || labelProps?.className,\n })}\n >\n {!iconAfter && icon}\n {children}\n {iconAfter && icon}\n <input\n {...remaining}\n id={id}\n ref={ref}\n value={\n disableRepeatableFiles || !props.onChange ? remaining.value : \"\"\n }\n type=\"file\"\n className=\"rmd-hidden-input\"\n disabled={disabled}\n multiple={multiple}\n />\n {ripples}\n </label>\n );\n }\n);\n"],"names":["cnb","forwardRef","button","getIcon","useElementInteraction","SrOnly","useEnsuredId","fileInput","options","FileInput","props","ref","id","propId","className","children","propChildren","icon","propIcon","iconAfter","srOnlyLabel","disableRepeatableFiles","labelProps","theme","themeType","buttonType","disabled","iconSize","responsive","multiple","remaining","pressed","pressedClassName","ripples","handlers","onClick","event","stopPropagation","phoneOnly","label","input","value","onChange","type"],"mappings":"AAAA;;AACA,SAASA,GAAG,QAAQ,YAAY;AAChC,SACEC,UAAU,QAIL,QAAQ;AACf,SACEC,MAAM,QAGD,4BAA4B;AACnC,SAASC,OAAO,QAAQ,wBAAwB;AAChD,SAASC,qBAAqB,QAAQ,0CAA0C;AAEhF,SAASC,MAAM,QAAQ,0BAA0B;AACjD,SAASC,YAAY,QAAQ,qBAAqB;AAKlD,2BAA2B,GAC3B,OAAO,SAASC,UAAUC,UAAqC,CAAC,CAAC;IAC/D,OAAOR,IAAI,kBAAkBE,OAAOM;AACtC;AAgEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiDC,GACD,OAAO,MAAMC,0BAAYR,WACvB,SAASQ,UAAUC,KAAK,EAAEC,GAAG;IAC3B,MAAM,EACJC,IAAIC,MAAM,EACVC,SAAS,EACTC,UAAUC,YAAY,EACtBC,MAAMC,QAAQ,EACdC,YAAY,KAAK,EACjBC,cAAc,QAAQ,EACtBC,yBAAyB,KAAK,EAC9BC,UAAU,EACVC,QAAQ,SAAS,EACjBC,YAAY,WAAW,EACvBC,aAAaT,eAAe,SAAS,MAAM,EAC3CU,WAAW,KAAK,EAChBC,QAAQ,EACRC,UAAU,EACVC,WAAW,KAAK,EAChB,GAAGC,WACJ,GAAGpB;IACJ,MAAME,KAAKN,aAAaO,QAAQ;IAChC,MAAM,EAAEkB,OAAO,EAAEC,gBAAgB,EAAEC,OAAO,EAAEC,QAAQ,EAAE,GACpD9B,sBAAsB;QACpB,GAAGkB,UAAU;QACba,SAAQC,KAAK;YACXd,YAAYa,UAAUC;YAEtB,gDAAgD;YAChDA,MAAMC,eAAe;QACvB;QACAX;IACF;IAEF,MAAMT,OAAOd,QAAQ,UAAUe;IAC/B,IAAIH,WAAWC;IACf,IACE,OAAOA,iBAAiB,eACxB,CAACN,KAAK,CAAC,aAAa,IACpB,CAACA,KAAK,CAAC,kBAAkB,EACzB;QACAK,yBAAW,KAACV;YAAOiC,WAAWV;sBAAaR;;IAC7C;IAEA,qBACE,MAACmB;QACE,GAAGjB,UAAU;QACb,GAAGY,QAAQ;QACZpB,WAAWP,UAAU;YACnBgB;YACAC;YACAC;YACAC;YACAC;YACAI;YACAH;YACAI;YACAlB,WAAWA,aAAaQ,YAAYR;QACtC;;YAEC,CAACK,aAAaF;YACdF;YACAI,aAAaF;0BACd,KAACuB;gBACE,GAAGV,SAAS;gBACblB,IAAIA;gBACJD,KAAKA;gBACL8B,OACEpB,0BAA0B,CAACX,MAAMgC,QAAQ,GAAGZ,UAAUW,KAAK,GAAG;gBAEhEE,MAAK;gBACL7B,WAAU;gBACVY,UAAUA;gBACVG,UAAUA;;YAEXI;;;AAGP,GACA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/form/Form.tsx"],"sourcesContent":["import { forwardRef, type FormHTMLAttributes } from \"react\";\n\nconst noop = (): void => {\n // do nothing\n};\n\nexport interface FormProps extends FormHTMLAttributes<HTMLFormElement> {\n /**\n * Boolean if the form should no longer prevent default submit behavior. If\n * you enable this prop you should honestly just use a `<form>` element\n * instead\n *\n * @defaultValue `false`\n */\n disablePreventDefault?: boolean;\n}\n\n/**\n * **Server Component**\n *\n * This is probably one of the least useful components available as it doesn't\n * do much styling or logic. All this form component will do is add basic flex\n * behavior and prevent the default form submit behavior.\n */\nexport const Form = forwardRef<HTMLFormElement, FormProps>(\n function Form(props, ref) {\n const {\n children,\n onSubmit = noop,\n disablePreventDefault = false,\n ...remaining\n } = props;\n\n return (\n <form\n {...remaining}\n onSubmit={(event) => {\n if (!disablePreventDefault) {\n event.preventDefault();\n }\n\n onSubmit(event);\n }}\n ref={ref}\n >\n {children}\n </form>\n );\n }\n);\n"],"names":["forwardRef","noop","Form","props","ref","children","onSubmit","disablePreventDefault","remaining","form","event","preventDefault"],"mappings":";AAAA,SAASA,UAAU,QAAiC,QAAQ;AAE5D,MAAMC,OAAO;AACX,aAAa;AACf;AAaA;;;;;;CAMC,GACD,OAAO,MAAMC,qBAAOF,WAClB,SAASE,KAAKC,KAAK,EAAEC,GAAG;IACtB,MAAM,EACJC,QAAQ,EACRC,WAAWL,IAAI,EACfM,wBAAwB,KAAK,EAC7B,GAAGC,WACJ,GAAGL;IAEJ,qBACE,KAACM;QACE,GAAGD,SAAS;QACbF,UAAU,CAACI;YACT,IAAI,CAACH,uBAAuB;gBAC1BG,MAAMC,cAAc;YACtB;YAEAL,SAASI;QACX;QACAN,KAAKA;kBAEJC;;AAGP,GACA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/form/FormMessage.tsx"],"sourcesContent":["import { forwardRef } from \"react\";\nimport { useEnsuredId } from \"../useEnsuredId.js\";\nimport { FormMessageCounter } from \"./FormMessageCounter.js\";\nimport { getFormConfig } from \"./formConfig.js\";\nimport { formMessage, formMessageText } from \"./formMessageStyles.js\";\nimport {\n type FormMessageInputLengthCounterProps,\n type FormMessageProps,\n} from \"./types.js\";\n\n/**\n * **Server Component**\n *\n * The `FormMessage` component is used to create additional helper messages or\n * error messages and generally placed below the related `TextField`. If a\n * `length` (of the `value`) and `maxLength` are provided, a counter will also\n * be displayed to the right of the `children`.\n *\n * This component can also be used to create form-level validation messages by\n * setting the `role` prop to `\"alert\"`.\n */\nexport const FormMessage = forwardRef<\n HTMLDivElement,\n FormMessageProps & Partial<FormMessageInputLengthCounterProps>\n>(function FormMessage(props, ref) {\n const {\n id: propId,\n role,\n className,\n counterStyle,\n counterClassName,\n messageStyle,\n messageClassName,\n error = false,\n disableWrap = false,\n theme: propTheme,\n children,\n length,\n maxLength,\n ...remaining\n } = props;\n const id = useEnsuredId(propId, \"form-message\");\n const theme = getFormConfig(\"theme\", propTheme);\n\n let message = children;\n if (!disableWrap && children) {\n message = (\n <p\n id={`${id}-message`}\n style={messageStyle}\n className={formMessageText({ className: messageClassName })}\n >\n {children}\n </p>\n );\n }\n\n return (\n <div\n {...remaining}\n id={id}\n ref={ref}\n aria-live={role !== \"alert\" ? \"polite\" : undefined}\n role={role}\n className={formMessage({ error, theme, className })}\n >\n {message}\n {typeof length === \"number\" && typeof maxLength === \"number\" && (\n <FormMessageCounter\n id={`${id}-counter`}\n style={counterStyle}\n className={counterClassName}\n >\n {`${length} / ${maxLength}`}\n </FormMessageCounter>\n )}\n </div>\n );\n});\n"],"names":["forwardRef","useEnsuredId","FormMessageCounter","getFormConfig","formMessage","formMessageText","FormMessage","props","ref","id","propId","role","className","counterStyle","counterClassName","messageStyle","messageClassName","error","disableWrap","theme","propTheme","children","length","maxLength","remaining","message","p","style","div","aria-live","undefined"],"mappings":";AAAA,SAASA,UAAU,QAAQ,QAAQ;AACnC,SAASC,YAAY,QAAQ,qBAAqB;AAClD,SAASC,kBAAkB,QAAQ,0BAA0B;AAC7D,SAASC,aAAa,QAAQ,kBAAkB;AAChD,SAASC,WAAW,EAAEC,eAAe,QAAQ,yBAAyB;AAMtE;;;;;;;;;;CAUC,GACD,OAAO,MAAMC,4BAAcN,WAGzB,SAASM,YAAYC,KAAK,EAAEC,GAAG;IAC/B,MAAM,EACJC,IAAIC,MAAM,EACVC,IAAI,EACJC,SAAS,EACTC,YAAY,EACZC,gBAAgB,EAChBC,YAAY,EACZC,gBAAgB,EAChBC,QAAQ,KAAK,EACbC,cAAc,KAAK,EACnBC,OAAOC,SAAS,EAChBC,QAAQ,EACRC,MAAM,EACNC,SAAS,EACT,GAAGC,WACJ,GAAGjB;IACJ,MAAME,KAAKR,aAAaS,QAAQ;IAChC,MAAMS,QAAQhB,cAAc,SAASiB;IAErC,IAAIK,UAAUJ;IACd,IAAI,CAACH,eAAeG,UAAU;QAC5BI,wBACE,KAACC;YACCjB,IAAI,CAAC,EAAEA,GAAG,QAAQ,CAAC;YACnBkB,OAAOZ;YACPH,WAAWP,gBAAgB;gBAAEO,WAAWI;YAAiB;sBAExDK;;IAGP;IAEA,qBACE,MAACO;QACE,GAAGJ,SAAS;QACbf,IAAIA;QACJD,KAAKA;QACLqB,aAAWlB,SAAS,UAAU,WAAWmB;QACzCnB,MAAMA;QACNC,WAAWR,YAAY;YAAEa;YAAOE;YAAOP;QAAU;;YAEhDa;YACA,OAAOH,WAAW,YAAY,OAAOC,cAAc,0BAClD,KAACrB;gBACCO,IAAI,CAAC,EAAEA,GAAG,QAAQ,CAAC;gBACnBkB,OAAOd;gBACPD,WAAWE;0BAEV,CAAC,EAAEQ,OAAO,GAAG,EAAEC,UAAU,CAAC;;;;AAKrC,GAAG"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/form/FormMessageContainer.tsx"],"sourcesContent":["import { cnb } from \"cnbuilder\";\nimport { forwardRef, type HTMLAttributes } from \"react\";\nimport { type PropsWithRef } from \"../types.js\";\nimport { FormMessage } from \"./FormMessage.js\";\nimport { type FormMessageProps } from \"./types.js\";\n\n/**\n * @remarks \\@since 2.5.0\n */\nexport interface FormMessageContainerProps\n extends HTMLAttributes<HTMLDivElement> {\n /**\n * If the extension doesn't actually want to render the `FormMessage`\n * component, these props are optional. It kind of eliminates the whole\n * purpose of this component though.\n */\n messageProps?: PropsWithRef<FormMessageProps, HTMLDivElement>;\n}\n\n/**\n * **Server Component**\n * Conditionally wraps the `children` in a `.rmd-form-message-container` wrapper\n * and renders the {@link FormMessage} component.\n *\n * @remarks \\@since 2.5.0\n */\nexport const FormMessageContainer = forwardRef<\n HTMLDivElement,\n FormMessageContainerProps\n>(function FormMessageContainer(props, ref) {\n const { className, children, messageProps, ...remaining } = props;\n if (!messageProps) {\n return <>{children}</>;\n }\n\n return (\n <div\n {...remaining}\n ref={ref}\n className={cnb(\"rmd-form-message-container\", className)}\n >\n {children}\n <FormMessage {...messageProps} />\n </div>\n );\n});\n"],"names":["cnb","forwardRef","FormMessage","FormMessageContainer","props","ref","className","children","messageProps","remaining","div"],"mappings":";AAAA,SAASA,GAAG,QAAQ,YAAY;AAChC,SAASC,UAAU,QAA6B,QAAQ;AAExD,SAASC,WAAW,QAAQ,mBAAmB;AAgB/C;;;;;;CAMC,GACD,OAAO,MAAMC,qCAAuBF,WAGlC,SAASE,qBAAqBC,KAAK,EAAEC,GAAG;IACxC,MAAM,EAAEC,SAAS,EAAEC,QAAQ,EAAEC,YAAY,EAAE,GAAGC,WAAW,GAAGL;IAC5D,IAAI,CAACI,cAAc;QACjB,qBAAO;sBAAGD;;IACZ;IAEA,qBACE,MAACG;QACE,GAAGD,SAAS;QACbJ,KAAKA;QACLC,WAAWN,IAAI,8BAA8BM;;YAE5CC;0BACD,KAACL;gBAAa,GAAGM,YAAY;;;;AAGnC,GAAG"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/form/FormMessageCounter.tsx"],"sourcesContent":["import { type HTMLAttributes, type ReactElement, type ReactNode } from \"react\";\nimport { formMessageCounter } from \"./formMessageStyles.js\";\n\n/** @remarks \\@since 2.9.0 */\nexport interface FormMessageCounterProps\n extends HTMLAttributes<HTMLSpanElement> {\n /**\n * The children to display in the counter. This is normally a string like:\n *\n * @example\n * String Example\n * ```ts\n * `${min} / ${max}`\n * ```\n */\n children: ReactNode;\n}\n\n/**\n * **Server Component**\n *\n * This component can be used to create a \"counter\" within the\n * {@link FormMessage} component.\n *\n * Note: This is really only useful when using the {@link FormMessage} component\n * without a {@link TextField}.\n *\n * @example\n * Example Usage\n * ```ts\n * interface ExampleProps {\n * min: number;\n * max: number;\n * }\n *\n * function Example({ min, max }: ExampleProps) {\n * return (\n * <FormMessage disableWrap>\n * <FormMessageCounter>\n * {`${min} / ${max}`}\n * </FormMessageCounter>\n * </FormMessage>\n * );\n * }\n * ```\n *\n * @remarks \\@since 2.9.0\n */\nexport function FormMessageCounter(\n props: FormMessageCounterProps\n): ReactElement {\n const { children, className, ...remaining } = props;\n\n return (\n <span {...remaining} className={formMessageCounter({ className })}>\n {children}\n </span>\n );\n}\n"],"names":["formMessageCounter","FormMessageCounter","props","children","className","remaining","span"],"mappings":";AACA,SAASA,kBAAkB,QAAQ,yBAAyB;AAiB5D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6BC,GACD,OAAO,SAASC,mBACdC,KAA8B;IAE9B,MAAM,EAAEC,QAAQ,EAAEC,SAAS,EAAE,GAAGC,WAAW,GAAGH;IAE9C,qBACE,KAACI;QAAM,GAAGD,SAAS;QAAED,WAAWJ,mBAAmB;YAAEI;QAAU;kBAC5DD;;AAGP"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/form/InputToggle.tsx"],"sourcesContent":["\"use client\";\nimport { cnb } from \"cnbuilder\";\nimport {\n forwardRef,\n type CSSProperties,\n type HTMLAttributes,\n type InputHTMLAttributes,\n type LabelHTMLAttributes,\n type ReactNode,\n} from \"react\";\nimport { useElementInteraction } from \"../interaction/useElementInteraction.js\";\nimport { type PropsWithRef } from \"../types.js\";\nimport { useEnsuredId } from \"../useEnsuredId.js\";\nimport { FormMessageContainer } from \"./FormMessageContainer.js\";\nimport { InputToggleIcon } from \"./InputToggleIcon.js\";\nimport { Label } from \"./Label.js\";\nimport { type InputToggleSize } from \"./inputToggleStyles.js\";\nimport {\n type FormComponentStates,\n type FormMessageContainerExtension,\n} from \"./types.js\";\n\n/**\n * @remarks \\@since 6.0.0\n */\nexport interface InputToggleIconProps {\n /**\n * @see {@link InputToggleSize}\n * @defaultValue `\"normal\"`\n */\n size?: InputToggleSize;\n\n /**\n * The icon to use while unchecked. This defaults to the unchecked\n * checkbox/radio icon from the `ICON_CONFIG`.\n *\n * @defaultValue `getIcon(props.type)`\n */\n icon?: ReactNode;\n\n /**\n * The icon to use while unchecked. This defaults to the unchecked\n * checkbox/radio icon from the `ICON_CONFIG`.\n *\n * @defaultValue `getIcon(``${props.type}Checked``)`\n */\n checkedIcon?: ReactNode;\n\n /**\n * Any props that should be passed to the `<span>` that surrounds the current\n * icon element.\n */\n iconProps?: PropsWithRef<HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>;\n\n /**\n * Optional style to set on the `<span>` that surrounds the current icon\n * element.\n */\n iconStyle?: CSSProperties;\n\n /**\n * Optional className to set on the `<span>` that surrounds the current icon\n * element.\n */\n iconClassName?: string;\n}\n\n/**\n * @remarks \\@since 6.0.0\n */\nexport interface InputToggleLabelProps {\n /**\n * An optional label to display with the checkbox. If this is omitted, it is\n * recommended to provide an `aria-label` for accessibility.\n */\n label?: ReactNode;\n\n /**\n * Any props that should be passed to the `<Label>` component.\n *\n * Note: If `style` or `className` are provided in this object, they will be\n * ignored. Use the top-level `style` and `className` props instead.\n *\n * @example\n * ```\n * // bad\n * labelProps={{\n * \"aria-label\": \"checkbox\",\n * style: { color: \"red\" },\n * className: \"custom\"\n * }}\n *\n * // good\n * style={{ color: \"red\" }}\n * className=\"custom\"\n * labelProps={{\n * \"aria-label\": \"checkbox\",\n * }}\n * ```\n */\n labelProps?: PropsWithRef<\n LabelHTMLAttributes<HTMLLabelElement>,\n HTMLLabelElement\n >;\n\n /**\n * @see {@link LabelClassNameOptions.gap}\n * @defaultValue `false`\n */\n disableLabelGap?: boolean;\n\n /**\n * Set this to `true` to swap the position of the {@link label} and the current\n * icon. This prop can be used with the {@link stacked} prop to change the\n * position if the icon and label:\n *\n * ____________________________________\n * | stacked | iconAfter | position |\n * ____________________________________\n * | | | icon label |\n * ____________________________________\n * | | X | label icon |\n * ____________________________________\n * | X | | icon |\n * | | | label |\n * ____________________________________\n * | X | X | label |\n * | | | icon |\n * ____________________________________\n *\n *\n * @defaultValue `false`\n */\n iconAfter?: boolean;\n\n /**\n * Set this to `true` if the label should be stacked instead of inline with\n * the current icon.\n *\n * @see {@link iconAfter}\n * @defaultValue `false`\n */\n stacked?: boolean;\n}\n\n/**\n * @remarks \\@since 6.0.0\n */\nexport interface BaseInputToggleProps\n extends Omit<InputHTMLAttributes<HTMLInputElement>, \"size\">,\n FormMessageContainerExtension,\n FormComponentStates,\n InputToggleIconProps,\n InputToggleLabelProps {\n /**\n * @see https://stackoverflow.com/questions/5985839/bug-with-firefox-disabled-attribute-of-input-not-resetting-when-refreshing\n * @defaultValue `type === \"checkbox\" ? \"off\" : undefined`\n */\n autoComplete?: string;\n}\n\n/**\n * @remarks\n * \\@since 2.8.5\n * \\@since 6.0.0 Removed the `aria-controls` prop and added the\n * `indeterminateIcon` prop.\n */\nexport interface IndeterminateCheckboxProps {\n /**\n * Set this value to `true` if the checkbox is in an \"indeterminate\" state:\n *\n * - this checkbox controls the select all/select none behavior of other\n * checkboxes in a group\n * - at least one of the checkboxes have been checked\n * - the `checked` prop for this Checkbox should also be `true`\n *\n * You should normally use the `useCheckboxGroup` hook to handle this\n * behavior.\n *\n * @defaultValue `false`\n */\n indeterminate?: boolean;\n\n /**\n * The icon to display when the checkbox is checked and the\n * {@link indeterminate} prop is `true`.\n *\n * @defaultValue `getIcon(\"checkboxIndeterminate\")`\n * @remarks \\@since 6.0.0\n */\n indeterminateIcon?: ReactNode;\n}\n\nexport interface CheckboxProps\n extends BaseInputToggleProps,\n IndeterminateCheckboxProps {}\n\n/** @remarks \\@since 6.0.0 */\nexport interface CheckboxInputToggleProps extends CheckboxProps {\n type: \"checkbox\";\n}\n\nexport interface RadioProps extends BaseInputToggleProps {\n /**\n * The value for the radio button.\n *\n * @remarks \\@since 6.0.0 This is now optional and no longer supports\n * `string[]` since there isn't much of a use case for array values.\n */\n value?: string | number;\n}\n\n/** @remarks \\@since 6.0.0 */\nexport interface RadioInputToggleProps extends RadioProps {\n type: \"radio\";\n}\n\n/**\n * @remarks \\@since 6.0.0 Updated to be a union between\n * `CheckboxInputToggleProps` and `RadioInputToggleProps`\n */\nexport type InputToggleProps = CheckboxInputToggleProps | RadioInputToggleProps;\n\n/**\n * **Client Component**\n *\n * @remarks \\@since 6.0.0 Now supports the `FormMessage` behavior and requires\n * different icons for each checked state.\n */\nexport const InputToggle = forwardRef<HTMLInputElement, InputToggleProps>(\n function InputToggle(props, ref) {\n const {\n id: propId,\n type,\n label,\n labelProps,\n style,\n className,\n autoComplete = type === \"checkbox\" ? \"off\" : undefined,\n disableLabelGap = false,\n stacked = false,\n iconAfter = false,\n size = \"normal\",\n error = false,\n active = false,\n indeterminate = false,\n messageProps,\n messageContainerProps,\n icon,\n checkedIcon,\n indeterminateIcon,\n iconProps,\n iconStyle,\n iconClassName,\n onBlur,\n onClick,\n onKeyDown,\n onKeyUp,\n onMouseDown,\n onMouseLeave,\n onDragStart,\n onMouseUp,\n onTouchEnd,\n onTouchMove,\n onTouchStart,\n ...remaining\n } = props as CheckboxInputToggleProps;\n const { disabled = false, checked } = props;\n\n const id = useEnsuredId(propId, type);\n const { pressedClassName, ripples, handlers } = useElementInteraction({\n disabled,\n onBlur,\n onClick,\n onKeyDown,\n onKeyUp,\n onMouseDown,\n onMouseLeave,\n onDragStart,\n onMouseUp,\n onTouchEnd,\n onTouchMove,\n onTouchStart,\n });\n\n // set on the `remaining` object to bypass the eslint rule about\n // aria-checked not being valid for textbox role\n remaining[\"aria-checked\"] =\n remaining[\"aria-checked\"] ?? indeterminate ? \"mixed\" : undefined;\n\n return (\n <FormMessageContainer\n {...messageContainerProps}\n messageProps={messageProps}\n >\n <Label\n {...labelProps}\n gap={!disableLabelGap}\n style={style}\n stacked={stacked}\n reversed={!iconAfter}\n active={active}\n error={error}\n disabled={disabled}\n className={className}\n >\n {label}\n <InputToggleIcon\n style={iconStyle}\n {...iconProps}\n className={cnb(\n pressedClassName,\n iconClassName,\n iconProps?.className\n )}\n error={error}\n checked={checked}\n disabled={disabled}\n size={size}\n type={type}\n icon={icon}\n checkedIcon={checkedIcon}\n indeterminate={indeterminate}\n indeterminateIcon={indeterminateIcon}\n >\n <input\n {...remaining}\n {...handlers}\n autoComplete={autoComplete}\n id={id}\n ref={ref}\n type={type}\n className=\"rmd-hidden-input\"\n />\n {ripples}\n </InputToggleIcon>\n </Label>\n </FormMessageContainer>\n );\n }\n);\n"],"names":["cnb","forwardRef","useElementInteraction","useEnsuredId","FormMessageContainer","InputToggleIcon","Label","InputToggle","props","ref","id","propId","type","label","labelProps","style","className","autoComplete","undefined","disableLabelGap","stacked","iconAfter","size","error","active","indeterminate","messageProps","messageContainerProps","icon","checkedIcon","indeterminateIcon","iconProps","iconStyle","iconClassName","onBlur","onClick","onKeyDown","onKeyUp","onMouseDown","onMouseLeave","onDragStart","onMouseUp","onTouchEnd","onTouchMove","onTouchStart","remaining","disabled","checked","pressedClassName","ripples","handlers","gap","reversed","input"],"mappings":"AAAA;;AACA,SAASA,GAAG,QAAQ,YAAY;AAChC,SACEC,UAAU,QAML,QAAQ;AACf,SAASC,qBAAqB,QAAQ,0CAA0C;AAEhF,SAASC,YAAY,QAAQ,qBAAqB;AAClD,SAASC,oBAAoB,QAAQ,4BAA4B;AACjE,SAASC,eAAe,QAAQ,uBAAuB;AACvD,SAASC,KAAK,QAAQ,aAAa;AAgNnC;;;;;CAKC,GACD,OAAO,MAAMC,4BAAcN,WACzB,SAASM,YAAYC,KAAK,EAAEC,GAAG;IAC7B,MAAM,EACJC,IAAIC,MAAM,EACVC,IAAI,EACJC,KAAK,EACLC,UAAU,EACVC,KAAK,EACLC,SAAS,EACTC,eAAeL,SAAS,aAAa,QAAQM,SAAS,EACtDC,kBAAkB,KAAK,EACvBC,UAAU,KAAK,EACfC,YAAY,KAAK,EACjBC,OAAO,QAAQ,EACfC,QAAQ,KAAK,EACbC,SAAS,KAAK,EACdC,gBAAgB,KAAK,EACrBC,YAAY,EACZC,qBAAqB,EACrBC,IAAI,EACJC,WAAW,EACXC,iBAAiB,EACjBC,SAAS,EACTC,SAAS,EACTC,aAAa,EACbC,MAAM,EACNC,OAAO,EACPC,SAAS,EACTC,OAAO,EACPC,WAAW,EACXC,YAAY,EACZC,WAAW,EACXC,SAAS,EACTC,UAAU,EACVC,WAAW,EACXC,YAAY,EACZ,GAAGC,WACJ,GAAGrC;IACJ,MAAM,EAAEsC,WAAW,KAAK,EAAEC,OAAO,EAAE,GAAGvC;IAEtC,MAAME,KAAKP,aAAaQ,QAAQC;IAChC,MAAM,EAAEoC,gBAAgB,EAAEC,OAAO,EAAEC,QAAQ,EAAE,GAAGhD,sBAAsB;QACpE4C;QACAZ;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;IACF;IAEA,gEAAgE;IAChE,gDAAgD;IAChDC,SAAS,CAAC,eAAe,GACvBA,SAAS,CAAC,eAAe,IAAIpB,gBAAgB,UAAUP;IAEzD,qBACE,KAACd;QACE,GAAGuB,qBAAqB;QACzBD,cAAcA;kBAEd,cAAA,MAACpB;YACE,GAAGQ,UAAU;YACdqC,KAAK,CAAChC;YACNJ,OAAOA;YACPK,SAASA;YACTgC,UAAU,CAAC/B;YACXG,QAAQA;YACRD,OAAOA;YACPuB,UAAUA;YACV9B,WAAWA;;gBAEVH;8BACD,MAACR;oBACCU,OAAOiB;oBACN,GAAGD,SAAS;oBACbf,WAAWhB,IACTgD,kBACAf,eACAF,WAAWf;oBAEbO,OAAOA;oBACPwB,SAASA;oBACTD,UAAUA;oBACVxB,MAAMA;oBACNV,MAAMA;oBACNgB,MAAMA;oBACNC,aAAaA;oBACbJ,eAAeA;oBACfK,mBAAmBA;;sCAEnB,KAACuB;4BACE,GAAGR,SAAS;4BACZ,GAAGK,QAAQ;4BACZjC,cAAcA;4BACdP,IAAIA;4BACJD,KAAKA;4BACLG,MAAMA;4BACNI,WAAU;;wBAEXiC;;;;;;AAKX,GACA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/form/InputToggleIcon.tsx"],"sourcesContent":["import { cnb } from \"cnbuilder\";\nimport { forwardRef, type HTMLAttributes, type ReactNode } from \"react\";\nimport { getIcon } from \"../icon/iconConfig.js\";\nimport { FORM_CONFIG } from \"./formConfig.js\";\nimport { inputToggle, type InputToggleSize } from \"./inputToggleStyles.js\";\n\n/**\n * @remarks\n * \\@since 2.8.0\n * \\@since 6.0.0 Removed the `circle` and `overlay` props since they are no\n * longer needed. Added the `icon`, `disableEm`, `checkedIcon` and\n * `indeterminateIcon` props.\n * @internal\n */\nexport interface InputToggleIconProps extends HTMLAttributes<HTMLSpanElement> {\n type: \"checkbox\" | \"radio\";\n /**\n * Note: If this is `undefined` and the {@link FORM_CONFIG.uncontrolledToggles} is `false`,\n * the icon state won't work.\n */\n checked?: boolean;\n\n /**\n * The icon to display while {@link checked} is `false`.\n */\n icon?: ReactNode;\n\n /**\n * The icon to display while {@link checked} is `true` and\n * {@link indeterminate} is `false`.\n */\n checkedIcon?: ReactNode;\n\n /**\n * The icon to display while both {@link checked} and {@link indeterminate}\n * are `true`.\n */\n indeterminateIcon?: ReactNode;\n\n /** @defaultValue `\"normal\"` */\n size?: InputToggleSize;\n\n /** @defaultValue `false` */\n error?: boolean;\n\n /** @defaultValue `false` */\n disabled?: boolean;\n\n /** @defaultValue `false` */\n disableEm?: boolean;\n\n /** @defaultValue `false` */\n indeterminate?: boolean;\n}\n\n/**\n * **Server Component**\n *\n * @remarks\n * \\@since 2.8.0\n * \\@since 6.0.0 Updated to use different icons for each checked state instead\n * of a css overlay hack.\n * @internal\n */\nexport const InputToggleIcon = forwardRef<\n HTMLSpanElement,\n InputToggleIconProps\n>(function InputToggleIcon(props, ref) {\n const {\n type,\n size = \"normal\",\n icon: propIcon,\n error,\n checked,\n children,\n disabled,\n indeterminate,\n className,\n disableEm = false,\n checkedIcon: propCheckedIcon,\n indeterminateIcon: propIndeterminateIcon,\n ...remaining\n } = props;\n const uncheckedIcon = getIcon(type, propIcon);\n const checkedIcon = getIcon(`${type}Checked`, propCheckedIcon);\n const indeterminateIcon = getIcon(\n \"checkboxIndeterminate\",\n propIndeterminateIcon\n );\n\n let icon: ReactNode;\n let active = false;\n const uncontrolled = typeof checked !== \"boolean\";\n if (!uncontrolled || !FORM_CONFIG.uncontrolledToggles) {\n active = !!checked && !error;\n icon = checked\n ? indeterminate\n ? indeterminateIcon\n : checkedIcon\n : uncheckedIcon;\n } else {\n icon = (\n <>\n {uncheckedIcon}\n {indeterminate ? indeterminateIcon : checkedIcon}\n </>\n );\n }\n\n return (\n <span\n {...remaining}\n ref={ref}\n className={cnb(\n inputToggle({\n em: !disableEm,\n size,\n type,\n error,\n active,\n disabled,\n uncontrolled,\n className,\n })\n )}\n >\n {children}\n {icon}\n </span>\n );\n});\n"],"names":["cnb","forwardRef","getIcon","FORM_CONFIG","inputToggle","InputToggleIcon","props","ref","type","size","icon","propIcon","error","checked","children","disabled","indeterminate","className","disableEm","checkedIcon","propCheckedIcon","indeterminateIcon","propIndeterminateIcon","remaining","uncheckedIcon","active","uncontrolled","uncontrolledToggles","span","em"],"mappings":";AAAA,SAASA,GAAG,QAAQ,YAAY;AAChC,SAASC,UAAU,QAA6C,QAAQ;AACxE,SAASC,OAAO,QAAQ,wBAAwB;AAChD,SAASC,WAAW,QAAQ,kBAAkB;AAC9C,SAASC,WAAW,QAA8B,yBAAyB;AAmD3E;;;;;;;;CAQC,GACD,OAAO,MAAMC,gCAAkBJ,WAG7B,SAASI,gBAAgBC,KAAK,EAAEC,GAAG;IACnC,MAAM,EACJC,IAAI,EACJC,OAAO,QAAQ,EACfC,MAAMC,QAAQ,EACdC,KAAK,EACLC,OAAO,EACPC,QAAQ,EACRC,QAAQ,EACRC,aAAa,EACbC,SAAS,EACTC,YAAY,KAAK,EACjBC,aAAaC,eAAe,EAC5BC,mBAAmBC,qBAAqB,EACxC,GAAGC,WACJ,GAAGjB;IACJ,MAAMkB,gBAAgBtB,QAAQM,MAAMG;IACpC,MAAMQ,cAAcjB,QAAQ,CAAC,EAAEM,KAAK,OAAO,CAAC,EAAEY;IAC9C,MAAMC,oBAAoBnB,QACxB,yBACAoB;IAGF,IAAIZ;IACJ,IAAIe,SAAS;IACb,MAAMC,eAAe,OAAOb,YAAY;IACxC,IAAI,CAACa,gBAAgB,CAACvB,YAAYwB,mBAAmB,EAAE;QACrDF,SAAS,CAAC,CAACZ,WAAW,CAACD;QACvBF,OAAOG,UACHG,gBACEK,oBACAF,cACFK;IACN,OAAO;QACLd,qBACE;;gBACGc;gBACAR,gBAAgBK,oBAAoBF;;;IAG3C;IAEA,qBACE,MAACS;QACE,GAAGL,SAAS;QACbhB,KAAKA;QACLU,WAAWjB,IACTI,YAAY;YACVyB,IAAI,CAACX;YACLT;YACAD;YACAI;YACAa;YACAV;YACAW;YACAT;QACF;;YAGDH;YACAJ;;;AAGP,GAAG"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/form/Label.tsx"],"sourcesContent":["import { cnb } from \"cnbuilder\";\nimport { forwardRef } from \"react\";\nimport { type TextColor, type ThemeColor, cssUtils } from \"../cssUtils.js\";\nimport { bem } from \"../utils/bem.js\";\nimport { type LabelClassNameOptions, type LabelProps } from \"./types.js\";\n\ndeclare module \"react\" {\n interface CSSProperties {\n \"--rmd-label-floating-top\"?: string | number;\n \"--rmd-label-left-offset\"?: string | number;\n \"--rmd-label-top-offset\"?: string | number;\n \"--rmd-label-active-padding\"?: string | number;\n \"--rmd-label-active-background-color\"?: string;\n }\n}\n\nconst labelStyles = bem(\"rmd-label\");\n\n/**\n * @remarks \\@since 6.0.0\n */\nexport function label(options: LabelClassNameOptions): string {\n const {\n className,\n gap = false,\n error = false,\n dense = false,\n active = false,\n stacked = false,\n reversed = false,\n disabled = false,\n floating = false,\n inactive = false,\n floatingActive = active,\n } = options;\n\n let textColor: TextColor | ThemeColor | undefined;\n if (disabled) {\n textColor = \"text-disabled\";\n } else if (error) {\n textColor = \"error\";\n } else if (floating && inactive) {\n textColor = \"text-secondary\";\n }\n\n return cnb(\n labelStyles({\n gap,\n error,\n dense,\n active,\n disabled,\n floating,\n stacked: stacked && !reversed,\n reversed: !stacked && reversed,\n \"stacked-reversed\": stacked && reversed,\n \"floating-dense\": floating && dense,\n \"floating-active\": floating && floatingActive,\n }),\n cssUtils({\n textColor,\n }),\n className\n );\n}\n\n/**\n * **Server Component**\n *\n * Most of the form components already use this `Label` internally when a\n * `label` prop has been provided. You should generally use this component if\n * you need to separate the label from an existing form component or you need to\n * create a custom implementation of a form component.\n *\n * @remarks \\@since 6.0.0 Updated to be usable externally and combines the\n * floating label styles instead of having separate components.\n */\nexport const Label = forwardRef<HTMLLabelElement, LabelProps>(\n function Label(props, ref) {\n const {\n gap = false,\n error = false,\n dense = false,\n active = false,\n stacked = false,\n reversed = false,\n disabled = false,\n floating = false,\n inactive = false,\n floatingActive = active,\n className,\n children,\n ...remaining\n } = props;\n\n return (\n <label\n ref={ref}\n {...remaining}\n className={label({\n gap,\n error,\n dense,\n active,\n stacked,\n reversed,\n disabled,\n floating,\n floatingActive,\n inactive,\n className,\n })}\n >\n {children}\n </label>\n );\n }\n);\n"],"names":["cnb","forwardRef","cssUtils","bem","labelStyles","label","options","className","gap","error","dense","active","stacked","reversed","disabled","floating","inactive","floatingActive","textColor","Label","props","ref","children","remaining"],"mappings":";AAAA,SAASA,GAAG,QAAQ,YAAY;AAChC,SAASC,UAAU,QAAQ,QAAQ;AACnC,SAA0CC,QAAQ,QAAQ,iBAAiB;AAC3E,SAASC,GAAG,QAAQ,kBAAkB;AAatC,MAAMC,cAAcD,IAAI;AAExB;;CAEC,GACD,OAAO,SAASE,MAAMC,OAA8B;IAClD,MAAM,EACJC,SAAS,EACTC,MAAM,KAAK,EACXC,QAAQ,KAAK,EACbC,QAAQ,KAAK,EACbC,SAAS,KAAK,EACdC,UAAU,KAAK,EACfC,WAAW,KAAK,EAChBC,WAAW,KAAK,EAChBC,WAAW,KAAK,EAChBC,WAAW,KAAK,EAChBC,iBAAiBN,MAAM,EACxB,GAAGL;IAEJ,IAAIY;IACJ,IAAIJ,UAAU;QACZI,YAAY;IACd,OAAO,IAAIT,OAAO;QAChBS,YAAY;IACd,OAAO,IAAIH,YAAYC,UAAU;QAC/BE,YAAY;IACd;IAEA,OAAOlB,IACLI,YAAY;QACVI;QACAC;QACAC;QACAC;QACAG;QACAC;QACAH,SAASA,WAAW,CAACC;QACrBA,UAAU,CAACD,WAAWC;QACtB,oBAAoBD,WAAWC;QAC/B,kBAAkBE,YAAYL;QAC9B,mBAAmBK,YAAYE;IACjC,IACAf,SAAS;QACPgB;IACF,IACAX;AAEJ;AAEA;;;;;;;;;;CAUC,GACD,OAAO,MAAMY,sBAAQlB,WACnB,SAASkB,MAAMC,KAAK,EAAEC,GAAG;IACvB,MAAM,EACJb,MAAM,KAAK,EACXC,QAAQ,KAAK,EACbC,QAAQ,KAAK,EACbC,SAAS,KAAK,EACdC,UAAU,KAAK,EACfC,WAAW,KAAK,EAChBC,WAAW,KAAK,EAChBC,WAAW,KAAK,EAChBC,WAAW,KAAK,EAChBC,iBAAiBN,MAAM,EACvBJ,SAAS,EACTe,QAAQ,EACR,GAAGC,WACJ,GAAGH;IAEJ,qBACE,KAACf;QACCgB,KAAKA;QACJ,GAAGE,SAAS;QACbhB,WAAWF,MAAM;YACfG;YACAC;YACAC;YACAC;YACAC;YACAC;YACAC;YACAC;YACAE;YACAD;YACAT;QACF;kBAECe;;AAGP,GACA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/form/Legend.tsx"],"sourcesContent":["import { cnb } from \"cnbuilder\";\nimport { forwardRef } from \"react\";\nimport { cssUtils } from \"../cssUtils.js\";\nimport { Typography, type TypographyProps } from \"../typography/Typography.js\";\n\n/**\n * @remarks \\@since 6.0.0\n */\nexport interface LegendProps extends TypographyProps {\n /**\n * @defaultValue `false`\n */\n srOnly?: boolean;\n}\n\n/**\n * **Server Component**\n *\n * This should be used within a `Fieldset` to apply a label.\n *\n * @remarks \\@since 6.0.0\n */\nexport const Legend = forwardRef<HTMLLegendElement, LegendProps>(\n function Legend(props, ref) {\n const { srOnly = false, className, children, ...remaining } = props;\n\n return (\n <Typography\n {...remaining}\n as=\"legend\"\n ref={ref}\n className={cnb(\"rmd-legend\", cssUtils({ srOnly }), className)}\n >\n {children}\n </Typography>\n );\n }\n);\n"],"names":["cnb","forwardRef","cssUtils","Typography","Legend","props","ref","srOnly","className","children","remaining","as"],"mappings":";AAAA,SAASA,GAAG,QAAQ,YAAY;AAChC,SAASC,UAAU,QAAQ,QAAQ;AACnC,SAASC,QAAQ,QAAQ,iBAAiB;AAC1C,SAASC,UAAU,QAA8B,8BAA8B;AAY/E;;;;;;CAMC,GACD,OAAO,MAAMC,uBAASH,WACpB,SAASG,OAAOC,KAAK,EAAEC,GAAG;IACxB,MAAM,EAAEC,SAAS,KAAK,EAAEC,SAAS,EAAEC,QAAQ,EAAE,GAAGC,WAAW,GAAGL;IAE9D,qBACE,KAACF;QACE,GAAGO,SAAS;QACbC,IAAG;QACHL,KAAKA;QACLE,WAAWR,IAAI,cAAcE,SAAS;YAAEK;QAAO,IAAIC;kBAElDC;;AAGP,GACA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/form/MenuItemCheckbox.tsx"],"sourcesContent":["\"use client\";\nimport { forwardRef } from \"react\";\nimport {\n MenuItemInputToggle,\n type MenuItemCheckboxProps,\n} from \"./MenuItemInputToggle.js\";\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport { type ICON_CONFIG } from \"../icon/iconConfig.js\";\n\n/**\n * **Client Component**\n *\n * This is a simple wrapper for the {@link MenuItemInputToggle} component to\n * render it as a checkbox and pulling the checkbox icon from the\n * {@link ICON_CONFIG}.\n *\n * @example\n * Simple Example\n * ```tsx\n * import { DropdownMenu, MenuItemCheckbox } from \"@react-md/core\";\n * import { ReactElement, useState } from \"react\";\n *\n * function Example(): ReactElement {\n * const [checked, setChecked] = useState(false);\n *\n * return (\n * <DropdownMenu buttonChildren=\"Button\">\n * <MenuItemCheckbox\n * checked={checked}\n * onCheckedChange={(nextChecked) => setChecked(nextChecked)}\n * >\n * Checkbox\n * </MenuItemCheckbox>\n * </DropdownMenu>\n * );\n * }\n * ```\n *\n * @remarks \\@since 2.8.0\n */\nexport const MenuItemCheckbox = forwardRef<\n HTMLLIElement,\n MenuItemCheckboxProps\n>(function MenuItemCheckbox(props, ref) {\n return <MenuItemInputToggle {...props} ref={ref} type=\"checkbox\" />;\n});\n"],"names":["forwardRef","MenuItemInputToggle","MenuItemCheckbox","props","ref","type"],"mappings":"AAAA;;AACA,SAASA,UAAU,QAAQ,QAAQ;AACnC,SACEC,mBAAmB,QAEd,2BAA2B;AAIlC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8BC,GACD,OAAO,MAAMC,iCAAmBF,WAG9B,SAASE,iBAAiBC,KAAK,EAAEC,GAAG;IACpC,qBAAO,KAACH;QAAqB,GAAGE,KAAK;QAAEC,KAAKA;QAAKC,MAAK;;AACxD,GAAG"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/form/MenuItemFileInput.tsx"],"sourcesContent":["\"use client\";\nimport {\n forwardRef,\n type ChangeEventHandler,\n type InputHTMLAttributes,\n} from \"react\";\nimport { getIcon } from \"../icon/iconConfig.js\";\nimport { MenuItem, type MenuItemProps } from \"../menu/MenuItem.js\";\nimport { useEnsuredId } from \"../useEnsuredId.js\";\n\nconst noop = (): void => {\n // do nothing\n};\n\n/**\n * @remarks \\@since 6.0.0 Removed most of the shared `FileInputProps` from this\n * implementation.\n */\nexport interface MenuItemFileInputProps\n extends Omit<MenuItemProps, \"onChange\"> {\n /**\n * A change event handler that should do something with the selected files.\n * Usually the `onChange` returned by `useFileUpload` or:\n *\n * ```ts\n * onChange={(event) => {\n * const { files } = event.currentTarget;\n * // do something with files\n * }}\n * ```\n *\n * @remarks\n * This is actually a native `Event` and not a `SyntheticEvent` because the\n * file input is created through `document.createElement` instead of `React`.\n * You can still access the files through `event.currentTarget.files` like\n * normal.\n */\n onChange: ChangeEventHandler<HTMLInputElement>;\n\n accept?: InputHTMLAttributes<HTMLInputElement>[\"accept\"];\n capture?: InputHTMLAttributes<HTMLInputElement>[\"capture\"];\n multiple?: InputHTMLAttributes<HTMLInputElement>[\"multiple\"];\n\n /**\n * Set this to `true` if the `Menu` should not close when the file input's\n * menu item is clicked.\n *\n * @defaultValue `false`\n */\n preventMenuHideOnClick?: boolean;\n}\n\n/**\n * **Client Component**\n *\n * A wrapper for the `<input type=\"file\">` element that works within menus.\n *\n * @remarks\n * \\@since 5.0.0\n * \\@since 6.0.0 No longer creates an invisible file input element within the\n * menu item. This allows the menu to be closed immediately when this menu item\n * is clicked.\n */\nexport const MenuItemFileInput = forwardRef<\n HTMLLIElement,\n MenuItemFileInputProps\n>(function MenuItemFileInput(props, ref) {\n const {\n id: propId,\n onClick = noop,\n onChange,\n accept = \"\",\n multiple = false,\n children,\n leftAddon: propLeftAddon,\n preventMenuHideOnClick = false,\n ...remaining\n } = props;\n\n const id = useEnsuredId(propId, \"menu-item\");\n const leftAddon = getIcon(\"upload\", propLeftAddon);\n\n return (\n <MenuItem\n {...remaining}\n id={id}\n ref={ref}\n leftAddon={leftAddon}\n onClick={(event) => {\n onClick(event);\n\n if (preventMenuHideOnClick) {\n event.stopPropagation();\n }\n\n // create a temporary file input element and click it to trigger the\n // file upload behavior.\n let input: HTMLInputElement | null = document.createElement(\"input\");\n input.type = \"file\";\n input.accept = accept;\n input.multiple = multiple;\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n input.onchange = onChange;\n input.click();\n input = null;\n }}\n >\n {children}\n </MenuItem>\n );\n});\n"],"names":["forwardRef","getIcon","MenuItem","useEnsuredId","noop","MenuItemFileInput","props","ref","id","propId","onClick","onChange","accept","multiple","children","leftAddon","propLeftAddon","preventMenuHideOnClick","remaining","event","stopPropagation","input","document","createElement","type","onchange","click"],"mappings":"AAAA;;AACA,SACEA,UAAU,QAGL,QAAQ;AACf,SAASC,OAAO,QAAQ,wBAAwB;AAChD,SAASC,QAAQ,QAA4B,sBAAsB;AACnE,SAASC,YAAY,QAAQ,qBAAqB;AAElD,MAAMC,OAAO;AACX,aAAa;AACf;AAwCA;;;;;;;;;;CAUC,GACD,OAAO,MAAMC,kCAAoBL,WAG/B,SAASK,kBAAkBC,KAAK,EAAEC,GAAG;IACrC,MAAM,EACJC,IAAIC,MAAM,EACVC,UAAUN,IAAI,EACdO,QAAQ,EACRC,SAAS,EAAE,EACXC,WAAW,KAAK,EAChBC,QAAQ,EACRC,WAAWC,aAAa,EACxBC,yBAAyB,KAAK,EAC9B,GAAGC,WACJ,GAAGZ;IAEJ,MAAME,KAAKL,aAAaM,QAAQ;IAChC,MAAMM,YAAYd,QAAQ,UAAUe;IAEpC,qBACE,KAACd;QACE,GAAGgB,SAAS;QACbV,IAAIA;QACJD,KAAKA;QACLQ,WAAWA;QACXL,SAAS,CAACS;YACRT,QAAQS;YAER,IAAIF,wBAAwB;gBAC1BE,MAAMC,eAAe;YACvB;YAEA,oEAAoE;YACpE,wBAAwB;YACxB,IAAIC,QAAiCC,SAASC,aAAa,CAAC;YAC5DF,MAAMG,IAAI,GAAG;YACbH,MAAMT,MAAM,GAAGA;YACfS,MAAMR,QAAQ,GAAGA;YAEjB,6DAA6D;YAC7D,mBAAmB;YACnBQ,MAAMI,QAAQ,GAAGd;YACjBU,MAAMK,KAAK;YACXL,QAAQ;QACV;kBAECP;;AAGP,GAAG"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/form/MenuItemInputToggle.tsx"],"sourcesContent":["\"use client\";\nimport { cnb } from \"cnbuilder\";\nimport {\n forwardRef,\n type CSSProperties,\n type HTMLAttributes,\n type MouseEvent,\n type ReactNode,\n} from \"react\";\nimport { ListItem } from \"../list/ListItem.js\";\nimport {\n type ListItemAddonPosition,\n type ListItemAddonType,\n type ListItemHeight,\n} from \"../list/types.js\";\nimport { type PropsWithRef } from \"../types.js\";\nimport { useEnsuredId } from \"../useEnsuredId.js\";\nimport { bem } from \"../utils/bem.js\";\nimport {\n type IndeterminateCheckboxProps,\n type InputToggleIconProps,\n} from \"./InputToggle.js\";\nimport { InputToggleIcon } from \"./InputToggleIcon.js\";\nimport { SwitchTrack } from \"./SwitchTrack.js\";\nimport { type InputToggleSize } from \"./inputToggleStyles.js\";\n\nconst noop = (): void => {\n // do nothing\n};\nconst styles = bem(\"rmd-menu-item-input-toggle\");\n\n/** @remarks \\@since 6.0.0 */\nexport interface MenuItemInputToggleClassNameOptions {\n className?: string;\n type: \"radio\" | \"checkbox\" | \"switch\";\n}\n\n/**\n * @remarks \\@since 6.0.0\n */\nexport function menuItemInputToggle(\n options: MenuItemInputToggleClassNameOptions\n): string {\n const { className, type } = options;\n return cnb(\n `rmd-${type}-menu-item`,\n styles({ switch: type === \"switch\" }),\n className\n );\n}\n\n/**\n * @remarks \\@since 6.0.0\n */\nexport type MenuItemInputToggleCheckedCallback = (\n checked: boolean,\n event: MouseEvent<HTMLLIElement>\n) => void;\n\n/** @remarks \\@since 2.8.0 */\nexport interface BaseMenuItemInputToggleProps\n extends HTMLAttributes<HTMLLIElement>,\n InputToggleIconProps {\n checked: boolean;\n onCheckedChange: MenuItemInputToggleCheckedCallback;\n\n /**\n * @defaultValue `\"menu-item-\" + useId()`\n */\n id?: string;\n\n /** @defaultValue `false` */\n disabled?: boolean;\n\n /**\n * Set this to `true` if the `Menu` should not close when the input toggle is\n * clicked. This can be useful when interacting with a checkbox group within a\n * menu or allowing the user to select multiple options before closing the\n * menu.\n *\n * @defaultValue `false`\n */\n preventMenuHideOnClick?: boolean;\n\n /**\n * This is set to `\"auto\"` by default so the icon shrinks back down to the\n * default icon size instead of relative to the current font size. You\n * probably don't want to change this since it'll also modify the height of\n * the menu item\n *\n * @defaultValue `\"auto\"`\n */\n size?: InputToggleSize;\n\n /** @defaultValue `\"auto\"` */\n height?: ListItemHeight;\n\n /** @defaultValue `false` */\n multiline?: boolean;\n\n /** @defaultValue `false` */\n disableTextChildren?: boolean;\n\n /** @defaultValue `false` */\n iconAfter?: boolean;\n\n addon?: ReactNode;\n addonType?: ListItemAddonType;\n addonPosition?: ListItemAddonPosition;\n\n /** @defaultValue `false` */\n addonForceWrap?: boolean;\n\n /** @defaultValue `false` */\n disableAddonCenteredMedia?: boolean;\n}\n\nexport interface MenuItemCheckboxProps\n extends BaseMenuItemInputToggleProps,\n IndeterminateCheckboxProps {}\n\nexport type MenuItemRadioProps = BaseMenuItemInputToggleProps;\n\n/**\n * @remarks\n * \\@since 2.8.0\n * \\@since 6.0.0 Added additional props for styling the track and ball.\n */\nexport interface MenuItemSwitchProps extends BaseMenuItemInputToggleProps {\n trackProps?: PropsWithRef<HTMLAttributes<HTMLDivElement>, HTMLDivElement>;\n trackStyle?: CSSProperties;\n trackClassName?: string;\n ballProps?: PropsWithRef<HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>;\n ballStyle?: CSSProperties;\n ballClassName?: string;\n}\n\n/**\n * @remarks\n * \\@since 2.8.0\n * \\@since 6.0.0 Updated to be a union of the different props to enforce the\n * correct props based on `type`\n */\nexport type MenuItemInputToggleProps =\n | (MenuItemCheckboxProps & { type: \"checkbox\" })\n | (MenuItemRadioProps & { type: \"radio\" })\n | (MenuItemSwitchProps & { type: \"switch\" });\n\n/**\n * **Client Component**\n *\n * This is a low-level component that should probably not be used externally and\n * instead the `MenuItemCheckbox`, `MenuItemRadio`, or `MenuItemSwitch` should\n * be used instead.\n *\n * @see {@link MenuItemCheckbox} for checkbox examples\n * @see {@link MenuItemRadio} for radio examples\n * @see {@link MenuItemSwitch} for switch examples\n * @remarks \\@since 2.8.0\n */\nexport const MenuItemInputToggle = forwardRef<\n HTMLLIElement,\n MenuItemInputToggleProps\n>(function MenuItemInputToggle(props, ref) {\n const {\n id: propId,\n type,\n disabled = false,\n checked,\n onCheckedChange,\n preventMenuHideOnClick = false,\n onClick = noop,\n className,\n tabIndex = -1,\n children,\n size = \"auto\",\n icon: propIcon,\n iconAfter = false,\n iconProps,\n iconStyle,\n iconClassName,\n checkedIcon,\n indeterminate,\n indeterminateIcon,\n addon,\n addonType,\n addonPosition,\n addonForceWrap,\n disableAddonCenteredMedia,\n ballProps,\n ballStyle,\n ballClassName,\n trackProps,\n trackStyle,\n trackClassName,\n ...remaining\n } = props as MenuItemSwitchProps &\n MenuItemCheckboxProps & { type: \"checkbox\" | \"radio\" | \"switch\" };\n const id = useEnsuredId(propId, \"menu-item\");\n\n let icon = propIcon;\n if (typeof propIcon === \"undefined\") {\n if (type === \"switch\") {\n icon = (\n <SwitchTrack\n style={trackStyle}\n {...trackProps}\n className={cnb(\n styles(\"track\"),\n trackClassName,\n trackProps?.className\n )}\n active={checked}\n ballProps={ballProps}\n ballStyle={ballStyle}\n ballClassName={cnb(styles(\"ball\"), ballClassName)}\n />\n );\n } else {\n icon = (\n <InputToggleIcon\n style={iconStyle}\n disableEm\n {...iconProps}\n className={cnb(styles(\"icon\"), iconClassName, iconProps?.className)}\n size={size}\n type={type}\n checked={checked}\n disabled={disabled}\n icon={propIcon}\n checkedIcon={checkedIcon}\n indeterminate={indeterminate}\n indeterminateIcon={indeterminateIcon}\n />\n );\n }\n }\n\n let leftAddon: ReactNode;\n let leftAddonType: ListItemAddonType | undefined;\n let leftAddonPosition: ListItemAddonPosition | undefined;\n let leftAddonForceWrap: boolean | undefined;\n let disableLeftAddonCenteredMedia: boolean | undefined;\n let rightAddon: ReactNode;\n let rightAddonType: ListItemAddonType | undefined;\n let rightAddonPosition: ListItemAddonPosition | undefined;\n let rightAddonForceWrap: boolean | undefined;\n let disableRightAddonCenteredMedia: boolean | undefined;\n if (iconAfter) {\n leftAddon = addon;\n leftAddonType = addonType;\n leftAddonPosition = addonPosition;\n leftAddonForceWrap = addonForceWrap;\n disableLeftAddonCenteredMedia = disableAddonCenteredMedia;\n rightAddon = icon;\n } else {\n leftAddon = icon;\n rightAddon = addon;\n rightAddonType = addonType;\n rightAddonPosition = addonPosition;\n rightAddonForceWrap = addonForceWrap;\n disableRightAddonCenteredMedia = disableAddonCenteredMedia;\n }\n\n return (\n <ListItem\n {...remaining}\n // I'm not actually sure if this is correct\n aria-checked={indeterminate && checked ? \"mixed\" : checked}\n id={id}\n role={type === \"radio\" ? \"menuitemradio\" : \"menuitemcheckbox\"}\n onClick={(event) => {\n onClick(event);\n onCheckedChange(!checked, event);\n\n if (preventMenuHideOnClick) {\n event.stopPropagation();\n }\n }}\n ref={ref}\n className={menuItemInputToggle({ type, className })}\n disabled={disabled}\n tabIndex={tabIndex}\n leftAddon={leftAddon}\n leftAddonType={leftAddonType}\n leftAddonPosition={leftAddonPosition}\n leftAddonForceWrap={leftAddonForceWrap}\n disableLeftAddonCenteredMedia={disableLeftAddonCenteredMedia}\n rightAddon={rightAddon}\n rightAddonType={rightAddonType}\n rightAddonPosition={rightAddonPosition}\n rightAddonForceWrap={rightAddonForceWrap}\n disableRightAddonCenteredMedia={disableRightAddonCenteredMedia}\n >\n {children}\n </ListItem>\n );\n});\n"],"names":["cnb","forwardRef","ListItem","useEnsuredId","bem","InputToggleIcon","SwitchTrack","noop","styles","menuItemInputToggle","options","className","type","switch","MenuItemInputToggle","props","ref","id","propId","disabled","checked","onCheckedChange","preventMenuHideOnClick","onClick","tabIndex","children","size","icon","propIcon","iconAfter","iconProps","iconStyle","iconClassName","checkedIcon","indeterminate","indeterminateIcon","addon","addonType","addonPosition","addonForceWrap","disableAddonCenteredMedia","ballProps","ballStyle","ballClassName","trackProps","trackStyle","trackClassName","remaining","style","active","disableEm","leftAddon","leftAddonType","leftAddonPosition","leftAddonForceWrap","disableLeftAddonCenteredMedia","rightAddon","rightAddonType","rightAddonPosition","rightAddonForceWrap","disableRightAddonCenteredMedia","aria-checked","role","event","stopPropagation"],"mappings":"AAAA;;AACA,SAASA,GAAG,QAAQ,YAAY;AAChC,SACEC,UAAU,QAKL,QAAQ;AACf,SAASC,QAAQ,QAAQ,sBAAsB;AAO/C,SAASC,YAAY,QAAQ,qBAAqB;AAClD,SAASC,GAAG,QAAQ,kBAAkB;AAKtC,SAASC,eAAe,QAAQ,uBAAuB;AACvD,SAASC,WAAW,QAAQ,mBAAmB;AAG/C,MAAMC,OAAO;AACX,aAAa;AACf;AACA,MAAMC,SAASJ,IAAI;AAQnB;;CAEC,GACD,OAAO,SAASK,oBACdC,OAA4C;IAE5C,MAAM,EAAEC,SAAS,EAAEC,IAAI,EAAE,GAAGF;IAC5B,OAAOV,IACL,CAAC,IAAI,EAAEY,KAAK,UAAU,CAAC,EACvBJ,OAAO;QAAEK,QAAQD,SAAS;IAAS,IACnCD;AAEJ;AAmGA;;;;;;;;;;;CAWC,GACD,OAAO,MAAMG,oCAAsBb,WAGjC,SAASa,oBAAoBC,KAAK,EAAEC,GAAG;IACvC,MAAM,EACJC,IAAIC,MAAM,EACVN,IAAI,EACJO,WAAW,KAAK,EAChBC,OAAO,EACPC,eAAe,EACfC,yBAAyB,KAAK,EAC9BC,UAAUhB,IAAI,EACdI,SAAS,EACTa,WAAW,CAAC,CAAC,EACbC,QAAQ,EACRC,OAAO,MAAM,EACbC,MAAMC,QAAQ,EACdC,YAAY,KAAK,EACjBC,SAAS,EACTC,SAAS,EACTC,aAAa,EACbC,WAAW,EACXC,aAAa,EACbC,iBAAiB,EACjBC,KAAK,EACLC,SAAS,EACTC,aAAa,EACbC,cAAc,EACdC,yBAAyB,EACzBC,SAAS,EACTC,SAAS,EACTC,aAAa,EACbC,UAAU,EACVC,UAAU,EACVC,cAAc,EACd,GAAGC,WACJ,GAAGhC;IAEJ,MAAME,KAAKd,aAAae,QAAQ;IAEhC,IAAIS,OAAOC;IACX,IAAI,OAAOA,aAAa,aAAa;QACnC,IAAIhB,SAAS,UAAU;YACrBe,qBACE,KAACrB;gBACC0C,OAAOH;gBACN,GAAGD,UAAU;gBACdjC,WAAWX,IACTQ,OAAO,UACPsC,gBACAF,YAAYjC;gBAEdsC,QAAQ7B;gBACRqB,WAAWA;gBACXC,WAAWA;gBACXC,eAAe3C,IAAIQ,OAAO,SAASmC;;QAGzC,OAAO;YACLhB,qBACE,KAACtB;gBACC2C,OAAOjB;gBACPmB,SAAS;gBACR,GAAGpB,SAAS;gBACbnB,WAAWX,IAAIQ,OAAO,SAASwB,eAAeF,WAAWnB;gBACzDe,MAAMA;gBACNd,MAAMA;gBACNQ,SAASA;gBACTD,UAAUA;gBACVQ,MAAMC;gBACNK,aAAaA;gBACbC,eAAeA;gBACfC,mBAAmBA;;QAGzB;IACF;IAEA,IAAIgB;IACJ,IAAIC;IACJ,IAAIC;IACJ,IAAIC;IACJ,IAAIC;IACJ,IAAIC;IACJ,IAAIC;IACJ,IAAIC;IACJ,IAAIC;IACJ,IAAIC;IACJ,IAAI/B,WAAW;QACbsB,YAAYf;QACZgB,gBAAgBf;QAChBgB,oBAAoBf;QACpBgB,qBAAqBf;QACrBgB,gCAAgCf;QAChCgB,aAAa7B;IACf,OAAO;QACLwB,YAAYxB;QACZ6B,aAAapB;QACbqB,iBAAiBpB;QACjBqB,qBAAqBpB;QACrBqB,sBAAsBpB;QACtBqB,iCAAiCpB;IACnC;IAEA,qBACE,KAACtC;QACE,GAAG6C,SAAS;QACb,2CAA2C;QAC3Cc,gBAAc3B,iBAAiBd,UAAU,UAAUA;QACnDH,IAAIA;QACJ6C,MAAMlD,SAAS,UAAU,kBAAkB;QAC3CW,SAAS,CAACwC;YACRxC,QAAQwC;YACR1C,gBAAgB,CAACD,SAAS2C;YAE1B,IAAIzC,wBAAwB;gBAC1ByC,MAAMC,eAAe;YACvB;QACF;QACAhD,KAAKA;QACLL,WAAWF,oBAAoB;YAAEG;YAAMD;QAAU;QACjDQ,UAAUA;QACVK,UAAUA;QACV2B,WAAWA;QACXC,eAAeA;QACfC,mBAAmBA;QACnBC,oBAAoBA;QACpBC,+BAA+BA;QAC/BC,YAAYA;QACZC,gBAAgBA;QAChBC,oBAAoBA;QACpBC,qBAAqBA;QACrBC,gCAAgCA;kBAE/BnC;;AAGP,GAAG"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/form/MenuItemRadio.tsx"],"sourcesContent":["\"use client\";\nimport { forwardRef } from \"react\";\nimport {\n MenuItemInputToggle,\n type MenuItemRadioProps,\n} from \"./MenuItemInputToggle.js\";\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport { type ICON_CONFIG } from \"../icon/iconConfig.js\";\n\n/**\n * **Client Component**\n *\n * This is a simple wrapper for the {@link MenuItemInputToggle} component to\n * render it as a radio and pulling the radio icon from the\n * {@link ICON_CONFIG}.\n *\n * If a menu or menubar contains more than one group of menuitemradio elements,\n * or if the menu contains one group and other, unrelated menu items, authors\n * SHOULD nest each set of related menuitemradio elements in an element using\n * the group role, and authors SHOULD delimit the group from other menu items\n * with an element using the separator role.\n * @see {@link https://www.w3.org/TR/wai-aria-1.1/#menuitemradio}\n *\n * @example\n * Only Radio Items\n * ```tsx\n * import { ReactElement, useState } from \"react\";\n * import { DropdownMenu, MenuItemRadio } from \"@react-md/core\";\n *\n * function Example(): ReactElement {\n * const [value, setValue] = useState(\"value1\");\n *\n * return (\n * <DropdownMenu id=\"dropdown-menu-id\" buttonChildren=\"Button\">\n * <MenuItemRadio\n * id=\"radio-1\"\n * checked={value === \"value1\"}\n * onCheckedChange={() => setValue(\"value1\")}\n * >\n * Radio 1\n * </MenuItemRadio>\n * <MenuItemRadio\n * id=\"radio-2\"\n * checked={value === \"value2\"}\n * onCheckedChange={() => setValue(\"value2\")}\n * >\n * Radio 2\n * </MenuItemRadio>\n * <MenuItemRadio\n * id=\"radio-3\"\n * checked={value === \"value3\"}\n * onCheckedChange={() => setValue(\"value3\")}\n * >\n * Radio 3\n * </MenuItemRadio>\n * </DropdownMenu>\n * );\n * }\n * ```\n *\n * @example\n * With Other Items\n * ```tsx\n * import {\n * DropdownMenu,\n * MenuItemGroup,\n * MenuItemRadio,\n * MenuItemSwitch,\n * MenuItemSeparator,\n * } from \"@react-md/core\";\n * import type { ReactElement } from \"react\";\n * import { useState } from \"react\";\n *\n * function Example(): ReactElement {\n * const [value, setValue] = useState(\"value1\");\n *\n * return (\n * <DropdownMenu buttonChildren=\"Button\">\n * <MenuItemSwitch\n * checked={checked}\n * onCheckedChange={nextChecked => setChecked(nextChecked)}\n * >\n * Light mode\n * </MenuItemSwitch>\n * <MenuItemSeparator />\n * <MenuItemGroup aria-label=\"My Group Label\">\n * <MenuItemRadio\n * checked={value === \"value1\"}\n * onCheckedChange={() => setValue(\"value1\")}\n * >\n * Radio 1\n * </MenuItemRadio>\n * <MenuItemRadio\n * checked={value === \"value2\"}\n * onCheckedChange={() => setValue(\"value2\")}\n * >\n * Radio 2\n * </MenuItemRadio>\n * <MenuItemRadio\n * checked={value === \"value3\"}\n * onCheckedChange={() => setValue(\"value3\")}\n * >\n * Radio 3\n * </MenuItemRadio>\n * </MenuItemGroup>\n * </DropdownMenu>\n * );\n * }\n * ```\n *\n * @remarks \\@since 2.8.0\n */\nexport const MenuItemRadio = forwardRef<HTMLLIElement, MenuItemRadioProps>(\n function MenuItemRadio(props, ref) {\n return <MenuItemInputToggle {...props} ref={ref} type=\"radio\" />;\n }\n);\n"],"names":["forwardRef","MenuItemInputToggle","MenuItemRadio","props","ref","type"],"mappings":"AAAA;;AACA,SAASA,UAAU,QAAQ,QAAQ;AACnC,SACEC,mBAAmB,QAEd,2BAA2B;AAIlC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsGC,GACD,OAAO,MAAMC,8BAAgBF,WAC3B,SAASE,cAAcC,KAAK,EAAEC,GAAG;IAC/B,qBAAO,KAACH;QAAqB,GAAGE,KAAK;QAAEC,KAAKA;QAAKC,MAAK;;AACxD,GACA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/form/MenuItemSwitch.tsx"],"sourcesContent":["\"use client\";\nimport { forwardRef } from \"react\";\nimport {\n MenuItemInputToggle,\n type MenuItemSwitchProps,\n} from \"./MenuItemInputToggle.js\";\n\n/**\n * **Client Component**\n *\n * This is a simple wrapper for the {@link MenuItemInputToggle} component to\n * render it as a switch.\n *\n * @example\n * Simple Example\n * ```tsx\n * import { ReactElement, useState } from \"react\";\n * import { DropdownMenu, MenuItemSwitch } from \"@react-md/core\";\n *\n * function Example(): ReactElement {\n * const [checked, setChecked] = useState(false);\n *\n * return (\n * <DropdownMenu buttonChildren=\"Button\">\n * <MenuItemSwitch\n * checked={checked}\n * onCheckedChange={(nextChecked) => setChecked(nextChecked)}\n * >\n * Switch\n * </MenuItemSwitch>\n * </DropdownMenu>\n * );\n * }\n * ```\n *\n * @remarks \\@since 2.8.0\n */\nexport const MenuItemSwitch = forwardRef<HTMLLIElement, MenuItemSwitchProps>(\n function MenuItemSwitch(props, ref) {\n return <MenuItemInputToggle {...props} ref={ref} type=\"switch\" />;\n }\n);\n"],"names":["forwardRef","MenuItemInputToggle","MenuItemSwitch","props","ref","type"],"mappings":"AAAA;;AACA,SAASA,UAAU,QAAQ,QAAQ;AACnC,SACEC,mBAAmB,QAEd,2BAA2B;AAElC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6BC,GACD,OAAO,MAAMC,+BAAiBF,WAC5B,SAASE,eAAeC,KAAK,EAAEC,GAAG;IAChC,qBAAO,KAACH;QAAqB,GAAGE,KAAK;QAAEC,KAAKA;QAAKC,MAAK;;AACxD,GACA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/form/MenuItemTextField.tsx"],"sourcesContent":["\"use client\";\nimport { cnb } from \"cnbuilder\";\nimport { forwardRef, type HTMLAttributes } from \"react\";\nimport { type PropsWithRef } from \"../types.js\";\nimport { TextField, type TextFieldProps } from \"./TextField.js\";\n\n/**\n * @remarks \\@since 5.0.0\n */\nexport interface MenuItemTextFieldProps extends TextFieldProps {\n /**\n * Any additional props or a `ref` to apply to the surrounding `<li>` element.\n */\n liProps?: PropsWithRef<HTMLAttributes<HTMLLIElement>, HTMLLIElement>;\n\n /** @defaultValue `true` */\n stretch?: boolean;\n}\n\n/**\n * **Client Component**\n *\n * This is a wrapper for the `TextField` component that can be used within\n * `Menu`s by updating the `onKeyDown` and `onClick` behavior.\n *\n * Note: This is **not** the `TextFieldWithMessage` since the message part is\n * hard to style nicely within menus. You'd most likely want to use another menu\n * for displaying errors.\n *\n * @remarks \\@since 5.0.0\n */\nexport const MenuItemTextField = forwardRef<\n HTMLInputElement,\n MenuItemTextFieldProps\n>(function MenuItemTextField(props, ref) {\n const { liProps, onKeyDown, stretch = true, ...remaining } = props;\n return (\n <li\n role=\"none\"\n {...liProps}\n onClick={(event) => {\n liProps?.onClick?.(event);\n event.stopPropagation();\n }}\n className={cnb(\"rmd-list-item rmd-menu-item\", liProps?.className)}\n >\n <TextField\n {...remaining}\n ref={ref}\n stretch={stretch}\n onKeyDown={(event) => {\n onKeyDown?.(event);\n switch (event.key) {\n case \"Tab\":\n case \"Escape\":\n case \" \":\n // do default behavior\n break;\n default:\n if (event.key.length === 1 || event.currentTarget.value) {\n event.stopPropagation();\n }\n }\n }}\n />\n </li>\n );\n});\n"],"names":["cnb","forwardRef","TextField","MenuItemTextField","props","ref","liProps","onKeyDown","stretch","remaining","li","role","onClick","event","stopPropagation","className","key","length","currentTarget","value"],"mappings":"AAAA;;AACA,SAASA,GAAG,QAAQ,YAAY;AAChC,SAASC,UAAU,QAA6B,QAAQ;AAExD,SAASC,SAAS,QAA6B,iBAAiB;AAehE;;;;;;;;;;;CAWC,GACD,OAAO,MAAMC,kCAAoBF,WAG/B,SAASE,kBAAkBC,KAAK,EAAEC,GAAG;IACrC,MAAM,EAAEC,OAAO,EAAEC,SAAS,EAAEC,UAAU,IAAI,EAAE,GAAGC,WAAW,GAAGL;IAC7D,qBACE,KAACM;QACCC,MAAK;QACJ,GAAGL,OAAO;QACXM,SAAS,CAACC;YACRP,SAASM,UAAUC;YACnBA,MAAMC,eAAe;QACvB;QACAC,WAAWf,IAAI,+BAA+BM,SAASS;kBAEvD,cAAA,KAACb;YACE,GAAGO,SAAS;YACbJ,KAAKA;YACLG,SAASA;YACTD,WAAW,CAACM;gBACVN,YAAYM;gBACZ,OAAQA,MAAMG,GAAG;oBACf,KAAK;oBACL,KAAK;oBACL,KAAK;wBAEH;oBACF;wBACE,IAAIH,MAAMG,GAAG,CAACC,MAAM,KAAK,KAAKJ,MAAMK,aAAa,CAACC,KAAK,EAAE;4BACvDN,MAAMC,eAAe;wBACvB;gBACJ;YACF;;;AAIR,GAAG"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/form/NativeSelect.tsx"],"sourcesContent":["import {\n forwardRef,\n type CSSProperties,\n type HTMLAttributes,\n type ReactNode,\n type SelectHTMLAttributes,\n} from \"react\";\nimport { getIcon } from \"../icon/iconConfig.js\";\nimport { type PropsWithRef } from \"../types.js\";\nimport { useEnsuredId } from \"../useEnsuredId.js\";\nimport { FormMessageContainer } from \"./FormMessageContainer.js\";\nimport { Label } from \"./Label.js\";\nimport { TextFieldContainer } from \"./TextFieldContainer.js\";\nimport { getFormConfig } from \"./formConfig.js\";\nimport { nativeSelect, nativeSelectContainer } from \"./nativeSelectStyles.js\";\nimport {\n type FormFieldOptions,\n type UserAgentAutoCompleteProps,\n} from \"./types.js\";\n\nexport interface NativeSelectProps\n extends SelectHTMLAttributes<HTMLSelectElement>,\n UserAgentAutoCompleteProps,\n FormFieldOptions {\n /**\n * A custom dropdown icon to use instead of the browser's default select\n * dropdown icon.\n *\n * Set this to `null` if the browser's default icon should be used instead.\n *\n * @defaultValue `getIcon(\"dropdown\")`\n */\n icon?: ReactNode;\n\n /**\n * This applies custom inline styles to the `<select>` element since the\n * `style` prop is applied to the container element instead.\n */\n selectStyle?: CSSProperties;\n\n /**\n * This applies custom className to the `<select>` element since the\n * `className` prop is applied to the container element instead.\n */\n selectClassName?: string;\n\n /**\n * This should be a list of `<option>` elements for specific values within the\n * `<select>`.\n *\n * Check out the {@link NativeSelect} for examples around using \"placeholder\"\n * text and requiring a value to be selected.\n */\n children: ReactNode;\n\n /**\n * Optional props to provide to the {@link TextFieldContainer} component.\n * There probably isn't any real use for this prop other than if you need to\n * add a `ref` for some DOM behavior.\n */\n containerProps?: PropsWithRef<HTMLAttributes<HTMLDivElement>, HTMLDivElement>;\n}\n\n/**\n * **Server Component**\n *\n * This component is a wrapper for the native `<select>` field that applies the\n * same theming as `TextField` and `TextArea` components. This component might\n * not be used much since the `Select` offers more styling options.\n *\n * @example\n * Simple Example\n * ```tsx\n * <NativeSelect label=\"Label\">\n * <option value=\"a\">Value 1</option>\n * <option value=\"b\">Value 2</option>\n * <option value=\"c\">Value 3</option>\n * <option value=\"d\">Value 4</option>\n * </NativeSelect>\n * ```\n *\n * @example\n * Required Value Example\n * ```tsx\n * function Example(): ReactElement {\n * // using `defaultValue=\"\"` makes it so the first option selected by default\n * // and considered an \"invalid\" value since it is `disabled`\n * //\n * // a `name` must be set with `required` so that the form validation will\n * // fire if the value is still the empty string when the form is submitted\n * //\n * // the first `<option>` is kind of like placeholder text since it doesn't\n * // have a value and is disabled by default\n *\n * return (\n * <NativeSelect\n * label=\"State\"\n * name=\"state\"\n * required\n * defaultValue=\"\"\n * >\n * <option value=\"\" disabled>Choose a state</option>\n * {states.map(({ name, code }) => (\n * <option key={code} value={code}>{name}</option>\n * ))}\n * </NativeSelect>\n * );\n * }\n * ```\n */\nexport const NativeSelect = forwardRef<HTMLSelectElement, NativeSelectProps>(\n function NativeSelect(props, ref) {\n const {\n id: propId,\n style,\n className,\n icon: propIcon,\n label,\n labelProps,\n labelStyle,\n labelClassName,\n selectStyle,\n selectClassName,\n autoCompleteValue,\n autoComplete = autoCompleteValue,\n name = autoCompleteValue,\n dense = false,\n error = false,\n active = false,\n inline = false,\n stretch = false,\n leftAddon,\n rightAddon: propRightAddon,\n leftAddonProps,\n rightAddonProps,\n disableLeftAddonStyles = false,\n disableRightAddonStyles = false,\n theme: propTheme,\n underlineDirection: propUnderlineDirection,\n messageProps,\n messageContainerProps,\n containerProps,\n children,\n ...remaining\n } = props;\n const { disabled = false, readOnly = false, multiple = false } = props;\n const id = useEnsuredId(propId, \"select\");\n const theme = getFormConfig(\"theme\", propTheme);\n const underlineDirection = getFormConfig(\n \"underlineDirection\",\n propUnderlineDirection\n );\n const icon = getIcon(\"dropdown\", propIcon);\n const underlined = theme === \"underline\" || theme === \"filled\";\n\n let rightAddon = propRightAddon;\n if (typeof propRightAddon === \"undefined\" && !multiple) {\n rightAddon = icon;\n }\n\n return (\n <FormMessageContainer\n {...messageContainerProps}\n messageProps={messageProps}\n >\n <TextFieldContainer\n {...containerProps}\n style={style}\n className={nativeSelectContainer({\n label: !!label,\n multiple,\n underlined,\n className,\n })}\n theme={theme}\n label={!!label}\n error={error}\n dense={dense}\n inline={inline}\n active={active}\n stretch={stretch}\n readOnly={readOnly}\n disabled={disabled}\n leftAddon={leftAddon}\n leftAddonProps={leftAddonProps}\n rightAddon={rightAddon}\n rightAddonProps={rightAddonProps}\n underlineDirection={underlineDirection}\n disableLeftAddonStyles={disableLeftAddonStyles}\n disableRightAddonStyles={disableRightAddonStyles}\n >\n <select\n {...remaining}\n id={id}\n ref={ref}\n autoComplete={autoComplete}\n name={name}\n disabled={disabled}\n style={selectStyle}\n className={nativeSelect({\n icon: !!icon,\n className: selectClassName,\n })}\n >\n {children}\n </select>\n {label && (\n <Label\n {...labelProps}\n htmlFor={id}\n style={labelProps?.style ?? labelStyle}\n className={labelProps?.className ?? labelClassName}\n floating\n dense={dense}\n error={error}\n active={active}\n disabled={disabled}\n >\n {label}\n </Label>\n )}\n </TextFieldContainer>\n </FormMessageContainer>\n );\n }\n);\n"],"names":["forwardRef","getIcon","useEnsuredId","FormMessageContainer","Label","TextFieldContainer","getFormConfig","nativeSelect","nativeSelectContainer","NativeSelect","props","ref","id","propId","style","className","icon","propIcon","label","labelProps","labelStyle","labelClassName","selectStyle","selectClassName","autoCompleteValue","autoComplete","name","dense","error","active","inline","stretch","leftAddon","rightAddon","propRightAddon","leftAddonProps","rightAddonProps","disableLeftAddonStyles","disableRightAddonStyles","theme","propTheme","underlineDirection","propUnderlineDirection","messageProps","messageContainerProps","containerProps","children","remaining","disabled","readOnly","multiple","underlined","select","htmlFor","floating"],"mappings":";AAAA,SACEA,UAAU,QAKL,QAAQ;AACf,SAASC,OAAO,QAAQ,wBAAwB;AAEhD,SAASC,YAAY,QAAQ,qBAAqB;AAClD,SAASC,oBAAoB,QAAQ,4BAA4B;AACjE,SAASC,KAAK,QAAQ,aAAa;AACnC,SAASC,kBAAkB,QAAQ,0BAA0B;AAC7D,SAASC,aAAa,QAAQ,kBAAkB;AAChD,SAASC,YAAY,EAAEC,qBAAqB,QAAQ,0BAA0B;AAiD9E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8CC,GACD,OAAO,MAAMC,6BAAeT,WAC1B,SAASS,aAAaC,KAAK,EAAEC,GAAG;IAC9B,MAAM,EACJC,IAAIC,MAAM,EACVC,KAAK,EACLC,SAAS,EACTC,MAAMC,QAAQ,EACdC,KAAK,EACLC,UAAU,EACVC,UAAU,EACVC,cAAc,EACdC,WAAW,EACXC,eAAe,EACfC,iBAAiB,EACjBC,eAAeD,iBAAiB,EAChCE,OAAOF,iBAAiB,EACxBG,QAAQ,KAAK,EACbC,QAAQ,KAAK,EACbC,SAAS,KAAK,EACdC,SAAS,KAAK,EACdC,UAAU,KAAK,EACfC,SAAS,EACTC,YAAYC,cAAc,EAC1BC,cAAc,EACdC,eAAe,EACfC,yBAAyB,KAAK,EAC9BC,0BAA0B,KAAK,EAC/BC,OAAOC,SAAS,EAChBC,oBAAoBC,sBAAsB,EAC1CC,YAAY,EACZC,qBAAqB,EACrBC,cAAc,EACdC,QAAQ,EACR,GAAGC,WACJ,GAAGrC;IACJ,MAAM,EAAEsC,WAAW,KAAK,EAAEC,WAAW,KAAK,EAAEC,WAAW,KAAK,EAAE,GAAGxC;IACjE,MAAME,KAAKV,aAAaW,QAAQ;IAChC,MAAM0B,QAAQjC,cAAc,SAASkC;IACrC,MAAMC,qBAAqBnC,cACzB,sBACAoC;IAEF,MAAM1B,OAAOf,QAAQ,YAAYgB;IACjC,MAAMkC,aAAaZ,UAAU,eAAeA,UAAU;IAEtD,IAAIN,aAAaC;IACjB,IAAI,OAAOA,mBAAmB,eAAe,CAACgB,UAAU;QACtDjB,aAAajB;IACf;IAEA,qBACE,KAACb;QACE,GAAGyC,qBAAqB;QACzBD,cAAcA;kBAEd,cAAA,MAACtC;YACE,GAAGwC,cAAc;YAClB/B,OAAOA;YACPC,WAAWP,sBAAsB;gBAC/BU,OAAO,CAAC,CAACA;gBACTgC;gBACAC;gBACApC;YACF;YACAwB,OAAOA;YACPrB,OAAO,CAAC,CAACA;YACTU,OAAOA;YACPD,OAAOA;YACPG,QAAQA;YACRD,QAAQA;YACRE,SAASA;YACTkB,UAAUA;YACVD,UAAUA;YACVhB,WAAWA;YACXG,gBAAgBA;YAChBF,YAAYA;YACZG,iBAAiBA;YACjBK,oBAAoBA;YACpBJ,wBAAwBA;YACxBC,yBAAyBA;;8BAEzB,KAACc;oBACE,GAAGL,SAAS;oBACbnC,IAAIA;oBACJD,KAAKA;oBACLc,cAAcA;oBACdC,MAAMA;oBACNsB,UAAUA;oBACVlC,OAAOQ;oBACPP,WAAWR,aAAa;wBACtBS,MAAM,CAAC,CAACA;wBACRD,WAAWQ;oBACb;8BAECuB;;gBAEF5B,uBACC,KAACd;oBACE,GAAGe,UAAU;oBACdkC,SAASzC;oBACTE,OAAOK,YAAYL,SAASM;oBAC5BL,WAAWI,YAAYJ,aAAaM;oBACpCiC,QAAQ;oBACR3B,OAAOA;oBACPC,OAAOA;oBACPC,QAAQA;oBACRmB,UAAUA;8BAET9B;;;;;AAMb,GACA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/form/OptGroup.tsx"],"sourcesContent":["\"use client\";\nimport { forwardRef, type ReactNode } from \"react\";\nimport { type ListElement, type ListProps } from \"../list/List.js\";\nimport {\n ListSubheader,\n type ListSubheaderProps,\n} from \"../list/ListSubheader.js\";\nimport { MenuItemGroup } from \"../menu/MenuItemGroup.js\";\nimport { type PropsWithRef } from \"../types.js\";\nimport { useEnsuredId } from \"../useEnsuredId.js\";\n\n/** @remarks \\@since 6.0.0 */\nexport interface OptGroupProps extends Omit<ListProps, \"role\"> {\n /**\n * This is really the `children` to display in a `ListSubheader` that\n * describes the optgroup. It was named `label` to match the native\n * `<optgroup>` element.\n *\n * @see {@link labelProps} for additional styling and options.\n */\n label: ReactNode;\n\n /**\n * This can be used to apply any additional props to the `ListSubheader` that\n * describes the group of options.\n */\n labelProps?: PropsWithRef<\n Omit<ListSubheaderProps, \"role\" | \"children\">,\n HTMLLIElement\n >;\n\n /**\n * This should be any `Option`s to display within the group.\n */\n children: ReactNode;\n}\n\n/**\n * **Client Component**\n *\n * This component is more of a \"convenience component\" to help enforce the\n * correct accessibility when creating an `<optgroup>` with the `Select`\n * component.\n *\n * @example\n * Simple Example\n * ```tsx\n * import { Select, OptGroup, Option } from \"@react-md/core\";\n * import FavoriteIcon from \"@react-md/material-icons/FavoriteIcon\";\n * import type { ReactElement } from \"react\";\n *\n * function Example(): ReactElement {\n * return (\n * <Select label=\"Choose an animal\">\n * <OptGroup label=\"Land\" labelProps={{ className: \"custom-class-name\" }}>\n * <Option value={0}>Cat</Option>\n * <Option value={1}>Dog</Option>\n * <Option value={2}>Tiger</Option>\n * </OptGroup>\n * <OptGroup label=\"Water\" labelProps={{ rightAddon: <FavoriteIcon /> }}>\n * <Option value={3}>Dolphin</Option>\n * <Option value={4}>Flounder</Option>\n * </OptGroup>\n * </Select>\n *\n * );\n * }\n * ```\n *\n * @remarks \\@since 6.0.0\n */\nexport const OptGroup = forwardRef<ListElement, OptGroupProps>(\n function OptGroup(props, ref) {\n const { children, label, labelProps, ...remaining } = props;\n const labelId = useEnsuredId(labelProps?.id, \"optgroup\");\n\n return (\n <MenuItemGroup aria-labelledby={labelId} {...remaining} ref={ref}>\n <ListSubheader {...labelProps} id={labelId}>\n {label}\n </ListSubheader>\n {children}\n </MenuItemGroup>\n );\n }\n);\n"],"names":["forwardRef","ListSubheader","MenuItemGroup","useEnsuredId","OptGroup","props","ref","children","label","labelProps","remaining","labelId","id","aria-labelledby"],"mappings":"AAAA;;AACA,SAASA,UAAU,QAAwB,QAAQ;AAEnD,SACEC,aAAa,QAER,2BAA2B;AAClC,SAASC,aAAa,QAAQ,2BAA2B;AAEzD,SAASC,YAAY,QAAQ,qBAAqB;AA4BlD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiCC,GACD,OAAO,MAAMC,yBAAWJ,WACtB,SAASI,SAASC,KAAK,EAAEC,GAAG;IAC1B,MAAM,EAAEC,QAAQ,EAAEC,KAAK,EAAEC,UAAU,EAAE,GAAGC,WAAW,GAAGL;IACtD,MAAMM,UAAUR,aAAaM,YAAYG,IAAI;IAE7C,qBACE,MAACV;QAAcW,mBAAiBF;QAAU,GAAGD,SAAS;QAAEJ,KAAKA;;0BAC3D,KAACL;gBAAe,GAAGQ,UAAU;gBAAEG,IAAID;0BAChCH;;YAEFD;;;AAGP,GACA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/form/Option.tsx"],"sourcesContent":["\"use client\";\nimport { cnb } from \"cnbuilder\";\nimport { forwardRef, Fragment, type ReactNode } from \"react\";\nimport { getIcon } from \"../icon/iconConfig.js\";\nimport { icon } from \"../icon/styles.js\";\nimport {\n TextIconSpacing,\n type TextIconSpacingProps,\n} from \"../icon/TextIconSpacing.js\";\nimport { getListItemHeight } from \"../list/getListItemHeight.js\";\nimport { ListItemText } from \"../list/ListItemText.js\";\nimport { MenuItem, type MenuItemProps } from \"../menu/MenuItem.js\";\nimport { useEnsuredId } from \"../useEnsuredId.js\";\nimport { option } from \"./optionStyles.js\";\nimport { useListboxContext } from \"./useListboxProvider.js\";\nimport { triggerManualChangeEvent } from \"./utils.js\";\n\nconst noop = (): void => {\n // do nothing\n};\n\n/**\n * This icon is used while the option is unselected so that the selected and\n * unselected options have the same alignment.\n *\n * @remarks \\@since 6.0.0\n */\nexport const DEFAULT_OPTION_UNSELECTED_ICON = (\n <span className={icon({ type: \"svg\" })} />\n);\n\n/**\n * @remarks\n * \\@since 6.0.0 removed the `selected` and `focused` props.\n * \\@since 6.0.0 Added the `value`, `selectedIcon`, `unselectedIcon`,\n * `selectedIconAfter`, and `iconSpacingProps` props.\n */\nexport interface OptionProps extends MenuItemProps {\n /**\n * @defaultValue `\"option\"`\n */\n role?: string;\n\n value: string | number;\n\n /**\n * @defaultValue `getIcon(\"selected\")`\n */\n selectedIcon?: ReactNode;\n\n /**\n * @see {@link DEFAULT_OPTION_UNSELECTED_ICON}\n * @defaultValue `<span className=\"rmd-icon rmd-icon--svg\" />`\n */\n unselectedIcon?: ReactNode;\n\n /**\n * Set this to `true` of the {@link selectedIcon}/{@link unselectedIcon}\n * should appear as the {@link rightAddon} instead of the {@link leftAddon}.\n *\n * @defaultValue `false`\n */\n selectedIconAfter?: boolean;\n\n /**\n * Since the `selectedIcon`/`unselectedIcon` are rendered as\n * `leftAddon`/`rightAddon`, the provided `leftAddon`/`rightAddon` will be\n * wrapped in the {@link TextIconSpacing} component to maintain the correct\n * spacing. You can use this prop to provide any additional configuration to\n * the spacing.\n *\n * @example\n * ```tsx\n * <Option\n * leftAddon={<Avatar>A</Avatar>}\n * leftAddonType=\"avatar\"\n * value={0}\n * textIconSpacingProps={{\n * beforeClassName: \"my-custom-class-name\",\n * }}\n * >\n * Some Content\n * </Option>\n * ```\n */\n textIconSpacingProps?: Omit<TextIconSpacingProps, \"icon\" | \"children\">;\n}\n\n/**\n * **Client Component**\n *\n * This component is a wrapper around the {@link MenuItem} to implement custom\n * select option behavior.\n *\n * @remarks\n * \\@since 6.0.0 removed the `selected` and `focused` props.\n * \\@since 6.0.0 Added the `value`, `selectedIcon`, `unselectedIcon`,\n * `selectedIconAfter`, and `iconSpacingProps` props.\n */\nexport const Option = forwardRef<HTMLLIElement, OptionProps>(\n function Option(props, ref) {\n const {\n id: propId,\n role = \"option\",\n value,\n children: propChildren,\n onClick = noop,\n className,\n selectedIcon: propSelectedIcon,\n unselectedIcon: propUnselectedIcon,\n selectedIconAfter = false,\n textIconSpacingProps,\n leftAddon: propLeftAddon,\n leftAddonType,\n leftAddonClassName,\n rightAddon: propRightAddon,\n rightAddonType,\n rightAddonClassName,\n secondaryText,\n height: propHeight,\n disableTextChildren: propDisableTextChildren,\n ...remaining\n } = props;\n\n const id = useEnsuredId(propId, \"option\");\n const { inputRef, currentValue, disableSelectedIcon } = useListboxContext();\n const selected = value === currentValue;\n const selectedIcon = getIcon(\n \"selected\",\n disableSelectedIcon ? null : propSelectedIcon\n );\n const unselectedIcon = disableSelectedIcon\n ? null\n : propUnselectedIcon ?? DEFAULT_OPTION_UNSELECTED_ICON;\n const icon = selected ? selectedIcon : unselectedIcon;\n\n let leftAddon = propLeftAddon;\n let rightAddon = propRightAddon;\n let children = propChildren;\n let disableTextChildren = propDisableTextChildren;\n if (!selectedIconAfter && icon) {\n leftAddon = icon;\n if (propLeftAddon) {\n disableTextChildren = true;\n const Wrapper = propDisableTextChildren ? Fragment : ListItemText;\n\n children = (\n <TextIconSpacing {...textIconSpacingProps} icon={propLeftAddon}>\n <Wrapper>{children}</Wrapper>\n </TextIconSpacing>\n );\n }\n } else if (icon) {\n rightAddon = icon;\n if (propRightAddon) {\n disableTextChildren = true;\n const Wrapper = propDisableTextChildren ? Fragment : ListItemText;\n\n children = (\n <TextIconSpacing {...textIconSpacingProps} icon={propRightAddon}>\n <Wrapper>{children}</Wrapper>\n </TextIconSpacing>\n );\n }\n }\n\n const height = getListItemHeight({\n height: propHeight,\n leftAddon: leftAddon === icon ? null : leftAddon,\n leftAddonType,\n rightAddon: rightAddon === icon ? null : rightAddon,\n rightAddonType,\n secondaryText,\n });\n\n return (\n <MenuItem\n {...remaining}\n aria-selected={selected || undefined}\n id={id}\n ref={ref}\n role={role}\n onClick={(event) => {\n onClick(event);\n triggerManualChangeEvent(inputRef.current, value);\n }}\n className={option({ icon: !!icon, selected, className })}\n secondaryText={secondaryText}\n height={height}\n leftAddon={leftAddon}\n leftAddonType={leftAddonType}\n leftAddonClassName={cnb(\n leftAddon === icon && \"rmd-option__icon\",\n leftAddonClassName\n )}\n rightAddon={rightAddon}\n rightAddonType={rightAddonType}\n rightAddonClassName={cnb(\n rightAddon === icon && \"rmd-option__icon\",\n rightAddonClassName\n )}\n disableTextChildren={disableTextChildren}\n >\n {children}\n </MenuItem>\n );\n }\n);\n"],"names":["cnb","forwardRef","Fragment","getIcon","icon","TextIconSpacing","getListItemHeight","ListItemText","MenuItem","useEnsuredId","option","useListboxContext","triggerManualChangeEvent","noop","DEFAULT_OPTION_UNSELECTED_ICON","span","className","type","Option","props","ref","id","propId","role","value","children","propChildren","onClick","selectedIcon","propSelectedIcon","unselectedIcon","propUnselectedIcon","selectedIconAfter","textIconSpacingProps","leftAddon","propLeftAddon","leftAddonType","leftAddonClassName","rightAddon","propRightAddon","rightAddonType","rightAddonClassName","secondaryText","height","propHeight","disableTextChildren","propDisableTextChildren","remaining","inputRef","currentValue","disableSelectedIcon","selected","Wrapper","aria-selected","undefined","event","current"],"mappings":"AAAA;;AACA,SAASA,GAAG,QAAQ,YAAY;AAChC,SAASC,UAAU,EAAEC,QAAQ,QAAwB,QAAQ;AAC7D,SAASC,OAAO,QAAQ,wBAAwB;AAChD,SAASC,IAAI,QAAQ,oBAAoB;AACzC,SACEC,eAAe,QAEV,6BAA6B;AACpC,SAASC,iBAAiB,QAAQ,+BAA+B;AACjE,SAASC,YAAY,QAAQ,0BAA0B;AACvD,SAASC,QAAQ,QAA4B,sBAAsB;AACnE,SAASC,YAAY,QAAQ,qBAAqB;AAClD,SAASC,MAAM,QAAQ,oBAAoB;AAC3C,SAASC,iBAAiB,QAAQ,0BAA0B;AAC5D,SAASC,wBAAwB,QAAQ,aAAa;AAEtD,MAAMC,OAAO;AACX,aAAa;AACf;AAEA;;;;;CAKC,GACD,OAAO,MAAMC,+CACX,KAACC;IAAKC,WAAWZ,KAAK;QAAEa,MAAM;IAAM;GACpC;AA2DF;;;;;;;;;;CAUC,GACD,OAAO,MAAMC,uBAASjB,WACpB,SAASiB,OAAOC,KAAK,EAAEC,GAAG;IACxB,MAAM,EACJC,IAAIC,MAAM,EACVC,OAAO,QAAQ,EACfC,KAAK,EACLC,UAAUC,YAAY,EACtBC,UAAUd,IAAI,EACdG,SAAS,EACTY,cAAcC,gBAAgB,EAC9BC,gBAAgBC,kBAAkB,EAClCC,oBAAoB,KAAK,EACzBC,oBAAoB,EACpBC,WAAWC,aAAa,EACxBC,aAAa,EACbC,kBAAkB,EAClBC,YAAYC,cAAc,EAC1BC,cAAc,EACdC,mBAAmB,EACnBC,aAAa,EACbC,QAAQC,UAAU,EAClBC,qBAAqBC,uBAAuB,EAC5C,GAAGC,WACJ,GAAG5B;IAEJ,MAAME,KAAKZ,aAAaa,QAAQ;IAChC,MAAM,EAAE0B,QAAQ,EAAEC,YAAY,EAAEC,mBAAmB,EAAE,GAAGvC;IACxD,MAAMwC,WAAW3B,UAAUyB;IAC3B,MAAMrB,eAAezB,QACnB,YACA+C,sBAAsB,OAAOrB;IAE/B,MAAMC,iBAAiBoB,sBACnB,OACAnB,sBAAsBjB;IAC1B,MAAMV,OAAO+C,WAAWvB,eAAeE;IAEvC,IAAII,YAAYC;IAChB,IAAIG,aAAaC;IACjB,IAAId,WAAWC;IACf,IAAImB,sBAAsBC;IAC1B,IAAI,CAACd,qBAAqB5B,MAAM;QAC9B8B,YAAY9B;QACZ,IAAI+B,eAAe;YACjBU,sBAAsB;YACtB,MAAMO,UAAUN,0BAA0B5C,WAAWK;YAErDkB,yBACE,KAACpB;gBAAiB,GAAG4B,oBAAoB;gBAAE7B,MAAM+B;0BAC/C,cAAA,KAACiB;8BAAS3B;;;QAGhB;IACF,OAAO,IAAIrB,MAAM;QACfkC,aAAalC;QACb,IAAImC,gBAAgB;YAClBM,sBAAsB;YACtB,MAAMO,UAAUN,0BAA0B5C,WAAWK;YAErDkB,yBACE,KAACpB;gBAAiB,GAAG4B,oBAAoB;gBAAE7B,MAAMmC;0BAC/C,cAAA,KAACa;8BAAS3B;;;QAGhB;IACF;IAEA,MAAMkB,SAASrC,kBAAkB;QAC/BqC,QAAQC;QACRV,WAAWA,cAAc9B,OAAO,OAAO8B;QACvCE;QACAE,YAAYA,eAAelC,OAAO,OAAOkC;QACzCE;QACAE;IACF;IAEA,qBACE,KAAClC;QACE,GAAGuC,SAAS;QACbM,iBAAeF,YAAYG;QAC3BjC,IAAIA;QACJD,KAAKA;QACLG,MAAMA;QACNI,SAAS,CAAC4B;YACR5B,QAAQ4B;YACR3C,yBAAyBoC,SAASQ,OAAO,EAAEhC;QAC7C;QACAR,WAAWN,OAAO;YAAEN,MAAM,CAAC,CAACA;YAAM+C;YAAUnC;QAAU;QACtD0B,eAAeA;QACfC,QAAQA;QACRT,WAAWA;QACXE,eAAeA;QACfC,oBAAoBrC,IAClBkC,cAAc9B,QAAQ,oBACtBiC;QAEFC,YAAYA;QACZE,gBAAgBA;QAChBC,qBAAqBzC,IACnBsC,eAAelC,QAAQ,oBACvBqC;QAEFI,qBAAqBA;kBAEpBpB;;AAGP,GACA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/form/Password.tsx"],"sourcesContent":["\"use client\";\nimport { forwardRef, type ReactNode } from \"react\";\nimport { Button, type ButtonProps } from \"../button/Button.js\";\nimport { getIcon } from \"../icon/iconConfig.js\";\nimport { type PropsWithRef } from \"../types.js\";\nimport { useEnsuredId } from \"../useEnsuredId.js\";\nimport { useToggle } from \"../useToggle.js\";\nimport {\n password,\n passwordInput,\n passwordInputToggle,\n} from \"./passwordStyles.js\";\nimport { TextField, type TextFieldProps } from \"./TextField.js\";\n\n/**\n * @example\n * Simple Example\n * ```tsx\n * const getVisibilityIcon: GetPasswordVisibilityIcon = (isPasswordVisible) => {\n * if (isPasswordVisible) {\n * return <SecurityIcon />;\n * }\n *\n * return <RemoveRedEyeIcon />;\n * };\n * ```\n *\n * @param isPasswordVisible - `true` when the password is visible and in plain\n * text\n * @returns a custom icon to use for the password visibility toggle.\n */\nexport type GetPasswordVisibilityIcon = (\n isPasswordVisible: boolean\n) => ReactNode;\n\n/**\n * @example\n * Simple Example\n * ```tsx\n * const visibilityIcon: ConfigurableVisibilityIcon = {\n * visible: <SecurityIcon />,\n * invisible: <RemoveRedEyeIcon />,\n * };\n * ```\n */\nexport interface ConfigurableVisibilityIcon {\n /**\n * The icon to display while the password is currently visible as plain text.\n */\n visible: ReactNode;\n\n /**\n * The icon to display while the password is currently invisible as the\n * password input.\n */\n invisible: ReactNode;\n}\n\nexport interface PasswordProps\n extends Omit<TextFieldProps, \"type\" | \"rightAddon\"> {\n /**\n * @defaultValue `\"password\"`\n * @remarks \\@since 6.0.0 Defaults to `\"password\"`\n */\n name?: string;\n\n /**\n * @example\n * Configurable Visibility Icon Object\n * ```tsx\n * <Password\n * {...props}\n * visibilityIcon={{\n * visible: <SecurityIcon />,\n * invisible: <RemoveRedEyeIcon />,\n * }}\n * />\n * ```\n *\n * @example\n * Get Password Visibility Icon Function\n * ```tsx\n * <Password\n * {...props}\n * visibilityIcon={(isPasswordVisible) => {\n * if (isPasswordVisible) {\n * return <SecurityIcon />;\n * }\n *\n * return <RemoveRedEyeIcon />;\n * }}\n * />\n * ```\n *\n * @example\n * Custom Icon\n * ```tsx\n * <Password\n * {...props}\n * visibilityIcon={<SomeCustomComponent />}\n * />\n * ```\n */\n visibilityIcon?:\n | ConfigurableVisibilityIcon\n | GetPasswordVisibilityIcon\n | ReactNode;\n\n /**\n * The `aria-label` to use for the password visibility icon button.\n *\n * @defaultValue `\"Show password\"`\n */\n visibilityLabel?: string;\n\n /**\n * Any props that should be passed to the password visibility icon button. If\n * `id`, `buttonType`, `aria-label`, `aria-pressed`, or `children` are\n * provided here, they will override the default implementation.\n */\n visibilityProps?: PropsWithRef<ButtonProps, HTMLButtonElement>;\n}\n\n/**\n * **Client Component**\n *\n * @example\n * Simple Example\n * ```tsx\n * import { Password } from \"@react-md/core\";\n *\n * function Example(): ReactElement {\n * return (\n * <Password\n * label=\"Password\"\n * name=\"password\"\n * required\n * />\n * );\n * }\n * ```\n */\nexport const Password = forwardRef<HTMLInputElement, PasswordProps>(\n function Password(props, ref) {\n const {\n id: propId,\n name = \"password\",\n className,\n inputClassName,\n visibilityIcon: propVisibilityIcon,\n visibilityLabel = \"Show password\",\n visibilityProps,\n ...remaining\n } = props;\n const { toggled: isPasswordVisible, toggle } = useToggle(false);\n\n let currentVisibilityIcon: ReactNode;\n if (\n propVisibilityIcon &&\n typeof propVisibilityIcon === \"object\" &&\n \"visible\" in propVisibilityIcon\n ) {\n currentVisibilityIcon = isPasswordVisible\n ? propVisibilityIcon.visible\n : propVisibilityIcon.invisible;\n } else if (typeof propVisibilityIcon === \"function\") {\n currentVisibilityIcon = propVisibilityIcon(isPasswordVisible);\n } else {\n currentVisibilityIcon = propVisibilityIcon;\n }\n\n const id = useEnsuredId(propId, \"password\");\n const visibilityIcon = getIcon(\"password\", currentVisibilityIcon);\n\n return (\n <TextField\n {...remaining}\n ref={ref}\n name={name}\n type={isPasswordVisible ? \"text\" : \"password\"}\n className={password({ className })}\n inputClassName={passwordInput({ className: inputClassName })}\n rightAddon={\n <Button\n id={`${id}-toggle`}\n buttonType=\"icon\"\n aria-label={visibilityLabel}\n aria-pressed={isPasswordVisible}\n // allow all props except the onClick, className, and aria-pressed to\n // be overridden. onClick can only stop default behavior with\n // `event.stopPropagation()`\n {...visibilityProps}\n className={passwordInputToggle({\n className: visibilityProps?.className,\n })}\n onClick={(event) => {\n visibilityProps?.onClick?.(event);\n if (event.isPropagationStopped()) {\n return;\n }\n\n toggle();\n }}\n >\n {visibilityProps?.children ?? visibilityIcon}\n </Button>\n }\n disableRightAddonStyles\n />\n );\n }\n);\n"],"names":["forwardRef","Button","getIcon","useEnsuredId","useToggle","password","passwordInput","passwordInputToggle","TextField","Password","props","ref","id","propId","name","className","inputClassName","visibilityIcon","propVisibilityIcon","visibilityLabel","visibilityProps","remaining","toggled","isPasswordVisible","toggle","currentVisibilityIcon","visible","invisible","type","rightAddon","buttonType","aria-label","aria-pressed","onClick","event","isPropagationStopped","children","disableRightAddonStyles"],"mappings":"AAAA;;AACA,SAASA,UAAU,QAAwB,QAAQ;AACnD,SAASC,MAAM,QAA0B,sBAAsB;AAC/D,SAASC,OAAO,QAAQ,wBAAwB;AAEhD,SAASC,YAAY,QAAQ,qBAAqB;AAClD,SAASC,SAAS,QAAQ,kBAAkB;AAC5C,SACEC,QAAQ,EACRC,aAAa,EACbC,mBAAmB,QACd,sBAAsB;AAC7B,SAASC,SAAS,QAA6B,iBAAiB;AA+GhE;;;;;;;;;;;;;;;;;;CAkBC,GACD,OAAO,MAAMC,yBAAWT,WACtB,SAASS,SAASC,KAAK,EAAEC,GAAG;IAC1B,MAAM,EACJC,IAAIC,MAAM,EACVC,OAAO,UAAU,EACjBC,SAAS,EACTC,cAAc,EACdC,gBAAgBC,kBAAkB,EAClCC,kBAAkB,eAAe,EACjCC,eAAe,EACf,GAAGC,WACJ,GAAGX;IACJ,MAAM,EAAEY,SAASC,iBAAiB,EAAEC,MAAM,EAAE,GAAGpB,UAAU;IAEzD,IAAIqB;IACJ,IACEP,sBACA,OAAOA,uBAAuB,YAC9B,aAAaA,oBACb;QACAO,wBAAwBF,oBACpBL,mBAAmBQ,OAAO,GAC1BR,mBAAmBS,SAAS;IAClC,OAAO,IAAI,OAAOT,uBAAuB,YAAY;QACnDO,wBAAwBP,mBAAmBK;IAC7C,OAAO;QACLE,wBAAwBP;IAC1B;IAEA,MAAMN,KAAKT,aAAaU,QAAQ;IAChC,MAAMI,iBAAiBf,QAAQ,YAAYuB;IAE3C,qBACE,KAACjB;QACE,GAAGa,SAAS;QACbV,KAAKA;QACLG,MAAMA;QACNc,MAAML,oBAAoB,SAAS;QACnCR,WAAWV,SAAS;YAAEU;QAAU;QAChCC,gBAAgBV,cAAc;YAAES,WAAWC;QAAe;QAC1Da,0BACE,KAAC5B;YACCW,IAAI,CAAC,EAAEA,GAAG,OAAO,CAAC;YAClBkB,YAAW;YACXC,cAAYZ;YACZa,gBAAcT;YAIb,GAAGH,eAAe;YACnBL,WAAWR,oBAAoB;gBAC7BQ,WAAWK,iBAAiBL;YAC9B;YACAkB,SAAS,CAACC;gBACRd,iBAAiBa,UAAUC;gBAC3B,IAAIA,MAAMC,oBAAoB,IAAI;oBAChC;gBACF;gBAEAX;YACF;sBAECJ,iBAAiBgB,YAAYnB;;QAGlCoB,uBAAuB;;AAG7B,GACA"}
|