@majapisoftwares/ui 4.3.16 → 5.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/AGENTS.md +17 -0
- package/README.md +71 -0
- package/THIRD_PARTY_NOTICES.md +15 -0
- package/components.json +25 -0
- package/docs/MIGRATION-0.2.md +20 -0
- package/docs/NEXT-STARTER-VALIDATION.md +14 -0
- package/docs/STANDARDS.md +36 -0
- package/docs/VALIDATION.md +11 -0
- package/package.json +69 -2
- package/scripts/check-standards.mjs +39 -0
- package/src/components/ui/alert.tsx +77 -0
- package/src/components/ui/badge.tsx +55 -0
- package/src/components/ui/button.tsx +63 -0
- package/src/components/ui/empty.tsx +105 -0
- package/src/components/ui/field.tsx +238 -0
- package/src/components/ui/input.tsx +21 -0
- package/src/components/ui/label.tsx +19 -0
- package/src/components/ui/native-select.tsx +66 -0
- package/src/components/ui/separator.tsx +24 -0
- package/src/components/ui/sheet.tsx +137 -0
- package/src/components/ui/skeleton.tsx +15 -0
- package/src/components/ui/table.tsx +115 -0
- package/src/components/ui/tabs.tsx +81 -0
- package/src/lib/utils.ts +1 -0
- package/src/patterns/app-shell.tsx +70 -0
- package/src/patterns/data-table.tsx +225 -0
- package/src/patterns/details-sheet.tsx +51 -0
- package/src/patterns/page-header.tsx +40 -0
- package/src/patterns/status-badge.tsx +23 -0
- package/src/styles.css +465 -0
- package/src/templates/admin-dashboard.tsx +63 -0
- package/src/templates/auth-layout.tsx +36 -0
- package/src/templates/login-form.tsx +97 -0
- package/src/templates/signup-form.tsx +137 -0
- package/src/vite-env.d.ts +1 -0
- package/base.css +0 -360
- package/bootstrap/AppProps.d.ts +0 -9
- package/bootstrap/AppProps.js +0 -1
- package/bootstrap/index.d.ts +0 -1
- package/bootstrap/index.js +0 -1
- package/bootstrap/modeScript.d.ts +0 -2
- package/bootstrap/modeScript.js +0 -35
- package/bootstrap/nprogress.d.ts +0 -1
- package/bootstrap/nprogress.js +0 -19
- package/bootstrap/scrolledScript.d.ts +0 -2
- package/bootstrap/scrolledScript.js +0 -27
- package/bootstrap/setupFocusManager.d.ts +0 -1
- package/bootstrap/setupFocusManager.js +0 -13
- package/bootstrap/suppressConsoleLog.d.ts +0 -1
- package/bootstrap/suppressConsoleLog.js +0 -8
- package/components/Accordion/Accordion.d.ts +0 -16
- package/components/Accordion/Accordion.jsx +0 -27
- package/components/Accordion/index.d.ts +0 -3
- package/components/Accordion/index.jsx +0 -3
- package/components/Alert/Alert.d.ts +0 -31
- package/components/Alert/Alert.jsx +0 -53
- package/components/Alert/index.d.ts +0 -3
- package/components/Alert/index.jsx +0 -3
- package/components/AntiClickjacking/AntiClickjacking.d.ts +0 -1
- package/components/AntiClickjacking/AntiClickjacking.jsx +0 -17
- package/components/AntiClickjacking/index.d.ts +0 -2
- package/components/AntiClickjacking/index.jsx +0 -2
- package/components/Aurora/Aurora.d.ts +0 -10
- package/components/Aurora/Aurora.jsx +0 -189
- package/components/Aurora/index.d.ts +0 -3
- package/components/Aurora/index.jsx +0 -3
- package/components/Autocomplete/Autocomplete.d.ts +0 -7
- package/components/Autocomplete/Autocomplete.jsx +0 -23
- package/components/Autocomplete/UnstyledAutocomplete.d.ts +0 -36
- package/components/Autocomplete/UnstyledAutocomplete.jsx +0 -72
- package/components/Autocomplete/index.d.ts +0 -5
- package/components/Autocomplete/index.jsx +0 -5
- package/components/BackgroundEffects/BottomBlurryPoint.d.ts +0 -3
- package/components/BackgroundEffects/BottomBlurryPoint.jsx +0 -14
- package/components/BackgroundEffects/TopBlurryPoint.d.ts +0 -3
- package/components/BackgroundEffects/TopBlurryPoint.jsx +0 -14
- package/components/Badge/Badge.d.ts +0 -42
- package/components/Badge/Badge.jsx +0 -51
- package/components/Badge/index.d.ts +0 -3
- package/components/Badge/index.jsx +0 -3
- package/components/Breadcrumbs/Breadcrumbs.d.ts +0 -20
- package/components/Breadcrumbs/Breadcrumbs.jsx +0 -42
- package/components/Breadcrumbs/index.d.ts +0 -3
- package/components/Breadcrumbs/index.jsx +0 -3
- package/components/Button/Button.d.ts +0 -111
- package/components/Button/Button.jsx +0 -129
- package/components/Button/UnstyledButton.d.ts +0 -10
- package/components/Button/UnstyledButton.jsx +0 -13
- package/components/Button/index.d.ts +0 -3
- package/components/Button/index.jsx +0 -3
- package/components/Carousel/Carousel.d.ts +0 -19
- package/components/Carousel/Carousel.jsx +0 -55
- package/components/Carousel/index.d.ts +0 -3
- package/components/Carousel/index.jsx +0 -3
- package/components/Checkbox/Checkbox.d.ts +0 -14
- package/components/Checkbox/Checkbox.jsx +0 -45
- package/components/Checkbox/index.d.ts +0 -3
- package/components/Checkbox/index.js +0 -3
- package/components/Code/Code.d.ts +0 -12
- package/components/Code/Code.jsx +0 -25
- package/components/Code/Json.d.ts +0 -5
- package/components/Code/Json.jsx +0 -7
- package/components/Code/index.d.ts +0 -4
- package/components/Code/index.jsx +0 -4
- package/components/ConfirmationButton/ConfirmationButton.d.ts +0 -17
- package/components/ConfirmationButton/ConfirmationButton.jsx +0 -13
- package/components/ConfirmationButton/index.d.ts +0 -3
- package/components/ConfirmationButton/index.jsx +0 -3
- package/components/ContextMenu/ContextMenu.d.ts +0 -28
- package/components/ContextMenu/ContextMenu.jsx +0 -70
- package/components/ContextMenu/index.d.ts +0 -3
- package/components/ContextMenu/index.jsx +0 -3
- package/components/CopyButton/CopyButton.d.ts +0 -7
- package/components/CopyButton/CopyButton.jsx +0 -29
- package/components/CopyButton/index.d.ts +0 -3
- package/components/CopyButton/index.jsx +0 -3
- package/components/DateInput/DateInput.d.ts +0 -6
- package/components/DateInput/DateInput.jsx +0 -19
- package/components/DateInput/DateTimeInput.d.ts +0 -3
- package/components/DateInput/DateTimeInput.jsx +0 -8
- package/components/DateInput/index.d.ts +0 -4
- package/components/DateInput/index.jsx +0 -4
- package/components/DateInput/useRefValue.d.ts +0 -5
- package/components/DateInput/useRefValue.js +0 -48
- package/components/DatePicker/DatePicker.d.ts +0 -19
- package/components/DatePicker/DatePicker.jsx +0 -55
- package/components/DatePicker/index.d.ts +0 -3
- package/components/DatePicker/index.jsx +0 -3
- package/components/DateRangePicker/DateRangePicker.d.ts +0 -16
- package/components/DateRangePicker/DateRangePicker.jsx +0 -56
- package/components/DateRangePicker/index.d.ts +0 -3
- package/components/DateRangePicker/index.jsx +0 -3
- package/components/Dialog/Dialog.d.ts +0 -25
- package/components/Dialog/Dialog.jsx +0 -35
- package/components/Dialog/Dialogs.d.ts +0 -1
- package/components/Dialog/Dialogs.jsx +0 -21
- package/components/Dialog/dialogs.state.d.ts +0 -21
- package/components/Dialog/dialogs.state.js +0 -40
- package/components/Dialog/index.d.ts +0 -6
- package/components/Dialog/index.jsx +0 -7
- package/components/Drawer/Drawer.d.ts +0 -15
- package/components/Drawer/Drawer.jsx +0 -72
- package/components/Drawer/index.d.ts +0 -3
- package/components/Drawer/index.jsx +0 -3
- package/components/DropdownMenu/DropdownMenu.d.ts +0 -33
- package/components/DropdownMenu/DropdownMenu.jsx +0 -74
- package/components/DropdownMenu/index.d.ts +0 -3
- package/components/DropdownMenu/index.jsx +0 -3
- package/components/ErrorBoundary/ErrorBoundary.d.ts +0 -18
- package/components/ErrorBoundary/ErrorBoundary.jsx +0 -32
- package/components/ErrorBoundary/index.d.ts +0 -3
- package/components/ErrorBoundary/index.jsx +0 -3
- package/components/ErrorPage/Error404Page.d.ts +0 -1
- package/components/ErrorPage/Error404Page.jsx +0 -4
- package/components/ErrorPage/Error500Page.d.ts +0 -1
- package/components/ErrorPage/Error500Page.jsx +0 -4
- package/components/ErrorPage/ErrorPage.d.ts +0 -11
- package/components/ErrorPage/ErrorPage.jsx +0 -23
- package/components/FileInput/FileInput.d.ts +0 -53
- package/components/FileInput/FileInput.jsx +0 -141
- package/components/FileInput/PreviewFile.d.ts +0 -18
- package/components/FileInput/PreviewFile.jsx +0 -54
- package/components/FileInput/index.d.ts +0 -3
- package/components/FileInput/index.jsx +0 -3
- package/components/FileInput/isImage.d.ts +0 -1
- package/components/FileInput/isImage.js +0 -10
- package/components/FileInput/isVideo.d.ts +0 -1
- package/components/FileInput/isVideo.js +0 -10
- package/components/FileSelect/FileSelect.d.ts +0 -31
- package/components/FileSelect/FileSelect.jsx +0 -146
- package/components/FileSelect/index.d.ts +0 -3
- package/components/FileSelect/index.jsx +0 -3
- package/components/Footer/Footer.d.ts +0 -19
- package/components/Footer/Footer.jsx +0 -30
- package/components/Footer/index.d.ts +0 -3
- package/components/Footer/index.jsx +0 -3
- package/components/GridPattern/GridPattern.d.ts +0 -2
- package/components/GridPattern/GridPattern.jsx +0 -12
- package/components/GridPattern/index.d.ts +0 -3
- package/components/GridPattern/index.jsx +0 -3
- package/components/Group/Group.d.ts +0 -5
- package/components/Group/Group.jsx +0 -6
- package/components/Group/index.d.ts +0 -3
- package/components/Group/index.jsx +0 -3
- package/components/Header/Header.d.ts +0 -5
- package/components/Header/Header.jsx +0 -19
- package/components/Header/index.d.ts +0 -3
- package/components/Header/index.jsx +0 -3
- package/components/ImageInput/ImageInput.d.ts +0 -4
- package/components/ImageInput/ImageInput.jsx +0 -8
- package/components/ImageInput/index.d.ts +0 -3
- package/components/ImageInput/index.jsx +0 -3
- package/components/Input/Input.d.ts +0 -14
- package/components/Input/Input.jsx +0 -57
- package/components/Input/InputIcon.d.ts +0 -9
- package/components/Input/InputIcon.jsx +0 -7
- package/components/Input/MultiSelectInput.d.ts +0 -16
- package/components/Input/MultiSelectInput.jsx +0 -48
- package/components/Input/NumericInput.d.ts +0 -6
- package/components/Input/NumericInput.jsx +0 -6
- package/components/Input/PatternInput.d.ts +0 -6
- package/components/Input/PatternInput.jsx +0 -6
- package/components/Input/SelectInput.d.ts +0 -12
- package/components/Input/SelectInput.jsx +0 -25
- package/components/Input/UnstyledInput.d.ts +0 -22
- package/components/Input/UnstyledInput.jsx +0 -28
- package/components/Input/index.d.ts +0 -6
- package/components/Input/index.jsx +0 -6
- package/components/Input/useInputRefValue.d.ts +0 -11
- package/components/Input/useInputRefValue.jsx +0 -51
- package/components/Input2/InputWrapper.d.ts +0 -11
- package/components/Input2/InputWrapper.jsx +0 -11
- package/components/Link/Link.d.ts +0 -3
- package/components/Link/Link.jsx +0 -9
- package/components/Link/index.d.ts +0 -3
- package/components/Link/index.jsx +0 -3
- package/components/Loading/Loading.d.ts +0 -5
- package/components/Loading/Loading.jsx +0 -15
- package/components/Loading/index.d.ts +0 -3
- package/components/Loading/index.jsx +0 -3
- package/components/Magnet/Magnet.d.ts +0 -13
- package/components/Magnet/Magnet.jsx +0 -50
- package/components/Magnet/index.d.ts +0 -3
- package/components/Magnet/index.jsx +0 -3
- package/components/Markdown/Markdown.d.ts +0 -8
- package/components/Markdown/Markdown.jsx +0 -11
- package/components/Markdown/index.d.ts +0 -3
- package/components/Markdown/index.jsx +0 -3
- package/components/Menu/Menu.d.ts +0 -28
- package/components/Menu/Menu.jsx +0 -54
- package/components/Modal/Modal.d.ts +0 -45
- package/components/Modal/Modal.jsx +0 -65
- package/components/Modal/index.d.ts +0 -4
- package/components/Modal/index.jsx +0 -4
- package/components/Modal/useModalState.d.ts +0 -6
- package/components/Modal/useModalState.js +0 -16
- package/components/ModeToggle/ModeToggle.d.ts +0 -9
- package/components/ModeToggle/ModeToggle.jsx +0 -12
- package/components/ModeToggle/index.d.ts +0 -4
- package/components/ModeToggle/index.jsx +0 -5
- package/components/ModeToggle/useModeToggle.d.ts +0 -1
- package/components/ModeToggle/useModeToggle.js +0 -21
- package/components/MultiSelect/MultiSelect.d.ts +0 -28
- package/components/MultiSelect/MultiSelect.jsx +0 -116
- package/components/MultiSelect/MultiSelectInput.d.ts +0 -12
- package/components/MultiSelect/MultiSelectInput.jsx +0 -27
- package/components/MultiSelect/index.d.ts +0 -5
- package/components/MultiSelect/index.jsx +0 -5
- package/components/MultiText/MultiText.d.ts +0 -23
- package/components/MultiText/MultiText.jsx +0 -118
- package/components/MultiText/index.d.ts +0 -3
- package/components/MultiText/index.jsx +0 -3
- package/components/NavigationDrawer/NavigationDrawer.d.ts +0 -9
- package/components/NavigationDrawer/NavigationDrawer.jsx +0 -29
- package/components/NavigationDrawer/NavigationItem.d.ts +0 -13
- package/components/NavigationDrawer/NavigationItem.jsx +0 -24
- package/components/NavigationDrawer/index.d.ts +0 -6
- package/components/NavigationDrawer/index.jsx +0 -6
- package/components/NavigationDrawer/navigationDrawer.state.d.ts +0 -9
- package/components/NavigationDrawer/navigationDrawer.state.js +0 -19
- package/components/NoSsr/NoSsr.d.ts +0 -4
- package/components/NoSsr/NoSsr.jsx +0 -8
- package/components/NoSsr/index.d.ts +0 -3
- package/components/NoSsr/index.jsx +0 -3
- package/components/Noise/Noise.d.ts +0 -11
- package/components/Noise/Noise.jsx +0 -69
- package/components/Noise/index.d.ts +0 -3
- package/components/Noise/index.jsx +0 -3
- package/components/Notifications/Notifications.d.ts +0 -3
- package/components/Notifications/Notifications.jsx +0 -60
- package/components/Notifications/index.d.ts +0 -5
- package/components/Notifications/index.jsx +0 -6
- package/components/Notifications/notifications.state.d.ts +0 -24
- package/components/Notifications/notifications.state.js +0 -41
- package/components/Orb/Orb.d.ts +0 -8
- package/components/Orb/Orb.jsx +0 -258
- package/components/Orb/index.d.ts +0 -3
- package/components/Orb/index.jsx +0 -3
- package/components/Pagination/Pagination.d.ts +0 -13
- package/components/Pagination/Pagination.jsx +0 -64
- package/components/Pagination/index.d.ts +0 -3
- package/components/Pagination/index.jsx +0 -3
- package/components/Particles/Particles.d.ts +0 -18
- package/components/Particles/Particles.jsx +0 -205
- package/components/Particles/index.d.ts +0 -3
- package/components/Particles/index.jsx +0 -3
- package/components/PictureCropInput/PictureCropInput.d.ts +0 -20
- package/components/PictureCropInput/PictureCropInput.jsx +0 -174
- package/components/PictureCropInput/canvasPreview.d.ts +0 -2
- package/components/PictureCropInput/canvasPreview.js +0 -37
- package/components/PictureCropInput/index.d.ts +0 -3
- package/components/PictureCropInput/index.js +0 -3
- package/components/Popover/Popover.d.ts +0 -13
- package/components/Popover/Popover.jsx +0 -22
- package/components/Popover/index.d.ts +0 -3
- package/components/Popover/index.jsx +0 -3
- package/components/Resizable/Resizable.d.ts +0 -12
- package/components/Resizable/Resizable.jsx +0 -54
- package/components/Resizable/index.d.ts +0 -3
- package/components/Resizable/index.jsx +0 -3
- package/components/ScrollArea/ScrollArea.d.ts +0 -9
- package/components/ScrollArea/ScrollArea.jsx +0 -16
- package/components/ScrollArea/index.d.ts +0 -3
- package/components/ScrollArea/index.jsx +0 -3
- package/components/Select/Select.d.ts +0 -25
- package/components/Select/Select.jsx +0 -55
- package/components/Select/index.d.ts +0 -3
- package/components/Select/index.jsx +0 -3
- package/components/Skeleton/Skeleton.d.ts +0 -2
- package/components/Skeleton/Skeleton.jsx +0 -8
- package/components/Skeleton/index.d.ts +0 -3
- package/components/Skeleton/index.jsx +0 -3
- package/components/Slider/Slider.d.ts +0 -10
- package/components/Slider/Slider.jsx +0 -21
- package/components/Slider/index.d.ts +0 -3
- package/components/Slider/index.jsx +0 -3
- package/components/Spotlight/Spotlight.d.ts +0 -30
- package/components/Spotlight/Spotlight.jsx +0 -86
- package/components/Spotlight/index.d.ts +0 -3
- package/components/Spotlight/index.jsx +0 -3
- package/components/SpotlightCard/SpotlightCard.d.ts +0 -7
- package/components/SpotlightCard/SpotlightCard.jsx +0 -35
- package/components/SpotlightCard/index.d.ts +0 -3
- package/components/SpotlightCard/index.jsx +0 -3
- package/components/Stack/Stack.d.ts +0 -4
- package/components/Stack/Stack.jsx +0 -5
- package/components/Stack/index.d.ts +0 -3
- package/components/Stack/index.jsx +0 -3
- package/components/StarBorder/StarBorder.d.ts +0 -10
- package/components/StarBorder/StarBorder.jsx +0 -19
- package/components/StarBorder/index.d.ts +0 -3
- package/components/StarBorder/index.jsx +0 -3
- package/components/Switch/Switch.d.ts +0 -16
- package/components/Switch/Switch.jsx +0 -24
- package/components/Switch/index.d.ts +0 -3
- package/components/Switch/index.jsx +0 -3
- package/components/Table/DataTable.d.ts +0 -57
- package/components/Table/DataTable.jsx +0 -155
- package/components/Table/Table.d.ts +0 -27
- package/components/Table/Table.jsx +0 -31
- package/components/Table/TableActionButton.d.ts +0 -6
- package/components/Table/TableActionButton.jsx +0 -20
- package/components/Table/TableBody.d.ts +0 -6
- package/components/Table/TableBody.jsx +0 -10
- package/components/Table/TableCell.d.ts +0 -9
- package/components/Table/TableCell.jsx +0 -18
- package/components/Table/TableFooter.d.ts +0 -5
- package/components/Table/TableFooter.jsx +0 -5
- package/components/Table/TableFooterWithPagination.d.ts +0 -13
- package/components/Table/TableFooterWithPagination.jsx +0 -57
- package/components/Table/TableHead.d.ts +0 -5
- package/components/Table/TableHead.jsx +0 -9
- package/components/Table/TableHeadContext.d.ts +0 -4
- package/components/Table/TableHeadContext.jsx +0 -3
- package/components/Table/TableHeader.d.ts +0 -7
- package/components/Table/TableHeader.jsx +0 -15
- package/components/Table/TableRow.d.ts +0 -8
- package/components/Table/TableRow.jsx +0 -9
- package/components/Table/index.d.ts +0 -3
- package/components/Table/index.jsx +0 -3
- package/components/Tabs/Tabs.d.ts +0 -9
- package/components/Tabs/Tabs.jsx +0 -13
- package/components/Tabs/index.d.ts +0 -3
- package/components/Tabs/index.jsx +0 -3
- package/components/TabsSwitcher/Tab.d.ts +0 -15
- package/components/TabsSwitcher/Tab.jsx +0 -18
- package/components/TabsSwitcher/TabsSwitcher.d.ts +0 -22
- package/components/TabsSwitcher/TabsSwitcher.jsx +0 -31
- package/components/TabsSwitcher/index.d.ts +0 -4
- package/components/TabsSwitcher/index.jsx +0 -4
- package/components/Text/Text.d.ts +0 -24
- package/components/Text/Text.jsx +0 -29
- package/components/Text/index.d.ts +0 -3
- package/components/Text/index.jsx +0 -3
- package/components/Textarea/Textarea.d.ts +0 -5
- package/components/Textarea/Textarea.jsx +0 -6
- package/components/Textarea/index.d.ts +0 -3
- package/components/Textarea/index.js +0 -3
- package/components/Threads/Threads.d.ts +0 -9
- package/components/Threads/Threads.jsx +0 -203
- package/components/Threads/index.d.ts +0 -3
- package/components/Threads/index.jsx +0 -3
- package/components/Tooltip/Tooltip.d.ts +0 -11
- package/components/Tooltip/Tooltip.jsx +0 -21
- package/components/Tooltip/index.d.ts +0 -3
- package/components/Tooltip/index.jsx +0 -3
- package/components/VisibilityActivatedButton/VisibilityActivatedButton.d.ts +0 -7
- package/components/VisibilityActivatedButton/VisibilityActivatedButton.jsx +0 -18
- package/components/VisibilityActivatedButton/index.d.ts +0 -3
- package/components/VisibilityActivatedButton/index.jsx +0 -3
- package/form.d.ts +0 -82
- package/form.js +0 -113
- package/form2.d.ts +0 -15
- package/form2.jsx +0 -30
- package/hooks/useBeforeUnload.d.ts +0 -1
- package/hooks/useBeforeUnload.js +0 -17
- package/hooks/useDebounceEffect.d.ts +0 -2
- package/hooks/useDebounceEffect.js +0 -14
- package/hooks/useDebouncedValue.d.ts +0 -2
- package/hooks/useDebouncedValue.js +0 -14
- package/hooks/useLagRadar.d.ts +0 -1
- package/hooks/useLagRadar.jsx +0 -124
- package/hooks/useMediaQuery.d.ts +0 -1
- package/hooks/useMediaQuery.js +0 -37
- package/hooks/useMutationWindowCloseProtection.d.ts +0 -2
- package/hooks/useMutationWindowCloseProtection.js +0 -13
- package/hooks/useScroll.d.ts +0 -3
- package/hooks/useScroll.js +0 -47
- package/hooks/useTranslation.d.ts +0 -4
- package/hooks/useTranslation.js +0 -11
- package/hooks/useWhyDidYouUpdate.d.ts +0 -3
- package/hooks/useWhyDidYouUpdate.js +0 -44
- package/imgur.d.ts +0 -1
- package/imgur.js +0 -13
- package/styles/DayPicker.classNames.d.ts +0 -29
- package/styles/DayPicker.classNames.js +0 -30
- package/styles/DayPicker.classNames.ts +0 -81
- package/styles/Dropdown.classNames.d.ts +0 -6
- package/styles/Dropdown.classNames.js +0 -7
- package/styles/Dropdown.classNames.ts +0 -38
- package/styles/Input.css +0 -23
- package/styles/Modal.classNames.d.ts +0 -2
- package/styles/Modal.classNames.js +0 -3
- package/styles/Modal.classNames.ts +0 -15
- package/styles/MultiText.css +0 -40
- package/styles/Pagination.css +0 -19
- package/styles/Tabs.css +0 -23
- package/tsconfig.tsbuildinfo +0 -1
- package/types.d.ts +0 -6
- package/types.js +0 -1
- package/utils/UseState.d.ts +0 -2
- package/utils/UseState.js +0 -1
- package/utils/blobToText.d.ts +0 -1
- package/utils/blobToText.js +0 -13
- package/utils/capitalize.d.ts +0 -1
- package/utils/capitalize.js +0 -6
- package/utils/clsx.d.ts +0 -2
- package/utils/clsx.js +0 -5
- package/utils/copy2DToClipboard.d.ts +0 -1
- package/utils/copy2DToClipboard.js +0 -44
- package/utils/cpfCpnjUtils.d.ts +0 -3
- package/utils/cpfCpnjUtils.js +0 -43
- package/utils/createLocalStorageStateHydration.d.ts +0 -1
- package/utils/createLocalStorageStateHydration.js +0 -18
- package/utils/createStateHydration.d.ts +0 -3
- package/utils/createStateHydration.js +0 -49
- package/utils/csvBlobToJson.d.ts +0 -2
- package/utils/csvBlobToJson.js +0 -59
- package/utils/downloadArrayAsCSV.d.ts +0 -1
- package/utils/downloadArrayAsCSV.js +0 -34
- package/utils/emailRegExp.d.ts +0 -2
- package/utils/emailRegExp.js +0 -2
- package/utils/fakeArray.d.ts +0 -1
- package/utils/fakeArray.js +0 -3
- package/utils/filterBoolean.d.ts +0 -1
- package/utils/filterBoolean.js +0 -3
- package/utils/formatClock.d.ts +0 -1
- package/utils/formatClock.js +0 -21
- package/utils/getInitials.d.ts +0 -4
- package/utils/getInitials.js +0 -22
- package/utils/isBrowser.d.ts +0 -12
- package/utils/isBrowser.js +0 -26
- package/utils/ms.d.ts +0 -6
- package/utils/ms.js +0 -31
- package/utils/preventDefault.d.ts +0 -2
- package/utils/preventDefault.js +0 -3
- package/utils/recursiveChildrenMap.d.ts +0 -2
- package/utils/recursiveChildrenMap.js +0 -16
- package/utils/setSelectionRange.d.ts +0 -1
- package/utils/setSelectionRange.js +0 -55
- package/utils/smoothScrollToHref.d.ts +0 -2
- package/utils/smoothScrollToHref.js +0 -14
- package/utils/stopPropagation.d.ts +0 -2
- package/utils/stopPropagation.js +0 -3
- package/utils/stripHtml.d.ts +0 -1
- package/utils/stripHtml.js +0 -4
- package/utils/stripLineBreak.d.ts +0 -1
- package/utils/stripLineBreak.js +0 -4
- package/utils/stripMarkdown.d.ts +0 -1
- package/utils/stripMarkdown.js +0 -28
- package/utils/xlsxBlobToJson.d.ts +0 -2
- package/utils/xlsxBlobToJson.js +0 -62
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { type RefObject } from "react";
|
|
2
|
-
import { type PixelCrop } from "react-image-crop";
|
|
3
|
-
export type PictureCropInputRef = {
|
|
4
|
-
handleCrop: () => Promise<void>;
|
|
5
|
-
completedCrop: PixelCrop | undefined;
|
|
6
|
-
};
|
|
7
|
-
export default function PictureCropInput({ value, onChange, loading, className, previewSizeClassNames, previewContainerClassName, cropButtonClassName, aspect, minWidth, minHeight, ref, label, }: {
|
|
8
|
-
value?: string;
|
|
9
|
-
onChange: (value?: string) => void;
|
|
10
|
-
loading?: boolean;
|
|
11
|
-
className?: string;
|
|
12
|
-
previewSizeClassNames?: string;
|
|
13
|
-
previewContainerClassName?: string;
|
|
14
|
-
cropButtonClassName?: string;
|
|
15
|
-
aspect?: number;
|
|
16
|
-
minWidth?: number;
|
|
17
|
-
minHeight?: number;
|
|
18
|
-
ref?: RefObject<PictureCropInputRef | null>;
|
|
19
|
-
label?: string;
|
|
20
|
-
}): import("react").JSX.Element;
|
|
@@ -1,174 +0,0 @@
|
|
|
1
|
-
import { CheckIcon, TrashIcon } from "@heroicons/react/20/solid";
|
|
2
|
-
import { PhotoIcon } from "@heroicons/react/24/outline";
|
|
3
|
-
import clsx from "clsx";
|
|
4
|
-
import { useCallback, useEffect, useId, useRef, useState, } from "react";
|
|
5
|
-
import ReactCrop, {} from "react-image-crop";
|
|
6
|
-
import { useLatest } from "react-use";
|
|
7
|
-
import useDebounceEffect from "../../hooks/useDebounceEffect";
|
|
8
|
-
import Button from "../Button";
|
|
9
|
-
import { defaultLabelClassName } from "../Input";
|
|
10
|
-
import Skeleton from "../Skeleton";
|
|
11
|
-
import Tooltip from "../Tooltip";
|
|
12
|
-
import { canvasPreview } from "./canvasPreview";
|
|
13
|
-
export default function PictureCropInput({ value, onChange, loading, className, previewSizeClassNames = "size-52", previewContainerClassName, cropButtonClassName, aspect, minWidth, minHeight, ref, label, }) {
|
|
14
|
-
const id = useId();
|
|
15
|
-
const [src, setSrc] = useState();
|
|
16
|
-
const [crop, setCrop] = useState();
|
|
17
|
-
const cropRef = useLatest(crop);
|
|
18
|
-
const [completedCrop, setCompletedCrop] = useState();
|
|
19
|
-
const completedCropRef = useLatest(completedCrop);
|
|
20
|
-
const previewCanvasRef = useRef(null);
|
|
21
|
-
const imgRef = useRef(null);
|
|
22
|
-
const parentRef = useRef(null);
|
|
23
|
-
const autoCrop = useCallback(() => {
|
|
24
|
-
const smallestSide = Math.min(imgRef.current?.getBoundingClientRect().width || 0, imgRef.current?.getBoundingClientRect().height || 0);
|
|
25
|
-
setCrop({
|
|
26
|
-
unit: "px",
|
|
27
|
-
x: 0,
|
|
28
|
-
y: 0,
|
|
29
|
-
width: smallestSide,
|
|
30
|
-
height: smallestSide,
|
|
31
|
-
});
|
|
32
|
-
}, []);
|
|
33
|
-
const onFileSelect = useCallback(async (event) => {
|
|
34
|
-
const file = event.target.files?.[0];
|
|
35
|
-
if (file) {
|
|
36
|
-
setSrc(URL.createObjectURL(file));
|
|
37
|
-
setTimeout(() => {
|
|
38
|
-
autoCrop();
|
|
39
|
-
}, 100);
|
|
40
|
-
}
|
|
41
|
-
}, [autoCrop]);
|
|
42
|
-
useEffect(() => {
|
|
43
|
-
const resizeObserver = new ResizeObserver(() => {
|
|
44
|
-
if (cropRef.current) {
|
|
45
|
-
autoCrop();
|
|
46
|
-
}
|
|
47
|
-
});
|
|
48
|
-
const el = parentRef.current;
|
|
49
|
-
if (el) {
|
|
50
|
-
resizeObserver.observe(el);
|
|
51
|
-
}
|
|
52
|
-
return () => {
|
|
53
|
-
if (el) {
|
|
54
|
-
resizeObserver.unobserve(el);
|
|
55
|
-
}
|
|
56
|
-
};
|
|
57
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
58
|
-
}, []);
|
|
59
|
-
useDebounceEffect(async () => {
|
|
60
|
-
if (completedCrop?.width &&
|
|
61
|
-
completedCrop?.height &&
|
|
62
|
-
imgRef.current &&
|
|
63
|
-
previewCanvasRef.current) {
|
|
64
|
-
// We use canvasPreview as it's much faster than imgPreview.
|
|
65
|
-
await canvasPreview(imgRef.current, previewCanvasRef.current, completedCrop);
|
|
66
|
-
}
|
|
67
|
-
}, 100, [completedCrop]);
|
|
68
|
-
const cropToBlobUrl = useCallback(async () => {
|
|
69
|
-
const image = imgRef.current;
|
|
70
|
-
const previewCanvas = previewCanvasRef.current;
|
|
71
|
-
if (!image || !previewCanvas || !completedCrop) {
|
|
72
|
-
throw new Error("Crop canvas does not exist");
|
|
73
|
-
}
|
|
74
|
-
// This will size relative to the uploaded image
|
|
75
|
-
// size. If you want to size according to what they
|
|
76
|
-
// are looking at on screen, remove scaleX + scaleY
|
|
77
|
-
const scaleX = image.naturalWidth / image.width;
|
|
78
|
-
const scaleY = image.naturalHeight / image.height;
|
|
79
|
-
const offscreen = new OffscreenCanvas(completedCrop.width * scaleX, completedCrop.height * scaleY);
|
|
80
|
-
const ctx = offscreen.getContext("2d");
|
|
81
|
-
if (!ctx) {
|
|
82
|
-
throw new Error("No 2d context");
|
|
83
|
-
}
|
|
84
|
-
ctx.drawImage(previewCanvas, 0, 0, previewCanvas.width, previewCanvas.height, 0, 0, offscreen.width, offscreen.height);
|
|
85
|
-
// You might want { type: "image/jpeg", quality: <0 to 1> } to
|
|
86
|
-
// reduce image size
|
|
87
|
-
const blob = await offscreen.convertToBlob({
|
|
88
|
-
type: "image/png",
|
|
89
|
-
});
|
|
90
|
-
return URL.createObjectURL(blob);
|
|
91
|
-
}, [completedCrop]);
|
|
92
|
-
const handleClear = useCallback(() => {
|
|
93
|
-
setCrop(undefined);
|
|
94
|
-
setSrc(undefined);
|
|
95
|
-
setCompletedCrop(undefined);
|
|
96
|
-
onChange(undefined);
|
|
97
|
-
}, [onChange]);
|
|
98
|
-
const handleCrop = useCallback(async () => {
|
|
99
|
-
try {
|
|
100
|
-
onChange(await cropToBlobUrl());
|
|
101
|
-
}
|
|
102
|
-
catch (e) {
|
|
103
|
-
console.error(e);
|
|
104
|
-
}
|
|
105
|
-
setCrop(undefined);
|
|
106
|
-
setSrc(undefined);
|
|
107
|
-
setCompletedCrop(undefined);
|
|
108
|
-
}, [cropToBlobUrl, onChange]);
|
|
109
|
-
useEffect(() => {
|
|
110
|
-
if (ref) {
|
|
111
|
-
ref.current = {
|
|
112
|
-
handleCrop,
|
|
113
|
-
completedCrop,
|
|
114
|
-
};
|
|
115
|
-
}
|
|
116
|
-
}, [completedCrop, completedCropRef, handleCrop, ref]);
|
|
117
|
-
return (<div ref={parentRef} className={className}>
|
|
118
|
-
{label && (<label htmlFor={id} className={defaultLabelClassName}>
|
|
119
|
-
{label}
|
|
120
|
-
</label>)}
|
|
121
|
-
<div className="flex items-start gap-2">
|
|
122
|
-
{loading && <Skeleton className={previewSizeClassNames}/>}
|
|
123
|
-
{src && (<>
|
|
124
|
-
<ReactCrop crop={crop} onChange={(c) => setCrop(c)} onComplete={(c) => setCompletedCrop(c)} aspect={aspect} minWidth={minWidth} minHeight={minHeight} className="max-h-96 max-w-96" keepSelection>
|
|
125
|
-
{/* eslint-disable-next-line @next/next/no-img-element */}
|
|
126
|
-
<img alt="Picture" src={src}
|
|
127
|
-
// className="h-96 w-96 object-contain"
|
|
128
|
-
ref={imgRef}/>
|
|
129
|
-
</ReactCrop>
|
|
130
|
-
{completedCrop && (<div className={clsx("flex flex-col gap-2", previewContainerClassName)}>
|
|
131
|
-
<canvas ref={previewCanvasRef} className={previewSizeClassNames} style={{
|
|
132
|
-
objectFit: "cover",
|
|
133
|
-
}}/>
|
|
134
|
-
<div className="flex gap-2">
|
|
135
|
-
<Button onClick={handleCrop} className={clsx("w-full", cropButtonClassName)} leading={<CheckIcon />}>
|
|
136
|
-
Crop
|
|
137
|
-
</Button>
|
|
138
|
-
<Tooltip content="Clear">
|
|
139
|
-
<Button onClick={handleClear} variant="text" icon>
|
|
140
|
-
<TrashIcon />
|
|
141
|
-
</Button>
|
|
142
|
-
</Tooltip>
|
|
143
|
-
</div>
|
|
144
|
-
</div>)}
|
|
145
|
-
</>)}
|
|
146
|
-
{!src && (<>
|
|
147
|
-
{value && (<div className={clsx("flex shrink-0 rounded-sm", previewSizeClassNames)} style={{
|
|
148
|
-
background: value
|
|
149
|
-
? `center / cover url(${value})`
|
|
150
|
-
: undefined,
|
|
151
|
-
}}/>)}
|
|
152
|
-
<input type="file" id={id} className="hidden" onChange={onFileSelect} accept=".jpg,.jpeg,.png"/>
|
|
153
|
-
<Button variant="outlined" className="mb-auto flex items-center gap-3 p-2" onClick={() => document.getElementById(id)?.click()}>
|
|
154
|
-
<div className="flex h-12 w-12 items-center justify-center rounded-sm border border-zinc-800 p-3">
|
|
155
|
-
<PhotoIcon />
|
|
156
|
-
</div>
|
|
157
|
-
<div className="flex flex-col items-start gap-1.5">
|
|
158
|
-
<div className="text-gray-10 text-sm font-medium">
|
|
159
|
-
{value ? "Change" : "Select"} picture
|
|
160
|
-
</div>
|
|
161
|
-
<div className="text-xs text-zinc-500">
|
|
162
|
-
JPG, PNG - Max size 10MB
|
|
163
|
-
</div>
|
|
164
|
-
</div>
|
|
165
|
-
</Button>
|
|
166
|
-
{value && (<Tooltip content="Clear">
|
|
167
|
-
<Button onClick={handleClear} variant="text" icon className="mb-auto">
|
|
168
|
-
<TrashIcon />
|
|
169
|
-
</Button>
|
|
170
|
-
</Tooltip>)}
|
|
171
|
-
</>)}
|
|
172
|
-
</div>
|
|
173
|
-
</div>);
|
|
174
|
-
}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
const TO_RADIANS = Math.PI / 180;
|
|
2
|
-
export async function canvasPreview(image, canvas, crop, scale = 1, rotate = 0) {
|
|
3
|
-
const ctx = canvas.getContext("2d");
|
|
4
|
-
if (!ctx) {
|
|
5
|
-
throw new Error("No 2d context");
|
|
6
|
-
}
|
|
7
|
-
const scaleX = image.naturalWidth / image.width;
|
|
8
|
-
const scaleY = image.naturalHeight / image.height;
|
|
9
|
-
// devicePixelRatio slightly increases sharpness on retina devices
|
|
10
|
-
// at the expense of slightly slower render times and needing to
|
|
11
|
-
// size the image back down if you want to download/upload and be
|
|
12
|
-
// true to the images natural size.
|
|
13
|
-
const pixelRatio = window.devicePixelRatio;
|
|
14
|
-
// const pixelRatio = 1
|
|
15
|
-
canvas.width = Math.floor(crop.width * scaleX * pixelRatio);
|
|
16
|
-
canvas.height = Math.floor(crop.height * scaleY * pixelRatio);
|
|
17
|
-
ctx.scale(pixelRatio, pixelRatio);
|
|
18
|
-
ctx.imageSmoothingQuality = "high";
|
|
19
|
-
const cropX = crop.x * scaleX;
|
|
20
|
-
const cropY = crop.y * scaleY;
|
|
21
|
-
const rotateRads = rotate * TO_RADIANS;
|
|
22
|
-
const centerX = image.naturalWidth / 2;
|
|
23
|
-
const centerY = image.naturalHeight / 2;
|
|
24
|
-
ctx.save();
|
|
25
|
-
// 5) Move the crop origin to the canvas origin (0,0)
|
|
26
|
-
ctx.translate(-cropX, -cropY);
|
|
27
|
-
// 4) Move the origin to the center of the original position
|
|
28
|
-
ctx.translate(centerX, centerY);
|
|
29
|
-
// 3) Rotate around the origin
|
|
30
|
-
ctx.rotate(rotateRads);
|
|
31
|
-
// 2) Scale the image
|
|
32
|
-
ctx.scale(scale, scale);
|
|
33
|
-
// 1) Move the center of the image to the origin (0,0)
|
|
34
|
-
ctx.translate(-centerX, -centerY);
|
|
35
|
-
ctx.drawImage(image, 0, 0, image.naturalWidth, image.naturalHeight, 0, 0, image.naturalWidth, image.naturalHeight);
|
|
36
|
-
ctx.restore();
|
|
37
|
-
}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import * as RPopover from "@radix-ui/react-popover";
|
|
2
|
-
import React, { type ComponentProps } from "react";
|
|
3
|
-
declare function PopoverContent({ className, sideOffset, collisionPadding, children, noArrow, ...props }: ComponentProps<typeof RPopover.Content> & {
|
|
4
|
-
noArrow?: boolean;
|
|
5
|
-
}): React.JSX.Element;
|
|
6
|
-
declare function PopoverArrow({ className, ...props }: ComponentProps<typeof RPopover.Arrow>): React.JSX.Element;
|
|
7
|
-
declare const Popover: {
|
|
8
|
-
Content: typeof PopoverContent;
|
|
9
|
-
Root: React.FC<RPopover.PopoverProps>;
|
|
10
|
-
Trigger: React.ForwardRefExoticComponent<RPopover.PopoverTriggerProps & React.RefAttributes<HTMLButtonElement>>;
|
|
11
|
-
Arrow: typeof PopoverArrow;
|
|
12
|
-
};
|
|
13
|
-
export default Popover;
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import * as RPopover from "@radix-ui/react-popover";
|
|
2
|
-
import React, {} from "react";
|
|
3
|
-
import clsx from "../../utils/clsx";
|
|
4
|
-
import { modalArrowClassName, modalContentClassName, } from "../../styles/Modal.classNames";
|
|
5
|
-
function PopoverContent({ className, sideOffset = 4, collisionPadding = 8, children, noArrow, ...props }) {
|
|
6
|
-
return (<RPopover.Portal>
|
|
7
|
-
<RPopover.Content {...props} className={clsx(modalContentClassName, "ui-popover-content", className)} sideOffset={sideOffset} collisionPadding={collisionPadding}>
|
|
8
|
-
{children}
|
|
9
|
-
{!noArrow && <PopoverArrow />}
|
|
10
|
-
</RPopover.Content>
|
|
11
|
-
</RPopover.Portal>);
|
|
12
|
-
}
|
|
13
|
-
function PopoverArrow({ className, ...props }) {
|
|
14
|
-
return (<RPopover.Arrow {...props} className={clsx(modalArrowClassName, "ui-popover-arrow", className)}/>);
|
|
15
|
-
}
|
|
16
|
-
const Popover = {
|
|
17
|
-
Content: PopoverContent,
|
|
18
|
-
Root: RPopover.Root,
|
|
19
|
-
Trigger: RPopover.Trigger,
|
|
20
|
-
Arrow: PopoverArrow,
|
|
21
|
-
};
|
|
22
|
-
export default Popover;
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import React, { type CSSProperties, type ReactElement, type ReactNode } from "react";
|
|
2
|
-
export default function Resizable({ children, minWidth, maxWidth, width, onResize, }: {
|
|
3
|
-
children: ReactElement;
|
|
4
|
-
minWidth?: number;
|
|
5
|
-
maxWidth?: number;
|
|
6
|
-
width?: number;
|
|
7
|
-
onResize: (width?: number) => void;
|
|
8
|
-
}): React.ReactElement<{
|
|
9
|
-
className?: string;
|
|
10
|
-
children?: ReactNode;
|
|
11
|
-
style?: CSSProperties;
|
|
12
|
-
}, string | React.JSXElementConstructor<any>>;
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import React, { cloneElement, useEffect, useRef, useState, } from "react";
|
|
2
|
-
import { useLatest } from "react-use";
|
|
3
|
-
import clsx from "clsx";
|
|
4
|
-
export default function Resizable({ children, minWidth, maxWidth, width, onResize, }) {
|
|
5
|
-
const [internalWidth, setInternalWidth] = useState(width);
|
|
6
|
-
const [isResizing, setResizing] = useState(false);
|
|
7
|
-
const isResizingRef = useLatest(isResizing);
|
|
8
|
-
const initialMouseXPos = useRef(0);
|
|
9
|
-
const initialWidth = useRef(0);
|
|
10
|
-
useEffect(() => {
|
|
11
|
-
onResize(internalWidth);
|
|
12
|
-
}, [internalWidth, onResize]);
|
|
13
|
-
const onMouseDown = (e) => {
|
|
14
|
-
const parent = e.currentTarget?.parentNode;
|
|
15
|
-
const rect = parent.getBoundingClientRect();
|
|
16
|
-
initialWidth.current = rect.width;
|
|
17
|
-
initialMouseXPos.current = e.clientX;
|
|
18
|
-
setResizing(true);
|
|
19
|
-
};
|
|
20
|
-
useEffect(() => {
|
|
21
|
-
const onMouseMove = (e) => {
|
|
22
|
-
if (isResizingRef.current) {
|
|
23
|
-
let newWidth = initialWidth.current - (e.clientX - initialMouseXPos.current);
|
|
24
|
-
if (minWidth !== undefined && newWidth < minWidth) {
|
|
25
|
-
newWidth = minWidth;
|
|
26
|
-
}
|
|
27
|
-
if (maxWidth !== undefined && newWidth > maxWidth) {
|
|
28
|
-
newWidth = maxWidth;
|
|
29
|
-
}
|
|
30
|
-
setInternalWidth(newWidth);
|
|
31
|
-
}
|
|
32
|
-
};
|
|
33
|
-
const onMouseUp = () => {
|
|
34
|
-
setResizing(false);
|
|
35
|
-
};
|
|
36
|
-
window.addEventListener("mousemove", onMouseMove);
|
|
37
|
-
window.addEventListener("mouseup", onMouseUp);
|
|
38
|
-
return () => {
|
|
39
|
-
window.removeEventListener("mousemove", onMouseMove);
|
|
40
|
-
window.removeEventListener("mouseup", onMouseUp);
|
|
41
|
-
};
|
|
42
|
-
}, [isResizingRef, maxWidth, minWidth, onResize]);
|
|
43
|
-
const child = children;
|
|
44
|
-
return cloneElement(child, {
|
|
45
|
-
className: clsx("relative", child.props.className),
|
|
46
|
-
style: { width: internalWidth },
|
|
47
|
-
children: (<>
|
|
48
|
-
<div className={clsx("absolute top-0 bottom-0 left-0 z-10 w-1 cursor-e-resize transition-colors select-none hover:bg-zinc-700", {
|
|
49
|
-
"bg-zinc-700": isResizing,
|
|
50
|
-
})} onMouseDown={onMouseDown}/>
|
|
51
|
-
{child.props.children}
|
|
52
|
-
</>),
|
|
53
|
-
});
|
|
54
|
-
}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import type { ReactNode, Ref } from "react";
|
|
2
|
-
export default function ScrollArea({ className, children, viewportClassName, ref, viewportRef, type, }: {
|
|
3
|
-
children: ReactNode;
|
|
4
|
-
className?: string;
|
|
5
|
-
viewportClassName?: string;
|
|
6
|
-
ref?: Ref<HTMLDivElement>;
|
|
7
|
-
viewportRef?: Ref<HTMLDivElement>;
|
|
8
|
-
type?: "auto" | "always" | "scroll" | "hover";
|
|
9
|
-
}): import("react").JSX.Element;
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { ScrollArea as RScrollArea } from "radix-ui";
|
|
2
|
-
import clsx from "../../utils/clsx";
|
|
3
|
-
export default function ScrollArea({ className, children, viewportClassName, ref, viewportRef, type, }) {
|
|
4
|
-
return (<RScrollArea.Root className={clsx("overflow-hidden", className)} ref={ref} type={type}>
|
|
5
|
-
<RScrollArea.Viewport className={clsx("h-full w-full", viewportClassName)} ref={viewportRef}>
|
|
6
|
-
{children}
|
|
7
|
-
</RScrollArea.Viewport>
|
|
8
|
-
<RScrollArea.Scrollbar className="flex touch-none bg-zinc-700 p-0.5 transition-colors duration-[160ms] ease-out select-none hover:bg-zinc-600 data-[orientation=horizontal]:h-2.5 data-[orientation=horizontal]:flex-col data-[orientation=vertical]:w-2.5" orientation="vertical">
|
|
9
|
-
<RScrollArea.Thumb className="relative flex-1 rounded-[10px] bg-zinc-500 before:absolute before:top-1/2 before:left-1/2 before:size-full before:min-h-11 before:min-w-11 before:-translate-x-1/2 before:-translate-y-1/2 hover:bg-zinc-400"/>
|
|
10
|
-
</RScrollArea.Scrollbar>
|
|
11
|
-
<RScrollArea.Scrollbar className="flex touch-none bg-zinc-700 p-0.5 transition-colors duration-[160ms] ease-out select-none hover:bg-zinc-600 data-[orientation=horizontal]:h-2.5 data-[orientation=horizontal]:flex-col data-[orientation=vertical]:w-2.5" orientation="horizontal">
|
|
12
|
-
<RScrollArea.Thumb className="relative flex-1 rounded-[10px] bg-zinc-500 before:absolute before:top-1/2 before:left-1/2 before:size-full before:min-h-[44px] before:min-w-[44px] before:-translate-x-1/2 before:-translate-y-1/2"/>
|
|
13
|
-
</RScrollArea.Scrollbar>
|
|
14
|
-
<RScrollArea.Corner className="bg-zinc-600"/>
|
|
15
|
-
</RScrollArea.Root>);
|
|
16
|
-
}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import type { ComponentProps } from "react";
|
|
2
|
-
import * as RSelect from "@radix-ui/react-select";
|
|
3
|
-
import Button from "../Button";
|
|
4
|
-
declare function SelectContent({ className, children, ...props }: ComponentProps<typeof RSelect.Content>): import("react").JSX.Element;
|
|
5
|
-
declare function SelectSeparator({ className, ...props }: ComponentProps<typeof RSelect.Separator>): import("react").JSX.Element;
|
|
6
|
-
declare function SelectItem({ children, className, indicatorClassName, ...props }: ComponentProps<typeof RSelect.Item> & {
|
|
7
|
-
indicatorClassName?: string;
|
|
8
|
-
}): import("react").JSX.Element;
|
|
9
|
-
declare function SelectTrigger({ className, placeholder, children, readOnly, ref, buttonClassName, ...props }: ComponentProps<typeof RSelect.Trigger> & ComponentProps<typeof Button> & {
|
|
10
|
-
placeholder?: string;
|
|
11
|
-
buttonClassName?: string;
|
|
12
|
-
}): import("react").JSX.Element;
|
|
13
|
-
declare function SelectLabel({ className, ...props }: ComponentProps<typeof RSelect.Label>): import("react").JSX.Element;
|
|
14
|
-
declare const Select: {
|
|
15
|
-
Root: import("react").FC<RSelect.SelectProps>;
|
|
16
|
-
Item: typeof SelectItem;
|
|
17
|
-
Trigger: typeof SelectTrigger;
|
|
18
|
-
Content: typeof SelectContent;
|
|
19
|
-
Group: import("react").ForwardRefExoticComponent<RSelect.SelectGroupProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
20
|
-
Label: typeof SelectLabel;
|
|
21
|
-
Separator: typeof SelectSeparator;
|
|
22
|
-
Icon: import("react").ForwardRefExoticComponent<RSelect.SelectIconProps & import("react").RefAttributes<HTMLSpanElement>>;
|
|
23
|
-
Value: import("react").ForwardRefExoticComponent<RSelect.SelectValueProps & import("react").RefAttributes<HTMLSpanElement>>;
|
|
24
|
-
};
|
|
25
|
-
export default Select;
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import * as RSelect from "@radix-ui/react-select";
|
|
2
|
-
import { CheckIcon, ChevronDownIcon, ChevronUpIcon, } from "@heroicons/react/16/solid";
|
|
3
|
-
import Button from "../Button";
|
|
4
|
-
import clsx from "../../utils/clsx";
|
|
5
|
-
import { dropdownItemClassName, dropdownItemIndicatorClassName, dropdownLabelClassName, dropdownSeparatorClassName, } from "../../styles/Dropdown.classNames";
|
|
6
|
-
import { modalContentClassName } from "../../styles/Modal.classNames";
|
|
7
|
-
const selectScrollButtonClassName = clsx("ui-select-scroll-button", "flex h-6 cursor-default items-center justify-center", "bg-white", "dark:bg-zinc-900", "[&>svg]:w-4 [&>svg]:h-4");
|
|
8
|
-
function SelectContent({ className, children, ...props }) {
|
|
9
|
-
return (<RSelect.Portal>
|
|
10
|
-
<RSelect.Content {...props} className={clsx(modalContentClassName, "ui-select-content -ml-[6px]", className)}>
|
|
11
|
-
<RSelect.ScrollUpButton className={selectScrollButtonClassName}>
|
|
12
|
-
<ChevronUpIcon />
|
|
13
|
-
</RSelect.ScrollUpButton>
|
|
14
|
-
<RSelect.Viewport>{children}</RSelect.Viewport>
|
|
15
|
-
<RSelect.ScrollDownButton className={selectScrollButtonClassName}>
|
|
16
|
-
<ChevronDownIcon />
|
|
17
|
-
</RSelect.ScrollDownButton>
|
|
18
|
-
</RSelect.Content>
|
|
19
|
-
</RSelect.Portal>);
|
|
20
|
-
}
|
|
21
|
-
function SelectSeparator({ className, ...props }) {
|
|
22
|
-
return (<RSelect.Separator {...props} className={clsx(dropdownSeparatorClassName, "ui-select-separator", className)}/>);
|
|
23
|
-
}
|
|
24
|
-
function SelectItem({ children, className, indicatorClassName, ...props }) {
|
|
25
|
-
return (<RSelect.Item className={clsx(dropdownItemClassName, "ui-select-item", className)} {...props}>
|
|
26
|
-
<RSelect.ItemIndicator className={clsx(dropdownItemIndicatorClassName, "ui-select-item-indicator", indicatorClassName)}>
|
|
27
|
-
<CheckIcon />
|
|
28
|
-
</RSelect.ItemIndicator>
|
|
29
|
-
<RSelect.ItemText>{children}</RSelect.ItemText>
|
|
30
|
-
</RSelect.Item>);
|
|
31
|
-
}
|
|
32
|
-
function SelectTrigger({ className, placeholder, children, readOnly, ref, buttonClassName, ...props }) {
|
|
33
|
-
return (<RSelect.Trigger asChild {...props} className={clsx("data-[placeholder]:text-zinc-500", className)} ref={children ? ref : undefined}>
|
|
34
|
-
{children || (<Button trailing={!readOnly ? (<RSelect.Icon>
|
|
35
|
-
<ChevronDownIcon />
|
|
36
|
-
</RSelect.Icon>) : undefined} ref={ref} disabled={readOnly} className={clsx("rounded-md opacity-100", buttonClassName)}>
|
|
37
|
-
<RSelect.Value placeholder={placeholder}/>
|
|
38
|
-
</Button>)}
|
|
39
|
-
</RSelect.Trigger>);
|
|
40
|
-
}
|
|
41
|
-
function SelectLabel({ className, ...props }) {
|
|
42
|
-
return (<RSelect.Label className={clsx(dropdownLabelClassName, "ui-select-label", className)} {...props}/>);
|
|
43
|
-
}
|
|
44
|
-
const Select = {
|
|
45
|
-
Root: RSelect.Root,
|
|
46
|
-
Item: SelectItem,
|
|
47
|
-
Trigger: SelectTrigger,
|
|
48
|
-
Content: SelectContent,
|
|
49
|
-
Group: RSelect.Group,
|
|
50
|
-
Label: SelectLabel,
|
|
51
|
-
Separator: SelectSeparator,
|
|
52
|
-
Icon: RSelect.Icon,
|
|
53
|
-
Value: RSelect.Value,
|
|
54
|
-
};
|
|
55
|
-
export default Select;
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import clsx from "../../utils/clsx";
|
|
2
|
-
export default function Skeleton({ className, ...props }) {
|
|
3
|
-
return (<div className={clsx("animate-pulse overflow-hidden rounded-sm text-transparent", "bg-zinc-300 text-zinc-300 dark:bg-zinc-700 dark:text-zinc-700", className)} {...props}>
|
|
4
|
-
<div className={clsx("animate-skeleton-shiny h-full w-full", "bg-[linear-gradient(120deg,rgba(255,255,255,0)_0%,#e4e4e7,rgba(255,255,255,0)_100%)]", "dark:bg-[linear-gradient(120deg,rgba(255,255,255,0)_20%,#52525b,rgba(255,255,255,0)_80%)]")} style={{
|
|
5
|
-
backgroundSize: "400% 100%",
|
|
6
|
-
}}/>
|
|
7
|
-
</div>);
|
|
8
|
-
}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
export default function Slider({ step, max, min, className, value, onValueChange, thumbClassName, }: {
|
|
3
|
-
step?: number;
|
|
4
|
-
max?: number;
|
|
5
|
-
className?: string;
|
|
6
|
-
thumbClassName?: string;
|
|
7
|
-
min?: number;
|
|
8
|
-
value?: number[];
|
|
9
|
-
onValueChange?: (value: number[]) => void;
|
|
10
|
-
}): React.JSX.Element;
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import React, { useState } from "react";
|
|
2
|
-
import * as RSlider from "@radix-ui/react-slider";
|
|
3
|
-
import fakeArray from "../../utils/fakeArray";
|
|
4
|
-
import clsx from "../../utils/clsx";
|
|
5
|
-
import { useUpdateEffect } from "react-use";
|
|
6
|
-
export default function Slider({ step = 1, max = 100, min = 0, className, value, onValueChange, thumbClassName, }) {
|
|
7
|
-
const thumbs = value?.length || 1;
|
|
8
|
-
const [intervalValue, setInternalValue] = useState(fakeArray(thumbs).map((n) => 10 * n));
|
|
9
|
-
useUpdateEffect(() => {
|
|
10
|
-
setInternalValue(value || fakeArray(thumbs).map((n) => 10 * n));
|
|
11
|
-
}, [value]);
|
|
12
|
-
useUpdateEffect(() => {
|
|
13
|
-
onValueChange?.(intervalValue);
|
|
14
|
-
}, [intervalValue, onValueChange]);
|
|
15
|
-
return (<RSlider.Root className={clsx("relative flex h-5 touch-none select-none items-center", className)} value={intervalValue} max={max} onValueChange={setInternalValue} step={step} min={min}>
|
|
16
|
-
<RSlider.Track className="relative h-[3px] grow rounded-full bg-black/30">
|
|
17
|
-
<RSlider.Range className="absolute h-full rounded-full bg-primary-500"/>
|
|
18
|
-
</RSlider.Track>
|
|
19
|
-
{fakeArray(thumbs).map((n) => (<RSlider.Thumb key={n} className={clsx("block h-5 w-5 rounded-full bg-white shadow-md ring-primary-500 ring-offset-2 ring-offset-zinc-100 transition hover:bg-primary-500 focus:outline-hidden focus-visible:shadow-lg focus-visible:ring-2", thumbClassName)}/>))}
|
|
20
|
-
</RSlider.Root>);
|
|
21
|
-
}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
export default function Spotlight<T extends object>({ recentSearchesId, open, setOpen, setQuery, query, onClickItem, results, loading, getItemId, getItemLabel, getItemPicture, getItemHref, onSeeMoreClick, seeMoreHref, overlayClassName, dialogContentClassName, className, contentClassName, iconClassName, inputClassName, buttonClassName, noResultsClassName, recentSearchClassName, seeMoreLabel, noRecentSearchLabel, recentlySearchedLabel, noResultsLabel, onSubmit, }: {
|
|
2
|
-
recentSearchesId: string;
|
|
3
|
-
open: boolean;
|
|
4
|
-
setOpen: (open: boolean) => void;
|
|
5
|
-
setQuery: (search: string) => void;
|
|
6
|
-
query: string;
|
|
7
|
-
results?: T[];
|
|
8
|
-
loading: boolean;
|
|
9
|
-
getItemId?: (item: T) => string;
|
|
10
|
-
getItemLabel?: (item: T) => string;
|
|
11
|
-
getItemPicture?: (item: T) => string;
|
|
12
|
-
getItemHref?: (item: T) => string;
|
|
13
|
-
onClickItem?: (item: T) => void;
|
|
14
|
-
onSeeMoreClick?: () => void;
|
|
15
|
-
seeMoreHref?: string;
|
|
16
|
-
overlayClassName?: string;
|
|
17
|
-
dialogContentClassName?: string;
|
|
18
|
-
className?: string;
|
|
19
|
-
contentClassName?: string;
|
|
20
|
-
iconClassName?: string;
|
|
21
|
-
inputClassName?: string;
|
|
22
|
-
buttonClassName?: string;
|
|
23
|
-
noResultsClassName?: string;
|
|
24
|
-
recentSearchClassName?: string;
|
|
25
|
-
seeMoreLabel?: string;
|
|
26
|
-
noRecentSearchLabel?: string;
|
|
27
|
-
recentlySearchedLabel?: string;
|
|
28
|
-
noResultsLabel?: string;
|
|
29
|
-
onSubmit?: () => void;
|
|
30
|
-
}): import("react").JSX.Element;
|