From 75e9e36d6a8bf707a89f2dc93e7fca57d886c279 Mon Sep 17 00:00:00 2001 From: sra1kumar-NULL Date: Fri, 11 Oct 2024 14:02:52 +0530 Subject: [PATCH 1/5] feat: added new code block nw comp --- .../images/codeblock/assets/andriod-frame.svg | 25 + .../images/codeblock/assets/android-frame.png | Bin 0 -> 51110 bytes .../images/codeblock/assets/iphone-frame.png | Bin 0 -> 189949 bytes .../images/codeblock/assets/iphone-frame.svg | 339 ++++++++ .../src/components/Checkbox/Wrapper.tsx | 48 ++ .../src/composites/Actionsheet/index.tsx | 34 + .../styled-components/Backdrop.tsx | 31 + .../Actionsheet/styled-components/Content.tsx | 21 + .../styled-components/DragIndicator.tsx | 16 + .../styled-components/FlatList.tsx | 11 + .../Actionsheet/styled-components/Icon.tsx | 20 + .../styled-components/IndicatorWrapper.tsx | 13 + .../Actionsheet/styled-components/Item.tsx | 53 ++ .../styled-components/ItemText.tsx | 16 + .../Actionsheet/styled-components/Root.tsx | 13 + .../styled-components/ScrollView.tsx | 11 + .../styled-components/SectionHeaderText.tsx | 19 + .../styled-components/SectionList.tsx | 11 + .../styled-components/VirtualizedList.tsx | 11 + .../Actionsheet/styled-components/index.tsx | 13 + .../src/composites/Alert/index.tsx | 7 + .../Alert/styled-components/Icon.tsx | 43 + .../Alert/styled-components/Root.tsx | 103 +++ .../Alert/styled-components/Text.tsx | 18 + .../Alert/styled-components/index.tsx | 3 + .../src/composites/AlertDialog/index.tsx | 18 + .../styled-components/Backdrop.tsx | 16 + .../AlertDialog/styled-components/Body.tsx | 10 + .../styled-components/CloseButton.tsx | 42 + .../AlertDialog/styled-components/Content.tsx | 27 + .../AlertDialog/styled-components/Footer.tsx | 21 + .../AlertDialog/styled-components/Header.tsx | 18 + .../AlertDialog/styled-components/Root.tsx | 18 + .../src/composites/Avatar/index.tsx | 14 + .../Avatar/styled-components/Badge.tsx | 18 + .../Avatar/styled-components/FallbackText.tsx | 15 + .../Avatar/styled-components/Group.tsx | 11 + .../Avatar/styled-components/Image.tsx | 13 + .../Avatar/styled-components/Root.tsx | 112 +++ .../src/composites/Badge/index.tsx | 20 + .../Badge/styled-components/Icon.tsx | 4 + .../Badge/styled-components/Root.tsx | 324 ++++++++ .../Badge/styled-components/Text.tsx | 13 + .../src/composites/Center/index.tsx | 3 + .../Center/styled-components/Root.tsx | 46 ++ .../src/composites/Divider/index.tsx | 6 + .../Divider/styled-components/Root.tsx | 32 + .../src/composites/Fab/index.tsx | 6 + .../composites/Fab/styled-components/Icon.tsx | 42 + .../Fab/styled-components/Label.tsx | 11 + .../composites/Fab/styled-components/Root.tsx | 56 ++ .../src/composites/FormControl/index.tsx | 22 + .../FormControl/styled-components/Error.tsx | 13 + .../styled-components/ErrorIcon.tsx | 4 + .../styled-components/ErrorText.tsx | 16 + .../FormControl/styled-components/Helper.tsx | 13 + .../styled-components/HelperText.tsx | 15 + .../FormControl/styled-components/Label.tsx | 13 + .../styled-components/LabelAstrick.tsx | 14 + .../styled-components/LabelText.tsx | 16 + .../FormControl/styled-components/Root.tsx | 11 + .../composites/GluestackUIProvider/index.tsx | 7 + .../src/composites/Menu/config.json | 4 + .../src/composites/Menu/index.tsx | 12 + .../Menu/styled-components/Backdrop.tsx | 15 + .../Menu/styled-components/Item.tsx | 47 ++ .../Menu/styled-components/Item.web.tsx | 45 + .../Menu/styled-components/ItemLabel.tsx | 4 + .../Menu/styled-components/Root.tsx | 33 + .../Menu/styled-components/index.tsx | 4 + .../src/composites/Modal/index.tsx | 18 + .../Modal/styled-components/Backdrop.tsx | 16 + .../Modal/styled-components/Body.tsx | 10 + .../Modal/styled-components/CloseButton.tsx | 39 + .../Modal/styled-components/Content.tsx | 29 + .../Modal/styled-components/Footer.tsx | 21 + .../Modal/styled-components/Header.tsx | 18 + .../Modal/styled-components/Root.tsx | 18 + .../src/composites/Popover/index.tsx | 20 + .../Popover/styled-components/Arrow.tsx | 4 + .../Popover/styled-components/Backdrop.tsx | 16 + .../Popover/styled-components/Body.tsx | 10 + .../Popover/styled-components/CloseButton.tsx | 39 + .../Popover/styled-components/Content.tsx | 28 + .../Popover/styled-components/Footer.tsx | 21 + .../Popover/styled-components/Header.tsx | 18 + .../Popover/styled-components/Root.tsx | 11 + .../src/composites/Progress/index.tsx | 8 + .../styled-components/FilledTrack.tsx | 16 + .../Progress/styled-components/Root.tsx | 17 + .../src/composites/Provider/index.tsx | 4 + .../src/composites/Table/index.tsx | 33 + .../Table/styled-components/TBody.tsx | 4 + .../composites/Table/styled-components/TD.tsx | 12 + .../Table/styled-components/TFoot.tsx | 4 + .../composites/Table/styled-components/TH.tsx | 21 + .../Table/styled-components/THead.tsx | 13 + .../composites/Table/styled-components/TR.tsx | 26 + .../Table/styled-components/Text.tsx | 86 ++ .../Table/styled-components/index.tsx | 40 + .../src/composites/Tabs/index.tsx | 18 + .../Tabs/styled-components/Root.tsx | 45 + .../composites/Tabs/styled-components/Tab.tsx | 66 ++ .../Tabs/styled-components/TabIcon.tsx | 42 + .../Tabs/styled-components/TabList.tsx | 10 + .../Tabs/styled-components/TabPanel.tsx | 4 + .../Tabs/styled-components/TabPanels.tsx | 4 + .../Tabs/styled-components/TabTitle.tsx | 16 + .../src/composites/Toast/index.tsx | 12 + .../Toast/styled-components/Description.tsx | 30 + .../Toast/styled-components/Root.tsx | 35 + .../Toast/styled-components/Title.tsx | 30 + .../src/composites/Tooltip/index.tsx | 10 + .../Tooltip/styled-components/Arrow.tsx | 16 + .../Tooltip/styled-components/Content.tsx | 21 + .../Tooltip/styled-components/Root.tsx | 4 + .../src/composites/Transitions/index.tsx | 2 + .../design-system/src/composites/index.ts | 18 + .../src/composites/styled/index.tsx | 3 + .../core/AppProvider/GluestackUIProvider.tsx | 26 + .../src/core/AppProvider/config.ts | 753 +++++++++++++++++ .../src/core/AppProvider/config_old.ts | 753 +++++++++++++++++ .../src/core/AppProvider/index.tsx | 29 + .../Checkbox/design-system/src/core/index.ts | 1 + .../src/custom/BlockQuote/index.tsx | 5 + .../design-system/src/custom/Blog/index.tsx | 168 ++++ .../src/custom/Breadcrumbs/index.tsx | 58 ++ .../design-system/src/custom/Code/index.tsx | 6 + .../src/custom/CodeBlock/CodeBlock.tsx | 179 ++++ .../src/custom/CodeBlock/CodeBlockTab.tsx | 27 + .../src/custom/CodeBlock/CodeBlockTabList.tsx | 12 + .../custom/CodeBlock/CodeBlockTabPanel.tsx | 30 + .../src/custom/CodeBlock/CodeBlockTabs.tsx | 12 + .../src/custom/CodeBlock/index.tsx | 13 + .../src/custom/CodeBlock/terminalTheme.ts | 117 +++ .../src/custom/CodeBlock/theme.ts | 67 ++ .../src/custom/CodePreview/ArgsController.tsx | 62 ++ .../src/custom/CodePreview/CodePreview.tsx | 179 ++++ .../CodePreview/CodePreviewProvider.tsx | 11 + .../custom/CodePreview/ComponentRenderer.tsx | 98 +++ .../CodePreview/controls/InputControl.tsx | 62 ++ .../CodePreview/controls/SelectControl.tsx | 117 +++ .../CodePreview/controls/SwitchControl.tsx | 50 ++ .../src/custom/CodePreview/controls/index.tsx | 3 + .../src/custom/CodePreview/index.tsx | 5 + .../CodePreviewWithTabs.tsx | 119 +++ .../src/custom/CodePreviewWithTabs/index.tsx | 1 + .../src/custom/CollapsibleCode/index.tsx | 19 + .../src/custom/Community/index.tsx | 114 +++ .../src/custom/ComponentIntro/index.tsx | 110 +++ .../src/custom/Ecosystem/index.tsx | 236 ++++++ .../src/custom/EditPageOnGithubLink/index.tsx | 56 ++ .../design-system/src/custom/Flyout/index.tsx | 228 ++++++ .../design-system/src/custom/H1/index.tsx | 5 + .../design-system/src/custom/H2/index.tsx | 7 + .../design-system/src/custom/H3/index.tsx | 8 + .../design-system/src/custom/H4/index.tsx | 7 + .../design-system/src/custom/H5/index.tsx | 7 + .../src/custom/HeadingTabs/index.tsx | 132 +++ .../src/custom/Hoverable/index.tsx | 82 ++ .../src/custom/InlineCode/index.tsx | 6 + .../design-system/src/custom/LI/index.tsx | 99 +++ .../src/custom/Layout/Layout.tsx | 303 +++++++ .../src/custom/Layout/LayoutContent.tsx | 5 + .../src/custom/Layout/LayoutContext.ts | 34 + .../src/custom/Layout/LayoutFooter.tsx | 5 + .../src/custom/Layout/LayoutHeader.tsx | 227 ++++++ .../src/custom/Layout/LayoutSidebar.tsx | 406 +++++++++ .../src/custom/Layout/ResponsiveSidebar.tsx | 363 +++++++++ .../design-system/src/custom/Layout/index.tsx | 31 + .../src/custom/LogoTag/index.tsx | 43 + .../src/custom/MeetCreators/icons.tsx | 66 ++ .../src/custom/MeetCreators/index.tsx | 110 +++ .../design-system/src/custom/Nav/index.tsx | 5 + .../src/custom/Newsletter/images.tsx | 37 + .../src/custom/Newsletter/index.tsx | 329 ++++++++ .../design-system/src/custom/OL/index.tsx | 22 + .../src/custom/PrevNextButtons/LinkButton.tsx | 124 +++ .../src/custom/PrevNextButtons/index.tsx | 89 ++ .../custom/Sidebar/SideBarGroupItemTag.tsx | 5 + .../Sidebar/SideBarGroupItemTagText.tsx | 5 + .../custom/Sidebar/SideBarGroupItemText.tsx | 5 + .../src/custom/Sidebar/Sidebar.tsx | 5 + .../src/custom/Sidebar/SidebarGroup.tsx | 5 + .../src/custom/Sidebar/SidebarGroupHeader.tsx | 5 + .../src/custom/Sidebar/SidebarGroupItem.tsx | 6 + .../Sidebar/SidebarGroupItemContent.tsx | 5 + .../src/custom/Sidebar/index.tsx | 54 ++ .../src/custom/StyledSvg/index.tsx | 25 + .../design-system/src/custom/UL/index.tsx | 5 + .../design-system/src/custom/index.ts | 27 + .../src/gluestack-style.config.ts | 686 ++++++++++++++++ .../Checkbox/design-system/src/hooks/index.ts | 3 + .../design-system/src/hooks/useClipboard.ts | 19 + .../Checkbox/design-system/src/index.ts | 95 +++ .../src/primitives/Box/index.tsx | 2 + .../primitives/Box/styled-components/Root.tsx | 10 + .../src/primitives/Button/index.tsx | 17 + .../Button/styled-components/Group.tsx | 19 + .../Button/styled-components/GroupSpacer.tsx | 21 + .../Button/styled-components/Icon.tsx | 42 + .../Button/styled-components/Root.tsx | 119 +++ .../Button/styled-components/Spinner.tsx | 8 + .../Button/styled-components/Text.tsx | 10 + .../src/primitives/Checkbox/index.tsx | 14 + .../Checkbox/styled-components/Group.tsx | 4 + .../Checkbox/styled-components/Icon.tsx | 27 + .../Checkbox/styled-components/Indicator.tsx | 48 ++ .../Checkbox/styled-components/Label.tsx | 27 + .../Checkbox/styled-components/Root.tsx | 80 ++ .../Checkbox/styled-components/Root.web.tsx | 79 ++ .../src/primitives/HStack/index.tsx | 6 + .../HStack/styled-components/Root.tsx | 48 ++ .../HStack/styled-components/Spacer.tsx | 40 + .../src/primitives/Heading/index.tsx | 3 + .../Heading/styled-components/Root.tsx | 59 ++ .../src/primitives/Icon/Icons/Add.tsx | 12 + .../src/primitives/Icon/Icons/Arrow.tsx | 85 ++ .../src/primitives/Icon/Icons/Bounce.tsx | 12 + .../src/primitives/Icon/Icons/Check.tsx | 19 + .../src/primitives/Icon/Icons/Chevron.tsx | 34 + .../src/primitives/Icon/Icons/Circle.tsx | 12 + .../src/primitives/Icon/Icons/Close.tsx | 44 + .../src/primitives/Icon/Icons/CodeBlock.tsx | 12 + .../src/primitives/Icon/Icons/ColorLine.tsx | 12 + .../primitives/Icon/Icons/ColorPalette.tsx | 12 + .../src/primitives/Icon/Icons/Copy.tsx | 31 + .../src/primitives/Icon/Icons/DarkTheme.tsx | 12 + .../src/primitives/Icon/Icons/Delete.tsx | 7 + .../src/primitives/Icon/Icons/Dismiss.tsx | 12 + .../src/primitives/Icon/Icons/Download.tsx | 19 + .../src/primitives/Icon/Icons/Earth.tsx | 12 + .../src/primitives/Icon/Icons/Expo.tsx | 12 + .../src/primitives/Icon/Icons/Favourite.tsx | 7 + .../src/primitives/Icon/Icons/Gentle.tsx | 12 + .../src/primitives/Icon/Icons/Globe.tsx | 12 + .../src/primitives/Icon/Icons/Grid.tsx | 12 + .../src/primitives/Icon/Icons/Hamburger.tsx | 33 + .../src/primitives/Icon/Icons/Info.tsx | 25 + .../src/primitives/Icon/Icons/Minus.tsx | 7 + .../src/primitives/Icon/Icons/Moon.tsx | 7 + .../Icon/Icons/NavigationUnread.tsx | 12 + .../src/primitives/Icon/Icons/Open.tsx | 19 + .../src/primitives/Icon/Icons/Options.tsx | 12 + .../src/primitives/Icon/Icons/Play.tsx | 7 + .../src/primitives/Icon/Icons/Question.tsx | 15 + .../src/primitives/Icon/Icons/Quick.tsx | 12 + .../src/primitives/Icon/Icons/Resize.tsx | 12 + .../src/primitives/Icon/Icons/Responsive.tsx | 12 + .../src/primitives/Icon/Icons/ScaleFill.tsx | 12 + .../src/primitives/Icon/Icons/Search.tsx | 9 + .../src/primitives/Icon/Icons/Share.tsx | 7 + .../src/primitives/Icon/Icons/Social.tsx | 26 + .../src/primitives/Icon/Icons/Sun.tsx | 22 + .../src/primitives/Icon/Icons/ThreeDots.tsx | 14 + .../src/primitives/Icon/Icons/Ticket.tsx | 12 + .../src/primitives/Icon/Icons/TypeScript.tsx | 28 + .../src/primitives/Icon/Icons/Warning.tsx | 23 + .../primitives/Icon/Icons/WarningOutline.tsx | 7 + .../src/primitives/Icon/Icons/WeatherMoon.tsx | 12 + .../primitives/Icon/Icons/WindowHeader.tsx | 12 + .../src/primitives/Icon/Icons/index.tsx | 45 + .../Icon/Icons/questionIconPath.tsx | 9 + .../src/primitives/Icon/index.tsx | 20 + .../Icon/styled-components/Root.tsx | 29 + .../src/primitives/Image/index.tsx | 3 + .../Image/styled-components/FallbackText.tsx | 12 + .../Image/styled-components/Root.tsx | 69 ++ .../src/primitives/Input/index.tsx | 10 + .../Input/styled-components/Icon.tsx | 10 + .../Input/styled-components/Input.tsx | 17 + .../Input/styled-components/Root.tsx | 154 ++++ .../src/primitives/Link/index.tsx | 7 + .../Link/styled-components/Root.tsx | 49 ++ .../Link/styled-components/Text.tsx | 90 ++ .../Link/styled-components/index.tsx | 2 + .../src/primitives/Pressable/index.tsx | 4 + .../Pressable/styled-components/Root.tsx | 22 + .../src/primitives/Radio/index.tsx | 14 + .../Radio/styled-components/Group.tsx | 4 + .../Radio/styled-components/Icon.tsx | 38 + .../Radio/styled-components/Indicator.tsx | 103 +++ .../Radio/styled-components/Label.tsx | 17 + .../Radio/styled-components/Root.tsx | 75 ++ .../Radio/styled-components/Root.web.tsx | 77 ++ .../src/primitives/Select/index.tsx | 66 ++ .../Backdrop.tsx | 31 + .../styled-components-actionsheet/Content.tsx | 31 + .../DragIndicator.tsx | 16 + .../FlatList.tsx | 11 + .../styled-components-actionsheet/Icon.tsx | 20 + .../IndicatorWrapper.tsx | 13 + .../styled-components-actionsheet/Item.tsx | 56 ++ .../ItemText.tsx | 16 + .../styled-components-actionsheet/Root.tsx | 13 + .../ScrollView.tsx | 11 + .../SectionHeaderText.tsx | 19 + .../SectionList.tsx | 11 + .../VirtualizedList.tsx | 11 + .../styled-components-actionsheet/index.tsx | 13 + .../Select/styled-components/Icon.tsx | 13 + .../Select/styled-components/Input.tsx | 25 + .../Select/styled-components/Root.tsx | 4 + .../Select/styled-components/Trigger.tsx | 318 ++++++++ .../Select/styled-components/index.tsx | 4 + .../src/primitives/Slider/index.tsx | 14 + .../Slider/styled-components/FilledTrack.tsx | 15 + .../Slider/styled-components/Root.tsx | 24 + .../Slider/styled-components/Thumb.tsx | 58 ++ .../styled-components/ThumbInteraction.tsx | 12 + .../Slider/styled-components/Track.tsx | 21 + .../src/primitives/Spinner/index.tsx | 6 + .../Spinner/styled-components/Root.tsx | 10 + .../src/primitives/Switch/index.tsx | 6 + .../Switch/styled-components/Root.tsx | 54 ++ .../src/primitives/Text/index.tsx | 3 + .../Text/styled-components/Root.tsx | 88 ++ .../src/primitives/TextArea/index.tsx | 9 + .../TextArea/styled-components/Input.tsx | 19 + .../TextArea/styled-components/Root.tsx | 153 ++++ .../src/primitives/VStack/index.tsx | 6 + .../VStack/styled-components/Root.tsx | 48 ++ .../VStack/styled-components/Spacer.tsx | 36 + .../design-system/src/primitives/index.ts | 19 + .../StyledActionsheetBackdrop.tsx | 16 + .../StyledActionsheetContent.tsx | 19 + .../StyledActionsheetDragIndicator.tsx | 13 + .../StyledActionsheetIndicatorWrapper.tsx | 13 + .../StyledActionsheetItem.tsx | 43 + .../StyledActionsheetItemText.tsx | 12 + .../StyledActionsheet/index.tsx | 13 + .../StyledAlert/StyledAlertIcon.tsx | 13 + .../StyledAlert/StyledAlertText.tsx | 16 + .../styled-components/StyledAlert/index.tsx | 466 +++++++++++ .../StyledAlertDialogBackdrop.tsx | 16 + .../StyledAlertDialogBody.tsx | 10 + .../StyledAlertDialogCloseButton.tsx | 42 + .../StyledAlertDialogContent.tsx | 29 + .../StyledAlertDialogFooter.tsx | 21 + .../StyledAlertDialogHeader.tsx | 18 + .../StyledAlertDialog/index.tsx | 18 + .../StyledAvatar/StyledAvatarBadge.tsx | 18 + .../StyledAvatar/StyledAvatarFallbackText.tsx | 15 + .../StyledAvatar/StyledAvatarGroup.tsx | 11 + .../StyledAvatar/StyledAvatarImage.tsx | 13 + .../styled-components/StyledAvatar/index.tsx | 112 +++ .../StyledBadge/StyledBadgeIcon.tsx | 4 + .../StyledBadge/StyledBadgeText.tsx | 13 + .../styled-components/StyledBadge/index.tsx | 324 ++++++++ .../StyledBlockQuote/index.tsx | 30 + .../src/styled-components/StyledBox/index.tsx | 10 + .../styled-components/StyledBoxText/index.tsx | 12 + .../StyledButton/StyledButtonGroup.tsx | 19 + .../StyledButton/StyledButtonGroupSpacer.tsx | 21 + .../StyledButton/StyledButtonSpinner.tsx | 8 + .../StyledButton/StyledButtonText.tsx | 10 + .../styled-components/StyledButton/index.tsx | 118 +++ .../styled-components/StyledCenter/index.tsx | 46 ++ .../StyledCheckbox/StyledCheckboxGroup.tsx | 4 + .../StyledCheckbox/StyledCheckboxIcon.tsx | 28 + .../StyledCheckboxIndicator.tsx | 48 ++ .../StyledCheckbox/StyledCheckboxLabel.tsx | 27 + .../StyledCheckbox/index.tsx | 79 ++ .../StyledCheckbox/index.web.tsx | 79 ++ .../styled-components/StyledDivider/index.tsx | 32 + .../StyledFab/StyledFabLabel.tsx | 11 + .../src/styled-components/StyledFab/index.tsx | 56 ++ .../StyledFormControlBox.tsx | 11 + .../StyledFormControlError.tsx | 13 + .../StyledFormControlErrorIcon.tsx | 4 + .../StyledFormControlErrorText.tsx | 16 + .../StyledFormControlHelper.tsx | 13 + .../StyledFormControlHelperText.tsx | 15 + .../StyledFormControlLabel.tsx | 13 + .../StyledFormControlLabelAstrick.tsx | 13 + .../StyledFormControlLabelText.tsx | 16 + .../src/styled-components/StyledH1/index.tsx | 18 + .../src/styled-components/StyledH2/index.tsx | 17 + .../src/styled-components/StyledH3/index.tsx | 18 + .../src/styled-components/StyledH4/index.tsx | 18 + .../src/styled-components/StyledH5/index.tsx | 18 + .../styled-components/StyledHStack/index.tsx | 14 + .../StyledHStackSpacer/index.tsx | 39 + .../styled-components/StyledHeading/index.tsx | 60 ++ .../styled-components/StyledIcon/index.tsx | 31 + .../StyledIconButtonSpinner.tsx | 14 + .../StyledIconButton/StyledIconButtonText.tsx | 10 + .../StyledIconButton/index.tsx | 60 ++ .../StyledImage/StyledImageFallbackText.tsx | 12 + .../styled-components/StyledImage/index.tsx | 69 ++ .../StyledInlineCode/index.tsx | 22 + .../StyledInput/InputIcon.tsx | 10 + .../StyledInput/InputRoot.tsx | 150 ++++ .../styled-components/StyledInput/index.tsx | 17 + .../src/styled-components/StyledLI/index.tsx | 23 + .../styled-components/StyledLayout/index.tsx | 21 + .../StyledLinearGradient/index.tsx | 10 + .../styled-components/StyledLink/index.tsx | 4 + .../StyledLink/index.web.tsx | 4 + .../StyledMenu/StyledMenuBackdrop.tsx | 14 + .../StyledMenu/StyledMenuContent.tsx | 28 + .../StyledMenu/StyledMenuGroup.tsx | 4 + .../StyledMenu/StyledMenuGroupTitle.tsx | 4 + .../StyledMenu/StyledMenuItem.tsx | 49 ++ .../StyledMenu/StyledMenuItemOption.tsx | 10 + .../StyledMenuItemOptionIndicator.tsx | 4 + .../StyledMenu/StyledMenuItemOptionLabel.tsx | 10 + .../StyledMenu/StyledMenuOptionsGroup.tsx | 4 + .../StyledMenu/StyledMenuTrigger.tsx | 4 + .../styled-components/StyledMenu/index.tsx | 11 + .../StyledModal/StyledModalBackdrop.tsx | 16 + .../StyledModal/StyledModalBody.tsx | 10 + .../StyledModal/StyledModalCloseButton.tsx | 39 + .../StyledModal/StyledModalContent.tsx | 29 + .../StyledModal/StyledModalFooter.tsx | 21 + .../StyledModal/StyledModalHeader.tsx | 18 + .../styled-components/StyledModal/index.tsx | 18 + .../src/styled-components/StyledNav/index.tsx | 4 + .../styled-components/StyledOverlay/index.tsx | 4 + .../StyledPopover/StyledPopover.tsx | 11 + .../StyledPopover/StyledPopoverArrow.tsx | 4 + .../StyledPopover/StyledPopoverBackdrop.tsx | 16 + .../StyledPopover/StyledPopoverBody.tsx | 10 + .../StyledPopoverCloseButton.tsx | 39 + .../StyledPopover/StyledPopoverContent.tsx | 26 + .../StyledPopover/StyledPopoverFooter.tsx | 21 + .../StyledPopover/StyledPopoverHeader.tsx | 18 + .../StyledPressable/index.tsx | 22 + .../StyledProgressFilledTrack.tsx | 16 + .../StyledProgress/index.tsx | 17 + .../StyledRadio/StyledRadioGroup.tsx | 4 + .../StyledRadio/StyledRadioIcon.tsx | 16 + .../StyledRadio/StyledRadioIndicator.tsx | 103 +++ .../StyledRadio/StyledRadioLabel.tsx | 17 + .../styled-components/StyledRadio/index.tsx | 75 ++ .../StyledRadio/index.web.tsx | 76 ++ .../StyledSelect/StyledSelectIcon.tsx | 11 + .../StyledSelect/StyledSelectItem.tsx | 12 + .../StyledSelect/StyledSelectItemList.tsx | 15 + .../styled-components/StyledSelect/index.tsx | 112 +++ .../StyledSelectItem/index.tsx | 15 + .../StyledSidebar/StyledSidebarGroup.tsx | 9 + .../StyledSidebarGroupHeader.tsx | 21 + .../StyledSidebar/StyledSidebarGroupItem.tsx | 51 ++ .../StyledSidebarGroupItemContent.tsx | 13 + .../StyledSidebarGroupItemText.tsx | 12 + .../StyledSidebar/StyledSidebarTag.tsx | 40 + .../StyledSidebar/StyledSidebarTagText.tsx | 12 + .../styled-components/StyledSidebar/index.tsx | 4 + .../StyledSlider/StyledSliderFilledTrack.tsx | 15 + .../StyledSlider/StyledSliderThumb.tsx | 58 ++ .../StyledSliderThumbInteraction.tsx | 12 + .../StyledSlider/StyledSliderTrack.tsx | 21 + .../styled-components/StyledSlider/index.tsx | 24 + .../styled-components/StyledSpinner/index.tsx | 10 + .../styled-components/StyledSwitch/index.tsx | 54 ++ .../StyledTabs/StyledTab.tsx | 48 ++ .../StyledTabs/StyledTabList.tsx | 13 + .../StyledTabs/StyledTabPanel.tsx | 4 + .../StyledTabs/StyledTabPanels.tsx | 4 + .../styled-components/StyledTabs/index.tsx | 4 + .../styled-components/StyledText/index.tsx | 92 +++ .../StyledTextArea/TextAreaRoot.tsx | 148 ++++ .../StyledTextArea/index.tsx | 19 + .../StyledToast/StyledToastDescription.tsx | 30 + .../StyledToast/StyledToastTitle.tsx | 30 + .../styled-components/StyledToast/index.tsx | 35 + .../StyledTooltip/StyledTooltipArrow.tsx | 14 + .../StyledTooltip/StyledTooltipContent.tsx | 21 + .../styled-components/StyledTooltip/index.tsx | 4 + .../src/styled-components/StyledUL/index.tsx | 4 + .../styled-components/StyledVStack/index.tsx | 14 + .../StyledVStackSpacer/index.tsx | 34 + .../src/styled-components/index.tsx | 141 ++++ .../src/styled-components/ui.config.ts | 768 ++++++++++++++++++ .../design-system/src/styled/index.tsx | 3 + .../design-system/src/utils/ecosystem.json | 87 ++ .../design-system/src/utils/ecosystem.ts | 20 + .../design-system/src/utils/favicons/main.svg | 6 + .../design-system/src/utils/favicons/pro.svg | 13 + .../src/utils/favicons/style.svg | 13 + .../design-system/src/utils/favicons/ui.svg | 13 + .../src/utils/heading-id-generator.ts | 3 + .../design-system/src/utils/helperFunction.ts | 101 +++ .../Checkbox/gluestack-ui-provider/config.ts | 309 +++++++ .../Checkbox/gluestack-ui-provider/index.tsx | 47 ++ .../gluestack-ui-provider/index.web.tsx | 94 +++ .../Checkbox/gluestack-ui-provider/script.ts | 19 + .../components/Checkbox/index.nw.stories.mdx | 5 +- .../design-system/CodeBlock/CodeBlock.tsx | 182 +++++ .../design-system/CodeBlock/CodeBlockTab.tsx | 28 + .../CodeBlock/CodeBlockTabList.tsx | 12 + .../CodeBlock/CodeBlockTabPanel.tsx | 30 + .../design-system/CodeBlock/CodeBlockTabs.tsx | 12 + .../design-system/CodeBlock/index.tsx | 13 + .../design-system/CodeBlock/terminalTheme.ts | 117 +++ .../design-system/CodeBlock/theme.ts | 133 +++ .../CodePreview/ArgsController.tsx | 62 ++ .../design-system/CodePreview/CodePreview.tsx | 217 +++++ .../CodePreview/CodePreviewProvider.tsx | 11 + .../CodePreview/ComponentRenderer.tsx | 52 ++ .../CodePreview/controls/InputControl.tsx | 68 ++ .../CodePreview/controls/SelectControl.tsx | 132 +++ .../CodePreview/controls/SwitchControl.tsx | 55 ++ .../CodePreview/controls/index.tsx | 3 + .../design-system/CodePreview/index.tsx | 5 + .../design-system/hooks/clipboard.ts | 19 + .../design-system/icons/index.tsx | 43 + 508 files changed, 21330 insertions(+), 3 deletions(-) create mode 100644 example/storybook-nativewind/public/images/codeblock/assets/andriod-frame.svg create mode 100644 example/storybook-nativewind/public/images/codeblock/assets/android-frame.png create mode 100644 example/storybook-nativewind/public/images/codeblock/assets/iphone-frame.png create mode 100644 example/storybook-nativewind/public/images/codeblock/assets/iphone-frame.svg create mode 100644 example/storybook-nativewind/src/components/Checkbox/Wrapper.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Actionsheet/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Actionsheet/styled-components/Backdrop.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Actionsheet/styled-components/Content.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Actionsheet/styled-components/DragIndicator.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Actionsheet/styled-components/FlatList.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Actionsheet/styled-components/Icon.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Actionsheet/styled-components/IndicatorWrapper.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Actionsheet/styled-components/Item.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Actionsheet/styled-components/ItemText.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Actionsheet/styled-components/Root.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Actionsheet/styled-components/ScrollView.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Actionsheet/styled-components/SectionHeaderText.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Actionsheet/styled-components/SectionList.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Actionsheet/styled-components/VirtualizedList.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Actionsheet/styled-components/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Alert/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Alert/styled-components/Icon.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Alert/styled-components/Root.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Alert/styled-components/Text.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Alert/styled-components/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/AlertDialog/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/AlertDialog/styled-components/Backdrop.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/AlertDialog/styled-components/Body.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/AlertDialog/styled-components/CloseButton.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/AlertDialog/styled-components/Content.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/AlertDialog/styled-components/Footer.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/AlertDialog/styled-components/Header.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/AlertDialog/styled-components/Root.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Avatar/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Avatar/styled-components/Badge.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Avatar/styled-components/FallbackText.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Avatar/styled-components/Group.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Avatar/styled-components/Image.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Avatar/styled-components/Root.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Badge/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Badge/styled-components/Icon.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Badge/styled-components/Root.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Badge/styled-components/Text.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Center/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Center/styled-components/Root.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Divider/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Divider/styled-components/Root.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Fab/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Fab/styled-components/Icon.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Fab/styled-components/Label.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Fab/styled-components/Root.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/FormControl/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/FormControl/styled-components/Error.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/FormControl/styled-components/ErrorIcon.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/FormControl/styled-components/ErrorText.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/FormControl/styled-components/Helper.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/FormControl/styled-components/HelperText.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/FormControl/styled-components/Label.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/FormControl/styled-components/LabelAstrick.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/FormControl/styled-components/LabelText.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/FormControl/styled-components/Root.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/GluestackUIProvider/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Menu/config.json create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Menu/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Menu/styled-components/Backdrop.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Menu/styled-components/Item.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Menu/styled-components/Item.web.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Menu/styled-components/ItemLabel.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Menu/styled-components/Root.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Menu/styled-components/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Modal/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Modal/styled-components/Backdrop.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Modal/styled-components/Body.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Modal/styled-components/CloseButton.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Modal/styled-components/Content.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Modal/styled-components/Footer.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Modal/styled-components/Header.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Modal/styled-components/Root.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Popover/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Popover/styled-components/Arrow.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Popover/styled-components/Backdrop.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Popover/styled-components/Body.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Popover/styled-components/CloseButton.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Popover/styled-components/Content.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Popover/styled-components/Footer.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Popover/styled-components/Header.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Popover/styled-components/Root.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Progress/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Progress/styled-components/FilledTrack.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Progress/styled-components/Root.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Provider/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Table/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Table/styled-components/TBody.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Table/styled-components/TD.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Table/styled-components/TFoot.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Table/styled-components/TH.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Table/styled-components/THead.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Table/styled-components/TR.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Table/styled-components/Text.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Table/styled-components/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Tabs/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Tabs/styled-components/Root.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Tabs/styled-components/Tab.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Tabs/styled-components/TabIcon.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Tabs/styled-components/TabList.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Tabs/styled-components/TabPanel.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Tabs/styled-components/TabPanels.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Tabs/styled-components/TabTitle.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Toast/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Toast/styled-components/Description.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Toast/styled-components/Root.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Toast/styled-components/Title.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Tooltip/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Tooltip/styled-components/Arrow.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Tooltip/styled-components/Content.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Tooltip/styled-components/Root.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Transitions/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/index.ts create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/styled/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/core/AppProvider/GluestackUIProvider.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/core/AppProvider/config.ts create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/core/AppProvider/config_old.ts create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/core/AppProvider/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/core/index.ts create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/BlockQuote/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Blog/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Breadcrumbs/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Code/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/CodeBlock/CodeBlock.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/CodeBlock/CodeBlockTab.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/CodeBlock/CodeBlockTabList.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/CodeBlock/CodeBlockTabPanel.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/CodeBlock/CodeBlockTabs.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/CodeBlock/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/CodeBlock/terminalTheme.ts create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/CodeBlock/theme.ts create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/CodePreview/ArgsController.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/CodePreview/CodePreview.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/CodePreview/CodePreviewProvider.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/CodePreview/ComponentRenderer.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/CodePreview/controls/InputControl.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/CodePreview/controls/SelectControl.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/CodePreview/controls/SwitchControl.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/CodePreview/controls/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/CodePreview/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/CodePreviewWithTabs/CodePreviewWithTabs.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/CodePreviewWithTabs/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/CollapsibleCode/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Community/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/ComponentIntro/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Ecosystem/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/EditPageOnGithubLink/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Flyout/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/H1/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/H2/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/H3/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/H4/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/H5/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/HeadingTabs/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Hoverable/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/InlineCode/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/LI/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Layout/Layout.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Layout/LayoutContent.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Layout/LayoutContext.ts create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Layout/LayoutFooter.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Layout/LayoutHeader.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Layout/LayoutSidebar.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Layout/ResponsiveSidebar.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Layout/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/LogoTag/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/MeetCreators/icons.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/MeetCreators/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Nav/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Newsletter/images.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Newsletter/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/OL/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/PrevNextButtons/LinkButton.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/PrevNextButtons/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Sidebar/SideBarGroupItemTag.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Sidebar/SideBarGroupItemTagText.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Sidebar/SideBarGroupItemText.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Sidebar/Sidebar.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Sidebar/SidebarGroup.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Sidebar/SidebarGroupHeader.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Sidebar/SidebarGroupItem.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Sidebar/SidebarGroupItemContent.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Sidebar/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/StyledSvg/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/UL/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/index.ts create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/gluestack-style.config.ts create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/hooks/index.ts create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/hooks/useClipboard.ts create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/index.ts create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Box/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Box/styled-components/Root.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Button/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Button/styled-components/Group.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Button/styled-components/GroupSpacer.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Button/styled-components/Icon.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Button/styled-components/Root.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Button/styled-components/Spinner.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Button/styled-components/Text.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Checkbox/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Checkbox/styled-components/Group.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Checkbox/styled-components/Icon.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Checkbox/styled-components/Indicator.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Checkbox/styled-components/Label.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Checkbox/styled-components/Root.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Checkbox/styled-components/Root.web.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/HStack/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/HStack/styled-components/Root.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/HStack/styled-components/Spacer.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Heading/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Heading/styled-components/Root.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Add.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Arrow.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Bounce.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Check.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Chevron.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Circle.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Close.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/CodeBlock.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/ColorLine.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/ColorPalette.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Copy.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/DarkTheme.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Delete.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Dismiss.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Download.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Earth.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Expo.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Favourite.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Gentle.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Globe.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Grid.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Hamburger.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Info.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Minus.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Moon.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/NavigationUnread.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Open.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Options.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Play.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Question.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Quick.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Resize.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Responsive.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/ScaleFill.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Search.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Share.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Social.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Sun.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/ThreeDots.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Ticket.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/TypeScript.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Warning.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/WarningOutline.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/WeatherMoon.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/WindowHeader.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/questionIconPath.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/styled-components/Root.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Image/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Image/styled-components/FallbackText.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Image/styled-components/Root.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Input/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Input/styled-components/Icon.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Input/styled-components/Input.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Input/styled-components/Root.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Link/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Link/styled-components/Root.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Link/styled-components/Text.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Link/styled-components/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Pressable/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Pressable/styled-components/Root.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Radio/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Radio/styled-components/Group.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Radio/styled-components/Icon.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Radio/styled-components/Indicator.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Radio/styled-components/Label.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Radio/styled-components/Root.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Radio/styled-components/Root.web.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Select/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Select/styled-components-actionsheet/Backdrop.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Select/styled-components-actionsheet/Content.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Select/styled-components-actionsheet/DragIndicator.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Select/styled-components-actionsheet/FlatList.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Select/styled-components-actionsheet/Icon.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Select/styled-components-actionsheet/IndicatorWrapper.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Select/styled-components-actionsheet/Item.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Select/styled-components-actionsheet/ItemText.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Select/styled-components-actionsheet/Root.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Select/styled-components-actionsheet/ScrollView.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Select/styled-components-actionsheet/SectionHeaderText.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Select/styled-components-actionsheet/SectionList.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Select/styled-components-actionsheet/VirtualizedList.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Select/styled-components-actionsheet/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Select/styled-components/Icon.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Select/styled-components/Input.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Select/styled-components/Root.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Select/styled-components/Trigger.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Select/styled-components/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Slider/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Slider/styled-components/FilledTrack.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Slider/styled-components/Root.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Slider/styled-components/Thumb.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Slider/styled-components/ThumbInteraction.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Slider/styled-components/Track.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Spinner/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Spinner/styled-components/Root.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Switch/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Switch/styled-components/Root.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Text/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Text/styled-components/Root.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/TextArea/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/TextArea/styled-components/Input.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/TextArea/styled-components/Root.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/VStack/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/VStack/styled-components/Root.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/VStack/styled-components/Spacer.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/index.ts create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledActionsheet/StyledActionsheetBackdrop.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledActionsheet/StyledActionsheetContent.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledActionsheet/StyledActionsheetDragIndicator.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledActionsheet/StyledActionsheetIndicatorWrapper.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledActionsheet/StyledActionsheetItem.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledActionsheet/StyledActionsheetItemText.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledActionsheet/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledAlert/StyledAlertIcon.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledAlert/StyledAlertText.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledAlert/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledAlertDialog/StyledAlertDialogBackdrop.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledAlertDialog/StyledAlertDialogBody.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledAlertDialog/StyledAlertDialogCloseButton.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledAlertDialog/StyledAlertDialogContent.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledAlertDialog/StyledAlertDialogFooter.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledAlertDialog/StyledAlertDialogHeader.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledAlertDialog/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledAvatar/StyledAvatarBadge.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledAvatar/StyledAvatarFallbackText.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledAvatar/StyledAvatarGroup.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledAvatar/StyledAvatarImage.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledAvatar/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledBadge/StyledBadgeIcon.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledBadge/StyledBadgeText.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledBadge/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledBlockQuote/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledBox/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledBoxText/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledButton/StyledButtonGroup.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledButton/StyledButtonGroupSpacer.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledButton/StyledButtonSpinner.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledButton/StyledButtonText.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledButton/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledCenter/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledCheckbox/StyledCheckboxGroup.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledCheckbox/StyledCheckboxIcon.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledCheckbox/StyledCheckboxIndicator.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledCheckbox/StyledCheckboxLabel.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledCheckbox/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledCheckbox/index.web.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledDivider/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledFab/StyledFabLabel.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledFab/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledFormControl/StyledFormControlBox.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledFormControl/StyledFormControlError.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledFormControl/StyledFormControlErrorIcon.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledFormControl/StyledFormControlErrorText.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledFormControl/StyledFormControlHelper.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledFormControl/StyledFormControlHelperText.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledFormControl/StyledFormControlLabel.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledFormControl/StyledFormControlLabelAstrick.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledFormControl/StyledFormControlLabelText.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledH1/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledH2/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledH3/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledH4/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledH5/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledHStack/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledHStackSpacer/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledHeading/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledIcon/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledIconButton/StyledIconButtonSpinner.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledIconButton/StyledIconButtonText.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledIconButton/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledImage/StyledImageFallbackText.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledImage/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledInlineCode/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledInput/InputIcon.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledInput/InputRoot.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledInput/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledLI/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledLayout/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledLinearGradient/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledLink/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledLink/index.web.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledMenu/StyledMenuBackdrop.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledMenu/StyledMenuContent.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledMenu/StyledMenuGroup.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledMenu/StyledMenuGroupTitle.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledMenu/StyledMenuItem.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledMenu/StyledMenuItemOption.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledMenu/StyledMenuItemOptionIndicator.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledMenu/StyledMenuItemOptionLabel.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledMenu/StyledMenuOptionsGroup.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledMenu/StyledMenuTrigger.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledMenu/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledModal/StyledModalBackdrop.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledModal/StyledModalBody.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledModal/StyledModalCloseButton.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledModal/StyledModalContent.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledModal/StyledModalFooter.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledModal/StyledModalHeader.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledModal/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledNav/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledOverlay/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledPopover/StyledPopover.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledPopover/StyledPopoverArrow.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledPopover/StyledPopoverBackdrop.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledPopover/StyledPopoverBody.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledPopover/StyledPopoverCloseButton.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledPopover/StyledPopoverContent.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledPopover/StyledPopoverFooter.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledPopover/StyledPopoverHeader.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledPressable/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledProgress/StyledProgressFilledTrack.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledProgress/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledRadio/StyledRadioGroup.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledRadio/StyledRadioIcon.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledRadio/StyledRadioIndicator.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledRadio/StyledRadioLabel.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledRadio/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledRadio/index.web.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledSelect/StyledSelectIcon.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledSelect/StyledSelectItem.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledSelect/StyledSelectItemList.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledSelect/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledSelectItem/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledSidebar/StyledSidebarGroup.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledSidebar/StyledSidebarGroupHeader.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledSidebar/StyledSidebarGroupItem.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledSidebar/StyledSidebarGroupItemContent.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledSidebar/StyledSidebarGroupItemText.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledSidebar/StyledSidebarTag.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledSidebar/StyledSidebarTagText.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledSidebar/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledSlider/StyledSliderFilledTrack.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledSlider/StyledSliderThumb.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledSlider/StyledSliderThumbInteraction.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledSlider/StyledSliderTrack.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledSlider/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledSpinner/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledSwitch/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledTabs/StyledTab.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledTabs/StyledTabList.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledTabs/StyledTabPanel.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledTabs/StyledTabPanels.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledTabs/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledText/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledTextArea/TextAreaRoot.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledTextArea/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledToast/StyledToastDescription.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledToast/StyledToastTitle.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledToast/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledTooltip/StyledTooltipArrow.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledTooltip/StyledTooltipContent.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledTooltip/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledUL/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledVStack/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledVStackSpacer/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/ui.config.ts create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/styled/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/utils/ecosystem.json create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/utils/ecosystem.ts create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/utils/favicons/main.svg create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/utils/favicons/pro.svg create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/utils/favicons/style.svg create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/utils/favicons/ui.svg create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/utils/heading-id-generator.ts create mode 100644 example/storybook-nativewind/src/components/Checkbox/design-system/src/utils/helperFunction.ts create mode 100644 example/storybook-nativewind/src/components/Checkbox/gluestack-ui-provider/config.ts create mode 100644 example/storybook-nativewind/src/components/Checkbox/gluestack-ui-provider/index.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/gluestack-ui-provider/index.web.tsx create mode 100644 example/storybook-nativewind/src/components/Checkbox/gluestack-ui-provider/script.ts create mode 100644 example/storybook-nativewind/src/extra-components/design-system/CodeBlock/CodeBlock.tsx create mode 100644 example/storybook-nativewind/src/extra-components/design-system/CodeBlock/CodeBlockTab.tsx create mode 100644 example/storybook-nativewind/src/extra-components/design-system/CodeBlock/CodeBlockTabList.tsx create mode 100644 example/storybook-nativewind/src/extra-components/design-system/CodeBlock/CodeBlockTabPanel.tsx create mode 100644 example/storybook-nativewind/src/extra-components/design-system/CodeBlock/CodeBlockTabs.tsx create mode 100644 example/storybook-nativewind/src/extra-components/design-system/CodeBlock/index.tsx create mode 100644 example/storybook-nativewind/src/extra-components/design-system/CodeBlock/terminalTheme.ts create mode 100644 example/storybook-nativewind/src/extra-components/design-system/CodeBlock/theme.ts create mode 100644 example/storybook-nativewind/src/extra-components/design-system/CodePreview/ArgsController.tsx create mode 100644 example/storybook-nativewind/src/extra-components/design-system/CodePreview/CodePreview.tsx create mode 100644 example/storybook-nativewind/src/extra-components/design-system/CodePreview/CodePreviewProvider.tsx create mode 100644 example/storybook-nativewind/src/extra-components/design-system/CodePreview/ComponentRenderer.tsx create mode 100644 example/storybook-nativewind/src/extra-components/design-system/CodePreview/controls/InputControl.tsx create mode 100644 example/storybook-nativewind/src/extra-components/design-system/CodePreview/controls/SelectControl.tsx create mode 100644 example/storybook-nativewind/src/extra-components/design-system/CodePreview/controls/SwitchControl.tsx create mode 100644 example/storybook-nativewind/src/extra-components/design-system/CodePreview/controls/index.tsx create mode 100644 example/storybook-nativewind/src/extra-components/design-system/CodePreview/index.tsx create mode 100644 example/storybook-nativewind/src/extra-components/design-system/hooks/clipboard.ts create mode 100644 example/storybook-nativewind/src/extra-components/design-system/icons/index.tsx diff --git a/example/storybook-nativewind/public/images/codeblock/assets/andriod-frame.svg b/example/storybook-nativewind/public/images/codeblock/assets/andriod-frame.svg new file mode 100644 index 0000000000..73cc716457 --- /dev/null +++ b/example/storybook-nativewind/public/images/codeblock/assets/andriod-frame.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/example/storybook-nativewind/public/images/codeblock/assets/android-frame.png b/example/storybook-nativewind/public/images/codeblock/assets/android-frame.png new file mode 100644 index 0000000000000000000000000000000000000000..196215c5ed6ba1b2a5c99b887e005f268a68fab7 GIT binary patch literal 51110 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

nzP3@`v0uDwDw*qqj?T7Gp8a3Lan=g&H5Pk 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%0AHL*GZM}-+N_>85vLy%wy-fh=7@W0R1 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

P%T^6rwd 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 literal 0 HcmV?d00001 diff --git a/example/storybook-nativewind/public/images/codeblock/assets/iphone-frame.svg b/example/storybook-nativewind/public/images/codeblock/assets/iphone-frame.svg new file mode 100644 index 0000000000..481194d2c1 --- /dev/null +++ b/example/storybook-nativewind/public/images/codeblock/assets/iphone-frame.svg @@ -0,0 +1,339 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/example/storybook-nativewind/src/components/Checkbox/Wrapper.tsx b/example/storybook-nativewind/src/components/Checkbox/Wrapper.tsx new file mode 100644 index 0000000000..e8d725e872 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/Wrapper.tsx @@ -0,0 +1,48 @@ +'use client'; +import React from 'react'; +import { Box } from '@/components/ui/box'; +import { Center } from '@/components/ui/center'; +import { config } from './gluestack-ui-provider/config'; +import { useColorScheme } from 'nativewind'; + +export function GluestackUIProvider({ + mode = 'light', + ...props +}: { + mode?: 'light' | 'dark'; + children?: React.ReactNode; +}) { + if (config[mode] && typeof document !== 'undefined') { + const element = document.documentElement; + if (element) { + const head = element.querySelector('head'); + const style = document.createElement('style'); + const stringcssvars = Object.keys(config[mode]).reduce((acc, cur) => { + acc += `${cur}:${config[mode][cur]};`; + return acc; + }, ''); + style.innerHTML = `:root {${stringcssvars}} `; + if (head) head.appendChild(style); + } + } + return props.children; +} + +const Wrapper = ({ + children, + ...props +}: { + children?: React.ReactNode; + props?: React.ComponentProps; +}) => { + const { colorScheme } = useColorScheme(); + return ( + + +

{children}
+ + + ); +}; + +export default Wrapper; diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Actionsheet/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Actionsheet/index.tsx new file mode 100644 index 0000000000..364b56639a --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Actionsheet/index.tsx @@ -0,0 +1,34 @@ +import { createActionsheet } from '@gluestack-ui/actionsheet'; +import { AnimatePresence } from '@gluestack-style/animation-resolver'; +import { + Root, + Content, + Item, + ItemText, + DragIndicator, + IndicatorWrapper, + Backdrop, + ScrollView, + VirtualizedList, + FlatList, + SectionList, + SectionHeaderText, + Icon, +} from './styled-components'; + +export const Actionsheet = createActionsheet({ + Root, + Content, + Item, + ItemText, + DragIndicator, + IndicatorWrapper, + Backdrop, + ScrollView, + VirtualizedList, + FlatList, + SectionList, + SectionHeaderText, + Icon, + AnimatePresence: AnimatePresence, +}); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Actionsheet/styled-components/Backdrop.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Actionsheet/styled-components/Backdrop.tsx new file mode 100644 index 0000000000..f9e1c028a8 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Actionsheet/styled-components/Backdrop.tsx @@ -0,0 +1,31 @@ +import { createMotionAnimatedComponent } from '@legendapp/motion'; +import { Pressable } from 'react-native'; +import { styled } from '../../../styled'; + +const MotionPressable = createMotionAnimatedComponent(Pressable); + +export default styled( + MotionPressable, + { + // @ts-ignore + ':initial': { + opacity: 0, + }, + ':animate': { + opacity: 0.3, + }, + ':exit': { + opacity: 0, + }, + 'position': 'absolute', + 'left': 0, + 'top': 0, + 'right': 0, + 'bottom': 0, + 'bg': '$backgroundLight800', + '_dark': { + bg: '$backgroundDark800', + }, + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Actionsheet/styled-components/Content.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Actionsheet/styled-components/Content.tsx new file mode 100644 index 0000000000..07e0e5a4a8 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Actionsheet/styled-components/Content.tsx @@ -0,0 +1,21 @@ +import { AnimatedView } from '@gluestack-style/animation-resolver'; +import { styled } from '../../../styled'; + +export default styled( + AnimatedView, + { + alignItems: 'center', + rounded: 0, + borderTopLeftRadius: '$2xl', + borderTopRightRadius: '$2xl', + bg: '$backgroundLight0', + maxHeight: '80%', + _dark: { + bg: '$backgroundDark900', + }, + _web: { + userSelect: 'none', + }, + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Actionsheet/styled-components/DragIndicator.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Actionsheet/styled-components/DragIndicator.tsx new file mode 100644 index 0000000000..bdd55bce3f --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Actionsheet/styled-components/DragIndicator.tsx @@ -0,0 +1,16 @@ +import { styled } from '../../../styled'; +import { View } from 'react-native'; + +export default styled( + View, + { + height: '$1', + width: '$12', + bg: '$backgroundLight400', + rounded: '$full', + _dark: { + bg: '$backgroundDark500', + }, + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Actionsheet/styled-components/FlatList.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Actionsheet/styled-components/FlatList.tsx new file mode 100644 index 0000000000..d4c039701f --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Actionsheet/styled-components/FlatList.tsx @@ -0,0 +1,11 @@ +import { FlatList } from 'react-native'; +import { styled } from '../../../styled'; + +export default styled( + FlatList, + { + w: '$full', + h: 'auto', + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Actionsheet/styled-components/Icon.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Actionsheet/styled-components/Icon.tsx new file mode 100644 index 0000000000..5e1bcf6eb6 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Actionsheet/styled-components/Icon.tsx @@ -0,0 +1,20 @@ +import { styled } from '../../../styled'; +import { View } from 'react-native'; + +export default styled( + View, + { + w: 16, + h: 16, + mx: '$2', + _icon: { + color: '$textLight900', + _dark: { + color: '$textDark50', + }, + }, + }, + { + descendantStyle: ['_icon'], + } +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Actionsheet/styled-components/IndicatorWrapper.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Actionsheet/styled-components/IndicatorWrapper.tsx new file mode 100644 index 0000000000..e5f198e8d0 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Actionsheet/styled-components/IndicatorWrapper.tsx @@ -0,0 +1,13 @@ +import { View } from 'react-native'; +import { styled } from '../../../styled'; + +export default styled( + View, + { + py: '$3', + mt: -4, + w: '100%', + alignItems: 'center', + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Actionsheet/styled-components/Item.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Actionsheet/styled-components/Item.tsx new file mode 100644 index 0000000000..2621ab2c19 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Actionsheet/styled-components/Item.tsx @@ -0,0 +1,53 @@ +import { styled } from '../../../styled'; +import { Pressable } from 'react-native'; + +export default styled( + Pressable, + { + 'p': '$3', + 'flexDirection': 'row', + 'alignItems': 'center', + 'w': '100%', + ':disabled': { + opacity: 0.4, + }, + + ':hover': { + bg: '$backgroundLight50', + }, + + ':active': { + bg: '$backgroundLight100', + }, + + ':focus': { + bg: '$backgroundLight100', + }, + + '_dark': { + ':hover': { + bg: '$backgroundDark800', + }, + + ':active': { + bg: '$backgroundDark700', + }, + + ':focus': { + bg: '$backgroundDark700', + }, + }, + + '_web': { + ':focusVisible': { + bg: '$backgroundLight100', + _dark: { + bg: '$backgroundDark700', + }, + }, + }, + }, + { + descendantStyle: ['_text'], + } +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Actionsheet/styled-components/ItemText.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Actionsheet/styled-components/ItemText.tsx new file mode 100644 index 0000000000..561b4e5f86 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Actionsheet/styled-components/ItemText.tsx @@ -0,0 +1,16 @@ +import { Text } from 'react-native'; +import { styled } from '../../../styled'; + +export default styled( + Text, + { + mx: '$2', + fontSize: '$md', + fontWeight: '$normal', + color: '$textLight900', + _dark: { + color: '$textDark50', + }, + }, + { ancestorStyle: ['_text'] } +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Actionsheet/styled-components/Root.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Actionsheet/styled-components/Root.tsx new file mode 100644 index 0000000000..695638ca75 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Actionsheet/styled-components/Root.tsx @@ -0,0 +1,13 @@ +import { View } from 'react-native'; +import { styled } from '../../../styled'; + +export default styled( + View, + { + width: '100%', + height: '100%', + justifyContent: 'flex-end', + alignItems: 'center', + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Actionsheet/styled-components/ScrollView.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Actionsheet/styled-components/ScrollView.tsx new file mode 100644 index 0000000000..e5a17c671e --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Actionsheet/styled-components/ScrollView.tsx @@ -0,0 +1,11 @@ +import { ScrollView } from 'react-native'; +import { styled } from '../../../styled'; + +export default styled( + ScrollView, + { + w: '$full', + h: 'auto', + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Actionsheet/styled-components/SectionHeaderText.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Actionsheet/styled-components/SectionHeaderText.tsx new file mode 100644 index 0000000000..d50fdbf537 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Actionsheet/styled-components/SectionHeaderText.tsx @@ -0,0 +1,19 @@ +import { Text } from 'react-native'; +import { styled } from '../../../styled'; + +export default styled( + Text, + { + color: '$textLight900', + fontSize: '$lg', + fontWeight: '$bold', + bg: '$backgroundLight100', + px: '$5', + py: '$2', + _dark: { + color: '$textDark50', + bg: '$backgroundDark900', + }, + }, + { ancestorStyle: ['_text'] } +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Actionsheet/styled-components/SectionList.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Actionsheet/styled-components/SectionList.tsx new file mode 100644 index 0000000000..e6124ed0c6 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Actionsheet/styled-components/SectionList.tsx @@ -0,0 +1,11 @@ +import { SectionList } from 'react-native'; +import { styled } from '../../../styled'; + +export default styled( + SectionList, + { + w: '$full', + h: 'auto', + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Actionsheet/styled-components/VirtualizedList.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Actionsheet/styled-components/VirtualizedList.tsx new file mode 100644 index 0000000000..5f81368506 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Actionsheet/styled-components/VirtualizedList.tsx @@ -0,0 +1,11 @@ +import { VirtualizedList } from 'react-native'; +import { styled } from '../../../styled'; + +export default styled( + VirtualizedList, + { + w: '$full', + h: 'auto', + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Actionsheet/styled-components/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Actionsheet/styled-components/index.tsx new file mode 100644 index 0000000000..68d4cca05e --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Actionsheet/styled-components/index.tsx @@ -0,0 +1,13 @@ +export { default as Root } from './Root'; +export { default as Content } from './Content'; +export { default as Item } from './Item'; +export { default as ItemText } from './ItemText'; +export { default as DragIndicator } from './DragIndicator'; +export { default as IndicatorWrapper } from './IndicatorWrapper'; +export { default as Backdrop } from './Backdrop'; +export { default as ScrollView } from './ScrollView'; +export { default as VirtualizedList } from './VirtualizedList'; +export { default as FlatList } from './FlatList'; +export { default as SectionList } from './SectionList'; +export { default as Icon } from './Icon'; +export { default as SectionHeaderText } from './SectionHeaderText'; diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Alert/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Alert/index.tsx new file mode 100644 index 0000000000..0dae628d10 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Alert/index.tsx @@ -0,0 +1,7 @@ +import { createAlert } from '@gluestack-ui/alert'; +import { Root, Text, Icon } from './styled-components'; +export const Alert = createAlert({ + Root, + Text, + Icon, +}); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Alert/styled-components/Icon.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Alert/styled-components/Icon.tsx new file mode 100644 index 0000000000..4e19f39dc8 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Alert/styled-components/Icon.tsx @@ -0,0 +1,43 @@ +import { styled } from '../../styled'; +import { AsForwarder } from '@gluestack-style/react'; + +export default styled( + AsForwarder, + { + variants: { + size: { + xs: { + h: 12, + w: 12, + }, + sm: { + h: 16, + w: 16, + }, + md: { + h: 18, + w: 18, + }, + lg: { + h: 20, + w: 20, + }, + xl: { + h: 24, + w: 24, + }, + }, + }, + defaultProps: { + size: 'md', + }, + }, + { + ancestorStyle: ['_icon'], + }, + { + propertyTokenMap: { + stroke: 'colors', + }, + } +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Alert/styled-components/Root.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Alert/styled-components/Root.tsx new file mode 100644 index 0000000000..ec54e40975 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Alert/styled-components/Root.tsx @@ -0,0 +1,103 @@ +import { View } from 'react-native'; +import { styled } from '../../styled'; + +export default styled( + View, + { + alignItems: 'center', + w: '100%', + p: '$3', + flexDirection: 'row', + borderRadius: '$sm', + variants: { + action: { + error: { + bg: '$backgroundLightError', + borderColor: '$error300', + _icon: { + color: '$error600', + }, + _dark: { + bg: '$backgroundDarkError', + borderColor: '$error700', + _icon: { + color: '$error400', + }, + }, + }, + warning: { + bg: '$backgroundLightWarning', + borderColor: '$warning300', + _icon: { + color: '$warning600', + }, + _dark: { + bg: '$backgroundDarkWarning', + borderColor: '$warning700', + _icon: { + color: '$warning400', + }, + }, + }, + success: { + bg: '$backgroundLightSuccess', + borderColor: '$success300', + _icon: { + color: '$success600', + }, + _dark: { + bg: '$backgroundDarkSuccess', + borderColor: '$success700', + _icon: { + color: '$success400', + }, + }, + }, + info: { + bg: '$backgroundLightInfo', + borderColor: '$info300', + _icon: { + color: '$info600', + }, + _dark: { + bg: '$backgroundDarkInfo', + borderColor: '$info700', + _icon: { + color: '$info400', + }, + }, + }, + muted: { + bg: '$backgroundLightMuted', + borderColor: '$secondary300', + _icon: { + color: '$secondary600', + }, + _dark: { + bg: '$backgroundDarkMuted', + borderColor: '$secondary700', + _icon: { + color: '$secondary400', + }, + }, + }, + }, + + variant: { + solid: {}, + outline: { + borderWidth: '$1', + }, + accent: { + borderLeftWidth: '$4', + }, + }, + }, + + defaultProps: { + variant: 'solid', + action: 'muted', + }, + }, + { descendantStyle: ['_icon', '_text'] } +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Alert/styled-components/Text.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Alert/styled-components/Text.tsx new file mode 100644 index 0000000000..88c7c4111d --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Alert/styled-components/Text.tsx @@ -0,0 +1,18 @@ +import { Text } from 'react-native'; +import { styled } from '../../styled'; + +export default styled( + Text, + { + color: '$textLight900', + fontWeight: '$normal', + fontFamily: '$body', + fontStyle: 'normal', + fontSize: '$md', + lineHeight: '$md', + _dark: { + color: '$textDark50', + }, + }, + { ancestorStyle: ['_text'] } +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Alert/styled-components/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Alert/styled-components/index.tsx new file mode 100644 index 0000000000..4644e5a005 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Alert/styled-components/index.tsx @@ -0,0 +1,3 @@ +export { default as Root } from './Root'; +export { default as Icon } from './Icon'; +export { default as Text } from './Text'; diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/AlertDialog/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/AlertDialog/index.tsx new file mode 100644 index 0000000000..9fef2b6891 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/AlertDialog/index.tsx @@ -0,0 +1,18 @@ +import Root from './styled-components/Root'; +import Content from './styled-components/Content'; +import CloseButton from './styled-components/CloseButton'; +import Header from './styled-components/Header'; +import Footer from './styled-components/Footer'; +import Body from './styled-components/Body'; +import Backdrop from './styled-components/Backdrop'; +import { createAlertDialog } from '@gluestack-ui/alert-dialog'; + +export const AlertDialog = createAlertDialog({ + Root, + Content, + CloseButton, + Header, + Footer, + Body, + Backdrop, +}) as any; diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/AlertDialog/styled-components/Backdrop.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/AlertDialog/styled-components/Backdrop.tsx new file mode 100644 index 0000000000..fbda111a8f --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/AlertDialog/styled-components/Backdrop.tsx @@ -0,0 +1,16 @@ +import { Pressable } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled( + Pressable, + { + position: 'absolute', + left: 0, + top: 0, + opacity: 0.3, + right: 0, + bottom: 0, + bg: '$black', + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/AlertDialog/styled-components/Body.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/AlertDialog/styled-components/Body.tsx new file mode 100644 index 0000000000..c3bfddb256 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/AlertDialog/styled-components/Body.tsx @@ -0,0 +1,10 @@ +import { ScrollView } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled( + ScrollView, + { + padding: '$4', + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/AlertDialog/styled-components/CloseButton.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/AlertDialog/styled-components/CloseButton.tsx new file mode 100644 index 0000000000..0940680080 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/AlertDialog/styled-components/CloseButton.tsx @@ -0,0 +1,42 @@ +import { Pressable } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled( + Pressable, + { + 'position': 'absolute', + 'right': 10, + 'top': 10, + 'zIndex': 1, + 'p': '$2', + 'bg': 'transparent', + 'rounded': '$sm', + + ':hover': { + bg: '$muted200', + }, + + ':active': { + bg: '$muted300', + }, + + ':focusVisible': { + bg: '$muted400', + }, + + '_web': { + outlineWidth: 0, + }, + + '_dark': { + ':hover': { + bg: '$muted700', + }, + + ':pressed': { + bg: '$muted600', + }, + }, + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/AlertDialog/styled-components/Content.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/AlertDialog/styled-components/Content.tsx new file mode 100644 index 0000000000..8b95e325b2 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/AlertDialog/styled-components/Content.tsx @@ -0,0 +1,27 @@ +import { View } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled( + View, + { + shadowColor: 'black', + + shadowOffset: { + width: 0, + height: 1, + }, + + shadowOpacity: 0.2, + shadowRadius: 1.41, + elevation: 2, + rounded: '$lg', + overflow: 'hidden', + bg: '$white', + maxWidth: 450, + + _dark: { + bg: '$muted800', + }, + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/AlertDialog/styled-components/Footer.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/AlertDialog/styled-components/Footer.tsx new file mode 100644 index 0000000000..165027cbb7 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/AlertDialog/styled-components/Footer.tsx @@ -0,0 +1,21 @@ +import { View } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled( + View, + { + p: '$4', + flexDirection: 'row', + justifyContent: 'flex-end', + flexWrap: 'wrap', + borderTopWidth: 1, + bg: '$muted50', + borderColor: '$muted300', + + _dark: { + bg: '$muted800', + borderColor: '$muted700', + }, + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/AlertDialog/styled-components/Header.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/AlertDialog/styled-components/Header.tsx new file mode 100644 index 0000000000..c2d93012f7 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/AlertDialog/styled-components/Header.tsx @@ -0,0 +1,18 @@ +import { View } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled( + View, + { + p: '$4', + borderBottomWidth: 1, + bg: '$muted50', + borderColor: '$muted300', + + _dark: { + bg: '$muted800', + borderColor: '$muted700', + }, + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/AlertDialog/styled-components/Root.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/AlertDialog/styled-components/Root.tsx new file mode 100644 index 0000000000..1d5fa793ab --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/AlertDialog/styled-components/Root.tsx @@ -0,0 +1,18 @@ +import { View } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled( + View, + { + width: '100%', + height: '100%', + justifyContent: 'center', + alignItems: 'center', + defaultProps: {}, + + props: { + pointerEvents: 'box-none', + }, + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Avatar/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Avatar/index.tsx new file mode 100644 index 0000000000..00b603fa96 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Avatar/index.tsx @@ -0,0 +1,14 @@ +import Root from './styled-components/Root'; +import Badge from './styled-components/Badge'; +import Group from './styled-components/Group'; +import Image from './styled-components/Image'; +import FallbackText from './styled-components/FallbackText'; +import { createAvatar } from '@gluestack-ui/avatar'; + +export const Avatar = createAvatar({ + Root, + Badge, + Group, + Image, + FallbackText, +}); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Avatar/styled-components/Badge.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Avatar/styled-components/Badge.tsx new file mode 100644 index 0000000000..ad432dd543 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Avatar/styled-components/Badge.tsx @@ -0,0 +1,18 @@ +import { View } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled( + View, + { + w: 20, + h: 20, + bg: '$green500', + borderRadius: 9999, + position: 'absolute', + right: 0, + bottom: 0, + borderColor: 'white', + borderWidth: 2, + }, + { ancestorStyle: ['_badge'] } +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Avatar/styled-components/FallbackText.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Avatar/styled-components/FallbackText.tsx new file mode 100644 index 0000000000..fe1cedcec5 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Avatar/styled-components/FallbackText.tsx @@ -0,0 +1,15 @@ +import { Text } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled( + Text, + { + color: 'white', + fontWeight: 'semibold', + fontSize: '$xl', + display: 'flex', + overflow: 'hidden', + textTransform: 'uppercase', + }, + { ancestorStyle: ['_text'] } +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Avatar/styled-components/Group.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Avatar/styled-components/Group.tsx new file mode 100644 index 0000000000..0c95af7a54 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Avatar/styled-components/Group.tsx @@ -0,0 +1,11 @@ +import { View } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled( + View, + { + flexDirection: 'row', + position: 'relative', + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Avatar/styled-components/Image.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Avatar/styled-components/Image.tsx new file mode 100644 index 0000000000..314f73e809 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Avatar/styled-components/Image.tsx @@ -0,0 +1,13 @@ +import { Image } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled( + Image, + { + w: '100%', + h: '100%', + borderRadius: 9999, + position: 'absolute', + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Avatar/styled-components/Root.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Avatar/styled-components/Root.tsx new file mode 100644 index 0000000000..6999a1aeb7 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Avatar/styled-components/Root.tsx @@ -0,0 +1,112 @@ +import { View } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled( + View, + { + borderRadius: 9999, + justifyContent: 'center', + alignItems: 'center', + h: 100, + w: 100, + position: 'relative', + bg: '$primary600', + + variants: { + size: { + 'xs': { + w: '$6', + h: '$6', + + _badge: { + w: 8, + h: 8, + borderWidth: 1, + }, + + _text: { + fontSize: 8, + }, + }, + + 'sm': { + w: '$8', + h: '$8', + + _badge: { + w: 9, + h: 9, + borderWidth: 1, + }, + + _text: { + fontSize: 11, + }, + }, + + 'md': { + w: '$12', + h: '$12', + + _badge: { + w: 14, + h: 14, + }, + + _text: { + fontSize: 17, + }, + }, + + 'lg': { + w: '$16', + h: '$16', + + _badge: { + w: 16, + h: 16, + }, + + _text: { + fontSize: 22, + }, + }, + + 'xl': { + w: '$24', + h: '$24', + + _badge: { + w: 24, + h: 24, + }, + + _text: { + fontSize: 34, + }, + }, + + '2xl': { + w: '$32', + h: '$32', + + _badge: { + w: '$8', + h: '$8', + }, + + _text: { + fontSize: 42, + }, + }, + }, + }, + + defaultProps: { + size: 'md', + }, + }, + { + descendantStyle: ['_badge', '_text'], + } +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Badge/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Badge/index.tsx new file mode 100644 index 0000000000..fe2308783c --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Badge/index.tsx @@ -0,0 +1,20 @@ +import Root from './styled-components/Root'; +import Text from './styled-components/Text'; +import Icon from './styled-components/Icon'; + +const Badge: any = Root; +Badge.Icon = Icon; +Badge.Text = Text; + +type RootProps = React.ComponentProps; +type IconProps = React.ComponentProps; +type TextProps = React.ComponentProps; + +type IBadgeComponentType = ((props: RootProps) => JSX.Element) & { + Icon: (props: IconProps) => JSX.Element; + Text: (props: TextProps) => JSX.Element; +}; + +const BadgeMain = Badge as IBadgeComponentType; + +export { BadgeMain as Badge }; diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Badge/styled-components/Icon.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Badge/styled-components/Icon.tsx new file mode 100644 index 0000000000..ecb3222a73 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Badge/styled-components/Icon.tsx @@ -0,0 +1,4 @@ +import { Text } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled(Text, {}, { ancestorStyle: ['_icon'] }); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Badge/styled-components/Root.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Badge/styled-components/Root.tsx new file mode 100644 index 0000000000..b8ed3088fb --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Badge/styled-components/Root.tsx @@ -0,0 +1,324 @@ +import { View } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled( + View, + { + flexDirection: 'row', + justifyContent: 'center', + alignItems: 'center', + px: '$2', + py: '$1', + + variants: { + variant: { + 'solid': { + bg: '$muted600', + borderWidth: 1, + borderColor: 'transparent', + borderRadius: 2, + + _text: { + color: '$text50', + }, + + _icon: { + color: '$text50', + }, + }, + + 'subtle': { + bg: '$muted100', + borderWidth: 1, + borderColor: 'transparent', + borderRadius: 2, + + _text: { + color: '$muted700', + }, + + _icon: { + color: '$muted700', + }, + + _dark: { + bg: '$muted300', + }, + }, + + 'outline': { + borderWidth: 1, + borderColor: '$muted600', + borderRadius: 2, + + _text: { + color: '$muted600', + }, + + _icon: { + color: '$muted600', + }, + + _dark: { + borderColor: '$muted300', + + _text: { + color: '$muted300', + }, + + _icon: { + color: '$muted300', + }, + }, + }, + + 'success-solid': { + bg: '$success600', + borderWidth: 1, + borderColor: 'transparent', + borderRadius: 2, + + _text: { + color: '$text50', + }, + + _icon: { + color: '$text50', + }, + }, + + 'success-subtle': { + bg: '$success100', + borderWidth: 1, + borderColor: 'transparent', + borderRadius: 2, + + _text: { + color: '$success900', + }, + + _icon: { + color: '$success900', + }, + + _dark: { + bg: '$success300', + }, + }, + + 'success-outline': { + borderWidth: 1, + borderColor: '$success600', + borderRadius: 2, + + _text: { + color: '$success600', + }, + + _icon: { + color: '$success600', + }, + + _dark: { + borderColor: '$success300', + + _text: { + color: '$success300', + }, + + _icon: { + color: '$success300', + }, + }, + }, + + 'danger-solid': { + bg: '$error600', + borderWidth: 1, + borderColor: 'transparent', + borderRadius: 2, + + _text: { + color: '$text50', + }, + + _icon: { + color: '$text50', + }, + }, + + 'danger-subtle': { + bg: '$error100', + borderWidth: 1, + borderColor: 'transparent', + borderRadius: 2, + + _text: { + color: '$error900', + }, + + _icon: { + color: '$error900', + }, + + _dark: { + bg: '$error300', + }, + }, + + 'danger-outline': { + borderWidth: 1, + borderColor: '$error600', + borderRadius: 2, + + _text: { + color: '$error600', + }, + + _icon: { + color: '$error600', + }, + + _dark: { + borderColor: '$error300', + + _text: { + color: '$error300', + }, + + _icon: { + color: '$error300', + }, + }, + }, + + 'info-solid': { + bg: '$info600', + borderWidth: 1, + borderColor: 'transparent', + borderRadius: 2, + + _text: { + color: '$text50', + }, + + _icon: { + color: '$text50', + }, + }, + + 'info-subtle': { + bg: '$info100', + borderWidth: 1, + borderColor: 'transparent', + borderRadius: 2, + + _text: { + color: '$info900', + }, + + _icon: { + color: '$info900', + }, + + _dark: { + bg: '$info300', + }, + }, + + 'info-outline': { + borderWidth: 1, + borderColor: '$info600', + borderRadius: 2, + + _text: { + color: '$info600', + }, + + _icon: { + color: '$info600', + }, + + _dark: { + borderColor: '$info300', + + _text: { + color: '$info300', + }, + + _icon: { + color: '$info300', + }, + }, + }, + + 'warning-solid': { + bg: '$warning600', + borderWidth: 1, + borderColor: 'transparent', + borderRadius: 2, + + _text: { + color: '$text50', + }, + + _icon: { + color: '$text50', + }, + }, + + 'warning-subtle': { + bg: '$warning100', + borderWidth: 1, + borderColor: 'transparent', + borderRadius: 2, + + _text: { + color: '$warning900', + }, + + _icon: { + color: '$warning900', + }, + + _dark: { + bg: '$warning300', + }, + }, + + 'warning-outline': { + borderWidth: 1, + borderColor: '$warning600', + borderRadius: 2, + + _text: { + color: '$warning600', + }, + + _icon: { + color: '$warning600', + }, + + _dark: { + borderColor: '$warning300', + + _text: { + color: '$warning300', + }, + + _icon: { + color: '$warning300', + }, + }, + }, + }, + }, + + defaultProps: { + variant: 'subtle', + }, + }, + { + descendantStyle: ['_text', '_icon'], + } +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Badge/styled-components/Text.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Badge/styled-components/Text.tsx new file mode 100644 index 0000000000..576ff347a5 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Badge/styled-components/Text.tsx @@ -0,0 +1,13 @@ +import { Text } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled( + Text, + { + fontWeight: '500', + fontSize: 12, + color: '$white', + textTransform: 'uppercase', + }, + { ancestorStyle: ['_text'] } +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Center/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Center/index.tsx new file mode 100644 index 0000000000..7bbbd3cdcc --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Center/index.tsx @@ -0,0 +1,3 @@ +import Root from './styled-components/Root'; + +export const Center = Root; diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Center/styled-components/Root.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Center/styled-components/Root.tsx new file mode 100644 index 0000000000..bf2fdadad0 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Center/styled-components/Root.tsx @@ -0,0 +1,46 @@ +import { View } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled( + View, + { + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + + variants: { + size: { + 'xs': { + height: 10, + width: 10, + }, + + 'sm': { + height: 12, + width: 12, + }, + + 'md': { + height: 16, + width: 16, + }, + + 'lg': { + height: 24, + width: 24, + }, + + 'xl': { + height: 32, + width: 32, + }, + + '2xl': { + height: 40, + width: 40, + }, + }, + }, + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Divider/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Divider/index.tsx new file mode 100644 index 0000000000..b0f702bb2e --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Divider/index.tsx @@ -0,0 +1,6 @@ +import Root from './styled-components/Root'; +import { createDivider } from '@gluestack-ui/divider'; + +export const Divider = createDivider({ + Root, +}); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Divider/styled-components/Root.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Divider/styled-components/Root.tsx new file mode 100644 index 0000000000..816336549c --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Divider/styled-components/Root.tsx @@ -0,0 +1,32 @@ +import { View } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled( + View, + { + bg: '$muted300', + + variants: { + orientation: { + vertical: { + width: 1, + height: '100%', + }, + + horizontal: { + height: 1, + width: '100%', + }, + }, + }, + + defaultProps: { + variant: 'horizontal', + }, + + _dark: { + bg: '$muted600', + }, + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Fab/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Fab/index.tsx new file mode 100644 index 0000000000..4c9bea3166 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Fab/index.tsx @@ -0,0 +1,6 @@ +import Root from './styled-components/Root'; +import Label from './styled-components/Label'; +import Icon from './styled-components/Icon'; +import { createFab } from '@gluestack-ui/fab'; + +export const Fab = createFab({ Root, Label, Icon }); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Fab/styled-components/Icon.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Fab/styled-components/Icon.tsx new file mode 100644 index 0000000000..4a1effc581 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Fab/styled-components/Icon.tsx @@ -0,0 +1,42 @@ +import { AsForwarder, styled } from '@gluestack-style/react'; + +export default styled( + AsForwarder, + { + variants: { + size: { + xs: { + h: '$3', + w: '$3', + }, + sm: { + h: '$4', + w: '$4', + }, + md: { + h: 18, + w: 18, + }, + lg: { + h: '$5', + w: '$5', + }, + xl: { + h: '$6', + w: '$6', + }, + }, + }, + defaultProps: { + size: 'md', + }, + }, + { + ancestorStyle: ['_icon'], + }, + { + propertyTokenMap: { + stroke: 'colors', + }, + } +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Fab/styled-components/Label.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Fab/styled-components/Label.tsx new file mode 100644 index 0000000000..7d6a99784d --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Fab/styled-components/Label.tsx @@ -0,0 +1,11 @@ +import { styled } from '@gluestack-style/react'; +import { Text } from 'react-native'; + +export default styled( + Text, + { + color: '$white', + ml: 8, + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Fab/styled-components/Root.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Fab/styled-components/Root.tsx new file mode 100644 index 0000000000..81a80a2706 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Fab/styled-components/Root.tsx @@ -0,0 +1,56 @@ +import { styled } from '@gluestack-style/react'; +import { Pressable } from 'react-native'; + +export default styled( + Pressable, + { + 'bg': '$primary500', + 'rounded': '$full', + 'zIndex': 20, + 'px': 16, + 'py': 16, + 'flexDirection': 'row', + 'alignItems': 'center', + + 'variants': { + variant: { + 'top-right': { + top: 12, + right: 4, + position: 'absolute', + }, + + 'top-left': { + top: 12, + left: 4, + position: 'absolute', + }, + + 'bottom-right': { + bottom: 4, + right: 4, + position: 'absolute', + }, + + 'bottom-left': { + bottom: 4, + left: 4, + position: 'absolute', + }, + }, + }, + + 'defaultProps': { + variant: 'top-right', + }, + + ':hover': { + bg: '$primary700', + }, + + ':active': { + bg: '$primary900', + }, + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/FormControl/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/FormControl/index.tsx new file mode 100644 index 0000000000..21612eaecc --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/FormControl/index.tsx @@ -0,0 +1,22 @@ +import Root from './styled-components/Root'; +import Error from './styled-components/Error'; +import ErrorText from './styled-components/ErrorText'; +import ErrorIcon from './styled-components/ErrorIcon'; +import Label from './styled-components/Label'; +import LabelText from './styled-components/LabelText'; +import LabelAstrick from './styled-components/LabelAstrick'; +import Helper from './styled-components/Helper'; +import HelperText from './styled-components/HelperText'; +import { createFormControl } from '@gluestack-ui/form-control'; + +export const FormControl = createFormControl({ + Root, + Error, + ErrorText, + ErrorIcon, + Label, + LabelText, + LabelAstrick, + Helper, + HelperText, +}) as any; diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/FormControl/styled-components/Error.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/FormControl/styled-components/Error.tsx new file mode 100644 index 0000000000..b6bd723e68 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/FormControl/styled-components/Error.tsx @@ -0,0 +1,13 @@ +import { styled } from '@gluestack-style/react'; +import { View } from 'react-native'; + +export default styled( + View, + { + flexDirection: 'row', + justifyContent: 'flex-start', + alignItems: 'center', + mt: '$2', + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/FormControl/styled-components/ErrorIcon.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/FormControl/styled-components/ErrorIcon.tsx new file mode 100644 index 0000000000..ed8dcb8cc7 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/FormControl/styled-components/ErrorIcon.tsx @@ -0,0 +1,4 @@ +import { styled } from '@gluestack-style/react'; +import { View } from 'react-native'; + +export default styled(View, {}, {}); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/FormControl/styled-components/ErrorText.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/FormControl/styled-components/ErrorText.tsx new file mode 100644 index 0000000000..00341f4084 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/FormControl/styled-components/ErrorText.tsx @@ -0,0 +1,16 @@ +import { styled } from '@gluestack-style/react'; +import { Text } from 'react-native'; + +export default styled( + Text, + { + fontSize: '$xs', + color: '$error600', + ml: '$1', + + _dark: { + color: '$error500', + }, + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/FormControl/styled-components/Helper.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/FormControl/styled-components/Helper.tsx new file mode 100644 index 0000000000..b6bd723e68 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/FormControl/styled-components/Helper.tsx @@ -0,0 +1,13 @@ +import { styled } from '@gluestack-style/react'; +import { View } from 'react-native'; + +export default styled( + View, + { + flexDirection: 'row', + justifyContent: 'flex-start', + alignItems: 'center', + mt: '$2', + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/FormControl/styled-components/HelperText.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/FormControl/styled-components/HelperText.tsx new file mode 100644 index 0000000000..6546901ce9 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/FormControl/styled-components/HelperText.tsx @@ -0,0 +1,15 @@ +import { styled } from '@gluestack-style/react'; +import { Text } from 'react-native'; + +export default styled( + Text, + { + fontSize: '$xs', + color: '$text500', + + _dark: { + color: '$txet400', + }, + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/FormControl/styled-components/Label.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/FormControl/styled-components/Label.tsx new file mode 100644 index 0000000000..837dc7a0e6 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/FormControl/styled-components/Label.tsx @@ -0,0 +1,13 @@ +import { styled } from '@gluestack-style/react'; +import { View } from 'react-native'; + +export default styled( + View, + { + flexDirection: 'row', + justifyContent: 'flex-start', + alignItems: 'center', + mb: '$2', + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/FormControl/styled-components/LabelAstrick.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/FormControl/styled-components/LabelAstrick.tsx new file mode 100644 index 0000000000..563597a53d --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/FormControl/styled-components/LabelAstrick.tsx @@ -0,0 +1,14 @@ +// import { Text } from '@gluestack-ui/ui'; +import { styled } from '@gluestack-style/react'; +import { Text } from 'react-native'; +export default styled( + Text, + { + color: '$error600', + + _dark: { + color: '$error500', + }, + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/FormControl/styled-components/LabelText.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/FormControl/styled-components/LabelText.tsx new file mode 100644 index 0000000000..1e47ae247c --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/FormControl/styled-components/LabelText.tsx @@ -0,0 +1,16 @@ +import { styled } from '@gluestack-style/react'; +import { Text } from 'react-native'; + +export default styled( + Text, + { + fontSize: '$sm', + fontWeight: '$medium', + color: '$text500', + + _dark: { + color: '$text400', + }, + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/FormControl/styled-components/Root.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/FormControl/styled-components/Root.tsx new file mode 100644 index 0000000000..5ab1d69cde --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/FormControl/styled-components/Root.tsx @@ -0,0 +1,11 @@ +import { View } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled( + View, + { + flexDirection: 'column', + width: '100%', + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/GluestackUIProvider/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/GluestackUIProvider/index.tsx new file mode 100644 index 0000000000..881921420d --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/GluestackUIProvider/index.tsx @@ -0,0 +1,7 @@ +import { createProvider } from '@gluestack-ui/provider'; +import { StyledProvider } from '@gluestack-style/react'; + +const GluestackUIProvider = createProvider({ StyledProvider }); +//@ts-ignore +GluestackUIProvider.displayName = 'GluestackUIProvider'; +export { GluestackUIProvider }; diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Menu/config.json b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Menu/config.json new file mode 100644 index 0000000000..f7db480b88 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Menu/config.json @@ -0,0 +1,4 @@ +{ + "dependencies": { "@gluestack-ui/menu": "latest" }, + "keywords": ["components", "core"] +} diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Menu/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Menu/index.tsx new file mode 100644 index 0000000000..f57cadcf00 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Menu/index.tsx @@ -0,0 +1,12 @@ +import { createMenu } from '@gluestack-ui/menu'; +import { Root, Item, Label, Backdrop } from './styled-components'; + +import { AnimatePresence } from '@gluestack-style/animation-resolver'; + +export const Menu = createMenu({ + Root, + Item, + Label, + Backdrop, + AnimatePresence: AnimatePresence, +}); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Menu/styled-components/Backdrop.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Menu/styled-components/Backdrop.tsx new file mode 100644 index 0000000000..338914bc90 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Menu/styled-components/Backdrop.tsx @@ -0,0 +1,15 @@ +import { Pressable } from 'react-native'; +import { styled } from '../../styled'; + +export const Backdrop = styled( + Pressable, + { + position: 'absolute', + top: 0, + bottom: 0, + left: 0, + right: 0, + opacity: 0.5, + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Menu/styled-components/Item.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Menu/styled-components/Item.tsx new file mode 100644 index 0000000000..5cb6df439c --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Menu/styled-components/Item.tsx @@ -0,0 +1,47 @@ +import { styled } from '../../styled'; +import { Pressable } from 'react-native'; +export const Item = styled( + Pressable, + { + 'px': '$3', + 'py': '$2', + ':hover': { + bg: '$backgroundLight50', + }, + + ':active': { + bg: '$backgroundLight200', + }, + + ':focus': { + bg: '$backgroundLight100', + }, + + '_dark': { + ':hover': { + bg: '$backgroundDark800', + }, + + ':active': { + bg: '$backgroundDark700', + }, + + ':focus': { + bg: '$backgroundDark700', + }, + }, + + ':disabled': { + opacity: 0.6, + }, + '_web': { + ':focusVisible': { + bg: '$backgroundLight100', + _dark: { + bg: '$backgroundDark700', + }, + }, + }, + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Menu/styled-components/Item.web.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Menu/styled-components/Item.web.tsx new file mode 100644 index 0000000000..29bb465847 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Menu/styled-components/Item.web.tsx @@ -0,0 +1,45 @@ +import { styled } from '../../styled'; +import { LI } from '@expo/html-elements'; +export const Item = styled( + LI, + { + 'px': '$3', + 'py': '$2', + ':hover': { + bg: '$backgroundLight100', + }, + + ':active': { + bg: '$backgroundLight200', + }, + + ':focus': { + bg: '$backgroundLight100', + }, + + '_dark': { + ':hover': { + bg: '$backgroundDark800', + }, + + ':active': { + bg: '$backgroundDark700', + }, + + ':focus': { + bg: '$backgroundDark700', + }, + }, + + '_web': { + ':focusVisible': { + bg: '$backgroundLight100', + _dark: { + bg: '$backgroundDark700', + }, + }, + 'cursor': 'pointer', + }, + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Menu/styled-components/ItemLabel.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Menu/styled-components/ItemLabel.tsx new file mode 100644 index 0000000000..62e224302c --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Menu/styled-components/ItemLabel.tsx @@ -0,0 +1,4 @@ +import { Text } from 'react-native'; +import { styled } from '../../styled'; + +export const Label = styled(Text, {}, {}); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Menu/styled-components/Root.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Menu/styled-components/Root.tsx new file mode 100644 index 0000000000..ca2c2b7a3b --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Menu/styled-components/Root.tsx @@ -0,0 +1,33 @@ +import { UL } from '@expo/html-elements'; +import { styled } from '../../styled'; +import { createMotionAnimatedComponent } from '@legendapp/motion'; +const MotionUL = createMotionAnimatedComponent(UL); +export const Root = styled( + MotionUL, + { + // @ts-ignore + ':initial': { + opacity: 0, + }, + ':animate': { + opacity: 1, + }, + ':exit': { + opacity: 0, + }, + 'minWidth': 200, + 'py': '$2', + 'rounded': '$sm', + 'bg': '$backgroundLight0', + 'shadowColor': '$backgroundLight800', + + 'shadowOffset': { + width: 0, + height: 2, + }, + 'shadowOpacity': 0.25, + 'shadowRadius': 3.84, + 'elevation': 5, + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Menu/styled-components/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Menu/styled-components/index.tsx new file mode 100644 index 0000000000..32f6ce2927 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Menu/styled-components/index.tsx @@ -0,0 +1,4 @@ +export { Root } from './Root'; +export { Item } from './Item'; +export { Label } from './ItemLabel'; +export { Backdrop } from './Backdrop'; diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Modal/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Modal/index.tsx new file mode 100644 index 0000000000..89688356ce --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Modal/index.tsx @@ -0,0 +1,18 @@ +import Root from './styled-components/Root'; +import Content from './styled-components/Content'; +import CloseButton from './styled-components/CloseButton'; +import Header from './styled-components/Header'; +import Footer from './styled-components/Footer'; +import Body from './styled-components/Body'; +import Backdrop from './styled-components/Backdrop'; +import { createModal } from '@gluestack-ui/modal'; + +export const Modal = createModal({ + Root, + Content, + CloseButton, + Header, + Footer, + Body, + Backdrop, +}) as any; diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Modal/styled-components/Backdrop.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Modal/styled-components/Backdrop.tsx new file mode 100644 index 0000000000..fbda111a8f --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Modal/styled-components/Backdrop.tsx @@ -0,0 +1,16 @@ +import { Pressable } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled( + Pressable, + { + position: 'absolute', + left: 0, + top: 0, + opacity: 0.3, + right: 0, + bottom: 0, + bg: '$black', + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Modal/styled-components/Body.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Modal/styled-components/Body.tsx new file mode 100644 index 0000000000..c3bfddb256 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Modal/styled-components/Body.tsx @@ -0,0 +1,10 @@ +import { ScrollView } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled( + ScrollView, + { + padding: '$4', + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Modal/styled-components/CloseButton.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Modal/styled-components/CloseButton.tsx new file mode 100644 index 0000000000..52c0be6a91 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Modal/styled-components/CloseButton.tsx @@ -0,0 +1,39 @@ +import { Pressable } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled( + Pressable, + { + 'position': 'absolute', + 'right': 10, + 'top': 10, + 'zIndex': 1, + 'p': '$2', + 'bg': 'transparent', + 'rounded': '$sm', + + ':hover': { + bg: '$muted200', + }, + + ':active': { + bg: '$muted300', + }, + + '_dark': { + ':hover': { + bg: '$muted700', + }, + + ':active': { + bg: '$muted600', + }, + }, + + '_web': { + outlineWidth: 0, + cursor: 'pointer', + }, + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Modal/styled-components/Content.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Modal/styled-components/Content.tsx new file mode 100644 index 0000000000..95c392e5b1 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Modal/styled-components/Content.tsx @@ -0,0 +1,29 @@ +import { View, Dimensions } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled( + View, + { + shadowColor: 'black', + + shadowOffset: { + width: 0, + height: 1, + }, + + shadowOpacity: 0.2, + shadowRadius: 1.41, + elevation: 2, + // @ts-ignore + maxHeight: `${Dimensions.get('window').height - 150}px`, + rounded: '$lg', + overflow: 'hidden', + bg: '$muted50', + maxWidth: 450, + + _dark: { + bg: '$muted800', + }, + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Modal/styled-components/Footer.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Modal/styled-components/Footer.tsx new file mode 100644 index 0000000000..78132f02e1 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Modal/styled-components/Footer.tsx @@ -0,0 +1,21 @@ +import { View } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled( + View, + { + p: '$4', + flexDirection: 'row', + justifyContent: 'flex-end', + flexWrap: 'wrap', + borderTopWidth: 1, + bg: '$white', + borderColor: '$muted200', + + _dark: { + bg: '$muted800', + borderColor: '$muted700', + }, + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Modal/styled-components/Header.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Modal/styled-components/Header.tsx new file mode 100644 index 0000000000..a8156f7168 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Modal/styled-components/Header.tsx @@ -0,0 +1,18 @@ +import { View } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled( + View, + { + p: '$4', + borderBottomWidth: 1, + bg: '$muted50', + borderColor: '$muted200', + + _dark: { + bg: '$muted800', + borderColor: '$muted700', + }, + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Modal/styled-components/Root.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Modal/styled-components/Root.tsx new file mode 100644 index 0000000000..1d5fa793ab --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Modal/styled-components/Root.tsx @@ -0,0 +1,18 @@ +import { View } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled( + View, + { + width: '100%', + height: '100%', + justifyContent: 'center', + alignItems: 'center', + defaultProps: {}, + + props: { + pointerEvents: 'box-none', + }, + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Popover/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Popover/index.tsx new file mode 100644 index 0000000000..4c61867113 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Popover/index.tsx @@ -0,0 +1,20 @@ +import Root from './styled-components/Root'; +import Content from './styled-components/Content'; +import CloseButton from './styled-components/CloseButton'; +import Header from './styled-components/Header'; +import Footer from './styled-components/Footer'; +import Body from './styled-components/Body'; +import Backdrop from './styled-components/Backdrop'; +import Arrow from './styled-components/Arrow'; +import { createPopover } from '@gluestack-ui/popover'; + +export const Popover = createPopover({ + Root, + Content, + CloseButton, + Header, + Footer, + Body, + Backdrop, + Arrow, +}) as any; diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Popover/styled-components/Arrow.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Popover/styled-components/Arrow.tsx new file mode 100644 index 0000000000..d0ae9e826e --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Popover/styled-components/Arrow.tsx @@ -0,0 +1,4 @@ +import { View } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled(View, {}, {}); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Popover/styled-components/Backdrop.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Popover/styled-components/Backdrop.tsx new file mode 100644 index 0000000000..f6f6e8b150 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Popover/styled-components/Backdrop.tsx @@ -0,0 +1,16 @@ +import { Pressable } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled( + Pressable, + { + position: 'absolute', + left: 0, + top: 0, + opacity: 0.1, + right: 0, + bottom: 0, + bg: '$black', + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Popover/styled-components/Body.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Popover/styled-components/Body.tsx new file mode 100644 index 0000000000..c3bfddb256 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Popover/styled-components/Body.tsx @@ -0,0 +1,10 @@ +import { ScrollView } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled( + ScrollView, + { + padding: '$4', + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Popover/styled-components/CloseButton.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Popover/styled-components/CloseButton.tsx new file mode 100644 index 0000000000..52c0be6a91 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Popover/styled-components/CloseButton.tsx @@ -0,0 +1,39 @@ +import { Pressable } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled( + Pressable, + { + 'position': 'absolute', + 'right': 10, + 'top': 10, + 'zIndex': 1, + 'p': '$2', + 'bg': 'transparent', + 'rounded': '$sm', + + ':hover': { + bg: '$muted200', + }, + + ':active': { + bg: '$muted300', + }, + + '_dark': { + ':hover': { + bg: '$muted700', + }, + + ':active': { + bg: '$muted600', + }, + }, + + '_web': { + outlineWidth: 0, + cursor: 'pointer', + }, + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Popover/styled-components/Content.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Popover/styled-components/Content.tsx new file mode 100644 index 0000000000..615595ed76 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Popover/styled-components/Content.tsx @@ -0,0 +1,28 @@ +import { View } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled( + View, + { + shadowColor: 'black', + + //@ts-ignore + shadowOffset: { + width: 0, + height: 1, + }, + + shadowOpacity: 0.2, + shadowRadius: 1.41, + elevation: 2, + rounded: '$lg', + overflow: 'hidden', + bg: '$muted50', + maxWidth: 450, + + _dark: { + bg: '$muted800', + }, + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Popover/styled-components/Footer.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Popover/styled-components/Footer.tsx new file mode 100644 index 0000000000..78132f02e1 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Popover/styled-components/Footer.tsx @@ -0,0 +1,21 @@ +import { View } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled( + View, + { + p: '$4', + flexDirection: 'row', + justifyContent: 'flex-end', + flexWrap: 'wrap', + borderTopWidth: 1, + bg: '$white', + borderColor: '$muted200', + + _dark: { + bg: '$muted800', + borderColor: '$muted700', + }, + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Popover/styled-components/Header.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Popover/styled-components/Header.tsx new file mode 100644 index 0000000000..99db06292b --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Popover/styled-components/Header.tsx @@ -0,0 +1,18 @@ +import { View } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled( + View, + { + p: '$4', + borderBottomWidth: 1, + bg: '$white', + borderColor: '$muted200', + + _dark: { + bg: '$muted800', + borderColor: '$muted700', + }, + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Popover/styled-components/Root.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Popover/styled-components/Root.tsx new file mode 100644 index 0000000000..de69e0b467 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Popover/styled-components/Root.tsx @@ -0,0 +1,11 @@ +import { View } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled( + View, + { + h: '100%', + w: '100%', + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Progress/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Progress/index.tsx new file mode 100644 index 0000000000..426f739e40 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Progress/index.tsx @@ -0,0 +1,8 @@ +import Root from './styled-components/Root'; +import FilledTrack from './styled-components/FilledTrack'; +import { createProgress } from '@gluestack-ui/progress'; + +export const Progress = createProgress({ + Root, + FilledTrack, +}); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Progress/styled-components/FilledTrack.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Progress/styled-components/FilledTrack.tsx new file mode 100644 index 0000000000..67276f7111 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Progress/styled-components/FilledTrack.tsx @@ -0,0 +1,16 @@ +import { styled } from '@gluestack-style/react'; +import { View } from 'react-native'; + +export default styled( + View, + { + bg: '$primary600', + borderRadius: 999, + h: '$2', + + _dark: { + bg: '$primary400', + }, + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Progress/styled-components/Root.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Progress/styled-components/Root.tsx new file mode 100644 index 0000000000..c2412a6d37 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Progress/styled-components/Root.tsx @@ -0,0 +1,17 @@ +import { styled } from '@gluestack-style/react'; +import { View } from 'react-native'; + +export default styled( + View, + { + bg: '$muted200', + h: '$2', + borderRadius: 999, + w: '100%', + + _dark: { + bg: '$muted500', + }, + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Provider/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Provider/index.tsx new file mode 100644 index 0000000000..ef2564720a --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Provider/index.tsx @@ -0,0 +1,4 @@ +import { createProvider } from '@gluestack-ui/provider'; +import { StyledProvider } from '@gluestack-style/react'; + +export const Provider = createProvider({ StyledProvider }); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Table/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Table/index.tsx new file mode 100644 index 0000000000..d56a040e33 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Table/index.tsx @@ -0,0 +1,33 @@ +import { + Table as TableMain, + TH as THMain, + TBody as TBodyMain, + TD as TDMain, + TFoot as TFootMain, + THead as THeadMain, + TR as TRMain, + Text as TText, + TableContainer, +} from './styled-components'; + +const TableTemp = TableMain as any; + +TableTemp.TH = THMain; +TableTemp.TR = TRMain; +TableTemp.TD = TDMain; +TableTemp.THead = THeadMain; +TableTemp.TBody = TBodyMain; +TableTemp.TFoot = TFootMain; +TableTemp.TText = TText; + +const Table = TableTemp; +Table.displayName = 'Table'; +Table.TH.displayName = 'TH'; +Table.TR.displayName = 'TR'; +Table.TD.displayName = 'TD'; +Table.THead.displayName = 'THead'; +Table.TBody.displayName = 'TBody'; +Table.TFoot.displayName = 'TFoot'; +Table.TText.displayName = 'TText'; + +export { Table, TableContainer }; diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Table/styled-components/TBody.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Table/styled-components/TBody.tsx new file mode 100644 index 0000000000..b0bfd85ae8 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Table/styled-components/TBody.tsx @@ -0,0 +1,4 @@ +import { styled } from '@gluestack-style/react'; +import { TBody } from '@expo/html-elements'; + +export default styled(TBody, {}, {}); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Table/styled-components/TD.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Table/styled-components/TD.tsx new file mode 100644 index 0000000000..fb24948e24 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Table/styled-components/TD.tsx @@ -0,0 +1,12 @@ +import { styled } from '@gluestack-style/react'; +import { TD } from '@expo/html-elements'; + +export default styled( + TD, + { + p: '$3', + }, + { + descendantStyle: ['_text'], + } +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Table/styled-components/TFoot.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Table/styled-components/TFoot.tsx new file mode 100644 index 0000000000..f5dceb8a41 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Table/styled-components/TFoot.tsx @@ -0,0 +1,4 @@ +import { styled } from '@gluestack-style/react'; +import { TFoot } from '@expo/html-elements'; + +export default styled(TFoot, {}, {}); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Table/styled-components/TH.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Table/styled-components/TH.tsx new file mode 100644 index 0000000000..b176a116f0 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Table/styled-components/TH.tsx @@ -0,0 +1,21 @@ +import { styled } from '@gluestack-style/react'; +import { TH } from '@expo/html-elements'; + +export default styled( + TH, + { + p: '$3', + _text: { + fontSize: '$sm', + lineHeight: '$sm', + fontWeight: '$medium', + color: '$textLight800', + _dark: { + color: '$textDark200', + }, + }, + }, + { + descendantStyle: ['_text'], + } +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Table/styled-components/THead.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Table/styled-components/THead.tsx new file mode 100644 index 0000000000..0c18c794ed --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Table/styled-components/THead.tsx @@ -0,0 +1,13 @@ +import { styled } from '@gluestack-style/react'; +import { THead } from '@expo/html-elements'; + +export default styled( + THead, + { + bg: '$backgroundLight100', + _dark: { + bg: '$backgroundDark900', + }, + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Table/styled-components/TR.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Table/styled-components/TR.tsx new file mode 100644 index 0000000000..e5c2a29449 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Table/styled-components/TR.tsx @@ -0,0 +1,26 @@ +import { styled } from '@gluestack-style/react'; +import { TR } from '@expo/html-elements'; + +export default styled( + TR, + { + // borderWidth: 1, + // borderColor: '$borderLight200', + // _dark: { + // borderColor: '$borderDark800', + // }, + _web: { + border: '$space$px solid $borderLight200', + textAlign: 'left', + }, + + _dark: { + _web: { + border: '$space$px solid $borderDark800', + }, + }, + // borderRadius: '$2xl', + // borderWidth: 2, + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Table/styled-components/Text.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Table/styled-components/Text.tsx new file mode 100644 index 0000000000..2f38adbaf0 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Table/styled-components/Text.tsx @@ -0,0 +1,86 @@ +import { Text } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled( + Text, + { + fontSize: '$sm', + lineHeight: '$sm', + fontWeight: '$normal', + color: '$textLight500', + _dark: { + color: '$textDark400', + }, + + fontFamily: '$body', + fontStyle: 'normal', + letterSpacing: '$md', + + variants: { + size: { + 'xs': { + fontSize: '$xs', + letterSpacing: '$xs', + lineHeight: '$lg', + }, + + 'sm': { + fontSize: '$sm', + letterSpacing: '$sm', + lineHeight: '$lg', + }, + + 'md': { + fontSize: '$md', + letterSpacing: '$md', + lineHeight: '$lg', + }, + + 'lg': { + fontSize: '$lg', + letterSpacing: '$lg', + lineHeight: '$lg', + }, + + 'xl': { + fontSize: '$xl', + letterSpacing: '$xl', + lineHeight: '$lg', + }, + + '2xl': { + fontSize: '$2xl', + letterSpacing: '$2xl', + lineHeight: '$lg', + }, + + '3xl': { + fontSize: '$3xl', + lineHeight: '$lg', + }, + + '4xl': { + fontSize: '$4xl', + lineHeight: '$lg', + }, + + '5xl': { + fontSize: '$5xl', + lineHeight: '$lg', + }, + + '6xl': { + fontSize: '$6xl', + lineHeight: '$lg', + }, + }, + }, + + defaultProps: { + size: 'md', + }, + }, + { + ancestorStyle: ['_text'], + } +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Table/styled-components/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Table/styled-components/index.tsx new file mode 100644 index 0000000000..c64b747255 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Table/styled-components/index.tsx @@ -0,0 +1,40 @@ +import { styled } from '@gluestack-style/react'; +import { Table as ExpoTable } from '@expo/html-elements'; +import { Box } from '../../../primitives'; + +export const Table = styled( + ExpoTable, + { + mt: '$1', + mb: '$6', + boxShadow: '0 0 0 $space$px $borderLight200', + _web: { + borderCollapse: 'collapse', + }, + borderRadius: '$lg', + borderStyle: 'hidden', + overflow: 'hidden', + _dark: { + boxShadow: '0 0 0 $space$px $borderLight800', + }, + }, + {} +); + +export const TableContainer = styled( + Box, + { + _web: { overflowX: 'auto', overflowY: 'hidden', whiteSpace: 'nowrap' }, + maxWidth: '$full', + px: '$px', + }, + {} +); + +export { default as TH } from './TH'; +export { default as TD } from './TD'; +export { default as TR } from './TR'; +export { default as THead } from './THead'; +export { default as TBody } from './TBody'; +export { default as TFoot } from './TFoot'; +export { default as Text } from './Text'; diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Tabs/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Tabs/index.tsx new file mode 100644 index 0000000000..c96fb9a535 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Tabs/index.tsx @@ -0,0 +1,18 @@ +//@ts-nocheck +import Root from './styled-components/Root'; +import Tab from './styled-components/Tab'; +import TabPanels from './styled-components/TabPanels'; +import TabList from './styled-components/TabList'; +import TabPanel from './styled-components/TabPanel'; +import TabTitle from './styled-components/TabTitle'; +import TabIcon from './styled-components/TabIcon'; +import { createTabs } from '@gluestack-ui/tabs'; +export const Tabs = createTabs({ + Root, + Tab, + TabPanels, + TabList, + TabPanel, + TabTitle, + TabIcon, +}); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Tabs/styled-components/Root.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Tabs/styled-components/Root.tsx new file mode 100644 index 0000000000..2d86ec0abe --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Tabs/styled-components/Root.tsx @@ -0,0 +1,45 @@ +import { styled } from '@gluestack-style/react'; +import { View } from 'react-native'; + +export default styled( + View, + { + alignSelf: 'flex-start', + width: '$full', + variants: { + type: { + pill: { + _tab: { + props: { + type: 'pill', + }, + }, + _tabList: { + bg: 'radial-gradient(50% 50% at 50% 50%, rgba(255, 255, 255, 0.08) 0%, rgba(255, 255, 255, 0) 100%) , rgba(255, 255, 255, 0.04);', + rounded: '$full', + }, + }, + section: { + _tab: { + props: { + type: 'section', + }, + }, + _tabList: { + borderBottomWidth: 1, + borderColor: '$borderLight200', + _dark: { + borderColor: '$borderDark800', + }, + }, + }, + }, + }, + defaultProps: { + type: 'pill', + }, + }, + { + descendantStyle: ['_tabList', '_tab'], + } +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Tabs/styled-components/Tab.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Tabs/styled-components/Tab.tsx new file mode 100644 index 0000000000..75b0c0c5db --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Tabs/styled-components/Tab.tsx @@ -0,0 +1,66 @@ +import { styled } from '@gluestack-style/react'; +import { Pressable } from 'react-native'; + +export default styled( + Pressable, + { + 'bg': 'transparent', + '_web': { outlineWidth: 0 }, + + 'variants': { + size: { + md: { + px: '$4', + py: '$2', + _text: { + fontSize: '$md', + lineHeight: '$md', + }, + }, + }, + type: { + pill: { + ':hover': { + bg: '$secondary50_alpha_20', + borderRadius: '$full', + }, + ':active': { + bg: '$secondary50_alpha_10', + borderRadius: '$full', + }, + ':focus': { + bg: '$secondary50_alpha_20', + borderRadius: '$full', + }, + }, + section: { + ':active': { + borderBottomWidth: 2, + borderColor: '$border900', + _text: { + color: '$text900', + }, + }, + '_dark': { + ':active': { + borderColor: '$borderDark200', + _text: { + color: '$text50', + }, + }, + }, + }, + }, + }, + 'defaultProps': { + size: 'md', + }, + ':disabled': { + opacity: 0.5, + }, + }, + { + ancestorStyle: ['_tab'], + descendantStyle: ['_text'], + } +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Tabs/styled-components/TabIcon.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Tabs/styled-components/TabIcon.tsx new file mode 100644 index 0000000000..4a1effc581 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Tabs/styled-components/TabIcon.tsx @@ -0,0 +1,42 @@ +import { AsForwarder, styled } from '@gluestack-style/react'; + +export default styled( + AsForwarder, + { + variants: { + size: { + xs: { + h: '$3', + w: '$3', + }, + sm: { + h: '$4', + w: '$4', + }, + md: { + h: 18, + w: 18, + }, + lg: { + h: '$5', + w: '$5', + }, + xl: { + h: '$6', + w: '$6', + }, + }, + }, + defaultProps: { + size: 'md', + }, + }, + { + ancestorStyle: ['_icon'], + }, + { + propertyTokenMap: { + stroke: 'colors', + }, + } +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Tabs/styled-components/TabList.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Tabs/styled-components/TabList.tsx new file mode 100644 index 0000000000..2ac733c555 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Tabs/styled-components/TabList.tsx @@ -0,0 +1,10 @@ +import { styled } from '@gluestack-style/react'; +import { View } from 'react-native'; + +export default styled( + View, + { + flexDirection: 'row', + }, + { ancestorStyle: ['_tabList'] } +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Tabs/styled-components/TabPanel.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Tabs/styled-components/TabPanel.tsx new file mode 100644 index 0000000000..ed8dcb8cc7 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Tabs/styled-components/TabPanel.tsx @@ -0,0 +1,4 @@ +import { styled } from '@gluestack-style/react'; +import { View } from 'react-native'; + +export default styled(View, {}, {}); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Tabs/styled-components/TabPanels.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Tabs/styled-components/TabPanels.tsx new file mode 100644 index 0000000000..ed8dcb8cc7 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Tabs/styled-components/TabPanels.tsx @@ -0,0 +1,4 @@ +import { styled } from '@gluestack-style/react'; +import { View } from 'react-native'; + +export default styled(View, {}, {}); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Tabs/styled-components/TabTitle.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Tabs/styled-components/TabTitle.tsx new file mode 100644 index 0000000000..9ae71b1d5e --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Tabs/styled-components/TabTitle.tsx @@ -0,0 +1,16 @@ +import { styled } from '@gluestack-style/react'; +import { Text } from 'react-native'; + +export default styled( + Text, + { + fontWeight: '$semibold', + color: '$text400', + _dark: { + color: '$text500', + }, + }, + { + ancestorStyle: ['_text'], + } +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Toast/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Toast/index.tsx new file mode 100644 index 0000000000..8260b1a394 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Toast/index.tsx @@ -0,0 +1,12 @@ +import Root from './styled-components/Root'; +import Title from './styled-components/Title'; +import Description from './styled-components/Description'; +import { createToastHook, createToast } from '@gluestack-ui/toast'; + +export const useToast = createToastHook(); + +export const ToastComponent = createToast({ + Root, + Title, + Description, +}); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Toast/styled-components/Description.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Toast/styled-components/Description.tsx new file mode 100644 index 0000000000..e645aec97b --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Toast/styled-components/Description.tsx @@ -0,0 +1,30 @@ +import { Text } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled( + Text, + { + color: '$text50', + fontWeight: '$normal', + fontFamily: '$body', + fontStyle: 'normal', + fontSize: '$sm', + letterSpacing: '$md', + lineHeight: '$lg', + + variants: { + variant: { + modalHeader: { + fontSize: '$md', + fontWeight: '$semibold', + lineHeight: '$sm', + }, + }, + }, + + _dark: { + color: '$text900', + }, + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Toast/styled-components/Root.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Toast/styled-components/Root.tsx new file mode 100644 index 0000000000..3445645cbd --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Toast/styled-components/Root.tsx @@ -0,0 +1,35 @@ +import { styled } from '@gluestack-style/react'; +import { View } from 'react-native'; + +export default styled( + View, + { + bg: '$muted800', + p: '$2', + rounded: '$sm', + shadowColor: 'black', + + shadowOffset: { + width: 0, + height: 1, + }, + + shadowOpacity: 0.2, + shadowRadius: 1.41, + elevation: 2, + flexDirection: 'row', + props: { + pointerEvents: 'box-none', + }, + mb: '$2', + + defaultProps: { + space: 'md', + }, + + _dark: { + bg: '$muted200', + }, + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Toast/styled-components/Title.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Toast/styled-components/Title.tsx new file mode 100644 index 0000000000..9f205ebd3e --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Toast/styled-components/Title.tsx @@ -0,0 +1,30 @@ +import { Text } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled( + Text, + { + color: '$text50', + fontWeight: '$normal', + fontFamily: '$body', + fontStyle: 'normal', + fontSize: '$xs', + letterSpacing: '$md', + lineHeight: '$lg', + + variants: { + variant: { + modalHeader: { + fontSize: '$md', + fontWeight: '$semibold', + lineHeight: '$sm', + }, + }, + }, + + _dark: { + color: '$text900', + }, + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Tooltip/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Tooltip/index.tsx new file mode 100644 index 0000000000..c3ea194167 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Tooltip/index.tsx @@ -0,0 +1,10 @@ +//@ts-nocheck +import Root from './styled-components/Root'; +import Content from './styled-components/Content'; +import { createTooltip } from '@gluestack-ui/tooltip'; + +export const Tooltip = createTooltip({ + Root, + // StyledTooltipArrow, + Content, +}); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Tooltip/styled-components/Arrow.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Tooltip/styled-components/Arrow.tsx new file mode 100644 index 0000000000..74693a3b09 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Tooltip/styled-components/Arrow.tsx @@ -0,0 +1,16 @@ +import { styled } from '@gluestack-style/react'; + +import { View } from 'react-native'; + +export default styled( + View, + { + // fontSize: 'sm', + // color: '$text50', + borderColor: '$blue500', + bg: '$amber500', + w: 100, + h: 100, + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Tooltip/styled-components/Content.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Tooltip/styled-components/Content.tsx new file mode 100644 index 0000000000..f2b9ca0a19 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Tooltip/styled-components/Content.tsx @@ -0,0 +1,21 @@ +import { styled } from '@gluestack-style/react'; + +import { View } from 'react-native'; +export default styled( + View, + { + py: '$1', + px: '$2', + borderRadius: 4, + bg: '$backgroundLight800', + + _web: { + boxShadow: '0px 1px 1.41px rgba(0, 0, 0, 0.2)', + }, + + _dark: { + bg: '$backgroundDark50', + }, + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Tooltip/styled-components/Root.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Tooltip/styled-components/Root.tsx new file mode 100644 index 0000000000..ed8dcb8cc7 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Tooltip/styled-components/Root.tsx @@ -0,0 +1,4 @@ +import { styled } from '@gluestack-style/react'; +import { View } from 'react-native'; + +export default styled(View, {}, {}); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Transitions/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Transitions/index.tsx new file mode 100644 index 0000000000..7318513a3d --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/Transitions/index.tsx @@ -0,0 +1,2 @@ +//@ts-ignore +export { Slide, Fade, PresenceTransition, Stagger } from '@gluestack-ui/icon'; diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/index.ts b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/index.ts new file mode 100644 index 0000000000..aab21d3940 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/index.ts @@ -0,0 +1,18 @@ +export { Actionsheet } from './Actionsheet'; +export { Alert } from './Alert'; +export { AlertDialog } from './AlertDialog'; +export { Avatar } from './Avatar'; +export { Badge } from './Badge'; +export { Center } from './Center'; +export { Divider } from './Divider'; +export { Fab } from './Fab'; +export { FormControl } from './FormControl'; +export { Menu } from './Menu'; +export { Modal } from './Modal'; +export { Popover } from './Popover'; +export { Progress } from './Progress'; +export { useToast, ToastComponent } from './Toast'; +export { Table, TableContainer } from './Table'; +export { Tooltip } from './Tooltip'; +export { Slide, Fade, PresenceTransition, Stagger } from './Transitions'; +export { Tabs } from './Tabs'; diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/styled/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/styled/index.tsx new file mode 100644 index 0000000000..d10acb8cc0 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/composites/styled/index.tsx @@ -0,0 +1,3 @@ +import { styled as gluestackStyled } from '@gluestack-style/react'; + +export const styled = gluestackStyled; diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/core/AppProvider/GluestackUIProvider.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/core/AppProvider/GluestackUIProvider.tsx new file mode 100644 index 0000000000..1f89f2b791 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/core/AppProvider/GluestackUIProvider.tsx @@ -0,0 +1,26 @@ +import React from 'react'; +import { + createProvider, + GluestackUIContextProvider, +} from '@gluestack-ui/provider'; +import { StyledProvider } from '@gluestack-style/react'; +import { OverlayProvider } from '@gluestack-ui/overlay'; +import { ToastProvider } from '@gluestack-ui/toast'; + +const GluestackUIStyledProvider = createProvider({ StyledProvider }); + +const GluestackUIProvider = ({ children, ...props }: any) => { + return ( + + + {children} + + + ); +}; + +export { + GluestackUIProvider, + GluestackUIStyledProvider, + GluestackUIContextProvider, +}; diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/core/AppProvider/config.ts b/example/storybook-nativewind/src/components/Checkbox/design-system/src/core/AppProvider/config.ts new file mode 100644 index 0000000000..6b7aca0997 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/core/AppProvider/config.ts @@ -0,0 +1,753 @@ +// import { getConfig } from '@gluestack/config'; +export const config = { + aliases: { + bg: 'backgroundColor', + backgroundColor: 'backgroundColor', + bgColor: 'backgroundColor', + color: 'color', + borderColor: 'borderColor', + shadowColor: 'shadowColor', + shadowOffset: 'shadowOffset', + shadowOpacity: 'shadowOpacity', + shadowRadius: 'shadowRadius', + elevation: 'elevation', + // dimension + h: 'height', + w: 'width', + height: 'height', + width: 'width', + // padding + p: 'padding', + px: 'paddingHorizontal', + py: 'paddingVertical', + pt: 'paddingTop', + pb: 'paddingBottom', + pr: 'paddingRight', + pl: 'paddingLeft', + padding: 'padding', + paddingHorizontal: 'paddingHorizontal', + paddingVertical: 'paddingVertical', + paddingTop: 'paddingTop', + paddingBottom: 'paddingBottom', + paddingRight: 'paddingRight', + paddingLeft: 'paddingLeft', + // margin + m: 'margin', + mx: 'marginHorizontal', + my: 'marginVertical', + mt: 'marginTop', + mb: 'marginBottom', + mr: 'marginRight', + ml: 'marginLeft', + margin: 'margin', + marginHorizontal: 'marginHorizontal', + marginVertical: 'marginVertical', + marginTop: 'marginTop', + marginBottom: 'marginBottom', + marginRight: 'marginRight', + marginLeft: 'marginLeft', + // Borders + borderWidth: 'borderWidth', + borderRadius: 'borderRadius', + rounded: 'borderRadius', + // Typography + letterSpacing: 'letterSpacing', + lineHeight: 'lineHeight', + fontWeight: 'fontWeight', + fontFamily: 'fontFamily', + fontSize: 'fontSize', + shadow: 'shadow', + // Media Query + condition: 'condition', + }, + + tokens: { + shadows: { + 'none': { + shadowColor: 'transparent', + shadowOffset: { + width: 0, + height: 0, + }, + shadowOpacity: 0, + shadowRadius: 0, + elevation: 0, + }, + '0': { + shadowColor: 'black', + shadowOffset: { + width: 0, + height: 1, + }, + shadowOpacity: 0.18, + shadowRadius: 1.0, + elevation: 1, + }, + '1': { + shadowColor: '$red500', + shadowOffset: { + width: 0, + height: 1, + }, + shadowOpacity: 0.2, + shadowRadius: 1.41, + elevation: 2, + }, + '2': { + shadowColor: 'black', + shadowOffset: { + width: 0, + height: 1, + }, + shadowOpacity: 0.22, + shadowRadius: 2.22, + elevation: 3, + }, + '3': { + shadowColor: 'black', + shadowOffset: { + width: 0, + height: 2, + }, + shadowOpacity: 0.23, + shadowRadius: 2.62, + elevation: 4, + }, + '4': { + shadowColor: 'black', + shadowOffset: { + width: 0, + height: 2, + }, + shadowOpacity: 0.25, + shadowRadius: 3.84, + elevation: 5, + }, + '5': { + shadowColor: 'black', + shadowOffset: { + width: 0, + height: 3, + }, + shadowOpacity: 0.27, + shadowRadius: 4.65, + elevation: 6, + }, + '6': { + shadowColor: 'black', + shadowOffset: { + width: 0, + height: 3, + }, + shadowOpacity: 0.29, + shadowRadius: 4.65, + elevation: 7, + }, + '7': { + shadowColor: 'black', + shadowOffset: { + width: 0, + height: 4, + }, + shadowOpacity: 0.3, + shadowRadius: 4.65, + elevation: 8, + }, + '8': { + shadowColor: 'black', + shadowOffset: { + width: 0, + height: 4, + }, + shadowOpacity: 0.32, + shadowRadius: 5.46, + elevation: 9, + }, + '9': { + shadowColor: 'black', + shadowOffset: { + width: 0, + height: 5, + }, + shadowOpacity: 0.34, + shadowRadius: 6.27, + elevation: 10, + }, + }, + colors: { + rose50: '#fff1f2', + rose100: '#ffe4e6', + rose200: '#fecdd3', + rose300: '#fda4af', + rose400: '#fb7185', + rose500: '#f43f5e', + rose600: '#e11d48', + rose700: '#be123c', + rose800: '#9f1239', + rose900: '#881337', + pink50: '#fdf2f8', + pink100: '#fce7f3', + pink200: '#fbcfe8', + pink300: '#f9a8d4', + pink400: '#f472b6', + pink500: '#ec4899', + pink600: '#db2777', + pink700: '#be185d', + pink800: '#9d174d', + pink900: '#831843', + fuchsia50: '#fdf4ff', + fuchsia100: '#fae8ff', + fuchsia200: '#f5d0fe', + fuchsia300: '#f0abfc', + fuchsia400: '#e879f9', + fuchsia500: '#d946ef', + fuchsia600: '#c026d3', + fuchsia700: '#a21caf', + fuchsia800: '#86198f', + fuchsia900: '#701a75', + purple50: '#faf5ff', + purple100: '#f3e8ff', + purple200: '#e9d5ff', + purple300: '#d8b4fe', + purple400: '#c084fc', + purple500: '#a855f7', + purple600: '#9333ea', + purple700: '#7e22ce', + purple800: '#6b21a8', + purple900: '#581c87', + violet50: '#f5f3ff', + violet100: '#ede9fe', + violet200: '#ddd6fe', + violet300: '#c4b5fd', + violet400: '#a78bfa', + violet500: '#8b5cf6', + violet600: '#7c3aed', + violet700: '#6d28d9', + violet800: '#5b21b6', + violet900: '#4c1d95', + indigo50: '#eef2ff', + indigo100: '#e0e7ff', + indigo200: '#c7d2fe', + indigo300: '#a5b4fc', + indigo400: '#818cf8', + indigo500: '#6366f1', + indigo600: '#4f46e5', + indigo700: '#4338ca', + indigo800: '#3730a3', + indigo900: '#312e81', + blue50: '#eff6ff', + blue100: '#dbeafe', + blue200: '#bfdbfe', + blue300: '#93c5fd', + blue400: '#60a5fa', + blue500: '#3b82f6', + blue600: '#2563eb', + blue600_alpha10: '#06b6d41a', + blue600_alpha20: '#06b6d433', + blue700: '#1d4ed8', + blue800: '#1e40af', + blue900: '#1e3a8a', + lightBlue50: '#f0f9ff', + lightBlue100: '#e0f2fe', + lightBlue200: '#bae6fd', + lightBlue300: '#7dd3fc', + lightBlue400: '#38bdf8', + lightBlue500: '#0ea5e9', + lightBlue600: '#0284c7', + lightBlue700: '#0369a1', + lightBlue800: '#075985', + lightBlue900: '#0c4a6e', + darkBlue50: '#dbf4ff', + darkBlue100: '#addbff', + darkBlue200: '#7cc2ff', + darkBlue300: '#4aa9ff', + darkBlue400: '#1a91ff', + darkBlue500: '#0077e6', + darkBlue600: '#005db4', + darkBlue700: '#004282', + darkBlue800: '#002851', + darkBlue900: '#000e21', + cyan50: '#ecfeff', + cyan100: '#cffafe', + cyan200: '#a5f3fc', + cyan300: '#67e8f9', + cyan400: '#22d3ee', + cyan500: '#06b6d4', + cyan600: '#0891b2', + cyan700: '#0e7490', + cyan800: '#155e75', + cyan900: '#164e63', + teal50: '#f0fdfa', + teal100: '#ccfbf1', + teal200: '#99f6e4', + teal300: '#5eead4', + teal400: '#2dd4bf', + teal500: '#14b8a6', + teal600: '#0d9488', + teal700: '#0f766e', + teal800: '#115e59', + teal900: '#134e4a', + emerald50: '#ecfdf5', + emerald100: '#d1fae5', + emerald200: '#a7f3d0', + emerald300: '#6ee7b7', + emerald400: '#34d399', + emerald500: '#10b981', + emerald600: '#059669', + emerald700: '#047857', + emerald800: '#065f46', + emerald900: '#064e3b', + green50: '#f0fdf4', + green100: '#dcfce7', + green200: '#bbf7d0', + green300: '#86efac', + green400: '#4ade80', + green500: '#22c55e', + green600: '#16a34a', + green700: '#15803d', + green800: '#166534', + green900: '#14532d', + lime50: '#f7fee7', + lime100: '#ecfccb', + lime200: '#d9f99d', + lime300: '#bef264', + lime400: '#a3e635', + lime500: '#84cc16', + lime600: '#65a30d', + lime700: '#4d7c0f', + lime800: '#3f6212', + lime900: '#365314', + yellow50: '#fefce8', + yellow100: '#fef9c3', + yellow200: '#fef08a', + yellow300: '#fde047', + yellow400: '#facc15', + yellow500: '#eab308', + yellow600: '#ca8a04', + yellow700: '#a16207', + yellow800: '#854d0e', + yellow900: '#713f12', + amber50: '#fffbeb', + amber100: '#fef3c7', + amber200: '#fde68a', + amber300: '#fcd34d', + amber400: '#fbbf24', + amber500: '#f59e0b', + amber600: '#d97706', + amber700: '#b45309', + amber800: '#92400e', + amber900: '#78350f', + orange50: '#fff7ed', + orange100: '#ffedd5', + orange200: '#fed7aa', + orange300: '#fdba74', + orange400: '#fb923c', + orange500: '#f97316', + orange600: '#ea580c', + orange700: '#c2410c', + orange800: '#9a3412', + orange900: '#7c2d12', + red50: '#fef2f2', + red100: '#fee2e2', + red200: '#fecaca', + red300: '#fca5a5', + red400: '#f87171', + red500: '#ef4444', + red600: '#dc2626', + red700: '#b91c1c', + red800: '#991b1b', + red900: '#7f1d1d', + warmGray50: '#fafaf9', + warmGray100: '#f5f5f4', + warmGray200: '#e7e5e4', + warmGray300: '#d6d3d1', + warmGray400: '#a8a29e', + warmGray500: '#78716c', + warmGray600: '#57534e', + warmGray700: '#44403c', + warmGray800: '#292524', + warmGray900: '#1c1917', + trueGray50: '#fafafa', + trueGray100: '#f5f5f5', + trueGray200: '#e5e5e5', + trueGray300: '#d4d4d4', + trueGray400: '#a3a3a3', + trueGray500: '#737373', + trueGray600: '#525252', + trueGray700: '#404040', + trueGray800: '#262626', + trueGray900: '#171717', + gray50: '#fafafa', + gray100: '#f4f4f5', + gray200: '#e4e4e7', + gray300: '#d4d4d8', + gray400: '#a1a1aa', + gray500: '#71717a', + gray600: '#52525b', + gray700: '#3f3f46', + gray800: '#27272a', + gray900: '#18181b', + coolGray50: '#f9fafb', + coolGray100: '#f3f4f6', + coolGray200: '#e5e7eb', + coolGray300: '#d1d5db', + coolGray400: '#9ca3af', + coolGray500: '#6b7280', + coolGray600: '#4b5563', + coolGray700: '#374151', + coolGray800: '#1f2937', + coolGray900: '#111827', + blueGray50: '#f8fafc', + blueGray100: '#f1f5f9', + blueGray200: '#e2e8f0', + blueGray300: '#cbd5e1', + blueGray400: '#94a3b8', + blueGray500: '#64748b', + blueGray600: '#475569', + blueGray700: '#334155', + blueGray800: '#1e293b', + blueGray900: '#0f172a', + text50: '#fafafa', + text100: '#f5f5f5', + text200: '#e5e5e5', + text300: '#d4d4d4', + text400: '#a3a3a3', + text500: '#737373', + text600: '#525252', + text700: '#404040', + text800: '#262626', + text900: '#171717', + light50: '#fafaf9', + light100: '#f5f5f4', + light200: '#e7e5e4', + light300: '#d6d3d1', + light400: '#a8a29e', + light500: '#78716c', + light600: '#57534e', + light700: '#44403c', + light800: '#292524', + light900: '#1c1917', + dark50: '#18181b', + dark100: '#27272a', + dark200: '#3f3f46', + dark300: '#52525b', + dark400: '#71717a', + dark500: '#a1a1aa', + dark600: '#d4d4d8', + dark700: '#e4e4e7', + dark800: '#f4f4f5', + dark900: '#fafafa', + // Will keep following colors + white: '#FFFFFF', + black: '#000000', + lightText: '#FFFFFF', + darkText: '#000000', + + //Primary, Secondary, Tertiary + primary50: '#dbf4ff', + primary50_alpha_50: '#DBF4FF80', + primary100: '#addbff', + primary100_alpha_30: '#ADDBFF4D', + primary100_alpha_50: '#ADDBFF80', + primary200: '#7cc2ff', + primary300: '#4aa9ff', + primary400: '#1a91ff', + primary500: '#0077e6', + primary600: '#005db4', + primary600_alpha_30: '#005DB44D', + primary600_alpha_50: '#005DB480', + primary700: '#004282', + primary800: '#002851', + primary900: '#000e21', + secondary50: '#fafafa', + secondary50_alpha_10: '#ffffff1a', + secondary50_alpha_20: '#ffffff33', + secondary100: '#f5f5f5', + secondary200: '#e5e5e5', + secondary300: '#d4d4d4', + secondary300_alpha_70: '#d4d4d4b3', + secondary400: '#a3a3a3', + secondary500: '#737373', + secondary600: '#525252', + secondary700: '#404040', + secondary800: '#262626', + secondary900: '#171717', + tertiary50: '#ecfdf5', + tertiary100: '#d1fae5', + tertiary200: '#a7f3d0', + tertiary300: '#6ee7b7', + tertiary400: '#34d399', + tertiary500: '#10b981', + tertiary600: '#059669', + tertiary700: '#047857', + tertiary800: '#065f46', + tertiary900: '#064e3b', + + //Info, Warning, Danger, Error, Success + info100: '#e0f2fe', + info200: '#bae6fd', + info300: '#7dd3fc', + info400: '#38bdf8', + info500: '#0ea5e9', + info600: '#0284c7', + info700: '#0369a1', + info800: '#075985', + info900: '#0c4a6e', + danger50: '#fff1f2', + danger100: '#ffe4e6', + danger200: '#fecdd3', + danger300: '#fda4af', + danger400: '#fb7185', + danger500: '#f43f5e', + danger600: '#e11d48', + danger700: '#be123c', + danger800: '#9f1239', + danger900: '#881337', + error50: '#fef2f2', + error100: '#fee2e2', + error200: '#fecaca', + error300: '#fca5a5', + error400: '#f87171', + error500: '#ef4444', + error600: '#dc2626', + error700: '#b91c1c', + error800: '#991b1b', + error900: '#7f1d1d', + success50: '#f0fdf4', + success100: '#dcfce7', + success200: '#bbf7d0', + success300: '#86efac', + success400: '#4ade80', + success500: '#22c55e', + success600: '#16a34a', + success700: '#15803d', + success800: '#166534', + success900: '#14532d', + warning50: '#fff7ed', + warning100: '#ffedd5', + warning200: '#fed7aa', + warning300: '#fdba74', + warning400: '#fb923c', + warning500: '#f97316', + warning600: '#ea580c', + warning700: '#c2410c', + warning800: '#9a3412', + warning900: '#7c2d12', + muted50: '#fafafa', + muted100: '#f5f5f5', + muted200: '#e5e5e5', + muted300: '#d4d4d4', + muted400: '#a3a3a3', + muted500: '#737373', + muted600: '#525252', + muted700: '#404040', + muted800: '#262626', + muted900: '#171717', + + textLight50: '#fafafa', + textLight100: '#f5f5f5', + textLight200: '#e5e5e5', + textLight300: '#d4d4d4', + textLight400: '#a3a3a3', + textLight500: '#737373', + textLight600: '#525252', + textLight700: '#404040', + textLight800: '#262626', + textLight900: '#171717', + textDark50: '#fafafa', + textDark100: '#f5f5f5', + textDark200: '#e5e5e5', + textDark300: '#d4d4d4', + textDark400: '#a3a3a3', + textDark500: '#737373', + textDark600: '#525252', + textDark700: '#404040', + textDark800: '#262626', + textDark900: '#171717', + + borderLight50: '#fafafa', + borderLight100: '#f5f5f5', + borderLight200: '#e5e5e5', + borderLight300: '#d4d4d4', + borderLight400: '#a3a3a3', + borderLight500: '#737373', + borderLight600: '#525252', + borderLight700: '#404040', + borderLight800: '#262626', + borderLight900: '#171717', + borderDark50: '#fafafa', + borderDark100: '#f5f5f5', + borderDark200: '#e5e5e5', + borderDark300: '#d4d4d4', + borderDark400: '#a3a3a3', + borderDark500: '#737373', + borderDark600: '#525252', + borderDark700: '#404040', + borderDark800: '#262626', + borderDark900: '#171717', + + backgroundLight50: '#fafafa', + backgroundLight100: '#f5f5f5', + backgroundLight200: '#e5e5e5', + backgroundLight300: '#d4d4d4', + backgroundLight400: '#a3a3a3', + backgroundLight500: '#737373', + backgroundLight600: '#525252', + backgroundLight700: '#404040', + backgroundLight800: '#262626', + backgroundLight900: '#171717', + backgroundDark50: '#fafafa', + backgroundDark100: '#f5f5f5', + backgroundDark200: '#e5e5e5', + backgroundDark300: '#d4d4d4', + backgroundDark400: '#a3a3a3', + backgroundDark500: '#737373', + backgroundDark600: '#525252', + backgroundDark700: '#404040', + backgroundDark800: '#262626', + backgroundDark900: '#171717', + }, + space: { + 'px': '1px', + '0': 0, + '0.5': 2, + '1': 4, + '1.5': 6, + '2': 8, + '2.5': 10, + '3': 12, + '3.5': 14, + '4': 16, + '5': 20, + '6': 24, + '7': 28, + '8': 32, + '9': 36, + '10': 40, + '12': 48, + '16': 64, + '20': 80, + '24': 96, + '32': 128, + '40': 160, + '48': 192, + '56': 224, + '64': 256, + '72': 288, + '80': 320, + '96': 384, + '1/2': '50%', + '1/3': '33.333%', + '2/3': '66.666%', + '1/4': '25%', + '2/4': '50%', + '3/4': '75%', + '1/5': '20%', + '2/5': '40%', + '3/5': '60%', + '4/5': '80%', + '1/6': '16.666%', + '2/6': '33.333%', + '3/6': '50%', + '4/6': '66.666%', + '5/6': '83.333%', + 'full': '100%', + }, + borderWidths: { + '0': 0, + '1': '1px', + '2': '2px', + '4': '4px', + '8': '8px', + }, + radii: { + 'none': 0, + 'xs': 2, + 'sm': 4, + 'md': 6, + 'lg': 8, + 'xl': 12, + '2xl': 16, + '3xl': 24, + 'full': 9999, + }, + breakpoints: { + base: 0, + sm: 480, + md: 768, + lg: 992, + xl: 1280, + }, + mediaQueries: { + base: '@media screen and (min-width: 0)', + sm: '@media screen and (min-width: 480px)', + md: '@media screen and (min-width: 768px)', + lg: '@media screen and (min-width: 992px)', + xl: '@media screen and (min-width: 1280px)', + }, + letterSpacings: { + 'xs': '-0.05em', + 'sm': '-0.025em', + 'md': 0, + 'lg': '0.025em', + 'xl': '0.05em', + '2xl': '0.1em', + }, + lineHeights: { + '2xs': '16px', + 'xs': '18px', + 'sm': '22px', + 'md': '24px', + 'lg': '28px', + 'xl': '30px', + '2xl': '36px', + '3xl': '46px', + '4xl': '54px', + '5xl': '72px', + '6xl': '90px', + '7xl': '108px', + '8xl': '144px', + '9xl': '144px', + }, + fontWeights: { + hairline: '100', + thin: '200', + light: '300', + normal: '400', + medium: '500', + semibold: '600', + bold: '700', + extrabold: '800', + black: '900', + extraBlack: '950', + }, + fonts: { + heading: 'Plus Jakarta Sans, sans-serif', + body: 'Inter, sans-serif', + mono: 'Source Code Pro', + // body400: + }, + fontSizes: { + '2xs': 10, + 'xs': 12, + 'sm': 14, + 'md': 16, + 'lg': 18, + 'xl': 20, + '2xl': 24, + '3xl': 30, + '4xl': 36, + '5xl': 48, + '6xl': 60, + '7xl': 72, + '8xl': 96, + '9xl': 128, + }, + }, +} as const; + +// type ConfigType = typeof config; + +// declare module '@gluestack-style/react' { +// interface ICustomConfig extends ConfigType {} +// } diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/core/AppProvider/config_old.ts b/example/storybook-nativewind/src/components/Checkbox/design-system/src/core/AppProvider/config_old.ts new file mode 100644 index 0000000000..b627bcdeaf --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/core/AppProvider/config_old.ts @@ -0,0 +1,753 @@ +// import { getConfig } from '@universa11y/config'; +export const config = { + aliases: { + bg: 'backgroundColor', + backgroundColor: 'backgroundColor', + bgColor: 'backgroundColor', + color: 'color', + borderColor: 'borderColor', + shadowColor: 'shadowColor', + shadowOffset: 'shadowOffset', + shadowOpacity: 'shadowOpacity', + shadowRadius: 'shadowRadius', + elevation: 'elevation', + // dimension + h: 'height', + w: 'width', + height: 'height', + width: 'width', + // padding + p: 'padding', + px: 'paddingHorizontal', + py: 'paddingVertical', + pt: 'paddingTop', + pb: 'paddingBottom', + pr: 'paddingRight', + pl: 'paddingLeft', + padding: 'padding', + paddingHorizontal: 'paddingHorizontal', + paddingVertical: 'paddingVertical', + paddingTop: 'paddingTop', + paddingBottom: 'paddingBottom', + paddingRight: 'paddingRight', + paddingLeft: 'paddingLeft', + // margin + m: 'margin', + mx: 'marginHorizontal', + my: 'marginVertical', + mt: 'marginTop', + mb: 'marginBottom', + mr: 'marginRight', + ml: 'marginLeft', + margin: 'margin', + marginHorizontal: 'marginHorizontal', + marginVertical: 'marginVertical', + marginTop: 'marginTop', + marginBottom: 'marginBottom', + marginRight: 'marginRight', + marginLeft: 'marginLeft', + // Borders + borderWidth: 'borderWidth', + borderRadius: 'borderRadius', + rounded: 'borderRadius', + // Typography + letterSpacing: 'letterSpacing', + lineHeight: 'lineHeight', + fontWeight: 'fontWeight', + fontFamily: 'fontFamily', + fontSize: 'fontSize', + shadow: 'shadow', + // Media Query + condition: 'condition', + }, + + tokens: { + shadows: { + 'none': { + shadowColor: 'transparent', + shadowOffset: { + width: 0, + height: 0, + }, + shadowOpacity: 0, + shadowRadius: 0, + elevation: 0, + }, + '0': { + shadowColor: 'black', + shadowOffset: { + width: 0, + height: 1, + }, + shadowOpacity: 0.18, + shadowRadius: 1.0, + elevation: 1, + }, + '1': { + shadowColor: '$red500', + shadowOffset: { + width: 0, + height: 1, + }, + shadowOpacity: 0.2, + shadowRadius: 1.41, + elevation: 2, + }, + '2': { + shadowColor: 'black', + shadowOffset: { + width: 0, + height: 1, + }, + shadowOpacity: 0.22, + shadowRadius: 2.22, + elevation: 3, + }, + '3': { + shadowColor: 'black', + shadowOffset: { + width: 0, + height: 2, + }, + shadowOpacity: 0.23, + shadowRadius: 2.62, + elevation: 4, + }, + '4': { + shadowColor: 'black', + shadowOffset: { + width: 0, + height: 2, + }, + shadowOpacity: 0.25, + shadowRadius: 3.84, + elevation: 5, + }, + '5': { + shadowColor: 'black', + shadowOffset: { + width: 0, + height: 3, + }, + shadowOpacity: 0.27, + shadowRadius: 4.65, + elevation: 6, + }, + '6': { + shadowColor: 'black', + shadowOffset: { + width: 0, + height: 3, + }, + shadowOpacity: 0.29, + shadowRadius: 4.65, + elevation: 7, + }, + '7': { + shadowColor: 'black', + shadowOffset: { + width: 0, + height: 4, + }, + shadowOpacity: 0.3, + shadowRadius: 4.65, + elevation: 8, + }, + '8': { + shadowColor: 'black', + shadowOffset: { + width: 0, + height: 4, + }, + shadowOpacity: 0.32, + shadowRadius: 5.46, + elevation: 9, + }, + '9': { + shadowColor: 'black', + shadowOffset: { + width: 0, + height: 5, + }, + shadowOpacity: 0.34, + shadowRadius: 6.27, + elevation: 10, + }, + }, + colors: { + rose50: '#fff1f2', + rose100: '#ffe4e6', + rose200: '#fecdd3', + rose300: '#fda4af', + rose400: '#fb7185', + rose500: '#f43f5e', + rose600: '#e11d48', + rose700: '#be123c', + rose800: '#9f1239', + rose900: '#881337', + pink50: '#fdf2f8', + pink100: '#fce7f3', + pink200: '#fbcfe8', + pink300: '#f9a8d4', + pink400: '#f472b6', + pink500: '#ec4899', + pink600: '#db2777', + pink700: '#be185d', + pink800: '#9d174d', + pink900: '#831843', + fuchsia50: '#fdf4ff', + fuchsia100: '#fae8ff', + fuchsia200: '#f5d0fe', + fuchsia300: '#f0abfc', + fuchsia400: '#e879f9', + fuchsia500: '#d946ef', + fuchsia600: '#c026d3', + fuchsia700: '#a21caf', + fuchsia800: '#86198f', + fuchsia900: '#701a75', + purple50: '#faf5ff', + purple100: '#f3e8ff', + purple200: '#e9d5ff', + purple300: '#d8b4fe', + purple400: '#c084fc', + purple500: '#a855f7', + purple600: '#9333ea', + purple700: '#7e22ce', + purple800: '#6b21a8', + purple900: '#581c87', + violet50: '#f5f3ff', + violet100: '#ede9fe', + violet200: '#ddd6fe', + violet300: '#c4b5fd', + violet400: '#a78bfa', + violet500: '#8b5cf6', + violet600: '#7c3aed', + violet700: '#6d28d9', + violet800: '#5b21b6', + violet900: '#4c1d95', + indigo50: '#eef2ff', + indigo100: '#e0e7ff', + indigo200: '#c7d2fe', + indigo300: '#a5b4fc', + indigo400: '#818cf8', + indigo500: '#6366f1', + indigo600: '#4f46e5', + indigo700: '#4338ca', + indigo800: '#3730a3', + indigo900: '#312e81', + blue50: '#eff6ff', + blue100: '#dbeafe', + blue200: '#bfdbfe', + blue300: '#93c5fd', + blue400: '#60a5fa', + blue500: '#3b82f6', + blue600: '#2563eb', + blue600_alpha10: '#06b6d41a', + blue600_alpha20: '#06b6d433', + blue700: '#1d4ed8', + blue800: '#1e40af', + blue900: '#1e3a8a', + lightBlue50: '#f0f9ff', + lightBlue100: '#e0f2fe', + lightBlue200: '#bae6fd', + lightBlue300: '#7dd3fc', + lightBlue400: '#38bdf8', + lightBlue500: '#0ea5e9', + lightBlue600: '#0284c7', + lightBlue700: '#0369a1', + lightBlue800: '#075985', + lightBlue900: '#0c4a6e', + darkBlue50: '#dbf4ff', + darkBlue100: '#addbff', + darkBlue200: '#7cc2ff', + darkBlue300: '#4aa9ff', + darkBlue400: '#1a91ff', + darkBlue500: '#0077e6', + darkBlue600: '#005db4', + darkBlue700: '#004282', + darkBlue800: '#002851', + darkBlue900: '#000e21', + cyan50: '#ecfeff', + cyan100: '#cffafe', + cyan200: '#a5f3fc', + cyan300: '#67e8f9', + cyan400: '#22d3ee', + cyan500: '#06b6d4', + cyan600: '#0891b2', + cyan700: '#0e7490', + cyan800: '#155e75', + cyan900: '#164e63', + teal50: '#f0fdfa', + teal100: '#ccfbf1', + teal200: '#99f6e4', + teal300: '#5eead4', + teal400: '#2dd4bf', + teal500: '#14b8a6', + teal600: '#0d9488', + teal700: '#0f766e', + teal800: '#115e59', + teal900: '#134e4a', + emerald50: '#ecfdf5', + emerald100: '#d1fae5', + emerald200: '#a7f3d0', + emerald300: '#6ee7b7', + emerald400: '#34d399', + emerald500: '#10b981', + emerald600: '#059669', + emerald700: '#047857', + emerald800: '#065f46', + emerald900: '#064e3b', + green50: '#f0fdf4', + green100: '#dcfce7', + green200: '#bbf7d0', + green300: '#86efac', + green400: '#4ade80', + green500: '#22c55e', + green600: '#16a34a', + green700: '#15803d', + green800: '#166534', + green900: '#14532d', + lime50: '#f7fee7', + lime100: '#ecfccb', + lime200: '#d9f99d', + lime300: '#bef264', + lime400: '#a3e635', + lime500: '#84cc16', + lime600: '#65a30d', + lime700: '#4d7c0f', + lime800: '#3f6212', + lime900: '#365314', + yellow50: '#fefce8', + yellow100: '#fef9c3', + yellow200: '#fef08a', + yellow300: '#fde047', + yellow400: '#facc15', + yellow500: '#eab308', + yellow600: '#ca8a04', + yellow700: '#a16207', + yellow800: '#854d0e', + yellow900: '#713f12', + amber50: '#fffbeb', + amber100: '#fef3c7', + amber200: '#fde68a', + amber300: '#fcd34d', + amber400: '#fbbf24', + amber500: '#f59e0b', + amber600: '#d97706', + amber700: '#b45309', + amber800: '#92400e', + amber900: '#78350f', + orange50: '#fff7ed', + orange100: '#ffedd5', + orange200: '#fed7aa', + orange300: '#fdba74', + orange400: '#fb923c', + orange500: '#f97316', + orange600: '#ea580c', + orange700: '#c2410c', + orange800: '#9a3412', + orange900: '#7c2d12', + red50: '#fef2f2', + red100: '#fee2e2', + red200: '#fecaca', + red300: '#fca5a5', + red400: '#f87171', + red500: '#ef4444', + red600: '#dc2626', + red700: '#b91c1c', + red800: '#991b1b', + red900: '#7f1d1d', + warmGray50: '#fafaf9', + warmGray100: '#f5f5f4', + warmGray200: '#e7e5e4', + warmGray300: '#d6d3d1', + warmGray400: '#a8a29e', + warmGray500: '#78716c', + warmGray600: '#57534e', + warmGray700: '#44403c', + warmGray800: '#292524', + warmGray900: '#1c1917', + trueGray50: '#fafafa', + trueGray100: '#f5f5f5', + trueGray200: '#e5e5e5', + trueGray300: '#d4d4d4', + trueGray400: '#a3a3a3', + trueGray500: '#737373', + trueGray600: '#525252', + trueGray700: '#404040', + trueGray800: '#262626', + trueGray900: '#171717', + gray50: '#fafafa', + gray100: '#f4f4f5', + gray200: '#e4e4e7', + gray300: '#d4d4d8', + gray400: '#a1a1aa', + gray500: '#71717a', + gray600: '#52525b', + gray700: '#3f3f46', + gray800: '#27272a', + gray900: '#18181b', + coolGray50: '#f9fafb', + coolGray100: '#f3f4f6', + coolGray200: '#e5e7eb', + coolGray300: '#d1d5db', + coolGray400: '#9ca3af', + coolGray500: '#6b7280', + coolGray600: '#4b5563', + coolGray700: '#374151', + coolGray800: '#1f2937', + coolGray900: '#111827', + blueGray50: '#f8fafc', + blueGray100: '#f1f5f9', + blueGray200: '#e2e8f0', + blueGray300: '#cbd5e1', + blueGray400: '#94a3b8', + blueGray500: '#64748b', + blueGray600: '#475569', + blueGray700: '#334155', + blueGray800: '#1e293b', + blueGray900: '#0f172a', + text50: '#fafafa', + text100: '#f5f5f5', + text200: '#e5e5e5', + text300: '#d4d4d4', + text400: '#a3a3a3', + text500: '#737373', + text600: '#525252', + text700: '#404040', + text800: '#262626', + text900: '#171717', + light50: '#fafaf9', + light100: '#f5f5f4', + light200: '#e7e5e4', + light300: '#d6d3d1', + light400: '#a8a29e', + light500: '#78716c', + light600: '#57534e', + light700: '#44403c', + light800: '#292524', + light900: '#1c1917', + dark50: '#18181b', + dark100: '#27272a', + dark200: '#3f3f46', + dark300: '#52525b', + dark400: '#71717a', + dark500: '#a1a1aa', + dark600: '#d4d4d8', + dark700: '#e4e4e7', + dark800: '#f4f4f5', + dark900: '#fafafa', + // Will keep following colors + white: '#FFFFFF', + black: '#000000', + lightText: '#FFFFFF', + darkText: '#000000', + + //Primary, Secondary, Tertiary + primary50: '#dbf4ff', + primary50_alpha_50: '#DBF4FF80', + primary100: '#addbff', + primary100_alpha_30: '##ADDBFF4D', + primary100_alpha_50: '#ADDBFF80', + primary200: '#7cc2ff', + primary300: '#4aa9ff', + primary400: '#1a91ff', + primary500: '#0077e6', + primary600: '#005db4', + primary600_alpha_30: '#005DB44D', + primary600_alpha_50: '#005DB480', + primary700: '#004282', + primary800: '#002851', + primary900: '#000e21', + secondary50: '#fafafa', + secondary50_alpha_10: '#ffffff1a', + secondary50_alpha_20: '#ffffff33', + secondary100: '#f5f5f5', + secondary200: '#e5e5e5', + secondary300: '#d4d4d4', + secondary300_alpha_70: '#d4d4d4b3', + secondary400: '#a3a3a3', + secondary500: '#737373', + secondary600: '#525252', + secondary700: '#404040', + secondary800: '#262626', + secondary900: '#171717', + tertiary50: '#ecfdf5', + tertiary100: '#d1fae5', + tertiary200: '#a7f3d0', + tertiary300: '#6ee7b7', + tertiary400: '#34d399', + tertiary500: '#10b981', + tertiary600: '#059669', + tertiary700: '#047857', + tertiary800: '#065f46', + tertiary900: '#064e3b', + + //Info, Warning, Danger, Error, Success + info100: '#e0f2fe', + info200: '#bae6fd', + info300: '#7dd3fc', + info400: '#38bdf8', + info500: '#0ea5e9', + info600: '#0284c7', + info700: '#0369a1', + info800: '#075985', + info900: '#0c4a6e', + danger50: '#fff1f2', + danger100: '#ffe4e6', + danger200: '#fecdd3', + danger300: '#fda4af', + danger400: '#fb7185', + danger500: '#f43f5e', + danger600: '#e11d48', + danger700: '#be123c', + danger800: '#9f1239', + danger900: '#881337', + error50: '#fef2f2', + error100: '#fee2e2', + error200: '#fecaca', + error300: '#fca5a5', + error400: '#f87171', + error500: '#ef4444', + error600: '#dc2626', + error700: '#b91c1c', + error800: '#991b1b', + error900: '#7f1d1d', + success50: '#f0fdf4', + success100: '#dcfce7', + success200: '#bbf7d0', + success300: '#86efac', + success400: '#4ade80', + success500: '#22c55e', + success600: '#16a34a', + success700: '#15803d', + success800: '#166534', + success900: '#14532d', + warning50: '#fff7ed', + warning100: '#ffedd5', + warning200: '#fed7aa', + warning300: '#fdba74', + warning400: '#fb923c', + warning500: '#f97316', + warning600: '#ea580c', + warning700: '#c2410c', + warning800: '#9a3412', + warning900: '#7c2d12', + muted50: '#fafafa', + muted100: '#f5f5f5', + muted200: '#e5e5e5', + muted300: '#d4d4d4', + muted400: '#a3a3a3', + muted500: '#737373', + muted600: '#525252', + muted700: '#404040', + muted800: '#262626', + muted900: '#171717', + + textLight50: '#fafafa', + textLight100: '#f5f5f5', + textLight200: '#e5e5e5', + textLight300: '#d4d4d4', + textLight400: '#a3a3a3', + textLight500: '#737373', + textLight600: '#525252', + textLight700: '#404040', + textLight800: '#262626', + textLight900: '#171717', + textDark50: '#fafafa', + textDark100: '#f5f5f5', + textDark200: '#e5e5e5', + textDark300: '#d4d4d4', + textDark400: '#a3a3a3', + textDark500: '#737373', + textDark600: '#525252', + textDark700: '#404040', + textDark800: '#262626', + textDark900: '#171717', + + borderLight50: '#fafafa', + borderLight100: '#f5f5f5', + borderLight200: '#e5e5e5', + borderLight300: '#d4d4d4', + borderLight400: '#a3a3a3', + borderLight500: '#737373', + borderLight600: '#525252', + borderLight700: '#404040', + borderLight800: '#262626', + borderLight900: '#171717', + borderDark50: '#fafafa', + borderDark100: '#f5f5f5', + borderDark200: '#e5e5e5', + borderDark300: '#d4d4d4', + borderDark400: '#a3a3a3', + borderDark500: '#737373', + borderDark600: '#525252', + borderDark700: '#404040', + borderDark800: '#262626', + borderDark900: '#171717', + + backgroundLight50: '#fafafa', + backgroundLight100: '#f5f5f5', + backgroundLight200: '#e5e5e5', + backgroundLight300: '#d4d4d4', + backgroundLight400: '#a3a3a3', + backgroundLight500: '#737373', + backgroundLight600: '#525252', + backgroundLight700: '#404040', + backgroundLight800: '#262626', + backgroundLight900: '#171717', + backgroundDark50: '#fafafa', + backgroundDark100: '#f5f5f5', + backgroundDark200: '#e5e5e5', + backgroundDark300: '#d4d4d4', + backgroundDark400: '#a3a3a3', + backgroundDark500: '#737373', + backgroundDark600: '#525252', + backgroundDark700: '#404040', + backgroundDark800: '#262626', + backgroundDark900: '#171717', + }, + space: { + 'px': '1px', + '0': 0, + '0.5': 2, + '1': 4, + '1.5': 6, + '2': 8, + '2.5': 10, + '3': 12, + '3.5': 14, + '4': 16, + '5': 20, + '6': 24, + '7': 28, + '8': 32, + '9': 36, + '10': 40, + '12': 48, + '16': 64, + '20': 80, + '24': 96, + '32': 128, + '40': 160, + '48': 192, + '56': 224, + '64': 256, + '72': 288, + '80': 320, + '96': 384, + '1/2': '50%', + '1/3': '33.333%', + '2/3': '66.666%', + '1/4': '25%', + '2/4': '50%', + '3/4': '75%', + '1/5': '20%', + '2/5': '40%', + '3/5': '60%', + '4/5': '80%', + '1/6': '16.666%', + '2/6': '33.333%', + '3/6': '50%', + '4/6': '66.666%', + '5/6': '83.333%', + 'full': '100%', + }, + borderWidths: { + '0': 0, + '1': '1px', + '2': '2px', + '4': '4px', + '8': '8px', + }, + radii: { + 'none': 0, + 'xs': 2, + 'sm': 4, + 'md': 6, + 'lg': 8, + 'xl': 12, + '2xl': 16, + '3xl': 24, + 'full': 9999, + }, + breakpoints: { + base: 0, + sm: 480, + md: 768, + lg: 992, + xl: 1280, + }, + mediaQueries: { + base: '@media screen and (min-width: 0)', + sm: '@media screen and (min-width: 480px)', + md: '@media screen and (min-width: 768px)', + lg: '@media screen and (min-width: 992px)', + xl: '@media screen and (min-width: 1280px)', + }, + letterSpacings: { + 'xs': '-0.05em', + 'sm': '-0.025em', + 'md': 0, + 'lg': '0.025em', + 'xl': '0.05em', + '2xl': '0.1em', + }, + lineHeights: { + '2xs': '16px', + 'xs': '18px', + 'sm': '22px', + 'md': '24px', + 'lg': '28px', + 'xl': '30px', + '2xl': '36px', + '3xl': '46px', + '4xl': '54px', + '5xl': '72px', + '6xl': '90px', + '7xl': '108px', + '8xl': '144px', + '9xl': '144px', + }, + fontWeights: { + hairline: '100', + thin: '200', + light: '300', + normal: '400', + medium: '500', + semibold: '600', + bold: '700', + extrabold: '800', + black: '900', + extraBlack: '950', + }, + fonts: { + heading: 'Plus Jakarta Sans, sans-serif', + body: 'Inter, sans-serif', + mono: 'Source Code Pro', + // body400: + }, + fontSizes: { + '2xs': 10, + 'xs': 12, + 'sm': 14, + 'md': 16, + 'lg': 18, + 'xl': 20, + '2xl': 24, + '3xl': 30, + '4xl': 36, + '5xl': 48, + '6xl': 60, + '7xl': 72, + '8xl': 96, + '9xl': 128, + }, + }, +} as const; + +// type ConfigType = typeof config; + +// declare module '@gluestack-style/react' { +// interface ICustomConfig extends ConfigType {} +// } diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/core/AppProvider/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/core/AppProvider/index.tsx new file mode 100644 index 0000000000..e98f5b530f --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/core/AppProvider/index.tsx @@ -0,0 +1,29 @@ +import React, { memo } from 'react'; +import { createProvider } from '@gluestack-ui/provider'; +import { StyledProvider } from '@gluestack-style/react'; +import { config } from '../../gluestack-style.config'; +import { OverlayProvider } from '@gluestack-ui/overlay'; +import { ToastProvider } from '@gluestack-ui/toast'; + +const GluestackUIProvider = createProvider({ StyledProvider }); +//@ts-ignore +GluestackUIProvider.displayName = 'GluestackUIProvider'; +export { GluestackUIProvider }; + +export const AppProvider = memo(({ children, ...props }: any) => { + return ( + + {children} + + ); +}); + +export const AppProviderWithOverlay = ({ children, ...props }: any) => { + return ( + + + {children} + + + ); +}; diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/core/index.ts b/example/storybook-nativewind/src/components/Checkbox/design-system/src/core/index.ts new file mode 100644 index 0000000000..bd2c0cdccb --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/core/index.ts @@ -0,0 +1 @@ +export * from './AppProvider'; diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/BlockQuote/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/BlockQuote/index.tsx new file mode 100644 index 0000000000..255caa8d59 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/BlockQuote/index.tsx @@ -0,0 +1,5 @@ +import React, { memo } from 'react'; +import { StyledBlockQuote } from '../../styled-components'; +export const BlockQuote = memo(({ ...props }: any) => { + return ; +}); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Blog/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Blog/index.tsx new file mode 100644 index 0000000000..742c666063 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Blog/index.tsx @@ -0,0 +1,168 @@ +/* eslint-disable react/no-unstable-nested-components */ +import React from 'react'; +// import { useRouter } from 'next/router'; +import { Box, Text, Link as GLink } from '../../primitives'; +import { H1 } from '../H1'; +import { H2 } from '../H2'; +import { H3 } from '../H3'; +import { H4 } from '../H4'; +import { H5 } from '../H5'; +import { UL } from '../UL'; +import { LI } from '../LI'; +import { BlockQuote } from '../BlockQuote'; +import { InlineCode } from '../InlineCode'; +import { CodePreview } from '../CodePreview'; +import OL from '../OL'; +import { LayoutContent } from '../Layout/LayoutContent'; + +export const Blog = React.forwardRef(({ children, MDXProvider }: any) => { + // const router = useRouter(); + return ( + + { + return ( +

+ ); + }, + h2: (props: any) => { + return

; + }, + h3: (props: any) => { + return

; + }, + h4: (props: any) => { + return

; + }, + h5: (props: any) => { + return

; + }, + pre: (props: any) => { + return ( + + ); + }, + ul: (props: any) =>
    , + ol: (props: any) =>
      , + li: (props: any) => { + return ( +
    1. + {props?.children} +
    2. + ); + }, + p: (props: any) => ( + + ), + a: (props: any) => { + return ( + + ); + }, + code: (props: any) => { + return {props.children}; + }, + blockquote: (props: any) => { + //@ts-ignore x.children[1].props added due to internal bug in next-mdx + return ( +
      + {props.children[1].props.children} +
      + ); + }, + }} + > + + + {children} + + + + + {/** Extra Space will be used for quick nav */} + {/* */} + + ); +}); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Breadcrumbs/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Breadcrumbs/index.tsx new file mode 100644 index 0000000000..f32535e595 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Breadcrumbs/index.tsx @@ -0,0 +1,58 @@ +import React from 'react'; +import { Box, Text } from '../../primitives'; +import { LayoutContext } from '../Layout/LayoutContext'; + +export const Breadcrumbs = () => { + const { breadcrumbs, Link } = React.useContext(LayoutContext); + + if (breadcrumbs) { + const breadcrumbLinks: any = []; + + breadcrumbs.forEach((breadcrumb: any, index: any) => { + const href = breadcrumb.id || `/${breadcrumb.title.toLowerCase()}`; + + breadcrumbLinks.push({ + href: index === 0 ? href : `${breadcrumbLinks[index - 1].href}${href}`, + title: breadcrumb.title, + }); + }); + + return ( + + {breadcrumbs.map((breadcrumb: any, index: any) => ( + + {index > 0 && {' / '}} + {breadcrumb.id ? ( + + + {breadcrumb.title} + + + ) : ( + + {breadcrumb.title} + + )} + + ))} + + ); + } else { + return null; + } +}; diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Code/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Code/index.tsx new file mode 100644 index 0000000000..eb65bc64ec --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Code/index.tsx @@ -0,0 +1,6 @@ +import React, { memo } from 'react'; +import { CodeBlock } from '../CodeBlock'; + +export const Code = memo(({ children, ...props }: any) => { + return ; +}); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/CodeBlock/CodeBlock.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/CodeBlock/CodeBlock.tsx new file mode 100644 index 0000000000..c7a1178a6a --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/CodeBlock/CodeBlock.tsx @@ -0,0 +1,179 @@ +/* eslint-disable react-native/no-inline-styles */ +import { CopyOutlinedIcon, useClipboard, CopyFilledIcon } from '../../'; +import { Box } from '@/components/ui/box'; +import { HStack } from '@/components/ui/hstack'; +import { Text } from '@/components/ui/text'; +import { Divider } from '@/components/ui/divider'; +import { Pressable } from '@/components/ui/pressable'; +import { Icon } from '@/components/ui/icon'; +import React, { memo } from 'react'; +import Highlight, { defaultProps } from 'prism-react-renderer'; +import vsDark from 'prism-react-renderer/themes/vsDark'; +import vsLight from 'prism-react-renderer/themes/duotoneLight'; +import prettier from 'prettier/standalone'; +import prettierParser from 'prettier/parser-typescript'; +import { useColorMode } from '@gluestack-style/react'; + +const CodeBlock = memo( + ({ + code = '', + withLineNumbers = false, + showHeader, + showHeaderIcons, + language = 'jsx', + fontSize, + copyProps, + _highLightProps = {}, + showCopy: showCopyProp, + ...props + }: any) => { + let prettifiedCode: any = code.trim(' '); + + try { + prettifiedCode = + language === 'jsx' || language === 'tsx' + ? prettier + .format(code.trim(' '), { + semi: false, + parser: 'typescript', + plugins: [prettierParser], + }) + .trim() + : code.trim(' '); + } catch (Err) { + // + console.error('Error! prettier failed: ', Err); + } + + if (prettifiedCode.startsWith(';')) { + prettifiedCode = prettifiedCode.slice(1); + } + + const [copied, setCopied] = React.useState(false); + const [showCopy, setShowCopy] = React.useState(false); + + const { onCopy } = useClipboard(); + + const colorMode = useColorMode(); + function handleCopy() { + onCopy(code); + setCopied(true); + // set copied to false after 2 second + setTimeout(() => { + setCopied(false); + }, 2000); + } + + return ( + + {showHeader && ( + <> + + {showHeaderIcons && ( + <> + + + + + )} + + + + )} + { + setShowCopy(true); + }} + onMouseLeave={() => { + setShowCopy(false); + }} + className="pr-6 pl-6 bg-[#1A1D23] h-max max-h-[400px] overflow-auto" + {...props} + > + + {({ tokens, getLineProps, getTokenProps }) => ( + +
      +                  {tokens.map((line, i) => (
      +                    
      + {withLineNumbers && ( + + {i + 1} + + )} +
      + {line.map((token, key) => { + const { style, ...props } = getTokenProps({ + token, + key, + }); + return ( + + ); + })} +
      +
      + ))} +
      +
      + )} +
      +
      + {(showCopy || showCopyProp) && ( + { + setShowCopy(true); + }} + onMouseLeave={() => { + setShowCopy(false); + }} + className="absolute right-6 top-6 shadow-none " + {...copyProps} + > + {!copied ? ( + + ) : ( + + )} + + )} +
      + ); + } +); + +export { CodeBlock }; diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/CodeBlock/CodeBlockTab.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/CodeBlock/CodeBlockTab.tsx new file mode 100644 index 0000000000..204778444a --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/CodeBlock/CodeBlockTab.tsx @@ -0,0 +1,27 @@ +import React from 'react'; +import { Tabs } from '../../index'; + +const CodeBlockTab = ({ children, ...props }: any) => { + return ( + + {children} + + ); +}; + +export default CodeBlockTab; diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/CodeBlock/CodeBlockTabList.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/CodeBlock/CodeBlockTabList.tsx new file mode 100644 index 0000000000..a0d813e952 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/CodeBlock/CodeBlockTabList.tsx @@ -0,0 +1,12 @@ +import React from 'react'; +import { Tabs } from '../../index'; + +const CodeBlockTabList = ({ children, ...props }: any) => { + return ( + + {children} + + ); +}; + +export default CodeBlockTabList; diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/CodeBlock/CodeBlockTabPanel.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/CodeBlock/CodeBlockTabPanel.tsx new file mode 100644 index 0000000000..5eee3a8111 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/CodeBlock/CodeBlockTabPanel.tsx @@ -0,0 +1,30 @@ +import React from 'react'; +import { Tabs } from '../../index'; +import { CodeBlock } from './index'; + +const CodeBlockTabPanel = ({ + code, + withLineNumbers, + showHeader, + showHeaderIcons, + theme, + language = 'jsx', + value, + ...props +}: any) => { + return ( + + + + ); +}; +export default CodeBlockTabPanel; diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/CodeBlock/CodeBlockTabs.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/CodeBlock/CodeBlockTabs.tsx new file mode 100644 index 0000000000..50db3457f9 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/CodeBlock/CodeBlockTabs.tsx @@ -0,0 +1,12 @@ +import React from 'react'; +import { Tabs } from '../../index'; + +const CodeBlockTabs = ({ children, ...props }: any) => { + return ( + + {children} + + ); +}; + +export default CodeBlockTabs; diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/CodeBlock/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/CodeBlock/index.tsx new file mode 100644 index 0000000000..6a6a7dadb1 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/CodeBlock/index.tsx @@ -0,0 +1,13 @@ +import { CodeBlock } from './CodeBlock'; +import CodeBlockTab from './CodeBlockTab'; +import CodeBlockTabList from './CodeBlockTabList'; +import CodeBlockTabPanel from './CodeBlockTabPanel'; +import CodeBlockTabs from './CodeBlockTabs'; + +const CodeBlockMain = CodeBlock as any; +CodeBlockMain.Tab = CodeBlockTab; +CodeBlockMain.Tabs = CodeBlockTabs; +CodeBlockMain.TabList = CodeBlockTabList; +CodeBlockMain.TabPanel = CodeBlockTabPanel; + +export { CodeBlockMain as CodeBlock }; diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/CodeBlock/terminalTheme.ts b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/CodeBlock/terminalTheme.ts new file mode 100644 index 0000000000..ae71f410a4 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/CodeBlock/terminalTheme.ts @@ -0,0 +1,117 @@ +import type { PrismTheme } from 'prism-react-renderer'; + +const theme: PrismTheme = { + plain: { + //@gluestack/design-system + color: '#fafafa', + backgroundColor: '#000', + }, + styles: [ + { + types: ['changed'], + style: { + color: 'rgb(162, 191, 252)', + fontStyle: 'italic', + }, + }, + { + types: ['deleted'], + style: { + color: 'rgba(239, 83, 80, 0.56)', + fontStyle: 'italic', + }, + }, + { + types: ['inserted', 'attr-name'], + style: { + color: '#cd1d8d', + fontStyle: 'italic', + }, + }, + { + types: ['comment'], + style: { + color: 'rgb(99, 119, 119)', + fontStyle: 'italic', + }, + }, + { + types: ['string', 'url'], + style: { + color: '#cd1d8d', + }, + }, + { + types: ['variable'], + style: { + color: 'rgb(214, 222, 235)', + }, + }, + { + types: ['number'], + style: { + color: 'rgb(247, 140, 108)', + }, + }, + { + types: ['builtin', 'char', 'constant', 'function'], + style: { + //Yarn add - Command + color: '#fafafa', + }, + }, + { + // This was manually added after the auto-generation + // so that punctuations are not italicised + types: ['punctuation'], + style: { + color: '#0081f1', + }, + }, + { + types: ['selector', 'doctype'], + style: { + color: 'rgb(199, 146, 234)', + fontStyle: 'italic', + }, + }, + { + types: ['class-name'], + style: { + color: '#0081f1', + }, + }, + { + types: ['operator', 'keyword'], + style: { + color: '#fafafa', + }, + }, + { + types: ['tag'], + style: { + color: '#D9757D', + }, + }, + { + types: ['boolean'], + style: { + color: 'rgb(255, 88, 116)', + }, + }, + { + types: ['property'], + style: { + color: 'rgb(128, 203, 196)', + }, + }, + { + types: ['namespace'], + style: { + color: 'rgb(178, 204, 214)', + }, + }, + ], +}; + +export default theme; diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/CodeBlock/theme.ts b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/CodeBlock/theme.ts new file mode 100644 index 0000000000..59c2149b46 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/CodeBlock/theme.ts @@ -0,0 +1,67 @@ +import type { PrismTheme } from 'prism-react-renderer'; + +export const theme: PrismTheme = { + plain: { + color: '#8F93A2', + backgroundColor: '#1A1D23', + }, + styles: [ + { + types: ['comment', 'punctuation'], + style: { + color: 'rgb(70, 75, 93)', + // fontStyle: 'italic', + }, + }, + { + types: ['string'], + style: { + color: '#56AE4E', + // fontStyle: 'italic', + }, + }, + { + types: ['variable'], + style: { + color: 'rgb(143, 147, 162)', + }, + }, + { + types: ['constant', 'changed'], + style: { + color: 'rgb(255, 203, 107)', + }, + }, + { + types: ['keyword', 'number', 'char'], + style: { + color: 'rgb(247, 140, 108)', + }, + }, + { + types: ['tag', 'deleted', 'builtin'], + style: { + color: 'rgb(240, 113, 120)', + }, + }, + { + types: ['function'], + style: { + color: 'rgb(130, 170, 255)', + }, + }, + { + types: ['symbol', 'inserted'], + style: { + color: 'rgb(195, 232, 141)', + }, + }, + { + types: ['attr-name'], + style: { + color: 'rgb(199, 146, 234)', + fontStyle: 'italic', + }, + }, + ], +}; diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/CodePreview/ArgsController.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/CodePreview/ArgsController.tsx new file mode 100644 index 0000000000..a32dc703ff --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/CodePreview/ArgsController.tsx @@ -0,0 +1,62 @@ +import React, { useContext } from 'react'; +import { VStack } from '@/components/ui/vstack'; +import { CodePreviewContext } from './CodePreviewProvider'; +import { InputControl, SelectControl, SwitchControl } from './controls'; + +const ArgsController = () => { + const { metaData } = useContext(CodePreviewContext); + + const args = Object.keys(metaData?.argsType ?? {}).map( + (arg: any, index: any) => { + const { + control, + default: defaultValue, + options, + } = metaData?.argsType[arg]; + + if (control === 'input') { + return ( + + ); + } + + if (control === 'boolean') { + return ( + + ); + } + + if (control === 'select') { + return ( + + ); + } + + return null; + } + ); + + return ( + + {args} + + ); +}; + +export default ArgsController; diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/CodePreview/CodePreview.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/CodePreview/CodePreview.tsx new file mode 100644 index 0000000000..05ebdf629e --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/CodePreview/CodePreview.tsx @@ -0,0 +1,179 @@ +import React from 'react'; +import { Box } from '@/components/ui/box'; +import { Pressable } from '@/components/ui/pressable'; +import { HStack } from '@/components/ui/hstack'; +import { Text } from '@/components/ui/text'; +import { CodeBlock } from '../CodeBlock'; +import ArgsController from './ArgsController'; +import { CodePreviewProvider } from './CodePreviewProvider'; +import ComponentRenderer from './ComponentRenderer'; +// const prettier = require('prettier'); + +const genrateProp = (prop: any, props: any) => { + const type = props[prop].control; + const defaultValue = props[prop].default; + + if (type === 'input') { + return defaultValue ? `${prop}="${defaultValue}"` : `${prop}=''`; + } else if (type === 'boolean') { + return defaultValue ? `${prop}={true}` : `${prop}={false}`; + } + + return defaultValue ? `${prop}="${defaultValue}"` : `${prop}=''`; +}; + +const genratePropsString = (props: any) => { + let propsString = ''; + Object.keys(props).map((prop: any) => { + propsString += genrateProp(prop, props) + ' '; + }); + if (propsString === '') { + propsString = '{...props}'; + } + return propsString; +}; + +const CodePreviewTabs = ({ activeTab, callback }) => { + return ( + + callback('ios')} + > + + iOS + + + callback('android')} + > + + Android + + + callback('web')} + > + + Web + + + + ); +}; +const CodePreview = ({ + metaData, + showArgsController = true, + showCodeBlock = true, + showComponentRenderer = true, + language, + rendererProps, + codeBlockProps, + argsControllerProps, + direction = 'column', + href, + showExternalResource, + _container, + _rendererWrapper, + ...props +}: any) => { + const [previewMetaData, setPreviewMetaData] = React.useState(metaData); + const [propsString, setPropsString] = React.useState( + genratePropsString(metaData?.argsType ?? '') + ); + + const updateMetaData = (data: any) => setPreviewMetaData(data); + + const updatePropsString = (txt: any) => setPropsString(txt); + const [activeTab, setActiveTab] = React.useState<'ios' | 'android' | 'web'>( + 'ios' + ); + const onTabChangeCallback = (tab: 'ios' | 'android' | 'web') => { + setActiveTab(tab); + }; + return ( + <> + + + + + {(showArgsController || showComponentRenderer) && ( + + {showComponentRenderer && ( + + )} + {showArgsController && ( + + )} + + )} + {showCodeBlock && ( + + )} + + + + + ); +}; + +export default CodePreview; diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/CodePreview/CodePreviewProvider.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/CodePreview/CodePreviewProvider.tsx new file mode 100644 index 0000000000..fcbb27364a --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/CodePreview/CodePreviewProvider.tsx @@ -0,0 +1,11 @@ +import React, { createContext } from 'react'; + +export const CodePreviewContext = createContext({}); + +export const CodePreviewProvider = ({ children, ...props }: any) => { + return ( + + {children} + + ); +}; diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/CodePreview/ComponentRenderer.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/CodePreview/ComponentRenderer.tsx new file mode 100644 index 0000000000..023d9b0c5a --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/CodePreview/ComponentRenderer.tsx @@ -0,0 +1,98 @@ +import React, { useContext } from 'react'; +import { + LiveProvider, + LivePreview as ReactLivePreview, + LiveError, +} from 'react-live'; +import { Box, ExpoIcon, Link, Text } from '../../index'; +import { CodePreviewContext } from './CodePreviewProvider'; +import Image from 'next/image'; +// @ts-ignore +// import { themes } from 'prism-react-renderer/themes'; +const ComponentRenderer = ({ + showArgsController, + _rendererWrapper, + showExternalResource, + activeTab, + href, + ...props +}: any) => { + const { metaData, propsString } = useContext(CodePreviewContext); + + return ( + + {showExternalResource && ( + + + + Open in Expo + + + )} + + {activeTab === 'android' ? ( + android frame + ) : activeTab === 'ios' ? ( + android frame + ) : null} + + + + + + + + + ); +}; + +export default ComponentRenderer; diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/CodePreview/controls/InputControl.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/CodePreview/controls/InputControl.tsx new file mode 100644 index 0000000000..33fa71deac --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/CodePreview/controls/InputControl.tsx @@ -0,0 +1,62 @@ +import React, { useContext, useState } from 'react'; +import { Input, FormControl } from '../../../index'; +import { CodePreviewContext } from '../CodePreviewProvider'; + +export const InputControl = ({ defaultValue, componentProp }: any) => { + const { propsString, updatePropsString } = useContext(CodePreviewContext); + const [value, setValue] = useState(defaultValue ?? ''); + + const handleChange = (e: any) => { + const inputValue = e.target.value; + setValue(inputValue); + + const componentPropValueRegex = new RegExp(componentProp + '="(.*?)"', 'g'); + + if (propsString.match(componentPropValueRegex)) { + updatePropsString( + propsString.replace( + componentPropValueRegex, + `${componentProp}="${inputValue}"` + ) + ); + } else { + updatePropsString(`${propsString} ${componentProp}="${inputValue}"`); + } + + if (inputValue === '') { + updatePropsString(propsString.replace(componentPropValueRegex, '')); + } + }; + + return ( + + + + {componentProp} + + + + + + + ); +}; diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/CodePreview/controls/SelectControl.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/CodePreview/controls/SelectControl.tsx new file mode 100644 index 0000000000..67fa275322 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/CodePreview/controls/SelectControl.tsx @@ -0,0 +1,117 @@ +import React, { useContext, useState } from 'react'; +import { Select, ChevronDownIcon, FormControl } from '../../../index'; +import { CodePreviewContext } from '../CodePreviewProvider'; + +export const SelectControl = ({ + defaultValue, + componentProp, + options, +}: any) => { + const { propsString, updatePropsString } = useContext(CodePreviewContext); + const [value, setValue] = useState(defaultValue ?? ''); + + const handleChange = (val: any) => { + const componentPropsValueRegex = new RegExp( + componentProp + '="(.*?)"', + 'g' + ); + setValue(val); + if (propsString.match(componentPropsValueRegex)) { + updatePropsString( + propsString.replace( + componentPropsValueRegex, + `${componentProp}="${val}"` + ) + ); + } else { + updatePropsString(`${propsString} ${componentProp}="${val}"`); + } + + if (val === '') { + updatePropsString(propsString.replace(componentPropsValueRegex, '')); + } + }; + + return ( + + + + {componentProp} + + + + + ); +}; diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/CodePreview/controls/SwitchControl.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/CodePreview/controls/SwitchControl.tsx new file mode 100644 index 0000000000..95ca1d8e57 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/CodePreview/controls/SwitchControl.tsx @@ -0,0 +1,50 @@ +import React, { useContext } from 'react'; +import { Switch, FormControl } from '../../../index'; +import { CodePreviewContext } from '../CodePreviewProvider'; + +export const SwitchControl = ({ defaultValue, componentProp }: any) => { + const [value, setValue] = React.useState(defaultValue ?? false); + + const { propsString, updatePropsString } = useContext(CodePreviewContext); + + const toggleSwitch = (val: any) => { + setValue((previousState: boolean) => !previousState); + + const componentPropsValueRegex = new RegExp( + componentProp + '={(.*?)}', + 'g' + ); + + if (propsString.match(componentPropsValueRegex)) { + updatePropsString( + propsString.replace( + componentPropsValueRegex, + `${componentProp}={${val}}` + ) + ); + } + }; + + return ( + + + + {componentProp} + + + + + ); +}; diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/CodePreview/controls/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/CodePreview/controls/index.tsx new file mode 100644 index 0000000000..968602d143 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/CodePreview/controls/index.tsx @@ -0,0 +1,3 @@ +export { InputControl } from './InputControl'; +export { SwitchControl } from './SwitchControl'; +export { SelectControl } from './SelectControl'; diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/CodePreview/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/CodePreview/index.tsx new file mode 100644 index 0000000000..d4b5ecf3c8 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/CodePreview/index.tsx @@ -0,0 +1,5 @@ +import ArgsController from './ArgsController'; +import CodePreview from './CodePreview'; +import ComponentRenderer from './ComponentRenderer'; + +export { ComponentRenderer, CodePreview, ArgsController }; diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/CodePreviewWithTabs/CodePreviewWithTabs.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/CodePreviewWithTabs/CodePreviewWithTabs.tsx new file mode 100644 index 0000000000..2f67504e99 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/CodePreviewWithTabs/CodePreviewWithTabs.tsx @@ -0,0 +1,119 @@ +import React from 'react'; +import { Box, CodeBlock, Tabs, Text } from '../../index'; +import { LiveProvider, LivePreview, LiveError } from 'react-live'; + +function removeImportStatements(mainString: string) { + let result = mainString.replace(/import .*?;/gs, ''); + result = result.replace(/export /g, ''); + return result; +} + +export function CodePreviewWithTabs({ + files = [], + transformCode, + scope, + _rendererWrapper = {}, + landingPage = false, + ...props +}: { + files: Array<{ fileName: string; code: string }>; + transformCode?: any; + // pass like this transformedCodeWithoutWrapper(code, 'function', 'App') + scope: any; + landingPage?: boolean; + _rendererWrapper?: any; +} & { + [key: string]: any; +}) { + const style = landingPage ? { flex: 1 } : {}; + + let finalCode = ''; + files.forEach((fileObj) => { + finalCode += fileObj.code; + }); + finalCode = removeImportStatements(finalCode); + + return ( + + + + + + + + + + + {files.map((fileObj) => ( + + {fileObj.fileName} + + ))} + + + {files.map((fileObj) => ( + + ))} + + + + + ); +} diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/CodePreviewWithTabs/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/CodePreviewWithTabs/index.tsx new file mode 100644 index 0000000000..84a4c16a68 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/CodePreviewWithTabs/index.tsx @@ -0,0 +1 @@ +export { CodePreviewWithTabs } from './CodePreviewWithTabs'; diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/CollapsibleCode/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/CollapsibleCode/index.tsx new file mode 100644 index 0000000000..ec04ae4528 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/CollapsibleCode/index.tsx @@ -0,0 +1,19 @@ +import React from 'react'; +import { Box } from '../../primitives/Box'; + +export const CollapsibleCode = (props: any) => { + const clonedChildren = React.cloneElement(props.children.props.children, { + ...props.children.props.children.props, + h: '$full', + }); + const finalChildren = React.cloneElement(props.children, { + ...props.children.props, + children: clonedChildren, + }); + + return ( + + {finalChildren} + + ); +}; diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Community/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Community/index.tsx new file mode 100644 index 0000000000..00f70fadbc --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Community/index.tsx @@ -0,0 +1,114 @@ +import React from 'react'; +import { Box, HStack, VStack, Text, Link } from '../../primitives'; + +export type CommunityItem = { + name: string; + icon: React.ReactElement; + link: string; + description: string; +}; + +export const Community = ({ + communities, +}: { + communities: CommunityItem[]; +}) => { + return ( + + + + Community + + + Get involved in our community. Everyone is welcome! + + + + {communities.map((community, key) => { + return ( + + + + {community.icon} + + {community.name} + + + + {community.description} + + + + ); + })} + + + ); +}; + +export default Community; diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/ComponentIntro/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/ComponentIntro/index.tsx new file mode 100644 index 0000000000..83d11feb96 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/ComponentIntro/index.tsx @@ -0,0 +1,110 @@ +import React from 'react'; +import { Box, Text } from '../../primitives'; +import { findPageById } from '../../utils/helperFunction'; +import { H1 } from '../H1'; +import { LayoutContext } from '../Layout/LayoutContext'; +import { + StyledSideBarTag, + StyledSideBarTagText, +} from '../../styled-components'; + +export const ComponentIntro = ({ ...props }: any) => { + const { isOpenSidebar, sidebarItems, router } = + React.useContext(LayoutContext); + + const result = findPageById(router.pathname, sidebarItems); + + return result?.metaData?.showHeader ? ( + + + + {result?.metaData?.pageTitle || result?.metaData?.title ? ( + +

      + {result?.metaData?.pageTitle ?? result?.metaData?.title} +

      + + {result?.metaData?.tag && ( + + + {result?.metaData?.tag} + + + )} + +
      + ) : null} + {result?.metaData?.pageDescription || + result?.metaData?.description ? ( + + {result?.metaData?.pageDescription ?? + result?.metaData?.description} + + ) : null} + {/* {result?.metaData?.tag == 'beta' ? ( + + + spec doc + + + ) : null} */} +
      +
      + + + ) : null; +}; diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Ecosystem/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Ecosystem/index.tsx new file mode 100644 index 0000000000..94d08cfc7f --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Ecosystem/index.tsx @@ -0,0 +1,236 @@ +import React from 'react'; +import { Box, Text, Link, HStack } from '../../primitives'; +import data from '../../utils/ecosystem.json'; +import type { EcosystemItem, DataKey } from '../../utils/ecosystem'; +import NextImage from 'next/image'; + +export function Ecosystem({ values }: { values: Array }) { + let keys = Object.keys(data) as Array; + keys = keys.filter((element) => values.includes(element)); + const cardsData = keys.map((key) => data[key]); + + return ( + + + + More from the creators + + + Our Ecosystem + + + Curated suite of tools to simplify and accelerate building of design + systems. + + + + + Learn more + + + + + + {cardsData.map((item: EcosystemItem, index: number) => { + return ( + + ); + })} + + + ); +} + +const Card = ({ item, mr }: { item: EcosystemItem; mr: any }) => { + return ( + + + + + + + {item.name} + + {item.tag && ( + + {item.tag && ( + + {item.tag} + + )} + + )} + {item.ossTag && ( + + {item.ossTag && ( + + {item.ossTag} + + )} + + )} + + + {item.description} + + + + + ); +}; diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/EditPageOnGithubLink/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/EditPageOnGithubLink/index.tsx new file mode 100644 index 0000000000..468a15bf26 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/EditPageOnGithubLink/index.tsx @@ -0,0 +1,56 @@ +import React from 'react'; +import { LayoutContext } from '../Layout/LayoutContext'; +import { getGithubLink } from '../../utils/helperFunction'; +import { HStack, Text } from '../../primitives'; +import { createIcon } from '@gluestack-ui/icon'; +import { styled } from '@gluestack-style/react'; +import { Svg } from 'react-native-svg'; + +const Root = styled( + Svg, + { + w: 16, + h: 16, + // @ts-ignore + color: '$textLight600', + _dark: { + //@ts-ignore + color: '$textDark400', + }, + }, + { + ancestorStyle: ['_icon'], + } +); + +const PencilIcon = createIcon({ + Root, + viewBox: '0 0 24 24', + d: 'M16.3048 4.30319C16.5262 4.07396 16.791 3.89113 17.0838 3.76534C17.3766 3.63956 17.6915 3.57336 18.0102 3.57059C18.3289 3.56782 18.6449 3.62854 18.9399 3.74922C19.2348 3.86989 19.5028 4.0481 19.7281 4.27344C19.9535 4.49878 20.1317 4.76675 20.2523 5.0617C20.373 5.35665 20.4337 5.67268 20.431 5.99135C20.4282 6.31002 20.362 6.62495 20.2362 6.91776C20.1104 7.21057 19.9276 7.4754 19.6984 7.69679L18.7468 8.64839L15.3532 5.25479L16.3048 4.30319ZM13.6564 6.95159L3.60156 17.0064V20.4H6.99516L17.0512 10.3452L13.6564 6.95159Z', +}); + +export default function EditPageOnGithubLink({ sidebarItems }: any) { + const { router, Link } = React.useContext(LayoutContext); + + const link = getGithubLink(sidebarItems, router.pathname); + if (link === null) return null; + return ( + + + + + Edit this page on GitHub + + + + ); +} diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Flyout/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Flyout/index.tsx new file mode 100644 index 0000000000..7a1b71ca36 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Flyout/index.tsx @@ -0,0 +1,228 @@ +import React, { useState } from 'react'; +import { + HStack, + Pressable, + Text, + Box, + ChevronDownIcon, + Link, +} from '../../primitives'; +import data from '../../utils/ecosystem.json'; +import NextImage from 'next/image'; +import type { DataKey } from '../../utils/ecosystem'; + +export function Flyout({ + values, + current, +}: { + values: Array; + current: DataKey; +}) { + const [isOpen, setIsOpen] = useState(false); + + let keys = Object.keys(data) as Array; + keys = keys.filter((element) => values.includes(element)); + let selectedItemId = ''; + + if (keys.includes(current)) { + const k = keys.findIndex((val) => val === current); + const temp = keys[k]; + + keys[k] = keys[keys.length - 1]; + keys[keys.length - 1] = temp; + + selectedItemId = data[current].id; + } + + const cardsData = keys.map((key) => data[key]); + + const handleMouseEnter = () => { + setIsOpen(true); + }; + + const handleMouseLeave = () => { + setIsOpen(false); + }; + return ( +
      + setIsOpen(!isOpen)} + sx={{ + _web: { + ':focus': { + boxShadow: '#004282 0px 0px 0px 2px', + _dark: { + boxShadow: '#004282 0px 0px 0px 2px', + }, + }, + }, + }} + > + + + Products + + + + + + {isOpen && ( + + + {cardsData.map((item: any, index: number) => { + return ( + setIsOpen(false)} + isDisabled={selectedItemId == item.id} + > + + + + {item.name} + + {item.tag && ( + + + {item.tag} + + + )} + {item.ossTag && ( + + + {item.ossTag} + + + )} + + {current === item.name && ( + + + + )} + + + + {item.flyoutDescription} + + + + ); + })} + + + )} +
      + ); +} + +const TickIcon = () => { + return ( + + + + + ); +}; diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/H1/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/H1/index.tsx new file mode 100644 index 0000000000..9bc21c1cff --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/H1/index.tsx @@ -0,0 +1,5 @@ +import React, { memo } from 'react'; +import { StyledH1 } from '../../styled-components'; +export const H1 = memo(({ ...props }: any) => { + return ; +}); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/H2/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/H2/index.tsx new file mode 100644 index 0000000000..31f84b2636 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/H2/index.tsx @@ -0,0 +1,7 @@ +import React, { memo } from 'react'; +import { StyledH2 } from '../../styled-components'; +import GenerateID from '../../utils/heading-id-generator'; +export const H2 = memo(({ ...props }: any) => { + const headingId = GenerateID(props.children); + return ; +}); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/H3/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/H3/index.tsx new file mode 100644 index 0000000000..c748ffebc0 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/H3/index.tsx @@ -0,0 +1,8 @@ +import React, { memo } from 'react'; +import { StyledH3 } from '../../styled-components'; +import GenerateID from '../../utils/heading-id-generator'; + +export const H3 = memo(({ ...props }: any) => { + const headingId = GenerateID(props.children); + return ; +}); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/H4/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/H4/index.tsx new file mode 100644 index 0000000000..70f6c90fd1 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/H4/index.tsx @@ -0,0 +1,7 @@ +import React, { memo } from 'react'; +import { StyledH4 } from '../../styled-components'; +import GenerateID from '../../utils/heading-id-generator'; +export const H4 = memo(({ ...props }: any) => { + const headingId = GenerateID(props.children); + return ; +}); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/H5/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/H5/index.tsx new file mode 100644 index 0000000000..f1020267e0 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/H5/index.tsx @@ -0,0 +1,7 @@ +import React, { memo } from 'react'; +import { StyledH5 } from '../../styled-components'; +import GenerateID from '../../utils/heading-id-generator'; +export const H5 = memo(({ ...props }: any) => { + const headingId = GenerateID(props.children); + return ; +}); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/HeadingTabs/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/HeadingTabs/index.tsx new file mode 100644 index 0000000000..e5aeda9b8e --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/HeadingTabs/index.tsx @@ -0,0 +1,132 @@ +import { Box, HStack, Pressable, Text } from '../../primitives'; +import React, { useEffect, useState } from 'react'; +import { findPageById } from '../../utils/helperFunction'; +import { LayoutContext } from '../Layout/LayoutContext'; + +export const HeadingTabs = ({ ...props }: any) => { + const { isOpenSidebar, sidebarItems, router, colorMode } = + React.useContext(LayoutContext); + + let result = findPageById(router.pathname, sidebarItems); + + const [active, setActive] = useState(0); + + useEffect(() => { + setActive(0); + }, [router.pathname]); + + function handleTabPress(index: number) { + //commented it out because it was causing toggle in active tab + // setActive(index); + let x: any = document.querySelectorAll('h2'); + if (x[index]) { + x[index].style.scrollMargin = '130px'; + x[index].scrollIntoView({ + block: 'start', + behavior: 'smooth', + }); + } + } + + useEffect(() => { + const container = document.querySelector('#layout-content') as HTMLElement; + const headings = document.querySelectorAll('h2'); + + const handleScroll = () => { + let index = 0; + for (let i = 0; i < headings.length; i++) { + if (container.scrollTop >= headings[i].offsetTop + 100) { + index = i; + } + } + setActive(index); + }; + container?.addEventListener('scroll', handleScroll); + + return () => container?.removeEventListener('scroll', () => {}); + }, [router.pathname, colorMode]); + + return result?.metaData?.showHeader ? ( + + + {result?.h2Tags ? ( + + {result?.h2Tags.map((item: any, index: any) => { + return ( + { + handleTabPress(index); + }} + sx={{ + _web: { + boxShadow: 'none', + _dark: { + boxShadow: 'none', + }, + _light: { + boxShadow: 'none', + }, + }, + }} + > + + {item} + + + ); + })} + + ) : null} + + + + ) : null; +}; diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Hoverable/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Hoverable/index.tsx new file mode 100644 index 0000000000..a7d9d9e882 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Hoverable/index.tsx @@ -0,0 +1,82 @@ +import React, { useContext } from 'react'; +import { Box, Link } from '../../primitives'; +import Text from '../../primitives/Button/styled-components/Text'; +import { LayoutContext } from '../Layout/LayoutContext'; + +export const Hoverable = ({ href, heading, subHeading }: any) => { + const [isHovered, setIsHovered] = React.useState(false); + + const { Link: NextLink } = useContext(LayoutContext); + + const LinkComponent = NextLink ?? Link; + + return ( + setIsHovered(true)} + onMouseOut={() => setIsHovered(false)} + > + + setIsHovered(true)} + onMouseOut={() => setIsHovered(false)} + sx={{ + color: '$textLight900', + _dark: { + color: '$textDark50', + }, + }} + > + {heading} + + setIsHovered(true)} + onMouseOut={() => setIsHovered(false)} + sx={{ + color: '$textLight900', + _dark: { + color: '$textDark50', + }, + }} + > + {subHeading} + + + + ); +}; diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/InlineCode/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/InlineCode/index.tsx new file mode 100644 index 0000000000..373c87da93 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/InlineCode/index.tsx @@ -0,0 +1,6 @@ +import React, { memo } from 'react'; +import { StyledInlineCode } from '../../styled-components'; + +export const InlineCode = memo(({ ...props }: any) => { + return ; +}); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/LI/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/LI/index.tsx new file mode 100644 index 0000000000..e05905fb71 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/LI/index.tsx @@ -0,0 +1,99 @@ +import React, { memo } from 'react'; +import { StyledLI } from '../../styled-components'; +import { CircleIcon } from '../../primitives/Icon/Icons/Circle'; +import { HStack, Text } from '../../primitives'; + +export const LI = memo( + ({ + children, + IconProps, + containerProps, + ol = false, + index, + ...props + }: any) => { + return ol ? ( + + + + {`Step `} + + {index - 1} + + + : + + + + {children} + + + + ) : ( + + + + + + {children} + + + + ); + } +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Layout/Layout.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Layout/Layout.tsx new file mode 100644 index 0000000000..d369734a23 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Layout/Layout.tsx @@ -0,0 +1,303 @@ +/* eslint-disable react/no-unstable-nested-components */ +import React from 'react'; +import { Box, HStack, Text, Link as GLink } from '../../primitives'; +import { AppProviderWithOverlay } from '../../core'; +import { LayoutContent } from './LayoutContent'; +import { LayoutHeader } from './LayoutHeader'; +import { LayoutSidebar } from './LayoutSidebar'; +import { H1 } from '../H1'; +import { H2 } from '../H2'; +import { H3 } from '../H3'; +import { H4 } from '../H4'; +import { H5 } from '../H5'; +import { UL } from '../UL'; +import { LI } from '../LI'; +import { BlockQuote } from '../BlockQuote'; +import { InlineCode } from '../InlineCode'; +import { LayoutContext } from './LayoutContext'; +import ResponsiveSidebar from './ResponsiveSidebar'; +import { CodePreview } from '../CodePreview'; +import { PrevNextButtons } from '../PrevNextButtons'; +import { ComponentIntro } from '../ComponentIntro'; +import { HeadingTabs } from '../HeadingTabs'; +import OL from '../OL'; +import EditPageOnGithubLink from '../EditPageOnGithubLink'; +import { showToc } from '../../utils/helperFunction'; + +function containsAny(targetString: string) { + const stringsToCheck: string[] = [ + 'gluestack.io', + 'ui', + 'style', + 'enterprise', + 'contact-us', + ]; + for (const str of stringsToCheck) { + if (targetString.includes(str)) { + return true; // The target string contains at least one of the strings to check. + } + } + return false; // None of the strings were found in the target string. +} + +export const Layout = React.forwardRef( + ( + { + version, + sidebarItems: sidebars, + headerItems, + // _footerItems, + Link, + router, + children, + MDXProvider, + Image, + colorMode, + toggleColorMode, + Provider, + breadcrumbs, + fluidLayout = false, + Docsearch, + }: any, + docsLayoutRef: any + ) => { + const [isOpenSidebar, setIsOpenSidebar] = React.useState(false); + let StyleProvider = AppProviderWithOverlay; + if (Provider) { + StyleProvider = Provider; + } + const [sidebarItems, setSidebarItems] = React.useState([]); + const toc = showToc(sidebars, router.pathname); + React.useEffect(() => { + setSidebarItems(sidebars); + }, [sidebars]); + + return ( + + + + + + + + + + + + + + + { + return

      ; + }, + h2: (props: any) => { + return

      ; + }, + h3: (props: any) => { + return

      ; + }, + h4: (props: any) => { + return

      ; + }, + h5: (props: any) => { + return

      ; + }, + pre: (props: any) => { + return ( + //@ts-ignore + + ); + }, + ul: (props: any) =>
        , + ol: (props: any) =>
          , + li: (props: any) => { + return ( +
        1. + {props?.children} +
        2. + ); + }, + p: (props: any) => ( + + ), + a: (props: any) => { + return ( + + ); + }, + code: (props: any) => { + return {props.children}; + }, + blockquote: (props: any) => { + //@ts-ignore x.children[1].props added due to internal bug in next-mdx + return ( +
          + {props.children[1].props.children} +
          + ); + }, + }} + > + + + {children} + + + + + + + {/** Extra Space will be used for quick nav */} + {toc ? ( + + ) : null} + + + + + + + + ); + } +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Layout/LayoutContent.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Layout/LayoutContent.tsx new file mode 100644 index 0000000000..47401f77be --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Layout/LayoutContent.tsx @@ -0,0 +1,5 @@ +import React from 'react'; +import { Box } from '../../primitives'; +export const LayoutContent = ({ children, ...props }: any) => { + return {children}; +}; diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Layout/LayoutContext.ts b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Layout/LayoutContext.ts new file mode 100644 index 0000000000..a7774e63be --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Layout/LayoutContext.ts @@ -0,0 +1,34 @@ +import { createContext } from 'react'; + +interface ILayoutContext { + isOpenSidebar: boolean; + setIsOpenSidebar: any; + headerItems: any; + sidebarItems: Array; + version: string; + colorMode: string | null | undefined; + toggleColorMode: any; + Link: any; + Image: any; + router: any; + breadcrumbs: any; + Docsearch: any; + setSidebarItems: any; +} + +export const LayoutContext = createContext({ + isOpenSidebar: false, + setIsOpenSidebar: () => {}, + headerItems: [], + sidebarItems: [], + version: '', + colorMode: 'light', + toggleColorMode: () => {}, + Link: null, + Image: null, + router: null, + breadcrumbs: null, + Docsearch: null, + setSidebarItems: () => {}, + // selectedHeading: 'Introduction', +}); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Layout/LayoutFooter.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Layout/LayoutFooter.tsx new file mode 100644 index 0000000000..2b6e2efa0d --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Layout/LayoutFooter.tsx @@ -0,0 +1,5 @@ +import React from 'react'; + +export const LayoutFooter = ({ children }: any) => { + return
          {children}
          ; +}; diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Layout/LayoutHeader.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Layout/LayoutHeader.tsx new file mode 100644 index 0000000000..e42a818761 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Layout/LayoutHeader.tsx @@ -0,0 +1,227 @@ +import React from 'react'; +import { Nav } from '../Nav'; +import { + Box, + HStack, + Text, + HamburgerIcon, + WeatherMoon, + CloseIcon, + SunIcon, + Pressable, +} from '../../primitives'; +import { LayoutContext } from './LayoutContext'; +// import { ResponsiveSidebar } from './ResponsiveSidebar'; +export const LayoutHeader = ({ fluidLayout = false }: any) => { + const { headerItems, setIsOpenSidebar, isOpenSidebar, Docsearch } = + React.useContext(LayoutContext); + + return ( + + ); +}; + +const HeaderItem = ({ itemData, ...props }: any) => { + const { colorMode, Image, Link } = React.useContext(LayoutContext); + + if (itemData.type === 'image' && Image) { + return ( + + + Logo + + + ); + } else if (itemData.type === 'link' && Link) { + const { icon, darkIcon, text } = itemData; + return ( + + + {colorMode === 'dark' ? darkIcon : icon ?? {text}} + + + ); + } else if (itemData.type === 'component') { + const Component = itemData.component; + return ( + + + + ); + } + return <>; +}; +const HeaderWrapperComponent = ({ data, ...props }: any) => { + return ( + + {data.map((dataItem: any) => { + return ; + })} + + ); +}; + +export const ToggleColorModeButton = () => { + const { colorMode, toggleColorMode } = React.useContext(LayoutContext); + return ( + + {colorMode === 'light' ? ( + + ) : ( + + )} + + ); +}; diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Layout/LayoutSidebar.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Layout/LayoutSidebar.tsx new file mode 100644 index 0000000000..e8435cd39d --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Layout/LayoutSidebar.tsx @@ -0,0 +1,406 @@ +/* eslint-disable react-native/no-inline-styles */ +import React, { useCallback, useEffect } from 'react'; +import { Breadcrumbs } from '../Breadcrumbs'; +import { Sidebar } from '../Sidebar'; +import { Box, Text, Pressable, Divider } from '@gluestack-ui/themed'; +import { LayoutContext } from './LayoutContext'; +import { Icon } from '@gluestack-ui/themed'; +export const SidebarRecursive = ({ + sidebarItem, + version, + Link, + router, + leftIndent, +}: any) => { + if (sidebarItem?.type === 'heading') { + return ( + + {sidebarItem.title} + {sidebarItem?.pages?.map((sidebarPageItems: any) => { + // const isActiveRoute = router?.route.includes(sidebarPageItems.id); + // console.log('isActiveRoute', isActiveRoute, router?.route); + return ( + + ); + })} + + ); + } + return ( + + ); +}; + +const SidebarNodeItem = ({ sidebarItem, Link, router }: any) => { + const { setIsOpenSidebar } = React.useContext(LayoutContext); + let sidebarItemTag = sidebarItem?.metaData?.tag; + // let sidebarItemTagText; + // if (sidebarItemTag) { + // sidebarItemTagText = sidebarItemTag.toString(); + // sidebarItemTagText = + // sidebarItemTagText.charAt(0).toUpperCase() + sidebarItemTagText.slice(1); + // } + + const isActiveRoute = router?.route === sidebarItem.id; + return ( + setIsOpenSidebar(false)} + focusable={false} + > + + + {sidebarItem.title} + {sidebarItemTag && ( + + + {sidebarItemTag} + + + )} + + + + ); +}; + +export const LayoutSidebar = ({ fluidLayout, ...props }: any) => { + const { + sidebarItems: sidebars, + version, + Link, + router, + } = React.useContext(LayoutContext); + // const [sidebars, setSidebars] = React.useState(props.sidebarItems); + // const sidebars = props.sidebarItems; + const getHeaders = useCallback(() => { + const headerItems = []; + for (let i = 0; i < sidebars.length; i++) { + if (sidebars[i].type === 'Dropdown') { + headerItems.push(sidebars[i]); + } + } + return headerItems; + }, [sidebars]); + const getSelectedHeader = React.useCallback(() => { + const header = getHeaders(); + for (let i = 0; i < header.length; i++) { + if ( + router?.route.includes( + header[i]?.title?.toLocaleLowerCase().split(' ').join('-') + ) + ) { + return header[i].title; + } + } + }, [getHeaders, router?.route]); + const [selectedHeading, setSelectedHeading] = React.useState( + getSelectedHeader() ?? '' + ); + + useEffect(() => { + setSelectedHeading(getSelectedHeader()); + }, [sidebars, getSelectedHeader]); + const [hover, setHover] = React.useState(false); + + function getFirstPage(headerItem: any) { + for (let i = 0; i < sidebars.length; i++) { + if (sidebars[i].title === headerItem) { + return getId(sidebars[i].pages[0]); + } + } + return router?.route; + } + function getId(pages: any): string { + if (pages?.pages.length > 0) { + return getId(pages?.pages[0]); + } + + return pages?.id; + } + let isActiveRoute: any = false; + + if (selectedHeading) { + isActiveRoute = router?.route.includes( + selectedHeading?.toLocaleLowerCase().split(' ').join('-') + ) + ? true + : false; + } + function getSidebarItems() { + for (let i = 0; i < sidebars.length; i++) { + if (sidebars[i].title === selectedHeading) { + return sidebars[i].pages; + } + } + } + + const handleHeaderClick = (headerItem: any) => { + setSelectedHeading(headerItem.title); + }; + // TODO: Remove this incase header items are required in case of gluestack-style + + // TODO: remove below hacky code later + if ( + // router.pathname.includes('nativewind/docs') || + router.pathname.includes('style/docs') + ) { + return ( + { + if (!hover) { + setHover(true); + } + }} + onMouseLeave={() => { + setHover(false); + }} + // onHoverIn={() => { + // console.log('hello world'); + // }} + > + + {sidebars?.map((sidebarItems: any) => { + return ( + + ); + })} + + ); + } + return ( + + + {getHeaders().map((headerItem: any) => { + return ( + <> + handleHeaderClick(headerItem)} + px="$4" + pt="$1" + mr="$2.5" + my={'$0.5'} + borderRadius={'$md'} + sx={{ + bg: + isActiveRoute && headerItem.title == selectedHeading + ? '$primary100_alpha_50' + : 'transparent', + _light: { + ':hover': { + bg: '$primary100_alpha_30', + }, + }, + _dark: { + 'bg': + isActiveRoute && headerItem.title == selectedHeading + ? '$primary600_alpha_50' + : undefined, + ':hover': { + bg: '$primary600_alpha_30', + }, + }, + }} + > + + + + {headerItem.title} + + + + + ); + })} + + {getHeaders().length > 0 && } + + + + ); +}; + +function RenderSideBarPages({ ...props }: any) { + const { version, Link, router } = React.useContext(LayoutContext); + + const [hover, setHover] = React.useState(false); + const sidebarRef: any = React.useRef(null); + + useEffect(() => { + scrollToTop(); + }, []); + + const scrollToTop = async () => { + if (sidebarRef) { + await sidebarRef?.current?.scrollIntoView({ behavior: 'smooth' }); + } + }; + + return ( + <> + { + if (!hover) { + setHover(true); + } + }} + onMouseLeave={() => { + setHover(false); + }} + > + {/* @ts-ignore */} + + {props.sidebars?.map((sidebarPagesItems: any) => { + return ( + + ); + })} + + + ); +} diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Layout/ResponsiveSidebar.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Layout/ResponsiveSidebar.tsx new file mode 100644 index 0000000000..82ec917762 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Layout/ResponsiveSidebar.tsx @@ -0,0 +1,363 @@ +/* eslint-disable react-native/no-inline-styles */ +import React, { useCallback } from 'react'; +import { Sidebar } from '../Sidebar'; +import { LayoutContext } from './LayoutContext'; +import { SidebarRecursive } from './LayoutSidebar'; +import { Box } from '../../primitives'; +import { ToggleColorModeButton } from './LayoutHeader'; +import { Pressable, Text, Divider } from '@gluestack-ui/themed'; + +const ResponsiveSidebar = ({ ...props }: any) => { + const { + sidebarItems: sidebars, + isOpenSidebar, + setIsOpenSidebar, + Link, + version, + router, + Docsearch, + } = React.useContext(LayoutContext); + + const getHeaders = useCallback(() => { + const headerItems = []; + for (let i = 0; i < sidebars.length; i++) { + if (sidebars[i].type === 'Dropdown') { + headerItems.push(sidebars[i].title); + } + } + return headerItems; + }, [sidebars]); + const getSelectedHeader = React.useCallback(() => { + const header = getHeaders(); + for (let i = 0; i < header.length; i++) { + if ( + router?.route.includes( + header[i]?.toLocaleLowerCase().split(' ').join('-') + ) + ) { + return header[i]; + } + } + }, [getHeaders, router?.route]); + React.useEffect(() => { + setSelectedHeading(getSelectedHeader()); + }, [sidebars, getSelectedHeader]); + + const [selectedHeading, setSelectedHeading] = React.useState( + getSelectedHeader() + ); + + // const [hover, setHover] = React.useState(false); + + function getFirstPage(headerItem: any) { + for (let i = 0; i < sidebars.length; i++) { + if (sidebars[i].title === headerItem) { + return getId(sidebars[i].pages[0]); + } + } + return router?.route; + } + function getId(pages: any): string { + if (pages?.pages.length > 0) { + return getId(pages?.pages[0]); + } + + return pages?.id; + } + + let isActiveRoute: boolean = false; + if (selectedHeading) { + isActiveRoute = router?.route.includes( + selectedHeading.toLocaleLowerCase().split(' ').join('-') + ) + ? true + : false; + } + if (router.pathname.includes('gluestack-style/docs')) { + return ( + + {Docsearch && ( + + + + )} + {sidebars?.map((sidebarItems: any) => { + return ( + setIsOpenSidebar(false)} + /> + ); + })} + {/* {sidebarItems.map((sidebar: any) => { + return ( + + + {sidebar.title} + + {sidebar.pages.map((sidebarPageItems: any) => { + console.log(sidebarPageItems, 'sidebarPageItems'); + + return ( + setIsOpenSidebar(!isOpenSidebar)} + > + + + + {sidebarPageItems.title} + + + + + ); + })} + + ); + })} */} + + ); + } + return ( + <> + + + {getHeaders().map((headerItem: any) => { + return ( + <> + { + setSelectedHeading(headerItem); + }} + px="$4" + pt="$1" + mr="$2.5" + my={'$0.5'} + borderRadius={'$md'} + sx={{ + bg: + isActiveRoute && headerItem == selectedHeading + ? '$primary100_alpha_50' + : 'transparent', + _light: { + ':hover': { + bg: '$primary100_alpha_30', + }, + }, + _dark: { + 'bg': + isActiveRoute && headerItem == selectedHeading + ? '$primary600_alpha_50' + : undefined, + ':hover': { + bg: '$primary600_alpha_30', + }, + }, + }} + > + + + {headerItem} + + + + + ); + })} + + + + + + ); + // + // {Docsearch && ( + // + // + // + // )} + // {sidebarItems?.map((sidebarItems: any) => { + // return ( + // setIsOpenSidebar(!isOpenSidebar)} + // /> + // ); + // })} + // {/* {sidebarItems.map((sidebar: any) => { + // return ( + // + // + // {sidebar.title} + // + // {sidebar.pages.map((sidebarPageItems: any) => { + // console.log(sidebarPageItems, 'sidebarPageItems'); + + // return ( + // setIsOpenSidebar(!isOpenSidebar)} + // > + // + // + // + // {sidebarPageItems.title} + // + // + // + // + // ); + // })} + // + // ); + // })} */} + // +}; + +function RenderSideBarPages({ ...props }: any) { + const { + sidebarItems: sidebars, + version, + Link, + router, + } = React.useContext(LayoutContext); + + const [hover, setHover] = React.useState(false); + + function getSidebarItems() { + for (let i = 0; i < sidebars.length; i++) { + if (sidebars[i].title === props.selectedHeading) { + return sidebars[i].pages; + } + } + } + return ( + { + if (!hover) { + setHover(true); + } + }} + onMouseLeave={() => { + setHover(false); + }} + > + {getSidebarItems()?.map((sidebarPagesItems: any) => { + return ( + + ); + })} + + ); +} +export default ResponsiveSidebar; diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Layout/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Layout/index.tsx new file mode 100644 index 0000000000..264d79fae0 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Layout/index.tsx @@ -0,0 +1,31 @@ +// import { LayoutContent } from './LayoutContent'; +// import { LayoutHeader } from './LayoutHeader'; +// import { LayoutSidebar } from './LayoutSidebar'; +// import { Layout as LayoutMain } from './Layout'; +// import type { MutableRefObject } from 'react'; + +// export type ILayoutComponentType = (( +// props: any & { ref?: MutableRefObject } +// ) => JSX.Element) & { +// Content: React.MemoExoticComponent< +// (props: any & { ref?: MutableRefObject }) => JSX.Element +// >; +// Header: React.MemoExoticComponent< +// (props: any & { ref?: MutableRefObject }) => JSX.Element +// >; +// Sidebar: React.MemoExoticComponent< +// (props: any & { ref?: MutableRefObject }) => JSX.Element +// >; +// }; + +// const LayoutTemp = LayoutMain as any; +// LayoutTemp.Content = LayoutContent; +// LayoutTemp.Header = LayoutHeader; +// LayoutTemp.Sidebar = LayoutSidebar; + +// const Layout = LayoutTemp as ILayoutComponentType; + +// export { Layout }; + +export { Layout } from './Layout'; +export { LayoutContext } from './LayoutContext'; diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/LogoTag/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/LogoTag/index.tsx new file mode 100644 index 0000000000..b4288903ff --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/LogoTag/index.tsx @@ -0,0 +1,43 @@ +import React from 'react'; +import { Box, Text } from '../../primitives'; + +export function LogoTag({ tag, ...props }: { tag: string; props?: any }) { + return ( + + + {tag} + + + ); +} diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/MeetCreators/icons.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/MeetCreators/icons.tsx new file mode 100644 index 0000000000..9f333678ff --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/MeetCreators/icons.tsx @@ -0,0 +1,66 @@ +import React from 'react'; + +export const GeekyAntsLogo = () => { + return ( + + + + + + + + + + + + + + + ); +}; diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/MeetCreators/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/MeetCreators/index.tsx new file mode 100644 index 0000000000..20b19b1a21 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/MeetCreators/index.tsx @@ -0,0 +1,110 @@ +import { + Box, + Button, + HStack, + Link, + OpenInNewIcon, + Text, +} from '../../primitives'; +import React from 'react'; +import { GeekyAntsLogo } from './icons'; + +export function MeetCreators({ geekyantsLink }: { geekyantsLink: string }) { + return ( + + + + + Built with love at{' '} + + + + + We are a team of development experts who love open-source and solving + developer problems. We've built more than 500 products for + organizations across the globe ranging from startups to big + enterprises! + + + + + + + + + + ); +} diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Nav/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Nav/index.tsx new file mode 100644 index 0000000000..0869da3459 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Nav/index.tsx @@ -0,0 +1,5 @@ +import React, { memo } from 'react'; +import { StyledNav } from '../../styled-components'; +export const Nav = memo(({ ...props }: any) => { + return ; +}); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Newsletter/images.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Newsletter/images.tsx new file mode 100644 index 0000000000..f3f6a887ab --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Newsletter/images.tsx @@ -0,0 +1,37 @@ +import React from 'react'; + +export function MailIcon() { + return ( + + + + ); +} + +export function Done() { + return ( + + + + + ); +} diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Newsletter/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Newsletter/index.tsx new file mode 100644 index 0000000000..3d47637ff2 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Newsletter/index.tsx @@ -0,0 +1,329 @@ +import React, { useState } from 'react'; +import { + Box, + Text, + Input, + Button, + ArrowForwardIcon, + Link, +} from '../../primitives'; +import { Done } from './images'; +import Image from 'next/image'; +import axios from 'axios'; +import { Avatar } from '../../composites'; + +export type NewsletterAvatarItem = { + id: 'string'; + userName: 'string'; + avatarURl: 'string'; + profileUrl: 'string'; +}; + +const emailValidator = + /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; + +export const Newsletter = ({ + newsletterAvatarData, +}: { + newsletterAvatarData: NewsletterAvatarItem[]; +}) => { + const [loading, setLoading] = useState(false); + const [, setError] = useState(false); + const [success, setSuccess] = useState(false); + const [email, setEmail] = useState(''); + const [errorMessage, setErrorMessage] = useState(''); + + const makeRequestToServer = async () => { + setLoading(true); + const res = await axios.post('/api/newsletter-subscribe', { email: email }); + if (res.status === 200) { + setSuccess(true); + setError(false); + setLoading(false); + setErrorMessage(''); + setEmail(''); + } else { + setError(true); + setSuccess(false); + setLoading(false); + setErrorMessage('Error in subscribing!'); + setEmail(''); + } + }; + + const subscribeToNewsLetter = (e: any) => { + e.preventDefault(); + if (email === '') { + setErrorMessage('Email address is required!'); + setError(true); + + setError(true); + } else if (!emailValidator.test(email)) { + setErrorMessage('Enter a valid email address!'); + setError(true); + } else { + makeRequestToServer(); + } + }; + + return ( + + + + Get exclusive updates! + + + We can't do this alone, we would love feedback and the fastest + way for us to reach out to you is via emails. We won't spam, I + promise! + + + + + mail icon + + { + if (e.key === 'Enter') { + subscribeToNewsLetter(e); + } + }} + onChangeText={(value: string) => { + setEmail(value); + }} + fontFamily="$body" + placeholder="Enter your email" + color="$trueGray400" + fontWeight="$normal" + py="$0" + px="$4" + ml="$0" + sx={{ + '@base': { + fontSize: '$xl', + lineHeight: '$xl', + }, + // "@md": { + // fontSize: "$2xl", + // lineHeight: "$2xl", + // }, + }} + /> + + + + + {success && ( + + Thank you for subscribing to our newsletter! + + )} + + {errorMessage} + + + + + + {newsletterAvatarData.map((item) => ( + + + {item.userName} + + + + ))} + + + + + ); +}; diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/OL/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/OL/index.tsx new file mode 100644 index 0000000000..d6e531eaea --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/OL/index.tsx @@ -0,0 +1,22 @@ +import React from 'react'; + +export default function OL({ children, start = 1, ...props }: any) { + let index = start; + children = React.Children.map(children, (child: any) => { + if (typeof child !== 'string') { + index++; + return React.cloneElement( + child, + { + ol: true, + index, + ...child.props, + }, + child?.props?.children + ); + } + return child; + }); + + return
            {children}
          ; +} diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/PrevNextButtons/LinkButton.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/PrevNextButtons/LinkButton.tsx new file mode 100644 index 0000000000..22216ae4f1 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/PrevNextButtons/LinkButton.tsx @@ -0,0 +1,124 @@ +import React from 'react'; +import { Box, HStack, Text, VStack } from '../../primitives'; +import { createIcon } from '@gluestack-ui/icon'; +import { styled } from '@gluestack-style/react'; +import { Svg } from 'react-native-svg'; + +const Root = styled( + Svg, + { + w: 20, + h: 20, + // @ts-ignore + color: '$backgroundLight900', + _dark: { + //@ts-ignore + color: '$backgroundDark50', + }, + }, + { + ancestorStyle: ['_icon'], + } +); + +const ArrowBackDocsIcon = createIcon({ + Root, + viewBox: '0 0 20 20', + d: 'M9.15898 16.3666C9.36292 16.5528 9.67918 16.5384 9.86536 16.3345C10.0515 16.1305 10.0371 15.8143 9.8332 15.6281L3.66535 9.99736H17.4961C17.7722 9.99736 17.9961 9.7735 17.9961 9.49736C17.9961 9.22122 17.7722 8.99736 17.4961 8.99736H3.66824L9.8332 3.36927C10.0371 3.18309 10.0515 2.86684 9.86536 2.66289C9.67918 2.45895 9.36292 2.44456 9.15898 2.63074L2.24263 8.94478C2.10268 9.07254 2.02285 9.24008 2.00314 9.41323C1.99851 9.44058 1.99609 9.46869 1.99609 9.49736C1.99609 9.52423 1.99821 9.55061 2.00229 9.57633C2.02047 9.75224 2.10058 9.9229 2.24263 10.0526L9.15898 16.3666Z', +}); + +const ArrowForwardDocsIcon = createIcon({ + Root, + viewBox: '0 0 20 20', + d: 'M10.8371 2.63074C10.6332 2.44456 10.3169 2.45895 10.1307 2.66289C9.94456 2.86683 9.95895 3.18309 10.1629 3.36927L16.3307 9H2.5C2.22386 9 2 9.22386 2 9.5C2 9.77614 2.22386 10 2.5 10H16.3279L10.1629 15.6281C9.95895 15.8143 9.94456 16.1305 10.1307 16.3345C10.3169 16.5384 10.6332 16.5528 10.8371 16.3666L17.7535 10.0526C17.8934 9.92482 17.9732 9.75728 17.993 9.58414C17.9976 9.55678 18 9.52867 18 9.5C18 9.47313 17.9979 9.44675 17.9938 9.42103C17.9756 9.24512 17.8955 9.07446 17.7535 8.94478L10.8371 2.63074Z', +}); + +export const LinkButton = ({ pageText, pageLink, NextLink, type }: any) => { + const [isHovered, setIsHovered] = React.useState(false); + return ( + setIsHovered(true)} + onMouseOut={() => setIsHovered(false)} + > + + {/* {type === 'previous' ? ( + + + + ) : ( + + + + )} */} + + {type === 'previous' ? ( + + ) : ( + + )} + + + + + {type == 'previous' ? 'Go back' : 'Up next'} + + + {pageText} + + + + + ); +}; diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/PrevNextButtons/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/PrevNextButtons/index.tsx new file mode 100644 index 0000000000..43e045ba63 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/PrevNextButtons/index.tsx @@ -0,0 +1,89 @@ +import React from 'react'; +import { Box, HStack, VStack } from '../../primitives'; + +import { + convertSidebarItemsToPathsArray, + getPrevAndNextLinks, +} from '../../utils/helperFunction'; +import { LayoutContext } from '../Layout/LayoutContext'; +import { LinkButton } from './LinkButton'; + +export const PrevNextButtons = ({ sidebarItems }: any) => { + const { router, Link } = React.useContext(LayoutContext); + + const { prev, next, prevLink, nextLink } = getPrevAndNextLinks( + convertSidebarItemsToPathsArray(sidebarItems), + router.pathname + ); + + return ( + <> + + {prevLink ? ( + + ) : null} + {nextLink ? ( + + ) : null} + + + {prevLink ? ( + + ) : ( + + )} + {nextLink ? ( + + ) : ( + + )} + + + ); +}; diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Sidebar/SideBarGroupItemTag.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Sidebar/SideBarGroupItemTag.tsx new file mode 100644 index 0000000000..cae627534b --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Sidebar/SideBarGroupItemTag.tsx @@ -0,0 +1,5 @@ +import React, { memo } from 'react'; +import { StyledSideBarTag } from '../../styled-components'; +export const SidebarGroupItemTag = memo(({ ...props }: any) => { + return ; +}); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Sidebar/SideBarGroupItemTagText.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Sidebar/SideBarGroupItemTagText.tsx new file mode 100644 index 0000000000..10cd5d2526 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Sidebar/SideBarGroupItemTagText.tsx @@ -0,0 +1,5 @@ +import React, { memo } from 'react'; +import { StyledSideBarTagText } from '../../styled-components'; +export const SidebarGroupItemTagText = memo(({ ...props }: any) => { + return ; +}); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Sidebar/SideBarGroupItemText.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Sidebar/SideBarGroupItemText.tsx new file mode 100644 index 0000000000..98d11c2703 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Sidebar/SideBarGroupItemText.tsx @@ -0,0 +1,5 @@ +import React, { memo } from 'react'; +import { StyledSidebarGroupItemText } from '../../styled-components'; +export const SidebarGroupItemText = memo(({ ...props }: any) => { + return ; +}); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Sidebar/Sidebar.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Sidebar/Sidebar.tsx new file mode 100644 index 0000000000..0c05c2cea9 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Sidebar/Sidebar.tsx @@ -0,0 +1,5 @@ +import React, { memo } from 'react'; +import { StyledSidebar } from '../../styled-components'; +export const Sidebar = memo(({ ...props }: any) => { + return ; +}); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Sidebar/SidebarGroup.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Sidebar/SidebarGroup.tsx new file mode 100644 index 0000000000..b8232f4f04 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Sidebar/SidebarGroup.tsx @@ -0,0 +1,5 @@ +import React, { memo } from 'react'; +import { StyledSidebarGroup } from '../../styled-components'; +export const SidebarGroup = memo(({ ...props }: any) => { + return ; +}); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Sidebar/SidebarGroupHeader.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Sidebar/SidebarGroupHeader.tsx new file mode 100644 index 0000000000..1d666cebeb --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Sidebar/SidebarGroupHeader.tsx @@ -0,0 +1,5 @@ +import React, { memo } from 'react'; +import { StyledSidebarGroupHeader } from '../../styled-components'; +export const SidebarGroupHeader = memo(({ ...props }: any) => { + return ; +}); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Sidebar/SidebarGroupItem.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Sidebar/SidebarGroupItem.tsx new file mode 100644 index 0000000000..487819a0c2 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Sidebar/SidebarGroupItem.tsx @@ -0,0 +1,6 @@ +import { createPressable } from '@gluestack-ui/pressable'; +import { StyledSidebarGroupItem } from '../../styled-components'; + +export const SidebarGroupItem = createPressable({ + Root: StyledSidebarGroupItem, +}) as any; diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Sidebar/SidebarGroupItemContent.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Sidebar/SidebarGroupItemContent.tsx new file mode 100644 index 0000000000..e697b535f0 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Sidebar/SidebarGroupItemContent.tsx @@ -0,0 +1,5 @@ +import React, { memo } from 'react'; +import { StyledSidebarGroupItemContent } from '../../styled-components'; +export const SidebarGroupItemContent = memo(({ ...props }: any) => { + return ; +}); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Sidebar/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Sidebar/index.tsx new file mode 100644 index 0000000000..703faef006 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/Sidebar/index.tsx @@ -0,0 +1,54 @@ +import type { MutableRefObject } from 'react'; +import { Sidebar as SidebarMain } from './Sidebar'; +import { SidebarGroup } from './SidebarGroup'; +import { SidebarGroupHeader } from './SidebarGroupHeader'; +import { SidebarGroupItem } from './SidebarGroupItem'; +import { SidebarGroupItemText } from './SideBarGroupItemText'; +import { SidebarGroupItemContent } from './SidebarGroupItemContent'; +import { SidebarGroupItemTag } from './SideBarGroupItemTag'; +import { SidebarGroupItemTagText } from './SideBarGroupItemTagText'; +export type ISidebarComponentType = (( + props: any & { ref?: MutableRefObject } +) => JSX.Element) & { + Group: React.MemoExoticComponent< + (props: any & { ref?: MutableRefObject }) => JSX.Element + >; + GroupHeader: React.MemoExoticComponent< + (props: any & { ref?: MutableRefObject }) => JSX.Element + >; + GroupItem: React.MemoExoticComponent< + (props: any & { ref?: MutableRefObject }) => JSX.Element + >; + GroupItemContent: React.MemoExoticComponent< + (props: any & { ref?: MutableRefObject }) => JSX.Element + >; + GroupItemText: React.MemoExoticComponent< + (props: any & { ref?: MutableRefObject }) => JSX.Element + >; + GroupItemTag: React.MemoExoticComponent< + (props: any & { ref?: MutableRefObject }) => JSX.Element + >; + GroupItemTagText: React.MemoExoticComponent< + (props: any & { ref?: MutableRefObject }) => JSX.Element + >; +}; + +const SidebarTemp = SidebarMain as any; +SidebarTemp.Group = SidebarGroup; +SidebarTemp.GroupHeader = SidebarGroupHeader; +SidebarTemp.GroupItem = SidebarGroupItem; +SidebarTemp.GroupItemContent = SidebarGroupItemContent; +SidebarTemp.GroupItemText = SidebarGroupItemText; +SidebarTemp.GroupItemTag = SidebarGroupItemTag; +SidebarTemp.GroupItemTagText = SidebarGroupItemTagText; +const Sidebar = SidebarTemp as ISidebarComponentType; + +//@ts-ignore +Sidebar.displayName = 'Sidebar'; +Sidebar.Group.displayName = 'Group'; +Sidebar.GroupHeader.displayName = 'GroupHeader'; +Sidebar.GroupItem.displayName = 'GroupItem'; +Sidebar.GroupItemContent.displayName = 'GroupItemContent'; +Sidebar.GroupItemText.displayName = 'GroupItemText'; + +export { Sidebar }; diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/StyledSvg/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/StyledSvg/index.tsx new file mode 100644 index 0000000000..345c297f84 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/StyledSvg/index.tsx @@ -0,0 +1,25 @@ +import { styled } from '@gluestack-style/react'; +import { Svg } from 'react-native-svg'; +export const StyledSvg = styled( + Svg, + { + width: 24, + height: 24, + defaultProps: { + stroke: '$gray700', + viewBox: '0 0 24 24', + fill: 'none', + strokeWidth: 2, + strokeLinecap: 'round', + strokeLinejoin: 'round', + }, + }, + { resolveProps: ['stroke', 'color'] }, + { + propertyTokenMap: { + stroke: 'colors', + color: 'colors', + }, + propertyResolver: {}, + } +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/UL/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/UL/index.tsx new file mode 100644 index 0000000000..9c4de40f80 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/UL/index.tsx @@ -0,0 +1,5 @@ +import React, { memo } from 'react'; +import { StyledUL } from '../../styled-components'; +export const UL = memo(({ ...props }: any) => { + return ; +}); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/index.ts b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/index.ts new file mode 100644 index 0000000000..1c6ac58f19 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/custom/index.ts @@ -0,0 +1,27 @@ +export { Hoverable } from './Hoverable'; +export { LinkButton } from './PrevNextButtons/LinkButton'; +export { CodeBlock } from './CodeBlock'; +export { Nav } from './Nav'; +export { H1 } from './H1'; +export { H2 } from './H2'; +export { H3 } from './H3'; +export { H4 } from './H4'; +export { H5 } from './H5'; +export { LI } from './LI'; +export { UL } from './UL'; +export { Code } from './Code'; +export { Sidebar } from './Sidebar'; +export { InlineCode } from './InlineCode'; +export { BlockQuote } from './BlockQuote'; +export { ComponentRenderer, CodePreview, ArgsController } from './CodePreview'; +export { CodePreviewWithTabs } from './CodePreviewWithTabs'; +export { Layout, LayoutContext } from './Layout'; +export { Blog } from './Blog'; +export { Flyout } from './Flyout'; +export { Ecosystem } from './Ecosystem'; +export { Newsletter } from './Newsletter'; +export { Community } from './Community'; +export { MeetCreators } from './MeetCreators'; +export { LogoTag } from './LogoTag'; +export type { CommunityItem } from './Community'; +export type { NewsletterAvatarItem } from './Newsletter'; diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/gluestack-style.config.ts b/example/storybook-nativewind/src/components/Checkbox/design-system/src/gluestack-style.config.ts new file mode 100644 index 0000000000..fc884562ea --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/gluestack-style.config.ts @@ -0,0 +1,686 @@ +// @ts-nocheck +import { createConfig } from '@gluestack-style/react'; +import { config as uiConfig } from '@gluestack-ui/config'; +import { AnimationResolver } from '@gluestack-style/animation-resolver'; +import { MotionAnimationDriver } from '@gluestack-style/legend-motion-animation-driver'; +import { config as v2Config } from '@gluestack-ui/config-v2'; + +export const config = createConfig({ + aliases: { + bg: 'backgroundColor', + backgroundColor: 'backgroundColor', + bgColor: 'backgroundColor', + color: 'color', + borderColor: 'borderColor', + shadowColor: 'shadowColor', + shadowOffset: 'shadowOffset', + shadowOpacity: 'shadowOpacity', + shadowRadius: 'shadowRadius', + elevation: 'elevation', + // dimension + h: 'height', + w: 'width', + height: 'height', + width: 'width', + maxWidth: 'maxWidth', + maxHeight: 'maxHeight', + + // flex + flex: 'flex', + justifyContent: 'justifyContent', + display: 'display', + flexDirection: 'flexDirection', + alignItems: 'alignItems', + // padding + p: 'padding', + px: 'paddingHorizontal', + py: 'paddingVertical', + pt: 'paddingTop', + pb: 'paddingBottom', + pr: 'paddingRight', + pl: 'paddingLeft', + padding: 'padding', + paddingHorizontal: 'paddingHorizontal', + paddingVertical: 'paddingVertical', + paddingTop: 'paddingTop', + paddingBottom: 'paddingBottom', + paddingRight: 'paddingRight', + paddingLeft: 'paddingLeft', + // margin + m: 'margin', + mx: 'marginHorizontal', + my: 'marginVertical', + mt: 'marginTop', + mb: 'marginBottom', + mr: 'marginRight', + ml: 'marginLeft', + margin: 'margin', + marginHorizontal: 'marginHorizontal', + marginVertical: 'marginVertical', + marginTop: 'marginTop', + marginBottom: 'marginBottom', + marginRight: 'marginRight', + marginLeft: 'marginLeft', + // Borders + borderWidth: 'borderWidth', + borderBottomWidth: 'borderBottomWidth', + borderRadius: 'borderRadius', + rounded: 'borderRadius', + // Typography + letterSpacing: 'letterSpacing', + lineHeight: 'lineHeight', + fontWeight: 'fontWeight', + fontFamily: 'fontFamily', + fontSize: 'fontSize', + shadow: 'shadow', + // Media Query + condition: 'condition', + }, + + tokens: { + colors: { + 'rose50': '#fff1f2', + 'rose100': '#ffe4e6', + 'rose200': '#fecdd3', + 'rose300': '#fda4af', + 'rose400': '#fb7185', + 'rose500': '#f43f5e', + 'rose600': '#e11d48', + 'rose700': '#be123c', + 'rose800': '#9f1239', + 'rose900': '#881337', + 'pink50': '#fdf2f8', + 'pink100': '#fce7f3', + 'pink200': '#fbcfe8', + 'pink300': '#f9a8d4', + 'pink400': '#f472b6', + 'pink500': '#ec4899', + 'pink600': '#db2777', + 'pink700': '#be185d', + 'pink800': '#9d174d', + 'pink900': '#831843', + 'fuchsia50': '#fdf4ff', + 'fuchsia100': '#fae8ff', + 'fuchsia200': '#f5d0fe', + 'fuchsia300': '#f0abfc', + 'fuchsia400': '#e879f9', + 'fuchsia500': '#d946ef', + 'fuchsia600': '#c026d3', + 'fuchsia700': '#a21caf', + 'fuchsia800': '#86198f', + 'fuchsia900': '#701a75', + 'purple50': '#faf5ff', + 'purple100': '#f3e8ff', + 'purple200': '#e9d5ff', + 'purple300': '#d8b4fe', + 'purple400': '#c084fc', + 'purple500': '#a855f7', + 'purple600': '#9333ea', + 'purple700': '#7e22ce', + 'purple800': '#6b21a8', + 'purple900': '#581c87', + 'violet50': '#f5f3ff', + 'violet100': '#ede9fe', + 'violet200': '#ddd6fe', + 'violet300': '#c4b5fd', + 'violet400': '#a78bfa', + 'violet500': '#8b5cf6', + 'violet600': '#7c3aed', + 'violet700': '#6d28d9', + 'violet800': '#5b21b6', + 'violet900': '#4c1d95', + 'indigo50': '#eef2ff', + 'indigo100': '#e0e7ff', + 'indigo200': '#c7d2fe', + 'indigo300': '#a5b4fc', + 'indigo400': '#818cf8', + 'indigo500': '#6366f1', + 'indigo600': '#4f46e5', + 'indigo700': '#4338ca', + 'indigo800': '#3730a3', + 'indigo800_50': '#3730a380', + 'indigo900': '#312e81', + 'blue50': '#eff6ff', + 'blue100': '#dbeafe', + 'blue200': '#bfdbfe', + 'blue300': '#93c5fd', + 'blue400': '#60a5fa', + 'blue500': '#3b82f6', + 'blue600': '#2563eb', + 'blue600_alpha10': '#06b6d41a', + 'blue600_alpha20': '#06b6d433', + 'blue700': '#1d4ed8', + 'blue800': '#1e40af', + 'blue900': '#1e3a8a', + 'lightBlue50': '#f0f9ff', + 'lightBlue100': '#e0f2fe', + 'lightBlue200': '#bae6fd', + 'lightBlue300': '#7dd3fc', + 'lightBlue400': '#38bdf8', + 'lightBlue500': '#0ea5e9', + 'lightBlue600': '#0284c7', + 'lightBlue700': '#0369a1', + 'lightBlue800': '#075985', + 'lightBlue900': '#0c4a6e', + 'darkBlue50': '#dbf4ff', + 'darkBlue100': '#addbff', + 'darkBlue200': '#7cc2ff', + 'darkBlue300': '#4aa9ff', + 'darkBlue400': '#1a91ff', + 'darkBlue500': '#0077e6', + 'darkBlue600': '#005db4', + 'darkBlue700': '#004282', + 'darkBlue800': '#002851', + 'darkBlue900': '#000e21', + 'cyan50': '#ecfeff', + 'cyan100': '#cffafe', + 'cyan200': '#a5f3fc', + 'cyan300': '#67e8f9', + 'cyan400': '#22d3ee', + 'cyan500': '#06b6d4', + 'cyan600': '#0891b2', + 'cyan700': '#0e7490', + 'cyan800': '#155e75', + 'cyan900': '#164e63', + 'teal50': '#f0fdfa', + 'teal100': '#ccfbf1', + 'teal200': '#99f6e4', + 'teal300': '#5eead4', + 'teal400': '#2dd4bf', + 'teal500': '#14b8a6', + 'teal600': '#0d9488', + 'teal700': '#0f766e', + 'teal800': '#115e59', + 'teal900': '#134e4a', + 'emerald50': '#ecfdf5', + 'emerald100': '#d1fae5', + 'emerald200': '#a7f3d0', + 'emerald300': '#6ee7b7', + 'emerald400': '#34d399', + 'emerald500': '#10b981', + 'emerald600': '#059669', + 'emerald700': '#047857', + 'emerald800': '#065f46', + 'emerald900': '#064e3b', + 'green50': '#f0fdf4', + 'green100': '#dcfce7', + 'green200': '#bbf7d0', + 'green300': '#86efac', + 'green400': '#4ade80', + 'green500': '#22c55e', + 'green600': '#16a34a', + 'green700': '#15803d', + 'green800': '#166534', + 'green900': '#14532d', + 'lime50': '#f7fee7', + 'lime100': '#ecfccb', + 'lime200': '#d9f99d', + 'lime300': '#bef264', + 'lime400': '#a3e635', + 'lime500': '#84cc16', + 'lime600': '#65a30d', + 'lime700': '#4d7c0f', + 'lime800': '#3f6212', + 'lime900': '#365314', + 'yellow50': '#fefce8', + 'yellow100': '#fef9c3', + 'yellow200': '#fef08a', + 'yellow300': '#fde047', + 'yellow400': '#facc15', + 'yellow500': '#eab308', + 'yellow600': '#ca8a04', + 'yellow700': '#a16207', + 'yellow800': '#854d0e', + 'yellow900': '#713f12', + 'amber50': '#fffbeb', + 'amber100': '#fef3c7', + 'amber200': '#fde68a', + 'amber300': '#fcd34d', + 'amber400': '#fbbf24', + 'amber500': '#f59e0b', + 'amber600': '#d97706', + 'amber700': '#b45309', + 'amber800': '#92400e', + 'amber900': '#78350f', + 'orange50': '#fff7ed', + 'orange100': '#ffedd5', + 'orange200': '#fed7aa', + 'orange300': '#fdba74', + 'orange400': '#fb923c', + 'orange500': '#f97316', + 'orange600': '#ea580c', + 'orange700': '#c2410c', + 'orange800': '#9a3412', + 'orange900': '#7c2d12', + 'red50': '#fef2f2', + 'red100': '#fee2e2', + 'red200': '#fecaca', + 'red300': '#fca5a5', + 'red400': '#f87171', + 'red500': '#ef4444', + 'red600': '#dc2626', + 'red700': '#b91c1c', + 'red800': '#991b1b', + 'red900': '#7f1d1d', + 'warmGray50': '#fafaf9', + 'warmGray100': '#f5f5f4', + 'warmGray200': '#e7e5e4', + 'warmGray300': '#d6d3d1', + 'warmGray400': '#a8a29e', + 'warmGray500': '#78716c', + 'warmGray600': '#57534e', + 'warmGray700': '#44403c', + 'warmGray800': '#292524', + 'warmGray900': '#1c1917', + 'trueGray50': '#fafafa', + 'trueGray100': '#f5f5f5', + 'trueGray200': '#e5e5e5', + 'trueGray300': '#d4d4d4', + 'trueGray400': '#a3a3a3', + 'trueGray500': '#737373', + 'trueGray600': '#525252', + 'trueGray700': '#404040', + 'trueGray800': '#262626', + 'trueGray900': '#171717', + 'gray50': '#fafafa', + 'gray100': '#f4f4f5', + 'gray200': '#e4e4e7', + 'gray300': '#d4d4d8', + 'gray400': '#a1a1aa', + 'gray500': '#71717a', + 'gray600': '#52525b', + 'gray700': '#3f3f46', + 'gray800': '#27272a', + 'gray900': '#18181b', + 'coolGray50': '#f9fafb', + 'coolGray100': '#f3f4f6', + 'coolGray200': '#e5e7eb', + 'coolGray300': '#d1d5db', + 'coolGray400': '#9ca3af', + 'coolGray500': '#6b7280', + 'coolGray600': '#4b5563', + 'coolGray700': '#374151', + 'coolGray800': '#1f2937', + 'coolGray900': '#111827', + 'blueGray50': '#f8fafc', + 'blueGray100': '#f1f5f9', + 'blueGray200': '#e2e8f0', + 'blueGray300': '#cbd5e1', + 'blueGray400': '#94a3b8', + 'blueGray500': '#64748b', + 'blueGray600': '#475569', + 'blueGray700': '#334155', + 'blueGray800': '#1e293b', + 'blueGray900': '#0f172a', + 'text50': '#fafafa', + 'text100': '#f5f5f5', + 'text200': '#e5e5e5', + 'text300': '#d4d4d4', + 'text400': '#a3a3a3', + 'text500': '#737373', + 'text600': '#525252', + 'text700': '#404040', + 'text800': '#262626', + 'text900': '#171717', + 'light50': '#fafaf9', + 'light100': '#f5f5f4', + 'light200': '#e7e5e4', + 'light300': '#d6d3d1', + 'light400': '#a8a29e', + 'light500': '#78716c', + 'light600': '#57534e', + 'light700': '#44403c', + 'light800': '#292524', + 'light900': '#1c1917', + 'dark50': '#18181b', + 'dark100': '#27272a', + 'dark200': '#3f3f46', + 'dark300': '#52525b', + 'dark400': '#71717a', + 'dark500': '#a1a1aa', + 'dark600': '#d4d4d8', + 'dark700': '#e4e4e7', + 'dark800': '#f4f4f5', + 'dark900': '#fafafa', + // Will keep following colors + 'white': '#FFFFFF', + 'black': '#000000', + 'lightText': '#FFFFFF', + 'darkText': '#000000', + + //Primary, Secondary, Tertiary + 'primary50': '#dbf4ff', + 'primary50_alpha_50': '#DBF4FF80', + 'primary100': '#addbff', + 'primary100_alpha_30': '#ADDBFF4D', + 'primary100_alpha_50': '#ADDBFF80', + 'primary200': '#7cc2ff', + 'primary300': '#4aa9ff', + 'primary400': '#1a91ff', + 'primary500': '#0077e6', + 'primary600': '#005db4', + 'primary600_alpha_30': '#005DB44D', + 'primary600_alpha_50': '#005DB480', + 'primary700': '#004282', + 'primary800': '#002851', + 'primary900': '#000e21', + 'secondary50': '#fafafa', + 'secondary50_alpha_10': '#ffffff1a', + 'secondary50_alpha_20': '#ffffff33', + 'secondary100': '#f5f5f5', + 'secondary200': '#e5e5e5', + 'secondary300': '#d4d4d4', + 'secondary300_alpha_70': '#d4d4d4b3', + 'secondary400': '#a3a3a3', + 'secondary500': '#737373', + 'secondary600': '#525252', + 'secondary700': '#404040', + 'secondary800': '#262626', + 'secondary900': '#171717', + 'tertiary50': '#ecfdf5', + 'tertiary100': '#d1fae5', + 'tertiary200': '#a7f3d0', + 'tertiary300': '#6ee7b7', + 'tertiary400': '#34d399', + 'tertiary500': '#10b981', + 'tertiary600': '#059669', + 'tertiary700': '#047857', + 'tertiary800': '#065f46', + 'tertiary900': '#064e3b', + + //Info, Warning, Danger, Error, Success + 'info100': '#e0f2fe', + 'info200': '#bae6fd', + 'info300': '#7dd3fc', + 'info400': '#38bdf8', + 'info500': '#0ea5e9', + 'info600': '#0284c7', + 'info700': '#0369a1', + 'info800': '#075985', + 'info900': '#0c4a6e', + 'danger50': '#fff1f2', + 'danger100': '#ffe4e6', + 'danger200': '#fecdd3', + 'danger300': '#fda4af', + 'danger400': '#fb7185', + 'danger500': '#f43f5e', + 'danger600': '#e11d48', + 'danger700': '#be123c', + 'danger800': '#9f1239', + 'danger900': '#881337', + 'error50': '#fef2f2', + 'error100': '#fee2e2', + 'error200': '#fecaca', + 'error300': '#fca5a5', + 'error400': '#f87171', + 'error500': '#ef4444', + 'error600': '#dc2626', + 'error700': '#b91c1c', + 'error800': '#991b1b', + 'error900': '#7f1d1d', + 'success50': '#f0fdf4', + 'success100': '#dcfce7', + 'success200': '#bbf7d0', + 'success300': '#86efac', + 'success400': '#4ade80', + 'success500': '#22c55e', + 'success600': '#16a34a', + 'success700': '#15803d', + 'success800': '#166534', + 'success900': '#14532d', + 'warning50': '#fff7ed', + 'warning100': '#ffedd5', + 'warning200': '#fed7aa', + 'warning300': '#fdba74', + 'warning400': '#fb923c', + 'warning500': '#f97316', + 'warning600': '#ea580c', + 'warning700': '#c2410c', + 'warning800': '#9a3412', + 'warning900': '#7c2d12', + 'muted50': '#fafafa', + 'muted100': '#f5f5f5', + 'muted200': '#e5e5e5', + 'muted300': '#d4d4d4', + 'muted400': '#a3a3a3', + 'muted500': '#737373', + 'muted600': '#525252', + 'muted700': '#404040', + 'muted800': '#262626', + 'muted900': '#171717', + + 'textLight50': '#fafafa', + 'textLight100': '#f5f5f5', + 'textLight200': '#e5e5e5', + 'textLight300': '#d4d4d4', + 'textLight400': '#a3a3a3', + 'textLight500': '#737373', + 'textLight600': '#525252', + 'textLight700': '#404040', + 'textLight800': '#262626', + 'textLight900': '#171717', + 'textDark50': '#fafafa', + 'textDark100': '#f5f5f5', + 'textDark200': '#e5e5e5', + 'textDark300': '#d4d4d4', + 'textDark400': '#a3a3a3', + 'textDark500': '#737373', + 'textDark600': '#525252', + 'textDark700': '#404040', + 'textDark800': '#262626', + 'textDark900': '#171717', + + 'borderLight50': '#fafafa', + 'borderLight100': '#f5f5f5', + 'borderLight200': '#e5e5e5', + 'borderLight300': '#d4d4d4', + 'borderLight400': '#a3a3a3', + 'borderLight500': '#737373', + 'borderLight600': '#525252', + 'borderLight700': '#404040', + 'borderLight800': '#262626', + 'borderLight900': '#171717', + 'borderDark50': '#fafafa', + 'borderDark100': '#f5f5f5', + 'borderDark200': '#e5e5e5', + 'borderDark300': '#d4d4d4', + 'borderDark400': '#a3a3a3', + 'borderDark500': '#737373', + 'borderDark600': '#525252', + 'borderDark700': '#404040', + 'borderDark800': '#262626', + 'borderDark900': '#171717', + + 'backgroundLight0': '#fcfcfc', + 'backgroundLight50': '#fafafa', + 'backgroundLight100': '#f5f5f5', + 'backgroundLight200': '#e5e5e5', + 'backgroundLight300': '#d4d4d4', + 'backgroundLight400': '#a3a3a3', + 'backgroundLight400-alpha50': '#a3a3a380', + 'backgroundLight500': '#737373', + 'backgroundLight600': '#525252', + 'backgroundLight700': '#404040', + 'backgroundLight800': '#262626', + 'backgroundLight900': '#171717', + 'backgroundDark50': '#fafafa', + 'backgroundDark100': '#f5f5f5', + 'backgroundDark200': '#e5e5e5', + 'backgroundDark300': '#d4d4d4', + 'backgroundDark400': '#a3a3a3', + 'backgroundDark500': '#737373', + 'backgroundDark600': '#525252', + 'backgroundDark700': '#404040', + 'backgroundDark800': '#262626', + 'backgroundDark900': '#171717', + 'backgroundLightError': '#FEF1F1', + 'backgroundDarkError': '#2E2020', + 'backgroundLightWarning': '#FFF4EB', + 'backgroundDarkWarning': '#2E231B', + 'backgroundLightSuccess': '#EDFCF2', + 'backgroundDarkSuccess': '#1C2B21', + 'backgroundLightInfo': '#EBF8FE', + 'backgroundDarkInfo': '#1A282E', + 'backgroundLightMuted': '#F6F6F7', + 'backgroundDarkMuted': '#252526', + }, + space: { + 'px': '1px', + '0': 0, + '0.5': 2, + '1': 4, + '1.5': 6, + '2': 8, + '2.5': 10, + '3': 12, + '3.5': 14, + '4': 16, + '4.5': 18, + '5': 20, + '6': 24, + '7': 28, + '8': 32, + '9': 36, + '10': 40, + '11': 44, + '12': 48, + '16': 64, + '20': 80, + '24': 96, + '32': 128, + '40': 160, + '48': 192, + '56': 224, + '64': 256, + '72': 288, + '80': 320, + '96': 384, + '1/2': '50%', + '1/3': '33.333%', + '2/3': '66.666%', + '1/4': '25%', + '2/4': '50%', + '3/4': '75%', + '1/5': '20%', + '2/5': '40%', + '3/5': '60%', + '4/5': '80%', + '1/6': '16.666%', + '2/6': '33.333%', + '3/6': '50%', + '4/6': '66.666%', + '5/6': '83.333%', + 'full': '100%', + }, + borderWidths: { + '0': 0, + '1': '1px', + '2': '2px', + '4': '4px', + '8': '8px', + }, + radii: { + 'none': 0, + 'xs': 2, + 'sm': 4, + 'md': 6, + 'lg': 8, + 'xl': 12, + '2xl': 16, + '3xl': 24, + 'full': 9999, + }, + breakpoints: { + base: 0, + sm: 480, + md: 768, + lg: 992, + lgxl: 1100, + xl: 1280, + xxl: 1441, + }, + mediaQueries: { + base: '@media screen and (min-width: 0)', + sm: '@media screen and (min-width: 480px)', + md: '@media screen and (min-width: 768px)', + lg: '@media screen and (min-width: 992px)', + lgxl: '@media screen and (min-width: 1100px)', + xl: '@media screen and (min-width: 1280px)', + xxl: '@media screen and (min-width: 1441px)', + }, + letterSpacings: { + 'xs': '-0.05em', + 'sm': '-0.025em', + 'md': 0, + 'lg': '0.025em', + 'xl': '0.05em', + '2xl': '0.1em', + }, + lineHeights: { + '2xs': '16px', + 'xs': '18px', + 'sm': '22px', + 'md': '24px', + 'lg': '28px', + 'xl': '30px', + '2xl': '36px', + '3xl': '46px', + '4xl': '54px', + '5xl': '72px', + '6xl': '90px', + '7xl': '108px', + '8xl': '144px', + '9xl': '144px', + }, + fontWeights: { + hairline: '100', + thin: '200', + light: '300', + normal: 400, + medium: '500', + semibold: '600', + bold: '700', + extrabold: '800', + black: '900', + extraBlack: '950', + }, + fonts: { + heading: 'Plus Jakarta Sans, sans-serif', + body: 'Inter, sans-serif', + mono: 'monospace', + // body400: + }, + fontSizes: { + '2xs': 10, + 'xs': 12, + 'sm': 14, + 'md': 16, + 'lg': 18, + 'xl': 20, + '2xl': 24, + '3xl': 30, + '4xl': 36, + '5xl': 48, + '6xl': 60, + '7xl': 72, + '8xl': 96, + '9xl': 128, + }, + }, + + themes: { + ...v2Config.themes, + }, + globalStyle: { + variants: {}, + }, + + plugins: [new AnimationResolver(MotionAnimationDriver)], + components: uiConfig.components, +} as const); + +type ConfigType = typeof config; + +declare module '@gluestack-style/react' { + interface ICustomConfig extends ConfigType {} +} diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/hooks/index.ts b/example/storybook-nativewind/src/components/Checkbox/design-system/src/hooks/index.ts new file mode 100644 index 0000000000..03849eae84 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/hooks/index.ts @@ -0,0 +1,3 @@ +import { useClipboard } from './useClipboard'; + +export { useClipboard }; diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/hooks/useClipboard.ts b/example/storybook-nativewind/src/components/Checkbox/design-system/src/hooks/useClipboard.ts new file mode 100644 index 0000000000..fb3d08b6f9 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/hooks/useClipboard.ts @@ -0,0 +1,19 @@ +import React from 'react'; +import { Clipboard } from 'react-native'; + +export function useClipboard() { + const [hasCopied, setHasCopied] = React.useState(false); + const [value, setValue] = React.useState(''); + const onCopy = async (copiedValue: string) => { + if (Clipboard) { + await Clipboard.setString(copiedValue); + } + setValue(copiedValue); + setHasCopied(true); + }; + return { + value, + onCopy, + hasCopied, + }; +} diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/index.ts b/example/storybook-nativewind/src/components/Checkbox/design-system/src/index.ts new file mode 100644 index 0000000000..b9ef591d6a --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/index.ts @@ -0,0 +1,95 @@ +export * from './core'; +export { + Box, + Button, + Checkbox, + Heading, + HStack, + Image, + Input, + Link, + Pressable, + Radio, + Select, + Spinner, + Switch, + Text, + TextArea, + VStack, + // CheckIcon, + // InfoOutlineIcon, + // InfoIcon, + // Icon, + Slider, // BulletPointIcon, +} from './primitives'; +import ecosystemData from './utils/ecosystem.json'; + +// import data from './utils/ecosystem.json'; +import data from './utils/ecosystem.json'; +export { config } from './gluestack-style.config'; + +export { useClipboard } from './hooks'; + +export { + Actionsheet, + Center, + Alert, + AlertDialog, + Avatar, + Badge, + Divider, + Fab, + FormControl, + Menu, + Modal, + Popover, + Progress, + useToast, + Table, + TableContainer, + ToastComponent, + Tooltip, + Slide, + Fade, + PresenceTransition, + Stagger, + Tabs, +} from './composites'; + +export * from './primitives/Icon'; + +export { + CodeBlock, + Nav, + H1, + H2, + H3, + H4, + H5, + UL, + LI, + Code, + Sidebar, + InlineCode, + BlockQuote, + CodePreview, + CodePreviewWithTabs, + Layout, + LayoutContext, + Blog, + Hoverable, + Flyout, + Ecosystem, + Newsletter, + NewsletterAvatarItem, + Community, + MeetCreators, + LogoTag, +} from './custom'; + +export { CommunityItem } from './custom'; +export type { EcosystemItem, DataKey } from './utils/ecosystem'; +export { ecosystemData }; +export { data }; +export { flush } from '@gluestack-style/react'; +export { CollapsibleCode } from './custom/CollapsibleCode/index'; diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Box/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Box/index.tsx new file mode 100644 index 0000000000..d136300d94 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Box/index.tsx @@ -0,0 +1,2 @@ +import Root from './styled-components/Root'; +export const Box = Root; diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Box/styled-components/Root.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Box/styled-components/Root.tsx new file mode 100644 index 0000000000..03056b11c3 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Box/styled-components/Root.tsx @@ -0,0 +1,10 @@ +import { View } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled( + View, + {}, + { + descendantStyle: ['_text'], + } +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Button/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Button/index.tsx new file mode 100644 index 0000000000..1d221d22b7 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Button/index.tsx @@ -0,0 +1,17 @@ +import { createButton } from '@gluestack-ui/button'; +import Group from './styled-components/Group'; +import Root from './styled-components/Root'; +import GroupSpacer from './styled-components/GroupSpacer'; +import Spinner from './styled-components/Spinner'; +import Text from './styled-components/Text'; +import Icon from './styled-components/Icon'; + +export const Button = createButton({ + Root: Root, + Text: Text, + Group: Group, + Spinner: Spinner, + GroupHSpacer: GroupSpacer, + GroupVSpacer: GroupSpacer, + Icon, +}); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Button/styled-components/Group.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Button/styled-components/Group.tsx new file mode 100644 index 0000000000..7d8f366953 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Button/styled-components/Group.tsx @@ -0,0 +1,19 @@ +import { styled } from '@gluestack-style/react'; +import { View } from 'react-native'; + +export default styled( + View, + { + variants: { + variant: { + row: {}, + column: {}, + }, + }, + + defaultProps: { + space: 'md', + }, + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Button/styled-components/GroupSpacer.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Button/styled-components/GroupSpacer.tsx new file mode 100644 index 0000000000..ede91e69ac --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Button/styled-components/GroupSpacer.tsx @@ -0,0 +1,21 @@ +import { styled } from '@gluestack-style/react'; +import { View } from 'react-native'; + +export default styled( + View, + { + variants: { + variant: { + row: {}, + column: {}, + }, + + size: { + sm: {}, + md: {}, + lg: {}, + }, + }, + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Button/styled-components/Icon.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Button/styled-components/Icon.tsx new file mode 100644 index 0000000000..4a1effc581 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Button/styled-components/Icon.tsx @@ -0,0 +1,42 @@ +import { AsForwarder, styled } from '@gluestack-style/react'; + +export default styled( + AsForwarder, + { + variants: { + size: { + xs: { + h: '$3', + w: '$3', + }, + sm: { + h: '$4', + w: '$4', + }, + md: { + h: 18, + w: 18, + }, + lg: { + h: '$5', + w: '$5', + }, + xl: { + h: '$6', + w: '$6', + }, + }, + }, + defaultProps: { + size: 'md', + }, + }, + { + ancestorStyle: ['_icon'], + }, + { + propertyTokenMap: { + stroke: 'colors', + }, + } +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Button/styled-components/Root.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Button/styled-components/Root.tsx new file mode 100644 index 0000000000..5b41bb3799 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Button/styled-components/Root.tsx @@ -0,0 +1,119 @@ +import { styled } from '@gluestack-style/react'; +import { Pressable } from 'react-native'; + +export default styled( + Pressable, + { + 'borderRadius': '$full', + 'flexDirection': 'row', + 'justifyContent': 'center', + 'alignItems': 'center', + + '_text': { + color: '$textDark50', + fontWeight: '$medium', + }, + + '_spinner': { + color: '$backgroundDark50', + }, + + '_icon': { + color: '$backgroundDark50', + }, + + 'variants': { + variant: { + primary: { + bg: '$primary500', + + _web: { + 'boxShadow': + '0px 1px 3px rgba(0, 119, 230, 0.24), 0px 2px 6px rgba(0, 119, 230, 0.24), 0px 4px 8px rgba(0, 119, 230, 0.12), inset 1px 1px 2px rgba(255, 255, 255, 0.24)', + ':hover': { + boxShadow: + '0px 1px 3px rgba(10, 124, 255, 0.24), 0px 2px 6px rgba(10, 124, 255, 0.24), 0px 4px 8px rgba(10, 124, 255, 0.12), 0px 12px 48px -8px rgba(10, 124, 255, 0.48), inset 1px 1px 2px rgba(255, 255, 255, 0.24)', + }, + + ':active': { + boxShadow: + '0px 1px 3px rgba(0, 119, 230, 0.24), 0px 2px 6px rgba(0, 119, 230, 0.24), 0px 4px 8px rgba(0, 119, 230, 0.12), inset 1px 1px 2px rgba(255, 255, 255, 0.24)', + }, + + ':focusVisible': { + boxShadow: + '0px 1px 3px rgba(10, 124, 255, 0.24), 0px 2px 6px rgba(10, 124, 255, 0.24), 0px 4px 8px rgba(10, 124, 255, 0.12), 0px 12px 48px -8px rgba(10, 124, 255, 0.48), inset 1px 1px 2px rgba(255, 255, 255, 0.24)', + }, + }, + }, + + secondary: { + 'bg': '$secondary50_alpha_10', + + '_web': { + boxShadow: + 'inset -1px -1px 0px rgba(255, 255, 255, 0.08), inset 0px 0px 0px 1px rgba(255, 255, 255, 0.06);', + }, + + ':hover': { + bg: '$secondary50_alpha_20', + }, + + ':active': { + bg: '$secondary50_alpha_10', + }, + + ':focusVisible': { + bg: '$secondary50_alpha_20', + }, + }, + + unstyled: { + 'borderRadius': undefined, + + '_text': { + color: '$black', + }, + + '_icon': { + color: '$black', + }, + + ':hover': { + bg: 'transparent', + }, + }, + }, + + size: { + md: { + px: '$4', + py: '$2', + + _text: { + fontSize: '$md', + lineHeight: '$md', + }, + }, + }, + }, + + 'defaultProps': { + size: 'md', + variant: 'primary', + }, + + '_web': { + cursor: 'pointer', + userSelect: 'none', + outlineWidth: 0, + }, + + ':disabled': { + opacity: 0.5, + }, + }, + { + descendantStyle: ['_text', '_spinner', '_icon'], + } +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Button/styled-components/Spinner.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Button/styled-components/Spinner.tsx new file mode 100644 index 0000000000..dfc0c614c5 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Button/styled-components/Spinner.tsx @@ -0,0 +1,8 @@ +import { styled } from '@gluestack-style/react'; +import { ActivityIndicator } from 'react-native'; + +export default styled( + ActivityIndicator, + {}, + { ancestorStyle: ['_spinner'], resolveProps: ['color'] } +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Button/styled-components/Text.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Button/styled-components/Text.tsx new file mode 100644 index 0000000000..907c0bf175 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Button/styled-components/Text.tsx @@ -0,0 +1,10 @@ +import { Text } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled( + Text, + { + color: '$text800', + }, + { ancestorStyle: ['_text'] } +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Checkbox/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Checkbox/index.tsx new file mode 100644 index 0000000000..58b7431bce --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Checkbox/index.tsx @@ -0,0 +1,14 @@ +import { createCheckbox } from '@gluestack-ui/checkbox'; +import Group from './styled-components/Group'; +import Icon from './styled-components/Icon'; +import Indicator from './styled-components/Indicator'; +import Label from './styled-components/Label'; +import Root from './styled-components/Root'; + +export const Checkbox = createCheckbox({ + Root, + Indicator, + Icon, + Label, + Group, +}); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Checkbox/styled-components/Group.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Checkbox/styled-components/Group.tsx new file mode 100644 index 0000000000..ed8dcb8cc7 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Checkbox/styled-components/Group.tsx @@ -0,0 +1,4 @@ +import { styled } from '@gluestack-style/react'; +import { View } from 'react-native'; + +export default styled(View, {}, {}); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Checkbox/styled-components/Icon.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Checkbox/styled-components/Icon.tsx new file mode 100644 index 0000000000..6e0ba3dc71 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Checkbox/styled-components/Icon.tsx @@ -0,0 +1,27 @@ +import { View } from 'react-native'; +import { styled } from '@gluestack-style/react'; +export default styled( + View, + { + 'w': '100%', + 'h': '100%', + 'justifyContent': 'center', + 'alignItems': 'center', + // @ts-ignore + 'color': '$white', + + ':checked': { + ':hover': { + // @ts-ignore + color: '$white', + }, + }, + + ':disabled': { + opacity: 0.6, + }, + }, + { + ancestorStyle: ['_icon'], + } +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Checkbox/styled-components/Indicator.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Checkbox/styled-components/Indicator.tsx new file mode 100644 index 0000000000..46940acc1b --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Checkbox/styled-components/Indicator.tsx @@ -0,0 +1,48 @@ +import { View } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled( + View, + { + 'justifyContent': 'center', + 'alignItems': 'center', + 'borderColor': '$muted400', + 'bg': '$muted50', + 'borderWidth': 2, + 'borderRadius': 6, + + '_web': { + ':focusVisible': { + outlineWidth: '2px', + outlineColor: '$primary400', + outlineStyle: 'solid', + }, + }, + + ':checked': { + borderColor: '$primary600', + bg: '$primary600', + }, + + ':hover': { + 'borderColor': '$muted500', + + ':checked': { + bg: '$primary700', + borderColor: '$primary700', + }, + }, + + ':active': { + bg: '$primary800', + borderColor: '$primary800', + }, + + ':invalid': { + borderColor: '$error600', + }, + }, + { + ancestorStyle: ['_indicator'], + } +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Checkbox/styled-components/Label.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Checkbox/styled-components/Label.tsx new file mode 100644 index 0000000000..4ec4eeb18d --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Checkbox/styled-components/Label.tsx @@ -0,0 +1,27 @@ +import { Text } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled( + Text, + { + 'color': '$black', + 'ml': '$2', + + ':disabled': { + opacity: 0.6, + }, + + '_web': { + MozUserSelect: 'none', + WebkitUserSelect: 'none', + msUserSelect: 'none', + }, + + '_dark': { + color: '$lightText', + }, + }, + { + ancestorStyle: ['_text'], + } +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Checkbox/styled-components/Root.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Checkbox/styled-components/Root.tsx new file mode 100644 index 0000000000..24ba1eed86 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Checkbox/styled-components/Root.tsx @@ -0,0 +1,80 @@ +import { Pressable } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled( + Pressable, + { + 'p': 8, + 'flexDirection': 'row', + 'justifyContent': 'flex-start', + 'alignItems': 'center', + + '_icon': { + color: '$muted50', + }, + + 'variants': { + size: { + lg: { + _icon: { + height: '$5', + width: '$5', + }, + + _text: { + fontSize: '$xl', + }, + + _indicator: { + h: '$6', + w: '$6', + }, + }, + + md: { + _icon: { + height: '$4', + width: '$4', + }, + + _text: { + fontSize: '$lg', + }, + + _indicator: { + h: '$5', + w: '$5', + }, + }, + + sm: { + _icon: { + height: '$3', + width: '$3', + }, + + _text: { + fontSize: '$md', + }, + + _indicator: { + h: '$4', + w: '$4', + }, + }, + }, + }, + + 'defaultProps': { + size: 'md', + }, + + //@ts-ignore + ':disabled': { + opacity: 0.5, + }, + }, + { + descendantStyle: ['_icon', '_text', '_indicator'], + } +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Checkbox/styled-components/Root.web.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Checkbox/styled-components/Root.web.tsx new file mode 100644 index 0000000000..1df874e5df --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Checkbox/styled-components/Root.web.tsx @@ -0,0 +1,79 @@ +import { View } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled( + View, + { + 'p': 8, + 'flexDirection': 'row', + 'justifyContent': 'center', + 'alignItems': 'center', + + 'variants': { + size: { + lg: { + _icon: { + height: '$5', + width: '$5', + }, + + _text: { + fontSize: '$xl', + }, + + _indicator: { + h: '$6', + w: '$6', + }, + }, + + md: { + _icon: { + height: '$4', + width: '$4', + }, + + _text: { + fontSize: '$lg', + }, + + _indicator: { + h: '$5', + w: '$5', + }, + }, + + sm: { + _icon: { + height: '$3', + width: '$3', + }, + + _text: { + fontSize: '$md', + }, + + _indicator: { + h: '$4', + w: '$4', + }, + }, + }, + }, + + 'defaultProps': { + size: 'md', + }, + + ':disabled': { + opacity: 0.6, + }, + + '_web': { + cursor: 'pointer', + }, + }, + { + descendantStyle: ['_icon', '_text', '_indicator'], + } +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/HStack/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/HStack/index.tsx new file mode 100644 index 0000000000..9d9c3f80b2 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/HStack/index.tsx @@ -0,0 +1,6 @@ +import { createHStack } from '@gluestack-ui/hstack'; +import Root from './styled-components/Root'; + +export const HStack = createHStack({ + Root, +}); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/HStack/styled-components/Root.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/HStack/styled-components/Root.tsx new file mode 100644 index 0000000000..7d331d04f9 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/HStack/styled-components/Root.tsx @@ -0,0 +1,48 @@ +// @ts-nocheck +import { styled } from '@gluestack-style/react'; +import { View } from 'react-native'; + +export default styled( + View, + { + flexDirection: 'row', + variants: { + space: { + '0': { + gap: '0', + }, + 'xs': { + gap: '$1', + }, + + '1.5': { + gap: '$1.5', + }, + + 'sm': { + gap: '$2', + }, + + '3': { + gap: '$3', + }, + + 'md': { + gap: '$4', + }, + + 'lg': { + gap: '$6', + }, + + 'xl': { + gap: '$8', + }, + }, + }, + defaultProps: { + space: '0', + }, + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/HStack/styled-components/Spacer.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/HStack/styled-components/Spacer.tsx new file mode 100644 index 0000000000..5ff89bce82 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/HStack/styled-components/Spacer.tsx @@ -0,0 +1,40 @@ +import { styled } from '@gluestack-style/react'; +import { View } from 'react-native'; + +export default styled( + View, + { + variants: { + size: { + 'xs': { + width: '$1', + }, + + '1.5': { + width: '$1.5', + }, + + 'sm': { + width: '$2', + }, + + '3': { + width: '$3', + }, + + 'md': { + width: '$4', + }, + + 'lg': { + width: '$6', + }, + + 'xl': { + width: '$8', + }, + }, + }, + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Heading/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Heading/index.tsx new file mode 100644 index 0000000000..70887bbc67 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Heading/index.tsx @@ -0,0 +1,3 @@ +import Root from './styled-components/Root'; + +export const Heading = Root; diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Heading/styled-components/Root.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Heading/styled-components/Root.tsx new file mode 100644 index 0000000000..73f051d5c2 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Heading/styled-components/Root.tsx @@ -0,0 +1,59 @@ +import { styled } from '@gluestack-style/react'; +import { H1 } from '@expo/html-elements'; + +export default styled( + H1, + { + color: '$textLight900', + fontWeight: 'bold', + lineHeight: 20, + fontFamily: '$heading', + + variants: { + size: { + '4xl': { + fontSize: 60, + letterSpacing: 0.8, + }, + + '3xl': { + fontSize: 48, + letterSpacing: 0.8, + }, + + '2xl': { + fontSize: 36, + }, + + 'xl': { + fontSize: 30, + }, + + 'lg': { + fontSize: 24, + }, + + 'md': { + fontSize: 20, + }, + + 'sm': { + fontSize: 16, + }, + + 'xs': { + fontSize: 14, + }, + }, + }, + + _dark: { + color: '$textDark50', + }, + + defaultProps: { + size: 'lg', + }, + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Add.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Add.tsx new file mode 100644 index 0000000000..fdf8214c17 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Add.tsx @@ -0,0 +1,12 @@ +import { createIcon } from '@gluestack-ui/icon'; +import Root from '../styled-components/Root'; + +const AddIcon = createIcon({ + Root, + viewBox: '0 0 24 24', + d: 'M13.25 10.75V2H10.75V10.75H2V13.25H10.75V22H13.25V13.25H22V10.75H13.25Z', +}); + +AddIcon.displayName = 'AddIcon'; + +export { AddIcon }; diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Arrow.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Arrow.tsx new file mode 100644 index 0000000000..de9c5351cf --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Arrow.tsx @@ -0,0 +1,85 @@ +import React from 'react'; +import { createIcon } from '@gluestack-ui/icon'; +import Root from '../styled-components/Root'; +import { G, Path } from 'react-native-svg'; + +const ArrowUpIcon = createIcon({ + Root, + viewBox: '0 0 24 24', + path: ( + + + + ), +}); + +const ArrowDownIcon = createIcon({ + Root, + + viewBox: '0 0 24 24', + path: ( + + + + ), +}); + +const ArrowForwardIcon = createIcon({ + Root, + + viewBox: '0 0 24 24', + path: ( + + + + ), +}); + +const ArrowBackIcon = createIcon({ + Root, + + viewBox: '0 0 24 24', + path: ( + + + + ), +}); + +const ArrowTopRightIcon = createIcon({ + Root, + viewBox: '0 0 16 16', + path: ( + + ), +}); + +ArrowUpIcon.displayName = 'ArrowUpIcon'; +ArrowDownIcon.displayName = 'ArrowDownIcon'; +ArrowForwardIcon.displayName = 'ArrowForwardIcon'; +ArrowBackIcon.displayName = 'ArrowBackIcon'; +ArrowTopRightIcon.displayName = 'ArrowTopRightIcon'; + +export { + ArrowUpIcon, + ArrowDownIcon, + ArrowForwardIcon, + ArrowBackIcon, + ArrowTopRightIcon, +}; diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Bounce.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Bounce.tsx new file mode 100644 index 0000000000..bcd90881ea --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Bounce.tsx @@ -0,0 +1,12 @@ +import { createIcon } from '@gluestack-ui/icon'; +import Root from '../styled-components/Root'; + +const BounceIcon = createIcon({ + Root, + viewBox: '0 0 17 16', + d: 'M8.78321 4.75C8.78321 4.55109 8.70419 4.36032 8.56354 4.21967C8.42288 4.07902 8.23212 4 8.03321 4H2.5332C2.33429 4 2.14353 4.07902 2.00287 4.21967C1.86222 4.36032 1.7832 4.55109 1.7832 4.75V10.25C1.7832 10.4489 1.86222 10.6397 2.00287 10.7803C2.14353 10.921 2.33429 11 2.5332 11C2.73212 11 2.92288 10.921 3.06353 10.7803C3.20419 10.6397 3.2832 10.4489 3.2832 10.25V6.561L9.00121 12.281C9.14183 12.4215 9.33246 12.5003 9.53121 12.5003C9.72996 12.5003 9.92058 12.4215 10.0612 12.281L15.5612 6.781C15.6329 6.71185 15.69 6.62912 15.7294 6.53763C15.7687 6.44615 15.7895 6.34774 15.7904 6.24816C15.7913 6.14858 15.7724 6.04981 15.7347 5.95762C15.697 5.86543 15.6414 5.78166 15.571 5.71121C15.5006 5.64076 15.4169 5.58503 15.3248 5.54728C15.2326 5.50952 15.1338 5.4905 15.0343 5.49132C14.9347 5.49214 14.8363 5.51278 14.7447 5.55204C14.6532 5.5913 14.5704 5.6484 14.5012 5.72L9.53121 10.69L4.3432 5.5H8.03321C8.23212 5.5 8.42288 5.42098 8.56354 5.28033C8.70419 5.13968 8.78321 4.94891 8.78321 4.75Z', +}); + +BounceIcon.displayName = 'BounceIcon'; + +export { BounceIcon }; diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Check.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Check.tsx new file mode 100644 index 0000000000..bee9b24566 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Check.tsx @@ -0,0 +1,19 @@ +import { createIcon } from '@gluestack-ui/icon'; +import Root from '../styled-components/Root'; + +const CheckIcon = createIcon({ + Root, + viewBox: '0 0 24 24', + d: 'M8.53115 15.1856L3.96198 10.744L2 12.6512L8.53115 19L22 5.9072L20.038 4L8.53115 15.1856Z', +}); + +const CheckCircleIcon = createIcon({ + Root, + viewBox: '0 0 24 24', + d: 'M12 24C18.6274 24 24 18.6274 24 12C24 5.37258 18.6274 0 12 0C5.37258 0 0 5.37258 0 12C0 18.6274 5.37258 24 12 24ZM7.17719 11.2464L9.91869 13.9114L16.8228 7.2L18 8.34432L9.91869 16.2L6 12.3907L7.17719 11.2464Z', +}); + +CheckIcon.displayName = 'CheckIcon'; +CheckCircleIcon.displayName = 'CheckCircleIcon'; + +export { CheckIcon, CheckCircleIcon }; diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Chevron.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Chevron.tsx new file mode 100644 index 0000000000..8646b46434 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Chevron.tsx @@ -0,0 +1,34 @@ +import { createIcon } from '@gluestack-ui/icon'; +import Root from '../styled-components/Root'; + +const ChevronUpIcon = createIcon({ + Root, + viewBox: '0 0 24 24', + d: 'M20.2286 18L11.9973 9.62148L3.76862 17.9973L2 16.1971L12 6L22 16.1971L20.2286 18Z', +}); + +const ChevronDownIcon = createIcon({ + Root, + viewBox: '0 0 24 24', + d: 'M20.2286 6L11.9973 14.3785L3.76862 6.00268L2 7.80293L12 18L22 7.80293L20.2286 6Z', +}); + +const ChevronLeftIcon = createIcon({ + Root, + viewBox: '0 0 24 24', + d: 'M18 3.77141L9.62148 12.0027L17.9973 20.2314L16.1971 22L6 12L16.1971 2L18 3.77141Z', +}); + +const ChevronRightIcon = createIcon({ + Root, + + viewBox: '0 0 24 24', + d: 'M6 3.77141L14.3785 12.0027L6.00268 20.2314L7.80293 22L18 12L7.80293 2L6 3.77141Z', +}); + +ChevronUpIcon.displayName = 'ChevronUpIcon'; +ChevronDownIcon.displayName = 'ChevronDownIcon'; +ChevronLeftIcon.displayName = 'ChevronLeftIcon'; +ChevronRightIcon.displayName = 'ChevronRightIcon'; + +export { ChevronUpIcon, ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon }; diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Circle.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Circle.tsx new file mode 100644 index 0000000000..33734be23a --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Circle.tsx @@ -0,0 +1,12 @@ +import { createIcon } from '@gluestack-ui/icon'; +import Root from '../styled-components/Root'; + +const CircleIcon = createIcon({ + Root, + viewBox: '0 0 24 24', + d: 'M0 12C-2.34822e-08 13.5759 0.310389 15.1363 0.913445 16.5922C1.5165 18.0481 2.40042 19.371 3.51472 20.4853C4.62902 21.5996 5.95189 22.4835 7.4078 23.0866C8.86371 23.6896 10.4241 24 12 24C13.5759 24 15.1363 23.6896 16.5922 23.0866C18.0481 22.4835 19.371 21.5996 20.4853 20.4853C21.5996 19.371 22.4835 18.0481 23.0866 16.5922C23.6896 15.1363 24 13.5759 24 12C24 10.4241 23.6896 8.86371 23.0866 7.4078C22.4835 5.95189 21.5996 4.62902 20.4853 3.51472C19.371 2.40042 18.0481 1.5165 16.5922 0.913446C15.1363 0.310389 13.5759 0 12 0C10.4241 0 8.86371 0.310389 7.4078 0.913446C5.95189 1.5165 4.62902 2.40042 3.51472 3.51472C2.40042 4.62902 1.5165 5.95189 0.913445 7.4078C0.310389 8.86371 -2.34822e-08 10.4241 0 12Z', +}); + +CircleIcon.displayName = 'CircleIcon'; + +export { CircleIcon }; diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Close.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Close.tsx new file mode 100644 index 0000000000..e321867897 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Close.tsx @@ -0,0 +1,44 @@ +import React from 'react'; +import { createIcon } from '@gluestack-ui/icon'; +import Root from '../styled-components/Root'; +import { Path } from 'react-native-svg'; + +const CloseIcon = createIcon({ + Root, + viewBox: '0 0 24 24', + path: ( + <> + + + + ), +}); + +const SmallCloseIcon = createIcon({ + Root, + viewBox: '0 0 16 16', + path: ( + + ), +}); + +CloseIcon.displayName = 'CloseIcon'; +SmallCloseIcon.displayName = 'SmallCloseIcon'; + +export { CloseIcon, SmallCloseIcon }; diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/CodeBlock.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/CodeBlock.tsx new file mode 100644 index 0000000000..047c703ba0 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/CodeBlock.tsx @@ -0,0 +1,12 @@ +import { createIcon } from '@gluestack-ui/icon'; +import Root from '../styled-components/Root'; + +const CodeBlockIcon = createIcon({ + Root, + viewBox: '0 0 16 16', + d: 'M4 1C2.34315 1 1 2.34315 1 4V12C1 13.6569 2.34315 15 4 15H12C13.6569 15 15 13.6569 15 12V4C15 2.34315 13.6569 1 12 1H4ZM2 4C2 2.89543 2.89543 2 4 2H12C13.1046 2 14 2.89543 14 4V12C14 13.1046 13.1046 14 12 14H4C2.89543 14 2 13.1046 2 12V4ZM6.85355 5.85355C7.04882 5.65829 7.04882 5.34171 6.85355 5.14645C6.65829 4.95118 6.34171 4.95118 6.14645 5.14645L3.64645 7.64645C3.45118 7.84171 3.45118 8.15829 3.64645 8.35355L6.14645 10.8536C6.34171 11.0488 6.65829 11.0488 6.85355 10.8536C7.04882 10.6583 7.04882 10.3417 6.85355 10.1464L4.70711 8L6.85355 5.85355ZM9.85355 5.14645C9.65829 4.95118 9.34171 4.95118 9.14645 5.14645C8.95118 5.34171 8.95118 5.65829 9.14645 5.85355L11.2929 8L9.14645 10.1464C8.95118 10.3417 8.95118 10.6583 9.14645 10.8536C9.34171 11.0488 9.65829 11.0488 9.85355 10.8536L12.3536 8.35355C12.5488 8.15829 12.5488 7.84171 12.3536 7.64645L9.85355 5.14645Z', +}); + +CodeBlockIcon.displayName = 'CodeBlockIcon'; + +export { CodeBlockIcon }; diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/ColorLine.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/ColorLine.tsx new file mode 100644 index 0000000000..561fbb5842 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/ColorLine.tsx @@ -0,0 +1,12 @@ +import { createIcon } from '@gluestack-ui/icon'; +import Root from '../styled-components/Root'; + +const ColorLineIcon = createIcon({ + Root, + viewBox: '0 0 16 16', + d: 'M2.09805 10H2C0.895431 10 0 10.8955 0 12V14C0 15.1046 0.895431 16 2 16H14C15.1046 16 16 15.1046 16 14V12C16 10.8955 15.1046 10 14 10H8.69602L8.12549 10.5731C7.9568 10.7424 7.76543 10.886 7.5578 11H14C14.5523 11 15 11.4477 15 12V14C15 14.5523 14.5523 15 14 15H2C1.44772 15 1 14.5523 1 14V12C1 11.4477 1.44772 11 2 11H2.07946C2.01989 10.8162 1.99512 10.6175 2.01305 10.4121L2.01668 10.3705L2.04515 10.2052L2.09805 10ZM10.1738 0.621305C11.0137 -0.221799 12.3531 -0.264429 13.2434 0.495229L13.3735 0.615195L13.5 0.751793C14.2243 1.60034 14.2243 2.85493 13.5 3.70348L13.3796 3.83397L7.41679 9.82308C7.26177 9.97869 7.07495 10.0979 6.86993 10.173L6.71296 10.2209L3.62742 10.9811C3.28832 11.0647 2.98028 10.7861 3.00921 10.4546L3.02364 10.3708L3.81563 7.30002C3.869 7.0931 3.96579 6.90059 4.09889 6.73497L4.20542 6.616L10.1738 0.621305ZM12.6678 1.32365C12.2067 0.86435 11.4796 0.83506 10.9846 1.23483L10.8823 1.32706L4.91387 7.32175C4.87198 7.3638 4.83808 7.41281 4.81355 7.46635L4.78394 7.54976L4.20066 9.80976L6.47372 9.24992C6.51322 9.24019 6.55119 9.22572 6.58686 9.20696L6.63855 9.17565L6.70833 9.11732L12.6712 3.12821C13.1672 2.63028 13.1672 1.82499 12.6678 1.32365Z', +}); + +ColorLineIcon.displayName = 'ColorLineIcon'; + +export { ColorLineIcon }; diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/ColorPalette.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/ColorPalette.tsx new file mode 100644 index 0000000000..1b4c2fb1e8 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/ColorPalette.tsx @@ -0,0 +1,12 @@ +import { createIcon } from '@gluestack-ui/icon'; +import Root from '../styled-components/Root'; + +const ColorPaletteIcon = createIcon({ + Root, + viewBox: '0 0 16 16', + d: 'M7.75003 4.5C8.16424 4.5 8.50003 4.16421 8.50003 3.75C8.50003 3.33579 8.16424 3 7.75003 3C7.33582 3 7.00003 3.33579 7.00003 3.75C7.00003 4.16421 7.33582 4.5 7.75003 4.5ZM10.75 5.5C11.1642 5.5 11.5 5.16421 11.5 4.75C11.5 4.33579 11.1642 4 10.75 4C10.3358 4 10 4.33579 10 4.75C10 5.16421 10.3358 5.5 10.75 5.5ZM13.25 7C13.25 7.41421 12.9142 7.75 12.5 7.75C12.0858 7.75 11.75 7.41421 11.75 7C11.75 6.58579 12.0858 6.25 12.5 6.25C12.9142 6.25 13.25 6.58579 13.25 7ZM12.5 10.75C12.9142 10.75 13.25 10.4142 13.25 10C13.25 9.58579 12.9142 9.25 12.5 9.25C12.0858 9.25 11.75 9.58579 11.75 10C11.75 10.4142 12.0858 10.75 12.5 10.75ZM11.25 12C11.25 12.4142 10.9142 12.75 10.5 12.75C10.0858 12.75 9.75003 12.4142 9.75003 12C9.75003 11.5858 10.0858 11.25 10.5 11.25C10.9142 11.25 11.25 11.5858 11.25 12ZM11.6972 0.991692C8.94259 -0.423371 6.1432 -0.287595 3.77007 1.16636C2.55909 1.9083 1.25331 3.46925 0.516047 5.05899C0.14542 5.85816 -0.100853 6.70492 -0.0976249 7.49318C-0.0943445 8.2941 0.16983 9.05871 0.840394 9.60526C1.45058 10.1026 1.98165 10.353 2.49574 10.3784C3.01375 10.404 3.41804 10.1942 3.73429 10.0076C3.80382 9.96659 3.86891 9.92705 3.93113 9.88924C4.17332 9.7421 4.37205 9.62135 4.62049 9.54262C4.90191 9.45343 5.2582 9.42052 5.77579 9.57867C5.96661 9.63697 6.08161 9.72347 6.16212 9.82291C6.24792 9.9289 6.31662 10.0774 6.36788 10.2886C6.41955 10.5016 6.44767 10.7527 6.46868 11.0491C6.47651 11.1594 6.48379 11.2855 6.49142 11.4176C6.50252 11.6098 6.51437 11.8149 6.52974 12.0037C6.58435 12.6744 6.69971 13.4401 7.10362 14.1357C7.51764 14.8488 8.20469 15.439 9.30704 15.8158C10.9093 16.3636 12.3731 15.9191 13.5126 15.0169C14.6391 14.125 15.4691 12.7761 15.8842 11.4272C17.1991 7.15377 15.6728 3.03394 11.6972 0.991692ZM4.29249 2.01905C6.35686 0.754258 8.7844 0.619592 11.2403 1.88119C14.7473 3.68275 16.1135 7.28161 14.9284 11.1332C14.5624 12.3227 13.8338 13.4871 12.8919 14.2329C11.963 14.9684 10.8486 15.286 9.63052 14.8696C8.72693 14.5607 8.24672 14.1129 7.96842 13.6336C7.68001 13.1369 7.57799 12.5556 7.52644 11.9225C7.51101 11.733 7.50132 11.5621 7.49147 11.3884C7.48399 11.2564 7.47642 11.1229 7.46618 10.9783C7.44424 10.669 7.41175 10.3499 7.33968 10.0529C7.26719 9.75408 7.14902 9.45271 6.93935 9.19371C6.72439 8.92817 6.43532 8.73455 6.06801 8.62232C5.36648 8.40796 4.80266 8.43587 4.31839 8.58934C3.94331 8.70821 3.62016 8.90608 3.37179 9.05817C3.31992 9.08993 3.2713 9.1197 3.22616 9.14634C2.94094 9.31461 2.75357 9.38995 2.54514 9.37964C2.33279 9.36914 2.00262 9.26247 1.47218 8.83012C1.0866 8.51585 0.904733 8.06685 0.902367 7.48908C0.899949 6.89865 1.08843 6.20165 1.42324 5.47971C2.09686 4.0272 3.28471 2.63649 4.29249 2.01905Z', +}); + +ColorPaletteIcon.displayName = 'ColorPaletteIcon'; + +export { ColorPaletteIcon }; diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Copy.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Copy.tsx new file mode 100644 index 0000000000..23f90d9e4e --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Copy.tsx @@ -0,0 +1,31 @@ +import React from 'react'; +import { createIcon } from '@gluestack-ui/icon'; +import Root from '../styled-components/Root'; +import { Path } from 'react-native-svg'; + +const CopyOutlinedIcon = createIcon({ + Root, + viewBox: '0 0 12 16', + path: ( + + ), +}); + +const CopyFilledIcon = createIcon({ + Root, + viewBox: '0 0 12 16', + path: ( + + ), +}); + +CopyOutlinedIcon.displayName = 'CopyOutlinedIcon'; +CopyFilledIcon.displayName = 'CopyFilledIcon'; + +export { CopyOutlinedIcon, CopyFilledIcon }; diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/DarkTheme.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/DarkTheme.tsx new file mode 100644 index 0000000000..9d3e96d421 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/DarkTheme.tsx @@ -0,0 +1,12 @@ +import { createIcon } from '@gluestack-ui/icon'; +import Root from '../styled-components/Root'; + +const DarkThemeIcon = createIcon({ + Root, + viewBox: '0 0 16 16', + d: 'M8 1C11.866 1 15 4.13401 15 8C15 11.866 11.866 15 8 15V1ZM8 0C3.58172 0 0 3.58172 0 8C0 12.4183 3.58172 16 8 16C12.4183 16 16 12.4183 16 8C16 3.58172 12.4183 0 8 0Z', +}); + +DarkThemeIcon.displayName = 'DarkThemeIcon'; + +export { DarkThemeIcon }; diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Delete.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Delete.tsx new file mode 100644 index 0000000000..22d41a9490 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Delete.tsx @@ -0,0 +1,7 @@ +import { createIcon } from '@gluestack-ui/icon'; +import Root from '../styled-components/Root'; +export const DeleteIcon = createIcon({ + Root, + viewBox: '0 0 24 24', + d: 'M5.11111 19.7778C5.11111 21 6.11111 22 7.33333 22H16.2222C17.4444 22 18.4444 21 18.4444 19.7778V6.44444H5.11111V19.7778ZM19.5556 3.11111H15.6667L14.5556 2H9L7.88889 3.11111H4V5.33333H19.5556V3.11111Z', +}); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Dismiss.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Dismiss.tsx new file mode 100644 index 0000000000..5672e53e78 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Dismiss.tsx @@ -0,0 +1,12 @@ +import { createIcon } from '@gluestack-ui/icon'; +import Root from '../styled-components/Root'; + +const DismissIcon = createIcon({ + Root, + viewBox: '0 0 20 20', + d: 'M7.14645 7.14645C7.34171 6.95118 7.65829 6.95118 7.85355 7.14645L10 9.29289L12.1464 7.14645C12.3417 6.95118 12.6583 6.95118 12.8536 7.14645C13.0488 7.34171 13.0488 7.65829 12.8536 7.85355L10.7071 10L12.8536 12.1464C13.0488 12.3417 13.0488 12.6583 12.8536 12.8536C12.6583 13.0488 12.3417 13.0488 12.1464 12.8536L10 10.7071L7.85355 12.8536C7.65829 13.0488 7.34171 13.0488 7.14645 12.8536C6.95118 12.6583 6.95118 12.3417 7.14645 12.1464L9.29289 10L7.14645 7.85355C6.95118 7.65829 6.95118 7.34171 7.14645 7.14645ZM3 6C3 4.34315 4.34315 3 6 3H14C15.6569 3 17 4.34315 17 6V14C17 15.6569 15.6569 17 14 17H6C4.34315 17 3 15.6569 3 14V6ZM6 4C4.89543 4 4 4.89543 4 6V14C4 15.1046 4.89543 16 6 16H14C15.1046 16 16 15.1046 16 14V6C16 4.89543 15.1046 4 14 4H6Z', +}); + +DismissIcon.displayName = 'DismissIcon'; + +export { DismissIcon }; diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Download.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Download.tsx new file mode 100644 index 0000000000..2df8f8b037 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Download.tsx @@ -0,0 +1,19 @@ +import React from 'react'; +import { createIcon } from '@gluestack-ui/icon'; +import Root from '../styled-components/Root'; +import { Path } from 'react-native-svg'; + +const DownloadIcon = createIcon({ + Root, + viewBox: '0 0 21 21', + path: ( + + ), +}); + +DownloadIcon.displayName = 'DownloadIcon'; + +export { DownloadIcon }; diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Earth.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Earth.tsx new file mode 100644 index 0000000000..9d8ecaf388 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Earth.tsx @@ -0,0 +1,12 @@ +import { createIcon } from '@gluestack-ui/icon'; +import Root from '../styled-components/Root'; + +const EarthIcon = createIcon({ + Root, + viewBox: '0 0 20 20', + d: 'M1.99951 9.99997C1.99951 5.58144 5.58144 1.99951 9.99997 1.99951C14.4185 1.99951 18.0004 5.58144 18.0004 9.99997C18.0004 14.4185 14.4185 18.0004 9.99997 18.0004C5.58144 18.0004 1.99951 14.4185 1.99951 9.99997ZM9.99997 2.99951C9.91472 2.99951 9.82983 3.00104 9.74531 3.00406C9.86268 3.22624 9.99793 3.50894 10.1178 3.82748C10.3985 4.57318 10.6444 5.6449 10.2028 6.58519C9.79865 7.44586 9.1059 7.66937 8.57058 7.80769L8.474 7.83254C7.968 7.96249 7.71878 8.02649 7.54417 8.2916C7.374 8.54994 7.41508 8.86607 7.58071 9.40581C7.59287 9.44545 7.60588 9.48691 7.61933 9.52978C7.68555 9.7409 7.76252 9.98625 7.8027 10.2172C7.85253 10.5036 7.86376 10.853 7.68965 11.1871C7.51052 11.5308 7.27563 11.7612 7.00024 11.9112C6.73952 12.0533 6.46734 12.1083 6.2532 12.1463L6.16534 12.1618C5.75755 12.2332 5.52013 12.2747 5.29811 12.5126C5.1208 12.7025 5.01944 13.0207 4.96166 13.454C4.93793 13.632 4.92366 13.8086 4.90917 13.9877L4.90145 14.0826C4.88505 14.2815 4.86529 14.5012 4.82288 14.6876L4.81841 14.7073C6.09898 16.116 7.94619 17.0004 9.99997 17.0004C11.3507 17.0004 12.612 16.6179 13.6816 15.9553C13.596 15.8699 13.5007 15.7668 13.4071 15.6489C13.136 15.3076 12.7979 14.74 12.9153 14.0794C12.9711 13.7652 13.1406 13.4973 13.3122 13.2846C13.4865 13.0685 13.6983 12.8672 13.8881 12.6926C13.9321 12.652 13.9747 12.6132 14.0158 12.5756C14.1619 12.4423 14.2892 12.326 14.3979 12.2122C14.5449 12.0582 14.5894 11.9759 14.5974 11.9493C14.6656 11.7239 14.5848 11.545 14.4721 11.4579C14.3775 11.3848 14.1768 11.3157 13.8614 11.5155C13.7427 11.5906 13.6343 11.6565 13.5388 11.7066C13.4524 11.7521 13.3334 11.8083 13.2031 11.829C13.0463 11.8539 12.8281 11.8305 12.6588 11.6512C12.5304 11.5151 12.4952 11.3498 12.4813 11.2761C12.4646 11.187 12.4567 11.0864 12.4504 11.0009L12.4456 10.9341C12.4403 10.8605 12.4349 10.7838 12.4268 10.6967C12.4061 10.4751 12.3691 10.2006 12.2832 9.87109C12.1555 9.38055 11.8428 8.98333 11.5193 8.57232C11.4719 8.51215 11.4242 8.45155 11.3769 8.39045C11.2174 8.1843 11.0142 7.91211 10.9405 7.62119C10.8989 7.45713 10.8922 7.26724 10.9655 7.07341C11.0374 6.88317 11.1682 6.73737 11.317 6.62577C11.745 6.30476 12.4446 5.61299 13.0602 4.97333C13.3626 4.65908 13.6364 4.36616 13.8348 4.15171C13.8366 4.14976 13.8384 4.14782 13.8402 4.14588C12.7376 3.42114 11.418 2.99951 9.99997 2.99951ZM14.6378 4.75611C14.616 4.77977 14.593 4.80467 14.5689 4.8307C14.3675 5.0485 14.0889 5.34645 13.7807 5.66674C13.1785 6.29248 12.4293 7.03934 11.9259 7.41908C11.9561 7.48552 12.0261 7.59536 12.1678 7.77844C12.2056 7.82734 12.2475 7.87991 12.2921 7.93603C12.6082 8.33321 13.0658 8.90824 13.251 9.61902C13.3539 10.0143 13.3982 10.3445 13.4224 10.6038L13.4233 10.6128C14.0113 10.2834 14.6326 10.3179 15.0838 10.6668C15.5418 11.021 15.7364 11.6375 15.5546 12.2387C15.4736 12.5068 15.2822 12.734 15.1212 12.9026C14.9863 13.044 14.8249 13.1913 14.6752 13.3278C14.6376 13.3621 14.6008 13.3957 14.5653 13.4284C14.3774 13.6013 14.2141 13.7592 14.0905 13.9125C13.9642 14.0691 13.913 14.1805 13.8998 14.2543C13.8595 14.4812 13.9717 14.7519 14.1901 15.027C14.2913 15.1543 14.3985 15.261 14.4812 15.3361C14.4897 15.3438 14.4978 15.3511 14.5056 15.358C16.0311 14.0738 17.0004 12.1501 17.0004 9.99997C17.0004 7.91264 16.0869 6.03868 14.6378 4.75611ZM8.7977 3.354C8.7446 3.25826 8.69859 3.18107 8.66506 3.12664C5.4373 3.74984 2.99951 6.59021 2.99951 9.99997C2.99951 11.2829 3.34462 12.4852 3.94707 13.5192C3.95393 13.454 3.96162 13.388 3.97043 13.3219C4.03275 12.8545 4.16345 12.2626 4.5671 11.8302C5.02915 11.3352 5.59251 11.2423 5.97096 11.1799C6.00878 11.1736 6.04475 11.1677 6.0786 11.1617C6.28193 11.1256 6.41447 11.0916 6.52183 11.0331C6.61452 10.9826 6.71106 10.901 6.80284 10.7249C6.83129 10.6703 6.8503 10.5772 6.8175 10.3886C6.78968 10.2287 6.73738 10.0611 6.67217 9.85216C6.657 9.80355 6.64113 9.7527 6.62471 9.69918C6.47215 9.20204 6.25085 8.43715 6.70905 7.74152C7.10881 7.13461 7.74852 6.97913 8.18614 6.87276C8.23345 6.86126 8.27839 6.85034 8.32042 6.83948C8.78744 6.71882 9.09233 6.59736 9.29766 6.16012C9.55891 5.60382 9.44087 4.86772 9.18193 4.17975C9.05787 3.85015 8.91257 3.56113 8.7977 3.354Z', +}); + +EarthIcon.displayName = 'EarthIcon'; + +export { EarthIcon }; diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Expo.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Expo.tsx new file mode 100644 index 0000000000..6142e560c6 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Expo.tsx @@ -0,0 +1,12 @@ +import { createIcon } from '@gluestack-ui/icon'; +import Root from '../styled-components/Root'; + +const ExpoIcon = createIcon({ + Root, + viewBox: '0 0 20 20', + d: 'M9.52406 8.23558C9.56023 8.17224 9.61306 8.12001 9.67682 8.08458C9.74058 8.04914 9.81283 8.03184 9.88573 8.03457C9.96529 8.03055 10.0446 8.0469 10.116 8.08208C10.1875 8.11725 10.2489 8.17009 10.2942 8.23558C11.2498 9.54813 12.8268 12.1622 13.9898 14.0897C14.748 15.3472 15.3309 16.3128 15.4512 16.4358C15.9001 16.8947 16.5151 16.6093 16.8731 16.0861C17.1571 15.7256 17.3152 15.282 17.3229 14.8231C17.3229 14.5606 12.2219 5.07353 11.7078 4.28416C11.2131 3.52509 11.0524 3.33325 10.2107 3.33325H9.57363C8.73096 3.33325 8.60887 3.52509 8.11502 4.28416C7.60098 5.0772 2.5 14.5606 2.5 14.8231C2.5077 15.282 2.66571 15.7256 2.94979 16.0861C3.30779 16.6093 3.9228 16.8966 4.37167 16.4358C4.49101 16.3128 5.0739 15.3472 5.83303 14.0897C6.99789 12.1613 8.56849 9.54721 9.52406 8.23558Z', +}); + +ExpoIcon.displayName = 'ExpoIcon'; + +export { ExpoIcon }; diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Favourite.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Favourite.tsx new file mode 100644 index 0000000000..8f3f8ab2ce --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Favourite.tsx @@ -0,0 +1,7 @@ +import { createIcon } from '@gluestack-ui/icon'; +import Root from '../styled-components/Root'; +export const FavouriteIcon = createIcon({ + Root, + viewBox: '0 0 24 24', + d: 'M1.75143 3.371C2.87321 2.22206 4.39447 1.57662 5.98067 1.57662C7.56686 1.57662 9.08812 2.22206 10.2099 3.371L11.9626 5.16516L13.7153 3.371C14.2671 2.78565 14.9272 2.31876 15.657 1.99756C16.3869 1.67637 17.1718 1.5073 17.9661 1.50023C18.7604 1.49316 19.5481 1.64823 20.2832 1.95638C21.0184 2.26453 21.6863 2.7196 22.2479 3.29504C22.8096 3.87047 23.2538 4.55474 23.5545 5.30793C23.8553 6.06112 24.0067 6.86813 23.9998 7.68189C23.9929 8.49564 23.8279 9.29984 23.5143 10.0476C23.2008 10.7953 22.7451 11.4715 22.1738 12.0369L11.9626 22.5L1.75143 12.0369C0.629991 10.8876 0 9.32904 0 7.70394C0 6.07885 0.629991 4.52029 1.75143 3.371Z', +}); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Gentle.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Gentle.tsx new file mode 100644 index 0000000000..98e4e0b8a2 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Gentle.tsx @@ -0,0 +1,12 @@ +import { createIcon } from '@gluestack-ui/icon'; +import Root from '../styled-components/Root'; + +const GentleIcon = createIcon({ + Root, + viewBox: '0 0 17 16', + d: 'M5.51905 14.4001C5.31845 14.4009 5.12006 14.3583 4.93745 14.2753C4.7546 14.1922 4.58758 14.078 4.44385 13.9377C4.29897 13.7984 4.18343 13.6315 4.10402 13.4468C4.02461 13.2622 3.98293 13.0635 3.98145 12.8625C3.98145 12.5377 4.01505 12.2209 4.08145 11.9129C4.21432 11.2948 4.48324 10.7141 4.86865 10.2129C5.06443 9.95854 5.28675 9.72576 5.53185 9.5185L6.98785 8.3065C7.03283 8.26911 7.06904 8.22228 7.09388 8.16932C7.11873 8.11637 7.13161 8.05859 7.13161 8.0001C7.13161 7.9416 7.11873 7.88383 7.09388 7.83087C7.06904 7.77792 7.03283 7.73108 6.98785 7.6937L5.53185 6.4753C5.04204 6.06922 4.64902 5.55895 4.38145 4.9817C4.11718 4.40291 3.98075 3.77396 3.98145 3.1377C3.98145 2.9337 4.02305 2.7393 4.10625 2.5561C4.18945 2.3729 4.30225 2.2081 4.44385 2.0625C4.58318 1.91762 4.75008 1.80208 4.93473 1.72267C5.11938 1.64326 5.31805 1.60158 5.51905 1.6001H12.0438C12.2478 1.6001 12.4422 1.6417 12.6254 1.7249C12.8086 1.8081 12.9734 1.9209 13.119 2.0625C13.2639 2.20183 13.3795 2.36873 13.4589 2.55338C13.5383 2.73803 13.58 2.9367 13.5814 3.1377C13.5863 3.77372 13.452 4.4031 13.1878 4.9817C12.9195 5.56005 12.5244 6.07054 12.0318 6.4753L10.5758 7.6937C10.5307 7.731 10.4944 7.77781 10.4695 7.83078C10.4446 7.88374 10.4316 7.94156 10.4316 8.0001C10.4316 8.05864 10.4446 8.11645 10.4695 8.16942C10.4944 8.22238 10.5307 8.26919 10.5758 8.3065L12.0318 9.5185C12.2814 9.7265 12.5022 9.9561 12.6942 10.2065C12.8862 10.4561 13.0462 10.7249 13.175 11.0129C13.3046 11.3001 13.4046 11.5977 13.475 11.9065C13.5462 12.2145 13.5814 12.5337 13.5814 12.8625C13.5814 13.0665 13.5398 13.2609 13.4566 13.4441C13.3736 13.627 13.2594 13.794 13.119 13.9377C12.9797 14.0826 12.8128 14.1981 12.6282 14.2775C12.4435 14.3569 12.2448 14.3986 12.0438 14.4001H5.51905ZM12.0126 13.6001C12.1137 13.6007 12.2139 13.5811 12.3073 13.5425C12.4007 13.5039 12.4855 13.4471 12.5566 13.3753C12.6275 13.3064 12.6828 13.2232 12.719 13.1313C12.7541 13.0351 12.7752 12.9343 12.7814 12.8321C12.7814 12.3033 12.6734 11.8073 12.4566 11.3441C12.2369 10.878 11.9167 10.4663 11.519 10.1385L10.063 8.9193C9.92829 8.80649 9.81942 8.66597 9.74385 8.5073C9.66981 8.34775 9.63145 8.17398 9.63145 7.9981C9.63145 7.82221 9.66981 7.64844 9.74385 7.4889C9.81905 7.3257 9.92545 7.1881 10.063 7.0761L11.519 5.8633C11.9144 5.53713 12.2325 5.12728 12.4502 4.6633C12.6662 4.2009 12.7774 3.7033 12.7814 3.1697C12.7821 3.06862 12.7626 2.96842 12.724 2.875C12.6854 2.78158 12.6285 2.69682 12.5566 2.6257C12.4878 2.55486 12.4046 2.4995 12.3126 2.4633C12.2165 2.42791 12.1157 2.40663 12.0134 2.4001H5.55025C5.44755 2.39895 5.34562 2.41798 5.25025 2.4561C5.1577 2.49413 5.07447 2.55171 5.00625 2.6249C4.9381 2.69598 4.88312 2.77859 4.84385 2.8689C4.80625 2.9569 4.78545 3.0561 4.78145 3.1689C4.78145 3.4273 4.80865 3.6809 4.86305 3.9313C4.91665 4.1817 4.99985 4.4233 5.11265 4.6561C5.22465 4.8897 5.35665 5.1065 5.50625 5.3065C5.65665 5.5065 5.83585 5.6921 6.04385 5.8625L7.49985 7.0753C7.63745 7.1873 7.74385 7.3249 7.81905 7.4873C7.89326 7.64693 7.93172 7.82085 7.93172 7.9969C7.93172 8.17294 7.89326 8.34686 7.81905 8.5065C7.74368 8.66529 7.63477 8.80585 7.49985 8.9185L6.04385 10.1377C5.64735 10.4653 5.32918 10.8775 5.11265 11.3441C4.89605 11.8103 4.78306 12.318 4.78145 12.8321C4.78145 12.9393 4.79985 13.0401 4.83745 13.1313C4.87552 13.2238 4.9331 13.307 5.00625 13.3753C5.08145 13.4457 5.16305 13.5001 5.25025 13.5377C5.33825 13.5753 5.43745 13.5961 5.55025 13.6001H12.0126Z', +}); + +GentleIcon.displayName = 'GentleIcon'; + +export { GentleIcon }; diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Globe.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Globe.tsx new file mode 100644 index 0000000000..fbcb5abfe2 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Globe.tsx @@ -0,0 +1,12 @@ +import { createIcon } from '@gluestack-ui/icon'; +import Root from '../styled-components/Root'; + +const GlobeIcon = createIcon({ + Root, + viewBox: '0 0 16 16', + d: 'M8 16C12.4183 16 16 12.4183 16 8C16 3.58172 12.4183 0 8 0C3.58172 0 0 3.58172 0 8C0 12.4183 3.58172 16 8 16ZM8 1C8.65685 1 9.40677 1.59025 10.0218 2.90814C10.2393 3.37419 10.4283 3.90978 10.5806 4.5H5.41936C5.57172 3.90978 5.76073 3.37419 5.97822 2.90814C6.59323 1.59025 7.34315 1 8 1ZM5.07203 2.48526C4.79564 3.07753 4.56498 3.75696 4.38931 4.5H1.93648C2.77295 3.05399 4.11182 1.93497 5.71442 1.38163C5.47297 1.71222 5.25828 2.08617 5.07203 2.48526ZM4.19265 5.5C4.06723 6.28832 4 7.12934 4 8C4 8.87066 4.06723 9.71168 4.19265 10.5H1.45963C1.16268 9.7236 1 8.8808 1 8C1 7.1192 1.16268 6.2764 1.45963 5.5H4.19265ZM4.38931 11.5C4.56498 12.243 4.79564 12.9225 5.07203 13.5147C5.25828 13.9138 5.47297 14.2878 5.71442 14.6184C4.11182 14.065 2.77295 12.946 1.93648 11.5H4.38931ZM5.41936 11.5H10.5806C10.4283 12.0902 10.2393 12.6258 10.0218 13.0919C9.40677 14.4097 8.65685 15 8 15C7.34315 15 6.59323 14.4097 5.97822 13.0919C5.76073 12.6258 5.57172 12.0902 5.41936 11.5ZM10.7938 10.5H5.20617C5.07345 9.72528 5 8.88331 5 8C5 7.11669 5.07345 6.27472 5.20617 5.5H10.7938C10.9266 6.27472 11 7.11669 11 8C11 8.88331 10.9266 9.72528 10.7938 10.5ZM11.6107 11.5H14.0635C13.2271 12.946 11.8882 14.065 10.2856 14.6184C10.527 14.2878 10.7417 13.9138 10.928 13.5147C11.2044 12.9225 11.435 12.243 11.6107 11.5ZM14.5404 10.5H11.8074C11.9328 9.71168 12 8.87066 12 8C12 7.12934 11.9328 6.28832 11.8074 5.5H14.5404C14.8373 6.2764 15 7.1192 15 8C15 8.8808 14.8373 9.7236 14.5404 10.5ZM10.2856 1.38163C11.8882 1.93497 13.2271 3.05399 14.0635 4.5H11.6107C11.435 3.75696 11.2044 3.07753 10.928 2.48526C10.7417 2.08617 10.527 1.71222 10.2856 1.38163Z', +}); + +GlobeIcon.displayName = 'GlobeIcon'; + +export { GlobeIcon }; diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Grid.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Grid.tsx new file mode 100644 index 0000000000..c71a8d059d --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Grid.tsx @@ -0,0 +1,12 @@ +import { createIcon } from '@gluestack-ui/icon'; +import Root from '../styled-components/Root'; + +const GridIcon = createIcon({ + Root, + viewBox: '0 0 24 24', + d: 'M11.8125 7C11.8125 4.79086 10.0216 3 7.8125 3C5.60336 3 3.8125 4.79086 3.8125 7C3.8125 9.20914 5.60336 11 7.8125 11C10.0216 11 11.8125 9.20914 11.8125 7ZM10.3125 7C10.3125 8.38071 9.19321 9.5 7.8125 9.5C6.43179 9.5 5.3125 8.38071 5.3125 7C5.3125 5.61929 6.43179 4.5 7.8125 4.5C9.19321 4.5 10.3125 5.61929 10.3125 7ZM21.8125 7C21.8125 4.79086 20.0216 3 17.8125 3C15.6034 3 13.8125 4.79086 13.8125 7C13.8125 9.20914 15.6034 11 17.8125 11C20.0216 11 21.8125 9.20914 21.8125 7ZM20.3125 7C20.3125 8.38071 19.1932 9.5 17.8125 9.5C16.4318 9.5 15.3125 8.38071 15.3125 7C15.3125 5.61929 16.4318 4.5 17.8125 4.5C19.1932 4.5 20.3125 5.61929 20.3125 7ZM7.8125 21C5.60336 21 3.8125 19.2091 3.8125 17C3.8125 14.7909 5.60336 13 7.8125 13C10.0216 13 11.8125 14.7909 11.8125 17C11.8125 19.2091 10.0216 21 7.8125 21ZM7.8125 19.5C9.19321 19.5 10.3125 18.3807 10.3125 17C10.3125 15.6193 9.19321 14.5 7.8125 14.5C6.43179 14.5 5.3125 15.6193 5.3125 17C5.3125 18.3807 6.43179 19.5 7.8125 19.5ZM21.8125 17C21.8125 14.7909 20.0216 13 17.8125 13C15.6034 13 13.8125 14.7909 13.8125 17C13.8125 19.2091 15.6034 21 17.8125 21C20.0216 21 21.8125 19.2091 21.8125 17ZM20.3125 17C20.3125 18.3807 19.1932 19.5 17.8125 19.5C16.4318 19.5 15.3125 18.3807 15.3125 17C15.3125 15.6193 16.4318 14.5 17.8125 14.5C19.1932 14.5 20.3125 15.6193 20.3125 17Z', +}); + +GridIcon.displayName = 'GridIcon'; + +export { GridIcon }; diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Hamburger.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Hamburger.tsx new file mode 100644 index 0000000000..177e30ee69 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Hamburger.tsx @@ -0,0 +1,33 @@ +import React from 'react'; +import { createIcon } from '@gluestack-ui/icon'; +import Root from '../styled-components/Root'; +import { Path } from 'react-native-svg'; +export const HamburgerIcon = createIcon({ + Root, + viewBox: '0 0 24 24', + path: ( + <> + + + + + ), +}); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Info.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Info.tsx new file mode 100644 index 0000000000..7216a7f696 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Info.tsx @@ -0,0 +1,25 @@ +import React from 'react'; +import { createIcon } from '@gluestack-ui/icon'; +import Root from '../styled-components/Root'; +import { Path, G } from 'react-native-svg'; + +export const InfoOutlineIcon = createIcon({ + Root, + viewBox: '0 0 24 24', + path: ( + + + + + + ), +}); + +InfoOutlineIcon.displayName = 'InfoOutlineIcon'; +export const InfoIcon = createIcon({ + Root, + viewBox: '0 0 24 24', + d: 'M12 0C9.62663 0 7.30655 0.703788 5.33316 2.02236C3.35977 3.34094 1.8217 5.21509 0.913451 7.4078C0.00519948 9.60051 -0.232441 12.0133 0.230582 14.3411C0.693605 16.6689 1.83649 18.807 3.51472 20.4853C5.19295 22.1635 7.33115 23.3064 9.65892 23.7694C11.9867 24.2324 14.3995 23.9948 16.5922 23.0865C18.7849 22.1783 20.6591 20.6402 21.9776 18.6668C23.2962 16.6935 24 14.3734 24 12C23.9966 8.81846 22.7312 5.76821 20.4815 3.51852C18.2318 1.26883 15.1815 0.00344108 12 0ZM12.25 5C12.5467 5 12.8367 5.08797 13.0834 5.25279C13.33 5.41762 13.5223 5.65189 13.6358 5.92597C13.7494 6.20006 13.7791 6.50166 13.7212 6.79263C13.6633 7.08361 13.5204 7.35088 13.3107 7.56066C13.1009 7.77044 12.8336 7.9133 12.5426 7.97118C12.2517 8.02905 11.9501 7.99935 11.676 7.88582C11.4019 7.77229 11.1676 7.58003 11.0028 7.33335C10.838 7.08668 10.75 6.79667 10.75 6.5C10.75 6.10217 10.908 5.72064 11.1893 5.43934C11.4706 5.15803 11.8522 5 12.25 5ZM14.5 18.5H10.5C10.2348 18.5 9.98043 18.3946 9.7929 18.2071C9.60536 18.0196 9.5 17.7652 9.5 17.5C9.5 17.2348 9.60536 16.9804 9.7929 16.7929C9.98043 16.6054 10.2348 16.5 10.5 16.5H11.25C11.3163 16.5 11.3799 16.4737 11.4268 16.4268C11.4737 16.3799 11.5 16.3163 11.5 16.25V11.75C11.5 11.6837 11.4737 11.6201 11.4268 11.5732C11.3799 11.5263 11.3163 11.5 11.25 11.5H10.5C10.2348 11.5 9.98043 11.3946 9.7929 11.2071C9.60536 11.0196 9.5 10.7652 9.5 10.5C9.5 10.2348 9.60536 9.98043 9.7929 9.79289C9.98043 9.60536 10.2348 9.5 10.5 9.5H11.5C12.0304 9.5 12.5391 9.71071 12.9142 10.0858C13.2893 10.4609 13.5 10.9696 13.5 11.5V16.25C13.5 16.3163 13.5263 16.3799 13.5732 16.4268C13.6201 16.4737 13.6837 16.5 13.75 16.5H14.5C14.7652 16.5 15.0196 16.6054 15.2071 16.7929C15.3946 16.9804 15.5 17.2348 15.5 17.5C15.5 17.7652 15.3946 18.0196 15.2071 18.2071C15.0196 18.3946 14.7652 18.5 14.5 18.5Z', +}); + +InfoIcon.displayName = 'InfoIcon'; diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Minus.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Minus.tsx new file mode 100644 index 0000000000..5551903568 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Minus.tsx @@ -0,0 +1,7 @@ +import { createIcon } from '@gluestack-ui/icon'; +import Root from '../styled-components/Root'; +export const MinusIcon = createIcon({ + Root, + viewBox: '0 0 24 24', + d: 'M22 10.5H2V13H22V10.5Z', +}); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Moon.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Moon.tsx new file mode 100644 index 0000000000..8c5ffca4ca --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Moon.tsx @@ -0,0 +1,7 @@ +import { createIcon } from '@gluestack-ui/icon'; +import Root from '../styled-components/Root'; +export const MoonIcon = createIcon({ + Root, + viewBox: '0 0 24 24', + d: 'M20.8562 13.4434C20.1167 13.6274 19.3772 13.7194 18.6378 13.7194C14.0162 13.7194 10.3189 10.0391 10.3189 5.43876C10.3189 4.7027 10.4113 3.96665 10.5962 3.23059C10.6886 2.95457 10.5962 2.58654 10.3189 2.31052C10.0416 2.0345 9.7643 1.9425 9.39457 2.0345C5.05026 3.3226 2 7.3709 2 11.8792C2 17.4917 6.52917 22 12.1675 22C16.6967 22 20.7637 18.9638 21.9653 14.5474C22.0578 14.2714 21.9653 13.9034 21.688 13.6274C21.5032 13.4434 21.1334 13.3514 20.8562 13.4434Z', +}); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/NavigationUnread.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/NavigationUnread.tsx new file mode 100644 index 0000000000..43e0e09e52 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/NavigationUnread.tsx @@ -0,0 +1,12 @@ +import { createIcon } from '@gluestack-ui/icon'; +import Root from '../styled-components/Root'; + +const NavigationUnreadIcon = createIcon({ + Root, + viewBox: '0 0 16 16', + d: 'M15.9937 2.42017C15.9979 2.364 16 2.30725 16 2.25C16 1.00736 14.9926 0 13.75 0C12.5919 0 11.6381 0.875012 11.5137 2C11.513 2.00664 11.5123 2.01329 11.5116 2.01995C11.5039 2.09559 11.5 2.17233 11.5 2.25C11.5 2.51298 11.5451 2.76542 11.628 3C11.9369 3.87389 12.7703 4.5 13.75 4.5C14.8337 4.5 15.7384 3.73387 15.9522 2.71368C15.9529 2.71027 15.9536 2.70687 15.9543 2.70345C15.9732 2.61097 15.9865 2.51641 15.9937 2.42017ZM0.5 2H10.5095C10.5032 2.08251 10.5 2.16588 10.5 2.25C10.5 2.50813 10.5301 2.75924 10.587 3H0.5C0.223858 3 0 2.77614 0 2.5C0 2.22386 0.223858 2 0.5 2ZM0 7.5C0 7.22386 0.223858 7 0.5 7H15.5C15.7761 7 16 7.22386 16 7.5C16 7.77614 15.7761 8 15.5 8H0.5C0.223858 8 0 7.77614 0 7.5ZM0.5 12C0.223858 12 0 12.2239 0 12.5C0 12.7761 0.223858 13 0.5 13H15.5C15.7761 13 16 12.7761 16 12.5C16 12.2239 15.7761 12 15.5 12H0.5Z', +}); + +NavigationUnreadIcon.displayName = 'NavigationUnreadIcon'; + +export { NavigationUnreadIcon }; diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Open.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Open.tsx new file mode 100644 index 0000000000..b722315d76 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Open.tsx @@ -0,0 +1,19 @@ +import React from 'react'; +import { createIcon } from '@gluestack-ui/icon'; +import Root from '../styled-components/Root'; +import { Path } from 'react-native-svg'; + +const OpenInNewIcon = createIcon({ + Root, + viewBox: '0 0 16 16', + path: ( + + ), +}); + +OpenInNewIcon.displayName = 'OpenInNewIcon'; + +export { OpenInNewIcon }; diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Options.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Options.tsx new file mode 100644 index 0000000000..978ad1a9f7 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Options.tsx @@ -0,0 +1,12 @@ +import { createIcon } from '@gluestack-ui/icon'; +import Root from '../styled-components/Root'; + +const OptionsIcon = createIcon({ + Root, + viewBox: '0 0 21 20', + d: 'M15.8719 5C15.6402 3.85888 14.6314 3 13.4219 3C12.2124 3 11.2035 3.85888 10.9719 5H3.42188C3.14573 5 2.92188 5.22386 2.92188 5.5C2.92188 5.77614 3.14573 6 3.42188 6H10.9719C11.2035 7.14112 12.2124 8 13.4219 8C14.6516 8 15.6739 7.11217 15.8828 5.94254C15.8794 5.96177 15.8757 5.98093 15.8719 6H18.4219C18.698 6 18.9219 5.77614 18.9219 5.5C18.9219 5.22386 18.698 5 18.4219 5H15.8719ZM13.4219 7C12.5934 7 11.9219 6.32843 11.9219 5.5C11.9219 4.67157 12.5934 4 13.4219 4C14.2503 4 14.9219 4.67157 14.9219 5.5C14.9219 6.32843 14.2503 7 13.4219 7ZM10.8719 14C10.6402 12.8589 9.63135 12 8.42188 12C7.2124 12 6.20352 12.8589 5.97188 14H3.42188C3.14573 14 2.92188 14.2239 2.92188 14.5C2.92188 14.7761 3.14573 15 3.42188 15H5.97188C6.20352 16.1411 7.2124 17 8.42188 17C9.63135 17 10.6402 16.1411 10.8719 15H18.4219C18.698 15 18.9219 14.7761 18.9219 14.5C18.9219 14.2239 18.698 14 18.4219 14H10.8719ZM8.42188 16C7.59345 16 6.92188 15.3284 6.92188 14.5C6.92188 13.6716 7.59345 13 8.42188 13C9.2503 13 9.92188 13.6716 9.92188 14.5C9.92188 15.3284 9.2503 16 8.42188 16Z', +}); + +OptionsIcon.displayName = 'OptionsIcon'; + +export { OptionsIcon }; diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Play.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Play.tsx new file mode 100644 index 0000000000..ded1271004 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Play.tsx @@ -0,0 +1,7 @@ +import { createIcon } from '@gluestack-ui/icon'; +import Root from '../styled-components/Root'; +export const PlayIcon = createIcon({ + Root, + viewBox: '0 0 24 24', + d: 'M12 0C5.376 0 0 5.376 0 12C0 18.624 5.376 24 12 24C18.624 24 24 18.624 24 12C24 5.376 18.624 0 12 0ZM9.6 17.4V6.6L16.8 12L9.6 17.4Z', +}); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Question.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Question.tsx new file mode 100644 index 0000000000..f4cb7556c7 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Question.tsx @@ -0,0 +1,15 @@ +import { questionOutlineIconPath } from './questionIconPath'; +import { createIcon } from '@gluestack-ui/icon'; +import Root from '../styled-components/Root'; + +export const QuestionIcon = createIcon({ + Root, + viewBox: '0 0 24 24', + d: 'M12 0C9.62663 0 7.30655 0.703787 5.33316 2.02236C3.35977 3.34094 1.8217 5.21508 0.913451 7.4078C0.00519943 9.60051 -0.232441 12.0133 0.230582 14.3411C0.693605 16.6688 1.83649 18.807 3.51472 20.4853C5.19295 22.1635 7.33115 23.3064 9.65892 23.7694C11.9867 24.2324 14.3995 23.9948 16.5922 23.0865C18.7849 22.1783 20.6591 20.6402 21.9776 18.6668C23.2962 16.6934 24 14.3734 24 12C23.9966 8.81846 22.7312 5.76821 20.4815 3.51852C18.2318 1.26883 15.1815 0.00344108 12 0V0ZM12 19C11.7033 19 11.4133 18.912 11.1666 18.7472C10.92 18.5824 10.7277 18.3481 10.6142 18.074C10.5007 17.7999 10.4709 17.4983 10.5288 17.2074C10.5867 16.9164 10.7296 16.6491 10.9393 16.4393C11.1491 16.2296 11.4164 16.0867 11.7074 16.0288C11.9983 15.9709 12.2999 16.0006 12.574 16.1142C12.8481 16.2277 13.0824 16.42 13.2472 16.6666C13.412 16.9133 13.5 17.2033 13.5 17.5C13.5 17.8978 13.342 18.2794 13.0607 18.5607C12.7794 18.842 12.3978 19 12 19ZM13.6 12.92C13.4216 12.9979 13.2698 13.1261 13.1632 13.289C13.0566 13.4519 12.9999 13.6423 13 13.837C13 14.1022 12.8946 14.3566 12.7071 14.5441C12.5196 14.7316 12.2652 14.837 12 14.837C11.7348 14.837 11.4804 14.7316 11.2929 14.5441C11.1054 14.3566 11 14.1022 11 13.837C10.9999 13.2532 11.1702 12.682 11.4899 12.1936C11.8096 11.7051 12.2649 11.3205 12.8 11.087C13.1305 10.9427 13.4159 10.7118 13.6259 10.4186C13.8359 10.1255 13.9627 9.78099 13.993 9.42163C14.0232 9.06228 13.9557 8.70144 13.7976 8.37731C13.6396 8.05317 13.3968 7.77781 13.095 7.58037C12.7932 7.38292 12.4437 7.27074 12.0834 7.25571C11.7231 7.24067 11.3654 7.32333 11.0482 7.49495C10.7311 7.66656 10.4662 7.92074 10.2817 8.23057C10.0971 8.54041 9.99982 8.89437 10 9.255C10 9.52021 9.89465 9.77457 9.70711 9.9621C9.51957 10.1496 9.26522 10.255 9 10.255C8.73479 10.255 8.48043 10.1496 8.2929 9.9621C8.10536 9.77457 8 9.52021 8 9.255C7.99999 8.53384 8.19495 7.82608 8.56423 7.20665C8.93352 6.58721 9.4634 6.07913 10.0978 5.73618C10.7322 5.39324 11.4475 5.22817 12.168 5.25847C12.8886 5.28876 13.5875 5.51329 14.1909 5.90828C14.7942 6.30327 15.2796 6.85404 15.5956 7.50229C15.9116 8.15054 16.0464 8.87216 15.9859 9.59077C15.9253 10.3094 15.6716 10.9983 15.2516 11.5845C14.8316 12.1707 14.261 12.6325 13.6 12.921V12.92Z', +}); + +export const QuestionOutlineIcon = createIcon({ + Root, + viewBox: '0 0 24 24', + path: questionOutlineIconPath, +}); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Quick.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Quick.tsx new file mode 100644 index 0000000000..793d42d25b --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Quick.tsx @@ -0,0 +1,12 @@ +import { createIcon } from '@gluestack-ui/icon'; +import Root from '../styled-components/Root'; + +const QuickIcon = createIcon({ + Root, + viewBox: '0 0 17 16', + d: 'M6.58603 14.9599C6.4837 14.9167 6.39867 14.8407 6.34435 14.7438C6.29003 14.647 6.26951 14.5348 6.28603 14.4249L7.19603 8.49994H4.78103C4.70446 8.502 4.62845 8.48644 4.55885 8.45447C4.48926 8.42249 4.42793 8.37496 4.37962 8.31553C4.3313 8.2561 4.29728 8.18637 4.28019 8.11171C4.2631 8.03705 4.26338 7.95947 4.28103 7.88494L5.78103 1.38493C5.80742 1.27307 5.87155 1.17371 5.96262 1.10359C6.05368 1.03347 6.16613 0.996863 6.28103 0.999935H11.281C11.3557 0.999681 11.4295 1.01617 11.497 1.04818C11.5645 1.0802 11.624 1.12692 11.671 1.18493C11.7187 1.2436 11.7525 1.31233 11.7699 1.38594C11.7872 1.45956 11.7876 1.53614 11.771 1.60993L10.906 5.49994H13.281C13.3747 5.49975 13.4666 5.5259 13.5462 5.57541C13.6257 5.62491 13.6898 5.69578 13.731 5.77994C13.7669 5.8607 13.7806 5.94953 13.771 6.03735C13.7613 6.12519 13.7286 6.20889 13.676 6.27994L7.17603 14.7799C7.1321 14.8451 7.07344 14.8989 7.00481 14.9371C6.93619 14.9754 6.85952 14.9969 6.78103 14.9999C6.71412 14.9987 6.64802 14.9851 6.58603 14.9599ZM9.65602 6.49994L10.656 1.99993H6.68103L5.41103 7.49994H8.36602L7.57103 12.6399L12.281 6.49994H9.65602Z', +}); + +QuickIcon.displayName = 'QuickIcon'; + +export { QuickIcon }; diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Resize.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Resize.tsx new file mode 100644 index 0000000000..f8d8f30cf3 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Resize.tsx @@ -0,0 +1,12 @@ +import { createIcon } from '@gluestack-ui/icon'; +import Root from '../styled-components/Root'; + +const ResizeIcon = createIcon({ + Root, + viewBox: '0 0 16 16', + d: 'M3 0C1.34315 0 0 1.34315 0 3V6.5C0 6.77614 0.223858 7 0.5 7C0.776142 7 1 6.77614 1 6.5V3C1 1.89543 1.89543 1 3 1H6.5C6.77614 1 7 0.776142 7 0.5C7 0.223858 6.77614 0 6.5 0H3ZM9.5 0C9.22386 0 9 0.223858 9 0.5C9 0.776142 9.22386 1 9.5 1H13C14.1046 1 15 1.89543 15 3V6.5C15 6.77614 15.2239 7 15.5 7C15.7761 7 16 6.77614 16 6.5V3C16 1.34315 14.6569 0 13 0H9.5ZM0.5 9C0.776142 9 1 9.22386 1 9.5V13C1 14.1046 1.89543 15 3 15H6.5C6.77614 15 7 15.2239 7 15.5C7 15.7761 6.77614 16 6.5 16H3C1.34315 16 0 14.6569 0 13V9.5C0 9.22386 0.223858 9 0.5 9ZM16 9.5C16 9.22386 15.7761 9 15.5 9C15.2239 9 15 9.22386 15 9.5V13C15 14.1046 14.1046 15 13 15H9.5C9.22386 15 9 15.2239 9 15.5C9 15.7761 9.22386 16 9.5 16H13C14.6569 16 16 14.6569 16 13V9.5Z', +}); + +ResizeIcon.displayName = 'ResizeIcon'; + +export { ResizeIcon }; diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Responsive.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Responsive.tsx new file mode 100644 index 0000000000..003ccaf2ea --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Responsive.tsx @@ -0,0 +1,12 @@ +import { createIcon } from '@gluestack-ui/icon'; +import Root from '../styled-components/Root'; + +const ResponsiveIcon = createIcon({ + Root, + viewBox: '0 0 20 20', + d: 'M5 2.5C5 2.22386 4.77614 2 4.5 2C4.22386 2 4 2.22386 4 2.5V4H2.5C2.22386 4 2 4.22386 2 4.5C2 4.77614 2.22386 5 2.5 5H4.5C4.77614 5 5 4.77614 5 4.5V2.5ZM16 2.5C16 2.22386 15.7761 2 15.5 2C15.2239 2 15 2.22386 15 2.5V4.5C15 4.77614 15.2239 5 15.5 5H17.5C17.7761 5 18 4.77614 18 4.5C18 4.22386 17.7761 4 17.5 4H16V2.5ZM7 5C6.44771 5 6 5.44772 6 6V14C6 14.5523 6.44772 15 7 15H13C13.5523 15 14 14.5523 14 14V6C14 5.44772 13.5523 5 13 5H7ZM7 6H13V14H7V6ZM4.5 18C4.77614 18 5 17.7761 5 17.5V15.5C5 15.2239 4.77614 15 4.5 15H2.5C2.22386 15 2 15.2239 2 15.5C2 15.7761 2.22386 16 2.5 16H4V17.5C4 17.7761 4.22386 18 4.5 18ZM15.5 18C15.7761 18 16 17.7761 16 17.5V16H17.5C17.7761 16 18 15.7761 18 15.5C18 15.2239 17.7761 15 17.5 15H15.5C15.2239 15 15 15.2239 15 15.5V17.5C15 17.7761 15.2239 18 15.5 18ZM8.5 8C8.22386 8 8 8.22386 8 8.5C8 8.77614 8.22386 9 8.5 9H11.5C11.7761 9 12 8.77614 12 8.5C12 8.22386 11.7761 8 11.5 8H8.5ZM8.5 10C8.22386 10 8 10.2239 8 10.5C8 10.7761 8.22386 11 8.5 11H10.5C10.7761 11 11 10.7761 11 10.5C11 10.2239 10.7761 10 10.5 10H8.5Z', +}); + +ResponsiveIcon.displayName = 'ResponsiveIcon'; + +export { ResponsiveIcon }; diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/ScaleFill.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/ScaleFill.tsx new file mode 100644 index 0000000000..2d6b216d80 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/ScaleFill.tsx @@ -0,0 +1,12 @@ +import { createIcon } from '@gluestack-ui/icon'; +import Root from '../styled-components/Root'; + +const ScaleFillIcon = createIcon({ + Root, + viewBox: '0 0 16 16', + d: 'M4 4.5C4 4.43221 4.01349 4.36756 4.03794 4.30861C4.06198 4.25051 4.09744 4.19602 4.14433 4.14857L4.14857 4.14433C4.19602 4.09744 4.25051 4.06198 4.30861 4.03794C4.36756 4.01349 4.43221 4 4.5 4H6.5C6.77614 4 7 4.22386 7 4.5C7 4.77614 6.77614 5 6.5 5H5.70711L6.85355 6.14645C7.04882 6.34171 7.04882 6.65829 6.85355 6.85355C6.65829 7.04882 6.34171 7.04882 6.14645 6.85355L5 5.70711V6.5C5 6.77614 4.77614 7 4.5 7C4.22386 7 4 6.77614 4 6.5V4.5ZM4.03794 11.6914C4.01349 11.6324 4 11.5678 4 11.5V9.5C4 9.22386 4.22386 9 4.5 9C4.77614 9 5 9.22386 5 9.5V10.2929L6.14645 9.14645C6.34171 8.95118 6.65829 8.95118 6.85355 9.14645C7.04882 9.34171 7.04882 9.65829 6.85355 9.85355L5.70711 11H6.5C6.77614 11 7 11.2239 7 11.5C7 11.7761 6.77614 12 6.5 12H4.50049L4.497 12C4.37004 11.9992 4.24331 11.9504 4.14645 11.8536C4.09851 11.8056 4.06234 11.7504 4.03794 11.6914ZM11.6914 4.03794C11.7495 4.06198 11.804 4.09744 11.8514 4.14433L11.8557 4.14857C11.9026 4.19602 11.938 4.25051 11.9621 4.30861C11.9865 4.36756 12 4.43221 12 4.5V6.5C12 6.77614 11.7761 7 11.5 7C11.2239 7 11 6.77614 11 6.5V5.70711L9.85355 6.85355C9.65829 7.04882 9.34171 7.04882 9.14645 6.85355C8.95118 6.65829 8.95118 6.34171 9.14645 6.14645L10.2929 5H9.5C9.22386 5 9 4.77614 9 4.5C9 4.22386 9.22386 4 9.5 4H11.4999C11.5677 4 11.6324 4.01349 11.6914 4.03794ZM11.8514 11.8557C11.804 11.9026 11.7495 11.938 11.6914 11.9621C11.6324 11.9865 11.5678 12 11.5 12H9.5C9.22386 12 9 11.7761 9 11.5C9 11.2239 9.22386 11 9.5 11H10.2929L9.14645 9.85355C8.95118 9.65829 8.95118 9.34171 9.14645 9.14645C9.34171 8.95118 9.65829 8.95118 9.85355 9.14645L11 10.2929V9.5C11 9.22386 11.2239 9 11.5 9C11.7761 9 12 9.22386 12 9.5V11.5C12 11.5678 11.9865 11.6324 11.9621 11.6914C11.938 11.7495 11.9026 11.804 11.8557 11.8514L11.8514 11.8557ZM1 3C1 1.89543 1.89543 1 3 1H13C14.1046 1 15 1.89543 15 3V13C15 14.1046 14.1046 15 13 15H3C1.89543 15 1 14.1046 1 13V3ZM3 2C2.44772 2 2 2.44772 2 3V13C2 13.5523 2.44772 14 3 14H13C13.5523 14 14 13.5523 14 13V3C14 2.44772 13.5523 2 13 2H3Z', +}); + +ScaleFillIcon.displayName = 'ScaleFillIcon'; + +export { ScaleFillIcon }; diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Search.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Search.tsx new file mode 100644 index 0000000000..9a41e77b76 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Search.tsx @@ -0,0 +1,9 @@ +import { createIcon } from '@gluestack-ui/icon'; +import Root from '../styled-components/Root'; +export const SearchIcon = createIcon({ + Root, + viewBox: '0 0 24 24', + d: 'M21.9399 20.5624L15.4474 14.0699C16.4549 12.7675 16.9999 11.175 16.9999 9.49997C16.9999 7.49498 16.2174 5.61498 14.8024 4.19749C13.3874 2.78 11.5025 2 9.49997 2C7.49748 2 5.61248 2.7825 4.19749 4.19749C2.78 5.61248 2 7.49498 2 9.49997C2 11.5025 2.7825 13.3874 4.19749 14.8024C5.61248 16.2199 7.49498 16.9999 9.49997 16.9999C11.175 16.9999 12.765 16.4549 14.0674 15.4499L20.5599 21.9399C20.579 21.959 20.6016 21.9741 20.6264 21.9844C20.6513 21.9947 20.678 22 20.7049 22C20.7318 22 20.7585 21.9947 20.7834 21.9844C20.8083 21.9741 20.8309 21.959 20.8499 21.9399L21.9399 20.8524C21.959 20.8334 21.9741 20.8108 21.9844 20.7859C21.9947 20.761 22 20.7343 22 20.7074C22 20.6805 21.9947 20.6538 21.9844 20.6289C21.9741 20.6041 21.959 20.5815 21.9399 20.5624ZM13.46 13.46C12.4 14.5174 10.995 15.0999 9.49997 15.0999C8.00497 15.0999 6.59998 14.5174 5.53998 13.46C4.48249 12.4 3.89999 10.995 3.89999 9.49997C3.89999 8.00497 4.48249 6.59748 5.53998 5.53998C6.59998 4.48249 8.00497 3.89999 9.49997 3.89999C10.995 3.89999 12.4025 4.47999 13.46 5.53998C14.5174 6.59998 15.0999 8.00497 15.0999 9.49997C15.0999 10.995 14.5174 12.4025 13.46 13.46Z', +}); + +SearchIcon.displayName = 'SearchIcon'; diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Share.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Share.tsx new file mode 100644 index 0000000000..edd6c313fb --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Share.tsx @@ -0,0 +1,7 @@ +import { createIcon } from '@gluestack-ui/icon'; +import Root from '../styled-components/Root'; +export const ShareIcon = createIcon({ + Root, + viewBox: '0 0 24 24', + d: 'M18.0621 16.1487C17.2993 16.1487 16.6113 16.4451 16.0895 16.9223L8.93445 12.7495C8.98988 12.523 9.02482 12.2868 9.02482 12.0458C9.02482 11.8048 8.98988 11.5698 8.93445 11.3433L16.0136 7.21147C16.5679 7.73368 17.3006 8.02461 18.0621 8.02482C19.7237 8.02482 21.0745 6.67406 21.0745 5.01241C21.0745 3.35076 19.7237 2 18.0621 2C16.4004 2 15.0496 3.35076 15.0496 5.01241C15.0496 5.2534 15.0846 5.48958 15.14 5.71491L8.06085 9.84673C7.50628 9.32504 6.7738 9.0342 6.01241 9.03338C4.35077 9.03338 3 10.3841 3 12.0458C3 13.7074 4.35077 15.0582 6.01241 15.0582C6.77392 15.058 7.50661 14.7671 8.06085 14.2449L15.2159 18.4176C15.1632 18.633 15.1361 18.8538 15.1352 19.0756C15.1354 19.6541 15.3072 20.2196 15.6288 20.7005C15.9503 21.1814 16.4073 21.5562 16.9418 21.7775C17.4764 21.9988 18.0645 22.0567 18.6319 21.9437C19.1993 21.8308 19.7205 21.5522 20.1296 21.1431C20.5387 20.734 20.8173 20.2128 20.9302 19.6454C21.0432 19.078 20.9853 18.4898 20.764 17.9553C20.5427 17.4208 20.1679 16.9638 19.687 16.6423C19.2061 16.3207 18.6406 16.1489 18.0621 16.1487Z', +}); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Social.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Social.tsx new file mode 100644 index 0000000000..60424fc78d --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Social.tsx @@ -0,0 +1,26 @@ +import { createIcon } from '@gluestack-ui/icon'; +import Root from '../styled-components/Root'; + +const TwitterIcon = createIcon({ + Root, + viewBox: '0 0 24 24', + d: 'M18.901 1.56543H22.581L14.541 10.7554L24 23.2584H16.594L10.794 15.6744L4.156 23.2584H0.474L9.074 13.4284L0 1.56643H7.594L12.837 8.49843L18.901 1.56543ZM17.61 21.0564H19.649L6.486 3.65243H4.298L17.61 21.0564Z', +}); + +const GitHubIcon = createIcon({ + Root, + viewBox: '0 0 24 24', + d: 'M11.9984 1.36035C6.12369 1.36035 1.35938 6.12402 1.35938 12.0007C1.35938 16.701 4.40778 20.6893 8.63581 22.097C9.16817 22.1943 9.36215 21.8656 9.36215 21.5835C9.36215 21.3307 9.35301 20.6619 9.34778 19.7743C6.38823 20.417 5.76378 18.3477 5.76378 18.3477C5.27977 17.1184 4.58218 16.7911 4.58218 16.7911C3.61612 16.1314 4.65533 16.1445 4.65533 16.1445C5.72329 16.2195 6.28501 17.2411 6.28501 17.2411C7.23409 18.8669 8.77561 18.3973 9.38175 18.125C9.47842 17.4378 9.75341 16.9688 10.0571 16.7029C7.69458 16.4338 5.21053 15.5213 5.21053 11.4442C5.21053 10.2822 5.6253 9.33311 6.30593 8.58914C6.1962 8.32002 5.83106 7.23834 6.41044 5.77325C6.41044 5.77325 7.30332 5.48716 9.33602 6.8634C10.1845 6.62761 11.095 6.51004 11.9997 6.50546C12.9037 6.51004 13.8136 6.62761 14.6634 6.8634C16.6948 5.48716 17.5863 5.77325 17.5863 5.77325C18.1671 7.23834 17.802 8.32002 17.6929 8.58914C18.3748 9.33311 18.7863 10.2822 18.7863 11.4442C18.7863 15.5318 16.2983 16.4312 13.9286 16.6944C14.31 17.0231 14.6503 17.6723 14.6503 18.6651C14.6503 20.0871 14.6373 21.2347 14.6373 21.5835C14.6373 21.8683 14.8293 22.1995 15.3688 22.0955C19.5937 20.6855 22.6394 16.7003 22.6394 12.0007C22.6394 6.12402 17.8751 1.36035 11.9984 1.36035Z', +}); + +const DiscordIcon = createIcon({ + Root, + viewBox: '0 0 24 24', + d: 'M16.3119 19.5434C16.9221 20.2716 17.6542 21.1181 17.6542 21.1181C21.9128 20.9875 23.6702 18.4366 23.8434 18.1853C23.853 18.1714 23.8577 18.1646 23.8577 18.1656C23.8577 11.8867 20.9289 6.78889 20.9289 6.78889C18.0204 4.68282 15.2339 4.74187 15.2339 4.74187L14.9492 5.05679C18.4068 6.06062 20.0136 7.53684 20.0136 7.53684C17.8983 6.43459 15.8238 5.88348 13.8916 5.66697C12.4271 5.5095 11.0238 5.54887 9.78312 5.70633C9.67656 5.70633 9.58552 5.72133 9.48296 5.73824C9.468 5.74069 9.4528 5.74319 9.43736 5.74569C8.72544 5.82443 6.99665 6.06062 4.82038 6.98572C4.06783 7.30064 3.62038 7.53684 3.62038 7.53684C3.62038 7.53684 5.28818 5.98189 8.9492 4.97806L8.74584 4.74187C8.74584 4.74187 5.9797 4.68282 3.05089 6.78889C3.05089 6.78889 0.12207 11.8867 0.12207 18.1656C0.12207 18.1656 1.83054 20.9999 6.32546 21.1377C6.32546 21.1377 7.078 20.2716 7.68818 19.5237C5.10512 18.7757 4.12885 17.2208 4.12885 17.2208C4.12885 17.2208 4.33224 17.3586 4.69834 17.5554C4.71091 17.5554 4.72348 17.563 4.74086 17.5733C4.75159 17.5798 4.76416 17.5873 4.7797 17.5948C4.81021 17.6144 4.84071 17.6292 4.87122 17.644C4.90174 17.6587 4.93224 17.6735 4.96275 17.6932C5.47122 17.9688 5.9797 18.1853 6.4475 18.3624C7.28139 18.697 8.278 18.9923 9.43736 19.2088C10.9627 19.4844 12.7526 19.5828 14.7051 19.2285C15.661 19.0513 16.6374 18.7955 17.6542 18.3821C18.3662 18.1263 19.1594 17.7522 19.9933 17.2208C19.9933 17.2208 18.9763 18.8151 16.3119 19.5434ZM13.5458 14.17C13.5458 12.9693 14.461 12.0049 15.6204 12.0049C16.7594 12.0049 17.695 12.9693 17.695 14.17C17.695 15.3706 16.7797 16.3351 15.6204 16.3351C14.4814 16.3351 13.5458 15.3706 13.5458 14.17ZM6.12207 14.17C6.12207 12.9693 7.03733 12.0049 8.19664 12.0049C9.356 12.0049 10.2916 12.9693 10.2712 14.17C10.2712 15.3706 9.356 16.3351 8.19664 16.3351C7.05766 16.3351 6.12207 15.3706 6.12207 14.17Z', +}); + +GitHubIcon.displayName = 'GitHubIcon'; +TwitterIcon.displayName = 'TwitterIcon'; +DiscordIcon.displayName = 'DiscordIcon'; + +export { TwitterIcon, GitHubIcon, DiscordIcon }; diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Sun.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Sun.tsx new file mode 100644 index 0000000000..6486bb9c94 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Sun.tsx @@ -0,0 +1,22 @@ +import React from 'react'; +import { createIcon } from '@gluestack-ui/icon'; +import Root from '../styled-components/Root'; +import { G, Path } from 'react-native-svg'; + +export const SunIcon = createIcon({ + Root, + viewBox: '0 0 24 24', + path: ( + + + + + + + + + + + + ), +}); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/ThreeDots.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/ThreeDots.tsx new file mode 100644 index 0000000000..6b94ae9086 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/ThreeDots.tsx @@ -0,0 +1,14 @@ +import React from 'react'; +import { createIcon } from '@gluestack-ui/icon'; +import Root from '../styled-components/Root'; +import { G, Path } from 'react-native-svg'; + +export const ThreeDotsIcon = createIcon({ + Root, + viewBox: '0 0 32.055 32.055', + path: [ + + + , + ], +}); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Ticket.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Ticket.tsx new file mode 100644 index 0000000000..5b984fa405 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Ticket.tsx @@ -0,0 +1,12 @@ +import { createIcon } from '@gluestack-ui/icon'; +import Root from '../styled-components/Root'; + +const TicketIcon = createIcon({ + Root, + viewBox: '0 0 16 16', + d: 'M10.0301 1.23749C9.73725 0.944599 9.26237 0.944599 8.96948 1.23749L1.23725 8.96973C0.944355 9.26262 0.944355 9.73749 1.23725 10.0304L2.01184 10.805C2.01203 10.8051 2.01227 10.8052 2.01258 10.8053C2.01524 10.8064 2.02361 10.8092 2.03921 10.8098C2.07326 10.8113 2.12267 10.8017 2.1712 10.7751C2.49199 10.5996 2.86011 10.5 3.25 10.5C4.49264 10.5 5.5 11.5074 5.5 12.75C5.5 13.1399 5.40041 13.508 5.22488 13.8288C5.19833 13.8773 5.18868 13.9267 5.19016 13.9608C5.19084 13.9764 5.19363 13.9848 5.19471 13.9874C5.19483 13.9877 5.19494 13.988 5.19503 13.9882L5.96948 14.7626C6.26237 15.0555 6.73725 15.0555 7.03014 14.7626L14.7624 7.03039C15.0553 6.73749 15.0553 6.26262 14.7624 5.96973L13.9878 5.1952C13.9877 5.19511 13.9874 5.19501 13.9871 5.19488C13.9845 5.19381 13.9761 5.19102 13.9605 5.19034C13.9264 5.18885 13.877 5.19849 13.8285 5.22504C13.5078 5.40047 13.1398 5.5 12.75 5.5C11.5074 5.5 10.5 4.49264 10.5 3.25C10.5 2.86022 10.5995 2.4922 10.775 2.17148C10.8015 2.12295 10.8112 2.07356 10.8097 2.03952C10.809 2.02392 10.8062 2.01555 10.8051 2.01289C10.805 2.01259 10.8049 2.01234 10.8048 2.01215L10.0301 1.23749ZM8.26237 0.530385C8.94579 -0.153032 10.0538 -0.153032 10.7372 0.530385L11.5125 1.30561C11.9189 1.71208 11.8493 2.2911 11.6523 2.65136C11.5553 2.82865 11.5 3.03211 11.5 3.25C11.5 3.94036 12.0596 4.5 12.75 4.5C12.9679 4.5 13.1714 4.44468 13.3486 4.3477C13.7089 4.15065 14.2879 4.08106 14.6944 4.48752L15.4695 5.26262C16.1529 5.94604 16.1529 7.05407 15.4695 7.73749L7.73725 15.4697C7.05383 16.1531 5.94579 16.1531 5.26237 15.4697L4.48735 14.6947C4.08082 14.2882 4.15049 13.7091 4.34762 13.3488C4.44464 13.1715 4.5 12.9679 4.5 12.75C4.5 12.0596 3.94036 11.5 3.25 11.5C3.03205 11.5 2.82853 11.5554 2.6512 11.6524C2.29094 11.8495 1.71183 11.9192 1.3053 11.5127L0.530142 10.7375C-0.153276 10.0541 -0.153277 8.94604 0.530141 8.26262L8.26237 0.530385Z', +}); + +TicketIcon.displayName = 'TicketIcon'; + +export { TicketIcon }; diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/TypeScript.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/TypeScript.tsx new file mode 100644 index 0000000000..959d86ff2e --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/TypeScript.tsx @@ -0,0 +1,28 @@ +import { createIcon } from '@gluestack-ui/icon'; +import { ClipPath, Defs, G, Path, Rect } from 'react-native-svg'; +import Root from '../styled-components/Root'; +import React from 'react'; + +const TypeScriptIcon = createIcon({ + Root, + viewBox: '0 0 16 16', + path: ( + <> + + + + + + + + + + ), +}); + +TypeScriptIcon.displayName = 'TypeScriptIcon'; + +export { TypeScriptIcon }; diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Warning.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Warning.tsx new file mode 100644 index 0000000000..681b763234 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/Warning.tsx @@ -0,0 +1,23 @@ +import React from 'react'; +import { createIcon } from '@gluestack-ui/icon'; +import Root from '../styled-components/Root'; +import { G, Path } from 'react-native-svg'; + +export const WarningIcon = createIcon({ + Root, + viewBox: '0 0 24 24', + d: 'M11.9836 0.00267822C8.77744 0.0551662 5.72075 1.36728 3.47427 3.65538C2.35024 4.77447 1.46338 6.10869 0.866705 7.57831C0.270027 9.04793 -0.0242179 10.6228 0.00155827 12.2087C-0.000286057 13.7583 0.303697 15.2931 0.896087 16.7251C1.48848 18.1571 2.35763 19.458 3.45373 20.5535C4.54983 21.6489 5.85133 22.5173 7.28365 23.1089C8.71596 23.7004 10.2509 24.0035 11.8006 24.0007H12.0146C15.2217 23.9677 18.2847 22.6638 20.5316 20.3751C22.7785 18.0864 24.0257 14.9999 23.9996 11.7927C24.0033 10.2243 23.6933 8.6709 23.0879 7.22398C22.4825 5.77706 21.5939 4.4658 20.4744 3.36731C19.3548 2.26882 18.0269 1.40527 16.5688 0.827453C15.1106 0.249636 13.5517 -0.0307856 11.9836 0.00267822ZM10.5007 16.5433C10.4935 16.3473 10.5254 16.1517 10.5947 15.9682C10.6639 15.7846 10.7691 15.6167 10.904 15.4742C11.0389 15.3318 11.2009 15.2177 11.3804 15.1386C11.5599 15.0594 11.7534 15.0169 11.9496 15.0135H11.9766C12.3712 15.0142 12.7501 15.1677 13.034 15.4417C13.3179 15.7157 13.4847 16.089 13.4995 16.4833C13.5068 16.6794 13.4749 16.875 13.4057 17.0586C13.3365 17.2423 13.2314 17.4102 13.0965 17.5527C12.9615 17.6952 12.7995 17.8093 12.6199 17.8884C12.4403 17.9674 12.2468 18.0099 12.0506 18.0132H12.0236C11.6291 18.0119 11.2505 17.8583 10.9667 17.5844C10.6829 17.3105 10.5159 16.9375 10.5007 16.5433ZM11.0007 12.5017V6.50215C11.0007 6.23695 11.106 5.98262 11.2935 5.7951C11.481 5.60758 11.7354 5.50223 12.0006 5.50223C12.2658 5.50223 12.5201 5.60758 12.7076 5.7951C12.8951 5.98262 13.0005 6.23695 13.0005 6.50215V12.5017C13.0005 12.7669 12.8951 13.0212 12.7076 13.2087C12.5201 13.3962 12.2658 13.5016 12.0006 13.5016C11.7354 13.5016 11.481 13.3962 11.2935 13.2087C11.106 13.0212 11.0007 12.7669 11.0007 12.5017Z', +}); + +export const WarningTwoIcon = createIcon({ + viewBox: '0 0 24 24', + path: ( + + + + ), +}); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/WarningOutline.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/WarningOutline.tsx new file mode 100644 index 0000000000..5e5a96de7a --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/WarningOutline.tsx @@ -0,0 +1,7 @@ +import { createIcon } from '@gluestack-ui/icon'; +import Root from '../styled-components/Root'; +export const WarningOutlineIcon = createIcon({ + Root, + viewBox: '0 0 16 16', + d: 'M8 16C6.41775 16 4.87103 15.5308 3.55544 14.6518C2.23985 13.7727 1.21447 12.5233 0.608967 11.0615C0.00346627 9.59966 -0.15496 7.99113 0.153721 6.43928C0.462403 4.88743 1.22433 3.46197 2.34315 2.34315C3.46197 1.22433 4.88743 0.462403 6.43928 0.153721C7.99113 -0.15496 9.59966 0.00346627 11.0615 0.608967C12.5233 1.21447 13.7727 2.23985 14.6518 3.55544C15.5308 4.87103 16 6.41775 16 8C16 10.1217 15.1571 12.1566 13.6569 13.6569C12.1566 15.1571 10.1217 16 8 16ZM8 14.4C9.2658 14.4 10.5032 14.0246 11.5556 13.3214C12.6081 12.6182 13.4284 11.6186 13.9128 10.4492C14.3972 9.27973 14.524 7.9929 14.277 6.75142C14.0301 5.50995 13.4205 4.36958 12.5255 3.47452C11.6304 2.57946 10.4901 1.96992 9.24858 1.72298C8.0071 1.47603 6.72028 1.60277 5.55083 2.08717C4.38138 2.57158 3.38184 3.39188 2.6786 4.44435C1.97536 5.49683 1.6 6.7342 1.6 8C1.6 9.69739 2.27429 11.3253 3.47452 12.5255C4.67475 13.7257 6.30262 14.4 8 14.4ZM7.2 10.4H8.8V12H7.2V10.4ZM7.2 4H8.8V8.8H7.2V4Z', +}); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/WeatherMoon.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/WeatherMoon.tsx new file mode 100644 index 0000000000..c8101bad1d --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/WeatherMoon.tsx @@ -0,0 +1,12 @@ +import { createIcon } from '@gluestack-ui/icon'; +import Root from '../styled-components/Root'; + +const WeatherMoon = createIcon({ + Root, + viewBox: '0 0 24 24', + d: 'M20.0258 17.0012C17.2639 21.7848 11.1471 23.4238 6.3634 20.662C5.06068 19.9099 3.964 18.8924 3.12872 17.6794C2.84945 17.2739 3.0301 16.7138 3.49369 16.5479C7.26112 15.1995 9.27892 13.6369 10.4498 11.4018C11.6825 9.04884 12.001 6.47137 11.1387 2.93837C11.0195 2.44984 11.4053 1.98467 11.9075 2.01161C13.4645 2.09515 14.9856 2.54239 16.3649 3.33878C21.1486 6.10064 22.7876 12.2175 20.0258 17.0012ZM11.7785 12.0979C10.5272 14.4865 8.46706 16.1969 4.96104 17.5968C5.56929 18.2926 6.29275 18.8891 7.1134 19.3629C11.1796 21.7106 16.3791 20.3174 18.7267 16.2512C21.0744 12.1849 19.6812 6.98546 15.6149 4.63782C14.7379 4.13146 13.7951 3.79144 12.8228 3.62229C13.4699 7.00628 13.0525 9.66598 11.7785 12.0979Z', +}); + +WeatherMoon.displayName = 'WeatherMoon'; + +export { WeatherMoon }; diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/WindowHeader.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/WindowHeader.tsx new file mode 100644 index 0000000000..2cbbb08ec0 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/WindowHeader.tsx @@ -0,0 +1,12 @@ +import { createIcon } from '@gluestack-ui/icon'; +import Root from '../styled-components/Root'; + +const WindowHeaderIcon = createIcon({ + Root, + viewBox: '0 0 16 16', + d: 'M3.5 1C2.11929 1 1 2.11929 1 3.5V12.5C1 13.8807 2.11929 15 3.5 15H12.5C13.8807 15 15 13.8807 15 12.5V3.5C15 2.11929 13.8807 1 12.5 1H3.5ZM5 2H12.5C13.3284 2 14 2.67157 14 3.5V12.5C14 13.3284 13.3284 14 12.5 14H5V2Z', +}); + +WindowHeaderIcon.displayName = 'WindowHeaderIcon'; + +export { WindowHeaderIcon }; diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/index.tsx new file mode 100644 index 0000000000..0a02ca1835 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/index.tsx @@ -0,0 +1,45 @@ +export * from './Add'; +export * from './Arrow'; +export * from './Check'; +export * from './Chevron'; +export * from './Circle'; +export * from './Close'; +export * from './Hamburger'; +export * from './Info'; +export * from './Minus'; +export * from './Moon'; +export * from './Question'; +export * from './Search'; +export * from './Sun'; +export * from './Warning'; +export * from './WarningOutline'; +export * from './ThreeDots'; +export * from './Share'; +export * from './Play'; +export * from './Delete'; +export * from './Favourite'; +export * from './Copy'; +export * from './Open'; +export * from './Download'; +export * from './Earth'; +export * from './Options'; +export * from './ColorPalette'; +export * from './Grid'; +export * from './Dismiss'; +export * from './Social'; +export * from './Ticket'; +export * from './CodeBlock'; +export * from './DarkTheme'; +export * from './Globe'; +export * from './WindowHeader'; +export * from './ColorLine'; +export * from './Resize'; +export * from './NavigationUnread'; +export * from './ScaleFill'; +export * from './TypeScript'; +export * from './Responsive'; +export * from './Quick'; +export * from './Gentle'; +export * from './Bounce'; +export { WeatherMoon } from './WeatherMoon'; +export { ExpoIcon } from './Expo'; diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/questionIconPath.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/questionIconPath.tsx new file mode 100644 index 0000000000..7915c3eaad --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/Icons/questionIconPath.tsx @@ -0,0 +1,9 @@ +import React from 'react'; +import { G, Path } from 'react-native-svg'; + +export const questionOutlineIconPath = ( + + + + +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/index.tsx new file mode 100644 index 0000000000..edbc79c2ec --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/index.tsx @@ -0,0 +1,20 @@ +import React from 'react'; +import { createIcon } from '@gluestack-ui/icon'; +import { Circle } from 'react-native-svg'; +import Root from './styled-components/Root'; + +export const Icon = createIcon({ + Root, + viewBox: '0 0 36 36', + // d: 'M 100, 100 m -75, 0 a 75,75 0 1,0 150,0 a 75,75 0 1,0 -150,0', + path: [ + , + , + , + , + ], +}); + +export { CheckIcon } from './Icons/Check'; +export { InfoOutlineIcon, InfoIcon } from './Icons/Info'; +export * from './Icons'; diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/styled-components/Root.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/styled-components/Root.tsx new file mode 100644 index 0000000000..f32f56c119 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Icon/styled-components/Root.tsx @@ -0,0 +1,29 @@ +import { styled } from '@gluestack-style/react'; +import { Svg } from 'react-native-svg'; + +export default styled( + Svg, + { + w: 20, + h: 20, + + variants: { + variant: { + modalHeader: { + // @ts-ignore + color: '$muted500', + h: 16, + w: 16, + }, + }, + }, + + _dark: { + // @ts-ignore + color: '$muted50', + }, + }, + { + ancestorStyle: ['_icon'], + } +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Image/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Image/index.tsx new file mode 100644 index 0000000000..a4ebedca19 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Image/index.tsx @@ -0,0 +1,3 @@ +import Root from './styled-components/Root'; + +export const Image = Root; diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Image/styled-components/FallbackText.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Image/styled-components/FallbackText.tsx new file mode 100644 index 0000000000..138fde4d2c --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Image/styled-components/FallbackText.tsx @@ -0,0 +1,12 @@ +import { Text } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled( + Text, + { + color: '$blue900', + bg: '$amber500', + p: 10, + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Image/styled-components/Root.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Image/styled-components/Root.tsx new file mode 100644 index 0000000000..29028dd90a --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Image/styled-components/Root.tsx @@ -0,0 +1,69 @@ +import { Image } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +// const sizes = { +// '2xs': { +// style: { +// w: '$6', +// h: '$6', +// }, +// }, +// 'xs': '10', +// 'sm': '16', +// 'md': '20', +// 'lg': '24', +// 'xl': '32', +// '2xl': '64', +// 'full': '100%', +// }; +export default styled( + Image, + { + maxWidth: '100%', + + variants: { + size: { + '2xs': { + w: '$6', + h: '$6', + }, + + 'xs': { + w: '$10', + h: '$10', + }, + + 'sm': { + w: '$16', + h: '$16', + }, + + 'md': { + w: '$20', + h: '$20', + }, + + 'lg': { + w: '$24', + h: '$24', + }, + + 'xl': { + w: '$32', + h: '$32', + }, + + '2xl': { + w: '$64', + h: '$64', + }, + + 'full': { + w: '100%', + h: '100%', + }, + }, + }, + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Input/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Input/index.tsx new file mode 100644 index 0000000000..68d6cb0fb9 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Input/index.tsx @@ -0,0 +1,10 @@ +import StyledInput from './styled-components/Input'; +import Icon from './styled-components/Icon'; +import Root from './styled-components/Root'; +import { createInput } from '@gluestack-ui/input'; + +export const Input = createInput({ + Root, + Icon, + Input: StyledInput, +}); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Input/styled-components/Icon.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Input/styled-components/Icon.tsx new file mode 100644 index 0000000000..6d4bd40386 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Input/styled-components/Icon.tsx @@ -0,0 +1,10 @@ +import { styled } from '@gluestack-style/react'; +import { View } from 'react-native'; + +export default styled( + View, + { + bg: '$secondary100', + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Input/styled-components/Input.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Input/styled-components/Input.tsx new file mode 100644 index 0000000000..c17eba47b2 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Input/styled-components/Input.tsx @@ -0,0 +1,17 @@ +import { styled } from '@gluestack-style/react'; +import { TextInput } from 'react-native'; + +export default styled( + TextInput, + { + px: '$4', + py: '$3', + color: '$darkText', + fontSize: 16, + + _dark: { + color: '$lightText', + }, + }, + { ancestorStyle: ['_input'], resolveProps: ['placeholderTextColor'] } +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Input/styled-components/Root.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Input/styled-components/Root.tsx new file mode 100644 index 0000000000..9127b2dea5 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Input/styled-components/Root.tsx @@ -0,0 +1,154 @@ +import { styled } from '@gluestack-style/react'; +import { View } from 'react-native'; + +export default styled( + View, + { + 'borderWidth': 1, + 'borderColor': '$borderLight300', + 'borderRadius': 4, + + '_dark': { + borderColor: '$borderDark700', + }, + + '_input': { + _dark: { + color: '$lightText', + }, + }, + + 'variants': { + variant: { + rounded: { + borderRadius: 999, + + _input: { + borderRadius: 999, + }, + }, + + filled: { + borderWidth: 1, + bg: '$muted100', + borderColor: '$muted100', + + _dark: { + bg: '$muted800', + borderColor: '$muted800', + }, + }, + + underlined: { + 'borderWidth': 0, + 'borderRadius': 0, + 'pl': 0, + 'borderBottomWidth': 1, + + '_input': { + outlineWidth: 0, + }, + + ':focus': { + borderColor: '$primary600', + _web: { + boxShadow: '0 1px 0 0 #005DB4', + }, + }, + }, + + unstyled: { + 'borderWidth': 0, + + '_input': { + outlineWidth: 0, + }, + + ':focus': { + _web: { + boxShadow: '0 0 0 0', + }, + }, + }, + }, + + size: { + '2xl': { + _input: { + fontSize: 22, + }, + }, + + 'xl': { + _input: { + fontSize: 20, + }, + }, + + 'lg': { + _input: { + fontSize: 18, + }, + }, + + 'md': { + _input: { + fontSize: 16, + }, + }, + + 'sm': { + _input: { + fontSize: 14, + }, + }, + + 'xs': { + _input: { + fontSize: 12, + }, + }, + }, + }, + + '_web': { + _input: { + outlineWidth: '0', + outline: 'none', + cursor: 'auto', + }, + }, + + ':hover': { + borderColor: '$primary600', + }, + + ':focus': { + borderColor: '$primary600', + bg: 'transparent', + _web: { + boxShadow: '0 0 0 1px #005DB4', + }, + _input: {}, + }, + + ':disabled': { + 'bg': '$muted100', + + ':hover': { + borderColor: '$muted300', + }, + }, + + ':invalid': { + 'borderColor': '$error600', + + ':focus': { + _input: { + outlineColor: '$error600', + }, + }, + }, + }, + { descendantStyle: ['_input'] } +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Link/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Link/index.tsx new file mode 100644 index 0000000000..63cf9e3d21 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Link/index.tsx @@ -0,0 +1,7 @@ +import { Root, Text } from './styled-components'; +import { createLink } from '@gluestack-ui/link'; + +export const Link = createLink({ + Root, + Text, +}); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Link/styled-components/Root.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Link/styled-components/Root.tsx new file mode 100644 index 0000000000..a37b40892f --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Link/styled-components/Root.tsx @@ -0,0 +1,49 @@ +import { styled } from '@gluestack-style/react'; +import { Pressable } from 'react-native'; + +export default styled( + Pressable, + { + '_web': { + outlineWidth: 0, + }, + ':focusVisible': { + _web: { + outlineWidth: 2, + outlineColor: '$primary700', + outlineStyle: 'solid', + }, + }, + '_text': { + 'fontWeight': '$normal', + 'textDecorationLine': 'underline', + '_light': { + color: '$info700', + }, + ':hover': { + color: '$info600', + textDecorationLine: 'none', + }, + ':active': { + color: '$info700', + }, + ':disabled': { + opacity: 0.4, + }, + '_dark': { + 'color': '$info300', + ':hover': { + color: '$info400', + textDecorationLine: 'none', + }, + ':active': { + color: '$info300', + }, + }, + 'cursor': 'pointer', + }, + }, + { + descendantStyle: ['_text'], + } +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Link/styled-components/Text.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Link/styled-components/Text.tsx new file mode 100644 index 0000000000..cbba3801d9 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Link/styled-components/Text.tsx @@ -0,0 +1,90 @@ +import { Text } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled( + Text, + { + _light: { + color: '$textLight700', + }, + fontWeight: '$normal', + fontFamily: '$body', + fontStyle: 'normal', + fontSize: '$md', + letterSpacing: '$md', + lineHeight: '$md', + + variants: { + variant: { + modalHeader: { + fontSize: '$md', + fontWeight: '$semibold', + lineHeight: '$lg', + }, + }, + + size: { + 'xs': { + fontSize: '$xs', + lineHeight: '$sm', + }, + + 'sm': { + fontSize: '$sm', + lineHeight: '$sm', + }, + + 'md': { + fontSize: '$md', + lineHeight: '$md', + }, + + 'lg': { + fontSize: '$lg', + lineHeight: '$xl', + }, + + 'xl': { + fontSize: '$xl', + lineHeight: '$xl', + }, + + '2xl': { + fontSize: '$2xl', + lineHeight: '$2xl', + }, + + '3xl': { + fontSize: '$3xl', + lineHeight: '$3xl', + }, + + '4xl': { + fontSize: '$4xl', + lineHeight: '$4xl', + }, + + '5xl': { + fontSize: '$5xl', + lineHeight: '$6xl', + }, + + '6xl': { + fontSize: '$6xl', + lineHeight: '$7xl', + }, + }, + }, + + defaultProps: { + size: 'md', + }, + + _dark: { + color: '$textDark200', + }, + }, + { + ancestorStyle: ['_text'], + } +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Link/styled-components/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Link/styled-components/index.tsx new file mode 100644 index 0000000000..06f9fea762 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Link/styled-components/index.tsx @@ -0,0 +1,2 @@ +export { default as Root } from './Root'; +export { default as Text } from './Text'; diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Pressable/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Pressable/index.tsx new file mode 100644 index 0000000000..f8fce977f1 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Pressable/index.tsx @@ -0,0 +1,4 @@ +import Root from './styled-components/Root'; +import { createPressable } from '@gluestack-ui/pressable'; + +export const Pressable = createPressable({ Root }); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Pressable/styled-components/Root.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Pressable/styled-components/Root.tsx new file mode 100644 index 0000000000..c857533658 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Pressable/styled-components/Root.tsx @@ -0,0 +1,22 @@ +import { styled } from '@gluestack-style/react'; +import { Pressable } from 'react-native'; + +export default styled( + Pressable, + { + _web: { + outlineWidth: 0, + outline: 'none', + + // ':focus': { + // outlineWidth: 0, + // boxShadow: '#c084fc 0px 0px 0px 2px', + + // _dark: { + // boxShadow: '#a855f7 0px 0px 0px 2px', + // }, + // }, + }, + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Radio/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Radio/index.tsx new file mode 100644 index 0000000000..1391d6dd37 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Radio/index.tsx @@ -0,0 +1,14 @@ +import Root from './styled-components/Root'; +import Group from './styled-components/Group'; +import Icon from './styled-components/Icon'; +import Indicator from './styled-components/Indicator'; +import Label from './styled-components/Label'; +import { createRadio } from '@gluestack-ui/radio'; + +export const Radio = createRadio({ + Root, + Group, + Icon, + Indicator, + Label, +}); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Radio/styled-components/Group.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Radio/styled-components/Group.tsx new file mode 100644 index 0000000000..ed8dcb8cc7 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Radio/styled-components/Group.tsx @@ -0,0 +1,4 @@ +import { styled } from '@gluestack-style/react'; +import { View } from 'react-native'; + +export default styled(View, {}, {}); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Radio/styled-components/Icon.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Radio/styled-components/Icon.tsx new file mode 100644 index 0000000000..19dc94045a --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Radio/styled-components/Icon.tsx @@ -0,0 +1,38 @@ +import { View } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled( + View, + { + 'alignItems': 'center', + 'color': '$primary600', + + '_dark': { + // @ts-ignore + color: '$primary400', + }, + + ':disabled': { + opacity: 0.6, + // @ts-ignore + color: 'transparent', + }, + + ':checked': { + 'color': '$primary600', + + ':hover': { + // @ts-ignore + color: '$primary700', + }, + + ':disabled': { + // @ts-ignore + color: '$primary600', + }, + }, + }, + { + ancestorStyle: ['_icon'], + } +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Radio/styled-components/Indicator.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Radio/styled-components/Indicator.tsx new file mode 100644 index 0000000000..c7de00e551 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Radio/styled-components/Indicator.tsx @@ -0,0 +1,103 @@ +import { View } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled( + View, + { + 'justifyContent': 'center', + 'alignItems': 'center', + 'bg': 'transparent', + 'borderColor': '$muted400', + 'ml': '$2', + 'borderWidth': 2, + 'borderRadius': 999, + + '_web': { + ':focusVisible': { + outlineWidth: '2px', + outlineColor: '$primary400', + outlineStyle: 'solid', + }, + }, + + ':hover': { + 'borderColor': '$muted500', + + ':disabled': { + borderColor: '$muted400', + }, + + ':checked': { + borderColor: '$primary600', + }, + }, + + ':disabled': { + opacity: 0.6, + }, + + ':invalid': { + borderColor: '$error600', + }, + + ':checked': { + 'borderColor': '$primary600', + + ':hover': { + 'borderColor': '$primary700', + + ':disabled': { + borderColor: '$primary600', + }, + }, + + ':disabled': { + borderColor: '$primary600', + }, + }, + + '_dark': { + 'borderColor': '$muted500', + 'bg': '$muted.900', + + ':hover': { + 'borderColor': '$muted400', + + ':disabled': { + borderColor: '$muted500', + }, + + ':checked': { + borderColor: '$primary600', + }, + }, + + ':disabled': { + opacity: 0.6, + }, + + ':invalid': { + borderColor: '$error500', + }, + + ':checked': { + 'borderColor': '$primary600', + + ':hover': { + 'borderColor': '$primary700', + + ':disabled': { + borderColor: '$primary600', + }, + }, + + ':disabled': { + borderColor: '$primary600', + }, + }, + }, + }, + { + ancestorStyle: ['_indicator'], + } +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Radio/styled-components/Label.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Radio/styled-components/Label.tsx new file mode 100644 index 0000000000..ba1c919b8d --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Radio/styled-components/Label.tsx @@ -0,0 +1,17 @@ +import { Text } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled( + Text, + { + color: '$text900', + ml: '$2', + + _dark: { + color: '$text50', + }, + }, + { + ancestorStyle: ['_text'], + } +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Radio/styled-components/Root.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Radio/styled-components/Root.tsx new file mode 100644 index 0000000000..f21afa212b --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Radio/styled-components/Root.tsx @@ -0,0 +1,75 @@ +import { Pressable } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled( + Pressable, + { + p: '$2', + flexDirection: 'row', + justifyContent: 'center', + alignItems: 'center', + + _icon: { + color: '$primary600', + }, + + variants: { + size: { + lg: { + _icon: { + height: '$4', + width: '$4', + }, + + _text: { + fontSize: '$lg', + }, + + _indicator: { + h: '$6', + w: '$6', + }, + }, + + md: { + _icon: { + height: '$3', + width: '$3', + }, + + _text: { + fontSize: '$md', + }, + + _indicator: { + h: '$5', + w: '$5', + }, + }, + + sm: { + _icon: { + height: '$2', + width: '$2', + }, + + _text: { + fontSize: '$sm', + }, + + _indicator: { + h: '$4', + w: '$4', + }, + }, + }, + }, + + defaultProps: { + size: 'md', + }, + }, + { + descendantStyle: ['_icon', '_text', '_indicator'], + } +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Radio/styled-components/Root.web.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Radio/styled-components/Root.web.tsx new file mode 100644 index 0000000000..b0ffd1a03d --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Radio/styled-components/Root.web.tsx @@ -0,0 +1,77 @@ +import { View } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled( + View, + { + p: '$1', + flexDirection: 'row', + justifyContent: 'flex-start', + alignItems: 'flex-start', + + variants: { + size: { + lg: { + _icon: { + height: '$4', + width: '$4', + }, + + _text: { + fontSize: '$lg', + }, + + _indicator: { + h: '$6', + w: '$6', + }, + }, + + md: { + _icon: { + height: '$3', + width: '$3', + }, + + _text: { + fontSize: '$md', + }, + + _indicator: { + h: '$5', + w: '$5', + }, + }, + + sm: { + _icon: { + height: '$2', + width: '$2', + }, + + _text: { + fontSize: '$sm', + }, + + _indicator: { + h: '$4', + w: '$4', + }, + }, + }, + }, + + defaultProps: { + size: 'md', + }, + + _web: { + ':disabled': { + cursor: 'not-allowed', + }, + }, + }, + { + descendantStyle: ['_icon', '_text', '_indicator'], + } +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Select/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Select/index.tsx new file mode 100644 index 0000000000..2f3c131248 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Select/index.tsx @@ -0,0 +1,66 @@ +import { createSelect } from '@gluestack-ui/select'; +import { createActionsheet } from '@gluestack-ui/actionsheet'; + +import { + Root, + Content, + Item, + ItemText, + DragIndicator, + IndicatorWrapper, + Backdrop, + Icon, + FlatList, + ScrollView, + SectionHeaderText, + SectionList, + VirtualizedList, +} from './styled-components-actionsheet'; + +import { + Root as StyledSelectRoot, + Trigger as StyledSelectTrigger, + Input as StyledSelectInput, + Icon as StyledSelectIcon, +} from './styled-components'; +import { AnimatePresence } from '@gluestack-style/animation-resolver'; + +export const Actionsheet = createActionsheet({ + Root, + Backdrop, + Content, + DragIndicator, + IndicatorWrapper, + Item, + ItemText, + Icon, + ScrollView, + VirtualizedList, + FlatList, + SectionList, + SectionHeaderText, + AnimatePresence: AnimatePresence, +}); + +export const Select = createSelect( + { + Root: StyledSelectRoot, + Trigger: StyledSelectTrigger, + Input: StyledSelectInput, + Icon: StyledSelectIcon, + }, + { + Portal: Actionsheet, + Backdrop: Actionsheet.Backdrop, + Content: Actionsheet.Content, + DragIndicator: Actionsheet.DragIndicator, + DragIndicatorWrapper: Actionsheet.DragIndicatorWrapper, + Item: Actionsheet.Item, + ItemText: Actionsheet.ItemText, + ScrollView: Actionsheet.ScrollView, + VirtualizedList: Actionsheet.VirtualizedList, + FlatList: Actionsheet.FlatList, + SectionList: Actionsheet.SectionList, + SectionHeaderText: Actionsheet.SectionHeaderText, + } +) as any; diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Select/styled-components-actionsheet/Backdrop.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Select/styled-components-actionsheet/Backdrop.tsx new file mode 100644 index 0000000000..c3413bb703 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Select/styled-components-actionsheet/Backdrop.tsx @@ -0,0 +1,31 @@ +import { createMotionAnimatedComponent } from '@legendapp/motion'; +import { Pressable } from 'react-native'; +import { styled } from '../../../styled'; + +const MotionPressable = createMotionAnimatedComponent(Pressable); + +export default styled( + MotionPressable, + { + //@ts-ignore + ':initial': { + opacity: 0, + }, + ':animate': { + opacity: 0.3, + }, + ':exit': { + opacity: 0, + }, + 'position': 'absolute', + 'left': 0, + 'top': 0, + 'right': 0, + 'bottom': 0, + 'bg': '$backgroundLight800', + '_dark': { + bg: '$backgroundDark800', + }, + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Select/styled-components-actionsheet/Content.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Select/styled-components-actionsheet/Content.tsx new file mode 100644 index 0000000000..7c9e460eea --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Select/styled-components-actionsheet/Content.tsx @@ -0,0 +1,31 @@ +import { AnimatedView } from '@gluestack-style/animation-resolver'; + +import { styled } from '../../../styled'; + +export default styled( + AnimatedView, + { + alignItems: 'center', + rounded: 0, + borderTopLeftRadius: '$2xl', + borderTopRightRadius: '$2xl', + bg: '$backgroundLight0', + _sectionHeaderBackground: { + bg: '$backgroundLight0', + }, + maxHeight: '80%', + px: '$2', + _dark: { + bg: '$backgroundDark900', + _sectionHeaderBackground: { + bg: '$backgroundDark900', + }, + }, + _web: { + userSelect: 'none', + }, + }, + { + descendantStyle: ['_sectionHeaderBackground'], + } +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Select/styled-components-actionsheet/DragIndicator.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Select/styled-components-actionsheet/DragIndicator.tsx new file mode 100644 index 0000000000..bdd55bce3f --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Select/styled-components-actionsheet/DragIndicator.tsx @@ -0,0 +1,16 @@ +import { styled } from '../../../styled'; +import { View } from 'react-native'; + +export default styled( + View, + { + height: '$1', + width: '$12', + bg: '$backgroundLight400', + rounded: '$full', + _dark: { + bg: '$backgroundDark500', + }, + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Select/styled-components-actionsheet/FlatList.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Select/styled-components-actionsheet/FlatList.tsx new file mode 100644 index 0000000000..d4c039701f --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Select/styled-components-actionsheet/FlatList.tsx @@ -0,0 +1,11 @@ +import { FlatList } from 'react-native'; +import { styled } from '../../../styled'; + +export default styled( + FlatList, + { + w: '$full', + h: 'auto', + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Select/styled-components-actionsheet/Icon.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Select/styled-components-actionsheet/Icon.tsx new file mode 100644 index 0000000000..5e1bcf6eb6 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Select/styled-components-actionsheet/Icon.tsx @@ -0,0 +1,20 @@ +import { styled } from '../../../styled'; +import { View } from 'react-native'; + +export default styled( + View, + { + w: 16, + h: 16, + mx: '$2', + _icon: { + color: '$textLight900', + _dark: { + color: '$textDark50', + }, + }, + }, + { + descendantStyle: ['_icon'], + } +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Select/styled-components-actionsheet/IndicatorWrapper.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Select/styled-components-actionsheet/IndicatorWrapper.tsx new file mode 100644 index 0000000000..e5f198e8d0 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Select/styled-components-actionsheet/IndicatorWrapper.tsx @@ -0,0 +1,13 @@ +import { View } from 'react-native'; +import { styled } from '../../../styled'; + +export default styled( + View, + { + py: '$3', + mt: -4, + w: '100%', + alignItems: 'center', + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Select/styled-components-actionsheet/Item.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Select/styled-components-actionsheet/Item.tsx new file mode 100644 index 0000000000..1fa13fff81 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Select/styled-components-actionsheet/Item.tsx @@ -0,0 +1,56 @@ +import { styled } from '../../../styled'; +import { Pressable } from 'react-native'; + +export default styled( + Pressable, + { + 'py': '$3', + 'px': '$1', + 'flexDirection': 'row', + 'alignItems': 'center', + 'rounded': '$sm', + 'w': '100%', + + ':disabled': { + opacity: 0.4, + }, + + ':hover': { + bg: '$backgroundLight50', + }, + + ':active': { + bg: '$backgroundLight100', + }, + + ':focus': { + bg: '$backgroundLight100', + }, + + '_dark': { + ':hover': { + bg: '$backgroundDark800', + }, + + ':active': { + bg: '$backgroundDark700', + }, + + ':focus': { + bg: '$backgroundDark700', + }, + }, + + '_web': { + ':focusVisible': { + bg: '$backgroundLight100', + _dark: { + bg: '$backgroundDark700', + }, + }, + }, + }, + { + descendantStyle: ['_text'], + } +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Select/styled-components-actionsheet/ItemText.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Select/styled-components-actionsheet/ItemText.tsx new file mode 100644 index 0000000000..7c265769f7 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Select/styled-components-actionsheet/ItemText.tsx @@ -0,0 +1,16 @@ +import { Text } from 'react-native'; +import { styled } from '../../../styled'; + +export default styled( + Text, + { + mx: '$2', + fontSize: '$md', + fontWeight: '$normal', + color: '$textLight800', + _dark: { + color: '$textDark100', + }, + }, + { ancestorStyle: ['_text'] } +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Select/styled-components-actionsheet/Root.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Select/styled-components-actionsheet/Root.tsx new file mode 100644 index 0000000000..695638ca75 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Select/styled-components-actionsheet/Root.tsx @@ -0,0 +1,13 @@ +import { View } from 'react-native'; +import { styled } from '../../../styled'; + +export default styled( + View, + { + width: '100%', + height: '100%', + justifyContent: 'flex-end', + alignItems: 'center', + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Select/styled-components-actionsheet/ScrollView.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Select/styled-components-actionsheet/ScrollView.tsx new file mode 100644 index 0000000000..e5a17c671e --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Select/styled-components-actionsheet/ScrollView.tsx @@ -0,0 +1,11 @@ +import { ScrollView } from 'react-native'; +import { styled } from '../../../styled'; + +export default styled( + ScrollView, + { + w: '$full', + h: 'auto', + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Select/styled-components-actionsheet/SectionHeaderText.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Select/styled-components-actionsheet/SectionHeaderText.tsx new file mode 100644 index 0000000000..b723598649 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Select/styled-components-actionsheet/SectionHeaderText.tsx @@ -0,0 +1,19 @@ +import { Text } from 'react-native'; +import { styled } from '../../../styled'; + +export default styled( + Text, + { + color: '$textLight500', + fontSize: '$sm', + fontWeight: '$bold', + textTransform: 'uppercase', + p: '$3', + _dark: { + color: '$textDark400', + }, + }, + { + ancestorStyle: ['_sectionHeaderBackground'], + } +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Select/styled-components-actionsheet/SectionList.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Select/styled-components-actionsheet/SectionList.tsx new file mode 100644 index 0000000000..e6124ed0c6 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Select/styled-components-actionsheet/SectionList.tsx @@ -0,0 +1,11 @@ +import { SectionList } from 'react-native'; +import { styled } from '../../../styled'; + +export default styled( + SectionList, + { + w: '$full', + h: 'auto', + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Select/styled-components-actionsheet/VirtualizedList.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Select/styled-components-actionsheet/VirtualizedList.tsx new file mode 100644 index 0000000000..5f81368506 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Select/styled-components-actionsheet/VirtualizedList.tsx @@ -0,0 +1,11 @@ +import { VirtualizedList } from 'react-native'; +import { styled } from '../../../styled'; + +export default styled( + VirtualizedList, + { + w: '$full', + h: 'auto', + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Select/styled-components-actionsheet/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Select/styled-components-actionsheet/index.tsx new file mode 100644 index 0000000000..68d4cca05e --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Select/styled-components-actionsheet/index.tsx @@ -0,0 +1,13 @@ +export { default as Root } from './Root'; +export { default as Content } from './Content'; +export { default as Item } from './Item'; +export { default as ItemText } from './ItemText'; +export { default as DragIndicator } from './DragIndicator'; +export { default as IndicatorWrapper } from './IndicatorWrapper'; +export { default as Backdrop } from './Backdrop'; +export { default as ScrollView } from './ScrollView'; +export { default as VirtualizedList } from './VirtualizedList'; +export { default as FlatList } from './FlatList'; +export { default as SectionList } from './SectionList'; +export { default as Icon } from './Icon'; +export { default as SectionHeaderText } from './SectionHeaderText'; diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Select/styled-components/Icon.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Select/styled-components/Icon.tsx new file mode 100644 index 0000000000..fe4a6ea893 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Select/styled-components/Icon.tsx @@ -0,0 +1,13 @@ +import { styled } from '../../../styled'; +import { Pressable } from 'react-native'; +export default styled( + Pressable, + { + justifyContent: 'center', + alignItems: 'center', + _icon: { + color: '$borderLight500', + }, + }, + { descendantStyle: ['_icon'] } +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Select/styled-components/Input.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Select/styled-components/Input.tsx new file mode 100644 index 0000000000..1a069de4c6 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Select/styled-components/Input.tsx @@ -0,0 +1,25 @@ +import { styled } from '../../../styled'; +import { TextInput } from 'react-native'; + +export default styled( + TextInput, + { + flex: 1, + color: '$textLight900', + props: { + placeholderTextColor: '$textLight400', + }, + _dark: { + color: '$textDark50', + props: { + placeholderTextColor: '$textDark600', + }, + }, + }, + { ancestorStyle: ['_input'], resolveProps: ['placeholderTextColor'] }, + { + propertyTokenMap: { + placeholderTextColor: 'colors', + }, + } +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Select/styled-components/Root.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Select/styled-components/Root.tsx new file mode 100644 index 0000000000..dc242baf50 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Select/styled-components/Root.tsx @@ -0,0 +1,4 @@ +import { styled } from '../../../styled'; +import { View } from 'react-native'; + +export default styled(View, {}, {}); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Select/styled-components/Trigger.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Select/styled-components/Trigger.tsx new file mode 100644 index 0000000000..71024f0e81 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Select/styled-components/Trigger.tsx @@ -0,0 +1,318 @@ +import { styled } from '../../../styled'; +import { Pressable } from 'react-native'; +export default styled( + Pressable, + { + 'borderWidth': 1, + 'borderColor': '$backgroundLight300', + 'borderRadius': '$sm', + 'minWidth': 200, + 'flexDirection': 'row', + 'overflow': 'hidden', + 'alignContent': 'center', + '_input': { + px: '$3', + }, + ':hover': { + borderColor: '$primary700', + }, + + ':focus': { + borderColor: '$primary700', + }, + + ':disabled': { + 'opacity': 0.4, + ':hover': { + borderColor: '$backgroundLight300', + }, + }, + + '_dark': { + 'borderColor': '$borderDark700', + ':hover': { + borderColor: '$primary400', + }, + ':focus': { + borderColor: '$primary400', + }, + ':disabled': { + ':hover': { + borderColor: '$borderDark700', + }, + }, + }, + + 'variants': { + size: { + xl: { + _input: { + fontSize: '$xl', + py: 14, + }, + _icon: { + color: '$textLight400', + h: 18, + w: 18, + }, + }, + lg: { + _input: { + fontSize: '$lg', + py: 12, + }, + _icon: { + color: '$textLight400', + h: 16, + w: 16, + }, + }, + md: { + _input: { + fontSize: '$md', + py: 10, + }, + _icon: { + color: '$textLight400', + h: 14, + w: 14, + }, + }, + sm: { + _input: { + fontSize: '$sm', + py: 8, + }, + _icon: { + color: '$textLight400', + h: 12, + w: 12, + }, + }, + }, + + variant: { + underlined: { + '_input': { + _web: { + outlineWidth: 0, + outline: 'none', + }, + px: '$0', + }, + 'borderWidth': 0, + 'borderRadius': 0, + 'borderBottomWidth': '$1', + ':hover': { + borderBottomColor: '$primary700', + }, + ':focus': { + borderColor: '$primary700', + _web: { + boxShadow: 'inset 0 -1px 0 0 $primary700', + }, + }, + ':invalid': { + ':focus': { + ':hover': { + borderBottomColor: '$primary700', + }, + }, + ':hover': { + borderBottomColor: '$error600', + }, + ':disabled': { + ':hover': { + borderBottomColor: '$error600', + }, + }, + 'borderBottomWidth': '$1', + 'borderColor': '$error600', + '_web': { + boxShadow: 'inset 0 -1px 0 0 $error600', + }, + }, + '_dark': { + ':hover': { + borderBottomColor: '$primary400', + }, + ':focus': { + borderColor: '$primary400', + _web: { + boxShadow: 'inset 0 -1px 0 0 $primary400', + }, + }, + ':invalid': { + ':focus': { + ':hover': { + borderBottomColor: '$primary400', + }, + }, + ':hover': { + borderBottomColor: '$error400', + }, + ':disabled': { + ':hover': { + borderBottomColor: '$error400', + }, + }, + 'borderColor': '$error400', + '_web': { + boxShadow: 'inset 0 -1px 0 0 $error400', + }, + }, + }, + }, + outline: { + '_input': { + _web: { + outlineWidth: 0, + outline: 'none', + }, + }, + ':invalid': { + ':disabled': { + ':hover': { + borderColor: '$error600', + _web: { + boxShadow: 'inset 0 0 0 1px $error600', + }, + }, + }, + ':focus': { + ':hover': { + borderColor: '$primary600', + _web: { + boxShadow: 'inset 0 0 0 1px $primary600', + }, + }, + }, + ':hover': { + borderColor: '$error600', + }, + 'borderColor': '$error600', + '_web': { + boxShadow: 'inset 0 0 0 1px $error600', + }, + }, + ':focus': { + _web: { + boxShadow: 'inset 0 0 0 1px $primary700', + }, + }, + '_dark': { + ':invalid': { + ':disabled': { + ':hover': { + borderColor: '$error400', + _web: { + boxShadow: 'inset 0 0 0 1px $error400', + }, + }, + }, + ':focus': { + ':hover': { + borderColor: '$primary400', + _web: { + boxShadow: 'inset 0 0 0 1px $primary400', + }, + }, + }, + ':hover': { + borderColor: '$error400', + }, + 'borderColor': '$error400', + '_web': { + boxShadow: 'inset 0 0 0 1px $error400', + }, + }, + ':focus': { + _web: { + boxShadow: 'inset 0 0 0 1px $primary400', + }, + }, + }, + }, + rounded: { + 'borderRadius': 999, + '_input': { + px: '$4', + _web: { + outlineWidth: 0, + outline: 'none', + }, + }, + ':invalid': { + ':disabled': { + ':hover': { + borderColor: '$error600', + _web: { + boxShadow: 'inset 0 0 0 1px $error600', + }, + }, + }, + ':focus': { + ':hover': { + borderColor: '$primary600', + _web: { + boxShadow: 'inset 0 0 0 1px $primary600', + }, + }, + }, + ':hover': { + borderColor: '$error600', + }, + 'borderColor': '$error600', + '_web': { + boxShadow: 'inset 0 0 0 1px $error600', + }, + }, + ':focus': { + _web: { + boxShadow: 'inset 0 0 0 1px $primary700', + }, + }, + '_dark': { + ':invalid': { + ':disabled': { + ':hover': { + borderColor: '$error400', + _web: { + boxShadow: 'inset 0 0 0 1px $error400', + }, + }, + }, + ':focus': { + ':hover': { + borderColor: '$primary400', + _web: { + boxShadow: 'inset 0 0 0 1px $primary400', + }, + }, + }, + ':hover': { + borderColor: '$error400', + }, + 'borderColor': '$error400', + '_web': { + boxShadow: 'inset 0 0 0 1px $error400', + }, + }, + ':focus': { + _web: { + boxShadow: 'inset 0 0 0 1px $primary400', + }, + }, + }, + }, + }, + }, + + 'defaultProps': { + size: 'md', + variant: 'outline', + }, + }, + + { descendantStyle: ['_input', '_icon'] } +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Select/styled-components/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Select/styled-components/index.tsx new file mode 100644 index 0000000000..e96b62297a --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Select/styled-components/index.tsx @@ -0,0 +1,4 @@ +export { default as Root } from './Root'; +export { default as Icon } from './Icon'; +export { default as Trigger } from './Trigger'; +export { default as Input } from './Input'; diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Slider/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Slider/index.tsx new file mode 100644 index 0000000000..d6ee08a902 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Slider/index.tsx @@ -0,0 +1,14 @@ +import Root from './styled-components/Root'; +import Thumb from './styled-components/Thumb'; +import Track from './styled-components/Track'; +import FilledTrack from './styled-components/FilledTrack'; +import ThumbInteraction from './styled-components/ThumbInteraction'; +import { createSlider } from '@gluestack-ui/slider'; + +export const Slider = createSlider({ + Root, + Thumb, + Track, + FilledTrack, + ThumbInteraction, +}); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Slider/styled-components/FilledTrack.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Slider/styled-components/FilledTrack.tsx new file mode 100644 index 0000000000..038d6b2a28 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Slider/styled-components/FilledTrack.tsx @@ -0,0 +1,15 @@ +import { styled } from '@gluestack-style/react'; +import { View } from 'react-native'; + +export default styled( + View, + { + bg: '$primary600', + h: '100%', + + _dark: { + bg: '$primary500', + }, + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Slider/styled-components/Root.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Slider/styled-components/Root.tsx new file mode 100644 index 0000000000..7255014963 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Slider/styled-components/Root.tsx @@ -0,0 +1,24 @@ +import { styled } from '@gluestack-style/react'; +import { View } from 'react-native'; + +export default styled( + View, + { + 'h': 4, + 'w': 800, + 'alignItems': 'center', + 'justifyContent': 'center', + 'position': 'relative', + + ':disabled': { + opacity: 0.4, + }, + + '_web': { + ':disabled': { + cursor: 'not-allowed', + }, + }, + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Slider/styled-components/Thumb.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Slider/styled-components/Thumb.tsx new file mode 100644 index 0000000000..b8b204990c --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Slider/styled-components/Thumb.tsx @@ -0,0 +1,58 @@ +import { styled } from '@gluestack-style/react'; +import { Pressable } from 'react-native'; + +export default styled( + Pressable, + { + bg: '$primary600', + h: 16, + w: 16, + position: 'absolute', + borderRadius: 9999, + top: -6, + marginLeft: '-1%', + + _dark: { + bg: '$primary500', + }, + + _web: { + 'cursor': 'pointer', + + ':hover': { + outlineWidth: 4, + outlineColor: '$primary300', + outlineStyle: 'solid', + + _dark: { + outlineColor: '$primary800', + }, + }, + + ':active': { + outlineWidth: 6, + outlineColor: '$primary300', + outlineStyle: 'solid', + + _dark: { + outlineColor: '$primary400', + }, + }, + + ':focus': { + outlineWidth: 2, + outlineColor: '$primary400', + outlineStyle: 'solid', + + _dark: { + outlineColor: '$primary800', + }, + }, + + ':disabled': { + opacity: 0.4, + }, + }, + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Slider/styled-components/ThumbInteraction.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Slider/styled-components/ThumbInteraction.tsx new file mode 100644 index 0000000000..085b1256e5 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Slider/styled-components/ThumbInteraction.tsx @@ -0,0 +1,12 @@ +import { styled } from '@gluestack-style/react'; +import { View } from 'react-native'; + +export default styled( + View, + { + position: 'absolute', + borderRadius: 9999, + zIndex: -1, + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Slider/styled-components/Track.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Slider/styled-components/Track.tsx new file mode 100644 index 0000000000..3b7c637f92 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Slider/styled-components/Track.tsx @@ -0,0 +1,21 @@ +import { styled } from '@gluestack-style/react'; +import { Pressable } from 'react-native'; + +export default styled( + Pressable, + { + 'h': '100%', + 'bg': '$muted200', + 'borderRadius': 32, + 'overflow': 'hidden', + + ':disabled': { + opacity: 0.4, + }, + + '_dark': { + bg: '$muted700', + }, + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Spinner/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Spinner/index.tsx new file mode 100644 index 0000000000..faba917fe7 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Spinner/index.tsx @@ -0,0 +1,6 @@ +import Root from './styled-components/Root'; +import { createSpinner } from '@gluestack-ui/spinner'; + +export const Spinner = createSpinner({ + Root, +}); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Spinner/styled-components/Root.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Spinner/styled-components/Root.tsx new file mode 100644 index 0000000000..8c702c7be2 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Spinner/styled-components/Root.tsx @@ -0,0 +1,10 @@ +import { styled } from '@gluestack-style/react'; +import { ActivityIndicator } from 'react-native'; + +export default styled( + ActivityIndicator, + {}, + { + resolveProps: ['color'], + } +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Switch/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Switch/index.tsx new file mode 100644 index 0000000000..19d73a0ed9 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Switch/index.tsx @@ -0,0 +1,6 @@ +import Root from './styled-components/Root'; +import { createSwitch } from '@gluestack-ui/switch'; + +export const Switch = createSwitch({ + Root, +}); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Switch/styled-components/Root.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Switch/styled-components/Root.tsx new file mode 100644 index 0000000000..8643c71727 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Switch/styled-components/Root.tsx @@ -0,0 +1,54 @@ +import { styled } from '@gluestack-style/react'; +import { Switch } from 'react-native'; + +export default styled( + Switch, + { + 'onthumbColor': '$muted50', + 'offThumbColor': '$muted50', + 'offTrackColor': '$muted300', + 'onTrackColor': '$primary600', + + 'variants': { + size: { + sm: { + transform: [ + { + scale: 0.75, + }, + ], + }, + + md: {}, + + lg: { + transform: [ + { + scale: 1.25, + }, + ], + + margin: 1, + }, + }, + }, + + 'defaultProps': { + size: 'md', + }, + ':disabled': { + opacity: 0.4, + }, + ':invalid': { + borderColor: '$error600', + borderWidth: 2, + borderRadius: 12, + }, + ':hover': { + //@ts-ignore + offTrackColor: '$muted400', + onTrackColor: '$primary700', + }, + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Text/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Text/index.tsx new file mode 100644 index 0000000000..034e07ad47 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Text/index.tsx @@ -0,0 +1,3 @@ +import Root from './styled-components/Root'; + +export const Text = Root; diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Text/styled-components/Root.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Text/styled-components/Root.tsx new file mode 100644 index 0000000000..ce46bd2188 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/Text/styled-components/Root.tsx @@ -0,0 +1,88 @@ +import { Text } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled(Text, { + color: '$text900', + fontWeight: '$normal', + fontFamily: '$body', + fontStyle: 'normal', + fontSize: '$md', + letterSpacing: '$md', + lineHeight: '$lg', + + variants: { + variant: { + modalHeader: { + fontSize: '$md', + fontWeight: '$semibold', + lineHeight: '$lg', + }, + }, + + size: { + 'xs': { + fontSize: '$xs', + letterSpacing: '$xs', + lineHeight: '$lg', + }, + + 'sm': { + fontSize: '$sm', + letterSpacing: '$sm', + lineHeight: '$lg', + }, + + 'md': { + fontSize: '$md', + letterSpacing: '$md', + lineHeight: '$lg', + }, + + 'lg': { + fontSize: '$lg', + letterSpacing: '$lg', + lineHeight: '$lg', + }, + + 'xl': { + fontSize: '$xl', + letterSpacing: '$xl', + lineHeight: '$lg', + }, + + '2xl': { + fontSize: '$2xl', + letterSpacing: '$2xl', + lineHeight: '$lg', + }, + + '3xl': { + fontSize: '$3xl', + lineHeight: '$lg', + }, + + '4xl': { + fontSize: '$4xl', + lineHeight: '$lg', + }, + + '5xl': { + fontSize: '$5xl', + lineHeight: '$lg', + }, + + '6xl': { + fontSize: '$6xl', + lineHeight: '$lg', + }, + }, + }, + + defaultProps: { + size: 'md', + }, + + _dark: { + color: '$text50', + }, +}); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/TextArea/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/TextArea/index.tsx new file mode 100644 index 0000000000..1d858a9f51 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/TextArea/index.tsx @@ -0,0 +1,9 @@ +import Input from './styled-components/Input'; +import Root from './styled-components/Root'; + +import { createTextArea } from '@gluestack-ui/textarea'; + +export const TextArea = createTextArea({ + Root, + Input, +}); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/TextArea/styled-components/Input.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/TextArea/styled-components/Input.tsx new file mode 100644 index 0000000000..9e11c2c67d --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/TextArea/styled-components/Input.tsx @@ -0,0 +1,19 @@ +import { styled } from '@gluestack-style/react'; +import { TextInput } from 'react-native'; + +export default styled( + TextInput, + { + p: '$2', + props: { + multiline: true, + }, + textAlignVertical: 'top', + h: 100, + w: 300, + _web: { + outlineColor: '$primary600', + }, + }, + { ancestorStyle: ['_input'] } +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/TextArea/styled-components/Root.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/TextArea/styled-components/Root.tsx new file mode 100644 index 0000000000..99a660429a --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/TextArea/styled-components/Root.tsx @@ -0,0 +1,153 @@ +import { View } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled( + View, + { + 'bg': 'transparent', + 'borderWidth': 1, + 'borderColor': '$muted300', + 'borderRadius': 4, + 'h': 100, + 'w': 300, + + '_input': { + _dark: { + color: '$lightText', + }, + }, + + 'variants': { + variant: { + rounded: { + borderRadius: 999, + + _input: { + borderRadius: 999, + pl: '$5', + }, + }, + + filled: { + borderWidth: 1, + bg: '$muted100', + borderColor: '$muted100', + + _dark: { + bg: '$muted800', + borderColor: '$muted800', + }, + }, + + underlined: { + 'borderWidth': 0, + 'borderRadius': 0, + 'pl': 0, + 'borderBottomWidth': 1, + + '_input': { + outlineWidth: 0, + }, + + ':focus': { + borderColor: '$primary600', + _web: { + boxShadow: '0 1px 0 0 #9333ea', + }, + }, + }, + + unstyled: { + 'borderWidth': 0, + + '_input': { + outlineWidth: 0, + }, + + ':focus': { + _web: { + boxShadow: '0 0 0 0', + }, + }, + }, + }, + + size: { + '2xl': { + _input: { + fontSize: 22, + }, + }, + + 'xl': { + _input: { + fontSize: 20, + }, + }, + + 'lg': { + _input: { + fontSize: 18, + }, + }, + + 'md': { + _input: { + fontSize: 16, + }, + }, + + 'sm': { + _input: { + fontSize: 14, + }, + }, + + 'xs': { + _input: { + fontSize: 12, + }, + }, + }, + }, + + '_web': { + _input: { + outlineWidth: '0', + outline: 'none', + cursor: 'auto', + }, + }, + + ':hover': { + borderColor: '$primary600', + }, + + ':focus': { + borderColor: '$primary600', + bg: 'transparent', + _web: { + boxShadow: '0 0 0 1px #9333ea', + }, + }, + + ':disabled': { + 'bg': '$muted100', + + ':hover': { + borderColor: '$muted300', + }, + }, + + ':invalid': { + 'borderColor': '$error600', + + ':focus': { + _input: { + outlineColor: '$error600', + }, + }, + }, + }, + { descendantStyle: ['_input'] } +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/VStack/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/VStack/index.tsx new file mode 100644 index 0000000000..3268bde6f7 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/VStack/index.tsx @@ -0,0 +1,6 @@ +import Root from './styled-components/Root'; +import { createVStack } from '@gluestack-ui/vstack'; + +export const VStack = createVStack({ + Root, +}); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/VStack/styled-components/Root.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/VStack/styled-components/Root.tsx new file mode 100644 index 0000000000..855d4d55d7 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/VStack/styled-components/Root.tsx @@ -0,0 +1,48 @@ +// @ts-nocheck +import { styled } from '@gluestack-style/react'; +import { View } from 'react-native'; + +export default styled( + View, + { + flexDirection: 'column', + variants: { + space: { + '0': { + gap: '0', + }, + 'xs': { + gap: '$1', + }, + + '1.5': { + gap: '$1.5', + }, + + 'sm': { + gap: '$2', + }, + + '3': { + gap: '$3', + }, + + 'md': { + gap: '$4', + }, + + 'lg': { + gap: '$6', + }, + + 'xl': { + gap: '$8', + }, + }, + }, + defaultProps: { + space: '0', + }, + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/VStack/styled-components/Spacer.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/VStack/styled-components/Spacer.tsx new file mode 100644 index 0000000000..781c09f97d --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/VStack/styled-components/Spacer.tsx @@ -0,0 +1,36 @@ +import { styled } from '@gluestack-style/react'; +import { View } from 'react-native'; + +export default styled( + View, + { + variants: { + size: { + 'xs': { + height: '$1', + }, + + '1.5': { + height: '$1.5', + }, + + 'sm': { + height: '$2', + }, + + 'md': { + height: '$4', + }, + + 'lg': { + height: '$6', + }, + + 'xl': { + height: '$8', + }, + }, + }, + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/index.ts b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/index.ts new file mode 100644 index 0000000000..54b44cf4a9 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/primitives/index.ts @@ -0,0 +1,19 @@ +export { Box } from './Box'; +export { Button } from './Button'; + +export { Checkbox } from './Checkbox'; +export { Heading } from './Heading'; +export { HStack } from './HStack'; +export { Image } from './Image'; +export { Input } from './Input'; +export { Link } from './Link'; +export { Pressable } from './Pressable'; +export { Radio } from './Radio'; +export { Select } from './Select'; +export { Spinner } from './Spinner'; +export { Switch } from './Switch'; +export { Text } from './Text'; +export { TextArea } from './TextArea'; +export { Slider } from './Slider'; +export { VStack } from './VStack'; +export * from './Icon'; diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledActionsheet/StyledActionsheetBackdrop.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledActionsheet/StyledActionsheetBackdrop.tsx new file mode 100644 index 0000000000..fbda111a8f --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledActionsheet/StyledActionsheetBackdrop.tsx @@ -0,0 +1,16 @@ +import { Pressable } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled( + Pressable, + { + position: 'absolute', + left: 0, + top: 0, + opacity: 0.3, + right: 0, + bottom: 0, + bg: '$black', + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledActionsheet/StyledActionsheetContent.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledActionsheet/StyledActionsheetContent.tsx new file mode 100644 index 0000000000..5c4617f1ca --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledActionsheet/StyledActionsheetContent.tsx @@ -0,0 +1,19 @@ +import { View } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled( + View, + { + alignItems: 'center', + p: '$2', + rounded: '$none', + borderTopLeftRadius: 20, + borderTopRightRadius: 20, + bg: '$white', + + _web: { + userSelect: 'none', + }, + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledActionsheet/StyledActionsheetDragIndicator.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledActionsheet/StyledActionsheetDragIndicator.tsx new file mode 100644 index 0000000000..c2a9f8f14a --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledActionsheet/StyledActionsheetDragIndicator.tsx @@ -0,0 +1,13 @@ +import { styled } from '@gluestack-style/react'; +import { View } from 'react-native'; + +export default styled( + View, + { + height: '$1', + width: '$10', + bg: '$muted500', + rounded: '$full', + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledActionsheet/StyledActionsheetIndicatorWrapper.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledActionsheet/StyledActionsheetIndicatorWrapper.tsx new file mode 100644 index 0000000000..db2f61b55f --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledActionsheet/StyledActionsheetIndicatorWrapper.tsx @@ -0,0 +1,13 @@ +import { View } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled( + View, + { + py: '$3', + mt: -4, + w: '100%', + alignItems: 'center', + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledActionsheet/StyledActionsheetItem.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledActionsheet/StyledActionsheetItem.tsx new file mode 100644 index 0000000000..570106d7b3 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledActionsheet/StyledActionsheetItem.tsx @@ -0,0 +1,43 @@ +import { styled } from '@gluestack-style/react'; +import { Pressable } from 'react-native'; + +export default styled( + Pressable, + { + 'width': '100%', + 'justifyContent': 'flex-start', + 'p': '$4', + 'flexDirection': 'row', + 'alignItems': 'center', + + '_web': { + cursor: 'pointer', + userSelect: 'none', + }, + + ':disabled': { + _text: { + opacity: 0.4, + }, + }, + + ':hover': { + bg: '$muted100', + }, + + ':active': { + bg: '$muted200', + }, + + ':focusVisible': { + bg: '$muted300', + + _web: { + outline: 'none', + }, + }, + }, + { + descendantStyle: ['_text'], + } +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledActionsheet/StyledActionsheetItemText.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledActionsheet/StyledActionsheetItemText.tsx new file mode 100644 index 0000000000..3da2a8565d --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledActionsheet/StyledActionsheetItemText.tsx @@ -0,0 +1,12 @@ +import { Text } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled( + Text, + { + color: '$text900', + fontSize: '$md', + fontWeight: '$normal', + }, + { ancestorStyle: ['_text'] } +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledActionsheet/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledActionsheet/index.tsx new file mode 100644 index 0000000000..61bc6df039 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledActionsheet/index.tsx @@ -0,0 +1,13 @@ +import { View } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled( + View, + { + width: '100%', + height: '100%', + justifyContent: 'flex-end', + alignItems: 'center', + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledAlert/StyledAlertIcon.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledAlert/StyledAlertIcon.tsx new file mode 100644 index 0000000000..c8f0d5ebbc --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledAlert/StyledAlertIcon.tsx @@ -0,0 +1,13 @@ +import { View } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled( + View, + { + alignItems: 'center', + justifyContent: 'center', + display: 'flex', + mr: 8, + }, + { ancestorStyle: ['_icon'] } +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledAlert/StyledAlertText.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledAlert/StyledAlertText.tsx new file mode 100644 index 0000000000..e7d9ad2c0c --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledAlert/StyledAlertText.tsx @@ -0,0 +1,16 @@ +import { Text } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled( + Text, + { + color: '$text900', + fontWeight: '$normal', + fontFamily: '$body', + fontStyle: 'normal', + fontSize: '$sm', + letterSpacing: '$md', + lineHeight: '$lg', + }, + { ancestorStyle: ['_text'] } +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledAlert/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledAlert/index.tsx new file mode 100644 index 0000000000..d55cc400b7 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledAlert/index.tsx @@ -0,0 +1,466 @@ +import { View } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled( + View, + { + alignItems: 'center', + justifyContent: 'flex-start', + p: '$3', + flexDirection: 'row', + borderRadius: '$sm', + w: 300, + + variants: { + variant: { + 'subtle-info': { + bg: '$info200', + + _icon: { + color: '$info700', + }, + + _dark: { + _icon: { + color: '$info600', + }, + }, + }, + + 'solid-info': { + bg: '$info700', + + _icon: { + color: '$muted50', + }, + + _text: { + color: '$muted50', + }, + + _dark: { + bg: '$info600', + }, + }, + + 'outline-info': { + borderWidth: '$1', + borderColor: '$info700', + + _icon: { + color: '$info700', + }, + + _text: { + _dark: { + color: '$text50', + }, + }, + + _dark: { + borderColor: '$info600', + + _icon: { + color: '$info600', + }, + + _text: { + color: '$info600', + }, + }, + }, + + 'left-accent-info': { + borderLeftWidth: '$4', + bg: '$info200', + borderLeftColor: '$info700', + + _icon: { + color: '$info700', + }, + + _dark: { + borderLeftColor: '$info600', + + _icon: { + color: '$info600', + }, + }, + }, + + 'top-accent-info': { + borderTopWidth: '$4', + bg: '$info200', + borderTopColor: '$info700', + + _icon: { + color: '$info700', + }, + + _dark: { + borderTopColor: '$info600', + + _icon: { + color: '$info600', + }, + }, + }, + + 'outline-light-info': { + borderWidth: '$1', + borderColor: '$info400', + + _icon: { + color: '$info700', + }, + + _text: { + _dark: { + color: '$text50', + }, + }, + }, + + 'subtle-success': { + bg: '$success200', + + _icon: { + color: '$success700', + }, + + _dark: { + _icon: { + color: '$success600', + }, + }, + }, + + 'solid-success': { + bg: '$success700', + + _icon: { + color: '$muted50', + }, + + _text: { + color: '$muted50', + }, + + _dark: { + bg: '$success600', + }, + }, + + 'outline-success': { + borderWidth: '$1', + borderColor: '$success700', + + _icon: { + color: '$success700', + }, + + _text: { + _dark: { + color: '$text50', + }, + }, + + _dark: { + borderColor: '$success600', + + _icon: { + color: '$success600', + }, + + _text: { + color: '$success600', + }, + }, + }, + + 'left-accent-success': { + borderLeftWidth: '$4', + bg: '$success200', + borderLeftColor: '$success700', + + _icon: { + color: '$success700', + }, + + _dark: { + borderLeftColor: '$success600', + + _icon: { + color: '$success600', + }, + }, + }, + + 'top-accent-success': { + borderTopWidth: '$4', + bg: '$success200', + borderTopColor: '$success700', + + _icon: { + color: '$success700', + }, + + _dark: { + borderTopColor: '$success600', + + _icon: { + color: '$success600', + }, + }, + }, + + 'outline-light-success': { + borderWidth: '$1', + borderColor: '$success400', + + _icon: { + color: '$success700', + }, + + _text: { + _dark: { + color: '$text50', + }, + }, + }, + + 'subtle-warning': { + bg: '$warning200', + + _icon: { + color: '$warning700', + }, + + _dark: { + _icon: { + color: '$warning600', + }, + }, + }, + + 'solid-warning': { + bg: '$warning700', + + _icon: { + color: '$muted50', + }, + + _text: { + color: '$muted50', + }, + + _dark: { + bg: '$warning600', + }, + }, + + 'outline-warning': { + borderWidth: '$1', + borderColor: '$warning700', + + _icon: { + color: '$warning700', + }, + + _text: { + _dark: { + color: '$text50', + }, + }, + + _dark: { + borderColor: '$warning600', + + _icon: { + color: '$warning600', + }, + + _text: { + color: '$warning600', + }, + }, + }, + + 'left-accent-warning': { + borderLeftWidth: '$4', + bg: '$warning200', + borderLeftColor: '$warning700', + + _icon: { + color: '$warning700', + }, + + _dark: { + borderLeftColor: '$warning600', + + _icon: { + color: '$warning600', + }, + }, + }, + + 'top-accent-warning': { + borderTopWidth: '$4', + bg: '$warning200', + borderTopColor: '$warning700', + + _icon: { + color: '$warning700', + }, + + _dark: { + borderTopColor: '$warning600', + + _icon: { + color: '$warning600', + }, + }, + }, + + 'outline-light-warning': { + borderWidth: '$1', + borderColor: '$warning400', + + _icon: { + color: '$warning700', + }, + + _dark: { + borderColor: '$warning300', + + _icon: { + color: '$warning600', + }, + + _text: { + color: '$text50', + }, + }, + }, + + 'subtle-error': { + bg: '$error200', + + _icon: { + color: '$error700', + }, + + _dark: { + _icon: { + color: '$error600', + }, + }, + }, + + 'solid-error': { + bg: '$error700', + + _icon: { + color: '$muted50', + }, + + _text: { + color: '$muted50', + }, + + _dark: { + bg: '$error600', + }, + }, + + 'outline-error': { + borderWidth: '$1', + borderColor: '$error700', + + _icon: { + color: '$error700', + }, + + _dark: { + borderColor: '$error600', + + _icon: { + color: '$error600', + }, + + _text: { + color: '$text50', + }, + }, + }, + + 'left-accent-error': { + borderLeftWidth: '$4', + bg: '$error200', + borderLeftColor: '$error700', + + _icon: { + color: '$error700', + }, + + _dark: { + borderLeftColor: '$error600', + + _icon: { + color: '$error600', + }, + }, + }, + + 'top-accent-error': { + borderTopWidth: '$4', + bg: '$error200', + borderTopColor: '$error700', + + _icon: { + color: '$error700', + }, + + _dark: { + borderTopColor: '$error600', + + _icon: { + color: '$error600', + }, + }, + }, + + 'outline-light-error': { + borderWidth: '$1', + borderColor: '$error400', + + _icon: { + color: '$error700', + }, + + _dark: { + borderColor: '$error300', + + _icon: { + color: '$error600', + }, + + _text: { + color: '$text50', + }, + }, + }, + }, + }, + + defaultProps: { + variant: 'outline-light-error', + }, + + _web: { + outlineColor: '$amber500', + outlineWidth: '10px', + }, + }, + { descendantStyle: ['_icon', '_text'] } +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledAlertDialog/StyledAlertDialogBackdrop.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledAlertDialog/StyledAlertDialogBackdrop.tsx new file mode 100644 index 0000000000..fbda111a8f --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledAlertDialog/StyledAlertDialogBackdrop.tsx @@ -0,0 +1,16 @@ +import { Pressable } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled( + Pressable, + { + position: 'absolute', + left: 0, + top: 0, + opacity: 0.3, + right: 0, + bottom: 0, + bg: '$black', + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledAlertDialog/StyledAlertDialogBody.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledAlertDialog/StyledAlertDialogBody.tsx new file mode 100644 index 0000000000..c3bfddb256 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledAlertDialog/StyledAlertDialogBody.tsx @@ -0,0 +1,10 @@ +import { ScrollView } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled( + ScrollView, + { + padding: '$4', + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledAlertDialog/StyledAlertDialogCloseButton.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledAlertDialog/StyledAlertDialogCloseButton.tsx new file mode 100644 index 0000000000..0940680080 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledAlertDialog/StyledAlertDialogCloseButton.tsx @@ -0,0 +1,42 @@ +import { Pressable } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled( + Pressable, + { + 'position': 'absolute', + 'right': 10, + 'top': 10, + 'zIndex': 1, + 'p': '$2', + 'bg': 'transparent', + 'rounded': '$sm', + + ':hover': { + bg: '$muted200', + }, + + ':active': { + bg: '$muted300', + }, + + ':focusVisible': { + bg: '$muted400', + }, + + '_web': { + outlineWidth: 0, + }, + + '_dark': { + ':hover': { + bg: '$muted700', + }, + + ':pressed': { + bg: '$muted600', + }, + }, + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledAlertDialog/StyledAlertDialogContent.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledAlertDialog/StyledAlertDialogContent.tsx new file mode 100644 index 0000000000..ec8058f2d4 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledAlertDialog/StyledAlertDialogContent.tsx @@ -0,0 +1,29 @@ +import { View } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled( + View, + { + shadowColor: 'black', + + shadowOffset: { + width: 0, + height: 1, + }, + + shadowOpacity: 0.2, + shadowRadius: 1.41, + elevation: 2, + rounded: '$lg', + overflow: 'hidden', + bg: '$white', + maxWidth: 450, + + _dark: { + bg: '$muted800', + // @ts-ignore + color: '$text50', + }, + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledAlertDialog/StyledAlertDialogFooter.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledAlertDialog/StyledAlertDialogFooter.tsx new file mode 100644 index 0000000000..165027cbb7 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledAlertDialog/StyledAlertDialogFooter.tsx @@ -0,0 +1,21 @@ +import { View } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled( + View, + { + p: '$4', + flexDirection: 'row', + justifyContent: 'flex-end', + flexWrap: 'wrap', + borderTopWidth: 1, + bg: '$muted50', + borderColor: '$muted300', + + _dark: { + bg: '$muted800', + borderColor: '$muted700', + }, + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledAlertDialog/StyledAlertDialogHeader.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledAlertDialog/StyledAlertDialogHeader.tsx new file mode 100644 index 0000000000..c2d93012f7 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledAlertDialog/StyledAlertDialogHeader.tsx @@ -0,0 +1,18 @@ +import { View } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled( + View, + { + p: '$4', + borderBottomWidth: 1, + bg: '$muted50', + borderColor: '$muted300', + + _dark: { + bg: '$muted800', + borderColor: '$muted700', + }, + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledAlertDialog/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledAlertDialog/index.tsx new file mode 100644 index 0000000000..1d5fa793ab --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledAlertDialog/index.tsx @@ -0,0 +1,18 @@ +import { View } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled( + View, + { + width: '100%', + height: '100%', + justifyContent: 'center', + alignItems: 'center', + defaultProps: {}, + + props: { + pointerEvents: 'box-none', + }, + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledAvatar/StyledAvatarBadge.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledAvatar/StyledAvatarBadge.tsx new file mode 100644 index 0000000000..ad432dd543 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledAvatar/StyledAvatarBadge.tsx @@ -0,0 +1,18 @@ +import { View } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled( + View, + { + w: 20, + h: 20, + bg: '$green500', + borderRadius: 9999, + position: 'absolute', + right: 0, + bottom: 0, + borderColor: 'white', + borderWidth: 2, + }, + { ancestorStyle: ['_badge'] } +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledAvatar/StyledAvatarFallbackText.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledAvatar/StyledAvatarFallbackText.tsx new file mode 100644 index 0000000000..fe1cedcec5 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledAvatar/StyledAvatarFallbackText.tsx @@ -0,0 +1,15 @@ +import { Text } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled( + Text, + { + color: 'white', + fontWeight: 'semibold', + fontSize: '$xl', + display: 'flex', + overflow: 'hidden', + textTransform: 'uppercase', + }, + { ancestorStyle: ['_text'] } +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledAvatar/StyledAvatarGroup.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledAvatar/StyledAvatarGroup.tsx new file mode 100644 index 0000000000..0c95af7a54 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledAvatar/StyledAvatarGroup.tsx @@ -0,0 +1,11 @@ +import { View } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled( + View, + { + flexDirection: 'row', + position: 'relative', + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledAvatar/StyledAvatarImage.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledAvatar/StyledAvatarImage.tsx new file mode 100644 index 0000000000..314f73e809 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledAvatar/StyledAvatarImage.tsx @@ -0,0 +1,13 @@ +import { Image } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled( + Image, + { + w: '100%', + h: '100%', + borderRadius: 9999, + position: 'absolute', + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledAvatar/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledAvatar/index.tsx new file mode 100644 index 0000000000..6999a1aeb7 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledAvatar/index.tsx @@ -0,0 +1,112 @@ +import { View } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled( + View, + { + borderRadius: 9999, + justifyContent: 'center', + alignItems: 'center', + h: 100, + w: 100, + position: 'relative', + bg: '$primary600', + + variants: { + size: { + 'xs': { + w: '$6', + h: '$6', + + _badge: { + w: 8, + h: 8, + borderWidth: 1, + }, + + _text: { + fontSize: 8, + }, + }, + + 'sm': { + w: '$8', + h: '$8', + + _badge: { + w: 9, + h: 9, + borderWidth: 1, + }, + + _text: { + fontSize: 11, + }, + }, + + 'md': { + w: '$12', + h: '$12', + + _badge: { + w: 14, + h: 14, + }, + + _text: { + fontSize: 17, + }, + }, + + 'lg': { + w: '$16', + h: '$16', + + _badge: { + w: 16, + h: 16, + }, + + _text: { + fontSize: 22, + }, + }, + + 'xl': { + w: '$24', + h: '$24', + + _badge: { + w: 24, + h: 24, + }, + + _text: { + fontSize: 34, + }, + }, + + '2xl': { + w: '$32', + h: '$32', + + _badge: { + w: '$8', + h: '$8', + }, + + _text: { + fontSize: 42, + }, + }, + }, + }, + + defaultProps: { + size: 'md', + }, + }, + { + descendantStyle: ['_badge', '_text'], + } +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledBadge/StyledBadgeIcon.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledBadge/StyledBadgeIcon.tsx new file mode 100644 index 0000000000..ecb3222a73 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledBadge/StyledBadgeIcon.tsx @@ -0,0 +1,4 @@ +import { Text } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled(Text, {}, { ancestorStyle: ['_icon'] }); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledBadge/StyledBadgeText.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledBadge/StyledBadgeText.tsx new file mode 100644 index 0000000000..576ff347a5 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledBadge/StyledBadgeText.tsx @@ -0,0 +1,13 @@ +import { Text } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled( + Text, + { + fontWeight: '500', + fontSize: 12, + color: '$white', + textTransform: 'uppercase', + }, + { ancestorStyle: ['_text'] } +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledBadge/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledBadge/index.tsx new file mode 100644 index 0000000000..b8ed3088fb --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledBadge/index.tsx @@ -0,0 +1,324 @@ +import { View } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled( + View, + { + flexDirection: 'row', + justifyContent: 'center', + alignItems: 'center', + px: '$2', + py: '$1', + + variants: { + variant: { + 'solid': { + bg: '$muted600', + borderWidth: 1, + borderColor: 'transparent', + borderRadius: 2, + + _text: { + color: '$text50', + }, + + _icon: { + color: '$text50', + }, + }, + + 'subtle': { + bg: '$muted100', + borderWidth: 1, + borderColor: 'transparent', + borderRadius: 2, + + _text: { + color: '$muted700', + }, + + _icon: { + color: '$muted700', + }, + + _dark: { + bg: '$muted300', + }, + }, + + 'outline': { + borderWidth: 1, + borderColor: '$muted600', + borderRadius: 2, + + _text: { + color: '$muted600', + }, + + _icon: { + color: '$muted600', + }, + + _dark: { + borderColor: '$muted300', + + _text: { + color: '$muted300', + }, + + _icon: { + color: '$muted300', + }, + }, + }, + + 'success-solid': { + bg: '$success600', + borderWidth: 1, + borderColor: 'transparent', + borderRadius: 2, + + _text: { + color: '$text50', + }, + + _icon: { + color: '$text50', + }, + }, + + 'success-subtle': { + bg: '$success100', + borderWidth: 1, + borderColor: 'transparent', + borderRadius: 2, + + _text: { + color: '$success900', + }, + + _icon: { + color: '$success900', + }, + + _dark: { + bg: '$success300', + }, + }, + + 'success-outline': { + borderWidth: 1, + borderColor: '$success600', + borderRadius: 2, + + _text: { + color: '$success600', + }, + + _icon: { + color: '$success600', + }, + + _dark: { + borderColor: '$success300', + + _text: { + color: '$success300', + }, + + _icon: { + color: '$success300', + }, + }, + }, + + 'danger-solid': { + bg: '$error600', + borderWidth: 1, + borderColor: 'transparent', + borderRadius: 2, + + _text: { + color: '$text50', + }, + + _icon: { + color: '$text50', + }, + }, + + 'danger-subtle': { + bg: '$error100', + borderWidth: 1, + borderColor: 'transparent', + borderRadius: 2, + + _text: { + color: '$error900', + }, + + _icon: { + color: '$error900', + }, + + _dark: { + bg: '$error300', + }, + }, + + 'danger-outline': { + borderWidth: 1, + borderColor: '$error600', + borderRadius: 2, + + _text: { + color: '$error600', + }, + + _icon: { + color: '$error600', + }, + + _dark: { + borderColor: '$error300', + + _text: { + color: '$error300', + }, + + _icon: { + color: '$error300', + }, + }, + }, + + 'info-solid': { + bg: '$info600', + borderWidth: 1, + borderColor: 'transparent', + borderRadius: 2, + + _text: { + color: '$text50', + }, + + _icon: { + color: '$text50', + }, + }, + + 'info-subtle': { + bg: '$info100', + borderWidth: 1, + borderColor: 'transparent', + borderRadius: 2, + + _text: { + color: '$info900', + }, + + _icon: { + color: '$info900', + }, + + _dark: { + bg: '$info300', + }, + }, + + 'info-outline': { + borderWidth: 1, + borderColor: '$info600', + borderRadius: 2, + + _text: { + color: '$info600', + }, + + _icon: { + color: '$info600', + }, + + _dark: { + borderColor: '$info300', + + _text: { + color: '$info300', + }, + + _icon: { + color: '$info300', + }, + }, + }, + + 'warning-solid': { + bg: '$warning600', + borderWidth: 1, + borderColor: 'transparent', + borderRadius: 2, + + _text: { + color: '$text50', + }, + + _icon: { + color: '$text50', + }, + }, + + 'warning-subtle': { + bg: '$warning100', + borderWidth: 1, + borderColor: 'transparent', + borderRadius: 2, + + _text: { + color: '$warning900', + }, + + _icon: { + color: '$warning900', + }, + + _dark: { + bg: '$warning300', + }, + }, + + 'warning-outline': { + borderWidth: 1, + borderColor: '$warning600', + borderRadius: 2, + + _text: { + color: '$warning600', + }, + + _icon: { + color: '$warning600', + }, + + _dark: { + borderColor: '$warning300', + + _text: { + color: '$warning300', + }, + + _icon: { + color: '$warning300', + }, + }, + }, + }, + }, + + defaultProps: { + variant: 'subtle', + }, + }, + { + descendantStyle: ['_text', '_icon'], + } +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledBlockQuote/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledBlockQuote/index.tsx new file mode 100644 index 0000000000..20c392d51e --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledBlockQuote/index.tsx @@ -0,0 +1,30 @@ +import { styled } from '@gluestack-style/react'; +import { BlockQuote } from '@expo/html-elements'; + +export default styled( + BlockQuote, + { + // @ts-ignore + fontWeight: '$normal', + fontSize: '$normal', + lineHeight: '$md', + color: '$textLight800', + fontFamily: '$body', + borderWidth: 1, + borderRadius: 8, + borderColor: '$primary200', + borderLeftWidth: 8, + bg: '$primary50_alpha_50', + py: 24.5, + pr: 24, + pl: 32, + _dark: { + bg: '$backgroundDark800', + // @ts-ignore + color: '$textDark50', + borderColor: '$backgroundDark700', + borderLeftColor: '$primary200', + }, + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledBox/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledBox/index.tsx new file mode 100644 index 0000000000..03056b11c3 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledBox/index.tsx @@ -0,0 +1,10 @@ +import { View } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled( + View, + {}, + { + descendantStyle: ['_text'], + } +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledBoxText/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledBoxText/index.tsx new file mode 100644 index 0000000000..c44cc4579c --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledBoxText/index.tsx @@ -0,0 +1,12 @@ +import { Text } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled( + Text, + { + color: '$blue900', + bg: '$amber500', + p: 10, + }, + { ancestorStyle: ['_text'] } +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledButton/StyledButtonGroup.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledButton/StyledButtonGroup.tsx new file mode 100644 index 0000000000..7d8f366953 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledButton/StyledButtonGroup.tsx @@ -0,0 +1,19 @@ +import { styled } from '@gluestack-style/react'; +import { View } from 'react-native'; + +export default styled( + View, + { + variants: { + variant: { + row: {}, + column: {}, + }, + }, + + defaultProps: { + space: 'md', + }, + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledButton/StyledButtonGroupSpacer.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledButton/StyledButtonGroupSpacer.tsx new file mode 100644 index 0000000000..ede91e69ac --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledButton/StyledButtonGroupSpacer.tsx @@ -0,0 +1,21 @@ +import { styled } from '@gluestack-style/react'; +import { View } from 'react-native'; + +export default styled( + View, + { + variants: { + variant: { + row: {}, + column: {}, + }, + + size: { + sm: {}, + md: {}, + lg: {}, + }, + }, + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledButton/StyledButtonSpinner.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledButton/StyledButtonSpinner.tsx new file mode 100644 index 0000000000..dfc0c614c5 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledButton/StyledButtonSpinner.tsx @@ -0,0 +1,8 @@ +import { styled } from '@gluestack-style/react'; +import { ActivityIndicator } from 'react-native'; + +export default styled( + ActivityIndicator, + {}, + { ancestorStyle: ['_spinner'], resolveProps: ['color'] } +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledButton/StyledButtonText.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledButton/StyledButtonText.tsx new file mode 100644 index 0000000000..907c0bf175 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledButton/StyledButtonText.tsx @@ -0,0 +1,10 @@ +import { Text } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled( + Text, + { + color: '$text800', + }, + { ancestorStyle: ['_text'] } +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledButton/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledButton/index.tsx new file mode 100644 index 0000000000..d2b097f1c1 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledButton/index.tsx @@ -0,0 +1,118 @@ +import { styled } from '@gluestack-style/react'; +import { Pressable } from 'react-native'; + +export default styled( + Pressable, + { + 'borderRadius': '$full', + 'flexDirection': 'row', + 'justifyContent': 'center', + 'alignItems': 'center', + '_text': { + color: '$textDark50', + fontWeight: '$medium', + }, + + '_spinner': { + color: '$backgroundDark50', + }, + + '_icon': { + color: '$backgroundDark50', + }, + + 'variants': { + variant: { + primary: { + bg: '$primary500', + + _web: { + 'boxShadow': + '0px 1px 3px rgba(0, 119, 230, 0.24), 0px 2px 6px rgba(0, 119, 230, 0.24), 0px 4px 8px rgba(0, 119, 230, 0.12), inset 1px 1px 2px rgba(255, 255, 255, 0.24)', + ':hover': { + boxShadow: + '0px 1px 3px rgba(10, 124, 255, 0.24), 0px 2px 6px rgba(10, 124, 255, 0.24), 0px 4px 8px rgba(10, 124, 255, 0.12), 0px 12px 48px -8px rgba(10, 124, 255, 0.48), inset 1px 1px 2px rgba(255, 255, 255, 0.24)', + }, + + ':active': { + boxShadow: + '0px 1px 3px rgba(0, 119, 230, 0.24), 0px 2px 6px rgba(0, 119, 230, 0.24), 0px 4px 8px rgba(0, 119, 230, 0.12), inset 1px 1px 2px rgba(255, 255, 255, 0.24)', + }, + + ':focusVisible': { + boxShadow: + '0px 1px 3px rgba(10, 124, 255, 0.24), 0px 2px 6px rgba(10, 124, 255, 0.24), 0px 4px 8px rgba(10, 124, 255, 0.12), 0px 12px 48px -8px rgba(10, 124, 255, 0.48), inset 1px 1px 2px rgba(255, 255, 255, 0.24)', + }, + }, + }, + + secondary: { + 'bg': '$secondary50_alpha_10', + + '_web': { + boxShadow: + 'inset -1px -1px 0px rgba(255, 255, 255, 0.08), inset 0px 0px 0px 1px rgba(255, 255, 255, 0.06);', + }, + + ':hover': { + bg: '$secondary50_alpha_20', + }, + + ':active': { + bg: '$secondary50_alpha_10', + }, + + ':focusVisible': { + bg: '$secondary50_alpha_20', + }, + }, + + unstyled: { + 'borderRadius': undefined, + + '_text': { + color: '$black', + }, + + '_icon': { + color: '$black', + }, + + ':hover': { + bg: 'transparent', + }, + }, + }, + + size: { + md: { + px: '$4', + py: '$2', + + _text: { + fontSize: '$md', + lineHeight: '$md', + }, + }, + }, + }, + + 'defaultProps': { + size: 'md', + variant: 'primary', + }, + + '_web': { + cursor: 'pointer', + userSelect: 'none', + outlineWidth: 0, + }, + + ':disabled': { + opacity: 0.5, + }, + }, + { + descendantStyle: ['_text', '_spinner', '_icon'], + } +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledCenter/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledCenter/index.tsx new file mode 100644 index 0000000000..bf2fdadad0 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledCenter/index.tsx @@ -0,0 +1,46 @@ +import { View } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled( + View, + { + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + + variants: { + size: { + 'xs': { + height: 10, + width: 10, + }, + + 'sm': { + height: 12, + width: 12, + }, + + 'md': { + height: 16, + width: 16, + }, + + 'lg': { + height: 24, + width: 24, + }, + + 'xl': { + height: 32, + width: 32, + }, + + '2xl': { + height: 40, + width: 40, + }, + }, + }, + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledCheckbox/StyledCheckboxGroup.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledCheckbox/StyledCheckboxGroup.tsx new file mode 100644 index 0000000000..ed8dcb8cc7 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledCheckbox/StyledCheckboxGroup.tsx @@ -0,0 +1,4 @@ +import { styled } from '@gluestack-style/react'; +import { View } from 'react-native'; + +export default styled(View, {}, {}); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledCheckbox/StyledCheckboxIcon.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledCheckbox/StyledCheckboxIcon.tsx new file mode 100644 index 0000000000..1e212be0f4 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledCheckbox/StyledCheckboxIcon.tsx @@ -0,0 +1,28 @@ +import { View } from 'react-native'; +import { styled } from '@gluestack-style/react'; +export default styled( + View, + { + 'w': '100%', + 'h': '100%', + 'justifyContent': 'center', + 'alignItems': 'center', + // @ts-ignore + + 'color': '$white', + + ':checked': { + ':hover': { + // @ts-ignore + color: '$white', + }, + }, + + ':disabled': { + opacity: 0.6, + }, + }, + { + ancestorStyle: ['_icon'], + } +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledCheckbox/StyledCheckboxIndicator.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledCheckbox/StyledCheckboxIndicator.tsx new file mode 100644 index 0000000000..46940acc1b --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledCheckbox/StyledCheckboxIndicator.tsx @@ -0,0 +1,48 @@ +import { View } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled( + View, + { + 'justifyContent': 'center', + 'alignItems': 'center', + 'borderColor': '$muted400', + 'bg': '$muted50', + 'borderWidth': 2, + 'borderRadius': 6, + + '_web': { + ':focusVisible': { + outlineWidth: '2px', + outlineColor: '$primary400', + outlineStyle: 'solid', + }, + }, + + ':checked': { + borderColor: '$primary600', + bg: '$primary600', + }, + + ':hover': { + 'borderColor': '$muted500', + + ':checked': { + bg: '$primary700', + borderColor: '$primary700', + }, + }, + + ':active': { + bg: '$primary800', + borderColor: '$primary800', + }, + + ':invalid': { + borderColor: '$error600', + }, + }, + { + ancestorStyle: ['_indicator'], + } +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledCheckbox/StyledCheckboxLabel.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledCheckbox/StyledCheckboxLabel.tsx new file mode 100644 index 0000000000..4ec4eeb18d --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledCheckbox/StyledCheckboxLabel.tsx @@ -0,0 +1,27 @@ +import { Text } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled( + Text, + { + 'color': '$black', + 'ml': '$2', + + ':disabled': { + opacity: 0.6, + }, + + '_web': { + MozUserSelect: 'none', + WebkitUserSelect: 'none', + msUserSelect: 'none', + }, + + '_dark': { + color: '$lightText', + }, + }, + { + ancestorStyle: ['_text'], + } +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledCheckbox/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledCheckbox/index.tsx new file mode 100644 index 0000000000..fd0e941986 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledCheckbox/index.tsx @@ -0,0 +1,79 @@ +import { Pressable } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled( + Pressable, + { + 'p': 8, + 'flexDirection': 'row', + 'justifyContent': 'flex-start', + 'alignItems': 'center', + + '_icon': { + color: '$muted50', + }, + + 'variants': { + size: { + lg: { + _icon: { + height: '$5', + width: '$5', + }, + + _text: { + fontSize: '$xl', + }, + + _indicator: { + h: '$6', + w: '$6', + }, + }, + + md: { + _icon: { + height: '$4', + width: '$4', + }, + + _text: { + fontSize: '$lg', + }, + + _indicator: { + h: '$5', + w: '$5', + }, + }, + + sm: { + _icon: { + height: '$3', + width: '$3', + }, + + _text: { + fontSize: '$md', + }, + + _indicator: { + h: '$4', + w: '$4', + }, + }, + }, + }, + + 'defaultProps': { + size: 'md', + }, + + ':disabled': { + opacity: 0.5, + }, + }, + { + descendantStyle: ['_icon', '_text', '_indicator'], + } +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledCheckbox/index.web.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledCheckbox/index.web.tsx new file mode 100644 index 0000000000..1df874e5df --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledCheckbox/index.web.tsx @@ -0,0 +1,79 @@ +import { View } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled( + View, + { + 'p': 8, + 'flexDirection': 'row', + 'justifyContent': 'center', + 'alignItems': 'center', + + 'variants': { + size: { + lg: { + _icon: { + height: '$5', + width: '$5', + }, + + _text: { + fontSize: '$xl', + }, + + _indicator: { + h: '$6', + w: '$6', + }, + }, + + md: { + _icon: { + height: '$4', + width: '$4', + }, + + _text: { + fontSize: '$lg', + }, + + _indicator: { + h: '$5', + w: '$5', + }, + }, + + sm: { + _icon: { + height: '$3', + width: '$3', + }, + + _text: { + fontSize: '$md', + }, + + _indicator: { + h: '$4', + w: '$4', + }, + }, + }, + }, + + 'defaultProps': { + size: 'md', + }, + + ':disabled': { + opacity: 0.6, + }, + + '_web': { + cursor: 'pointer', + }, + }, + { + descendantStyle: ['_icon', '_text', '_indicator'], + } +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledDivider/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledDivider/index.tsx new file mode 100644 index 0000000000..25b61c3f6b --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledDivider/index.tsx @@ -0,0 +1,32 @@ +import { View } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled( + View, + { + bg: '$muted300', + + variants: { + variant: { + vertical: { + width: 1, + height: '100%', + }, + + horizontal: { + height: 1, + width: '100%', + }, + }, + }, + + defaultProps: { + variant: 'horizontal', + }, + + _dark: { + bg: '$muted600', + }, + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledFab/StyledFabLabel.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledFab/StyledFabLabel.tsx new file mode 100644 index 0000000000..7d6a99784d --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledFab/StyledFabLabel.tsx @@ -0,0 +1,11 @@ +import { styled } from '@gluestack-style/react'; +import { Text } from 'react-native'; + +export default styled( + Text, + { + color: '$white', + ml: 8, + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledFab/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledFab/index.tsx new file mode 100644 index 0000000000..81a80a2706 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledFab/index.tsx @@ -0,0 +1,56 @@ +import { styled } from '@gluestack-style/react'; +import { Pressable } from 'react-native'; + +export default styled( + Pressable, + { + 'bg': '$primary500', + 'rounded': '$full', + 'zIndex': 20, + 'px': 16, + 'py': 16, + 'flexDirection': 'row', + 'alignItems': 'center', + + 'variants': { + variant: { + 'top-right': { + top: 12, + right: 4, + position: 'absolute', + }, + + 'top-left': { + top: 12, + left: 4, + position: 'absolute', + }, + + 'bottom-right': { + bottom: 4, + right: 4, + position: 'absolute', + }, + + 'bottom-left': { + bottom: 4, + left: 4, + position: 'absolute', + }, + }, + }, + + 'defaultProps': { + variant: 'top-right', + }, + + ':hover': { + bg: '$primary700', + }, + + ':active': { + bg: '$primary900', + }, + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledFormControl/StyledFormControlBox.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledFormControl/StyledFormControlBox.tsx new file mode 100644 index 0000000000..5ab1d69cde --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledFormControl/StyledFormControlBox.tsx @@ -0,0 +1,11 @@ +import { View } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled( + View, + { + flexDirection: 'column', + width: '100%', + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledFormControl/StyledFormControlError.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledFormControl/StyledFormControlError.tsx new file mode 100644 index 0000000000..b6bd723e68 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledFormControl/StyledFormControlError.tsx @@ -0,0 +1,13 @@ +import { styled } from '@gluestack-style/react'; +import { View } from 'react-native'; + +export default styled( + View, + { + flexDirection: 'row', + justifyContent: 'flex-start', + alignItems: 'center', + mt: '$2', + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledFormControl/StyledFormControlErrorIcon.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledFormControl/StyledFormControlErrorIcon.tsx new file mode 100644 index 0000000000..ed8dcb8cc7 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledFormControl/StyledFormControlErrorIcon.tsx @@ -0,0 +1,4 @@ +import { styled } from '@gluestack-style/react'; +import { View } from 'react-native'; + +export default styled(View, {}, {}); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledFormControl/StyledFormControlErrorText.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledFormControl/StyledFormControlErrorText.tsx new file mode 100644 index 0000000000..00341f4084 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledFormControl/StyledFormControlErrorText.tsx @@ -0,0 +1,16 @@ +import { styled } from '@gluestack-style/react'; +import { Text } from 'react-native'; + +export default styled( + Text, + { + fontSize: '$xs', + color: '$error600', + ml: '$1', + + _dark: { + color: '$error500', + }, + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledFormControl/StyledFormControlHelper.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledFormControl/StyledFormControlHelper.tsx new file mode 100644 index 0000000000..b6bd723e68 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledFormControl/StyledFormControlHelper.tsx @@ -0,0 +1,13 @@ +import { styled } from '@gluestack-style/react'; +import { View } from 'react-native'; + +export default styled( + View, + { + flexDirection: 'row', + justifyContent: 'flex-start', + alignItems: 'center', + mt: '$2', + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledFormControl/StyledFormControlHelperText.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledFormControl/StyledFormControlHelperText.tsx new file mode 100644 index 0000000000..6546901ce9 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledFormControl/StyledFormControlHelperText.tsx @@ -0,0 +1,15 @@ +import { styled } from '@gluestack-style/react'; +import { Text } from 'react-native'; + +export default styled( + Text, + { + fontSize: '$xs', + color: '$text500', + + _dark: { + color: '$txet400', + }, + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledFormControl/StyledFormControlLabel.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledFormControl/StyledFormControlLabel.tsx new file mode 100644 index 0000000000..837dc7a0e6 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledFormControl/StyledFormControlLabel.tsx @@ -0,0 +1,13 @@ +import { styled } from '@gluestack-style/react'; +import { View } from 'react-native'; + +export default styled( + View, + { + flexDirection: 'row', + justifyContent: 'flex-start', + alignItems: 'center', + mb: '$2', + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledFormControl/StyledFormControlLabelAstrick.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledFormControl/StyledFormControlLabelAstrick.tsx new file mode 100644 index 0000000000..dde3c135d2 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledFormControl/StyledFormControlLabelAstrick.tsx @@ -0,0 +1,13 @@ +import { styled } from '@gluestack-style/react'; +import { Text } from 'react-native'; +export default styled( + Text, + { + color: '$error600', + + _dark: { + color: '$error500', + }, + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledFormControl/StyledFormControlLabelText.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledFormControl/StyledFormControlLabelText.tsx new file mode 100644 index 0000000000..1e47ae247c --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledFormControl/StyledFormControlLabelText.tsx @@ -0,0 +1,16 @@ +import { styled } from '@gluestack-style/react'; +import { Text } from 'react-native'; + +export default styled( + Text, + { + fontSize: '$sm', + fontWeight: '$medium', + color: '$text500', + + _dark: { + color: '$text400', + }, + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledH1/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledH1/index.tsx new file mode 100644 index 0000000000..208af19ba7 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledH1/index.tsx @@ -0,0 +1,18 @@ +import { styled } from '@gluestack-style/react'; +import { H1 } from '@expo/html-elements'; + +export default styled( + H1, + { + fontWeight: '700', + fontSize: 36, + lineHeight: 44, + color: '$textLight900', + fontFamily: '$heading', + + _dark: { + color: '$textDark50', + }, + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledH2/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledH2/index.tsx new file mode 100644 index 0000000000..c4c4c5f8ea --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledH2/index.tsx @@ -0,0 +1,17 @@ +import { styled } from '@gluestack-style/react'; +import { H2 } from '@expo/html-elements'; + +export default styled( + H2, + { + fontWeight: '700', + fontSize: 24, + lineHeight: 36, + color: '$textLight800', + fontFamily: '$heading', + _dark: { + color: '$textDark100', + }, + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledH3/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledH3/index.tsx new file mode 100644 index 0000000000..e58fabd241 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledH3/index.tsx @@ -0,0 +1,18 @@ +import { styled } from '@gluestack-style/react'; +import { H3 } from '@expo/html-elements'; + +export default styled( + H3, + { + fontWeight: '700', + fontSize: 20, + lineHeight: 30, + color: '$textLight800', + fontFamily: '$heading', + + _dark: { + color: '$textDark100', + }, + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledH4/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledH4/index.tsx new file mode 100644 index 0000000000..4aa256c6d1 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledH4/index.tsx @@ -0,0 +1,18 @@ +import { styled } from '@gluestack-style/react'; +import { H4 } from '@expo/html-elements'; + +export default styled( + H4, + { + fontWeight: '700', + fontSize: 18, + lineHeight: 22, + color: '$textLight800', + fontFamily: '$heading', + + _dark: { + color: '$textDark100', + }, + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledH5/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledH5/index.tsx new file mode 100644 index 0000000000..bc4615221f --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledH5/index.tsx @@ -0,0 +1,18 @@ +import { styled } from '@gluestack-style/react'; +import { H5 } from '@expo/html-elements'; + +export default styled( + H5, + { + fontWeight: '700', + fontSize: 16, + lineHeight: 20, + color: '$textLight800', + fontFamily: '$heading', + + _dark: { + color: '$textDark100', + }, + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledHStack/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledHStack/index.tsx new file mode 100644 index 0000000000..d90f403412 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledHStack/index.tsx @@ -0,0 +1,14 @@ +import { styled } from '@gluestack-style/react'; +import { View } from 'react-native'; + +export default styled( + View, + { + flexDirection: 'row', + + defaultProps: { + space: 'md', + }, + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledHStackSpacer/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledHStackSpacer/index.tsx new file mode 100644 index 0000000000..9cd820a4d0 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledHStackSpacer/index.tsx @@ -0,0 +1,39 @@ +import { styled } from '@gluestack-style/react'; +import { View } from 'react-native'; + +export default styled( + View, + { + variants: { + size: { + 'xs': { + width: '$1', + }, + + '1.5': { + width: '$1.5', + }, + + 'sm': { + width: '$2', + }, + 3: { + width: '$3', + }, + + 'md': { + width: '$4', + }, + + 'lg': { + width: '$6', + }, + + 'xl': { + width: '$8', + }, + }, + }, + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledHeading/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledHeading/index.tsx new file mode 100644 index 0000000000..5e4240dbb2 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledHeading/index.tsx @@ -0,0 +1,60 @@ +import { styled } from '@gluestack-style/react'; +import { H1 } from '@expo/html-elements'; + +export default styled( + H1, + { + color: '$text900', + fontWeight: 'bold', + lineHeight: 20, + fontFamily: '$heading', + + variants: { + size: { + '4xl': { + fontSize: 60, + letterSpacing: 0.8, + color: '$amber100', + }, + + '3xl': { + fontSize: 48, + letterSpacing: 0.8, + }, + + '2xl': { + fontSize: 36, + }, + + 'xl': { + fontSize: 30, + }, + + 'lg': { + fontSize: 24, + }, + + 'md': { + fontSize: 20, + }, + + 'sm': { + fontSize: 16, + }, + + 'xs': { + fontSize: 14, + }, + }, + }, + + defaultProps: { + size: 'lg', + }, + + _dark: { + color: '$amber100', + }, + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledIcon/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledIcon/index.tsx new file mode 100644 index 0000000000..da09f7b3e4 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledIcon/index.tsx @@ -0,0 +1,31 @@ +import { styled } from '@gluestack-style/react'; +import { Svg } from 'react-native-svg'; + +export default styled( + Svg, + { + w: 20, + h: 20, + + variants: { + variant: { + modalHeader: { + // @ts-ignore + color: '$muted500', + h: 16, + w: 16, + }, + }, + }, + + _dark: { + // @ts-ignore + color: '$muted50', + h: 16, + w: 16, + }, + }, + { + ancestorStyle: ['_icon'], + } +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledIconButton/StyledIconButtonSpinner.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledIconButton/StyledIconButtonSpinner.tsx new file mode 100644 index 0000000000..bb77ff7100 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledIconButton/StyledIconButtonSpinner.tsx @@ -0,0 +1,14 @@ +import { styled } from '@gluestack-style/react'; +import { ActivityIndicator } from 'react-native'; + +export default styled( + ActivityIndicator, + { + defaultProps: { + color: 'white', + }, + }, + { + ancestorStyle: ['_spinner'], + } +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledIconButton/StyledIconButtonText.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledIconButton/StyledIconButtonText.tsx new file mode 100644 index 0000000000..9d97c0964d --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledIconButton/StyledIconButtonText.tsx @@ -0,0 +1,10 @@ +import { styled } from '@gluestack-style/react'; +import { Text } from 'react-native'; + +export default styled( + Text, + { + color: '$textDark50', + }, + { ancestorStyle: ['_text'] } +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledIconButton/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledIconButton/index.tsx new file mode 100644 index 0000000000..f88a29fc3a --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledIconButton/index.tsx @@ -0,0 +1,60 @@ +import { styled } from '@gluestack-style/react'; +import { Pressable } from 'react-native'; + +export default styled( + Pressable, + { + 'borderRadius': '$sm', + 'flexDirection': 'row', + 'justifyContent': 'center', + 'alignItems': 'center', + + 'variants': { + variant: { + primary: { + bg: 'transparent', + }, + }, + + size: { + md: { + p: '$0.5', + + _spinner: { + w: '$5', + h: '$5', + }, + }, + }, + }, + + 'defaultProps': { + size: 'md', + variant: 'primary', + }, + + '_web': { + 'outlineWidth': 0, + ':focusVisible': { + outlineWidth: '1', + boxShadow: `$secondary500 0px 0px 0px 1px`, + }, + }, + + ':disabled': { + opacity: 0.5, + }, + + '_dark': { + _web: { + ':focusVisible': { + outlineWidth: 0, + boxShadow: `$primary500 0px 0px 0px 2px`, + }, + }, + }, + }, + { + descendantStyle: ['_text', '_spinner'], + } +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledImage/StyledImageFallbackText.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledImage/StyledImageFallbackText.tsx new file mode 100644 index 0000000000..138fde4d2c --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledImage/StyledImageFallbackText.tsx @@ -0,0 +1,12 @@ +import { Text } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled( + Text, + { + color: '$blue900', + bg: '$amber500', + p: 10, + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledImage/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledImage/index.tsx new file mode 100644 index 0000000000..29028dd90a --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledImage/index.tsx @@ -0,0 +1,69 @@ +import { Image } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +// const sizes = { +// '2xs': { +// style: { +// w: '$6', +// h: '$6', +// }, +// }, +// 'xs': '10', +// 'sm': '16', +// 'md': '20', +// 'lg': '24', +// 'xl': '32', +// '2xl': '64', +// 'full': '100%', +// }; +export default styled( + Image, + { + maxWidth: '100%', + + variants: { + size: { + '2xs': { + w: '$6', + h: '$6', + }, + + 'xs': { + w: '$10', + h: '$10', + }, + + 'sm': { + w: '$16', + h: '$16', + }, + + 'md': { + w: '$20', + h: '$20', + }, + + 'lg': { + w: '$24', + h: '$24', + }, + + 'xl': { + w: '$32', + h: '$32', + }, + + '2xl': { + w: '$64', + h: '$64', + }, + + 'full': { + w: '100%', + h: '100%', + }, + }, + }, + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledInlineCode/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledInlineCode/index.tsx new file mode 100644 index 0000000000..35f3e6185d --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledInlineCode/index.tsx @@ -0,0 +1,22 @@ +import { styled } from '@gluestack-style/react'; +import { Code } from '@expo/html-elements'; + +export default styled( + Code, + { + color: '$primary400', + fontSize: '$md', + fontWeight: '$medium', + lineHeight: '$md', + px: 6, + py: 2, + bg: '$backgroundLight100', + fontFamily: '$mono', + borderRadius: 4, + + _dark: { + bg: '$backgroundDark800', + }, + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledInput/InputIcon.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledInput/InputIcon.tsx new file mode 100644 index 0000000000..6d4bd40386 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledInput/InputIcon.tsx @@ -0,0 +1,10 @@ +import { styled } from '@gluestack-style/react'; +import { View } from 'react-native'; + +export default styled( + View, + { + bg: '$secondary100', + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledInput/InputRoot.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledInput/InputRoot.tsx new file mode 100644 index 0000000000..cce1641846 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledInput/InputRoot.tsx @@ -0,0 +1,150 @@ +import { styled } from '@gluestack-style/react'; +import { View } from 'react-native'; + +export default styled( + View, + { + 'borderWidth': 1, + 'borderColor': '$muted300', + 'borderRadius': 4, + + '_input': { + _dark: { + color: '$lightText', + }, + }, + + 'variants': { + variant: { + rounded: { + borderRadius: 999, + + _input: { + borderRadius: 999, + }, + }, + + filled: { + borderWidth: 1, + bg: '$muted100', + borderColor: '$muted100', + + _dark: { + bg: '$muted800', + borderColor: '$muted800', + }, + }, + + underlined: { + 'borderWidth': 0, + 'borderRadius': 0, + 'pl': 0, + 'borderBottomWidth': 1, + + '_input': { + outlineWidth: 0, + }, + + ':focus': { + borderColor: '$primary600', + _web: { + boxShadow: '0 1px 0 0 #9333ea', + }, + }, + }, + + unstyled: { + 'borderWidth': 0, + + '_input': { + outlineWidth: 0, + }, + + ':focus': { + _web: { + boxShadow: '0 0 0 0', + }, + }, + }, + }, + + size: { + '2xl': { + _input: { + fontSize: 22, + }, + }, + + 'xl': { + _input: { + fontSize: 20, + }, + }, + + 'lg': { + _input: { + fontSize: 18, + }, + }, + + 'md': { + _input: { + fontSize: 16, + }, + }, + + 'sm': { + _input: { + fontSize: 14, + }, + }, + + 'xs': { + _input: { + fontSize: 12, + }, + }, + }, + }, + + '_web': { + _input: { + outlineWidth: '0', + outline: 'none', + cursor: 'auto', + }, + }, + + ':hover': { + borderColor: '$primary600', + }, + + ':focus': { + borderColor: '$primary600', + bg: 'transparent', + _web: { + boxShadow: '0 0 0 1px #9333ea', + }, + _input: {}, + }, + + ':disabled': { + 'bg': '$muted100', + + ':hover': { + borderColor: '$muted300', + }, + }, + + ':invalid': { + 'borderColor': '$error600', + + ':focus': { + _input: { + outlineColor: '$error600', + }, + }, + }, + }, + { descendantStyle: ['_input'] } +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledInput/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledInput/index.tsx new file mode 100644 index 0000000000..c17eba47b2 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledInput/index.tsx @@ -0,0 +1,17 @@ +import { styled } from '@gluestack-style/react'; +import { TextInput } from 'react-native'; + +export default styled( + TextInput, + { + px: '$4', + py: '$3', + color: '$darkText', + fontSize: 16, + + _dark: { + color: '$lightText', + }, + }, + { ancestorStyle: ['_input'], resolveProps: ['placeholderTextColor'] } +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledLI/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledLI/index.tsx new file mode 100644 index 0000000000..9a6d7dda7f --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledLI/index.tsx @@ -0,0 +1,23 @@ +//@ts-nocheck +import { styled } from '@gluestack-style/react'; +import { LI as LITemp } from '@expo/html-elements'; + +const LI = LITemp as any; + +export default styled( + LI, + { + display: 'flex', + flexDirection: 'row', + color: '$textLight700', + fontSize: '$md', + fontWight: '$normal', + lineHeight: '$md', + fontFamily: '$body', + + _dark: { + color: '$textDark300', + }, + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledLayout/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledLayout/index.tsx new file mode 100644 index 0000000000..4df2edb255 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledLayout/index.tsx @@ -0,0 +1,21 @@ +import { styled } from '@gluestack-style/react'; +import { View } from 'react-native'; + +export default styled( + View, + { + display: 'flex', + flexDirection: 'row', + // color: '$textLight700', + // fontSize: '$md', + // fontWight: '$normal', + // lineHeight: '$md', + // fontFamily: '$body', + + _dark: { + // @ts-ignore + color: '$textDark300', + }, + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledLinearGradient/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledLinearGradient/index.tsx new file mode 100644 index 0000000000..30190a7fd5 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledLinearGradient/index.tsx @@ -0,0 +1,10 @@ +import { styled } from '@gluestack-style/react'; +import { LinearGradient } from 'expo-linear-gradient'; + +export default styled( + LinearGradient, + { + _web: { outlineWidth: '1000px' }, + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledLink/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledLink/index.tsx new file mode 100644 index 0000000000..2014f32ae0 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledLink/index.tsx @@ -0,0 +1,4 @@ +import { styled } from '@gluestack-style/react'; +import { Pressable } from 'react-native'; + +export default styled(Pressable, {}, {}); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledLink/index.web.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledLink/index.web.tsx new file mode 100644 index 0000000000..ed8dcb8cc7 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledLink/index.web.tsx @@ -0,0 +1,4 @@ +import { styled } from '@gluestack-style/react'; +import { View } from 'react-native'; + +export default styled(View, {}, {}); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledMenu/StyledMenuBackdrop.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledMenu/StyledMenuBackdrop.tsx new file mode 100644 index 0000000000..ac7ba7e707 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledMenu/StyledMenuBackdrop.tsx @@ -0,0 +1,14 @@ +import { Pressable } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled( + Pressable, + { + position: 'absolute', + top: 0, + bottom: 0, + left: 0, + right: 0, + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledMenu/StyledMenuContent.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledMenu/StyledMenuContent.tsx new file mode 100644 index 0000000000..7c646deda4 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledMenu/StyledMenuContent.tsx @@ -0,0 +1,28 @@ +// import { Popper } from '@gluestack-style/react'; +import { styled } from '@gluestack-style/react'; +import { View } from 'react-native'; + +export default styled( + View, + { + w: 200, + py: '$2', + rounded: '$sm', + shadowColor: 'black', + + shadowOffset: { + width: 0, + height: 3, + }, + + shadowOpacity: 0.29, + shadowRadius: 4.65, + elevation: 7, + bg: '$muted50', + + _dark: { + bg: '$muted800', + }, + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledMenu/StyledMenuGroup.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledMenu/StyledMenuGroup.tsx new file mode 100644 index 0000000000..d0ae9e826e --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledMenu/StyledMenuGroup.tsx @@ -0,0 +1,4 @@ +import { View } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled(View, {}, {}); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledMenu/StyledMenuGroupTitle.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledMenu/StyledMenuGroupTitle.tsx new file mode 100644 index 0000000000..d0ae9e826e --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledMenu/StyledMenuGroupTitle.tsx @@ -0,0 +1,4 @@ +import { View } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled(View, {}, {}); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledMenu/StyledMenuItem.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledMenu/StyledMenuItem.tsx new file mode 100644 index 0000000000..a09a38fef0 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledMenu/StyledMenuItem.tsx @@ -0,0 +1,49 @@ +import { Pressable } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled( + Pressable, + { + 'px': '$3', + 'py': '$2', + + ':disabled': { + opacity: 0.4, + }, + + ':hover': { + bg: '$muted200', + }, + + ':active': { + bg: '$muted400', + }, + + ':focus': { + bg: '$gray300', + }, + + '_dark': { + ':hover': { + bg: '$muted700', + }, + + ':active': { + bg: '$muted600', + }, + + ':focus': { + bg: '$muted500', + }, + }, + + '_web': { + 'outlineWidth': 0, + + ':focusVisible': { + bg: '$muted300', + }, + }, + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledMenu/StyledMenuItemOption.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledMenu/StyledMenuItemOption.tsx new file mode 100644 index 0000000000..47eb80a8bf --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledMenu/StyledMenuItemOption.tsx @@ -0,0 +1,10 @@ +import { View } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled( + View, + { + bg: '$red900', + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledMenu/StyledMenuItemOptionIndicator.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledMenu/StyledMenuItemOptionIndicator.tsx new file mode 100644 index 0000000000..15afeb4830 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledMenu/StyledMenuItemOptionIndicator.tsx @@ -0,0 +1,4 @@ +import { Pressable } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled(Pressable, {}, {}); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledMenu/StyledMenuItemOptionLabel.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledMenu/StyledMenuItemOptionLabel.tsx new file mode 100644 index 0000000000..87bd4b4b5b --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledMenu/StyledMenuItemOptionLabel.tsx @@ -0,0 +1,10 @@ +import { View } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled( + View, + { + bg: '$green500', + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledMenu/StyledMenuOptionsGroup.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledMenu/StyledMenuOptionsGroup.tsx new file mode 100644 index 0000000000..d0ae9e826e --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledMenu/StyledMenuOptionsGroup.tsx @@ -0,0 +1,4 @@ +import { View } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled(View, {}, {}); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledMenu/StyledMenuTrigger.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledMenu/StyledMenuTrigger.tsx new file mode 100644 index 0000000000..d0ae9e826e --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledMenu/StyledMenuTrigger.tsx @@ -0,0 +1,4 @@ +import { View } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled(View, {}, {}); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledMenu/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledMenu/index.tsx new file mode 100644 index 0000000000..de69e0b467 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledMenu/index.tsx @@ -0,0 +1,11 @@ +import { View } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled( + View, + { + h: '100%', + w: '100%', + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledModal/StyledModalBackdrop.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledModal/StyledModalBackdrop.tsx new file mode 100644 index 0000000000..fbda111a8f --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledModal/StyledModalBackdrop.tsx @@ -0,0 +1,16 @@ +import { Pressable } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled( + Pressable, + { + position: 'absolute', + left: 0, + top: 0, + opacity: 0.3, + right: 0, + bottom: 0, + bg: '$black', + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledModal/StyledModalBody.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledModal/StyledModalBody.tsx new file mode 100644 index 0000000000..c3bfddb256 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledModal/StyledModalBody.tsx @@ -0,0 +1,10 @@ +import { ScrollView } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled( + ScrollView, + { + padding: '$4', + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledModal/StyledModalCloseButton.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledModal/StyledModalCloseButton.tsx new file mode 100644 index 0000000000..52c0be6a91 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledModal/StyledModalCloseButton.tsx @@ -0,0 +1,39 @@ +import { Pressable } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled( + Pressable, + { + 'position': 'absolute', + 'right': 10, + 'top': 10, + 'zIndex': 1, + 'p': '$2', + 'bg': 'transparent', + 'rounded': '$sm', + + ':hover': { + bg: '$muted200', + }, + + ':active': { + bg: '$muted300', + }, + + '_dark': { + ':hover': { + bg: '$muted700', + }, + + ':active': { + bg: '$muted600', + }, + }, + + '_web': { + outlineWidth: 0, + cursor: 'pointer', + }, + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledModal/StyledModalContent.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledModal/StyledModalContent.tsx new file mode 100644 index 0000000000..95c392e5b1 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledModal/StyledModalContent.tsx @@ -0,0 +1,29 @@ +import { View, Dimensions } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled( + View, + { + shadowColor: 'black', + + shadowOffset: { + width: 0, + height: 1, + }, + + shadowOpacity: 0.2, + shadowRadius: 1.41, + elevation: 2, + // @ts-ignore + maxHeight: `${Dimensions.get('window').height - 150}px`, + rounded: '$lg', + overflow: 'hidden', + bg: '$muted50', + maxWidth: 450, + + _dark: { + bg: '$muted800', + }, + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledModal/StyledModalFooter.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledModal/StyledModalFooter.tsx new file mode 100644 index 0000000000..78132f02e1 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledModal/StyledModalFooter.tsx @@ -0,0 +1,21 @@ +import { View } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled( + View, + { + p: '$4', + flexDirection: 'row', + justifyContent: 'flex-end', + flexWrap: 'wrap', + borderTopWidth: 1, + bg: '$white', + borderColor: '$muted200', + + _dark: { + bg: '$muted800', + borderColor: '$muted700', + }, + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledModal/StyledModalHeader.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledModal/StyledModalHeader.tsx new file mode 100644 index 0000000000..a8156f7168 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledModal/StyledModalHeader.tsx @@ -0,0 +1,18 @@ +import { View } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled( + View, + { + p: '$4', + borderBottomWidth: 1, + bg: '$muted50', + borderColor: '$muted200', + + _dark: { + bg: '$muted800', + borderColor: '$muted700', + }, + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledModal/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledModal/index.tsx new file mode 100644 index 0000000000..1d5fa793ab --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledModal/index.tsx @@ -0,0 +1,18 @@ +import { View } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled( + View, + { + width: '100%', + height: '100%', + justifyContent: 'center', + alignItems: 'center', + defaultProps: {}, + + props: { + pointerEvents: 'box-none', + }, + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledNav/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledNav/index.tsx new file mode 100644 index 0000000000..f41133ce64 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledNav/index.tsx @@ -0,0 +1,4 @@ +import { styled } from '@gluestack-style/react'; +import { Nav } from '@expo/html-elements'; + +export default styled(Nav, {}, {}); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledOverlay/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledOverlay/index.tsx new file mode 100644 index 0000000000..d0ae9e826e --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledOverlay/index.tsx @@ -0,0 +1,4 @@ +import { View } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled(View, {}, {}); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledPopover/StyledPopover.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledPopover/StyledPopover.tsx new file mode 100644 index 0000000000..de69e0b467 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledPopover/StyledPopover.tsx @@ -0,0 +1,11 @@ +import { View } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled( + View, + { + h: '100%', + w: '100%', + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledPopover/StyledPopoverArrow.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledPopover/StyledPopoverArrow.tsx new file mode 100644 index 0000000000..d0ae9e826e --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledPopover/StyledPopoverArrow.tsx @@ -0,0 +1,4 @@ +import { View } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled(View, {}, {}); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledPopover/StyledPopoverBackdrop.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledPopover/StyledPopoverBackdrop.tsx new file mode 100644 index 0000000000..f6f6e8b150 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledPopover/StyledPopoverBackdrop.tsx @@ -0,0 +1,16 @@ +import { Pressable } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled( + Pressable, + { + position: 'absolute', + left: 0, + top: 0, + opacity: 0.1, + right: 0, + bottom: 0, + bg: '$black', + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledPopover/StyledPopoverBody.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledPopover/StyledPopoverBody.tsx new file mode 100644 index 0000000000..c3bfddb256 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledPopover/StyledPopoverBody.tsx @@ -0,0 +1,10 @@ +import { ScrollView } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled( + ScrollView, + { + padding: '$4', + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledPopover/StyledPopoverCloseButton.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledPopover/StyledPopoverCloseButton.tsx new file mode 100644 index 0000000000..52c0be6a91 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledPopover/StyledPopoverCloseButton.tsx @@ -0,0 +1,39 @@ +import { Pressable } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled( + Pressable, + { + 'position': 'absolute', + 'right': 10, + 'top': 10, + 'zIndex': 1, + 'p': '$2', + 'bg': 'transparent', + 'rounded': '$sm', + + ':hover': { + bg: '$muted200', + }, + + ':active': { + bg: '$muted300', + }, + + '_dark': { + ':hover': { + bg: '$muted700', + }, + + ':active': { + bg: '$muted600', + }, + }, + + '_web': { + outlineWidth: 0, + cursor: 'pointer', + }, + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledPopover/StyledPopoverContent.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledPopover/StyledPopoverContent.tsx new file mode 100644 index 0000000000..f3436dd685 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledPopover/StyledPopoverContent.tsx @@ -0,0 +1,26 @@ +import { View } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled( + View, + { + shadowColor: 'black', + shadowOffset: { + width: 0, + height: 1, + }, + + shadowOpacity: 0.2, + shadowRadius: 1.41, + elevation: 2, + rounded: '$lg', + overflow: 'hidden', + bg: '$muted50', + maxWidth: 450, + + _dark: { + bg: '$muted800', + }, + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledPopover/StyledPopoverFooter.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledPopover/StyledPopoverFooter.tsx new file mode 100644 index 0000000000..78132f02e1 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledPopover/StyledPopoverFooter.tsx @@ -0,0 +1,21 @@ +import { View } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled( + View, + { + p: '$4', + flexDirection: 'row', + justifyContent: 'flex-end', + flexWrap: 'wrap', + borderTopWidth: 1, + bg: '$white', + borderColor: '$muted200', + + _dark: { + bg: '$muted800', + borderColor: '$muted700', + }, + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledPopover/StyledPopoverHeader.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledPopover/StyledPopoverHeader.tsx new file mode 100644 index 0000000000..99db06292b --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledPopover/StyledPopoverHeader.tsx @@ -0,0 +1,18 @@ +import { View } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled( + View, + { + p: '$4', + borderBottomWidth: 1, + bg: '$white', + borderColor: '$muted200', + + _dark: { + bg: '$muted800', + borderColor: '$muted700', + }, + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledPressable/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledPressable/index.tsx new file mode 100644 index 0000000000..7a3048d1bf --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledPressable/index.tsx @@ -0,0 +1,22 @@ +import { styled } from '@gluestack-style/react'; +import { Pressable } from 'react-native'; + +export default styled( + Pressable, + { + _web: { + 'outlineWidth': 0, + 'outline': 'none', + + ':focus': { + outlineWidth: 0, + boxShadow: '#c084fc 0px 0px 0px 2px', + + _dark: { + boxShadow: '#a855f7 0px 0px 0px 2px', + }, + }, + }, + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledProgress/StyledProgressFilledTrack.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledProgress/StyledProgressFilledTrack.tsx new file mode 100644 index 0000000000..67276f7111 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledProgress/StyledProgressFilledTrack.tsx @@ -0,0 +1,16 @@ +import { styled } from '@gluestack-style/react'; +import { View } from 'react-native'; + +export default styled( + View, + { + bg: '$primary600', + borderRadius: 999, + h: '$2', + + _dark: { + bg: '$primary400', + }, + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledProgress/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledProgress/index.tsx new file mode 100644 index 0000000000..3dee8269c0 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledProgress/index.tsx @@ -0,0 +1,17 @@ +import { styled } from '@gluestack-style/react'; +import { View } from 'react-native'; + +export const StyledProgress = styled( + View, + { + bg: '$muted200', + h: '$2', + borderRadius: 999, + w: '100%', + + _dark: { + bg: '$muted500', + }, + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledRadio/StyledRadioGroup.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledRadio/StyledRadioGroup.tsx new file mode 100644 index 0000000000..ed8dcb8cc7 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledRadio/StyledRadioGroup.tsx @@ -0,0 +1,4 @@ +import { styled } from '@gluestack-style/react'; +import { View } from 'react-native'; + +export default styled(View, {}, {}); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledRadio/StyledRadioIcon.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledRadio/StyledRadioIcon.tsx new file mode 100644 index 0000000000..2c8dd901da --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledRadio/StyledRadioIcon.tsx @@ -0,0 +1,16 @@ +import { View } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled( + View, + { + 'alignItems': 'center', + + ':disabled': { + opacity: 0.6, + }, + }, + { + ancestorStyle: ['_icon'], + } +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledRadio/StyledRadioIndicator.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledRadio/StyledRadioIndicator.tsx new file mode 100644 index 0000000000..c7de00e551 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledRadio/StyledRadioIndicator.tsx @@ -0,0 +1,103 @@ +import { View } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled( + View, + { + 'justifyContent': 'center', + 'alignItems': 'center', + 'bg': 'transparent', + 'borderColor': '$muted400', + 'ml': '$2', + 'borderWidth': 2, + 'borderRadius': 999, + + '_web': { + ':focusVisible': { + outlineWidth: '2px', + outlineColor: '$primary400', + outlineStyle: 'solid', + }, + }, + + ':hover': { + 'borderColor': '$muted500', + + ':disabled': { + borderColor: '$muted400', + }, + + ':checked': { + borderColor: '$primary600', + }, + }, + + ':disabled': { + opacity: 0.6, + }, + + ':invalid': { + borderColor: '$error600', + }, + + ':checked': { + 'borderColor': '$primary600', + + ':hover': { + 'borderColor': '$primary700', + + ':disabled': { + borderColor: '$primary600', + }, + }, + + ':disabled': { + borderColor: '$primary600', + }, + }, + + '_dark': { + 'borderColor': '$muted500', + 'bg': '$muted.900', + + ':hover': { + 'borderColor': '$muted400', + + ':disabled': { + borderColor: '$muted500', + }, + + ':checked': { + borderColor: '$primary600', + }, + }, + + ':disabled': { + opacity: 0.6, + }, + + ':invalid': { + borderColor: '$error500', + }, + + ':checked': { + 'borderColor': '$primary600', + + ':hover': { + 'borderColor': '$primary700', + + ':disabled': { + borderColor: '$primary600', + }, + }, + + ':disabled': { + borderColor: '$primary600', + }, + }, + }, + }, + { + ancestorStyle: ['_indicator'], + } +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledRadio/StyledRadioLabel.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledRadio/StyledRadioLabel.tsx new file mode 100644 index 0000000000..ba1c919b8d --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledRadio/StyledRadioLabel.tsx @@ -0,0 +1,17 @@ +import { Text } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled( + Text, + { + color: '$text900', + ml: '$2', + + _dark: { + color: '$text50', + }, + }, + { + ancestorStyle: ['_text'], + } +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledRadio/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledRadio/index.tsx new file mode 100644 index 0000000000..f21afa212b --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledRadio/index.tsx @@ -0,0 +1,75 @@ +import { Pressable } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled( + Pressable, + { + p: '$2', + flexDirection: 'row', + justifyContent: 'center', + alignItems: 'center', + + _icon: { + color: '$primary600', + }, + + variants: { + size: { + lg: { + _icon: { + height: '$4', + width: '$4', + }, + + _text: { + fontSize: '$lg', + }, + + _indicator: { + h: '$6', + w: '$6', + }, + }, + + md: { + _icon: { + height: '$3', + width: '$3', + }, + + _text: { + fontSize: '$md', + }, + + _indicator: { + h: '$5', + w: '$5', + }, + }, + + sm: { + _icon: { + height: '$2', + width: '$2', + }, + + _text: { + fontSize: '$sm', + }, + + _indicator: { + h: '$4', + w: '$4', + }, + }, + }, + }, + + defaultProps: { + size: 'md', + }, + }, + { + descendantStyle: ['_icon', '_text', '_indicator'], + } +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledRadio/index.web.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledRadio/index.web.tsx new file mode 100644 index 0000000000..530981f3da --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledRadio/index.web.tsx @@ -0,0 +1,76 @@ +import { View } from 'react-native'; +import { styled } from '@gluestack-style/react'; + +export default styled( + View, + { + p: '$1', + flexDirection: 'row', + justifyContent: 'flex-start', + alignItems: 'flex-start', + + variants: { + size: { + lg: { + _icon: { + height: '$4', + width: '$4', + }, + + _text: { + fontSize: '$lg', + }, + + _indicator: { + h: '$6', + w: '$6', + }, + }, + + md: { + _icon: { + height: '$3', + width: '$3', + }, + + _text: { + fontSize: '$md', + }, + + _indicator: { + h: '$5', + w: '$5', + }, + }, + + sm: { + _icon: { + height: '$2', + width: '$2', + }, + + _text: { + fontSize: '$sm', + }, + + _indicator: { + h: '$4', + w: '$4', + }, + }, + }, + }, + + defaultProps: { + size: 'md', + }, + _web: { + ':disabled': { + cursor: 'not-allowed', + }, + }, + }, + { + descendantStyle: ['_icon', '_text', '_indicator'], + } +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledSelect/StyledSelectIcon.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledSelect/StyledSelectIcon.tsx new file mode 100644 index 0000000000..f0adc8f1d3 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledSelect/StyledSelectIcon.tsx @@ -0,0 +1,11 @@ +import { styled } from '@gluestack-style/react'; +import { View } from 'react-native'; + +export default styled( + View, + { + w: 16, + h: 16, + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledSelect/StyledSelectItem.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledSelect/StyledSelectItem.tsx new file mode 100644 index 0000000000..7e72acb833 --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledSelect/StyledSelectItem.tsx @@ -0,0 +1,12 @@ +import { styled } from '@gluestack-style/react'; +import { View } from 'react-native'; + +export default styled( + View, + { + w: 10, + h: 10, + bg: '$amber.700', + }, + {} +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledSelect/StyledSelectItemList.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledSelect/StyledSelectItemList.tsx new file mode 100644 index 0000000000..e8185697ae --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledSelect/StyledSelectItemList.tsx @@ -0,0 +1,15 @@ +import { styled } from '@gluestack-style/react'; +import { TextInput } from 'react-native'; + +export default styled( + TextInput, + { + fontSize: 16, + color: '$text900', + + _dark: { + color: '$text50', + }, + }, + { ancestorStyle: ['_itemList'] } +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledSelect/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledSelect/index.tsx new file mode 100644 index 0000000000..ca8506ba0b --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledSelect/index.tsx @@ -0,0 +1,112 @@ +import { styled } from '@gluestack-style/react'; +import { View } from 'react-native'; + +export default styled( + View, + { + 'flexDirection': 'row', + 'justifyContent': 'space-between', + 'alignItems': 'center', + 'borderRadius': 4, + 'borderWidth': 1, + 'borderColor': '$trueGray300', + 'flex': 1, + 'w': '100%', + 'h': '100%', + 'py': 8, + 'px': 12, + + 'variants': { + size: { + '2xl': { + _itemList: { + fontSize: 22, + }, + }, + + 'xl': { + _itemList: { + fontSize: 20, + }, + }, + + 'lg': { + _itemList: { + fontSize: 18, + }, + }, + + 'md': { + _itemList: { + fontSize: 16, + }, + }, + + 'sm': { + _itemList: { + fontSize: 14, + }, + }, + + 'xs': { + _itemList: { + fontSize: 12, + }, + }, + }, + }, + + ':hover': { + borderColor: '$primary600', + }, + + ':disabled': { + bg: '$muted100', + }, + + ':invalid': { + borderColor: '$error600', + }, + + ':active': { + _web: { + 'outlineWidth': 0, + 'outline': 'none', + 'boxShadow': '0 0 0 1px #9333ea', + 'borderColor': '$primary600', + + ':invalid': { + boxShadow: '0 0 0 1px red', + }, + }, + }, + + '_dark': { + ':hover': { + borderColor: '$primary500', + }, + + ':disabled': { + bg: '$muted800', + opacity: 0.8, + }, + + ':invalid': { + borderColor: '$error500', + }, + + ':active': { + _web: { + 'boxShadow': '0 0 0 1px #a855f7', + + ':invalid': { + boxShadow: '0 0 0 1px red', + }, + }, + }, + }, + }, + { + descendantStyle: ['_itemList'], + } +); diff --git a/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledSelectItem/index.tsx b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledSelectItem/index.tsx new file mode 100644 index 0000000000..83faf3446e --- /dev/null +++ b/example/storybook-nativewind/src/components/Checkbox/design-system/src/styled-components/StyledSelectItem/index.tsx @@ -0,0 +1,15 @@ +import React from 'react'; +import { styled } from '@gluestack-style/react'; + +const Option = ({ ...props }) => { + return