@forgedevstack/bear 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +279 -0
- package/dist/components/Accordion/Accordion.cjs +1 -0
- package/dist/components/Accordion/Accordion.d.ts +22 -0
- package/dist/components/Accordion/Accordion.js +79 -0
- package/dist/components/Accordion/Accordion.types.d.ts +32 -0
- package/dist/components/Accordion/index.d.ts +2 -0
- package/dist/components/Alert/Alert.cjs +1 -0
- package/dist/components/Alert/Alert.d.ts +16 -0
- package/dist/components/Alert/Alert.js +109 -0
- package/dist/components/Alert/Alert.types.d.ts +23 -0
- package/dist/components/Alert/index.d.ts +2 -0
- package/dist/components/AppBar/AppBar.cjs +1 -0
- package/dist/components/AppBar/AppBar.d.ts +3 -0
- package/dist/components/AppBar/AppBar.js +49 -0
- package/dist/components/AppBar/AppBar.types.d.ts +12 -0
- package/dist/components/AppBar/index.d.ts +2 -0
- package/dist/components/Autocomplete/Autocomplete.cjs +1 -0
- package/dist/components/Autocomplete/Autocomplete.d.ts +17 -0
- package/dist/components/Autocomplete/Autocomplete.js +137 -0
- package/dist/components/Autocomplete/Autocomplete.types.d.ts +36 -0
- package/dist/components/Autocomplete/index.d.ts +2 -0
- package/dist/components/Avatar/Avatar.cjs +1 -0
- package/dist/components/Avatar/Avatar.d.ts +16 -0
- package/dist/components/Avatar/Avatar.js +102 -0
- package/dist/components/Avatar/Avatar.types.d.ts +31 -0
- package/dist/components/Avatar/index.d.ts +2 -0
- package/dist/components/Badge/Badge.cjs +1 -0
- package/dist/components/Badge/Badge.d.ts +13 -0
- package/dist/components/Badge/Badge.js +67 -0
- package/dist/components/Badge/Badge.types.d.ts +14 -0
- package/dist/components/Badge/index.d.ts +2 -0
- package/dist/components/BearLoader/BearLoader.cjs +40 -0
- package/dist/components/BearLoader/BearLoader.d.ts +14 -0
- package/dist/components/BearLoader/BearLoader.js +183 -0
- package/dist/components/BearLoader/BearLoader.types.d.ts +16 -0
- package/dist/components/BearLoader/index.d.ts +2 -0
- package/dist/components/BearLogo/BearLogo.cjs +1 -0
- package/dist/components/BearLogo/BearLogo.d.ts +18 -0
- package/dist/components/BearLogo/BearLogo.js +134 -0
- package/dist/components/BearLogo/EmberLogo.d.ts +14 -0
- package/dist/components/BearLogo/index.d.ts +2 -0
- package/dist/components/BottomNavigation/BottomNavigation.cjs +1 -0
- package/dist/components/BottomNavigation/BottomNavigation.d.ts +3 -0
- package/dist/components/BottomNavigation/BottomNavigation.js +49 -0
- package/dist/components/BottomNavigation/BottomNavigation.types.d.ts +16 -0
- package/dist/components/BottomNavigation/index.d.ts +2 -0
- package/dist/components/Breadcrumbs/Breadcrumbs.cjs +1 -0
- package/dist/components/Breadcrumbs/Breadcrumbs.d.ts +3 -0
- package/dist/components/Breadcrumbs/Breadcrumbs.js +41 -0
- package/dist/components/Breadcrumbs/Breadcrumbs.types.d.ts +17 -0
- package/dist/components/Breadcrumbs/index.d.ts +2 -0
- package/dist/components/Button/Button.cjs +57 -0
- package/dist/components/Button/Button.d.ts +20 -0
- package/dist/components/Button/Button.js +125 -0
- package/dist/components/Button/Button.types.d.ts +18 -0
- package/dist/components/Button/index.d.ts +2 -0
- package/dist/components/ButtonGroup/ButtonGroup.cjs +1 -0
- package/dist/components/ButtonGroup/ButtonGroup.d.ts +16 -0
- package/dist/components/ButtonGroup/ButtonGroup.js +51 -0
- package/dist/components/ButtonGroup/ButtonGroup.types.d.ts +18 -0
- package/dist/components/ButtonGroup/index.d.ts +2 -0
- package/dist/components/Card/Card.cjs +1 -0
- package/dist/components/Card/Card.d.ts +31 -0
- package/dist/components/Card/Card.js +113 -0
- package/dist/components/Card/Card.types.d.ts +28 -0
- package/dist/components/Card/index.d.ts +2 -0
- package/dist/components/Carousel/Carousel.cjs +1 -0
- package/dist/components/Carousel/Carousel.d.ts +15 -0
- package/dist/components/Carousel/Carousel.js +122 -0
- package/dist/components/Carousel/Carousel.types.d.ts +25 -0
- package/dist/components/Carousel/index.d.ts +2 -0
- package/dist/components/Checkbox/Checkbox.cjs +1 -0
- package/dist/components/Checkbox/Checkbox.d.ts +13 -0
- package/dist/components/Checkbox/Checkbox.js +139 -0
- package/dist/components/Checkbox/Checkbox.types.d.ts +28 -0
- package/dist/components/Checkbox/index.d.ts +2 -0
- package/dist/components/Chip/Chip.cjs +1 -0
- package/dist/components/Chip/Chip.d.ts +3 -0
- package/dist/components/Chip/Chip.js +85 -0
- package/dist/components/Chip/Chip.types.d.ts +13 -0
- package/dist/components/Chip/index.d.ts +2 -0
- package/dist/components/Collapsible/Collapsible.cjs +1 -0
- package/dist/components/Collapsible/Collapsible.d.ts +3 -0
- package/dist/components/Collapsible/Collapsible.js +59 -0
- package/dist/components/Collapsible/Collapsible.types.d.ts +13 -0
- package/dist/components/Collapsible/index.d.ts +2 -0
- package/dist/components/ColorPicker/ColorPicker.cjs +1 -0
- package/dist/components/ColorPicker/ColorPicker.d.ts +3 -0
- package/dist/components/ColorPicker/ColorPicker.js +113 -0
- package/dist/components/ColorPicker/ColorPicker.types.d.ts +11 -0
- package/dist/components/ColorPicker/index.d.ts +2 -0
- package/dist/components/Container/Container.cjs +1 -0
- package/dist/components/Container/Container.d.ts +12 -0
- package/dist/components/Container/Container.js +40 -0
- package/dist/components/Container/Container.types.d.ts +12 -0
- package/dist/components/Container/index.d.ts +2 -0
- package/dist/components/CopyButton/CopyButton.cjs +1 -0
- package/dist/components/CopyButton/CopyButton.d.ts +3 -0
- package/dist/components/CopyButton/CopyButton.js +52 -0
- package/dist/components/CopyButton/CopyButton.types.d.ts +13 -0
- package/dist/components/CopyButton/index.d.ts +2 -0
- package/dist/components/DataTable/DataTable.cjs +1 -0
- package/dist/components/DataTable/DataTable.d.ts +22 -0
- package/dist/components/DataTable/DataTable.js +120 -0
- package/dist/components/DataTable/DataTable.types.d.ts +53 -0
- package/dist/components/DataTable/index.d.ts +2 -0
- package/dist/components/DatePicker/DatePicker.cjs +1 -0
- package/dist/components/DatePicker/DatePicker.d.ts +3 -0
- package/dist/components/DatePicker/DatePicker.js +111 -0
- package/dist/components/DatePicker/DatePicker.types.d.ts +25 -0
- package/dist/components/DatePicker/index.d.ts +2 -0
- package/dist/components/Divider/Divider.cjs +1 -0
- package/dist/components/Divider/Divider.d.ts +22 -0
- package/dist/components/Divider/Divider.js +99 -0
- package/dist/components/Divider/Divider.types.d.ts +19 -0
- package/dist/components/Divider/index.d.ts +2 -0
- package/dist/components/Drawer/Drawer.cjs +1 -0
- package/dist/components/Drawer/Drawer.d.ts +3 -0
- package/dist/components/Drawer/Drawer.js +113 -0
- package/dist/components/Drawer/Drawer.types.d.ts +23 -0
- package/dist/components/Drawer/index.d.ts +2 -0
- package/dist/components/Dropdown/Dropdown.cjs +1 -0
- package/dist/components/Dropdown/Dropdown.d.ts +19 -0
- package/dist/components/Dropdown/Dropdown.js +171 -0
- package/dist/components/Dropdown/Dropdown.types.d.ts +56 -0
- package/dist/components/Dropdown/index.d.ts +2 -0
- package/dist/components/EmptyState/EmptyState.cjs +1 -0
- package/dist/components/EmptyState/EmptyState.d.ts +3 -0
- package/dist/components/EmptyState/EmptyState.js +35 -0
- package/dist/components/EmptyState/EmptyState.types.d.ts +11 -0
- package/dist/components/EmptyState/index.d.ts +2 -0
- package/dist/components/Fab/Fab.cjs +1 -0
- package/dist/components/Fab/Fab.d.ts +17 -0
- package/dist/components/Fab/Fab.js +70 -0
- package/dist/components/Fab/Fab.types.d.ts +24 -0
- package/dist/components/Fab/index.d.ts +2 -0
- package/dist/components/FileUpload/FileUpload.cjs +1 -0
- package/dist/components/FileUpload/FileUpload.d.ts +3 -0
- package/dist/components/FileUpload/FileUpload.js +112 -0
- package/dist/components/FileUpload/FileUpload.types.d.ts +25 -0
- package/dist/components/FileUpload/index.d.ts +2 -0
- package/dist/components/Flex/Flex.cjs +1 -0
- package/dist/components/Flex/Flex.d.ts +13 -0
- package/dist/components/Flex/Flex.js +79 -0
- package/dist/components/Flex/Flex.types.d.ts +23 -0
- package/dist/components/Flex/index.d.ts +2 -0
- package/dist/components/Grid/Grid.cjs +1 -0
- package/dist/components/Grid/Grid.d.ts +20 -0
- package/dist/components/Grid/Grid.js +99 -0
- package/dist/components/Grid/Grid.types.d.ts +29 -0
- package/dist/components/Grid/index.d.ts +2 -0
- package/dist/components/Icon/Icon.cjs +1 -0
- package/dist/components/Icon/Icon.d.ts +39 -0
- package/dist/components/Icon/Icon.js +44 -0
- package/dist/components/Icon/Icon.types.d.ts +16 -0
- package/dist/components/Icon/icons/action.cjs +1 -0
- package/dist/components/Icon/icons/action.d.ts +85 -0
- package/dist/components/Icon/icons/action.js +351 -0
- package/dist/components/Icon/icons/communication.cjs +1 -0
- package/dist/components/Icon/icons/communication.d.ts +48 -0
- package/dist/components/Icon/icons/communication.js +184 -0
- package/dist/components/Icon/icons/content.cjs +1 -0
- package/dist/components/Icon/icons/content.d.ts +53 -0
- package/dist/components/Icon/icons/content.js +231 -0
- package/dist/components/Icon/icons/editor.cjs +1 -0
- package/dist/components/Icon/icons/editor.d.ts +53 -0
- package/dist/components/Icon/icons/editor.js +280 -0
- package/dist/components/Icon/icons/index.d.ts +9 -0
- package/dist/components/Icon/icons/media.cjs +1 -0
- package/dist/components/Icon/icons/media.d.ts +64 -0
- package/dist/components/Icon/icons/media.js +306 -0
- package/dist/components/Icon/icons/misc.cjs +1 -0
- package/dist/components/Icon/icons/misc.d.ts +80 -0
- package/dist/components/Icon/icons/misc.js +367 -0
- package/dist/components/Icon/icons/navigation.cjs +1 -0
- package/dist/components/Icon/icons/navigation.d.ts +56 -0
- package/dist/components/Icon/icons/navigation.js +215 -0
- package/dist/components/Icon/icons/status.cjs +1 -0
- package/dist/components/Icon/icons/status.d.ts +61 -0
- package/dist/components/Icon/icons/status.js +271 -0
- package/dist/components/Icon/index.cjs +1 -0
- package/dist/components/Icon/index.d.ts +506 -0
- package/dist/components/Icon/index.js +38 -0
- package/dist/components/Image/Image.cjs +1 -0
- package/dist/components/Image/Image.d.ts +3 -0
- package/dist/components/Image/Image.js +99 -0
- package/dist/components/Image/Image.types.d.ts +16 -0
- package/dist/components/Image/index.d.ts +2 -0
- package/dist/components/Input/Input.cjs +1 -0
- package/dist/components/Input/Input.d.ts +3 -0
- package/dist/components/Input/Input.js +64 -0
- package/dist/components/Input/Input.types.d.ts +17 -0
- package/dist/components/Input/index.d.ts +2 -0
- package/dist/components/Kbd/Kbd.cjs +1 -0
- package/dist/components/Kbd/Kbd.d.ts +3 -0
- package/dist/components/Kbd/Kbd.js +58 -0
- package/dist/components/Kbd/Kbd.types.d.ts +8 -0
- package/dist/components/Kbd/index.d.ts +2 -0
- package/dist/components/Link/Link.cjs +1 -0
- package/dist/components/Link/Link.d.ts +13 -0
- package/dist/components/Link/Link.js +81 -0
- package/dist/components/Link/Link.types.d.ts +18 -0
- package/dist/components/Link/index.d.ts +2 -0
- package/dist/components/List/List.cjs +1 -0
- package/dist/components/List/List.d.ts +35 -0
- package/dist/components/List/List.js +204 -0
- package/dist/components/List/List.types.d.ts +72 -0
- package/dist/components/List/index.d.ts +2 -0
- package/dist/components/Menu/Menu.cjs +1 -0
- package/dist/components/Menu/Menu.d.ts +29 -0
- package/dist/components/Menu/Menu.js +111 -0
- package/dist/components/Menu/Menu.types.d.ts +39 -0
- package/dist/components/Menu/index.d.ts +2 -0
- package/dist/components/Modal/Modal.cjs +1 -0
- package/dist/components/Modal/Modal.d.ts +3 -0
- package/dist/components/Modal/Modal.js +86 -0
- package/dist/components/Modal/Modal.types.d.ts +23 -0
- package/dist/components/Modal/index.d.ts +2 -0
- package/dist/components/MultiSelect/MultiSelect.cjs +1 -0
- package/dist/components/MultiSelect/MultiSelect.d.ts +20 -0
- package/dist/components/MultiSelect/MultiSelect.js +140 -0
- package/dist/components/MultiSelect/MultiSelect.types.d.ts +33 -0
- package/dist/components/MultiSelect/index.d.ts +2 -0
- package/dist/components/NumberInput/NumberInput.cjs +1 -0
- package/dist/components/NumberInput/NumberInput.d.ts +3 -0
- package/dist/components/NumberInput/NumberInput.js +109 -0
- package/dist/components/NumberInput/NumberInput.types.d.ts +18 -0
- package/dist/components/NumberInput/index.d.ts +2 -0
- package/dist/components/OTPInput/OTPInput.cjs +1 -0
- package/dist/components/OTPInput/OTPInput.d.ts +3 -0
- package/dist/components/OTPInput/OTPInput.js +83 -0
- package/dist/components/OTPInput/OTPInput.types.d.ts +13 -0
- package/dist/components/OTPInput/index.d.ts +2 -0
- package/dist/components/Pagination/Pagination.cjs +1 -0
- package/dist/components/Pagination/Pagination.d.ts +13 -0
- package/dist/components/Pagination/Pagination.js +156 -0
- package/dist/components/Pagination/Pagination.types.d.ts +34 -0
- package/dist/components/Pagination/index.d.ts +2 -0
- package/dist/components/Paper/Paper.cjs +1 -0
- package/dist/components/Paper/Paper.d.ts +17 -0
- package/dist/components/Paper/Paper.js +67 -0
- package/dist/components/Paper/Paper.types.d.ts +19 -0
- package/dist/components/Paper/index.d.ts +2 -0
- package/dist/components/Popover/Popover.cjs +1 -0
- package/dist/components/Popover/Popover.d.ts +3 -0
- package/dist/components/Popover/Popover.js +93 -0
- package/dist/components/Popover/Popover.types.d.ts +16 -0
- package/dist/components/Popover/index.d.ts +2 -0
- package/dist/components/Progress/Progress.cjs +1 -0
- package/dist/components/Progress/Progress.d.ts +13 -0
- package/dist/components/Progress/Progress.js +74 -0
- package/dist/components/Progress/Progress.types.d.ts +24 -0
- package/dist/components/Progress/index.d.ts +2 -0
- package/dist/components/Radio/Radio.cjs +1 -0
- package/dist/components/Radio/Radio.d.ts +11 -0
- package/dist/components/Radio/Radio.js +172 -0
- package/dist/components/Radio/Radio.types.d.ts +52 -0
- package/dist/components/Radio/index.d.ts +2 -0
- package/dist/components/Rating/Rating.cjs +1 -0
- package/dist/components/Rating/Rating.d.ts +19 -0
- package/dist/components/Rating/Rating.js +99 -0
- package/dist/components/Rating/Rating.types.d.ts +38 -0
- package/dist/components/Rating/index.d.ts +2 -0
- package/dist/components/ScrollArea/ScrollArea.cjs +1 -0
- package/dist/components/ScrollArea/ScrollArea.d.ts +3 -0
- package/dist/components/ScrollArea/ScrollArea.js +44 -0
- package/dist/components/ScrollArea/ScrollArea.types.d.ts +10 -0
- package/dist/components/ScrollArea/index.d.ts +2 -0
- package/dist/components/Select/Select.cjs +1 -0
- package/dist/components/Select/Select.d.ts +3 -0
- package/dist/components/Select/Select.js +105 -0
- package/dist/components/Select/Select.types.d.ts +27 -0
- package/dist/components/Select/index.d.ts +2 -0
- package/dist/components/Skeleton/Skeleton.cjs +1 -0
- package/dist/components/Skeleton/Skeleton.d.ts +27 -0
- package/dist/components/Skeleton/Skeleton.js +116 -0
- package/dist/components/Skeleton/Skeleton.types.d.ts +21 -0
- package/dist/components/Skeleton/index.d.ts +2 -0
- package/dist/components/Slider/Slider.cjs +1 -0
- package/dist/components/Slider/Slider.d.ts +14 -0
- package/dist/components/Slider/Slider.js +191 -0
- package/dist/components/Slider/Slider.types.d.ts +41 -0
- package/dist/components/Slider/index.d.ts +2 -0
- package/dist/components/SpeedDial/SpeedDial.cjs +1 -0
- package/dist/components/SpeedDial/SpeedDial.d.ts +20 -0
- package/dist/components/SpeedDial/SpeedDial.js +150 -0
- package/dist/components/SpeedDial/SpeedDial.types.d.ts +48 -0
- package/dist/components/SpeedDial/index.d.ts +2 -0
- package/dist/components/Spinner/Spinner.cjs +1 -0
- package/dist/components/Spinner/Spinner.d.ts +12 -0
- package/dist/components/Spinner/Spinner.js +51 -0
- package/dist/components/Spinner/Spinner.types.d.ts +11 -0
- package/dist/components/Spinner/index.d.ts +2 -0
- package/dist/components/Statistic/Statistic.cjs +1 -0
- package/dist/components/Statistic/Statistic.d.ts +3 -0
- package/dist/components/Statistic/Statistic.js +55 -0
- package/dist/components/Statistic/Statistic.types.d.ts +18 -0
- package/dist/components/Statistic/index.d.ts +2 -0
- package/dist/components/Stepper/Stepper.cjs +1 -0
- package/dist/components/Stepper/Stepper.d.ts +3 -0
- package/dist/components/Stepper/Stepper.js +100 -0
- package/dist/components/Stepper/Stepper.types.d.ts +20 -0
- package/dist/components/Stepper/index.d.ts +2 -0
- package/dist/components/Switch/Switch.cjs +1 -0
- package/dist/components/Switch/Switch.d.ts +3 -0
- package/dist/components/Switch/Switch.js +81 -0
- package/dist/components/Switch/Switch.types.d.ts +13 -0
- package/dist/components/Switch/index.d.ts +2 -0
- package/dist/components/Tabs/Tabs.cjs +1 -0
- package/dist/components/Tabs/Tabs.d.ts +30 -0
- package/dist/components/Tabs/Tabs.js +80 -0
- package/dist/components/Tabs/Tabs.types.d.ts +44 -0
- package/dist/components/Tabs/index.d.ts +2 -0
- package/dist/components/TimePicker/TimePicker.cjs +1 -0
- package/dist/components/TimePicker/TimePicker.d.ts +3 -0
- package/dist/components/TimePicker/TimePicker.js +124 -0
- package/dist/components/TimePicker/TimePicker.types.d.ts +17 -0
- package/dist/components/TimePicker/index.d.ts +2 -0
- package/dist/components/Timeline/Timeline.cjs +1 -0
- package/dist/components/Timeline/Timeline.d.ts +3 -0
- package/dist/components/Timeline/Timeline.js +71 -0
- package/dist/components/Timeline/Timeline.types.d.ts +18 -0
- package/dist/components/Timeline/index.d.ts +2 -0
- package/dist/components/Toast/Toast.cjs +1 -0
- package/dist/components/Toast/Toast.d.ts +9 -0
- package/dist/components/Toast/Toast.js +158 -0
- package/dist/components/Toast/Toast.types.d.ts +49 -0
- package/dist/components/Toast/index.d.ts +2 -0
- package/dist/components/Tooltip/Tooltip.cjs +1 -0
- package/dist/components/Tooltip/Tooltip.d.ts +3 -0
- package/dist/components/Tooltip/Tooltip.js +86 -0
- package/dist/components/Tooltip/Tooltip.types.d.ts +17 -0
- package/dist/components/Tooltip/index.d.ts +2 -0
- package/dist/components/TransferList/TransferList.cjs +1 -0
- package/dist/components/TransferList/TransferList.d.ts +21 -0
- package/dist/components/TransferList/TransferList.js +210 -0
- package/dist/components/TransferList/TransferList.types.d.ts +45 -0
- package/dist/components/TransferList/index.d.ts +2 -0
- package/dist/components/TreeView/TreeView.cjs +1 -0
- package/dist/components/TreeView/TreeView.d.ts +3 -0
- package/dist/components/TreeView/TreeView.js +76 -0
- package/dist/components/TreeView/TreeView.types.d.ts +25 -0
- package/dist/components/TreeView/index.d.ts +2 -0
- package/dist/components/Typography/Typography.cjs +1 -0
- package/dist/components/Typography/Typography.d.ts +14 -0
- package/dist/components/Typography/Typography.js +114 -0
- package/dist/components/Typography/Typography.types.d.ts +37 -0
- package/dist/components/Typography/index.d.ts +2 -0
- package/dist/components/index.cjs +1 -0
- package/dist/components/index.d.ts +132 -0
- package/dist/components/index.js +171 -0
- package/dist/context/BearProvider.cjs +1 -0
- package/dist/context/BearProvider.d.ts +59 -0
- package/dist/context/BearProvider.js +67 -0
- package/dist/context/defaultTheme.cjs +1 -0
- package/dist/context/defaultTheme.d.ts +9 -0
- package/dist/context/defaultTheme.js +215 -0
- package/dist/context/index.cjs +1 -0
- package/dist/context/index.d.ts +2 -0
- package/dist/context/index.js +10 -0
- package/dist/hooks/index.cjs +1 -0
- package/dist/hooks/index.d.ts +3 -0
- package/dist/hooks/index.js +13 -0
- package/dist/hooks/useClickOutside.cjs +1 -0
- package/dist/hooks/useClickOutside.d.ts +13 -0
- package/dist/hooks/useClickOutside.js +15 -0
- package/dist/hooks/useDisclosure.cjs +1 -0
- package/dist/hooks/useDisclosure.d.ts +26 -0
- package/dist/hooks/useDisclosure.js +14 -0
- package/dist/hooks/useMediaQuery.cjs +1 -0
- package/dist/hooks/useMediaQuery.d.ts +15 -0
- package/dist/hooks/useMediaQuery.js +21 -0
- package/dist/index.cjs +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.js +195 -0
- package/dist/types/component.types.d.ts +39 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/theme.types.d.ts +126 -0
- package/dist/utils/cn.cjs +1 -0
- package/dist/utils/cn.d.ts +17 -0
- package/dist/utils/cn.js +19 -0
- package/dist/utils/deepMerge.cjs +1 -0
- package/dist/utils/deepMerge.d.ts +9 -0
- package/dist/utils/deepMerge.js +13 -0
- package/dist/utils/index.cjs +1 -0
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.js +7 -0
- package/package.json +108 -0
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
import { jsx as b, jsxs as f } from "react/jsx-runtime";
|
|
2
|
+
import { createContext as I, forwardRef as v, useContext as D } from "react";
|
|
3
|
+
import { cn as l } from "../../utils/cn.js";
|
|
4
|
+
const u = I({}), j = () => D(u), z = v(({
|
|
5
|
+
variant: r = "default",
|
|
6
|
+
size: e = "md",
|
|
7
|
+
hoverable: a = !1,
|
|
8
|
+
dense: t = !1,
|
|
9
|
+
disablePadding: s = !1,
|
|
10
|
+
className: m,
|
|
11
|
+
children: n,
|
|
12
|
+
testId: o,
|
|
13
|
+
...x
|
|
14
|
+
}, i) => {
|
|
15
|
+
const c = {
|
|
16
|
+
xs: "ember-text-xs",
|
|
17
|
+
sm: "ember-text-sm",
|
|
18
|
+
md: "ember-text-base",
|
|
19
|
+
lg: "ember-text-lg",
|
|
20
|
+
xl: "ember-text-xl"
|
|
21
|
+
}, y = {
|
|
22
|
+
default: "",
|
|
23
|
+
bordered: "ember-border ember-border-gray-200 dark:ember-border-gray-700 ember-rounded-lg",
|
|
24
|
+
divided: "[&>li:not(:last-child)]:ember-border-b [&>li:not(:last-child)]:ember-border-gray-200 dark:[&>li:not(:last-child)]:ember-border-gray-700"
|
|
25
|
+
};
|
|
26
|
+
return /* @__PURE__ */ b(u.Provider, { value: { dense: t, hoverable: a }, children: /* @__PURE__ */ b(
|
|
27
|
+
"ul",
|
|
28
|
+
{
|
|
29
|
+
ref: i,
|
|
30
|
+
role: "list",
|
|
31
|
+
className: l(
|
|
32
|
+
"ember-list-none ember-m-0",
|
|
33
|
+
!s && "ember-py-2",
|
|
34
|
+
c[e],
|
|
35
|
+
y[r],
|
|
36
|
+
m
|
|
37
|
+
),
|
|
38
|
+
"data-testid": o,
|
|
39
|
+
...x,
|
|
40
|
+
children: n
|
|
41
|
+
}
|
|
42
|
+
) });
|
|
43
|
+
});
|
|
44
|
+
z.displayName = "List";
|
|
45
|
+
const E = v(({
|
|
46
|
+
primary: r,
|
|
47
|
+
secondary: e,
|
|
48
|
+
leading: a,
|
|
49
|
+
trailing: t,
|
|
50
|
+
selected: s = !1,
|
|
51
|
+
disabled: m = !1,
|
|
52
|
+
clickable: n = !1,
|
|
53
|
+
divider: o = !1,
|
|
54
|
+
dense: x,
|
|
55
|
+
onClick: i,
|
|
56
|
+
className: c,
|
|
57
|
+
children: y,
|
|
58
|
+
testId: h,
|
|
59
|
+
...k
|
|
60
|
+
}, N) => {
|
|
61
|
+
const { dense: w, hoverable: L } = j(), p = x ?? w, d = n || !!i;
|
|
62
|
+
return /* @__PURE__ */ f(
|
|
63
|
+
"li",
|
|
64
|
+
{
|
|
65
|
+
ref: N,
|
|
66
|
+
role: d ? "button" : "listitem",
|
|
67
|
+
tabIndex: d && !m ? 0 : void 0,
|
|
68
|
+
"aria-selected": s,
|
|
69
|
+
"aria-disabled": m,
|
|
70
|
+
onClick: m ? void 0 : i,
|
|
71
|
+
onKeyDown: (g) => {
|
|
72
|
+
!m && (g.key === "Enter" || g.key === " ") && (g.preventDefault(), i == null || i());
|
|
73
|
+
},
|
|
74
|
+
className: l(
|
|
75
|
+
"ember-flex ember-items-center ember-gap-3",
|
|
76
|
+
p ? "ember-py-1 ember-px-3" : "ember-py-2 ember-px-4",
|
|
77
|
+
d && !m && "ember-cursor-pointer",
|
|
78
|
+
(L || d) && !m && "hover:ember-bg-gray-100 dark:hover:ember-bg-gray-800",
|
|
79
|
+
s && "ember-bg-primary-50 dark:ember-bg-primary-900/20",
|
|
80
|
+
m && "ember-opacity-50 ember-cursor-not-allowed",
|
|
81
|
+
o && "ember-border-b ember-border-gray-200 dark:ember-border-gray-700",
|
|
82
|
+
c
|
|
83
|
+
),
|
|
84
|
+
"data-testid": h,
|
|
85
|
+
...k,
|
|
86
|
+
children: [
|
|
87
|
+
a && /* @__PURE__ */ b("div", { className: "ember-flex-shrink-0 ember-text-gray-500 dark:ember-text-gray-400", children: a }),
|
|
88
|
+
r || e ? /* @__PURE__ */ f("div", { className: "ember-flex-1 ember-min-w-0", children: [
|
|
89
|
+
r && /* @__PURE__ */ b("div", { className: "ember-text-gray-900 dark:ember-text-gray-100 ember-truncate", children: r }),
|
|
90
|
+
e && /* @__PURE__ */ b("div", { className: l(
|
|
91
|
+
"ember-text-gray-500 dark:ember-text-gray-400 ember-truncate",
|
|
92
|
+
p ? "ember-text-xs" : "ember-text-sm"
|
|
93
|
+
), children: e })
|
|
94
|
+
] }) : /* @__PURE__ */ b("div", { className: "ember-flex-1 ember-min-w-0", children: y }),
|
|
95
|
+
t && /* @__PURE__ */ b("div", { className: "ember-flex-shrink-0 ember-text-gray-500 dark:ember-text-gray-400", children: t })
|
|
96
|
+
]
|
|
97
|
+
}
|
|
98
|
+
);
|
|
99
|
+
});
|
|
100
|
+
E.displayName = "ListItem";
|
|
101
|
+
const R = ({
|
|
102
|
+
sticky: r = !1,
|
|
103
|
+
inset: e = !1,
|
|
104
|
+
className: a,
|
|
105
|
+
children: t,
|
|
106
|
+
testId: s,
|
|
107
|
+
...m
|
|
108
|
+
}) => /* @__PURE__ */ b(
|
|
109
|
+
"li",
|
|
110
|
+
{
|
|
111
|
+
role: "presentation",
|
|
112
|
+
className: l(
|
|
113
|
+
"ember-py-2 ember-px-4 ember-text-xs ember-font-semibold ember-uppercase ember-tracking-wider",
|
|
114
|
+
"ember-text-gray-500 dark:ember-text-gray-400",
|
|
115
|
+
"ember-bg-gray-50 dark:ember-bg-gray-800/50",
|
|
116
|
+
r && "ember-sticky ember-top-0 ember-z-10",
|
|
117
|
+
e && "ember-pl-12",
|
|
118
|
+
a
|
|
119
|
+
),
|
|
120
|
+
"data-testid": s,
|
|
121
|
+
...m,
|
|
122
|
+
children: t
|
|
123
|
+
}
|
|
124
|
+
), S = ({
|
|
125
|
+
primary: r,
|
|
126
|
+
secondary: e,
|
|
127
|
+
inset: a = !1,
|
|
128
|
+
dense: t = !1,
|
|
129
|
+
className: s,
|
|
130
|
+
...m
|
|
131
|
+
}) => /* @__PURE__ */ f(
|
|
132
|
+
"div",
|
|
133
|
+
{
|
|
134
|
+
className: l(
|
|
135
|
+
"ember-flex-1 ember-min-w-0",
|
|
136
|
+
a && "ember-pl-9",
|
|
137
|
+
s
|
|
138
|
+
),
|
|
139
|
+
...m,
|
|
140
|
+
children: [
|
|
141
|
+
r && /* @__PURE__ */ b("div", { className: "ember-text-gray-900 dark:ember-text-gray-100", children: r }),
|
|
142
|
+
e && /* @__PURE__ */ b("div", { className: l(
|
|
143
|
+
"ember-text-gray-500 dark:ember-text-gray-400",
|
|
144
|
+
t ? "ember-text-xs" : "ember-text-sm"
|
|
145
|
+
), children: e })
|
|
146
|
+
]
|
|
147
|
+
}
|
|
148
|
+
), T = ({
|
|
149
|
+
align: r = "center",
|
|
150
|
+
className: e,
|
|
151
|
+
children: a,
|
|
152
|
+
...t
|
|
153
|
+
}) => /* @__PURE__ */ b(
|
|
154
|
+
"div",
|
|
155
|
+
{
|
|
156
|
+
className: l(
|
|
157
|
+
"ember-flex-shrink-0 ember-min-w-[36px]",
|
|
158
|
+
"ember-text-gray-500 dark:ember-text-gray-400",
|
|
159
|
+
r === "top" && "ember-self-start ember-mt-1",
|
|
160
|
+
e
|
|
161
|
+
),
|
|
162
|
+
...t,
|
|
163
|
+
children: a
|
|
164
|
+
}
|
|
165
|
+
), q = ({
|
|
166
|
+
selected: r = !1,
|
|
167
|
+
disabled: e = !1,
|
|
168
|
+
dense: a = !1,
|
|
169
|
+
onClick: t,
|
|
170
|
+
className: s,
|
|
171
|
+
children: m,
|
|
172
|
+
...n
|
|
173
|
+
}) => /* @__PURE__ */ b(
|
|
174
|
+
"div",
|
|
175
|
+
{
|
|
176
|
+
role: "button",
|
|
177
|
+
tabIndex: e ? -1 : 0,
|
|
178
|
+
"aria-selected": r,
|
|
179
|
+
"aria-disabled": e,
|
|
180
|
+
onClick: e ? void 0 : t,
|
|
181
|
+
onKeyDown: (o) => {
|
|
182
|
+
!e && (o.key === "Enter" || o.key === " ") && (o.preventDefault(), t == null || t());
|
|
183
|
+
},
|
|
184
|
+
className: l(
|
|
185
|
+
"ember-flex ember-items-center ember-gap-3 ember-w-full ember-text-left",
|
|
186
|
+
a ? "ember-py-1 ember-px-3" : "ember-py-2 ember-px-4",
|
|
187
|
+
"ember-cursor-pointer ember-transition-colors",
|
|
188
|
+
"hover:ember-bg-gray-100 dark:hover:ember-bg-gray-800",
|
|
189
|
+
r && "ember-bg-primary-50 dark:ember-bg-primary-900/20",
|
|
190
|
+
e && "ember-opacity-50 ember-cursor-not-allowed ember-pointer-events-none",
|
|
191
|
+
s
|
|
192
|
+
),
|
|
193
|
+
...n,
|
|
194
|
+
children: m
|
|
195
|
+
}
|
|
196
|
+
);
|
|
197
|
+
export {
|
|
198
|
+
z as List,
|
|
199
|
+
E as ListItem,
|
|
200
|
+
q as ListItemButton,
|
|
201
|
+
T as ListItemIcon,
|
|
202
|
+
S as ListItemText,
|
|
203
|
+
R as ListSubheader
|
|
204
|
+
};
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { HTMLAttributes, ReactNode } from 'react';
|
|
2
|
+
import { BearSize } from '../../types';
|
|
3
|
+
export interface ListProps extends HTMLAttributes<HTMLUListElement> {
|
|
4
|
+
/** List variant */
|
|
5
|
+
variant?: 'default' | 'bordered' | 'divided';
|
|
6
|
+
/** List size */
|
|
7
|
+
size?: BearSize;
|
|
8
|
+
/** Whether items are hoverable */
|
|
9
|
+
hoverable?: boolean;
|
|
10
|
+
/** Whether list is dense */
|
|
11
|
+
dense?: boolean;
|
|
12
|
+
/** Disable padding */
|
|
13
|
+
disablePadding?: boolean;
|
|
14
|
+
/** Test ID */
|
|
15
|
+
testId?: string;
|
|
16
|
+
}
|
|
17
|
+
export interface ListItemProps extends HTMLAttributes<HTMLLIElement> {
|
|
18
|
+
/** Primary text content */
|
|
19
|
+
primary?: ReactNode;
|
|
20
|
+
/** Secondary text content */
|
|
21
|
+
secondary?: ReactNode;
|
|
22
|
+
/** Leading content (icon, avatar) */
|
|
23
|
+
leading?: ReactNode;
|
|
24
|
+
/** Trailing content (icon, button, badge) */
|
|
25
|
+
trailing?: ReactNode;
|
|
26
|
+
/** Whether item is selected */
|
|
27
|
+
selected?: boolean;
|
|
28
|
+
/** Whether item is disabled */
|
|
29
|
+
disabled?: boolean;
|
|
30
|
+
/** Whether item is clickable */
|
|
31
|
+
clickable?: boolean;
|
|
32
|
+
/** Divider after item */
|
|
33
|
+
divider?: boolean;
|
|
34
|
+
/** Dense mode */
|
|
35
|
+
dense?: boolean;
|
|
36
|
+
/** Click handler */
|
|
37
|
+
onClick?: () => void;
|
|
38
|
+
/** Test ID */
|
|
39
|
+
testId?: string;
|
|
40
|
+
}
|
|
41
|
+
export interface ListSubheaderProps extends HTMLAttributes<HTMLLIElement> {
|
|
42
|
+
/** Sticky position */
|
|
43
|
+
sticky?: boolean;
|
|
44
|
+
/** Inset for alignment with ListItemText */
|
|
45
|
+
inset?: boolean;
|
|
46
|
+
/** Test ID */
|
|
47
|
+
testId?: string;
|
|
48
|
+
}
|
|
49
|
+
export interface ListItemTextProps extends HTMLAttributes<HTMLDivElement> {
|
|
50
|
+
/** Primary text */
|
|
51
|
+
primary?: ReactNode;
|
|
52
|
+
/** Secondary text */
|
|
53
|
+
secondary?: ReactNode;
|
|
54
|
+
/** Inset for alignment */
|
|
55
|
+
inset?: boolean;
|
|
56
|
+
/** Dense mode */
|
|
57
|
+
dense?: boolean;
|
|
58
|
+
}
|
|
59
|
+
export interface ListItemIconProps extends HTMLAttributes<HTMLDivElement> {
|
|
60
|
+
/** Align icon */
|
|
61
|
+
align?: 'top' | 'center';
|
|
62
|
+
}
|
|
63
|
+
export interface ListItemButtonProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onClick'> {
|
|
64
|
+
/** Whether button is selected */
|
|
65
|
+
selected?: boolean;
|
|
66
|
+
/** Whether button is disabled */
|
|
67
|
+
disabled?: boolean;
|
|
68
|
+
/** Dense mode */
|
|
69
|
+
dense?: boolean;
|
|
70
|
+
/** Click handler */
|
|
71
|
+
onClick?: () => void;
|
|
72
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const b=require("react/jsx-runtime"),c=require("react"),l=require("../../utils/cn.cjs"),k=({icon:t,disabled:e=!1,selected:m=!1,divider:d=!1,children:o,onClick:a,className:i,testId:g,...f})=>b.jsxs(b.Fragment,{children:[b.jsxs("div",{role:"menuitem",tabIndex:e?-1:0,className:l.cn("ember-flex ember-items-center ember-gap-3 ember-px-4 ember-py-2 ember-cursor-pointer ember-transition-colors","hover:ember-bg-gray-100 dark:hover:ember-bg-gray-700","focus:ember-outline-none focus:ember-bg-gray-100 dark:focus:ember-bg-gray-700",m&&"ember-bg-pink-50 dark:ember-bg-pink-900/20 ember-text-pink-600",e&&"ember-opacity-50 ember-cursor-not-allowed hover:ember-bg-transparent",i),onClick:e?void 0:a,onKeyDown:u=>{(u.key==="Enter"||u.key===" ")&&!e&&(a==null||a())},"data-testid":g,...f,children:[t&&b.jsx("span",{className:"ember-flex-shrink-0 ember-text-gray-500",children:t}),b.jsx("span",{className:"ember-flex-1 ember-text-sm",children:o})]}),d&&b.jsx(x,{})]}),x=({className:t})=>b.jsx("div",{className:l.cn("ember-h-px ember-bg-gray-200 dark:ember-bg-gray-700 ember-my-1",t)}),w=({open:t=!1,anchorEl:e,onClose:m,children:d,position:o="bottom-start",minWidth:a=180,maxHeight:i=300,className:g,testId:f,...u})=>{const y=c.useRef(null),[p,v]=c.useState({top:0,left:0});return c.useEffect(()=>{if(!t||!e)return;const r=e.getBoundingClientRect();let n=0,s=0;switch(o){case"bottom-start":n=r.bottom+4,s=r.left;break;case"bottom-end":n=r.bottom+4,s=r.right-a;break;case"top-start":n=r.top-4,s=r.left;break;case"top-end":n=r.top-4,s=r.right-a;break}v({top:n,left:s})},[t,e,o,a]),c.useEffect(()=>{if(!t)return;const r=s=>{y.current&&!y.current.contains(s.target)&&e&&!e.contains(s.target)&&(m==null||m())},n=s=>{s.key==="Escape"&&(m==null||m())};return document.addEventListener("mousedown",r),document.addEventListener("keydown",n),()=>{document.removeEventListener("mousedown",r),document.removeEventListener("keydown",n)}},[t,e,m]),t?b.jsx("div",{ref:y,role:"menu",className:l.cn("ember-fixed ember-z-50 ember-bg-white dark:ember-bg-gray-800","ember-border ember-border-gray-200 dark:ember-border-gray-700","ember-rounded-lg ember-shadow-lg ember-py-1","ember-overflow-y-auto",g),style:{top:p.top,left:p.left,minWidth:a,maxHeight:i},"data-testid":f,...u,children:d}):null};exports.Menu=w;exports.MenuDivider=x;exports.MenuItem=k;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { FC } from 'react';
|
|
2
|
+
import { MenuProps, MenuItemProps, MenuDividerProps } from './Menu.types';
|
|
3
|
+
/**
|
|
4
|
+
* MenuItem component for menu items
|
|
5
|
+
*/
|
|
6
|
+
export declare const MenuItem: FC<MenuItemProps>;
|
|
7
|
+
/**
|
|
8
|
+
* MenuDivider component for separating menu sections
|
|
9
|
+
*/
|
|
10
|
+
export declare const MenuDivider: FC<MenuDividerProps>;
|
|
11
|
+
/**
|
|
12
|
+
* Menu component for dropdown menus
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```tsx
|
|
16
|
+
* const [anchorEl, setAnchorEl] = useState<HTMLElement | null>(null);
|
|
17
|
+
*
|
|
18
|
+
* <Button onClick={(e) => setAnchorEl(e.currentTarget)}>Open Menu</Button>
|
|
19
|
+
*
|
|
20
|
+
* <Menu open={!!anchorEl} anchorEl={anchorEl} onClose={() => setAnchorEl(null)}>
|
|
21
|
+
* <MenuItem onClick={() => {}}>Option 1</MenuItem>
|
|
22
|
+
* <MenuItem onClick={() => {}}>Option 2</MenuItem>
|
|
23
|
+
* <MenuDivider />
|
|
24
|
+
* <MenuItem onClick={() => {}} disabled>Disabled</MenuItem>
|
|
25
|
+
* </Menu>
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
export declare const Menu: FC<MenuProps>;
|
|
29
|
+
export default Menu;
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { jsx as n, jsxs as l, Fragment as x } from "react/jsx-runtime";
|
|
2
|
+
import { useRef as w, useState as h, useEffect as k } from "react";
|
|
3
|
+
import { cn as p } from "../../utils/cn.js";
|
|
4
|
+
const R = ({
|
|
5
|
+
icon: t,
|
|
6
|
+
disabled: e = !1,
|
|
7
|
+
selected: a = !1,
|
|
8
|
+
divider: c = !1,
|
|
9
|
+
children: o,
|
|
10
|
+
onClick: b,
|
|
11
|
+
className: u,
|
|
12
|
+
testId: f,
|
|
13
|
+
...g
|
|
14
|
+
}) => /* @__PURE__ */ l(x, { children: [
|
|
15
|
+
/* @__PURE__ */ l(
|
|
16
|
+
"div",
|
|
17
|
+
{
|
|
18
|
+
role: "menuitem",
|
|
19
|
+
tabIndex: e ? -1 : 0,
|
|
20
|
+
className: p(
|
|
21
|
+
"ember-flex ember-items-center ember-gap-3 ember-px-4 ember-py-2 ember-cursor-pointer ember-transition-colors",
|
|
22
|
+
"hover:ember-bg-gray-100 dark:hover:ember-bg-gray-700",
|
|
23
|
+
"focus:ember-outline-none focus:ember-bg-gray-100 dark:focus:ember-bg-gray-700",
|
|
24
|
+
a && "ember-bg-pink-50 dark:ember-bg-pink-900/20 ember-text-pink-600",
|
|
25
|
+
e && "ember-opacity-50 ember-cursor-not-allowed hover:ember-bg-transparent",
|
|
26
|
+
u
|
|
27
|
+
),
|
|
28
|
+
onClick: e ? void 0 : b,
|
|
29
|
+
onKeyDown: (d) => {
|
|
30
|
+
(d.key === "Enter" || d.key === " ") && !e && (b == null || b());
|
|
31
|
+
},
|
|
32
|
+
"data-testid": f,
|
|
33
|
+
...g,
|
|
34
|
+
children: [
|
|
35
|
+
t && /* @__PURE__ */ n("span", { className: "ember-flex-shrink-0 ember-text-gray-500", children: t }),
|
|
36
|
+
/* @__PURE__ */ n("span", { className: "ember-flex-1 ember-text-sm", children: o })
|
|
37
|
+
]
|
|
38
|
+
}
|
|
39
|
+
),
|
|
40
|
+
c && /* @__PURE__ */ n(N, {})
|
|
41
|
+
] }), N = ({ className: t }) => /* @__PURE__ */ n("div", { className: p("ember-h-px ember-bg-gray-200 dark:ember-bg-gray-700 ember-my-1", t) }), j = ({
|
|
42
|
+
open: t = !1,
|
|
43
|
+
anchorEl: e,
|
|
44
|
+
onClose: a,
|
|
45
|
+
children: c,
|
|
46
|
+
position: o = "bottom-start",
|
|
47
|
+
minWidth: b = 180,
|
|
48
|
+
maxHeight: u = 300,
|
|
49
|
+
className: f,
|
|
50
|
+
testId: g,
|
|
51
|
+
...d
|
|
52
|
+
}) => {
|
|
53
|
+
const i = w(null), [y, v] = h({ top: 0, left: 0 });
|
|
54
|
+
return k(() => {
|
|
55
|
+
if (!t || !e) return;
|
|
56
|
+
const r = e.getBoundingClientRect();
|
|
57
|
+
let s = 0, m = 0;
|
|
58
|
+
switch (o) {
|
|
59
|
+
case "bottom-start":
|
|
60
|
+
s = r.bottom + 4, m = r.left;
|
|
61
|
+
break;
|
|
62
|
+
case "bottom-end":
|
|
63
|
+
s = r.bottom + 4, m = r.right - b;
|
|
64
|
+
break;
|
|
65
|
+
case "top-start":
|
|
66
|
+
s = r.top - 4, m = r.left;
|
|
67
|
+
break;
|
|
68
|
+
case "top-end":
|
|
69
|
+
s = r.top - 4, m = r.right - b;
|
|
70
|
+
break;
|
|
71
|
+
}
|
|
72
|
+
v({ top: s, left: m });
|
|
73
|
+
}, [t, e, o, b]), k(() => {
|
|
74
|
+
if (!t) return;
|
|
75
|
+
const r = (m) => {
|
|
76
|
+
i.current && !i.current.contains(m.target) && e && !e.contains(m.target) && (a == null || a());
|
|
77
|
+
}, s = (m) => {
|
|
78
|
+
m.key === "Escape" && (a == null || a());
|
|
79
|
+
};
|
|
80
|
+
return document.addEventListener("mousedown", r), document.addEventListener("keydown", s), () => {
|
|
81
|
+
document.removeEventListener("mousedown", r), document.removeEventListener("keydown", s);
|
|
82
|
+
};
|
|
83
|
+
}, [t, e, a]), t ? /* @__PURE__ */ n(
|
|
84
|
+
"div",
|
|
85
|
+
{
|
|
86
|
+
ref: i,
|
|
87
|
+
role: "menu",
|
|
88
|
+
className: p(
|
|
89
|
+
"ember-fixed ember-z-50 ember-bg-white dark:ember-bg-gray-800",
|
|
90
|
+
"ember-border ember-border-gray-200 dark:ember-border-gray-700",
|
|
91
|
+
"ember-rounded-lg ember-shadow-lg ember-py-1",
|
|
92
|
+
"ember-overflow-y-auto",
|
|
93
|
+
f
|
|
94
|
+
),
|
|
95
|
+
style: {
|
|
96
|
+
top: y.top,
|
|
97
|
+
left: y.left,
|
|
98
|
+
minWidth: b,
|
|
99
|
+
maxHeight: u
|
|
100
|
+
},
|
|
101
|
+
"data-testid": g,
|
|
102
|
+
...d,
|
|
103
|
+
children: c
|
|
104
|
+
}
|
|
105
|
+
) : null;
|
|
106
|
+
};
|
|
107
|
+
export {
|
|
108
|
+
j as Menu,
|
|
109
|
+
N as MenuDivider,
|
|
110
|
+
R as MenuItem
|
|
111
|
+
};
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { HTMLAttributes, ReactNode } from 'react';
|
|
2
|
+
export interface MenuItemProps extends HTMLAttributes<HTMLDivElement> {
|
|
3
|
+
/** Icon to show before the label */
|
|
4
|
+
icon?: ReactNode;
|
|
5
|
+
/** Whether the item is disabled */
|
|
6
|
+
disabled?: boolean;
|
|
7
|
+
/** Whether the item is selected/active */
|
|
8
|
+
selected?: boolean;
|
|
9
|
+
/** Whether the item shows a divider below */
|
|
10
|
+
divider?: boolean;
|
|
11
|
+
/** Label/content */
|
|
12
|
+
children?: ReactNode;
|
|
13
|
+
/** Click handler */
|
|
14
|
+
onClick?: () => void;
|
|
15
|
+
/** Test ID */
|
|
16
|
+
testId?: string;
|
|
17
|
+
}
|
|
18
|
+
export interface MenuProps extends HTMLAttributes<HTMLDivElement> {
|
|
19
|
+
/** Whether menu is open */
|
|
20
|
+
open?: boolean;
|
|
21
|
+
/** Anchor element for positioning */
|
|
22
|
+
anchorEl?: HTMLElement | null;
|
|
23
|
+
/** Callback when menu should close */
|
|
24
|
+
onClose?: () => void;
|
|
25
|
+
/** Menu items */
|
|
26
|
+
children?: ReactNode;
|
|
27
|
+
/** Position relative to anchor */
|
|
28
|
+
position?: 'bottom-start' | 'bottom-end' | 'top-start' | 'top-end';
|
|
29
|
+
/** Min width of the menu */
|
|
30
|
+
minWidth?: number;
|
|
31
|
+
/** Max height before scrolling */
|
|
32
|
+
maxHeight?: number;
|
|
33
|
+
/** Test ID */
|
|
34
|
+
testId?: string;
|
|
35
|
+
}
|
|
36
|
+
export interface MenuDividerProps {
|
|
37
|
+
/** Additional class name */
|
|
38
|
+
className?: string;
|
|
39
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),i=require("react"),y=require("react-dom"),f=require("../../utils/cn.cjs"),g=require("../Icon/icons/navigation.cjs"),v={sm:"bear-max-w-sm",md:"bear-max-w-md",lg:"bear-max-w-lg",xl:"bear-max-w-xl",full:"bear-max-w-full bear-mx-4"},h=({isOpen:b,onClose:r,title:a,children:n,size:o="md",showCloseButton:l=!0,closeOnBackdrop:c=!0,closeOnEscape:s=!0,className:m,footer:d})=>{const t=i.useCallback(x=>{s&&x.key==="Escape"&&r()},[s,r]);if(i.useEffect(()=>(b&&(document.addEventListener("keydown",t),document.body.style.overflow="hidden"),()=>{document.removeEventListener("keydown",t),document.body.style.overflow=""}),[b,t]),!b)return null;const u=e.jsxs("div",{className:"bear-fixed bear-inset-0 bear-z-50 bear-flex bear-items-center bear-justify-center",children:[e.jsx("div",{className:"bear-absolute bear-inset-0 bear-bg-black/60 bear-backdrop-blur-sm bear-transition-opacity",onClick:c?r:void 0,"aria-hidden":"true"}),e.jsxs("div",{role:"dialog","aria-modal":"true","aria-labelledby":a?"modal-title":void 0,className:f.cn("bear-relative bear-w-full bear-bg-gray-900 bear-rounded-xl bear-shadow-2xl","bear-border bear-border-gray-700","bear-transform bear-transition-all","bear-animate-in bear-fade-in bear-zoom-in-95",v[o],m),children:[(a||l)&&e.jsxs("div",{className:"bear-flex bear-items-center bear-justify-between bear-px-6 bear-py-4 bear-border-b bear-border-gray-700",children:[a&&e.jsx("h2",{id:"modal-title",className:"bear-text-lg bear-font-semibold bear-text-white",children:a}),l&&e.jsx("button",{onClick:r,className:"bear-p-1 bear-rounded-lg bear-text-gray-400 hover:bear-text-white hover:bear-bg-gray-700 bear-transition-colors","aria-label":"Close modal",children:e.jsx(g.CloseIcon,{className:"bear-w-5 bear-h-5"})})]}),e.jsx("div",{className:"bear-px-6 bear-py-4 bear-text-gray-300",children:n}),d&&e.jsx("div",{className:"bear-flex bear-items-center bear-justify-end bear-gap-3 bear-px-6 bear-py-4 bear-border-t bear-border-gray-700",children:d})]})]});return y.createPortal(u,document.body)};exports.Modal=h;
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { jsxs as l, jsx as e } from "react/jsx-runtime";
|
|
2
|
+
import { useCallback as f, useEffect as y } from "react";
|
|
3
|
+
import { createPortal as g } from "react-dom";
|
|
4
|
+
import { cn as v } from "../../utils/cn.js";
|
|
5
|
+
import { CloseIcon as h } from "../Icon/icons/navigation.js";
|
|
6
|
+
const p = {
|
|
7
|
+
sm: "bear-max-w-sm",
|
|
8
|
+
md: "bear-max-w-md",
|
|
9
|
+
lg: "bear-max-w-lg",
|
|
10
|
+
xl: "bear-max-w-xl",
|
|
11
|
+
full: "bear-max-w-full bear-mx-4"
|
|
12
|
+
}, z = ({
|
|
13
|
+
isOpen: b,
|
|
14
|
+
onClose: r,
|
|
15
|
+
title: a,
|
|
16
|
+
children: n,
|
|
17
|
+
size: m = "md",
|
|
18
|
+
showCloseButton: o = !0,
|
|
19
|
+
closeOnBackdrop: s = !0,
|
|
20
|
+
closeOnEscape: d = !0,
|
|
21
|
+
className: c,
|
|
22
|
+
footer: i
|
|
23
|
+
}) => {
|
|
24
|
+
const t = f(
|
|
25
|
+
(x) => {
|
|
26
|
+
d && x.key === "Escape" && r();
|
|
27
|
+
},
|
|
28
|
+
[d, r]
|
|
29
|
+
);
|
|
30
|
+
if (y(() => (b && (document.addEventListener("keydown", t), document.body.style.overflow = "hidden"), () => {
|
|
31
|
+
document.removeEventListener("keydown", t), document.body.style.overflow = "";
|
|
32
|
+
}), [b, t]), !b) return null;
|
|
33
|
+
const u = /* @__PURE__ */ l("div", { className: "bear-fixed bear-inset-0 bear-z-50 bear-flex bear-items-center bear-justify-center", children: [
|
|
34
|
+
/* @__PURE__ */ e(
|
|
35
|
+
"div",
|
|
36
|
+
{
|
|
37
|
+
className: "bear-absolute bear-inset-0 bear-bg-black/60 bear-backdrop-blur-sm bear-transition-opacity",
|
|
38
|
+
onClick: s ? r : void 0,
|
|
39
|
+
"aria-hidden": "true"
|
|
40
|
+
}
|
|
41
|
+
),
|
|
42
|
+
/* @__PURE__ */ l(
|
|
43
|
+
"div",
|
|
44
|
+
{
|
|
45
|
+
role: "dialog",
|
|
46
|
+
"aria-modal": "true",
|
|
47
|
+
"aria-labelledby": a ? "modal-title" : void 0,
|
|
48
|
+
className: v(
|
|
49
|
+
"bear-relative bear-w-full bear-bg-gray-900 bear-rounded-xl bear-shadow-2xl",
|
|
50
|
+
"bear-border bear-border-gray-700",
|
|
51
|
+
"bear-transform bear-transition-all",
|
|
52
|
+
"bear-animate-in bear-fade-in bear-zoom-in-95",
|
|
53
|
+
p[m],
|
|
54
|
+
c
|
|
55
|
+
),
|
|
56
|
+
children: [
|
|
57
|
+
(a || o) && /* @__PURE__ */ l("div", { className: "bear-flex bear-items-center bear-justify-between bear-px-6 bear-py-4 bear-border-b bear-border-gray-700", children: [
|
|
58
|
+
a && /* @__PURE__ */ e(
|
|
59
|
+
"h2",
|
|
60
|
+
{
|
|
61
|
+
id: "modal-title",
|
|
62
|
+
className: "bear-text-lg bear-font-semibold bear-text-white",
|
|
63
|
+
children: a
|
|
64
|
+
}
|
|
65
|
+
),
|
|
66
|
+
o && /* @__PURE__ */ e(
|
|
67
|
+
"button",
|
|
68
|
+
{
|
|
69
|
+
onClick: r,
|
|
70
|
+
className: "bear-p-1 bear-rounded-lg bear-text-gray-400 hover:bear-text-white hover:bear-bg-gray-700 bear-transition-colors",
|
|
71
|
+
"aria-label": "Close modal",
|
|
72
|
+
children: /* @__PURE__ */ e(h, { className: "bear-w-5 bear-h-5" })
|
|
73
|
+
}
|
|
74
|
+
)
|
|
75
|
+
] }),
|
|
76
|
+
/* @__PURE__ */ e("div", { className: "bear-px-6 bear-py-4 bear-text-gray-300", children: n }),
|
|
77
|
+
i && /* @__PURE__ */ e("div", { className: "bear-flex bear-items-center bear-justify-end bear-gap-3 bear-px-6 bear-py-4 bear-border-t bear-border-gray-700", children: i })
|
|
78
|
+
]
|
|
79
|
+
}
|
|
80
|
+
)
|
|
81
|
+
] });
|
|
82
|
+
return g(u, document.body);
|
|
83
|
+
};
|
|
84
|
+
export {
|
|
85
|
+
z as Modal
|
|
86
|
+
};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
export interface ModalProps {
|
|
3
|
+
/** Whether the modal is open */
|
|
4
|
+
isOpen: boolean;
|
|
5
|
+
/** Callback when modal should close */
|
|
6
|
+
onClose: () => void;
|
|
7
|
+
/** Modal title */
|
|
8
|
+
title?: string;
|
|
9
|
+
/** Modal content */
|
|
10
|
+
children: ReactNode;
|
|
11
|
+
/** Modal size */
|
|
12
|
+
size?: 'sm' | 'md' | 'lg' | 'xl' | 'full';
|
|
13
|
+
/** Whether to show close button */
|
|
14
|
+
showCloseButton?: boolean;
|
|
15
|
+
/** Whether clicking backdrop closes modal */
|
|
16
|
+
closeOnBackdrop?: boolean;
|
|
17
|
+
/** Whether pressing Escape closes modal */
|
|
18
|
+
closeOnEscape?: boolean;
|
|
19
|
+
/** Additional class names for content */
|
|
20
|
+
className?: string;
|
|
21
|
+
/** Footer content */
|
|
22
|
+
footer?: ReactNode;
|
|
23
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("react/jsx-runtime"),l=require("react"),i=require("../../utils/cn.cjs"),z=({options:p,value:w,defaultValue:R=[],onChange:s,placeholder:S="Select options...",label:k,helperText:v,error:u,disabled:b=!1,maxSelections:d,searchable:E=!0,className:O,testId:M})=>{const[f,o]=l.useState(!1),[m,g]=l.useState(""),[V,j]=l.useState(R),x=l.useRef(null),h=l.useRef(null),y=w!==void 0,a=y?w:V;l.useEffect(()=>{const e=r=>{x.current&&!x.current.contains(r.target)&&(o(!1),g(""))};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[]);const c=p.filter(e=>e.label.toLowerCase().includes(m.toLowerCase())&&!a.includes(e.value)),N=e=>{var n;if(b||d&&a.length>=d)return;const r=[...a,e];y||j(r),s==null||s(r),g(""),(n=h.current)==null||n.focus()},L=e=>{if(b)return;const r=a.filter(n=>n!==e);y||j(r),s==null||s(r)},q=e=>{e.key==="Backspace"&&m===""&&a.length>0&&L(a[a.length-1]),e.key==="Escape"&&(o(!1),g("")),e.key==="Enter"&&c.length>0&&(e.preventDefault(),N(c[0].value))},D=a.map(e=>{var r;return((r=p.find(n=>n.value===e))==null?void 0:r.label)||e});return t.jsxs("div",{className:i.cn("bear-w-full",O),ref:x,"data-testid":M,children:[k&&t.jsx("label",{className:"bear-block bear-text-sm bear-font-medium bear-text-gray-700 dark:bear-text-gray-200 bear-mb-1.5",children:k}),t.jsxs("div",{className:i.cn("bear-relative bear-flex bear-flex-wrap bear-items-center bear-gap-1.5 bear-min-h-[42px] bear-px-3 bear-py-2","bear-rounded-lg bear-border bear-bg-white dark:bear-bg-gray-900","bear-transition-colors bear-cursor-text",u?"bear-border-red-500 focus-within:bear-ring-2 focus-within:bear-ring-red-500/20":"bear-border-gray-300 dark:bear-border-gray-600 focus-within:bear-border-amber-500 focus-within:bear-ring-2 focus-within:bear-ring-amber-500/20",b&&"bear-opacity-50 bear-cursor-not-allowed bear-bg-gray-100 dark:bear-bg-gray-800"),onClick:()=>{var e;b||(o(!0),(e=h.current)==null||e.focus())},children:[D.map((e,r)=>t.jsxs("span",{className:"bear-inline-flex bear-items-center bear-gap-1 bear-px-2 bear-py-0.5 bear-text-sm bear-rounded-md bear-bg-amber-100 dark:bear-bg-amber-900/30 bear-text-amber-800 dark:bear-text-amber-200",children:[e,!b&&t.jsx("button",{type:"button",onClick:n=>{n.stopPropagation(),L(a[r])},className:"bear-ml-0.5 bear-text-amber-600 hover:bear-text-amber-800 dark:bear-text-amber-400 dark:hover:bear-text-amber-200",children:"×"})]},a[r])),E&&!b&&t.jsx("input",{ref:h,type:"text",value:m,onChange:e=>{g(e.target.value),o(!0)},onFocus:()=>o(!0),onKeyDown:q,placeholder:a.length===0?S:"",disabled:b||d!==void 0&&a.length>=d,className:"bear-flex-1 bear-min-w-[80px] bear-bg-transparent bear-outline-none bear-text-sm bear-text-gray-900 dark:bear-text-white placeholder:bear-text-gray-400"}),t.jsx("svg",{className:i.cn("bear-w-4 bear-h-4 bear-text-gray-400 bear-transition-transform bear-ml-auto",f&&"bear-rotate-180"),fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:t.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"})})]}),f&&!b&&c.length>0&&t.jsx("div",{className:"bear-absolute bear-z-50 bear-w-full bear-mt-1 bear-py-1 bear-bg-white dark:bear-bg-gray-800 bear-border bear-border-gray-200 dark:bear-border-gray-700 bear-rounded-lg bear-shadow-lg bear-max-h-60 bear-overflow-auto",children:c.map(e=>t.jsx("button",{type:"button",disabled:e.disabled,onClick:()=>N(e.value),className:i.cn("bear-w-full bear-px-3 bear-py-2 bear-text-left bear-text-sm","hover:bear-bg-amber-50 dark:hover:bear-bg-amber-900/20","bear-text-gray-900 dark:bear-text-white",e.disabled&&"bear-opacity-50 bear-cursor-not-allowed"),children:e.label},e.value))}),f&&!b&&c.length===0&&m&&t.jsx("div",{className:"bear-absolute bear-z-50 bear-w-full bear-mt-1 bear-py-3 bear-px-4 bear-bg-white dark:bear-bg-gray-800 bear-border bear-border-gray-200 dark:bear-border-gray-700 bear-rounded-lg bear-shadow-lg bear-text-sm bear-text-gray-500",children:"No options found"}),(v||u)&&t.jsx("p",{className:i.cn("bear-mt-1.5 bear-text-xs",u?"bear-text-red-500":"bear-text-gray-500 dark:bear-text-gray-400"),children:u||v})]})};exports.MultiSelect=z;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { FC } from 'react';
|
|
2
|
+
import { MultiSelectProps } from './MultiSelect.types';
|
|
3
|
+
/**
|
|
4
|
+
* MultiSelect - Select multiple options with tags
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* ```tsx
|
|
8
|
+
* <MultiSelect
|
|
9
|
+
* label="Skills"
|
|
10
|
+
* options={[
|
|
11
|
+
* { value: 'react', label: 'React' },
|
|
12
|
+
* { value: 'vue', label: 'Vue' },
|
|
13
|
+
* { value: 'angular', label: 'Angular' },
|
|
14
|
+
* ]}
|
|
15
|
+
* value={selected}
|
|
16
|
+
* onChange={setSelected}
|
|
17
|
+
* />
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
export declare const MultiSelect: FC<MultiSelectProps>;
|