@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,36 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Plus } from 'lucide-react';
|
|
3
|
+
import { EmptyState as EmptyStateComponent } from './EmptyState.js';
|
|
4
|
+
import { interactWithCanvas } from '../../utils/storyInteractions.js';
|
|
5
|
+
const meta = {
|
|
6
|
+
argTypes: {
|
|
7
|
+
actionLabel: {
|
|
8
|
+
control: 'text'
|
|
9
|
+
},
|
|
10
|
+
description: {
|
|
11
|
+
control: 'text'
|
|
12
|
+
},
|
|
13
|
+
title: {
|
|
14
|
+
control: 'text'
|
|
15
|
+
}
|
|
16
|
+
},
|
|
17
|
+
component: EmptyStateComponent,
|
|
18
|
+
parameters: {
|
|
19
|
+
layout: 'centered'
|
|
20
|
+
},
|
|
21
|
+
title: 'Components/EmptyState'
|
|
22
|
+
};
|
|
23
|
+
export default meta;
|
|
24
|
+
export const Default = {
|
|
25
|
+
args: {
|
|
26
|
+
actionIcon: /*#__PURE__*/ _jsx(Plus, {
|
|
27
|
+
className: "mr-1.5 -ml-0.5 size-5"
|
|
28
|
+
}),
|
|
29
|
+
actionLabel: 'New Project',
|
|
30
|
+
description: 'Get started by creating a new project.',
|
|
31
|
+
title: 'No projects'
|
|
32
|
+
},
|
|
33
|
+
play: interactWithCanvas
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L2dvdGhhbWpzL3NyYy9jb21wb25lbnRzL0VtcHR5U3RhdGUvRW1wdHlTdGF0ZS5zdG9yaWVzLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1BsdXN9IGZyb20gJ2x1Y2lkZS1yZWFjdCc7XG5cbmltcG9ydCB7RW1wdHlTdGF0ZSBhcyBFbXB0eVN0YXRlQ29tcG9uZW50fSBmcm9tICcuL0VtcHR5U3RhdGUuanMnO1xuaW1wb3J0IHtpbnRlcmFjdFdpdGhDYW52YXN9IGZyb20gJy4uLy4uL3V0aWxzL3N0b3J5SW50ZXJhY3Rpb25zLmpzJztcblxuaW1wb3J0IHR5cGUge01ldGEsIFN0b3J5T2JqfSBmcm9tICdAbmxhYnMvbGV4L3N0b3J5Ym9vayc7XG5cbmNvbnN0IG1ldGE6IE1ldGE8dHlwZW9mIEVtcHR5U3RhdGVDb21wb25lbnQ+ID0ge1xuICBhcmdUeXBlczoge1xuICAgIGFjdGlvbkxhYmVsOiB7XG4gICAgICBjb250cm9sOiAndGV4dCdcbiAgICB9LFxuICAgIGRlc2NyaXB0aW9uOiB7XG4gICAgICBjb250cm9sOiAndGV4dCdcbiAgICB9LFxuICAgIHRpdGxlOiB7XG4gICAgICBjb250cm9sOiAndGV4dCdcbiAgICB9XG4gIH0sXG4gIGNvbXBvbmVudDogRW1wdHlTdGF0ZUNvbXBvbmVudCxcbiAgcGFyYW1ldGVyczoge1xuICAgIGxheW91dDogJ2NlbnRlcmVkJ1xuICB9LFxuICB0aXRsZTogJ0NvbXBvbmVudHMvRW1wdHlTdGF0ZSdcbn07XG5cbmV4cG9ydCBkZWZhdWx0IG1ldGE7XG5cbnR5cGUgU3RvcnkgPSBTdG9yeU9iajx0eXBlb2YgRW1wdHlTdGF0ZUNvbXBvbmVudD47XG5cbmV4cG9ydCBjb25zdCBEZWZhdWx0OiBTdG9yeSA9IHtcbiAgYXJnczoge1xuICAgIGFjdGlvbkljb246IDxQbHVzIGNsYXNzTmFtZT1cIm1yLTEuNSAtbWwtMC41IHNpemUtNVwiIC8+LFxuICAgIGFjdGlvbkxhYmVsOiAnTmV3IFByb2plY3QnLFxuICAgIGRlc2NyaXB0aW9uOiAnR2V0IHN0YXJ0ZWQgYnkgY3JlYXRpbmcgYSBuZXcgcHJvamVjdC4nLFxuICAgIHRpdGxlOiAnTm8gcHJvamVjdHMnXG4gIH0sXG4gIHBsYXk6IGludGVyYWN0V2l0aENhbnZhc1xufTtcbiJdLCJuYW1lcyI6WyJQbHVzIiwiRW1wdHlTdGF0ZSIsIkVtcHR5U3RhdGVDb21wb25lbnQiLCJpbnRlcmFjdFdpdGhDYW52YXMiLCJtZXRhIiwiYXJnVHlwZXMiLCJhY3Rpb25MYWJlbCIsImNvbnRyb2wiLCJkZXNjcmlwdGlvbiIsInRpdGxlIiwiY29tcG9uZW50IiwicGFyYW1ldGVycyIsImxheW91dCIsIkRlZmF1bHQiLCJhcmdzIiwiYWN0aW9uSWNvbiIsImNsYXNzTmFtZSIsInBsYXkiXSwibWFwcGluZ3MiOiI7QUFBQSxTQUFRQSxJQUFJLFFBQU8sZUFBZTtBQUVsQyxTQUFRQyxjQUFjQyxtQkFBbUIsUUFBTyxrQkFBa0I7QUFDbEUsU0FBUUMsa0JBQWtCLFFBQU8sbUNBQW1DO0FBSXBFLE1BQU1DLE9BQXlDO0lBQzdDQyxVQUFVO1FBQ1JDLGFBQWE7WUFDWEMsU0FBUztRQUNYO1FBQ0FDLGFBQWE7WUFDWEQsU0FBUztRQUNYO1FBQ0FFLE9BQU87WUFDTEYsU0FBUztRQUNYO0lBQ0Y7SUFDQUcsV0FBV1I7SUFDWFMsWUFBWTtRQUNWQyxRQUFRO0lBQ1Y7SUFDQUgsT0FBTztBQUNUO0FBRUEsZUFBZUwsS0FBSztBQUlwQixPQUFPLE1BQU1TLFVBQWlCO0lBQzVCQyxNQUFNO1FBQ0pDLDBCQUFZLEtBQUNmO1lBQUtnQixXQUFVOztRQUM1QlYsYUFBYTtRQUNiRSxhQUFhO1FBQ2JDLE9BQU87SUFDVDtJQUNBUSxNQUFNZDtBQUNSLEVBQUUifQ==
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { jsx as _jsx } 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 { useMemo } from 'react';
|
|
6
|
+
import { getErrorClasses } from '../../utils/colorUtils.js';
|
|
7
|
+
export const ErrorMessage = ({ color, message })=>{
|
|
8
|
+
if (!message) {
|
|
9
|
+
return null;
|
|
10
|
+
}
|
|
11
|
+
const errorClasses = useMemo(()=>getErrorClasses(color), [
|
|
12
|
+
color
|
|
13
|
+
]);
|
|
14
|
+
return /*#__PURE__*/ _jsx("p", {
|
|
15
|
+
className: `absolute -bottom-5 left-5 text-xs ${errorClasses}`,
|
|
16
|
+
children: message
|
|
17
|
+
});
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L2dvdGhhbWpzL3NyYy9jb21wb25lbnRzL0Vycm9yTWVzc2FnZS9FcnJvck1lc3NhZ2UudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDI1LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQge3VzZU1lbW99IGZyb20gJ3JlYWN0JztcblxuaW1wb3J0IHtnZXRFcnJvckNsYXNzZXN9IGZyb20gJy4uLy4uL3V0aWxzL2NvbG9yVXRpbHMuanMnO1xuXG5pbXBvcnQgdHlwZSB7RkN9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB0eXBlIHtHb3RoYW1Db2xvcn0gZnJvbSAnLi4vLi4vdXRpbHMvY29sb3JVdGlscy5qcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXJyb3JNZXNzYWdlUHJvcHMge1xuICByZWFkb25seSBjb2xvcj86IEdvdGhhbUNvbG9yO1xuICByZWFkb25seSBtZXNzYWdlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgY29uc3QgRXJyb3JNZXNzYWdlOiBGQzxFcnJvck1lc3NhZ2VQcm9wcz4gPSAoe2NvbG9yLCBtZXNzYWdlfSkgPT4ge1xuICBpZiAoIW1lc3NhZ2UpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IGVycm9yQ2xhc3NlcyA9IHVzZU1lbW8oKCkgPT4gZ2V0RXJyb3JDbGFzc2VzKGNvbG9yIGFzIEdvdGhhbUNvbG9yKSwgW2NvbG9yXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8cCBjbGFzc05hbWU9e2BhYnNvbHV0ZSAtYm90dG9tLTUgbGVmdC01IHRleHQteHMgJHtlcnJvckNsYXNzZXN9YH0+XG4gICAgICB7bWVzc2FnZX1cbiAgICA8L3A+XG4gICk7XG59OyJdLCJuYW1lcyI6WyJ1c2VNZW1vIiwiZ2V0RXJyb3JDbGFzc2VzIiwiRXJyb3JNZXNzYWdlIiwiY29sb3IiLCJtZXNzYWdlIiwiZXJyb3JDbGFzc2VzIiwicCIsImNsYXNzTmFtZSJdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Q0FHQyxHQUNELFNBQVFBLE9BQU8sUUFBTyxRQUFRO0FBRTlCLFNBQVFDLGVBQWUsUUFBTyw0QkFBNEI7QUFVMUQsT0FBTyxNQUFNQyxlQUFzQyxDQUFDLEVBQUNDLEtBQUssRUFBRUMsT0FBTyxFQUFDO0lBQ2xFLElBQUksQ0FBQ0EsU0FBUztRQUNaLE9BQU87SUFDVDtJQUVBLE1BQU1DLGVBQWVMLFFBQVEsSUFBTUMsZ0JBQWdCRSxRQUF1QjtRQUFDQTtLQUFNO0lBRWpGLHFCQUNFLEtBQUNHO1FBQUVDLFdBQVcsQ0FBQyxrQ0FBa0MsRUFBRUYsY0FBYztrQkFDOUREOztBQUdQLEVBQUUifQ==
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { ErrorMessage } from './ErrorMessage.js';
|
|
2
|
+
import { gothamColors } from '../../utils/colorUtils.js';
|
|
3
|
+
import { focusCanvas } from '../../utils/storyInteractions.js';
|
|
4
|
+
const meta = {
|
|
5
|
+
argTypes: {
|
|
6
|
+
color: {
|
|
7
|
+
control: 'select',
|
|
8
|
+
options: gothamColors
|
|
9
|
+
},
|
|
10
|
+
message: {
|
|
11
|
+
control: 'text'
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
component: ErrorMessage
|
|
15
|
+
};
|
|
16
|
+
export default meta;
|
|
17
|
+
export const Primary = {
|
|
18
|
+
args: {
|
|
19
|
+
color: 'error',
|
|
20
|
+
message: 'This is an error message'
|
|
21
|
+
},
|
|
22
|
+
play: focusCanvas
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L2dvdGhhbWpzL3NyYy9jb21wb25lbnRzL0Vycm9yTWVzc2FnZS9FcnJvck1lc3NhZ2Uuc3Rvcmllcy50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXJyb3JNZXNzYWdlIH0gZnJvbSAnLi9FcnJvck1lc3NhZ2UuanMnO1xuaW1wb3J0IHtnb3RoYW1Db2xvcnN9IGZyb20gJy4uLy4uL3V0aWxzL2NvbG9yVXRpbHMuanMnO1xuaW1wb3J0IHtmb2N1c0NhbnZhc30gZnJvbSAnLi4vLi4vdXRpbHMvc3RvcnlJbnRlcmFjdGlvbnMuanMnO1xuXG5pbXBvcnQgdHlwZSB7IE1ldGEsIFN0b3J5T2JqIH0gZnJvbSAnQG5sYWJzL2xleC9zdG9yeWJvb2snO1xuXG5jb25zdCBtZXRhOiBNZXRhPHR5cGVvZiBFcnJvck1lc3NhZ2U+ID0ge1xuICBhcmdUeXBlczoge1xuICAgIGNvbG9yOiB7XG4gICAgICBjb250cm9sOiAnc2VsZWN0JyxcbiAgICAgIG9wdGlvbnM6IGdvdGhhbUNvbG9yc1xuICAgIH0sXG4gICAgbWVzc2FnZToge1xuICAgICAgY29udHJvbDogJ3RleHQnXG4gICAgfVxuICB9LFxuICBjb21wb25lbnQ6IEVycm9yTWVzc2FnZVxufTtcblxuZXhwb3J0IGRlZmF1bHQgbWV0YTtcbnR5cGUgU3RvcnkgPSBTdG9yeU9iajx0eXBlb2YgRXJyb3JNZXNzYWdlPjtcblxuZXhwb3J0IGNvbnN0IFByaW1hcnk6IFN0b3J5ID0ge1xuICBhcmdzOiB7XG4gICAgY29sb3I6ICdlcnJvcicsXG4gICAgbWVzc2FnZTogJ1RoaXMgaXMgYW4gZXJyb3IgbWVzc2FnZSdcbiAgfSxcbiAgcGxheTogZm9jdXNDYW52YXNcbn07XG4iXSwibmFtZXMiOlsiRXJyb3JNZXNzYWdlIiwiZ290aGFtQ29sb3JzIiwiZm9jdXNDYW52YXMiLCJtZXRhIiwiYXJnVHlwZXMiLCJjb2xvciIsImNvbnRyb2wiLCJvcHRpb25zIiwibWVzc2FnZSIsImNvbXBvbmVudCIsIlByaW1hcnkiLCJhcmdzIiwicGxheSJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsWUFBWSxRQUFRLG9CQUFvQjtBQUNqRCxTQUFRQyxZQUFZLFFBQU8sNEJBQTRCO0FBQ3ZELFNBQVFDLFdBQVcsUUFBTyxtQ0FBbUM7QUFJN0QsTUFBTUMsT0FBa0M7SUFDdENDLFVBQVU7UUFDUkMsT0FBTztZQUNMQyxTQUFTO1lBQ1RDLFNBQVNOO1FBQ1g7UUFDQU8sU0FBUztZQUNQRixTQUFTO1FBQ1g7SUFDRjtJQUNBRyxXQUFXVDtBQUNiO0FBRUEsZUFBZUcsS0FBSztBQUdwQixPQUFPLE1BQU1PLFVBQWlCO0lBQzVCQyxNQUFNO1FBQ0pOLE9BQU87UUFDUEcsU0FBUztJQUNYO0lBQ0FJLE1BQU1WO0FBQ1IsRUFBRSJ9
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { HTMLAttributes, ReactNode } from 'react';
|
|
2
|
+
export interface FaqItem {
|
|
3
|
+
readonly answer: ReactNode;
|
|
4
|
+
readonly id?: string;
|
|
5
|
+
readonly question: ReactNode;
|
|
6
|
+
}
|
|
7
|
+
export interface FaqSectionProps extends Omit<HTMLAttributes<HTMLElement>, 'title'> {
|
|
8
|
+
readonly description?: ReactNode;
|
|
9
|
+
readonly faqs: FaqItem[];
|
|
10
|
+
readonly title: ReactNode;
|
|
11
|
+
}
|
|
12
|
+
declare const FaqSectionComponent: ({ className, description, faqs, title, ...props }: FaqSectionProps) => import("react").JSX.Element;
|
|
13
|
+
export declare const FaqSection: import("react").MemoExoticComponent<typeof FaqSectionComponent>;
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from '@nlabs/utils';
|
|
3
|
+
import { memo } from 'react';
|
|
4
|
+
import { Container } from '../Container/Container.js';
|
|
5
|
+
import { SectionHeader } from '../SectionHeader/SectionHeader.js';
|
|
6
|
+
const FaqSectionComponent = ({ className, description, faqs, title, ...props })=>/*#__PURE__*/ _jsx("section", {
|
|
7
|
+
className: cn('bg-background py-16 sm:py-24 dark:bg-background-dark', className),
|
|
8
|
+
"data-slot": "faq-section",
|
|
9
|
+
...props,
|
|
10
|
+
children: /*#__PURE__*/ _jsxs(Container, {
|
|
11
|
+
children: [
|
|
12
|
+
/*#__PURE__*/ _jsx(SectionHeader, {
|
|
13
|
+
subtitle: description,
|
|
14
|
+
title: title
|
|
15
|
+
}),
|
|
16
|
+
/*#__PURE__*/ _jsx("dl", {
|
|
17
|
+
className: "mt-16 space-y-12 sm:grid sm:grid-cols-2 sm:space-y-0 sm:gap-x-6 sm:gap-y-14 lg:grid-cols-3 lg:gap-x-10",
|
|
18
|
+
children: faqs.map((faq)=>/*#__PURE__*/ _jsxs("div", {
|
|
19
|
+
children: [
|
|
20
|
+
/*#__PURE__*/ _jsx("dt", {
|
|
21
|
+
className: "text-base/7 font-semibold text-foreground dark:text-foreground-dark",
|
|
22
|
+
children: faq.question
|
|
23
|
+
}),
|
|
24
|
+
/*#__PURE__*/ _jsx("dd", {
|
|
25
|
+
className: "mt-2 text-base/7 text-muted-foreground dark:text-muted-foreground-dark",
|
|
26
|
+
children: faq.answer
|
|
27
|
+
})
|
|
28
|
+
]
|
|
29
|
+
}, faq.id ?? String(faq.question)))
|
|
30
|
+
})
|
|
31
|
+
]
|
|
32
|
+
})
|
|
33
|
+
});
|
|
34
|
+
export const FaqSection = /*#__PURE__*/ memo(FaqSectionComponent);
|
|
35
|
+
FaqSection.displayName = 'FaqSection';
|
|
36
|
+
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L2dvdGhhbWpzL3NyYy9jb21wb25lbnRzL0ZhcVNlY3Rpb24vRmFxU2VjdGlvbi50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtjbn0gZnJvbSAnQG5sYWJzL3V0aWxzJztcbmltcG9ydCB7bWVtb30gZnJvbSAncmVhY3QnO1xuXG5pbXBvcnQge0NvbnRhaW5lcn0gZnJvbSAnLi4vQ29udGFpbmVyL0NvbnRhaW5lci5qcyc7XG5pbXBvcnQge1NlY3Rpb25IZWFkZXJ9IGZyb20gJy4uL1NlY3Rpb25IZWFkZXIvU2VjdGlvbkhlYWRlci5qcyc7XG5cbmltcG9ydCB0eXBlIHtIVE1MQXR0cmlidXRlcywgUmVhY3ROb2RlfSBmcm9tICdyZWFjdCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmFxSXRlbSB7XG4gIHJlYWRvbmx5IGFuc3dlcjogUmVhY3ROb2RlO1xuICByZWFkb25seSBpZD86IHN0cmluZztcbiAgcmVhZG9ubHkgcXVlc3Rpb246IFJlYWN0Tm9kZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGYXFTZWN0aW9uUHJvcHMgZXh0ZW5kcyBPbWl0PEhUTUxBdHRyaWJ1dGVzPEhUTUxFbGVtZW50PiwgJ3RpdGxlJz4ge1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IFJlYWN0Tm9kZTtcbiAgcmVhZG9ubHkgZmFxczogRmFxSXRlbVtdO1xuICByZWFkb25seSB0aXRsZTogUmVhY3ROb2RlO1xufVxuXG5jb25zdCBGYXFTZWN0aW9uQ29tcG9uZW50ID0gKHtcbiAgY2xhc3NOYW1lLFxuICBkZXNjcmlwdGlvbixcbiAgZmFxcyxcbiAgdGl0bGUsXG4gIC4uLnByb3BzXG59OiBGYXFTZWN0aW9uUHJvcHMpID0+IChcbiAgPHNlY3Rpb24gY2xhc3NOYW1lPXtjbignYmctYmFja2dyb3VuZCBweS0xNiBzbTpweS0yNCBkYXJrOmJnLWJhY2tncm91bmQtZGFyaycsIGNsYXNzTmFtZSl9IGRhdGEtc2xvdD1cImZhcS1zZWN0aW9uXCIgey4uLnByb3BzfT5cbiAgICA8Q29udGFpbmVyPlxuICAgICAgPFNlY3Rpb25IZWFkZXIgc3VidGl0bGU9e2Rlc2NyaXB0aW9ufSB0aXRsZT17dGl0bGV9IC8+XG4gICAgICA8ZGwgY2xhc3NOYW1lPVwibXQtMTYgc3BhY2UteS0xMiBzbTpncmlkIHNtOmdyaWQtY29scy0yIHNtOnNwYWNlLXktMCBzbTpnYXAteC02IHNtOmdhcC15LTE0IGxnOmdyaWQtY29scy0zIGxnOmdhcC14LTEwXCI+XG4gICAgICAgIHtmYXFzLm1hcCgoZmFxKSA9PiAoXG4gICAgICAgICAgPGRpdiBrZXk9e2ZhcS5pZCA/PyBTdHJpbmcoZmFxLnF1ZXN0aW9uKX0+XG4gICAgICAgICAgICA8ZHQgY2xhc3NOYW1lPVwidGV4dC1iYXNlLzcgZm9udC1zZW1pYm9sZCB0ZXh0LWZvcmVncm91bmQgZGFyazp0ZXh0LWZvcmVncm91bmQtZGFya1wiPntmYXEucXVlc3Rpb259PC9kdD5cbiAgICAgICAgICAgIDxkZCBjbGFzc05hbWU9XCJtdC0yIHRleHQtYmFzZS83IHRleHQtbXV0ZWQtZm9yZWdyb3VuZCBkYXJrOnRleHQtbXV0ZWQtZm9yZWdyb3VuZC1kYXJrXCI+e2ZhcS5hbnN3ZXJ9PC9kZD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKSl9XG4gICAgICA8L2RsPlxuICAgIDwvQ29udGFpbmVyPlxuICA8L3NlY3Rpb24+XG4pO1xuXG5leHBvcnQgY29uc3QgRmFxU2VjdGlvbiA9IG1lbW8oRmFxU2VjdGlvbkNvbXBvbmVudCk7XG5GYXFTZWN0aW9uLmRpc3BsYXlOYW1lID0gJ0ZhcVNlY3Rpb24nO1xuIl0sIm5hbWVzIjpbImNuIiwibWVtbyIsIkNvbnRhaW5lciIsIlNlY3Rpb25IZWFkZXIiLCJGYXFTZWN0aW9uQ29tcG9uZW50IiwiY2xhc3NOYW1lIiwiZGVzY3JpcHRpb24iLCJmYXFzIiwidGl0bGUiLCJwcm9wcyIsInNlY3Rpb24iLCJkYXRhLXNsb3QiLCJzdWJ0aXRsZSIsImRsIiwibWFwIiwiZmFxIiwiZGl2IiwiZHQiLCJxdWVzdGlvbiIsImRkIiwiYW5zd2VyIiwiaWQiLCJTdHJpbmciLCJGYXFTZWN0aW9uIiwiZGlzcGxheU5hbWUiXSwibWFwcGluZ3MiOiI7QUFBQSxTQUFRQSxFQUFFLFFBQU8sZUFBZTtBQUNoQyxTQUFRQyxJQUFJLFFBQU8sUUFBUTtBQUUzQixTQUFRQyxTQUFTLFFBQU8sNEJBQTRCO0FBQ3BELFNBQVFDLGFBQWEsUUFBTyxvQ0FBb0M7QUFnQmhFLE1BQU1DLHNCQUFzQixDQUFDLEVBQzNCQyxTQUFTLEVBQ1RDLFdBQVcsRUFDWEMsSUFBSSxFQUNKQyxLQUFLLEVBQ0wsR0FBR0MsT0FDYSxpQkFDaEIsS0FBQ0M7UUFBUUwsV0FBV0wsR0FBRyx3REFBd0RLO1FBQVlNLGFBQVU7UUFBZSxHQUFHRixLQUFLO2tCQUMxSCxjQUFBLE1BQUNQOzs4QkFDQyxLQUFDQztvQkFBY1MsVUFBVU47b0JBQWFFLE9BQU9BOzs4QkFDN0MsS0FBQ0s7b0JBQUdSLFdBQVU7OEJBQ1hFLEtBQUtPLEdBQUcsQ0FBQyxDQUFDQyxvQkFDVCxNQUFDQzs7OENBQ0MsS0FBQ0M7b0NBQUdaLFdBQVU7OENBQXVFVSxJQUFJRyxRQUFROzs4Q0FDakcsS0FBQ0M7b0NBQUdkLFdBQVU7OENBQTBFVSxJQUFJSyxNQUFNOzs7MkJBRjFGTCxJQUFJTSxFQUFFLElBQUlDLE9BQU9QLElBQUlHLFFBQVE7Ozs7O0FBVWpELE9BQU8sTUFBTUssMkJBQWF0QixLQUFLRyxxQkFBcUI7QUFDcERtQixXQUFXQyxXQUFXLEdBQUcifQ==
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { FaqSection } from './FaqSection.js';
|
|
2
|
+
const meta = {
|
|
3
|
+
component: FaqSection,
|
|
4
|
+
parameters: {
|
|
5
|
+
layout: 'fullscreen'
|
|
6
|
+
},
|
|
7
|
+
title: 'Marketing/Sections/FaqSection'
|
|
8
|
+
};
|
|
9
|
+
export default meta;
|
|
10
|
+
export const ThreeColumn = {
|
|
11
|
+
args: {
|
|
12
|
+
description: 'Answers for the most common implementation questions.',
|
|
13
|
+
faqs: [
|
|
14
|
+
{
|
|
15
|
+
answer: 'Yes. Components accept data props and className overrides.',
|
|
16
|
+
question: 'Can I reuse these across microsites?'
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
answer: 'Yes. Classes target Tailwind v4 tokens and Gotham theme colors.',
|
|
20
|
+
question: 'Are the styles Gotham-aware?'
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
answer: 'Yes. Each component has a sibling test and Storybook example.',
|
|
24
|
+
question: 'Are examples included?'
|
|
25
|
+
}
|
|
26
|
+
],
|
|
27
|
+
title: 'Frequently asked questions'
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L2dvdGhhbWpzL3NyYy9jb21wb25lbnRzL0ZhcVNlY3Rpb24vRmFxU2VjdGlvbi5zdG9yaWVzLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0ZhcVNlY3Rpb259IGZyb20gJy4vRmFxU2VjdGlvbi5qcyc7XG5cbmltcG9ydCB0eXBlIHtNZXRhLCBTdG9yeU9ian0gZnJvbSAnQG5sYWJzL2xleC9zdG9yeWJvb2snO1xuXG5jb25zdCBtZXRhOiBNZXRhPHR5cGVvZiBGYXFTZWN0aW9uPiA9IHtcbiAgY29tcG9uZW50OiBGYXFTZWN0aW9uLFxuICBwYXJhbWV0ZXJzOiB7XG4gICAgbGF5b3V0OiAnZnVsbHNjcmVlbidcbiAgfSxcbiAgdGl0bGU6ICdNYXJrZXRpbmcvU2VjdGlvbnMvRmFxU2VjdGlvbidcbn07XG5cbmV4cG9ydCBkZWZhdWx0IG1ldGE7XG5cbnR5cGUgU3RvcnkgPSBTdG9yeU9iajx0eXBlb2YgRmFxU2VjdGlvbj47XG5cbmV4cG9ydCBjb25zdCBUaHJlZUNvbHVtbjogU3RvcnkgPSB7XG4gIGFyZ3M6IHtcbiAgICBkZXNjcmlwdGlvbjogJ0Fuc3dlcnMgZm9yIHRoZSBtb3N0IGNvbW1vbiBpbXBsZW1lbnRhdGlvbiBxdWVzdGlvbnMuJyxcbiAgICBmYXFzOiBbXG4gICAgICB7YW5zd2VyOiAnWWVzLiBDb21wb25lbnRzIGFjY2VwdCBkYXRhIHByb3BzIGFuZCBjbGFzc05hbWUgb3ZlcnJpZGVzLicsIHF1ZXN0aW9uOiAnQ2FuIEkgcmV1c2UgdGhlc2UgYWNyb3NzIG1pY3Jvc2l0ZXM/J30sXG4gICAgICB7YW5zd2VyOiAnWWVzLiBDbGFzc2VzIHRhcmdldCBUYWlsd2luZCB2NCB0b2tlbnMgYW5kIEdvdGhhbSB0aGVtZSBjb2xvcnMuJywgcXVlc3Rpb246ICdBcmUgdGhlIHN0eWxlcyBHb3RoYW0tYXdhcmU/J30sXG4gICAgICB7YW5zd2VyOiAnWWVzLiBFYWNoIGNvbXBvbmVudCBoYXMgYSBzaWJsaW5nIHRlc3QgYW5kIFN0b3J5Ym9vayBleGFtcGxlLicsIHF1ZXN0aW9uOiAnQXJlIGV4YW1wbGVzIGluY2x1ZGVkPyd9XG4gICAgXSxcbiAgICB0aXRsZTogJ0ZyZXF1ZW50bHkgYXNrZWQgcXVlc3Rpb25zJ1xuICB9XG59O1xuIl0sIm5hbWVzIjpbIkZhcVNlY3Rpb24iLCJtZXRhIiwiY29tcG9uZW50IiwicGFyYW1ldGVycyIsImxheW91dCIsInRpdGxlIiwiVGhyZWVDb2x1bW4iLCJhcmdzIiwiZGVzY3JpcHRpb24iLCJmYXFzIiwiYW5zd2VyIiwicXVlc3Rpb24iXSwibWFwcGluZ3MiOiJBQUFBLFNBQVFBLFVBQVUsUUFBTyxrQkFBa0I7QUFJM0MsTUFBTUMsT0FBZ0M7SUFDcENDLFdBQVdGO0lBQ1hHLFlBQVk7UUFDVkMsUUFBUTtJQUNWO0lBQ0FDLE9BQU87QUFDVDtBQUVBLGVBQWVKLEtBQUs7QUFJcEIsT0FBTyxNQUFNSyxjQUFxQjtJQUNoQ0MsTUFBTTtRQUNKQyxhQUFhO1FBQ2JDLE1BQU07WUFDSjtnQkFBQ0MsUUFBUTtnQkFBOERDLFVBQVU7WUFBc0M7WUFDdkg7Z0JBQUNELFFBQVE7Z0JBQW1FQyxVQUFVO1lBQThCO1lBQ3BIO2dCQUFDRCxRQUFRO2dCQUFpRUMsVUFBVTtZQUF3QjtTQUM3RztRQUNETixPQUFPO0lBQ1Q7QUFDRixFQUFFIn0=
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Description as HeadlessDescription, Field as HeadlessField, Fieldset as HeadlessFieldset, Label as HeadlessLabel, Legend as HeadlessLegend } from '@headlessui/react';
|
|
2
|
+
import type { ComponentPropsWithoutRef } from 'react';
|
|
3
|
+
export declare const Fieldset: ({ className, ...props }: Omit<ComponentPropsWithoutRef<typeof HeadlessFieldset>, 'as' | 'className'> & {
|
|
4
|
+
readonly className?: string;
|
|
5
|
+
}) => import("react").JSX.Element;
|
|
6
|
+
export declare const Legend: ({ className, ...props }: Omit<ComponentPropsWithoutRef<typeof HeadlessLegend>, 'as' | 'className'> & {
|
|
7
|
+
readonly className?: string;
|
|
8
|
+
}) => import("react").JSX.Element;
|
|
9
|
+
export declare const FieldGroup: ({ className, ...props }: ComponentPropsWithoutRef<'div'>) => import("react").JSX.Element;
|
|
10
|
+
export declare const Field: ({ className, ...props }: Omit<ComponentPropsWithoutRef<typeof HeadlessField>, 'as' | 'className'> & {
|
|
11
|
+
readonly className?: string;
|
|
12
|
+
}) => import("react").JSX.Element;
|
|
13
|
+
export declare const FieldLabel: ({ className, ...props }: Omit<ComponentPropsWithoutRef<typeof HeadlessLabel>, 'as' | 'className'> & {
|
|
14
|
+
readonly className?: string;
|
|
15
|
+
}) => import("react").JSX.Element;
|
|
16
|
+
export declare const FieldDescription: ({ className, ...props }: Omit<ComponentPropsWithoutRef<typeof HeadlessDescription>, 'as' | 'className'> & {
|
|
17
|
+
readonly className?: string;
|
|
18
|
+
}) => import("react").JSX.Element;
|
|
19
|
+
export declare const FieldError: ({ className, ...props }: Omit<ComponentPropsWithoutRef<typeof HeadlessDescription>, 'as' | 'className'> & {
|
|
20
|
+
readonly className?: string;
|
|
21
|
+
}) => import("react").JSX.Element;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Description as HeadlessDescription, Field as HeadlessField, Fieldset as HeadlessFieldset, Label as HeadlessLabel, Legend as HeadlessLegend } from '@headlessui/react';
|
|
3
|
+
import { cn } from '@nlabs/utils';
|
|
4
|
+
export const Fieldset = ({ className, ...props })=>/*#__PURE__*/ _jsx(HeadlessFieldset, {
|
|
5
|
+
className: cn('*:data-[slot=text]:mt-1 [&>*+[data-slot=control]]:mt-6', className),
|
|
6
|
+
...props
|
|
7
|
+
});
|
|
8
|
+
export const Legend = ({ className, ...props })=>/*#__PURE__*/ _jsx(HeadlessLegend, {
|
|
9
|
+
className: cn('text-base/6 font-semibold text-foreground data-disabled:opacity-50 sm:text-sm/6 dark:text-foreground-dark', className),
|
|
10
|
+
"data-slot": "legend",
|
|
11
|
+
...props
|
|
12
|
+
});
|
|
13
|
+
export const FieldGroup = ({ className, ...props })=>/*#__PURE__*/ _jsx("div", {
|
|
14
|
+
className: cn('space-y-8', className),
|
|
15
|
+
"data-slot": "control",
|
|
16
|
+
...props
|
|
17
|
+
});
|
|
18
|
+
export const Field = ({ className, ...props })=>/*#__PURE__*/ _jsx(HeadlessField, {
|
|
19
|
+
className: cn('[&>[data-slot=label]+[data-slot=control]]:mt-3', '[&>[data-slot=label]+[data-slot=description]]:mt-1', '[&>[data-slot=description]+[data-slot=control]]:mt-3', '[&>[data-slot=control]+[data-slot=description]]:mt-3', '[&>[data-slot=control]+[data-slot=error]]:mt-3', '*:data-[slot=label]:font-medium', className),
|
|
20
|
+
"data-slot": "field",
|
|
21
|
+
...props
|
|
22
|
+
});
|
|
23
|
+
export const FieldLabel = ({ className, ...props })=>/*#__PURE__*/ _jsx(HeadlessLabel, {
|
|
24
|
+
className: cn('text-base/6 text-foreground select-none data-disabled:opacity-50 sm:text-sm/6 dark:text-foreground-dark', className),
|
|
25
|
+
"data-slot": "label",
|
|
26
|
+
...props
|
|
27
|
+
});
|
|
28
|
+
export const FieldDescription = ({ className, ...props })=>/*#__PURE__*/ _jsx(HeadlessDescription, {
|
|
29
|
+
className: cn('text-base/6 text-muted-foreground data-disabled:opacity-50 sm:text-sm/6 dark:text-muted-foreground-dark', className),
|
|
30
|
+
"data-slot": "description",
|
|
31
|
+
...props
|
|
32
|
+
});
|
|
33
|
+
export const FieldError = ({ className, ...props })=>/*#__PURE__*/ _jsx(HeadlessDescription, {
|
|
34
|
+
className: cn('text-base/6 text-error data-disabled:opacity-50 sm:text-sm/6 dark:text-error-dark', className),
|
|
35
|
+
"data-slot": "error",
|
|
36
|
+
...props
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L2dvdGhhbWpzL3NyYy9jb21wb25lbnRzL0ZpZWxkc2V0L0ZpZWxkc2V0LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0Rlc2NyaXB0aW9uIGFzIEhlYWRsZXNzRGVzY3JpcHRpb24sIEZpZWxkIGFzIEhlYWRsZXNzRmllbGQsIEZpZWxkc2V0IGFzIEhlYWRsZXNzRmllbGRzZXQsIExhYmVsIGFzIEhlYWRsZXNzTGFiZWwsIExlZ2VuZCBhcyBIZWFkbGVzc0xlZ2VuZH0gZnJvbSAnQGhlYWRsZXNzdWkvcmVhY3QnO1xuaW1wb3J0IHtjbn0gZnJvbSAnQG5sYWJzL3V0aWxzJztcblxuaW1wb3J0IHR5cGUge0NvbXBvbmVudFByb3BzV2l0aG91dFJlZn0gZnJvbSAncmVhY3QnO1xuXG5leHBvcnQgY29uc3QgRmllbGRzZXQgPSAoe1xuICBjbGFzc05hbWUsXG4gIC4uLnByb3BzXG59OiBPbWl0PENvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgSGVhZGxlc3NGaWVsZHNldD4sICdhcycgfCAnY2xhc3NOYW1lJz4gJiB7cmVhZG9ubHkgY2xhc3NOYW1lPzogc3RyaW5nfSkgPT4gKFxuICA8SGVhZGxlc3NGaWVsZHNldFxuICAgIGNsYXNzTmFtZT17Y24oJyo6ZGF0YS1bc2xvdD10ZXh0XTptdC0xIFsmPiorW2RhdGEtc2xvdD1jb250cm9sXV06bXQtNicsIGNsYXNzTmFtZSl9XG4gICAgey4uLnByb3BzfVxuICAvPlxuKTtcblxuZXhwb3J0IGNvbnN0IExlZ2VuZCA9ICh7XG4gIGNsYXNzTmFtZSxcbiAgLi4ucHJvcHNcbn06IE9taXQ8Q29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBIZWFkbGVzc0xlZ2VuZD4sICdhcycgfCAnY2xhc3NOYW1lJz4gJiB7cmVhZG9ubHkgY2xhc3NOYW1lPzogc3RyaW5nfSkgPT4gKFxuICA8SGVhZGxlc3NMZWdlbmRcbiAgICBjbGFzc05hbWU9e2NuKCd0ZXh0LWJhc2UvNiBmb250LXNlbWlib2xkIHRleHQtZm9yZWdyb3VuZCBkYXRhLWRpc2FibGVkOm9wYWNpdHktNTAgc206dGV4dC1zbS82IGRhcms6dGV4dC1mb3JlZ3JvdW5kLWRhcmsnLCBjbGFzc05hbWUpfVxuICAgIGRhdGEtc2xvdD1cImxlZ2VuZFwiXG4gICAgey4uLnByb3BzfVxuICAvPlxuKTtcblxuZXhwb3J0IGNvbnN0IEZpZWxkR3JvdXAgPSAoe1xuICBjbGFzc05hbWUsXG4gIC4uLnByb3BzXG59OiBDb21wb25lbnRQcm9wc1dpdGhvdXRSZWY8J2Rpdic+KSA9PiAoXG4gIDxkaXZcbiAgICBjbGFzc05hbWU9e2NuKCdzcGFjZS15LTgnLCBjbGFzc05hbWUpfVxuICAgIGRhdGEtc2xvdD1cImNvbnRyb2xcIlxuICAgIHsuLi5wcm9wc31cbiAgLz5cbik7XG5cbmV4cG9ydCBjb25zdCBGaWVsZCA9ICh7XG4gIGNsYXNzTmFtZSxcbiAgLi4ucHJvcHNcbn06IE9taXQ8Q29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBIZWFkbGVzc0ZpZWxkPiwgJ2FzJyB8ICdjbGFzc05hbWUnPiAmIHtyZWFkb25seSBjbGFzc05hbWU/OiBzdHJpbmd9KSA9PiAoXG4gIDxIZWFkbGVzc0ZpZWxkXG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICdbJj5bZGF0YS1zbG90PWxhYmVsXStbZGF0YS1zbG90PWNvbnRyb2xdXTptdC0zJyxcbiAgICAgICdbJj5bZGF0YS1zbG90PWxhYmVsXStbZGF0YS1zbG90PWRlc2NyaXB0aW9uXV06bXQtMScsXG4gICAgICAnWyY+W2RhdGEtc2xvdD1kZXNjcmlwdGlvbl0rW2RhdGEtc2xvdD1jb250cm9sXV06bXQtMycsXG4gICAgICAnWyY+W2RhdGEtc2xvdD1jb250cm9sXStbZGF0YS1zbG90PWRlc2NyaXB0aW9uXV06bXQtMycsXG4gICAgICAnWyY+W2RhdGEtc2xvdD1jb250cm9sXStbZGF0YS1zbG90PWVycm9yXV06bXQtMycsXG4gICAgICAnKjpkYXRhLVtzbG90PWxhYmVsXTpmb250LW1lZGl1bScsXG4gICAgICBjbGFzc05hbWVcbiAgICApfVxuICAgIGRhdGEtc2xvdD1cImZpZWxkXCJcbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pO1xuXG5leHBvcnQgY29uc3QgRmllbGRMYWJlbCA9ICh7XG4gIGNsYXNzTmFtZSxcbiAgLi4ucHJvcHNcbn06IE9taXQ8Q29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBIZWFkbGVzc0xhYmVsPiwgJ2FzJyB8ICdjbGFzc05hbWUnPiAmIHtyZWFkb25seSBjbGFzc05hbWU/OiBzdHJpbmd9KSA9PiAoXG4gIDxIZWFkbGVzc0xhYmVsXG4gICAgY2xhc3NOYW1lPXtjbigndGV4dC1iYXNlLzYgdGV4dC1mb3JlZ3JvdW5kIHNlbGVjdC1ub25lIGRhdGEtZGlzYWJsZWQ6b3BhY2l0eS01MCBzbTp0ZXh0LXNtLzYgZGFyazp0ZXh0LWZvcmVncm91bmQtZGFyaycsIGNsYXNzTmFtZSl9XG4gICAgZGF0YS1zbG90PVwibGFiZWxcIlxuICAgIHsuLi5wcm9wc31cbiAgLz5cbik7XG5cbmV4cG9ydCBjb25zdCBGaWVsZERlc2NyaXB0aW9uID0gKHtcbiAgY2xhc3NOYW1lLFxuICAuLi5wcm9wc1xufTogT21pdDxDb21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIEhlYWRsZXNzRGVzY3JpcHRpb24+LCAnYXMnIHwgJ2NsYXNzTmFtZSc+ICYge3JlYWRvbmx5IGNsYXNzTmFtZT86IHN0cmluZ30pID0+IChcbiAgPEhlYWRsZXNzRGVzY3JpcHRpb25cbiAgICBjbGFzc05hbWU9e2NuKCd0ZXh0LWJhc2UvNiB0ZXh0LW11dGVkLWZvcmVncm91bmQgZGF0YS1kaXNhYmxlZDpvcGFjaXR5LTUwIHNtOnRleHQtc20vNiBkYXJrOnRleHQtbXV0ZWQtZm9yZWdyb3VuZC1kYXJrJywgY2xhc3NOYW1lKX1cbiAgICBkYXRhLXNsb3Q9XCJkZXNjcmlwdGlvblwiXG4gICAgey4uLnByb3BzfVxuICAvPlxuKTtcblxuZXhwb3J0IGNvbnN0IEZpZWxkRXJyb3IgPSAoe1xuICBjbGFzc05hbWUsXG4gIC4uLnByb3BzXG59OiBPbWl0PENvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgSGVhZGxlc3NEZXNjcmlwdGlvbj4sICdhcycgfCAnY2xhc3NOYW1lJz4gJiB7cmVhZG9ubHkgY2xhc3NOYW1lPzogc3RyaW5nfSkgPT4gKFxuICA8SGVhZGxlc3NEZXNjcmlwdGlvblxuICAgIGNsYXNzTmFtZT17Y24oJ3RleHQtYmFzZS82IHRleHQtZXJyb3IgZGF0YS1kaXNhYmxlZDpvcGFjaXR5LTUwIHNtOnRleHQtc20vNiBkYXJrOnRleHQtZXJyb3ItZGFyaycsIGNsYXNzTmFtZSl9XG4gICAgZGF0YS1zbG90PVwiZXJyb3JcIlxuICAgIHsuLi5wcm9wc31cbiAgLz5cbik7XG4iXSwibmFtZXMiOlsiRGVzY3JpcHRpb24iLCJIZWFkbGVzc0Rlc2NyaXB0aW9uIiwiRmllbGQiLCJIZWFkbGVzc0ZpZWxkIiwiRmllbGRzZXQiLCJIZWFkbGVzc0ZpZWxkc2V0IiwiTGFiZWwiLCJIZWFkbGVzc0xhYmVsIiwiTGVnZW5kIiwiSGVhZGxlc3NMZWdlbmQiLCJjbiIsImNsYXNzTmFtZSIsInByb3BzIiwiZGF0YS1zbG90IiwiRmllbGRHcm91cCIsImRpdiIsIkZpZWxkTGFiZWwiLCJGaWVsZERlc2NyaXB0aW9uIiwiRmllbGRFcnJvciJdLCJtYXBwaW5ncyI6IjtBQUFBLFNBQVFBLGVBQWVDLG1CQUFtQixFQUFFQyxTQUFTQyxhQUFhLEVBQUVDLFlBQVlDLGdCQUFnQixFQUFFQyxTQUFTQyxhQUFhLEVBQUVDLFVBQVVDLGNBQWMsUUFBTyxvQkFBb0I7QUFDN0ssU0FBUUMsRUFBRSxRQUFPLGVBQWU7QUFJaEMsT0FBTyxNQUFNTixXQUFXLENBQUMsRUFDdkJPLFNBQVMsRUFDVCxHQUFHQyxPQUN5RyxpQkFDNUcsS0FBQ1A7UUFDQ00sV0FBV0QsR0FBRywwREFBMERDO1FBQ3ZFLEdBQUdDLEtBQUs7T0FFWDtBQUVGLE9BQU8sTUFBTUosU0FBUyxDQUFDLEVBQ3JCRyxTQUFTLEVBQ1QsR0FBR0MsT0FDdUcsaUJBQzFHLEtBQUNIO1FBQ0NFLFdBQVdELEdBQUcsNkdBQTZHQztRQUMzSEUsYUFBVTtRQUNULEdBQUdELEtBQUs7T0FFWDtBQUVGLE9BQU8sTUFBTUUsYUFBYSxDQUFDLEVBQ3pCSCxTQUFTLEVBQ1QsR0FBR0MsT0FDNkIsaUJBQ2hDLEtBQUNHO1FBQ0NKLFdBQVdELEdBQUcsYUFBYUM7UUFDM0JFLGFBQVU7UUFDVCxHQUFHRCxLQUFLO09BRVg7QUFFRixPQUFPLE1BQU1WLFFBQVEsQ0FBQyxFQUNwQlMsU0FBUyxFQUNULEdBQUdDLE9BQ3NHLGlCQUN6RyxLQUFDVDtRQUNDUSxXQUFXRCxHQUNULGtEQUNBLHNEQUNBLHdEQUNBLHdEQUNBLGtEQUNBLG1DQUNBQztRQUVGRSxhQUFVO1FBQ1QsR0FBR0QsS0FBSztPQUVYO0FBRUYsT0FBTyxNQUFNSSxhQUFhLENBQUMsRUFDekJMLFNBQVMsRUFDVCxHQUFHQyxPQUNzRyxpQkFDekcsS0FBQ0w7UUFDQ0ksV0FBV0QsR0FBRywyR0FBMkdDO1FBQ3pIRSxhQUFVO1FBQ1QsR0FBR0QsS0FBSztPQUVYO0FBRUYsT0FBTyxNQUFNSyxtQkFBbUIsQ0FBQyxFQUMvQk4sU0FBUyxFQUNULEdBQUdDLE9BQzRHLGlCQUMvRyxLQUFDWDtRQUNDVSxXQUFXRCxHQUFHLDJHQUEyR0M7UUFDekhFLGFBQVU7UUFDVCxHQUFHRCxLQUFLO09BRVg7QUFFRixPQUFPLE1BQU1NLGFBQWEsQ0FBQyxFQUN6QlAsU0FBUyxFQUNULEdBQUdDLE9BQzRHLGlCQUMvRyxLQUFDWDtRQUNDVSxXQUFXRCxHQUFHLHFGQUFxRkM7UUFDbkdFLGFBQVU7UUFDVCxHQUFHRCxLQUFLO09BRVgifQ==
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { interactWithCanvas } from '../../utils/storyInteractions.js';
|
|
4
|
+
import { InputField } from '../InputField/InputField.js';
|
|
5
|
+
import { Field, FieldDescription, FieldGroup, FieldLabel, Fieldset, Legend } from './Fieldset.js';
|
|
6
|
+
const meta = {
|
|
7
|
+
component: Fieldset,
|
|
8
|
+
parameters: {
|
|
9
|
+
layout: 'centered'
|
|
10
|
+
},
|
|
11
|
+
title: 'Components/Form/Fieldset'
|
|
12
|
+
};
|
|
13
|
+
export default meta;
|
|
14
|
+
export const Default = {
|
|
15
|
+
play: interactWithCanvas,
|
|
16
|
+
render: ()=>/*#__PURE__*/ _jsxs(Fieldset, {
|
|
17
|
+
className: "w-96",
|
|
18
|
+
children: [
|
|
19
|
+
/*#__PURE__*/ _jsx(Legend, {
|
|
20
|
+
children: "Profile"
|
|
21
|
+
}),
|
|
22
|
+
/*#__PURE__*/ _jsx(FieldGroup, {
|
|
23
|
+
children: /*#__PURE__*/ _jsxs(Field, {
|
|
24
|
+
children: [
|
|
25
|
+
/*#__PURE__*/ _jsx(FieldLabel, {
|
|
26
|
+
children: "Name"
|
|
27
|
+
}),
|
|
28
|
+
/*#__PURE__*/ _jsx(FieldDescription, {
|
|
29
|
+
children: "Shown on your public profile."
|
|
30
|
+
}),
|
|
31
|
+
/*#__PURE__*/ _jsx(InputField, {
|
|
32
|
+
name: "name",
|
|
33
|
+
placeholder: "Bruce Wayne"
|
|
34
|
+
})
|
|
35
|
+
]
|
|
36
|
+
})
|
|
37
|
+
})
|
|
38
|
+
]
|
|
39
|
+
})
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L2dvdGhhbWpzL3NyYy9jb21wb25lbnRzL0ZpZWxkc2V0L0ZpZWxkc2V0LnN0b3JpZXMudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB7aW50ZXJhY3RXaXRoQ2FudmFzfSBmcm9tICcuLi8uLi91dGlscy9zdG9yeUludGVyYWN0aW9ucy5qcyc7XG5pbXBvcnQge0lucHV0RmllbGR9IGZyb20gJy4uL0lucHV0RmllbGQvSW5wdXRGaWVsZC5qcyc7XG5pbXBvcnQge0ZpZWxkLCBGaWVsZERlc2NyaXB0aW9uLCBGaWVsZEdyb3VwLCBGaWVsZExhYmVsLCBGaWVsZHNldCwgTGVnZW5kfSBmcm9tICcuL0ZpZWxkc2V0LmpzJztcblxuaW1wb3J0IHR5cGUge01ldGEsIFN0b3J5T2JqfSBmcm9tICdAbmxhYnMvbGV4L3N0b3J5Ym9vayc7XG5cbmNvbnN0IG1ldGE6IE1ldGE8dHlwZW9mIEZpZWxkc2V0PiA9IHtcbiAgY29tcG9uZW50OiBGaWVsZHNldCxcbiAgcGFyYW1ldGVyczoge1xuICAgIGxheW91dDogJ2NlbnRlcmVkJ1xuICB9LFxuICB0aXRsZTogJ0NvbXBvbmVudHMvRm9ybS9GaWVsZHNldCdcbn07XG5cbmV4cG9ydCBkZWZhdWx0IG1ldGE7XG5cbnR5cGUgU3RvcnkgPSBTdG9yeU9iajx0eXBlb2YgRmllbGRzZXQ+O1xuXG5leHBvcnQgY29uc3QgRGVmYXVsdDogU3RvcnkgPSB7XG4gIHBsYXk6IGludGVyYWN0V2l0aENhbnZhcyxcbiAgcmVuZGVyOiAoKSA9PiAoXG4gICAgPEZpZWxkc2V0IGNsYXNzTmFtZT1cInctOTZcIj5cbiAgICAgIDxMZWdlbmQ+UHJvZmlsZTwvTGVnZW5kPlxuICAgICAgPEZpZWxkR3JvdXA+XG4gICAgICAgIDxGaWVsZD5cbiAgICAgICAgICA8RmllbGRMYWJlbD5OYW1lPC9GaWVsZExhYmVsPlxuICAgICAgICAgIDxGaWVsZERlc2NyaXB0aW9uPlNob3duIG9uIHlvdXIgcHVibGljIHByb2ZpbGUuPC9GaWVsZERlc2NyaXB0aW9uPlxuICAgICAgICAgIDxJbnB1dEZpZWxkIG5hbWU9XCJuYW1lXCIgcGxhY2Vob2xkZXI9XCJCcnVjZSBXYXluZVwiIC8+XG4gICAgICAgIDwvRmllbGQ+XG4gICAgICA8L0ZpZWxkR3JvdXA+XG4gICAgPC9GaWVsZHNldD5cbiAgKVxufTtcbiJdLCJuYW1lcyI6WyJSZWFjdCIsImludGVyYWN0V2l0aENhbnZhcyIsIklucHV0RmllbGQiLCJGaWVsZCIsIkZpZWxkRGVzY3JpcHRpb24iLCJGaWVsZEdyb3VwIiwiRmllbGRMYWJlbCIsIkZpZWxkc2V0IiwiTGVnZW5kIiwibWV0YSIsImNvbXBvbmVudCIsInBhcmFtZXRlcnMiLCJsYXlvdXQiLCJ0aXRsZSIsIkRlZmF1bHQiLCJwbGF5IiwicmVuZGVyIiwiY2xhc3NOYW1lIiwibmFtZSIsInBsYWNlaG9sZGVyIl0sIm1hcHBpbmdzIjoiO0FBQUEsT0FBT0EsV0FBVyxRQUFRO0FBRTFCLFNBQVFDLGtCQUFrQixRQUFPLG1DQUFtQztBQUNwRSxTQUFRQyxVQUFVLFFBQU8sOEJBQThCO0FBQ3ZELFNBQVFDLEtBQUssRUFBRUMsZ0JBQWdCLEVBQUVDLFVBQVUsRUFBRUMsVUFBVSxFQUFFQyxRQUFRLEVBQUVDLE1BQU0sUUFBTyxnQkFBZ0I7QUFJaEcsTUFBTUMsT0FBOEI7SUFDbENDLFdBQVdIO0lBQ1hJLFlBQVk7UUFDVkMsUUFBUTtJQUNWO0lBQ0FDLE9BQU87QUFDVDtBQUVBLGVBQWVKLEtBQUs7QUFJcEIsT0FBTyxNQUFNSyxVQUFpQjtJQUM1QkMsTUFBTWQ7SUFDTmUsUUFBUSxrQkFDTixNQUFDVDtZQUFTVSxXQUFVOzs4QkFDbEIsS0FBQ1Q7OEJBQU87OzhCQUNSLEtBQUNIOzhCQUNDLGNBQUEsTUFBQ0Y7OzBDQUNDLEtBQUNHOzBDQUFXOzswQ0FDWixLQUFDRjswQ0FBaUI7OzBDQUNsQixLQUFDRjtnQ0FBV2dCLE1BQUs7Z0NBQU9DLGFBQVk7Ozs7Ozs7QUFLOUMsRUFBRSJ9
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
export interface FooterLink {
|
|
3
|
+
readonly href: string;
|
|
4
|
+
readonly label: string;
|
|
5
|
+
}
|
|
6
|
+
export interface FooterLinkGroup {
|
|
7
|
+
readonly links: readonly FooterLink[];
|
|
8
|
+
readonly title: string;
|
|
9
|
+
}
|
|
10
|
+
export interface FooterSocialLink extends FooterLink {
|
|
11
|
+
readonly icon?: ReactNode;
|
|
12
|
+
}
|
|
13
|
+
export interface FooterProps {
|
|
14
|
+
readonly brand?: ReactNode;
|
|
15
|
+
readonly className?: string;
|
|
16
|
+
readonly copyright?: string;
|
|
17
|
+
readonly description?: ReactNode;
|
|
18
|
+
readonly links?: readonly FooterLink[];
|
|
19
|
+
readonly linkGroups?: readonly FooterLinkGroup[];
|
|
20
|
+
readonly socialLinks?: readonly FooterSocialLink[];
|
|
21
|
+
readonly supportEmail?: string;
|
|
22
|
+
readonly supportLabel?: string;
|
|
23
|
+
readonly variant?: 'small' | 'large';
|
|
24
|
+
}
|
|
25
|
+
export declare const Footer: ({ brand, className, copyright, description, links, linkGroups, socialLinks, supportEmail, supportLabel, variant }: FooterProps) => import("react").JSX.Element;
|
|
26
|
+
export default Footer;
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from '@nlabs/utils';
|
|
3
|
+
export const Footer = ({ brand, className, copyright, description, links = [], linkGroups = [], socialLinks = [], supportEmail = '', supportLabel = 'Support', variant = 'small' })=>{
|
|
4
|
+
const hasSupportEmail = Boolean(String(supportEmail || '').trim());
|
|
5
|
+
if (variant === 'large') {
|
|
6
|
+
return /*#__PURE__*/ _jsx("footer", {
|
|
7
|
+
className: cn('bg-gray-900 dark:bg-gray-950', className),
|
|
8
|
+
children: /*#__PURE__*/ _jsxs("div", {
|
|
9
|
+
className: "mx-auto max-w-7xl px-6 pb-8 pt-16 sm:pt-24 lg:px-8 lg:pt-32",
|
|
10
|
+
children: [
|
|
11
|
+
/*#__PURE__*/ _jsxs("div", {
|
|
12
|
+
className: "xl:grid xl:grid-cols-3 xl:gap-8",
|
|
13
|
+
children: [
|
|
14
|
+
/*#__PURE__*/ _jsxs("div", {
|
|
15
|
+
className: "space-y-8",
|
|
16
|
+
children: [
|
|
17
|
+
brand ? /*#__PURE__*/ _jsx("div", {
|
|
18
|
+
className: "flex items-center gap-3",
|
|
19
|
+
children: brand
|
|
20
|
+
}) : null,
|
|
21
|
+
description ? /*#__PURE__*/ _jsx("p", {
|
|
22
|
+
className: "text-balance text-sm/6 text-gray-400",
|
|
23
|
+
children: description
|
|
24
|
+
}) : null,
|
|
25
|
+
socialLinks.length > 0 ? /*#__PURE__*/ _jsx("div", {
|
|
26
|
+
className: "flex gap-x-6",
|
|
27
|
+
children: socialLinks.map((item)=>/*#__PURE__*/ _jsxs("a", {
|
|
28
|
+
className: "text-gray-400 transition-colors duration-200 hover:text-violet-400",
|
|
29
|
+
href: item.href,
|
|
30
|
+
children: [
|
|
31
|
+
/*#__PURE__*/ _jsx("span", {
|
|
32
|
+
className: "sr-only",
|
|
33
|
+
children: item.label
|
|
34
|
+
}),
|
|
35
|
+
item.icon ? item.icon : item.label
|
|
36
|
+
]
|
|
37
|
+
}, `${item.label}-${item.href}`))
|
|
38
|
+
}) : null
|
|
39
|
+
]
|
|
40
|
+
}),
|
|
41
|
+
linkGroups.length > 0 ? /*#__PURE__*/ _jsx("div", {
|
|
42
|
+
className: "mt-16 grid grid-cols-2 gap-8 xl:col-span-2 xl:mt-0",
|
|
43
|
+
children: linkGroups.map((group)=>/*#__PURE__*/ _jsxs("div", {
|
|
44
|
+
children: [
|
|
45
|
+
/*#__PURE__*/ _jsx("h3", {
|
|
46
|
+
className: "text-sm/6 font-semibold text-white",
|
|
47
|
+
children: group.title
|
|
48
|
+
}),
|
|
49
|
+
/*#__PURE__*/ _jsx("ul", {
|
|
50
|
+
className: "mt-6 space-y-4",
|
|
51
|
+
role: "list",
|
|
52
|
+
children: group.links.map((item)=>/*#__PURE__*/ _jsx("li", {
|
|
53
|
+
children: /*#__PURE__*/ _jsx("a", {
|
|
54
|
+
className: "text-sm/6 text-gray-400 transition-colors duration-200 hover:text-violet-400",
|
|
55
|
+
href: item.href,
|
|
56
|
+
children: item.label
|
|
57
|
+
})
|
|
58
|
+
}, `${group.title}-${item.label}-${item.href}`))
|
|
59
|
+
})
|
|
60
|
+
]
|
|
61
|
+
}, group.title))
|
|
62
|
+
}) : null
|
|
63
|
+
]
|
|
64
|
+
}),
|
|
65
|
+
copyright ? /*#__PURE__*/ _jsx("div", {
|
|
66
|
+
className: "mt-16 border-t border-white/10 pt-8 sm:mt-20 lg:mt-24",
|
|
67
|
+
children: /*#__PURE__*/ _jsx("p", {
|
|
68
|
+
className: "text-sm/6 text-gray-400",
|
|
69
|
+
children: copyright
|
|
70
|
+
})
|
|
71
|
+
}) : null
|
|
72
|
+
]
|
|
73
|
+
})
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
return /*#__PURE__*/ _jsx("footer", {
|
|
77
|
+
className: cn('border-t border-gray-900/8 bg-white/70 backdrop-blur-sm dark:border-white/8 dark:bg-gray-900/70', className),
|
|
78
|
+
children: /*#__PURE__*/ _jsxs("div", {
|
|
79
|
+
className: "mx-auto flex max-w-7xl flex-col gap-5 px-5 py-6 sm:px-6 lg:px-8",
|
|
80
|
+
children: [
|
|
81
|
+
/*#__PURE__*/ _jsxs("div", {
|
|
82
|
+
className: "flex flex-col gap-4 md:flex-row md:items-center md:justify-between",
|
|
83
|
+
children: [
|
|
84
|
+
/*#__PURE__*/ _jsx("div", {
|
|
85
|
+
className: "flex items-center",
|
|
86
|
+
children: brand
|
|
87
|
+
}),
|
|
88
|
+
/*#__PURE__*/ _jsxs("nav", {
|
|
89
|
+
"aria-label": "Footer",
|
|
90
|
+
className: "flex flex-wrap items-center gap-x-5 gap-y-2",
|
|
91
|
+
children: [
|
|
92
|
+
links.map((item)=>/*#__PURE__*/ _jsx("a", {
|
|
93
|
+
className: "text-sm font-medium text-gray-500 transition-colors hover:text-gray-900 dark:text-gray-400 dark:hover:text-white",
|
|
94
|
+
href: item.href,
|
|
95
|
+
children: item.label
|
|
96
|
+
}, `${item.label}-${item.href}`)),
|
|
97
|
+
hasSupportEmail ? /*#__PURE__*/ _jsx("a", {
|
|
98
|
+
className: "text-sm font-medium text-gray-500 transition-colors hover:text-gray-900 dark:text-gray-400 dark:hover:text-white",
|
|
99
|
+
href: `mailto:${supportEmail}`,
|
|
100
|
+
children: supportLabel
|
|
101
|
+
}) : null
|
|
102
|
+
]
|
|
103
|
+
})
|
|
104
|
+
]
|
|
105
|
+
}),
|
|
106
|
+
copyright ? /*#__PURE__*/ _jsx("div", {
|
|
107
|
+
className: "border-t border-gray-900/8 pt-4 dark:border-white/8",
|
|
108
|
+
children: /*#__PURE__*/ _jsx("p", {
|
|
109
|
+
className: "text-xs text-gray-500 dark:text-gray-400",
|
|
110
|
+
children: copyright
|
|
111
|
+
})
|
|
112
|
+
}) : null
|
|
113
|
+
]
|
|
114
|
+
})
|
|
115
|
+
});
|
|
116
|
+
};
|
|
117
|
+
export default Footer;
|
|
118
|
+
|
|
119
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L2dvdGhhbWpzL3NyYy9jb21wb25lbnRzL0Zvb3Rlci9Gb290ZXIudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Y259IGZyb20gJ0BubGFicy91dGlscyc7XG5cbmltcG9ydCB0eXBlIHtSZWFjdE5vZGV9IGZyb20gJ3JlYWN0JztcblxuZXhwb3J0IGludGVyZmFjZSBGb290ZXJMaW5rIHtcbiAgcmVhZG9ubHkgaHJlZjogc3RyaW5nO1xuICByZWFkb25seSBsYWJlbDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZvb3RlckxpbmtHcm91cCB7XG4gIHJlYWRvbmx5IGxpbmtzOiByZWFkb25seSBGb290ZXJMaW5rW107XG4gIHJlYWRvbmx5IHRpdGxlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRm9vdGVyU29jaWFsTGluayBleHRlbmRzIEZvb3Rlckxpbmsge1xuICByZWFkb25seSBpY29uPzogUmVhY3ROb2RlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZvb3RlclByb3BzIHtcbiAgcmVhZG9ubHkgYnJhbmQ/OiBSZWFjdE5vZGU7XG4gIHJlYWRvbmx5IGNsYXNzTmFtZT86IHN0cmluZztcbiAgcmVhZG9ubHkgY29weXJpZ2h0Pzogc3RyaW5nO1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IFJlYWN0Tm9kZTtcbiAgcmVhZG9ubHkgbGlua3M/OiByZWFkb25seSBGb290ZXJMaW5rW107XG4gIHJlYWRvbmx5IGxpbmtHcm91cHM/OiByZWFkb25seSBGb290ZXJMaW5rR3JvdXBbXTtcbiAgcmVhZG9ubHkgc29jaWFsTGlua3M/OiByZWFkb25seSBGb290ZXJTb2NpYWxMaW5rW107XG4gIHJlYWRvbmx5IHN1cHBvcnRFbWFpbD86IHN0cmluZztcbiAgcmVhZG9ubHkgc3VwcG9ydExhYmVsPzogc3RyaW5nO1xuICByZWFkb25seSB2YXJpYW50PzogJ3NtYWxsJyB8ICdsYXJnZSc7XG59XG5cbmV4cG9ydCBjb25zdCBGb290ZXIgPSAoe1xuICBicmFuZCxcbiAgY2xhc3NOYW1lLFxuICBjb3B5cmlnaHQsXG4gIGRlc2NyaXB0aW9uLFxuICBsaW5rcyA9IFtdLFxuICBsaW5rR3JvdXBzID0gW10sXG4gIHNvY2lhbExpbmtzID0gW10sXG4gIHN1cHBvcnRFbWFpbCA9ICcnLFxuICBzdXBwb3J0TGFiZWwgPSAnU3VwcG9ydCcsXG4gIHZhcmlhbnQgPSAnc21hbGwnXG59OiBGb290ZXJQcm9wcykgPT4ge1xuICBjb25zdCBoYXNTdXBwb3J0RW1haWwgPSBCb29sZWFuKFN0cmluZyhzdXBwb3J0RW1haWwgfHwgJycpLnRyaW0oKSk7XG5cbiAgaWYodmFyaWFudCA9PT0gJ2xhcmdlJykge1xuICAgIHJldHVybiAoXG4gICAgICA8Zm9vdGVyIGNsYXNzTmFtZT17Y24oJ2JnLWdyYXktOTAwIGRhcms6YmctZ3JheS05NTAnLCBjbGFzc05hbWUpfT5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJteC1hdXRvIG1heC13LTd4bCBweC02IHBiLTggcHQtMTYgc206cHQtMjQgbGc6cHgtOCBsZzpwdC0zMlwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwieGw6Z3JpZCB4bDpncmlkLWNvbHMtMyB4bDpnYXAtOFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJzcGFjZS15LThcIj5cbiAgICAgICAgICAgICAge2JyYW5kID8gKFxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTNcIj5cbiAgICAgICAgICAgICAgICAgIHticmFuZH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgIHtkZXNjcmlwdGlvbiA/IChcbiAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LWJhbGFuY2UgdGV4dC1zbS82IHRleHQtZ3JheS00MDBcIj5cbiAgICAgICAgICAgICAgICAgIHtkZXNjcmlwdGlvbn1cbiAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgICB7c29jaWFsTGlua3MubGVuZ3RoID4gMCA/IChcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggZ2FwLXgtNlwiPlxuICAgICAgICAgICAgICAgICAge3NvY2lhbExpbmtzLm1hcCgoaXRlbSkgPT4gKFxuICAgICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInRleHQtZ3JheS00MDAgdHJhbnNpdGlvbi1jb2xvcnMgZHVyYXRpb24tMjAwIGhvdmVyOnRleHQtdmlvbGV0LTQwMFwiXG4gICAgICAgICAgICAgICAgICAgICAgaHJlZj17aXRlbS5ocmVmfVxuICAgICAgICAgICAgICAgICAgICAgIGtleT17YCR7aXRlbS5sYWJlbH0tJHtpdGVtLmhyZWZ9YH1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInNyLW9ubHlcIj57aXRlbS5sYWJlbH08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAge2l0ZW0uaWNvbiA/IGl0ZW0uaWNvbiA6IGl0ZW0ubGFiZWx9XG4gICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAge2xpbmtHcm91cHMubGVuZ3RoID4gMCA/IChcbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtdC0xNiBncmlkIGdyaWQtY29scy0yIGdhcC04IHhsOmNvbC1zcGFuLTIgeGw6bXQtMFwiPlxuICAgICAgICAgICAgICAgIHtsaW5rR3JvdXBzLm1hcCgoZ3JvdXApID0+IChcbiAgICAgICAgICAgICAgICAgIDxkaXYga2V5PXtncm91cC50aXRsZX0+XG4gICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzc05hbWU9XCJ0ZXh0LXNtLzYgZm9udC1zZW1pYm9sZCB0ZXh0LXdoaXRlXCI+e2dyb3VwLnRpdGxlfTwvaDM+XG4gICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzc05hbWU9XCJtdC02IHNwYWNlLXktNFwiIHJvbGU9XCJsaXN0XCI+XG4gICAgICAgICAgICAgICAgICAgICAge2dyb3VwLmxpbmtzLm1hcCgoaXRlbSkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGtleT17YCR7Z3JvdXAudGl0bGV9LSR7aXRlbS5sYWJlbH0tJHtpdGVtLmhyZWZ9YH0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidGV4dC1zbS82IHRleHQtZ3JheS00MDAgdHJhbnNpdGlvbi1jb2xvcnMgZHVyYXRpb24tMjAwIGhvdmVyOnRleHQtdmlvbGV0LTQwMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj17aXRlbS5ocmVmfVxuICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2l0ZW0ubGFiZWx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB7Y29weXJpZ2h0ID8gKFxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtdC0xNiBib3JkZXItdCBib3JkZXItd2hpdGUvMTAgcHQtOCBzbTptdC0yMCBsZzptdC0yNFwiPlxuICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LXNtLzYgdGV4dC1ncmF5LTQwMFwiPntjb3B5cmlnaHR9PC9wPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9mb290ZXI+XG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPGZvb3RlciBjbGFzc05hbWU9e2NuKCdib3JkZXItdCBib3JkZXItZ3JheS05MDAvOCBiZy13aGl0ZS83MCBiYWNrZHJvcC1ibHVyLXNtIGRhcms6Ym9yZGVyLXdoaXRlLzggZGFyazpiZy1ncmF5LTkwMC83MCcsIGNsYXNzTmFtZSl9PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJteC1hdXRvIGZsZXggbWF4LXctN3hsIGZsZXgtY29sIGdhcC01IHB4LTUgcHktNiBzbTpweC02IGxnOnB4LThcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGZsZXgtY29sIGdhcC00IG1kOmZsZXgtcm93IG1kOml0ZW1zLWNlbnRlciBtZDpqdXN0aWZ5LWJldHdlZW5cIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICB7YnJhbmR9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPG5hdiBhcmlhLWxhYmVsPVwiRm9vdGVyXCIgY2xhc3NOYW1lPVwiZmxleCBmbGV4LXdyYXAgaXRlbXMtY2VudGVyIGdhcC14LTUgZ2FwLXktMlwiPlxuICAgICAgICAgICAge2xpbmtzLm1hcCgoaXRlbSkgPT4gKFxuICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInRleHQtc20gZm9udC1tZWRpdW0gdGV4dC1ncmF5LTUwMCB0cmFuc2l0aW9uLWNvbG9ycyBob3Zlcjp0ZXh0LWdyYXktOTAwIGRhcms6dGV4dC1ncmF5LTQwMCBkYXJrOmhvdmVyOnRleHQtd2hpdGVcIlxuICAgICAgICAgICAgICAgIGhyZWY9e2l0ZW0uaHJlZn1cbiAgICAgICAgICAgICAgICBrZXk9e2Ake2l0ZW0ubGFiZWx9LSR7aXRlbS5ocmVmfWB9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7aXRlbS5sYWJlbH1cbiAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICB7aGFzU3VwcG9ydEVtYWlsID8gKFxuICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInRleHQtc20gZm9udC1tZWRpdW0gdGV4dC1ncmF5LTUwMCB0cmFuc2l0aW9uLWNvbG9ycyBob3Zlcjp0ZXh0LWdyYXktOTAwIGRhcms6dGV4dC1ncmF5LTQwMCBkYXJrOmhvdmVyOnRleHQtd2hpdGVcIlxuICAgICAgICAgICAgICAgIGhyZWY9e2BtYWlsdG86JHtzdXBwb3J0RW1haWx9YH1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHtzdXBwb3J0TGFiZWx9XG4gICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgIDwvbmF2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAge2NvcHlyaWdodCA/IChcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJvcmRlci10IGJvcmRlci1ncmF5LTkwMC84IHB0LTQgZGFyazpib3JkZXItd2hpdGUvOFwiPlxuICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC14cyB0ZXh0LWdyYXktNTAwIGRhcms6dGV4dC1ncmF5LTQwMFwiPntjb3B5cmlnaHR9PC9wPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICApIDogbnVsbH1cbiAgICAgIDwvZGl2PlxuICAgIDwvZm9vdGVyPlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgRm9vdGVyO1xuIl0sIm5hbWVzIjpbImNuIiwiRm9vdGVyIiwiYnJhbmQiLCJjbGFzc05hbWUiLCJjb3B5cmlnaHQiLCJkZXNjcmlwdGlvbiIsImxpbmtzIiwibGlua0dyb3VwcyIsInNvY2lhbExpbmtzIiwic3VwcG9ydEVtYWlsIiwic3VwcG9ydExhYmVsIiwidmFyaWFudCIsImhhc1N1cHBvcnRFbWFpbCIsIkJvb2xlYW4iLCJTdHJpbmciLCJ0cmltIiwiZm9vdGVyIiwiZGl2IiwicCIsImxlbmd0aCIsIm1hcCIsIml0ZW0iLCJhIiwiaHJlZiIsInNwYW4iLCJsYWJlbCIsImljb24iLCJncm91cCIsImgzIiwidGl0bGUiLCJ1bCIsInJvbGUiLCJsaSIsIm5hdiIsImFyaWEtbGFiZWwiXSwibWFwcGluZ3MiOiI7QUFBQSxTQUFRQSxFQUFFLFFBQU8sZUFBZTtBQStCaEMsT0FBTyxNQUFNQyxTQUFTLENBQUMsRUFDckJDLEtBQUssRUFDTEMsU0FBUyxFQUNUQyxTQUFTLEVBQ1RDLFdBQVcsRUFDWEMsUUFBUSxFQUFFLEVBQ1ZDLGFBQWEsRUFBRSxFQUNmQyxjQUFjLEVBQUUsRUFDaEJDLGVBQWUsRUFBRSxFQUNqQkMsZUFBZSxTQUFTLEVBQ3hCQyxVQUFVLE9BQU8sRUFDTDtJQUNaLE1BQU1DLGtCQUFrQkMsUUFBUUMsT0FBT0wsZ0JBQWdCLElBQUlNLElBQUk7SUFFL0QsSUFBR0osWUFBWSxTQUFTO1FBQ3RCLHFCQUNFLEtBQUNLO1lBQU9iLFdBQVdILEdBQUcsZ0NBQWdDRztzQkFDcEQsY0FBQSxNQUFDYztnQkFBSWQsV0FBVTs7a0NBQ2IsTUFBQ2M7d0JBQUlkLFdBQVU7OzBDQUNiLE1BQUNjO2dDQUFJZCxXQUFVOztvQ0FDWkQsc0JBQ0MsS0FBQ2U7d0NBQUlkLFdBQVU7a0RBQ1pEO3lDQUVEO29DQUNIRyw0QkFDQyxLQUFDYTt3Q0FBRWYsV0FBVTtrREFDVkU7eUNBRUQ7b0NBQ0hHLFlBQVlXLE1BQU0sR0FBRyxrQkFDcEIsS0FBQ0Y7d0NBQUlkLFdBQVU7a0RBQ1pLLFlBQVlZLEdBQUcsQ0FBQyxDQUFDQyxxQkFDaEIsTUFBQ0M7Z0RBQ0NuQixXQUFVO2dEQUNWb0IsTUFBTUYsS0FBS0UsSUFBSTs7a0VBR2YsS0FBQ0M7d0RBQUtyQixXQUFVO2tFQUFXa0IsS0FBS0ksS0FBSzs7b0RBQ3BDSixLQUFLSyxJQUFJLEdBQUdMLEtBQUtLLElBQUksR0FBR0wsS0FBS0ksS0FBSzs7K0NBSDlCLEdBQUdKLEtBQUtJLEtBQUssQ0FBQyxDQUFDLEVBQUVKLEtBQUtFLElBQUksRUFBRTt5Q0FPckM7Ozs0QkFFTGhCLFdBQVdZLE1BQU0sR0FBRyxrQkFDbkIsS0FBQ0Y7Z0NBQUlkLFdBQVU7MENBQ1pJLFdBQVdhLEdBQUcsQ0FBQyxDQUFDTyxzQkFDZixNQUFDVjs7MERBQ0MsS0FBQ1c7Z0RBQUd6QixXQUFVOzBEQUFzQ3dCLE1BQU1FLEtBQUs7OzBEQUMvRCxLQUFDQztnREFBRzNCLFdBQVU7Z0RBQWlCNEIsTUFBSzswREFDakNKLE1BQU1yQixLQUFLLENBQUNjLEdBQUcsQ0FBQyxDQUFDQyxxQkFDaEIsS0FBQ1c7a0VBQ0MsY0FBQSxLQUFDVjs0REFDQ25CLFdBQVU7NERBQ1ZvQixNQUFNRixLQUFLRSxJQUFJO3NFQUVkRixLQUFLSSxLQUFLOzt1REFMTixHQUFHRSxNQUFNRSxLQUFLLENBQUMsQ0FBQyxFQUFFUixLQUFLSSxLQUFLLENBQUMsQ0FBQyxFQUFFSixLQUFLRSxJQUFJLEVBQUU7Ozt1Q0FKaERJLE1BQU1FLEtBQUs7aUNBaUJ2Qjs7O29CQUVMekIsMEJBQ0MsS0FBQ2E7d0JBQUlkLFdBQVU7a0NBQ2IsY0FBQSxLQUFDZTs0QkFBRWYsV0FBVTtzQ0FBMkJDOzt5QkFFeEM7Ozs7SUFJWjtJQUVBLHFCQUNFLEtBQUNZO1FBQU9iLFdBQVdILEdBQUcsbUdBQW1HRztrQkFDdkgsY0FBQSxNQUFDYztZQUFJZCxXQUFVOzs4QkFDYixNQUFDYztvQkFBSWQsV0FBVTs7c0NBQ2IsS0FBQ2M7NEJBQUlkLFdBQVU7c0NBQ1pEOztzQ0FFSCxNQUFDK0I7NEJBQUlDLGNBQVc7NEJBQVMvQixXQUFVOztnQ0FDaENHLE1BQU1jLEdBQUcsQ0FBQyxDQUFDQyxxQkFDVixLQUFDQzt3Q0FDQ25CLFdBQVU7d0NBQ1ZvQixNQUFNRixLQUFLRSxJQUFJO2tEQUdkRixLQUFLSSxLQUFLO3VDQUZOLEdBQUdKLEtBQUtJLEtBQUssQ0FBQyxDQUFDLEVBQUVKLEtBQUtFLElBQUksRUFBRTtnQ0FLcENYLGdDQUNDLEtBQUNVO29DQUNDbkIsV0FBVTtvQ0FDVm9CLE1BQU0sQ0FBQyxPQUFPLEVBQUVkLGNBQWM7OENBRTdCQztxQ0FFRDs7Ozs7Z0JBR1BOLDBCQUNDLEtBQUNhO29CQUFJZCxXQUFVOzhCQUNiLGNBQUEsS0FBQ2U7d0JBQUVmLFdBQVU7a0NBQTRDQzs7cUJBRXpEOzs7O0FBSVosRUFBRTtBQUVGLGVBQWVILE9BQU8ifQ==
|