@nlabs/gothamui 1.8.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/LICENSE +21 -0
- package/MIGRATION.md +36 -0
- package/README.md +768 -0
- package/docs/assets/gothamui-app-architecture.svg +159 -0
- package/docs/assets/gothamui-logo.png +0 -0
- package/docs/assets/gothamui-logo.svg +42 -0
- package/docs/render-performance.md +34 -0
- package/lib/actions/GothamActions.d.ts +42 -0
- package/lib/actions/GothamActions.js +67 -0
- package/lib/actions/MarkdownActions.d.ts +4 -0
- package/lib/actions/MarkdownActions.js +48 -0
- package/lib/app.d.ts +1 -0
- package/lib/app.js +198 -0
- package/lib/components/Alert/Alert.d.ts +8 -0
- package/lib/components/Alert/Alert.js +24 -0
- package/lib/components/Alert/Alert.stories.js +59 -0
- package/lib/components/AuthRoute/AuthRoute.d.ts +3 -0
- package/lib/components/AuthRoute/AuthRoute.js +21 -0
- package/lib/components/AuthRoute/AuthRoute.stories.js +45 -0
- package/lib/components/AutocompleteField/AutocompleteField.d.ts +24 -0
- package/lib/components/AutocompleteField/AutocompleteField.js +148 -0
- package/lib/components/AutocompleteField/AutocompleteField.stories.js +62 -0
- package/lib/components/Avatar/Avatar.d.ts +29 -0
- package/lib/components/Avatar/Avatar.js +154 -0
- package/lib/components/Avatar/Avatar.stories.js +105 -0
- package/lib/components/Badge/Badge.d.ts +9 -0
- package/lib/components/Badge/Badge.js +22 -0
- package/lib/components/Badge/Badge.stories.js +53 -0
- package/lib/components/Breadcrumbs/Breadcrumbs.d.ts +19 -0
- package/lib/components/Breadcrumbs/Breadcrumbs.js +74 -0
- package/lib/components/Breadcrumbs/Breadcrumbs.stories.js +95 -0
- package/lib/components/Button/Button.d.ts +25 -0
- package/lib/components/Button/Button.js +157 -0
- package/lib/components/Button/Button.stories.js +119 -0
- package/lib/components/Card/Card.d.ts +8 -0
- package/lib/components/Card/Card.js +39 -0
- package/lib/components/Card/Card.stories.js +60 -0
- package/lib/components/CategoryGrid/CategoryGrid.d.ts +15 -0
- package/lib/components/CategoryGrid/CategoryGrid.js +42 -0
- package/lib/components/CategoryGrid/CategoryGrid.stories.js +35 -0
- package/lib/components/Chat/AudioMessage/AudioMessage.css +1 -0
- package/lib/components/Chat/AudioMessage/AudioMessage.d.ts +3 -0
- package/lib/components/Chat/AudioMessage/AudioMessage.js +28 -0
- package/lib/components/Chat/Avatar/Avatar.css +1 -0
- package/lib/components/Chat/Avatar/Avatar.d.ts +3 -0
- package/lib/components/Chat/Avatar/Avatar.js +72 -0
- package/lib/components/Chat/Button/Button.css +1 -0
- package/lib/components/Chat/Button/Button.d.ts +3 -0
- package/lib/components/Chat/Button/Button.js +37 -0
- package/lib/components/Chat/Chat.stories.js +688 -0
- package/lib/components/Chat/ChatItem/ChatItem.css +1 -0
- package/lib/components/Chat/ChatItem/ChatItem.d.ts +3 -0
- package/lib/components/Chat/ChatItem/ChatItem.js +183 -0
- package/lib/components/Chat/ChatList/ChatList.css +1 -0
- package/lib/components/Chat/ChatList/ChatList.d.ts +3 -0
- package/lib/components/Chat/ChatList/ChatList.js +84 -0
- package/lib/components/Chat/Circle/Circle.d.ts +3 -0
- package/lib/components/Chat/Circle/Circle.js +27 -0
- package/lib/components/Chat/Dropdown/Dropdown.css +1 -0
- package/lib/components/Chat/Dropdown/Dropdown.d.ts +3 -0
- package/lib/components/Chat/Dropdown/Dropdown.js +66 -0
- package/lib/components/Chat/FileMessage/FileMessage.css +1 -0
- package/lib/components/Chat/FileMessage/FileMessage.d.ts +3 -0
- package/lib/components/Chat/FileMessage/FileMessage.js +77 -0
- package/lib/components/Chat/Input/Input.css +1 -0
- package/lib/components/Chat/Input/Input.d.ts +3 -0
- package/lib/components/Chat/Input/Input.js +108 -0
- package/lib/components/Chat/LocationMessage/LocationMessage.css +1 -0
- package/lib/components/Chat/LocationMessage/LocationMessage.d.ts +3 -0
- package/lib/components/Chat/LocationMessage/LocationMessage.js +36 -0
- package/lib/components/Chat/MeetingItem/MeetingItem.css +1 -0
- package/lib/components/Chat/MeetingItem/MeetingItem.d.ts +3 -0
- package/lib/components/Chat/MeetingItem/MeetingItem.js +106 -0
- package/lib/components/Chat/MeetingLink/MeetingLink.css +1 -0
- package/lib/components/Chat/MeetingLink/MeetingLink.d.ts +3 -0
- package/lib/components/Chat/MeetingLink/MeetingLink.js +26 -0
- package/lib/components/Chat/MeetingList/MeetingList.css +1 -0
- package/lib/components/Chat/MeetingList/MeetingList.d.ts +3 -0
- package/lib/components/Chat/MeetingList/MeetingList.js +52 -0
- package/lib/components/Chat/MeetingMessage/MeetingMessage.css +1 -0
- package/lib/components/Chat/MeetingMessage/MeetingMessage.d.ts +3 -0
- package/lib/components/Chat/MeetingMessage/MeetingMessage.js +227 -0
- package/lib/components/Chat/MessageBox/MessageBox.css +1 -0
- package/lib/components/Chat/MessageBox/MessageBox.d.ts +3 -0
- package/lib/components/Chat/MessageBox/MessageBox.js +263 -0
- package/lib/components/Chat/MessageList/MessageList.css +1 -0
- package/lib/components/Chat/MessageList/MessageList.d.ts +2 -0
- package/lib/components/Chat/MessageList/MessageList.js +196 -0
- package/lib/components/Chat/Navbar/Navbar.css +1 -0
- package/lib/components/Chat/Navbar/Navbar.d.ts +3 -0
- package/lib/components/Chat/Navbar/Navbar.js +21 -0
- package/lib/components/Chat/PhotoMessage/PhotoMessage.css +1 -0
- package/lib/components/Chat/PhotoMessage/PhotoMessage.d.ts +3 -0
- package/lib/components/Chat/PhotoMessage/PhotoMessage.js +73 -0
- package/lib/components/Chat/Popup/Popup.css +1 -0
- package/lib/components/Chat/Popup/Popup.d.ts +3 -0
- package/lib/components/Chat/Popup/Popup.js +45 -0
- package/lib/components/Chat/README.md +50 -0
- package/lib/components/Chat/ReplyMessage/ReplyMessage.css +1 -0
- package/lib/components/Chat/ReplyMessage/ReplyMessage.d.ts +3 -0
- package/lib/components/Chat/ReplyMessage/ReplyMessage.js +42 -0
- package/lib/components/Chat/SideBar/SideBar.css +1 -0
- package/lib/components/Chat/SideBar/SideBar.d.ts +3 -0
- package/lib/components/Chat/SideBar/SideBar.js +21 -0
- package/lib/components/Chat/SpotifyMessage/SpotifyMessage.css +1 -0
- package/lib/components/Chat/SpotifyMessage/SpotifyMessage.d.ts +3 -0
- package/lib/components/Chat/SpotifyMessage/SpotifyMessage.js +28 -0
- package/lib/components/Chat/SystemMessage/SystemMessage.css +1 -0
- package/lib/components/Chat/SystemMessage/SystemMessage.d.ts +3 -0
- package/lib/components/Chat/SystemMessage/SystemMessage.js +14 -0
- package/lib/components/Chat/VideoMessage/VideoMessage.css +1 -0
- package/lib/components/Chat/VideoMessage/VideoMessage.d.ts +3 -0
- package/lib/components/Chat/VideoMessage/VideoMessage.js +88 -0
- package/lib/components/Chat/assets/img/leftArrow.svg +6 -0
- package/lib/components/Chat/assets/img/rightArrow.svg +6 -0
- package/lib/components/Chat/index.d.ts +25 -0
- package/lib/components/Chat/index.js +27 -0
- package/lib/components/Chat/type.d.js +52 -0
- package/lib/components/Chat/utils/formatRelativeDate.d.ts +4 -0
- package/lib/components/Chat/utils/formatRelativeDate.js +110 -0
- package/lib/components/Checkbox/Checkbox.d.ts +15 -0
- package/lib/components/Checkbox/Checkbox.js +106 -0
- package/lib/components/Checkbox/Checkbox.stories.js +51 -0
- package/lib/components/ComponentUtils/renderWithAsChild.d.ts +9 -0
- package/lib/components/ComponentUtils/renderWithAsChild.js +27 -0
- package/lib/components/Container/Container.d.ts +7 -0
- package/lib/components/Container/Container.js +16 -0
- package/lib/components/Container/Container.stories.js +36 -0
- package/lib/components/DateField/DateField.d.ts +22 -0
- package/lib/components/DateField/DateField.js +145 -0
- package/lib/components/DateField/DateField.stories.js +125 -0
- package/lib/components/DateField/DatePicker.d.ts +9 -0
- package/lib/components/DateField/DatePicker.js +205 -0
- package/lib/components/DateField/DatePicker.stories.js +33 -0
- package/lib/components/DescriptionList/DescriptionList.d.ts +4 -0
- package/lib/components/DescriptionList/DescriptionList.js +19 -0
- package/lib/components/DescriptionList/DescriptionList.stories.js +34 -0
- package/lib/components/Dialog/Dialog.d.ts +25 -0
- package/lib/components/Dialog/Dialog.js +66 -0
- package/lib/components/Dialog/Dialog.stories.js +88 -0
- package/lib/components/DropUpload/DropUpload.d.ts +37 -0
- package/lib/components/DropUpload/DropUpload.js +323 -0
- package/lib/components/DropUpload/DropUpload.stories.js +48 -0
- package/lib/components/Empty/Empty.d.ts +11 -0
- package/lib/components/Empty/Empty.js +39 -0
- package/lib/components/Empty/Empty.stories.js +52 -0
- package/lib/components/EmptyState/EmptyState.d.ts +15 -0
- package/lib/components/EmptyState/EmptyState.js +44 -0
- package/lib/components/EmptyState/EmptyState.stories.js +36 -0
- package/lib/components/ErrorMessage/ErrorMessage.d.ts +7 -0
- package/lib/components/ErrorMessage/ErrorMessage.js +20 -0
- package/lib/components/ErrorMessage/ErrorMessage.stories.js +25 -0
- package/lib/components/FaqSection/FaqSection.d.ts +14 -0
- package/lib/components/FaqSection/FaqSection.js +37 -0
- package/lib/components/FaqSection/FaqSection.stories.js +31 -0
- package/lib/components/Fieldset/Fieldset.d.ts +21 -0
- package/lib/components/Fieldset/Fieldset.js +39 -0
- package/lib/components/Fieldset/Fieldset.stories.js +42 -0
- package/lib/components/Footer/Footer.d.ts +26 -0
- package/lib/components/Footer/Footer.js +119 -0
- package/lib/components/Footer/Footer.stories.js +184 -0
- package/lib/components/Form/Form.d.ts +42 -0
- package/lib/components/Form/Form.js +198 -0
- package/lib/components/Form/Form.stories.js +65 -0
- package/lib/components/Form/FormContext.d.ts +35 -0
- package/lib/components/Form/FormContext.js +71 -0
- package/lib/components/GothamRoute/GothamRoute.d.ts +0 -0
- package/lib/components/GothamRoute/GothamRoute.js +56 -0
- package/lib/components/GothamRouter/GothamRouter.d.ts +0 -0
- package/lib/components/GothamRouter/GothamRouter.js +52 -0
- package/lib/components/Heading/Heading.d.ts +7 -0
- package/lib/components/Heading/Heading.js +20 -0
- package/lib/components/Heading/Heading.stories.js +51 -0
- package/lib/components/IncentiveGrid/IncentiveGrid.d.ts +15 -0
- package/lib/components/IncentiveGrid/IncentiveGrid.js +34 -0
- package/lib/components/IncentiveGrid/IncentiveGrid.stories.js +41 -0
- package/lib/components/InputField/InputField.d.ts +25 -0
- package/lib/components/InputField/InputField.js +68 -0
- package/lib/components/InputField/InputField.stories.js +58 -0
- package/lib/components/Item/Item.d.ts +25 -0
- package/lib/components/Item/Item.js +79 -0
- package/lib/components/Item/Item.stories.js +94 -0
- package/lib/components/Kbd/Kbd.d.ts +2 -0
- package/lib/components/Kbd/Kbd.js +9 -0
- package/lib/components/Kbd/Kbd.stories.js +24 -0
- package/lib/components/Label/Label.d.ts +11 -0
- package/lib/components/Label/Label.js +23 -0
- package/lib/components/Label/Label.stories.js +38 -0
- package/lib/components/Link/Link.d.ts +7 -0
- package/lib/components/Link/Link.js +13 -0
- package/lib/components/Link/Link.stories.js +28 -0
- package/lib/components/ListContainer/ListContainer.d.ts +8 -0
- package/lib/components/ListContainer/ListContainer.js +14 -0
- package/lib/components/ListContainer/ListContainer.stories.js +45 -0
- package/lib/components/Loader/Loader.d.ts +9 -0
- package/lib/components/Loader/Loader.js +36 -0
- package/lib/components/Loader/Loader.stories.js +94 -0
- package/lib/components/LogoCloud/LogoCloud.d.ts +15 -0
- package/lib/components/LogoCloud/LogoCloud.js +43 -0
- package/lib/components/LogoCloud/LogoCloud.stories.js +28 -0
- package/lib/components/Markdown/Markdown.d.ts +8 -0
- package/lib/components/Markdown/Markdown.js +64 -0
- package/lib/components/Markdown/Markdown.stories.js +34 -0
- package/lib/components/MediaLightbox/MediaLightbox.d.ts +22 -0
- package/lib/components/MediaLightbox/MediaLightbox.js +80 -0
- package/lib/components/MediaObject/MediaObject.d.ts +8 -0
- package/lib/components/MediaObject/MediaObject.js +37 -0
- package/lib/components/MediaObject/MediaObject.stories.js +28 -0
- package/lib/components/Navbar/Navbar.d.ts +43 -0
- package/lib/components/Navbar/Navbar.js +213 -0
- package/lib/components/Navbar/Navbar.stories.js +235 -0
- package/lib/components/NotFound/NotFound.d.ts +34 -0
- package/lib/components/NotFound/NotFound.js +351 -0
- package/lib/components/NotFound/NotFound.stories.js +80 -0
- package/lib/components/Notify/Notify.d.ts +18 -0
- package/lib/components/Notify/Notify.js +178 -0
- package/lib/components/Notify/Notify.stories.js +148 -0
- package/lib/components/Notify/NotifyExample.d.ts +1 -0
- package/lib/components/Notify/NotifyExample.js +174 -0
- package/lib/components/Notify/README.md +103 -0
- package/lib/components/Pagination/Pagination.d.ts +18 -0
- package/lib/components/Pagination/Pagination.js +225 -0
- package/lib/components/Pagination/Pagination.stories.js +69 -0
- package/lib/components/PasswordStrengthMeter/PasswordStrengthMeter.d.ts +12 -0
- package/lib/components/PasswordStrengthMeter/PasswordStrengthMeter.js +88 -0
- package/lib/components/PasswordStrengthMeter/PasswordStrengthMeter.stories.js +16 -0
- package/lib/components/PaymentMethodPanel/PaymentMethodPanel.d.ts +18 -0
- package/lib/components/PaymentMethodPanel/PaymentMethodPanel.js +113 -0
- package/lib/components/PaymentMethodPanel/PaymentMethodPanel.stories.js +88 -0
- package/lib/components/Pricing/Pricing.d.ts +78 -0
- package/lib/components/Pricing/Pricing.js +764 -0
- package/lib/components/Pricing/Pricing.stories.js +146 -0
- package/lib/components/ProductGrid/ProductGrid.d.ts +23 -0
- package/lib/components/ProductGrid/ProductGrid.js +79 -0
- package/lib/components/ProductGrid/ProductGrid.stories.js +50 -0
- package/lib/components/ProgressSteps/ProgressSteps.d.ts +13 -0
- package/lib/components/ProgressSteps/ProgressSteps.js +51 -0
- package/lib/components/ProgressSteps/ProgressSteps.stories.js +35 -0
- package/lib/components/RadioField/RadioField.d.ts +16 -0
- package/lib/components/RadioField/RadioField.js +63 -0
- package/lib/components/RadioField/RadioField.stories.js +140 -0
- package/lib/components/ReviewList/ReviewList.d.ts +15 -0
- package/lib/components/ReviewList/ReviewList.js +51 -0
- package/lib/components/ReviewList/ReviewList.stories.js +29 -0
- package/lib/components/SectionHeader/SectionHeader.d.ts +9 -0
- package/lib/components/SectionHeader/SectionHeader.js +36 -0
- package/lib/components/SectionHeader/SectionHeader.stories.js +35 -0
- package/lib/components/SelectField/SelectField.d.ts +18 -0
- package/lib/components/SelectField/SelectField.js +145 -0
- package/lib/components/SelectField/SelectField.stories.js +155 -0
- package/lib/components/SelectField/SelectOption.d.ts +13 -0
- package/lib/components/SelectField/SelectOption.js +40 -0
- package/lib/components/SelectField/SelectOption.stories.js +40 -0
- package/lib/components/Separator/Separator.d.ts +6 -0
- package/lib/components/Separator/Separator.js +13 -0
- package/lib/components/Separator/Separator.stories.js +70 -0
- package/lib/components/Skeleton/Skeleton.d.ts +2 -0
- package/lib/components/Skeleton/Skeleton.js +9 -0
- package/lib/components/Skeleton/Skeleton.stories.js +24 -0
- package/lib/components/Svg/Svg.d.ts +9 -0
- package/lib/components/Svg/Svg.js +25 -0
- package/lib/components/Svg/Svg.stories.js +34 -0
- package/lib/components/Switch/Switch.d.ts +12 -0
- package/lib/components/Switch/Switch.js +54 -0
- package/lib/components/Switch/Switch.stories.js +61 -0
- package/lib/components/Table/Table.d.ts +18 -0
- package/lib/components/Table/Table.js +99 -0
- package/lib/components/Table/Table.stories.js +79 -0
- package/lib/components/Tabs/Tabs.d.ts +17 -0
- package/lib/components/Tabs/Tabs.js +85 -0
- package/lib/components/Tabs/Tabs.stories.js +45 -0
- package/lib/components/Text/Text.d.ts +5 -0
- package/lib/components/Text/Text.js +24 -0
- package/lib/components/Text/Text.stories.js +35 -0
- package/lib/components/TextField/TextField.d.ts +31 -0
- package/lib/components/TextField/TextField.js +91 -0
- package/lib/components/TextField/TextField.stories.js +158 -0
- package/lib/components/Textarea/Textarea.d.ts +5 -0
- package/lib/components/Textarea/Textarea.js +10 -0
- package/lib/components/Textarea/Textarea.stories.js +32 -0
- package/lib/components/index.d.ts +60 -0
- package/lib/components/index.js +62 -0
- package/lib/config/appConfig.d.ts +5 -0
- package/lib/config/appConfig.js +20 -0
- package/lib/constants/AuthConstants.d.ts +8 -0
- package/lib/constants/AuthConstants.js +9 -0
- package/lib/constants/GothamConstants.d.ts +24 -0
- package/lib/constants/GothamConstants.js +25 -0
- package/lib/constants/MarkdownConstants.d.ts +8 -0
- package/lib/constants/MarkdownConstants.js +9 -0
- package/lib/constants/MessageConstants.d.ts +10 -0
- package/lib/constants/MessageConstants.js +11 -0
- package/lib/docs/analytics.md +231 -0
- package/lib/docs/api-reference.md +364 -0
- package/lib/docs/comparison.md +83 -0
- package/lib/docs/containers.md +11 -0
- package/lib/docs/gettingStarted.md +338 -0
- package/lib/docs/payments.md +79 -0
- package/lib/editor/CodeEditor.d.ts +11 -0
- package/lib/editor/CodeEditor.js +15 -0
- package/lib/editor/CodeEditor.stories.js +24 -0
- package/lib/editor/index.d.ts +1 -0
- package/lib/editor/index.js +3 -0
- package/lib/errors/UserError.d.ts +8 -0
- package/lib/errors/UserError.js +12 -0
- package/lib/examples/OptimizedFormExample.d.ts +1 -0
- package/lib/examples/OptimizedFormExample.js +130 -0
- package/lib/form/index.d.ts +11 -0
- package/lib/form/index.js +13 -0
- package/lib/hooks/useIsMobile.d.ts +1 -0
- package/lib/hooks/useIsMobile.js +12 -0
- package/lib/i18n/index.d.ts +8 -0
- package/lib/i18n/index.js +7 -0
- package/lib/icons/Dual Ring-1s-100px.svg +1 -0
- package/lib/icons/gotham-logo.svg +17 -0
- package/lib/icons/gotham.svg +8 -0
- package/lib/icons/index.d.ts +5 -0
- package/lib/icons/index.js +6 -0
- package/lib/icons/pencil.svg +6 -0
- package/lib/img/arkhamjs-logo.png +0 -0
- package/lib/img/logo.png +0 -0
- package/lib/index.d.ts +25 -0
- package/lib/index.js +25 -0
- package/lib/router/index.d.ts +5 -0
- package/lib/router/index.js +6 -0
- package/lib/stores/GothamAppStore.d.ts +35 -0
- package/lib/stores/GothamAppStore.js +70 -0
- package/lib/stories/Button.d.ts +28 -0
- package/lib/stories/Button.js +22 -0
- package/lib/stories/Header.d.ts +12 -0
- package/lib/stories/Header.js +78 -0
- package/lib/stories/Page.d.ts +3 -0
- package/lib/stories/Page.js +108 -0
- package/lib/stories/assets/accessibility.png +0 -0
- package/lib/stories/assets/accessibility.svg +5 -0
- package/lib/stories/assets/addon-library.png +0 -0
- package/lib/stories/assets/assets.png +0 -0
- package/lib/stories/assets/context.png +0 -0
- package/lib/stories/assets/discord.svg +15 -0
- package/lib/stories/assets/docs.png +0 -0
- package/lib/stories/assets/figma-plugin.png +0 -0
- package/lib/stories/assets/github.svg +3 -0
- package/lib/stories/assets/share.png +0 -0
- package/lib/stories/assets/styling.png +0 -0
- package/lib/stories/assets/testing.png +0 -0
- package/lib/stories/assets/theming.png +0 -0
- package/lib/stories/assets/tutorials.svg +12 -0
- package/lib/stories/assets/youtube.svg +4 -0
- package/lib/stories/button.css +1 -0
- package/lib/stories/header.css +1 -0
- package/lib/stories/page.css +1 -0
- package/lib/styles/chat.css +1 -0
- package/lib/styles/index.css +2 -0
- package/lib/styles/tailwind.css +1 -0
- package/lib/types/assets.d.js +2 -0
- package/lib/types/gotham.d.ts +12 -0
- package/lib/types/gotham.js +3 -0
- package/lib/types/vitest-globals.d.js +3 -0
- package/lib/utils/GothamContext.d.ts +14 -0
- package/lib/utils/GothamContext.js +14 -0
- package/lib/utils/awsRum.d.ts +23 -0
- package/lib/utils/awsRum.js +50 -0
- package/lib/utils/colorUtils.d.ts +20 -0
- package/lib/utils/colorUtils.js +499 -0
- package/lib/utils/contentUtils.d.ts +2 -0
- package/lib/utils/contentUtils.js +18 -0
- package/lib/utils/i18nUtil.d.ts +1 -0
- package/lib/utils/i18nUtil.js +7 -0
- package/lib/utils/imageUtils.d.ts +5 -0
- package/lib/utils/imageUtils.js +48 -0
- package/lib/utils/interactionAnalytics.d.ts +10 -0
- package/lib/utils/interactionAnalytics.js +142 -0
- package/lib/utils/navEventQueue.d.ts +6 -0
- package/lib/utils/navEventQueue.js +50 -0
- package/lib/utils/refUtils.d.ts +2 -0
- package/lib/utils/refUtils.js +11 -0
- package/lib/utils/routeUtils.d.ts +12 -0
- package/lib/utils/routeUtils.js +109 -0
- package/lib/utils/sizeUtils.d.ts +5 -0
- package/lib/utils/sizeUtils.js +6 -0
- package/lib/utils/storyInteractions.d.ts +6 -0
- package/lib/utils/storyInteractions.js +45 -0
- package/lib/utils/storyUtils.d.ts +1 -0
- package/lib/utils/storyUtils.js +11 -0
- package/lib/utils/testUtils.d.ts +3 -0
- package/lib/utils/testUtils.js +56 -0
- package/lib/utils/timer.d.ts +21 -0
- package/lib/utils/timer.js +38 -0
- package/lib/utils/useBreakpoint.d.ts +6 -0
- package/lib/utils/useBreakpoint.js +56 -0
- package/lib/utils/viewPerformance.d.ts +34 -0
- package/lib/utils/viewPerformance.js +103 -0
- package/lib/utils/viewUtils.d.ts +9 -0
- package/lib/utils/viewUtils.js +44 -0
- package/lib/views/AuthSignInView/AuthSignInView.d.ts +20 -0
- package/lib/views/AuthSignInView/AuthSignInView.js +107 -0
- package/lib/views/AuthSignInView/AuthSignInView.stories.js +29 -0
- package/lib/views/AuthSignUpView/AuthSignUpView.d.ts +21 -0
- package/lib/views/AuthSignUpView/AuthSignUpView.js +146 -0
- package/lib/views/AuthSignUpView/AuthSignUpView.stories.js +30 -0
- package/lib/views/AuthView/AuthView.d.ts +16 -0
- package/lib/views/AuthView/AuthView.js +60 -0
- package/lib/views/AuthView/AuthView.stories.js +34 -0
- package/lib/views/DefaultView/DefaultView.d.ts +5 -0
- package/lib/views/DefaultView/DefaultView.js +134 -0
- package/lib/views/Gotham/Gotham.d.ts +44 -0
- package/lib/views/Gotham/Gotham.js +24 -0
- package/lib/views/Gotham/Gotham.stories.js +31 -0
- package/lib/views/Gotham/GothamListeners.d.ts +0 -0
- package/lib/views/Gotham/GothamListeners.js +2 -0
- package/lib/views/Gotham/GothamProvider.d.ts +43 -0
- package/lib/views/Gotham/GothamProvider.js +217 -0
- package/lib/views/Gotham/GothamRoot.d.ts +6 -0
- package/lib/views/Gotham/GothamRoot.js +69 -0
- package/lib/views/HomeView/HomeView.d.ts +10 -0
- package/lib/views/HomeView/HomeView.js +134 -0
- package/lib/views/LoaderView/LoaderView.d.ts +8 -0
- package/lib/views/LoaderView/LoaderView.js +30 -0
- package/lib/views/MenuView/MenuView.d.ts +13 -0
- package/lib/views/MenuView/MenuView.js +305 -0
- package/lib/views/NotFoundView/NotFoundView.d.ts +2 -0
- package/lib/views/NotFoundView/NotFoundView.js +12 -0
- package/lib/views/index.d.ts +11 -0
- package/lib/views/index.js +13 -0
- package/package.json +202 -0
- package/styles/tailwind.css +1 -0
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* Copyright (c) 2025-Present, Nitrogen Labs, Inc.
|
|
4
|
+
* Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
|
|
5
|
+
*/ import { useEffect, useState } from 'react';
|
|
6
|
+
export const DatePicker = ({ initialDate, maxDate, minDate, onDateSelect })=>{
|
|
7
|
+
const [fallbackDate] = useState(()=>Date.now());
|
|
8
|
+
const timestamp = initialDate ?? fallbackDate;
|
|
9
|
+
const defaultDate = new Date(timestamp);
|
|
10
|
+
const [selectedDate, setSelectedDate] = useState(defaultDate);
|
|
11
|
+
const [currentMonth, setCurrentMonth] = useState(defaultDate.getMonth());
|
|
12
|
+
const [currentYear, setCurrentYear] = useState(defaultDate.getFullYear());
|
|
13
|
+
useEffect(()=>{
|
|
14
|
+
const updatedDate = new Date(timestamp);
|
|
15
|
+
setSelectedDate((current)=>current.getTime() === timestamp ? current : updatedDate);
|
|
16
|
+
setCurrentMonth(updatedDate.getMonth());
|
|
17
|
+
setCurrentYear(updatedDate.getFullYear());
|
|
18
|
+
}, [
|
|
19
|
+
timestamp
|
|
20
|
+
]);
|
|
21
|
+
const handlePrevMonth = ()=>{
|
|
22
|
+
if (currentMonth === 0) {
|
|
23
|
+
setCurrentMonth(11);
|
|
24
|
+
setCurrentYear(currentYear - 1);
|
|
25
|
+
} else {
|
|
26
|
+
setCurrentMonth(currentMonth - 1);
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
const handleNextMonth = ()=>{
|
|
30
|
+
if (currentMonth === 11) {
|
|
31
|
+
setCurrentMonth(0);
|
|
32
|
+
setCurrentYear(currentYear + 1);
|
|
33
|
+
} else {
|
|
34
|
+
setCurrentMonth(currentMonth + 1);
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
const handleMonthChange = (e)=>{
|
|
38
|
+
setCurrentMonth(parseInt(e.target.value, 10));
|
|
39
|
+
};
|
|
40
|
+
const handleYearChange = (e)=>{
|
|
41
|
+
setCurrentYear(parseInt(e.target.value, 10));
|
|
42
|
+
};
|
|
43
|
+
const isDateInRange = (date)=>{
|
|
44
|
+
const dateTimestamp = date.getTime();
|
|
45
|
+
if (minDate && dateTimestamp < minDate) {
|
|
46
|
+
return false;
|
|
47
|
+
}
|
|
48
|
+
if (maxDate && dateTimestamp > maxDate) {
|
|
49
|
+
return false;
|
|
50
|
+
}
|
|
51
|
+
return true;
|
|
52
|
+
};
|
|
53
|
+
const handleDateSelect = (day)=>{
|
|
54
|
+
const newDate = new Date(currentYear, currentMonth, day);
|
|
55
|
+
if (!isDateInRange(newDate)) {
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
setSelectedDate(newDate);
|
|
59
|
+
if (onDateSelect) {
|
|
60
|
+
onDateSelect(newDate.getTime());
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
// Get month name
|
|
64
|
+
const monthNames = [
|
|
65
|
+
'January',
|
|
66
|
+
'February',
|
|
67
|
+
'March',
|
|
68
|
+
'April',
|
|
69
|
+
'May',
|
|
70
|
+
'June',
|
|
71
|
+
'July',
|
|
72
|
+
'August',
|
|
73
|
+
'September',
|
|
74
|
+
'October',
|
|
75
|
+
'November',
|
|
76
|
+
'December'
|
|
77
|
+
];
|
|
78
|
+
const getDaysInMonth = (year, month)=>new Date(year, month + 1, 0).getDate();
|
|
79
|
+
const getFirstDayOfMonth = (year, month)=>new Date(year, month, 1).getDay();
|
|
80
|
+
// Generate years for dropdown (range based on min/max dates)
|
|
81
|
+
const generateYearOptions = ()=>{
|
|
82
|
+
let startYear = currentYear - 5;
|
|
83
|
+
let endYear = currentYear + 5;
|
|
84
|
+
if (minDate) {
|
|
85
|
+
const minYear = new Date(minDate).getFullYear();
|
|
86
|
+
startYear = minYear;
|
|
87
|
+
}
|
|
88
|
+
if (maxDate) {
|
|
89
|
+
const maxYear = new Date(maxDate).getFullYear();
|
|
90
|
+
endYear = maxYear;
|
|
91
|
+
}
|
|
92
|
+
return Array.from({
|
|
93
|
+
length: endYear - startYear + 1
|
|
94
|
+
}, (_, i)=>startYear + i);
|
|
95
|
+
};
|
|
96
|
+
// Generate days for the calendar
|
|
97
|
+
const daysInMonth = getDaysInMonth(currentYear, currentMonth);
|
|
98
|
+
const firstDayOfMonth = getFirstDayOfMonth(currentYear, currentMonth);
|
|
99
|
+
const days = [];
|
|
100
|
+
// Add empty cells for days before the first day of the month
|
|
101
|
+
for(let i = 0; i < firstDayOfMonth; i++){
|
|
102
|
+
days.push(/*#__PURE__*/ _jsx("div", {
|
|
103
|
+
className: "h-8 w-8"
|
|
104
|
+
}, `empty-${i}`));
|
|
105
|
+
}
|
|
106
|
+
// Add days of the month
|
|
107
|
+
for(let day = 1; day <= daysInMonth; day++){
|
|
108
|
+
const date = new Date(currentYear, currentMonth, day);
|
|
109
|
+
const isSelected = selectedDate.getDate() === day && selectedDate.getMonth() === currentMonth && selectedDate.getFullYear() === currentYear;
|
|
110
|
+
const isDisabled = !isDateInRange(date);
|
|
111
|
+
days.push(/*#__PURE__*/ _jsx("button", {
|
|
112
|
+
className: `h-7 w-7 text-sm rounded-full flex items-center justify-center ${isSelected ? 'bg-blue-500 text-white' : isDisabled ? 'text-gray-300 cursor-not-allowed' : 'hover:bg-gray-200'}`,
|
|
113
|
+
disabled: isDisabled,
|
|
114
|
+
onClick: ()=>handleDateSelect(day),
|
|
115
|
+
children: day
|
|
116
|
+
}, day));
|
|
117
|
+
}
|
|
118
|
+
const yearOptions = generateYearOptions();
|
|
119
|
+
return /*#__PURE__*/ _jsxs("div", {
|
|
120
|
+
className: "bg-white border border-gray-200 rounded-lg shadow-lg p-3",
|
|
121
|
+
children: [
|
|
122
|
+
/*#__PURE__*/ _jsxs("div", {
|
|
123
|
+
className: "flex justify-between items-center mb-2",
|
|
124
|
+
children: [
|
|
125
|
+
/*#__PURE__*/ _jsx("button", {
|
|
126
|
+
className: "p-1 rounded-full hover:bg-gray-200 text-sm",
|
|
127
|
+
onClick: handlePrevMonth,
|
|
128
|
+
children: "<"
|
|
129
|
+
}),
|
|
130
|
+
/*#__PURE__*/ _jsxs("div", {
|
|
131
|
+
className: "flex space-x-1",
|
|
132
|
+
children: [
|
|
133
|
+
/*#__PURE__*/ _jsx("select", {
|
|
134
|
+
className: "border border-gray-300 rounded px-1.5 py-0.5 text-sm",
|
|
135
|
+
onChange: handleMonthChange,
|
|
136
|
+
value: currentMonth,
|
|
137
|
+
children: monthNames.map((month, index)=>/*#__PURE__*/ _jsx("option", {
|
|
138
|
+
value: index,
|
|
139
|
+
children: month
|
|
140
|
+
}, month))
|
|
141
|
+
}),
|
|
142
|
+
/*#__PURE__*/ _jsxs("div", {
|
|
143
|
+
className: "relative inline-flex items-center",
|
|
144
|
+
children: [
|
|
145
|
+
/*#__PURE__*/ _jsx("select", {
|
|
146
|
+
className: "px-1.5 py-0.5 text-sm appearance-none bg-transparent focus:outline-none pr-5 hover:text-blue-600 cursor-pointer",
|
|
147
|
+
onChange: handleYearChange,
|
|
148
|
+
style: {
|
|
149
|
+
MozAppearance: 'none',
|
|
150
|
+
WebkitAppearance: 'none',
|
|
151
|
+
scrollbarWidth: 'thin'
|
|
152
|
+
},
|
|
153
|
+
value: currentYear,
|
|
154
|
+
children: yearOptions.map((year)=>/*#__PURE__*/ _jsx("option", {
|
|
155
|
+
className: "text-sm",
|
|
156
|
+
value: year,
|
|
157
|
+
children: year
|
|
158
|
+
}, year))
|
|
159
|
+
}),
|
|
160
|
+
/*#__PURE__*/ _jsx("div", {
|
|
161
|
+
className: "pointer-events-none absolute inset-y-0 right-0 flex items-center px-1 text-gray-700",
|
|
162
|
+
children: /*#__PURE__*/ _jsx("svg", {
|
|
163
|
+
className: "h-3 w-3 fill-current",
|
|
164
|
+
viewBox: "0 0 20 20",
|
|
165
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
166
|
+
children: /*#__PURE__*/ _jsx("path", {
|
|
167
|
+
d: "M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z"
|
|
168
|
+
})
|
|
169
|
+
})
|
|
170
|
+
})
|
|
171
|
+
]
|
|
172
|
+
})
|
|
173
|
+
]
|
|
174
|
+
}),
|
|
175
|
+
/*#__PURE__*/ _jsx("button", {
|
|
176
|
+
className: "p-1 rounded-full hover:bg-gray-200 text-sm",
|
|
177
|
+
onClick: handleNextMonth,
|
|
178
|
+
children: ">"
|
|
179
|
+
})
|
|
180
|
+
]
|
|
181
|
+
}),
|
|
182
|
+
/*#__PURE__*/ _jsxs("div", {
|
|
183
|
+
className: "grid grid-cols-7 gap-0.5",
|
|
184
|
+
children: [
|
|
185
|
+
[
|
|
186
|
+
'Su',
|
|
187
|
+
'Mo',
|
|
188
|
+
'Tu',
|
|
189
|
+
'We',
|
|
190
|
+
'Th',
|
|
191
|
+
'Fr',
|
|
192
|
+
'Sa'
|
|
193
|
+
].map((day)=>/*#__PURE__*/ _jsx("div", {
|
|
194
|
+
className: "text-center font-medium text-gray-500 text-xs",
|
|
195
|
+
children: day
|
|
196
|
+
}, day)),
|
|
197
|
+
days
|
|
198
|
+
]
|
|
199
|
+
})
|
|
200
|
+
]
|
|
201
|
+
});
|
|
202
|
+
};
|
|
203
|
+
export default DatePicker;
|
|
204
|
+
|
|
205
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L2dvdGhhbWpzL3NyYy9jb21wb25lbnRzL0RhdGVGaWVsZC9EYXRlUGlja2VyLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAyNS1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xuaW1wb3J0IHt1c2VFZmZlY3QsIHVzZVN0YXRlfSBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB0eXBlIHtGQywgUmVhY3ROb2RlfSBmcm9tICdyZWFjdCc7XG5cbmludGVyZmFjZSBEYXRlUGlja2VyUHJvcHMge1xuICBpbml0aWFsRGF0ZT86IG51bWJlcjtcbiAgbWF4RGF0ZT86IG51bWJlcjtcbiAgbWluRGF0ZT86IG51bWJlcjtcbiAgb25EYXRlU2VsZWN0PzogKGRhdGU6IG51bWJlcikgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGNvbnN0IERhdGVQaWNrZXI6IEZDPERhdGVQaWNrZXJQcm9wcz4gPSAoe1xuICBpbml0aWFsRGF0ZSxcbiAgbWF4RGF0ZSxcbiAgbWluRGF0ZSxcbiAgb25EYXRlU2VsZWN0XG59KSA9PiB7XG4gIGNvbnN0IFtmYWxsYmFja0RhdGVdID0gdXNlU3RhdGUoKCkgPT4gRGF0ZS5ub3coKSk7XG4gIGNvbnN0IHRpbWVzdGFtcCA9IGluaXRpYWxEYXRlID8/IGZhbGxiYWNrRGF0ZTtcbiAgY29uc3QgZGVmYXVsdERhdGUgPSBuZXcgRGF0ZSh0aW1lc3RhbXApO1xuICBjb25zdCBbc2VsZWN0ZWREYXRlLCBzZXRTZWxlY3RlZERhdGVdID0gdXNlU3RhdGU8RGF0ZT4oZGVmYXVsdERhdGUpO1xuICBjb25zdCBbY3VycmVudE1vbnRoLCBzZXRDdXJyZW50TW9udGhdID0gdXNlU3RhdGU8bnVtYmVyPihkZWZhdWx0RGF0ZS5nZXRNb250aCgpKTtcbiAgY29uc3QgW2N1cnJlbnRZZWFyLCBzZXRDdXJyZW50WWVhcl0gPSB1c2VTdGF0ZTxudW1iZXI+KGRlZmF1bHREYXRlLmdldEZ1bGxZZWFyKCkpO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgdXBkYXRlZERhdGUgPSBuZXcgRGF0ZSh0aW1lc3RhbXApO1xuICAgIHNldFNlbGVjdGVkRGF0ZSgoY3VycmVudCkgPT4gKGN1cnJlbnQuZ2V0VGltZSgpID09PSB0aW1lc3RhbXAgPyBjdXJyZW50IDogdXBkYXRlZERhdGUpKTtcbiAgICBzZXRDdXJyZW50TW9udGgodXBkYXRlZERhdGUuZ2V0TW9udGgoKSk7XG4gICAgc2V0Q3VycmVudFllYXIodXBkYXRlZERhdGUuZ2V0RnVsbFllYXIoKSk7XG4gIH0sIFt0aW1lc3RhbXBdKTtcblxuICBjb25zdCBoYW5kbGVQcmV2TW9udGggPSAoKSA9PiB7XG4gICAgaWYoY3VycmVudE1vbnRoID09PSAwKSB7XG4gICAgICBzZXRDdXJyZW50TW9udGgoMTEpO1xuICAgICAgc2V0Q3VycmVudFllYXIoY3VycmVudFllYXIgLSAxKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0Q3VycmVudE1vbnRoKGN1cnJlbnRNb250aCAtIDEpO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBoYW5kbGVOZXh0TW9udGggPSAoKSA9PiB7XG4gICAgaWYoY3VycmVudE1vbnRoID09PSAxMSkge1xuICAgICAgc2V0Q3VycmVudE1vbnRoKDApO1xuICAgICAgc2V0Q3VycmVudFllYXIoY3VycmVudFllYXIgKyAxKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0Q3VycmVudE1vbnRoKGN1cnJlbnRNb250aCArIDEpO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBoYW5kbGVNb250aENoYW5nZSA9IChlOiBSZWFjdC5DaGFuZ2VFdmVudDxIVE1MU2VsZWN0RWxlbWVudD4pID0+IHtcbiAgICBzZXRDdXJyZW50TW9udGgocGFyc2VJbnQoZS50YXJnZXQudmFsdWUsIDEwKSk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlWWVhckNoYW5nZSA9IChlOiBSZWFjdC5DaGFuZ2VFdmVudDxIVE1MU2VsZWN0RWxlbWVudD4pID0+IHtcbiAgICBzZXRDdXJyZW50WWVhcihwYXJzZUludChlLnRhcmdldC52YWx1ZSwgMTApKTtcbiAgfTtcblxuICBjb25zdCBpc0RhdGVJblJhbmdlID0gKGRhdGU6IERhdGUpOiBib29sZWFuID0+IHtcbiAgICBjb25zdCBkYXRlVGltZXN0YW1wID0gZGF0ZS5nZXRUaW1lKCk7XG5cbiAgICBpZihtaW5EYXRlICYmIGRhdGVUaW1lc3RhbXAgPCBtaW5EYXRlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYobWF4RGF0ZSAmJiBkYXRlVGltZXN0YW1wID4gbWF4RGF0ZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZURhdGVTZWxlY3QgPSAoZGF5OiBudW1iZXIpID0+IHtcbiAgICBjb25zdCBuZXdEYXRlID0gbmV3IERhdGUoY3VycmVudFllYXIsIGN1cnJlbnRNb250aCwgZGF5KTtcblxuICAgIGlmKCFpc0RhdGVJblJhbmdlKG5ld0RhdGUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgc2V0U2VsZWN0ZWREYXRlKG5ld0RhdGUpO1xuXG4gICAgaWYob25EYXRlU2VsZWN0KSB7XG4gICAgICBvbkRhdGVTZWxlY3QobmV3RGF0ZS5nZXRUaW1lKCkpO1xuICAgIH1cbiAgfTtcblxuICAvLyBHZXQgbW9udGggbmFtZVxuICBjb25zdCBtb250aE5hbWVzID0gW1xuICAgICdKYW51YXJ5JywgJ0ZlYnJ1YXJ5JywgJ01hcmNoJywgJ0FwcmlsJywgJ01heScsICdKdW5lJyxcbiAgICAnSnVseScsICdBdWd1c3QnLCAnU2VwdGVtYmVyJywgJ09jdG9iZXInLCAnTm92ZW1iZXInLCAnRGVjZW1iZXInXG4gIF07XG5cbiAgY29uc3QgZ2V0RGF5c0luTW9udGggPSAoeWVhcjogbnVtYmVyLCBtb250aDogbnVtYmVyKSA9PiBuZXcgRGF0ZSh5ZWFyLCBtb250aCArIDEsIDApLmdldERhdGUoKTtcblxuICBjb25zdCBnZXRGaXJzdERheU9mTW9udGggPSAoeWVhcjogbnVtYmVyLCBtb250aDogbnVtYmVyKSA9PiBuZXcgRGF0ZSh5ZWFyLCBtb250aCwgMSkuZ2V0RGF5KCk7XG5cbiAgLy8gR2VuZXJhdGUgeWVhcnMgZm9yIGRyb3Bkb3duIChyYW5nZSBiYXNlZCBvbiBtaW4vbWF4IGRhdGVzKVxuICBjb25zdCBnZW5lcmF0ZVllYXJPcHRpb25zID0gKCkgPT4ge1xuICAgIGxldCBzdGFydFllYXIgPSBjdXJyZW50WWVhciAtIDU7XG4gICAgbGV0IGVuZFllYXIgPSBjdXJyZW50WWVhciArIDU7XG5cbiAgICBpZihtaW5EYXRlKSB7XG4gICAgICBjb25zdCBtaW5ZZWFyID0gbmV3IERhdGUobWluRGF0ZSkuZ2V0RnVsbFllYXIoKTtcbiAgICAgIHN0YXJ0WWVhciA9IG1pblllYXI7XG4gICAgfVxuXG4gICAgaWYobWF4RGF0ZSkge1xuICAgICAgY29uc3QgbWF4WWVhciA9IG5ldyBEYXRlKG1heERhdGUpLmdldEZ1bGxZZWFyKCk7XG4gICAgICBlbmRZZWFyID0gbWF4WWVhcjtcbiAgICB9XG5cbiAgICByZXR1cm4gQXJyYXkuZnJvbShcbiAgICAgIHtsZW5ndGg6IGVuZFllYXIgLSBzdGFydFllYXIgKyAxfSxcbiAgICAgIChfLCBpKSA9PiBzdGFydFllYXIgKyBpXG4gICAgKTtcbiAgfTtcblxuICAvLyBHZW5lcmF0ZSBkYXlzIGZvciB0aGUgY2FsZW5kYXJcbiAgY29uc3QgZGF5c0luTW9udGggPSBnZXREYXlzSW5Nb250aChjdXJyZW50WWVhciwgY3VycmVudE1vbnRoKTtcbiAgY29uc3QgZmlyc3REYXlPZk1vbnRoID0gZ2V0Rmlyc3REYXlPZk1vbnRoKGN1cnJlbnRZZWFyLCBjdXJyZW50TW9udGgpO1xuXG4gIGNvbnN0IGRheXM6IFJlYWN0Tm9kZVtdID0gW107XG4gIC8vIEFkZCBlbXB0eSBjZWxscyBmb3IgZGF5cyBiZWZvcmUgdGhlIGZpcnN0IGRheSBvZiB0aGUgbW9udGhcbiAgZm9yKGxldCBpID0gMDsgaSA8IGZpcnN0RGF5T2ZNb250aDsgaSsrKSB7XG4gICAgZGF5cy5wdXNoKDxkaXYgY2xhc3NOYW1lPVwiaC04IHctOFwiIGtleT17YGVtcHR5LSR7aX1gfT48L2Rpdj4pO1xuICB9XG5cbiAgLy8gQWRkIGRheXMgb2YgdGhlIG1vbnRoXG4gIGZvcihsZXQgZGF5ID0gMTsgZGF5IDw9IGRheXNJbk1vbnRoOyBkYXkrKykge1xuICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZShjdXJyZW50WWVhciwgY3VycmVudE1vbnRoLCBkYXkpO1xuICAgIGNvbnN0IGlzU2VsZWN0ZWQgPVxuICAgICAgc2VsZWN0ZWREYXRlLmdldERhdGUoKSA9PT0gZGF5ICYmXG4gICAgICBzZWxlY3RlZERhdGUuZ2V0TW9udGgoKSA9PT0gY3VycmVudE1vbnRoICYmXG4gICAgICBzZWxlY3RlZERhdGUuZ2V0RnVsbFllYXIoKSA9PT0gY3VycmVudFllYXI7XG5cbiAgICBjb25zdCBpc0Rpc2FibGVkID0gIWlzRGF0ZUluUmFuZ2UoZGF0ZSk7XG5cbiAgICBkYXlzLnB1c2goXG4gICAgICA8YnV0dG9uXG4gICAgICAgIGNsYXNzTmFtZT17YGgtNyB3LTcgdGV4dC1zbSByb3VuZGVkLWZ1bGwgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgJHtcbiAgICAgICAgICBpc1NlbGVjdGVkXG4gICAgICAgICAgICA/ICdiZy1ibHVlLTUwMCB0ZXh0LXdoaXRlJ1xuICAgICAgICAgICAgOiBpc0Rpc2FibGVkXG4gICAgICAgICAgICAgID8gJ3RleHQtZ3JheS0zMDAgY3Vyc29yLW5vdC1hbGxvd2VkJ1xuICAgICAgICAgICAgICA6ICdob3ZlcjpiZy1ncmF5LTIwMCdcbiAgICAgICAgfWB9XG4gICAgICAgIGRpc2FibGVkPXtpc0Rpc2FibGVkfVxuICAgICAgICBrZXk9e2RheX1cbiAgICAgICAgb25DbGljaz17KCkgPT4gaGFuZGxlRGF0ZVNlbGVjdChkYXkpfVxuICAgICAgPlxuICAgICAgICB7ZGF5fVxuICAgICAgPC9idXR0b24+XG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IHllYXJPcHRpb25zID0gZ2VuZXJhdGVZZWFyT3B0aW9ucygpO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJiZy13aGl0ZSBib3JkZXIgYm9yZGVyLWdyYXktMjAwIHJvdW5kZWQtbGcgc2hhZG93LWxnIHAtM1wiPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1jZW50ZXIgbWItMlwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgY2xhc3NOYW1lPVwicC0xIHJvdW5kZWQtZnVsbCBob3ZlcjpiZy1ncmF5LTIwMCB0ZXh0LXNtXCJcbiAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVQcmV2TW9udGh9XG4gICAgICAgID5cbiAgICAgICAgICAmbHQ7XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggc3BhY2UteC0xXCI+XG4gICAgICAgICAgPHNlbGVjdFxuICAgICAgICAgICAgY2xhc3NOYW1lPVwiYm9yZGVyIGJvcmRlci1ncmF5LTMwMCByb3VuZGVkIHB4LTEuNSBweS0wLjUgdGV4dC1zbVwiXG4gICAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlTW9udGhDaGFuZ2V9XG4gICAgICAgICAgICB2YWx1ZT17Y3VycmVudE1vbnRofVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHttb250aE5hbWVzLm1hcCgobW9udGgsIGluZGV4KSA9PiAoXG4gICAgICAgICAgICAgIDxvcHRpb24ga2V5PXttb250aH0gdmFsdWU9e2luZGV4fT5cbiAgICAgICAgICAgICAgICB7bW9udGh9XG4gICAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgICAgKSl9XG4gICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyZWxhdGl2ZSBpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxzZWxlY3RcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwicHgtMS41IHB5LTAuNSB0ZXh0LXNtIGFwcGVhcmFuY2Utbm9uZSBiZy10cmFuc3BhcmVudCBmb2N1czpvdXRsaW5lLW5vbmUgcHItNSBob3Zlcjp0ZXh0LWJsdWUtNjAwIGN1cnNvci1wb2ludGVyXCJcbiAgICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZVllYXJDaGFuZ2V9XG4gICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgTW96QXBwZWFyYW5jZTogJ25vbmUnLFxuICAgICAgICAgICAgICAgIFdlYmtpdEFwcGVhcmFuY2U6ICdub25lJyxcbiAgICAgICAgICAgICAgICBzY3JvbGxiYXJXaWR0aDogJ3RoaW4nXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIHZhbHVlPXtjdXJyZW50WWVhcn1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3llYXJPcHRpb25zLm1hcCgoeWVhcikgPT4gKFxuICAgICAgICAgICAgICAgIDxvcHRpb24gY2xhc3NOYW1lPVwidGV4dC1zbVwiIGtleT17eWVhcn0gdmFsdWU9e3llYXJ9PlxuICAgICAgICAgICAgICAgICAge3llYXJ9XG4gICAgICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBvaW50ZXItZXZlbnRzLW5vbmUgYWJzb2x1dGUgaW5zZXQteS0wIHJpZ2h0LTAgZmxleCBpdGVtcy1jZW50ZXIgcHgtMSB0ZXh0LWdyYXktNzAwXCI+XG4gICAgICAgICAgICAgIDxzdmcgY2xhc3NOYW1lPVwiaC0zIHctMyBmaWxsLWN1cnJlbnRcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNS4yOTMgNy4yOTNhMSAxIDAgMDExLjQxNCAwTDEwIDEwLjU4NmwzLjI5My0zLjI5M2ExIDEgMCAxMTEuNDE0IDEuNDE0bC00IDRhMSAxIDAgMDEtMS40MTQgMGwtNC00YTEgMSAwIDAxMC0xLjQxNHpcIiAvPlxuICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGNsYXNzTmFtZT1cInAtMSByb3VuZGVkLWZ1bGwgaG92ZXI6YmctZ3JheS0yMDAgdGV4dC1zbVwiXG4gICAgICAgICAgb25DbGljaz17aGFuZGxlTmV4dE1vbnRofVxuICAgICAgICA+XG4gICAgICAgICAgJmd0O1xuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJncmlkIGdyaWQtY29scy03IGdhcC0wLjVcIj5cbiAgICAgICAge1snU3UnLCAnTW8nLCAnVHUnLCAnV2UnLCAnVGgnLCAnRnInLCAnU2EnXS5tYXAoKGRheSkgPT4gKFxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1jZW50ZXIgZm9udC1tZWRpdW0gdGV4dC1ncmF5LTUwMCB0ZXh0LXhzXCIga2V5PXtkYXl9PlxuICAgICAgICAgICAge2RheX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKSl9XG4gICAgICAgIHtkYXlzfVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBEYXRlUGlja2VyOyJdLCJuYW1lcyI6WyJ1c2VFZmZlY3QiLCJ1c2VTdGF0ZSIsIkRhdGVQaWNrZXIiLCJpbml0aWFsRGF0ZSIsIm1heERhdGUiLCJtaW5EYXRlIiwib25EYXRlU2VsZWN0IiwiZmFsbGJhY2tEYXRlIiwiRGF0ZSIsIm5vdyIsInRpbWVzdGFtcCIsImRlZmF1bHREYXRlIiwic2VsZWN0ZWREYXRlIiwic2V0U2VsZWN0ZWREYXRlIiwiY3VycmVudE1vbnRoIiwic2V0Q3VycmVudE1vbnRoIiwiZ2V0TW9udGgiLCJjdXJyZW50WWVhciIsInNldEN1cnJlbnRZZWFyIiwiZ2V0RnVsbFllYXIiLCJ1cGRhdGVkRGF0ZSIsImN1cnJlbnQiLCJnZXRUaW1lIiwiaGFuZGxlUHJldk1vbnRoIiwiaGFuZGxlTmV4dE1vbnRoIiwiaGFuZGxlTW9udGhDaGFuZ2UiLCJlIiwicGFyc2VJbnQiLCJ0YXJnZXQiLCJ2YWx1ZSIsImhhbmRsZVllYXJDaGFuZ2UiLCJpc0RhdGVJblJhbmdlIiwiZGF0ZSIsImRhdGVUaW1lc3RhbXAiLCJoYW5kbGVEYXRlU2VsZWN0IiwiZGF5IiwibmV3RGF0ZSIsIm1vbnRoTmFtZXMiLCJnZXREYXlzSW5Nb250aCIsInllYXIiLCJtb250aCIsImdldERhdGUiLCJnZXRGaXJzdERheU9mTW9udGgiLCJnZXREYXkiLCJnZW5lcmF0ZVllYXJPcHRpb25zIiwic3RhcnRZZWFyIiwiZW5kWWVhciIsIm1pblllYXIiLCJtYXhZZWFyIiwiQXJyYXkiLCJmcm9tIiwibGVuZ3RoIiwiXyIsImkiLCJkYXlzSW5Nb250aCIsImZpcnN0RGF5T2ZNb250aCIsImRheXMiLCJwdXNoIiwiZGl2IiwiY2xhc3NOYW1lIiwiaXNTZWxlY3RlZCIsImlzRGlzYWJsZWQiLCJidXR0b24iLCJkaXNhYmxlZCIsIm9uQ2xpY2siLCJ5ZWFyT3B0aW9ucyIsInNlbGVjdCIsIm9uQ2hhbmdlIiwibWFwIiwiaW5kZXgiLCJvcHRpb24iLCJzdHlsZSIsIk1vekFwcGVhcmFuY2UiLCJXZWJraXRBcHBlYXJhbmNlIiwic2Nyb2xsYmFyV2lkdGgiLCJzdmciLCJ2aWV3Qm94IiwieG1sbnMiLCJwYXRoIiwiZCJdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Q0FHQyxHQUNELFNBQVFBLFNBQVMsRUFBRUMs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
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { interactWithCanvas } from '../../utils/storyInteractions.js';
|
|
3
|
+
import { DatePicker } from './DatePicker.js';
|
|
4
|
+
const today = new Date(2026, 4, 14).getTime();
|
|
5
|
+
const meta = {
|
|
6
|
+
argTypes: {
|
|
7
|
+
initialDate: {
|
|
8
|
+
control: 'date'
|
|
9
|
+
},
|
|
10
|
+
maxDate: {
|
|
11
|
+
control: 'date'
|
|
12
|
+
},
|
|
13
|
+
minDate: {
|
|
14
|
+
control: 'date'
|
|
15
|
+
}
|
|
16
|
+
},
|
|
17
|
+
component: DatePicker,
|
|
18
|
+
parameters: {
|
|
19
|
+
layout: 'centered'
|
|
20
|
+
},
|
|
21
|
+
title: 'Components/Form/DatePicker'
|
|
22
|
+
};
|
|
23
|
+
export default meta;
|
|
24
|
+
export const Default = {
|
|
25
|
+
args: {
|
|
26
|
+
initialDate: today,
|
|
27
|
+
maxDate: new Date(2026, 11, 31).getTime(),
|
|
28
|
+
minDate: new Date(2026, 0, 1).getTime()
|
|
29
|
+
},
|
|
30
|
+
play: interactWithCanvas
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L2dvdGhhbWpzL3NyYy9jb21wb25lbnRzL0RhdGVGaWVsZC9EYXRlUGlja2VyLnN0b3JpZXMudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB7aW50ZXJhY3RXaXRoQ2FudmFzfSBmcm9tICcuLi8uLi91dGlscy9zdG9yeUludGVyYWN0aW9ucy5qcyc7XG5pbXBvcnQge0RhdGVQaWNrZXJ9IGZyb20gJy4vRGF0ZVBpY2tlci5qcyc7XG5cbmltcG9ydCB0eXBlIHtNZXRhLCBTdG9yeU9ian0gZnJvbSAnQG5sYWJzL2xleC9zdG9yeWJvb2snO1xuXG5jb25zdCB0b2RheSA9IG5ldyBEYXRlKDIwMjYsIDQsIDE0KS5nZXRUaW1lKCk7XG5cbmNvbnN0IG1ldGE6IE1ldGE8dHlwZW9mIERhdGVQaWNrZXI+ID0ge1xuICBhcmdUeXBlczoge1xuICAgIGluaXRpYWxEYXRlOiB7XG4gICAgICBjb250cm9sOiAnZGF0ZSdcbiAgICB9LFxuICAgIG1heERhdGU6IHtcbiAgICAgIGNvbnRyb2w6ICdkYXRlJ1xuICAgIH0sXG4gICAgbWluRGF0ZToge1xuICAgICAgY29udHJvbDogJ2RhdGUnXG4gICAgfVxuICB9LFxuICBjb21wb25lbnQ6IERhdGVQaWNrZXIsXG4gIHBhcmFtZXRlcnM6IHtcbiAgICBsYXlvdXQ6ICdjZW50ZXJlZCdcbiAgfSxcbiAgdGl0bGU6ICdDb21wb25lbnRzL0Zvcm0vRGF0ZVBpY2tlcidcbn07XG5cbmV4cG9ydCBkZWZhdWx0IG1ldGE7XG5cbnR5cGUgU3RvcnkgPSBTdG9yeU9iajx0eXBlb2YgRGF0ZVBpY2tlcj47XG5cbmV4cG9ydCBjb25zdCBEZWZhdWx0OiBTdG9yeSA9IHtcbiAgYXJnczoge1xuICAgIGluaXRpYWxEYXRlOiB0b2RheSxcbiAgICBtYXhEYXRlOiBuZXcgRGF0ZSgyMDI2LCAxMSwgMzEpLmdldFRpbWUoKSxcbiAgICBtaW5EYXRlOiBuZXcgRGF0ZSgyMDI2LCAwLCAxKS5nZXRUaW1lKClcbiAgfSxcbiAgcGxheTogaW50ZXJhY3RXaXRoQ2FudmFzXG59O1xuIl0sIm5hbWVzIjpbIlJlYWN0IiwiaW50ZXJhY3RXaXRoQ2FudmFzIiwiRGF0ZVBpY2tlciIsInRvZGF5IiwiRGF0ZSIsImdldFRpbWUiLCJtZXRhIiwiYXJnVHlwZXMiLCJpbml0aWFsRGF0ZSIsImNvbnRyb2wiLCJtYXhEYXRlIiwibWluRGF0ZSIsImNvbXBvbmVudCIsInBhcmFtZXRlcnMiLCJsYXlvdXQiLCJ0aXRsZSIsIkRlZmF1bHQiLCJhcmdzIiwicGxheSJdLCJtYXBwaW5ncyI6IkFBQUEsT0FBT0EsV0FBVyxRQUFRO0FBRTFCLFNBQVFDLGtCQUFrQixRQUFPLG1DQUFtQztBQUNwRSxTQUFRQyxVQUFVLFFBQU8sa0JBQWtCO0FBSTNDLE1BQU1DLFFBQVEsSUFBSUMsS0FBSyxNQUFNLEdBQUcsSUFBSUMsT0FBTztBQUUzQyxNQUFNQyxPQUFnQztJQUNwQ0MsVUFBVTtRQUNSQyxhQUFhO1lBQ1hDLFNBQVM7UUFDWDtRQUNBQyxTQUFTO1lBQ1BELFNBQVM7UUFDWDtRQUNBRSxTQUFTO1lBQ1BGLFNBQVM7UUFDWDtJQUNGO0lBQ0FHLFdBQVdWO0lBQ1hXLFlBQVk7UUFDVkMsUUFBUTtJQUNWO0lBQ0FDLE9BQU87QUFDVDtBQUVBLGVBQWVULEtBQUs7QUFJcEIsT0FBTyxNQUFNVSxVQUFpQjtJQUM1QkMsTUFBTTtRQUNKVCxhQUFhTDtRQUNiTyxTQUFTLElBQUlOLEtBQUssTUFBTSxJQUFJLElBQUlDLE9BQU87UUFDdkNNLFNBQVMsSUFBSVAsS0FBSyxNQUFNLEdBQUcsR0FBR0MsT0FBTztJQUN2QztJQUNBYSxNQUFNakI7QUFDUixFQUFFIn0=
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { ComponentPropsWithoutRef } from 'react';
|
|
2
|
+
export declare const DescriptionList: ({ className, ...props }: ComponentPropsWithoutRef<'dl'>) => import("react").JSX.Element;
|
|
3
|
+
export declare const DescriptionTerm: ({ className, ...props }: ComponentPropsWithoutRef<'dt'>) => import("react").JSX.Element;
|
|
4
|
+
export declare const DescriptionDetails: ({ className, ...props }: ComponentPropsWithoutRef<'dd'>) => import("react").JSX.Element;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from '@nlabs/utils';
|
|
3
|
+
export const DescriptionList = ({ className, ...props })=>/*#__PURE__*/ _jsx("dl", {
|
|
4
|
+
className: cn('grid grid-cols-1 text-base/6 sm:grid-cols-[min(50%,20rem)_auto] sm:text-sm/6', className),
|
|
5
|
+
"data-slot": "description-list",
|
|
6
|
+
...props
|
|
7
|
+
});
|
|
8
|
+
export const DescriptionTerm = ({ className, ...props })=>/*#__PURE__*/ _jsx("dt", {
|
|
9
|
+
className: cn('col-start-1 border-t border-border pt-3 text-muted-foreground first:border-none sm:py-3 dark:border-border-dark dark:text-muted-foreground-dark', className),
|
|
10
|
+
"data-slot": "description-term",
|
|
11
|
+
...props
|
|
12
|
+
});
|
|
13
|
+
export const DescriptionDetails = ({ className, ...props })=>/*#__PURE__*/ _jsx("dd", {
|
|
14
|
+
className: cn('pt-1 pb-3 text-foreground sm:border-t sm:border-border sm:py-3 sm:[&:nth-of-type(1)]:border-none dark:text-foreground-dark dark:sm:border-border-dark', className),
|
|
15
|
+
"data-slot": "description-details",
|
|
16
|
+
...props
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L2dvdGhhbWpzL3NyYy9jb21wb25lbnRzL0Rlc2NyaXB0aW9uTGlzdC9EZXNjcmlwdGlvbkxpc3QudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Y259IGZyb20gJ0BubGFicy91dGlscyc7XG5cbmltcG9ydCB0eXBlIHtDb21wb25lbnRQcm9wc1dpdGhvdXRSZWZ9IGZyb20gJ3JlYWN0JztcblxuZXhwb3J0IGNvbnN0IERlc2NyaXB0aW9uTGlzdCA9ICh7XG4gIGNsYXNzTmFtZSxcbiAgLi4ucHJvcHNcbn06IENvbXBvbmVudFByb3BzV2l0aG91dFJlZjwnZGwnPikgPT4gKFxuICA8ZGxcbiAgICBjbGFzc05hbWU9e2NuKCdncmlkIGdyaWQtY29scy0xIHRleHQtYmFzZS82IHNtOmdyaWQtY29scy1bbWluKDUwJSwyMHJlbSlfYXV0b10gc206dGV4dC1zbS82JywgY2xhc3NOYW1lKX1cbiAgICBkYXRhLXNsb3Q9XCJkZXNjcmlwdGlvbi1saXN0XCJcbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pO1xuXG5leHBvcnQgY29uc3QgRGVzY3JpcHRpb25UZXJtID0gKHtcbiAgY2xhc3NOYW1lLFxuICAuLi5wcm9wc1xufTogQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPCdkdCc+KSA9PiAoXG4gIDxkdFxuICAgIGNsYXNzTmFtZT17Y24oJ2NvbC1zdGFydC0xIGJvcmRlci10IGJvcmRlci1ib3JkZXIgcHQtMyB0ZXh0LW11dGVkLWZvcmVncm91bmQgZmlyc3Q6Ym9yZGVyLW5vbmUgc206cHktMyBkYXJrOmJvcmRlci1ib3JkZXItZGFyayBkYXJrOnRleHQtbXV0ZWQtZm9yZWdyb3VuZC1kYXJrJywgY2xhc3NOYW1lKX1cbiAgICBkYXRhLXNsb3Q9XCJkZXNjcmlwdGlvbi10ZXJtXCJcbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pO1xuXG5leHBvcnQgY29uc3QgRGVzY3JpcHRpb25EZXRhaWxzID0gKHtcbiAgY2xhc3NOYW1lLFxuICAuLi5wcm9wc1xufTogQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPCdkZCc+KSA9PiAoXG4gIDxkZFxuICAgIGNsYXNzTmFtZT17Y24oJ3B0LTEgcGItMyB0ZXh0LWZvcmVncm91bmQgc206Ym9yZGVyLXQgc206Ym9yZGVyLWJvcmRlciBzbTpweS0zIHNtOlsmOm50aC1vZi10eXBlKDEpXTpib3JkZXItbm9uZSBkYXJrOnRleHQtZm9yZWdyb3VuZC1kYXJrIGRhcms6c206Ym9yZGVyLWJvcmRlci1kYXJrJywgY2xhc3NOYW1lKX1cbiAgICBkYXRhLXNsb3Q9XCJkZXNjcmlwdGlvbi1kZXRhaWxzXCJcbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pO1xuIl0sIm5hbWVzIjpbImNuIiwiRGVzY3JpcHRpb25MaXN0IiwiY2xhc3NOYW1lIiwicHJvcHMiLCJkbCIsImRhdGEtc2xvdCIsIkRlc2NyaXB0aW9uVGVybSIsImR0IiwiRGVzY3JpcHRpb25EZXRhaWxzIiwiZGQiXSwibWFwcGluZ3MiOiI7QUFBQSxTQUFRQSxFQUFFLFFBQU8sZUFBZTtBQUloQyxPQUFPLE1BQU1DLGtCQUFrQixDQUFDLEVBQzlCQyxTQUFTLEVBQ1QsR0FBR0MsT0FDNEIsaUJBQy9CLEtBQUNDO1FBQ0NGLFdBQVdGLEdBQUcsZ0ZBQWdGRTtRQUM5RkcsYUFBVTtRQUNULEdBQUdGLEtBQUs7T0FFWDtBQUVGLE9BQU8sTUFBTUcsa0JBQWtCLENBQUMsRUFDOUJKLFNBQVMsRUFDVCxHQUFHQyxPQUM0QixpQkFDL0IsS0FBQ0k7UUFDQ0wsV0FBV0YsR0FBRyxtSkFBbUpFO1FBQ2pLRyxhQUFVO1FBQ1QsR0FBR0YsS0FBSztPQUVYO0FBRUYsT0FBTyxNQUFNSyxxQkFBcUIsQ0FBQyxFQUNqQ04sU0FBUyxFQUNULEdBQUdDLE9BQzRCLGlCQUMvQixLQUFDTTtRQUNDUCxXQUFXRixHQUFHLHlKQUF5SkU7UUFDdktHLGFBQVU7UUFDVCxHQUFHRixLQUFLO09BRVgifQ==
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { interactWithCanvas } from '../../utils/storyInteractions.js';
|
|
4
|
+
import { DescriptionDetails, DescriptionList, DescriptionTerm } from './DescriptionList.js';
|
|
5
|
+
const meta = {
|
|
6
|
+
component: DescriptionList,
|
|
7
|
+
parameters: {
|
|
8
|
+
layout: 'centered'
|
|
9
|
+
},
|
|
10
|
+
title: 'Components/DescriptionList'
|
|
11
|
+
};
|
|
12
|
+
export default meta;
|
|
13
|
+
export const Default = {
|
|
14
|
+
play: interactWithCanvas,
|
|
15
|
+
render: ()=>/*#__PURE__*/ _jsxs(DescriptionList, {
|
|
16
|
+
className: "w-96",
|
|
17
|
+
children: [
|
|
18
|
+
/*#__PURE__*/ _jsx(DescriptionTerm, {
|
|
19
|
+
children: "Status"
|
|
20
|
+
}),
|
|
21
|
+
/*#__PURE__*/ _jsx(DescriptionDetails, {
|
|
22
|
+
children: "Active"
|
|
23
|
+
}),
|
|
24
|
+
/*#__PURE__*/ _jsx(DescriptionTerm, {
|
|
25
|
+
children: "Owner"
|
|
26
|
+
}),
|
|
27
|
+
/*#__PURE__*/ _jsx(DescriptionDetails, {
|
|
28
|
+
children: "Nitrogen Labs"
|
|
29
|
+
})
|
|
30
|
+
]
|
|
31
|
+
})
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L2dvdGhhbWpzL3NyYy9jb21wb25lbnRzL0Rlc2NyaXB0aW9uTGlzdC9EZXNjcmlwdGlvbkxpc3Quc3Rvcmllcy50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7aW50ZXJhY3RXaXRoQ2FudmFzfSBmcm9tICcuLi8uLi91dGlscy9zdG9yeUludGVyYWN0aW9ucy5qcyc7XG5pbXBvcnQge0Rlc2NyaXB0aW9uRGV0YWlscywgRGVzY3JpcHRpb25MaXN0LCBEZXNjcmlwdGlvblRlcm19IGZyb20gJy4vRGVzY3JpcHRpb25MaXN0LmpzJztcblxuaW1wb3J0IHR5cGUge01ldGEsIFN0b3J5T2JqfSBmcm9tICdAbmxhYnMvbGV4L3N0b3J5Ym9vayc7XG5cbmNvbnN0IG1ldGE6IE1ldGE8dHlwZW9mIERlc2NyaXB0aW9uTGlzdD4gPSB7XG4gIGNvbXBvbmVudDogRGVzY3JpcHRpb25MaXN0LFxuICBwYXJhbWV0ZXJzOiB7XG4gICAgbGF5b3V0OiAnY2VudGVyZWQnXG4gIH0sXG4gIHRpdGxlOiAnQ29tcG9uZW50cy9EZXNjcmlwdGlvbkxpc3QnXG59O1xuXG5leHBvcnQgZGVmYXVsdCBtZXRhO1xuXG50eXBlIFN0b3J5ID0gU3RvcnlPYmo8dHlwZW9mIERlc2NyaXB0aW9uTGlzdD47XG5cbmV4cG9ydCBjb25zdCBEZWZhdWx0OiBTdG9yeSA9IHtcbiAgcGxheTogaW50ZXJhY3RXaXRoQ2FudmFzLFxuICByZW5kZXI6ICgpID0+IChcbiAgICA8RGVzY3JpcHRpb25MaXN0IGNsYXNzTmFtZT1cInctOTZcIj5cbiAgICAgIDxEZXNjcmlwdGlvblRlcm0+U3RhdHVzPC9EZXNjcmlwdGlvblRlcm0+XG4gICAgICA8RGVzY3JpcHRpb25EZXRhaWxzPkFjdGl2ZTwvRGVzY3JpcHRpb25EZXRhaWxzPlxuICAgICAgPERlc2NyaXB0aW9uVGVybT5Pd25lcjwvRGVzY3JpcHRpb25UZXJtPlxuICAgICAgPERlc2NyaXB0aW9uRGV0YWlscz5OaXRyb2dlbiBMYWJzPC9EZXNjcmlwdGlvbkRldGFpbHM+XG4gICAgPC9EZXNjcmlwdGlvbkxpc3Q+XG4gIClcbn07XG4iXSwibmFtZXMiOlsiUmVhY3QiLCJpbnRlcmFjdFdpdGhDYW52YXMiLCJEZXNjcmlwdGlvbkRldGFpbHMiLCJEZXNjcmlwdGlvbkxpc3QiLCJEZXNjcmlwdGlvblRlcm0iLCJtZXRhIiwiY29tcG9uZW50IiwicGFyYW1ldGVycyIsImxheW91dCIsInRpdGxlIiwiRGVmYXVsdCIsInBsYXkiLCJyZW5kZXIiLCJjbGFzc05hbWUiXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPQSxXQUFXLFFBQVE7QUFDMUIsU0FBUUMsa0JBQWtCLFFBQU8sbUNBQW1DO0FBQ3BFLFNBQVFDLGtCQUFrQixFQUFFQyxlQUFlLEVBQUVDLGVBQWUsUUFBTyx1QkFBdUI7QUFJMUYsTUFBTUMsT0FBcUM7SUFDekNDLFdBQVdIO0lBQ1hJLFlBQVk7UUFDVkMsUUFBUTtJQUNWO0lBQ0FDLE9BQU87QUFDVDtBQUVBLGVBQWVKLEtBQUs7QUFJcEIsT0FBTyxNQUFNSyxVQUFpQjtJQUM1QkMsTUFBTVY7SUFDTlcsUUFBUSxrQkFDTixNQUFDVDtZQUFnQlUsV0FBVTs7OEJBQ3pCLEtBQUNUOzhCQUFnQjs7OEJBQ2pCLEtBQUNGOzhCQUFtQjs7OEJBQ3BCLEtBQUNFOzhCQUFnQjs7OEJBQ2pCLEtBQUNGOzhCQUFtQjs7OztBQUcxQixFQUFFIn0=
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { HTMLAttributes, ReactNode, Ref } from 'react';
|
|
2
|
+
export type DialogSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl' | '4xl' | '5xl';
|
|
3
|
+
export interface DialogProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onClose'> {
|
|
4
|
+
readonly children?: ReactNode;
|
|
5
|
+
readonly open: boolean;
|
|
6
|
+
readonly onClose: (open: boolean) => void;
|
|
7
|
+
readonly size?: DialogSize;
|
|
8
|
+
}
|
|
9
|
+
export declare const Dialog: ({ children, className, onClose, open, size, ...props }: DialogProps) => import("react").JSX.Element;
|
|
10
|
+
export interface DialogTitleProps extends HTMLAttributes<HTMLHeadingElement> {
|
|
11
|
+
readonly ref?: Ref<HTMLHeadingElement>;
|
|
12
|
+
}
|
|
13
|
+
export declare const DialogTitle: ({ className, ref, ...props }: DialogTitleProps) => import("react").JSX.Element;
|
|
14
|
+
export interface DialogDescriptionProps extends HTMLAttributes<HTMLParagraphElement> {
|
|
15
|
+
readonly ref?: Ref<HTMLParagraphElement>;
|
|
16
|
+
}
|
|
17
|
+
export declare const DialogDescription: ({ className, ref, ...props }: DialogDescriptionProps) => import("react").JSX.Element;
|
|
18
|
+
export interface DialogBodyProps extends HTMLAttributes<HTMLDivElement> {
|
|
19
|
+
readonly ref?: Ref<HTMLDivElement>;
|
|
20
|
+
}
|
|
21
|
+
export declare const DialogBody: ({ className, ref, ...props }: DialogBodyProps) => import("react").JSX.Element;
|
|
22
|
+
export interface DialogActionsProps extends HTMLAttributes<HTMLDivElement> {
|
|
23
|
+
readonly ref?: Ref<HTMLDivElement>;
|
|
24
|
+
}
|
|
25
|
+
export declare const DialogActions: ({ className, ref, ...props }: DialogActionsProps) => import("react").JSX.Element;
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Dialog as HeadlessDialog, DialogPanel, DialogTitle as HeadlessDialogTitle, Description } from '@headlessui/react';
|
|
3
|
+
import { cn } from '@nlabs/utils';
|
|
4
|
+
const dialogSizeClasses = {
|
|
5
|
+
'2xl': 'sm:max-w-2xl',
|
|
6
|
+
'3xl': 'sm:max-w-3xl',
|
|
7
|
+
'4xl': 'sm:max-w-4xl',
|
|
8
|
+
'5xl': 'sm:max-w-5xl',
|
|
9
|
+
lg: 'sm:max-w-lg',
|
|
10
|
+
md: 'sm:max-w-md',
|
|
11
|
+
sm: 'sm:max-w-sm',
|
|
12
|
+
xl: 'sm:max-w-xl',
|
|
13
|
+
xs: 'sm:max-w-xs'
|
|
14
|
+
};
|
|
15
|
+
export const Dialog = ({ children, className, onClose, open, size = 'lg', ...props })=>/*#__PURE__*/ _jsxs(HeadlessDialog, {
|
|
16
|
+
className: "relative z-50",
|
|
17
|
+
"data-slot": "dialog",
|
|
18
|
+
onClose: onClose,
|
|
19
|
+
open: open,
|
|
20
|
+
children: [
|
|
21
|
+
/*#__PURE__*/ _jsx("div", {
|
|
22
|
+
className: "fixed inset-0 bg-zinc-900/45 backdrop-blur-md",
|
|
23
|
+
"data-slot": "dialog-backdrop"
|
|
24
|
+
}),
|
|
25
|
+
/*#__PURE__*/ _jsx("div", {
|
|
26
|
+
className: "fixed inset-0 w-screen overflow-y-auto p-4 sm:p-6 md:p-8",
|
|
27
|
+
"data-slot": "dialog-scroll-container",
|
|
28
|
+
children: /*#__PURE__*/ _jsx("div", {
|
|
29
|
+
className: "flex min-h-full items-end justify-center sm:items-center",
|
|
30
|
+
"data-slot": "dialog-container",
|
|
31
|
+
children: /*#__PURE__*/ _jsx(DialogPanel, {
|
|
32
|
+
className: cn('w-full rounded-2xl border border-white/70 bg-white/95 p-6 shadow-2xl shadow-zinc-950/25 ring-1 ring-zinc-950/5 backdrop-blur-xl sm:p-7 dark:border-white/10 dark:bg-zinc-900/95 dark:ring-white/10', dialogSizeClasses[size], className),
|
|
33
|
+
"data-slot": "dialog-panel",
|
|
34
|
+
...props,
|
|
35
|
+
children: children
|
|
36
|
+
})
|
|
37
|
+
})
|
|
38
|
+
})
|
|
39
|
+
]
|
|
40
|
+
});
|
|
41
|
+
export const DialogTitle = ({ className, ref, ...props })=>/*#__PURE__*/ _jsx(HeadlessDialogTitle, {
|
|
42
|
+
className: cn('text-lg font-semibold tracking-tight text-zinc-950 dark:text-white', className),
|
|
43
|
+
"data-slot": "dialog-title",
|
|
44
|
+
ref: ref,
|
|
45
|
+
...props
|
|
46
|
+
});
|
|
47
|
+
export const DialogDescription = ({ className, ref, ...props })=>/*#__PURE__*/ _jsx(Description, {
|
|
48
|
+
className: cn('mt-2 text-sm/6 text-zinc-600 dark:text-zinc-400', className),
|
|
49
|
+
"data-slot": "dialog-description",
|
|
50
|
+
ref: ref,
|
|
51
|
+
...props
|
|
52
|
+
});
|
|
53
|
+
export const DialogBody = ({ className, ref, ...props })=>/*#__PURE__*/ _jsx("div", {
|
|
54
|
+
className: cn('mt-6 max-h-[65vh] overflow-y-auto text-sm/6 text-zinc-950 dark:text-white', className),
|
|
55
|
+
"data-slot": "dialog-body",
|
|
56
|
+
ref: ref,
|
|
57
|
+
...props
|
|
58
|
+
});
|
|
59
|
+
export const DialogActions = ({ className, ref, ...props })=>/*#__PURE__*/ _jsx("div", {
|
|
60
|
+
className: cn('mt-8 flex flex-col-reverse gap-3 sm:flex-row sm:justify-end', className),
|
|
61
|
+
"data-slot": "dialog-actions",
|
|
62
|
+
ref: ref,
|
|
63
|
+
...props
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L2dvdGhhbWpzL3NyYy9jb21wb25lbnRzL0RpYWxvZy9EaWFsb2cudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIERpYWxvZyBhcyBIZWFkbGVzc0RpYWxvZyxcbiAgRGlhbG9nUGFuZWwsXG4gIERpYWxvZ1RpdGxlIGFzIEhlYWRsZXNzRGlhbG9nVGl0bGUsXG4gIERlc2NyaXB0aW9uXG59IGZyb20gJ0BoZWFkbGVzc3VpL3JlYWN0JztcbmltcG9ydCB7Y259IGZyb20gJ0BubGFicy91dGlscyc7XG5cbmltcG9ydCB0eXBlIHtIVE1MQXR0cmlidXRlcywgUmVhY3ROb2RlLCBSZWZ9IGZyb20gJ3JlYWN0JztcblxuZXhwb3J0IHR5cGUgRGlhbG9nU2l6ZSA9ICd4cycgfCAnc20nIHwgJ21kJyB8ICdsZycgfCAneGwnIHwgJzJ4bCcgfCAnM3hsJyB8ICc0eGwnIHwgJzV4bCc7XG5cbmNvbnN0IGRpYWxvZ1NpemVDbGFzc2VzOiBSZWNvcmQ8RGlhbG9nU2l6ZSwgc3RyaW5nPiA9IHtcbiAgJzJ4bCc6ICdzbTptYXgtdy0yeGwnLFxuICAnM3hsJzogJ3NtOm1heC13LTN4bCcsXG4gICc0eGwnOiAnc206bWF4LXctNHhsJyxcbiAgJzV4bCc6ICdzbTptYXgtdy01eGwnLFxuICBsZzogJ3NtOm1heC13LWxnJyxcbiAgbWQ6ICdzbTptYXgtdy1tZCcsXG4gIHNtOiAnc206bWF4LXctc20nLFxuICB4bDogJ3NtOm1heC13LXhsJyxcbiAgeHM6ICdzbTptYXgtdy14cydcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGlhbG9nUHJvcHMgZXh0ZW5kcyBPbWl0PEhUTUxBdHRyaWJ1dGVzPEhUTUxEaXZFbGVtZW50PiwgJ29uQ2xvc2UnPiB7XG4gIHJlYWRvbmx5IGNoaWxkcmVuPzogUmVhY3ROb2RlO1xuICByZWFkb25seSBvcGVuOiBib29sZWFuO1xuICByZWFkb25seSBvbkNsb3NlOiAob3BlbjogYm9vbGVhbikgPT4gdm9pZDtcbiAgcmVhZG9ubHkgc2l6ZT86IERpYWxvZ1NpemU7XG59XG5cbmV4cG9ydCBjb25zdCBEaWFsb2cgPSAoe1xuICBjaGlsZHJlbixcbiAgY2xhc3NOYW1lLFxuICBvbkNsb3NlLFxuICBvcGVuLFxuICBzaXplID0gJ2xnJyxcbiAgLi4ucHJvcHNcbn06IERpYWxvZ1Byb3BzKSA9PiAoXG4gIDxIZWFkbGVzc0RpYWxvZyBjbGFzc05hbWU9XCJyZWxhdGl2ZSB6LTUwXCIgZGF0YS1zbG90PVwiZGlhbG9nXCIgb25DbG9zZT17b25DbG9zZX0gb3Blbj17b3Blbn0+XG4gICAgPGRpdiBjbGFzc05hbWU9XCJmaXhlZCBpbnNldC0wIGJnLXppbmMtOTAwLzQ1IGJhY2tkcm9wLWJsdXItbWRcIiBkYXRhLXNsb3Q9XCJkaWFsb2ctYmFja2Ryb3BcIiAvPlxuICAgIDxkaXYgY2xhc3NOYW1lPVwiZml4ZWQgaW5zZXQtMCB3LXNjcmVlbiBvdmVyZmxvdy15LWF1dG8gcC00IHNtOnAtNiBtZDpwLThcIiBkYXRhLXNsb3Q9XCJkaWFsb2ctc2Nyb2xsLWNvbnRhaW5lclwiPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IG1pbi1oLWZ1bGwgaXRlbXMtZW5kIGp1c3RpZnktY2VudGVyIHNtOml0ZW1zLWNlbnRlclwiIGRhdGEtc2xvdD1cImRpYWxvZy1jb250YWluZXJcIj5cbiAgICAgICAgPERpYWxvZ1BhbmVsXG4gICAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgICd3LWZ1bGwgcm91bmRlZC0yeGwgYm9yZGVyIGJvcmRlci13aGl0ZS83MCBiZy13aGl0ZS85NSBwLTYgc2hhZG93LTJ4bCBzaGFkb3ctemluYy05NTAvMjUgcmluZy0xIHJpbmctemluYy05NTAvNSBiYWNrZHJvcC1ibHVyLXhsIHNtOnAtNyBkYXJrOmJvcmRlci13aGl0ZS8xMCBkYXJrOmJnLXppbmMtOTAwLzk1IGRhcms6cmluZy13aGl0ZS8xMCcsXG4gICAgICAgICAgICBkaWFsb2dTaXplQ2xhc3Nlc1tzaXplXSxcbiAgICAgICAgICAgIGNsYXNzTmFtZVxuICAgICAgICAgICl9XG4gICAgICAgICAgZGF0YS1zbG90PVwiZGlhbG9nLXBhbmVsXCJcbiAgICAgICAgICB7Li4ucHJvcHN9XG4gICAgICAgID5cbiAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgIDwvRGlhbG9nUGFuZWw+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9IZWFkbGVzc0RpYWxvZz5cbik7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGlhbG9nVGl0bGVQcm9wcyBleHRlbmRzIEhUTUxBdHRyaWJ1dGVzPEhUTUxIZWFkaW5nRWxlbWVudD4ge1xuICByZWFkb25seSByZWY/OiBSZWY8SFRNTEhlYWRpbmdFbGVtZW50Pjtcbn1cblxuZXhwb3J0IGNvbnN0IERpYWxvZ1RpdGxlID0gKHtcbiAgY2xhc3NOYW1lLFxuICByZWYsXG4gIC4uLnByb3BzXG59OiBEaWFsb2dUaXRsZVByb3BzKSA9PiAoXG4gIDxIZWFkbGVzc0RpYWxvZ1RpdGxlXG4gICAgY2xhc3NOYW1lPXtjbigndGV4dC1sZyBmb250LXNlbWlib2xkIHRyYWNraW5nLXRpZ2h0IHRleHQtemluYy05NTAgZGFyazp0ZXh0LXdoaXRlJywgY2xhc3NOYW1lKX1cbiAgICBkYXRhLXNsb3Q9XCJkaWFsb2ctdGl0bGVcIlxuICAgIHJlZj17cmVmfVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbik7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGlhbG9nRGVzY3JpcHRpb25Qcm9wcyBleHRlbmRzIEhUTUxBdHRyaWJ1dGVzPEhUTUxQYXJhZ3JhcGhFbGVtZW50PiB7XG4gIHJlYWRvbmx5IHJlZj86IFJlZjxIVE1MUGFyYWdyYXBoRWxlbWVudD47XG59XG5cbmV4cG9ydCBjb25zdCBEaWFsb2dEZXNjcmlwdGlvbiA9ICh7XG4gIGNsYXNzTmFtZSxcbiAgcmVmLFxuICAuLi5wcm9wc1xufTogRGlhbG9nRGVzY3JpcHRpb25Qcm9wcykgPT4gKFxuICA8RGVzY3JpcHRpb25cbiAgICBjbGFzc05hbWU9e2NuKCdtdC0yIHRleHQtc20vNiB0ZXh0LXppbmMtNjAwIGRhcms6dGV4dC16aW5jLTQwMCcsIGNsYXNzTmFtZSl9XG4gICAgZGF0YS1zbG90PVwiZGlhbG9nLWRlc2NyaXB0aW9uXCJcbiAgICByZWY9e3JlZn1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pO1xuXG5leHBvcnQgaW50ZXJmYWNlIERpYWxvZ0JvZHlQcm9wcyBleHRlbmRzIEhUTUxBdHRyaWJ1dGVzPEhUTUxEaXZFbGVtZW50PiB7XG4gIHJlYWRvbmx5IHJlZj86IFJlZjxIVE1MRGl2RWxlbWVudD47XG59XG5cbmV4cG9ydCBjb25zdCBEaWFsb2dCb2R5ID0gKHtcbiAgY2xhc3NOYW1lLFxuICByZWYsXG4gIC4uLnByb3BzXG59OiBEaWFsb2dCb2R5UHJvcHMpID0+IChcbiAgPGRpdlxuICAgIGNsYXNzTmFtZT17Y24oJ210LTYgbWF4LWgtWzY1dmhdIG92ZXJmbG93LXktYXV0byB0ZXh0LXNtLzYgdGV4dC16aW5jLTk1MCBkYXJrOnRleHQtd2hpdGUnLCBjbGFzc05hbWUpfVxuICAgIGRhdGEtc2xvdD1cImRpYWxvZy1ib2R5XCJcbiAgICByZWY9e3JlZn1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pO1xuXG5leHBvcnQgaW50ZXJmYWNlIERpYWxvZ0FjdGlvbnNQcm9wcyBleHRlbmRzIEhUTUxBdHRyaWJ1dGVzPEhUTUxEaXZFbGVtZW50PiB7XG4gIHJlYWRvbmx5IHJlZj86IFJlZjxIVE1MRGl2RWxlbWVudD47XG59XG5cbmV4cG9ydCBjb25zdCBEaWFsb2dBY3Rpb25zID0gKHtcbiAgY2xhc3NOYW1lLFxuICByZWYsXG4gIC4uLnByb3BzXG59OiBEaWFsb2dBY3Rpb25zUHJvcHMpID0+IChcbiAgPGRpdlxuICAgIGNsYXNzTmFtZT17Y24oJ210LTggZmxleCBmbGV4LWNvbC1yZXZlcnNlIGdhcC0zIHNtOmZsZXgtcm93IHNtOmp1c3RpZnktZW5kJywgY2xhc3NOYW1lKX1cbiAgICBkYXRhLXNsb3Q9XCJkaWFsb2ctYWN0aW9uc1wiXG4gICAgcmVmPXtyZWZ9XG4gICAgey4uLnByb3BzfVxuICAvPlxuKTtcbiJdLCJuYW1lcyI6WyJEaWFsb2ciLCJIZWFkbGVzc0RpYWxvZyIsIkRpYWxvZ1BhbmVsIiwiRGlhbG9nVGl0bGUiLCJIZWFkbGVzc0RpYWxvZ1RpdGxlIiwiRGVzY3JpcHRpb24iLCJjbiIsImRpYWxvZ1NpemVDbGFzc2VzIiwibGciLCJtZCIsInNtIiwieGwiLCJ4cyIsImNoaWxkcmVuIiwiY2xhc3NOYW1lIiwib25DbG9zZSIsIm9wZW4iLCJzaXplIiwicHJvcHMiLCJkYXRhLXNsb3QiLCJkaXYiLCJyZWYiLCJEaWFsb2dEZXNjcmlwdGlvbiIsIkRpYWxvZ0JvZHkiLCJEaWFsb2dBY3Rpb25zIl0sIm1hcHBpbmdzIjoiO0FBQUEsU0FDRUEsVUFBVUMsY0FBYyxFQUN4QkMsV0FBVyxFQUNYQyxlQUFlQyxtQkFBbUIsRUFDbENDLFdBQVcsUUFDTixvQkFBb0I7QUFDM0IsU0FBUUMsRUFBRSxRQUFPLGVBQWU7QUFNaEMsTUFBTUMsb0JBQWdEO0lBQ3BELE9BQU87SUFDUCxPQUFPO0lBQ1AsT0FBTztJQUNQLE9BQU87SUFDUEMsSUFBSTtJQUNKQyxJQUFJO0lBQ0pDLElBQUk7SUFDSkMsSUFBSTtJQUNKQyxJQUFJO0FBQ047QUFTQSxPQUFPLE1BQU1aLFNBQVMsQ0FBQyxFQUNyQmEsUUFBUSxFQUNSQyxTQUFTLEVBQ1RDLE9BQU8sRUFDUEMsSUFBSSxFQUNKQyxPQUFPLElBQUksRUFDWCxHQUFHQyxPQUNTLGlCQUNaLE1BQUNqQjtRQUFlYSxXQUFVO1FBQWdCSyxhQUFVO1FBQVNKLFNBQVNBO1FBQVNDLE1BQU1BOzswQkFDbkYsS0FBQ0k7Z0JBQUlOLFdBQVU7Z0JBQWdESyxhQUFVOzswQkFDekUsS0FBQ0M7Z0JBQUlOLFdBQVU7Z0JBQTJESyxhQUFVOzBCQUNsRixjQUFBLEtBQUNDO29CQUFJTixXQUFVO29CQUEyREssYUFBVTs4QkFDbEYsY0FBQSxLQUFDakI7d0JBQ0NZLFdBQVdSLEdBQ1Qsc01BQ0FDLGlCQUFpQixDQUFDVSxLQUFLLEVBQ3ZCSDt3QkFFRkssYUFBVTt3QkFDVCxHQUFHRCxLQUFLO2tDQUVSTDs7Ozs7T0FLVDtBQU1GLE9BQU8sTUFBTVYsY0FBYyxDQUFDLEVBQzFCVyxTQUFTLEVBQ1RPLEdBQUcsRUFDSCxHQUFHSCxPQUNjLGlCQUNqQixLQUFDZDtRQUNDVSxXQUFXUixHQUFHLHNFQUFzRVE7UUFDcEZLLGFBQVU7UUFDVkUsS0FBS0E7UUFDSixHQUFHSCxLQUFLO09BRVg7QUFNRixPQUFPLE1BQU1JLG9CQUFvQixDQUFDLEVBQ2hDUixTQUFTLEVBQ1RPLEdBQUcsRUFDSCxHQUFHSCxPQUNvQixpQkFDdkIsS0FBQ2I7UUFDQ1MsV0FBV1IsR0FBRyxtREFBbURRO1FBQ2pFSyxhQUFVO1FBQ1ZFLEtBQUtBO1FBQ0osR0FBR0gsS0FBSztPQUVYO0FBTUYsT0FBTyxNQUFNSyxhQUFhLENBQUMsRUFDekJULFNBQVMsRUFDVE8sR0FBRyxFQUNILEdBQUdILE9BQ2EsaUJBQ2hCLEtBQUNFO1FBQ0NOLFdBQVdSLEdBQUcsNkVBQTZFUTtRQUMzRkssYUFBVTtRQUNWRSxLQUFLQTtRQUNKLEdBQUdILEtBQUs7T0FFWDtBQU1GLE9BQU8sTUFBTU0sZ0JBQWdCLENBQUMsRUFDNUJWLFNBQVMsRUFDVE8sR0FBRyxFQUNILEdBQUdILE9BQ2dCLGlCQUNuQixLQUFDRTtRQUNDTixXQUFXUixHQUFHLCtEQUErRFE7UUFDN0VLLGFBQVU7UUFDVkUsS0FBS0E7UUFDSixHQUFHSCxLQUFLO09BRVgifQ==
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import React, { useEffect, useState } from 'react';
|
|
3
|
+
import { interactWithCanvas } from '../../utils/storyInteractions.js';
|
|
4
|
+
import { Button } from '../Button/Button.js';
|
|
5
|
+
import { Dialog, DialogActions, DialogBody, DialogDescription, DialogTitle } from './Dialog.js';
|
|
6
|
+
const DialogStory = (args)=>{
|
|
7
|
+
const [open, setOpen] = useState(args.open ?? true);
|
|
8
|
+
useEffect(()=>{
|
|
9
|
+
setOpen(args.open ?? true);
|
|
10
|
+
}, [
|
|
11
|
+
args.open
|
|
12
|
+
]);
|
|
13
|
+
return /*#__PURE__*/ _jsxs(_Fragment, {
|
|
14
|
+
children: [
|
|
15
|
+
/*#__PURE__*/ _jsx(Button, {
|
|
16
|
+
label: "Open dialog",
|
|
17
|
+
onClick: ()=>setOpen(true)
|
|
18
|
+
}),
|
|
19
|
+
/*#__PURE__*/ _jsxs(Dialog, {
|
|
20
|
+
...args,
|
|
21
|
+
onClose: setOpen,
|
|
22
|
+
open: open,
|
|
23
|
+
children: [
|
|
24
|
+
/*#__PURE__*/ _jsx(DialogTitle, {
|
|
25
|
+
children: "Archive project"
|
|
26
|
+
}),
|
|
27
|
+
/*#__PURE__*/ _jsx(DialogDescription, {
|
|
28
|
+
children: "Archived projects can be restored from workspace settings."
|
|
29
|
+
}),
|
|
30
|
+
/*#__PURE__*/ _jsx(DialogBody, {
|
|
31
|
+
children: "Use this dialog to confirm a destructive workflow without leaving the current task."
|
|
32
|
+
}),
|
|
33
|
+
/*#__PURE__*/ _jsxs(DialogActions, {
|
|
34
|
+
children: [
|
|
35
|
+
/*#__PURE__*/ _jsx(Button, {
|
|
36
|
+
label: "Cancel",
|
|
37
|
+
onClick: ()=>setOpen(false),
|
|
38
|
+
variant: "outlined"
|
|
39
|
+
}),
|
|
40
|
+
/*#__PURE__*/ _jsx(Button, {
|
|
41
|
+
color: "error",
|
|
42
|
+
label: "Archive",
|
|
43
|
+
onClick: ()=>setOpen(false)
|
|
44
|
+
})
|
|
45
|
+
]
|
|
46
|
+
})
|
|
47
|
+
]
|
|
48
|
+
})
|
|
49
|
+
]
|
|
50
|
+
});
|
|
51
|
+
};
|
|
52
|
+
const meta = {
|
|
53
|
+
argTypes: {
|
|
54
|
+
open: {
|
|
55
|
+
control: 'boolean'
|
|
56
|
+
},
|
|
57
|
+
size: {
|
|
58
|
+
control: 'select',
|
|
59
|
+
options: [
|
|
60
|
+
'xs',
|
|
61
|
+
'sm',
|
|
62
|
+
'md',
|
|
63
|
+
'lg',
|
|
64
|
+
'xl',
|
|
65
|
+
'2xl',
|
|
66
|
+
'3xl',
|
|
67
|
+
'4xl',
|
|
68
|
+
'5xl'
|
|
69
|
+
]
|
|
70
|
+
}
|
|
71
|
+
},
|
|
72
|
+
component: Dialog,
|
|
73
|
+
parameters: {
|
|
74
|
+
layout: 'centered'
|
|
75
|
+
},
|
|
76
|
+
title: 'Components/Dialog'
|
|
77
|
+
};
|
|
78
|
+
export default meta;
|
|
79
|
+
export const Default = {
|
|
80
|
+
args: {
|
|
81
|
+
open: true,
|
|
82
|
+
size: 'lg'
|
|
83
|
+
},
|
|
84
|
+
play: interactWithCanvas,
|
|
85
|
+
render: DialogStory
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L2dvdGhhbWpzL3NyYy9jb21wb25lbnRzL0RpYWxvZy9EaWFsb2cuc3Rvcmllcy50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7dXNlRWZmZWN0LCB1c2VTdGF0ZX0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtpbnRlcmFjdFdpdGhDYW52YXN9IGZyb20gJy4uLy4uL3V0aWxzL3N0b3J5SW50ZXJhY3Rpb25zLmpzJztcbmltcG9ydCB7QnV0dG9ufSBmcm9tICcuLi9CdXR0b24vQnV0dG9uLmpzJztcbmltcG9ydCB7RGlhbG9nLCBEaWFsb2dBY3Rpb25zLCBEaWFsb2dCb2R5LCBEaWFsb2dEZXNjcmlwdGlvbiwgRGlhbG9nVGl0bGV9IGZyb20gJy4vRGlhbG9nLmpzJztcblxuaW1wb3J0IHR5cGUge01ldGEsIFN0b3J5T2JqfSBmcm9tICdAbmxhYnMvbGV4L3N0b3J5Ym9vayc7XG5pbXBvcnQgdHlwZSB7Q29tcG9uZW50UHJvcHN9IGZyb20gJ3JlYWN0JztcblxuY29uc3QgRGlhbG9nU3RvcnkgPSAoYXJnczogT21pdDxDb21wb25lbnRQcm9wczx0eXBlb2YgRGlhbG9nPiwgJ29uQ2xvc2UnIHwgJ29wZW4nPiAmIHtvcGVuPzogYm9vbGVhbn0pID0+IHtcbiAgY29uc3QgW29wZW4sIHNldE9wZW5dID0gdXNlU3RhdGUoYXJncy5vcGVuID8/IHRydWUpO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0T3BlbihhcmdzLm9wZW4gPz8gdHJ1ZSk7XG4gIH0sIFthcmdzLm9wZW5dKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8QnV0dG9uIGxhYmVsPVwiT3BlbiBkaWFsb2dcIiBvbkNsaWNrPXsoKSA9PiBzZXRPcGVuKHRydWUpfSAvPlxuICAgICAgPERpYWxvZyB7Li4uYXJnc30gb25DbG9zZT17c2V0T3Blbn0gb3Blbj17b3Blbn0+XG4gICAgICAgIDxEaWFsb2dUaXRsZT5BcmNoaXZlIHByb2plY3Q8L0RpYWxvZ1RpdGxlPlxuICAgICAgICA8RGlhbG9nRGVzY3JpcHRpb24+QXJjaGl2ZWQgcHJvamVjdHMgY2FuIGJlIHJlc3RvcmVkIGZyb20gd29ya3NwYWNlIHNldHRpbmdzLjwvRGlhbG9nRGVzY3JpcHRpb24+XG4gICAgICAgIDxEaWFsb2dCb2R5PlVzZSB0aGlzIGRpYWxvZyB0byBjb25maXJtIGEgZGVzdHJ1Y3RpdmUgd29ya2Zsb3cgd2l0aG91dCBsZWF2aW5nIHRoZSBjdXJyZW50IHRhc2suPC9EaWFsb2dCb2R5PlxuICAgICAgICA8RGlhbG9nQWN0aW9ucz5cbiAgICAgICAgICA8QnV0dG9uIGxhYmVsPVwiQ2FuY2VsXCIgb25DbGljaz17KCkgPT4gc2V0T3BlbihmYWxzZSl9IHZhcmlhbnQ9XCJvdXRsaW5lZFwiIC8+XG4gICAgICAgICAgPEJ1dHRvbiBjb2xvcj1cImVycm9yXCIgbGFiZWw9XCJBcmNoaXZlXCIgb25DbGljaz17KCkgPT4gc2V0T3BlbihmYWxzZSl9IC8+XG4gICAgICAgIDwvRGlhbG9nQWN0aW9ucz5cbiAgICAgIDwvRGlhbG9nPlxuICAgIDwvPlxuICApO1xufTtcblxuY29uc3QgbWV0YTogTWV0YTx0eXBlb2YgRGlhbG9nPiA9IHtcbiAgYXJnVHlwZXM6IHtcbiAgICBvcGVuOiB7XG4gICAgICBjb250cm9sOiAnYm9vbGVhbidcbiAgICB9LFxuICAgIHNpemU6IHtcbiAgICAgIGNvbnRyb2w6ICdzZWxlY3QnLFxuICAgICAgb3B0aW9uczogWyd4cycsICdzbScsICdtZCcsICdsZycsICd4bCcsICcyeGwnLCAnM3hsJywgJzR4bCcsICc1eGwnXVxuICAgIH1cbiAgfSxcbiAgY29tcG9uZW50OiBEaWFsb2csXG4gIHBhcmFtZXRlcnM6IHtcbiAgICBsYXlvdXQ6ICdjZW50ZXJlZCdcbiAgfSxcbiAgdGl0bGU6ICdDb21wb25lbnRzL0RpYWxvZydcbn07XG5cbmV4cG9ydCBkZWZhdWx0IG1ldGE7XG5cbnR5cGUgU3RvcnkgPSBTdG9yeU9iajx0eXBlb2YgRGlhbG9nPjtcblxuZXhwb3J0IGNvbnN0IERlZmF1bHQ6IFN0b3J5ID0ge1xuICBhcmdzOiB7XG4gICAgb3BlbjogdHJ1ZSxcbiAgICBzaXplOiAnbGcnXG4gIH0gYXMgbmV2ZXIsXG4gIHBsYXk6IGludGVyYWN0V2l0aENhbnZhcyxcbiAgcmVuZGVyOiBEaWFsb2dTdG9yeSBhcyBuZXZlclxufTtcbiJdLCJuYW1lcyI6WyJSZWFjdCIsInVzZUVmZmVjdCIsInVzZVN0YXRlIiwiaW50ZXJhY3RXaXRoQ2FudmFzIiwiQnV0dG9uIiwiRGlhbG9nIiwiRGlhbG9nQWN0aW9ucyIsIkRpYWxvZ0JvZHkiLCJEaWFsb2dEZXNjcmlwdGlvbiIsIkRpYWxvZ1RpdGxlIiwiRGlhbG9nU3RvcnkiLCJhcmdzIiwib3BlbiIsInNldE9wZW4iLCJsYWJlbCIsIm9uQ2xpY2siLCJvbkNsb3NlIiwidmFyaWFudCIsImNvbG9yIiwibWV0YSIsImFyZ1R5cGVzIiwiY29udHJvbCIsInNpemUiLCJvcHRpb25zIiwiY29tcG9uZW50IiwicGFyYW1ldGVycyIsImxheW91dCIsInRpdGxlIiwiRGVmYXVsdCIsInBsYXkiLCJyZW5kZXIiXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPQSxTQUFRQyxTQUFTLEVBQUVDLFFBQVEsUUFBTyxRQUFRO0FBQ2pELFNBQVFDLGtCQUFrQixRQUFPLG1DQUFtQztBQUNwRSxTQUFRQyxNQUFNLFFBQU8sc0JBQXNCO0FBQzNDLFNBQVFDLE1BQU0sRUFBRUMsYUFBYSxFQUFFQyxVQUFVLEVBQUVDLGlCQUFpQixFQUFFQyxXQUFXLFFBQU8sY0FBYztBQUs5RixNQUFNQyxjQUFjLENBQUNDO0lBQ25CLE1BQU0sQ0FBQ0MsTUFBTUMsUUFBUSxHQUFHWCxTQUFTUyxLQUFLQyxJQUFJLElBQUk7SUFFOUNYLFVBQVU7UUFDUlksUUFBUUYsS0FBS0MsSUFBSSxJQUFJO0lBQ3ZCLEdBQUc7UUFBQ0QsS0FBS0MsSUFBSTtLQUFDO0lBRWQscUJBQ0U7OzBCQUNFLEtBQUNSO2dCQUFPVSxPQUFNO2dCQUFjQyxTQUFTLElBQU1GLFFBQVE7OzBCQUNuRCxNQUFDUjtnQkFBUSxHQUFHTSxJQUFJO2dCQUFFSyxTQUFTSDtnQkFBU0QsTUFBTUE7O2tDQUN4QyxLQUFDSDtrQ0FBWTs7a0NBQ2IsS0FBQ0Q7a0NBQWtCOztrQ0FDbkIsS0FBQ0Q7a0NBQVc7O2tDQUNaLE1BQUNEOzswQ0FDQyxLQUFDRjtnQ0FBT1UsT0FBTTtnQ0FBU0MsU0FBUyxJQUFNRixRQUFRO2dDQUFRSSxTQUFROzswQ0FDOUQsS0FBQ2I7Z0NBQU9jLE9BQU07Z0NBQVFKLE9BQU07Z0NBQVVDLFNBQVMsSUFBTUYsUUFBUTs7Ozs7Ozs7QUFLdkU7QUFFQSxNQUFNTSxPQUE0QjtJQUNoQ0MsVUFBVTtRQUNSUixNQUFNO1lBQ0pTLFNBQVM7UUFDWDtRQUNBQyxNQUFNO1lBQ0pELFNBQVM7WUFDVEUsU0FBUztnQkFBQztnQkFBTTtnQkFBTTtnQkFBTTtnQkFBTTtnQkFBTTtnQkFBTztnQkFBTztnQkFBTzthQUFNO1FBQ3JFO0lBQ0Y7SUFDQUMsV0FBV25CO0lBQ1hvQixZQUFZO1FBQ1ZDLFFBQVE7SUFDVjtJQUNBQyxPQUFPO0FBQ1Q7QUFFQSxlQUFlUixLQUFLO0FBSXBCLE9BQU8sTUFBTVMsVUFBaUI7SUFDNUJqQixNQUFNO1FBQ0pDLE1BQU07UUFDTlUsTUFBTTtJQUNSO0lBQ0FPLE1BQU0xQjtJQUNOMkIsUUFBUXBCO0FBQ1YsRUFBRSJ9
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { HTMLAttributes, ReactNode, Ref } from 'react';
|
|
2
|
+
export type DropUploadRejectionReason = 'max-files' | 'max-size' | 'type';
|
|
3
|
+
export interface DropUploadItem {
|
|
4
|
+
readonly file: File;
|
|
5
|
+
readonly id: string;
|
|
6
|
+
readonly previewUrl?: string;
|
|
7
|
+
}
|
|
8
|
+
export interface DropUploadRejection {
|
|
9
|
+
readonly file: File;
|
|
10
|
+
readonly reason: DropUploadRejectionReason;
|
|
11
|
+
}
|
|
12
|
+
export interface DropUploadProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange' | 'onDrop'> {
|
|
13
|
+
readonly accept?: string;
|
|
14
|
+
readonly browseLabel?: string;
|
|
15
|
+
readonly defaultFiles?: readonly File[];
|
|
16
|
+
readonly disabled?: boolean;
|
|
17
|
+
readonly files?: readonly File[];
|
|
18
|
+
readonly helperText?: ReactNode;
|
|
19
|
+
readonly imageOutputMimeType?: 'image/jpeg' | 'image/png' | 'image/webp';
|
|
20
|
+
readonly imageOutputQuality?: number;
|
|
21
|
+
readonly imageResizeTargetHeight?: number;
|
|
22
|
+
readonly imageResizeTargetWidth?: number;
|
|
23
|
+
readonly imageResizeUpscale?: boolean;
|
|
24
|
+
readonly label?: ReactNode;
|
|
25
|
+
readonly maxFileSize?: number;
|
|
26
|
+
readonly maxFiles?: number;
|
|
27
|
+
readonly multiple?: boolean;
|
|
28
|
+
readonly onFilesChange?: (files: File[], items: DropUploadItem[]) => void;
|
|
29
|
+
readonly onReject?: (rejections: DropUploadRejection[]) => void;
|
|
30
|
+
readonly previewClassName?: string;
|
|
31
|
+
readonly ref?: Ref<HTMLDivElement>;
|
|
32
|
+
readonly showPreviews?: boolean;
|
|
33
|
+
readonly transformImages?: boolean;
|
|
34
|
+
}
|
|
35
|
+
declare const DropUploadComponent: ({ accept, browseLabel, className, defaultFiles, disabled, files, helperText, imageOutputMimeType, imageOutputQuality, imageResizeTargetHeight, imageResizeTargetWidth, imageResizeUpscale, label, maxFileSize, maxFiles, multiple, onFilesChange, onReject, previewClassName, ref, showPreviews, transformImages, ...props }: DropUploadProps) => import("react").JSX.Element;
|
|
36
|
+
export declare const DropUpload: import("react").MemoExoticComponent<typeof DropUploadComponent>;
|
|
37
|
+
export {};
|