@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,159 @@
|
|
|
1
|
+
<svg width="1600" height="880" viewBox="0 0 1600 880" xmlns="http://www.w3.org/2000/svg" role="img" aria-labelledby="title desc">
|
|
2
|
+
<title id="title">How GothamUI works with a React application</title>
|
|
3
|
+
<desc id="desc">A clean three-column diagram showing app inputs flowing into the GothamUI presentation framework and producing a complete user experience.</desc>
|
|
4
|
+
<defs>
|
|
5
|
+
<linearGradient id="brand" x1="0" y1="0" x2="1" y2="1">
|
|
6
|
+
<stop offset="0" stop-color="#8167EE"/>
|
|
7
|
+
<stop offset="1" stop-color="#2F80ED"/>
|
|
8
|
+
</linearGradient>
|
|
9
|
+
<style>
|
|
10
|
+
.heading { fill: #17151D; font-family: Inter, Arial, sans-serif; font-size: 22px; font-weight: 700; }
|
|
11
|
+
.label { fill: #24212A; font-family: Inter, Arial, sans-serif; font-size: 20px; font-weight: 600; }
|
|
12
|
+
.detail { fill: #69707D; font-family: Inter, Arial, sans-serif; font-size: 16px; font-weight: 400; }
|
|
13
|
+
.service { fill: #34303A; font-family: Inter, Arial, sans-serif; font-size: 18px; font-weight: 500; }
|
|
14
|
+
.line-icon { fill: none; stroke: #35313B; stroke-width: 2.2; stroke-linecap: round; stroke-linejoin: round; }
|
|
15
|
+
.purple-icon { fill: none; stroke: #8167EE; stroke-width: 2.2; stroke-linecap: round; stroke-linejoin: round; }
|
|
16
|
+
.teal-icon { fill: none; stroke: #14AFA0; stroke-width: 2.2; stroke-linecap: round; stroke-linejoin: round; }
|
|
17
|
+
</style>
|
|
18
|
+
</defs>
|
|
19
|
+
|
|
20
|
+
<rect width="1600" height="880" fill="#FFFFFF"/>
|
|
21
|
+
|
|
22
|
+
<text class="heading" x="78" y="76">Your app</text>
|
|
23
|
+
<text class="heading" x="548" y="76">GothamUI framework</text>
|
|
24
|
+
<text class="heading" x="1120" y="76">App experience</text>
|
|
25
|
+
|
|
26
|
+
<!-- App inputs -->
|
|
27
|
+
<g transform="translate(78 150)">
|
|
28
|
+
<rect class="line-icon" x="2" y="2" width="54" height="42" rx="6"/>
|
|
29
|
+
<path class="line-icon" d="M2 13H56M11 22H27V35H11ZM34 22H48M34 28H48M34 34H44"/>
|
|
30
|
+
<text class="label" x="92" y="22">Routes & views</text>
|
|
31
|
+
<text class="detail" x="92" y="48">Screens and navigation</text>
|
|
32
|
+
</g>
|
|
33
|
+
|
|
34
|
+
<g transform="translate(78 294)">
|
|
35
|
+
<rect class="line-icon" x="9" y="1" width="40" height="52" rx="5"/>
|
|
36
|
+
<path class="line-icon" d="M17 13H41M17 22H41M17 31H34M23 44H35"/>
|
|
37
|
+
<text class="label" x="92" y="22">Configuration</text>
|
|
38
|
+
<text class="detail" x="92" y="48">Theme, auth and settings</text>
|
|
39
|
+
</g>
|
|
40
|
+
|
|
41
|
+
<g transform="translate(78 438)">
|
|
42
|
+
<path class="line-icon" d="M29 2V10M29 46V54M2 28H10M48 28H56M10 9L16 15M42 41L48 47M48 9L42 15M16 41L10 47"/>
|
|
43
|
+
<circle class="line-icon" cx="29" cy="28" r="15"/>
|
|
44
|
+
<path class="line-icon" d="M22 28H36M29 21V35"/>
|
|
45
|
+
<text class="label" x="92" y="22">Domain logic</text>
|
|
46
|
+
<text class="detail" x="92" y="48">Product behavior and flows</text>
|
|
47
|
+
</g>
|
|
48
|
+
|
|
49
|
+
<g transform="translate(78 582)">
|
|
50
|
+
<ellipse class="line-icon" cx="29" cy="10" rx="22" ry="9"/>
|
|
51
|
+
<path class="line-icon" d="M7 10V45C7 50 17 54 29 54C41 54 51 50 51 45V10M7 27C7 32 17 36 29 36C41 36 51 32 51 27"/>
|
|
52
|
+
<text class="label" x="92" y="22">API & data</text>
|
|
53
|
+
<text class="detail" x="92" y="48">Services, content and media</text>
|
|
54
|
+
</g>
|
|
55
|
+
|
|
56
|
+
<!-- App input bracket -->
|
|
57
|
+
<g fill="none" stroke="#2F80ED" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">
|
|
58
|
+
<path d="M390 172H396C409 172 416 184 416 204V636C416 656 409 668 396 668H390"/>
|
|
59
|
+
<path d="M390 316H396C409 316 416 328 416 348"/>
|
|
60
|
+
<path d="M390 460H396C409 460 416 448 416 428"/>
|
|
61
|
+
<path d="M390 604H396C409 604 416 592 416 572"/>
|
|
62
|
+
<path d="M416 420H500M490 410L500 420L490 430"/>
|
|
63
|
+
</g>
|
|
64
|
+
|
|
65
|
+
<!-- GothamUI mark -->
|
|
66
|
+
<g transform="translate(724 164)">
|
|
67
|
+
<path d="M0 -63L55 -31V31L0 63L-55 31V-31L0 -63Z" fill="url(#brand)"/>
|
|
68
|
+
<path d="M-29 -18L0 -35L29 -18V-3H13V-9L0 -17L-13 -9V9L0 17L14 9H2V-7H31V19L0 37L-29 20V-18Z" fill="#FFFFFF"/>
|
|
69
|
+
</g>
|
|
70
|
+
<text x="724" y="259" text-anchor="middle" fill="#8167EE" font-family="Inter, ui-sans-serif, system-ui, sans-serif" font-size="35" font-weight="750">GothamUI</text>
|
|
71
|
+
<text x="724" y="288" text-anchor="middle" fill="#69707D" font-family="Inter, ui-sans-serif, system-ui, sans-serif" font-size="16">The complete presentation layer</text>
|
|
72
|
+
|
|
73
|
+
<!-- GothamUI services -->
|
|
74
|
+
<g transform="translate(550 340)">
|
|
75
|
+
<g transform="translate(0 0)">
|
|
76
|
+
<rect class="purple-icon" x="1" y="3" width="31" height="25" rx="4"/>
|
|
77
|
+
<path class="purple-icon" d="M1 11H32M9 19H16M22 19H26"/>
|
|
78
|
+
<text class="service" x="58" y="23">Components & layouts</text>
|
|
79
|
+
</g>
|
|
80
|
+
<g transform="translate(0 66)">
|
|
81
|
+
<path class="purple-icon" d="M2 17H31M23 9L31 17L23 25M10 9L2 17L10 25"/>
|
|
82
|
+
<text class="service" x="58" y="23">Routing & transitions</text>
|
|
83
|
+
</g>
|
|
84
|
+
<g transform="translate(0 132)">
|
|
85
|
+
<ellipse class="purple-icon" cx="17" cy="8" rx="14" ry="6"/>
|
|
86
|
+
<path class="purple-icon" d="M3 8V27C3 30 9 33 17 33C25 33 31 30 31 27V8M3 18C3 21 9 24 17 24C25 24 31 21 31 18"/>
|
|
87
|
+
<text class="service" x="58" y="23">State & session</text>
|
|
88
|
+
</g>
|
|
89
|
+
<g transform="translate(0 198)">
|
|
90
|
+
<path class="purple-icon" d="M3 4H31V30H3V4ZM9 11H25M9 18H21M9 25H17"/>
|
|
91
|
+
<text class="service" x="58" y="23">Forms & feedback</text>
|
|
92
|
+
</g>
|
|
93
|
+
<g transform="translate(0 264)">
|
|
94
|
+
<circle class="purple-icon" cx="17" cy="17" r="13"/>
|
|
95
|
+
<path class="purple-icon" d="M17 0V7M17 27V34M0 17H7M27 17H34M5 5L10 10M24 24L29 29M29 5L24 10M10 24L5 29"/>
|
|
96
|
+
<text class="service" x="58" y="23">Theme & responsive UI</text>
|
|
97
|
+
</g>
|
|
98
|
+
<g transform="translate(0 330)">
|
|
99
|
+
<circle class="purple-icon" cx="17" cy="17" r="15"/>
|
|
100
|
+
<path class="purple-icon" d="M4 17H30M17 2C22 7 24 12 24 17C24 22 22 27 17 32M17 2C12 7 10 12 10 17C10 22 12 27 17 32"/>
|
|
101
|
+
<text class="service" x="58" y="23">Localization & telemetry</text>
|
|
102
|
+
</g>
|
|
103
|
+
</g>
|
|
104
|
+
|
|
105
|
+
<!-- Output arrow -->
|
|
106
|
+
<path d="M930 420H992M982 410L992 420L982 430" fill="none" stroke="#2F80ED" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"/>
|
|
107
|
+
|
|
108
|
+
<!-- Experience distribution -->
|
|
109
|
+
<g fill="none" stroke="#14AFA0" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">
|
|
110
|
+
<path d="M1020 420V178C1020 160 1032 150 1050 150H1098"/>
|
|
111
|
+
<path d="M1020 290C1020 278 1032 270 1050 270H1098"/>
|
|
112
|
+
<path d="M1020 420H1098"/>
|
|
113
|
+
<path d="M1020 550C1020 562 1032 570 1050 570H1098"/>
|
|
114
|
+
<path d="M1020 420V662C1020 680 1032 690 1050 690H1098"/>
|
|
115
|
+
</g>
|
|
116
|
+
<g fill="#14AFA0">
|
|
117
|
+
<circle cx="1098" cy="150" r="6"/>
|
|
118
|
+
<circle cx="1098" cy="270" r="6"/>
|
|
119
|
+
<circle cx="1098" cy="420" r="6"/>
|
|
120
|
+
<circle cx="1098" cy="570" r="6"/>
|
|
121
|
+
<circle cx="1098" cy="690" r="6"/>
|
|
122
|
+
</g>
|
|
123
|
+
|
|
124
|
+
<!-- Experience outputs -->
|
|
125
|
+
<g transform="translate(1140 126)">
|
|
126
|
+
<rect class="teal-icon" x="1" y="2" width="48" height="35" rx="5"/>
|
|
127
|
+
<path class="teal-icon" d="M1 12H49M11 22H24M11 28H31M17 37V44M33 37V44M12 44H38"/>
|
|
128
|
+
<text class="label" x="78" y="22">Responsive screens</text>
|
|
129
|
+
<text class="detail" x="78" y="48">Mobile-first layouts</text>
|
|
130
|
+
</g>
|
|
131
|
+
|
|
132
|
+
<g transform="translate(1140 246)">
|
|
133
|
+
<path class="teal-icon" d="M1 3H48V42H1V3ZM1 13H48M11 22H23V33H11ZM30 22H39M30 28H39"/>
|
|
134
|
+
<text class="label" x="78" y="22">Consistent UI</text>
|
|
135
|
+
<text class="detail" x="78" y="48">Components and styling</text>
|
|
136
|
+
</g>
|
|
137
|
+
|
|
138
|
+
<g transform="translate(1140 396)">
|
|
139
|
+
<circle class="teal-icon" cx="24" cy="24" r="22"/>
|
|
140
|
+
<path class="teal-icon" d="M12 24H36M28 16L36 24L28 32"/>
|
|
141
|
+
<text class="label" x="78" y="22">Navigation & state</text>
|
|
142
|
+
<text class="detail" x="78" y="48">Routed, state-aware flows</text>
|
|
143
|
+
</g>
|
|
144
|
+
|
|
145
|
+
<g transform="translate(1140 546)">
|
|
146
|
+
<path class="teal-icon" d="M4 4H44V35H29L20 44V35H4V4Z"/>
|
|
147
|
+
<path class="teal-icon" d="M13 15H35M13 23H29"/>
|
|
148
|
+
<text class="label" x="78" y="22">Feedback</text>
|
|
149
|
+
<text class="detail" x="78" y="48">Forms, loading and alerts</text>
|
|
150
|
+
</g>
|
|
151
|
+
|
|
152
|
+
<g transform="translate(1140 666)">
|
|
153
|
+
<path class="teal-icon" d="M4 25C4 13 13 4 25 4C37 4 46 13 46 25C46 37 37 46 25 46H5L11 39C7 35 4 30 4 25Z"/>
|
|
154
|
+
<path class="teal-icon" d="M13 25H37M25 13C29 17 31 21 31 25C31 29 29 33 25 37M25 13C21 17 19 21 19 25C19 29 21 33 25 37"/>
|
|
155
|
+
<text class="label" x="78" y="22">Localized & observable</text>
|
|
156
|
+
<text class="detail" x="78" y="48">i18n and page-view telemetry</text>
|
|
157
|
+
</g>
|
|
158
|
+
|
|
159
|
+
</svg>
|
|
Binary file
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
<svg width="1400" height="420" viewBox="0 0 1400 420" xmlns="http://www.w3.org/2000/svg" role="img" aria-labelledby="title desc">
|
|
2
|
+
<title id="title">GothamUI Logo Concept</title>
|
|
3
|
+
<desc id="desc">A metallic geometric G icon with GothamUI wordmark.</desc>
|
|
4
|
+
<defs>
|
|
5
|
+
<linearGradient id="bg" x1="0" y1="0" x2="1" y2="1">
|
|
6
|
+
<stop offset="0" stop-color="#05070B"/>
|
|
7
|
+
<stop offset="0.55" stop-color="#0A1420"/>
|
|
8
|
+
<stop offset="1" stop-color="#05070B"/>
|
|
9
|
+
</linearGradient>
|
|
10
|
+
<linearGradient id="metal" x1="0" y1="0" x2="1" y2="1">
|
|
11
|
+
<stop offset="0" stop-color="#FFFFFF"/>
|
|
12
|
+
<stop offset="0.28" stop-color="#C9D1DA"/>
|
|
13
|
+
<stop offset="0.52" stop-color="#F7F9FC"/>
|
|
14
|
+
<stop offset="0.78" stop-color="#AAB4C0"/>
|
|
15
|
+
<stop offset="1" stop-color="#FFFFFF"/>
|
|
16
|
+
</linearGradient>
|
|
17
|
+
<linearGradient id="ui" x1="0" y1="0" x2="1" y2="0">
|
|
18
|
+
<stop offset="0" stop-color="#7B61FF"/>
|
|
19
|
+
<stop offset="1" stop-color="#00A7FF"/>
|
|
20
|
+
</linearGradient>
|
|
21
|
+
<filter id="shadow" x="-30%" y="-30%" width="160%" height="160%">
|
|
22
|
+
<feDropShadow dx="0" dy="18" stdDeviation="18" flood-color="#000000" flood-opacity="0.5"/>
|
|
23
|
+
<feDropShadow dx="0" dy="0" stdDeviation="8" flood-color="#7B61FF" flood-opacity="0.18"/>
|
|
24
|
+
</filter>
|
|
25
|
+
</defs>
|
|
26
|
+
|
|
27
|
+
<rect width="1400" height="520" fill="url(#bg)"/>
|
|
28
|
+
|
|
29
|
+
<g transform="translate(700 155)" filter="url(#shadow)">
|
|
30
|
+
<!-- Geometric Gotham G mark -->
|
|
31
|
+
<path d="M -88 -64 L 0 -115 L 88 -64 L 88 -20 L 44 -20 L 44 -39 L 0 -64 L -44 -39 L -44 39 L 0 64 L 55 32 L 8 32 L -24 12 L 8 -8 L 88 -8 L 88 58 L 0 115 L -88 64 Z"
|
|
32
|
+
fill="url(#metal)"/>
|
|
33
|
+
<path d="M 17 3 L 88 3 L 88 58 L 0 115 L 0 64 L 55 32 L 8 32 L -24 12 Z"
|
|
34
|
+
fill="#DDE4EC" opacity="0.55"/>
|
|
35
|
+
</g>
|
|
36
|
+
|
|
37
|
+
<g transform="translate(700 345)" text-anchor="middle">
|
|
38
|
+
<text x="0" y="0" font-family="Montserrat, Avenir Next, Arial, sans-serif" font-size="62" font-weight="700" letter-spacing="34" fill="#F7F9FC">
|
|
39
|
+
GOTHAM<tspan fill="url(#ui)">UI</tspan>
|
|
40
|
+
</text>
|
|
41
|
+
</g>
|
|
42
|
+
</svg>
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# Render performance
|
|
2
|
+
|
|
3
|
+
GothamUI uses shallow memoization around form controls, the code editor, Markdown, media and product collections, pricing, tabs, and application views. Lightweight structural components remain ordinary functions. State changes, context updates, and changed props must still render.
|
|
4
|
+
|
|
5
|
+
## Form isolation
|
|
6
|
+
|
|
7
|
+
Built-in text, checkbox, radio, select, and date fields subscribe to their own value, default value, and error through `useGothamFormField(name)`. The subscription adapter publishes committed React form state and preserves unchanged snapshots. Editing one field does not invalidate its siblings. Repeating the same value or clearing an absent error does not create a new form state.
|
|
8
|
+
|
|
9
|
+
`useGothamFormContext()` and render-function children retain access to the entire form. They intentionally update for cross-field UI. Custom controls can use `useGothamFormField` from `@nlabs/gothamui/form` when they only need one field. Existing direct form-context providers remain supported.
|
|
10
|
+
|
|
11
|
+
## Other render paths
|
|
12
|
+
|
|
13
|
+
- Gotham configuration is memoized without mutating shared defaults. Session updates retain router and translation instances.
|
|
14
|
+
- Table and row context values remain stable when only wrapper props change.
|
|
15
|
+
- Select labels are derived during rendering instead of synchronized through an additional state update.
|
|
16
|
+
- Inline Markdown is derived immediately. Remote content loads when its URL changes; template substitutions do not repeat the request, and obsolete responses are ignored.
|
|
17
|
+
- Chat scroll distance lives in a ref. Only down-button visibility changes use state; the rendered message list remains cached during scrolling.
|
|
18
|
+
- The date picker retains its initial fallback timestamp, so ordinary rendering cannot reset calendar navigation.
|
|
19
|
+
- Mobile controls subscribe to media-query changes. Breakpoint helper functions retain their identity until the breakpoint changes.
|
|
20
|
+
- Autocomplete invalidates obsolete requests when the query changes or the component unmounts.
|
|
21
|
+
|
|
22
|
+
## Consumer expectations
|
|
23
|
+
|
|
24
|
+
Update arrays and objects immutably. Reuse unchanged item objects and stable callbacks where practical. A newly created object, callback, or JSX child is a changed prop to React's shallow comparison. No deep comparator ignores updated callbacks or content.
|
|
25
|
+
|
|
26
|
+
These changes prevent the covered redundant update paths; they do not guarantee zero re-renders in every consuming application. Profile representative application interactions before adding more memoization or virtualization.
|
|
27
|
+
|
|
28
|
+
## Verification
|
|
29
|
+
|
|
30
|
+
- `npm test` runs the unit and render-isolation regression suite through Lex/Vitest.
|
|
31
|
+
- `npm test -- --collectCoverageFrom 'src/{components,views}/**/*.{ts,tsx}'` checks the existing coverage thresholds and exclusions.
|
|
32
|
+
- `lex test --e2e --e2eConfig ./playwright.config.ts` exercises desktop form editing, selection, password visibility, submission, and mobile native selection.
|
|
33
|
+
|
|
34
|
+
The installed Lex lint command expands its source glob through a shell and misses nested folders. A direct full-tree ESLint check also exposes an existing lint backlog, including a compatibility hook rule that incorrectly flags arrow-function components. The repository-wide lint result is not a clean baseline.
|
|
@@ -0,0 +1,42 @@
|
|
|
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
|
+
import { Flux } from '@nlabs/arkhamjs';
|
|
6
|
+
import { GothamConfiguration } from '../views/Gotham/GothamProvider.js';
|
|
7
|
+
import type { ReactElement } from 'react';
|
|
8
|
+
export interface GothamNotifyAction {
|
|
9
|
+
readonly icon?: string;
|
|
10
|
+
readonly label?: string;
|
|
11
|
+
readonly onClick: (key: string) => void;
|
|
12
|
+
}
|
|
13
|
+
export type GothamSeverity = 'error' | 'info' | 'success' | 'warning';
|
|
14
|
+
export interface GothamNotifyParams {
|
|
15
|
+
readonly actions?: GothamNotifyAction[];
|
|
16
|
+
readonly anchorOrigin?: {
|
|
17
|
+
horizontal: 'left' | 'center' | 'right';
|
|
18
|
+
vertical: 'top' | 'bottom';
|
|
19
|
+
};
|
|
20
|
+
readonly autoHideDuration?: number;
|
|
21
|
+
readonly key?: string;
|
|
22
|
+
readonly message?: ReactElement | string;
|
|
23
|
+
readonly severity?: GothamSeverity;
|
|
24
|
+
}
|
|
25
|
+
export interface NavParams {
|
|
26
|
+
path: string;
|
|
27
|
+
state?: Record<string, unknown>;
|
|
28
|
+
}
|
|
29
|
+
export declare const GothamActions: {
|
|
30
|
+
readonly getState: (...args: Parameters<typeof Flux.getState>) => unknown;
|
|
31
|
+
readonly init: () => Promise<import("@nlabs/arkhamjs").FluxAction>;
|
|
32
|
+
readonly loading: (isLoading: boolean, content?: string) => Promise<import("@nlabs/arkhamjs").FluxAction>;
|
|
33
|
+
readonly navBack: () => Promise<import("@nlabs/arkhamjs").FluxAction>;
|
|
34
|
+
readonly navForward: () => Promise<import("@nlabs/arkhamjs").FluxAction>;
|
|
35
|
+
readonly navGoto: (path: string, params?: Record<string, unknown>) => Promise<import("@nlabs/arkhamjs").FluxAction>;
|
|
36
|
+
readonly navReplace: (path: string, params?: Record<string, unknown>) => Promise<import("@nlabs/arkhamjs").FluxAction>;
|
|
37
|
+
readonly notify: (params: GothamNotifyParams) => Promise<import("@nlabs/arkhamjs").FluxAction>;
|
|
38
|
+
readonly notifyClose: () => Promise<import("@nlabs/arkhamjs").FluxAction>;
|
|
39
|
+
readonly setConfig: (config: GothamConfiguration) => Promise<import("@nlabs/arkhamjs").FluxAction>;
|
|
40
|
+
readonly signOut: () => Promise<import("@nlabs/arkhamjs").FluxAction>;
|
|
41
|
+
readonly updateTitle: (title: string, separator?: string) => Promise<import("@nlabs/arkhamjs").FluxAction>;
|
|
42
|
+
};
|
|
@@ -0,0 +1,67 @@
|
|
|
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 { Flux } from '@nlabs/arkhamjs';
|
|
5
|
+
import { isEmpty } from '@nlabs/utils';
|
|
6
|
+
import { Config } from '../config/appConfig.js';
|
|
7
|
+
import { GothamConstants } from '../constants/GothamConstants.js';
|
|
8
|
+
export const GothamActions = {
|
|
9
|
+
getState: (...args)=>Flux.getState(...args),
|
|
10
|
+
init: ()=>Flux.dispatch({
|
|
11
|
+
type: GothamConstants.INITIALIZE
|
|
12
|
+
}),
|
|
13
|
+
loading: (isLoading, content)=>Flux.dispatch({
|
|
14
|
+
content,
|
|
15
|
+
isLoading,
|
|
16
|
+
type: GothamConstants.LOADING
|
|
17
|
+
}),
|
|
18
|
+
navBack: ()=>Flux.dispatch({
|
|
19
|
+
type: GothamConstants.NAV_BACK
|
|
20
|
+
}),
|
|
21
|
+
navForward: ()=>Flux.dispatch({
|
|
22
|
+
type: GothamConstants.NAV_FORWARD
|
|
23
|
+
}),
|
|
24
|
+
navGoto: (path, params)=>Flux.dispatch({
|
|
25
|
+
params,
|
|
26
|
+
path,
|
|
27
|
+
type: GothamConstants.NAV_GOTO
|
|
28
|
+
}),
|
|
29
|
+
navReplace: (path, params)=>Flux.dispatch({
|
|
30
|
+
params,
|
|
31
|
+
path,
|
|
32
|
+
type: GothamConstants.NAV_REPLACE
|
|
33
|
+
}),
|
|
34
|
+
notify: (params)=>Flux.dispatch({
|
|
35
|
+
...params,
|
|
36
|
+
type: GothamConstants.NOTIFY_OPEN
|
|
37
|
+
}),
|
|
38
|
+
notifyClose: ()=>Flux.dispatch({
|
|
39
|
+
type: GothamConstants.NOTIFY_CLOSE
|
|
40
|
+
}),
|
|
41
|
+
setConfig: (config)=>Flux.dispatch({
|
|
42
|
+
config,
|
|
43
|
+
type: GothamConstants.SET_CONFIG
|
|
44
|
+
}),
|
|
45
|
+
signOut: ()=>Flux.dispatch({
|
|
46
|
+
type: GothamConstants.SIGN_OUT
|
|
47
|
+
}),
|
|
48
|
+
updateTitle: (title, separator)=>{
|
|
49
|
+
const appTitle = Config.get('app.title', '');
|
|
50
|
+
const titleSeparator = separator || Config.get('app.titleBarSeparator', '::');
|
|
51
|
+
if (!isEmpty(title) && appTitle !== title) {
|
|
52
|
+
document.title = [
|
|
53
|
+
title,
|
|
54
|
+
titleSeparator,
|
|
55
|
+
appTitle
|
|
56
|
+
].join(' ');
|
|
57
|
+
} else {
|
|
58
|
+
document.title = appTitle;
|
|
59
|
+
}
|
|
60
|
+
return Flux.dispatch({
|
|
61
|
+
title,
|
|
62
|
+
type: GothamConstants.UPDATE_TITLE
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L2dvdGhhbWpzL3NyYy9hY3Rpb25zL0dvdGhhbUFjdGlvbnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7Rmx1eH0gZnJvbSAnQG5sYWJzL2Fya2hhbWpzJztcbmltcG9ydCB7aXNFbXB0eX0gZnJvbSAnQG5sYWJzL3V0aWxzJztcblxuaW1wb3J0IHtDb25maWd9IGZyb20gJy4uL2NvbmZpZy9hcHBDb25maWcuanMnO1xuaW1wb3J0IHtHb3RoYW1Db25zdGFudHN9IGZyb20gJy4uL2NvbnN0YW50cy9Hb3RoYW1Db25zdGFudHMuanMnO1xuaW1wb3J0IHtHb3RoYW1Db25maWd1cmF0aW9ufSBmcm9tICcuLi92aWV3cy9Hb3RoYW0vR290aGFtUHJvdmlkZXIuanMnO1xuXG5pbXBvcnQgdHlwZSB7UmVhY3RFbGVtZW50fSBmcm9tICdyZWFjdCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgR290aGFtTm90aWZ5QWN0aW9uIHtcbiAgcmVhZG9ubHkgaWNvbj86IHN0cmluZztcbiAgcmVhZG9ubHkgbGFiZWw/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IG9uQ2xpY2s6IChrZXk6IHN0cmluZykgPT4gdm9pZDtcbn1cblxuZXhwb3J0IHR5cGUgR290aGFtU2V2ZXJpdHkgPSAnZXJyb3InIHwgJ2luZm8nIHwgJ3N1Y2Nlc3MnIHwgJ3dhcm5pbmcnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEdvdGhhbU5vdGlmeVBhcmFtcyB7XG4gIHJlYWRvbmx5IGFjdGlvbnM/OiBHb3RoYW1Ob3RpZnlBY3Rpb25bXTtcbiAgcmVhZG9ubHkgYW5jaG9yT3JpZ2luPzoge1xuICAgIGhvcml6b250YWw6ICdsZWZ0JyB8ICdjZW50ZXInIHwgJ3JpZ2h0JztcbiAgICB2ZXJ0aWNhbDogJ3RvcCcgfCAnYm90dG9tJztcbiAgfTtcbiAgcmVhZG9ubHkgYXV0b0hpZGVEdXJhdGlvbj86IG51bWJlcjtcbiAgcmVhZG9ubHkga2V5Pzogc3RyaW5nO1xuICByZWFkb25seSBtZXNzYWdlPzogUmVhY3RFbGVtZW50IHwgc3RyaW5nO1xuICByZWFkb25seSBzZXZlcml0eT86IEdvdGhhbVNldmVyaXR5O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5hdlBhcmFtcyB7XG4gIHBhdGg6IHN0cmluZztcbiAgc3RhdGU/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbn1cblxuZXhwb3J0IGNvbnN0IEdvdGhhbUFjdGlvbnMgPSB7XG4gIGdldFN0YXRlOiAoLi4uYXJnczogUGFyYW1ldGVyczx0eXBlb2YgRmx1eC5nZXRTdGF0ZT4pID0+IEZsdXguZ2V0U3RhdGUoLi4uYXJncyksXG4gIGluaXQ6ICgpID0+IEZsdXguZGlzcGF0Y2goe3R5cGU6IEdvdGhhbUNvbnN0YW50cy5JTklUSUFMSVpFfSksXG4gIGxvYWRpbmc6IChpc0xvYWRpbmc6IGJvb2xlYW4sIGNvbnRlbnQ/OiBzdHJpbmcpID0+XG4gICAgRmx1eC5kaXNwYXRjaCh7Y29udGVudCwgaXNMb2FkaW5nLCB0eXBlOiBHb3RoYW1Db25zdGFudHMuTE9BRElOR30pLFxuICBuYXZCYWNrOiAoKSA9PiBGbHV4LmRpc3BhdGNoKHt0eXBlOiBHb3RoYW1Db25zdGFudHMuTkFWX0JBQ0t9KSxcbiAgbmF2Rm9yd2FyZDogKCkgPT4gRmx1eC5kaXNwYXRjaCh7dHlwZTogR290aGFtQ29uc3RhbnRzLk5BVl9GT1JXQVJEfSksXG4gIG5hdkdvdG86IChwYXRoOiBzdHJpbmcsIHBhcmFtcz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+KSA9PlxuICAgIEZsdXguZGlzcGF0Y2goe3BhcmFtcywgcGF0aCwgdHlwZTogR290aGFtQ29uc3RhbnRzLk5BVl9HT1RPfSksXG4gIG5hdlJlcGxhY2U6IChwYXRoOiBzdHJpbmcsIHBhcmFtcz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+KSA9PlxuICAgIEZsdXguZGlzcGF0Y2goe3BhcmFtcywgcGF0aCwgdHlwZTogR290aGFtQ29uc3RhbnRzLk5BVl9SRVBMQUNFfSksXG4gIG5vdGlmeTogKHBhcmFtczogR290aGFtTm90aWZ5UGFyYW1zKSA9PlxuICAgIEZsdXguZGlzcGF0Y2goey4uLnBhcmFtcywgdHlwZTogR290aGFtQ29uc3RhbnRzLk5PVElGWV9PUEVOfSksXG4gIG5vdGlmeUNsb3NlOiAoKSA9PlxuICAgIEZsdXguZGlzcGF0Y2goe3R5cGU6IEdvdGhhbUNvbnN0YW50cy5OT1RJRllfQ0xPU0V9KSxcbiAgc2V0Q29uZmlnOiAoY29uZmlnOiBHb3RoYW1Db25maWd1cmF0aW9uKSA9PlxuICAgIEZsdXguZGlzcGF0Y2goe2NvbmZpZywgdHlwZTogR290aGFtQ29uc3RhbnRzLlNFVF9DT05GSUd9KSxcbiAgc2lnbk91dDogKCkgPT5cbiAgICBGbHV4LmRpc3BhdGNoKHt0eXBlOiBHb3RoYW1Db25zdGFudHMuU0lHTl9PVVR9KSxcbiAgdXBkYXRlVGl0bGU6ICh0aXRsZTogc3RyaW5nLCBzZXBhcmF0b3I/OiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCBhcHBUaXRsZSA9IENvbmZpZy5nZXQoJ2FwcC50aXRsZScsICcnKSBhcyBzdHJpbmc7XG4gICAgY29uc3QgdGl0bGVTZXBhcmF0b3IgPSBzZXBhcmF0b3IgfHwgQ29uZmlnLmdldCgnYXBwLnRpdGxlQmFyU2VwYXJhdG9yJywgJzo6JykgYXMgc3RyaW5nO1xuXG4gICAgaWYoIWlzRW1wdHkodGl0bGUpICYmIGFwcFRpdGxlICE9PSB0aXRsZSkge1xuICAgICAgZG9jdW1lbnQudGl0bGUgPSBbdGl0bGUsIHRpdGxlU2VwYXJhdG9yLCBhcHBUaXRsZV0uam9pbignICcpO1xuICAgIH0gZWxzZSB7XG4gICAgICBkb2N1bWVudC50aXRsZSA9IGFwcFRpdGxlO1xuICAgIH1cblxuICAgIHJldHVybiBGbHV4LmRpc3BhdGNoKHt0aXRsZSwgdHlwZTogR290aGFtQ29uc3RhbnRzLlVQREFURV9USVRMRX0pO1xuICB9XG59IGFzIGNvbnN0O1xuIl0sIm5hbWVzIjpbIkZsdXgiLCJpc0VtcHR5IiwiQ29uZmlnIiwiR290aGFtQ29uc3RhbnRzIiwiR290aGFtQWN0aW9ucyIsImdldFN0YXRlIiwiYXJncyIsImluaXQiLCJkaXNwYXRjaCIsInR5cGUiLCJJTklUSUFMSVpFIiwibG9hZGluZyIsImlzTG9hZGluZyIsImNvbnRlbnQiLCJMT0FESU5HIiwibmF2QmFjayIsIk5BVl9CQUNLIiwibmF2Rm9yd2FyZCIsIk5BVl9GT1JXQVJEIiwibmF2R290byIsInBhdGgiLCJwYXJhbXMiLCJOQVZfR09UTyIsIm5hdlJlcGxhY2UiLCJOQVZfUkVQTEFDRSIsIm5vdGlmeSIsIk5PVElGWV9PUEVOIiwibm90aWZ5Q2xvc2UiLCJOT1RJRllfQ0xPU0UiLCJzZXRDb25maWciLCJjb25maWciLCJTRVRfQ09ORklHIiwic2lnbk91dCIsIlNJR05fT1VUIiwidXBkYXRlVGl0bGUiLCJ0aXRsZSIsInNlcGFyYXRvciIsImFwcFRpdGxlIiwiZ2V0IiwidGl0bGVTZXBhcmF0b3IiLCJkb2N1bWVudCIsImpvaW4iLCJVUERBVEVfVElUTEUiXSwibWFwcGluZ3MiOiJBQUFBOzs7Q0FHQyxHQUNELFNBQVFBLElBQUksUUFBTyxrQkFBa0I7QUFDckMsU0FBUUMsT0FBTyxRQUFPLGVBQWU7QUFFckMsU0FBUUMsTUFBTSxRQUFPLHlCQUF5QjtBQUM5QyxTQUFRQyxlQUFlLFFBQU8sa0NBQWtDO0FBOEJoRSxPQUFPLE1BQU1DLGdCQUFnQjtJQUMzQkMsVUFBVSxDQUFDLEdBQUdDLE9BQTJDTixLQUFLSyxRQUFRLElBQUlDO0lBQzFFQyxNQUFNLElBQU1QLEtBQUtRLFFBQVEsQ0FBQztZQUFDQyxNQUFNTixnQkFBZ0JPLFVBQVU7UUFBQTtJQUMzREMsU0FBUyxDQUFDQyxXQUFvQkMsVUFDNUJiLEtBQUtRLFFBQVEsQ0FBQztZQUFDSztZQUFTRDtZQUFXSCxNQUFNTixnQkFBZ0JXLE9BQU87UUFBQTtJQUNsRUMsU0FBUyxJQUFNZixLQUFLUSxRQUFRLENBQUM7WUFBQ0MsTUFBTU4sZ0JBQWdCYSxRQUFRO1FBQUE7SUFDNURDLFlBQVksSUFBTWpCLEtBQUtRLFFBQVEsQ0FBQztZQUFDQyxNQUFNTixnQkFBZ0JlLFdBQVc7UUFBQTtJQUNsRUMsU0FBUyxDQUFDQyxNQUFjQyxTQUN0QnJCLEtBQUtRLFFBQVEsQ0FBQztZQUFDYTtZQUFRRDtZQUFNWCxNQUFNTixnQkFBZ0JtQixRQUFRO1FBQUE7SUFDN0RDLFlBQVksQ0FBQ0gsTUFBY0MsU0FDekJyQixLQUFLUSxRQUFRLENBQUM7WUFBQ2E7WUFBUUQ7WUFBTVgsTUFBTU4sZ0JBQWdCcUIsV0FBVztRQUFBO0lBQ2hFQyxRQUFRLENBQUNKLFNBQ1ByQixLQUFLUSxRQUFRLENBQUM7WUFBQyxHQUFHYSxNQUFNO1lBQUVaLE1BQU1OLGdCQUFnQnVCLFdBQVc7UUFBQTtJQUM3REMsYUFBYSxJQUNYM0IsS0FBS1EsUUFBUSxDQUFDO1lBQUNDLE1BQU1OLGdCQUFnQnlCLFlBQVk7UUFBQTtJQUNuREMsV0FBVyxDQUFDQyxTQUNWOUIsS0FBS1EsUUFBUSxDQUFDO1lBQUNzQjtZQUFRckIsTUFBTU4sZ0JBQWdCNEIsVUFBVTtRQUFBO0lBQ3pEQyxTQUFTLElBQ1BoQyxLQUFLUSxRQUFRLENBQUM7WUFBQ0MsTUFBTU4sZ0JBQWdCOEIsUUFBUTtRQUFBO0lBQy9DQyxhQUFhLENBQUNDLE9BQWVDO1FBQzNCLE1BQU1DLFdBQVduQyxPQUFPb0MsR0FBRyxDQUFDLGFBQWE7UUFDekMsTUFBTUMsaUJBQWlCSCxhQUFhbEMsT0FBT29DLEdBQUcsQ0FBQyx5QkFBeUI7UUFFeEUsSUFBRyxDQUFDckMsUUFBUWtDLFVBQVVFLGFBQWFGLE9BQU87WUFDeENLLFNBQVNMLEtBQUssR0FBRztnQkFBQ0E7Z0JBQU9JO2dCQUFnQkY7YUFBUyxDQUFDSSxJQUFJLENBQUM7UUFDMUQsT0FBTztZQUNMRCxTQUFTTCxLQUFLLEdBQUdFO1FBQ25CO1FBRUEsT0FBT3JDLEtBQUtRLFFBQVEsQ0FBQztZQUFDMkI7WUFBTzFCLE1BQU1OLGdCQUFnQnVDLFlBQVk7UUFBQTtJQUNqRTtBQUNGLEVBQVcifQ==
|
|
@@ -0,0 +1,48 @@
|
|
|
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 { Flux } from '@nlabs/arkhamjs';
|
|
5
|
+
import { MarkdownConstants } from '../constants/MarkdownConstants.js';
|
|
6
|
+
// import {get} from '@nlabs/rip-hunter';
|
|
7
|
+
// import js from 'highlight.js/lib/languages/javascript';
|
|
8
|
+
// import rehypeReact from 'rehype-react';
|
|
9
|
+
// import {remark} from 'remark';
|
|
10
|
+
// import RemarkLowlight from 'remark-react-lowlight';
|
|
11
|
+
// const githubSchema = require('hast-util-sanitize/lib/github.json');
|
|
12
|
+
// const schema = {
|
|
13
|
+
// ...githubSchema,
|
|
14
|
+
// attributes: {
|
|
15
|
+
// ...githubSchema.attributes,
|
|
16
|
+
// code: [
|
|
17
|
+
// ...(githubSchema.attributes.code || []),
|
|
18
|
+
// 'className'
|
|
19
|
+
// ]
|
|
20
|
+
// }
|
|
21
|
+
// };
|
|
22
|
+
export class MarkdownActions {
|
|
23
|
+
static clearExternal() {
|
|
24
|
+
return Flux.dispatch({
|
|
25
|
+
type: MarkdownConstants.CLEAR_EXTERNAL
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
static getExternal(url) {
|
|
29
|
+
return Promise.resolve(Flux.dispatch({
|
|
30
|
+
type: MarkdownConstants.GET_EXTERNAL
|
|
31
|
+
}));
|
|
32
|
+
// const content = Flux.getState(['app', 'external', url]);
|
|
33
|
+
// if(content) {
|
|
34
|
+
// return Flux.dispatch({content, type: MarkdownConstants.GET_EXTERNAL, url});
|
|
35
|
+
// }
|
|
36
|
+
// return get(url).then((content) => {
|
|
37
|
+
// const remarkOptions: any = {
|
|
38
|
+
// components: {
|
|
39
|
+
// code: new RemarkLowlight({js})
|
|
40
|
+
// }
|
|
41
|
+
// };
|
|
42
|
+
// const renderedContent = remark().use(rehypeReact, remarkOptions).processSync(content).result;
|
|
43
|
+
// return Flux.dispatch({content: renderedContent, type: MarkdownConstants.GET_EXTERNAL, url});
|
|
44
|
+
// });
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L2dvdGhhbWpzL3NyYy9hY3Rpb25zL01hcmtkb3duQWN0aW9ucy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxOC1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xuaW1wb3J0IHtGbHV4fSBmcm9tICdAbmxhYnMvYXJraGFtanMnO1xuXG5pbXBvcnQge01hcmtkb3duQ29uc3RhbnRzfSBmcm9tICcuLi9jb25zdGFudHMvTWFya2Rvd25Db25zdGFudHMuanMnO1xuXG4vLyBpbXBvcnQge2dldH0gZnJvbSAnQG5sYWJzL3JpcC1odW50ZXInO1xuLy8gaW1wb3J0IGpzIGZyb20gJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2phdmFzY3JpcHQnO1xuLy8gaW1wb3J0IHJlaHlwZVJlYWN0IGZyb20gJ3JlaHlwZS1yZWFjdCc7XG4vLyBpbXBvcnQge3JlbWFya30gZnJvbSAncmVtYXJrJztcbi8vIGltcG9ydCBSZW1hcmtMb3dsaWdodCBmcm9tICdyZW1hcmstcmVhY3QtbG93bGlnaHQnO1xuXG4vLyBjb25zdCBnaXRodWJTY2hlbWEgPSByZXF1aXJlKCdoYXN0LXV0aWwtc2FuaXRpemUvbGliL2dpdGh1Yi5qc29uJyk7XG5cbi8vIGNvbnN0IHNjaGVtYSA9IHtcbi8vICAgLi4uZ2l0aHViU2NoZW1hLFxuLy8gICBhdHRyaWJ1dGVzOiB7XG4vLyAgICAgLi4uZ2l0aHViU2NoZW1hLmF0dHJpYnV0ZXMsXG4vLyAgICAgY29kZTogW1xuLy8gICAgICAgLi4uKGdpdGh1YlNjaGVtYS5hdHRyaWJ1dGVzLmNvZGUgfHwgW10pLFxuLy8gICAgICAgJ2NsYXNzTmFtZSdcbi8vICAgICBdXG4vLyAgIH1cbi8vIH07XG5cbmV4cG9ydCBjbGFzcyBNYXJrZG93bkFjdGlvbnMge1xuICBzdGF0aWMgY2xlYXJFeHRlcm5hbCgpIHtcbiAgICByZXR1cm4gRmx1eC5kaXNwYXRjaCh7dHlwZTogTWFya2Rvd25Db25zdGFudHMuQ0xFQVJfRVhURVJOQUx9KTtcbiAgfVxuXG4gIHN0YXRpYyBnZXRFeHRlcm5hbCh1cmw6IHN0cmluZykge1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoRmx1eC5kaXNwYXRjaCh7dHlwZTogTWFya2Rvd25Db25zdGFudHMuR0VUX0VYVEVSTkFMfSkpO1xuICAgIC8vIGNvbnN0IGNvbnRlbnQgPSBGbHV4LmdldFN0YXRlKFsnYXBwJywgJ2V4dGVybmFsJywgdXJsXSk7XG5cbiAgICAvLyBpZihjb250ZW50KSB7XG4gICAgLy8gICByZXR1cm4gRmx1eC5kaXNwYXRjaCh7Y29udGVudCwgdHlwZTogTWFya2Rvd25Db25zdGFudHMuR0VUX0VYVEVSTkFMLCB1cmx9KTtcbiAgICAvLyB9XG5cbiAgICAvLyByZXR1cm4gZ2V0KHVybCkudGhlbigoY29udGVudCkgPT4ge1xuICAgIC8vICAgY29uc3QgcmVtYXJrT3B0aW9uczogYW55ID0ge1xuICAgIC8vICAgICBjb21wb25lbnRzOiB7XG4gICAgLy8gICAgICAgY29kZTogbmV3IFJlbWFya0xvd2xpZ2h0KHtqc30pXG4gICAgLy8gICAgIH1cbiAgICAvLyAgIH07XG4gICAgLy8gICBjb25zdCByZW5kZXJlZENvbnRlbnQgPSByZW1hcmsoKS51c2UocmVoeXBlUmVhY3QsIHJlbWFya09wdGlvbnMpLnByb2Nlc3NTeW5jKGNvbnRlbnQpLnJlc3VsdDtcblxuICAgIC8vICAgcmV0dXJuIEZsdXguZGlzcGF0Y2goe2NvbnRlbnQ6IHJlbmRlcmVkQ29udGVudCwgdHlwZTogTWFya2Rvd25Db25zdGFudHMuR0VUX0VYVEVSTkFMLCB1cmx9KTtcbiAgICAvLyB9KTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbIkZsdXgiLCJNYXJrZG93bkNvbnN0YW50cyIsIk1hcmtkb3duQWN0aW9ucyIsImNsZWFyRXh0ZXJuYWwiLCJkaXNwYXRjaCIsInR5cGUiLCJDTEVBUl9FWFRFUk5BTCIsImdldEV4dGVybmFsIiwidXJsIiwiUHJvbWlzZSIsInJlc29sdmUiLCJHRVRfRVhURVJOQUwiXSwibWFwcGluZ3MiOiJBQUFBOzs7Q0FHQyxHQUNELFNBQVFBLElBQUksUUFBTyxrQkFBa0I7QUFFckMsU0FBUUMsaUJBQWlCLFFBQU8sb0NBQW9DO0FBRXBFLHlDQUF5QztBQUN6QywwREFBMEQ7QUFDMUQsMENBQTBDO0FBQzFDLGlDQUFpQztBQUNqQyxzREFBc0Q7QUFFdEQsc0VBQXNFO0FBRXRFLG1CQUFtQjtBQUNuQixxQkFBcUI7QUFDckIsa0JBQWtCO0FBQ2xCLGtDQUFrQztBQUNsQyxjQUFjO0FBQ2QsaURBQWlEO0FBQ2pELG9CQUFvQjtBQUNwQixRQUFRO0FBQ1IsTUFBTTtBQUNOLEtBQUs7QUFFTCxPQUFPLE1BQU1DO0lBQ1gsT0FBT0MsZ0JBQWdCO1FBQ3JCLE9BQU9ILEtBQUtJLFFBQVEsQ0FBQztZQUFDQyxNQUFNSixrQkFBa0JLLGNBQWM7UUFBQTtJQUM5RDtJQUVBLE9BQU9DLFlBQVlDLEdBQVcsRUFBRTtRQUM5QixPQUFPQyxRQUFRQyxPQUFPLENBQUNWLEtBQUtJLFFBQVEsQ0FBQztZQUFDQyxNQUFNSixrQkFBa0JVLFlBQVk7UUFBQTtJQUMxRSwyREFBMkQ7SUFFM0QsZ0JBQWdCO0lBQ2hCLGdGQUFnRjtJQUNoRixJQUFJO0lBRUosc0NBQXNDO0lBQ3RDLGlDQUFpQztJQUNqQyxvQkFBb0I7SUFDcEIsdUNBQXVDO0lBQ3ZDLFFBQVE7SUFDUixPQUFPO0lBQ1Asa0dBQWtHO0lBRWxHLGlHQUFpRztJQUNqRyxNQUFNO0lBQ1I7QUFDRiJ9
|
package/lib/app.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/lib/app.js
ADDED
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* Copyright (c) 2018-Present, Nitrogen Labs, Inc.
|
|
4
|
+
* Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
|
|
5
|
+
*/ import { createRoot } from 'react-dom/client';
|
|
6
|
+
import { Svg } from './components/Svg/Svg.js';
|
|
7
|
+
import { createAwsRumDebugClient } from './utils/awsRum.js';
|
|
8
|
+
import { Gotham } from './views/Gotham/Gotham.js';
|
|
9
|
+
import { HomeView } from './views/HomeView/HomeView.js';
|
|
10
|
+
const awsRum = createAwsRumDebugClient();
|
|
11
|
+
const config = {
|
|
12
|
+
app: {
|
|
13
|
+
name: 'gothamui',
|
|
14
|
+
title: 'GothamUI'
|
|
15
|
+
},
|
|
16
|
+
awsRum,
|
|
17
|
+
translations: {
|
|
18
|
+
en: {
|
|
19
|
+
translation: {
|
|
20
|
+
// Basic translations to prevent i18n warnings
|
|
21
|
+
placeholder: 'Enter text...',
|
|
22
|
+
submit: 'Submit',
|
|
23
|
+
cancel: 'Cancel',
|
|
24
|
+
loading: 'Loading...',
|
|
25
|
+
error: 'Error',
|
|
26
|
+
success: 'Success'
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
routes: [
|
|
31
|
+
{
|
|
32
|
+
children: [
|
|
33
|
+
{
|
|
34
|
+
element: /*#__PURE__*/ _jsx(HomeView, {}),
|
|
35
|
+
path: '/home',
|
|
36
|
+
props: {
|
|
37
|
+
features: [
|
|
38
|
+
{
|
|
39
|
+
align: 'right',
|
|
40
|
+
details: 'Lex is a console line execution tool. Works out of the box for any React project, taking care of all your development needs. No need to install unit testing, transpilers, compilers, or even development servers. Install Lex globally and let go of all the grunt work, allowing you focus on coding your app.',
|
|
41
|
+
image: /*#__PURE__*/ _jsx("img", {
|
|
42
|
+
src: "http://lex.nitrogenlabs.com/img/screenshot-1.png"
|
|
43
|
+
}),
|
|
44
|
+
title: 'What is Lex?'
|
|
45
|
+
}
|
|
46
|
+
],
|
|
47
|
+
footer: {
|
|
48
|
+
copyright: 'Copyright © 2018 Nitrogen Labs, Inc.',
|
|
49
|
+
logo: /*#__PURE__*/ _jsx(Svg, {
|
|
50
|
+
name: "gotham-logo",
|
|
51
|
+
width: 60,
|
|
52
|
+
height: 60
|
|
53
|
+
}),
|
|
54
|
+
menu: [
|
|
55
|
+
{
|
|
56
|
+
label: 'Documentation',
|
|
57
|
+
menu: [
|
|
58
|
+
{
|
|
59
|
+
label: 'About',
|
|
60
|
+
url: '/about'
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
label: 'Getting Started',
|
|
64
|
+
url: '/gettingStarted'
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
label: 'Configuration',
|
|
68
|
+
url: '/config'
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
label: 'Setup',
|
|
72
|
+
url: '/setup'
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
label: 'API Reference',
|
|
76
|
+
url: '/api'
|
|
77
|
+
}
|
|
78
|
+
]
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
label: 'Community',
|
|
82
|
+
menu: [
|
|
83
|
+
{
|
|
84
|
+
label: 'StackOverflow',
|
|
85
|
+
url: 'http://stackoverflow.com/questions/tagged/lexjs'
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
label: 'Chat',
|
|
89
|
+
url: 'https://discord.gg/Ttgev58'
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
label: 'Facebook',
|
|
93
|
+
url: 'https://www.facebook.com/nitrogenlabs'
|
|
94
|
+
}
|
|
95
|
+
]
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
label: 'More',
|
|
99
|
+
menu: [
|
|
100
|
+
{
|
|
101
|
+
label: 'NPM',
|
|
102
|
+
url: 'https://npmjs.com/@nlabs/gothamui'
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
label: 'Git',
|
|
106
|
+
url: 'https://github.com/nitrogenlabs/gotham'
|
|
107
|
+
}
|
|
108
|
+
]
|
|
109
|
+
}
|
|
110
|
+
]
|
|
111
|
+
},
|
|
112
|
+
promoRow: {
|
|
113
|
+
list: [
|
|
114
|
+
{
|
|
115
|
+
details: 'Bundling your app with Webpack 4!',
|
|
116
|
+
image: /*#__PURE__*/ _jsx(Svg, {
|
|
117
|
+
name: "gotham-logo",
|
|
118
|
+
width: 50,
|
|
119
|
+
height: 50
|
|
120
|
+
}),
|
|
121
|
+
title: 'Webpack'
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
details: 'Transpile ES-next, Flow and Typescript',
|
|
125
|
+
image: /*#__PURE__*/ _jsx(Svg, {
|
|
126
|
+
name: "gotham-logo",
|
|
127
|
+
width: 50,
|
|
128
|
+
height: 50
|
|
129
|
+
}),
|
|
130
|
+
title: 'Babel'
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
details: 'Unit Test has never been easier.',
|
|
134
|
+
image: /*#__PURE__*/ _jsx(Svg, {
|
|
135
|
+
name: "gotham-logo",
|
|
136
|
+
width: 50,
|
|
137
|
+
height: 50
|
|
138
|
+
}),
|
|
139
|
+
title: 'Jest'
|
|
140
|
+
}
|
|
141
|
+
]
|
|
142
|
+
},
|
|
143
|
+
splash: {
|
|
144
|
+
backgroundImage: 'http://lex.nitrogenlabs.com/img/bg-image.jpg',
|
|
145
|
+
backgroundTextColor: '#fff',
|
|
146
|
+
buttons: [
|
|
147
|
+
{
|
|
148
|
+
label: 'Quick Start',
|
|
149
|
+
url: '/quickStart'
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
label: 'API',
|
|
153
|
+
url: '/api'
|
|
154
|
+
}
|
|
155
|
+
],
|
|
156
|
+
image: /*#__PURE__*/ _jsx(Svg, {
|
|
157
|
+
name: "gotham-logo",
|
|
158
|
+
width: 130,
|
|
159
|
+
height: 130
|
|
160
|
+
})
|
|
161
|
+
},
|
|
162
|
+
title: 'Welcome'
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
],
|
|
166
|
+
element: /*#__PURE__*/ _jsx(HomeView, {}),
|
|
167
|
+
index: false,
|
|
168
|
+
path: '/',
|
|
169
|
+
props: {
|
|
170
|
+
topBar: {
|
|
171
|
+
logo: /*#__PURE__*/ _jsx(Svg, {
|
|
172
|
+
name: "gotham",
|
|
173
|
+
width: 175,
|
|
174
|
+
height: 50
|
|
175
|
+
}),
|
|
176
|
+
menu: [
|
|
177
|
+
{
|
|
178
|
+
label: 'Sign In',
|
|
179
|
+
url: '/signIn'
|
|
180
|
+
},
|
|
181
|
+
{
|
|
182
|
+
label: 'Sign Up',
|
|
183
|
+
url: '/signUp'
|
|
184
|
+
}
|
|
185
|
+
],
|
|
186
|
+
solidTextColor: '#fff',
|
|
187
|
+
transparentTextColor: '#fff'
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
]
|
|
192
|
+
};
|
|
193
|
+
const root = createRoot(document.getElementById('app'));
|
|
194
|
+
root.render(/*#__PURE__*/ _jsx(Gotham, {
|
|
195
|
+
config: config
|
|
196
|
+
}));
|
|
197
|
+
|
|
198
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L2dvdGhhbWpzL3NyYy9hcHAudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQge2NyZWF0ZVJvb3R9IGZyb20gJ3JlYWN0LWRvbS9jbGllbnQnO1xuXG5pbXBvcnQge1N2Z30gZnJvbSAnLi9jb21wb25lbnRzL1N2Zy9TdmcuanMnO1xuaW1wb3J0IHtjcmVhdGVBd3NSdW1EZWJ1Z0NsaWVudH0gZnJvbSAnLi91dGlscy9hd3NSdW0uanMnO1xuaW1wb3J0IHtHb3RoYW19IGZyb20gJy4vdmlld3MvR290aGFtL0dvdGhhbS5qcyc7XG5pbXBvcnQge0hvbWVWaWV3fSBmcm9tICcuL3ZpZXdzL0hvbWVWaWV3L0hvbWVWaWV3LmpzJztcblxuaW1wb3J0IHR5cGUge0dvdGhhbUNvbmZpZ3VyYXRpb259IGZyb20gJy4vdmlld3MvR290aGFtL0dvdGhhbVByb3ZpZGVyLmpzJztcblxuY29uc3QgYXdzUnVtID0gY3JlYXRlQXdzUnVtRGVidWdDbGllbnQoKTtcblxuY29uc3QgY29uZmlnOiBHb3RoYW1Db25maWd1cmF0aW9uID0ge1xuICBhcHA6IHtcbiAgICBuYW1lOiAnZ290aGFtdWknLFxuICAgIHRpdGxlOiAnR290aGFtVUknXG4gIH0sXG4gIGF3c1J1bSxcbiAgdHJhbnNsYXRpb25zOiB7XG4gICAgZW46IHtcbiAgICAgIHRyYW5zbGF0aW9uOiB7XG4gICAgICAgIC8vIEJhc2ljIHRyYW5zbGF0aW9ucyB0byBwcmV2ZW50IGkxOG4gd2FybmluZ3NcbiAgICAgICAgcGxhY2Vob2xkZXI6ICdFbnRlciB0ZXh0Li4uJyxcbiAgICAgICAgc3VibWl0OiAnU3VibWl0JyxcbiAgICAgICAgY2FuY2VsOiAnQ2FuY2VsJyxcbiAgICAgICAgbG9hZGluZzogJ0xvYWRpbmcuLi4nLFxuICAgICAgICBlcnJvcjogJ0Vycm9yJyxcbiAgICAgICAgc3VjY2VzczogJ1N1Y2Nlc3MnXG4gICAgICB9XG4gICAgfVxuICB9LFxuICByb3V0ZXM6IFtcbiAgICB7XG4gICAgICBjaGlsZHJlbjogW1xuICAgICAgICB7XG4gICAgICAgICAgZWxlbWVudDogPEhvbWVWaWV3IC8+LFxuICAgICAgICAgIHBhdGg6ICcvaG9tZScsXG4gICAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgIGZlYXR1cmVzOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBhbGlnbjogJ3JpZ2h0JyxcbiAgICAgICAgICAgICAgICBkZXRhaWxzOiAnTGV4IGlzIGEgY29uc29sZSBsaW5lIGV4ZWN1dGlvbiB0b29sLiBXb3JrcyBvdXQgb2YgdGhlIGJveCBmb3IgYW55IFJlYWN0IHByb2plY3QsIHRha2luZyBjYXJlIG9mIGFsbCB5b3VyIGRldmVsb3BtZW50IG5lZWRzLiBObyBuZWVkIHRvIGluc3RhbGwgdW5pdCB0ZXN0aW5nLCB0cmFuc3BpbGVycywgY29tcGlsZXJzLCBvciBldmVuIGRldmVsb3BtZW50IHNlcnZlcnMuIEluc3RhbGwgTGV4IGdsb2JhbGx5IGFuZCBsZXQgZ28gb2YgYWxsIHRoZSBncnVudCB3b3JrLCBhbGxvd2luZyB5b3UgZm9jdXMgb24gY29kaW5nIHlvdXIgYXBwLicsXG4gICAgICAgICAgICAgICAgaW1hZ2U6IDxpbWcgc3JjPVwiaHR0cDovL2xleC5uaXRyb2dlbmxhYnMuY29tL2ltZy9zY3JlZW5zaG90LTEucG5nXCIgLz4sXG4gICAgICAgICAgICAgICAgdGl0bGU6ICdXaGF0IGlzIExleD8nXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBmb290ZXI6IHtcbiAgICAgICAgICAgICAgY29weXJpZ2h0OiAnQ29weXJpZ2h0ICZjb3B5OyAyMDE4IE5pdHJvZ2VuIExhYnMsIEluYy4nLFxuICAgICAgICAgICAgICBsb2dvOiA8U3ZnIG5hbWU9XCJnb3RoYW0tbG9nb1wiIHdpZHRoPXs2MH0gaGVpZ2h0PXs2MH0gLz4sXG4gICAgICAgICAgICAgIG1lbnU6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBsYWJlbDogJ0RvY3VtZW50YXRpb24nLFxuICAgICAgICAgICAgICAgICAgbWVudTogW1xuICAgICAgICAgICAgICAgICAgICB7bGFiZWw6ICdBYm91dCcsIHVybDogJy9hYm91dCd9LFxuICAgICAgICAgICAgICAgICAgICB7bGFiZWw6ICdHZXR0aW5nIFN0YXJ0ZWQnLCB1cmw6ICcvZ2V0dGluZ1N0YXJ0ZWQnfSxcbiAgICAgICAgICAgICAgICAgICAge2xhYmVsOiAnQ29uZmlndXJhdGlvbicsIHVybDogJy9jb25maWcnfSxcbiAgICAgICAgICAgICAgICAgICAge2xhYmVsOiAnU2V0dXAnLCB1cmw6ICcvc2V0dXAnfSxcbiAgICAgICAgICAgICAgICAgICAge2xhYmVsOiAnQVBJIFJlZmVyZW5jZScsIHVybDogJy9hcGknfVxuICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgbGFiZWw6ICdDb21tdW5pdHknLFxuICAgICAgICAgICAgICAgICAgbWVudTogW1xuICAgICAgICAgICAgICAgICAgICB7bGFiZWw6ICdTdGFja092ZXJmbG93JywgdXJsOiAnaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy90YWdnZWQvbGV4anMnfSxcbiAgICAgICAgICAgICAgICAgICAge2xhYmVsOiAnQ2hhdCcsIHVybDogJ2h0dHBzOi8vZGlzY29yZC5nZy9UdGdldjU4J30sXG4gICAgICAgICAgICAgICAgICAgIHtsYWJlbDogJ0ZhY2Vib29rJywgdXJsOiAnaHR0cHM6Ly93d3cuZmFjZWJvb2suY29tL25pdHJvZ2VubGFicyd9XG4gICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBsYWJlbDogJ01vcmUnLFxuICAgICAgICAgICAgICAgICAgbWVudTogW1xuICAgICAgICAgICAgICAgICAgICB7bGFiZWw6ICdOUE0nLCB1cmw6ICdodHRwczovL25wbWpzLmNvbS9AbmxhYnMvZ290aGFtdWknfSxcbiAgICAgICAgICAgICAgICAgICAge2xhYmVsOiAnR2l0JywgdXJsOiAnaHR0cHM6Ly9naXRodWIuY29tL25pdHJvZ2VubGFicy9nb3RoYW0nfVxuICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHByb21vUm93OiB7XG4gICAgICAgICAgICAgIGxpc3Q6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBkZXRhaWxzOiAnQnVuZGxpbmcgeW91ciBhcHAgd2l0aCBXZWJwYWNrIDQhJyxcbiAgICAgICAgICAgICAgICAgIGltYWdlOiA8U3ZnIG5hbWU9XCJnb3RoYW0tbG9nb1wiIHdpZHRoPXs1MH0gaGVpZ2h0PXs1MH0gLz4sXG4gICAgICAgICAgICAgICAgICB0aXRsZTogJ1dlYnBhY2snXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBkZXRhaWxzOiAnVHJhbnNwaWxlIEVTLW5leHQsIEZsb3cgYW5kIFR5cGVzY3JpcHQnLFxuICAgICAgICAgICAgICAgICAgaW1hZ2U6IDxTdmcgbmFtZT1cImdvdGhhbS1sb2dvXCIgd2lkdGg9ezUwfSBoZWlnaHQ9ezUwfSAvPixcbiAgICAgICAgICAgICAgICAgIHRpdGxlOiAnQmFiZWwnXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBkZXRhaWxzOiAnVW5pdCBUZXN0IGhhcyBuZXZlciBiZWVuIGVhc2llci4nLFxuICAgICAgICAgICAgICAgICAgaW1hZ2U6IDxTdmcgbmFtZT1cImdvdGhhbS1sb2dvXCIgd2lkdGg9ezUwfSBoZWlnaHQ9ezUwfSAvPixcbiAgICAgICAgICAgICAgICAgIHRpdGxlOiAnSmVzdCdcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzcGxhc2g6IHtcbiAgICAgICAgICAgICAgYmFja2dyb3VuZEltYWdlOiAnaHR0cDovL2xleC5uaXRyb2dlbmxhYnMuY29tL2ltZy9iZy1pbWFnZS5qcGcnLFxuICAgICAgICAgICAgICBiYWNrZ3JvdW5kVGV4dENvbG9yOiAnI2ZmZicsXG4gICAgICAgICAgICAgIGJ1dHRvbnM6IFtcbiAgICAgICAgICAgICAgICB7bGFiZWw6ICdRdWljayBTdGFydCcsIHVybDogJy9xdWlja1N0YXJ0J30sXG4gICAgICAgICAgICAgICAge2xhYmVsOiAnQVBJJywgdXJsOiAnL2FwaSd9XG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIGltYWdlOiA8U3ZnIG5hbWU9XCJnb3RoYW0tbG9nb1wiIHdpZHRoPXsxMzB9IGhlaWdodD17MTMwfSAvPlxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRpdGxlOiAnV2VsY29tZSdcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBlbGVtZW50OiA8SG9tZVZpZXcgLz4sXG4gICAgICBpbmRleDogZmFsc2UsXG4gICAgICBwYXRoOiAnLycsXG4gICAgICBwcm9wczoge1xuICAgICAgICB0b3BCYXI6IHtcbiAgICAgICAgICBsb2dvOiA8U3ZnIG5hbWU9XCJnb3RoYW1cIiB3aWR0aD17MTc1fSBoZWlnaHQ9ezUwfSAvPixcbiAgICAgICAgICBtZW51OiBbXG4gICAgICAgICAgICB7bGFiZWw6ICdTaWduIEluJywgdXJsOiAnL3NpZ25Jbid9LFxuICAgICAgICAgICAge2xhYmVsOiAnU2lnbiBVcCcsIHVybDogJy9zaWduVXAnfVxuICAgICAgICAgIF0sXG4gICAgICAgICAgc29saWRUZXh0Q29sb3I6ICcjZmZmJyxcbiAgICAgICAgICB0cmFuc3BhcmVudFRleHRDb2xvcjogJyNmZmYnXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIF1cbn07XG5cbmNvbnN0IHJvb3QgPSBjcmVhdGVSb290KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhcHAnKSBhcyBIVE1MRWxlbWVudCk7XG5yb290LnJlbmRlcig8R290aGFtIGNvbmZpZz17Y29uZmlnfSAvPik7XG4iXSwibmFtZXMiOlsiY3JlYXRlUm9vdCIsIlN2ZyIsImNyZWF0ZUF3c1J1bURlYnVnQ2xpZW50IiwiR290aGFtIiwiSG9tZVZpZXciLCJhd3NSdW0iLCJjb25maWciLCJhcHAiLCJuYW1lIiwidGl0bGUiLCJ0cmFuc2xhdGlvbnMiLCJlbiIsInRyYW5zbGF0aW9uIiwicGxhY2Vob2xkZXIiLCJzdWJtaXQiLCJjYW5jZWwiLCJsb2FkaW5nIiwiZXJyb3IiLCJzdWNjZXNzIiwicm91dGVzIiwiY2hpbGRyZW4iLCJlbGVtZW50IiwicGF0aCIsInByb3BzIiwiZmVhdHVyZXMiLCJhbGlnbiIsImRldGFpbHMiLCJpbWFnZSIsImltZyIsInNyYyIsImZvb3RlciIsImNvcHlyaWdodCIsImxvZ28iLCJ3aWR0aCIsImhlaWdodCIsIm1lbnUiLCJsYWJlbCIsInVybCIsInByb21vUm93IiwibGlzdCIsInNwbGFzaCIsImJhY2tncm91bmRJbWFnZSIsImJhY2tncm91bmRUZXh0Q29sb3IiLCJidXR0b25zIiwiaW5kZXgiLCJ0b3BCYXIiLCJzb2xpZFRleHRDb2xvciIsInRyYW5zcGFyZW50VGV4dENvbG9yIiwicm9vdCIsImRvY3VtZW50IiwiZ2V0RWxlbWVudEJ5SWQiLCJyZW5kZXIiXSwibWFwcGluZ3MiOiI7QUFBQTs7O0NBR0MsR0FDRCxTQUFRQSxVQUFVLFFBQU8sbUJBQW1CO0FBRTVDLFNBQVFDLEdBQUcsUUFBTywwQkFBMEI7QUFDNUMsU0FBUUMsdUJBQXVCLFFBQU8sb0JBQW9CO0FBQzFELFNBQVFDLE1BQU0sUUFBTywyQkFBMkI7QUFDaEQsU0FBUUMsUUFBUSxRQUFPLCtCQUErQjtBQUl0RCxNQUFNQyxTQUFTSDtBQUVmLE1BQU1JLFNBQThCO0lBQ2xDQyxLQUFLO1FBQ0hDLE1BQU07UUFDTkMsT0FBTztJQUNUO0lBQ0FKO0lBQ0FLLGNBQWM7UUFDWkMsSUFBSTtZQUNGQyxhQUFhO2dCQUNYLDhDQUE4QztnQkFDOUNDLGFBQWE7Z0JBQ2JDLFFBQVE7Z0JBQ1JDLFFBQVE7Z0JBQ1JDLFNBQVM7Z0JBQ1RDLE9BQU87Z0JBQ1BDLFNBQVM7WUFDWDtRQUNGO0lBQ0Y7SUFDQUMsUUFBUTtRQUNOO1lBQ0VDLFVBQVU7Z0JBQ1I7b0JBQ0VDLHVCQUFTLEtBQUNqQjtvQkFDVmtCLE1BQU07b0JBQ05DLE9BQU87d0JBQ0xDLFVBQVU7NEJBQ1I7Z0NBQ0VDLE9BQU87Z0NBQ1BDLFNBQVM7Z0NBQ1RDLHFCQUFPLEtBQUNDO29DQUFJQyxLQUFJOztnQ0FDaEJwQixPQUFPOzRCQUNUO3lCQUNEO3dCQUNEcUIsUUFBUTs0QkFDTkMsV0FBVzs0QkFDWEMsb0JBQU0sS0FBQy9CO2dDQUFJTyxNQUFLO2dDQUFjeUIsT0FBTztnQ0FBSUMsUUFBUTs7NEJBQ2pEQyxNQUFNO2dDQUNKO29DQUNFQyxPQUFPO29DQUNQRCxNQUFNO3dDQUNKOzRDQUFDQyxPQUFPOzRDQUFTQyxLQUFLO3dDQUFRO3dDQUM5Qjs0Q0FBQ0QsT0FBTzs0Q0FBbUJDLEtBQUs7d0NBQWlCO3dDQUNqRDs0Q0FBQ0QsT0FBTzs0Q0FBaUJDLEtBQUs7d0NBQVM7d0NBQ3ZDOzRDQUFDRCxPQUFPOzRDQUFTQyxLQUFLO3dDQUFRO3dDQUM5Qjs0Q0FBQ0QsT0FBTzs0Q0FBaUJDLEtBQUs7d0NBQU07cUNBQ3JDO2dDQUNIO2dDQUNBO29DQUNFRCxPQUFPO29DQUNQRCxNQUFNO3dDQUNKOzRDQUFDQyxPQUFPOzRDQUFpQkMsS0FBSzt3Q0FBaUQ7d0NBQy9FOzRDQUFDRCxPQUFPOzRDQUFRQyxLQUFLO3dDQUE0Qjt3Q0FDakQ7NENBQUNELE9BQU87NENBQVlDLEtBQUs7d0NBQXVDO3FDQUNqRTtnQ0FDSDtnQ0FDQTtvQ0FDRUQsT0FBTztvQ0FDUEQsTUFBTTt3Q0FDSjs0Q0FBQ0MsT0FBTzs0Q0FBT0MsS0FBSzt3Q0FBbUM7d0NBQ3ZEOzRDQUFDRCxPQUFPOzRDQUFPQyxLQUFLO3dDQUF3QztxQ0FDN0Q7Z0NBQ0g7NkJBQ0Q7d0JBQ0g7d0JBQ0FDLFVBQVU7NEJBQ1JDLE1BQU07Z0NBQ0o7b0NBQ0ViLFNBQVM7b0NBQ1RDLHFCQUFPLEtBQUMxQjt3Q0FBSU8sTUFBSzt3Q0FBY3lCLE9BQU87d0NBQUlDLFFBQVE7O29DQUNsRHpCLE9BQU87Z0NBQ1Q7Z0NBQ0E7b0NBQ0VpQixTQUFTO29DQUNUQyxxQkFBTyxLQUFDMUI7d0NBQUlPLE1BQUs7d0NBQWN5QixPQUFPO3dDQUFJQyxRQUFROztvQ0FDbER6QixPQUFPO2dDQUNUO2dDQUNBO29DQUNFaUIsU0FBUztvQ0FDVEMscUJBQU8sS0FBQzFCO3dDQUFJTyxNQUFLO3dDQUFjeUIsT0FBTzt3Q0FBSUMsUUFBUTs7b0NBQ2xEekIsT0FBTztnQ0FDVDs2QkFDRDt3QkFDSDt3QkFDQStCLFFBQVE7NEJBQ05DLGlCQUFpQjs0QkFDakJDLHFCQUFxQjs0QkFDckJDLFNBQVM7Z0NBQ1A7b0NBQUNQLE9BQU87b0NBQWVDLEtBQUs7Z0NBQWE7Z0NBQ3pDO29DQUFDRCxPQUFPO29DQUFPQyxLQUFLO2dDQUFNOzZCQUMzQjs0QkFDRFYscUJBQU8sS0FBQzFCO2dDQUFJTyxNQUFLO2dDQUFjeUIsT0FBTztnQ0FBS0MsUUFBUTs7d0JBQ3JEO3dCQUNBekIsT0FBTztvQkFDVDtnQkFDRjthQUNEO1lBQ0RZLHVCQUFTLEtBQUNqQjtZQUNWd0MsT0FBTztZQUNQdEIsTUFBTTtZQUNOQyxPQUFPO2dCQUNMc0IsUUFBUTtvQkFDTmIsb0JBQU0sS0FBQy9CO3dCQUFJTyxNQUFLO3dCQUFTeUIsT0FBTzt3QkFBS0MsUUFBUTs7b0JBQzdDQyxNQUFNO3dCQUNKOzRCQUFDQyxPQUFPOzRCQUFXQyxLQUFLO3dCQUFTO3dCQUNqQzs0QkFBQ0QsT0FBTzs0QkFBV0MsS0FBSzt3QkFBUztxQkFDbEM7b0JBQ0RTLGdCQUFnQjtvQkFDaEJDLHNCQUFzQjtnQkFDeEI7WUFDRjtRQUNGO0tBQ0Q7QUFDSDtBQUVBLE1BQU1DLE9BQU9oRCxXQUFXaUQsU0FBU0MsY0FBYyxDQUFDO0FBQ2hERixLQUFLRyxNQUFNLGVBQUMsS0FBQ2hEO0lBQU9HLFFBQVFBIn0=
|