@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,338 @@
|
|
|
1
|
+
# Getting Started with GothamUI
|
|
2
|
+
|
|
3
|
+
This guide will help you quickly set up a new project with GothamUI and understand its core concepts.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
Start by installing GothamUI and its peer dependencies:
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
# Using npm
|
|
11
|
+
npm install @nlabs/gothamui @nlabs/arkhamjs @nlabs/arkhamjs-middleware-logger @nlabs/arkhamjs-storage-browser @nlabs/arkhamjs-utils-react zod react-i18next i18next
|
|
12
|
+
|
|
13
|
+
# Using yarn
|
|
14
|
+
yarn add @nlabs/gothamui @nlabs/arkhamjs @nlabs/arkhamjs-middleware-logger @nlabs/arkhamjs-storage-browser @nlabs/arkhamjs-utils-react zod react-i18next i18next
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## Creating Your First App
|
|
18
|
+
|
|
19
|
+
### 1. Set up your entry point
|
|
20
|
+
|
|
21
|
+
Create an `index.tsx` (or `index.jsx`) file:
|
|
22
|
+
|
|
23
|
+
```jsx
|
|
24
|
+
import { createRoot } from 'react-dom/client';
|
|
25
|
+
import { Gotham } from '@nlabs/gothamui';
|
|
26
|
+
import { HomeView } from './views/HomeView';
|
|
27
|
+
|
|
28
|
+
// Define your application configuration
|
|
29
|
+
const config = {
|
|
30
|
+
app: {
|
|
31
|
+
name: 'my-app',
|
|
32
|
+
title: 'My First GothamUI App'
|
|
33
|
+
},
|
|
34
|
+
routes: [
|
|
35
|
+
{
|
|
36
|
+
path: '/',
|
|
37
|
+
element: <HomeView />,
|
|
38
|
+
index: true
|
|
39
|
+
}
|
|
40
|
+
]
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
// Render your application
|
|
44
|
+
const root = createRoot(document.getElementById('root'));
|
|
45
|
+
root.render(<Gotham config={config} />);
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### 2. Create a simple view
|
|
49
|
+
|
|
50
|
+
Create `views/HomeView.tsx`:
|
|
51
|
+
|
|
52
|
+
```jsx
|
|
53
|
+
import { Button } from '@nlabs/gothamui';
|
|
54
|
+
import { GothamActions } from '@nlabs/gothamui';
|
|
55
|
+
|
|
56
|
+
export const HomeView = () => {
|
|
57
|
+
const handleClick = () => {
|
|
58
|
+
GothamActions.notify({
|
|
59
|
+
message: 'Welcome to GothamUI!',
|
|
60
|
+
severity: 'success'
|
|
61
|
+
});
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
return (
|
|
65
|
+
<div className="p-8">
|
|
66
|
+
<h1 className="text-3xl font-bold mb-4">Welcome to GothamUI</h1>
|
|
67
|
+
<p className="mb-4">This is your first GothamUI application.</p>
|
|
68
|
+
<Button
|
|
69
|
+
variant="contained"
|
|
70
|
+
color="primary"
|
|
71
|
+
onClick={handleClick}
|
|
72
|
+
>
|
|
73
|
+
Show Notification
|
|
74
|
+
</Button>
|
|
75
|
+
</div>
|
|
76
|
+
);
|
|
77
|
+
};
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
## Core Concepts
|
|
81
|
+
|
|
82
|
+
### Configuration
|
|
83
|
+
|
|
84
|
+
The `config` object passed to the `<Gotham>` component is the heart of your application setup:
|
|
85
|
+
|
|
86
|
+
```jsx
|
|
87
|
+
const config = {
|
|
88
|
+
// Application metadata
|
|
89
|
+
app: {
|
|
90
|
+
name: 'my-app',
|
|
91
|
+
title: 'My Application',
|
|
92
|
+
titleBarSeparator: '|'
|
|
93
|
+
},
|
|
94
|
+
|
|
95
|
+
// Routes configuration
|
|
96
|
+
routes: [
|
|
97
|
+
{
|
|
98
|
+
path: '/',
|
|
99
|
+
element: <HomeView />,
|
|
100
|
+
index: true
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
path: '/dashboard',
|
|
104
|
+
element: <DashboardView />,
|
|
105
|
+
authenticate: true // Protected route
|
|
106
|
+
}
|
|
107
|
+
],
|
|
108
|
+
|
|
109
|
+
// Authentication check function
|
|
110
|
+
isAuth: () => Boolean(localStorage.getItem('token')),
|
|
111
|
+
|
|
112
|
+
// Storage type for persisted state
|
|
113
|
+
storageType: 'local', // 'local' or 'session'
|
|
114
|
+
|
|
115
|
+
// Internationalization
|
|
116
|
+
translations: {
|
|
117
|
+
en: {
|
|
118
|
+
welcome: 'Welcome to GothamUI'
|
|
119
|
+
},
|
|
120
|
+
es: {
|
|
121
|
+
welcome: 'Bienvenido a GothamUI'
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
};
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
### Routing
|
|
128
|
+
|
|
129
|
+
GothamUI uses React Router under the hood. Define your routes in the config object:
|
|
130
|
+
|
|
131
|
+
```jsx
|
|
132
|
+
const config = {
|
|
133
|
+
routes: [
|
|
134
|
+
{
|
|
135
|
+
path: '/',
|
|
136
|
+
element: <HomeView />,
|
|
137
|
+
index: true
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
path: '/dashboard',
|
|
141
|
+
element: <DashboardView />,
|
|
142
|
+
children: [
|
|
143
|
+
{
|
|
144
|
+
path: 'profile',
|
|
145
|
+
element: <ProfileView />
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
path: 'settings',
|
|
149
|
+
element: <SettingsView />
|
|
150
|
+
}
|
|
151
|
+
]
|
|
152
|
+
}
|
|
153
|
+
]
|
|
154
|
+
};
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
Navigate programmatically using `GothamActions`:
|
|
158
|
+
|
|
159
|
+
```jsx
|
|
160
|
+
import { GothamActions } from '@nlabs/gothamui';
|
|
161
|
+
|
|
162
|
+
// Navigate to a new route
|
|
163
|
+
GothamActions.navGoto('/dashboard');
|
|
164
|
+
|
|
165
|
+
// Navigate with parameters
|
|
166
|
+
GothamActions.navGoto('/user', { id: 123 });
|
|
167
|
+
|
|
168
|
+
// Replace current route
|
|
169
|
+
GothamActions.navReplace('/login');
|
|
170
|
+
|
|
171
|
+
// Navigate back
|
|
172
|
+
GothamActions.navBack();
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
### Forms
|
|
176
|
+
|
|
177
|
+
GothamUI provides a powerful form system built on React Hook Form and Zod:
|
|
178
|
+
|
|
179
|
+
```jsx
|
|
180
|
+
import { Form, TextField, Button } from '@nlabs/gothamui';
|
|
181
|
+
import { z } from 'zod';
|
|
182
|
+
|
|
183
|
+
// Define validation schema
|
|
184
|
+
const loginSchema = z.object({
|
|
185
|
+
email: z.string().email('Please enter a valid email'),
|
|
186
|
+
password: z.string().min(8, 'Password must be at least 8 characters')
|
|
187
|
+
});
|
|
188
|
+
|
|
189
|
+
// Create form component
|
|
190
|
+
const LoginForm = () => {
|
|
191
|
+
const handleSubmit = (data) => {
|
|
192
|
+
console.log('Form submitted:', data);
|
|
193
|
+
// Handle form submission
|
|
194
|
+
};
|
|
195
|
+
|
|
196
|
+
return (
|
|
197
|
+
<Form
|
|
198
|
+
schema={loginSchema}
|
|
199
|
+
onSubmit={handleSubmit}
|
|
200
|
+
defaultValues={{ email: '', password: '' }}
|
|
201
|
+
>
|
|
202
|
+
<TextField
|
|
203
|
+
name="email"
|
|
204
|
+
label="Email"
|
|
205
|
+
placeholder="Enter your email"
|
|
206
|
+
/>
|
|
207
|
+
<TextField
|
|
208
|
+
name="password"
|
|
209
|
+
type="password"
|
|
210
|
+
label="Password"
|
|
211
|
+
placeholder="Enter your password"
|
|
212
|
+
/>
|
|
213
|
+
<Button
|
|
214
|
+
type="submit"
|
|
215
|
+
variant="contained"
|
|
216
|
+
color="primary"
|
|
217
|
+
label="Sign In"
|
|
218
|
+
/>
|
|
219
|
+
</Form>
|
|
220
|
+
);
|
|
221
|
+
};
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
### State Management
|
|
225
|
+
|
|
226
|
+
GothamUI uses ArkhamJS for state management, a Flux implementation:
|
|
227
|
+
|
|
228
|
+
```jsx
|
|
229
|
+
import { useFlux } from '@nlabs/arkhamjs-utils-react';
|
|
230
|
+
|
|
231
|
+
const MyComponent = () => {
|
|
232
|
+
const flux = useFlux();
|
|
233
|
+
|
|
234
|
+
// Get state from store
|
|
235
|
+
const title = flux.getState(['app', 'title']);
|
|
236
|
+
|
|
237
|
+
// Dispatch an action
|
|
238
|
+
const handleClick = () => {
|
|
239
|
+
flux.dispatch({
|
|
240
|
+
type: 'MY_ACTION',
|
|
241
|
+
data: { value: 'Hello World' }
|
|
242
|
+
});
|
|
243
|
+
};
|
|
244
|
+
|
|
245
|
+
return (
|
|
246
|
+
<div>
|
|
247
|
+
<h1>{title}</h1>
|
|
248
|
+
<button onClick={handleClick}>Update State</button>
|
|
249
|
+
</div>
|
|
250
|
+
);
|
|
251
|
+
};
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
### Notifications
|
|
255
|
+
|
|
256
|
+
Show notifications using `GothamActions`:
|
|
257
|
+
|
|
258
|
+
```jsx
|
|
259
|
+
import { GothamActions } from '@nlabs/gothamui';
|
|
260
|
+
|
|
261
|
+
// Show a success notification
|
|
262
|
+
GothamActions.notify({
|
|
263
|
+
message: 'Operation completed successfully!',
|
|
264
|
+
severity: 'success'
|
|
265
|
+
});
|
|
266
|
+
|
|
267
|
+
// Show an error notification
|
|
268
|
+
GothamActions.notify({
|
|
269
|
+
message: 'An error occurred.',
|
|
270
|
+
severity: 'error'
|
|
271
|
+
});
|
|
272
|
+
|
|
273
|
+
// Show a notification with actions
|
|
274
|
+
GothamActions.notify({
|
|
275
|
+
message: 'Do you want to continue?',
|
|
276
|
+
severity: 'info',
|
|
277
|
+
actions: [
|
|
278
|
+
{
|
|
279
|
+
label: 'Yes',
|
|
280
|
+
onClick: () => console.log('Yes clicked')
|
|
281
|
+
},
|
|
282
|
+
{
|
|
283
|
+
label: 'No',
|
|
284
|
+
onClick: () => console.log('No clicked')
|
|
285
|
+
}
|
|
286
|
+
]
|
|
287
|
+
});
|
|
288
|
+
|
|
289
|
+
// Close the current notification
|
|
290
|
+
GothamActions.notifyClose();
|
|
291
|
+
```
|
|
292
|
+
|
|
293
|
+
### Internationalization
|
|
294
|
+
|
|
295
|
+
GothamUI includes i18next for internationalization. You can import i18n utilities directly from GothamUI:
|
|
296
|
+
|
|
297
|
+
```jsx
|
|
298
|
+
import { useTranslation } from '@nlabs/gothamui';
|
|
299
|
+
|
|
300
|
+
const MyComponent = () => {
|
|
301
|
+
const { t, i18n } = useTranslation();
|
|
302
|
+
|
|
303
|
+
// Change language
|
|
304
|
+
const changeLanguage = (lang) => {
|
|
305
|
+
i18n.changeLanguage(lang);
|
|
306
|
+
};
|
|
307
|
+
|
|
308
|
+
return (
|
|
309
|
+
<div>
|
|
310
|
+
<h1>{t('welcome')}</h1>
|
|
311
|
+
<button onClick={() => changeLanguage('en')}>English</button>
|
|
312
|
+
<button onClick={() => changeLanguage('es')}>Español</button>
|
|
313
|
+
</div>
|
|
314
|
+
);
|
|
315
|
+
};
|
|
316
|
+
```
|
|
317
|
+
|
|
318
|
+
You can also import other i18n utilities:
|
|
319
|
+
|
|
320
|
+
```jsx
|
|
321
|
+
import { useTranslation, Trans, i18n } from '@nlabs/gothamui';
|
|
322
|
+
|
|
323
|
+
// useTranslation - Hook for translation
|
|
324
|
+
// Trans - Component for complex translations
|
|
325
|
+
// i18n - Direct access to i18next instance
|
|
326
|
+
```
|
|
327
|
+
|
|
328
|
+
## Next Steps
|
|
329
|
+
|
|
330
|
+
Now that you have a basic understanding of GothamUI, explore the following:
|
|
331
|
+
|
|
332
|
+
1. **Component Library** - Discover all the available UI components
|
|
333
|
+
2. **Advanced Routing** - Learn about nested routes and route guards
|
|
334
|
+
3. **Custom Stores** - Create your own Flux stores for application state
|
|
335
|
+
4. **Middleware** - Add custom middleware for logging, analytics, etc.
|
|
336
|
+
5. **Theming** - Customize the look and feel of your application
|
|
337
|
+
|
|
338
|
+
For more detailed information, check out the [API Reference](./api-reference.md) and [official documentation](http://gothamui.io).
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
# Payment methods
|
|
2
|
+
|
|
3
|
+
`PaymentMethodPanel` presents the payment method attached to an account and starts application-owned add, replace, or remove workflows. It does not render card-number inputs, collect payment credentials, call a payment API, or store sensitive payment data.
|
|
4
|
+
|
|
5
|
+
Use a hosted payment-provider flow in `onAdd`, then pass only display-safe values such as the card brand and last four digits back to the panel.
|
|
6
|
+
|
|
7
|
+
## Empty state
|
|
8
|
+
|
|
9
|
+
```tsx
|
|
10
|
+
import {PaymentMethodPanel} from '@nlabs/gothamui';
|
|
11
|
+
|
|
12
|
+
export const BillingSettings = () => (
|
|
13
|
+
<PaymentMethodPanel
|
|
14
|
+
onAdd={() => {
|
|
15
|
+
// Open the payment provider's hosted collection flow.
|
|
16
|
+
}}
|
|
17
|
+
/>
|
|
18
|
+
);
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## Saved payment method
|
|
22
|
+
|
|
23
|
+
```tsx
|
|
24
|
+
import {PaymentMethodPanel} from '@nlabs/gothamui';
|
|
25
|
+
|
|
26
|
+
export const BillingSettings = () => (
|
|
27
|
+
<PaymentMethodPanel
|
|
28
|
+
brand="Visa"
|
|
29
|
+
last4="4242"
|
|
30
|
+
onAdd={() => {
|
|
31
|
+
// Open the provider flow in replacement mode.
|
|
32
|
+
}}
|
|
33
|
+
onRemove={() => {
|
|
34
|
+
// Confirm removal, then call the application's payment action.
|
|
35
|
+
}}
|
|
36
|
+
/>
|
|
37
|
+
);
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
Supplying either `brand` or `last4` switches the panel from its empty state to its saved-method state. Pass both when they are available so the masked label is meaningful.
|
|
41
|
+
|
|
42
|
+
## Loading states
|
|
43
|
+
|
|
44
|
+
Set `isAdding` while the provider flow is opening or being confirmed. Set `isRemoving` while removal is in progress. The panel disables competing actions and gives the active button its loading treatment.
|
|
45
|
+
|
|
46
|
+
```tsx
|
|
47
|
+
<PaymentMethodPanel
|
|
48
|
+
brand="Mastercard"
|
|
49
|
+
isRemoving={isRemoving}
|
|
50
|
+
last4="4444"
|
|
51
|
+
onAdd={replacePaymentMethod}
|
|
52
|
+
onRemove={removePaymentMethod}
|
|
53
|
+
/>
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
## Props
|
|
57
|
+
|
|
58
|
+
| Prop | Type | Default | Description |
|
|
59
|
+
|------|------|---------|-------------|
|
|
60
|
+
| `actionIcon` | `ReactNode` | Credit-card icon | Icon used by the add or replace action |
|
|
61
|
+
| `addLabel` | `string` | `'Add payment method'` | Empty-state action label |
|
|
62
|
+
| `brand` | `string` | `''` | Display-safe payment brand |
|
|
63
|
+
| `description` | `ReactNode` | Provider-storage explanation | Supporting panel copy; pass `null` to hide it |
|
|
64
|
+
| `emptyDescription` | `ReactNode` | Add-method explanation | Supporting empty-state copy |
|
|
65
|
+
| `emptyTitle` | `ReactNode` | `'No payment method saved'` | Empty-state heading |
|
|
66
|
+
| `isAdding` | `boolean` | `false` | Shows add or replace progress and disables actions |
|
|
67
|
+
| `isRemoving` | `boolean` | `false` | Shows removal progress and disables actions |
|
|
68
|
+
| `last4` | `string` | `''` | Last four display digits; never pass a complete account number |
|
|
69
|
+
| `onAdd` | `() => void` | Required | Starts the provider-owned add or replace flow |
|
|
70
|
+
| `onRemove` | `() => void` | `undefined` | Starts removal; omit it to hide the remove action |
|
|
71
|
+
| `removeLabel` | `string` | `'Remove'` | Remove-action label |
|
|
72
|
+
| `replaceLabel` | `string` | `'Replace payment method'` | Saved-method primary action label |
|
|
73
|
+
| `title` | `ReactNode` | `'Payment method'` | Panel heading |
|
|
74
|
+
|
|
75
|
+
Standard section attributes such as `className`, `id`, and `data-*` attributes are also supported.
|
|
76
|
+
|
|
77
|
+
## Security boundary
|
|
78
|
+
|
|
79
|
+
Treat `PaymentMethodPanel` as presentation only. Use the payment provider's hosted fields or checkout experience for credential collection, keep provider secrets on the server, and store only provider tokens and display-safe metadata in application state.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { EditorProps } from '@monaco-editor/react';
|
|
2
|
+
export type CodeEditorProps = EditorProps;
|
|
3
|
+
/**
|
|
4
|
+
* Shared code editor backed by Monaco.
|
|
5
|
+
*
|
|
6
|
+
* Import from `@nlabs/gothamui/editor` so Monaco remains outside the normal
|
|
7
|
+
* GothamUI component entry point for applications that do not use an editor.
|
|
8
|
+
*/
|
|
9
|
+
declare const CodeEditorComponent: (props: CodeEditorProps) => import("react").JSX.Element;
|
|
10
|
+
export type { BeforeMount, EditorProps, Monaco, OnChange, OnMount, OnValidate } from '@monaco-editor/react';
|
|
11
|
+
export declare const CodeEditor: import("react").MemoExoticComponent<typeof CodeEditorComponent>;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Editor as MonacoEditor } from '@monaco-editor/react';
|
|
3
|
+
import { memo } from 'react';
|
|
4
|
+
/**
|
|
5
|
+
* Shared code editor backed by Monaco.
|
|
6
|
+
*
|
|
7
|
+
* Import from `@nlabs/gothamui/editor` so Monaco remains outside the normal
|
|
8
|
+
* GothamUI component entry point for applications that do not use an editor.
|
|
9
|
+
*/ const CodeEditorComponent = (props)=>/*#__PURE__*/ _jsx(MonacoEditor, {
|
|
10
|
+
...props
|
|
11
|
+
});
|
|
12
|
+
export const CodeEditor = /*#__PURE__*/ memo(CodeEditorComponent);
|
|
13
|
+
CodeEditor.displayName = 'CodeEditor';
|
|
14
|
+
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L2dvdGhhbWpzL3NyYy9lZGl0b3IvQ29kZUVkaXRvci50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtFZGl0b3IgYXMgTW9uYWNvRWRpdG9yfSBmcm9tICdAbW9uYWNvLWVkaXRvci9yZWFjdCc7XG5pbXBvcnQge21lbW99IGZyb20gJ3JlYWN0JztcblxuaW1wb3J0IHR5cGUge0VkaXRvclByb3BzfSBmcm9tICdAbW9uYWNvLWVkaXRvci9yZWFjdCc7XG5cbmV4cG9ydCB0eXBlIENvZGVFZGl0b3JQcm9wcyA9IEVkaXRvclByb3BzO1xuXG4vKipcbiAqIFNoYXJlZCBjb2RlIGVkaXRvciBiYWNrZWQgYnkgTW9uYWNvLlxuICpcbiAqIEltcG9ydCBmcm9tIGBAbmxhYnMvZ290aGFtdWkvZWRpdG9yYCBzbyBNb25hY28gcmVtYWlucyBvdXRzaWRlIHRoZSBub3JtYWxcbiAqIEdvdGhhbVVJIGNvbXBvbmVudCBlbnRyeSBwb2ludCBmb3IgYXBwbGljYXRpb25zIHRoYXQgZG8gbm90IHVzZSBhbiBlZGl0b3IuXG4gKi9cbmNvbnN0IENvZGVFZGl0b3JDb21wb25lbnQgPSAocHJvcHM6IENvZGVFZGl0b3JQcm9wcykgPT4gKFxuICA8TW9uYWNvRWRpdG9yIHsuLi5wcm9wc30gLz5cbik7XG5cbmV4cG9ydCB0eXBlIHtcbiAgQmVmb3JlTW91bnQsXG4gIEVkaXRvclByb3BzLFxuICBNb25hY28sXG4gIE9uQ2hhbmdlLFxuICBPbk1vdW50LFxuICBPblZhbGlkYXRlXG59IGZyb20gJ0Btb25hY28tZWRpdG9yL3JlYWN0JztcblxuZXhwb3J0IGNvbnN0IENvZGVFZGl0b3IgPSBtZW1vKENvZGVFZGl0b3JDb21wb25lbnQpO1xuQ29kZUVkaXRvci5kaXNwbGF5TmFtZSA9ICdDb2RlRWRpdG9yJztcbiJdLCJuYW1lcyI6WyJFZGl0b3IiLCJNb25hY29FZGl0b3IiLCJtZW1vIiwiQ29kZUVkaXRvckNvbXBvbmVudCIsInByb3BzIiwiQ29kZUVkaXRvciIsImRpc3BsYXlOYW1lIl0sIm1hcHBpbmdzIjoiO0FBQUEsU0FBUUEsVUFBVUMsWUFBWSxRQUFPLHVCQUF1QjtBQUM1RCxTQUFRQyxJQUFJLFFBQU8sUUFBUTtBQU0zQjs7Ozs7Q0FLQyxHQUNELE1BQU1DLHNCQUFzQixDQUFDQyxzQkFDM0IsS0FBQ0g7UUFBYyxHQUFHRyxLQUFLOztBQVl6QixPQUFPLE1BQU1DLDJCQUFhSCxLQUFLQyxxQkFBcUI7QUFDcERFLFdBQVdDLFdBQVcsR0FBRyJ9
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { CodeEditor } from './CodeEditor.js';
|
|
2
|
+
const meta = {
|
|
3
|
+
component: CodeEditor,
|
|
4
|
+
parameters: {
|
|
5
|
+
layout: 'padded'
|
|
6
|
+
},
|
|
7
|
+
title: 'Components/Editor/CodeEditor'
|
|
8
|
+
};
|
|
9
|
+
export default meta;
|
|
10
|
+
export const Json = {
|
|
11
|
+
args: {
|
|
12
|
+
height: '400px',
|
|
13
|
+
language: 'json',
|
|
14
|
+
options: {
|
|
15
|
+
minimap: {
|
|
16
|
+
enabled: false
|
|
17
|
+
},
|
|
18
|
+
wordWrap: 'on'
|
|
19
|
+
},
|
|
20
|
+
value: '{\n "framework": "GothamUI",\n "editor": "Monaco"\n}'
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L2dvdGhhbWpzL3NyYy9lZGl0b3IvQ29kZUVkaXRvci5zdG9yaWVzLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvZGVFZGl0b3J9IGZyb20gJy4vQ29kZUVkaXRvci5qcyc7XG5cbmltcG9ydCB0eXBlIHtNZXRhLCBTdG9yeU9ian0gZnJvbSAnQG5sYWJzL2xleC9zdG9yeWJvb2snO1xuXG5jb25zdCBtZXRhOiBNZXRhPHR5cGVvZiBDb2RlRWRpdG9yPiA9IHtcbiAgY29tcG9uZW50OiBDb2RlRWRpdG9yLFxuICBwYXJhbWV0ZXJzOiB7XG4gICAgbGF5b3V0OiAncGFkZGVkJ1xuICB9LFxuICB0aXRsZTogJ0NvbXBvbmVudHMvRWRpdG9yL0NvZGVFZGl0b3InXG59O1xuXG5leHBvcnQgZGVmYXVsdCBtZXRhO1xuXG50eXBlIFN0b3J5ID0gU3RvcnlPYmo8dHlwZW9mIENvZGVFZGl0b3I+O1xuXG5leHBvcnQgY29uc3QgSnNvbjogU3RvcnkgPSB7XG4gIGFyZ3M6IHtcbiAgICBoZWlnaHQ6ICc0MDBweCcsXG4gICAgbGFuZ3VhZ2U6ICdqc29uJyxcbiAgICBvcHRpb25zOiB7XG4gICAgICBtaW5pbWFwOiB7ZW5hYmxlZDogZmFsc2V9LFxuICAgICAgd29yZFdyYXA6ICdvbidcbiAgICB9LFxuICAgIHZhbHVlOiAne1xcbiAgXCJmcmFtZXdvcmtcIjogXCJHb3RoYW1VSVwiLFxcbiAgXCJlZGl0b3JcIjogXCJNb25hY29cIlxcbn0nXG4gIH1cbn07XG4iXSwibmFtZXMiOlsiQ29kZUVkaXRvciIsIm1ldGEiLCJjb21wb25lbnQiLCJwYXJhbWV0ZXJzIiwibGF5b3V0IiwidGl0bGUiLCJKc29uIiwiYXJncyIsImhlaWdodCIsImxhbmd1YWdlIiwib3B0aW9ucyIsIm1pbmltYXAiLCJlbmFibGVkIiwid29yZFdyYXAiLCJ2YWx1ZSJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBUUEsVUFBVSxRQUFPLGtCQUFrQjtBQUkzQyxNQUFNQyxPQUFnQztJQUNwQ0MsV0FBV0Y7SUFDWEcsWUFBWTtRQUNWQyxRQUFRO0lBQ1Y7SUFDQUMsT0FBTztBQUNUO0FBRUEsZUFBZUosS0FBSztBQUlwQixPQUFPLE1BQU1LLE9BQWM7SUFDekJDLE1BQU07UUFDSkMsUUFBUTtRQUNSQyxVQUFVO1FBQ1ZDLFNBQVM7WUFDUEMsU0FBUztnQkFBQ0MsU0FBUztZQUFLO1lBQ3hCQyxVQUFVO1FBQ1o7UUFDQUMsT0FBTztJQUNUO0FBQ0YsRUFBRSJ9
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './CodeEditor.js';
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export * from './CodeEditor.js';
|
|
2
|
+
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L2dvdGhhbWpzL3NyYy9lZGl0b3IvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9Db2RlRWRpdG9yLmpzJztcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGtCQUFrQiJ9
|
|
@@ -0,0 +1,8 @@
|
|
|
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
|
+
export declare class UserError extends Error {
|
|
6
|
+
errors: string[];
|
|
7
|
+
constructor(msg: string, errors?: string[]);
|
|
8
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2018-Present, Nitrogen Labs, Inc.
|
|
3
|
+
* Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
|
|
4
|
+
*/ export class UserError extends Error {
|
|
5
|
+
errors;
|
|
6
|
+
constructor(msg, errors = []){
|
|
7
|
+
super(msg);
|
|
8
|
+
this.errors = errors || [];
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L2dvdGhhbWpzL3NyYy9lcnJvcnMvVXNlckVycm9yLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxOC1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xuZXhwb3J0IGNsYXNzIFVzZXJFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgZXJyb3JzOiBzdHJpbmdbXTtcblxuICBjb25zdHJ1Y3Rvcihtc2c6IHN0cmluZywgZXJyb3JzOiBzdHJpbmdbXSA9IFtdKSB7XG4gICAgc3VwZXIobXNnKTtcbiAgICB0aGlzLmVycm9ycyA9IGVycm9ycyB8fCBbXTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbIlVzZXJFcnJvciIsIkVycm9yIiwiZXJyb3JzIiwibXNnIl0sIm1hcHBpbmdzIjoiQUFBQTs7O0NBR0MsR0FDRCxPQUFPLE1BQU1BLGtCQUFrQkM7SUFDN0JDLE9BQWlCO0lBRWpCLFlBQVlDLEdBQVcsRUFBRUQsU0FBbUIsRUFBRSxDQUFFO1FBQzlDLEtBQUssQ0FBQ0M7UUFDTixJQUFJLENBQUNELE1BQU0sR0FBR0EsVUFBVSxFQUFFO0lBQzVCO0FBQ0YifQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const OptimizedFormExample: () => import("react").JSX.Element;
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* Copyright (c) 2025-Present, Nitrogen Labs, Inc.
|
|
4
|
+
* Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
|
|
5
|
+
*/ import { z } from 'zod';
|
|
6
|
+
import { Button, Form, TextField } from '../components/index.js';
|
|
7
|
+
// Define a comprehensive form schema
|
|
8
|
+
const userProfileSchema = z.object({
|
|
9
|
+
firstName: z.string().min(2, 'First name must be at least 2 characters'),
|
|
10
|
+
lastName: z.string().min(2, 'Last name must be at least 2 characters'),
|
|
11
|
+
email: z.string().email('Please enter a valid email address'),
|
|
12
|
+
age: z.number().min(18, 'Must be at least 18 years old').max(120, 'Please enter a valid age'),
|
|
13
|
+
bio: z.string().max(500, 'Bio must be less than 500 characters').optional(),
|
|
14
|
+
agreeToTerms: z.boolean().refine((val)=>val === true, 'You must agree to the terms')
|
|
15
|
+
});
|
|
16
|
+
export const OptimizedFormExample = ()=>{
|
|
17
|
+
const handleSubmit = async (data)=>{
|
|
18
|
+
console.log('Form submitted successfully:', data);
|
|
19
|
+
// Handle success (show notification, redirect, etc.)
|
|
20
|
+
};
|
|
21
|
+
return /*#__PURE__*/ _jsxs("div", {
|
|
22
|
+
className: "max-w-md mx-auto p-6 bg-white rounded-lg shadow-lg",
|
|
23
|
+
children: [
|
|
24
|
+
/*#__PURE__*/ _jsx("h2", {
|
|
25
|
+
className: "text-2xl font-bold mb-6 text-center",
|
|
26
|
+
children: "User Profile"
|
|
27
|
+
}),
|
|
28
|
+
/*#__PURE__*/ _jsx(Form, {
|
|
29
|
+
schema: userProfileSchema,
|
|
30
|
+
onSubmit: handleSubmit,
|
|
31
|
+
showErrors: true,
|
|
32
|
+
mode: "onBlur",
|
|
33
|
+
defaultValues: {
|
|
34
|
+
firstName: '',
|
|
35
|
+
lastName: '',
|
|
36
|
+
email: '',
|
|
37
|
+
age: 18,
|
|
38
|
+
bio: '',
|
|
39
|
+
agreeToTerms: false
|
|
40
|
+
},
|
|
41
|
+
children: ({ formState: { isSubmitting } })=>/*#__PURE__*/ _jsxs(_Fragment, {
|
|
42
|
+
children: [
|
|
43
|
+
/*#__PURE__*/ _jsxs("div", {
|
|
44
|
+
className: "grid grid-cols-2 gap-4 mb-4",
|
|
45
|
+
children: [
|
|
46
|
+
/*#__PURE__*/ _jsx(TextField, {
|
|
47
|
+
name: "firstName",
|
|
48
|
+
label: "First Name",
|
|
49
|
+
placeholder: "Enter your first name",
|
|
50
|
+
required: true
|
|
51
|
+
}),
|
|
52
|
+
/*#__PURE__*/ _jsx(TextField, {
|
|
53
|
+
name: "lastName",
|
|
54
|
+
label: "Last Name",
|
|
55
|
+
placeholder: "Enter your last name",
|
|
56
|
+
required: true
|
|
57
|
+
})
|
|
58
|
+
]
|
|
59
|
+
}),
|
|
60
|
+
/*#__PURE__*/ _jsx(TextField, {
|
|
61
|
+
name: "email",
|
|
62
|
+
label: "Email",
|
|
63
|
+
type: "email",
|
|
64
|
+
placeholder: "Enter your email",
|
|
65
|
+
className: "mb-4",
|
|
66
|
+
required: true
|
|
67
|
+
}),
|
|
68
|
+
/*#__PURE__*/ _jsx(TextField, {
|
|
69
|
+
name: "age",
|
|
70
|
+
label: "Age",
|
|
71
|
+
type: "number",
|
|
72
|
+
placeholder: "Enter your age",
|
|
73
|
+
className: "mb-4",
|
|
74
|
+
min: 18,
|
|
75
|
+
max: 120,
|
|
76
|
+
required: true
|
|
77
|
+
}),
|
|
78
|
+
/*#__PURE__*/ _jsx(TextField, {
|
|
79
|
+
name: "bio",
|
|
80
|
+
label: "Bio",
|
|
81
|
+
placeholder: "Tell us about yourself (optional)",
|
|
82
|
+
multiline: true,
|
|
83
|
+
rows: 4,
|
|
84
|
+
className: "mb-4"
|
|
85
|
+
}),
|
|
86
|
+
/*#__PURE__*/ _jsxs("div", {
|
|
87
|
+
className: "flex items-center mb-6",
|
|
88
|
+
children: [
|
|
89
|
+
/*#__PURE__*/ _jsx("input", {
|
|
90
|
+
type: "checkbox",
|
|
91
|
+
id: "agreeToTerms",
|
|
92
|
+
name: "agreeToTerms",
|
|
93
|
+
className: "mr-2"
|
|
94
|
+
}),
|
|
95
|
+
/*#__PURE__*/ _jsx("label", {
|
|
96
|
+
htmlFor: "agreeToTerms",
|
|
97
|
+
className: "text-sm",
|
|
98
|
+
children: "I agree to the terms and conditions"
|
|
99
|
+
})
|
|
100
|
+
]
|
|
101
|
+
}),
|
|
102
|
+
/*#__PURE__*/ _jsxs("div", {
|
|
103
|
+
className: "flex gap-4",
|
|
104
|
+
children: [
|
|
105
|
+
/*#__PURE__*/ _jsx(Button, {
|
|
106
|
+
type: "submit",
|
|
107
|
+
variant: "contained",
|
|
108
|
+
color: "primary",
|
|
109
|
+
label: "Save Profile",
|
|
110
|
+
className: "flex-1",
|
|
111
|
+
disabled: isSubmitting,
|
|
112
|
+
isLoading: isSubmitting
|
|
113
|
+
}),
|
|
114
|
+
/*#__PURE__*/ _jsx(Button, {
|
|
115
|
+
type: "button",
|
|
116
|
+
variant: "outlined",
|
|
117
|
+
color: "neutral",
|
|
118
|
+
label: "Cancel",
|
|
119
|
+
onClick: ()=>console.log('Cancelled')
|
|
120
|
+
})
|
|
121
|
+
]
|
|
122
|
+
})
|
|
123
|
+
]
|
|
124
|
+
})
|
|
125
|
+
})
|
|
126
|
+
]
|
|
127
|
+
});
|
|
128
|
+
};
|
|
129
|
+
|
|
130
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L2dvdGhhbWpzL3NyYy9leGFtcGxlcy9PcHRpbWl6ZWRGb3JtRXhhbXBsZS50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjUtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7en0gZnJvbSAnem9kJztcblxuaW1wb3J0IHtCdXR0b24sIEZvcm0sIFRleHRGaWVsZH0gZnJvbSAnLi4vY29tcG9uZW50cy9pbmRleC5qcyc7XG5cbi8vIERlZmluZSBhIGNvbXByZWhlbnNpdmUgZm9ybSBzY2hlbWFcbmNvbnN0IHVzZXJQcm9maWxlU2NoZW1hID0gei5vYmplY3Qoe1xuICBmaXJzdE5hbWU6IHouc3RyaW5nKCkubWluKDIsICdGaXJzdCBuYW1lIG11c3QgYmUgYXQgbGVhc3QgMiBjaGFyYWN0ZXJzJyksXG4gIGxhc3ROYW1lOiB6LnN0cmluZygpLm1pbigyLCAnTGFzdCBuYW1lIG11c3QgYmUgYXQgbGVhc3QgMiBjaGFyYWN0ZXJzJyksXG4gIGVtYWlsOiB6LnN0cmluZygpLmVtYWlsKCdQbGVhc2UgZW50ZXIgYSB2YWxpZCBlbWFpbCBhZGRyZXNzJyksXG4gIGFnZTogei5udW1iZXIoKS5taW4oMTgsICdNdXN0IGJlIGF0IGxlYXN0IDE4IHllYXJzIG9sZCcpLm1heCgxMjAsICdQbGVhc2UgZW50ZXIgYSB2YWxpZCBhZ2UnKSxcbiAgYmlvOiB6LnN0cmluZygpLm1heCg1MDAsICdCaW8gbXVzdCBiZSBsZXNzIHRoYW4gNTAwIGNoYXJhY3RlcnMnKS5vcHRpb25hbCgpLFxuICBhZ3JlZVRvVGVybXM6IHouYm9vbGVhbigpLnJlZmluZSgodmFsKSA9PiB2YWwgPT09IHRydWUsICdZb3UgbXVzdCBhZ3JlZSB0byB0aGUgdGVybXMnKVxufSk7XG5cbnR5cGUgVXNlclByb2ZpbGUgPSB6LmluZmVyPHR5cGVvZiB1c2VyUHJvZmlsZVNjaGVtYT47XG5cbmV4cG9ydCBjb25zdCBPcHRpbWl6ZWRGb3JtRXhhbXBsZSA9ICgpID0+IHtcbiAgY29uc3QgaGFuZGxlU3VibWl0ID0gYXN5bmMgKGRhdGE6IFVzZXJQcm9maWxlKSA9PiB7XG4gICAgY29uc29sZS5sb2coJ0Zvcm0gc3VibWl0dGVkIHN1Y2Nlc3NmdWxseTonLCBkYXRhKTtcbiAgICAvLyBIYW5kbGUgc3VjY2VzcyAoc2hvdyBub3RpZmljYXRpb24sIHJlZGlyZWN0LCBldGMuKVxuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJtYXgtdy1tZCBteC1hdXRvIHAtNiBiZy13aGl0ZSByb3VuZGVkLWxnIHNoYWRvdy1sZ1wiPlxuICAgICAgPGgyIGNsYXNzTmFtZT1cInRleHQtMnhsIGZvbnQtYm9sZCBtYi02IHRleHQtY2VudGVyXCI+VXNlciBQcm9maWxlPC9oMj5cblxuICAgICAgPEZvcm1cbiAgICAgICAgc2NoZW1hPXt1c2VyUHJvZmlsZVNjaGVtYX1cbiAgICAgICAgb25TdWJtaXQ9e2hhbmRsZVN1Ym1pdH1cbiAgICAgICAgc2hvd0Vycm9ycz17dHJ1ZX1cbiAgICAgICAgbW9kZT1cIm9uQmx1clwiXG4gICAgICAgIGRlZmF1bHRWYWx1ZXM9e3tcbiAgICAgICAgICBmaXJzdE5hbWU6ICcnLFxuICAgICAgICAgIGxhc3ROYW1lOiAnJyxcbiAgICAgICAgICBlbWFpbDogJycsXG4gICAgICAgICAgYWdlOiAxOCxcbiAgICAgICAgICBiaW86ICcnLFxuICAgICAgICAgIGFncmVlVG9UZXJtczogZmFsc2VcbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAgeyh7Zm9ybVN0YXRlOiB7aXNTdWJtaXR0aW5nfX0pID0+IChcbiAgICAgICAgICA8PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJncmlkIGdyaWQtY29scy0yIGdhcC00IG1iLTRcIj5cbiAgICAgICAgICAgICAgPFRleHRGaWVsZFxuICAgICAgICAgICAgICAgIG5hbWU9XCJmaXJzdE5hbWVcIlxuICAgICAgICAgICAgICAgIGxhYmVsPVwiRmlyc3QgTmFtZVwiXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJFbnRlciB5b3VyIGZpcnN0IG5hbWVcIlxuICAgICAgICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgICAgICAgIC8+XG5cbiAgICAgICAgICAgICAgPFRleHRGaWVsZFxuICAgICAgICAgICAgICAgIG5hbWU9XCJsYXN0TmFtZVwiXG4gICAgICAgICAgICAgICAgbGFiZWw9XCJMYXN0IE5hbWVcIlxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRW50ZXIgeW91ciBsYXN0IG5hbWVcIlxuICAgICAgICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPFRleHRGaWVsZFxuICAgICAgICAgICAgICBuYW1lPVwiZW1haWxcIlxuICAgICAgICAgICAgICBsYWJlbD1cIkVtYWlsXCJcbiAgICAgICAgICAgICAgdHlwZT1cImVtYWlsXCJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJFbnRlciB5b3VyIGVtYWlsXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwibWItNFwiXG4gICAgICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgICAgICAvPlxuXG4gICAgICAgICAgICA8VGV4dEZpZWxkXG4gICAgICAgICAgICAgIG5hbWU9XCJhZ2VcIlxuICAgICAgICAgICAgICBsYWJlbD1cIkFnZVwiXG4gICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkVudGVyIHlvdXIgYWdlXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwibWItNFwiXG4gICAgICAgICAgICAgIG1pbj17MTh9XG4gICAgICAgICAgICAgIG1heD17MTIwfVxuICAgICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgLz5cblxuICAgICAgICAgICAgPFRleHRGaWVsZFxuICAgICAgICAgICAgICBuYW1lPVwiYmlvXCJcbiAgICAgICAgICAgICAgbGFiZWw9XCJCaW9cIlxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlRlbGwgdXMgYWJvdXQgeW91cnNlbGYgKG9wdGlvbmFsKVwiXG4gICAgICAgICAgICAgIG11bHRpbGluZVxuICAgICAgICAgICAgICByb3dzPXs0fVxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJtYi00XCJcbiAgICAgICAgICAgIC8+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgbWItNlwiPlxuICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgIGlkPVwiYWdyZWVUb1Rlcm1zXCJcbiAgICAgICAgICAgICAgICBuYW1lPVwiYWdyZWVUb1Rlcm1zXCJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJtci0yXCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPGxhYmVsIGh0bWxGb3I9XCJhZ3JlZVRvVGVybXNcIiBjbGFzc05hbWU9XCJ0ZXh0LXNtXCI+XG4gICAgICAgICAgICAgICAgSSBhZ3JlZSB0byB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnNcbiAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggZ2FwLTRcIj5cbiAgICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJjb250YWluZWRcIlxuICAgICAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgbGFiZWw9XCJTYXZlIFByb2ZpbGVcIlxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImZsZXgtMVwiXG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2lzU3VibWl0dGluZ31cbiAgICAgICAgICAgICAgICBpc0xvYWRpbmc9e2lzU3VibWl0dGluZ31cbiAgICAgICAgICAgICAgLz5cblxuICAgICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgdmFyaWFudD1cIm91dGxpbmVkXCJcbiAgICAgICAgICAgICAgICBjb2xvcj1cIm5ldXRyYWxcIlxuICAgICAgICAgICAgICAgIGxhYmVsPVwiQ2FuY2VsXCJcbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBjb25zb2xlLmxvZygnQ2FuY2VsbGVkJyl9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8Lz5cbiAgICAgICAgKX1cbiAgICAgIDwvRm9ybT5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG4iXSwibmFtZXMiOlsieiIsIkJ1dHRvbiIsIkZvcm0iLCJUZXh0RmllbGQiLCJ1c2VyUHJvZmlsZVNjaGVtYSIsIm9iamVjdCIsImZpcnN0TmFtZSIsInN0cmluZyIsIm1pbiIsImxhc3ROYW1lIiwiZW1haWwiLCJhZ2UiLCJudW1iZXIiLCJtYXgiLCJiaW8iLCJvcHRpb25hbCIsImFncmVlVG9UZXJtcyIsImJvb2xlYW4iLCJyZWZpbmUiLCJ2YWwiLCJPcHRpbWl6ZWRGb3JtRXhhbXBsZSIsImhhbmRsZVN1Ym1pdCIsImRhdGEiLCJjb25zb2xlIiwibG9nIiwiZGl2IiwiY2xhc3NOYW1lIiwiaDIiLCJzY2hlbWEiLCJvblN1Ym1pdCIsInNob3dFcnJvcnMiLCJtb2RlIiwiZGVmYXVsdFZhbHVlcyIsImZvcm1TdGF0ZSIsImlzU3VibWl0dGluZyIsIm5hbWUiLCJsYWJlbCIsInBsYWNlaG9sZGVyIiwicmVxdWlyZWQiLCJ0eXBlIiwibXVsdGlsaW5lIiwicm93cyIsImlucHV0IiwiaWQiLCJodG1sRm9yIiwidmFyaWFudCIsImNvbG9yIiwiZGlzYWJsZWQiLCJpc0xvYWRpbmciLCJvbkNsaWNrIl0sIm1hcHBpbmdzIjoiO0FBQUE7OztDQUdDLEdBQ0QsU0FBUUEsQ0FBQyxRQUFPLE1BQU07QUFFdEIsU0FBUUMsTUFBTSxFQUFFQyxJQUFJLEVBQUVDLFNBQVMsUUFBTyx5QkFBeUI7QUFFL0QscUNBQXFDO0FBQ3JDLE1BQU1DLG9CQUFvQkosRUFBRUssTUFBTSxDQUFDO0lBQ2pDQyxXQUFXTixFQUFFTyxNQUFNLEdBQUdDLEdBQUcsQ0FBQyxHQUFHO0lBQzdCQyxVQUFVVCxFQUFFTyxNQUFNLEdBQUdDLEdBQUcsQ0FBQyxHQUFHO0lBQzVCRSxPQUFPVixFQUFFTyxNQUFNLEdBQUdHLEtBQUssQ0FBQztJQUN4QkMsS0FBS1gsRUFBRVksTUFBTSxHQUFHSixHQUFHLENBQUMsSUFBSSxpQ0FBaUNLLEdBQUcsQ0FBQyxLQUFLO0lBQ2xFQyxLQUFLZCxFQUFFTyxNQUFNLEdBQUdNLEdBQUcsQ0FBQyxLQUFLLHdDQUF3Q0UsUUFBUTtJQUN6RUMsY0FBY2hCLEVBQUVpQixPQUFPLEdBQUdDLE1BQU0sQ0FBQyxDQUFDQyxNQUFRQSxRQUFRLE1BQU07QUFDMUQ7QUFJQSxPQUFPLE1BQU1DLHVCQUF1QjtJQUNsQyxNQUFNQyxlQUFlLE9BQU9DO1FBQzFCQyxRQUFRQyxHQUFHLENBQUMsZ0NBQWdDRjtJQUM1QyxxREFBcUQ7SUFDdkQ7SUFFQSxxQkFDRSxNQUFDRztRQUFJQyxXQUFVOzswQkFDYixLQUFDQztnQkFBR0QsV0FBVTswQkFBc0M7OzBCQUVwRCxLQUFDeEI7Z0JBQ0MwQixRQUFReEI7Z0JBQ1J5QixVQUFVUjtnQkFDVlMsWUFBWTtnQkFDWkMsTUFBSztnQkFDTEMsZUFBZTtvQkFDYjFCLFdBQVc7b0JBQ1hHLFVBQVU7b0JBQ1ZDLE9BQU87b0JBQ1BDLEtBQUs7b0JBQ0xHLEtBQUs7b0JBQ0xFLGNBQWM7Z0JBQ2hCOzBCQUVDLENBQUMsRUFBQ2lCLFdBQVcsRUFBQ0MsWUFBWSxFQUFDLEVBQUMsaUJBQzNCOzswQ0FDRSxNQUFDVDtnQ0FBSUMsV0FBVTs7a0RBQ2IsS0FBQ3ZCO3dDQUNDZ0MsTUFBSzt3Q0FDTEMsT0FBTTt3Q0FDTkMsYUFBWTt3Q0FDWkMsUUFBUTs7a0RBR1YsS0FBQ25DO3dDQUNDZ0MsTUFBSzt3Q0FDTEMsT0FBTTt3Q0FDTkMsYUFBWTt3Q0FDWkMsUUFBUTs7OzswQ0FJWixLQUFDbkM7Z0NBQ0NnQyxNQUFLO2dDQUNMQyxPQUFNO2dDQUNORyxNQUFLO2dDQUNMRixhQUFZO2dDQUNaWCxXQUFVO2dDQUNWWSxRQUFROzswQ0FHVixLQUFDbkM7Z0NBQ0NnQyxNQUFLO2dDQUNMQyxPQUFNO2dDQUNORyxNQUFLO2dDQUNMRixhQUFZO2dDQUNaWCxXQUFVO2dDQUNWbEIsS0FBSztnQ0FDTEssS0FBSztnQ0FDTHlCLFFBQVE7OzBDQUdWLEtBQUNuQztnQ0FDQ2dDLE1BQUs7Z0NBQ0xDLE9BQU07Z0NBQ05DLGFBQVk7Z0NBQ1pHLFNBQVM7Z0NBQ1RDLE1BQU07Z0NBQ05mLFdBQVU7OzBDQUdaLE1BQUNEO2dDQUFJQyxXQUFVOztrREFDYixLQUFDZ0I7d0NBQ0NILE1BQUs7d0NBQ0xJLElBQUc7d0NBQ0hSLE1BQUs7d0NBQ0xULFdBQVU7O2tEQUVaLEtBQUNVO3dDQUFNUSxTQUFRO3dDQUFlbEIsV0FBVTtrREFBVTs7OzswQ0FLcEQsTUFBQ0Q7Z0NBQUlDLFdBQVU7O2tEQUNiLEtBQUN6Qjt3Q0FDQ3NDLE1BQUs7d0NBQ0xNLFNBQVE7d0NBQ1JDLE9BQU07d0NBQ05WLE9BQU07d0NBQ05WLFdBQVU7d0NBQ1ZxQixVQUFVYjt3Q0FDVmMsV0FBV2Q7O2tEQUdiLEtBQUNqQzt3Q0FDQ3NDLE1BQUs7d0NBQ0xNLFNBQVE7d0NBQ1JDLE9BQU07d0NBQ05WLE9BQU07d0NBQ05hLFNBQVMsSUFBTTFCLFFBQVFDLEdBQUcsQ0FBQzs7Ozs7Ozs7O0FBUTNDLEVBQUUifQ==
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export { z } from 'zod';
|
|
2
|
+
export * from '../components/Button/Button.js';
|
|
3
|
+
export * from '../components/Checkbox/Checkbox.js';
|
|
4
|
+
export * from '../components/DateField/DateField.js';
|
|
5
|
+
export * from '../components/Form/Form.js';
|
|
6
|
+
export * from '../components/Form/FormContext.js';
|
|
7
|
+
export * from '../components/InputField/InputField.js';
|
|
8
|
+
export * from '../components/RadioField/RadioField.js';
|
|
9
|
+
export * from '../components/SelectField/SelectField.js';
|
|
10
|
+
export * from '../components/SelectField/SelectOption.js';
|
|
11
|
+
export * from '../components/TextField/TextField.js';
|