@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,178 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* Copyright (c) 2018-Present, Nitrogen Labs, Inc.
|
|
4
|
+
* Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
|
|
5
|
+
*/ import { Transition } from '@headlessui/react';
|
|
6
|
+
import { useFluxListener } from '@nlabs/arkhamjs-utils-react';
|
|
7
|
+
import { cn } from '@nlabs/utils';
|
|
8
|
+
import { Fragment, useEffect, useRef, useState } from 'react';
|
|
9
|
+
import { GothamConstants } from '../../constants/GothamConstants.js';
|
|
10
|
+
import { Svg } from '../Svg/Svg.js';
|
|
11
|
+
// Custom Button component
|
|
12
|
+
const Button = ({ children, onClick, className = '' })=>/*#__PURE__*/ _jsx("button", {
|
|
13
|
+
className: cn('inline-flex items-center px-4 py-2 border border-transparent text-sm font-medium rounded-md shadow-sm', 'text-white bg-indigo-600 hover:bg-indigo-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500', className),
|
|
14
|
+
onClick: onClick,
|
|
15
|
+
type: "button",
|
|
16
|
+
children: children
|
|
17
|
+
});
|
|
18
|
+
// Custom IconButton component
|
|
19
|
+
const IconButton = ({ children, onClick, className = '' })=>/*#__PURE__*/ _jsx("button", {
|
|
20
|
+
className: cn('p-1 rounded-full hover:bg-gray-200 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500', className),
|
|
21
|
+
onClick: onClick,
|
|
22
|
+
type: "button",
|
|
23
|
+
children: children
|
|
24
|
+
});
|
|
25
|
+
// Custom Alert component
|
|
26
|
+
const Alert = ({ children, severity, onClose })=>{
|
|
27
|
+
const bgColors = {
|
|
28
|
+
error: 'bg-red-500',
|
|
29
|
+
info: 'bg-blue-500',
|
|
30
|
+
success: 'bg-green-500',
|
|
31
|
+
warning: 'bg-yellow-500'
|
|
32
|
+
};
|
|
33
|
+
return /*#__PURE__*/ _jsxs("div", {
|
|
34
|
+
className: cn('rounded-md p-4 w-full flex items-start justify-between gap-3', bgColors[severity] || 'bg-gray-500', 'text-white'),
|
|
35
|
+
children: [
|
|
36
|
+
/*#__PURE__*/ _jsx("div", {
|
|
37
|
+
className: "min-w-0 whitespace-normal break-words leading-relaxed [overflow-wrap:anywhere]",
|
|
38
|
+
children: children
|
|
39
|
+
}),
|
|
40
|
+
onClose && /*#__PURE__*/ _jsx("button", {
|
|
41
|
+
"aria-label": "Dismiss",
|
|
42
|
+
className: "-mx-1.5 -my-1.5 inline-flex shrink-0 rounded-md p-1.5 text-white hover:bg-black/20 focus:outline-none focus:ring-2 focus:ring-white",
|
|
43
|
+
onClick: onClose,
|
|
44
|
+
type: "button",
|
|
45
|
+
children: /*#__PURE__*/ _jsx("svg", {
|
|
46
|
+
className: "h-5 w-5",
|
|
47
|
+
fill: "currentColor",
|
|
48
|
+
viewBox: "0 0 20 20",
|
|
49
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
50
|
+
children: /*#__PURE__*/ _jsx("path", {
|
|
51
|
+
clipRule: "evenodd",
|
|
52
|
+
d: "M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z",
|
|
53
|
+
fillRule: "evenodd"
|
|
54
|
+
})
|
|
55
|
+
})
|
|
56
|
+
})
|
|
57
|
+
]
|
|
58
|
+
});
|
|
59
|
+
};
|
|
60
|
+
export const Notify = ()=>{
|
|
61
|
+
const [isOpen, setOpen] = useState(false);
|
|
62
|
+
const [isHovered, setHovered] = useState(false);
|
|
63
|
+
const [notification, setNotification] = useState({});
|
|
64
|
+
const remainingDurationRef = useRef(undefined);
|
|
65
|
+
const timerStartedAtRef = useRef(0);
|
|
66
|
+
const notifyClose = ()=>{
|
|
67
|
+
remainingDurationRef.current = undefined;
|
|
68
|
+
timerStartedAtRef.current = 0;
|
|
69
|
+
setOpen(false);
|
|
70
|
+
};
|
|
71
|
+
useEffect(()=>{
|
|
72
|
+
if (isOpen && notification.autoHideDuration && !isHovered) {
|
|
73
|
+
const duration = remainingDurationRef.current ?? notification.autoHideDuration;
|
|
74
|
+
timerStartedAtRef.current = Date.now();
|
|
75
|
+
const id = setTimeout(()=>{
|
|
76
|
+
notifyClose();
|
|
77
|
+
}, duration);
|
|
78
|
+
return ()=>{
|
|
79
|
+
clearTimeout(id);
|
|
80
|
+
remainingDurationRef.current = Math.max(0, duration - (Date.now() - timerStartedAtRef.current));
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
return undefined;
|
|
84
|
+
}, [
|
|
85
|
+
isHovered,
|
|
86
|
+
isOpen,
|
|
87
|
+
notification.autoHideDuration
|
|
88
|
+
]);
|
|
89
|
+
const notifyOpen = ({ actions = [], autoHideDuration = 15000, message, severity, anchorOrigin = {
|
|
90
|
+
horizontal: 'left',
|
|
91
|
+
vertical: 'bottom'
|
|
92
|
+
}, ...restProps })=>{
|
|
93
|
+
remainingDurationRef.current = autoHideDuration;
|
|
94
|
+
setHovered(false);
|
|
95
|
+
setNotification({
|
|
96
|
+
...restProps,
|
|
97
|
+
actions,
|
|
98
|
+
anchorOrigin,
|
|
99
|
+
autoHideDuration,
|
|
100
|
+
message: severity ? /*#__PURE__*/ _jsx(Alert, {
|
|
101
|
+
onClose: notifyClose,
|
|
102
|
+
severity: severity,
|
|
103
|
+
children: message
|
|
104
|
+
}) : message,
|
|
105
|
+
severity
|
|
106
|
+
});
|
|
107
|
+
setOpen(true);
|
|
108
|
+
};
|
|
109
|
+
useFluxListener(GothamConstants.NOTIFY_OPEN, notifyOpen);
|
|
110
|
+
useFluxListener(GothamConstants.NOTIFY_CLOSE, notifyClose);
|
|
111
|
+
const positionClasses = (()=>{
|
|
112
|
+
const { horizontal = 'left', vertical = 'bottom' } = notification.anchorOrigin || {};
|
|
113
|
+
const positions = {
|
|
114
|
+
bottom: {
|
|
115
|
+
center: 'bottom-4 left-1/2 transform -translate-x-1/2',
|
|
116
|
+
left: 'bottom-4 left-4',
|
|
117
|
+
right: 'bottom-4 right-4'
|
|
118
|
+
},
|
|
119
|
+
top: {
|
|
120
|
+
center: 'top-4 left-1/2 transform -translate-x-1/2',
|
|
121
|
+
left: 'top-4 left-4',
|
|
122
|
+
right: 'top-4 right-4'
|
|
123
|
+
}
|
|
124
|
+
};
|
|
125
|
+
return positions[vertical][horizontal];
|
|
126
|
+
})();
|
|
127
|
+
return /*#__PURE__*/ _jsx(Transition, {
|
|
128
|
+
as: Fragment,
|
|
129
|
+
enter: "transform ease-out duration-300 transition",
|
|
130
|
+
enterFrom: "translate-y-2 opacity-0 sm:translate-y-0 sm:translate-x-2",
|
|
131
|
+
enterTo: "translate-y-0 opacity-100 sm:translate-x-0",
|
|
132
|
+
leave: "transition ease-in duration-100",
|
|
133
|
+
leaveFrom: "opacity-100",
|
|
134
|
+
leaveTo: "opacity-0",
|
|
135
|
+
show: isOpen,
|
|
136
|
+
children: /*#__PURE__*/ _jsx("div", {
|
|
137
|
+
className: cn('fixed z-50 w-[min(960px,calc(100vw-2rem))] max-w-[min(960px,calc(100vw-2rem))] shadow-lg rounded-lg pointer-events-auto overflow-hidden', positionClasses),
|
|
138
|
+
onMouseEnter: ()=>setHovered(true),
|
|
139
|
+
onMouseLeave: ()=>setHovered(false),
|
|
140
|
+
children: /*#__PURE__*/ _jsx("div", {
|
|
141
|
+
className: "ring-1 ring-black ring-opacity-5 bg-white",
|
|
142
|
+
children: !notification.severity ? /*#__PURE__*/ _jsx("div", {
|
|
143
|
+
className: "p-4",
|
|
144
|
+
children: /*#__PURE__*/ _jsxs("div", {
|
|
145
|
+
className: "flex items-start",
|
|
146
|
+
children: [
|
|
147
|
+
/*#__PURE__*/ _jsx("div", {
|
|
148
|
+
className: "flex-1",
|
|
149
|
+
children: notification.message
|
|
150
|
+
}),
|
|
151
|
+
notification.actions?.length && /*#__PURE__*/ _jsx("div", {
|
|
152
|
+
className: "ml-4 shrink-0 flex",
|
|
153
|
+
children: notification.actions.map(({ icon, label, onClick }, index)=>/*#__PURE__*/ _jsx(Fragment, {
|
|
154
|
+
children: icon ? /*#__PURE__*/ _jsx(IconButton, {
|
|
155
|
+
onClick: ()=>onClick('notification'),
|
|
156
|
+
children: /*#__PURE__*/ _jsx(Svg, {
|
|
157
|
+
color: "inherit",
|
|
158
|
+
height: 24,
|
|
159
|
+
name: icon,
|
|
160
|
+
width: 24
|
|
161
|
+
})
|
|
162
|
+
}) : /*#__PURE__*/ _jsx(Button, {
|
|
163
|
+
onClick: ()=>onClick('notification'),
|
|
164
|
+
children: label
|
|
165
|
+
})
|
|
166
|
+
}, index))
|
|
167
|
+
})
|
|
168
|
+
]
|
|
169
|
+
})
|
|
170
|
+
}) : /*#__PURE__*/ _jsx("div", {
|
|
171
|
+
children: notification.message
|
|
172
|
+
})
|
|
173
|
+
})
|
|
174
|
+
})
|
|
175
|
+
});
|
|
176
|
+
};
|
|
177
|
+
|
|
178
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L2dvdGhhbWpzL3NyYy9jb21wb25lbnRzL05vdGlmeS9Ob3RpZnkudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQge1RyYW5zaXRpb259IGZyb20gJ0BoZWFkbGVzc3VpL3JlYWN0JztcbmltcG9ydCB7dXNlRmx1eExpc3RlbmVyfSBmcm9tICdAbmxhYnMvYXJraGFtanMtdXRpbHMtcmVhY3QnO1xuaW1wb3J0IHtjbn0gZnJvbSAnQG5sYWJzL3V0aWxzJztcbmltcG9ydCB7RnJhZ21lbnQsIHVzZUVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZX0gZnJvbSAncmVhY3QnO1xuXG5pbXBvcnQge0dvdGhhbUNvbnN0YW50c30gZnJvbSAnLi4vLi4vY29uc3RhbnRzL0dvdGhhbUNvbnN0YW50cy5qcyc7XG5pbXBvcnQge1N2Z30gZnJvbSAnLi4vU3ZnL1N2Zy5qcyc7XG5cbmltcG9ydCB0eXBlIHtSZWFjdEVsZW1lbnR9IGZyb20gJ3JlYWN0JztcblxuZXhwb3J0IGludGVyZmFjZSBHb3RoYW1Ob3RpZnlBY3Rpb24ge1xuICByZWFkb25seSBpY29uPzogc3RyaW5nO1xuICByZWFkb25seSBsYWJlbD86IHN0cmluZztcbiAgcmVhZG9ubHkgb25DbGljazogKGtleTogc3RyaW5nKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgdHlwZSBHb3RoYW1TZXZlcml0eSA9ICdlcnJvcicgfCAnaW5mbycgfCAnc3VjY2VzcycgfCAnd2FybmluZyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgR290aGFtTm90aWZ5UGFyYW1zIHtcbiAgcmVhZG9ubHkgYWN0aW9ucz86IEdvdGhhbU5vdGlmeUFjdGlvbltdO1xuICByZWFkb25seSBhbmNob3JPcmlnaW4/OiB7XG4gICAgdmVydGljYWw6ICd0b3AnIHwgJ2JvdHRvbSc7XG4gICAgaG9yaXpvbnRhbDogJ2xlZnQnIHwgJ2NlbnRlcicgfCAncmlnaHQnO1xuICB9O1xuICByZWFkb25seSBhdXRvSGlkZUR1cmF0aW9uPzogbnVtYmVyO1xuICByZWFkb25seSBtZXNzYWdlPzogUmVhY3RFbGVtZW50IHwgc3RyaW5nO1xuICByZWFkb25seSBzZXZlcml0eT86IEdvdGhhbVNldmVyaXR5O1xufVxuXG4vLyBDdXN0b20gQnV0dG9uIGNvbXBvbmVudFxuY29uc3QgQnV0dG9uID0gKHtjaGlsZHJlbiwgb25DbGljaywgY2xhc3NOYW1lID0gJyd9KSA9PiAoXG4gIDxidXR0b25cbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgJ2lubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBweC00IHB5LTIgYm9yZGVyIGJvcmRlci10cmFuc3BhcmVudCB0ZXh0LXNtIGZvbnQtbWVkaXVtIHJvdW5kZWQtbWQgc2hhZG93LXNtJyxcbiAgICAgICd0ZXh0LXdoaXRlIGJnLWluZGlnby02MDAgaG92ZXI6YmctaW5kaWdvLTcwMCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0yIGZvY3VzOnJpbmctb2Zmc2V0LTIgZm9jdXM6cmluZy1pbmRpZ28tNTAwJyxcbiAgICAgIGNsYXNzTmFtZVxuICAgICl9XG4gICAgb25DbGljaz17b25DbGlja31cbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgPlxuICAgIHtjaGlsZHJlbn1cbiAgPC9idXR0b24+XG4pO1xuXG4vLyBDdXN0b20gSWNvbkJ1dHRvbiBjb21wb25lbnRcbmNvbnN0IEljb25CdXR0b24gPSAoe2NoaWxkcmVuLCBvbkNsaWNrLCBjbGFzc05hbWUgPSAnJ30pID0+IChcbiAgPGJ1dHRvblxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAncC0xIHJvdW5kZWQtZnVsbCBob3ZlcjpiZy1ncmF5LTIwMCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0yIGZvY3VzOnJpbmctb2Zmc2V0LTIgZm9jdXM6cmluZy1pbmRpZ28tNTAwJyxcbiAgICAgIGNsYXNzTmFtZVxuICAgICl9XG4gICAgb25DbGljaz17b25DbGlja31cbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgPlxuICAgIHtjaGlsZHJlbn1cbiAgPC9idXR0b24+XG4pO1xuXG4vLyBDdXN0b20gQWxlcnQgY29tcG9uZW50XG5jb25zdCBBbGVydCA9ICh7Y2hpbGRyZW4sIHNldmVyaXR5LCBvbkNsb3NlfSkgPT4ge1xuICBjb25zdCBiZ0NvbG9ycyA9IHtcbiAgICBlcnJvcjogJ2JnLXJlZC01MDAnLFxuICAgIGluZm86ICdiZy1ibHVlLTUwMCcsXG4gICAgc3VjY2VzczogJ2JnLWdyZWVuLTUwMCcsXG4gICAgd2FybmluZzogJ2JnLXllbGxvdy01MDAnXG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT17Y24oXG4gICAgICAncm91bmRlZC1tZCBwLTQgdy1mdWxsIGZsZXggaXRlbXMtc3RhcnQganVzdGlmeS1iZXR3ZWVuIGdhcC0zJyxcbiAgICAgIGJnQ29sb3JzW3NldmVyaXR5XSB8fCAnYmctZ3JheS01MDAnLFxuICAgICAgJ3RleHQtd2hpdGUnXG4gICAgKX0+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1pbi13LTAgd2hpdGVzcGFjZS1ub3JtYWwgYnJlYWstd29yZHMgbGVhZGluZy1yZWxheGVkIFtvdmVyZmxvdy13cmFwOmFueXdoZXJlXVwiPntjaGlsZHJlbn08L2Rpdj5cbiAgICAgIHtvbkNsb3NlICYmIChcbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJEaXNtaXNzXCJcbiAgICAgICAgICBjbGFzc05hbWU9XCItbXgtMS41IC1teS0xLjUgaW5saW5lLWZsZXggc2hyaW5rLTAgcm91bmRlZC1tZCBwLTEuNSB0ZXh0LXdoaXRlIGhvdmVyOmJnLWJsYWNrLzIwIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTIgZm9jdXM6cmluZy13aGl0ZVwiXG4gICAgICAgICAgb25DbGljaz17b25DbG9zZX1cbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzdmcgY2xhc3NOYW1lPVwiaC01IHctNVwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgPHBhdGggY2xpcFJ1bGU9XCJldmVub2RkXCIgZD1cIk00LjI5MyA0LjI5M2ExIDEgMCAwMTEuNDE0IDBMMTAgOC41ODZsNC4yOTMtNC4yOTNhMSAxIDAgMTExLjQxNCAxLjQxNEwxMS40MTQgMTBsNC4yOTMgNC4yOTNhMSAxIDAgMDEtMS40MTQgMS40MTRMMTAgMTEuNDE0bC00LjI5MyA0LjI5M2ExIDEgMCAwMS0xLjQxNC0xLjQxNEw4LjU4NiAxMCA0LjI5MyA1LjcwN2ExIDEgMCAwMTAtMS40MTR6XCIgZmlsbFJ1bGU9XCJldmVub2RkXCIgLz5cbiAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICApfVxuICAgIDwvZGl2PlxuICApO1xufTtcblxuZXhwb3J0IGNvbnN0IE5vdGlmeSA9ICgpID0+IHtcbiAgY29uc3QgW2lzT3Blbiwgc2V0T3Blbl0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtpc0hvdmVyZWQsIHNldEhvdmVyZWRdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbbm90aWZpY2F0aW9uLCBzZXROb3RpZmljYXRpb25dID0gdXNlU3RhdGU8R290aGFtTm90aWZ5UGFyYW1zPih7fSk7XG4gIGNvbnN0IHJlbWFpbmluZ0R1cmF0aW9uUmVmID0gdXNlUmVmPG51bWJlciB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgY29uc3QgdGltZXJTdGFydGVkQXRSZWYgPSB1c2VSZWYoMCk7XG5cbiAgY29uc3Qgbm90aWZ5Q2xvc2UgPSAoKSA9PiB7XG4gICAgcmVtYWluaW5nRHVyYXRpb25SZWYuY3VycmVudCA9IHVuZGVmaW5lZDtcbiAgICB0aW1lclN0YXJ0ZWRBdFJlZi5jdXJyZW50ID0gMDtcbiAgICBzZXRPcGVuKGZhbHNlKTtcbiAgfTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmKGlzT3BlbiAmJiBub3RpZmljYXRpb24uYXV0b0hpZGVEdXJhdGlvbiAmJiAhaXNIb3ZlcmVkKSB7XG4gICAgICBjb25zdCBkdXJhdGlvbiA9IHJlbWFpbmluZ0R1cmF0aW9uUmVmLmN1cnJlbnQgPz8gbm90aWZpY2F0aW9uLmF1dG9IaWRlRHVyYXRpb247XG4gICAgICB0aW1lclN0YXJ0ZWRBdFJlZi5jdXJyZW50ID0gRGF0ZS5ub3coKTtcbiAgICAgIGNvbnN0IGlkID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIG5vdGlmeUNsb3NlKCk7XG4gICAgICB9LCBkdXJhdGlvbik7XG5cbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIGNsZWFyVGltZW91dChpZCk7XG4gICAgICAgIHJlbWFpbmluZ0R1cmF0aW9uUmVmLmN1cnJlbnQgPSBNYXRoLm1heCgwLCBkdXJhdGlvbiAtIChEYXRlLm5vdygpIC0gdGltZXJTdGFydGVkQXRSZWYuY3VycmVudCkpO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9LCBbaXNIb3ZlcmVkLCBpc09wZW4sIG5vdGlmaWNhdGlvbi5hdXRvSGlkZUR1cmF0aW9uXSk7XG5cbiAgY29uc3Qgbm90aWZ5T3BlbiA9ICh7XG4gICAgYWN0aW9ucyA9IFtdLFxuICAgIGF1dG9IaWRlRHVyYXRpb24gPSAxNTAwMCxcbiAgICBtZXNzYWdlLFxuICAgIHNldmVyaXR5LFxuICAgIGFuY2hvck9yaWdpbiA9IHtob3Jpem9udGFsOiAnbGVmdCcsIHZlcnRpY2FsOiAnYm90dG9tJ30sXG4gICAgLi4ucmVzdFByb3BzXG4gIH06IEdvdGhhbU5vdGlmeVBhcmFtcykgPT4ge1xuICAgIHJlbWFpbmluZ0R1cmF0aW9uUmVmLmN1cnJlbnQgPSBhdXRvSGlkZUR1cmF0aW9uO1xuICAgIHNldEhvdmVyZWQoZmFsc2UpO1xuICAgIHNldE5vdGlmaWNhdGlvbih7XG4gICAgICAuLi5yZXN0UHJvcHMsXG4gICAgICBhY3Rpb25zLFxuICAgICAgYW5jaG9yT3JpZ2luLFxuICAgICAgYXV0b0hpZGVEdXJhdGlvbixcbiAgICAgIG1lc3NhZ2U6IHNldmVyaXR5ID8gKFxuICAgICAgICA8QWxlcnRcbiAgICAgICAgICBvbkNsb3NlPXtub3RpZnlDbG9zZX1cbiAgICAgICAgICBzZXZlcml0eT17c2V2ZXJpdHl9XG4gICAgICAgID5cbiAgICAgICAgICB7bWVzc2FnZX1cbiAgICAgICAgPC9BbGVydD5cbiAgICAgICkgOiBtZXNzYWdlLFxuICAgICAgc2V2ZXJpdHlcbiAgICB9KTtcbiAgICBzZXRPcGVuKHRydWUpO1xuICB9O1xuXG4gIHVzZUZsdXhMaXN0ZW5lcihHb3RoYW1Db25zdGFudHMuTk9USUZZX09QRU4sIG5vdGlmeU9wZW4pO1xuICB1c2VGbHV4TGlzdGVuZXIoR290aGFtQ29uc3RhbnRzLk5PVElGWV9DTE9TRSwgbm90aWZ5Q2xvc2UpO1xuXG4gIGNvbnN0IHBvc2l0aW9uQ2xhc3NlcyA9ICgoKSA9PiB7XG4gICAgY29uc3Qge2hvcml6b250YWwgPSAnbGVmdCcsIHZlcnRpY2FsID0gJ2JvdHRvbSd9ID0gbm90aWZpY2F0aW9uLmFuY2hvck9yaWdpbiB8fCB7fTtcblxuICAgIGNvbnN0IHBvc2l0aW9ucyA9IHtcbiAgICAgIGJvdHRvbToge1xuICAgICAgICBjZW50ZXI6ICdib3R0b20tNCBsZWZ0LTEvMiB0cmFuc2Zvcm0gLXRyYW5zbGF0ZS14LTEvMicsXG4gICAgICAgIGxlZnQ6ICdib3R0b20tNCBsZWZ0LTQnLFxuICAgICAgICByaWdodDogJ2JvdHRvbS00IHJpZ2h0LTQnXG4gICAgICB9LFxuICAgICAgdG9wOiB7XG4gICAgICAgIGNlbnRlcjogJ3RvcC00IGxlZnQtMS8yIHRyYW5zZm9ybSAtdHJhbnNsYXRlLXgtMS8yJyxcbiAgICAgICAgbGVmdDogJ3RvcC00IGxlZnQtNCcsXG4gICAgICAgIHJpZ2h0OiAndG9wLTQgcmlnaHQtNCdcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgcmV0dXJuIHBvc2l0aW9uc1t2ZXJ0aWNhbF1baG9yaXpvbnRhbF07XG4gIH0pKCk7XG5cbiAgcmV0dXJuIChcbiAgICA8VHJhbnNpdGlvblxuICAgICAgYXM9e0ZyYWdtZW50fVxuICAgICAgZW50ZXI9XCJ0cmFuc2Zvcm0gZWFzZS1vdXQgZHVyYXRpb24tMzAwIHRyYW5zaXRpb25cIlxuICAgICAgZW50ZXJGcm9tPVwidHJhbnNsYXRlLXktMiBvcGFjaXR5LTAgc206dHJhbnNsYXRlLXktMCBzbTp0cmFuc2xhdGUteC0yXCJcbiAgICAgIGVudGVyVG89XCJ0cmFuc2xhdGUteS0wIG9wYWNpdHktMTAwIHNtOnRyYW5zbGF0ZS14LTBcIlxuICAgICAgbGVhdmU9XCJ0cmFuc2l0aW9uIGVhc2UtaW4gZHVyYXRpb24tMTAwXCJcbiAgICAgIGxlYXZlRnJvbT1cIm9wYWNpdHktMTAwXCJcbiAgICAgIGxlYXZlVG89XCJvcGFjaXR5LTBcIlxuICAgICAgc2hvdz17aXNPcGVufVxuICAgID5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgJ2ZpeGVkIHotNTAgdy1bbWluKDk2MHB4LGNhbGMoMTAwdnctMnJlbSkpXSBtYXgtdy1bbWluKDk2MHB4LGNhbGMoMTAwdnctMnJlbSkpXSBzaGFkb3ctbGcgcm91bmRlZC1sZyBwb2ludGVyLWV2ZW50cy1hdXRvIG92ZXJmbG93LWhpZGRlbicsXG4gICAgICAgIHBvc2l0aW9uQ2xhc3Nlc1xuICAgICAgKX1cbiAgICAgIG9uTW91c2VFbnRlcj17KCkgPT4gc2V0SG92ZXJlZCh0cnVlKX1cbiAgICAgIG9uTW91c2VMZWF2ZT17KCkgPT4gc2V0SG92ZXJlZChmYWxzZSl9XG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicmluZy0xIHJpbmctYmxhY2sgcmluZy1vcGFjaXR5LTUgYmctd2hpdGVcIj5cbiAgICAgICAgICB7IW5vdGlmaWNhdGlvbi5zZXZlcml0eSA/IChcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicC00XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1zdGFydFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xXCI+XG4gICAgICAgICAgICAgICAgICB7bm90aWZpY2F0aW9uLm1lc3NhZ2V9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAge25vdGlmaWNhdGlvbi5hY3Rpb25zPy5sZW5ndGggJiYgKFxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtbC00IHNocmluay0wIGZsZXhcIj5cbiAgICAgICAgICAgICAgICAgICAge25vdGlmaWNhdGlvbi5hY3Rpb25zLm1hcCgoe2ljb24sIGxhYmVsLCBvbkNsaWNrfSwgaW5kZXgpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICA8RnJhZ21lbnQga2V5PXtpbmRleH0+XG4gICAgICAgICAgICAgICAgICAgICAgICB7aWNvbiA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b24gb25DbGljaz17KCkgPT4gb25DbGljaygnbm90aWZpY2F0aW9uJyl9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTdmcgY29sb3I9XCJpbmhlcml0XCIgaGVpZ2h0PXsyNH0gbmFtZT17aWNvbn0gd2lkdGg9ezI0fSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICA8QnV0dG9uIG9uQ2xpY2s9eygpID0+IG9uQ2xpY2soJ25vdGlmaWNhdGlvbicpfT57bGFiZWx9PC9CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgIDwvRnJhZ21lbnQ+XG4gICAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICApIDogKFxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAge25vdGlmaWNhdGlvbi5tZXNzYWdlIGFzIFJlYWN0RWxlbWVudH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICl9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9UcmFuc2l0aW9uPlxuICApO1xufTtcbiJdLCJuYW1lcyI6WyJUcmFuc2l0aW9uIiwidXNlRmx1eExpc3RlbmVyIiwiY24iLCJGcmFnbWVudCIsInVzZUVmZmVjdCIsInVzZVJlZiIsInVzZVN0YXRlIiwiR290aGFtQ29uc3RhbnRzIiwiU3ZnIiwiQnV0dG9uIiwiY2hpbGRyZW4iLCJvbkNsaWNrIiwiY2xhc3NOYW1lIiwiYnV0dG9uIiwidHlwZSIsIkljb25CdXR0b24iLCJBbGVydCIsInNldmVyaXR5Iiwib25DbG9zZSIsImJnQ29sb3JzIiwiZXJyb3IiLCJpbmZvIiwic3VjY2VzcyIsIndhcm5pbmciLCJkaXYiLCJhcmlhLWxhYmVsIiwic3ZnIiwiZmlsbCIsInZpZXdCb3giLCJ4bWxucyIsInBhdGgiLCJjbGlwUnVsZSIsImQiLCJmaWxsUnVsZSIsIk5vdGlmeSIsImlzT3BlbiIsInNldE9wZW4iLCJpc0hvdmVyZWQiLCJzZXRIb3ZlcmVkIiwibm90aWZpY2F0aW9uIiwic2V0Tm90aWZpY2F0aW9uIiwicmVtYWluaW5nRHVyYXRpb25SZWYiLCJ1bmRlZmluZWQiLCJ0aW1lclN0YXJ0ZWRBdFJlZiIsIm5vdGlmeUNsb3NlIiwiY3VycmVudCIsImF1dG9IaWRlRHVyYXRpb24iLCJkdXJhdGlvbiIsIkRhdGUiLCJub3ciLCJpZCIsInNldFRpbWVvdXQiLCJjbGVhclRpbWVvdXQiLCJNYXRoIiwibWF4Iiwibm90aWZ5T3BlbiIsImFjdGlvbnMiLCJtZXNzYWdlIiwiYW5jaG9yT3JpZ2luIiwiaG9yaXpvbnRhbCIsInZlcnRpY2FsIiwicmVzdFByb3BzIiwiTk9USUZZX09QRU4iLCJOT1RJRllfQ0xPU0UiLCJwb3NpdGlvbkNsYXNzZXMiLCJwb3NpdGlvbnMiLCJib3R0b20iLCJjZW50ZXIiLCJsZWZ0IiwicmlnaHQiLCJ0b3AiLCJhcyIsImVudGVyIiwiZW50ZXJGcm9tIiwiZW50ZXJUbyIsImxlYXZlIiwibGVhdmVGcm9tIiwibGVhdmVUbyIsInNob3ciLCJvbk1vdXNlRW50ZXIiLCJvbk1vdXNlTGVhdmUiLCJsZW5ndGgiLCJtYXAiLCJpY29uIiwibGFiZWwiLCJpbmRleCIsImNvbG9yIiwiaGVpZ2h0IiwibmFtZSIsIndpZHRoIl0sIm1hcHBpbmdzIjoiO0FBQUE7OztDQUdDLEdBQ0QsU0FBUUEsVUFBVSxRQUFPLG9CQUFvQjtBQUM3QyxTQUFRQyxlQUFlLFFBQU8sOEJBQThCO0FBQzVELFNBQVFDLEVBQUUsUUFBTyxlQUFlO0FBQ2hDLFNBQVFDLFFBQVEsRUFBRUMsU0FBUyxFQUFFQyxNQUFNLEVBQUVDLFFBQVEsUUFBTyxRQUFRO0FBRTVELFNBQVFDLGVBQWUsUUFBTyxxQ0FBcUM7QUFDbkUsU0FBUUMsR0FBRyxRQUFPLGdCQUFnQjtBQXVCbEMsMEJBQTBCO0FBQzFCLE1BQU1DLFNBQVMsQ0FBQyxFQUFDQyxRQUFRLEVBQUVDLE9BQU8sRUFBRUMsWUFBWSxFQUFFLEVBQUMsaUJBQ2pELEtBQUNDO1FBQ0NELFdBQVdWLEdBQ1QseUdBQ0EsMEhBQ0FVO1FBRUZELFNBQVNBO1FBQ1RHLE1BQUs7a0JBRUpKOztBQUlMLDhCQUE4QjtBQUM5QixNQUFNSyxhQUFhLENBQUMsRUFBQ0wsUUFBUSxFQUFFQyxPQUFPLEVBQUVDLFlBQVksRUFBRSxFQUFDLGlCQUNyRCxLQUFDQztRQUNDRCxXQUFXVixHQUNULGdIQUNBVTtR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
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect } from 'react';
|
|
3
|
+
import { Flux } from '@nlabs/arkhamjs';
|
|
4
|
+
import { FluxProvider } from '@nlabs/arkhamjs-utils-react';
|
|
5
|
+
import { GothamActions } from '../../actions/GothamActions.js';
|
|
6
|
+
import { interactWithCanvas } from '../../utils/storyInteractions.js';
|
|
7
|
+
import { Notify } from './Notify.js';
|
|
8
|
+
import { NotifyExample } from './NotifyExample.js';
|
|
9
|
+
if (!Flux.isInit) {
|
|
10
|
+
void Flux.init({
|
|
11
|
+
name: 'gothamui-storybook'
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
const NotifyTrigger = ({ notification })=>{
|
|
15
|
+
useEffect(()=>()=>{
|
|
16
|
+
GothamActions.notifyClose();
|
|
17
|
+
}, []);
|
|
18
|
+
return /*#__PURE__*/ _jsx("div", {
|
|
19
|
+
className: "flex min-h-64 items-center justify-center p-8",
|
|
20
|
+
children: /*#__PURE__*/ _jsx("button", {
|
|
21
|
+
className: "cursor-pointer rounded-md bg-primary px-4 py-2 text-sm font-semibold text-white shadow-sm hover:bg-primary-700 focus:outline-none focus:ring-2 focus:ring-primary focus:ring-offset-2",
|
|
22
|
+
onClick: ()=>GothamActions.notify(notification),
|
|
23
|
+
type: "button",
|
|
24
|
+
children: "Open"
|
|
25
|
+
})
|
|
26
|
+
});
|
|
27
|
+
};
|
|
28
|
+
const meta = {
|
|
29
|
+
argTypes: {
|
|
30
|
+
anchorOrigin: {
|
|
31
|
+
control: 'object'
|
|
32
|
+
},
|
|
33
|
+
message: {
|
|
34
|
+
control: 'text'
|
|
35
|
+
},
|
|
36
|
+
severity: {
|
|
37
|
+
control: 'select',
|
|
38
|
+
options: [
|
|
39
|
+
'error',
|
|
40
|
+
'info',
|
|
41
|
+
'success',
|
|
42
|
+
'warning'
|
|
43
|
+
]
|
|
44
|
+
}
|
|
45
|
+
},
|
|
46
|
+
component: Notify,
|
|
47
|
+
decorators: [
|
|
48
|
+
(Story)=>/*#__PURE__*/ _jsxs(FluxProvider, {
|
|
49
|
+
flux: Flux,
|
|
50
|
+
children: [
|
|
51
|
+
/*#__PURE__*/ _jsx(Story, {}),
|
|
52
|
+
/*#__PURE__*/ _jsx(Notify, {})
|
|
53
|
+
]
|
|
54
|
+
})
|
|
55
|
+
],
|
|
56
|
+
parameters: {
|
|
57
|
+
layout: 'fullscreen'
|
|
58
|
+
},
|
|
59
|
+
title: 'Components/Notify'
|
|
60
|
+
};
|
|
61
|
+
export default meta;
|
|
62
|
+
export const Basic = {
|
|
63
|
+
play: interactWithCanvas,
|
|
64
|
+
render: ()=>/*#__PURE__*/ _jsx(NotifyTrigger, {
|
|
65
|
+
notification: {
|
|
66
|
+
autoHideDuration: 5000,
|
|
67
|
+
message: 'This is a basic notification'
|
|
68
|
+
}
|
|
69
|
+
})
|
|
70
|
+
};
|
|
71
|
+
export const Success = {
|
|
72
|
+
play: interactWithCanvas,
|
|
73
|
+
render: ()=>/*#__PURE__*/ _jsx(NotifyTrigger, {
|
|
74
|
+
notification: {
|
|
75
|
+
message: 'Operation completed successfully',
|
|
76
|
+
severity: 'success'
|
|
77
|
+
}
|
|
78
|
+
})
|
|
79
|
+
};
|
|
80
|
+
export const Error = {
|
|
81
|
+
play: interactWithCanvas,
|
|
82
|
+
render: ()=>/*#__PURE__*/ _jsx(NotifyTrigger, {
|
|
83
|
+
notification: {
|
|
84
|
+
message: 'An error occurred',
|
|
85
|
+
severity: 'error'
|
|
86
|
+
}
|
|
87
|
+
})
|
|
88
|
+
};
|
|
89
|
+
export const Warning = {
|
|
90
|
+
play: interactWithCanvas,
|
|
91
|
+
render: ()=>/*#__PURE__*/ _jsx(NotifyTrigger, {
|
|
92
|
+
notification: {
|
|
93
|
+
message: 'This is a warning message',
|
|
94
|
+
severity: 'warning'
|
|
95
|
+
}
|
|
96
|
+
})
|
|
97
|
+
};
|
|
98
|
+
export const Info = {
|
|
99
|
+
play: interactWithCanvas,
|
|
100
|
+
render: ()=>/*#__PURE__*/ _jsx(NotifyTrigger, {
|
|
101
|
+
notification: {
|
|
102
|
+
message: 'This is an informational message',
|
|
103
|
+
severity: 'info'
|
|
104
|
+
}
|
|
105
|
+
})
|
|
106
|
+
};
|
|
107
|
+
export const TopRight = {
|
|
108
|
+
play: interactWithCanvas,
|
|
109
|
+
render: ()=>/*#__PURE__*/ _jsx(NotifyTrigger, {
|
|
110
|
+
notification: {
|
|
111
|
+
anchorOrigin: {
|
|
112
|
+
horizontal: 'right',
|
|
113
|
+
vertical: 'top'
|
|
114
|
+
},
|
|
115
|
+
message: 'This appears in the top right'
|
|
116
|
+
}
|
|
117
|
+
})
|
|
118
|
+
};
|
|
119
|
+
export const WithActions = {
|
|
120
|
+
play: interactWithCanvas,
|
|
121
|
+
render: ()=>/*#__PURE__*/ _jsx(NotifyTrigger, {
|
|
122
|
+
notification: {
|
|
123
|
+
actions: [
|
|
124
|
+
{
|
|
125
|
+
label: 'Undo',
|
|
126
|
+
onClick: (key)=>{
|
|
127
|
+
console.log('Undo clicked', key);
|
|
128
|
+
// Perform undo action
|
|
129
|
+
}
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
icon: 'close',
|
|
133
|
+
onClick: (key)=>{
|
|
134
|
+
console.log('Close clicked', key);
|
|
135
|
+
GothamActions.notifyClose();
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
],
|
|
139
|
+
message: 'Would you like to undo?'
|
|
140
|
+
}
|
|
141
|
+
})
|
|
142
|
+
};
|
|
143
|
+
export const Examples = {
|
|
144
|
+
play: interactWithCanvas,
|
|
145
|
+
render: ()=>/*#__PURE__*/ _jsx(NotifyExample, {})
|
|
146
|
+
};
|
|
147
|
+
|
|
148
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L2dvdGhhbWpzL3NyYy9jb21wb25lbnRzL05vdGlmeS9Ob3RpZnkuc3Rvcmllcy50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHt1c2VFZmZlY3R9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7Rmx1eH0gZnJvbSAnQG5sYWJzL2Fya2hhbWpzJztcbmltcG9ydCB7Rmx1eFByb3ZpZGVyfSBmcm9tICdAbmxhYnMvYXJraGFtanMtdXRpbHMtcmVhY3QnO1xuXG5pbXBvcnQge0dvdGhhbUFjdGlvbnN9IGZyb20gJy4uLy4uL2FjdGlvbnMvR290aGFtQWN0aW9ucy5qcyc7XG5pbXBvcnQge2ludGVyYWN0V2l0aENhbnZhc30gZnJvbSAnLi4vLi4vdXRpbHMvc3RvcnlJbnRlcmFjdGlvbnMuanMnO1xuaW1wb3J0IHtOb3RpZnl9IGZyb20gJy4vTm90aWZ5LmpzJztcbmltcG9ydCB7Tm90aWZ5RXhhbXBsZX0gZnJvbSAnLi9Ob3RpZnlFeGFtcGxlLmpzJztcblxuaW1wb3J0IHR5cGUge01ldGEsIFN0b3J5T2JqfSBmcm9tICdAbmxhYnMvbGV4L3N0b3J5Ym9vayc7XG5pbXBvcnQgdHlwZSB7R290aGFtTm90aWZ5UGFyYW1zfSBmcm9tICcuL05vdGlmeS5qcyc7XG5cbmlmICghKEZsdXggYXMgYW55KS5pc0luaXQpIHtcbiAgdm9pZCBGbHV4LmluaXQoe25hbWU6ICdnb3RoYW11aS1zdG9yeWJvb2snfSk7XG59XG5cbmNvbnN0IE5vdGlmeVRyaWdnZXIgPSAoe25vdGlmaWNhdGlvbn06IHtyZWFkb25seSBub3RpZmljYXRpb246IEdvdGhhbU5vdGlmeVBhcmFtc30pID0+IHtcbiAgdXNlRWZmZWN0KCgpID0+ICgpID0+IHtcbiAgICBHb3RoYW1BY3Rpb25zLm5vdGlmeUNsb3NlKCk7XG4gIH0sIFtdKTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBtaW4taC02NCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcC04XCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIGNsYXNzTmFtZT1cImN1cnNvci1wb2ludGVyIHJvdW5kZWQtbWQgYmctcHJpbWFyeSBweC00IHB5LTIgdGV4dC1zbSBmb250LXNlbWlib2xkIHRleHQtd2hpdGUgc2hhZG93LXNtIGhvdmVyOmJnLXByaW1hcnktNzAwIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTIgZm9jdXM6cmluZy1wcmltYXJ5IGZvY3VzOnJpbmctb2Zmc2V0LTJcIlxuICAgICAgICBvbkNsaWNrPXsoKSA9PiBHb3RoYW1BY3Rpb25zLm5vdGlmeShub3RpZmljYXRpb24pfVxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgID5cbiAgICAgICAgT3BlblxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5jb25zdCBtZXRhOiBNZXRhPHR5cGVvZiBOb3RpZnk+ID0ge1xuICBhcmdUeXBlczoge1xuICAgIGFuY2hvck9yaWdpbjoge1xuICAgICAgY29udHJvbDogJ29iamVjdCdcbiAgICB9LFxuICAgIG1lc3NhZ2U6IHtcbiAgICAgIGNvbnRyb2w6ICd0ZXh0J1xuICAgIH0sXG4gICAgc2V2ZXJpdHk6IHtcbiAgICAgIGNvbnRyb2w6ICdzZWxlY3QnLFxuICAgICAgb3B0aW9uczogWydlcnJvcicsICdpbmZvJywgJ3N1Y2Nlc3MnLCAnd2FybmluZyddXG4gICAgfVxuICB9LFxuICBjb21wb25lbnQ6IE5vdGlmeSxcbiAgZGVjb3JhdG9yczogW1xuICAgIChTdG9yeSkgPT4gKFxuICAgICAgPEZsdXhQcm92aWRlciBmbHV4PXtGbHV4fT5cbiAgICAgICAgPFN0b3J5IC8+XG4gICAgICAgIDxOb3RpZnkgLz5cbiAgICAgIDwvRmx1eFByb3ZpZGVyPlxuICAgIClcbiAgXSxcbiAgcGFyYW1ldGVyczoge1xuICAgIGxheW91dDogJ2Z1bGxzY3JlZW4nXG4gIH0sXG4gIHRpdGxlOiAnQ29tcG9uZW50cy9Ob3RpZnknXG59O1xuXG5leHBvcnQgZGVmYXVsdCBtZXRhO1xudHlwZSBTdG9yeSA9IFN0b3J5T2JqPHR5cGVvZiBOb3RpZnk+O1xuXG5leHBvcnQgY29uc3QgQmFzaWM6IFN0b3J5ID0ge1xuICBwbGF5OiBpbnRlcmFjdFdpdGhDYW52YXMsXG4gIHJlbmRlcjogKCkgPT4gKFxuICAgIDxOb3RpZnlUcmlnZ2VyXG4gICAgICBub3RpZmljYXRpb249e3tcbiAgICAgICAgYXV0b0hpZGVEdXJhdGlvbjogNTAwMCxcbiAgICAgICAgbWVzc2FnZTogJ1RoaXMgaXMgYSBiYXNpYyBub3RpZmljYXRpb24nXG4gICAgICB9fVxuICAgIC8+XG4gIClcbn07XG5cbmV4cG9ydCBjb25zdCBTdWNjZXNzOiBTdG9yeSA9IHtcbiAgcGxheTogaW50ZXJhY3RXaXRoQ2FudmFzLFxuICByZW5kZXI6ICgpID0+IChcbiAgICA8Tm90aWZ5VHJpZ2dlclxuICAgICAgbm90aWZpY2F0aW9uPXt7XG4gICAgICAgIG1lc3NhZ2U6ICdPcGVyYXRpb24gY29tcGxldGVkIHN1Y2Nlc3NmdWxseScsXG4gICAgICAgIHNldmVyaXR5OiAnc3VjY2VzcydcbiAgICAgIH19XG4gICAgLz5cbiAgKVxufTtcblxuZXhwb3J0IGNvbnN0IEVycm9yOiBTdG9yeSA9IHtcbiAgcGxheTogaW50ZXJhY3RXaXRoQ2FudmFzLFxuICByZW5kZXI6ICgpID0+IChcbiAgICA8Tm90aWZ5VHJpZ2dlclxuICAgICAgbm90aWZpY2F0aW9uPXt7XG4gICAgICAgIG1lc3NhZ2U6ICdBbiBlcnJvciBvY2N1cnJlZCcsXG4gICAgICAgIHNldmVyaXR5OiAnZXJyb3InXG4gICAgICB9fVxuICAgIC8+XG4gIClcbn07XG5cbmV4cG9ydCBjb25zdCBXYXJuaW5nOiBTdG9yeSA9IHtcbiAgcGxheTogaW50ZXJhY3RXaXRoQ2FudmFzLFxuICByZW5kZXI6ICgpID0+IChcbiAgICA8Tm90aWZ5VHJpZ2dlclxuICAgICAgbm90aWZpY2F0aW9uPXt7XG4gICAgICAgIG1lc3NhZ2U6ICdUaGlzIGlzIGEgd2FybmluZyBtZXNzYWdlJyxcbiAgICAgICAgc2V2ZXJpdHk6ICd3YXJuaW5nJ1xuICAgICAgfX1cbiAgICAvPlxuICApXG59O1xuXG5leHBvcnQgY29uc3QgSW5mbzogU3RvcnkgPSB7XG4gIHBsYXk6IGludGVyYWN0V2l0aENhbnZhcyxcbiAgcmVuZGVyOiAoKSA9PiAoXG4gICAgPE5vdGlmeVRyaWdnZXJcbiAgICAgIG5vdGlmaWNhdGlvbj17e1xuICAgICAgICBtZXNzYWdlOiAnVGhpcyBpcyBhbiBpbmZvcm1hdGlvbmFsIG1lc3NhZ2UnLFxuICAgICAgICBzZXZlcml0eTogJ2luZm8nXG4gICAgICB9fVxuICAgIC8+XG4gIClcbn07XG5cbmV4cG9ydCBjb25zdCBUb3BSaWdodDogU3RvcnkgPSB7XG4gIHBsYXk6IGludGVyYWN0V2l0aENhbnZhcyxcbiAgcmVuZGVyOiAoKSA9PiAoXG4gICAgPE5vdGlmeVRyaWdnZXJcbiAgICAgIG5vdGlmaWNhdGlvbj17e1xuICAgICAgICBhbmNob3JPcmlnaW46IHtcbiAgICAgICAgICBob3Jpem9udGFsOiAncmlnaHQnLFxuICAgICAgICAgIHZlcnRpY2FsOiAndG9wJ1xuICAgICAgICB9LFxuICAgICAgICBtZXNzYWdlOiAnVGhpcyBhcHBlYXJzIGluIHRoZSB0b3AgcmlnaHQnXG4gICAgICB9fVxuICAgIC8+XG4gIClcbn07XG5cbmV4cG9ydCBjb25zdCBXaXRoQWN0aW9uczogU3RvcnkgPSB7XG4gIHBsYXk6IGludGVyYWN0V2l0aENhbnZhcyxcbiAgcmVuZGVyOiAoKSA9PiAoXG4gICAgPE5vdGlmeVRyaWdnZXJcbiAgICAgIG5vdGlmaWNhdGlvbj17e1xuICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6ICdVbmRvJyxcbiAgICAgICAgICAgIG9uQ2xpY2s6IChrZXkpID0+IHtcbiAgICAgICAgICAgICAgY29uc29sZS5sb2coJ1VuZG8gY2xpY2tlZCcsIGtleSk7XG4gICAgICAgICAgICAgIC8vIFBlcmZvcm0gdW5kbyBhY3Rpb25cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGljb246ICdjbG9zZScsXG4gICAgICAgICAgICBvbkNsaWNrOiAoa2V5KSA9PiB7XG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdDbG9zZSBjbGlja2VkJywga2V5KTtcbiAgICAgICAgICAgICAgR290aGFtQWN0aW9ucy5ub3RpZnlDbG9zZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgbWVzc2FnZTogJ1dvdWxkIHlvdSBsaWtlIHRvIHVuZG8/J1xuICAgICAgfX1cbiAgICAvPlxuICApXG59O1xuXG5leHBvcnQgY29uc3QgRXhhbXBsZXM6IFN0b3J5ID0ge1xuICBwbGF5OiBpbnRlcmFjdFdpdGhDYW52YXMsXG4gIHJlbmRlcjogKCkgPT4gPE5vdGlmeUV4YW1wbGUgLz5cbn07XG4iXSwibmFtZXMiOlsidXNlRWZmZWN0IiwiRmx1eCIsIkZsdXhQcm92aWRlciIsIkdvdGhhbUFjdGlvbnMiLCJpbnRlcmFjdFdpdGhDYW52YXMiLCJOb3RpZnkiLCJOb3RpZnlFeGFtcGxlIiwiaXNJbml0IiwiaW5pdCIsIm5hbWUiLCJOb3RpZnlUcmlnZ2VyIiwibm90aWZpY2F0aW9uIiwibm90aWZ5Q2xvc2UiLCJkaXYiLCJjbGFzc05hbWUiLCJidXR0b24iLCJvbkNsaWNrIiwibm90aWZ5IiwidHlwZSIsIm1ldGEiLCJhcmdUeXBlcyIsImFuY2hvck9yaWdpbiIsImNvbnRyb2wiLCJtZXNzYWdlIiwic2V2ZXJpdHkiLCJvcHRpb25zIiwiY29tcG9uZW50IiwiZGVjb3JhdG9ycyIsIlN0b3J5IiwiZmx1eCIsInBhcmFtZXRlcnMiLCJsYXlvdXQiLCJ0aXRsZSIsIkJhc2ljIiwicGxheSIsInJlbmRlciIsImF1dG9IaWRlRHVyYXRpb24iLCJTdWNjZXNzIiwiRXJyb3IiLCJXYXJuaW5nIiwiSW5mbyIsIlRvcFJpZ2h0IiwiaG9yaXpvbnRhbCIsInZlcnRpY2FsIiwiV2l0aEFjdGlvbnMiLCJhY3Rpb25zIiwibGFiZWwiLCJrZXkiLCJjb25zb2xlIiwibG9nIiwiaWNvbiIsIkV4YW1wbGVzIl0sIm1hcHBpbmdzIjoiO0FBQUEsU0FBUUEsU0FBUyxRQUFPLFFBQVE7QUFDaEMsU0FBUUMsSUFBSSxRQUFPLGtCQUFrQjtBQUNyQyxTQUFRQyxZQUFZLFFBQU8sOEJBQThCO0FBRXpELFNBQVFDLGFBQWEsUUFBTyxpQ0FBaUM7QUFDN0QsU0FBUUMsa0JBQWtCLFFBQU8sbUNBQW1DO0FBQ3BFLFNBQVFDLE1BQU0sUUFBTyxjQUFjO0FBQ25DLFNBQVFDLGFBQWEsUUFBTyxxQkFBcUI7QUFLakQsSUFBSSxDQUFDLEFBQUNMLEtBQWFNLE1BQU0sRUFBRTtJQUN6QixLQUFLTixLQUFLTyxJQUFJLENBQUM7UUFBQ0MsTUFBTTtJQUFvQjtBQUM1QztBQUVBLE1BQU1DLGdCQUFnQixDQUFDLEVBQUNDLFlBQVksRUFBOEM7SUFDaEZYLFVBQVUsSUFBTTtZQUNkRyxjQUFjUyxXQUFXO1FBQzNCLEdBQUcsRUFBRTtJQUVMLHFCQUNFLEtBQUNDO1FBQUlDLFdBQVU7a0JBQ2IsY0FBQSxLQUFDQztZQUNDRCxXQUFVO1lBQ1ZFLFNBQVMsSUFBTWIsY0FBY2MsTUFBTSxDQUFDTjtZQUNwQ08sTUFBSztzQkFDTjs7O0FBS1A7QUFFQSxNQUFNQyxPQUE0QjtJQUNoQ0MsVUFBVTtRQUNSQyxjQUFjO1lBQ1pDLFNBQVM7UUFDWDtRQUNBQyxTQUFTO1lBQ1BELFNBQVM7UUFDWDtRQUNBRSxVQUFVO1lBQ1JGLFNBQVM7WUFDVEcsU0FBUztnQkFBQztnQkFBUztnQkFBUTtnQkFBVzthQUFVO1FBQ2xEO0lBQ0Y7SUFDQUMsV0FBV3JCO0lBQ1hzQixZQUFZO1FBQ1YsQ0FBQ0Msc0JBQ0MsTUFBQzFCO2dCQUFhMkIsTUFBTTVCOztrQ0FDbEIsS0FBQzJCO2tDQUNELEtBQUN2Qjs7O0tBR047SUFDRHlCLFlBQVk7UUFDVkMsUUFBUTtJQUNWO0lBQ0FDLE9BQU87QUFDVDtBQUVBLGVBQWViLEtBQUs7QUFHcEIsT0FBTyxNQUFNYyxRQUFlO0lBQzFCQyxNQUFNOUI7SUFDTitCLFFBQVEsa0JBQ04sS0FBQ3pCO1lBQ0NDLGNBQWM7Z0JBQ1p5QixrQkFBa0I7Z0JBQ2xCYixTQUFTO1lBQ1g7O0FBR04sRUFBRTtBQUVGLE9BQU8sTUFBTWMsVUFBaUI7SUFDNUJILE1BQU05QjtJQUNOK0IsUUFBUSxrQkFDTixLQUFDekI7WUFDQ0MsY0FBYztnQkFDWlksU0FBUztnQkFDVEMsVUFBVTtZQUNaOztBQUdOLEVBQUU7QUFFRixPQUFPLE1BQU1jLFFBQWU7SUFDMUJKLE1BQU05QjtJQUNOK0IsUUFBUSxrQkFDTixLQUFDekI7WUFDQ0MsY0FBYztnQkFDWlksU0FBUztnQkFDVEMsVUFBVTtZQUNaOztBQUdOLEVBQUU7QUFFRixPQUFPLE1BQU1lLFVBQWlCO0lBQzVCTCxNQUFNOUI7SUFDTitCLFFBQVEsa0JBQ04sS0FBQ3pCO1lBQ0NDLGNBQWM7Z0JBQ1pZLFNBQVM7Z0JBQ1RDLFVBQVU7WUFDWjs7QUFHTixFQUFFO0FBRUYsT0FBTyxNQUFNZ0IsT0FBYztJQUN6Qk4sTUFBTTlCO0lBQ04rQixRQUFRLGtCQUNOLEtBQUN6QjtZQUNDQyxjQUFjO2dCQUNaWSxTQUFTO2dCQUNUQyxVQUFVO1lBQ1o7O0FBR04sRUFBRTtBQUVGLE9BQU8sTUFBTWlCLFdBQWtCO0lBQzdCUCxNQUFNOUI7SUFDTitCLFFBQVEsa0JBQ04sS0FBQ3pCO1lBQ0NDLGNBQWM7Z0JBQ1pVLGNBQWM7b0JBQ1pxQixZQUFZO29CQUNaQyxVQUFVO2dCQUNaO2dCQUNBcEIsU0FBUztZQUNYOztBQUdOLEVBQUU7QUFFRixPQUFPLE1BQU1xQixjQUFxQjtJQUNoQ1YsTUFBTTlCO0lBQ04rQixRQUFRLGtCQUNOLEtBQUN6QjtZQUNDQyxjQUFjO2dCQUNaa0MsU0FBUztvQkFDUDt3QkFDRUMsT0FBTzt3QkFDUDlCLFNBQVMsQ0FBQytCOzRCQUNSQyxRQUFRQyxHQUFHLENBQUMsZ0JBQWdCRjt3QkFDNUIsc0JBQXNCO3dCQUN4QjtvQkFDRjtvQkFDQTt3QkFDRUcsTUFBTTt3QkFDTmxDLFNBQVMsQ0FBQytCOzRCQUNSQyxRQUFRQyxHQUFHLENBQUMsaUJBQWlCRjs0QkFDN0I1QyxjQUFjUyxXQUFXO3dCQUMzQjtvQkFDRjtpQkFDRDtnQkFDRFcsU0FBUztZQUNYOztBQUdOLEVBQUU7QUFFRixPQUFPLE1BQU00QixXQUFrQjtJQUM3QmpCLE1BQU05QjtJQUNOK0IsUUFBUSxrQkFBTSxLQUFDN0I7QUFDakIsRUFBRSJ9
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const NotifyExample: () => import("react").JSX.Element;
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { GothamActions } from '../../actions/GothamActions.js';
|
|
3
|
+
export const NotifyExample = ()=>{
|
|
4
|
+
// Basic notification
|
|
5
|
+
const showBasicNotification = ()=>{
|
|
6
|
+
GothamActions.notify({
|
|
7
|
+
autoHideDuration: 5000,
|
|
8
|
+
message: 'This is a basic notification'
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
// Success notification
|
|
12
|
+
const showSuccessNotification = ()=>{
|
|
13
|
+
GothamActions.notify({
|
|
14
|
+
message: 'Operation completed successfully',
|
|
15
|
+
severity: 'success'
|
|
16
|
+
});
|
|
17
|
+
};
|
|
18
|
+
// Error notification
|
|
19
|
+
const showErrorNotification = ()=>{
|
|
20
|
+
GothamActions.notify({
|
|
21
|
+
message: 'An error occurred',
|
|
22
|
+
severity: 'error'
|
|
23
|
+
});
|
|
24
|
+
};
|
|
25
|
+
// Warning notification
|
|
26
|
+
const showWarningNotification = ()=>{
|
|
27
|
+
GothamActions.notify({
|
|
28
|
+
message: 'This is a warning message',
|
|
29
|
+
severity: 'warning'
|
|
30
|
+
});
|
|
31
|
+
};
|
|
32
|
+
// Info notification
|
|
33
|
+
const showInfoNotification = ()=>{
|
|
34
|
+
GothamActions.notify({
|
|
35
|
+
message: 'This is an informational message',
|
|
36
|
+
severity: 'info'
|
|
37
|
+
});
|
|
38
|
+
};
|
|
39
|
+
// Notification with custom position
|
|
40
|
+
const showTopRightNotification = ()=>{
|
|
41
|
+
GothamActions.notify({
|
|
42
|
+
anchorOrigin: {
|
|
43
|
+
horizontal: 'right',
|
|
44
|
+
vertical: 'top'
|
|
45
|
+
},
|
|
46
|
+
message: 'This appears in the top right'
|
|
47
|
+
});
|
|
48
|
+
};
|
|
49
|
+
// Notification with actions
|
|
50
|
+
const showActionNotification = ()=>{
|
|
51
|
+
GothamActions.notify({
|
|
52
|
+
actions: [
|
|
53
|
+
{
|
|
54
|
+
label: 'Undo',
|
|
55
|
+
onClick: (key)=>{
|
|
56
|
+
console.log('Undo clicked', key);
|
|
57
|
+
// Perform undo action
|
|
58
|
+
}
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
icon: 'close',
|
|
62
|
+
onClick: (key)=>{
|
|
63
|
+
console.log('Close clicked', key);
|
|
64
|
+
GothamActions.notifyClose();
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
],
|
|
68
|
+
message: 'Would you like to undo?'
|
|
69
|
+
});
|
|
70
|
+
};
|
|
71
|
+
return /*#__PURE__*/ _jsxs("div", {
|
|
72
|
+
className: "p-6 max-w-4xl mx-auto",
|
|
73
|
+
children: [
|
|
74
|
+
/*#__PURE__*/ _jsx("h1", {
|
|
75
|
+
className: "text-3xl font-bold mb-6",
|
|
76
|
+
children: "Notify Component Examples"
|
|
77
|
+
}),
|
|
78
|
+
/*#__PURE__*/ _jsxs("div", {
|
|
79
|
+
className: "grid grid-cols-1 md:grid-cols-2 gap-4",
|
|
80
|
+
children: [
|
|
81
|
+
/*#__PURE__*/ _jsxs("div", {
|
|
82
|
+
className: "p-4 border rounded-lg shadow-sm",
|
|
83
|
+
children: [
|
|
84
|
+
/*#__PURE__*/ _jsx("h2", {
|
|
85
|
+
className: "text-xl font-semibold mb-4",
|
|
86
|
+
children: "Basic Notifications"
|
|
87
|
+
}),
|
|
88
|
+
/*#__PURE__*/ _jsxs("div", {
|
|
89
|
+
className: "space-y-2",
|
|
90
|
+
children: [
|
|
91
|
+
/*#__PURE__*/ _jsx("button", {
|
|
92
|
+
onClick: showBasicNotification,
|
|
93
|
+
className: "w-full px-4 py-2 bg-gray-200 hover:bg-gray-300 rounded-md",
|
|
94
|
+
children: "Basic Notification"
|
|
95
|
+
}),
|
|
96
|
+
/*#__PURE__*/ _jsx("button", {
|
|
97
|
+
onClick: showSuccessNotification,
|
|
98
|
+
className: "w-full px-4 py-2 bg-green-100 hover:bg-green-200 text-green-800 rounded-md",
|
|
99
|
+
children: "Success Notification"
|
|
100
|
+
}),
|
|
101
|
+
/*#__PURE__*/ _jsx("button", {
|
|
102
|
+
onClick: showErrorNotification,
|
|
103
|
+
className: "w-full px-4 py-2 bg-red-100 hover:bg-red-200 text-red-800 rounded-md",
|
|
104
|
+
children: "Error Notification"
|
|
105
|
+
}),
|
|
106
|
+
/*#__PURE__*/ _jsx("button", {
|
|
107
|
+
onClick: showWarningNotification,
|
|
108
|
+
className: "w-full px-4 py-2 bg-yellow-100 hover:bg-yellow-200 text-yellow-800 rounded-md",
|
|
109
|
+
children: "Warning Notification"
|
|
110
|
+
}),
|
|
111
|
+
/*#__PURE__*/ _jsx("button", {
|
|
112
|
+
onClick: showInfoNotification,
|
|
113
|
+
className: "w-full px-4 py-2 bg-blue-100 hover:bg-blue-200 text-blue-800 rounded-md",
|
|
114
|
+
children: "Info Notification"
|
|
115
|
+
})
|
|
116
|
+
]
|
|
117
|
+
})
|
|
118
|
+
]
|
|
119
|
+
}),
|
|
120
|
+
/*#__PURE__*/ _jsxs("div", {
|
|
121
|
+
className: "p-4 border rounded-lg shadow-sm",
|
|
122
|
+
children: [
|
|
123
|
+
/*#__PURE__*/ _jsx("h2", {
|
|
124
|
+
className: "text-xl font-semibold mb-4",
|
|
125
|
+
children: "Advanced Options"
|
|
126
|
+
}),
|
|
127
|
+
/*#__PURE__*/ _jsxs("div", {
|
|
128
|
+
className: "space-y-2",
|
|
129
|
+
children: [
|
|
130
|
+
/*#__PURE__*/ _jsx("button", {
|
|
131
|
+
onClick: showTopRightNotification,
|
|
132
|
+
className: "w-full px-4 py-2 bg-purple-100 hover:bg-purple-200 text-purple-800 rounded-md",
|
|
133
|
+
children: "Top Right Position"
|
|
134
|
+
}),
|
|
135
|
+
/*#__PURE__*/ _jsx("button", {
|
|
136
|
+
onClick: showActionNotification,
|
|
137
|
+
className: "w-full px-4 py-2 bg-indigo-100 hover:bg-indigo-200 text-indigo-800 rounded-md",
|
|
138
|
+
children: "With Action Buttons"
|
|
139
|
+
})
|
|
140
|
+
]
|
|
141
|
+
})
|
|
142
|
+
]
|
|
143
|
+
})
|
|
144
|
+
]
|
|
145
|
+
}),
|
|
146
|
+
/*#__PURE__*/ _jsxs("div", {
|
|
147
|
+
className: "mt-8 p-4 bg-gray-50 rounded-lg",
|
|
148
|
+
children: [
|
|
149
|
+
/*#__PURE__*/ _jsx("h2", {
|
|
150
|
+
className: "text-xl font-semibold mb-2",
|
|
151
|
+
children: "Implementation Example"
|
|
152
|
+
}),
|
|
153
|
+
/*#__PURE__*/ _jsx("pre", {
|
|
154
|
+
className: "bg-gray-800 text-gray-100 p-4 rounded-md overflow-x-auto",
|
|
155
|
+
children: `// Import the GothamActions
|
|
156
|
+
import {GothamActions} from '@actions/GothamActions';
|
|
157
|
+
|
|
158
|
+
// Show a notification
|
|
159
|
+
GothamActions.notify({
|
|
160
|
+
message: 'Hello World',
|
|
161
|
+
severity: 'success',
|
|
162
|
+
autoHideDuration: 5000
|
|
163
|
+
});
|
|
164
|
+
|
|
165
|
+
// Close all notifications
|
|
166
|
+
GothamActions.notifyClose();`
|
|
167
|
+
})
|
|
168
|
+
]
|
|
169
|
+
})
|
|
170
|
+
]
|
|
171
|
+
});
|
|
172
|
+
};
|
|
173
|
+
|
|
174
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L2dvdGhhbWpzL3NyYy9jb21wb25lbnRzL05vdGlmeS9Ob3RpZnlFeGFtcGxlLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0dvdGhhbUFjdGlvbnN9IGZyb20gJy4uLy4uL2FjdGlvbnMvR290aGFtQWN0aW9ucy5qcyc7XG5cbmV4cG9ydCBjb25zdCBOb3RpZnlFeGFtcGxlID0gKCkgPT4ge1xuICAvLyBCYXNpYyBub3RpZmljYXRpb25cbiAgY29uc3Qgc2hvd0Jhc2ljTm90aWZpY2F0aW9uID0gKCkgPT4ge1xuICAgIEdvdGhhbUFjdGlvbnMubm90aWZ5KHtcbiAgICAgIGF1dG9IaWRlRHVyYXRpb246IDUwMDAsXG4gICAgICBtZXNzYWdlOiAnVGhpcyBpcyBhIGJhc2ljIG5vdGlmaWNhdGlvbidcbiAgICB9KTtcbiAgfTtcblxuICAvLyBTdWNjZXNzIG5vdGlmaWNhdGlvblxuICBjb25zdCBzaG93U3VjY2Vzc05vdGlmaWNhdGlvbiA9ICgpID0+IHtcbiAgICBHb3RoYW1BY3Rpb25zLm5vdGlmeSh7XG4gICAgICBtZXNzYWdlOiAnT3BlcmF0aW9uIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHknLFxuICAgICAgc2V2ZXJpdHk6ICdzdWNjZXNzJ1xuICAgIH0pO1xuICB9O1xuXG4gIC8vIEVycm9yIG5vdGlmaWNhdGlvblxuICBjb25zdCBzaG93RXJyb3JOb3RpZmljYXRpb24gPSAoKSA9PiB7XG4gICAgR290aGFtQWN0aW9ucy5ub3RpZnkoe1xuICAgICAgbWVzc2FnZTogJ0FuIGVycm9yIG9jY3VycmVkJyxcbiAgICAgIHNldmVyaXR5OiAnZXJyb3InXG4gICAgfSk7XG4gIH07XG5cbiAgLy8gV2FybmluZyBub3RpZmljYXRpb25cbiAgY29uc3Qgc2hvd1dhcm5pbmdOb3RpZmljYXRpb24gPSAoKSA9PiB7XG4gICAgR290aGFtQWN0aW9ucy5ub3RpZnkoe1xuICAgICAgbWVzc2FnZTogJ1RoaXMgaXMgYSB3YXJuaW5nIG1lc3NhZ2UnLFxuICAgICAgc2V2ZXJpdHk6ICd3YXJuaW5nJ1xuICAgIH0pO1xuICB9O1xuXG4gIC8vIEluZm8gbm90aWZpY2F0aW9uXG4gIGNvbnN0IHNob3dJbmZvTm90aWZpY2F0aW9uID0gKCkgPT4ge1xuICAgIEdvdGhhbUFjdGlvbnMubm90aWZ5KHtcbiAgICAgIG1lc3NhZ2U6ICdUaGlzIGlzIGFuIGluZm9ybWF0aW9uYWwgbWVzc2FnZScsXG4gICAgICBzZXZlcml0eTogJ2luZm8nXG4gICAgfSk7XG4gIH07XG5cbiAgLy8gTm90aWZpY2F0aW9uIHdpdGggY3VzdG9tIHBvc2l0aW9uXG4gIGNvbnN0IHNob3dUb3BSaWdodE5vdGlmaWNhdGlvbiA9ICgpID0+IHtcbiAgICBHb3RoYW1BY3Rpb25zLm5vdGlmeSh7XG4gICAgICBhbmNob3JPcmlnaW46IHtcbiAgICAgICAgaG9yaXpvbnRhbDogJ3JpZ2h0JyxcbiAgICAgICAgdmVydGljYWw6ICd0b3AnXG4gICAgICB9LFxuICAgICAgbWVzc2FnZTogJ1RoaXMgYXBwZWFycyBpbiB0aGUgdG9wIHJpZ2h0J1xuICAgIH0pO1xuICB9O1xuXG4gIC8vIE5vdGlmaWNhdGlvbiB3aXRoIGFjdGlvbnNcbiAgY29uc3Qgc2hvd0FjdGlvbk5vdGlmaWNhdGlvbiA9ICgpID0+IHtcbiAgICBHb3RoYW1BY3Rpb25zLm5vdGlmeSh7XG4gICAgICBhY3Rpb25zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBsYWJlbDogJ1VuZG8nLFxuICAgICAgICAgIG9uQ2xpY2s6IChrZXkpID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdVbmRvIGNsaWNrZWQnLCBrZXkpO1xuICAgICAgICAgICAgLy8gUGVyZm9ybSB1bmRvIGFjdGlvblxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGljb246ICdjbG9zZScsXG4gICAgICAgICAgb25DbGljazogKGtleSkgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ0Nsb3NlIGNsaWNrZWQnLCBrZXkpO1xuICAgICAgICAgICAgR290aGFtQWN0aW9ucy5ub3RpZnlDbG9zZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIG1lc3NhZ2U6ICdXb3VsZCB5b3UgbGlrZSB0byB1bmRvPydcbiAgICB9KTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwicC02IG1heC13LTR4bCBteC1hdXRvXCI+XG4gICAgICA8aDEgY2xhc3NOYW1lPVwidGV4dC0zeGwgZm9udC1ib2xkIG1iLTZcIj5Ob3RpZnkgQ29tcG9uZW50IEV4YW1wbGVzPC9oMT5cblxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJncmlkIGdyaWQtY29scy0xIG1kOmdyaWQtY29scy0yIGdhcC00XCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicC00IGJvcmRlciByb3VuZGVkLWxnIHNoYWRvdy1zbVwiPlxuICAgICAgICAgIDxoMiBjbGFzc05hbWU9XCJ0ZXh0LXhsIGZvbnQtc2VtaWJvbGQgbWItNFwiPkJhc2ljIE5vdGlmaWNhdGlvbnM8L2gyPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwic3BhY2UteS0yXCI+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIG9uQ2xpY2s9e3Nob3dCYXNpY05vdGlmaWNhdGlvbn1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1mdWxsIHB4LTQgcHktMiBiZy1ncmF5LTIwMCBob3ZlcjpiZy1ncmF5LTMwMCByb3VuZGVkLW1kXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgQmFzaWMgTm90aWZpY2F0aW9uXG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgb25DbGljaz17c2hvd1N1Y2Nlc3NOb3RpZmljYXRpb259XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctZnVsbCBweC00IHB5LTIgYmctZ3JlZW4tMTAwIGhvdmVyOmJnLWdyZWVuLTIwMCB0ZXh0LWdyZWVuLTgwMCByb3VuZGVkLW1kXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgU3VjY2VzcyBOb3RpZmljYXRpb25cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBvbkNsaWNrPXtzaG93RXJyb3JOb3RpZmljYXRpb259XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctZnVsbCBweC00IHB5LTIgYmctcmVkLTEwMCBob3ZlcjpiZy1yZWQtMjAwIHRleHQtcmVkLTgwMCByb3VuZGVkLW1kXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgRXJyb3IgTm90aWZpY2F0aW9uXG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgb25DbGljaz17c2hvd1dhcm5pbmdOb3RpZmljYXRpb259XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctZnVsbCBweC00IHB5LTIgYmcteWVsbG93LTEwMCBob3ZlcjpiZy15ZWxsb3ctMjAwIHRleHQteWVsbG93LTgwMCByb3VuZGVkLW1kXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgV2FybmluZyBOb3RpZmljYXRpb25cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBvbkNsaWNrPXtzaG93SW5mb05vdGlmaWNhdGlvbn1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1mdWxsIHB4LTQgcHktMiBiZy1ibHVlLTEwMCBob3ZlcjpiZy1ibHVlLTIwMCB0ZXh0LWJsdWUtODAwIHJvdW5kZWQtbWRcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBJbmZvIE5vdGlmaWNhdGlvblxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicC00IGJvcmRlciByb3VuZGVkLWxnIHNoYWRvdy1zbVwiPlxuICAgICAgICAgIDxoMiBjbGFzc05hbWU9XCJ0ZXh0LXhsIGZvbnQtc2VtaWJvbGQgbWItNFwiPkFkdmFuY2VkIE9wdGlvbnM8L2gyPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwic3BhY2UteS0yXCI+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIG9uQ2xpY2s9e3Nob3dUb3BSaWdodE5vdGlmaWNhdGlvbn1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1mdWxsIHB4LTQgcHktMiBiZy1wdXJwbGUtMTAwIGhvdmVyOmJnLXB1cnBsZS0yMDAgdGV4dC1wdXJwbGUtODAwIHJvdW5kZWQtbWRcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBUb3AgUmlnaHQgUG9zaXRpb25cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBvbkNsaWNrPXtzaG93QWN0aW9uTm90aWZpY2F0aW9ufVxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ3LWZ1bGwgcHgtNCBweS0yIGJnLWluZGlnby0xMDAgaG92ZXI6YmctaW5kaWdvLTIwMCB0ZXh0LWluZGlnby04MDAgcm91bmRlZC1tZFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIFdpdGggQWN0aW9uIEJ1dHRvbnNcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cIm10LTggcC00IGJnLWdyYXktNTAgcm91bmRlZC1sZ1wiPlxuICAgICAgICA8aDIgY2xhc3NOYW1lPVwidGV4dC14bCBmb250LXNlbWlib2xkIG1iLTJcIj5JbXBsZW1lbnRhdGlvbiBFeGFtcGxlPC9oMj5cbiAgICAgICAgPHByZSBjbGFzc05hbWU9XCJiZy1ncmF5LTgwMCB0ZXh0LWdyYXktMTAwIHAtNCByb3VuZGVkLW1kIG92ZXJmbG93LXgtYXV0b1wiPlxuICAgICAgICAgIHtgLy8gSW1wb3J0IHRoZSBHb3RoYW1BY3Rpb25zXG5pbXBvcnQge0dvdGhhbUFjdGlvbnN9IGZyb20gJ0BhY3Rpb25zL0dvdGhhbUFjdGlvbnMnO1xuXG4vLyBTaG93IGEgbm90aWZpY2F0aW9uXG5Hb3RoYW1BY3Rpb25zLm5vdGlmeSh7XG4gIG1lc3NhZ2U6ICdIZWxsbyBXb3JsZCcsXG4gIHNldmVyaXR5OiAnc3VjY2VzcycsXG4gIGF1dG9IaWRlRHVyYXRpb246IDUwMDBcbn0pO1xuXG4vLyBDbG9zZSBhbGwgbm90aWZpY2F0aW9uc1xuR290aGFtQWN0aW9ucy5ub3RpZnlDbG9zZSgpO2B9XG4gICAgICAgIDwvcHJlPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICk7XG59OyJdLCJuYW1lcyI6WyJHb3RoYW1BY3Rpb25zIiwiTm90aWZ5RXhhbXBsZSIsInNob3dCYXNpY05vdGlmaWNhdGlvbiIsIm5vdGlmeSIsImF1dG9IaWRlRHVyYXRpb24iLCJtZXNzYWdlIiwic2hvd1N1Y2Nlc3NOb3RpZmljYXRpb24iLCJzZXZlcml0eSIsInNob3dFcnJvck5vdGlmaWNhdGlvbiIsInNob3dXYXJuaW5nTm90aWZpY2F0aW9uIiwic2hvd0luZm9Ob3RpZmljYXRpb24iLCJzaG93VG9wUmlnaHROb3RpZmljYXRpb24iLCJhbmNob3JPcmlnaW4iLCJob3Jpem9udGFsIiwidmVydGljYWwiLCJzaG93QWN0aW9uTm90aWZpY2F0aW9uIiwiYWN0aW9ucyIsImxhYmVsIiwib25DbGljayIsImtleSIsImNvbnNvbGUiLCJsb2ciLCJpY29uIiwibm90aWZ5Q2xvc2UiLCJkaXYiLCJjbGFzc05hbWUiLCJoMSIsImgyIiwiYnV0dG9uIiwicHJlIl0sIm1hcHBpbmdzIjoiO0FBQUEsU0FBUUEsYUFBYSxRQUFPLGlDQUFpQztBQUU3RCxPQUFPLE1BQU1DLGdCQUFnQjtJQUMzQixxQkFBcUI7SUFDckIsTUFBTUMs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
|