@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,351 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from '@nlabs/utils';
|
|
3
|
+
import { ArrowLeft, ArrowRight, Bookmark, BookOpen, ChevronRight, List, Rss } from 'lucide-react';
|
|
4
|
+
const defaultLinks = [
|
|
5
|
+
{
|
|
6
|
+
description: 'Learn how to integrate GothamUI components with your app.',
|
|
7
|
+
href: '/docs',
|
|
8
|
+
icon: BookOpen,
|
|
9
|
+
label: 'Documentation'
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
description: 'Find the available components, utilities, and package exports.',
|
|
13
|
+
href: '/docs/api',
|
|
14
|
+
icon: List,
|
|
15
|
+
label: 'API Reference'
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
description: 'Review common setup patterns and implementation notes.',
|
|
19
|
+
href: '/guides',
|
|
20
|
+
icon: Bookmark,
|
|
21
|
+
label: 'Guides'
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
description: 'Read the latest updates and project notes.',
|
|
25
|
+
href: '/blog',
|
|
26
|
+
icon: Rss,
|
|
27
|
+
label: 'Blog'
|
|
28
|
+
}
|
|
29
|
+
];
|
|
30
|
+
const defaultFooterLinks = [
|
|
31
|
+
{
|
|
32
|
+
href: '/support',
|
|
33
|
+
label: 'Contact support'
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
href: '/status',
|
|
37
|
+
label: 'Status'
|
|
38
|
+
}
|
|
39
|
+
];
|
|
40
|
+
const renderLogo = (logo)=>logo ? /*#__PURE__*/ _jsx("div", {
|
|
41
|
+
className: "mx-auto flex h-10 w-fit items-center justify-center sm:h-12",
|
|
42
|
+
children: logo
|
|
43
|
+
}) : null;
|
|
44
|
+
const NotFoundContent = ({ center = false, description, homeHref, homeLabel, statusCode, supportHref, supportLabel, title })=>/*#__PURE__*/ _jsxs("div", {
|
|
45
|
+
className: cn(center && 'text-center'),
|
|
46
|
+
children: [
|
|
47
|
+
/*#__PURE__*/ _jsx("p", {
|
|
48
|
+
className: "text-base/8 font-semibold text-primary dark:text-primary-dark-300",
|
|
49
|
+
children: statusCode
|
|
50
|
+
}),
|
|
51
|
+
/*#__PURE__*/ _jsx("h1", {
|
|
52
|
+
className: "mt-4 text-5xl font-semibold tracking-tight text-balance text-gray-900 sm:text-7xl dark:text-white",
|
|
53
|
+
children: title
|
|
54
|
+
}),
|
|
55
|
+
/*#__PURE__*/ _jsx("p", {
|
|
56
|
+
className: "mt-6 text-lg font-medium text-pretty text-gray-500 sm:text-xl/8 dark:text-gray-400",
|
|
57
|
+
children: description
|
|
58
|
+
}),
|
|
59
|
+
/*#__PURE__*/ _jsxs("div", {
|
|
60
|
+
className: cn('mt-10 flex flex-wrap items-center gap-x-6 gap-y-3', center && 'justify-center'),
|
|
61
|
+
children: [
|
|
62
|
+
/*#__PURE__*/ _jsx("a", {
|
|
63
|
+
className: "inline-flex items-center rounded-md bg-primary px-3.5 py-2.5 text-sm font-semibold text-white shadow-xs hover:bg-primary-700 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary dark:bg-primary-dark dark:hover:bg-primary-dark-300",
|
|
64
|
+
href: homeHref,
|
|
65
|
+
children: homeLabel
|
|
66
|
+
}),
|
|
67
|
+
supportHref ? /*#__PURE__*/ _jsxs("a", {
|
|
68
|
+
className: "inline-flex items-center gap-1 text-sm font-semibold text-gray-900 dark:text-white",
|
|
69
|
+
href: supportHref,
|
|
70
|
+
children: [
|
|
71
|
+
supportLabel,
|
|
72
|
+
/*#__PURE__*/ _jsx(ArrowRight, {
|
|
73
|
+
"aria-hidden": "true",
|
|
74
|
+
className: "size-4"
|
|
75
|
+
})
|
|
76
|
+
]
|
|
77
|
+
}) : null
|
|
78
|
+
]
|
|
79
|
+
})
|
|
80
|
+
]
|
|
81
|
+
});
|
|
82
|
+
const PopularLinks = ({ links })=>/*#__PURE__*/ _jsxs("div", {
|
|
83
|
+
className: "mx-auto mt-16 flow-root max-w-lg sm:mt-20",
|
|
84
|
+
children: [
|
|
85
|
+
/*#__PURE__*/ _jsx("h2", {
|
|
86
|
+
className: "sr-only",
|
|
87
|
+
children: "Popular pages"
|
|
88
|
+
}),
|
|
89
|
+
/*#__PURE__*/ _jsx("ul", {
|
|
90
|
+
className: "-mt-6 divide-y divide-gray-900/5 border-b border-gray-900/5 dark:divide-white/10 dark:border-white/10",
|
|
91
|
+
role: "list",
|
|
92
|
+
children: links.map((link)=>{
|
|
93
|
+
const Icon = link.icon ?? BookOpen;
|
|
94
|
+
return /*#__PURE__*/ _jsxs("li", {
|
|
95
|
+
className: "relative flex gap-x-6 py-6",
|
|
96
|
+
children: [
|
|
97
|
+
/*#__PURE__*/ _jsx("div", {
|
|
98
|
+
className: "flex size-10 flex-none items-center justify-center rounded-lg shadow-xs outline-1 outline-gray-900/10 dark:bg-gray-800/50 dark:-outline-offset-1 dark:outline-white/10",
|
|
99
|
+
children: /*#__PURE__*/ _jsx(Icon, {
|
|
100
|
+
"aria-hidden": "true",
|
|
101
|
+
className: "size-6 text-primary dark:text-primary-dark-300"
|
|
102
|
+
})
|
|
103
|
+
}),
|
|
104
|
+
/*#__PURE__*/ _jsxs("div", {
|
|
105
|
+
className: "flex-auto",
|
|
106
|
+
children: [
|
|
107
|
+
/*#__PURE__*/ _jsx("h3", {
|
|
108
|
+
className: "text-sm/6 font-semibold text-gray-900 dark:text-white",
|
|
109
|
+
children: /*#__PURE__*/ _jsxs("a", {
|
|
110
|
+
href: link.href,
|
|
111
|
+
children: [
|
|
112
|
+
/*#__PURE__*/ _jsx("span", {
|
|
113
|
+
"aria-hidden": "true",
|
|
114
|
+
className: "absolute inset-0"
|
|
115
|
+
}),
|
|
116
|
+
link.label
|
|
117
|
+
]
|
|
118
|
+
})
|
|
119
|
+
}),
|
|
120
|
+
link.description ? /*#__PURE__*/ _jsx("p", {
|
|
121
|
+
className: "mt-2 text-sm/6 text-gray-600 dark:text-gray-400",
|
|
122
|
+
children: link.description
|
|
123
|
+
}) : null
|
|
124
|
+
]
|
|
125
|
+
}),
|
|
126
|
+
/*#__PURE__*/ _jsx("div", {
|
|
127
|
+
className: "flex-none self-center",
|
|
128
|
+
children: /*#__PURE__*/ _jsx(ChevronRight, {
|
|
129
|
+
"aria-hidden": "true",
|
|
130
|
+
className: "size-5 text-gray-400 dark:text-gray-500"
|
|
131
|
+
})
|
|
132
|
+
})
|
|
133
|
+
]
|
|
134
|
+
}, `${link.label}-${link.href}`);
|
|
135
|
+
})
|
|
136
|
+
})
|
|
137
|
+
]
|
|
138
|
+
});
|
|
139
|
+
export const NotFound = ({ backgroundImageAlt = '', backgroundImageSrc, className, copyright, description = 'Sorry, we could not find the page you are looking for.', footerLinks = defaultFooterLinks, homeHref = '/', homeLabel = 'Go back home', imageAlt = '', imageSrc, links = defaultLinks, logo, socialLinks = [], statusCode = '404', supportHref, supportLabel = 'Contact support', title = 'Page not found', variant = 'simple', ...props })=>{
|
|
140
|
+
if (variant === 'background') {
|
|
141
|
+
return /*#__PURE__*/ _jsxs("div", {
|
|
142
|
+
className: cn('relative isolate min-h-screen', className),
|
|
143
|
+
"data-slot": "not-found",
|
|
144
|
+
"data-variant": variant,
|
|
145
|
+
...props,
|
|
146
|
+
children: [
|
|
147
|
+
backgroundImageSrc ? /*#__PURE__*/ _jsx("img", {
|
|
148
|
+
alt: backgroundImageAlt,
|
|
149
|
+
className: "absolute inset-0 -z-10 size-full object-cover object-top",
|
|
150
|
+
src: backgroundImageSrc
|
|
151
|
+
}) : null,
|
|
152
|
+
/*#__PURE__*/ _jsx("div", {
|
|
153
|
+
className: "absolute inset-0 -z-10 bg-gray-950/70"
|
|
154
|
+
}),
|
|
155
|
+
/*#__PURE__*/ _jsxs("main", {
|
|
156
|
+
className: "mx-auto max-w-7xl px-6 py-32 text-center sm:py-40 lg:px-8",
|
|
157
|
+
children: [
|
|
158
|
+
/*#__PURE__*/ _jsx("p", {
|
|
159
|
+
className: "text-base/8 font-semibold text-white",
|
|
160
|
+
children: statusCode
|
|
161
|
+
}),
|
|
162
|
+
/*#__PURE__*/ _jsx("h1", {
|
|
163
|
+
className: "mt-4 text-5xl font-semibold tracking-tight text-balance text-white sm:text-7xl",
|
|
164
|
+
children: title
|
|
165
|
+
}),
|
|
166
|
+
/*#__PURE__*/ _jsx("p", {
|
|
167
|
+
className: "mt-6 text-lg font-medium text-pretty text-white/70 sm:text-xl/8",
|
|
168
|
+
children: description
|
|
169
|
+
}),
|
|
170
|
+
/*#__PURE__*/ _jsx("div", {
|
|
171
|
+
className: "mt-10 flex justify-center",
|
|
172
|
+
children: /*#__PURE__*/ _jsxs("a", {
|
|
173
|
+
className: "inline-flex items-center gap-1 text-sm/7 font-semibold text-white hover:text-white/90",
|
|
174
|
+
href: homeHref,
|
|
175
|
+
children: [
|
|
176
|
+
/*#__PURE__*/ _jsx(ArrowLeft, {
|
|
177
|
+
"aria-hidden": "true",
|
|
178
|
+
className: "size-4"
|
|
179
|
+
}),
|
|
180
|
+
homeLabel
|
|
181
|
+
]
|
|
182
|
+
})
|
|
183
|
+
})
|
|
184
|
+
]
|
|
185
|
+
})
|
|
186
|
+
]
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
if (variant === 'split') {
|
|
190
|
+
return /*#__PURE__*/ _jsxs("div", {
|
|
191
|
+
className: cn('grid min-h-screen grid-cols-1 grid-rows-[auto_1fr_auto] bg-white lg:grid-cols-[minmax(0,36rem)_1fr] dark:bg-gray-900', className),
|
|
192
|
+
"data-slot": "not-found",
|
|
193
|
+
"data-variant": variant,
|
|
194
|
+
...props,
|
|
195
|
+
children: [
|
|
196
|
+
/*#__PURE__*/ _jsx("header", {
|
|
197
|
+
className: "mx-auto w-full max-w-7xl px-6 pt-6 sm:pt-10 lg:col-span-2 lg:col-start-1 lg:row-start-1 lg:px-8",
|
|
198
|
+
children: logo ? /*#__PURE__*/ _jsx("a", {
|
|
199
|
+
href: homeHref,
|
|
200
|
+
children: logo
|
|
201
|
+
}) : null
|
|
202
|
+
}),
|
|
203
|
+
/*#__PURE__*/ _jsx("main", {
|
|
204
|
+
className: "mx-auto flex w-full max-w-7xl items-center px-6 py-24 sm:py-32 lg:col-span-2 lg:col-start-1 lg:row-start-2 lg:px-8",
|
|
205
|
+
children: /*#__PURE__*/ _jsx("div", {
|
|
206
|
+
className: "max-w-lg",
|
|
207
|
+
children: /*#__PURE__*/ _jsx(NotFoundContent, {
|
|
208
|
+
description: description,
|
|
209
|
+
homeHref: homeHref,
|
|
210
|
+
homeLabel: homeLabel,
|
|
211
|
+
statusCode: statusCode,
|
|
212
|
+
supportHref: undefined,
|
|
213
|
+
supportLabel: supportLabel,
|
|
214
|
+
title: title
|
|
215
|
+
})
|
|
216
|
+
})
|
|
217
|
+
}),
|
|
218
|
+
/*#__PURE__*/ _jsx("footer", {
|
|
219
|
+
className: "self-end lg:col-span-2 lg:col-start-1 lg:row-start-3",
|
|
220
|
+
children: /*#__PURE__*/ _jsx("div", {
|
|
221
|
+
className: "border-t border-gray-100 bg-gray-50 py-10 dark:border-white/10 dark:bg-gray-800/50",
|
|
222
|
+
children: /*#__PURE__*/ _jsx("nav", {
|
|
223
|
+
className: "mx-auto flex w-full max-w-7xl items-center gap-x-4 px-6 text-sm/7 text-gray-600 lg:px-8 dark:text-gray-400",
|
|
224
|
+
children: footerLinks.map((link, index)=>/*#__PURE__*/ _jsxs("span", {
|
|
225
|
+
className: "contents",
|
|
226
|
+
children: [
|
|
227
|
+
index > 0 ? /*#__PURE__*/ _jsx("span", {
|
|
228
|
+
"aria-hidden": "true",
|
|
229
|
+
className: "size-0.5 rounded-full bg-gray-300 dark:bg-gray-600"
|
|
230
|
+
}) : null,
|
|
231
|
+
/*#__PURE__*/ _jsx("a", {
|
|
232
|
+
href: link.href,
|
|
233
|
+
children: link.label
|
|
234
|
+
})
|
|
235
|
+
]
|
|
236
|
+
}, `${link.label}-${link.href}`))
|
|
237
|
+
})
|
|
238
|
+
})
|
|
239
|
+
}),
|
|
240
|
+
imageSrc ? /*#__PURE__*/ _jsx("div", {
|
|
241
|
+
className: "hidden lg:relative lg:col-start-2 lg:row-start-1 lg:row-end-4 lg:block",
|
|
242
|
+
children: /*#__PURE__*/ _jsx("img", {
|
|
243
|
+
alt: imageAlt,
|
|
244
|
+
className: "absolute inset-0 size-full object-cover",
|
|
245
|
+
src: imageSrc
|
|
246
|
+
})
|
|
247
|
+
}) : null
|
|
248
|
+
]
|
|
249
|
+
});
|
|
250
|
+
}
|
|
251
|
+
if (variant === 'popular') {
|
|
252
|
+
return /*#__PURE__*/ _jsxs("div", {
|
|
253
|
+
className: cn('min-h-screen bg-white dark:bg-gray-900', className),
|
|
254
|
+
"data-slot": "not-found",
|
|
255
|
+
"data-variant": variant,
|
|
256
|
+
...props,
|
|
257
|
+
children: [
|
|
258
|
+
/*#__PURE__*/ _jsxs("main", {
|
|
259
|
+
className: "mx-auto w-full max-w-7xl px-6 pt-10 pb-16 sm:pb-24 lg:px-8",
|
|
260
|
+
children: [
|
|
261
|
+
renderLogo(logo),
|
|
262
|
+
/*#__PURE__*/ _jsx("div", {
|
|
263
|
+
className: "mx-auto mt-20 max-w-2xl text-center sm:mt-24",
|
|
264
|
+
children: /*#__PURE__*/ _jsx(NotFoundContent, {
|
|
265
|
+
center: true,
|
|
266
|
+
description: description,
|
|
267
|
+
homeHref: homeHref,
|
|
268
|
+
homeLabel: homeLabel,
|
|
269
|
+
statusCode: statusCode,
|
|
270
|
+
supportHref: undefined,
|
|
271
|
+
supportLabel: supportLabel,
|
|
272
|
+
title: title
|
|
273
|
+
})
|
|
274
|
+
}),
|
|
275
|
+
/*#__PURE__*/ _jsx(PopularLinks, {
|
|
276
|
+
links: links
|
|
277
|
+
}),
|
|
278
|
+
/*#__PURE__*/ _jsx("div", {
|
|
279
|
+
className: "mt-10 flex justify-center",
|
|
280
|
+
children: /*#__PURE__*/ _jsxs("a", {
|
|
281
|
+
className: "inline-flex items-center gap-1 text-sm/6 font-semibold text-primary dark:text-primary-dark-300",
|
|
282
|
+
href: homeHref,
|
|
283
|
+
children: [
|
|
284
|
+
/*#__PURE__*/ _jsx(ArrowLeft, {
|
|
285
|
+
"aria-hidden": "true",
|
|
286
|
+
className: "size-4"
|
|
287
|
+
}),
|
|
288
|
+
homeLabel
|
|
289
|
+
]
|
|
290
|
+
})
|
|
291
|
+
})
|
|
292
|
+
]
|
|
293
|
+
}),
|
|
294
|
+
copyright || socialLinks.length > 0 ? /*#__PURE__*/ _jsx("footer", {
|
|
295
|
+
className: "border-t border-gray-100 py-6 sm:py-10 dark:border-white/10",
|
|
296
|
+
children: /*#__PURE__*/ _jsxs("div", {
|
|
297
|
+
className: "mx-auto flex max-w-7xl flex-col items-center justify-center gap-8 px-6 sm:flex-row lg:px-8",
|
|
298
|
+
children: [
|
|
299
|
+
copyright ? /*#__PURE__*/ _jsx("p", {
|
|
300
|
+
className: "text-sm/7 text-gray-400 dark:text-gray-500",
|
|
301
|
+
children: copyright
|
|
302
|
+
}) : null,
|
|
303
|
+
copyright && socialLinks.length > 0 ? /*#__PURE__*/ _jsx("div", {
|
|
304
|
+
className: "hidden sm:block sm:h-7 sm:w-px sm:flex-none sm:bg-gray-200 dark:sm:bg-gray-700"
|
|
305
|
+
}) : null,
|
|
306
|
+
/*#__PURE__*/ _jsx("div", {
|
|
307
|
+
className: "flex gap-x-4",
|
|
308
|
+
children: socialLinks.map((item)=>{
|
|
309
|
+
const Icon = item.icon;
|
|
310
|
+
return /*#__PURE__*/ _jsxs("a", {
|
|
311
|
+
className: "text-gray-400 hover:text-gray-500 dark:text-gray-500 dark:hover:text-gray-400",
|
|
312
|
+
href: item.href,
|
|
313
|
+
children: [
|
|
314
|
+
/*#__PURE__*/ _jsx("span", {
|
|
315
|
+
className: "sr-only",
|
|
316
|
+
children: item.label
|
|
317
|
+
}),
|
|
318
|
+
/*#__PURE__*/ _jsx(Icon, {
|
|
319
|
+
"aria-hidden": "true",
|
|
320
|
+
className: "size-6"
|
|
321
|
+
})
|
|
322
|
+
]
|
|
323
|
+
}, `${item.label}-${item.href}`);
|
|
324
|
+
})
|
|
325
|
+
})
|
|
326
|
+
]
|
|
327
|
+
})
|
|
328
|
+
}) : null
|
|
329
|
+
]
|
|
330
|
+
});
|
|
331
|
+
}
|
|
332
|
+
return /*#__PURE__*/ _jsx("main", {
|
|
333
|
+
className: cn('grid min-h-screen place-items-center bg-white px-6 py-24 sm:py-32 lg:px-8 dark:bg-gray-900', className),
|
|
334
|
+
"data-slot": "not-found",
|
|
335
|
+
"data-variant": variant,
|
|
336
|
+
...props,
|
|
337
|
+
children: /*#__PURE__*/ _jsx(NotFoundContent, {
|
|
338
|
+
center: true,
|
|
339
|
+
description: description,
|
|
340
|
+
homeHref: homeHref,
|
|
341
|
+
homeLabel: homeLabel,
|
|
342
|
+
statusCode: statusCode,
|
|
343
|
+
supportHref: supportHref,
|
|
344
|
+
supportLabel: supportLabel,
|
|
345
|
+
title: title
|
|
346
|
+
})
|
|
347
|
+
});
|
|
348
|
+
};
|
|
349
|
+
export default NotFound;
|
|
350
|
+
|
|
351
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L2dvdGhhbWpzL3NyYy9jb21wb25lbnRzL05vdEZvdW5kL05vdEZvdW5kLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2NufSBmcm9tICdAbmxhYnMvdXRpbHMnO1xuaW1wb3J0IHtBcnJvd0xlZnQsIEFycm93UmlnaHQsIEJvb2ttYXJrLCBCb29rT3BlbiwgQ2hldnJvblJpZ2h0LCBMaXN0LCBSc3N9IGZyb20gJ2x1Y2lkZS1yZWFjdCc7XG5cbmltcG9ydCB0eXBlIHtDb21wb25lbnRUeXBlLCBIVE1MQXR0cmlidXRlcywgUmVhY3ROb2RlLCBTVkdQcm9wc30gZnJvbSAncmVhY3QnO1xuXG5leHBvcnQgdHlwZSBOb3RGb3VuZFZhcmlhbnQgPSAnc2ltcGxlJyB8ICdwb3B1bGFyJyB8ICdzcGxpdCcgfCAnYmFja2dyb3VuZCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTm90Rm91bmRMaW5rIHtcbiAgcmVhZG9ubHkgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGhyZWY6IHN0cmluZztcbiAgcmVhZG9ubHkgaWNvbj86IENvbXBvbmVudFR5cGU8U1ZHUHJvcHM8U1ZHU1ZHRWxlbWVudD4+O1xuICByZWFkb25seSBsYWJlbDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5vdEZvdW5kU29jaWFsTGluayB7XG4gIHJlYWRvbmx5IGhyZWY6IHN0cmluZztcbiAgcmVhZG9ubHkgaWNvbjogQ29tcG9uZW50VHlwZTxTVkdQcm9wczxTVkdTVkdFbGVtZW50Pj47XG4gIHJlYWRvbmx5IGxhYmVsOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTm90Rm91bmRQcm9wcyBleHRlbmRzIE9taXQ8SFRNTEF0dHJpYnV0ZXM8SFRNTERpdkVsZW1lbnQ+LCAndGl0bGUnPiB7XG4gIHJlYWRvbmx5IGJhY2tncm91bmRJbWFnZUFsdD86IHN0cmluZztcbiAgcmVhZG9ubHkgYmFja2dyb3VuZEltYWdlU3JjPzogc3RyaW5nO1xuICByZWFkb25seSBjb3B5cmlnaHQ/OiBSZWFjdE5vZGU7XG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uPzogUmVhY3ROb2RlO1xuICByZWFkb25seSBmb290ZXJMaW5rcz86IHJlYWRvbmx5IE5vdEZvdW5kTGlua1tdO1xuICByZWFkb25seSBob21lSHJlZj86IHN0cmluZztcbiAgcmVhZG9ubHkgaG9tZUxhYmVsPzogc3RyaW5nO1xuICByZWFkb25seSBpbWFnZUFsdD86IHN0cmluZztcbiAgcmVhZG9ubHkgaW1hZ2VTcmM/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGxpbmtzPzogcmVhZG9ubHkgTm90Rm91bmRMaW5rW107XG4gIHJlYWRvbmx5IGxvZ28/OiBSZWFjdE5vZGU7XG4gIHJlYWRvbmx5IHNvY2lhbExpbmtzPzogcmVhZG9ubHkgTm90Rm91bmRTb2NpYWxMaW5rW107XG4gIHJlYWRvbmx5IHN0YXR1c0NvZGU/OiBSZWFjdE5vZGU7XG4gIHJlYWRvbmx5IHN1cHBvcnRIcmVmPzogc3RyaW5nO1xuICByZWFkb25seSBzdXBwb3J0TGFiZWw/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHRpdGxlPzogUmVhY3ROb2RlO1xuICByZWFkb25seSB2YXJpYW50PzogTm90Rm91bmRWYXJpYW50O1xufVxuXG5jb25zdCBkZWZhdWx0TGlua3M6IHJlYWRvbmx5IE5vdEZvdW5kTGlua1tdID0gW1xuICB7XG4gICAgZGVzY3JpcHRpb246ICdMZWFybiBob3cgdG8gaW50ZWdyYXRlIEdvdGhhbVVJIGNvbXBvbmVudHMgd2l0aCB5b3VyIGFwcC4nLFxuICAgIGhyZWY6ICcvZG9jcycsXG4gICAgaWNvbjogQm9va09wZW4sXG4gICAgbGFiZWw6ICdEb2N1bWVudGF0aW9uJ1xuICB9LFxuICB7XG4gICAgZGVzY3JpcHRpb246ICdGaW5kIHRoZSBhdmFpbGFibGUgY29tcG9uZW50cywgdXRpbGl0aWVzLCBhbmQgcGFja2FnZSBleHBvcnRzLicsXG4gICAgaHJlZjogJy9kb2NzL2FwaScsXG4gICAgaWNvbjogTGlzdCxcbiAgICBsYWJlbDogJ0FQSSBSZWZlcmVuY2UnXG4gIH0sXG4gIHtcbiAgICBkZXNjcmlwdGlvbjogJ1JldmlldyBjb21tb24gc2V0dXAgcGF0dGVybnMgYW5kIGltcGxlbWVudGF0aW9uIG5vdGVzLicsXG4gICAgaHJlZjogJy9ndWlkZXMnLFxuICAgIGljb246IEJvb2ttYXJrLFxuICAgIGxhYmVsOiAnR3VpZGVzJ1xuICB9LFxuICB7XG4gICAgZGVzY3JpcHRpb246ICdSZWFkIHRoZSBsYXRlc3QgdXBkYXRlcyBhbmQgcHJvamVjdCBub3Rlcy4nLFxuICAgIGhyZWY6ICcvYmxvZycsXG4gICAgaWNvbjogUnNzLFxuICAgIGxhYmVsOiAnQmxvZydcbiAgfVxuXTtcblxuY29uc3QgZGVmYXVsdEZvb3RlckxpbmtzOiByZWFkb25seSBOb3RGb3VuZExpbmtbXSA9IFtcbiAge2hyZWY6ICcvc3VwcG9ydCcsIGxhYmVsOiAnQ29udGFjdCBzdXBwb3J0J30sXG4gIHtocmVmOiAnL3N0YXR1cycsIGxhYmVsOiAnU3RhdHVzJ31cbl07XG5cbmNvbnN0IHJlbmRlckxvZ28gPSAobG9nbz86IFJlYWN0Tm9kZSkgPT4gbG9nbyA/IChcbiAgPGRpdiBjbGFzc05hbWU9XCJteC1hdXRvIGZsZXggaC0xMCB3LWZpdCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgc206aC0xMlwiPlxuICAgIHtsb2dvfVxuICA8L2Rpdj5cbikgOiBudWxsO1xuXG5jb25zdCBOb3RGb3VuZENvbnRlbnQgPSAoe1xuICBjZW50ZXIgPSBmYWxzZSxcbiAgZGVzY3JpcHRpb24sXG4gIGhvbWVIcmVmLFxuICBob21lTGFiZWwsXG4gIHN0YXR1c0NvZGUsXG4gIHN1cHBvcnRIcmVmLFxuICBzdXBwb3J0TGFiZWwsXG4gIHRpdGxlXG59OiBQaWNrPE5vdEZvdW5kUHJvcHMsICdkZXNjcmlwdGlvbicgfCAnaG9tZUhyZWYnIHwgJ2hvbWVMYWJlbCcgfCAnc3RhdHVzQ29kZScgfCAnc3VwcG9ydEhyZWYnIHwgJ3N1cHBvcnRMYWJlbCcgfCAndGl0bGUnPiAmIHtcbiAgcmVhZG9ubHkgY2VudGVyPzogYm9vbGVhbjtcbn0pID0+IChcbiAgPGRpdiBjbGFzc05hbWU9e2NuKGNlbnRlciAmJiAndGV4dC1jZW50ZXInKX0+XG4gICAgPHAgY2xhc3NOYW1lPVwidGV4dC1iYXNlLzggZm9udC1zZW1pYm9sZCB0ZXh0LXByaW1hcnkgZGFyazp0ZXh0LXByaW1hcnktZGFyay0zMDBcIj57c3RhdHVzQ29kZX08L3A+XG4gICAgPGgxIGNsYXNzTmFtZT1cIm10LTQgdGV4dC01eGwgZm9udC1zZW1pYm9sZCB0cmFja2luZy10aWdodCB0ZXh0LWJhbGFuY2UgdGV4dC1ncmF5LTkwMCBzbTp0ZXh0LTd4bCBkYXJrOnRleHQtd2hpdGVcIj5cbiAgICAgIHt0aXRsZX1cbiAgICA8L2gxPlxuICAgIDxwIGNsYXNzTmFtZT1cIm10LTYgdGV4dC1sZyBmb250LW1lZGl1bSB0ZXh0LXByZXR0eSB0ZXh0LWdyYXktNTAwIHNtOnRleHQteGwvOCBkYXJrOnRleHQtZ3JheS00MDBcIj5cbiAgICAgIHtkZXNjcmlwdGlvbn1cbiAgICA8L3A+XG4gICAgPGRpdiBjbGFzc05hbWU9e2NuKCdtdC0xMCBmbGV4IGZsZXgtd3JhcCBpdGVtcy1jZW50ZXIgZ2FwLXgtNiBnYXAteS0zJywgY2VudGVyICYmICdqdXN0aWZ5LWNlbnRlcicpfT5cbiAgICAgIDxhXG4gICAgICAgIGNsYXNzTmFtZT1cImlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciByb3VuZGVkLW1kIGJnLXByaW1hcnkgcHgtMy41IHB5LTIuNSB0ZXh0LXNtIGZvbnQtc2VtaWJvbGQgdGV4dC13aGl0ZSBzaGFkb3cteHMgaG92ZXI6YmctcHJpbWFyeS03MDAgZm9jdXMtdmlzaWJsZTpvdXRsaW5lLTIgZm9jdXMtdmlzaWJsZTpvdXRsaW5lLW9mZnNldC0yIGZvY3VzLXZpc2libGU6b3V0bGluZS1wcmltYXJ5IGRhcms6YmctcHJpbWFyeS1kYXJrIGRhcms6aG92ZXI6YmctcHJpbWFyeS1kYXJrLTMwMFwiXG4gICAgICAgIGhyZWY9e2hvbWVIcmVmfVxuICAgICAgPlxuICAgICAgICB7aG9tZUxhYmVsfVxuICAgICAgPC9hPlxuICAgICAge3N1cHBvcnRIcmVmID8gKFxuICAgICAgICA8YSBjbGFzc05hbWU9XCJpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTEgdGV4dC1zbSBmb250LXNlbWlib2xkIHRleHQtZ3JheS05MDAgZGFyazp0ZXh0LXdoaXRlXCIgaHJlZj17c3VwcG9ydEhyZWZ9PlxuICAgICAgICAgIHtzdXBwb3J0TGFiZWx9XG4gICAgICAgICAgPEFycm93UmlnaHQgYXJpYS1oaWRkZW49XCJ0cnVlXCIgY2xhc3NOYW1lPVwic2l6ZS00XCIgLz5cbiAgICAgICAgPC9hPlxuICAgICAgKSA6IG51bGx9XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuKTtcblxuY29uc3QgUG9wdWxhckxpbmtzID0gKHtsaW5rc306IHtyZWFkb25seSBsaW5rczogcmVhZG9ubHkgTm90Rm91bmRMaW5rW119KSA9PiAoXG4gIDxkaXYgY2xhc3NOYW1lPVwibXgtYXV0byBtdC0xNiBmbG93LXJvb3QgbWF4LXctbGcgc206bXQtMjBcIj5cbiAgICA8aDIgY2xhc3NOYW1lPVwic3Itb25seVwiPlBvcHVsYXIgcGFnZXM8L2gyPlxuICAgIDx1bFxuICAgICAgY2xhc3NOYW1lPVwiLW10LTYgZGl2aWRlLXkgZGl2aWRlLWdyYXktOTAwLzUgYm9yZGVyLWIgYm9yZGVyLWdyYXktOTAwLzUgZGFyazpkaXZpZGUtd2hpdGUvMTAgZGFyazpib3JkZXItd2hpdGUvMTBcIlxuICAgICAgcm9sZT1cImxpc3RcIlxuICAgID5cbiAgICAgIHtsaW5rcy5tYXAoKGxpbmspID0+IHtcbiAgICAgICAgY29uc3QgSWNvbiA9IGxpbmsuaWNvbiA/PyBCb29rT3BlbjtcblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIDxsaSBjbGFzc05hbWU9XCJyZWxhdGl2ZSBmbGV4IGdhcC14LTYgcHktNlwiIGtleT17YCR7bGluay5sYWJlbH0tJHtsaW5rLmhyZWZ9YH0+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggc2l6ZS0xMCBmbGV4LW5vbmUgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHJvdW5kZWQtbGcgc2hhZG93LXhzIG91dGxpbmUtMSBvdXRsaW5lLWdyYXktOTAwLzEwIGRhcms6YmctZ3JheS04MDAvNTAgZGFyazotb3V0bGluZS1vZmZzZXQtMSBkYXJrOm91dGxpbmUtd2hpdGUvMTBcIj5cbiAgICAgICAgICAgICAgPEljb24gYXJpYS1oaWRkZW49XCJ0cnVlXCIgY2xhc3NOYW1lPVwic2l6ZS02IHRleHQtcHJpbWFyeSBkYXJrOnRleHQtcHJpbWFyeS1kYXJrLTMwMFwiIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC1hdXRvXCI+XG4gICAgICAgICAgICAgIDxoMyBjbGFzc05hbWU9XCJ0ZXh0LXNtLzYgZm9udC1zZW1pYm9sZCB0ZXh0LWdyYXktOTAwIGRhcms6dGV4dC13aGl0ZVwiPlxuICAgICAgICAgICAgICAgIDxhIGhyZWY9e2xpbmsuaHJlZn0+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIiBjbGFzc05hbWU9XCJhYnNvbHV0ZSBpbnNldC0wXCIgLz5cbiAgICAgICAgICAgICAgICAgIHtsaW5rLmxhYmVsfVxuICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgPC9oMz5cbiAgICAgICAgICAgICAge2xpbmsuZGVzY3JpcHRpb24gPyAoXG4gICAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwibXQtMiB0ZXh0LXNtLzYgdGV4dC1ncmF5LTYwMCBkYXJrOnRleHQtZ3JheS00MDBcIj57bGluay5kZXNjcmlwdGlvbn08L3A+XG4gICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgtbm9uZSBzZWxmLWNlbnRlclwiPlxuICAgICAgICAgICAgICA8Q2hldnJvblJpZ2h0IGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGNsYXNzTmFtZT1cInNpemUtNSB0ZXh0LWdyYXktNDAwIGRhcms6dGV4dC1ncmF5LTUwMFwiIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2xpPlxuICAgICAgICApO1xuICAgICAgfSl9XG4gICAgPC91bD5cbiAgPC9kaXY+XG4pO1xuXG5leHBvcnQgY29uc3QgTm90Rm91bmQgPSAoe1xuICBiYWNrZ3JvdW5kSW1hZ2VBbHQgPSAnJyxcbiAgYmFja2dyb3VuZEltYWdlU3JjLFxuICBjbGFzc05hbWUsXG4gIGNvcHlyaWdodCxcbiAgZGVzY3JpcHRpb24gPSAnU29ycnksIHdlIGNvdWxkIG5vdCBmaW5kIHRoZSBwYWdlIHlvdSBhcmUgbG9va2luZyBmb3IuJyxcbiAgZm9vdGVyTGlua3MgPSBkZWZhdWx0Rm9vdGVyTGlua3MsXG4gIGhvbWVIcmVmID0gJy8nLFxuICBob21lTGFiZWwgPSAnR28gYmFjayBob21lJyxcbiAgaW1hZ2VBbHQgPSAnJyxcbiAgaW1hZ2VTcmMsXG4gIGxpbmtzID0gZGVmYXVsdExpbmtzLFxuICBsb2dvLFxuICBzb2NpYWxMaW5rcyA9IFtdLFxuICBzdGF0dXNDb2RlID0gJzQwNCcsXG4gIHN1cHBvcnRIcmVmLFxuICBzdXBwb3J0TGFiZWwgPSAnQ29udGFjdCBzdXBwb3J0JyxcbiAgdGl0bGUgPSAnUGFnZSBub3QgZm91bmQnLFxuICB2YXJpYW50ID0gJ3NpbXBsZScsXG4gIC4uLnByb3BzXG59OiBOb3RGb3VuZFByb3BzKSA9PiB7XG4gIGlmICh2YXJpYW50ID09PSAnYmFja2dyb3VuZCcpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPGRpdiBjbGFzc05hbWU9e2NuKCdyZWxhdGl2ZSBpc29sYXRlIG1pbi1oLXNjcmVlbicsIGNsYXNzTmFtZSl9IGRhdGEtc2xvdD1cIm5vdC1mb3VuZFwiIGRhdGEtdmFyaWFudD17dmFyaWFudH0gey4uLnByb3BzfT5cbiAgICAgICAge2JhY2tncm91bmRJbWFnZVNyYyA/IChcbiAgICAgICAgICA8aW1nIGFsdD17YmFja2dyb3VuZEltYWdlQWx0fSBjbGFzc05hbWU9XCJhYnNvbHV0ZSBpbnNldC0wIC16LTEwIHNpemUtZnVsbCBvYmplY3QtY292ZXIgb2JqZWN0LXRvcFwiIHNyYz17YmFja2dyb3VuZEltYWdlU3JjfSAvPlxuICAgICAgICApIDogbnVsbH1cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhYnNvbHV0ZSBpbnNldC0wIC16LTEwIGJnLWdyYXktOTUwLzcwXCIgLz5cbiAgICAgICAgPG1haW4gY2xhc3NOYW1lPVwibXgtYXV0byBtYXgtdy03eGwgcHgtNiBweS0zMiB0ZXh0LWNlbnRlciBzbTpweS00MCBsZzpweC04XCI+XG4gICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC1iYXNlLzggZm9udC1zZW1pYm9sZCB0ZXh0LXdoaXRlXCI+e3N0YXR1c0NvZGV9PC9wPlxuICAgICAgICAgIDxoMSBjbGFzc05hbWU9XCJtdC00IHRleHQtNXhsIGZvbnQtc2VtaWJvbGQgdHJhY2tpbmctdGlnaHQgdGV4dC1iYWxhbmNlIHRleHQtd2hpdGUgc206dGV4dC03eGxcIj57dGl0bGV9PC9oMT5cbiAgICAgICAgICA8cCBjbGFzc05hbWU9XCJtdC02IHRleHQtbGcgZm9udC1tZWRpdW0gdGV4dC1wcmV0dHkgdGV4dC13aGl0ZS83MCBzbTp0ZXh0LXhsLzhcIj57ZGVzY3JpcHRpb259PC9wPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXQtMTAgZmxleCBqdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICAgICAgPGEgY2xhc3NOYW1lPVwiaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIGdhcC0xIHRleHQtc20vNyBmb250LXNlbWlib2xkIHRleHQtd2hpdGUgaG92ZXI6dGV4dC13aGl0ZS85MFwiIGhyZWY9e2hvbWVIcmVmfT5cbiAgICAgICAgICAgICAgPEFycm93TGVmdCBhcmlhLWhpZGRlbj1cInRydWVcIiBjbGFzc05hbWU9XCJzaXplLTRcIiAvPlxuICAgICAgICAgICAgICB7aG9tZUxhYmVsfVxuICAgICAgICAgICAgPC9hPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L21haW4+XG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9XG5cbiAgaWYgKHZhcmlhbnQgPT09ICdzcGxpdCcpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPGRpdlxuICAgICAgICBjbGFzc05hbWU9e2NuKCdncmlkIG1pbi1oLXNjcmVlbiBncmlkLWNvbHMtMSBncmlkLXJvd3MtW2F1dG9fMWZyX2F1dG9dIGJnLXdoaXRlIGxnOmdyaWQtY29scy1bbWlubWF4KDAsMzZyZW0pXzFmcl0gZGFyazpiZy1ncmF5LTkwMCcsIGNsYXNzTmFtZSl9XG4gICAgICAgIGRhdGEtc2xvdD1cIm5vdC1mb3VuZFwiXG4gICAgICAgIGRhdGEtdmFyaWFudD17dmFyaWFudH1cbiAgICAgICAgey4uLnByb3BzfVxuICAgICAgPlxuICAgICAgICA8aGVhZGVyIGNsYXNzTmFtZT1cIm14LWF1dG8gdy1mdWxsIG1heC13LTd4bCBweC02IHB0LTYgc206cHQtMTAgbGc6Y29sLXNwYW4tMiBsZzpjb2wtc3RhcnQtMSBsZzpyb3ctc3RhcnQtMSBsZzpweC04XCI+XG4gICAgICAgICAge2xvZ28gPyA8YSBocmVmPXtob21lSHJlZn0+e2xvZ299PC9hPiA6IG51bGx9XG4gICAgICAgIDwvaGVhZGVyPlxuICAgICAgICA8bWFpbiBjbGFzc05hbWU9XCJteC1hdXRvIGZsZXggdy1mdWxsIG1heC13LTd4bCBpdGVtcy1jZW50ZXIgcHgtNiBweS0yNCBzbTpweS0zMiBsZzpjb2wtc3Bhbi0yIGxnOmNvbC1zdGFydC0xIGxnOnJvdy1zdGFydC0yIGxnOnB4LThcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1heC13LWxnXCI+XG4gICAgICAgICAgICA8Tm90Rm91bmRDb250ZW50XG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uPXtkZXNjcmlwdGlvbn1cbiAgICAgICAgICAgICAgaG9tZUhyZWY9e2hvbWVIcmVmfVxuICAgICAgICAgICAgICBob21lTGFiZWw9e2hvbWVMYWJlbH1cbiAgICAgICAgICAgICAgc3RhdHVzQ29kZT17c3RhdHVzQ29kZX1cbiAgICAgICAgICAgICAgc3VwcG9ydEhyZWY9e3VuZGVmaW5lZH1cbiAgICAgICAgICAgICAgc3VwcG9ydExhYmVsPXtzdXBwb3J0TGFiZWx9XG4gICAgICAgICAgICAgIHRpdGxlPXt0aXRsZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbWFpbj5cbiAgICAgICAgPGZvb3RlciBjbGFzc05hbWU9XCJzZWxmLWVuZCBsZzpjb2wtc3Bhbi0yIGxnOmNvbC1zdGFydC0xIGxnOnJvdy1zdGFydC0zXCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJib3JkZXItdCBib3JkZXItZ3JheS0xMDAgYmctZ3JheS01MCBweS0xMCBkYXJrOmJvcmRlci13aGl0ZS8xMCBkYXJrOmJnLWdyYXktODAwLzUwXCI+XG4gICAgICAgICAgICA8bmF2IGNsYXNzTmFtZT1cIm14LWF1dG8gZmxleCB3LWZ1bGwgbWF4LXctN3hsIGl0ZW1zLWNlbnRlciBnYXAteC00IHB4LTYgdGV4dC1zbS83IHRleHQtZ3JheS02MDAgbGc6cHgtOCBkYXJrOnRleHQtZ3JheS00MDBcIj5cbiAgICAgICAgICAgICAge2Zvb3RlckxpbmtzLm1hcCgobGluaywgaW5kZXgpID0+IChcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJjb250ZW50c1wiIGtleT17YCR7bGluay5sYWJlbH0tJHtsaW5rLmhyZWZ9YH0+XG4gICAgICAgICAgICAgICAgICB7aW5kZXggPiAwID8gPHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCIgY2xhc3NOYW1lPVwic2l6ZS0wLjUgcm91bmRlZC1mdWxsIGJnLWdyYXktMzAwIGRhcms6YmctZ3JheS02MDBcIiAvPiA6IG51bGx9XG4gICAgICAgICAgICAgICAgICA8YSBocmVmPXtsaW5rLmhyZWZ9PntsaW5rLmxhYmVsfTwvYT5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgPC9uYXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZm9vdGVyPlxuICAgICAgICB7aW1hZ2VTcmMgPyAoXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJoaWRkZW4gbGc6cmVsYXRpdmUgbGc6Y29sLXN0YXJ0LTIgbGc6cm93LXN0YXJ0LTEgbGc6cm93LWVuZC00IGxnOmJsb2NrXCI+XG4gICAgICAgICAgICA8aW1nIGFsdD17aW1hZ2VBbHR9IGNsYXNzTmFtZT1cImFic29sdXRlIGluc2V0LTAgc2l6ZS1mdWxsIG9iamVjdC1jb3ZlclwiIHNyYz17aW1hZ2VTcmN9IC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICkgOiBudWxsfVxuICAgICAgPC9kaXY+XG4gICAgKTtcbiAgfVxuXG4gIGlmICh2YXJpYW50ID09PSAncG9wdWxhcicpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPGRpdiBjbGFzc05hbWU9e2NuKCdtaW4taC1zY3JlZW4gYmctd2hpdGUgZGFyazpiZy1ncmF5LTkwMCcsIGNsYXNzTmFtZSl9IGRhdGEtc2xvdD1cIm5vdC1mb3VuZFwiIGRhdGEtdmFyaWFudD17dmFyaWFudH0gey4uLnByb3BzfT5cbiAgICAgICAgPG1haW4gY2xhc3NOYW1lPVwibXgtYXV0byB3LWZ1bGwgbWF4LXctN3hsIHB4LTYgcHQtMTAgcGItMTYgc206cGItMjQgbGc6cHgtOFwiPlxuICAgICAgICAgIHtyZW5kZXJMb2dvKGxvZ28pfVxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXgtYXV0byBtdC0yMCBtYXgtdy0yeGwgdGV4dC1jZW50ZXIgc206bXQtMjRcIj5cbiAgICAgICAgICAgIDxOb3RGb3VuZENvbnRlbnRcbiAgICAgICAgICAgICAgY2VudGVyXG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uPXtkZXNjcmlwdGlvbn1cbiAgICAgICAgICAgICAgaG9tZUhyZWY9e2hvbWVIcmVmfVxuICAgICAgICAgICAgICBob21lTGFiZWw9e2hvbWVMYWJlbH1cbiAgICAgICAgICAgICAgc3RhdHVzQ29kZT17c3RhdHVzQ29kZX1cbiAgICAgICAgICAgICAgc3VwcG9ydEhyZWY9e3VuZGVmaW5lZH1cbiAgICAgICAgICAgICAgc3VwcG9ydExhYmVsPXtzdXBwb3J0TGFiZWx9XG4gICAgICAgICAgICAgIHRpdGxlPXt0aXRsZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPFBvcHVsYXJMaW5rcyBsaW5rcz17bGlua3N9IC8+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtdC0xMCBmbGV4IGp1c3RpZnktY2VudGVyXCI+XG4gICAgICAgICAgICA8YSBjbGFzc05hbWU9XCJpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTEgdGV4dC1zbS82IGZvbnQtc2VtaWJvbGQgdGV4dC1wcmltYXJ5IGRhcms6dGV4dC1wcmltYXJ5LWRhcmstMzAwXCIgaHJlZj17aG9tZUhyZWZ9PlxuICAgICAgICAgICAgICA8QXJyb3dMZWZ0IGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGNsYXNzTmFtZT1cInNpemUtNFwiIC8+XG4gICAgICAgICAgICAgIHtob21lTGFiZWx9XG4gICAgICAgICAgICA8L2E+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbWFpbj5cbiAgICAgICAgeyhjb3B5cmlnaHQgfHwgc29jaWFsTGlua3MubGVuZ3RoID4gMCkgPyAoXG4gICAgICAgICAgPGZvb3RlciBjbGFzc05hbWU9XCJib3JkZXItdCBib3JkZXItZ3JheS0xMDAgcHktNiBzbTpweS0xMCBkYXJrOmJvcmRlci13aGl0ZS8xMFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJteC1hdXRvIGZsZXggbWF4LXctN3hsIGZsZXgtY29sIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBnYXAtOCBweC02IHNtOmZsZXgtcm93IGxnOnB4LThcIj5cbiAgICAgICAgICAgICAge2NvcHlyaWdodCA/IDxwIGNsYXNzTmFtZT1cInRleHQtc20vNyB0ZXh0LWdyYXktNDAwIGRhcms6dGV4dC1ncmF5LTUwMFwiPntjb3B5cmlnaHR9PC9wPiA6IG51bGx9XG4gICAgICAgICAgICAgIHsoY29weXJpZ2h0ICYmIHNvY2lhbExpbmtzLmxlbmd0aCA+IDApID8gPGRpdiBjbGFzc05hbWU9XCJoaWRkZW4gc206YmxvY2sgc206aC03IHNtOnctcHggc206ZmxleC1ub25lIHNtOmJnLWdyYXktMjAwIGRhcms6c206YmctZ3JheS03MDBcIiAvPiA6IG51bGx9XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBnYXAteC00XCI+XG4gICAgICAgICAgICAgICAge3NvY2lhbExpbmtzLm1hcCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgICAgY29uc3QgSWNvbiA9IGl0ZW0uaWNvbjtcblxuICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3NOYW1lPVwidGV4dC1ncmF5LTQwMCBob3Zlcjp0ZXh0LWdyYXktNTAwIGRhcms6dGV4dC1ncmF5LTUwMCBkYXJrOmhvdmVyOnRleHQtZ3JheS00MDBcIiBocmVmPXtpdGVtLmhyZWZ9IGtleT17YCR7aXRlbS5sYWJlbH0tJHtpdGVtLmhyZWZ9YH0+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwic3Itb25seVwiPntpdGVtLmxhYmVsfTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8SWNvbiBhcmlhLWhpZGRlbj1cInRydWVcIiBjbGFzc05hbWU9XCJzaXplLTZcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZm9vdGVyPlxuICAgICAgICApIDogbnVsbH1cbiAgICAgIDwvZGl2PlxuICAgICk7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxtYWluXG4gICAgICBjbGFzc05hbWU9e2NuKCdncmlkIG1pbi1oLXNjcmVlbiBwbGFjZS1pdGVtcy1jZW50ZXIgYmctd2hpdGUgcHgtNiBweS0yNCBzbTpweS0zMiBsZzpweC04IGRhcms6YmctZ3JheS05MDAnLCBjbGFzc05hbWUpfVxuICAgICAgZGF0YS1zbG90PVwibm90LWZvdW5kXCJcbiAgICAgIGRhdGEtdmFyaWFudD17dmFyaWFudH1cbiAgICAgIHsuLi5wcm9wc31cbiAgICA+XG4gICAgICA8Tm90Rm91bmRDb250ZW50XG4gICAgICAgIGNlbnRlclxuICAgICAgICBkZXNjcmlwdGlvbj17ZGVzY3JpcHRpb259XG4gICAgICAgIGhvbWVIcmVmPXtob21lSHJlZn1cbiAgICAgICAgaG9tZUxhYmVsPXtob21lTGFiZWx9XG4gICAgICAgIHN0YXR1c0NvZGU9e3N0YXR1c0NvZGV9XG4gICAgICAgIHN1cHBvcnRIcmVmPXtzdXBwb3J0SHJlZn1cbiAgICAgICAgc3VwcG9ydExhYmVsPXtzdXBwb3J0TGFiZWx9XG4gICAgICAgIHRpdGxlPXt0aXRsZX1cbiAgICAgIC8+XG4gICAgPC9tYWluPlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgTm90Rm91bmQ7XG4iXSwibmFtZXMiOlsiY24iLCJBcnJvd0xlZnQiLCJBcnJvd1JpZ2h0IiwiQm9va21hcmsiLCJCb29rT3BlbiIsIkNoZXZyb25SaWdodCIsIkxpc3QiLCJSc3MiLCJkZWZhdWx0TGlua3MiLCJkZXNjcmlwdGlvbiIsImhyZWYiLCJpY29uIiwibGFiZWwiLCJkZWZhdWx0Rm9vdGVyTGlua3MiLCJyZW5kZXJMb2dvIiwibG9nbyIsImRpdiIsImNsYXNzTmFtZSIsIk5vdEZvdW5kQ29udGVudCIsImNlbnRlciIsImhvbWVIcmVmIiwiaG9tZUxhYmVsIiwic3RhdHVzQ29kZSIsInN1cHBvcnRIcmVmIiwic3VwcG9ydExhYmVsIiwidGl0bGUiLCJwIiwiaDEiLCJhIiwiYXJpYS1oaWRkZW4iLCJQb3B1bGFyTGlua3MiLCJsaW5rcyIsImgyIiwidWwiLCJyb2xlIiwibWFwIiwibGluayIsIkljb24iLCJsaSIsImgzIiwic3BhbiIsIk5vdEZvdW5kIiwiYmFja2dyb3VuZEltYWdlQWx0IiwiYmFja2dyb3VuZEltYWdlU3JjIiwiY29weXJpZ2h0IiwiZm9vdGVyTGlua3MiLCJpbWFnZUFsdCIsImltYWdlU3JjIiwic29jaWFsTGlua3MiLCJ2YXJpYW50IiwicHJvcHMiLCJkYXRhLXNsb3QiLCJkYXRhLXZhcmlhbnQiLCJpbWciLCJhbHQiLCJzcmMiLCJtYWluIiwiaGVhZGVyIiwidW5kZWZpbmVkIiwiZm9vdGVyIiwibmF2IiwiaW5kZXgiLCJsZW5ndGgiLCJpdGVtIl0sIm1hcHBpbmdzIjoiO0FBQUEsU0FBUUEsRUFBRSxRQUFPLGVBQWU7QUFDaEMsU0FBUUMsU0FBUyxFQUFFQyxVQUFVLEVBQUVDLFFBQVEsRUFBRUMsUUFBUSxFQUFFQyxZQUFZLEVBQUVDLElBQUksRUFBRUMsR0FBRyxRQUFPLGVBQWU7QUF1Q2hHLE1BQU1DLGVBQXdDO0lBQzVDO1FBQ0VDLGFBQWE7UUFDYkMsTUFBTTtRQUNOQyxNQUFNUDtRQUNOUSxPQUFPO0lBQ1Q7SUFDQTtRQUNFSCxhQUFhO1FBQ2JDLE1BQU07UUFDTkMsTUFBTUw7UUFDTk0sT0FBTztJQUNUO0lBQ0E7UUFDRUgsYUFBYTtRQUNiQyxNQUFNO1FBQ05DLE1BQU1SO1FBQ05TLE9BQU87SUFDVDtJQUNBO1FBQ0VILGFBQWE7UUFDYkMsTUFBTTtRQUNOQyxNQUFNSjtRQUNOSyxPQUFPO0lBQ1Q7Q0FDRDtBQUVELE1BQU1DLHFCQUE4QztJQUNsRDtRQUFDSCxNQUFNO1FBQVlFLE9BQU87SUFBaUI7SUFDM0M7UUFBQ0YsTUFBTTtRQUFXRSxPQUFPO0lBQVE7Q0FDbEM7QUFFRCxNQUFNRSxhQUFhLENBQUNDLE9BQXFCQSxxQkFDdkMsS0FBQ0M7UUFBSUMs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
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { BookOpen, Rss } from 'lucide-react';
|
|
3
|
+
import { interactWithCanvas } from '../../utils/storyInteractions.js';
|
|
4
|
+
import { NotFound } from './NotFound.js';
|
|
5
|
+
const links = [
|
|
6
|
+
{
|
|
7
|
+
description: 'Browse component usage and controls.',
|
|
8
|
+
href: '#docs',
|
|
9
|
+
icon: BookOpen,
|
|
10
|
+
label: 'Documentation'
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
description: 'Check the current package status.',
|
|
14
|
+
href: '#status',
|
|
15
|
+
label: 'Status'
|
|
16
|
+
}
|
|
17
|
+
];
|
|
18
|
+
const meta = {
|
|
19
|
+
argTypes: {
|
|
20
|
+
description: {
|
|
21
|
+
control: 'text'
|
|
22
|
+
},
|
|
23
|
+
homeHref: {
|
|
24
|
+
control: 'text'
|
|
25
|
+
},
|
|
26
|
+
homeLabel: {
|
|
27
|
+
control: 'text'
|
|
28
|
+
},
|
|
29
|
+
statusCode: {
|
|
30
|
+
control: 'text'
|
|
31
|
+
},
|
|
32
|
+
supportHref: {
|
|
33
|
+
control: 'text'
|
|
34
|
+
},
|
|
35
|
+
supportLabel: {
|
|
36
|
+
control: 'text'
|
|
37
|
+
},
|
|
38
|
+
title: {
|
|
39
|
+
control: 'text'
|
|
40
|
+
},
|
|
41
|
+
variant: {
|
|
42
|
+
control: 'select',
|
|
43
|
+
options: [
|
|
44
|
+
'simple',
|
|
45
|
+
'popular',
|
|
46
|
+
'split',
|
|
47
|
+
'background'
|
|
48
|
+
]
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
component: NotFound,
|
|
52
|
+
parameters: {
|
|
53
|
+
layout: 'fullscreen'
|
|
54
|
+
},
|
|
55
|
+
title: 'Components/NotFound'
|
|
56
|
+
};
|
|
57
|
+
export default meta;
|
|
58
|
+
export const Default = {
|
|
59
|
+
args: {
|
|
60
|
+
description: 'The page you requested could not be found.',
|
|
61
|
+
homeHref: '#home',
|
|
62
|
+
homeLabel: 'Go back home',
|
|
63
|
+
links,
|
|
64
|
+
socialLinks: [
|
|
65
|
+
{
|
|
66
|
+
href: '#updates',
|
|
67
|
+
icon: Rss,
|
|
68
|
+
label: 'Updates'
|
|
69
|
+
}
|
|
70
|
+
],
|
|
71
|
+
statusCode: '404',
|
|
72
|
+
supportHref: '#support',
|
|
73
|
+
supportLabel: 'Contact support',
|
|
74
|
+
title: 'Page not found',
|
|
75
|
+
variant: 'popular'
|
|
76
|
+
},
|
|
77
|
+
play: interactWithCanvas
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L2dvdGhhbWpzL3NyYy9jb21wb25lbnRzL05vdEZvdW5kL05vdEZvdW5kLnN0b3JpZXMudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQge0Jvb2tPcGVuLCBSc3N9IGZyb20gJ2x1Y2lkZS1yZWFjdCc7XG5pbXBvcnQge2ludGVyYWN0V2l0aENhbnZhc30gZnJvbSAnLi4vLi4vdXRpbHMvc3RvcnlJbnRlcmFjdGlvbnMuanMnO1xuaW1wb3J0IHtOb3RGb3VuZH0gZnJvbSAnLi9Ob3RGb3VuZC5qcyc7XG5cbmltcG9ydCB0eXBlIHtNZXRhLCBTdG9yeU9ian0gZnJvbSAnQG5sYWJzL2xleC9zdG9yeWJvb2snO1xuXG5jb25zdCBsaW5rcyA9IFtcbiAge2Rlc2NyaXB0aW9uOiAnQnJvd3NlIGNvbXBvbmVudCB1c2FnZSBhbmQgY29udHJvbHMuJywgaHJlZjogJyNkb2NzJywgaWNvbjogQm9va09wZW4sIGxhYmVsOiAnRG9jdW1lbnRhdGlvbid9LFxuICB7ZGVzY3JpcHRpb246ICdDaGVjayB0aGUgY3VycmVudCBwYWNrYWdlIHN0YXR1cy4nLCBocmVmOiAnI3N0YXR1cycsIGxhYmVsOiAnU3RhdHVzJ31cbl07XG5cbmNvbnN0IG1ldGE6IE1ldGE8dHlwZW9mIE5vdEZvdW5kPiA9IHtcbiAgYXJnVHlwZXM6IHtcbiAgICBkZXNjcmlwdGlvbjoge1xuICAgICAgY29udHJvbDogJ3RleHQnXG4gICAgfSxcbiAgICBob21lSHJlZjoge1xuICAgICAgY29udHJvbDogJ3RleHQnXG4gICAgfSxcbiAgICBob21lTGFiZWw6IHtcbiAgICAgIGNvbnRyb2w6ICd0ZXh0J1xuICAgIH0sXG4gICAgc3RhdHVzQ29kZToge1xuICAgICAgY29udHJvbDogJ3RleHQnXG4gICAgfSxcbiAgICBzdXBwb3J0SHJlZjoge1xuICAgICAgY29udHJvbDogJ3RleHQnXG4gICAgfSxcbiAgICBzdXBwb3J0TGFiZWw6IHtcbiAgICAgIGNvbnRyb2w6ICd0ZXh0J1xuICAgIH0sXG4gICAgdGl0bGU6IHtcbiAgICAgIGNvbnRyb2w6ICd0ZXh0J1xuICAgIH0sXG4gICAgdmFyaWFudDoge1xuICAgICAgY29udHJvbDogJ3NlbGVjdCcsXG4gICAgICBvcHRpb25zOiBbJ3NpbXBsZScsICdwb3B1bGFyJywgJ3NwbGl0JywgJ2JhY2tncm91bmQnXVxuICAgIH1cbiAgfSxcbiAgY29tcG9uZW50OiBOb3RGb3VuZCxcbiAgcGFyYW1ldGVyczoge1xuICAgIGxheW91dDogJ2Z1bGxzY3JlZW4nXG4gIH0sXG4gIHRpdGxlOiAnQ29tcG9uZW50cy9Ob3RGb3VuZCdcbn07XG5cbmV4cG9ydCBkZWZhdWx0IG1ldGE7XG5cbnR5cGUgU3RvcnkgPSBTdG9yeU9iajx0eXBlb2YgTm90Rm91bmQ+O1xuXG5leHBvcnQgY29uc3QgRGVmYXVsdDogU3RvcnkgPSB7XG4gIGFyZ3M6IHtcbiAgICBkZXNjcmlwdGlvbjogJ1RoZSBwYWdlIHlvdSByZXF1ZXN0ZWQgY291bGQgbm90IGJlIGZvdW5kLicsXG4gICAgaG9tZUhyZWY6ICcjaG9tZScsXG4gICAgaG9tZUxhYmVsOiAnR28gYmFjayBob21lJyxcbiAgICBsaW5rcyxcbiAgICBzb2NpYWxMaW5rczogW3tocmVmOiAnI3VwZGF0ZXMnLCBpY29uOiBSc3MsIGxhYmVsOiAnVXBkYXRlcyd9XSxcbiAgICBzdGF0dXNDb2RlOiAnNDA0JyxcbiAgICBzdXBwb3J0SHJlZjogJyNzdXBwb3J0JyxcbiAgICBzdXBwb3J0TGFiZWw6ICdDb250YWN0IHN1cHBvcnQnLFxuICAgIHRpdGxlOiAnUGFnZSBub3QgZm91bmQnLFxuICAgIHZhcmlhbnQ6ICdwb3B1bGFyJ1xuICB9LFxuICBwbGF5OiBpbnRlcmFjdFdpdGhDYW52YXNcbn07XG4iXSwibmFtZXMiOlsiUmVhY3QiLCJCb29rT3BlbiIsIlJzcyIsImludGVyYWN0V2l0aENhbnZhcyIsIk5vdEZvdW5kIiwibGlua3MiLCJkZXNjcmlwdGlvbiIsImhyZWYiLCJpY29uIiwibGFiZWwiLCJtZXRhIiwiYXJnVHlwZXMiLCJjb250cm9sIiwiaG9tZUhyZWYiLCJob21lTGFiZWwiLCJzdGF0dXNDb2RlIiwic3VwcG9ydEhyZWYiLCJzdXBwb3J0TGFiZWwiLCJ0aXRsZSIsInZhcmlhbnQiLCJvcHRpb25zIiwiY29tcG9uZW50IiwicGFyYW1ldGVycyIsImxheW91dCIsIkRlZmF1bHQiLCJhcmdzIiwic29jaWFsTGlua3MiLCJwbGF5Il0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPQSxXQUFXLFFBQVE7QUFDMUIsU0FBUUMsUUFBUSxFQUFFQyxHQUFHLFFBQU8sZUFBZTtBQUMzQyxTQUFRQyxrQkFBa0IsUUFBTyxtQ0FBbUM7QUFDcEUsU0FBUUMsUUFBUSxRQUFPLGdCQUFnQjtBQUl2QyxNQUFNQyxRQUFRO0lBQ1o7UUFBQ0MsYUFBYTtRQUF3Q0MsTUFBTTtRQUFTQyxNQUFNUDtRQUFVUSxPQUFPO0lBQWU7SUFDM0c7UUFBQ0gsYUFBYTtRQUFxQ0MsTUFBTTtRQUFXRSxPQUFPO0lBQVE7Q0FDcEY7QUFFRCxNQUFNQyxPQUE4QjtJQUNsQ0MsVUFBVTtRQUNSTCxhQUFhO1lBQ1hNLFNBQVM7UUFDWDtRQUNBQyxVQUFVO1lBQ1JELFNBQVM7UUFDWDtRQUNBRSxXQUFXO1lBQ1RGLFNBQVM7UUFDWDtRQUNBRyxZQUFZO1lBQ1ZILFNBQVM7UUFDWDtRQUNBSSxhQUFhO1lBQ1hKLFNBQVM7UUFDWDtRQUNBSyxjQUFjO1lBQ1pMLFNBQVM7UUFDWDtRQUNBTSxPQUFPO1lBQ0xOLFNBQVM7UUFDWDtRQUNBTyxTQUFTO1lBQ1BQLFNBQVM7WUFDVFEsU0FBUztnQkFBQztnQkFBVTtnQkFBVztnQkFBUzthQUFhO1FBQ3ZEO0lBQ0Y7SUFDQUMsV0FBV2pCO0lBQ1hrQixZQUFZO1FBQ1ZDLFFBQVE7SUFDVjtJQUNBTCxPQUFPO0FBQ1Q7QUFFQSxlQUFlUixLQUFLO0FBSXBCLE9BQU8sTUFBTWMsVUFBaUI7SUFDNUJDLE1BQU07UUFDSm5CLGFBQWE7UUFDYk8sVUFBVTtRQUNWQyxXQUFXO1FBQ1hUO1FBQ0FxQixhQUFhO1lBQUM7Z0JBQUNuQixNQUFNO2dCQUFZQyxNQUFNTjtnQkFBS08sT0FBTztZQUFTO1NBQUU7UUFDOURNLFlBQVk7UUFDWkMsYUFBYTtRQUNiQyxjQUFjO1FBQ2RDLE9BQU87UUFDUEMsU0FBUztJQUNYO0lBQ0FRLE1BQU14QjtBQUNSLEVBQUUifQ==
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { ReactElement } from 'react';
|
|
2
|
+
export interface GothamNotifyAction {
|
|
3
|
+
readonly icon?: string;
|
|
4
|
+
readonly label?: string;
|
|
5
|
+
readonly onClick: (key: string) => void;
|
|
6
|
+
}
|
|
7
|
+
export type GothamSeverity = 'error' | 'info' | 'success' | 'warning';
|
|
8
|
+
export interface GothamNotifyParams {
|
|
9
|
+
readonly actions?: GothamNotifyAction[];
|
|
10
|
+
readonly anchorOrigin?: {
|
|
11
|
+
vertical: 'top' | 'bottom';
|
|
12
|
+
horizontal: 'left' | 'center' | 'right';
|
|
13
|
+
};
|
|
14
|
+
readonly autoHideDuration?: number;
|
|
15
|
+
readonly message?: ReactElement | string;
|
|
16
|
+
readonly severity?: GothamSeverity;
|
|
17
|
+
}
|
|
18
|
+
export declare const Notify: () => import("react").JSX.Element;
|