@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,106 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from '@nlabs/utils';
|
|
3
|
+
import { memo, useMemo, useState } from 'react';
|
|
4
|
+
import { getCheckedClasses } from '../../utils/colorUtils.js';
|
|
5
|
+
import { useGothamFormField } from '../Form/FormContext.js';
|
|
6
|
+
const CheckboxComponent = ({ color = 'primary', label, defaultValue = false, description, error, containerClass = '', labelClass = '', name, optionClass = '', id, ...props })=>{
|
|
7
|
+
const form = useGothamFormField(name);
|
|
8
|
+
const [localChecked, setLocalChecked] = useState(defaultValue);
|
|
9
|
+
const optionClasses = useMemo(()=>cn(optionClass, getCheckedClasses(color)), [
|
|
10
|
+
color,
|
|
11
|
+
optionClass
|
|
12
|
+
]);
|
|
13
|
+
const checkboxId = id || name || label.toLowerCase().replace(/\s+/g, '-');
|
|
14
|
+
const descriptionId = description ? `${checkboxId}-description` : undefined;
|
|
15
|
+
const currentValue = form?.value;
|
|
16
|
+
const uncontrolledChecked = typeof currentValue === 'boolean' ? currentValue : localChecked;
|
|
17
|
+
const checked = typeof props.checked === 'boolean' ? props.checked : uncontrolledChecked;
|
|
18
|
+
const handleChange = (event)=>{
|
|
19
|
+
if (!form) {
|
|
20
|
+
setLocalChecked(event.target.checked);
|
|
21
|
+
}
|
|
22
|
+
form?.setValue(name, event.target.checked);
|
|
23
|
+
form?.clearError(name);
|
|
24
|
+
props.onChange?.(event);
|
|
25
|
+
};
|
|
26
|
+
const baseCheckboxClasses = `
|
|
27
|
+
col-start-1 row-start-1 appearance-none rounded-sm border border-gray-300 bg-white
|
|
28
|
+
checked:border-indigo-600 checked:bg-indigo-600 indeterminate:border-indigo-600
|
|
29
|
+
indeterminate:bg-indigo-600 focus-visible:outline-2 focus-visible:outline-offset-2
|
|
30
|
+
focus-visible:outline-indigo-600 disabled:border-gray-300 disabled:bg-gray-100
|
|
31
|
+
disabled:checked:bg-gray-100 forced-colors:appearance-auto
|
|
32
|
+
${error ? 'border-red-300' : ''}
|
|
33
|
+
`.trim().replace(/\s+/g, ' ');
|
|
34
|
+
return /*#__PURE__*/ _jsx("fieldset", {
|
|
35
|
+
"aria-label": label,
|
|
36
|
+
children: /*#__PURE__*/ _jsxs("div", {
|
|
37
|
+
className: `flex gap-3 ${containerClass}`,
|
|
38
|
+
children: [
|
|
39
|
+
/*#__PURE__*/ _jsx("div", {
|
|
40
|
+
className: "flex h-6 shrink-0 items-center",
|
|
41
|
+
children: /*#__PURE__*/ _jsxs("div", {
|
|
42
|
+
className: "group grid size-4 grid-cols-1",
|
|
43
|
+
children: [
|
|
44
|
+
/*#__PURE__*/ _jsx("input", {
|
|
45
|
+
...props,
|
|
46
|
+
"aria-describedby": descriptionId,
|
|
47
|
+
checked: checked,
|
|
48
|
+
className: `${baseCheckboxClasses} ${optionClasses}`,
|
|
49
|
+
defaultChecked: checked === undefined ? Boolean(form?.defaultValue ?? defaultValue) : undefined,
|
|
50
|
+
id: checkboxId,
|
|
51
|
+
name: name,
|
|
52
|
+
onChange: handleChange,
|
|
53
|
+
type: "checkbox",
|
|
54
|
+
value: "true"
|
|
55
|
+
}),
|
|
56
|
+
/*#__PURE__*/ _jsxs("svg", {
|
|
57
|
+
className: "pointer-events-none col-start-1 row-start-1 size-3.5 self-center justify-self-center stroke-white group-has-disabled:stroke-gray-950/25",
|
|
58
|
+
fill: "none",
|
|
59
|
+
viewBox: "0 0 14 14",
|
|
60
|
+
children: [
|
|
61
|
+
/*#__PURE__*/ _jsx("path", {
|
|
62
|
+
className: "opacity-0 group-has-checked:opacity-100",
|
|
63
|
+
d: "M3 8L6 11L11 3.5",
|
|
64
|
+
strokeLinecap: "round",
|
|
65
|
+
strokeLinejoin: "round",
|
|
66
|
+
strokeWidth: 2
|
|
67
|
+
}),
|
|
68
|
+
/*#__PURE__*/ _jsx("path", {
|
|
69
|
+
className: "opacity-0 group-has-indeterminate:opacity-100",
|
|
70
|
+
d: "M3 7H11",
|
|
71
|
+
strokeLinecap: "round",
|
|
72
|
+
strokeLinejoin: "round",
|
|
73
|
+
strokeWidth: 2
|
|
74
|
+
})
|
|
75
|
+
]
|
|
76
|
+
})
|
|
77
|
+
]
|
|
78
|
+
})
|
|
79
|
+
}),
|
|
80
|
+
/*#__PURE__*/ _jsxs("div", {
|
|
81
|
+
className: "text-sm/6",
|
|
82
|
+
children: [
|
|
83
|
+
/*#__PURE__*/ _jsx("label", {
|
|
84
|
+
className: `font-medium text-gray-900 ${labelClass}`,
|
|
85
|
+
htmlFor: checkboxId,
|
|
86
|
+
children: label
|
|
87
|
+
}),
|
|
88
|
+
description && /*#__PURE__*/ _jsx("p", {
|
|
89
|
+
className: "text-gray-500",
|
|
90
|
+
id: descriptionId,
|
|
91
|
+
children: description
|
|
92
|
+
}),
|
|
93
|
+
error && /*#__PURE__*/ _jsx("p", {
|
|
94
|
+
className: "text-red-600 mt-1",
|
|
95
|
+
children: error
|
|
96
|
+
})
|
|
97
|
+
]
|
|
98
|
+
})
|
|
99
|
+
]
|
|
100
|
+
})
|
|
101
|
+
});
|
|
102
|
+
};
|
|
103
|
+
export const Checkbox = /*#__PURE__*/ memo(CheckboxComponent);
|
|
104
|
+
Checkbox.displayName = 'Checkbox';
|
|
105
|
+
|
|
106
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L2dvdGhhbWpzL3NyYy9jb21wb25lbnRzL0NoZWNrYm94L0NoZWNrYm94LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2NufSBmcm9tICdAbmxhYnMvdXRpbHMnO1xuaW1wb3J0IHttZW1vLCB1c2VNZW1vLCB1c2VTdGF0ZX0gZnJvbSAncmVhY3QnO1xuXG5pbXBvcnQge2dldENoZWNrZWRDbGFzc2VzfSBmcm9tICcuLi8uLi91dGlscy9jb2xvclV0aWxzLmpzJztcbmltcG9ydCB7dXNlR290aGFtRm9ybUZpZWxkfSBmcm9tICcuLi9Gb3JtL0Zvcm1Db250ZXh0LmpzJztcblxuaW1wb3J0IHR5cGUge0NoYW5nZUV2ZW50LCBJbnB1dEhUTUxBdHRyaWJ1dGVzfSBmcm9tICdyZWFjdCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2hlY2tib3hQcm9wcyBleHRlbmRzIE9taXQ8SW5wdXRIVE1MQXR0cmlidXRlczxIVE1MSW5wdXRFbGVtZW50PiwgJ3R5cGUnIHwgJ2NsYXNzTmFtZScgfCAnZGVmYXVsdFZhbHVlJz4ge1xuICBjb2xvcj86ICdwcmltYXJ5JyB8ICdzZWNvbmRhcnknIHwgJ2Vycm9yJyB8ICdzdWNjZXNzJyB8ICd3YXJuaW5nJztcbiAgY29udGFpbmVyQ2xhc3M/OiBzdHJpbmc7XG4gIGRlZmF1bHRWYWx1ZT86IGJvb2xlYW47XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBlcnJvcj86IHN0cmluZztcbiAgbGFiZWw6IHN0cmluZztcbiAgbGFiZWxDbGFzcz86IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICBvcHRpb25DbGFzcz86IHN0cmluZztcbn1cblxuY29uc3QgQ2hlY2tib3hDb21wb25lbnQgPSAoe1xuICBjb2xvciA9ICdwcmltYXJ5JyxcbiAgbGFiZWwsXG4gIGRlZmF1bHRWYWx1ZSA9IGZhbHNlLFxuICBkZXNjcmlwdGlvbixcbiAgZXJyb3IsXG4gIGNvbnRhaW5lckNsYXNzID0gJycsXG4gIGxhYmVsQ2xhc3MgPSAnJyxcbiAgbmFtZSxcbiAgb3B0aW9uQ2xhc3MgPSAnJyxcbiAgaWQsXG4gIC4uLnByb3BzXG59OiBDaGVja2JveFByb3BzKSA9PiB7XG4gIGNvbnN0IGZvcm0gPSB1c2VHb3RoYW1Gb3JtRmllbGQobmFtZSk7XG4gIGNvbnN0IFtsb2NhbENoZWNrZWQsIHNldExvY2FsQ2hlY2tlZF0gPSB1c2VTdGF0ZShkZWZhdWx0VmFsdWUpO1xuICBjb25zdCBvcHRpb25DbGFzc2VzID0gdXNlTWVtbyhcbiAgICAoKSA9PiBjbihvcHRpb25DbGFzcywgZ2V0Q2hlY2tlZENsYXNzZXMoY29sb3IpKSxcbiAgICBbY29sb3IsIG9wdGlvbkNsYXNzXVxuICApO1xuICBjb25zdCBjaGVja2JveElkID0gaWQgfHwgbmFtZSB8fCBsYWJlbC50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL1xccysvZywgJy0nKTtcbiAgY29uc3QgZGVzY3JpcHRpb25JZCA9IGRlc2NyaXB0aW9uID8gYCR7Y2hlY2tib3hJZH0tZGVzY3JpcHRpb25gIDogdW5kZWZpbmVkO1xuICBjb25zdCBjdXJyZW50VmFsdWUgPSBmb3JtPy52YWx1ZTtcbiAgY29uc3QgdW5jb250cm9sbGVkQ2hlY2tlZCA9IHR5cGVvZiBjdXJyZW50VmFsdWUgPT09ICdib29sZWFuJyA/IGN1cnJlbnRWYWx1ZSA6IGxvY2FsQ2hlY2tlZDtcbiAgY29uc3QgY2hlY2tlZCA9IHR5cGVvZiBwcm9wcy5jaGVja2VkID09PSAnYm9vbGVhbicgPyBwcm9wcy5jaGVja2VkIDogdW5jb250cm9sbGVkQ2hlY2tlZDtcbiAgY29uc3QgaGFuZGxlQ2hhbmdlID0gKGV2ZW50OiBDaGFuZ2VFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT4ge1xuICAgIGlmKCFmb3JtKSB7XG4gICAgICBzZXRMb2NhbENoZWNrZWQoZXZlbnQudGFyZ2V0LmNoZWNrZWQpO1xuICAgIH1cbiAgICBmb3JtPy5zZXRWYWx1ZShuYW1lLCBldmVudC50YXJnZXQuY2hlY2tlZCk7XG4gICAgZm9ybT8uY2xlYXJFcnJvcihuYW1lKTtcbiAgICBwcm9wcy5vbkNoYW5nZT8uKGV2ZW50KTtcbiAgfTtcbiAgY29uc3QgYmFzZUNoZWNrYm94Q2xhc3NlcyA9IGBcbiAgICBjb2wtc3RhcnQtMSByb3ctc3RhcnQtMSBhcHBlYXJhbmNlLW5vbmUgcm91bmRlZC1zbSBib3JkZXIgYm9yZGVyLWdyYXktMzAwIGJnLXdoaXRlXG4gICAgY2hlY2tlZDpib3JkZXItaW5kaWdvLTYwMCBjaGVja2VkOmJnLWluZGlnby02MDAgaW5kZXRlcm1pbmF0ZTpib3JkZXItaW5kaWdvLTYwMFxuICAgIGluZGV0ZXJtaW5hdGU6YmctaW5kaWdvLTYwMCBmb2N1cy12aXNpYmxlOm91dGxpbmUtMiBmb2N1cy12aXNpYmxlOm91dGxpbmUtb2Zmc2V0LTJcbiAgICBmb2N1cy12aXNpYmxlOm91dGxpbmUtaW5kaWdvLTYwMCBkaXNhYmxlZDpib3JkZXItZ3JheS0zMDAgZGlzYWJsZWQ6YmctZ3JheS0xMDBcbiAgICBkaXNhYmxlZDpjaGVja2VkOmJnLWdyYXktMTAwIGZvcmNlZC1jb2xvcnM6YXBwZWFyYW5jZS1hdXRvXG4gICAgJHtlcnJvciA/ICdib3JkZXItcmVkLTMwMCcgOiAnJ31cbiAgYC50cmltKCkucmVwbGFjZSgvXFxzKy9nLCAnICcpO1xuICByZXR1cm4gKFxuICAgIDxmaWVsZHNldCBhcmlhLWxhYmVsPXtsYWJlbH0+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT17YGZsZXggZ2FwLTMgJHtjb250YWluZXJDbGFzc31gfT5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGgtNiBzaHJpbmstMCBpdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImdyb3VwIGdyaWQgc2l6ZS00IGdyaWQtY29scy0xXCI+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgey4uLnByb3BzfVxuICAgICAgICAgICAgICBhcmlhLWRlc2NyaWJlZGJ5PXtkZXNjcmlwdGlvbklkfVxuICAgICAgICAgICAgICBjaGVja2VkPXtjaGVja2VkfVxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake2Jhc2VDaGVja2JveENsYXNzZXN9ICR7b3B0aW9uQ2xhc3Nlc31gfVxuICAgICAgICAgICAgICBkZWZhdWx0Q2hlY2tlZD17Y2hlY2tlZCA9PT0gdW5kZWZpbmVkID8gQm9vbGVhbihmb3JtPy5kZWZhdWx0VmFsdWUgPz8gZGVmYXVsdFZhbHVlKSA6IHVuZGVmaW5lZH1cbiAgICAgICAgICAgICAgaWQ9e2NoZWNrYm94SWR9XG4gICAgICAgICAgICAgIG5hbWU9e25hbWV9XG4gICAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgIHZhbHVlPVwidHJ1ZVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPHN2Z1xuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJwb2ludGVyLWV2ZW50cy1ub25lIGNvbC1zdGFydC0xIHJvdy1zdGFydC0xIHNpemUtMy41IHNlbGYtY2VudGVyIGp1c3RpZnktc2VsZi1jZW50ZXIgc3Ryb2tlLXdoaXRlIGdyb3VwLWhhcy1kaXNhYmxlZDpzdHJva2UtZ3JheS05NTAvMjVcIlxuICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTQgMTRcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIm9wYWNpdHktMCBncm91cC1oYXMtY2hlY2tlZDpvcGFjaXR5LTEwMFwiXG4gICAgICAgICAgICAgICAgZD1cIk0zIDhMNiAxMUwxMSAzLjVcIlxuICAgICAgICAgICAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgc3Ryb2tlV2lkdGg9ezJ9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwib3BhY2l0eS0wIGdyb3VwLWhhcy1pbmRldGVybWluYXRlOm9wYWNpdHktMTAwXCJcbiAgICAgICAgICAgICAgICBkPVwiTTMgN0gxMVwiXG4gICAgICAgICAgICAgICAgc3Ryb2tlTGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICBzdHJva2VXaWR0aD17Mn1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtc20vNlwiPlxuICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgY2xhc3NOYW1lPXtgZm9udC1tZWRpdW0gdGV4dC1ncmF5LTkwMCAke2xhYmVsQ2xhc3N9YH1cbiAgICAgICAgICAgIGh0bWxGb3I9e2NoZWNrYm94SWR9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge2xhYmVsfVxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAge2Rlc2NyaXB0aW9uICYmIChcbiAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtZ3JheS01MDBcIiBpZD17ZGVzY3JpcHRpb25JZH0+XG4gICAgICAgICAgICAgIHtkZXNjcmlwdGlvbn1cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICApfVxuICAgICAgICAgIHtlcnJvciAmJiAoXG4gICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LXJlZC02MDAgbXQtMVwiPntlcnJvcn08L3A+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2ZpZWxkc2V0PlxuICApO1xufTtcblxuZXhwb3J0IGNvbnN0IENoZWNrYm94ID0gbWVtbyhDaGVja2JveENvbXBvbmVudCk7XG5DaGVja2JveC5kaXNwbGF5TmFtZSA9ICdDaGVja2JveCc7XG4iXSwibmFtZXMiOlsiY24iLCJtZW1vIiwidXNlTWVtbyIsInVzZVN0YXRlIiwiZ2V0Q2hlY2tlZENsYXNzZXMiLCJ1c2VHb3RoYW1Gb3JtRmllbGQiLCJDaGVja2JveENvbXBvbmVudCIsImNvbG9yIiwibGFiZWwiLCJkZWZhdWx0VmFsdWUiLCJkZXNjcmlwdGlvbiIsImVycm9yIiwiY29udGFpbmVyQ2xhc3MiLCJsYWJlbENsYXNzIiwibmFtZSIsIm9wdGlvbkNsYXNzIiwiaWQiLCJwcm9wcyIsImZvcm0iLCJsb2NhbENoZWNrZWQiLCJzZXRMb2NhbENoZWNrZWQiLCJvcHRpb25DbGFzc2VzIiwiY2hlY2tib3hJZCIsInRvTG93ZXJDYXNlIiwicmVwbGFjZSIsImRlc2NyaXB0aW9uSWQiLCJ1bmRlZmluZWQiLCJjdXJyZW50VmFsdWUiLCJ2YWx1ZSIsInVuY29udHJvbGxlZENoZWNrZWQiLCJjaGVja2VkIiwiaGFuZGxlQ2hhbmdlIiwiZXZlbnQiLCJ0YXJnZXQiLCJzZXRWYWx1ZSIsImNsZWFyRXJyb3IiLCJvbkNoYW5nZSIsImJhc2VDaGVja2JveENsYXNzZXMiLCJ0cmltIiwiZmllbGRzZXQiLCJhcmlhLWxhYmVsIiwiZGl2IiwiY2xhc3NOYW1lIiwiaW5wdXQiLCJhcmlhLWRlc2NyaWJlZGJ5IiwiZGVmYXVsdENoZWNrZWQiLCJCb29sZWFuIiwidHlwZSIsInN2ZyIsImZpbGwiLCJ2aWV3Qm94IiwicGF0aCIsImQiLCJzdHJva2VMaW5lY2FwIiwic3Ryb2tlTGluZWpvaW4iLCJzdHJva2VXaWR0aCIsImh0bWxGb3IiLCJwIiwiQ2hlY2tib3giLCJkaXNwbGF5TmFtZSJdLCJtYXBwaW5ncyI6IjtBQUFBLFNBQVFBLEVBQUUsUUFBTyxlQUFlO0FBQ2hDLFNBQVFDLElBQUksRUFBRUMsT0FBTyxFQUFFQyxRQUFRLFFBQU8sUUFBUTtBQUU5QyxTQUFRQyxpQkFBaUIsUUFBTyw0QkFBNEI7QUFDNUQsU0FBUUMs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
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { interactWithCanvas } from '../../utils/storyInteractions.js';
|
|
4
|
+
import { Checkbox } from './Checkbox.js';
|
|
5
|
+
const meta = {
|
|
6
|
+
argTypes: {
|
|
7
|
+
color: {
|
|
8
|
+
control: 'select',
|
|
9
|
+
options: [
|
|
10
|
+
'primary',
|
|
11
|
+
'secondary',
|
|
12
|
+
'error',
|
|
13
|
+
'success',
|
|
14
|
+
'warning'
|
|
15
|
+
]
|
|
16
|
+
},
|
|
17
|
+
defaultValue: {
|
|
18
|
+
control: 'boolean'
|
|
19
|
+
},
|
|
20
|
+
description: {
|
|
21
|
+
control: 'text'
|
|
22
|
+
},
|
|
23
|
+
error: {
|
|
24
|
+
control: 'text'
|
|
25
|
+
},
|
|
26
|
+
label: {
|
|
27
|
+
control: 'text'
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
component: Checkbox,
|
|
31
|
+
parameters: {
|
|
32
|
+
layout: 'centered'
|
|
33
|
+
},
|
|
34
|
+
title: 'Components/Form/Checkbox'
|
|
35
|
+
};
|
|
36
|
+
export default meta;
|
|
37
|
+
export const Default = {
|
|
38
|
+
args: {
|
|
39
|
+
color: 'primary',
|
|
40
|
+
defaultValue: false,
|
|
41
|
+
description: 'Receive release and security notifications.',
|
|
42
|
+
label: 'Subscribe to updates',
|
|
43
|
+
name: 'subscribe'
|
|
44
|
+
},
|
|
45
|
+
play: interactWithCanvas,
|
|
46
|
+
render: (args)=>/*#__PURE__*/ _jsx(Checkbox, {
|
|
47
|
+
...args
|
|
48
|
+
})
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L2dvdGhhbWpzL3NyYy9jb21wb25lbnRzL0NoZWNrYm94L0NoZWNrYm94LnN0b3JpZXMudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB7aW50ZXJhY3RXaXRoQ2FudmFzfSBmcm9tICcuLi8uLi91dGlscy9zdG9yeUludGVyYWN0aW9ucy5qcyc7XG5pbXBvcnQge0NoZWNrYm94fSBmcm9tICcuL0NoZWNrYm94LmpzJztcblxuaW1wb3J0IHR5cGUge01ldGEsIFN0b3J5T2JqfSBmcm9tICdAbmxhYnMvbGV4L3N0b3J5Ym9vayc7XG5cbmNvbnN0IG1ldGE6IE1ldGE8dHlwZW9mIENoZWNrYm94PiA9IHtcbiAgYXJnVHlwZXM6IHtcbiAgICBjb2xvcjoge1xuICAgICAgY29udHJvbDogJ3NlbGVjdCcsXG4gICAgICBvcHRpb25zOiBbJ3ByaW1hcnknLCAnc2Vjb25kYXJ5JywgJ2Vycm9yJywgJ3N1Y2Nlc3MnLCAnd2FybmluZyddXG4gICAgfSxcbiAgICBkZWZhdWx0VmFsdWU6IHtcbiAgICAgIGNvbnRyb2w6ICdib29sZWFuJ1xuICAgIH0sXG4gICAgZGVzY3JpcHRpb246IHtcbiAgICAgIGNvbnRyb2w6ICd0ZXh0J1xuICAgIH0sXG4gICAgZXJyb3I6IHtcbiAgICAgIGNvbnRyb2w6ICd0ZXh0J1xuICAgIH0sXG4gICAgbGFiZWw6IHtcbiAgICAgIGNvbnRyb2w6ICd0ZXh0J1xuICAgIH1cbiAgfSxcbiAgY29tcG9uZW50OiBDaGVja2JveCxcbiAgcGFyYW1ldGVyczoge1xuICAgIGxheW91dDogJ2NlbnRlcmVkJ1xuICB9LFxuICB0aXRsZTogJ0NvbXBvbmVudHMvRm9ybS9DaGVja2JveCdcbn07XG5cbmV4cG9ydCBkZWZhdWx0IG1ldGE7XG5cbnR5cGUgU3RvcnkgPSBTdG9yeU9iajx0eXBlb2YgQ2hlY2tib3g+O1xuXG5leHBvcnQgY29uc3QgRGVmYXVsdDogU3RvcnkgPSB7XG4gIGFyZ3M6IHtcbiAgICBjb2xvcjogJ3ByaW1hcnknLFxuICAgIGRlZmF1bHRWYWx1ZTogZmFsc2UsXG4gICAgZGVzY3JpcHRpb246ICdSZWNlaXZlIHJlbGVhc2UgYW5kIHNlY3VyaXR5IG5vdGlmaWNhdGlvbnMuJyxcbiAgICBsYWJlbDogJ1N1YnNjcmliZSB0byB1cGRhdGVzJyxcbiAgICBuYW1lOiAnc3Vic2NyaWJlJ1xuICB9LFxuICBwbGF5OiBpbnRlcmFjdFdpdGhDYW52YXMsXG4gIHJlbmRlcjogKGFyZ3MpID0+IDxDaGVja2JveCB7Li4uYXJnc30gLz5cbn07XG4iXSwibmFtZXMiOlsiUmVhY3QiLCJpbnRlcmFjdFdpdGhDYW52YXMiLCJDaGVja2JveCIsIm1ldGEiLCJhcmdUeXBlcyIsImNvbG9yIiwiY29udHJvbCIsIm9wdGlvbnMiLCJkZWZhdWx0VmFsdWUiLCJkZXNjcmlwdGlvbiIsImVycm9yIiwibGFiZWwiLCJjb21wb25lbnQiLCJwYXJhbWV0ZXJzIiwibGF5b3V0IiwidGl0bGUiLCJEZWZhdWx0IiwiYXJncyIsIm5hbWUiLCJwbGF5IiwicmVuZGVyIl0sIm1hcHBpbmdzIjoiO0FBQUEsT0FBT0EsV0FBVyxRQUFRO0FBRTFCLFNBQVFDLGtCQUFrQixRQUFPLG1DQUFtQztBQUNwRSxTQUFRQyxRQUFRLFFBQU8sZ0JBQWdCO0FBSXZDLE1BQU1DLE9BQThCO0lBQ2xDQyxVQUFVO1FBQ1JDLE9BQU87WUFDTEMsU0FBUztZQUNUQyxTQUFTO2dCQUFDO2dCQUFXO2dCQUFhO2dCQUFTO2dCQUFXO2FBQVU7UUFDbEU7UUFDQUMsY0FBYztZQUNaRixTQUFTO1FBQ1g7UUFDQUcsYUFBYTtZQUNYSCxTQUFTO1FBQ1g7UUFDQUksT0FBTztZQUNMSixTQUFTO1FBQ1g7UUFDQUssT0FBTztZQUNMTCxTQUFTO1FBQ1g7SUFDRjtJQUNBTSxXQUFXVjtJQUNYVyxZQUFZO1FBQ1ZDLFFBQVE7SUFDVjtJQUNBQyxPQUFPO0FBQ1Q7QUFFQSxlQUFlWixLQUFLO0FBSXBCLE9BQU8sTUFBTWEsVUFBaUI7SUFDNUJDLE1BQU07UUFDSlosT0FBTztRQUNQRyxjQUFjO1FBQ2RDLGFBQWE7UUFDYkUsT0FBTztRQUNQTyxNQUFNO0lBQ1I7SUFDQUMsTUFBTWxCO0lBQ05tQixRQUFRLENBQUNILHFCQUFTLEtBQUNmO1lBQVUsR0FBR2UsSUFBSTs7QUFDdEMsRUFBRSJ9
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { ElementType, ReactNode } from 'react';
|
|
2
|
+
type AsChildProps = {
|
|
3
|
+
readonly as?: ElementType;
|
|
4
|
+
readonly asChild?: boolean;
|
|
5
|
+
readonly children?: ReactNode;
|
|
6
|
+
readonly className?: string;
|
|
7
|
+
};
|
|
8
|
+
export declare const renderWithAsChild: <Props extends AsChildProps>({ as: Comp, asChild, children, className, ...props }: Props, dataAttributes?: Record<string, string | undefined>) => import("react").JSX.Element | null;
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Children, cloneElement, isValidElement } from 'react';
|
|
3
|
+
export const renderWithAsChild = ({ as: Comp = 'div', asChild = false, children, className, ...props }, dataAttributes = {})=>{
|
|
4
|
+
if (asChild) {
|
|
5
|
+
const child = Children.only(children);
|
|
6
|
+
if (!/*#__PURE__*/ isValidElement(child)) {
|
|
7
|
+
return null;
|
|
8
|
+
}
|
|
9
|
+
const element = child;
|
|
10
|
+
return /*#__PURE__*/ cloneElement(element, {
|
|
11
|
+
...dataAttributes,
|
|
12
|
+
...props,
|
|
13
|
+
className: [
|
|
14
|
+
element.props.className,
|
|
15
|
+
className
|
|
16
|
+
].filter(Boolean).join(' ')
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
return /*#__PURE__*/ _jsx(Comp, {
|
|
20
|
+
...dataAttributes,
|
|
21
|
+
...props,
|
|
22
|
+
className: className,
|
|
23
|
+
children: children
|
|
24
|
+
});
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L2dvdGhhbWpzL3NyYy9jb21wb25lbnRzL0NvbXBvbmVudFV0aWxzL3JlbmRlcldpdGhBc0NoaWxkLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NoaWxkcmVuLCBjbG9uZUVsZW1lbnQsIGlzVmFsaWRFbGVtZW50fSBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB0eXBlIHtFbGVtZW50VHlwZSwgUmVhY3RFbGVtZW50LCBSZWFjdE5vZGV9IGZyb20gJ3JlYWN0JztcblxudHlwZSBBc0NoaWxkUHJvcHMgPSB7XG4gIHJlYWRvbmx5IGFzPzogRWxlbWVudFR5cGU7XG4gIHJlYWRvbmx5IGFzQ2hpbGQ/OiBib29sZWFuO1xuICByZWFkb25seSBjaGlsZHJlbj86IFJlYWN0Tm9kZTtcbiAgcmVhZG9ubHkgY2xhc3NOYW1lPzogc3RyaW5nO1xufTtcblxuZXhwb3J0IGNvbnN0IHJlbmRlcldpdGhBc0NoaWxkID0gPFByb3BzIGV4dGVuZHMgQXNDaGlsZFByb3BzPihcbiAge1xuICAgIGFzOiBDb21wID0gJ2RpdicsXG4gICAgYXNDaGlsZCA9IGZhbHNlLFxuICAgIGNoaWxkcmVuLFxuICAgIGNsYXNzTmFtZSxcbiAgICAuLi5wcm9wc1xuICB9OiBQcm9wcyxcbiAgZGF0YUF0dHJpYnV0ZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IHVuZGVmaW5lZD4gPSB7fVxuKSA9PiB7XG4gIGlmKGFzQ2hpbGQpIHtcbiAgICBjb25zdCBjaGlsZCA9IENoaWxkcmVuLm9ubHkoY2hpbGRyZW4pO1xuXG4gICAgaWYoIWlzVmFsaWRFbGVtZW50KGNoaWxkKSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgZWxlbWVudCA9IGNoaWxkIGFzIFJlYWN0RWxlbWVudDx7Y2xhc3NOYW1lPzogc3RyaW5nfT47XG5cbiAgICByZXR1cm4gY2xvbmVFbGVtZW50KGVsZW1lbnQsIHtcbiAgICAgIC4uLmRhdGFBdHRyaWJ1dGVzLFxuICAgICAgLi4ucHJvcHMsXG4gICAgICBjbGFzc05hbWU6IFtlbGVtZW50LnByb3BzLmNsYXNzTmFtZSwgY2xhc3NOYW1lXS5maWx0ZXIoQm9vbGVhbikuam9pbignICcpXG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxDb21wXG4gICAgICB7Li4uZGF0YUF0dHJpYnV0ZXN9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZX1cbiAgICA+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9Db21wPlxuICApO1xufTtcbiJdLCJuYW1lcyI6WyJDaGlsZHJlbiIsImNsb25lRWxlbWVudCIsImlzVmFsaWRFbGVtZW50IiwicmVuZGVyV2l0aEFzQ2hpbGQiLCJhcyIsIkNvbXAiLCJhc0NoaWxkIiwiY2hpbGRyZW4iLCJjbGFzc05hbWUiLCJwcm9wcyIsImRhdGFBdHRyaWJ1dGVzIiwiY2hpbGQiLCJvbmx5IiwiZWxlbWVudCIsImZpbHRlciIsIkJvb2xlYW4iLCJqb2luIl0sIm1hcHBpbmdzIjoiO0FBQUEsU0FBUUEsUUFBUSxFQUFFQyxZQUFZLEVBQUVDLGNBQWMsUUFBTyxRQUFRO0FBVzdELE9BQU8sTUFBTUMsb0JBQW9CLENBQy9CLEVBQ0VDLElBQUlDLE9BQU8sS0FBSyxFQUNoQkMsVUFBVSxLQUFLLEVBQ2ZDLFFBQVEsRUFDUkMsU0FBUyxFQUNULEdBQUdDLE9BQ0csRUFDUkMsaUJBQXFELENBQUMsQ0FBQztJQUV2RCxJQUFHSixTQUFTO1FBQ1YsTUFBTUssUUFBUVgsU0FBU1ksSUFBSSxDQUFDTDtRQUU1QixJQUFHLGVBQUNMLGVBQWVTLFFBQVE7WUFDekIsT0FBTztRQUNUO1FBRUEsTUFBTUUsVUFBVUY7UUFFaEIscUJBQU9WLGFBQWFZLFNBQVM7WUFDM0IsR0FBR0gsY0FBYztZQUNqQixHQUFHRCxLQUFLO1lBQ1JELFdBQVc7Z0JBQUNLLFFBQVFKLEtBQUssQ0FBQ0QsU0FBUztnQkFBRUE7YUFBVSxDQUFDTSxNQUFNLENBQUNDLFNBQVNDLElBQUksQ0FBQztRQUN2RTtJQUNGO0lBRUEscUJBQ0UsS0FBQ1g7UUFDRSxHQUFHSyxjQUFjO1FBQ2pCLEdBQUdELEtBQUs7UUFDVEQsV0FBV0E7a0JBRVZEOztBQUdQLEVBQUUifQ==
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { HTMLAttributes } from 'react';
|
|
2
|
+
export type ContainerSize = 'sm' | 'md' | 'lg' | 'xl' | 'full';
|
|
3
|
+
export interface ContainerProps extends HTMLAttributes<HTMLDivElement> {
|
|
4
|
+
readonly bleed?: boolean;
|
|
5
|
+
readonly size?: ContainerSize;
|
|
6
|
+
}
|
|
7
|
+
export declare const Container: ({ bleed, className, size, ...props }: ContainerProps) => import("react").JSX.Element;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from '@nlabs/utils';
|
|
3
|
+
const sizeClasses = {
|
|
4
|
+
full: 'max-w-none',
|
|
5
|
+
lg: 'max-w-5xl',
|
|
6
|
+
md: 'max-w-3xl',
|
|
7
|
+
sm: 'max-w-2xl',
|
|
8
|
+
xl: 'max-w-7xl'
|
|
9
|
+
};
|
|
10
|
+
export const Container = ({ bleed = false, className, size = 'xl', ...props })=>/*#__PURE__*/ _jsx("div", {
|
|
11
|
+
className: cn('mx-auto w-full', sizeClasses[size], !bleed && 'px-4 sm:px-6 lg:px-8', className),
|
|
12
|
+
"data-slot": "container",
|
|
13
|
+
...props
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L2dvdGhhbWpzL3NyYy9jb21wb25lbnRzL0NvbnRhaW5lci9Db250YWluZXIudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Y259IGZyb20gJ0BubGFicy91dGlscyc7XG5cbmltcG9ydCB0eXBlIHtIVE1MQXR0cmlidXRlc30gZnJvbSAncmVhY3QnO1xuXG5leHBvcnQgdHlwZSBDb250YWluZXJTaXplID0gJ3NtJyB8ICdtZCcgfCAnbGcnIHwgJ3hsJyB8ICdmdWxsJztcblxuZXhwb3J0IGludGVyZmFjZSBDb250YWluZXJQcm9wcyBleHRlbmRzIEhUTUxBdHRyaWJ1dGVzPEhUTUxEaXZFbGVtZW50PiB7XG4gIHJlYWRvbmx5IGJsZWVkPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgc2l6ZT86IENvbnRhaW5lclNpemU7XG59XG5cbmNvbnN0IHNpemVDbGFzc2VzOiBSZWNvcmQ8Q29udGFpbmVyU2l6ZSwgc3RyaW5nPiA9IHtcbiAgZnVsbDogJ21heC13LW5vbmUnLFxuICBsZzogJ21heC13LTV4bCcsXG4gIG1kOiAnbWF4LXctM3hsJyxcbiAgc206ICdtYXgtdy0yeGwnLFxuICB4bDogJ21heC13LTd4bCdcbn07XG5cbmV4cG9ydCBjb25zdCBDb250YWluZXIgPSAoe1xuICBibGVlZCA9IGZhbHNlLFxuICBjbGFzc05hbWUsXG4gIHNpemUgPSAneGwnLFxuICAuLi5wcm9wc1xufTogQ29udGFpbmVyUHJvcHMpID0+IChcbiAgPGRpdlxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAnbXgtYXV0byB3LWZ1bGwnLFxuICAgICAgc2l6ZUNsYXNzZXNbc2l6ZV0sXG4gICAgICAhYmxlZWQgJiYgJ3B4LTQgc206cHgtNiBsZzpweC04JyxcbiAgICAgIGNsYXNzTmFtZVxuICAgICl9XG4gICAgZGF0YS1zbG90PVwiY29udGFpbmVyXCJcbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pO1xuIl0sIm5hbWVzIjpbImNuIiwic2l6ZUNsYXNzZXMiLCJmdWxsIiwibGciLCJtZCIsInNtIiwieGwiLCJDb250YWluZXIiLCJibGVlZCIsImNsYXNzTmFtZSIsInNpemUiLCJwcm9wcyIsImRpdiIsImRhdGEtc2xvdCJdLCJtYXBwaW5ncyI6IjtBQUFBLFNBQVFBLEVBQUUsUUFBTyxlQUFlO0FBV2hDLE1BQU1DLGNBQTZDO0lBQ2pEQyxNQUFNO0lBQ05DLElBQUk7SUFDSkMsSUFBSTtJQUNKQyxJQUFJO0lBQ0pDLElBQUk7QUFDTjtBQUVBLE9BQU8sTUFBTUMsWUFBWSxDQUFDLEVBQ3hCQyxRQUFRLEtBQUssRUFDYkMsU0FBUyxFQUNUQyxPQUFPLElBQUksRUFDWCxHQUFHQyxPQUNZLGlCQUNmLEtBQUNDO1FBQ0NILFdBQVdULEdBQ1Qsa0JBQ0FDLFdBQVcsQ0FBQ1MsS0FBSyxFQUNqQixDQUFDRixTQUFTLHdCQUNWQztRQUVGSSxhQUFVO1FBQ1QsR0FBR0YsS0FBSztPQUVYIn0=
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { interactWithCanvas } from '../../utils/storyInteractions.js';
|
|
4
|
+
import { Container } from './Container.js';
|
|
5
|
+
const meta = {
|
|
6
|
+
argTypes: {
|
|
7
|
+
size: {
|
|
8
|
+
control: 'select',
|
|
9
|
+
options: [
|
|
10
|
+
'sm',
|
|
11
|
+
'md',
|
|
12
|
+
'lg',
|
|
13
|
+
'xl',
|
|
14
|
+
'full'
|
|
15
|
+
]
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
component: Container,
|
|
19
|
+
parameters: {
|
|
20
|
+
layout: 'fullscreen'
|
|
21
|
+
},
|
|
22
|
+
title: 'Application UI/Layout/Container'
|
|
23
|
+
};
|
|
24
|
+
export default meta;
|
|
25
|
+
export const Default = {
|
|
26
|
+
args: {
|
|
27
|
+
children: /*#__PURE__*/ _jsx("div", {
|
|
28
|
+
className: "rounded-md border border-border bg-card p-6 text-card-foreground",
|
|
29
|
+
children: "Constrained content"
|
|
30
|
+
}),
|
|
31
|
+
size: 'xl'
|
|
32
|
+
},
|
|
33
|
+
play: interactWithCanvas
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L2dvdGhhbWpzL3NyYy9jb21wb25lbnRzL0NvbnRhaW5lci9Db250YWluZXIuc3Rvcmllcy50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcblxuaW1wb3J0IHtpbnRlcmFjdFdpdGhDYW52YXN9IGZyb20gJy4uLy4uL3V0aWxzL3N0b3J5SW50ZXJhY3Rpb25zLmpzJztcbmltcG9ydCB7Q29udGFpbmVyfSBmcm9tICcuL0NvbnRhaW5lci5qcyc7XG5cbmltcG9ydCB0eXBlIHtNZXRhLCBTdG9yeU9ian0gZnJvbSAnQG5sYWJzL2xleC9zdG9yeWJvb2snO1xuXG5jb25zdCBtZXRhOiBNZXRhPHR5cGVvZiBDb250YWluZXI+ID0ge1xuICBhcmdUeXBlczoge1xuICAgIHNpemU6IHtcbiAgICAgIGNvbnRyb2w6ICdzZWxlY3QnLFxuICAgICAgb3B0aW9uczogWydzbScsICdtZCcsICdsZycsICd4bCcsICdmdWxsJ11cbiAgICB9XG4gIH0sXG4gIGNvbXBvbmVudDogQ29udGFpbmVyLFxuICBwYXJhbWV0ZXJzOiB7XG4gICAgbGF5b3V0OiAnZnVsbHNjcmVlbidcbiAgfSxcbiAgdGl0bGU6ICdBcHBsaWNhdGlvbiBVSS9MYXlvdXQvQ29udGFpbmVyJ1xufTtcblxuZXhwb3J0IGRlZmF1bHQgbWV0YTtcblxudHlwZSBTdG9yeSA9IFN0b3J5T2JqPHR5cGVvZiBDb250YWluZXI+O1xuXG5leHBvcnQgY29uc3QgRGVmYXVsdDogU3RvcnkgPSB7XG4gIGFyZ3M6IHtcbiAgICBjaGlsZHJlbjogPGRpdiBjbGFzc05hbWU9XCJyb3VuZGVkLW1kIGJvcmRlciBib3JkZXItYm9yZGVyIGJnLWNhcmQgcC02IHRleHQtY2FyZC1mb3JlZ3JvdW5kXCI+Q29uc3RyYWluZWQgY29udGVudDwvZGl2PixcbiAgICBzaXplOiAneGwnXG4gIH0sXG4gIHBsYXk6IGludGVyYWN0V2l0aENhbnZhc1xufTtcbiJdLCJuYW1lcyI6WyJSZWFjdCIsImludGVyYWN0V2l0aENhbnZhcyIsIkNvbnRhaW5lciIsIm1ldGEiLCJhcmdUeXBlcyIsInNpemUiLCJjb250cm9sIiwib3B0aW9ucyIsImNvbXBvbmVudCIsInBhcmFtZXRlcnMiLCJsYXlvdXQiLCJ0aXRsZSIsIkRlZmF1bHQiLCJhcmdzIiwiY2hpbGRyZW4iLCJkaXYiLCJjbGFzc05hbWUiLCJwbGF5Il0sIm1hcHBpbmdzIjoiO0FBQUEsT0FBT0EsV0FBVyxRQUFRO0FBRTFCLFNBQVFDLGtCQUFrQixRQUFPLG1DQUFtQztBQUNwRSxTQUFRQyxTQUFTLFFBQU8saUJBQWlCO0FBSXpDLE1BQU1DLE9BQStCO0lBQ25DQyxVQUFVO1FBQ1JDLE1BQU07WUFDSkMsU0FBUztZQUNUQyxTQUFTO2dCQUFDO2dCQUFNO2dCQUFNO2dCQUFNO2dCQUFNO2FBQU87UUFDM0M7SUFDRjtJQUNBQyxXQUFXTjtJQUNYTyxZQUFZO1FBQ1ZDLFFBQVE7SUFDVjtJQUNBQyxPQUFPO0FBQ1Q7QUFFQSxlQUFlUixLQUFLO0FBSXBCLE9BQU8sTUFBTVMsVUFBaUI7SUFDNUJDLE1BQU07UUFDSkMsd0JBQVUsS0FBQ0M7WUFBSUMsV0FBVTtzQkFBbUU7O1FBQzVGWCxNQUFNO0lBQ1I7SUFDQVksTUFBTWhCO0FBQ1IsRUFBRSJ9
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { InputHTMLAttributes, Ref } from 'react';
|
|
2
|
+
import type { GothamColor } from '../../utils/colorUtils.js';
|
|
3
|
+
export interface DateFieldProps extends InputHTMLAttributes<HTMLInputElement> {
|
|
4
|
+
readonly className?: string;
|
|
5
|
+
readonly color?: GothamColor;
|
|
6
|
+
readonly defaultValue?: number;
|
|
7
|
+
readonly disabled?: boolean;
|
|
8
|
+
readonly label?: string;
|
|
9
|
+
readonly labelClass?: string;
|
|
10
|
+
readonly labelColor?: GothamColor;
|
|
11
|
+
readonly name: string;
|
|
12
|
+
readonly error?: boolean;
|
|
13
|
+
readonly errorColor?: GothamColor;
|
|
14
|
+
readonly maxDate?: number;
|
|
15
|
+
readonly minDate?: number;
|
|
16
|
+
readonly onChange?: (date: any) => void;
|
|
17
|
+
readonly ref?: Ref<HTMLInputElement>;
|
|
18
|
+
readonly value?: number;
|
|
19
|
+
}
|
|
20
|
+
declare const DateFieldComponent: ({ className, color, defaultValue, disabled, error: externalError, label, labelClass, labelColor, maxDate, minDate, name, onChange, ref, type, value, ...props }: DateFieldProps) => import("react").JSX.Element;
|
|
21
|
+
export declare const DateField: import("react").MemoExoticComponent<typeof DateFieldComponent>;
|
|
22
|
+
export {};
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } 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 { memo, useEffect, useMemo, useRef, useState } from 'react';
|
|
6
|
+
import { useIsMobile } from '../../hooks/useIsMobile.js';
|
|
7
|
+
import { getOutlineClasses } from '../../utils/colorUtils.js';
|
|
8
|
+
import { assignRef } from '../../utils/refUtils.js';
|
|
9
|
+
import { ErrorMessage } from '../ErrorMessage/ErrorMessage.js';
|
|
10
|
+
import { getFormErrorMessage, useGothamFormField } from '../Form/FormContext.js';
|
|
11
|
+
import { InputField } from '../InputField/InputField.js';
|
|
12
|
+
import { Label } from '../Label/Label.js';
|
|
13
|
+
import { DatePicker } from './DatePicker.js';
|
|
14
|
+
const DateFieldComponent = ({ className = 'w-full rounded-md outline-1 outline-solid focus:outline-3 px-3.5 py-2 text-black dark:text-white placeholder:text-black/50 dark:placeholder:text-white/50 sm:text-sm sm:leading-6', color = 'primary', defaultValue, disabled = false, error: externalError, label = '', labelClass = 'mb-1', labelColor = 'neutral', maxDate, minDate, name, onChange, ref, type = 'text', value, ...props })=>{
|
|
15
|
+
const isMobile = useIsMobile();
|
|
16
|
+
const form = useGothamFormField(name);
|
|
17
|
+
const formError = form?.error;
|
|
18
|
+
const hasError = !!formError || !!externalError;
|
|
19
|
+
const [isPickerVisible, setIsPickerVisible] = useState(false);
|
|
20
|
+
const pickerRef = useRef(null);
|
|
21
|
+
const inputRef = useRef(null);
|
|
22
|
+
const ensureDateInRange = (timestamp)=>{
|
|
23
|
+
if (!timestamp) {
|
|
24
|
+
return timestamp;
|
|
25
|
+
}
|
|
26
|
+
if (minDate && timestamp < minDate) {
|
|
27
|
+
return minDate;
|
|
28
|
+
}
|
|
29
|
+
if (maxDate && timestamp > maxDate) {
|
|
30
|
+
return maxDate;
|
|
31
|
+
}
|
|
32
|
+
return timestamp;
|
|
33
|
+
};
|
|
34
|
+
const [localValue, setLocalValue] = useState(()=>ensureDateInRange(value ?? defaultValue ?? Date.now()));
|
|
35
|
+
const currentValue = Number(form?.value ?? value ?? localValue);
|
|
36
|
+
const outlineClasses = useMemo(()=>getOutlineClasses(hasError ? 'error' : color, {
|
|
37
|
+
hasFocus: true,
|
|
38
|
+
hasHover: true
|
|
39
|
+
}), [
|
|
40
|
+
color,
|
|
41
|
+
hasError
|
|
42
|
+
]);
|
|
43
|
+
const inputClasses = [
|
|
44
|
+
'bg-white/30 dark:bg-black/30',
|
|
45
|
+
disabled ? 'text-neutral/30 dark:text-neutral-dark/30 outline-neutral/30 dark:outline-neutral-dark/30' : outlineClasses,
|
|
46
|
+
className
|
|
47
|
+
].filter(Boolean).join(' ');
|
|
48
|
+
const formatDateForInput = (timestamp)=>new Date(timestamp).toISOString().split('T')[0];
|
|
49
|
+
const parseInputDate = (dateString)=>new Date(dateString).getTime();
|
|
50
|
+
const isDateValid = (timestamp)=>{
|
|
51
|
+
if (minDate && timestamp < minDate) {
|
|
52
|
+
return false;
|
|
53
|
+
}
|
|
54
|
+
if (maxDate && timestamp > maxDate) {
|
|
55
|
+
return false;
|
|
56
|
+
}
|
|
57
|
+
return true;
|
|
58
|
+
};
|
|
59
|
+
useEffect(()=>{
|
|
60
|
+
const handleClickOutside = (event)=>{
|
|
61
|
+
if (pickerRef.current && !pickerRef.current.contains(event.target) && inputRef.current && !inputRef.current.contains(event.target)) {
|
|
62
|
+
setIsPickerVisible(false);
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
document.addEventListener('mousedown', handleClickOutside);
|
|
66
|
+
return ()=>{
|
|
67
|
+
document.removeEventListener('mousedown', handleClickOutside);
|
|
68
|
+
};
|
|
69
|
+
}, []);
|
|
70
|
+
const setDateValue = (timestamp)=>{
|
|
71
|
+
const nextTimestamp = ensureDateInRange(timestamp);
|
|
72
|
+
if (!form) {
|
|
73
|
+
setLocalValue(nextTimestamp);
|
|
74
|
+
}
|
|
75
|
+
form?.setValue(name, nextTimestamp);
|
|
76
|
+
if (isDateValid(nextTimestamp)) {
|
|
77
|
+
form?.clearError(name);
|
|
78
|
+
}
|
|
79
|
+
onChange?.(nextTimestamp);
|
|
80
|
+
};
|
|
81
|
+
return /*#__PURE__*/ _jsxs("div", {
|
|
82
|
+
className: "flex flex-col w-full",
|
|
83
|
+
children: [
|
|
84
|
+
/*#__PURE__*/ _jsx(Label, {
|
|
85
|
+
className: labelClass,
|
|
86
|
+
color: labelColor,
|
|
87
|
+
hasError: hasError,
|
|
88
|
+
label: label,
|
|
89
|
+
name: name
|
|
90
|
+
}),
|
|
91
|
+
/*#__PURE__*/ _jsxs("div", {
|
|
92
|
+
className: "relative",
|
|
93
|
+
children: [
|
|
94
|
+
/*#__PURE__*/ _jsx("input", {
|
|
95
|
+
name: name,
|
|
96
|
+
type: "hidden",
|
|
97
|
+
value: currentValue || ''
|
|
98
|
+
}),
|
|
99
|
+
/*#__PURE__*/ _jsx(InputField, {
|
|
100
|
+
...props,
|
|
101
|
+
className: inputClasses,
|
|
102
|
+
disabled: disabled,
|
|
103
|
+
id: name,
|
|
104
|
+
max: maxDate ? formatDateForInput(maxDate) : undefined,
|
|
105
|
+
min: minDate ? formatDateForInput(minDate) : undefined,
|
|
106
|
+
onChange: (changeEvent)=>{
|
|
107
|
+
setDateValue(parseInputDate(changeEvent.target.value));
|
|
108
|
+
},
|
|
109
|
+
onFocus: ()=>{
|
|
110
|
+
if (!isMobile) {
|
|
111
|
+
setIsPickerVisible(true);
|
|
112
|
+
}
|
|
113
|
+
},
|
|
114
|
+
ref: (node)=>{
|
|
115
|
+
inputRef.current = node;
|
|
116
|
+
assignRef(ref, node);
|
|
117
|
+
},
|
|
118
|
+
type: isMobile ? 'date' : type,
|
|
119
|
+
value: formatDateForInput(currentValue)
|
|
120
|
+
}),
|
|
121
|
+
isPickerVisible && !disabled && !isMobile && /*#__PURE__*/ _jsx("div", {
|
|
122
|
+
className: "absolute z-10 mt-1",
|
|
123
|
+
ref: pickerRef,
|
|
124
|
+
children: /*#__PURE__*/ _jsx(DatePicker, {
|
|
125
|
+
initialDate: currentValue,
|
|
126
|
+
maxDate: maxDate,
|
|
127
|
+
minDate: minDate,
|
|
128
|
+
onDateSelect: (timestamp)=>{
|
|
129
|
+
setDateValue(timestamp);
|
|
130
|
+
setIsPickerVisible(false);
|
|
131
|
+
}
|
|
132
|
+
})
|
|
133
|
+
}),
|
|
134
|
+
/*#__PURE__*/ _jsx(ErrorMessage, {
|
|
135
|
+
message: getFormErrorMessage(formError)
|
|
136
|
+
})
|
|
137
|
+
]
|
|
138
|
+
})
|
|
139
|
+
]
|
|
140
|
+
});
|
|
141
|
+
};
|
|
142
|
+
export const DateField = /*#__PURE__*/ memo(DateFieldComponent);
|
|
143
|
+
DateField.displayName = 'DateField';
|
|
144
|
+
|
|
145
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L2dvdGhhbWpzL3NyYy9jb21wb25lbnRzL0RhdGVGaWVsZC9EYXRlRmllbGQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDI1LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQge21lbW8sIHVzZUVmZmVjdCwgdXNlTWVtbywgdXNlUmVmLCB1c2VTdGF0ZX0gZnJvbSAncmVhY3QnO1xuXG5pbXBvcnQge3VzZUlzTW9iaWxlfSBmcm9tICcuLi8uLi9ob29rcy91c2VJc01vYmlsZS5qcyc7XG5pbXBvcnQge2dldE91dGxpbmVDbGFzc2VzfSBmcm9tICcuLi8uLi91dGlscy9jb2xvclV0aWxzLmpzJztcbmltcG9ydCB7YXNzaWduUmVmfSBmcm9tICcuLi8uLi91dGlscy9yZWZVdGlscy5qcyc7XG5pbXBvcnQge0Vycm9yTWVzc2FnZX0gZnJvbSAnLi4vRXJyb3JNZXNzYWdlL0Vycm9yTWVzc2FnZS5qcyc7XG5pbXBvcnQge2dldEZvcm1FcnJvck1lc3NhZ2UsIHVzZUdvdGhhbUZvcm1GaWVsZH0gZnJvbSAnLi4vRm9ybS9Gb3JtQ29udGV4dC5qcyc7XG5pbXBvcnQge0lucHV0RmllbGQsIHR5cGUgSW5wdXRGaWVsZFByb3BzfSBmcm9tICcuLi9JbnB1dEZpZWxkL0lucHV0RmllbGQuanMnO1xuaW1wb3J0IHtMYWJlbH0gZnJvbSAnLi4vTGFiZWwvTGFiZWwuanMnO1xuaW1wb3J0IHtEYXRlUGlja2VyfSBmcm9tICcuL0RhdGVQaWNrZXIuanMnO1xuXG5pbXBvcnQgdHlwZSB7SW5wdXRIVE1MQXR0cmlidXRlcywgUmVmfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdHlwZSB7R290aGFtQ29sb3J9IGZyb20gJy4uLy4uL3V0aWxzL2NvbG9yVXRpbHMuanMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIERhdGVGaWVsZFByb3BzIGV4dGVuZHMgSW5wdXRIVE1MQXR0cmlidXRlczxIVE1MSW5wdXRFbGVtZW50PiB7XG4gIHJlYWRvbmx5IGNsYXNzTmFtZT86IHN0cmluZztcbiAgcmVhZG9ubHkgY29sb3I/OiBHb3RoYW1Db2xvcjtcbiAgcmVhZG9ubHkgZGVmYXVsdFZhbHVlPzogbnVtYmVyO1xuICByZWFkb25seSBkaXNhYmxlZD86IGJvb2xlYW47XG4gIHJlYWRvbmx5IGxhYmVsPzogc3RyaW5nO1xuICByZWFkb25seSBsYWJlbENsYXNzPzogc3RyaW5nO1xuICByZWFkb25seSBsYWJlbENvbG9yPzogR290aGFtQ29sb3I7XG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgZXJyb3I/OiBib29sZWFuO1xuICByZWFkb25seSBlcnJvckNvbG9yPzogR290aGFtQ29sb3I7XG4gIHJlYWRvbmx5IG1heERhdGU/OiBudW1iZXI7XG4gIHJlYWRvbmx5IG1pbkRhdGU/OiBudW1iZXI7XG4gIHJlYWRvbmx5IG9uQ2hhbmdlPzogKGRhdGUpID0+IHZvaWQ7XG4gIHJlYWRvbmx5IHJlZj86IFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcbiAgcmVhZG9ubHkgdmFsdWU/OiBudW1iZXI7XG59XG5cbmNvbnN0IERhdGVGaWVsZENvbXBvbmVudCA9ICh7XG4gIGNsYXNzTmFtZSA9ICd3LWZ1bGwgcm91bmRlZC1tZCBvdXRsaW5lLTEgb3V0bGluZS1zb2xpZCBmb2N1czpvdXRsaW5lLTMgcHgtMy41IHB5LTIgdGV4dC1ibGFjayBkYXJrOnRleHQtd2hpdGUgcGxhY2Vob2xkZXI6dGV4dC1ibGFjay81MCBkYXJrOnBsYWNlaG9sZGVyOnRleHQtd2hpdGUvNTAgc206dGV4dC1zbSBzbTpsZWFkaW5nLTYnLFxuICBjb2xvciA9ICdwcmltYXJ5JyxcbiAgZGVmYXVsdFZhbHVlLFxuICBkaXNhYmxlZCA9IGZhbHNlLFxuICBlcnJvcjogZXh0ZXJuYWxFcnJvcixcbiAgbGFiZWwgPSAnJyxcbiAgbGFiZWxDbGFzcyA9ICdtYi0xJyxcbiAgbGFiZWxDb2xvciA9ICduZXV0cmFsJyxcbiAgbWF4RGF0ZSxcbiAgbWluRGF0ZSxcbiAgbmFtZSxcbiAgb25DaGFuZ2UsXG4gIHJlZixcbiAgdHlwZSA9ICd0ZXh0JyxcbiAgdmFsdWUsXG4gIC4uLnByb3BzXG59OiBEYXRlRmllbGRQcm9wcykgPT4ge1xuICBjb25zdCBpc01vYmlsZSA9IHVzZUlzTW9iaWxlKCk7XG4gIGNvbnN0IGZvcm0gPSB1c2VHb3RoYW1Gb3JtRmllbGQobmFtZSk7XG4gIGNvbnN0IGZvcm1FcnJvciA9IGZvcm0/LmVycm9yO1xuICBjb25zdCBoYXNFcnJvciA9ICEhZm9ybUVycm9yIHx8ICEhZXh0ZXJuYWxFcnJvcjtcbiAgY29uc3QgW2lzUGlja2VyVmlzaWJsZSwgc2V0SXNQaWNrZXJWaXNpYmxlXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgcGlja2VyUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKTtcbiAgY29uc3QgaW5wdXRSZWYgPSB1c2VSZWY8SFRNTElucHV0RWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IGVuc3VyZURhdGVJblJhbmdlID0gKHRpbWVzdGFtcDogbnVtYmVyKTogbnVtYmVyID0+IHtcbiAgICBpZighdGltZXN0YW1wKSB7XG4gICAgICByZXR1cm4gdGltZXN0YW1wO1xuICAgIH1cblxuICAgIGlmKG1pbkRhdGUgJiYgdGltZXN0YW1wIDwgbWluRGF0ZSkge1xuICAgICAgcmV0dXJuIG1pbkRhdGU7XG4gICAgfVxuXG4gICAgaWYobWF4RGF0ZSAmJiB0aW1lc3RhbXAgPiBtYXhEYXRlKSB7XG4gICAgICByZXR1cm4gbWF4RGF0ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGltZXN0YW1wO1xuICB9O1xuXG4gIGNvbnN0IFtsb2NhbFZhbHVlLCBzZXRMb2NhbFZhbHVlXSA9IHVzZVN0YXRlKCgpID0+IGVuc3VyZURhdGVJblJhbmdlKHZhbHVlID8/IGRlZmF1bHRWYWx1ZSA/PyBEYXRlLm5vdygpKSk7XG4gIGNvbnN0IGN1cnJlbnRWYWx1ZSA9IE51bWJlcihmb3JtPy52YWx1ZSA/PyB2YWx1ZSA/PyBsb2NhbFZhbHVlKTtcbiAgY29uc3Qgb3V0bGluZUNsYXNzZXMgPSB1c2VNZW1vKFxuICAgICgpID0+IGdldE91dGxpbmVDbGFzc2VzKGhhc0Vycm9yID8gJ2Vycm9yJyA6IGNvbG9yLCB7aGFzRm9jdXM6IHRydWUsIGhhc0hvdmVyOiB0cnVlfSksXG4gICAgW2NvbG9yLCBoYXNFcnJvcl1cbiAgKTtcbiAgY29uc3QgaW5wdXRDbGFzc2VzID0gW1xuICAgICdiZy13aGl0ZS8zMCBkYXJrOmJnLWJsYWNrLzMwJyxcbiAgICBkaXNhYmxlZCA/ICd0ZXh0LW5ldXRyYWwvMzAgZGFyazp0ZXh0LW5ldXRyYWwtZGFyay8zMCBvdXRsaW5lLW5ldXRyYWwvMzAgZGFyazpvdXRsaW5lLW5ldXRyYWwtZGFyay8zMCcgOiBvdXRsaW5lQ2xhc3NlcyxcbiAgICBjbGFzc05hbWVcbiAgXS5maWx0ZXIoQm9vbGVhbikuam9pbignICcpO1xuXG4gIGNvbnN0IGZvcm1hdERhdGVGb3JJbnB1dCA9ICh0aW1lc3RhbXA6IG51bWJlcik6IHN0cmluZyA9PiBuZXcgRGF0ZSh0aW1lc3RhbXApLnRvSVNPU3RyaW5nKCkuc3BsaXQoJ1QnKVswXTtcblxuICBjb25zdCBwYXJzZUlucHV0RGF0ZSA9IChkYXRlU3RyaW5nOiBzdHJpbmcpOiBudW1iZXIgPT4gbmV3IERhdGUoZGF0ZVN0cmluZykuZ2V0VGltZSgpO1xuXG4gIGNvbnN0IGlzRGF0ZVZhbGlkID0gKHRpbWVzdGFtcDogbnVtYmVyKTogYm9vbGVhbiA9PiB7XG4gICAgaWYobWluRGF0ZSAmJiB0aW1lc3RhbXAgPCBtaW5EYXRlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmKG1heERhdGUgJiYgdGltZXN0YW1wID4gbWF4RGF0ZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGhhbmRsZUNsaWNrT3V0c2lkZSA9IChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgaWYoXG4gICAgICAgIHBpY2tlclJlZi5jdXJyZW50ICYmXG4gICAgICAgICFwaWNrZXJSZWYuY3VycmVudC5jb250YWlucyhldmVudC50YXJnZXQgYXMgTm9kZSkgJiZcbiAgICAgICAgaW5wdXRSZWYuY3VycmVudCAmJlxuICAgICAgICAhaW5wdXRSZWYuY3VycmVudC5jb250YWlucyhldmVudC50YXJnZXQgYXMgTm9kZSlcbiAgICAgICkge1xuICAgICAgICBzZXRJc1BpY2tlclZpc2libGUoZmFsc2UpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBoYW5kbGVDbGlja091dHNpZGUpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBoYW5kbGVDbGlja091dHNpZGUpO1xuICAgIH07XG4gIH0sIFtdKTtcblxuICBjb25zdCBzZXREYXRlVmFsdWUgPSAodGltZXN0YW1wOiBudW1iZXIpID0+IHtcbiAgICBjb25zdCBuZXh0VGltZXN0YW1wID0gZW5zdXJlRGF0ZUluUmFuZ2UodGltZXN0YW1wKTtcbiAgICBpZighZm9ybSkge1xuICAgICAgc2V0TG9jYWxWYWx1ZShuZXh0VGltZXN0YW1wKTtcbiAgICB9XG4gICAgZm9ybT8uc2V0VmFsdWUobmFtZSwgbmV4dFRpbWVzdGFtcCk7XG5cbiAgICBpZihpc0RhdGVWYWxpZChuZXh0VGltZXN0YW1wKSkge1xuICAgICAgZm9ybT8uY2xlYXJFcnJvcihuYW1lKTtcbiAgICB9XG5cbiAgICBvbkNoYW5nZT8uKG5leHRUaW1lc3RhbXApO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGZsZXgtY29sIHctZnVsbFwiPlxuICAgICAgPExhYmVsXG4gICAgICAgIGNsYXNzTmFtZT17bGFiZWxDbGFzc31cbiAgICAgICAgY29sb3I9e2xhYmVsQ29sb3J9XG4gICAgICAgIGhhc0Vycm9yPXtoYXNFcnJvcn1cbiAgICAgICAgbGFiZWw9e2xhYmVsfVxuICAgICAgICBuYW1lPXtuYW1lfSAvPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJyZWxhdGl2ZVwiPlxuICAgICAgICA8aW5wdXQgbmFtZT17bmFtZX0gdHlwZT1cImhpZGRlblwiIHZhbHVlPXtjdXJyZW50VmFsdWUgfHwgJyd9IC8+XG4gICAgICAgIDxJbnB1dEZpZWxkXG4gICAgICAgICAgey4uLnByb3BzIGFzIE9taXQ8SW5wdXRGaWVsZFByb3BzLCAnb25DaGFuZ2UnPn1cbiAgICAgICAgICBjbGFzc05hbWU9e2lucHV0Q2xhc3Nlc31cbiAgICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICAgICAgaWQ9e25hbWV9XG4gICAgICAgICAgbWF4PXttYXhEYXRlID8gZm9ybWF0RGF0ZUZvcklucHV0KG1heERhdGUpIDogdW5kZWZpbmVkfVxuICAgICAgICAgIG1pbj17bWluRGF0ZSA/IGZvcm1hdERhdGVGb3JJbnB1dChtaW5EYXRlKSA6IHVuZGVmaW5lZH1cbiAgICAgICAgICBvbkNoYW5nZT17KGNoYW5nZUV2ZW50KSA9PiB7XG4gICAgICAgICAgICBzZXREYXRlVmFsdWUocGFyc2VJbnB1dERhdGUoY2hhbmdlRXZlbnQudGFyZ2V0LnZhbHVlKSk7XG4gICAgICAgICAgfX1cbiAgICAgICAgICBvbkZvY3VzPXsoKSA9PiB7XG4gICAgICAgICAgICBpZighaXNNb2JpbGUpIHtcbiAgICAgICAgICAgICAgc2V0SXNQaWNrZXJWaXNpYmxlKHRydWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgICAgcmVmPXsobm9kZSkgPT4ge1xuICAgICAgICAgICAgaW5wdXRSZWYuY3VycmVudCA9IG5vZGUgYXMgSFRNTElucHV0RWxlbWVudCB8IG51bGw7XG4gICAgICAgICAgICBhc3NpZ25SZWYocmVmLCBub2RlIGFzIEhUTUxJbnB1dEVsZW1lbnQgfCBudWxsKTtcbiAgICAgICAgICB9fVxuICAgICAgICAgIHR5cGU9e2lzTW9iaWxlID8gJ2RhdGUnIDogdHlwZX1cbiAgICAgICAgICB2YWx1ZT17Zm9ybWF0RGF0ZUZvcklucHV0KGN1cnJlbnRWYWx1ZSl9XG4gICAgICAgIC8+XG4gICAgICAgIHtpc1BpY2tlclZpc2libGUgJiYgIWRpc2FibGVkICYmICFpc01vYmlsZSAmJiAoXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhYnNvbHV0ZSB6LTEwIG10LTFcIiByZWY9e3BpY2tlclJlZn0+XG4gICAgICAgICAgICA8RGF0ZVBpY2tlclxuICAgICAgICAgICAgICBpbml0aWFsRGF0ZT17Y3VycmVudFZhbHVlfVxuICAgICAgICAgICAgICBtYXhEYXRlPXttYXhEYXRlfVxuICAgICAgICAgICAgICBtaW5EYXRlPXttaW5EYXRlfVxuICAgICAgICAgICAgICBvbkRhdGVTZWxlY3Q9eyh0aW1lc3RhbXApID0+IHtcbiAgICAgICAgICAgICAgICBzZXREYXRlVmFsdWUodGltZXN0YW1wKTtcbiAgICAgICAgICAgICAgICBzZXRJc1BpY2tlclZpc2libGUoZmFsc2UpO1xuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKX1cbiAgICAgICAgPEVycm9yTWVzc2FnZSBtZXNzYWdlPXtnZXRGb3JtRXJyb3JNZXNzYWdlKGZvcm1FcnJvcil9IC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCBEYXRlRmllbGQgPSBtZW1vKERhdGVGaWVsZENvbXBvbmVudCk7XG5EYXRlRmllbGQuZGlzcGxheU5hbWUgPSAnRGF0ZUZpZWxkJztcbiJdLCJuYW1lcyI6WyJtZW1vIiwidXNlRWZmZWN0IiwidXNlTWVtbyIsInVzZVJlZiIsInVzZVN0YXRlIiwidXNlSXNNb2JpbGUiLCJnZXRPdXRsaW5lQ2xhc3NlcyIsImFzc2lnblJlZiIsIkVycm9yTWVzc2FnZSIsImdldEZvcm1FcnJvck1lc3NhZ2UiLCJ1c2VHb3RoYW1Gb3JtRmllbGQiLCJJbnB1dEZpZWxkIiwiTGFiZWwiLCJEYXRlUGlja2VyIiwiRGF0ZUZpZWxkQ29tcG9uZW50IiwiY2xhc3NOYW1lIiwiY29sb3IiLCJkZWZhdWx0VmFsdWUiLCJkaXNhYmxlZCIsImVycm9yIiwiZXh0ZXJuYWxFcnJvciIsImxhYmVsIiwibGFiZWxDbGFzcyIsImxhYmVsQ29sb3IiLCJtYXhEYXRlIiwibWluRGF0ZSIsIm5hbWUiLCJvbkNoYW5nZSIsInJlZiIsInR5cGUiLCJ2YWx1ZSIsInByb3BzIiwiaXNNb2JpbGUiLCJmb3JtIiwiZm9ybUVycm9yIiwiaGFzRXJyb3IiLCJpc1BpY2tlclZpc2libGUiLCJzZXRJc1BpY2tlclZpc2libGUiLCJwaWNrZXJSZWYiLCJpbnB1dFJlZiIsImVuc3VyZURhdGVJblJhbmdlIiwidGltZXN0YW1wIiwibG9jYWxWYWx1ZSIsInNldExvY2FsVmFsdWUiLCJEYXRlIiwibm93IiwiY3VycmVudFZhbHVlIiwiTnVtYmVyIiwib3V0bGluZUNsYXNzZXMiLCJoYXNGb2N1cyIsImhhc0hvdmVyIiwiaW5wdXRDbGFzc2VzIiwiZmlsdGVyIiwiQm9vbGVhbiIsImpvaW4iLCJmb3JtYXREYXRlRm9ySW5wdXQiLCJ0b0lTT1N0cmluZyIsInNwbGl0IiwicGFyc2VJbnB1dERhdGUiLCJkYXRlU3RyaW5nIiwiZ2V0VGltZSIsImlzRGF0ZVZhbGlkIiwiaGFuZGxlQ2xpY2tPdXRzaWRlIiwiZXZlbnQiLCJjdXJyZW50IiwiY29udGFpbnMiLCJ0YXJnZXQiLCJkb2N1bWVudCIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwic2V0RGF0ZVZhbHVlIiwibmV4dFRpbWVzdGFtcCIsInNldFZhbHVlIiwiY2xlYXJFcnJvciIsImRpdiIsImlucHV0IiwiaWQiLCJtYXgiLCJ1bmRlZmluZWQiLCJtaW4iLCJjaGFuZ2VFdmVudCIsIm9uRm9jdXMiLCJub2RlIiwiaW5pdGlhbERhdGUiLCJvbkRhdGVTZWxlY3QiLCJtZXNzYWdlIiwiRGF0ZUZpZWxkIiwiZGlzcGxheU5hbWUiXSwibWFwcGluZ3MiOiI7QUFBQTs7O0NBR0MsR0FDRCxTQUFRQSxJQUFJLEVBQUVDLFNBQVMsRUFBRUMsT0FBTyxFQUFFQyxNQUFNLEVBQUVDLFFBQVEsUUFBTyxRQUFRO0FBRWpFLFNBQVFDLFdBQVcsUUFBTyw2QkFBNkI7QUFDdkQsU0FBUUMsaUJBQWlCLFFBQU8sNEJBQTRCO0FBQzVELFNBQVFDLFNBQVMsUUFBTywwQkFBMEI7QUFDbEQsU0FBUUMsWUFBWSxRQUFPLGtDQUFrQztBQUM3RCxTQUFRQyxtQkFBbUIsRUFBRUMsa0JBQWtCLFFBQU8seUJBQXlCO0FBQy9FLFNBQVFDLFVBQVUsUUFBNkIsOEJBQThCO0FBQzdFLFNBQVFDLEtBQUssUUFBTyxvQkFBb0I7QUFDeEMsU0FBUUMsVUFBVSxRQUFPLGtCQUFrQjtBQXVCM0MsTUFBTUMscUJBQXFCLENBQUMsRUFDMUJDLFlBQVksbUxBQW1MLEVBQy9MQyxRQUFRLFNBQVMsRUFDakJDLFlBQVksRUFDWkMsV0FBVyxLQUFLLEVBQ2hCQyxPQUFPQyxhQUFhLEVBQ3BCQyxRQUFRLEVBQUUsRUFDVkMsYUFBYSxNQUFNLEVBQ25CQyxhQUFhLFNBQVMsRUFDdEJDLE9BQU8sRUFDUEMsT0FBTyxFQUNQQyxJQUFJLEVBQ0pDLFFBQVEsRUFDUkMsR0FBRyxFQUNIQyxPQUFPLE1BQU0sRUFDYkMsS0FBSyxFQUNMLEdBQUdDLE9BQ1k7SUFDZixNQUFNQyxXQUFXM0I7SUFDakIsTUFBTTRCLE9BQU92QixtQkFBbUJnQjtJQUNoQyxNQUFNUSxZQUFZRCxNQUFNZDtJQUN4QixNQUFNZ0IsV0FBVyxDQUFDLENBQUNELGFBQWEsQ0FBQyxDQUFDZDtJQUNsQyxNQUFNLENBQUNnQixpQkFBaUJDLG1C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
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { gothamColors } from '../../utils/colorUtils.js';
|
|
3
|
+
import { interactWithCanvas } from '../../utils/storyInteractions.js';
|
|
4
|
+
import { DateField } from './DateField.js';
|
|
5
|
+
const meta = {
|
|
6
|
+
argTypes: {
|
|
7
|
+
color: {
|
|
8
|
+
control: 'select',
|
|
9
|
+
defaultValue: 'primary',
|
|
10
|
+
description: 'The color of the date field',
|
|
11
|
+
options: gothamColors
|
|
12
|
+
},
|
|
13
|
+
disabled: {
|
|
14
|
+
control: 'boolean',
|
|
15
|
+
defaultValue: false,
|
|
16
|
+
description: 'Whether the date field is disabled'
|
|
17
|
+
},
|
|
18
|
+
error: {
|
|
19
|
+
control: 'boolean',
|
|
20
|
+
defaultValue: false,
|
|
21
|
+
description: 'Whether the date field has an error'
|
|
22
|
+
},
|
|
23
|
+
errorColor: {
|
|
24
|
+
control: 'select',
|
|
25
|
+
defaultValue: 'error',
|
|
26
|
+
description: 'The color of the error state',
|
|
27
|
+
options: gothamColors
|
|
28
|
+
},
|
|
29
|
+
label: {
|
|
30
|
+
control: 'text',
|
|
31
|
+
description: 'The label text for the date field'
|
|
32
|
+
},
|
|
33
|
+
maxDate: {
|
|
34
|
+
control: 'date',
|
|
35
|
+
description: 'The maximum allowed date'
|
|
36
|
+
},
|
|
37
|
+
minDate: {
|
|
38
|
+
control: 'date',
|
|
39
|
+
description: 'The minimum allowed date'
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
component: DateField,
|
|
43
|
+
decorators: [
|
|
44
|
+
(Story)=>/*#__PURE__*/ _jsx("div", {
|
|
45
|
+
className: "p-4 max-w-md",
|
|
46
|
+
children: /*#__PURE__*/ _jsx(Story, {})
|
|
47
|
+
})
|
|
48
|
+
],
|
|
49
|
+
parameters: {
|
|
50
|
+
backgrounds: {
|
|
51
|
+
default: 'light',
|
|
52
|
+
values: [
|
|
53
|
+
{
|
|
54
|
+
name: 'light',
|
|
55
|
+
value: '#ffffff'
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
name: 'dark',
|
|
59
|
+
value: '#1a1a1a'
|
|
60
|
+
}
|
|
61
|
+
]
|
|
62
|
+
},
|
|
63
|
+
layout: 'centered'
|
|
64
|
+
},
|
|
65
|
+
title: 'Components/Form/DateField'
|
|
66
|
+
};
|
|
67
|
+
export default meta;
|
|
68
|
+
export const Default = {
|
|
69
|
+
args: {
|
|
70
|
+
color: 'primary',
|
|
71
|
+
disabled: false,
|
|
72
|
+
error: false,
|
|
73
|
+
label: 'Select Date',
|
|
74
|
+
name: 'date',
|
|
75
|
+
required: true
|
|
76
|
+
},
|
|
77
|
+
play: interactWithCanvas
|
|
78
|
+
};
|
|
79
|
+
export const WithDefaultValue = {
|
|
80
|
+
args: {
|
|
81
|
+
color: 'primary',
|
|
82
|
+
defaultValue: new Date().getTime(),
|
|
83
|
+
disabled: false,
|
|
84
|
+
error: false,
|
|
85
|
+
label: 'Date with Default Value',
|
|
86
|
+
name: 'dateWithDefault'
|
|
87
|
+
},
|
|
88
|
+
play: interactWithCanvas
|
|
89
|
+
};
|
|
90
|
+
export const WithDateRange = {
|
|
91
|
+
args: {
|
|
92
|
+
color: 'primary',
|
|
93
|
+
disabled: false,
|
|
94
|
+
error: false,
|
|
95
|
+
label: 'Date with Range',
|
|
96
|
+
maxDate: new Date(new Date().setFullYear(new Date().getFullYear() + 1)).getTime(),
|
|
97
|
+
minDate: new Date(new Date().setFullYear(new Date().getFullYear() - 1)).getTime(),
|
|
98
|
+
name: 'dateWithRange'
|
|
99
|
+
},
|
|
100
|
+
play: interactWithCanvas
|
|
101
|
+
};
|
|
102
|
+
export const WithError = {
|
|
103
|
+
args: {
|
|
104
|
+
color: 'primary',
|
|
105
|
+
disabled: false,
|
|
106
|
+
error: true,
|
|
107
|
+
errorColor: 'error',
|
|
108
|
+
label: 'Date with Error',
|
|
109
|
+
name: 'dateWithError'
|
|
110
|
+
},
|
|
111
|
+
play: interactWithCanvas
|
|
112
|
+
};
|
|
113
|
+
export const Disabled = {
|
|
114
|
+
args: {
|
|
115
|
+
color: 'primary',
|
|
116
|
+
defaultValue: new Date().getTime(),
|
|
117
|
+
disabled: true,
|
|
118
|
+
error: false,
|
|
119
|
+
label: 'Disabled Date Field',
|
|
120
|
+
name: 'disabledDate'
|
|
121
|
+
},
|
|
122
|
+
play: interactWithCanvas
|
|
123
|
+
};
|
|
124
|
+
|
|
125
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L2dvdGhhbWpzL3NyYy9jb21wb25lbnRzL0RhdGVGaWVsZC9EYXRlRmllbGQuc3Rvcmllcy50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtnb3RoYW1Db2xvcnN9IGZyb20gJy4uLy4uL3V0aWxzL2NvbG9yVXRpbHMuanMnO1xuaW1wb3J0IHtpbnRlcmFjdFdpdGhDYW52YXN9IGZyb20gJy4uLy4uL3V0aWxzL3N0b3J5SW50ZXJhY3Rpb25zLmpzJztcbmltcG9ydCB7RGF0ZUZpZWxkfSBmcm9tICcuL0RhdGVGaWVsZC5qcyc7XG5cbmltcG9ydCB0eXBlIHtNZXRhLCBTdG9yeU9ian0gZnJvbSAnQG5sYWJzL2xleC9zdG9yeWJvb2snO1xuXG5jb25zdCBtZXRhOiBNZXRhPHR5cGVvZiBEYXRlRmllbGQ+ID0ge1xuICBhcmdUeXBlczoge1xuICAgIGNvbG9yOiB7XG4gICAgICBjb250cm9sOiAnc2VsZWN0JyxcbiAgICAgIGRlZmF1bHRWYWx1ZTogJ3ByaW1hcnknLFxuICAgICAgZGVzY3JpcHRpb246ICdUaGUgY29sb3Igb2YgdGhlIGRhdGUgZmllbGQnLFxuICAgICAgb3B0aW9uczogZ290aGFtQ29sb3JzXG4gICAgfSxcbiAgICBkaXNhYmxlZDoge1xuICAgICAgY29udHJvbDogJ2Jvb2xlYW4nLFxuICAgICAgZGVmYXVsdFZhbHVlOiBmYWxzZSxcbiAgICAgIGRlc2NyaXB0aW9uOiAnV2hldGhlciB0aGUgZGF0ZSBmaWVsZCBpcyBkaXNhYmxlZCdcbiAgICB9LFxuICAgIGVycm9yOiB7XG4gICAgICBjb250cm9sOiAnYm9vbGVhbicsXG4gICAgICBkZWZhdWx0VmFsdWU6IGZhbHNlLFxuICAgICAgZGVzY3JpcHRpb246ICdXaGV0aGVyIHRoZSBkYXRlIGZpZWxkIGhhcyBhbiBlcnJvcidcbiAgICB9LFxuICAgIGVycm9yQ29sb3I6IHtcbiAgICAgIGNvbnRyb2w6ICdzZWxlY3QnLFxuICAgICAgZGVmYXVsdFZhbHVlOiAnZXJyb3InLFxuICAgICAgZGVzY3JpcHRpb246ICdUaGUgY29sb3Igb2YgdGhlIGVycm9yIHN0YXRlJyxcbiAgICAgIG9wdGlvbnM6IGdvdGhhbUNvbG9yc1xuICAgIH0sXG4gICAgbGFiZWw6IHtcbiAgICAgIGNvbnRyb2w6ICd0ZXh0JyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnVGhlIGxhYmVsIHRleHQgZm9yIHRoZSBkYXRlIGZpZWxkJ1xuICAgIH0sXG4gICAgbWF4RGF0ZToge1xuICAgICAgY29udHJvbDogJ2RhdGUnLFxuICAgICAgZGVzY3JpcHRpb246ICdUaGUgbWF4aW11bSBhbGxvd2VkIGRhdGUnXG4gICAgfSxcbiAgICBtaW5EYXRlOiB7XG4gICAgICBjb250cm9sOiAnZGF0ZScsXG4gICAgICBkZXNjcmlwdGlvbjogJ1RoZSBtaW5pbXVtIGFsbG93ZWQgZGF0ZSdcbiAgICB9XG4gIH0sXG4gIGNvbXBvbmVudDogRGF0ZUZpZWxkLFxuICBkZWNvcmF0b3JzOiBbXG4gICAgKFN0b3J5KSA9PiAoXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInAtNCBtYXgtdy1tZFwiPlxuICAgICAgICA8U3RvcnkgLz5cbiAgICAgIDwvZGl2PlxuICAgIClcbiAgXSxcbiAgcGFyYW1ldGVyczoge1xuICAgIGJhY2tncm91bmRzOiB7XG4gICAgICBkZWZhdWx0OiAnbGlnaHQnLFxuICAgICAgdmFsdWVzOiBbXG4gICAgICAgIHtuYW1lOiAnbGlnaHQnLCB2YWx1ZTogJyNmZmZmZmYnfSxcbiAgICAgICAge25hbWU6ICdkYXJrJywgdmFsdWU6ICcjMWExYTFhJ31cbiAgICAgIF1cbiAgICB9LFxuICAgIGxheW91dDogJ2NlbnRlcmVkJ1xuICB9LFxuICB0aXRsZTogJ0NvbXBvbmVudHMvRm9ybS9EYXRlRmllbGQnXG59O1xuXG5leHBvcnQgZGVmYXVsdCBtZXRhO1xudHlwZSBTdG9yeSA9IFN0b3J5T2JqPHR5cGVvZiBEYXRlRmllbGQ+O1xuXG5leHBvcnQgY29uc3QgRGVmYXVsdDogU3RvcnkgPSB7XG4gIGFyZ3M6IHtcbiAgICBjb2xvcjogJ3ByaW1hcnknLFxuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICBlcnJvcjogZmFsc2UsXG4gICAgbGFiZWw6ICdTZWxlY3QgRGF0ZScsXG4gICAgbmFtZTogJ2RhdGUnLFxuICAgIHJlcXVpcmVkOiB0cnVlXG4gIH0sXG4gIHBsYXk6IGludGVyYWN0V2l0aENhbnZhc1xufTtcblxuZXhwb3J0IGNvbnN0IFdpdGhEZWZhdWx0VmFsdWU6IFN0b3J5ID0ge1xuICBhcmdzOiB7XG4gICAgY29sb3I6ICdwcmltYXJ5JyxcbiAgICBkZWZhdWx0VmFsdWU6IG5ldyBEYXRlKCkuZ2V0VGltZSgpLFxuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICBlcnJvcjogZmFsc2UsXG4gICAgbGFiZWw6ICdEYXRlIHdpdGggRGVmYXVsdCBWYWx1ZScsXG4gICAgbmFtZTogJ2RhdGVXaXRoRGVmYXVsdCdcbiAgfSxcbiAgcGxheTogaW50ZXJhY3RXaXRoQ2FudmFzXG59O1xuXG5leHBvcnQgY29uc3QgV2l0aERhdGVSYW5nZTogU3RvcnkgPSB7XG4gIGFyZ3M6IHtcbiAgICBjb2xvcjogJ3ByaW1hcnknLFxuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICBlcnJvcjogZmFsc2UsXG4gICAgbGFiZWw6ICdEYXRlIHdpdGggUmFuZ2UnLFxuICAgIG1heERhdGU6IG5ldyBEYXRlKG5ldyBEYXRlKCkuc2V0RnVsbFllYXIobmV3IERhdGUoKS5nZXRGdWxsWWVhcigpICsgMSkpLmdldFRpbWUoKSxcbiAgICBtaW5EYXRlOiBuZXcgRGF0ZShuZXcgRGF0ZSgpLnNldEZ1bGxZZWFyKG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKSAtIDEpKS5nZXRUaW1lKCksXG4gICAgbmFtZTogJ2RhdGVXaXRoUmFuZ2UnXG4gIH0sXG4gIHBsYXk6IGludGVyYWN0V2l0aENhbnZhc1xufTtcblxuZXhwb3J0IGNvbnN0IFdpdGhFcnJvcjogU3RvcnkgPSB7XG4gIGFyZ3M6IHtcbiAgICBjb2xvcjogJ3ByaW1hcnknLFxuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICBlcnJvcjogdHJ1ZSxcbiAgICBlcnJvckNvbG9yOiAnZXJyb3InLFxuICAgIGxhYmVsOiAnRGF0ZSB3aXRoIEVycm9yJyxcbiAgICBuYW1lOiAnZGF0ZVdpdGhFcnJvcidcbiAgfSxcbiAgcGxheTogaW50ZXJhY3RXaXRoQ2FudmFzXG59O1xuXG5leHBvcnQgY29uc3QgRGlzYWJsZWQ6IFN0b3J5ID0ge1xuICBhcmdzOiB7XG4gICAgY29sb3I6ICdwcmltYXJ5JyxcbiAgICBkZWZhdWx0VmFsdWU6IG5ldyBEYXRlKCkuZ2V0VGltZSgpLFxuICAgIGRpc2FibGVkOiB0cnVlLFxuICAgIGVycm9yOiBmYWxzZSxcbiAgICBsYWJlbDogJ0Rpc2FibGVkIERhdGUgRmllbGQnLFxuICAgIG5hbWU6ICdkaXNhYmxlZERhdGUnXG4gIH0sXG4gIHBsYXk6IGludGVyYWN0V2l0aENhbnZhc1xufTtcbiJdLCJuYW1lcyI6WyJnb3RoYW1Db2xvcnMiLCJpbnRlcmFjdFdpdGhDYW52YXMiLCJEYXRlRmllbGQiLCJtZXRhIiwiYXJnVHlwZXMiLCJjb2xvciIsImNvbnRyb2wiLCJkZWZhdWx0VmFsdWUiLCJkZXNjcmlwdGlvbiIsIm9wdGlvbnMiLCJkaXNhYmxlZCIsImVycm9yIiwiZXJyb3JDb2xvciIsImxhYmVsIiwibWF4RGF0ZSIsIm1pbkRhdGUiLCJjb21wb25lbnQiLCJkZWNvcmF0b3JzIiwiU3RvcnkiLCJkaXYiLCJjbGFzc05hbWUiLCJwYXJhbWV0ZXJzIiwiYmFja2dyb3VuZHMiLCJkZWZhdWx0IiwidmFsdWVzIiwibmFtZSIsInZhbHVlIiwibGF5b3V0IiwidGl0bGUiLCJEZWZhdWx0IiwiYXJncyIsInJlcXVpcmVkIiwicGxheSIsIldpdGhEZWZhdWx0VmFsdWUiLCJEYXRlIiwiZ2V0VGltZSIsIldpdGhEYXRlUmFuZ2UiLCJzZXRGdWxsWWVhciIsImdldEZ1bGxZZWFyIiwiV2l0aEVycm9yIiwiRGlzYWJsZWQiXSwibWFwcGluZ3MiOiI7QUFBQSxTQUFRQSxZQUFZLFFBQU8sNEJBQTRCO0FBQ3ZELFNBQVFDLGtCQUFrQixRQUFPLG1DQUFtQztBQUNwRSxTQUFRQyxTQUFTLFFBQU8saUJBQWlCO0FBSXpDLE1BQU1DLE9BQStCO0lBQ25DQyxVQUFVO1FBQ1JDLE9BQU87WUFDTEMsU0FBUztZQUNUQyxjQUFjO1lBQ2RDLGFBQWE7WUFDYkMsU0FBU1Q7UUFDWDtRQUNBVSxVQUFVO1lBQ1JKLFNBQVM7WUFDVEMsY0FBYztZQUNkQyxhQUFhO1FBQ2Y7UUFDQUcsT0FBTztZQUNMTCxTQUFTO1lBQ1RDLGNBQWM7WUFDZEMsYUFBYTtRQUNmO1FBQ0FJLFlBQVk7WUFDVk4sU0FBUztZQUNUQyxjQUFjO1lBQ2RDLGFBQWE7WUFDYkMsU0FBU1Q7UUFDWDtRQUNBYSxPQUFPO1lBQ0xQLFNBQVM7WUFDVEUsYUFBYTtRQUNmO1FBQ0FNLFNBQVM7WUFDUFIsU0FBUztZQUNURSxhQUFhO1FBQ2Y7UUFDQU8sU0FBUztZQUNQVCxTQUFTO1lBQ1RFLGFBQWE7UUFDZjtJQUNGO0lBQ0FRLFdBQVdkO0lBQ1hlLFlBQVk7UUFDVixDQUFDQyxzQkFDQyxLQUFDQztnQkFBSUMsV0FBVTswQkFDYixjQUFBLEtBQUNGOztLQUdOO0lBQ0RHLFlBQVk7UUFDVkMsYUFBYTtZQUNYQyxTQUFTO1lBQ1RDLFFBQVE7Z0JBQ047b0JBQUNDLE1BQU07b0JBQVNDLE9BQU87Z0JBQVM7Z0JBQ2hDO29CQUFDRCxNQUFNO29CQUFRQyxPQUFPO2dCQUFTO2FBQ2hDO1FBQ0g7UUFDQUMsUUFBUTtJQUNWO0lBQ0FDLE9BQU87QUFDVDtBQUVBLGVBQWV6QixLQUFLO0FBR3BCLE9BQU8sTUFBTTBCLFVBQWlCO0lBQzVCQyxNQUFNO1FBQ0p6QixPQUFPO1FBQ1BLLFVBQVU7UUFDVkMsT0FBTztRQUNQRSxPQUFPO1FBQ1BZLE1BQU07UUFDTk0sVUFBVTtJQUNaO0lBQ0FDLE1BQU0vQjtBQUNSLEVBQUU7QUFFRixPQUFPLE1BQU1nQyxtQkFBMEI7SUFDckNILE1BQU07UUFDSnpCLE9BQU87UUFDUEUsY0FBYyxJQUFJMkIsT0FBT0MsT0FBTztRQUNoQ3pCLFVBQVU7UUFDVkMsT0FBTztRQUNQRSxPQUFPO1FBQ1BZLE1BQU07SUFDUjtJQUNBTyxNQUFNL0I7QUFDUixFQUFFO0FBRUYsT0FBTyxNQUFNbUMsZ0JBQXVCO0lBQ2xDTixNQUFNO1FBQ0p6QixPQUFPO1FBQ1BLLFVBQVU7UUFDVkMsT0FBTztRQUNQRSxPQUFPO1FBQ1BDLFNBQVMsSUFBSW9CLEtBQUssSUFBSUEsT0FBT0csV0FBVyxDQUFDLElBQUlILE9BQU9JLFdBQVcsS0FBSyxJQUFJSCxPQUFPO1FBQy9FcEIsU0FBUyxJQUFJbUIsS0FBSyxJQUFJQSxPQUFPRyxXQUFXLENBQUMsSUFBSUgsT0FBT0ksV0FBVyxLQUFLLElBQUlILE9BQU87UUFDL0VWLE1BQU07SUFDUjtJQUNBTyxNQUFNL0I7QUFDUixFQUFFO0FBRUYsT0FBTyxNQUFNc0MsWUFBbUI7SUFDOUJULE1BQU07UUFDSnpCLE9BQU87UUFDUEssVUFBVTtRQUNWQyxPQUFPO1FBQ1BDLFlBQVk7UUFDWkMsT0FBTztRQUNQWSxNQUFNO0lBQ1I7SUFDQU8sTUFBTS9CO0FBQ1IsRUFBRTtBQUVGLE9BQU8sTUFBTXVDLFdBQWtCO0lBQzdCVixNQUFNO1FBQ0p6QixPQUFPO1FBQ1BFLGNBQWMsSUFBSTJCLE9BQU9DLE9BQU87UUFDaEN6QixVQUFVO1FBQ1ZDLE9BQU87UUFDUEUsT0FBTztRQUNQWSxNQUFNO0lBQ1I7SUFDQU8sTUFBTS9CO0FBQ1IsRUFBRSJ9
|