@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,323 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from '@nlabs/utils';
|
|
3
|
+
import { FileImage, UploadCloud, X } from 'lucide-react';
|
|
4
|
+
import { memo, useCallback, useEffect, useId, useMemo, useRef, useState } from 'react';
|
|
5
|
+
const imageMimeTypes = new Set([
|
|
6
|
+
'image/jpeg',
|
|
7
|
+
'image/png',
|
|
8
|
+
'image/webp'
|
|
9
|
+
]);
|
|
10
|
+
const createId = (file, index = 0)=>[
|
|
11
|
+
file.name,
|
|
12
|
+
file.size,
|
|
13
|
+
file.lastModified,
|
|
14
|
+
index
|
|
15
|
+
].join('-');
|
|
16
|
+
const parseAccept = (accept = '')=>accept.split(',').map((value)=>value.trim().toLowerCase()).filter(Boolean);
|
|
17
|
+
const acceptsFile = (file, accept = '')=>{
|
|
18
|
+
const acceptRules = parseAccept(accept);
|
|
19
|
+
if (!acceptRules.length) {
|
|
20
|
+
return true;
|
|
21
|
+
}
|
|
22
|
+
const fileType = file.type.toLowerCase();
|
|
23
|
+
const fileName = file.name.toLowerCase();
|
|
24
|
+
return acceptRules.some((rule)=>{
|
|
25
|
+
if (rule.endsWith('/*')) {
|
|
26
|
+
return fileType.startsWith(rule.slice(0, -1));
|
|
27
|
+
}
|
|
28
|
+
if (rule.startsWith('.')) {
|
|
29
|
+
return fileName.endsWith(rule);
|
|
30
|
+
}
|
|
31
|
+
return fileType === rule;
|
|
32
|
+
});
|
|
33
|
+
};
|
|
34
|
+
const createImagePreview = (file)=>{
|
|
35
|
+
if (!imageMimeTypes.has(file.type)) {
|
|
36
|
+
return undefined;
|
|
37
|
+
}
|
|
38
|
+
return URL.createObjectURL(file);
|
|
39
|
+
};
|
|
40
|
+
const resizeImage = async (file, { imageOutputMimeType = 'image/jpeg', imageOutputQuality = 0.92, imageResizeTargetHeight, imageResizeTargetWidth, imageResizeUpscale = false })=>{
|
|
41
|
+
if (!imageMimeTypes.has(file.type) || !imageResizeTargetHeight && !imageResizeTargetWidth) {
|
|
42
|
+
return file;
|
|
43
|
+
}
|
|
44
|
+
const sourceUrl = URL.createObjectURL(file);
|
|
45
|
+
const image = new Image();
|
|
46
|
+
image.src = sourceUrl;
|
|
47
|
+
await image.decode();
|
|
48
|
+
const widthRatio = imageResizeTargetWidth ? imageResizeTargetWidth / image.width : Number.POSITIVE_INFINITY;
|
|
49
|
+
const heightRatio = imageResizeTargetHeight ? imageResizeTargetHeight / image.height : Number.POSITIVE_INFINITY;
|
|
50
|
+
const scale = Math.min(widthRatio, heightRatio, imageResizeUpscale ? Number.POSITIVE_INFINITY : 1);
|
|
51
|
+
if (scale >= 1 && !imageResizeUpscale) {
|
|
52
|
+
URL.revokeObjectURL(sourceUrl);
|
|
53
|
+
return file;
|
|
54
|
+
}
|
|
55
|
+
const canvas = document.createElement('canvas');
|
|
56
|
+
canvas.width = Math.max(1, Math.round(image.width * scale));
|
|
57
|
+
canvas.height = Math.max(1, Math.round(image.height * scale));
|
|
58
|
+
const context = canvas.getContext('2d');
|
|
59
|
+
context?.drawImage(image, 0, 0, canvas.width, canvas.height);
|
|
60
|
+
URL.revokeObjectURL(sourceUrl);
|
|
61
|
+
const blob = await new Promise((resolve)=>{
|
|
62
|
+
canvas.toBlob(resolve, imageOutputMimeType, imageOutputQuality);
|
|
63
|
+
});
|
|
64
|
+
if (!blob) {
|
|
65
|
+
return file;
|
|
66
|
+
}
|
|
67
|
+
return new File([
|
|
68
|
+
blob
|
|
69
|
+
], file.name, {
|
|
70
|
+
lastModified: file.lastModified,
|
|
71
|
+
type: imageOutputMimeType
|
|
72
|
+
});
|
|
73
|
+
};
|
|
74
|
+
const filesToItems = (files)=>files.map((file, index)=>({
|
|
75
|
+
file,
|
|
76
|
+
id: createId(file, index),
|
|
77
|
+
previewUrl: createImagePreview(file)
|
|
78
|
+
}));
|
|
79
|
+
const DropUploadComponent = ({ accept, browseLabel = 'browse', className, defaultFiles = [], disabled = false, files, helperText, imageOutputMimeType = 'image/jpeg', imageOutputQuality = 0.92, imageResizeTargetHeight, imageResizeTargetWidth, imageResizeUpscale = false, label = 'Drop files here or', maxFileSize, maxFiles = Number.POSITIVE_INFINITY, multiple = true, onFilesChange, onReject, previewClassName, ref, showPreviews = true, transformImages = true, ...props })=>{
|
|
80
|
+
const inputId = useId();
|
|
81
|
+
const inputRef = useRef(null);
|
|
82
|
+
const itemsRef = useRef([]);
|
|
83
|
+
const [isDragging, setIsDragging] = useState(false);
|
|
84
|
+
const [internalItems, setInternalItems] = useState(()=>filesToItems(defaultFiles));
|
|
85
|
+
const isControlled = Array.isArray(files);
|
|
86
|
+
const items = useMemo(()=>isControlled ? filesToItems(files || []) : internalItems, [
|
|
87
|
+
files,
|
|
88
|
+
internalItems,
|
|
89
|
+
isControlled
|
|
90
|
+
]);
|
|
91
|
+
useEffect(()=>{
|
|
92
|
+
const nextPreviewUrls = new Set(items.map((item)=>item.previewUrl).filter(Boolean));
|
|
93
|
+
itemsRef.current.forEach((item)=>{
|
|
94
|
+
if (item.previewUrl && !nextPreviewUrls.has(item.previewUrl)) {
|
|
95
|
+
URL.revokeObjectURL(item.previewUrl);
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
itemsRef.current = items;
|
|
99
|
+
}, [
|
|
100
|
+
items
|
|
101
|
+
]);
|
|
102
|
+
useEffect(()=>()=>{
|
|
103
|
+
itemsRef.current.forEach((item)=>{
|
|
104
|
+
if (item.previewUrl) {
|
|
105
|
+
URL.revokeObjectURL(item.previewUrl);
|
|
106
|
+
}
|
|
107
|
+
});
|
|
108
|
+
}, []);
|
|
109
|
+
const updateItems = useCallback((nextItems)=>{
|
|
110
|
+
if (!isControlled) {
|
|
111
|
+
setInternalItems(nextItems);
|
|
112
|
+
}
|
|
113
|
+
onFilesChange?.(nextItems.map((item)=>item.file), nextItems);
|
|
114
|
+
}, [
|
|
115
|
+
isControlled,
|
|
116
|
+
onFilesChange
|
|
117
|
+
]);
|
|
118
|
+
const addFiles = useCallback(async (incomingFiles)=>{
|
|
119
|
+
if (disabled) {
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
const currentItems = multiple ? items : [];
|
|
123
|
+
const acceptedFiles = [];
|
|
124
|
+
const rejections = [];
|
|
125
|
+
const remainingSlots = Math.max(0, maxFiles - currentItems.length);
|
|
126
|
+
incomingFiles.forEach((file)=>{
|
|
127
|
+
if (acceptedFiles.length >= remainingSlots) {
|
|
128
|
+
rejections.push({
|
|
129
|
+
file,
|
|
130
|
+
reason: 'max-files'
|
|
131
|
+
});
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
if (!acceptsFile(file, accept)) {
|
|
135
|
+
rejections.push({
|
|
136
|
+
file,
|
|
137
|
+
reason: 'type'
|
|
138
|
+
});
|
|
139
|
+
return;
|
|
140
|
+
}
|
|
141
|
+
if (maxFileSize && file.size > maxFileSize) {
|
|
142
|
+
rejections.push({
|
|
143
|
+
file,
|
|
144
|
+
reason: 'max-size'
|
|
145
|
+
});
|
|
146
|
+
return;
|
|
147
|
+
}
|
|
148
|
+
acceptedFiles.push(file);
|
|
149
|
+
});
|
|
150
|
+
if (rejections.length) {
|
|
151
|
+
onReject?.(rejections);
|
|
152
|
+
}
|
|
153
|
+
if (!acceptedFiles.length) {
|
|
154
|
+
return;
|
|
155
|
+
}
|
|
156
|
+
const transformedFiles = transformImages ? await Promise.all(acceptedFiles.map((file)=>resizeImage(file, {
|
|
157
|
+
imageOutputMimeType,
|
|
158
|
+
imageOutputQuality,
|
|
159
|
+
imageResizeTargetHeight,
|
|
160
|
+
imageResizeTargetWidth,
|
|
161
|
+
imageResizeUpscale
|
|
162
|
+
}))) : acceptedFiles;
|
|
163
|
+
updateItems([
|
|
164
|
+
...currentItems,
|
|
165
|
+
...filesToItems(transformedFiles)
|
|
166
|
+
]);
|
|
167
|
+
}, [
|
|
168
|
+
accept,
|
|
169
|
+
disabled,
|
|
170
|
+
imageOutputMimeType,
|
|
171
|
+
imageOutputQuality,
|
|
172
|
+
imageResizeTargetHeight,
|
|
173
|
+
imageResizeTargetWidth,
|
|
174
|
+
imageResizeUpscale,
|
|
175
|
+
items,
|
|
176
|
+
maxFileSize,
|
|
177
|
+
maxFiles,
|
|
178
|
+
multiple,
|
|
179
|
+
onReject,
|
|
180
|
+
transformImages,
|
|
181
|
+
updateItems
|
|
182
|
+
]);
|
|
183
|
+
const onInputChange = async (event)=>{
|
|
184
|
+
await addFiles(Array.from(event.target.files || []));
|
|
185
|
+
event.target.value = '';
|
|
186
|
+
};
|
|
187
|
+
const onDragOver = (event)=>{
|
|
188
|
+
event.preventDefault();
|
|
189
|
+
setIsDragging(true);
|
|
190
|
+
};
|
|
191
|
+
const onDragLeave = (event)=>{
|
|
192
|
+
event.preventDefault();
|
|
193
|
+
if (event.currentTarget === event.target) {
|
|
194
|
+
setIsDragging(false);
|
|
195
|
+
}
|
|
196
|
+
};
|
|
197
|
+
const onDrop = async (event)=>{
|
|
198
|
+
event.preventDefault();
|
|
199
|
+
setIsDragging(false);
|
|
200
|
+
await addFiles(Array.from(event.dataTransfer.files || []));
|
|
201
|
+
};
|
|
202
|
+
const onKeyDown = (event)=>{
|
|
203
|
+
if (event.key === 'Enter' || event.key === ' ') {
|
|
204
|
+
event.preventDefault();
|
|
205
|
+
inputRef.current?.click();
|
|
206
|
+
}
|
|
207
|
+
};
|
|
208
|
+
const removeItem = (id)=>{
|
|
209
|
+
updateItems(items.filter((item)=>item.id !== id));
|
|
210
|
+
};
|
|
211
|
+
return /*#__PURE__*/ _jsxs("div", {
|
|
212
|
+
className: cn('flex w-full flex-col gap-4', className),
|
|
213
|
+
ref: ref,
|
|
214
|
+
...props,
|
|
215
|
+
children: [
|
|
216
|
+
/*#__PURE__*/ _jsxs("div", {
|
|
217
|
+
"aria-disabled": disabled,
|
|
218
|
+
className: cn('group relative flex min-h-44 w-full cursor-pointer flex-col items-center justify-center rounded-xl border border-dashed border-border bg-transparent px-6 py-8 text-center transition-colors', 'focus-within:border-ring focus-within:ring-3 focus-within:ring-ring/30', 'hover:border-primary/70 hover:bg-primary/5', disabled && 'cursor-not-allowed opacity-50', isDragging && 'border-primary bg-primary/10'),
|
|
219
|
+
onClick: ()=>inputRef.current?.click(),
|
|
220
|
+
onDragLeave: onDragLeave,
|
|
221
|
+
onDragOver: onDragOver,
|
|
222
|
+
onDrop: onDrop,
|
|
223
|
+
onKeyDown: onKeyDown,
|
|
224
|
+
role: "button",
|
|
225
|
+
tabIndex: disabled ? -1 : 0,
|
|
226
|
+
children: [
|
|
227
|
+
/*#__PURE__*/ _jsx("input", {
|
|
228
|
+
accept: accept,
|
|
229
|
+
className: "sr-only",
|
|
230
|
+
disabled: disabled,
|
|
231
|
+
id: inputId,
|
|
232
|
+
multiple: multiple,
|
|
233
|
+
onChange: onInputChange,
|
|
234
|
+
ref: inputRef,
|
|
235
|
+
type: "file"
|
|
236
|
+
}),
|
|
237
|
+
/*#__PURE__*/ _jsx(UploadCloud, {
|
|
238
|
+
"aria-hidden": "true",
|
|
239
|
+
className: "mb-4 size-10 text-muted-foreground transition-colors group-hover:text-primary"
|
|
240
|
+
}),
|
|
241
|
+
/*#__PURE__*/ _jsxs("div", {
|
|
242
|
+
className: "text-sm font-medium text-foreground",
|
|
243
|
+
children: [
|
|
244
|
+
/*#__PURE__*/ _jsxs("span", {
|
|
245
|
+
children: [
|
|
246
|
+
label,
|
|
247
|
+
" "
|
|
248
|
+
]
|
|
249
|
+
}),
|
|
250
|
+
/*#__PURE__*/ _jsx("label", {
|
|
251
|
+
className: "cursor-pointer text-primary underline-offset-4 hover:underline",
|
|
252
|
+
htmlFor: inputId,
|
|
253
|
+
children: browseLabel
|
|
254
|
+
})
|
|
255
|
+
]
|
|
256
|
+
}),
|
|
257
|
+
helperText && /*#__PURE__*/ _jsx("div", {
|
|
258
|
+
className: "mt-2 text-sm text-muted-foreground",
|
|
259
|
+
children: helperText
|
|
260
|
+
})
|
|
261
|
+
]
|
|
262
|
+
}),
|
|
263
|
+
showPreviews && !!items.length && /*#__PURE__*/ _jsx("div", {
|
|
264
|
+
className: "grid gap-3 sm:grid-cols-2 lg:grid-cols-3",
|
|
265
|
+
children: items.map((item)=>/*#__PURE__*/ _jsxs("div", {
|
|
266
|
+
className: cn('group/item relative overflow-hidden rounded-lg border border-border bg-card text-card-foreground', previewClassName),
|
|
267
|
+
children: [
|
|
268
|
+
/*#__PURE__*/ _jsx("div", {
|
|
269
|
+
className: "flex aspect-video items-center justify-center bg-muted",
|
|
270
|
+
children: item.previewUrl ? /*#__PURE__*/ _jsx("img", {
|
|
271
|
+
alt: item.file.name,
|
|
272
|
+
className: "size-full object-cover",
|
|
273
|
+
src: item.previewUrl
|
|
274
|
+
}) : /*#__PURE__*/ _jsx(FileImage, {
|
|
275
|
+
"aria-hidden": "true",
|
|
276
|
+
className: "size-9 text-muted-foreground"
|
|
277
|
+
})
|
|
278
|
+
}),
|
|
279
|
+
/*#__PURE__*/ _jsxs("div", {
|
|
280
|
+
className: "flex items-center justify-between gap-3 px-3 py-2",
|
|
281
|
+
children: [
|
|
282
|
+
/*#__PURE__*/ _jsxs("div", {
|
|
283
|
+
className: "min-w-0",
|
|
284
|
+
children: [
|
|
285
|
+
/*#__PURE__*/ _jsx("p", {
|
|
286
|
+
className: "truncate text-sm font-medium",
|
|
287
|
+
children: item.file.name
|
|
288
|
+
}),
|
|
289
|
+
/*#__PURE__*/ _jsxs("p", {
|
|
290
|
+
className: "text-xs text-muted-foreground",
|
|
291
|
+
children: [
|
|
292
|
+
Math.ceil(item.file.size / 1024),
|
|
293
|
+
" KB"
|
|
294
|
+
]
|
|
295
|
+
})
|
|
296
|
+
]
|
|
297
|
+
}),
|
|
298
|
+
/*#__PURE__*/ _jsx("button", {
|
|
299
|
+
"aria-label": `Remove ${item.file.name}`,
|
|
300
|
+
className: "inline-flex size-8 shrink-0 cursor-pointer items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-muted hover:text-foreground focus-visible:ring-2 focus-visible:ring-ring focus-visible:outline-none",
|
|
301
|
+
disabled: disabled,
|
|
302
|
+
onClick: (event)=>{
|
|
303
|
+
event.stopPropagation();
|
|
304
|
+
removeItem(item.id);
|
|
305
|
+
},
|
|
306
|
+
type: "button",
|
|
307
|
+
children: /*#__PURE__*/ _jsx(X, {
|
|
308
|
+
"aria-hidden": "true",
|
|
309
|
+
className: "size-4"
|
|
310
|
+
})
|
|
311
|
+
})
|
|
312
|
+
]
|
|
313
|
+
})
|
|
314
|
+
]
|
|
315
|
+
}, item.id))
|
|
316
|
+
})
|
|
317
|
+
]
|
|
318
|
+
});
|
|
319
|
+
};
|
|
320
|
+
export const DropUpload = /*#__PURE__*/ memo(DropUploadComponent);
|
|
321
|
+
DropUpload.displayName = 'DropUpload';
|
|
322
|
+
|
|
323
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L2dvdGhhbWpzL3NyYy9jb21wb25lbnRzL0Ryb3BVcGxvYWQvRHJvcFVwbG9hZC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtjbn0gZnJvbSAnQG5sYWJzL3V0aWxzJztcbmltcG9ydCB7RmlsZUltYWdlLCBVcGxvYWRDbG91ZCwgWH0gZnJvbSAnbHVjaWRlLXJlYWN0JztcbmltcG9ydCB7bWVtbyxcbiAgdXNlQ2FsbGJhY2ssXG4gIHVzZUVmZmVjdCxcbiAgdXNlSWQsXG4gIHVzZU1lbW8sXG4gIHVzZVJlZixcbiAgdXNlU3RhdGVcbn0gZnJvbSAncmVhY3QnO1xuXG5pbXBvcnQgdHlwZSB7XG4gIENoYW5nZUV2ZW50LFxuICBEcmFnRXZlbnQsXG4gIEhUTUxBdHRyaWJ1dGVzLFxuICBLZXlib2FyZEV2ZW50LFxuICBSZWFjdE5vZGUsXG4gIFJlZlxufSBmcm9tICdyZWFjdCc7XG5cbmV4cG9ydCB0eXBlIERyb3BVcGxvYWRSZWplY3Rpb25SZWFzb24gPSAnbWF4LWZpbGVzJyB8ICdtYXgtc2l6ZScgfCAndHlwZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRHJvcFVwbG9hZEl0ZW0ge1xuICByZWFkb25seSBmaWxlOiBGaWxlO1xuICByZWFkb25seSBpZDogc3RyaW5nO1xuICByZWFkb25seSBwcmV2aWV3VXJsPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERyb3BVcGxvYWRSZWplY3Rpb24ge1xuICByZWFkb25seSBmaWxlOiBGaWxlO1xuICByZWFkb25seSByZWFzb246IERyb3BVcGxvYWRSZWplY3Rpb25SZWFzb247XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRHJvcFVwbG9hZFByb3BzIGV4dGVuZHMgT21pdDxIVE1MQXR0cmlidXRlczxIVE1MRGl2RWxlbWVudD4sICdvbkNoYW5nZScgfCAnb25Ecm9wJz4ge1xuICByZWFkb25seSBhY2NlcHQ/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGJyb3dzZUxhYmVsPzogc3RyaW5nO1xuICByZWFkb25seSBkZWZhdWx0RmlsZXM/OiByZWFkb25seSBGaWxlW107XG4gIHJlYWRvbmx5IGRpc2FibGVkPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgZmlsZXM/OiByZWFkb25seSBGaWxlW107XG4gIHJlYWRvbmx5IGhlbHBlclRleHQ/OiBSZWFjdE5vZGU7XG4gIHJlYWRvbmx5IGltYWdlT3V0cHV0TWltZVR5cGU/OiAnaW1hZ2UvanBlZycgfCAnaW1hZ2UvcG5nJyB8ICdpbWFnZS93ZWJwJztcbiAgcmVhZG9ubHkgaW1hZ2VPdXRwdXRRdWFsaXR5PzogbnVtYmVyO1xuICByZWFkb25seSBpbWFnZVJlc2l6ZVRhcmdldEhlaWdodD86IG51bWJlcjtcbiAgcmVhZG9ubHkgaW1hZ2VSZXNpemVUYXJnZXRXaWR0aD86IG51bWJlcjtcbiAgcmVhZG9ubHkgaW1hZ2VSZXNpemVVcHNjYWxlPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgbGFiZWw/OiBSZWFjdE5vZGU7XG4gIHJlYWRvbmx5IG1heEZpbGVTaXplPzogbnVtYmVyO1xuICByZWFkb25seSBtYXhGaWxlcz86IG51bWJlcjtcbiAgcmVhZG9ubHkgbXVsdGlwbGU/OiBib29sZWFuO1xuICByZWFkb25seSBvbkZpbGVzQ2hhbmdlPzogKGZpbGVzOiBGaWxlW10sIGl0ZW1zOiBEcm9wVXBsb2FkSXRlbVtdKSA9PiB2b2lkO1xuICByZWFkb25seSBvblJlamVjdD86IChyZWplY3Rpb25zOiBEcm9wVXBsb2FkUmVqZWN0aW9uW10pID0+IHZvaWQ7XG4gIHJlYWRvbmx5IHByZXZpZXdDbGFzc05hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHJlZj86IFJlZjxIVE1MRGl2RWxlbWVudD47XG4gIHJlYWRvbmx5IHNob3dQcmV2aWV3cz86IGJvb2xlYW47XG4gIHJlYWRvbmx5IHRyYW5zZm9ybUltYWdlcz86IGJvb2xlYW47XG59XG5cbmNvbnN0IGltYWdlTWltZVR5cGVzID0gbmV3IFNldChbJ2ltYWdlL2pwZWcnLCAnaW1hZ2UvcG5nJywgJ2ltYWdlL3dlYnAnXSk7XG5cbmNvbnN0IGNyZWF0ZUlkID0gKGZpbGU6IEZpbGUsIGluZGV4ID0gMCk6IHN0cmluZyA9PiBbXG4gIGZpbGUubmFtZSxcbiAgZmlsZS5zaXplLFxuICBmaWxlLmxhc3RNb2RpZmllZCxcbiAgaW5kZXhcbl0uam9pbignLScpO1xuXG5jb25zdCBwYXJzZUFjY2VwdCA9IChhY2NlcHQgPSAnJyk6IHN0cmluZ1tdID0+IGFjY2VwdFxuICAuc3BsaXQoJywnKVxuICAubWFwKCh2YWx1ZSkgPT4gdmFsdWUudHJpbSgpLnRvTG93ZXJDYXNlKCkpXG4gIC5maWx0ZXIoQm9vbGVhbik7XG5cbmNvbnN0IGFjY2VwdHNGaWxlID0gKGZpbGU6IEZpbGUsIGFjY2VwdCA9ICcnKTogYm9vbGVhbiA9PiB7XG4gIGNvbnN0IGFjY2VwdFJ1bGVzID0gcGFyc2VBY2NlcHQoYWNjZXB0KTtcblxuICBpZighYWNjZXB0UnVsZXMubGVuZ3RoKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBjb25zdCBmaWxlVHlwZSA9IGZpbGUudHlwZS50b0xvd2VyQ2FzZSgpO1xuICBjb25zdCBmaWxlTmFtZSA9IGZpbGUubmFtZS50b0xvd2VyQ2FzZSgpO1xuXG4gIHJldHVybiBhY2NlcHRSdWxlcy5zb21lKChydWxlKSA9PiB7XG4gICAgaWYocnVsZS5lbmRzV2l0aCgnLyonKSkge1xuICAgICAgcmV0dXJuIGZpbGVUeXBlLnN0YXJ0c1dpdGgocnVsZS5zbGljZSgwLCAtMSkpO1xuICAgIH1cblxuICAgIGlmKHJ1bGUuc3RhcnRzV2l0aCgnLicpKSB7XG4gICAgICByZXR1cm4gZmlsZU5hbWUuZW5kc1dpdGgocnVsZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZpbGVUeXBlID09PSBydWxlO1xuICB9KTtcbn07XG5cbmNvbnN0IGNyZWF0ZUltYWdlUHJldmlldyA9IChmaWxlOiBGaWxlKTogc3RyaW5nIHwgdW5kZWZpbmVkID0+IHtcbiAgaWYoIWltYWdlTWltZVR5cGVzLmhhcyhmaWxlLnR5cGUpKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHJldHVybiBVUkwuY3JlYXRlT2JqZWN0VVJMKGZpbGUpO1xufTtcblxuY29uc3QgcmVzaXplSW1hZ2UgPSBhc3luYyAoXG4gIGZpbGU6IEZpbGUsXG4gIHtcbiAgICBpbWFnZU91dHB1dE1pbWVUeXBlID0gJ2ltYWdlL2pwZWcnLFxuICAgIGltYWdlT3V0cHV0UXVhbGl0eSA9IDAuOTIsXG4gICAgaW1hZ2VSZXNpemVUYXJnZXRIZWlnaHQsXG4gICAgaW1hZ2VSZXNpemVUYXJnZXRXaWR0aCxcbiAgICBpbWFnZVJlc2l6ZVVwc2NhbGUgPSBmYWxzZVxuICB9OiBQaWNrPFxuICAgIERyb3BVcGxvYWRQcm9wcyxcbiAgICAnaW1hZ2VPdXRwdXRNaW1lVHlwZScgfFxuICAgICdpbWFnZU91dHB1dFF1YWxpdHknIHxcbiAgICAnaW1hZ2VSZXNpemVUYXJnZXRIZWlnaHQnIHxcbiAgICAnaW1hZ2VSZXNpemVUYXJnZXRXaWR0aCcgfFxuICAgICdpbWFnZVJlc2l6ZVVwc2NhbGUnXG4gID5cbik6IFByb21pc2U8RmlsZT4gPT4ge1xuICBpZighaW1hZ2VNaW1lVHlwZXMuaGFzKGZpbGUudHlwZSkgfHwgKCFpbWFnZVJlc2l6ZVRhcmdldEhlaWdodCAmJiAhaW1hZ2VSZXNpemVUYXJnZXRXaWR0aCkpIHtcbiAgICByZXR1cm4gZmlsZTtcbiAgfVxuXG4gIGNvbnN0IHNvdXJjZVVybCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoZmlsZSk7XG4gIGNvbnN0IGltYWdlID0gbmV3IEltYWdlKCk7XG4gIGltYWdlLnNyYyA9IHNvdXJjZVVybDtcbiAgYXdhaXQgaW1hZ2UuZGVjb2RlKCk7XG5cbiAgY29uc3Qgd2lkdGhSYXRpbyA9IGltYWdlUmVzaXplVGFyZ2V0V2lkdGggPyBpbWFnZVJlc2l6ZVRhcmdldFdpZHRoIC8gaW1hZ2Uud2lkdGggOiBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFk7XG4gIGNvbnN0IGhlaWdodFJhdGlvID0gaW1hZ2VSZXNpemVUYXJnZXRIZWlnaHQgPyBpbWFnZVJlc2l6ZVRhcmdldEhlaWdodCAvIGltYWdlLmhlaWdodCA6IE51bWJlci5QT1NJVElWRV9JTkZJTklUWTtcbiAgY29uc3Qgc2NhbGUgPSBNYXRoLm1pbih3aWR0aFJhdGlvLCBoZWlnaHRSYXRpbywgaW1hZ2VSZXNpemVVcHNjYWxlID8gTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZIDogMSk7XG5cbiAgaWYoc2NhbGUgPj0gMSAmJiAhaW1hZ2VSZXNpemVVcHNjYWxlKSB7XG4gICAgVVJMLnJldm9rZU9iamVjdFVSTChzb3VyY2VVcmwpO1xuICAgIHJldHVybiBmaWxlO1xuICB9XG5cbiAgY29uc3QgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7XG4gIGNhbnZhcy53aWR0aCA9IE1hdGgubWF4KDEsIE1hdGgucm91bmQoaW1hZ2Uud2lkdGggKiBzY2FsZSkpO1xuICBjYW52YXMuaGVpZ2h0ID0gTWF0aC5tYXgoMSwgTWF0aC5yb3VuZChpbWFnZS5oZWlnaHQgKiBzY2FsZSkpO1xuXG4gIGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTtcbiAgY29udGV4dD8uZHJhd0ltYWdlKGltYWdlLCAwLCAwLCBjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQpO1xuICBVUkwucmV2b2tlT2JqZWN0VVJMKHNvdXJjZVVybCk7XG5cbiAgY29uc3QgYmxvYiA9IGF3YWl0IG5ldyBQcm9taXNlPEJsb2IgfCBudWxsPigocmVzb2x2ZSkgPT4ge1xuICAgIGNhbnZhcy50b0Jsb2IocmVzb2x2ZSwgaW1hZ2VPdXRwdXRNaW1lVHlwZSwgaW1hZ2VPdXRwdXRRdWFsaXR5KTtcbiAgfSk7XG5cbiAgaWYoIWJsb2IpIHtcbiAgICByZXR1cm4gZmlsZTtcbiAgfVxuXG4gIHJldHVybiBuZXcgRmlsZShbYmxvYl0sIGZpbGUubmFtZSwge1xuICAgIGxhc3RNb2RpZmllZDogZmlsZS5sYXN0TW9kaWZpZWQsXG4gICAgdHlwZTogaW1hZ2VPdXRwdXRNaW1lVHlwZVxuICB9KTtcbn07XG5cbmNvbnN0IGZpbGVzVG9JdGVtcyA9IChmaWxlczogcmVhZG9ubHkgRmlsZVtdKTogRHJvcFVwbG9hZEl0ZW1bXSA9PiBmaWxlcy5tYXAoKGZpbGUsIGluZGV4KSA9PiAoe1xuICBmaWxlLFxuICBpZDogY3JlYXRlSWQoZmlsZSwgaW5kZXgpLFxuICBwcmV2aWV3VXJsOiBjcmVhdGVJbWFnZVByZXZpZXcoZmlsZSlcbn0pKTtcblxuY29uc3QgRHJvcFVwbG9hZENvbXBvbmVudCA9ICh7XG4gIGFjY2VwdCxcbiAgYnJvd3NlTGFiZWwgPSAnYnJvd3NlJyxcbiAgY2xhc3NOYW1lLFxuICBkZWZhdWx0RmlsZXMgPSBbXSxcbiAgZGlzYWJsZWQgPSBmYWxzZSxcbiAgZmlsZXMsXG4gIGhlbHBlclRleHQsXG4gIGltYWdlT3V0cHV0TWltZVR5cGUgPSAnaW1hZ2UvanBlZycsXG4gIGltYWdlT3V0cHV0UXVhbGl0eSA9IDAuOTIsXG4gIGltYWdlUmVzaXplVGFyZ2V0SGVpZ2h0LFxuICBpbWFnZVJlc2l6ZVRhcmdldFdpZHRoLFxuICBpbWFnZVJlc2l6ZVVwc2NhbGUgPSBmYWxzZSxcbiAgbGFiZWwgPSAnRHJvcCBmaWxlcyBoZXJlIG9yJyxcbiAgbWF4RmlsZVNpemUsXG4gIG1heEZpbGVzID0gTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLFxuICBtdWx0aXBsZSA9IHRydWUsXG4gIG9uRmlsZXNDaGFuZ2UsXG4gIG9uUmVqZWN0LFxuICBwcmV2aWV3Q2xhc3NOYW1lLFxuICByZWYsXG4gIHNob3dQcmV2aWV3cyA9IHRydWUsXG4gIHRyYW5zZm9ybUltYWdlcyA9IHRydWUsXG4gIC4uLnByb3BzXG59OiBEcm9wVXBsb2FkUHJvcHMpID0+IHtcbiAgY29uc3QgaW5wdXRJZCA9IHVzZUlkKCk7XG4gIGNvbnN0IGlucHV0UmVmID0gdXNlUmVmPEhUTUxJbnB1dEVsZW1lbnQ+KG51bGwpO1xuICBjb25zdCBpdGVtc1JlZiA9IHVzZVJlZjxEcm9wVXBsb2FkSXRlbVtdPihbXSk7XG4gIGNvbnN0IFtpc0RyYWdnaW5nLCBzZXRJc0RyYWdnaW5nXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW2ludGVybmFsSXRlbXMsIHNldEludGVybmFsSXRlbXNdID0gdXNlU3RhdGU8RHJvcFVwbG9hZEl0ZW1bXT4oKCkgPT4gZmlsZXNUb0l0ZW1zKGRlZmF1bHRGaWxlcykpO1xuICBjb25zdCBpc0NvbnRyb2xsZWQgPSBBcnJheS5pc0FycmF5KGZpbGVzKTtcbiAgY29uc3QgaXRlbXMgPSB1c2VNZW1vKFxuICAgICgpID0+IChpc0NvbnRyb2xsZWQgPyBmaWxlc1RvSXRlbXMoZmlsZXMgfHwgW10pIDogaW50ZXJuYWxJdGVtcyksXG4gICAgW2ZpbGVzLCBpbnRlcm5hbEl0ZW1zLCBpc0NvbnRyb2xsZWRdXG4gICk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBuZXh0UHJldmlld1VybHMgPSBuZXcgU2V0KGl0ZW1zLm1hcCgoaXRlbSkgPT4gaXRlbS5wcmV2aWV3VXJsKS5maWx0ZXIoQm9vbGVhbikpO1xuXG4gICAgaXRlbXNSZWYuY3VycmVudC5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICBpZihpdGVtLnByZXZpZXdVcmwgJiYgIW5leHRQcmV2aWV3VXJscy5oYXMoaXRlbS5wcmV2aWV3VXJsKSkge1xuICAgICAgICBVUkwucmV2b2tlT2JqZWN0VVJMKGl0ZW0ucHJldmlld1VybCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpdGVtc1JlZi5jdXJyZW50ID0gaXRlbXM7XG4gIH0sIFtpdGVtc10pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiAoKSA9PiB7XG4gICAgaXRlbXNSZWYuY3VycmVudC5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICBpZihpdGVtLnByZXZpZXdVcmwpIHtcbiAgICAgICAgVVJMLnJldm9rZU9iamVjdFVSTChpdGVtLnByZXZpZXdVcmwpO1xuICAgICAgfVxuICAgIH0pO1xuICB9LCBbXSk7XG5cbiAgY29uc3QgdXBkYXRlSXRlbXMgPSB1c2VDYWxsYmFjaygobmV4dEl0ZW1zOiBEcm9wVXBsb2FkSXRlbVtdKSA9PiB7XG4gICAgaWYoIWlzQ29udHJvbGxlZCkge1xuICAgICAgc2V0SW50ZXJuYWxJdGVtcyhuZXh0SXRlbXMpO1xuICAgIH1cblxuICAgIG9uRmlsZXNDaGFuZ2U/LihuZXh0SXRlbXMubWFwKChpdGVtKSA9PiBpdGVtLmZpbGUpLCBuZXh0SXRlbXMpO1xuICB9LCBbaXNDb250cm9sbGVkLCBvbkZpbGVzQ2hhbmdlXSk7XG5cbiAgY29uc3QgYWRkRmlsZXMgPSB1c2VDYWxsYmFjayhhc3luYyAoaW5jb21pbmdGaWxlczogRmlsZVtdKSA9PiB7XG4gICAgaWYoZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBjdXJyZW50SXRlbXMgPSBtdWx0aXBsZSA/IGl0ZW1zIDogW107XG4gICAgY29uc3QgYWNjZXB0ZWRGaWxlczogRmlsZVtdID0gW107XG4gICAgY29uc3QgcmVqZWN0aW9uczogRHJvcFVwbG9hZFJlamVjdGlvbltdID0gW107XG4gICAgY29uc3QgcmVtYWluaW5nU2xvdHMgPSBNYXRoLm1heCgwLCBtYXhGaWxlcyAtIGN1cnJlbnRJdGVtcy5sZW5ndGgpO1xuXG4gICAgaW5jb21pbmdGaWxlcy5mb3JFYWNoKChmaWxlKSA9PiB7XG4gICAgICBpZihhY2NlcHRlZEZpbGVzLmxlbmd0aCA+PSByZW1haW5pbmdTbG90cykge1xuICAgICAgICByZWplY3Rpb25zLnB1c2goe2ZpbGUsIHJlYXNvbjogJ21heC1maWxlcyd9KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZighYWNjZXB0c0ZpbGUoZmlsZSwgYWNjZXB0KSkge1xuICAgICAgICByZWplY3Rpb25zLnB1c2goe2ZpbGUsIHJlYXNvbjogJ3R5cGUnfSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYobWF4RmlsZVNpemUgJiYgZmlsZS5zaXplID4gbWF4RmlsZVNpemUpIHtcbiAgICAgICAgcmVqZWN0aW9ucy5wdXNoKHtmaWxlLCByZWFzb246ICdtYXgtc2l6ZSd9KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBhY2NlcHRlZEZpbGVzLnB1c2goZmlsZSk7XG4gICAgfSk7XG5cbiAgICBpZihyZWplY3Rpb25zLmxlbmd0aCkge1xuICAgICAgb25SZWplY3Q/LihyZWplY3Rpb25zKTtcbiAgICB9XG5cbiAgICBpZighYWNjZXB0ZWRGaWxlcy5sZW5ndGgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB0cmFuc2Zvcm1lZEZpbGVzID0gdHJhbnNmb3JtSW1hZ2VzXG4gICAgICA/IGF3YWl0IFByb21pc2UuYWxsKGFjY2VwdGVkRmlsZXMubWFwKChmaWxlKSA9PiByZXNpemVJbWFnZShmaWxlLCB7XG4gICAgICAgIGltYWdlT3V0cHV0TWltZVR5cGUsXG4gICAgICAgIGltYWdlT3V0cHV0UXVhbGl0eSxcbiAgICAgICAgaW1hZ2VSZXNpemVUYXJnZXRIZWlnaHQsXG4gICAgICAgIGltYWdlUmVzaXplVGFyZ2V0V2lkdGgsXG4gICAgICAgIGltYWdlUmVzaXplVXBzY2FsZVxuICAgICAgfSkpKVxuICAgICAgOiBhY2NlcHRlZEZpbGVzO1xuXG4gICAgdXBkYXRlSXRlbXMoW1xuICAgICAgLi4uY3VycmVudEl0ZW1zLFxuICAgICAgLi4uZmlsZXNUb0l0ZW1zKHRyYW5zZm9ybWVkRmlsZXMpXG4gICAgXSk7XG4gIH0sIFtcbiAgICBhY2NlcHQsXG4gICAgZGlzYWJsZWQsXG4gICAgaW1hZ2VPdXRwdXRNaW1lVHlwZSxcbiAgICBpbWFnZU91dHB1dFF1YWxpdHksXG4gICAgaW1hZ2VSZXNpemVUYXJnZXRIZWlnaHQsXG4gICAgaW1hZ2VSZXNpemVUYXJnZXRXaWR0aCxcbiAgICBpbWFnZVJlc2l6ZVVwc2NhbGUsXG4gICAgaXRlbXMsXG4gICAgbWF4RmlsZVNpemUsXG4gICAgbWF4RmlsZXMsXG4gICAgbXVsdGlwbGUsXG4gICAgb25SZWplY3QsXG4gICAgdHJhbnNmb3JtSW1hZ2VzLFxuICAgIHVwZGF0ZUl0ZW1zXG4gIF0pO1xuXG4gIGNvbnN0IG9uSW5wdXRDaGFuZ2UgPSBhc3luYyAoZXZlbnQ6IENoYW5nZUV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+KSA9PiB7XG4gICAgYXdhaXQgYWRkRmlsZXMoQXJyYXkuZnJvbShldmVudC50YXJnZXQuZmlsZXMgfHwgW10pKTtcbiAgICBldmVudC50YXJnZXQudmFsdWUgPSAnJztcbiAgfTtcblxuICBjb25zdCBvbkRyYWdPdmVyID0gKGV2ZW50OiBEcmFnRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBzZXRJc0RyYWdnaW5nKHRydWUpO1xuICB9O1xuXG4gIGNvbnN0IG9uRHJhZ0xlYXZlID0gKGV2ZW50OiBEcmFnRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgIGlmKGV2ZW50LmN1cnJlbnRUYXJnZXQgPT09IGV2ZW50LnRhcmdldCkge1xuICAgICAgc2V0SXNEcmFnZ2luZyhmYWxzZSk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IG9uRHJvcCA9IGFzeW5jIChldmVudDogRHJhZ0V2ZW50PEhUTUxEaXZFbGVtZW50PikgPT4ge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgc2V0SXNEcmFnZ2luZyhmYWxzZSk7XG4gICAgYXdhaXQgYWRkRmlsZXMoQXJyYXkuZnJvbShldmVudC5kYXRhVHJhbnNmZXIuZmlsZXMgfHwgW10pKTtcbiAgfTtcblxuICBjb25zdCBvbktleURvd24gPSAoZXZlbnQ6IEtleWJvYXJkRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB7XG4gICAgaWYoZXZlbnQua2V5ID09PSAnRW50ZXInIHx8IGV2ZW50LmtleSA9PT0gJyAnKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgaW5wdXRSZWYuY3VycmVudD8uY2xpY2soKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgcmVtb3ZlSXRlbSA9IChpZDogc3RyaW5nKSA9PiB7XG4gICAgdXBkYXRlSXRlbXMoaXRlbXMuZmlsdGVyKChpdGVtKSA9PiBpdGVtLmlkICE9PSBpZCkpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9e2NuKCdmbGV4IHctZnVsbCBmbGV4LWNvbCBnYXAtNCcsIGNsYXNzTmFtZSl9IHJlZj17cmVmfSB7Li4ucHJvcHN9PlxuICAgICAgPGRpdlxuICAgICAgICBhcmlhLWRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAnZ3JvdXAgcmVsYXRpdmUgZmxleCBtaW4taC00NCB3LWZ1bGwgY3Vyc29yLXBvaW50ZXIgZmxleC1jb2wgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHJvdW5kZWQteGwgYm9yZGVyIGJvcmRlci1kYXNoZWQgYm9yZGVyLWJvcmRlciBiZy10cmFuc3BhcmVudCBweC02IHB5LTggdGV4dC1jZW50ZXIgdHJhbnNpdGlvbi1jb2xvcnMnLFxuICAgICAgICAgICdmb2N1cy13aXRoaW46Ym9yZGVyLXJpbmcgZm9jdXMtd2l0aGluOnJpbmctMyBmb2N1cy13aXRoaW46cmluZy1yaW5nLzMwJyxcbiAgICAgICAgICAnaG92ZXI6Ym9yZGVyLXByaW1hcnkvNzAgaG92ZXI6YmctcHJpbWFyeS81JyxcbiAgICAgICAgICBkaXNhYmxlZCAmJiAnY3Vyc29yLW5vdC1hbGxvd2VkIG9wYWNpdHktNTAnLFxuICAgICAgICAgIGlzRHJhZ2dpbmcgJiYgJ2JvcmRlci1wcmltYXJ5IGJnLXByaW1hcnkvMTAnXG4gICAgICAgICl9XG4gICAgICAgIG9uQ2xpY2s9eygpID0+IGlucHV0UmVmLmN1cnJlbnQ/LmNsaWNrKCl9XG4gICAgICAgIG9uRHJhZ0xlYXZlPXtvbkRyYWdMZWF2ZX1cbiAgICAgICAgb25EcmFnT3Zlcj17b25EcmFnT3Zlcn1cbiAgICAgICAgb25Ecm9wPXtvbkRyb3B9XG4gICAgICAgIG9uS2V5RG93bj17b25LZXlEb3dufVxuICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgdGFiSW5kZXg9e2Rpc2FibGVkID8gLTEgOiAwfT5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgYWNjZXB0PXthY2NlcHR9XG4gICAgICAgICAgY2xhc3NOYW1lPVwic3Itb25seVwiXG4gICAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgICAgIGlkPXtpbnB1dElkfVxuICAgICAgICAgIG11bHRpcGxlPXttdWx0aXBsZX1cbiAgICAgICAgICBvbkNoYW5nZT17b25JbnB1dENoYW5nZX1cbiAgICAgICAgICByZWY9e2lucHV0UmVmfVxuICAgICAgICAgIHR5cGU9XCJmaWxlXCJcbiAgICAgICAgLz5cbiAgICAgICAgPFVwbG9hZENsb3VkIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGNsYXNzTmFtZT1cIm1iLTQgc2l6ZS0xMCB0ZXh0LW11dGVkLWZvcmVncm91bmQgdHJhbnNpdGlvbi1jb2xvcnMgZ3JvdXAtaG92ZXI6dGV4dC1wcmltYXJ5XCIgLz5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtZm9yZWdyb3VuZFwiPlxuICAgICAgICAgIDxzcGFuPntsYWJlbH0gPC9zcGFuPlxuICAgICAgICAgIDxsYWJlbCBjbGFzc05hbWU9XCJjdXJzb3ItcG9pbnRlciB0ZXh0LXByaW1hcnkgdW5kZXJsaW5lLW9mZnNldC00IGhvdmVyOnVuZGVybGluZVwiIGh0bWxGb3I9e2lucHV0SWR9PlxuICAgICAgICAgICAge2Jyb3dzZUxhYmVsfVxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICB7aGVscGVyVGV4dCAmJiAoXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtdC0yIHRleHQtc20gdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCI+XG4gICAgICAgICAgICB7aGVscGVyVGV4dH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKX1cbiAgICAgIDwvZGl2PlxuXG4gICAgICB7c2hvd1ByZXZpZXdzICYmICEhaXRlbXMubGVuZ3RoICYmIChcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJncmlkIGdhcC0zIHNtOmdyaWQtY29scy0yIGxnOmdyaWQtY29scy0zXCI+XG4gICAgICAgICAge2l0ZW1zLm1hcCgoaXRlbSkgPT4gKFxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgICAgICdncm91cC9pdGVtIHJlbGF0aXZlIG92ZXJmbG93LWhpZGRlbiByb3VuZGVkLWxnIGJvcmRlciBib3JkZXItYm9yZGVyIGJnLWNhcmQgdGV4dC1jYXJkLWZvcmVncm91bmQnLFxuICAgICAgICAgICAgICAgIHByZXZpZXdDbGFzc05hbWVcbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAga2V5PXtpdGVtLmlkfT5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGFzcGVjdC12aWRlbyBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgYmctbXV0ZWRcIj5cbiAgICAgICAgICAgICAgICB7aXRlbS5wcmV2aWV3VXJsID8gKFxuICAgICAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgICAgICBhbHQ9e2l0ZW0uZmlsZS5uYW1lfVxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJzaXplLWZ1bGwgb2JqZWN0LWNvdmVyXCJcbiAgICAgICAgICAgICAgICAgICAgc3JjPXtpdGVtLnByZXZpZXdVcmx9XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICA8RmlsZUltYWdlIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGNsYXNzTmFtZT1cInNpemUtOSB0ZXh0LW11dGVkLWZvcmVncm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBnYXAtMyBweC0zIHB5LTJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1pbi13LTBcIj5cbiAgICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRydW5jYXRlIHRleHQtc20gZm9udC1tZWRpdW1cIj57aXRlbS5maWxlLm5hbWV9PC9wPlxuICAgICAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC14cyB0ZXh0LW11dGVkLWZvcmVncm91bmRcIj57TWF0aC5jZWlsKGl0ZW0uZmlsZS5zaXplIC8gMTAyNCl9IEtCPC9wPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9e2BSZW1vdmUgJHtpdGVtLmZpbGUubmFtZX1gfVxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiaW5saW5lLWZsZXggc2l6ZS04IHNocmluay0wIGN1cnNvci1wb2ludGVyIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciByb3VuZGVkLW1kIHRleHQtbXV0ZWQtZm9yZWdyb3VuZCB0cmFuc2l0aW9uLWNvbG9ycyBob3ZlcjpiZy1tdXRlZCBob3Zlcjp0ZXh0LWZvcmVncm91bmQgZm9jdXMtdmlzaWJsZTpyaW5nLTIgZm9jdXMtdmlzaWJsZTpyaW5nLXJpbmcgZm9jdXMtdmlzaWJsZTpvdXRsaW5lLW5vbmVcIlxuICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgICAgICAgICAgICAgb25DbGljaz17KGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICByZW1vdmVJdGVtKGl0ZW0uaWQpO1xuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIj5cbiAgICAgICAgICAgICAgICAgIDxYIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGNsYXNzTmFtZT1cInNpemUtNFwiIC8+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvZGl2PlxuICAgICAgKX1cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCBEcm9wVXBsb2FkID0gbWVtbyhEcm9wVXBsb2FkQ29tcG9uZW50KTtcbkRyb3BVcGxvYWQuZGlzcGxheU5hbWUgPSAnRHJvcFVwbG9hZCc7XG4iXSwibmFtZXMiOlsiY24iLCJGaWxlSW1hZ2UiLCJVcGxvYWRDbG91ZCIsIlgiLCJtZW1vIiwidXNlQ2FsbGJhY2siLCJ1c2VFZmZlY3QiLCJ1c2VJZCIsInVzZU1lbW8iLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsImltYWdlTWltZVR5cGVzIiwiU2V0IiwiY3JlYXRlSWQiLCJmaWxlIiwiaW5kZXgiLCJuYW1lIiwic2l6ZSIsImxhc3RNb2RpZmllZCIsImpvaW4iLCJwYXJzZUFjY2VwdCIsImFjY2VwdCIsInNwbGl0IiwibWFwIiwidmFsdWUiLCJ0cmltIiwidG9Mb3dlckNhc2UiLCJmaWx0ZXIiLCJCb29sZWFuIiwiYWNjZXB0c0ZpbGUiLCJhY2NlcHRSdWxlcyIsImxlbmd0aCIsImZpbGVUeXBlIiwidHlwZSIsImZpbGVOYW1lIiwic29tZSIsInJ1bGUiLCJlbmRzV2l0aCIsInN0YXJ0c1dpdGgiLCJzbGljZSIsImNyZWF0ZUltYWdlUHJldmlldyIsImhhcyIsInVuZGVmaW5lZCIsIlVSTCIsImNyZWF0ZU9iamVjdFVSTCIsInJlc2l6ZUltYWdlIiwiaW1hZ2VPdXRwdXRNaW1lVHlwZSIsImltYWdlT3V0cHV0UXVhbGl0eSIsImltYWdlUmVzaXplVGFyZ2V0SGVpZ2h0IiwiaW1hZ2VSZXNpemVUYXJnZXRXaWR0aCIsImltYWdlUmVzaXplVXBzY2FsZSIsInNvdXJjZVVybCIsImltYWdlIiwiSW1hZ2UiLCJzcmMiLCJkZWNvZGUiLCJ3aWR0aFJhdGlvIiwid2lkdGgiLCJOdW1iZXIiLCJQT1NJVElWRV9JTkZJTklUWSIsImhlaWdodFJhdGlvIiwiaGVpZ2h0Iiwic2NhbGUiLCJNYXRoIiwibWluIiwicmV2b2tlT2JqZWN0VVJMIiwiY2FudmFzIiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50IiwibWF4Iiwicm91bmQiLCJjb250ZXh0IiwiZ2V0Q29udGV4dCIsImRyYXdJbWFnZSIsImJsb2IiLCJQcm9taXNlIiwicmVzb2x2ZSIsInRvQmxvYiIsIkZpbGUiLCJmaWxlc1RvSXRlbXMiLCJmaWxlcyIsImlkIiwicHJldmlld1VybCIsIkRyb3BVcGxvYWRDb21wb25lbnQiLCJicm93c2VMYWJlbCIsImNsYXNzTmFtZSIsImRlZmF1bHRGaWxlcyIsImRpc2FibGVkIiwiaGVscGVyVGV4dCIsImxhYmVsIiwibWF4RmlsZVNpemUiLCJtYXhGaWxlcyIsIm11bHRpcGxlIiwib25GaWxlc0NoYW5nZSIsIm9uUmVqZWN0IiwicHJldmlld0NsYXNzTmFtZSIsInJlZiIsInNob3dQcmV2aWV3cyIsInRyYW5zZm9ybUltYWdlcyIsInByb3BzIiwiaW5wdXRJZCIsImlucHV0UmVmIiwiaXRlbXNSZWYiLCJpc0RyYWdnaW5nIiwic2V0SXNEcmFnZ2luZyIsImludGVybmFsSXRlbXMiLCJzZXRJbnRlcm5hbEl0ZW1zIiwiaXNDb250cm9sbGVkIiwiQXJyYXkiLCJpc0FycmF5IiwiaXRlbXMiLCJuZXh0UHJldmlld1VybHMiLCJpdGVtIiwiY3VycmVudCIsImZvckVhY2giLCJ1cGRhdGVJdGVtcyIsIm5leHRJdGVtcyIsImFkZEZpbGVzIiwiaW5jb21pbmdGaWxlcyIsImN1cnJlbnRJdGVtcyIsImFjY2VwdGVkRmlsZXMiLCJyZWplY3Rpb25zIiwicmVtYWluaW5nU2xvdHMiLCJwdXNoIiwicmVhc29uIiwidHJhbnNmb3JtZWRGaWxlcyIsImFsbCIsIm9uSW5wdXRDaGFuZ2UiLCJldmVudCIsImZyb20iLCJ0YXJnZXQiLCJvbkRyYWdPdmVyIiwicHJldmVudERlZmF1bHQiLCJvbkRyYWdMZWF2ZSIsImN1cnJlbnRUYXJnZXQiLCJvbkRyb3AiLCJkYXRhVHJhbnNmZXIiLCJvbktleURvd24iLCJrZXkiLCJjbGljayIsInJlbW92ZUl0ZW0iLCJkaXYiLCJhcmlhLWRpc2FibGVkIiwib25DbGljayIsInJvbGUiLCJ0YWJJbmRleCIsImlucHV0Iiwib25DaGFuZ2UiLCJhcmlhLWhpZGRlbiIsInNwYW4iLCJodG1sRm9yIiwiaW1nIiwiYWx0IiwicCIsImNlaWwiLCJidXR0b24iLCJhcmlhLWxhYmVsIiwic3RvcFByb3BhZ2F0aW9uIiwiRHJvcFVwbG9hZCIsImRpc3BsYXlOYW1lIl0sIm1hcHBpbmdzIjoiO0FBQUEsU0FBUUEsRUFBRSxRQUFPLGVBQWU7QUFDaEMsU0FBUUMsU0FBUyxFQUFFQyxXQUFXLEVBQUVDLENBQUMsUUFBTyxlQUFlO0FBQ3ZELFNBQVFDLElBQUksRUFDVkMsV0FBVyxFQUNYQyxTQUFTLEVBQ1RDLEtBQUssRUFDTEMsT0FBTyxFQUNQQyxNQUFNLEVBQ05DLFFBQVEsUUFDSCxRQUFRO0FBZ0RmLE1BQU1DLGlCQUFpQixJQUFJQyxJQUFJO0lBQUM7SUFBYztJQUFhO0NBQWE7QUFFeEUsTUFBTUMsV0FBVyxDQUFDQyxNQUFZQyxRQUFRLENBQUMsR0FBYTtRQUNsREQsS0FBS0UsSUFBSTtRQUNURixLQUFLRyxJQUFJO1FBQ1RILEtBQUtJLFlBQVk7UUFDakJIO0tBQ0QsQ0FBQ0ksSUFBSSxDQUFDO0FBRVAsTUFBTUMsY0FBYyxDQUFDQyxTQUFTLEVBQUUsR0FBZUEsT0FDNUNDLEtBQUssQ0FBQyxLQUNOQyxHQUFHLENBQUMsQ0FBQ0MsUUFBVUEsTUFBTUMsSUFBSSxHQUFHQyxXQUFXLElBQ3ZDQyxNQUFNLENBQUNDO0FBRVYsTUFBTUMsY0FBYyxDQUFDZixNQUFZTyxTQUFTLEVB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
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { interactWithCanvas } from '../../utils/storyInteractions.js';
|
|
3
|
+
import { DropUpload } from './DropUpload.js';
|
|
4
|
+
const meta = {
|
|
5
|
+
argTypes: {
|
|
6
|
+
accept: {
|
|
7
|
+
control: 'text'
|
|
8
|
+
},
|
|
9
|
+
disabled: {
|
|
10
|
+
control: 'boolean'
|
|
11
|
+
},
|
|
12
|
+
helperText: {
|
|
13
|
+
control: 'text'
|
|
14
|
+
},
|
|
15
|
+
label: {
|
|
16
|
+
control: 'text'
|
|
17
|
+
},
|
|
18
|
+
maxFiles: {
|
|
19
|
+
control: 'number'
|
|
20
|
+
},
|
|
21
|
+
multiple: {
|
|
22
|
+
control: 'boolean'
|
|
23
|
+
},
|
|
24
|
+
showPreviews: {
|
|
25
|
+
control: 'boolean'
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
component: DropUpload,
|
|
29
|
+
parameters: {
|
|
30
|
+
layout: 'centered'
|
|
31
|
+
},
|
|
32
|
+
title: 'Components/Form/DropUpload'
|
|
33
|
+
};
|
|
34
|
+
export default meta;
|
|
35
|
+
export const Default = {
|
|
36
|
+
args: {
|
|
37
|
+
accept: 'image/*,.pdf',
|
|
38
|
+
helperText: 'PNG, JPG, or PDF up to 5 MB',
|
|
39
|
+
label: 'Drop assets here or',
|
|
40
|
+
maxFiles: 3,
|
|
41
|
+
multiple: true,
|
|
42
|
+
showPreviews: false,
|
|
43
|
+
transformImages: false
|
|
44
|
+
},
|
|
45
|
+
play: interactWithCanvas
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L2dvdGhhbWpzL3NyYy9jb21wb25lbnRzL0Ryb3BVcGxvYWQvRHJvcFVwbG9hZC5zdG9yaWVzLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG5pbXBvcnQge2ludGVyYWN0V2l0aENhbnZhc30gZnJvbSAnLi4vLi4vdXRpbHMvc3RvcnlJbnRlcmFjdGlvbnMuanMnO1xuaW1wb3J0IHtEcm9wVXBsb2FkfSBmcm9tICcuL0Ryb3BVcGxvYWQuanMnO1xuXG5pbXBvcnQgdHlwZSB7TWV0YSwgU3RvcnlPYmp9IGZyb20gJ0BubGFicy9sZXgvc3Rvcnlib29rJztcblxuY29uc3QgbWV0YTogTWV0YTx0eXBlb2YgRHJvcFVwbG9hZD4gPSB7XG4gIGFyZ1R5cGVzOiB7XG4gICAgYWNjZXB0OiB7XG4gICAgICBjb250cm9sOiAndGV4dCdcbiAgICB9LFxuICAgIGRpc2FibGVkOiB7XG4gICAgICBjb250cm9sOiAnYm9vbGVhbidcbiAgICB9LFxuICAgIGhlbHBlclRleHQ6IHtcbiAgICAgIGNvbnRyb2w6ICd0ZXh0J1xuICAgIH0sXG4gICAgbGFiZWw6IHtcbiAgICAgIGNvbnRyb2w6ICd0ZXh0J1xuICAgIH0sXG4gICAgbWF4RmlsZXM6IHtcbiAgICAgIGNvbnRyb2w6ICdudW1iZXInXG4gICAgfSxcbiAgICBtdWx0aXBsZToge1xuICAgICAgY29udHJvbDogJ2Jvb2xlYW4nXG4gICAgfSxcbiAgICBzaG93UHJldmlld3M6IHtcbiAgICAgIGNvbnRyb2w6ICdib29sZWFuJ1xuICAgIH1cbiAgfSxcbiAgY29tcG9uZW50OiBEcm9wVXBsb2FkLFxuICBwYXJhbWV0ZXJzOiB7XG4gICAgbGF5b3V0OiAnY2VudGVyZWQnXG4gIH0sXG4gIHRpdGxlOiAnQ29tcG9uZW50cy9Gb3JtL0Ryb3BVcGxvYWQnXG59O1xuXG5leHBvcnQgZGVmYXVsdCBtZXRhO1xuXG50eXBlIFN0b3J5ID0gU3RvcnlPYmo8dHlwZW9mIERyb3BVcGxvYWQ+O1xuXG5leHBvcnQgY29uc3QgRGVmYXVsdDogU3RvcnkgPSB7XG4gIGFyZ3M6IHtcbiAgICBhY2NlcHQ6ICdpbWFnZS8qLC5wZGYnLFxuICAgIGhlbHBlclRleHQ6ICdQTkcsIEpQRywgb3IgUERGIHVwIHRvIDUgTUInLFxuICAgIGxhYmVsOiAnRHJvcCBhc3NldHMgaGVyZSBvcicsXG4gICAgbWF4RmlsZXM6IDMsXG4gICAgbXVsdGlwbGU6IHRydWUsXG4gICAgc2hvd1ByZXZpZXdzOiBmYWxzZSxcbiAgICB0cmFuc2Zvcm1JbWFnZXM6IGZhbHNlXG4gIH0sXG4gIHBsYXk6IGludGVyYWN0V2l0aENhbnZhc1xufTtcbiJdLCJuYW1lcyI6WyJSZWFjdCIsImludGVyYWN0V2l0aENhbnZhcyIsIkRyb3BVcGxvYWQiLCJtZXRhIiwiYXJnVHlwZXMiLCJhY2NlcHQiLCJjb250cm9sIiwiZGlzYWJsZWQiLCJoZWxwZXJUZXh0IiwibGFiZWwiLCJtYXhGaWxlcyIsIm11bHRpcGxlIiwic2hvd1ByZXZpZXdzIiwiY29tcG9uZW50IiwicGFyYW1ldGVycyIsImxheW91dCIsInRpdGxlIiwiRGVmYXVsdCIsImFyZ3MiLCJ0cmFuc2Zvcm1JbWFnZXMiLCJwbGF5Il0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPQSxXQUFXLFFBQVE7QUFFMUIsU0FBUUMsa0JBQWtCLFFBQU8sbUNBQW1DO0FBQ3BFLFNBQVFDLFVBQVUsUUFBTyxrQkFBa0I7QUFJM0MsTUFBTUMsT0FBZ0M7SUFDcENDLFVBQVU7UUFDUkMsUUFBUTtZQUNOQyxTQUFTO1FBQ1g7UUFDQUMsVUFBVTtZQUNSRCxTQUFTO1FBQ1g7UUFDQUUsWUFBWTtZQUNWRixTQUFTO1FBQ1g7UUFDQUcsT0FBTztZQUNMSCxTQUFTO1FBQ1g7UUFDQUksVUFBVTtZQUNSSixTQUFTO1FBQ1g7UUFDQUssVUFBVTtZQUNSTCxTQUFTO1FBQ1g7UUFDQU0sY0FBYztZQUNaTixTQUFTO1FBQ1g7SUFDRjtJQUNBTyxXQUFXWDtJQUNYWSxZQUFZO1FBQ1ZDLFFBQVE7SUFDVjtJQUNBQyxPQUFPO0FBQ1Q7QUFFQSxlQUFlYixLQUFLO0FBSXBCLE9BQU8sTUFBTWMsVUFBaUI7SUFDNUJDLE1BQU07UUFDSmIsUUFBUTtRQUNSRyxZQUFZO1FBQ1pDLE9BQU87UUFDUEMsVUFBVTtRQUNWQyxVQUFVO1FBQ1ZDLGNBQWM7UUFDZE8saUJBQWlCO0lBQ25CO0lBQ0FDLE1BQU1uQjtBQUNSLEVBQUUifQ==
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { HTMLAttributes } from 'react';
|
|
2
|
+
export type EmptyMediaVariant = 'default' | 'icon';
|
|
3
|
+
export declare const Empty: ({ className, ...props }: HTMLAttributes<HTMLDivElement>) => import("react").JSX.Element;
|
|
4
|
+
export declare const EmptyHeader: ({ className, ...props }: HTMLAttributes<HTMLDivElement>) => import("react").JSX.Element;
|
|
5
|
+
export interface EmptyMediaProps extends HTMLAttributes<HTMLDivElement> {
|
|
6
|
+
readonly variant?: EmptyMediaVariant;
|
|
7
|
+
}
|
|
8
|
+
export declare const EmptyMedia: ({ className, variant, ...props }: EmptyMediaProps) => import("react").JSX.Element;
|
|
9
|
+
export declare const EmptyTitle: ({ className, ...props }: HTMLAttributes<HTMLDivElement>) => import("react").JSX.Element;
|
|
10
|
+
export declare const EmptyDescription: ({ className, ...props }: HTMLAttributes<HTMLParagraphElement>) => import("react").JSX.Element;
|
|
11
|
+
export declare const EmptyContent: ({ className, ...props }: HTMLAttributes<HTMLDivElement>) => import("react").JSX.Element;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from '@nlabs/utils';
|
|
3
|
+
const mediaClasses = {
|
|
4
|
+
default: 'bg-transparent',
|
|
5
|
+
icon: 'flex size-10 shrink-0 items-center justify-center rounded-lg bg-muted text-foreground [&_svg:not([class*=size-])]:size-6'
|
|
6
|
+
};
|
|
7
|
+
export const Empty = ({ className, ...props })=>/*#__PURE__*/ _jsx("div", {
|
|
8
|
+
className: cn('flex min-w-0 flex-1 flex-col items-center justify-center gap-6 rounded-lg border border-dashed border-border p-6 text-center text-balance md:p-12', className),
|
|
9
|
+
"data-slot": "empty",
|
|
10
|
+
...props
|
|
11
|
+
});
|
|
12
|
+
export const EmptyHeader = ({ className, ...props })=>/*#__PURE__*/ _jsx("div", {
|
|
13
|
+
className: cn('flex max-w-sm flex-col items-center gap-2 text-center', className),
|
|
14
|
+
"data-slot": "empty-header",
|
|
15
|
+
...props
|
|
16
|
+
});
|
|
17
|
+
export const EmptyMedia = ({ className, variant = 'default', ...props })=>/*#__PURE__*/ _jsx("div", {
|
|
18
|
+
className: cn('mb-2 flex shrink-0 items-center justify-center [&_svg]:pointer-events-none [&_svg]:shrink-0', mediaClasses[variant], className),
|
|
19
|
+
"data-slot": "empty-media",
|
|
20
|
+
"data-variant": variant,
|
|
21
|
+
...props
|
|
22
|
+
});
|
|
23
|
+
export const EmptyTitle = ({ className, ...props })=>/*#__PURE__*/ _jsx("div", {
|
|
24
|
+
className: cn('text-lg font-medium tracking-tight', className),
|
|
25
|
+
"data-slot": "empty-title",
|
|
26
|
+
...props
|
|
27
|
+
});
|
|
28
|
+
export const EmptyDescription = ({ className, ...props })=>/*#__PURE__*/ _jsx("p", {
|
|
29
|
+
className: cn('text-sm/relaxed text-muted-foreground [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary', className),
|
|
30
|
+
"data-slot": "empty-description",
|
|
31
|
+
...props
|
|
32
|
+
});
|
|
33
|
+
export const EmptyContent = ({ className, ...props })=>/*#__PURE__*/ _jsx("div", {
|
|
34
|
+
className: cn('flex w-full max-w-sm min-w-0 flex-col items-center gap-4 text-sm text-balance', className),
|
|
35
|
+
"data-slot": "empty-content",
|
|
36
|
+
...props
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L2dvdGhhbWpzL3NyYy9jb21wb25lbnRzL0VtcHR5L0VtcHR5LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2NufSBmcm9tICdAbmxhYnMvdXRpbHMnO1xuXG5pbXBvcnQgdHlwZSB7SFRNTEF0dHJpYnV0ZXN9IGZyb20gJ3JlYWN0JztcblxuZXhwb3J0IHR5cGUgRW1wdHlNZWRpYVZhcmlhbnQgPSAnZGVmYXVsdCcgfCAnaWNvbic7XG5cbmNvbnN0IG1lZGlhQ2xhc3NlczogUmVjb3JkPEVtcHR5TWVkaWFWYXJpYW50LCBzdHJpbmc+ID0ge1xuICBkZWZhdWx0OiAnYmctdHJhbnNwYXJlbnQnLFxuICBpY29uOiAnZmxleCBzaXplLTEwIHNocmluay0wIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciByb3VuZGVkLWxnIGJnLW11dGVkIHRleHQtZm9yZWdyb3VuZCBbJl9zdmc6bm90KFtjbGFzcyo9c2l6ZS1dKV06c2l6ZS02J1xufTtcblxuZXhwb3J0IGNvbnN0IEVtcHR5ID0gKHtjbGFzc05hbWUsIC4uLnByb3BzfTogSFRNTEF0dHJpYnV0ZXM8SFRNTERpdkVsZW1lbnQ+KSA9PiAoXG4gIDxkaXZcbiAgICBjbGFzc05hbWU9e2NuKCdmbGV4IG1pbi13LTAgZmxleC0xIGZsZXgtY29sIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBnYXAtNiByb3VuZGVkLWxnIGJvcmRlciBib3JkZXItZGFzaGVkIGJvcmRlci1ib3JkZXIgcC02IHRleHQtY2VudGVyIHRleHQtYmFsYW5jZSBtZDpwLTEyJywgY2xhc3NOYW1lKX1cbiAgICBkYXRhLXNsb3Q9XCJlbXB0eVwiXG4gICAgey4uLnByb3BzfVxuICAvPlxuKTtcblxuZXhwb3J0IGNvbnN0IEVtcHR5SGVhZGVyID0gKHtjbGFzc05hbWUsIC4uLnByb3BzfTogSFRNTEF0dHJpYnV0ZXM8SFRNTERpdkVsZW1lbnQ+KSA9PiAoXG4gIDxkaXZcbiAgICBjbGFzc05hbWU9e2NuKCdmbGV4IG1heC13LXNtIGZsZXgtY29sIGl0ZW1zLWNlbnRlciBnYXAtMiB0ZXh0LWNlbnRlcicsIGNsYXNzTmFtZSl9XG4gICAgZGF0YS1zbG90PVwiZW1wdHktaGVhZGVyXCJcbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pO1xuXG5leHBvcnQgaW50ZXJmYWNlIEVtcHR5TWVkaWFQcm9wcyBleHRlbmRzIEhUTUxBdHRyaWJ1dGVzPEhUTUxEaXZFbGVtZW50PiB7XG4gIHJlYWRvbmx5IHZhcmlhbnQ/OiBFbXB0eU1lZGlhVmFyaWFudDtcbn1cblxuZXhwb3J0IGNvbnN0IEVtcHR5TWVkaWEgPSAoe1xuICBjbGFzc05hbWUsXG4gIHZhcmlhbnQgPSAnZGVmYXVsdCcsXG4gIC4uLnByb3BzXG59OiBFbXB0eU1lZGlhUHJvcHMpID0+IChcbiAgPGRpdlxuICAgIGNsYXNzTmFtZT17Y24oJ21iLTIgZmxleCBzaHJpbmstMCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgWyZfc3ZnXTpwb2ludGVyLWV2ZW50cy1ub25lIFsmX3N2Z106c2hyaW5rLTAnLCBtZWRpYUNsYXNzZXNbdmFyaWFudF0sIGNsYXNzTmFtZSl9XG4gICAgZGF0YS1zbG90PVwiZW1wdHktbWVkaWFcIlxuICAgIGRhdGEtdmFyaWFudD17dmFyaWFudH1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pO1xuXG5leHBvcnQgY29uc3QgRW1wdHlUaXRsZSA9ICh7Y2xhc3NOYW1lLCAuLi5wcm9wc306IEhUTUxBdHRyaWJ1dGVzPEhUTUxEaXZFbGVtZW50PikgPT4gKFxuICA8ZGl2XG4gICAgY2xhc3NOYW1lPXtjbigndGV4dC1sZyBmb250LW1lZGl1bSB0cmFja2luZy10aWdodCcsIGNsYXNzTmFtZSl9XG4gICAgZGF0YS1zbG90PVwiZW1wdHktdGl0bGVcIlxuICAgIHsuLi5wcm9wc31cbiAgLz5cbik7XG5cbmV4cG9ydCBjb25zdCBFbXB0eURlc2NyaXB0aW9uID0gKHtjbGFzc05hbWUsIC4uLnByb3BzfTogSFRNTEF0dHJpYnV0ZXM8SFRNTFBhcmFncmFwaEVsZW1lbnQ+KSA9PiAoXG4gIDxwXG4gICAgY2xhc3NOYW1lPXtjbigndGV4dC1zbS9yZWxheGVkIHRleHQtbXV0ZWQtZm9yZWdyb3VuZCBbJj5hXTp1bmRlcmxpbmUgWyY+YV06dW5kZXJsaW5lLW9mZnNldC00IFsmPmE6aG92ZXJdOnRleHQtcHJpbWFyeScsIGNsYXNzTmFtZSl9XG4gICAgZGF0YS1zbG90PVwiZW1wdHktZGVzY3JpcHRpb25cIlxuICAgIHsuLi5wcm9wc31cbiAgLz5cbik7XG5cbmV4cG9ydCBjb25zdCBFbXB0eUNvbnRlbnQgPSAoe2NsYXNzTmFtZSwgLi4ucHJvcHN9OiBIVE1MQXR0cmlidXRlczxIVE1MRGl2RWxlbWVudD4pID0+IChcbiAgPGRpdlxuICAgIGNsYXNzTmFtZT17Y24oJ2ZsZXggdy1mdWxsIG1heC13LXNtIG1pbi13LTAgZmxleC1jb2wgaXRlbXMtY2VudGVyIGdhcC00IHRleHQtc20gdGV4dC1iYWxhbmNlJywgY2xhc3NOYW1lKX1cbiAgICBkYXRhLXNsb3Q9XCJlbXB0eS1jb250ZW50XCJcbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pO1xuIl0sIm5hbWVzIjpbImNuIiwibWVkaWFDbGFzc2VzIiwiZGVmYXVsdCIsImljb24iLCJFbXB0eSIsImNsYXNzTmFtZSIsInByb3BzIiwiZGl2IiwiZGF0YS1zbG90IiwiRW1wdHlIZWFkZXIiLCJFbXB0eU1lZGlhIiwidmFyaWFudCIsImRhdGEtdmFyaWFudCIsIkVtcHR5VGl0bGUiLCJFbXB0eURlc2NyaXB0aW9uIiwicCIsIkVtcHR5Q29udGVudCJdLCJtYXBwaW5ncyI6IjtBQUFBLFNBQVFBLEVBQUUsUUFBTyxlQUFlO0FBTWhDLE1BQU1DLGVBQWtEO0lBQ3REQyxTQUFTO0lBQ1RDLE1BQU07QUFDUjtBQUVBLE9BQU8sTUFBTUMsUUFBUSxDQUFDLEVBQUNDLFNBQVMsRUFBRSxHQUFHQyxPQUFzQyxpQkFDekUsS0FBQ0M7UUFDQ0YsV0FBV0wsR0FBRyxxSkFBcUpLO1FBQ25LRyxhQUFVO1FBQ1QsR0FBR0YsS0FBSztPQUVYO0FBRUYsT0FBTyxNQUFNRyxjQUFjLENBQUMsRUFBQ0osU0FBUyxFQUFFLEdBQUdDLE9BQXNDLGlCQUMvRSxLQUFDQztRQUNDRixXQUFXTCxHQUFHLHlEQUF5REs7UUFDdkVHLGFBQVU7UUFDVCxHQUFHRixLQUFLO09BRVg7QUFNRixPQUFPLE1BQU1JLGFBQWEsQ0FBQyxFQUN6QkwsU0FBUyxFQUNUTSxVQUFVLFNBQVMsRUFDbkIsR0FBR0wsT0FDYSxpQkFDaEIsS0FBQ0M7UUFDQ0YsV0FBV0wsR0FBRywrRkFBK0ZDLFlBQVksQ0FBQ1UsUUFBUSxFQUFFTjtRQUNwSUcsYUFBVTtRQUNWSSxnQkFBY0Q7UUFDYixHQUFHTCxLQUFLO09BRVg7QUFFRixPQUFPLE1BQU1PLGFBQWEsQ0FBQyxFQUFDUixTQUFTLEVBQUUsR0FBR0MsT0FBc0MsaUJBQzlFLEtBQUNDO1FBQ0NGLFdBQVdMLEdBQUcsc0NBQXNDSztRQUNwREcsYUFBVTtRQUNULEdBQUdGLEtBQUs7T0FFWDtBQUVGLE9BQU8sTUFBTVEsbUJBQW1CLENBQUMsRUFBQ1QsU0FBUyxFQUFFLEdBQUdDLE9BQTRDLGlCQUMxRixLQUFDUztRQUNDVixXQUFXTCxHQUFHLDJHQUEyR0s7UUFDekhHLGFBQVU7UUFDVCxHQUFHRixLQUFLO09BRVg7QUFFRixPQUFPLE1BQU1VLGVBQWUsQ0FBQyxFQUFDWCxTQUFTLEVBQUUsR0FBR0MsT0FBc0MsaUJBQ2hGLEtBQUNDO1FBQ0NGLFdBQVdMLEdBQUcsaUZBQWlGSztRQUMvRkcsYUFBVTtRQUNULEdBQUdGLEtBQUs7T0FFWCJ9
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { Search } from 'lucide-react';
|
|
4
|
+
import { interactWithCanvas } from '../../utils/storyInteractions.js';
|
|
5
|
+
import { Button } from '../Button/Button.js';
|
|
6
|
+
import { Empty, EmptyContent, EmptyDescription, EmptyHeader, EmptyMedia, EmptyTitle } from './Empty.js';
|
|
7
|
+
const meta = {
|
|
8
|
+
argTypes: {
|
|
9
|
+
className: {
|
|
10
|
+
control: 'text'
|
|
11
|
+
}
|
|
12
|
+
},
|
|
13
|
+
component: Empty,
|
|
14
|
+
parameters: {
|
|
15
|
+
layout: 'centered'
|
|
16
|
+
},
|
|
17
|
+
title: 'Components/Empty'
|
|
18
|
+
};
|
|
19
|
+
export default meta;
|
|
20
|
+
export const Default = {
|
|
21
|
+
args: {
|
|
22
|
+
className: 'w-[28rem]'
|
|
23
|
+
},
|
|
24
|
+
play: interactWithCanvas,
|
|
25
|
+
render: (args)=>/*#__PURE__*/ _jsxs(Empty, {
|
|
26
|
+
...args,
|
|
27
|
+
children: [
|
|
28
|
+
/*#__PURE__*/ _jsxs(EmptyHeader, {
|
|
29
|
+
children: [
|
|
30
|
+
/*#__PURE__*/ _jsx(EmptyMedia, {
|
|
31
|
+
variant: "icon",
|
|
32
|
+
children: /*#__PURE__*/ _jsx(Search, {})
|
|
33
|
+
}),
|
|
34
|
+
/*#__PURE__*/ _jsx(EmptyTitle, {
|
|
35
|
+
children: "No results"
|
|
36
|
+
}),
|
|
37
|
+
/*#__PURE__*/ _jsx(EmptyDescription, {
|
|
38
|
+
children: "Try changing the filters or creating a new saved view."
|
|
39
|
+
})
|
|
40
|
+
]
|
|
41
|
+
}),
|
|
42
|
+
/*#__PURE__*/ _jsx(EmptyContent, {
|
|
43
|
+
children: /*#__PURE__*/ _jsx(Button, {
|
|
44
|
+
label: "Create view",
|
|
45
|
+
size: "sm"
|
|
46
|
+
})
|
|
47
|
+
})
|
|
48
|
+
]
|
|
49
|
+
})
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L2dvdGhhbWpzL3NyYy9jb21wb25lbnRzL0VtcHR5L0VtcHR5LnN0b3JpZXMudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQge1NlYXJjaH0gZnJvbSAnbHVjaWRlLXJlYWN0JztcbmltcG9ydCB7aW50ZXJhY3RXaXRoQ2FudmFzfSBmcm9tICcuLi8uLi91dGlscy9zdG9yeUludGVyYWN0aW9ucy5qcyc7XG5pbXBvcnQge0J1dHRvbn0gZnJvbSAnLi4vQnV0dG9uL0J1dHRvbi5qcyc7XG5pbXBvcnQge0VtcHR5LCBFbXB0eUNvbnRlbnQsIEVtcHR5RGVzY3JpcHRpb24sIEVtcHR5SGVhZGVyLCBFbXB0eU1lZGlhLCBFbXB0eVRpdGxlfSBmcm9tICcuL0VtcHR5LmpzJztcblxuaW1wb3J0IHR5cGUge01ldGEsIFN0b3J5T2JqfSBmcm9tICdAbmxhYnMvbGV4L3N0b3J5Ym9vayc7XG5cbmNvbnN0IG1ldGE6IE1ldGE8dHlwZW9mIEVtcHR5PiA9IHtcbiAgYXJnVHlwZXM6IHtcbiAgICBjbGFzc05hbWU6IHtcbiAgICAgIGNvbnRyb2w6ICd0ZXh0J1xuICAgIH1cbiAgfSxcbiAgY29tcG9uZW50OiBFbXB0eSxcbiAgcGFyYW1ldGVyczoge1xuICAgIGxheW91dDogJ2NlbnRlcmVkJ1xuICB9LFxuICB0aXRsZTogJ0NvbXBvbmVudHMvRW1wdHknXG59O1xuXG5leHBvcnQgZGVmYXVsdCBtZXRhO1xuXG50eXBlIFN0b3J5ID0gU3RvcnlPYmo8dHlwZW9mIEVtcHR5PjtcblxuZXhwb3J0IGNvbnN0IERlZmF1bHQ6IFN0b3J5ID0ge1xuICBhcmdzOiB7XG4gICAgY2xhc3NOYW1lOiAndy1bMjhyZW1dJ1xuICB9LFxuICBwbGF5OiBpbnRlcmFjdFdpdGhDYW52YXMsXG4gIHJlbmRlcjogKGFyZ3MpID0+IChcbiAgICA8RW1wdHkgey4uLmFyZ3N9PlxuICAgICAgPEVtcHR5SGVhZGVyPlxuICAgICAgICA8RW1wdHlNZWRpYSB2YXJpYW50PVwiaWNvblwiPlxuICAgICAgICAgIDxTZWFyY2ggLz5cbiAgICAgICAgPC9FbXB0eU1lZGlhPlxuICAgICAgICA8RW1wdHlUaXRsZT5ObyByZXN1bHRzPC9FbXB0eVRpdGxlPlxuICAgICAgICA8RW1wdHlEZXNjcmlwdGlvbj5UcnkgY2hhbmdpbmcgdGhlIGZpbHRlcnMgb3IgY3JlYXRpbmcgYSBuZXcgc2F2ZWQgdmlldy48L0VtcHR5RGVzY3JpcHRpb24+XG4gICAgICA8L0VtcHR5SGVhZGVyPlxuICAgICAgPEVtcHR5Q29udGVudD5cbiAgICAgICAgPEJ1dHRvbiBsYWJlbD1cIkNyZWF0ZSB2aWV3XCIgc2l6ZT1cInNtXCIgLz5cbiAgICAgIDwvRW1wdHlDb250ZW50PlxuICAgIDwvRW1wdHk+XG4gIClcbn07XG4iXSwibmFtZXMiOlsiUmVhY3QiLCJTZWFyY2giLCJpbnRlcmFjdFdpdGhDYW52YXMiLCJCdXR0b24iLCJFbXB0eSIsIkVtcHR5Q29udGVudCIsIkVtcHR5RGVzY3JpcHRpb24iLCJFbXB0eUhlYWRlciIsIkVtcHR5TWVkaWEiLCJFbXB0eVRpdGxlIiwibWV0YSIsImFyZ1R5cGVzIiwiY2xhc3NOYW1lIiwiY29udHJvbCIsImNvbXBvbmVudCIsInBhcmFtZXRlcnMiLCJsYXlvdXQiLCJ0aXRsZSIsIkRlZmF1bHQiLCJhcmdzIiwicGxheSIsInJlbmRlciIsInZhcmlhbnQiLCJsYWJlbCIsInNpemUiXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPQSxXQUFXLFFBQVE7QUFDMUIsU0FBUUMsTUFBTSxRQUFPLGVBQWU7QUFDcEMsU0FBUUMsa0JBQWtCLFFBQU8sbUNBQW1DO0FBQ3BFLFNBQVFDLE1BQU0sUUFBTyxzQkFBc0I7QUFDM0MsU0FBUUMsS0FBSyxFQUFFQyxZQUFZLEVBQUVDLGdCQUFnQixFQUFFQyxXQUFXLEVBQUVDLFVBQVUsRUFBRUMsVUFBVSxRQUFPLGFBQWE7QUFJdEcsTUFBTUMsT0FBMkI7SUFDL0JDLFVBQVU7UUFDUkMsV0FBVztZQUNUQyxTQUFTO1FBQ1g7SUFDRjtJQUNBQyxXQUFXVjtJQUNYVyxZQUFZO1FBQ1ZDLFFBQVE7SUFDVjtJQUNBQyxPQUFPO0FBQ1Q7QUFFQSxlQUFlUCxLQUFLO0FBSXBCLE9BQU8sTUFBTVEsVUFBaUI7SUFDNUJDLE1BQU07UUFDSlAsV0FBVztJQUNiO0lBQ0FRLE1BQU1sQjtJQUNObUIsUUFBUSxDQUFDRixxQkFDUCxNQUFDZjtZQUFPLEdBQUdlLElBQUk7OzhCQUNiLE1BQUNaOztzQ0FDQyxLQUFDQzs0QkFBV2MsU0FBUTtzQ0FDbEIsY0FBQSxLQUFDckI7O3NDQUVILEtBQUNRO3NDQUFXOztzQ0FDWixLQUFDSDtzQ0FBaUI7Ozs7OEJBRXBCLEtBQUNEOzhCQUNDLGNBQUEsS0FBQ0Y7d0JBQU9vQixPQUFNO3dCQUFjQyxNQUFLOzs7OztBQUl6QyxFQUFFIn0=
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { ButtonProps } from '../Button/Button.js';
|
|
2
|
+
import type { ReactNode } from 'react';
|
|
3
|
+
export interface EmptyStateProps {
|
|
4
|
+
readonly action?: ReactNode;
|
|
5
|
+
readonly actionClassName?: string;
|
|
6
|
+
readonly actionIcon?: ReactNode;
|
|
7
|
+
readonly actionLabel?: string;
|
|
8
|
+
readonly actionProps?: Omit<ButtonProps, 'children' | 'icon' | 'label' | 'onClick' | 'variant'>;
|
|
9
|
+
readonly className?: string;
|
|
10
|
+
readonly description: string;
|
|
11
|
+
readonly icon?: ReactNode;
|
|
12
|
+
readonly onAction?: () => void;
|
|
13
|
+
readonly title: string;
|
|
14
|
+
}
|
|
15
|
+
export declare const EmptyState: ({ action, actionClassName, actionIcon, actionLabel, actionProps, className, description, icon, onAction, title }: EmptyStateProps) => import("react").JSX.Element;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from '@nlabs/utils';
|
|
3
|
+
import { Button } from '../Button/Button.js';
|
|
4
|
+
const defaultIcon = /*#__PURE__*/ _jsx("svg", {
|
|
5
|
+
"aria-hidden": "true",
|
|
6
|
+
className: "mx-auto size-12 text-gray-400 dark:text-gray-500",
|
|
7
|
+
fill: "none",
|
|
8
|
+
stroke: "currentColor",
|
|
9
|
+
viewBox: "0 0 24 24",
|
|
10
|
+
children: /*#__PURE__*/ _jsx("path", {
|
|
11
|
+
d: "M9 13h6m-3-3v6m-9 1V7a2 2 0 012-2h6l2 2h6a2 2 0 012 2v8a2 2 0 01-2 2H5a2 2 0 01-2-2z",
|
|
12
|
+
strokeLinecap: "round",
|
|
13
|
+
strokeLinejoin: "round",
|
|
14
|
+
strokeWidth: 2,
|
|
15
|
+
vectorEffect: "non-scaling-stroke"
|
|
16
|
+
})
|
|
17
|
+
});
|
|
18
|
+
export const EmptyState = ({ action, actionClassName, actionIcon, actionLabel, actionProps, className, description, icon = defaultIcon, onAction, title })=>/*#__PURE__*/ _jsxs("div", {
|
|
19
|
+
className: cn('flex flex-col items-center text-center', className),
|
|
20
|
+
children: [
|
|
21
|
+
icon,
|
|
22
|
+
/*#__PURE__*/ _jsx("h3", {
|
|
23
|
+
className: "mt-2 text-sm font-semibold text-gray-900 dark:text-white",
|
|
24
|
+
children: title
|
|
25
|
+
}),
|
|
26
|
+
/*#__PURE__*/ _jsx("p", {
|
|
27
|
+
className: "mt-1 text-sm text-gray-500 dark:text-gray-400",
|
|
28
|
+
children: description
|
|
29
|
+
}),
|
|
30
|
+
(action || actionLabel) && /*#__PURE__*/ _jsx("div", {
|
|
31
|
+
className: "mt-6 flex justify-center",
|
|
32
|
+
children: action || /*#__PURE__*/ _jsx(Button, {
|
|
33
|
+
className: actionClassName,
|
|
34
|
+
icon: actionIcon,
|
|
35
|
+
label: actionLabel,
|
|
36
|
+
onClick: onAction,
|
|
37
|
+
variant: "contained",
|
|
38
|
+
...actionProps
|
|
39
|
+
})
|
|
40
|
+
})
|
|
41
|
+
]
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L2dvdGhhbWpzL3NyYy9jb21wb25lbnRzL0VtcHR5U3RhdGUvRW1wdHlTdGF0ZS50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtjbn0gZnJvbSAnQG5sYWJzL3V0aWxzJztcblxuaW1wb3J0IHtCdXR0b259IGZyb20gJy4uL0J1dHRvbi9CdXR0b24uanMnO1xuXG5pbXBvcnQgdHlwZSB7QnV0dG9uUHJvcHN9IGZyb20gJy4uL0J1dHRvbi9CdXR0b24uanMnO1xuaW1wb3J0IHR5cGUge1JlYWN0Tm9kZX0gZnJvbSAncmVhY3QnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEVtcHR5U3RhdGVQcm9wcyB7XG4gIHJlYWRvbmx5IGFjdGlvbj86IFJlYWN0Tm9kZTtcbiAgcmVhZG9ubHkgYWN0aW9uQ2xhc3NOYW1lPzogc3RyaW5nO1xuICByZWFkb25seSBhY3Rpb25JY29uPzogUmVhY3ROb2RlO1xuICByZWFkb25seSBhY3Rpb25MYWJlbD86IHN0cmluZztcbiAgcmVhZG9ubHkgYWN0aW9uUHJvcHM/OiBPbWl0PEJ1dHRvblByb3BzLCAnY2hpbGRyZW4nIHwgJ2ljb24nIHwgJ2xhYmVsJyB8ICdvbkNsaWNrJyB8ICd2YXJpYW50Jz47XG4gIHJlYWRvbmx5IGNsYXNzTmFtZT86IHN0cmluZztcbiAgcmVhZG9ubHkgZGVzY3JpcHRpb246IHN0cmluZztcbiAgcmVhZG9ubHkgaWNvbj86IFJlYWN0Tm9kZTtcbiAgcmVhZG9ubHkgb25BY3Rpb24/OiAoKSA9PiB2b2lkO1xuICByZWFkb25seSB0aXRsZTogc3RyaW5nO1xufVxuXG5jb25zdCBkZWZhdWx0SWNvbiA9IChcbiAgPHN2Z1xuICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgY2xhc3NOYW1lPVwibXgtYXV0byBzaXplLTEyIHRleHQtZ3JheS00MDAgZGFyazp0ZXh0LWdyYXktNTAwXCJcbiAgICBmaWxsPVwibm9uZVwiXG4gICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCJcbiAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgPlxuICAgIDxwYXRoXG4gICAgICBkPVwiTTkgMTNoNm0tMy0zdjZtLTkgMVY3YTIgMiAwIDAxMi0yaDZsMiAyaDZhMiAyIDAgMDEyIDJ2OGEyIDIgMCAwMS0yIDJINWEyIDIgMCAwMS0yLTJ6XCJcbiAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgIHN0cm9rZVdpZHRoPXsyfVxuICAgICAgdmVjdG9yRWZmZWN0PVwibm9uLXNjYWxpbmctc3Ryb2tlXCJcbiAgICAvPlxuICA8L3N2Zz5cbik7XG5cbmV4cG9ydCBjb25zdCBFbXB0eVN0YXRlID0gKHtcbiAgYWN0aW9uLFxuICBhY3Rpb25DbGFzc05hbWUsXG4gIGFjdGlvbkljb24sXG4gIGFjdGlvbkxhYmVsLFxuICBhY3Rpb25Qcm9wcyxcbiAgY2xhc3NOYW1lLFxuICBkZXNjcmlwdGlvbixcbiAgaWNvbiA9IGRlZmF1bHRJY29uLFxuICBvbkFjdGlvbixcbiAgdGl0bGVcbn06IEVtcHR5U3RhdGVQcm9wcykgPT4gKFxuICA8ZGl2IGNsYXNzTmFtZT17Y24oJ2ZsZXggZmxleC1jb2wgaXRlbXMtY2VudGVyIHRleHQtY2VudGVyJywgY2xhc3NOYW1lKX0+XG4gICAge2ljb259XG4gICAgPGgzIGNsYXNzTmFtZT1cIm10LTIgdGV4dC1zbSBmb250LXNlbWlib2xkIHRleHQtZ3JheS05MDAgZGFyazp0ZXh0LXdoaXRlXCI+e3RpdGxlfTwvaDM+XG4gICAgPHAgY2xhc3NOYW1lPVwibXQtMSB0ZXh0LXNtIHRleHQtZ3JheS01MDAgZGFyazp0ZXh0LWdyYXktNDAwXCI+e2Rlc2NyaXB0aW9ufTwvcD5cbiAgICB7KGFjdGlvbiB8fCBhY3Rpb25MYWJlbCkgJiYgKFxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJtdC02IGZsZXgganVzdGlmeS1jZW50ZXJcIj5cbiAgICAgICAge2FjdGlvbiB8fCAoXG4gICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgY2xhc3NOYW1lPXthY3Rpb25DbGFzc05hbWV9XG4gICAgICAgICAgICBpY29uPXthY3Rpb25JY29ufVxuICAgICAgICAgICAgbGFiZWw9e2FjdGlvbkxhYmVsfVxuICAgICAgICAgICAgb25DbGljaz17b25BY3Rpb259XG4gICAgICAgICAgICB2YXJpYW50PVwiY29udGFpbmVkXCJcbiAgICAgICAgICAgIHsuLi5hY3Rpb25Qcm9wc31cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgPC9kaXY+XG4gICAgKX1cbiAgPC9kaXY+XG4pO1xuIl0sIm5hbWVzIjpbImNuIiwiQnV0dG9uIiwiZGVmYXVsdEljb24iLCJzdmciLCJhcmlhLWhpZGRlbiIsImNsYXNzTmFtZSIsImZpbGwiLCJzdHJva2UiLCJ2aWV3Qm94IiwicGF0aCIsImQiLCJzdHJva2VMaW5lY2FwIiwic3Ryb2tlTGluZWpvaW4iLCJzdHJva2VXaWR0aCIsInZlY3RvckVmZmVjdCIsIkVtcHR5U3RhdGUiLCJhY3Rpb24iLCJhY3Rpb25DbGFzc05hbWUiLCJhY3Rpb25JY29uIiwiYWN0aW9uTGFiZWwiLCJhY3Rpb25Qcm9wcyIsImRlc2NyaXB0aW9uIiwiaWNvbiIsIm9uQWN0aW9uIiwidGl0bGUiLCJkaXYiLCJoMyIsInAiLCJsYWJlbCIsIm9uQ2xpY2siLCJ2YXJpYW50Il0sIm1hcHBpbmdzIjoiO0FBQUEsU0FBUUEsRUFBRSxRQUFPLGVBQWU7QUFFaEMsU0FBUUMsTUFBTSxRQUFPLHNCQUFzQjtBQWtCM0MsTUFBTUMsNEJBQ0osS0FBQ0M7SUFDQ0MsZUFBWTtJQUNaQyxXQUFVO0lBQ1ZDLE1BQUs7SUFDTEMsUUFBTztJQUNQQyxTQUFRO2NBRVIsY0FBQSxLQUFDQztRQUNDQyxHQUFFO1FBQ0ZDLGVBQWM7UUFDZEMsZ0JBQWU7UUFDZkMsYUFBYTtRQUNiQyxjQUFhOzs7QUFLbkIsT0FBTyxNQUFNQyxhQUFhLENBQUMsRUFDekJDLE1BQU0sRUFDTkMsZUFBZSxFQUNmQyxVQUFVLEVBQ1ZDLFdBQVcsRUFDWEMsV0FBVyxFQUNYZixTQUFTLEVBQ1RnQixXQUFXLEVBQ1hDLE9BQU9wQixXQUFXLEVBQ2xCcUIsUUFBUSxFQUNSQyxLQUFLLEVBQ1csaUJBQ2hCLE1BQUNDO1FBQUlwQixXQUFXTCxHQUFHLDBDQUEwQ0s7O1lBQzFEaUI7MEJBQ0QsS0FBQ0k7Z0JBQUdyQixXQUFVOzBCQUE0RG1COzswQkFDMUUsS0FBQ0c7Z0JBQUV0QixXQUFVOzBCQUFpRGdCOztZQUM1REwsQ0FBQUEsVUFBVUcsV0FBVSxtQkFDcEIsS0FBQ007Z0JBQUlwQixXQUFVOzBCQUNaVyx3QkFDQyxLQUFDZjtvQkFDQ0ksV0FBV1k7b0JBQ1hLLE1BQU1KO29CQUNOVSxPQUFPVDtvQkFDUFUsU0FBU047b0JBQ1RPLFNBQVE7b0JBQ1AsR0FBR1YsV0FBVzs7OztPQU16QiJ9
|