@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,146 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { interactWithCanvas } from '../../utils/storyInteractions.js';
|
|
3
|
+
import { Pricing } from './Pricing.js';
|
|
4
|
+
const tiers = [
|
|
5
|
+
{
|
|
6
|
+
ctaLabel: 'Choose starter',
|
|
7
|
+
description: 'For small component libraries.',
|
|
8
|
+
features: [
|
|
9
|
+
'Story coverage',
|
|
10
|
+
'Basic controls',
|
|
11
|
+
'Smoke interactions'
|
|
12
|
+
],
|
|
13
|
+
href: '#starter',
|
|
14
|
+
id: 'starter',
|
|
15
|
+
name: 'Starter',
|
|
16
|
+
price: {
|
|
17
|
+
annually: '$190',
|
|
18
|
+
monthly: '$19'
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
badge: 'Popular',
|
|
23
|
+
ctaLabel: 'Choose growth',
|
|
24
|
+
description: 'For production design systems.',
|
|
25
|
+
featured: true,
|
|
26
|
+
features: [
|
|
27
|
+
'Full controls',
|
|
28
|
+
'Interaction tests',
|
|
29
|
+
'Release checks'
|
|
30
|
+
],
|
|
31
|
+
href: '#growth',
|
|
32
|
+
id: 'growth',
|
|
33
|
+
name: 'Growth',
|
|
34
|
+
price: {
|
|
35
|
+
annually: '$490',
|
|
36
|
+
monthly: '$49'
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
];
|
|
40
|
+
const comparisonSections = [
|
|
41
|
+
{
|
|
42
|
+
features: [
|
|
43
|
+
{
|
|
44
|
+
name: 'Controls',
|
|
45
|
+
tiers: {
|
|
46
|
+
Growth: true,
|
|
47
|
+
Starter: true
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
name: 'Interaction stories',
|
|
52
|
+
tiers: {
|
|
53
|
+
Growth: true,
|
|
54
|
+
Starter: 'Basic'
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
],
|
|
58
|
+
name: 'Storybook'
|
|
59
|
+
}
|
|
60
|
+
];
|
|
61
|
+
const meta = {
|
|
62
|
+
argTypes: {
|
|
63
|
+
cardStyle: {
|
|
64
|
+
control: 'select',
|
|
65
|
+
options: [
|
|
66
|
+
'default',
|
|
67
|
+
'contrast',
|
|
68
|
+
'solid'
|
|
69
|
+
]
|
|
70
|
+
},
|
|
71
|
+
defaultFrequency: {
|
|
72
|
+
control: 'select',
|
|
73
|
+
options: [
|
|
74
|
+
'monthly',
|
|
75
|
+
'annually'
|
|
76
|
+
]
|
|
77
|
+
},
|
|
78
|
+
description: {
|
|
79
|
+
control: 'text'
|
|
80
|
+
},
|
|
81
|
+
eyebrow: {
|
|
82
|
+
control: 'text'
|
|
83
|
+
},
|
|
84
|
+
title: {
|
|
85
|
+
control: 'text'
|
|
86
|
+
},
|
|
87
|
+
tone: {
|
|
88
|
+
control: 'select',
|
|
89
|
+
options: [
|
|
90
|
+
'default',
|
|
91
|
+
'dark',
|
|
92
|
+
'gradient'
|
|
93
|
+
]
|
|
94
|
+
},
|
|
95
|
+
variant: {
|
|
96
|
+
control: 'select',
|
|
97
|
+
options: [
|
|
98
|
+
'grid',
|
|
99
|
+
'single',
|
|
100
|
+
'comparison'
|
|
101
|
+
]
|
|
102
|
+
}
|
|
103
|
+
},
|
|
104
|
+
component: Pricing,
|
|
105
|
+
parameters: {
|
|
106
|
+
layout: 'fullscreen'
|
|
107
|
+
},
|
|
108
|
+
title: 'Components/Pricing'
|
|
109
|
+
};
|
|
110
|
+
export default meta;
|
|
111
|
+
export const Grid = {
|
|
112
|
+
args: {
|
|
113
|
+
cardStyle: 'default',
|
|
114
|
+
defaultFrequency: 'monthly',
|
|
115
|
+
description: 'Pick the coverage level that fits your release workflow.',
|
|
116
|
+
eyebrow: 'Pricing',
|
|
117
|
+
frequencies: [
|
|
118
|
+
{
|
|
119
|
+
label: 'Monthly',
|
|
120
|
+
priceSuffix: '/mo',
|
|
121
|
+
value: 'monthly'
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
label: 'Annually',
|
|
125
|
+
priceSuffix: '/yr',
|
|
126
|
+
value: 'annually'
|
|
127
|
+
}
|
|
128
|
+
],
|
|
129
|
+
tiers,
|
|
130
|
+
title: 'Plans for every component system',
|
|
131
|
+
tone: 'default',
|
|
132
|
+
variant: 'grid'
|
|
133
|
+
},
|
|
134
|
+
play: interactWithCanvas
|
|
135
|
+
};
|
|
136
|
+
export const Comparison = {
|
|
137
|
+
args: {
|
|
138
|
+
comparisonSections,
|
|
139
|
+
tiers,
|
|
140
|
+
title: 'Compare plans',
|
|
141
|
+
variant: 'comparison'
|
|
142
|
+
},
|
|
143
|
+
play: interactWithCanvas
|
|
144
|
+
};
|
|
145
|
+
|
|
146
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L2dvdGhhbWpzL3NyYy9jb21wb25lbnRzL1ByaWNpbmcvUHJpY2luZy5zdG9yaWVzLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtpbnRlcmFjdFdpdGhDYW52YXN9IGZyb20gJy4uLy4uL3V0aWxzL3N0b3J5SW50ZXJhY3Rpb25zLmpzJztcbmltcG9ydCB7UHJpY2luZ30gZnJvbSAnLi9QcmljaW5nLmpzJztcblxuaW1wb3J0IHR5cGUge01ldGEsIFN0b3J5T2JqfSBmcm9tICdAbmxhYnMvbGV4L3N0b3J5Ym9vayc7XG5cbmNvbnN0IHRpZXJzID0gW1xuICB7XG4gICAgY3RhTGFiZWw6ICdDaG9vc2Ugc3RhcnRlcicsXG4gICAgZGVzY3JpcHRpb246ICdGb3Igc21hbGwgY29tcG9uZW50IGxpYnJhcmllcy4nLFxuICAgIGZlYXR1cmVzOiBbJ1N0b3J5IGNvdmVyYWdlJywgJ0Jhc2ljIGNvbnRyb2xzJywgJ1Ntb2tlIGludGVyYWN0aW9ucyddLFxuICAgIGhyZWY6ICcjc3RhcnRlcicsXG4gICAgaWQ6ICdzdGFydGVyJyxcbiAgICBuYW1lOiAnU3RhcnRlcicsXG4gICAgcHJpY2U6IHthbm51YWxseTogJyQxOTAnLCBtb250aGx5OiAnJDE5J31cbiAgfSxcbiAge1xuICAgIGJhZGdlOiAnUG9wdWxhcicsXG4gICAgY3RhTGFiZWw6ICdDaG9vc2UgZ3Jvd3RoJyxcbiAgICBkZXNjcmlwdGlvbjogJ0ZvciBwcm9kdWN0aW9uIGRlc2lnbiBzeXN0ZW1zLicsXG4gICAgZmVhdHVyZWQ6IHRydWUsXG4gICAgZmVhdHVyZXM6IFsnRnVsbCBjb250cm9scycsICdJbnRlcmFjdGlvbiB0ZXN0cycsICdSZWxlYXNlIGNoZWNrcyddLFxuICAgIGhyZWY6ICcjZ3Jvd3RoJyxcbiAgICBpZDogJ2dyb3d0aCcsXG4gICAgbmFtZTogJ0dyb3d0aCcsXG4gICAgcHJpY2U6IHthbm51YWxseTogJyQ0OTAnLCBtb250aGx5OiAnJDQ5J31cbiAgfVxuXTtcblxuY29uc3QgY29tcGFyaXNvblNlY3Rpb25zID0gW1xuICB7XG4gICAgZmVhdHVyZXM6IFtcbiAgICAgIHtuYW1lOiAnQ29udHJvbHMnLCB0aWVyczoge0dyb3d0aDogdHJ1ZSwgU3RhcnRlcjogdHJ1ZX19LFxuICAgICAge25hbWU6ICdJbnRlcmFjdGlvbiBzdG9yaWVzJywgdGllcnM6IHtHcm93dGg6IHRydWUsIFN0YXJ0ZXI6ICdCYXNpYyd9fVxuICAgIF0sXG4gICAgbmFtZTogJ1N0b3J5Ym9vaydcbiAgfVxuXTtcblxuY29uc3QgbWV0YTogTWV0YTx0eXBlb2YgUHJpY2luZz4gPSB7XG4gIGFyZ1R5cGVzOiB7XG4gICAgY2FyZFN0eWxlOiB7XG4gICAgICBjb250cm9sOiAnc2VsZWN0JyxcbiAgICAgIG9wdGlvbnM6IFsnZGVmYXVsdCcsICdjb250cmFzdCcsICdzb2xpZCddXG4gICAgfSxcbiAgICBkZWZhdWx0RnJlcXVlbmN5OiB7XG4gICAgICBjb250cm9sOiAnc2VsZWN0JyxcbiAgICAgIG9wdGlvbnM6IFsnbW9udGhseScsICdhbm51YWxseSddXG4gICAgfSxcbiAgICBkZXNjcmlwdGlvbjoge1xuICAgICAgY29udHJvbDogJ3RleHQnXG4gICAgfSxcbiAgICBleWVicm93OiB7XG4gICAgICBjb250cm9sOiAndGV4dCdcbiAgICB9LFxuICAgIHRpdGxlOiB7XG4gICAgICBjb250cm9sOiAndGV4dCdcbiAgICB9LFxuICAgIHRvbmU6IHtcbiAgICAgIGNvbnRyb2w6ICdzZWxlY3QnLFxuICAgICAgb3B0aW9uczogWydkZWZhdWx0JywgJ2RhcmsnLCAnZ3JhZGllbnQnXVxuICAgIH0sXG4gICAgdmFyaWFudDoge1xuICAgICAgY29udHJvbDogJ3NlbGVjdCcsXG4gICAgICBvcHRpb25zOiBbJ2dyaWQnLCAnc2luZ2xlJywgJ2NvbXBhcmlzb24nXVxuICAgIH1cbiAgfSxcbiAgY29tcG9uZW50OiBQcmljaW5nLFxuICBwYXJhbWV0ZXJzOiB7XG4gICAgbGF5b3V0OiAnZnVsbHNjcmVlbidcbiAgfSxcbiAgdGl0bGU6ICdDb21wb25lbnRzL1ByaWNpbmcnXG59O1xuXG5leHBvcnQgZGVmYXVsdCBtZXRhO1xuXG50eXBlIFN0b3J5ID0gU3RvcnlPYmo8dHlwZW9mIFByaWNpbmc+O1xuXG5leHBvcnQgY29uc3QgR3JpZDogU3RvcnkgPSB7XG4gIGFyZ3M6IHtcbiAgICBjYXJkU3R5bGU6ICdkZWZhdWx0JyxcbiAgICBkZWZhdWx0RnJlcXVlbmN5OiAnbW9udGhseScsXG4gICAgZGVzY3JpcHRpb246ICdQaWNrIHRoZSBjb3ZlcmFnZSBsZXZlbCB0aGF0IGZpdHMgeW91ciByZWxlYXNlIHdvcmtmbG93LicsXG4gICAgZXllYnJvdzogJ1ByaWNpbmcnLFxuICAgIGZyZXF1ZW5jaWVzOiBbXG4gICAgICB7bGFiZWw6ICdNb250aGx5JywgcHJpY2VTdWZmaXg6ICcvbW8nLCB2YWx1ZTogJ21vbnRobHknfSxcbiAgICAgIHtsYWJlbDogJ0FubnVhbGx5JywgcHJpY2VTdWZmaXg6ICcveXInLCB2YWx1ZTogJ2FubnVhbGx5J31cbiAgICBdLFxuICAgIHRpZXJzLFxuICAgIHRpdGxlOiAnUGxhbnMgZm9yIGV2ZXJ5IGNvbXBvbmVudCBzeXN0ZW0nLFxuICAgIHRvbmU6ICdkZWZhdWx0JyxcbiAgICB2YXJpYW50OiAnZ3JpZCdcbiAgfSxcbiAgcGxheTogaW50ZXJhY3RXaXRoQ2FudmFzXG59O1xuXG5leHBvcnQgY29uc3QgQ29tcGFyaXNvbjogU3RvcnkgPSB7XG4gIGFyZ3M6IHtcbiAgICBjb21wYXJpc29uU2VjdGlvbnMsXG4gICAgdGllcnMsXG4gICAgdGl0bGU6ICdDb21wYXJlIHBsYW5zJyxcbiAgICB2YXJpYW50OiAnY29tcGFyaXNvbidcbiAgfSxcbiAgcGxheTogaW50ZXJhY3RXaXRoQ2FudmFzXG59O1xuIl0sIm5hbWVzIjpbIlJlYWN0IiwiaW50ZXJhY3RXaXRoQ2FudmFzIiwiUHJpY2luZyIsInRpZXJzIiwiY3RhTGFiZWwiLCJkZXNjcmlwdGlvbiIsImZlYXR1cmVzIiwiaHJlZiIsImlkIiwibmFtZSIsInByaWNlIiwiYW5udWFsbHkiLCJtb250aGx5IiwiYmFkZ2UiLCJmZWF0dXJlZCIsImNvbXBhcmlzb25TZWN0aW9ucyIsIkdyb3d0aCIsIlN0YXJ0ZXIiLCJtZXRhIiwiYXJnVHlwZXMiLCJjYXJkU3R5bGUiLCJjb250cm9sIiwib3B0aW9ucyIsImRlZmF1bHRGcmVxdWVuY3kiLCJleWVicm93IiwidGl0bGUiLCJ0b25lIiwidmFyaWFudCIsImNvbXBvbmVudCIsInBhcmFtZXRlcnMiLCJsYXlvdXQiLCJHcmlkIiwiYXJncyIsImZyZXF1ZW5jaWVzIiwibGFiZWwiLCJwcmljZVN1ZmZpeCIsInZhbHVlIiwicGxheSIsIkNvbXBhcmlzb24iXSwibWFwcGluZ3MiOiJBQUFBLE9BQU9BLFdBQVcsUUFBUTtBQUMxQixTQUFRQyxrQkFBa0IsUUFBTyxtQ0FBbUM7QUFDcEUsU0FBUUMsT0FBTyxRQUFPLGVBQWU7QUFJckMsTUFBTUMsUUFBUTtJQUNaO1FBQ0VDLFVBQVU7UUFDVkMsYUFBYTtRQUNiQyxVQUFVO1lBQUM7WUFBa0I7WUFBa0I7U0FBcUI7UUFDcEVDLE1BQU07UUFDTkMsSUFBSTtRQUNKQyxNQUFNO1FBQ05DLE9BQU87WUFBQ0MsVUFBVTtZQUFRQyxTQUFTO1FBQUs7SUFDMUM7SUFDQTtRQUNFQyxPQUFPO1FBQ1BULFVBQVU7UUFDVkMsYUFBYTtRQUNiUyxVQUFVO1FBQ1ZSLFVBQVU7WUFBQztZQUFpQjtZQUFxQjtTQUFpQjtRQUNsRUMsTUFBTTtRQUNOQyxJQUFJO1FBQ0pDLE1BQU07UUFDTkMsT0FBTztZQUFDQyxVQUFVO1lBQVFDLFNBQVM7UUFBSztJQUMxQztDQUNEO0FBRUQsTUFBTUcscUJBQXFCO0lBQ3pCO1FBQ0VULFVBQVU7WUFDUjtnQkFBQ0csTUFBTTtnQkFBWU4sT0FBTztvQkFBQ2EsUUFBUTtvQkFBTUMsU0FBUztnQkFBSTtZQUFDO1lBQ3ZEO2dCQUFDUixNQUFNO2dCQUF1Qk4sT0FBTztvQkFBQ2EsUUFBUTtvQkFBTUMsU0FBUztnQkFBTztZQUFDO1NBQ3RFO1FBQ0RSLE1BQU07SUFDUjtDQUNEO0FBRUQsTUFBTVMsT0FBNkI7SUFDakNDLFVBQVU7UUFDUkMsV0FBVztZQUNUQyxTQUFTO1lBQ1RDLFNBQVM7Z0JBQUM7Z0JBQVc7Z0JBQVk7YUFBUTtRQUMzQztRQUNBQyxrQkFBa0I7WUFDaEJGLFNBQVM7WUFDVEMsU0FBUztnQkFBQztnQkFBVzthQUFXO1FBQ2xDO1FBQ0FqQixhQUFhO1lBQ1hnQixTQUFTO1FBQ1g7UUFDQUcsU0FBUztZQUNQSCxTQUFTO1FBQ1g7UUFDQUksT0FBTztZQUNMSixTQUFTO1FBQ1g7UUFDQUssTUFBTTtZQUNKTCxTQUFTO1lBQ1RDLFNBQVM7Z0JBQUM7Z0JBQVc7Z0JBQVE7YUFBVztRQUMxQztRQUNBSyxTQUFTO1lBQ1BOLFNBQVM7WUFDVEMsU0FBUztnQkFBQztnQkFBUTtnQkFBVTthQUFhO1FBQzNDO0lBQ0Y7SUFDQU0sV0FBVzFCO0lBQ1gyQixZQUFZO1FBQ1ZDLFFBQVE7SUFDVjtJQUNBTCxPQUFPO0FBQ1Q7QUFFQSxlQUFlUCxLQUFLO0FBSXBCLE9BQU8sTUFBTWEsT0FBYztJQUN6QkMsTUFBTTtRQUNKWixXQUFXO1FBQ1hHLGtCQUFrQjtRQUNsQmxCLGFBQWE7UUFDYm1CLFNBQVM7UUFDVFMsYUFBYTtZQUNYO2dCQUFDQyxPQUFPO2dCQUFXQyxhQUFhO2dCQUFPQyxPQUFPO1lBQVM7WUFDdkQ7Z0JBQUNGLE9BQU87Z0JBQVlDLGFBQWE7Z0JBQU9DLE9BQU87WUFBVTtTQUMxRDtRQUNEakM7UUFDQXNCLE9BQU87UUFDUEMsTUFBTTtRQUNOQyxTQUFTO0lBQ1g7SUFDQVUsTUFBTXBDO0FBQ1IsRUFBRTtBQUVGLE9BQU8sTUFBTXFDLGFBQW9CO0lBQy9CTixNQUFNO1FBQ0pqQjtRQUNBWjtRQUNBc0IsT0FBTztRQUNQRSxTQUFTO0lBQ1g7SUFDQVUsTUFBTXBDO0FBQ1IsRUFBRSJ9
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { HTMLAttributes, ReactNode } from 'react';
|
|
2
|
+
export interface ProductItem {
|
|
3
|
+
readonly badge?: ReactNode;
|
|
4
|
+
readonly colors?: string[];
|
|
5
|
+
readonly description?: ReactNode;
|
|
6
|
+
readonly href?: string;
|
|
7
|
+
readonly id?: string | number;
|
|
8
|
+
readonly imageAlt: string;
|
|
9
|
+
readonly imageSrc: string;
|
|
10
|
+
readonly name: ReactNode;
|
|
11
|
+
readonly price?: ReactNode;
|
|
12
|
+
}
|
|
13
|
+
export interface ProductGridProps extends HTMLAttributes<HTMLDivElement> {
|
|
14
|
+
readonly products: ProductItem[];
|
|
15
|
+
}
|
|
16
|
+
declare const ProductGridComponent: ({ className, products, ...props }: ProductGridProps) => import("react").JSX.Element;
|
|
17
|
+
export interface ProductCardProps extends HTMLAttributes<HTMLElement> {
|
|
18
|
+
readonly product: ProductItem;
|
|
19
|
+
}
|
|
20
|
+
declare const ProductCardComponent: ({ className, product, ...props }: ProductCardProps) => import("react").JSX.Element;
|
|
21
|
+
export declare const ProductGrid: import("react").MemoExoticComponent<typeof ProductGridComponent>;
|
|
22
|
+
export declare const ProductCard: import("react").MemoExoticComponent<typeof ProductCardComponent>;
|
|
23
|
+
export {};
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from '@nlabs/utils';
|
|
3
|
+
import { memo } from 'react';
|
|
4
|
+
const ProductGridComponent = ({ className, products, ...props })=>/*#__PURE__*/ _jsx("div", {
|
|
5
|
+
className: cn('grid grid-cols-1 gap-x-6 gap-y-10 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 xl:gap-x-8', className),
|
|
6
|
+
"data-slot": "product-grid",
|
|
7
|
+
...props,
|
|
8
|
+
children: products.map((product)=>/*#__PURE__*/ _jsx(ProductCard, {
|
|
9
|
+
product: product
|
|
10
|
+
}, product.id ?? String(product.name)))
|
|
11
|
+
});
|
|
12
|
+
const ProductCardComponent = ({ className, product, ...props })=>{
|
|
13
|
+
const content = /*#__PURE__*/ _jsxs(_Fragment, {
|
|
14
|
+
children: [
|
|
15
|
+
/*#__PURE__*/ _jsx("img", {
|
|
16
|
+
alt: product.imageAlt,
|
|
17
|
+
className: "aspect-square w-full rounded-lg bg-muted object-cover transition-opacity group-hover:opacity-80 dark:bg-muted-dark xl:aspect-7/8",
|
|
18
|
+
src: product.imageSrc
|
|
19
|
+
}),
|
|
20
|
+
/*#__PURE__*/ _jsxs("div", {
|
|
21
|
+
className: "mt-4 flex items-start justify-between gap-3",
|
|
22
|
+
children: [
|
|
23
|
+
/*#__PURE__*/ _jsxs("div", {
|
|
24
|
+
className: "min-w-0",
|
|
25
|
+
children: [
|
|
26
|
+
/*#__PURE__*/ _jsx("h3", {
|
|
27
|
+
className: "text-sm text-foreground dark:text-foreground-dark",
|
|
28
|
+
children: product.name
|
|
29
|
+
}),
|
|
30
|
+
product.description ? /*#__PURE__*/ _jsx("p", {
|
|
31
|
+
className: "mt-1 text-sm text-muted-foreground dark:text-muted-foreground-dark",
|
|
32
|
+
children: product.description
|
|
33
|
+
}) : null
|
|
34
|
+
]
|
|
35
|
+
}),
|
|
36
|
+
product.price ? /*#__PURE__*/ _jsx("p", {
|
|
37
|
+
className: "shrink-0 text-sm font-medium text-foreground dark:text-foreground-dark",
|
|
38
|
+
children: product.price
|
|
39
|
+
}) : null
|
|
40
|
+
]
|
|
41
|
+
}),
|
|
42
|
+
product.colors?.length ? /*#__PURE__*/ _jsx("div", {
|
|
43
|
+
className: "mt-3 flex gap-1.5",
|
|
44
|
+
children: product.colors.map((color)=>/*#__PURE__*/ _jsx("span", {
|
|
45
|
+
"aria-label": color,
|
|
46
|
+
className: "size-4 rounded-full border border-black/10 ring-1 ring-black/5 dark:border-white/20 dark:ring-white/10",
|
|
47
|
+
style: {
|
|
48
|
+
backgroundColor: color
|
|
49
|
+
}
|
|
50
|
+
}, color))
|
|
51
|
+
}) : null,
|
|
52
|
+
product.badge ? /*#__PURE__*/ _jsx("div", {
|
|
53
|
+
className: "mt-3",
|
|
54
|
+
children: product.badge
|
|
55
|
+
}) : null
|
|
56
|
+
]
|
|
57
|
+
});
|
|
58
|
+
if (product.href) {
|
|
59
|
+
return /*#__PURE__*/ _jsx("a", {
|
|
60
|
+
className: cn('group block', className),
|
|
61
|
+
"data-slot": "product-card",
|
|
62
|
+
href: product.href,
|
|
63
|
+
...props,
|
|
64
|
+
children: content
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
return /*#__PURE__*/ _jsx("article", {
|
|
68
|
+
className: cn('group block', className),
|
|
69
|
+
"data-slot": "product-card",
|
|
70
|
+
...props,
|
|
71
|
+
children: content
|
|
72
|
+
});
|
|
73
|
+
};
|
|
74
|
+
export const ProductGrid = /*#__PURE__*/ memo(ProductGridComponent);
|
|
75
|
+
ProductGrid.displayName = 'ProductGrid';
|
|
76
|
+
export const ProductCard = /*#__PURE__*/ memo(ProductCardComponent);
|
|
77
|
+
ProductCard.displayName = 'ProductCard';
|
|
78
|
+
|
|
79
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L2dvdGhhbWpzL3NyYy9jb21wb25lbnRzL1Byb2R1Y3RHcmlkL1Byb2R1Y3RHcmlkLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2NufSBmcm9tICdAbmxhYnMvdXRpbHMnO1xuaW1wb3J0IHttZW1vfSBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB0eXBlIHtBbmNob3JIVE1MQXR0cmlidXRlcywgSFRNTEF0dHJpYnV0ZXMsIFJlYWN0Tm9kZX0gZnJvbSAncmVhY3QnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFByb2R1Y3RJdGVtIHtcbiAgcmVhZG9ubHkgYmFkZ2U/OiBSZWFjdE5vZGU7XG4gIHJlYWRvbmx5IGNvbG9ycz86IHN0cmluZ1tdO1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IFJlYWN0Tm9kZTtcbiAgcmVhZG9ubHkgaHJlZj86IHN0cmluZztcbiAgcmVhZG9ubHkgaWQ/OiBzdHJpbmcgfCBudW1iZXI7XG4gIHJlYWRvbmx5IGltYWdlQWx0OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGltYWdlU3JjOiBzdHJpbmc7XG4gIHJlYWRvbmx5IG5hbWU6IFJlYWN0Tm9kZTtcbiAgcmVhZG9ubHkgcHJpY2U/OiBSZWFjdE5vZGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvZHVjdEdyaWRQcm9wcyBleHRlbmRzIEhUTUxBdHRyaWJ1dGVzPEhUTUxEaXZFbGVtZW50PiB7XG4gIHJlYWRvbmx5IHByb2R1Y3RzOiBQcm9kdWN0SXRlbVtdO1xufVxuXG5jb25zdCBQcm9kdWN0R3JpZENvbXBvbmVudCA9ICh7XG4gIGNsYXNzTmFtZSxcbiAgcHJvZHVjdHMsXG4gIC4uLnByb3BzXG59OiBQcm9kdWN0R3JpZFByb3BzKSA9PiAoXG4gIDxkaXZcbiAgICBjbGFzc05hbWU9e2NuKCdncmlkIGdyaWQtY29scy0xIGdhcC14LTYgZ2FwLXktMTAgc206Z3JpZC1jb2xzLTIgbGc6Z3JpZC1jb2xzLTMgeGw6Z3JpZC1jb2xzLTQgeGw6Z2FwLXgtOCcsIGNsYXNzTmFtZSl9XG4gICAgZGF0YS1zbG90PVwicHJvZHVjdC1ncmlkXCJcbiAgICB7Li4ucHJvcHN9XG4gID5cbiAgICB7cHJvZHVjdHMubWFwKChwcm9kdWN0KSA9PiAoXG4gICAgICA8UHJvZHVjdENhcmQga2V5PXtwcm9kdWN0LmlkID8/IFN0cmluZyhwcm9kdWN0Lm5hbWUpfSBwcm9kdWN0PXtwcm9kdWN0fSAvPlxuICAgICkpfVxuICA8L2Rpdj5cbik7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvZHVjdENhcmRQcm9wcyBleHRlbmRzIEhUTUxBdHRyaWJ1dGVzPEhUTUxFbGVtZW50PiB7XG4gIHJlYWRvbmx5IHByb2R1Y3Q6IFByb2R1Y3RJdGVtO1xufVxuXG5jb25zdCBQcm9kdWN0Q2FyZENvbXBvbmVudCA9ICh7XG4gIGNsYXNzTmFtZSxcbiAgcHJvZHVjdCxcbiAgLi4ucHJvcHNcbn06IFByb2R1Y3RDYXJkUHJvcHMpID0+IHtcbiAgY29uc3QgY29udGVudCA9IChcbiAgICA8PlxuICAgICAgPGltZ1xuICAgICAgICBhbHQ9e3Byb2R1Y3QuaW1hZ2VBbHR9XG4gICAgICAgIGNsYXNzTmFtZT1cImFzcGVjdC1zcXVhcmUgdy1mdWxsIHJvdW5kZWQtbGcgYmctbXV0ZWQgb2JqZWN0LWNvdmVyIHRyYW5zaXRpb24tb3BhY2l0eSBncm91cC1ob3ZlcjpvcGFjaXR5LTgwIGRhcms6YmctbXV0ZWQtZGFyayB4bDphc3BlY3QtNy84XCJcbiAgICAgICAgc3JjPXtwcm9kdWN0LmltYWdlU3JjfVxuICAgICAgLz5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXQtNCBmbGV4IGl0ZW1zLXN0YXJ0IGp1c3RpZnktYmV0d2VlbiBnYXAtM1wiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1pbi13LTBcIj5cbiAgICAgICAgICA8aDMgY2xhc3NOYW1lPVwidGV4dC1zbSB0ZXh0LWZvcmVncm91bmQgZGFyazp0ZXh0LWZvcmVncm91bmQtZGFya1wiPntwcm9kdWN0Lm5hbWV9PC9oMz5cbiAgICAgICAgICB7cHJvZHVjdC5kZXNjcmlwdGlvbiA/IDxwIGNsYXNzTmFtZT1cIm10LTEgdGV4dC1zbSB0ZXh0LW11dGVkLWZvcmVncm91bmQgZGFyazp0ZXh0LW11dGVkLWZvcmVncm91bmQtZGFya1wiPntwcm9kdWN0LmRlc2NyaXB0aW9ufTwvcD4gOiBudWxsfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAge3Byb2R1Y3QucHJpY2UgPyA8cCBjbGFzc05hbWU9XCJzaHJpbmstMCB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtZm9yZWdyb3VuZCBkYXJrOnRleHQtZm9yZWdyb3VuZC1kYXJrXCI+e3Byb2R1Y3QucHJpY2V9PC9wPiA6IG51bGx9XG4gICAgICA8L2Rpdj5cbiAgICAgIHtwcm9kdWN0LmNvbG9ycz8ubGVuZ3RoID8gKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm10LTMgZmxleCBnYXAtMS41XCI+XG4gICAgICAgICAge3Byb2R1Y3QuY29sb3JzLm1hcCgoY29sb3IpID0+IChcbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgIGFyaWEtbGFiZWw9e2NvbG9yfVxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJzaXplLTQgcm91bmRlZC1mdWxsIGJvcmRlciBib3JkZXItYmxhY2svMTAgcmluZy0xIHJpbmctYmxhY2svNSBkYXJrOmJvcmRlci13aGl0ZS8yMCBkYXJrOnJpbmctd2hpdGUvMTBcIlxuICAgICAgICAgICAgICBrZXk9e2NvbG9yfVxuICAgICAgICAgICAgICBzdHlsZT17e2JhY2tncm91bmRDb2xvcjogY29sb3J9fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9kaXY+XG4gICAgICApIDogbnVsbH1cbiAgICAgIHtwcm9kdWN0LmJhZGdlID8gPGRpdiBjbGFzc05hbWU9XCJtdC0zXCI+e3Byb2R1Y3QuYmFkZ2V9PC9kaXY+IDogbnVsbH1cbiAgICA8Lz5cbiAgKTtcblxuICBpZihwcm9kdWN0LmhyZWYpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPGFcbiAgICAgICAgY2xhc3NOYW1lPXtjbignZ3JvdXAgYmxvY2snLCBjbGFzc05hbWUpfVxuICAgICAgICBkYXRhLXNsb3Q9XCJwcm9kdWN0LWNhcmRcIlxuICAgICAgICBocmVmPXtwcm9kdWN0LmhyZWZ9XG4gICAgICAgIHsuLi5wcm9wcyBhcyBBbmNob3JIVE1MQXR0cmlidXRlczxIVE1MQW5jaG9yRWxlbWVudD59XG4gICAgICA+XG4gICAgICAgIHtjb250ZW50fVxuICAgICAgPC9hPlxuICAgICk7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxhcnRpY2xlXG4gICAgICBjbGFzc05hbWU9e2NuKCdncm91cCBibG9jaycsIGNsYXNzTmFtZSl9XG4gICAgICBkYXRhLXNsb3Q9XCJwcm9kdWN0LWNhcmRcIlxuICAgICAgey4uLnByb3BzfVxuICAgID5cbiAgICAgIHtjb250ZW50fVxuICAgIDwvYXJ0aWNsZT5cbiAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCBQcm9kdWN0R3JpZCA9IG1lbW8oUHJvZHVjdEdyaWRDb21wb25lbnQpO1xuUHJvZHVjdEdyaWQuZGlzcGxheU5hbWUgPSAnUHJvZHVjdEdyaWQnO1xuXG5leHBvcnQgY29uc3QgUHJvZHVjdENhcmQgPSBtZW1vKFByb2R1Y3RDYXJkQ29tcG9uZW50KTtcblByb2R1Y3RDYXJkLmRpc3BsYXlOYW1lID0gJ1Byb2R1Y3RDYXJkJztcbiJdLCJuYW1lcyI6WyJjbiIsIm1lbW8iLCJQcm9kdWN0R3JpZENvbXBvbmVudCIsImNsYXNzTmFtZSIsInByb2R1Y3RzIiwicHJvcHMiLCJkaXYiLCJkYXRhLXNsb3QiLCJtYXAiLCJwcm9kdWN0IiwiUHJvZHVjdENhcmQiLCJpZCIsIlN0cmluZyIsIm5hbWUiLCJQcm9kdWN0Q2FyZENvbXBvbmVudCIsImNvbnRlbnQiLCJpbWciLCJhbHQiLCJpbWFnZUFsdCIsInNyYyIsImltYWdlU3JjIiwiaDMiLCJkZXNjcmlwdGlvbiIsInAiLCJwcmljZSIsImNvbG9ycyIsImxlbmd0aCIsImNvbG9yIiwic3BhbiIsImFyaWEtbGFiZWwiLCJzdHlsZSIsImJhY2tncm91bmRDb2xvciIsImJhZGdlIiwiaHJlZiIsImEiLCJhcnRpY2xlIiwiUHJvZHVjdEdyaWQiLCJkaXNwbGF5TmFtZSJdLCJtYXBwaW5ncyI6IjtBQUFBLFNBQVFBLEVBQUUsUUFBTyxlQUFlO0FBQ2hDLFNBQVFDLElBQUksUUFBTyxRQUFRO0FBb0IzQixNQUFNQyx1QkFBdUIsQ0FBQyxFQUM1QkMsU0FBUyxFQUNUQyxRQUFRLEVBQ1IsR0FBR0MsT0FDYyxpQkFDakIsS0FBQ0M7UUFDQ0gsV0FBV0gsR0FBRyw2RkFBNkZHO1FBQzNHSSxhQUFVO1FBQ1QsR0FBR0YsS0FBSztrQkFFUkQsU0FBU0ksR0FBRyxDQUFDLENBQUNDLHdCQUNiLEtBQUNDO2dCQUFxREQsU0FBU0E7ZUFBN0NBLFFBQVFFLEVBQUUsSUFBSUMsT0FBT0gsUUFBUUksSUFBSTs7QUFTekQsTUFBTUMsdUJBQXVCLENBQUMsRUFDNUJYLFNBQVMsRUFDVE0sT0FBTyxFQUNQLEdBQUdKLE9BQ2M7SUFDakIsTUFBTVUsd0JBQ0o7OzBCQUNFLEtBQUNDO2dCQUNDQyxLQUFLUixRQUFRUyxRQUFRO2dCQUNyQmYsV0FBVTtnQkFDVmdCLEtBQUtWLFFBQVFXLFFBQVE7OzBCQUV2QixNQUFDZDtnQkFBSUgsV0FBVTs7a0NBQ2IsTUFBQ0c7d0JBQUlILFdBQVU7OzBDQUNiLEtBQUNrQjtnQ0FBR2xCLFdBQVU7MENBQXFETSxRQUFRSSxJQUFJOzs0QkFDOUVKLFFBQVFhLFdBQVcsaUJBQUcsS0FBQ0M7Z0NBQUVwQixXQUFVOzBDQUFzRU0sUUFBUWEsV0FBVztpQ0FBUTs7O29CQUV0SWIsUUFBUWUsS0FBSyxpQkFBRyxLQUFDRDt3QkFBRXBCLFdBQVU7a0NBQTBFTSxRQUFRZSxLQUFLO3lCQUFROzs7WUFFOUhmLFFBQVFnQixNQUFNLEVBQUVDLHVCQUNmLEtBQUNwQjtnQkFBSUgsV0FBVTswQkFDWk0sUUFBUWdCLE1BQU0sQ0FBQ2pCLEdBQUcsQ0FBQyxDQUFDbUIsc0JBQ25CLEtBQUNDO3dCQUNDQyxjQUFZRjt3QkFDWnhCLFdBQVU7d0JBRVYyQixPQUFPOzRCQUFDQyxpQkFBaUJKO3dCQUFLO3VCQUR6QkE7aUJBS1Q7WUFDSGxCLFFBQVF1QixLQUFLLGlCQUFHLEtBQUMxQjtnQkFBSUgsV0FBVTswQkFBUU0sUUFBUXVCLEtBQUs7aUJBQVU7OztJQUluRSxJQUFHdkIsUUFBUXdCLElBQUksRUFBRTtRQUNmLHFCQUNFLEtBQUNDO1lBQ0MvQixXQUFXSCxHQUFHLGVBQWVHO1lBQzdCSSxhQUFVO1lBQ1YwQixNQUFNeEIsUUFBUXdCLElBQUk7WUFDakIsR0FBRzVCLEtBQUs7c0JBRVJVOztJQUdQO0lBRUEscUJBQ0UsS0FBQ29CO1FBQ0NoQyxXQUFXSCxHQUFHLGVBQWVHO1FBQzdCSSxhQUFVO1FBQ1QsR0FBR0YsS0FBSztrQkFFUlU7O0FBR1A7QUFFQSxPQUFPLE1BQU1xQiw0QkFBY25DLEtBQUtDLHNCQUFzQjtBQUN0RGtDLFlBQVlDLFdBQVcsR0FBRztBQUUxQixPQUFPLE1BQU0zQiw0QkFBY1QsS0FBS2Esc0JBQXNCO0FBQ3RESixZQUFZMkIsV0FBVyxHQUFHIn0=
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { ProductGrid } from './ProductGrid.js';
|
|
2
|
+
const products = [
|
|
3
|
+
{
|
|
4
|
+
href: '#',
|
|
5
|
+
id: 1,
|
|
6
|
+
imageAlt: 'Tall porcelain bottle with cork stopper.',
|
|
7
|
+
imageSrc: 'https://tailwindcss.com/plus-assets/img/ecommerce-images/category-page-04-image-card-01.jpg',
|
|
8
|
+
name: 'Earthen Bottle',
|
|
9
|
+
price: '$48'
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
href: '#',
|
|
13
|
+
id: 2,
|
|
14
|
+
imageAlt: 'Olive insulated bottle with flared lid.',
|
|
15
|
+
imageSrc: 'https://tailwindcss.com/plus-assets/img/ecommerce-images/category-page-04-image-card-02.jpg',
|
|
16
|
+
name: 'Nomad Tumbler',
|
|
17
|
+
price: '$35'
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
href: '#',
|
|
21
|
+
id: 3,
|
|
22
|
+
imageAlt: 'Paper refill cards on a desk.',
|
|
23
|
+
imageSrc: 'https://tailwindcss.com/plus-assets/img/ecommerce-images/category-page-04-image-card-03.jpg',
|
|
24
|
+
name: 'Focus Paper Refill',
|
|
25
|
+
price: '$89'
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
href: '#',
|
|
29
|
+
id: 4,
|
|
30
|
+
imageAlt: 'Black machined mechanical pencil.',
|
|
31
|
+
imageSrc: 'https://tailwindcss.com/plus-assets/img/ecommerce-images/category-page-04-image-card-04.jpg',
|
|
32
|
+
name: 'Machined Mechanical Pencil',
|
|
33
|
+
price: '$35'
|
|
34
|
+
}
|
|
35
|
+
];
|
|
36
|
+
const meta = {
|
|
37
|
+
component: ProductGrid,
|
|
38
|
+
parameters: {
|
|
39
|
+
layout: 'padded'
|
|
40
|
+
},
|
|
41
|
+
title: 'Ecommerce/ProductGrid'
|
|
42
|
+
};
|
|
43
|
+
export default meta;
|
|
44
|
+
export const Simple = {
|
|
45
|
+
args: {
|
|
46
|
+
products
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L2dvdGhhbWpzL3NyYy9jb21wb25lbnRzL1Byb2R1Y3RHcmlkL1Byb2R1Y3RHcmlkLnN0b3JpZXMudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UHJvZHVjdEdyaWR9IGZyb20gJy4vUHJvZHVjdEdyaWQuanMnO1xuXG5pbXBvcnQgdHlwZSB7TWV0YSwgU3RvcnlPYmp9IGZyb20gJ0BubGFicy9sZXgvc3Rvcnlib29rJztcblxuY29uc3QgcHJvZHVjdHMgPSBbXG4gIHtcbiAgICBocmVmOiAnIycsXG4gICAgaWQ6IDEsXG4gICAgaW1hZ2VBbHQ6ICdUYWxsIHBvcmNlbGFpbiBib3R0bGUgd2l0aCBjb3JrIHN0b3BwZXIuJyxcbiAgICBpbWFnZVNyYzogJ2h0dHBzOi8vdGFpbHdpbmRjc3MuY29tL3BsdXMtYXNzZXRzL2ltZy9lY29tbWVyY2UtaW1hZ2VzL2NhdGVnb3J5LXBhZ2UtMDQtaW1hZ2UtY2FyZC0wMS5qcGcnLFxuICAgIG5hbWU6ICdFYXJ0aGVuIEJvdHRsZScsXG4gICAgcHJpY2U6ICckNDgnXG4gIH0sXG4gIHtcbiAgICBocmVmOiAnIycsXG4gICAgaWQ6IDIsXG4gICAgaW1hZ2VBbHQ6ICdPbGl2ZSBpbnN1bGF0ZWQgYm90dGxlIHdpdGggZmxhcmVkIGxpZC4nLFxuICAgIGltYWdlU3JjOiAnaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vcGx1cy1hc3NldHMvaW1nL2Vjb21tZXJjZS1pbWFnZXMvY2F0ZWdvcnktcGFnZS0wNC1pbWFnZS1jYXJkLTAyLmpwZycsXG4gICAgbmFtZTogJ05vbWFkIFR1bWJsZXInLFxuICAgIHByaWNlOiAnJDM1J1xuICB9LFxuICB7XG4gICAgaHJlZjogJyMnLFxuICAgIGlkOiAzLFxuICAgIGltYWdlQWx0OiAnUGFwZXIgcmVmaWxsIGNhcmRzIG9uIGEgZGVzay4nLFxuICAgIGltYWdlU3JjOiAnaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vcGx1cy1hc3NldHMvaW1nL2Vjb21tZXJjZS1pbWFnZXMvY2F0ZWdvcnktcGFnZS0wNC1pbWFnZS1jYXJkLTAzLmpwZycsXG4gICAgbmFtZTogJ0ZvY3VzIFBhcGVyIFJlZmlsbCcsXG4gICAgcHJpY2U6ICckODknXG4gIH0sXG4gIHtcbiAgICBocmVmOiAnIycsXG4gICAgaWQ6IDQsXG4gICAgaW1hZ2VBbHQ6ICdCbGFjayBtYWNoaW5lZCBtZWNoYW5pY2FsIHBlbmNpbC4nLFxuICAgIGltYWdlU3JjOiAnaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vcGx1cy1hc3NldHMvaW1nL2Vjb21tZXJjZS1pbWFnZXMvY2F0ZWdvcnktcGFnZS0wNC1pbWFnZS1jYXJkLTA0LmpwZycsXG4gICAgbmFtZTogJ01hY2hpbmVkIE1lY2hhbmljYWwgUGVuY2lsJyxcbiAgICBwcmljZTogJyQzNSdcbiAgfVxuXTtcblxuY29uc3QgbWV0YTogTWV0YTx0eXBlb2YgUHJvZHVjdEdyaWQ+ID0ge1xuICBjb21wb25lbnQ6IFByb2R1Y3RHcmlkLFxuICBwYXJhbWV0ZXJzOiB7XG4gICAgbGF5b3V0OiAncGFkZGVkJ1xuICB9LFxuICB0aXRsZTogJ0Vjb21tZXJjZS9Qcm9kdWN0R3JpZCdcbn07XG5cbmV4cG9ydCBkZWZhdWx0IG1ldGE7XG5cbnR5cGUgU3RvcnkgPSBTdG9yeU9iajx0eXBlb2YgUHJvZHVjdEdyaWQ+O1xuXG5leHBvcnQgY29uc3QgU2ltcGxlOiBTdG9yeSA9IHtcbiAgYXJnczoge1xuICAgIHByb2R1Y3RzXG4gIH1cbn07XG4iXSwibmFtZXMiOlsiUHJvZHVjdEdyaWQiLCJwcm9kdWN0cyIsImhyZWYiLCJpZCIsImltYWdlQWx0IiwiaW1hZ2VTcmMiLCJuYW1lIiwicHJpY2UiLCJtZXRhIiwiY29tcG9uZW50IiwicGFyYW1ldGVycyIsImxheW91dCIsInRpdGxlIiwiU2ltcGxlIiwiYXJncyJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBUUEsV0FBVyxRQUFPLG1CQUFtQjtBQUk3QyxNQUFNQyxXQUFXO0lBQ2Y7UUFDRUMsTUFBTTtRQUNOQyxJQUFJO1FBQ0pDLFVBQVU7UUFDVkMsVUFBVTtRQUNWQyxNQUFNO1FBQ05DLE9BQU87SUFDVDtJQUNBO1FBQ0VMLE1BQU07UUFDTkMsSUFBSTtRQUNKQyxVQUFVO1FBQ1ZDLFVBQVU7UUFDVkMsTUFBTTtRQUNOQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFTCxNQUFNO1FBQ05DLElBQUk7UUFDSkMsVUFBVTtRQUNWQyxVQUFVO1FBQ1ZDLE1BQU07UUFDTkMsT0FBTztJQUNUO0lBQ0E7UUFDRUwsTUFBTTtRQUNOQyxJQUFJO1FBQ0pDLFVBQVU7UUFDVkMsVUFBVTtRQUNWQyxNQUFNO1FBQ05DLE9BQU87SUFDVDtDQUNEO0FBRUQsTUFBTUMsT0FBaUM7SUFDckNDLFdBQVdUO0lBQ1hVLFlBQVk7UUFDVkMsUUFBUTtJQUNWO0lBQ0FDLE9BQU87QUFDVDtBQUVBLGVBQWVKLEtBQUs7QUFJcEIsT0FBTyxNQUFNSyxTQUFnQjtJQUMzQkMsTUFBTTtRQUNKYjtJQUNGO0FBQ0YsRUFBRSJ9
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { HTMLAttributes } from 'react';
|
|
2
|
+
export type ProgressStepStatus = 'complete' | 'current' | 'upcoming';
|
|
3
|
+
export interface ProgressStepItem {
|
|
4
|
+
readonly href?: string;
|
|
5
|
+
readonly id?: string;
|
|
6
|
+
readonly label: string;
|
|
7
|
+
readonly status: ProgressStepStatus;
|
|
8
|
+
}
|
|
9
|
+
export interface ProgressStepsProps extends HTMLAttributes<HTMLElement> {
|
|
10
|
+
readonly ariaLabel?: string;
|
|
11
|
+
readonly steps: ProgressStepItem[];
|
|
12
|
+
}
|
|
13
|
+
export declare const ProgressSteps: ({ ariaLabel, className, steps, ...props }: ProgressStepsProps) => import("react").JSX.Element;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from '@nlabs/utils';
|
|
3
|
+
const getStepClasses = (status)=>{
|
|
4
|
+
if (status === 'complete') {
|
|
5
|
+
return 'border-primary hover:border-primary-700 dark:border-primary-dark dark:hover:border-primary-dark-300';
|
|
6
|
+
}
|
|
7
|
+
if (status === 'current') {
|
|
8
|
+
return 'border-primary dark:border-primary-dark';
|
|
9
|
+
}
|
|
10
|
+
return 'border-border hover:border-muted-foreground dark:border-border-dark dark:hover:border-muted-foreground-dark';
|
|
11
|
+
};
|
|
12
|
+
const getStepLabelClasses = (status)=>status === 'upcoming' ? 'text-muted-foreground group-hover:text-foreground dark:text-muted-foreground-dark dark:group-hover:text-foreground-dark' : 'text-primary dark:text-primary-dark';
|
|
13
|
+
export const ProgressSteps = ({ ariaLabel = 'Progress', className, steps, ...props })=>/*#__PURE__*/ _jsx("nav", {
|
|
14
|
+
"aria-label": ariaLabel,
|
|
15
|
+
className: className,
|
|
16
|
+
"data-slot": "progress-steps",
|
|
17
|
+
...props,
|
|
18
|
+
children: /*#__PURE__*/ _jsx("ol", {
|
|
19
|
+
className: "space-y-4 md:flex md:space-y-0 md:space-x-8",
|
|
20
|
+
children: steps.map((step, index)=>{
|
|
21
|
+
const content = /*#__PURE__*/ _jsxs(_Fragment, {
|
|
22
|
+
children: [
|
|
23
|
+
/*#__PURE__*/ _jsx("span", {
|
|
24
|
+
className: cn('text-sm font-medium', getStepLabelClasses(step.status)),
|
|
25
|
+
children: step.id ?? `Step ${index + 1}`
|
|
26
|
+
}),
|
|
27
|
+
/*#__PURE__*/ _jsx("span", {
|
|
28
|
+
className: "text-sm font-medium text-foreground dark:text-foreground-dark",
|
|
29
|
+
children: step.label
|
|
30
|
+
})
|
|
31
|
+
]
|
|
32
|
+
});
|
|
33
|
+
const classes = cn('group flex flex-col border-l-4 py-2 pl-4 md:border-t-4 md:border-l-0 md:pt-4 md:pb-0 md:pl-0', getStepClasses(step.status));
|
|
34
|
+
return /*#__PURE__*/ _jsx("li", {
|
|
35
|
+
className: "md:flex-1",
|
|
36
|
+
children: step.href ? /*#__PURE__*/ _jsx("a", {
|
|
37
|
+
"aria-current": step.status === 'current' ? 'step' : undefined,
|
|
38
|
+
className: classes,
|
|
39
|
+
href: step.href,
|
|
40
|
+
children: content
|
|
41
|
+
}) : /*#__PURE__*/ _jsx("div", {
|
|
42
|
+
"aria-current": step.status === 'current' ? 'step' : undefined,
|
|
43
|
+
className: classes,
|
|
44
|
+
children: content
|
|
45
|
+
})
|
|
46
|
+
}, step.id ?? step.label);
|
|
47
|
+
})
|
|
48
|
+
})
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L2dvdGhhbWpzL3NyYy9jb21wb25lbnRzL1Byb2dyZXNzU3RlcHMvUHJvZ3Jlc3NTdGVwcy50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtjbn0gZnJvbSAnQG5sYWJzL3V0aWxzJztcblxuaW1wb3J0IHR5cGUge0hUTUxBdHRyaWJ1dGVzfSBmcm9tICdyZWFjdCc7XG5cbmV4cG9ydCB0eXBlIFByb2dyZXNzU3RlcFN0YXR1cyA9ICdjb21wbGV0ZScgfCAnY3VycmVudCcgfCAndXBjb21pbmcnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFByb2dyZXNzU3RlcEl0ZW0ge1xuICByZWFkb25seSBocmVmPzogc3RyaW5nO1xuICByZWFkb25seSBpZD86IHN0cmluZztcbiAgcmVhZG9ubHkgbGFiZWw6IHN0cmluZztcbiAgcmVhZG9ubHkgc3RhdHVzOiBQcm9ncmVzc1N0ZXBTdGF0dXM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvZ3Jlc3NTdGVwc1Byb3BzIGV4dGVuZHMgSFRNTEF0dHJpYnV0ZXM8SFRNTEVsZW1lbnQ+IHtcbiAgcmVhZG9ubHkgYXJpYUxhYmVsPzogc3RyaW5nO1xuICByZWFkb25seSBzdGVwczogUHJvZ3Jlc3NTdGVwSXRlbVtdO1xufVxuXG5jb25zdCBnZXRTdGVwQ2xhc3NlcyA9IChzdGF0dXM6IFByb2dyZXNzU3RlcFN0YXR1cykgPT4ge1xuICBpZihzdGF0dXMgPT09ICdjb21wbGV0ZScpIHtcbiAgICByZXR1cm4gJ2JvcmRlci1wcmltYXJ5IGhvdmVyOmJvcmRlci1wcmltYXJ5LTcwMCBkYXJrOmJvcmRlci1wcmltYXJ5LWRhcmsgZGFyazpob3Zlcjpib3JkZXItcHJpbWFyeS1kYXJrLTMwMCc7XG4gIH1cblxuICBpZihzdGF0dXMgPT09ICdjdXJyZW50Jykge1xuICAgIHJldHVybiAnYm9yZGVyLXByaW1hcnkgZGFyazpib3JkZXItcHJpbWFyeS1kYXJrJztcbiAgfVxuXG4gIHJldHVybiAnYm9yZGVyLWJvcmRlciBob3Zlcjpib3JkZXItbXV0ZWQtZm9yZWdyb3VuZCBkYXJrOmJvcmRlci1ib3JkZXItZGFyayBkYXJrOmhvdmVyOmJvcmRlci1tdXRlZC1mb3JlZ3JvdW5kLWRhcmsnO1xufTtcblxuY29uc3QgZ2V0U3RlcExhYmVsQ2xhc3NlcyA9IChzdGF0dXM6IFByb2dyZXNzU3RlcFN0YXR1cykgPT4gKHN0YXR1cyA9PT0gJ3VwY29taW5nJ1xuICA/ICd0ZXh0LW11dGVkLWZvcmVncm91bmQgZ3JvdXAtaG92ZXI6dGV4dC1mb3JlZ3JvdW5kIGRhcms6dGV4dC1tdXRlZC1mb3JlZ3JvdW5kLWRhcmsgZGFyazpncm91cC1ob3Zlcjp0ZXh0LWZvcmVncm91bmQtZGFyaydcbiAgOiAndGV4dC1wcmltYXJ5IGRhcms6dGV4dC1wcmltYXJ5LWRhcmsnKTtcblxuZXhwb3J0IGNvbnN0IFByb2dyZXNzU3RlcHMgPSAoe1xuICBhcmlhTGFiZWwgPSAnUHJvZ3Jlc3MnLFxuICBjbGFzc05hbWUsXG4gIHN0ZXBzLFxuICAuLi5wcm9wc1xufTogUHJvZ3Jlc3NTdGVwc1Byb3BzKSA9PiAoXG4gIDxuYXYgYXJpYS1sYWJlbD17YXJpYUxhYmVsfSBjbGFzc05hbWU9e2NsYXNzTmFtZX0gZGF0YS1zbG90PVwicHJvZ3Jlc3Mtc3RlcHNcIiB7Li4ucHJvcHN9PlxuICAgIDxvbCBjbGFzc05hbWU9XCJzcGFjZS15LTQgbWQ6ZmxleCBtZDpzcGFjZS15LTAgbWQ6c3BhY2UteC04XCI+XG4gICAgICB7c3RlcHMubWFwKChzdGVwLCBpbmRleCkgPT4ge1xuICAgICAgICBjb25zdCBjb250ZW50ID0gKFxuICAgICAgICAgIDw+XG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2NuKCd0ZXh0LXNtIGZvbnQtbWVkaXVtJywgZ2V0U3RlcExhYmVsQ2xhc3NlcyhzdGVwLnN0YXR1cykpfT5cbiAgICAgICAgICAgICAge3N0ZXAuaWQgPz8gYFN0ZXAgJHtpbmRleCArIDF9YH1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtc20gZm9udC1tZWRpdW0gdGV4dC1mb3JlZ3JvdW5kIGRhcms6dGV4dC1mb3JlZ3JvdW5kLWRhcmtcIj57c3RlcC5sYWJlbH08L3NwYW4+XG4gICAgICAgICAgPC8+XG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGNsYXNzZXMgPSBjbignZ3JvdXAgZmxleCBmbGV4LWNvbCBib3JkZXItbC00IHB5LTIgcGwtNCBtZDpib3JkZXItdC00IG1kOmJvcmRlci1sLTAgbWQ6cHQtNCBtZDpwYi0wIG1kOnBsLTAnLCBnZXRTdGVwQ2xhc3NlcyhzdGVwLnN0YXR1cykpO1xuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgPGxpIGNsYXNzTmFtZT1cIm1kOmZsZXgtMVwiIGtleT17c3RlcC5pZCA/PyBzdGVwLmxhYmVsfT5cbiAgICAgICAgICAgIHtzdGVwLmhyZWYgPyAoXG4gICAgICAgICAgICAgIDxhIGFyaWEtY3VycmVudD17c3RlcC5zdGF0dXMgPT09ICdjdXJyZW50JyA/ICdzdGVwJyA6IHVuZGVmaW5lZH0gY2xhc3NOYW1lPXtjbGFzc2VzfSBocmVmPXtzdGVwLmhyZWZ9PlxuICAgICAgICAgICAgICAgIHtjb250ZW50fVxuICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICA8ZGl2IGFyaWEtY3VycmVudD17c3RlcC5zdGF0dXMgPT09ICdjdXJyZW50JyA/ICdzdGVwJyA6IHVuZGVmaW5lZH0gY2xhc3NOYW1lPXtjbGFzc2VzfT5cbiAgICAgICAgICAgICAgICB7Y29udGVudH1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvbGk+XG4gICAgICAgICk7XG4gICAgICB9KX1cbiAgICA8L29sPlxuICA8L25hdj5cbik7XG4iXSwibmFtZXMiOlsiY24iLCJnZXRTdGVwQ2xhc3NlcyIsInN0YXR1cyIsImdldFN0ZXBMYWJlbENsYXNzZXMiLCJQcm9ncmVzc1N0ZXBzIiwiYXJpYUxhYmVsIiwiY2xhc3NOYW1lIiwic3RlcHMiLCJwcm9wcyIsIm5hdiIsImFyaWEtbGFiZWwiLCJkYXRhLXNsb3QiLCJvbCIsIm1hcCIsInN0ZXAiLCJpbmRleCIsImNvbnRlbnQiLCJzcGFuIiwiaWQiLCJsYWJlbCIsImNsYXNzZXMiLCJsaSIsImhyZWYiLCJhIiwiYXJpYS1jdXJyZW50IiwidW5kZWZpbmVkIiwiZGl2Il0sIm1hcHBpbmdzIjoiO0FBQUEsU0FBUUEsRUFBRSxRQUFPLGVBQWU7QUFrQmhDLE1BQU1DLGlCQUFpQixDQUFDQztJQUN0QixJQUFHQSxXQUFXLFlBQVk7UUFDeEIsT0FBTztJQUNUO0lBRUEsSUFBR0EsV0FBVyxXQUFXO1FBQ3ZCLE9BQU87SUFDVDtJQUVBLE9BQU87QUFDVDtBQUVBLE1BQU1DLHNCQUFzQixDQUFDRCxTQUFnQ0EsV0FBVyxhQUNwRSw0SEFDQTtBQUVKLE9BQU8sTUFBTUUsZ0JBQWdCLENBQUMsRUFDNUJDLFlBQVksVUFBVSxFQUN0QkMsU0FBUyxFQUNUQyxLQUFLLEVBQ0wsR0FBR0MsT0FDZ0IsaUJBQ25CLEtBQUNDO1FBQUlDLGNBQVlMO1FBQVdDLFdBQVdBO1FBQVdLLGFBQVU7UUFBa0IsR0FBR0gsS0FBSztrQkFDcEYsY0FBQSxLQUFDSTtZQUFHTixXQUFVO3NCQUNYQyxNQUFNTSxHQUFHLENBQUMsQ0FBQ0MsTUFBTUM7Z0JBQ2hCLE1BQU1DLHdCQUNKOztzQ0FDRSxLQUFDQzs0QkFBS1gsV0FBV04sR0FBRyx1QkFBdUJHLG9CQUFvQlcsS0FBS1osTUFBTTtzQ0FDdkVZLEtBQUtJLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRUgsUUFBUSxHQUFHOztzQ0FFakMsS0FBQ0U7NEJBQUtYLFdBQVU7c0NBQWlFUSxLQUFLSyxLQUFLOzs7O2dCQUcvRixNQUFNQyxVQUFVcEIsR0FBRyxnR0FBZ0dDLGVBQWVhLEtBQUtaLE1BQU07Z0JBRTdJLHFCQUNFLEtBQUNtQjtvQkFBR2YsV0FBVTs4QkFDWFEsS0FBS1EsSUFBSSxpQkFDUixLQUFDQzt3QkFBRUMsZ0JBQWNWLEtBQUtaLE1BQU0sS0FBSyxZQUFZLFNBQVN1Qjt3QkFBV25CLFdBQVdjO3dCQUFTRSxNQUFNUixLQUFLUSxJQUFJO2tDQUNqR047dUNBR0gsS0FBQ1U7d0JBQUlGLGdCQUFjVixLQUFLWixNQUFNLEtBQUssWUFBWSxTQUFTdUI7d0JBQVduQixXQUFXYztrQ0FDM0VKOzttQkFQd0JGLEtBQUtJLEVBQUUsSUFBSUosS0FBS0ssS0FBSztZQVl4RDs7T0FHSiJ9
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { ProgressSteps } from './ProgressSteps.js';
|
|
2
|
+
const meta = {
|
|
3
|
+
component: ProgressSteps,
|
|
4
|
+
parameters: {
|
|
5
|
+
layout: 'padded'
|
|
6
|
+
},
|
|
7
|
+
title: 'Application UI/Navigation/ProgressSteps'
|
|
8
|
+
};
|
|
9
|
+
export default meta;
|
|
10
|
+
export const Default = {
|
|
11
|
+
args: {
|
|
12
|
+
steps: [
|
|
13
|
+
{
|
|
14
|
+
href: '#',
|
|
15
|
+
id: 'Step 1',
|
|
16
|
+
label: 'Job details',
|
|
17
|
+
status: 'complete'
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
href: '#',
|
|
21
|
+
id: 'Step 2',
|
|
22
|
+
label: 'Application form',
|
|
23
|
+
status: 'current'
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
href: '#',
|
|
27
|
+
id: 'Step 3',
|
|
28
|
+
label: 'Preview',
|
|
29
|
+
status: 'upcoming'
|
|
30
|
+
}
|
|
31
|
+
]
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L2dvdGhhbWpzL3NyYy9jb21wb25lbnRzL1Byb2dyZXNzU3RlcHMvUHJvZ3Jlc3NTdGVwcy5zdG9yaWVzLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1Byb2dyZXNzU3RlcHN9IGZyb20gJy4vUHJvZ3Jlc3NTdGVwcy5qcyc7XG5cbmltcG9ydCB0eXBlIHtNZXRhLCBTdG9yeU9ian0gZnJvbSAnQG5sYWJzL2xleC9zdG9yeWJvb2snO1xuXG5jb25zdCBtZXRhOiBNZXRhPHR5cGVvZiBQcm9ncmVzc1N0ZXBzPiA9IHtcbiAgY29tcG9uZW50OiBQcm9ncmVzc1N0ZXBzLFxuICBwYXJhbWV0ZXJzOiB7XG4gICAgbGF5b3V0OiAncGFkZGVkJ1xuICB9LFxuICB0aXRsZTogJ0FwcGxpY2F0aW9uIFVJL05hdmlnYXRpb24vUHJvZ3Jlc3NTdGVwcydcbn07XG5cbmV4cG9ydCBkZWZhdWx0IG1ldGE7XG5cbnR5cGUgU3RvcnkgPSBTdG9yeU9iajx0eXBlb2YgUHJvZ3Jlc3NTdGVwcz47XG5cbmV4cG9ydCBjb25zdCBEZWZhdWx0OiBTdG9yeSA9IHtcbiAgYXJnczoge1xuICAgIHN0ZXBzOiBbXG4gICAgICB7aHJlZjogJyMnLCBpZDogJ1N0ZXAgMScsIGxhYmVsOiAnSm9iIGRldGFpbHMnLCBzdGF0dXM6ICdjb21wbGV0ZSd9LFxuICAgICAge2hyZWY6ICcjJywgaWQ6ICdTdGVwIDInLCBsYWJlbDogJ0FwcGxpY2F0aW9uIGZvcm0nLCBzdGF0dXM6ICdjdXJyZW50J30sXG4gICAgICB7aHJlZjogJyMnLCBpZDogJ1N0ZXAgMycsIGxhYmVsOiAnUHJldmlldycsIHN0YXR1czogJ3VwY29taW5nJ31cbiAgICBdXG4gIH1cbn07XG4iXSwibmFtZXMiOlsiUHJvZ3Jlc3NTdGVwcyIsIm1ldGEiLCJjb21wb25lbnQiLCJwYXJhbWV0ZXJzIiwibGF5b3V0IiwidGl0bGUiLCJEZWZhdWx0IiwiYXJncyIsInN0ZXBzIiwiaHJlZiIsImlkIiwibGFiZWwiLCJzdGF0dXMiXSwibWFwcGluZ3MiOiJBQUFBLFNBQVFBLGFBQWEsUUFBTyxxQkFBcUI7QUFJakQsTUFBTUMsT0FBbUM7SUFDdkNDLFdBQVdGO0lBQ1hHLFlBQVk7UUFDVkMsUUFBUTtJQUNWO0lBQ0FDLE9BQU87QUFDVDtBQUVBLGVBQWVKLEtBQUs7QUFJcEIsT0FBTyxNQUFNSyxVQUFpQjtJQUM1QkMsTUFBTTtRQUNKQyxPQUFPO1lBQ0w7Z0JBQUNDLE1BQU07Z0JBQUtDLElBQUk7Z0JBQVVDLE9BQU87Z0JBQWVDLFFBQVE7WUFBVTtZQUNsRTtnQkFBQ0gsTUFBTTtnQkFBS0MsSUFBSTtnQkFBVUMsT0FBTztnQkFBb0JDLFFBQVE7WUFBUztZQUN0RTtnQkFBQ0gsTUFBTTtnQkFBS0MsSUFBSTtnQkFBVUMsT0FBTztnQkFBV0MsUUFBUTtZQUFVO1NBQy9EO0lBQ0g7QUFDRixFQUFFIn0=
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { type GothamColor } from '../../utils/colorUtils.js';
|
|
2
|
+
export interface RadioFieldItem {
|
|
3
|
+
readonly description?: string;
|
|
4
|
+
readonly id?: string;
|
|
5
|
+
readonly label: string;
|
|
6
|
+
readonly value: string;
|
|
7
|
+
}
|
|
8
|
+
export interface RadioFieldProps {
|
|
9
|
+
readonly color?: GothamColor;
|
|
10
|
+
readonly defaultValue?: string;
|
|
11
|
+
readonly label?: string;
|
|
12
|
+
readonly name: string;
|
|
13
|
+
readonly optionClass?: string;
|
|
14
|
+
readonly options: RadioFieldItem[];
|
|
15
|
+
}
|
|
16
|
+
export declare const RadioField: import("react").NamedExoticComponent<RadioFieldProps>;
|
|
@@ -0,0 +1,63 @@
|
|
|
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 RadioFieldComponent = ({ color = 'primary', defaultValue, label, name, optionClass = 'cursor-pointer relative size-4 appearance-none rounded-full border border-neutral/70 dark:border-neutral-dark/70 bg-white dark:bg-black before:absolute before:inset-1 before:rounded-full before:bg-white dark:before:bg-black not-checked:before:hidden focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-secondary disabled:border-black/40 dark:disabled:border-white/40 disabled:bg-white/50 dark:disabled:bg-black/50 disabled:before:bg-black/40 dark:disabled:before:bg-white/50 forced-colors:appearance-auto forced-colors:before:hidden', options })=>{
|
|
7
|
+
const form = useGothamFormField(name);
|
|
8
|
+
const [localValue, setLocalValue] = useState(defaultValue);
|
|
9
|
+
const optionClasses = useMemo(()=>cn(optionClass, getCheckedClasses(color)), [
|
|
10
|
+
color,
|
|
11
|
+
optionClass
|
|
12
|
+
]);
|
|
13
|
+
const currentValue = form?.value ?? localValue;
|
|
14
|
+
return /*#__PURE__*/ _jsx("fieldset", {
|
|
15
|
+
"aria-label": label,
|
|
16
|
+
children: /*#__PURE__*/ _jsx("div", {
|
|
17
|
+
className: "space-y-1",
|
|
18
|
+
children: options.map((option)=>/*#__PURE__*/ _jsxs("div", {
|
|
19
|
+
className: "flex items-start relative",
|
|
20
|
+
children: [
|
|
21
|
+
/*#__PURE__*/ _jsx("div", {
|
|
22
|
+
className: "flex h-6 items-center",
|
|
23
|
+
children: /*#__PURE__*/ _jsx("input", {
|
|
24
|
+
"aria-describedby": `${option.id || option.value}-description`,
|
|
25
|
+
checked: currentValue === option.value,
|
|
26
|
+
className: optionClasses,
|
|
27
|
+
id: option.id || option.value,
|
|
28
|
+
name: name,
|
|
29
|
+
onChange: ()=>{
|
|
30
|
+
if (!form) {
|
|
31
|
+
setLocalValue(option.value);
|
|
32
|
+
}
|
|
33
|
+
form?.setValue(name, option.value);
|
|
34
|
+
form?.clearError(name);
|
|
35
|
+
},
|
|
36
|
+
type: "radio",
|
|
37
|
+
value: option.value
|
|
38
|
+
})
|
|
39
|
+
}),
|
|
40
|
+
/*#__PURE__*/ _jsxs("div", {
|
|
41
|
+
className: "ml-3 text-sm/6",
|
|
42
|
+
children: [
|
|
43
|
+
option.label && /*#__PURE__*/ _jsx("label", {
|
|
44
|
+
className: "font-medium text-gray-900 dark:text-white",
|
|
45
|
+
htmlFor: option.id || option.value,
|
|
46
|
+
children: option.label
|
|
47
|
+
}),
|
|
48
|
+
option.description && /*#__PURE__*/ _jsx("p", {
|
|
49
|
+
className: "text-gray-500 dark:text-white",
|
|
50
|
+
id: `${option.id || option.value}-description`,
|
|
51
|
+
children: option.description
|
|
52
|
+
})
|
|
53
|
+
]
|
|
54
|
+
})
|
|
55
|
+
]
|
|
56
|
+
}, option.id || option.value))
|
|
57
|
+
})
|
|
58
|
+
});
|
|
59
|
+
};
|
|
60
|
+
export const RadioField = /*#__PURE__*/ memo(RadioFieldComponent);
|
|
61
|
+
RadioField.displayName = 'RadioField';
|
|
62
|
+
|
|
63
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L2dvdGhhbWpzL3NyYy9jb21wb25lbnRzL1JhZGlvRmllbGQvUmFkaW9GaWVsZC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtjbn0gZnJvbSAnQG5sYWJzL3V0aWxzJztcbmltcG9ydCB7bWVtbywgdXNlTWVtbywgdXNlU3RhdGV9IGZyb20gJ3JlYWN0JztcblxuaW1wb3J0IHtnZXRDaGVja2VkQ2xhc3NlcywgdHlwZSBHb3RoYW1Db2xvcn0gZnJvbSAnLi4vLi4vdXRpbHMvY29sb3JVdGlscy5qcyc7XG5pbXBvcnQge3VzZUdvdGhhbUZvcm1GaWVsZH0gZnJvbSAnLi4vRm9ybS9Gb3JtQ29udGV4dC5qcyc7XG5cbmltcG9ydCB0eXBlIHtGQ30gZnJvbSAncmVhY3QnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJhZGlvRmllbGRJdGVtIHtcbiAgcmVhZG9ubHkgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGlkPzogc3RyaW5nO1xuICByZWFkb25seSBsYWJlbDogc3RyaW5nO1xuICByZWFkb25seSB2YWx1ZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJhZGlvRmllbGRQcm9wcyB7XG4gIHJlYWRvbmx5IGNvbG9yPzogR290aGFtQ29sb3I7XG4gIHJlYWRvbmx5IGRlZmF1bHRWYWx1ZT86IHN0cmluZztcbiAgcmVhZG9ubHkgbGFiZWw/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgb3B0aW9uQ2xhc3M/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IG9wdGlvbnM6IFJhZGlvRmllbGRJdGVtW107XG59XG5cbmNvbnN0IFJhZGlvRmllbGRDb21wb25lbnQ6IEZDPFJhZGlvRmllbGRQcm9wcz4gPSAoe1xuICBjb2xvciA9ICdwcmltYXJ5JyxcbiAgZGVmYXVsdFZhbHVlLFxuICBsYWJlbCxcbiAgbmFtZSxcbiAgb3B0aW9uQ2xhc3MgPSAnY3Vyc29yLXBvaW50ZXIgcmVsYXRpdmUgc2l6ZS00IGFwcGVhcmFuY2Utbm9uZSByb3VuZGVkLWZ1bGwgYm9yZGVyIGJvcmRlci1uZXV0cmFsLzcwIGRhcms6Ym9yZGVyLW5ldXRyYWwtZGFyay83MCBiZy13aGl0ZSBkYXJrOmJnLWJsYWNrIGJlZm9yZTphYnNvbHV0ZSBiZWZvcmU6aW5zZXQtMSBiZWZvcmU6cm91bmRlZC1mdWxsIGJlZm9yZTpiZy13aGl0ZSBkYXJrOmJlZm9yZTpiZy1ibGFjayBub3QtY2hlY2tlZDpiZWZvcmU6aGlkZGVuIGZvY3VzLXZpc2libGU6b3V0bGluZS0yIGZvY3VzLXZpc2libGU6b3V0bGluZS1vZmZzZXQtMiBmb2N1cy12aXNpYmxlOm91dGxpbmUtc2Vjb25kYXJ5IGRpc2FibGVkOmJvcmRlci1ibGFjay80MCBkYXJrOmRpc2FibGVkOmJvcmRlci13aGl0ZS80MCBkaXNhYmxlZDpiZy13aGl0ZS81MCBkYXJrOmRpc2FibGVkOmJnLWJsYWNrLzUwIGRpc2FibGVkOmJlZm9yZTpiZy1ibGFjay80MCBkYXJrOmRpc2FibGVkOmJlZm9yZTpiZy13aGl0ZS81MCBmb3JjZWQtY29sb3JzOmFwcGVhcmFuY2UtYXV0byBmb3JjZWQtY29sb3JzOmJlZm9yZTpoaWRkZW4nLFxuICBvcHRpb25zXG59KSA9PiB7XG4gIGNvbnN0IGZvcm0gPSB1c2VHb3RoYW1Gb3JtRmllbGQobmFtZSk7XG4gIGNvbnN0IFtsb2NhbFZhbHVlLCBzZXRMb2NhbFZhbHVlXSA9IHVzZVN0YXRlKGRlZmF1bHRWYWx1ZSk7XG4gIGNvbnN0IG9wdGlvbkNsYXNzZXMgPSB1c2VNZW1vKFxuICAgICgpID0+IGNuKG9wdGlvbkNsYXNzLCBnZXRDaGVja2VkQ2xhc3Nlcyhjb2xvcikpLFxuICAgIFtjb2xvciwgb3B0aW9uQ2xhc3NdXG4gICk7XG4gIGNvbnN0IGN1cnJlbnRWYWx1ZSA9IGZvcm0/LnZhbHVlID8/IGxvY2FsVmFsdWU7XG4gIHJldHVybiAoXG4gICAgPGZpZWxkc2V0IGFyaWEtbGFiZWw9e2xhYmVsfT5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwic3BhY2UteS0xXCI+XG4gICAgICAgIHtvcHRpb25zLm1hcCgob3B0aW9uKSA9PiAoXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLXN0YXJ0IHJlbGF0aXZlXCIga2V5PXtvcHRpb24uaWQgfHwgb3B0aW9uLnZhbHVlfT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBoLTYgaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIGFyaWEtZGVzY3JpYmVkYnk9e2Ake29wdGlvbi5pZCB8fCBvcHRpb24udmFsdWV9LWRlc2NyaXB0aW9uYH1cbiAgICAgICAgICAgICAgICBjaGVja2VkPXtjdXJyZW50VmFsdWUgPT09IG9wdGlvbi52YWx1ZX1cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e29wdGlvbkNsYXNzZXN9XG4gICAgICAgICAgICAgICAgaWQ9e29wdGlvbi5pZCB8fCBvcHRpb24udmFsdWV9XG4gICAgICAgICAgICAgICAgbmFtZT17bmFtZX1cbiAgICAgICAgICAgICAgICBvbkNoYW5nZT17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgaWYoIWZvcm0pIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0TG9jYWxWYWx1ZShvcHRpb24udmFsdWUpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgZm9ybT8uc2V0VmFsdWUobmFtZSwgb3B0aW9uLnZhbHVlKTtcbiAgICAgICAgICAgICAgICAgIGZvcm0/LmNsZWFyRXJyb3IobmFtZSk7XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICB0eXBlPVwicmFkaW9cIlxuICAgICAgICAgICAgICAgIHZhbHVlPXtvcHRpb24udmFsdWV9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibWwtMyB0ZXh0LXNtLzZcIj5cbiAgICAgICAgICAgICAge29wdGlvbi5sYWJlbCAmJiAoXG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzTmFtZT1cImZvbnQtbWVkaXVtIHRleHQtZ3JheS05MDAgZGFyazp0ZXh0LXdoaXRlXCIgaHRtbEZvcj17b3B0aW9uLmlkIHx8IG9wdGlvbi52YWx1ZX0+XG4gICAgICAgICAgICAgICAgICB7b3B0aW9uLmxhYmVsfVxuICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIHtvcHRpb24uZGVzY3JpcHRpb24gJiYgKFxuICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtZ3JheS01MDAgZGFyazp0ZXh0LXdoaXRlXCIgaWQ9e2Ake29wdGlvbi5pZCB8fCBvcHRpb24udmFsdWV9LWRlc2NyaXB0aW9uYH0+XG4gICAgICAgICAgICAgICAgICB7b3B0aW9uLmRlc2NyaXB0aW9ufVxuICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICApKX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZmllbGRzZXQ+XG4gICk7XG59O1xuXG5leHBvcnQgY29uc3QgUmFkaW9GaWVsZCA9IG1lbW8oUmFkaW9GaWVsZENvbXBvbmVudCk7XG5SYWRpb0ZpZWxkLmRpc3BsYXlOYW1lID0gJ1JhZGlvRmllbGQnO1xuIl0sIm5hbWVzIjpbImNuIiwibWVtbyIsInVzZU1lbW8iLCJ1c2VTdGF0ZSIsImdldENoZWNrZWRDbGFzc2VzIiwidXNlR290aGFtRm9ybUZpZWxkIiwiUmFkaW9GaWVsZENvbXBvbmVudCIsImNvbG9yIiwiZGVmYXVsdFZhbHVlIiwibGFiZWwiLCJuYW1lIiwib3B0aW9uQ2xhc3MiLCJvcHRpb25zIiwiZm9ybSIsImxvY2FsVmFsdWUiLCJzZXRMb2NhbFZhbHVlIiwib3B0aW9uQ2xhc3NlcyIsImN1cnJlbnRWYWx1ZSIsInZhbHVlIiwiZmllbGRzZXQiLCJhcmlhLWxhYmVsIiwiZGl2IiwiY2xhc3NOYW1lIiwibWFwIiwib3B0aW9uIiwiaW5wdXQiLCJhcmlhLWRlc2NyaWJlZGJ5IiwiaWQiLCJjaGVja2VkIiwib25DaGFuZ2UiLCJzZXRWYWx1ZSIsImNsZWFyRXJyb3IiLCJ0eXBlIiwiaHRtbEZvciIsImRlc2NyaXB0aW9uIiwicCIsIlJhZGlvRmllbGQiLCJkaXNwbGF5TmFtZSJdLCJtYXBwaW5ncyI6IjtBQUFBLFNBQVFBLEVBQUUsUUFBTyxlQUFlO0FBQ2hDLFNBQVFDLElBQUksRUFBRUMsT0FBTyxFQUFFQyxRQUFRLFFBQU8sUUFBUTtBQUU5QyxTQUFRQyxpQkFBaUIsUUFBeUIsNEJBQTRCO0FBQzlFLFNBQVFDLGtCQUFrQixRQUFPLHlCQUF5QjtBQW9CMUQsTUFBTUMsc0JBQTJDLENBQUMsRUFDaERDLFFBQVEsU0FBUyxFQUNqQkMsWUFBWSxFQUNaQyxLQUFLLEVBQ0xDLElBQUksRUFDSkMsY0FBYywraUJBQStpQixFQUM3akJDLE9BQU8sRUFDUjtJQUNDLE1BQU1DLE9BQU9SLG1CQUFtQks7SUFDaEMsTUFBTSxDQUFDSSxZQUFZQyxjQUFjLEdBQUdaLFNBQVNLO0lBQzdDLE1BQU1RLGdCQUFnQmQsUUFDcEIsSUFBTUYsR0FBR1csYUFBYVAsa0JBQWtCRyxTQUN4QztRQUFDQTtRQUFPSTtLQUFZO0lBRXRCLE1BQU1NLGVBQWVKLE1BQU1LLFNBQVNKO0lBQ3BDLHFCQUNFLEtBQUNLO1FBQVNDLGNBQVlYO2tCQUNwQixjQUFBLEtBQUNZO1lBQUlDLFdBQVU7c0JBQ1pWLFFBQVFXLEdBQUcsQ0FBQyxDQUFDQyx1QkFDWixNQUFDSDtvQkFBSUMsV0FBVTs7c0NBQ2IsS0FBQ0Q7NEJBQUlDLFdBQVU7c0NBQ2IsY0FBQSxLQUFDRztnQ0FDQ0Msb0JBQWtCLEdBQUdGLE9BQU9HLEVBQUUsSUFBSUgsT0FBT04sS0FBSyxDQUFDLFlBQVksQ0FBQztnQ0FDNURVLFNBQVNYLGlCQUFpQk8sT0FBT04sS0FBSztnQ0FDdENJLFdBQVdOO2dDQUNYVyxJQUFJSCxPQUFPRyxFQUFFLElBQUlILE9BQU9OLEtBQUs7Z0NBQzdCUixNQUFNQTtnQ0FDTm1CLFVBQVU7b0NBQ1IsSUFBRyxDQUFDaEIsTUFBTTt3Q0FDUkUsY0FBY1MsT0FBT04sS0FBSztvQ0FDNUI7b0NBQ0FMLE1BQU1pQixTQUFTcEIsTUFBTWMsT0FBT04sS0FBSztvQ0FDakNMLE1BQU1rQixXQUFXckI7Z0NBQ25CO2dDQUNBc0IsTUFBSztnQ0FDTGQsT0FBT00sT0FBT04sS0FBSzs7O3NDQUd2QixNQUFDRzs0QkFBSUMsV0FBVTs7Z0NBQ1pFLE9BQU9mLEtBQUssa0JBQ1gsS0FBQ0E7b0NBQU1hLFdBQVU7b0NBQTRDVyxTQUFTVCxPQUFPRyxFQUFFLElBQUlILE9BQU9OLEtBQUs7OENBQzVGTSxPQUFPZixLQUFLOztnQ0FHaEJlLE9BQU9VLFdBQVcsa0JBQ2pCLEtBQUNDO29DQUFFYixXQUFVO29DQUFnQ0ssSUFBSSxHQUFHSCxPQUFPRyxFQUFFLElBQUlILE9BQU9OLEtBQUssQ0FBQyxZQUFZLENBQUM7OENBQ3hGTSxPQUFPVSxXQUFXOzs7OzttQkEzQnFCVixPQUFPRyxFQUFFLElBQUlILE9BQU9OLEtBQUs7OztBQW9DbkY7QUFFQSxPQUFPLE1BQU1rQiwyQkFBYW5DLEtBQUtLLHFCQUFxQjtBQUNwRDhCLFdBQVdDLFdBQVcsR0FBRyJ9
|