@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,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2018-Present, Nitrogen Labs, Inc.
|
|
3
|
+
* Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
|
|
4
|
+
*/ /**
|
|
5
|
+
* Create a Timer
|
|
6
|
+
* @param {Number} delay
|
|
7
|
+
* @param {Function} callback
|
|
8
|
+
* @constructor
|
|
9
|
+
*/ export class GothamTimer {
|
|
10
|
+
timerId;
|
|
11
|
+
start = 0;
|
|
12
|
+
remaining = 0;
|
|
13
|
+
delay = 0;
|
|
14
|
+
callback;
|
|
15
|
+
constructor(delay, callback){
|
|
16
|
+
this.callback = callback;
|
|
17
|
+
this.delay = delay;
|
|
18
|
+
this.remaining = delay;
|
|
19
|
+
// Methods
|
|
20
|
+
this.getTimeRemaining = this.getTimeRemaining.bind(this);
|
|
21
|
+
this.pause = this.pause.bind(this);
|
|
22
|
+
this.resume = this.resume.bind(this);
|
|
23
|
+
}
|
|
24
|
+
pause() {
|
|
25
|
+
clearTimeout(this.timerId);
|
|
26
|
+
this.remaining -= +new Date() - this.start;
|
|
27
|
+
}
|
|
28
|
+
resume() {
|
|
29
|
+
this.start = +new Date();
|
|
30
|
+
clearTimeout(this.timerId);
|
|
31
|
+
this.timerId = setTimeout(this.callback, this.remaining);
|
|
32
|
+
}
|
|
33
|
+
getTimeRemaining() {
|
|
34
|
+
return this.remaining;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L2dvdGhhbWpzL3NyYy91dGlscy90aW1lci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxOC1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xuLyoqXG4gKiBDcmVhdGUgYSBUaW1lclxuICogQHBhcmFtIHtOdW1iZXJ9IGRlbGF5XG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBjYWxsYmFja1xuICogQGNvbnN0cnVjdG9yXG4gKi9cbmV4cG9ydCBjbGFzcyBHb3RoYW1UaW1lciB7XG4gIHRpbWVySWQ6IHVua25vd247XG4gIHN0YXJ0OiBudW1iZXIgPSAwO1xuICByZW1haW5pbmc6IG51bWJlciA9IDA7XG4gIGRlbGF5OiBudW1iZXIgPSAwO1xuICBjYWxsYmFjazogdW5rbm93bjtcblxuICBjb25zdHJ1Y3RvcihkZWxheTogbnVtYmVyLCBjYWxsYmFjazogdW5rbm93bikge1xuICAgIHRoaXMuY2FsbGJhY2sgPSBjYWxsYmFjaztcbiAgICB0aGlzLmRlbGF5ID0gZGVsYXk7XG4gICAgdGhpcy5yZW1haW5pbmcgPSBkZWxheTtcblxuICAgIC8vIE1ldGhvZHNcbiAgICB0aGlzLmdldFRpbWVSZW1haW5pbmcgPSB0aGlzLmdldFRpbWVSZW1haW5pbmcuYmluZCh0aGlzKTtcbiAgICB0aGlzLnBhdXNlID0gdGhpcy5wYXVzZS5iaW5kKHRoaXMpO1xuICAgIHRoaXMucmVzdW1lID0gdGhpcy5yZXN1bWUuYmluZCh0aGlzKTtcbiAgfVxuXG4gIHBhdXNlKCkge1xuICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVySWQgYXMgbnVtYmVyKTtcbiAgICB0aGlzLnJlbWFpbmluZyAtPSAoKyhuZXcgRGF0ZSgpKSAtIHRoaXMuc3RhcnQpO1xuICB9XG5cbiAgcmVzdW1lKCkge1xuICAgIHRoaXMuc3RhcnQgPSArKG5ldyBEYXRlKCkpO1xuICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVySWQgYXMgbnVtYmVyKTtcbiAgICB0aGlzLnRpbWVySWQgPSBzZXRUaW1lb3V0KHRoaXMuY2FsbGJhY2sgYXMgKCkgPT4gdm9pZCwgdGhpcy5yZW1haW5pbmcpO1xuICB9XG5cbiAgZ2V0VGltZVJlbWFpbmluZygpIHtcbiAgICByZXR1cm4gdGhpcy5yZW1haW5pbmc7XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJHb3RoYW1UaW1lciIsInRpbWVySWQiLCJzdGFydCIsInJlbWFpbmluZyIsImRlbGF5IiwiY2FsbGJhY2siLCJnZXRUaW1lUmVtYWluaW5nIiwiYmluZCIsInBhdXNlIiwicmVzdW1lIiwiY2xlYXJUaW1lb3V0IiwiRGF0ZSIsInNldFRpbWVvdXQiXSwibWFwcGluZ3MiOiJBQUFBOzs7Q0FHQyxHQUNEOzs7OztDQUtDLEdBQ0QsT0FBTyxNQUFNQTtJQUNYQyxRQUFpQjtJQUNqQkMsUUFBZ0IsRUFBRTtJQUNsQkMsWUFBb0IsRUFBRTtJQUN0QkMsUUFBZ0IsRUFBRTtJQUNsQkMsU0FBa0I7SUFFbEIsWUFBWUQsS0FBYSxFQUFFQyxRQUFpQixDQUFFO1FBQzVDLElBQUksQ0FBQ0EsUUFBUSxHQUFHQTtRQUNoQixJQUFJLENBQUNELEtBQUssR0FBR0E7UUFDYixJQUFJLENBQUNELFNBQVMsR0FBR0M7UUFFakIsVUFBVTtRQUNWLElBQUksQ0FBQ0UsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDQSxnQkFBZ0IsQ0FBQ0MsSUFBSSxDQUFDLElBQUk7UUFDdkQsSUFBSSxDQUFDQyxLQUFLLEdBQUcsSUFBSSxDQUFDQSxLQUFLLENBQUNELElBQUksQ0FBQyxJQUFJO1FBQ2pDLElBQUksQ0FBQ0UsTUFBTSxHQUFHLElBQUksQ0FBQ0EsTUFBTSxDQUFDRixJQUFJLENBQUMsSUFBSTtJQUNyQztJQUVBQyxRQUFRO1FBQ05FLGFBQWEsSUFBSSxDQUFDVCxPQUFPO1FBQ3pCLElBQUksQ0FBQ0UsU0FBUyxJQUFLLENBQUUsSUFBSVEsU0FBVSxJQUFJLENBQUNULEtBQUs7SUFDL0M7SUFFQU8sU0FBUztRQUNQLElBQUksQ0FBQ1AsS0FBSyxHQUFHLENBQUUsSUFBSVM7UUFDbkJELGFBQWEsSUFBSSxDQUFDVCxPQUFPO1FBQ3pCLElBQUksQ0FBQ0EsT0FBTyxHQUFHVyxXQUFXLElBQUksQ0FBQ1AsUUFBUSxFQUFnQixJQUFJLENBQUNGLFNBQVM7SUFDdkU7SUFFQUcsbUJBQW1CO1FBQ2pCLE9BQU8sSUFBSSxDQUFDSCxTQUFTO0lBQ3ZCO0FBQ0YifQ==
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2018-Present, Nitrogen Labs, Inc.
|
|
3
|
+
* Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
|
|
4
|
+
*/ import { throttle } from '@nlabs/utils';
|
|
5
|
+
import { useEffect, useMemo, useState } from 'react';
|
|
6
|
+
const getCurrentBreakpoint = (setBreakpoint)=>()=>{
|
|
7
|
+
const breakpoints = {
|
|
8
|
+
values: {
|
|
9
|
+
lg: 1200,
|
|
10
|
+
md: 900,
|
|
11
|
+
sm: 600,
|
|
12
|
+
xl: 1536
|
|
13
|
+
}
|
|
14
|
+
};
|
|
15
|
+
const { values: { lg, md, sm, xl } } = breakpoints;
|
|
16
|
+
const { innerWidth } = window;
|
|
17
|
+
if (innerWidth < sm) {
|
|
18
|
+
setBreakpoint(0);
|
|
19
|
+
} else if (innerWidth < md) {
|
|
20
|
+
setBreakpoint(1);
|
|
21
|
+
} else if (innerWidth < lg) {
|
|
22
|
+
setBreakpoint(2);
|
|
23
|
+
} else if (innerWidth < xl) {
|
|
24
|
+
setBreakpoint(3);
|
|
25
|
+
} else {
|
|
26
|
+
setBreakpoint(4);
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
const breakpointValues = [
|
|
30
|
+
'xs',
|
|
31
|
+
'sm',
|
|
32
|
+
'md',
|
|
33
|
+
'lg',
|
|
34
|
+
'xl'
|
|
35
|
+
];
|
|
36
|
+
export const useBreakpoint = ()=>{
|
|
37
|
+
const [breakpoint, setBreakpoint] = useState(0);
|
|
38
|
+
useEffect(()=>{
|
|
39
|
+
const onResizeBreakpoint = getCurrentBreakpoint(setBreakpoint);
|
|
40
|
+
const onResize = throttle(onResizeBreakpoint, 100);
|
|
41
|
+
// Inital sizing
|
|
42
|
+
onResizeBreakpoint();
|
|
43
|
+
window.addEventListener('resize', onResize);
|
|
44
|
+
return ()=>window.removeEventListener('resize', onResize);
|
|
45
|
+
}, []);
|
|
46
|
+
return useMemo(()=>({
|
|
47
|
+
at: (size)=>size === breakpointValues[breakpoint],
|
|
48
|
+
down: (size)=>breakpointValues.indexOf(size) >= breakpoint,
|
|
49
|
+
up: (size)=>breakpointValues.indexOf(size) <= breakpoint,
|
|
50
|
+
value: ()=>breakpointValues[breakpoint]
|
|
51
|
+
}), [
|
|
52
|
+
breakpoint
|
|
53
|
+
]);
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L2dvdGhhbWpzL3NyYy91dGlscy91c2VCcmVha3BvaW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQge3Rocm90dGxlfSBmcm9tICdAbmxhYnMvdXRpbHMnO1xuaW1wb3J0IHt1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVN0YXRlfSBmcm9tICdyZWFjdCc7XG5cbmNvbnN0IGdldEN1cnJlbnRCcmVha3BvaW50ID0gKHNldEJyZWFrcG9pbnQpID0+ICgpOiB2b2lkID0+IHtcbiAgY29uc3QgYnJlYWtwb2ludHMgPSB7XG4gICAgdmFsdWVzOiB7XG4gICAgICBsZzogMTIwMCxcbiAgICAgIG1kOiA5MDAsXG4gICAgICBzbTogNjAwLFxuICAgICAgeGw6IDE1MzZcbiAgICB9XG4gIH07XG4gIGNvbnN0IHt2YWx1ZXM6IHtsZywgbWQsIHNtLCB4bH19ID0gYnJlYWtwb2ludHM7XG4gIGNvbnN0IHtpbm5lcldpZHRofSA9IHdpbmRvdztcblxuICBpZihpbm5lcldpZHRoIDwgc20pIHtcbiAgICBzZXRCcmVha3BvaW50KDApO1xuICB9IGVsc2UgaWYoaW5uZXJXaWR0aCA8IG1kKSB7XG4gICAgc2V0QnJlYWtwb2ludCgxKTtcbiAgfSBlbHNlIGlmKGlubmVyV2lkdGggPCBsZykge1xuICAgIHNldEJyZWFrcG9pbnQoMik7XG4gIH0gZWxzZSBpZihpbm5lcldpZHRoIDwgeGwpIHtcbiAgICBzZXRCcmVha3BvaW50KDMpO1xuICB9IGVsc2Uge1xuICAgIHNldEJyZWFrcG9pbnQoNCk7XG4gIH1cbn07XG5cbmNvbnN0IGJyZWFrcG9pbnRWYWx1ZXMgPSBbJ3hzJywgJ3NtJywgJ21kJywgJ2xnJywgJ3hsJ107XG5cbmV4cG9ydCBjb25zdCB1c2VCcmVha3BvaW50ID0gKCkgPT4ge1xuICBjb25zdCBbYnJlYWtwb2ludCwgc2V0QnJlYWtwb2ludF0gPSB1c2VTdGF0ZSgwKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IG9uUmVzaXplQnJlYWtwb2ludCA9IGdldEN1cnJlbnRCcmVha3BvaW50KHNldEJyZWFrcG9pbnQpO1xuICAgIGNvbnN0IG9uUmVzaXplID0gdGhyb3R0bGUob25SZXNpemVCcmVha3BvaW50LCAxMDApO1xuXG4gICAgLy8gSW5pdGFsIHNpemluZ1xuICAgIG9uUmVzaXplQnJlYWtwb2ludCgpO1xuXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIG9uUmVzaXplKTtcblxuICAgIHJldHVybiAoKSA9PiB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgb25SZXNpemUpO1xuICB9LCBbXSk7XG5cbiAgcmV0dXJuIHVzZU1lbW8oKCkgPT4gKHtcbiAgICBhdDogKHNpemU6IHN0cmluZyk6IGJvb2xlYW4gPT4gc2l6ZSA9PT0gYnJlYWtwb2ludFZhbHVlc1ticmVha3BvaW50XSxcbiAgICBkb3duOiAoc2l6ZTogc3RyaW5nKTogYm9vbGVhbiA9PiBicmVha3BvaW50VmFsdWVzLmluZGV4T2Yoc2l6ZSkgPj0gYnJlYWtwb2ludCxcbiAgICB1cDogKHNpemU6IHN0cmluZyk6IGJvb2xlYW4gPT4gYnJlYWtwb2ludFZhbHVlcy5pbmRleE9mKHNpemUpIDw9IGJyZWFrcG9pbnQsXG4gICAgdmFsdWU6ICgpOiBzdHJpbmcgPT4gYnJlYWtwb2ludFZhbHVlc1ticmVha3BvaW50XVxuICB9KSwgW2JyZWFrcG9pbnRdKTtcbn07XG4iXSwibmFtZXMiOlsidGhyb3R0bGUiLCJ1c2VFZmZlY3QiLCJ1c2VNZW1vIiwidXNlU3RhdGUiLCJnZXRDdXJyZW50QnJlYWtwb2ludCIsInNldEJyZWFrcG9pbnQiLCJicmVha3BvaW50cyIsInZhbHVlcyIsImxnIiwibWQiLCJzbSIsInhsIiwiaW5uZXJXaWR0aCIsIndpbmRvdyIsImJyZWFrcG9pbnRWYWx1ZXMiLCJ1c2VCcmVha3BvaW50IiwiYnJlYWtwb2ludCIsIm9uUmVzaXplQnJlYWtwb2ludCIsIm9uUmVzaXplIiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJhdCIsInNpemUiLCJkb3duIiwiaW5kZXhPZiIsInVwIiwidmFsdWUiXSwibWFwcGluZ3MiOiJBQUFBOzs7Q0FHQyxHQUNELFNBQVFBLFFBQVEsUUFBTyxlQUFlO0FBQ3RDLFNBQVFDLFNBQVMsRUFBRUMsT0FBTyxFQUFFQyxRQUFRLFFBQU8sUUFBUTtBQUVuRCxNQUFNQyx1QkFBdUIsQ0FBQ0MsZ0JBQWtCO1FBQzlDLE1BQU1DLGNBQWM7WUFDbEJDLFFBQVE7Z0JBQ05DLElBQUk7Z0JBQ0pDLElBQUk7Z0JBQ0pDLElBQUk7Z0JBQ0pDLElBQUk7WUFDTjtRQUNGO1FBQ0EsTUFBTSxFQUFDSixRQUFRLEVBQUNDLEVBQUUsRUFBRUMsRUFBRSxFQUFFQyxFQUFFLEVBQUVDLEVBQUUsRUFBQyxFQUFDLEdBQUdMO1FBQ25DLE1BQU0sRUFBQ00sVUFBVSxFQUFDLEdBQUdDO1FBRXJCLElBQUdELGFBQWFGLElBQUk7WUFDbEJMLGNBQWM7UUFDaEIsT0FBTyxJQUFHTyxhQUFhSCxJQUFJO1lBQ3pCSixjQUFjO1FBQ2hCLE9BQU8sSUFBR08sYUFBYUosSUFBSTtZQUN6QkgsY0FBYztRQUNoQixPQUFPLElBQUdPLGFBQWFELElBQUk7WUFDekJOLGNBQWM7UUFDaEIsT0FBTztZQUNMQSxjQUFjO1FBQ2hCO0lBQ0Y7QUFFQSxNQUFNUyxtQkFBbUI7SUFBQztJQUFNO0lBQU07SUFBTTtJQUFNO0NBQUs7QUFFdkQsT0FBTyxNQUFNQyxnQkFBZ0I7SUFDM0IsTUFBTSxDQUFDQyxZQUFZWCxjQUFjLEdBQUdGLFNBQVM7SUFFN0NGLFVBQVU7UUFDUixNQUFNZ0IscUJBQXFCYixxQkFBcUJDO1FBQ2hELE1BQU1hLFdBQVdsQixTQUFTaUIsb0JBQW9CO1FBRTlDLGdCQUFnQjtRQUNoQkE7UUFFQUosT0FBT00sZ0JBQWdCLENBQUMsVUFBVUQ7UUFFbEMsT0FBTyxJQUFNTCxPQUFPTyxtQkFBbUIsQ0FBQyxVQUFVRjtJQUNwRCxHQUFHLEVBQUU7SUFFTCxPQUFPaEIsUUFBUSxJQUFPLENBQUE7WUFDcEJtQixJQUFJLENBQUNDLE9BQTBCQSxTQUFTUixnQkFBZ0IsQ0FBQ0UsV0FBVztZQUNwRU8sTUFBTSxDQUFDRCxPQUEwQlIsaUJBQWlCVSxPQUFPLENBQUNGLFNBQVNOO1lBQ25FUyxJQUFJLENBQUNILE9BQTBCUixpQkFBaUJVLE9BQU8sQ0FBQ0YsU0FBU047WUFDakVVLE9BQU8sSUFBY1osZ0JBQWdCLENBQUNFLFdBQVc7UUFDbkQsQ0FBQSxHQUFJO1FBQUNBO0tBQVc7QUFDbEIsRUFBRSJ9
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { AwsRum } from './awsRum.js';
|
|
2
|
+
export type ViewPerformanceOutcome = 'cancelled' | 'failure' | 'success' | 'timeout';
|
|
3
|
+
export type ViewPerformanceStatus = 'failure' | 'pending' | 'success';
|
|
4
|
+
export interface ViewPerformanceMeasurement {
|
|
5
|
+
readonly durationMs: number;
|
|
6
|
+
readonly outcome: ViewPerformanceOutcome;
|
|
7
|
+
readonly route?: string;
|
|
8
|
+
readonly title?: string;
|
|
9
|
+
readonly viewId: string;
|
|
10
|
+
}
|
|
11
|
+
export interface StartViewOptions {
|
|
12
|
+
readonly now?: () => number;
|
|
13
|
+
readonly onComplete: (measurement: ViewPerformanceMeasurement) => void;
|
|
14
|
+
readonly route?: string;
|
|
15
|
+
readonly timeoutMs?: number;
|
|
16
|
+
readonly title?: string;
|
|
17
|
+
readonly viewId: string;
|
|
18
|
+
}
|
|
19
|
+
export interface ViewPerformanceHandle {
|
|
20
|
+
readonly cancel: () => void;
|
|
21
|
+
readonly fail: () => void;
|
|
22
|
+
readonly succeed: () => void;
|
|
23
|
+
readonly timeout: () => void;
|
|
24
|
+
}
|
|
25
|
+
export interface UseViewPerformanceOptions {
|
|
26
|
+
readonly route?: string;
|
|
27
|
+
readonly status: ViewPerformanceStatus;
|
|
28
|
+
readonly timeoutMs?: number;
|
|
29
|
+
readonly title?: string;
|
|
30
|
+
readonly viewId: string;
|
|
31
|
+
}
|
|
32
|
+
export declare const startView: ({ now, onComplete, route, timeoutMs, title, viewId }: StartViewOptions) => ViewPerformanceHandle;
|
|
33
|
+
export declare const reportViewPerformance: (awsRum: AwsRum | undefined, measurement: ViewPerformanceMeasurement) => void;
|
|
34
|
+
export declare const useViewPerformance: ({ route, status, timeoutMs, title, viewId }: UseViewPerformanceOptions) => void;
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2026-Present, Nitrogen Labs, Inc.
|
|
3
|
+
* Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
|
|
4
|
+
*/ import { useContext, useEffect, useRef } from 'react';
|
|
5
|
+
import { GothamContext } from './GothamContext.js';
|
|
6
|
+
const DEFAULT_TIMEOUT_MS = 30_000;
|
|
7
|
+
const normalizeDuration = (duration)=>Math.max(0, Math.round(duration));
|
|
8
|
+
export const startView = ({ now = ()=>globalThis.performance?.now?.() ?? Date.now(), onComplete, route, timeoutMs = DEFAULT_TIMEOUT_MS, title, viewId })=>{
|
|
9
|
+
const startedAt = now();
|
|
10
|
+
let complete = false;
|
|
11
|
+
let timer;
|
|
12
|
+
const finish = (outcome)=>{
|
|
13
|
+
if (complete) {
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
complete = true;
|
|
17
|
+
if (timer) {
|
|
18
|
+
clearTimeout(timer);
|
|
19
|
+
timer = undefined;
|
|
20
|
+
}
|
|
21
|
+
onComplete({
|
|
22
|
+
durationMs: normalizeDuration(now() - startedAt),
|
|
23
|
+
outcome,
|
|
24
|
+
...route ? {
|
|
25
|
+
route
|
|
26
|
+
} : {},
|
|
27
|
+
...title ? {
|
|
28
|
+
title
|
|
29
|
+
} : {},
|
|
30
|
+
viewId
|
|
31
|
+
});
|
|
32
|
+
};
|
|
33
|
+
if (timeoutMs > 0) {
|
|
34
|
+
timer = setTimeout(()=>finish('timeout'), timeoutMs);
|
|
35
|
+
}
|
|
36
|
+
return {
|
|
37
|
+
cancel: ()=>finish('cancelled'),
|
|
38
|
+
fail: ()=>finish('failure'),
|
|
39
|
+
succeed: ()=>finish('success'),
|
|
40
|
+
timeout: ()=>finish('timeout')
|
|
41
|
+
};
|
|
42
|
+
};
|
|
43
|
+
export const reportViewPerformance = (awsRum, measurement)=>{
|
|
44
|
+
awsRum?.track({
|
|
45
|
+
name: 'view_performance',
|
|
46
|
+
...measurement.route ? {
|
|
47
|
+
path: measurement.route
|
|
48
|
+
} : {},
|
|
49
|
+
properties: {
|
|
50
|
+
durationMs: measurement.durationMs,
|
|
51
|
+
outcome: measurement.outcome,
|
|
52
|
+
...measurement.title ? {
|
|
53
|
+
viewTitle: measurement.title
|
|
54
|
+
} : {},
|
|
55
|
+
viewId: measurement.viewId
|
|
56
|
+
},
|
|
57
|
+
type: 'view_performance'
|
|
58
|
+
});
|
|
59
|
+
};
|
|
60
|
+
export const useViewPerformance = ({ route, status, timeoutMs, title, viewId })=>{
|
|
61
|
+
const { awsRum } = useContext(GothamContext);
|
|
62
|
+
const handleRef = useRef(undefined);
|
|
63
|
+
const statusRef = useRef(status);
|
|
64
|
+
statusRef.current = status;
|
|
65
|
+
useEffect(()=>{
|
|
66
|
+
const handle = startView({
|
|
67
|
+
onComplete: (measurement)=>reportViewPerformance(awsRum, measurement),
|
|
68
|
+
route,
|
|
69
|
+
timeoutMs,
|
|
70
|
+
title,
|
|
71
|
+
viewId
|
|
72
|
+
});
|
|
73
|
+
handleRef.current = handle;
|
|
74
|
+
if (statusRef.current === 'failure') {
|
|
75
|
+
handle.fail();
|
|
76
|
+
} else if (statusRef.current === 'success') {
|
|
77
|
+
handle.succeed();
|
|
78
|
+
}
|
|
79
|
+
return ()=>{
|
|
80
|
+
handle.cancel();
|
|
81
|
+
if (handleRef.current === handle) {
|
|
82
|
+
handleRef.current = undefined;
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
}, [
|
|
86
|
+
awsRum,
|
|
87
|
+
route,
|
|
88
|
+
timeoutMs,
|
|
89
|
+
title,
|
|
90
|
+
viewId
|
|
91
|
+
]);
|
|
92
|
+
useEffect(()=>{
|
|
93
|
+
if (status === 'failure') {
|
|
94
|
+
handleRef.current?.fail();
|
|
95
|
+
} else if (status === 'success') {
|
|
96
|
+
handleRef.current?.succeed();
|
|
97
|
+
}
|
|
98
|
+
}, [
|
|
99
|
+
status
|
|
100
|
+
]);
|
|
101
|
+
};
|
|
102
|
+
|
|
103
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L2dvdGhhbWpzL3NyYy91dGlscy92aWV3UGVyZm9ybWFuY2UudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjYtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7dXNlQ29udGV4dCwgdXNlRWZmZWN0LCB1c2VSZWZ9IGZyb20gJ3JlYWN0JztcblxuaW1wb3J0IHtHb3RoYW1Db250ZXh0fSBmcm9tICcuL0dvdGhhbUNvbnRleHQuanMnO1xuXG5pbXBvcnQgdHlwZSB7QXdzUnVtfSBmcm9tICcuL2F3c1J1bS5qcyc7XG5cbmV4cG9ydCB0eXBlIFZpZXdQZXJmb3JtYW5jZU91dGNvbWUgPSAnY2FuY2VsbGVkJyB8ICdmYWlsdXJlJyB8ICdzdWNjZXNzJyB8ICd0aW1lb3V0JztcbmV4cG9ydCB0eXBlIFZpZXdQZXJmb3JtYW5jZVN0YXR1cyA9ICdmYWlsdXJlJyB8ICdwZW5kaW5nJyB8ICdzdWNjZXNzJztcblxuZXhwb3J0IGludGVyZmFjZSBWaWV3UGVyZm9ybWFuY2VNZWFzdXJlbWVudCB7XG4gIHJlYWRvbmx5IGR1cmF0aW9uTXM6IG51bWJlcjtcbiAgcmVhZG9ubHkgb3V0Y29tZTogVmlld1BlcmZvcm1hbmNlT3V0Y29tZTtcbiAgcmVhZG9ubHkgcm91dGU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHRpdGxlPzogc3RyaW5nO1xuICByZWFkb25seSB2aWV3SWQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdGFydFZpZXdPcHRpb25zIHtcbiAgcmVhZG9ubHkgbm93PzogKCkgPT4gbnVtYmVyO1xuICByZWFkb25seSBvbkNvbXBsZXRlOiAobWVhc3VyZW1lbnQ6IFZpZXdQZXJmb3JtYW5jZU1lYXN1cmVtZW50KSA9PiB2b2lkO1xuICByZWFkb25seSByb3V0ZT86IHN0cmluZztcbiAgcmVhZG9ubHkgdGltZW91dE1zPzogbnVtYmVyO1xuICByZWFkb25seSB0aXRsZT86IHN0cmluZztcbiAgcmVhZG9ubHkgdmlld0lkOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmlld1BlcmZvcm1hbmNlSGFuZGxlIHtcbiAgcmVhZG9ubHkgY2FuY2VsOiAoKSA9PiB2b2lkO1xuICByZWFkb25seSBmYWlsOiAoKSA9PiB2b2lkO1xuICByZWFkb25seSBzdWNjZWVkOiAoKSA9PiB2b2lkO1xuICByZWFkb25seSB0aW1lb3V0OiAoKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFVzZVZpZXdQZXJmb3JtYW5jZU9wdGlvbnMge1xuICByZWFkb25seSByb3V0ZT86IHN0cmluZztcbiAgcmVhZG9ubHkgc3RhdHVzOiBWaWV3UGVyZm9ybWFuY2VTdGF0dXM7XG4gIHJlYWRvbmx5IHRpbWVvdXRNcz86IG51bWJlcjtcbiAgcmVhZG9ubHkgdGl0bGU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHZpZXdJZDogc3RyaW5nO1xufVxuXG5jb25zdCBERUZBVUxUX1RJTUVPVVRfTVMgPSAzMF8wMDA7XG5jb25zdCBub3JtYWxpemVEdXJhdGlvbiA9IChkdXJhdGlvbjogbnVtYmVyKTogbnVtYmVyID0+IE1hdGgubWF4KDAsIE1hdGgucm91bmQoZHVyYXRpb24pKTtcblxuZXhwb3J0IGNvbnN0IHN0YXJ0VmlldyA9ICh7XG4gIG5vdyA9ICgpID0+IGdsb2JhbFRoaXMucGVyZm9ybWFuY2U/Lm5vdz8uKCkgPz8gRGF0ZS5ub3coKSxcbiAgb25Db21wbGV0ZSxcbiAgcm91dGUsXG4gIHRpbWVvdXRNcyA9IERFRkFVTFRfVElNRU9VVF9NUyxcbiAgdGl0bGUsXG4gIHZpZXdJZFxufTogU3RhcnRWaWV3T3B0aW9ucyk6IFZpZXdQZXJmb3JtYW5jZUhhbmRsZSA9PiB7XG4gIGNvbnN0IHN0YXJ0ZWRBdCA9IG5vdygpO1xuICBsZXQgY29tcGxldGUgPSBmYWxzZTtcbiAgbGV0IHRpbWVyOiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IHVuZGVmaW5lZDtcblxuICBjb25zdCBmaW5pc2ggPSAob3V0Y29tZTogVmlld1BlcmZvcm1hbmNlT3V0Y29tZSk6IHZvaWQgPT4ge1xuICAgIGlmKGNvbXBsZXRlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29tcGxldGUgPSB0cnVlO1xuICAgIGlmKHRpbWVyKSB7XG4gICAgICBjbGVhclRpbWVvdXQodGltZXIpO1xuICAgICAgdGltZXIgPSB1bmRlZmluZWQ7XG4gICAgfVxuICAgIG9uQ29tcGxldGUoe1xuICAgICAgZHVyYXRpb25Nczogbm9ybWFsaXplRHVyYXRpb24obm93KCkgLSBzdGFydGVkQXQpLFxuICAgICAgb3V0Y29tZSxcbiAgICAgIC4uLihyb3V0ZSA/IHtyb3V0ZX0gOiB7fSksXG4gICAgICAuLi4odGl0bGUgPyB7dGl0bGV9IDoge30pLFxuICAgICAgdmlld0lkXG4gICAgfSk7XG4gIH07XG5cbiAgaWYodGltZW91dE1zID4gMCkge1xuICAgIHRpbWVyID0gc2V0VGltZW91dCgoKSA9PiBmaW5pc2goJ3RpbWVvdXQnKSwgdGltZW91dE1zKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgY2FuY2VsOiAoKSA9PiBmaW5pc2goJ2NhbmNlbGxlZCcpLFxuICAgIGZhaWw6ICgpID0+IGZpbmlzaCgnZmFpbHVyZScpLFxuICAgIHN1Y2NlZWQ6ICgpID0+IGZpbmlzaCgnc3VjY2VzcycpLFxuICAgIHRpbWVvdXQ6ICgpID0+IGZpbmlzaCgndGltZW91dCcpXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgcmVwb3J0Vmlld1BlcmZvcm1hbmNlID0gKFxuICBhd3NSdW06IEF3c1J1bSB8IHVuZGVmaW5lZCxcbiAgbWVhc3VyZW1lbnQ6IFZpZXdQZXJmb3JtYW5jZU1lYXN1cmVtZW50XG4pOiB2b2lkID0+IHtcbiAgYXdzUnVtPy50cmFjayh7XG4gICAgbmFtZTogJ3ZpZXdfcGVyZm9ybWFuY2UnLFxuICAgIC4uLihtZWFzdXJlbWVudC5yb3V0ZSA/IHtwYXRoOiBtZWFzdXJlbWVudC5yb3V0ZX0gOiB7fSksXG4gICAgcHJvcGVydGllczoge1xuICAgICAgZHVyYXRpb25NczogbWVhc3VyZW1lbnQuZHVyYXRpb25NcyxcbiAgICAgIG91dGNvbWU6IG1lYXN1cmVtZW50Lm91dGNvbWUsXG4gICAgICAuLi4obWVhc3VyZW1lbnQudGl0bGUgPyB7dmlld1RpdGxlOiBtZWFzdXJlbWVudC50aXRsZX0gOiB7fSksXG4gICAgICB2aWV3SWQ6IG1lYXN1cmVtZW50LnZpZXdJZFxuICAgIH0sXG4gICAgdHlwZTogJ3ZpZXdfcGVyZm9ybWFuY2UnXG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IHVzZVZpZXdQZXJmb3JtYW5jZSA9ICh7XG4gIHJvdXRlLFxuICBzdGF0dXMsXG4gIHRpbWVvdXRNcyxcbiAgdGl0bGUsXG4gIHZpZXdJZFxufTogVXNlVmlld1BlcmZvcm1hbmNlT3B0aW9ucyk6IHZvaWQgPT4ge1xuICBjb25zdCB7YXdzUnVtfSA9IHVzZUNvbnRleHQoR290aGFtQ29udGV4dCk7XG4gIGNvbnN0IGhhbmRsZVJlZiA9IHVzZVJlZjxWaWV3UGVyZm9ybWFuY2VIYW5kbGUgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIGNvbnN0IHN0YXR1c1JlZiA9IHVzZVJlZihzdGF0dXMpO1xuICBzdGF0dXNSZWYuY3VycmVudCA9IHN0YXR1cztcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGhhbmRsZSA9IHN0YXJ0Vmlldyh7XG4gICAgICBvbkNvbXBsZXRlOiAobWVhc3VyZW1lbnQpID0+IHJlcG9ydFZpZXdQZXJmb3JtYW5jZShhd3NSdW0sIG1lYXN1cmVtZW50KSxcbiAgICAgIHJvdXRlLFxuICAgICAgdGltZW91dE1zLFxuICAgICAgdGl0bGUsXG4gICAgICB2aWV3SWRcbiAgICB9KTtcbiAgICBoYW5kbGVSZWYuY3VycmVudCA9IGhhbmRsZTtcblxuICAgIGlmKHN0YXR1c1JlZi5jdXJyZW50ID09PSAnZmFpbHVyZScpIHtcbiAgICAgIGhhbmRsZS5mYWlsKCk7XG4gICAgfSBlbHNlIGlmKHN0YXR1c1JlZi5jdXJyZW50ID09PSAnc3VjY2VzcycpIHtcbiAgICAgIGhhbmRsZS5zdWNjZWVkKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGhhbmRsZS5jYW5jZWwoKTtcbiAgICAgIGlmKGhhbmRsZVJlZi5jdXJyZW50ID09PSBoYW5kbGUpIHtcbiAgICAgICAgaGFuZGxlUmVmLmN1cnJlbnQgPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgfTtcbiAgfSwgW2F3c1J1bSwgcm91dGUsIHRpbWVvdXRNcywgdGl0bGUsIHZpZXdJZF0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYoc3RhdHVzID09PSAnZmFpbHVyZScpIHtcbiAgICAgIGhhbmRsZVJlZi5jdXJyZW50Py5mYWlsKCk7XG4gICAgfSBlbHNlIGlmKHN0YXR1cyA9PT0gJ3N1Y2Nlc3MnKSB7XG4gICAgICBoYW5kbGVSZWYuY3VycmVudD8uc3VjY2VlZCgpO1xuICAgIH1cbiAgfSwgW3N0YXR1c10pO1xufTtcbiJdLCJuYW1lcyI6WyJ1c2VDb250ZXh0IiwidXNlRWZmZWN0IiwidXNlUmVmIiwiR290aGFtQ29udGV4dCIsIkRFRkFVTFRfVElNRU9VVF9NUyIsIm5vcm1hbGl6ZUR1cmF0aW9uIiwiZHVyYXRpb24iLCJNYXRoIiwibWF4Iiwicm91bmQiLCJzdGFydFZpZXciLCJub3ciLCJnbG9iYWxUaGlzIiwicGVyZm9ybWFuY2UiLCJEYXRlIiwib25Db21wbGV0ZSIsInJvdXRlIiwidGltZW91dE1zIiwidGl0bGUiLCJ2aWV3SWQiLCJzdGFydGVkQXQiLCJjb21wbGV0ZSIsInRpbWVyIiwiZmluaXNoIiwib3V0Y29tZSIsImNsZWFyVGltZW91dCIsInVuZGVmaW5lZCIsImR1cmF0aW9uTXMiLCJzZXRUaW1lb3V0IiwiY2FuY2VsIiwiZmFpbCIsInN1Y2NlZWQiLCJ0aW1lb3V0IiwicmVwb3J0Vmlld1BlcmZvcm1hbmNlIiwiYXdzUnVtIiwibWVhc3VyZW1lbnQiLCJ0cmFjayIsIm5hbWUiLCJwYXRoIiwicHJvcGVydGllcyIsInZpZXdUaXRsZSIsInR5cGUiLCJ1c2VWaWV3UGVyZm9ybWFuY2UiLCJzdGF0dXMiLCJoYW5kbGVSZWYiLCJzdGF0dXNSZWYiLCJjdXJyZW50IiwiaGFuZGxlIl0sIm1hcHBpbmdzIjoiQUFBQTs7O0NBR0MsR0FDRCxTQUFRQSxVQUFVLEVBQUVDLFNBQVMsRUFBRUMsTUFBTSxRQUFPLFFBQVE7QUFFcEQsU0FBUUMsYUFBYSxRQUFPLHFCQUFxQjtBQXVDakQsTUFBTUMscUJBQXFCO0FBQzNCLE1BQU1DLG9CQUFvQixDQUFDQyxXQUE2QkMsS0FBS0MsR0FBRyxDQUFDLEdBQUdELEtBQUtFLEtBQUssQ0FBQ0g7QUFFL0UsT0FBTyxNQUFNSSxZQUFZLENBQUMsRUFDeEJDLE1BQU0sSUFBTUMsV0FBV0MsV0FBVyxFQUFFRixXQUFXRyxLQUFLSCxHQUFHLEVBQUUsRUFDekRJLFVBQVUsRUFDVkMsS0FBSyxFQUNMQyxZQUFZYixrQkFBa0IsRUFDOUJjLEtBQUssRUFDTEMsTUFBTSxFQUNXO0lBQ2pCLE1BQU1DLFlBQVlUO0lBQ2xCLElBQUlVLFdBQVc7SUFDZixJQUFJQztJQUVKLE1BQU1DLFNBQVMsQ0FBQ0M7UUFDZCxJQUFHSCxVQUFVO1lBQ1g7UUFDRjtRQUVBQSxXQUFXO1FBQ1gsSUFBR0MsT0FBTztZQUNSRyxhQUFhSDtZQUNiQSxRQUFRSTtRQUNWO1FBQ0FYLFdBQVc7WUFDVFksWUFBWXRCLGtCQUFrQk0sUUFBUVM7WUFDdENJO1lBQ0EsR0FBSVIsUUFBUTtnQkFBQ0E7WUFBSyxJQUFJLENBQUMsQ0FBQztZQUN4QixHQUFJRSxRQUFRO2dCQUFDQTtZQUFLLElBQUksQ0FBQyxDQUFDO1lBQ3hCQztRQUNGO0lBQ0Y7SUFFQSxJQUFHRixZQUFZLEdBQUc7UUFDaEJLLFFBQVFNLFdBQVcsSUFBTUwsT0FBTyxZQUFZTjtJQUM5QztJQUVBLE9BQU87UUFDTFksUUFBUSxJQUFNTixPQUFPO1FBQ3JCTyxNQUFNLElBQU1QLE9BQU87UUFDbkJRLFNBQVMsSUFBTVIsT0FBTztRQUN0QlMsU0FBUyxJQUFNVCxPQUFPO0lBQ3hCO0FBQ0YsRUFBRTtBQUVGLE9BQU8sTUFBTVUsd0JBQXdCLENBQ25DQyxRQUNBQztJQUVBRCxRQUFRRSxNQUFNO1FBQ1pDLE1BQU07UUFDTixHQUFJRixZQUFZbkIsS0FBSyxHQUFHO1lBQUNzQixNQUFNSCxZQUFZbkIsS0FBSztRQUFBLElBQUksQ0FBQyxDQUFDO1FBQ3REdUIsWUFBWTtZQUNWWixZQUFZUSxZQUFZUixVQUFVO1lBQ2xDSCxTQUFTVyxZQUFZWCxPQUFPO1lBQzVCLEdBQUlXLFlBQVlqQixLQUFLLEdBQUc7Z0JBQUNzQixXQUFXTCxZQUFZakIsS0FBSztZQUFBLElBQUksQ0FBQyxDQUFDO1lBQzNEQyxRQUFRZ0IsWUFBWWhCLE1BQU07UUFDNUI7UUFDQXNCLE1BQU07SUFDUjtBQUNGLEVBQUU7QUFFRixPQUFPLE1BQU1DLHFCQUFxQixDQUFDLEVBQ2pDMUIsS0FBSyxFQUNMMkIsTUFBTSxFQUNOMUIsU0FBUyxFQUNUQyxLQUFLLEVBQ0xDLE1BQU0sRUFDb0I7SUFDMUIsTUFBTSxFQUFDZSxNQUFNLEVBQUMsR0FBR2xDLFdBQVdHO0lBQzVCLE1BQU15QyxZQUFZMUMsT0FBMEN3QjtJQUM1RCxNQUFNbUIsWUFBWTNDLE9BQU95QztJQUN6QkUsVUFBVUMsT0FBTyxHQUFHSDtJQUVwQjFDLFVBQVU7UUFDUixNQUFNOEMsU0FBU3JDLFVBQVU7WUFDdkJLLFlBQVksQ0FBQ29CLGNBQWdCRixzQkFBc0JDLFFBQVFDO1lBQzNEbkI7WUFDQUM7WUFDQUM7WUFDQUM7UUFDRjtRQUNBeUIsVUFBVUUsT0FBTyxHQUFHQztRQUVwQixJQUFHRixVQUFVQyxPQUFPLEtBQUssV0FBVztZQUNsQ0MsT0FBT2pCLElBQUk7UUFDYixPQUFPLElBQUdlLFVBQVVDLE9BQU8sS0FBSyxXQUFXO1lBQ3pDQyxPQUFPaEIsT0FBTztRQUNoQjtRQUVBLE9BQU87WUFDTGdCLE9BQU9sQixNQUFNO1lBQ2IsSUFBR2UsVUFBVUUsT0FBTyxLQUFLQyxRQUFRO2dCQUMvQkgsVUFBVUUsT0FBTyxHQUFHcEI7WUFDdEI7UUFDRjtJQUNGLEdBQUc7UUFBQ1E7UUFBUWxCO1FBQU9DO1FBQVdDO1FBQU9DO0tBQU87SUFFNUNsQixVQUFVO1FBQ1IsSUFBRzBDLFdBQVcsV0FBVztZQUN2QkMsVUFBVUUsT0FBTyxFQUFFaEI7UUFDckIsT0FBTyxJQUFHYSxXQUFXLFdBQVc7WUFDOUJDLFVBQVVFLE9BQU8sRUFBRWY7UUFDckI7SUFDRixHQUFHO1FBQUNZO0tBQU87QUFDYixFQUFFIn0=
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Location, useNavigation } from 'react-router';
|
|
2
|
+
export interface AppRouter {
|
|
3
|
+
readonly location: Location;
|
|
4
|
+
readonly matches: unknown[];
|
|
5
|
+
readonly navigation: ReturnType<typeof useNavigation>;
|
|
6
|
+
readonly params: unknown;
|
|
7
|
+
}
|
|
8
|
+
export declare const useRoute: () => AppRouter;
|
|
9
|
+
export declare const parseNavUrl: (path: string, params: Record<string, unknown>) => string;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2018-Present, Nitrogen Labs, Inc.
|
|
3
|
+
* Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
|
|
4
|
+
*/ import { qs } from '@nlabs/utils';
|
|
5
|
+
import { useMemo } from 'react';
|
|
6
|
+
import { useLocation, useMatches, useNavigation, useParams } from 'react-router';
|
|
7
|
+
export const useRoute = ()=>{
|
|
8
|
+
const navigation = useNavigation();
|
|
9
|
+
const location = useLocation() || {};
|
|
10
|
+
const urlParams = useParams();
|
|
11
|
+
const matches = useMatches();
|
|
12
|
+
return useMemo(()=>({
|
|
13
|
+
location,
|
|
14
|
+
matches,
|
|
15
|
+
navigation,
|
|
16
|
+
params: {
|
|
17
|
+
...location.state || {},
|
|
18
|
+
...urlParams,
|
|
19
|
+
...qs.parse(location.search, {
|
|
20
|
+
ignoreQueryPrefix: true
|
|
21
|
+
})
|
|
22
|
+
}
|
|
23
|
+
}), [
|
|
24
|
+
navigation,
|
|
25
|
+
location,
|
|
26
|
+
matches,
|
|
27
|
+
urlParams
|
|
28
|
+
]);
|
|
29
|
+
};
|
|
30
|
+
export const parseNavUrl = (path, params)=>path.split('/').reduce((list, part)=>{
|
|
31
|
+
if (part?.substring(0, 1) === ':') {
|
|
32
|
+
const value = params[part.substring(1)];
|
|
33
|
+
return [
|
|
34
|
+
...list,
|
|
35
|
+
value !== undefined ? value : part
|
|
36
|
+
];
|
|
37
|
+
}
|
|
38
|
+
return [
|
|
39
|
+
...list,
|
|
40
|
+
part
|
|
41
|
+
];
|
|
42
|
+
}, []).join('/');
|
|
43
|
+
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L2dvdGhhbWpzL3NyYy91dGlscy92aWV3VXRpbHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7cXN9IGZyb20gJ0BubGFicy91dGlscyc7XG5pbXBvcnQge3VzZU1lbW99IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7TG9jYXRpb24sIHVzZUxvY2F0aW9uLCB1c2VNYXRjaGVzLCB1c2VOYXZpZ2F0aW9uLCB1c2VQYXJhbXN9IGZyb20gJ3JlYWN0LXJvdXRlcic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXBwUm91dGVyIHtcbiAgcmVhZG9ubHkgbG9jYXRpb246IExvY2F0aW9uO1xuICByZWFkb25seSBtYXRjaGVzOiB1bmtub3duW107XG4gIHJlYWRvbmx5IG5hdmlnYXRpb246IFJldHVyblR5cGU8dHlwZW9mIHVzZU5hdmlnYXRpb24+O1xuICByZWFkb25seSBwYXJhbXM6IHVua25vd247XG59XG5cbmV4cG9ydCBjb25zdCB1c2VSb3V0ZSA9ICgpOiBBcHBSb3V0ZXIgPT4ge1xuICBjb25zdCBuYXZpZ2F0aW9uID0gdXNlTmF2aWdhdGlvbigpO1xuICBjb25zdCBsb2NhdGlvbiA9IHVzZUxvY2F0aW9uKCkgfHwge30gYXMgdW5rbm93biBhcyBMb2NhdGlvbjtcbiAgY29uc3QgdXJsUGFyYW1zID0gdXNlUGFyYW1zKCk7XG4gIGNvbnN0IG1hdGNoZXMgPSB1c2VNYXRjaGVzKCk7XG5cbiAgcmV0dXJuIHVzZU1lbW8oKCkgPT4gKHtcbiAgICBsb2NhdGlvbixcbiAgICBtYXRjaGVzLFxuICAgIG5hdmlnYXRpb24sXG4gICAgcGFyYW1zOiB7XG4gICAgICAuLi4obG9jYXRpb24uc3RhdGUgfHwge30pLFxuICAgICAgLi4udXJsUGFyYW1zLFxuICAgICAgLi4ucXMucGFyc2UobG9jYXRpb24uc2VhcmNoLCB7aWdub3JlUXVlcnlQcmVmaXg6IHRydWV9KVxuICAgIH1cbiAgfSksIFtuYXZpZ2F0aW9uLCBsb2NhdGlvbiwgbWF0Y2hlcywgdXJsUGFyYW1zXSk7XG59O1xuXG5leHBvcnQgY29uc3QgcGFyc2VOYXZVcmwgPSAocGF0aDogc3RyaW5nLCBwYXJhbXM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogc3RyaW5nID0+IHBhdGhcbiAgLnNwbGl0KCcvJylcbiAgLnJlZHVjZSgobGlzdDogc3RyaW5nW10sIHBhcnQ6IHN0cmluZykgPT4ge1xuICAgIGlmKHBhcnQ/LnN1YnN0cmluZygwLCAxKSA9PT0gJzonKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IHBhcmFtc1twYXJ0LnN1YnN0cmluZygxKV07XG4gICAgICByZXR1cm4gWy4uLmxpc3QsIHZhbHVlICE9PSB1bmRlZmluZWQgPyB2YWx1ZSA6IHBhcnRdIGFzIHN0cmluZ1tdO1xuICAgIH1cblxuICAgIHJldHVybiBbLi4ubGlzdCwgcGFydF07XG4gIH0sIFtdKS5qb2luKCcvJyk7XG4iXSwibmFtZXMiOlsicXMiLCJ1c2VNZW1vIiwidXNlTG9jYXRpb24iLCJ1c2VNYXRjaGVzIiwidXNlTmF2aWdhdGlvbiIsInVzZVBhcmFtcyIsInVzZVJvdXRlIiwibmF2aWdhdGlvbiIsImxvY2F0aW9uIiwidXJsUGFyYW1zIiwibWF0Y2hlcyIsInBhcmFtcyIsInN0YXRlIiwicGFyc2UiLCJzZWFyY2giLCJpZ25vcmVRdWVyeVByZWZpeCIsInBhcnNlTmF2VXJsIiwicGF0aCIsInNwbGl0IiwicmVkdWNlIiwibGlzdCIsInBhcnQiLCJzdWJzdHJpbmciLCJ2YWx1ZSIsInVuZGVmaW5lZCIsImpvaW4iXSwibWFwcGluZ3MiOiJBQUFBOzs7Q0FHQyxHQUNELFNBQVFBLEVBQUUsUUFBTyxlQUFlO0FBQ2hDLFNBQVFDLE9BQU8sUUFBTyxRQUFRO0FBQzlCLFNBQWtCQyxXQUFXLEVBQUVDLFVBQVUsRUFBRUMsYUFBYSxFQUFFQyxTQUFTLFFBQU8sZUFBZTtBQVN6RixPQUFPLE1BQU1DLFdBQVc7SUFDdEIsTUFBTUMsYUFBYUg7SUFDbkIsTUFBTUksV0FBV04saUJBQWlCLENBQUM7SUFDbkMsTUFBTU8sWUFBWUo7SUFDbEIsTUFBTUssVUFBVVA7SUFFaEIsT0FBT0YsUUFBUSxJQUFPLENBQUE7WUFDcEJPO1lBQ0FFO1lBQ0FIO1lBQ0FJLFFBQVE7Z0JBQ04sR0FBSUgsU0FBU0ksS0FBSyxJQUFJLENBQUMsQ0FBQztnQkFDeEIsR0FBR0gsU0FBUztnQkFDWixHQUFHVCxHQUFHYSxLQUFLLENBQUNMLFNBQVNNLE1BQU0sRUFBRTtvQkFBQ0MsbUJBQW1CO2dCQUFJLEVBQUU7WUFDekQ7UUFDRixDQUFBLEdBQUk7UUFBQ1I7UUFBWUM7UUFBVUU7UUFBU0Q7S0FBVTtBQUNoRCxFQUFFO0FBRUYsT0FBTyxNQUFNTyxjQUFjLENBQUNDLE1BQWNOLFNBQTRDTSxLQUNuRkMsS0FBSyxDQUFDLEtBQ05DLE1BQU0sQ0FBQyxDQUFDQyxNQUFnQkM7UUFDdkIsSUFBR0EsTUFBTUMsVUFBVSxHQUFHLE9BQU8sS0FBSztZQUNoQyxNQUFNQyxRQUFRWixNQUFNLENBQUNVLEtBQUtDLFNBQVMsQ0FBQyxHQUFHO1lBQ3ZDLE9BQU87bUJBQUlGO2dCQUFNRyxVQUFVQyxZQUFZRCxRQUFRRjthQUFLO1FBQ3REO1FBRUEsT0FBTztlQUFJRDtZQUFNQztTQUFLO0lBQ3hCLEdBQUcsRUFBRSxFQUFFSSxJQUFJLENBQUMsS0FBSyJ9
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
import type { AuthViewProps } from '../AuthView/AuthView.js';
|
|
3
|
+
export interface AuthSignInValues extends Record<string, unknown> {
|
|
4
|
+
readonly email: string;
|
|
5
|
+
readonly password: string;
|
|
6
|
+
readonly rememberEmail: boolean;
|
|
7
|
+
}
|
|
8
|
+
export interface AuthSignInViewProps extends Omit<AuthViewProps, 'cardDescription' | 'cardTitle' | 'children' | 'onSubmit'> {
|
|
9
|
+
readonly cardDescription?: ReactNode;
|
|
10
|
+
readonly cardTitle?: ReactNode;
|
|
11
|
+
readonly defaultEmail?: string;
|
|
12
|
+
readonly error?: ReactNode;
|
|
13
|
+
readonly forgotPasswordHref?: string;
|
|
14
|
+
readonly onSubmit: (values: AuthSignInValues) => void | Promise<void>;
|
|
15
|
+
readonly signUpHref?: string;
|
|
16
|
+
readonly submitClassName?: string;
|
|
17
|
+
}
|
|
18
|
+
declare const AuthSignInViewComponent: ({ cardDescription, cardTitle, defaultEmail, error, forgotPasswordHref, onSubmit, signUpHref, submitClassName, ...authViewProps }: AuthSignInViewProps) => import("react").JSX.Element;
|
|
19
|
+
export declare const AuthSignInView: import("react").MemoExoticComponent<typeof AuthSignInViewComponent>;
|
|
20
|
+
export {};
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { memo } from 'react';
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
import { Button } from '../../components/Button/Button.js';
|
|
5
|
+
import { Checkbox } from '../../components/Checkbox/Checkbox.js';
|
|
6
|
+
import { Form } from '../../components/Form/Form.js';
|
|
7
|
+
import { Link } from '../../components/Link/Link.js';
|
|
8
|
+
import { TextField } from '../../components/TextField/TextField.js';
|
|
9
|
+
import { AuthView } from '../AuthView/AuthView.js';
|
|
10
|
+
const authSignInSchema = z.object({
|
|
11
|
+
email: z.email('Enter a valid email address.'),
|
|
12
|
+
password: z.string().min(1, 'Enter your password.'),
|
|
13
|
+
rememberEmail: z.boolean()
|
|
14
|
+
});
|
|
15
|
+
const AuthSignInViewComponent = ({ cardDescription = 'Use your email and password to continue.', cardTitle = 'Sign in', defaultEmail = '', error, forgotPasswordHref = '/forgot-password', onSubmit, signUpHref = '/signup', submitClassName, ...authViewProps })=>/*#__PURE__*/ _jsxs(AuthView, {
|
|
16
|
+
cardDescription: cardDescription,
|
|
17
|
+
cardTitle: cardTitle,
|
|
18
|
+
...authViewProps,
|
|
19
|
+
children: [
|
|
20
|
+
error ? /*#__PURE__*/ _jsx("div", {
|
|
21
|
+
className: "mb-5 rounded-lg border border-error-300 bg-error-50 p-3 text-sm text-error-700",
|
|
22
|
+
role: "alert",
|
|
23
|
+
children: error
|
|
24
|
+
}) : null,
|
|
25
|
+
/*#__PURE__*/ _jsx(Form, {
|
|
26
|
+
className: "grid",
|
|
27
|
+
defaultValues: {
|
|
28
|
+
email: defaultEmail,
|
|
29
|
+
password: '',
|
|
30
|
+
rememberEmail: true
|
|
31
|
+
},
|
|
32
|
+
name: "sign-in",
|
|
33
|
+
onSubmit: onSubmit,
|
|
34
|
+
schema: authSignInSchema,
|
|
35
|
+
showErrors: true,
|
|
36
|
+
children: ({ formState })=>/*#__PURE__*/ _jsxs(_Fragment, {
|
|
37
|
+
children: [
|
|
38
|
+
/*#__PURE__*/ _jsxs("div", {
|
|
39
|
+
className: "grid gap-7 max-[600px]:gap-6",
|
|
40
|
+
children: [
|
|
41
|
+
/*#__PURE__*/ _jsx(TextField, {
|
|
42
|
+
autoComplete: "email",
|
|
43
|
+
borderColor: "neutral",
|
|
44
|
+
borderType: "underline",
|
|
45
|
+
inputClass: "min-h-12 rounded-none border-x-0 border-t-0 bg-transparent px-0 text-base shadow-none",
|
|
46
|
+
label: "Email",
|
|
47
|
+
labelClass: "mb-2 text-sm font-bold",
|
|
48
|
+
name: "email",
|
|
49
|
+
placeholder: "you@example.com",
|
|
50
|
+
type: "email"
|
|
51
|
+
}),
|
|
52
|
+
/*#__PURE__*/ _jsx(TextField, {
|
|
53
|
+
autoComplete: "current-password",
|
|
54
|
+
borderColor: "neutral",
|
|
55
|
+
borderType: "underline",
|
|
56
|
+
inputClass: "min-h-12 rounded-none border-x-0 border-t-0 bg-transparent px-0 pr-11 text-base shadow-none",
|
|
57
|
+
label: "Password",
|
|
58
|
+
labelClass: "mb-2 text-sm font-bold",
|
|
59
|
+
name: "password",
|
|
60
|
+
placeholder: "Your password",
|
|
61
|
+
showPasswordToggle: true,
|
|
62
|
+
type: "password"
|
|
63
|
+
})
|
|
64
|
+
]
|
|
65
|
+
}),
|
|
66
|
+
/*#__PURE__*/ _jsxs("div", {
|
|
67
|
+
className: "my-5 flex items-center justify-between gap-4",
|
|
68
|
+
children: [
|
|
69
|
+
/*#__PURE__*/ _jsx(Checkbox, {
|
|
70
|
+
defaultValue: true,
|
|
71
|
+
label: "Remember me",
|
|
72
|
+
name: "rememberEmail"
|
|
73
|
+
}),
|
|
74
|
+
/*#__PURE__*/ _jsx(Link, {
|
|
75
|
+
className: "text-sm font-bold no-underline",
|
|
76
|
+
href: forgotPasswordHref,
|
|
77
|
+
children: "Forgot password?"
|
|
78
|
+
})
|
|
79
|
+
]
|
|
80
|
+
}),
|
|
81
|
+
/*#__PURE__*/ _jsx(Button, {
|
|
82
|
+
className: submitClassName,
|
|
83
|
+
disabled: formState.isSubmitting,
|
|
84
|
+
isLoading: formState.isSubmitting,
|
|
85
|
+
type: "submit",
|
|
86
|
+
children: "Sign In"
|
|
87
|
+
})
|
|
88
|
+
]
|
|
89
|
+
})
|
|
90
|
+
}),
|
|
91
|
+
/*#__PURE__*/ _jsxs("p", {
|
|
92
|
+
className: "mb-0 mt-6 text-sm text-muted-foreground dark:text-muted-foreground-dark",
|
|
93
|
+
children: [
|
|
94
|
+
"New here? ",
|
|
95
|
+
/*#__PURE__*/ _jsx(Link, {
|
|
96
|
+
className: "font-bold no-underline",
|
|
97
|
+
href: signUpHref,
|
|
98
|
+
children: "Sign Up"
|
|
99
|
+
})
|
|
100
|
+
]
|
|
101
|
+
})
|
|
102
|
+
]
|
|
103
|
+
});
|
|
104
|
+
export const AuthSignInView = /*#__PURE__*/ memo(AuthSignInViewComponent);
|
|
105
|
+
AuthSignInView.displayName = 'AuthSignInView';
|
|
106
|
+
|
|
107
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L2dvdGhhbWpzL3NyYy92aWV3cy9BdXRoU2lnbkluVmlldy9BdXRoU2lnbkluVmlldy50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHttZW1vfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQge3p9IGZyb20gJ3pvZCc7XG5cbmltcG9ydCB7QnV0dG9ufSBmcm9tICcuLi8uLi9jb21wb25lbnRzL0J1dHRvbi9CdXR0b24uanMnO1xuaW1wb3J0IHtDaGVja2JveH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9DaGVja2JveC9DaGVja2JveC5qcyc7XG5pbXBvcnQge0Zvcm19IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvRm9ybS9Gb3JtLmpzJztcbmltcG9ydCB7TGlua30gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9MaW5rL0xpbmsuanMnO1xuaW1wb3J0IHtUZXh0RmllbGR9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvVGV4dEZpZWxkL1RleHRGaWVsZC5qcyc7XG5pbXBvcnQge0F1dGhWaWV3fSBmcm9tICcuLi9BdXRoVmlldy9BdXRoVmlldy5qcyc7XG5cbmltcG9ydCB0eXBlIHtSZWFjdE5vZGV9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB0eXBlIHtBdXRoVmlld1Byb3BzfSBmcm9tICcuLi9BdXRoVmlldy9BdXRoVmlldy5qcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXV0aFNpZ25JblZhbHVlcyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgcmVhZG9ubHkgZW1haWw6IHN0cmluZztcbiAgcmVhZG9ubHkgcGFzc3dvcmQ6IHN0cmluZztcbiAgcmVhZG9ubHkgcmVtZW1iZXJFbWFpbDogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBdXRoU2lnbkluVmlld1Byb3BzIGV4dGVuZHMgT21pdDxBdXRoVmlld1Byb3BzLCAnY2FyZERlc2NyaXB0aW9uJyB8ICdjYXJkVGl0bGUnIHwgJ2NoaWxkcmVuJyB8ICdvblN1Ym1pdCc+IHtcbiAgcmVhZG9ubHkgY2FyZERlc2NyaXB0aW9uPzogUmVhY3ROb2RlO1xuICByZWFkb25seSBjYXJkVGl0bGU/OiBSZWFjdE5vZGU7XG4gIHJlYWRvbmx5IGRlZmF1bHRFbWFpbD86IHN0cmluZztcbiAgcmVhZG9ubHkgZXJyb3I/OiBSZWFjdE5vZGU7XG4gIHJlYWRvbmx5IGZvcmdvdFBhc3N3b3JkSHJlZj86IHN0cmluZztcbiAgcmVhZG9ubHkgb25TdWJtaXQ6ICh2YWx1ZXM6IEF1dGhTaWduSW5WYWx1ZXMpID0+IHZvaWQgfCBQcm9taXNlPHZvaWQ+O1xuICByZWFkb25seSBzaWduVXBIcmVmPzogc3RyaW5nO1xuICByZWFkb25seSBzdWJtaXRDbGFzc05hbWU/OiBzdHJpbmc7XG59XG5cbmNvbnN0IGF1dGhTaWduSW5TY2hlbWEgPSB6Lm9iamVjdCh7XG4gIGVtYWlsOiB6LmVtYWlsKCdFbnRlciBhIHZhbGlkIGVtYWlsIGFkZHJlc3MuJyksXG4gIHBhc3N3b3JkOiB6LnN0cmluZygpLm1pbigxLCAnRW50ZXIgeW91ciBwYXNzd29yZC4nKSxcbiAgcmVtZW1iZXJFbWFpbDogei5ib29sZWFuKClcbn0pO1xuXG5jb25zdCBBdXRoU2lnbkluVmlld0NvbXBvbmVudCA9ICh7XG4gIGNhcmREZXNjcmlwdGlvbiA9ICdVc2UgeW91ciBlbWFpbCBhbmQgcGFzc3dvcmQgdG8gY29udGludWUuJyxcbiAgY2FyZFRpdGxlID0gJ1NpZ24gaW4nLFxuICBkZWZhdWx0RW1haWwgPSAnJyxcbiAgZXJyb3IsXG4gIGZvcmdvdFBhc3N3b3JkSHJlZiA9ICcvZm9yZ290LXBhc3N3b3JkJyxcbiAgb25TdWJtaXQsXG4gIHNpZ25VcEhyZWYgPSAnL3NpZ251cCcsXG4gIHN1Ym1pdENsYXNzTmFtZSxcbiAgLi4uYXV0aFZpZXdQcm9wc1xufTogQXV0aFNpZ25JblZpZXdQcm9wcykgPT4gKFxuICA8QXV0aFZpZXcgY2FyZERlc2NyaXB0aW9uPXtjYXJkRGVzY3JpcHRpb259IGNhcmRUaXRsZT17Y2FyZFRpdGxlfSB7Li4uYXV0aFZpZXdQcm9wc30+XG4gICAge2Vycm9yID8gKFxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJtYi01IHJvdW5kZWQtbGcgYm9yZGVyIGJvcmRlci1lcnJvci0zMDAgYmctZXJyb3ItNTAgcC0zIHRleHQtc20gdGV4dC1lcnJvci03MDBcIiByb2xlPVwiYWxlcnRcIj5cbiAgICAgICAge2Vycm9yfVxuICAgICAgPC9kaXY+XG4gICAgKSA6IG51bGx9XG4gICAgPEZvcm08QXV0aFNpZ25JblZhbHVlcz5cbiAgICAgIGNsYXNzTmFtZT1cImdyaWRcIlxuICAgICAgZGVmYXVsdFZhbHVlcz17e2VtYWlsOiBkZWZhdWx0RW1haWwsIHBhc3N3b3JkOiAnJywgcmVtZW1iZXJFbWFpbDogdHJ1ZX19XG4gICAgICBuYW1lPVwic2lnbi1pblwiXG4gICAgICBvblN1Ym1pdD17b25TdWJtaXR9XG4gICAgICBzY2hlbWE9e2F1dGhTaWduSW5TY2hlbWF9XG4gICAgICBzaG93RXJyb3JzXG4gICAgPlxuICAgICAgeyh7Zm9ybVN0YXRlfSkgPT4gKFxuICAgICAgICA8PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZ3JpZCBnYXAtNyBtYXgtWzYwMHB4XTpnYXAtNlwiPlxuICAgICAgICAgICAgPFRleHRGaWVsZFxuICAgICAgICAgICAgICBhdXRvQ29tcGxldGU9XCJlbWFpbFwiXG4gICAgICAgICAgICAgIGJvcmRlckNvbG9yPVwibmV1dHJhbFwiXG4gICAgICAgICAgICAgIGJvcmRlclR5cGU9XCJ1bmRlcmxpbmVcIlxuICAgICAgICAgICAgICBpbnB1dENsYXNzPVwibWluLWgtMTIgcm91bmRlZC1ub25lIGJvcmRlci14LTAgYm9yZGVyLXQtMCBiZy10cmFuc3BhcmVudCBweC0wIHRleHQtYmFzZSBzaGFkb3ctbm9uZVwiXG4gICAgICAgICAgICAgIGxhYmVsPVwiRW1haWxcIlxuICAgICAgICAgICAgICBsYWJlbENsYXNzPVwibWItMiB0ZXh0LXNtIGZvbnQtYm9sZFwiXG4gICAgICAgICAgICAgIG5hbWU9XCJlbWFpbFwiXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwieW91QGV4YW1wbGUuY29tXCJcbiAgICAgICAgICAgICAgdHlwZT1cImVtYWlsXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8VGV4dEZpZWxkXG4gICAgICAgICAgICAgIGF1dG9Db21wbGV0ZT1cImN1cnJlbnQtcGFzc3dvcmRcIlxuICAgICAgICAgICAgICBib3JkZXJDb2xvcj1cIm5ldXRyYWxcIlxuICAgICAgICAgICAgICBib3JkZXJUeXBlPVwidW5kZXJsaW5lXCJcbiAgICAgICAgICAgICAgaW5wdXRDbGFzcz1cIm1pbi1oLTEyIHJvdW5kZWQtbm9uZSBib3JkZXIteC0wIGJvcmRlci10LTAgYmctdHJhbnNwYXJlbnQgcHgtMCBwci0xMSB0ZXh0LWJhc2Ugc2hhZG93LW5vbmVcIlxuICAgICAgICAgICAgICBsYWJlbD1cIlBhc3N3b3JkXCJcbiAgICAgICAgICAgICAgbGFiZWxDbGFzcz1cIm1iLTIgdGV4dC1zbSBmb250LWJvbGRcIlxuICAgICAgICAgICAgICBuYW1lPVwicGFzc3dvcmRcIlxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIllvdXIgcGFzc3dvcmRcIlxuICAgICAgICAgICAgICBzaG93UGFzc3dvcmRUb2dnbGVcbiAgICAgICAgICAgICAgdHlwZT1cInBhc3N3b3JkXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJteS01IGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBnYXAtNFwiPlxuICAgICAgICAgICAgPENoZWNrYm94IGRlZmF1bHRWYWx1ZSBsYWJlbD1cIlJlbWVtYmVyIG1lXCIgbmFtZT1cInJlbWVtYmVyRW1haWxcIiAvPlxuICAgICAgICAgICAgPExpbmsgY2xhc3NOYW1lPVwidGV4dC1zbSBmb250LWJvbGQgbm8tdW5kZXJsaW5lXCIgaHJlZj17Zm9yZ290UGFzc3dvcmRIcmVmfT5Gb3Jnb3QgcGFzc3dvcmQ/PC9MaW5rPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgIGNsYXNzTmFtZT17c3VibWl0Q2xhc3NOYW1lfVxuICAgICAgICAgICAgZGlzYWJsZWQ9e2Zvcm1TdGF0ZS5pc1N1Ym1pdHRpbmd9XG4gICAgICAgICAgICBpc0xvYWRpbmc9e2Zvcm1TdGF0ZS5pc1N1Ym1pdHRpbmd9XG4gICAgICAgICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICBTaWduIEluXG4gICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgIDwvPlxuICAgICAgKX1cbiAgICA8L0Zvcm0+XG4gICAgPHAgY2xhc3NOYW1lPVwibWItMCBtdC02IHRleHQtc20gdGV4dC1tdXRlZC1mb3JlZ3JvdW5kIGRhcms6dGV4dC1tdXRlZC1mb3JlZ3JvdW5kLWRhcmtcIj5cbiAgICAgIE5ldyBoZXJlPyA8TGluayBjbGFzc05hbWU9XCJmb250LWJvbGQgbm8tdW5kZXJsaW5lXCIgaHJlZj17c2lnblVwSHJlZn0+U2lnbiBVcDwvTGluaz5cbiAgICA8L3A+XG4gIDwvQXV0aFZpZXc+XG4pO1xuXG5leHBvcnQgY29uc3QgQXV0aFNpZ25JblZpZXcgPSBtZW1vKEF1dGhTaWduSW5WaWV3Q29tcG9uZW50KTtcbkF1dGhTaWduSW5WaWV3LmRpc3BsYXlOYW1lID0gJ0F1dGhTaWduSW5WaWV3JztcbiJdLCJuYW1lcyI6WyJtZW1vIiwieiIsIkJ1dHRvbiIsIkNoZWNrYm94IiwiRm9ybSIsIkxpbmsiLCJUZXh0RmllbGQiLCJBdXRoVmlldyIsImF1dGhTaWduSW5TY2hlbWEiLCJvYmplY3QiLCJlbWFpbCIsInBhc3N3b3JkIiwic3RyaW5nIiwibWluIiwicmVtZW1iZXJFbWFpbCIsImJvb2xlYW4iLCJBdXRoU2lnbkluVmlld0NvbXBvbmVudCIsImNhcmREZXNjcmlwdGlvbiIsImNhcmRUaXRsZSIsImRlZmF1bHRFbWFpbCIsImVycm9yIiwiZm9yZ290UGFzc3dvcmRIcmVmIiwib25TdWJtaXQiLCJzaWduVXBIcmVmIiwic3VibWl0Q2xhc3NOYW1lIiwiYXV0aFZpZXdQcm9wcyIsImRpdiIsImNsYXNzTmFtZSIsInJvbGUiLCJkZWZhdWx0VmFsdWVzIiwibmFtZSIsInNjaGVtYSIsInNob3dFcnJvcnMiLCJmb3JtU3RhdGUiLCJhdXRvQ29tcGxldGUiLCJib3JkZXJDb2xvciIsImJvcmRlclR5cGUiLCJpbnB1dENsYXNzIiwibGFiZWwiLCJsYWJlbENsYXNzIiwicGxhY2Vob2xkZXIiLCJ0eXBlIiwic2hvd1Bhc3N3b3JkVG9nZ2xlIiwiZGVmYXVsdFZhbHVlIiwiaHJlZiIsImRpc2FibGVkIiwiaXNTdWJtaXR0aW5nIiwiaXNMb2FkaW5nIiwicCIsIkF1dGhTaWduSW5WaWV3IiwiZGlzcGxheU5hbWUiXSwibWFwcGluZ3MiOiI7QUFBQSxTQUFRQSxJQUFJLFFBQU8sUUFBUTtBQUMzQixTQUFRQyxDQUFDLFFBQU8sTUFBTTtBQUV0QixTQUFRQyxNQUFNLFFBQU8sb0NBQW9DO0FBQ3pELFNBQVFDLFFBQVEsUUFBTyx3Q0FBd0M7QUFDL0QsU0FBUUMsSUFBSSxRQUFPLGdDQUFnQztBQUNuRCxTQUFRQyxJQUFJLFFBQU8sZ0NBQWdDO0FBQ25ELFNBQVFDLFNBQVMsUUFBTywwQ0FBMEM7QUFDbEUsU0FBUUMsUUFBUSxRQUFPLDBCQUEwQjtBQXNCakQsTUFBTUMsbUJBQW1CUCxFQUFFUSxNQUFNLENBQUM7SUFDaENDLE9BQU9ULEVBQUVTLEtBQUssQ0FBQztJQUNmQyxVQUFVVixFQUFFVyxNQUFNLEdBQUdDLEdBQUcsQ0FBQyxHQUFHO0lBQzVCQyxlQUFlYixFQUFFYyxPQUFPO0FBQzFCO0FBRUEsTUFBTUMsMEJBQTBCLENBQUMsRUFDL0JDLGtCQUFrQiwwQ0FBMEMsRUFDNURDLFlBQVksU0FBUyxFQUNyQkMsZUFBZSxFQUFFLEVBQ2pCQyxLQUFLLEVBQ0xDLHFCQUFxQixrQkFBa0IsRUFDdkNDLFFBQVEsRUFDUkMsYUFBYSxTQUFTLEVBQ3RCQyxlQUFlLEVBQ2YsR0FBR0MsZUFDaUIsaUJBQ3BCLE1BQUNsQjtRQUFTVSxpQkFBaUJBO1FBQWlCQyxXQUFXQTtRQUFZLEdBQUdPLGFBQWE7O1lBQ2hGTCxzQkFDQyxLQUFDTTtnQkFBSUMsV0FBVTtnQkFBaUZDLE1BQUs7MEJBQ2xHUjtpQkFFRDswQkFDSixLQUFDaEI7Z0JBQ0N1QixXQUFVO2dCQUNWRSxlQUFlO29CQUFDbkIsT0FBT1M7b0JBQWNSLFVBQVU7b0JBQUlHLGVBQWU7Z0JBQUk7Z0JBQ3RFZ0IsTUFBSztnQkFDTFIsVUFBVUE7Z0JBQ1ZTLFFBQVF2QjtnQkFDUndCLFVBQVU7MEJBRVQsQ0FBQyxFQUFDQyxTQUFTLEVBQUMsaUJBQ1g7OzBDQUNFLE1BQUNQO2dDQUFJQyxXQUFVOztrREFDYixLQUFDckI7d0NBQ0M0QixjQUFhO3dDQUNiQyxhQUFZO3dDQUNaQyxZQUFXO3dDQUNYQyxZQUFXO3dDQUNYQyxPQUFNO3dDQUNOQyxZQUFXO3dDQUNYVCxNQUFLO3dDQUNMVSxhQUFZO3dDQUNaQyxNQUFLOztrREFFUCxLQUFDbkM7d0NBQ0M0QixjQUFhO3dDQUNiQyxhQUFZO3dDQUNaQyxZQUFXO3dDQUNYQyxZQUFXO3dDQUNYQyxPQUFNO3dDQUNOQyxZQUFXO3dDQUNYVCxNQUFLO3dDQUNMVSxhQUFZO3dDQUNaRSxrQkFBa0I7d0NBQ2xCRCxNQUFLOzs7OzBDQUdULE1BQUNmO2dDQUFJQyxXQUFVOztrREFDYixLQUFDeEI7d0NBQVN3QyxZQUFZO3dDQUFDTCxPQUFNO3dDQUFjUixNQUFLOztrREFDaEQsS0FBQ3pCO3dDQUFLc0IsV0FBVTt3Q0FBaUNpQixNQUFNdkI7a0RBQW9COzs7OzBDQUU3RSxLQUFDbkI7Z0NBQ0N5QixXQUFXSDtnQ0FDWHFCLFVBQVVaLFVBQVVhLFlBQVk7Z0NBQ2hDQyxXQUFXZCxVQUFVYSxZQUFZO2dDQUNqQ0wsTUFBSzswQ0FDTjs7Ozs7MEJBTVAsTUFBQ087Z0JBQUVyQixXQUFVOztvQkFBMEU7a0NBQzNFLEtBQUN0Qjt3QkFBS3NCLFdBQVU7d0JBQXlCaUIsTUFBTXJCO2tDQUFZOzs7Ozs7QUFLM0UsT0FBTyxNQUFNMEIsK0JBQWlCakQsS0FBS2dCLHlCQUF5QjtBQUM1RGlDLGVBQWVDLFdBQVcsR0FBRyJ9
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { interactWithCanvas } from '../../utils/storyInteractions.js';
|
|
4
|
+
import { AuthSignInView } from './AuthSignInView.js';
|
|
5
|
+
const meta = {
|
|
6
|
+
component: AuthSignInView,
|
|
7
|
+
parameters: {
|
|
8
|
+
layout: 'fullscreen'
|
|
9
|
+
},
|
|
10
|
+
title: 'Views/Auth/AuthSignInView'
|
|
11
|
+
};
|
|
12
|
+
export default meta;
|
|
13
|
+
export const Default = {
|
|
14
|
+
args: {
|
|
15
|
+
description: 'Sign in once to return to everything your account can access.',
|
|
16
|
+
eyebrow: 'Acme identity',
|
|
17
|
+
onSubmit: async ()=>{},
|
|
18
|
+
title: /*#__PURE__*/ _jsxs(_Fragment, {
|
|
19
|
+
children: [
|
|
20
|
+
"Welcome",
|
|
21
|
+
/*#__PURE__*/ _jsx("br", {}),
|
|
22
|
+
"back."
|
|
23
|
+
]
|
|
24
|
+
})
|
|
25
|
+
},
|
|
26
|
+
play: interactWithCanvas
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L2dvdGhhbWpzL3NyYy92aWV3cy9BdXRoU2lnbkluVmlldy9BdXRoU2lnbkluVmlldy5zdG9yaWVzLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG5pbXBvcnQge2ludGVyYWN0V2l0aENhbnZhc30gZnJvbSAnLi4vLi4vdXRpbHMvc3RvcnlJbnRlcmFjdGlvbnMuanMnO1xuaW1wb3J0IHtBdXRoU2lnbkluVmlld30gZnJvbSAnLi9BdXRoU2lnbkluVmlldy5qcyc7XG5cbmltcG9ydCB0eXBlIHtNZXRhLCBTdG9yeU9ian0gZnJvbSAnQG5sYWJzL2xleC9zdG9yeWJvb2snO1xuXG5jb25zdCBtZXRhOiBNZXRhPHR5cGVvZiBBdXRoU2lnbkluVmlldz4gPSB7XG4gIGNvbXBvbmVudDogQXV0aFNpZ25JblZpZXcsXG4gIHBhcmFtZXRlcnM6IHtcbiAgICBsYXlvdXQ6ICdmdWxsc2NyZWVuJ1xuICB9LFxuICB0aXRsZTogJ1ZpZXdzL0F1dGgvQXV0aFNpZ25JblZpZXcnXG59O1xuXG5leHBvcnQgZGVmYXVsdCBtZXRhO1xuXG50eXBlIFN0b3J5ID0gU3RvcnlPYmo8dHlwZW9mIEF1dGhTaWduSW5WaWV3PjtcblxuZXhwb3J0IGNvbnN0IERlZmF1bHQ6IFN0b3J5ID0ge1xuICBhcmdzOiB7XG4gICAgZGVzY3JpcHRpb246ICdTaWduIGluIG9uY2UgdG8gcmV0dXJuIHRvIGV2ZXJ5dGhpbmcgeW91ciBhY2NvdW50IGNhbiBhY2Nlc3MuJyxcbiAgICBleWVicm93OiAnQWNtZSBpZGVudGl0eScsXG4gICAgb25TdWJtaXQ6IGFzeW5jICgpID0+IHt9LFxuICAgIHRpdGxlOiA8PldlbGNvbWU8YnIgLz5iYWNrLjwvPlxuICB9LFxuICBwbGF5OiBpbnRlcmFjdFdpdGhDYW52YXNcbn07XG4iXSwibmFtZXMiOlsiUmVhY3QiLCJpbnRlcmFjdFdpdGhDYW52YXMiLCJBdXRoU2lnbkluVmlldyIsIm1ldGEiLCJjb21wb25lbnQiLCJwYXJhbWV0ZXJzIiwibGF5b3V0IiwidGl0bGUiLCJEZWZhdWx0IiwiYXJncyIsImRlc2NyaXB0aW9uIiwiZXllYnJvdyIsIm9uU3VibWl0IiwiYnIiLCJwbGF5Il0sIm1hcHBpbmdzIjoiO0FBQUEsT0FBT0EsV0FBVyxRQUFRO0FBRTFCLFNBQVFDLGtCQUFrQixRQUFPLG1DQUFtQztBQUNwRSxTQUFRQyxjQUFjLFFBQU8sc0JBQXNCO0FBSW5ELE1BQU1DLE9BQW9DO0lBQ3hDQyxXQUFXRjtJQUNYRyxZQUFZO1FBQ1ZDLFFBQVE7SUFDVjtJQUNBQyxPQUFPO0FBQ1Q7QUFFQSxlQUFlSixLQUFLO0FBSXBCLE9BQU8sTUFBTUssVUFBaUI7SUFDNUJDLE1BQU07UUFDSkMsYUFBYTtRQUNiQyxTQUFTO1FBQ1RDLFVBQVUsV0FBYTtRQUN2QkwscUJBQU87O2dCQUFFOzhCQUFPLEtBQUNNO2dCQUFLOzs7SUFDeEI7SUFDQUMsTUFBTWI7QUFDUixFQUFFIn0=
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
import type { AuthViewProps } from '../AuthView/AuthView.js';
|
|
3
|
+
export interface AuthSignUpValues extends Record<string, unknown> {
|
|
4
|
+
readonly acceptTerms: boolean;
|
|
5
|
+
readonly confirmPassword: string;
|
|
6
|
+
readonly email: string;
|
|
7
|
+
readonly password: string;
|
|
8
|
+
}
|
|
9
|
+
export interface AuthSignUpViewProps extends Omit<AuthViewProps, 'cardDescription' | 'cardTitle' | 'children' | 'onSubmit'> {
|
|
10
|
+
readonly cardDescription?: ReactNode;
|
|
11
|
+
readonly cardTitle?: ReactNode;
|
|
12
|
+
readonly error?: ReactNode;
|
|
13
|
+
readonly onSubmit: (values: AuthSignUpValues) => void | Promise<void>;
|
|
14
|
+
readonly resendVerificationHref?: string;
|
|
15
|
+
readonly signInHref?: string;
|
|
16
|
+
readonly submitClassName?: string;
|
|
17
|
+
readonly termsHref?: string;
|
|
18
|
+
}
|
|
19
|
+
declare const AuthSignUpViewComponent: ({ cardClassName, cardDescription, cardHeaderClassName, cardTitle, error, onSubmit, resendVerificationHref, signInHref, submitClassName, termsHref, ...authViewProps }: AuthSignUpViewProps) => import("react").JSX.Element;
|
|
20
|
+
export declare const AuthSignUpView: import("react").MemoExoticComponent<typeof AuthSignUpViewComponent>;
|
|
21
|
+
export {};
|