diff --git a/expo-app/components/ui/accordion/index.tsx b/expo-app/components/ui/accordion/index.tsx index ca4711a7..7dbe6f8f 100644 --- a/expo-app/components/ui/accordion/index.tsx +++ b/expo-app/components/ui/accordion/index.tsx @@ -1,7 +1,6 @@ 'use client'; -import React, { useMemo } from 'react'; +import React from 'react'; import { createAccordion } from '@gluestack-ui/accordion'; -import { Svg } from 'react-native-svg'; import { View, Pressable, Text, Platform, TextProps } from 'react-native'; import { tva } from '@gluestack-ui/nativewind-utils/tva'; import type { VariantProps } from '@gluestack-ui/nativewind-utils'; @@ -9,9 +8,9 @@ import { withStyleContext, useStyleContext, } from '@gluestack-ui/nativewind-utils/withStyleContext'; -import { withStyleContextAndStates } from '@gluestack-ui/nativewind-utils/withStyleContextAndStates'; import { H3 } from '@expo/html-elements'; import { cssInterop } from 'nativewind'; +import { PrimitiveIcon, UIIcon } from '@gluestack-ui/icon'; const SCOPE = 'ACCORDION'; /** Styles */ @@ -30,7 +29,9 @@ const accordionStyle = tva({ }, }, }); + const accordionItemStyle = tva({ + base: '', parentVariants: { variant: { filled: 'bg-background-0', @@ -65,7 +66,7 @@ const accordionContentTextStyle = tva({ base: 'text-typography-700 font-normal', parentVariants: { size: { - sm: 'text-sm ', + sm: 'text-sm', md: 'text-base', lg: 'text-lg', }, @@ -75,79 +76,13 @@ const accordionHeaderStyle = tva({ base: 'mx-0 my-0', }); const accordionContentStyle = tva({ - base: 'px-5 mt-2 pb-5', + base: 'mt-4', }); const accordionTriggerStyle = tva({ - base: 'w-full py-5 px-5 flex-row justify-between items-center web:outline-none focus:outline-none data-[disabled=true]:opacity-40 data-[disabled=true]:cursor-not-allowed data-[focus-visible=true]:bg-background-50', + base: 'w-full flex-row justify-between items-center web:outline-none focus:outline-none data-[disabled=true]:opacity-40 data-[disabled=true]:cursor-not-allowed data-[focus-visible=true]:bg-background-50 py-3 px-4', }); -type IPrimitiveIcon = { - height?: number | string; - width?: number | string; - fill?: string; - color?: string; - size?: number | string; - stroke?: string; - as?: React.ElementType; - className?: string; -}; - -const PrimitiveIcon = React.forwardRef< - React.ElementRef, - IPrimitiveIcon & React.ComponentPropsWithoutRef ->( - ( - { - height, - width, - fill, - color, - size, - stroke = 'currentColor', - as: AsComp, - ...props - }, - ref - ) => { - const sizeProps = useMemo(() => { - if (size) return { size }; - if (height && width) return { height, width }; - if (height) return { height }; - if (width) return { width }; - return {}; - }, [size, height, width]); - - const colorProps = - stroke === 'currentColor' && color !== undefined ? color : stroke; - - if (AsComp) { - return ( - - ); - } - return ( - - ); - } -); - -const Root = - Platform.OS === 'web' - ? withStyleContext(View, SCOPE) - : withStyleContextAndStates(View, SCOPE); +const Root = withStyleContext(View, SCOPE); const Header = ( Platform.OS === 'web' ? H3 : View @@ -159,30 +94,20 @@ const UIAccordion = createAccordion({ Item: View, Header: Header, Trigger: Pressable, - Icon: PrimitiveIcon, + Icon: UIIcon, TitleText: Text, ContentText: Text, Content: View, }); -cssInterop(UIAccordion, { className: 'style' }); -cssInterop(UIAccordion.Item, { className: 'style' }); -cssInterop(UIAccordion.Header, { className: 'style' }); -cssInterop(UIAccordion.Trigger, { className: 'style' }); -cssInterop(UIAccordion.Icon, { className: 'style' }); -cssInterop(UIAccordion.TitleText, { className: 'style' }); -cssInterop(UIAccordion.Content, { className: 'style' }); -cssInterop(UIAccordion.ContentText, { className: 'style' }); -// @ts-ignore -cssInterop(UIAccordion.Icon, { +cssInterop(PrimitiveIcon, { className: { target: 'style', nativeStyleToProp: { height: true, width: true, - // @ts-ignore fill: true, - color: true, + color: 'classNameColor', stroke: true, }, }, diff --git a/expo-app/components/ui/actionsheet/index.tsx b/expo-app/components/ui/actionsheet/index.tsx index e80735b9..0dc14763 100644 --- a/expo-app/components/ui/actionsheet/index.tsx +++ b/expo-app/components/ui/actionsheet/index.tsx @@ -1,7 +1,6 @@ 'use client'; -import React, { useMemo } from 'react'; +import React from 'react'; import { H4 } from '@expo/html-elements'; -import { Svg } from 'react-native-svg'; import { createActionsheet } from '@gluestack-ui/actionsheet'; import { Pressable, @@ -11,13 +10,11 @@ import { VirtualizedList, FlatList, SectionList, - Platform, PressableProps, } from 'react-native'; - +import { PrimitiveIcon, UIIcon } from '@gluestack-ui/icon'; import { tva } from '@gluestack-ui/nativewind-utils/tva'; import type { VariantProps } from '@gluestack-ui/nativewind-utils'; -import { withStates } from '@gluestack-ui/nativewind-utils/withStates'; import { cssInterop } from 'nativewind'; import { Motion, @@ -25,68 +22,6 @@ import { createMotionAnimatedComponent, } from '@legendapp/motion'; -type IPrimitiveIcon = { - height?: number | string; - width?: number | string; - fill?: string; - color?: string; - size?: number | string; - stroke?: string; - as?: React.ElementType; - className?: string; -}; -const PrimitiveIcon = React.forwardRef< - React.ElementRef, - IPrimitiveIcon & React.ComponentPropsWithoutRef ->( - ( - { - height, - width, - fill, - color, - size, - stroke = 'currentColor', - as: AsComp, - ...props - }, - ref - ) => { - const sizeProps = useMemo(() => { - if (size) return { size }; - if (height && width) return { height, width }; - if (height) return { height }; - if (width) return { width }; - return {}; - }, [size, height, width]); - - const colorProps = - stroke === 'currentColor' && color !== undefined ? color : stroke; - - if (AsComp) { - return ( - - ); - } - return ( - - ); - } -); - const ItemWrapper = React.forwardRef< React.ElementRef, PressableProps @@ -99,7 +34,7 @@ const AnimatedPressable = createMotionAnimatedComponent(Pressable); export const UIActionsheet = createActionsheet({ Root: View, Content: Motion.View, - Item: Platform.OS === 'web' ? ItemWrapper : withStates(ItemWrapper), + Item: ItemWrapper, ItemText: Text, DragIndicator: View, IndicatorWrapper: View, @@ -109,7 +44,7 @@ export const UIActionsheet = createActionsheet({ FlatList: FlatList, SectionList: SectionList, SectionHeaderText: H4, - Icon: PrimitiveIcon, + Icon: UIIcon, AnimatePresence: AnimatePresence, }); @@ -142,15 +77,15 @@ cssInterop(UIActionsheet.FlatList, { }); cssInterop(UIActionsheet.SectionList, { className: 'style' }); cssInterop(UIActionsheet.SectionHeaderText, { className: 'style' }); -cssInterop(UIActionsheet.Icon, { + +cssInterop(PrimitiveIcon, { className: { target: 'style', nativeStyleToProp: { height: true, width: true, - // @ts-ignore fill: true, - color: true, + color: 'classNameColor', stroke: true, }, }, diff --git a/expo-app/components/ui/alert-dialog/index.tsx b/expo-app/components/ui/alert-dialog/index.tsx index 457db9c6..2bd63535 100644 --- a/expo-app/components/ui/alert-dialog/index.tsx +++ b/expo-app/components/ui/alert-dialog/index.tsx @@ -6,7 +6,7 @@ import { withStyleContext, useStyleContext, } from '@gluestack-ui/nativewind-utils/withStyleContext'; -import { withStyleContextAndStates } from '@gluestack-ui/nativewind-utils/withStyleContextAndStates'; + import { cssInterop } from 'nativewind'; import type { VariantProps } from '@gluestack-ui/nativewind-utils'; import { @@ -14,17 +14,14 @@ import { AnimatePresence, createMotionAnimatedComponent, } from '@legendapp/motion'; -import { View, Pressable, ScrollView, Platform } from 'react-native'; +import { View, Pressable, ScrollView } from 'react-native'; const AnimatedPressable = createMotionAnimatedComponent(Pressable); const SCOPE = 'ALERT_DIALOG'; const UIAccessibleAlertDialog = createAlertDialog({ - Root: - Platform.OS === 'web' - ? withStyleContext(View, SCOPE) - : withStyleContextAndStates(View, SCOPE), + Root: withStyleContext(View, SCOPE), Body: ScrollView, Content: Motion.View, CloseButton: Pressable, @@ -34,17 +31,8 @@ const UIAccessibleAlertDialog = createAlertDialog({ AnimatePresence: AnimatePresence, }); -cssInterop(UIAccessibleAlertDialog, { className: 'style' }); -cssInterop(UIAccessibleAlertDialog.Content, { className: 'style' }); -cssInterop(UIAccessibleAlertDialog.CloseButton, { className: 'style' }); -cssInterop(UIAccessibleAlertDialog.Header, { className: 'style' }); -cssInterop(UIAccessibleAlertDialog.Footer, { className: 'style' }); -cssInterop(UIAccessibleAlertDialog.Body, { - className: 'style', - contentContainerClassName: 'contentContainerStyle', - indicatorClassName: 'indicatorStyle', -}); -cssInterop(UIAccessibleAlertDialog.Backdrop, { className: 'style' }); +cssInterop(Motion.View, { className: 'style' }); +cssInterop(AnimatedPressable, { className: 'style' }); const alertDialogStyle = tva({ base: 'group/modal w-full h-full justify-center items-center web:pointer-events-none', diff --git a/expo-app/components/ui/alert/index.tsx b/expo-app/components/ui/alert/index.tsx index f98aceb9..90a2dfe9 100644 --- a/expo-app/components/ui/alert/index.tsx +++ b/expo-app/components/ui/alert/index.tsx @@ -6,10 +6,10 @@ import { withStyleContext, useStyleContext, } from '@gluestack-ui/nativewind-utils/withStyleContext'; -import React, { useMemo } from 'react'; -import { Svg } from 'react-native-svg'; +import React from 'react'; import { cssInterop } from 'nativewind'; import type { VariantProps } from '@gluestack-ui/nativewind-utils'; +import { PrimitiveIcon, UIIcon } from '@gluestack-ui/icon'; const SCOPE = 'ALERT'; @@ -33,7 +33,7 @@ const alertStyle = tva({ }); const alertTextStyle = tva({ - base: 'flex-1 font-normal font-body', + base: 'font-normal font-body', variants: { isTruncated: { @@ -100,77 +100,25 @@ const alertIconStyle = tva({ warning: 'text-warning-800', success: 'text-success-800', info: 'text-info-800', - muted: 'text-secondary-800', + muted: 'text-background-800', }, }, }); -type IPrimitiveIcon = React.ComponentPropsWithoutRef & { - height?: number | string; - width?: number | string; - fill?: string; - color?: string; - size?: number | string; - stroke?: string; - as?: React.ElementType; - className?: string; -}; - -const PrimitiveIcon = React.forwardRef< - React.ElementRef, - IPrimitiveIcon ->(({ height, width, fill, color, size, stroke, as: AsComp, ...props }, ref) => { - const sizeProps = useMemo(() => { - if (size) return { size }; - if (height && width) return { height, width }; - if (height) return { height }; - if (width) return { width }; - return {}; - }, [size, height, width]); - - let colorProps = {}; - if (color) { - colorProps = { ...colorProps, color: color }; - } - if (stroke) { - colorProps = { ...colorProps, stroke: stroke }; - } - if (fill) { - colorProps = { ...colorProps, fill: fill }; - } - if (AsComp) { - return ; - } - return ( - - ); -}); - -const IconWrapper = React.forwardRef< - React.ElementRef, - IPrimitiveIcon ->(({ ...props }, ref) => { - return ; -}); - export const UIAlert = createAlert({ Root: withStyleContext(View, SCOPE), Text: Text, - Icon: IconWrapper, + Icon: UIIcon, }); -cssInterop(UIAlert, { className: 'style' }); -//@ts-ignore -cssInterop(UIAlert.Text, { className: 'style' }); -cssInterop(IconWrapper, { +cssInterop(PrimitiveIcon, { className: { target: 'style', nativeStyleToProp: { height: true, width: true, - // @ts-ignore fill: true, - color: true, + color: 'classNameColor', stroke: true, }, }, diff --git a/expo-app/components/ui/avatar/index.tsx b/expo-app/components/ui/avatar/index.tsx index 31fcbdd1..b6863aa1 100644 --- a/expo-app/components/ui/avatar/index.tsx +++ b/expo-app/components/ui/avatar/index.tsx @@ -9,7 +9,6 @@ import { withStyleContext, useStyleContext, } from '@gluestack-ui/nativewind-utils/withStyleContext'; -import { cssInterop } from 'nativewind'; const SCOPE = 'AVATAR'; import type { VariantProps } from '@gluestack-ui/nativewind-utils'; @@ -21,12 +20,6 @@ const UIAvatar = createAvatar({ FallbackText: Text, }); -cssInterop(UIAvatar, { className: 'style' }); -cssInterop(UIAvatar.Badge, { className: 'style' }); -cssInterop(UIAvatar.Group, { className: 'style' }); -cssInterop(UIAvatar.Image, { className: 'style' }); -cssInterop(UIAvatar.FallbackText, { className: 'style' }); - const avatarStyle = tva({ base: 'rounded-full justify-center items-center relative bg-primary-600 group-[.avatar-group]/avatar-group:-ml-2.5', variants: { @@ -161,10 +154,11 @@ export const AvatarImage = React.forwardRef< className={avatarImageStyle({ class: className, })} - // @ts-ignore + // @ts-expect-error style={ Platform.OS === 'web' - ? { height: 'revert-layer', width: 'revert-layer' } + ? // eslint-disable-next-line react-native/no-inline-styles + { height: 'revert-layer', width: 'revert-layer' } : undefined } /> diff --git a/expo-app/components/ui/badge/index.tsx b/expo-app/components/ui/badge/index.tsx index 42bf6016..6363a340 100644 --- a/expo-app/components/ui/badge/index.tsx +++ b/expo-app/components/ui/badge/index.tsx @@ -1,7 +1,7 @@ 'use client'; -import React, { useMemo } from 'react'; +import React from 'react'; import { Text, View } from 'react-native'; -import { Svg } from 'react-native-svg'; +import { PrimitiveIcon, UIIcon } from '@gluestack-ui/icon'; import { tva } from '@gluestack-ui/nativewind-utils/tva'; import { withStyleContext, @@ -42,7 +42,7 @@ const badgeTextStyle = tva({ warning: 'text-warning-600', success: 'text-success-600', info: 'text-info-600', - muted: 'text-secondary-600', + muted: 'text-background-800', }, size: { sm: 'text-2xs', @@ -83,7 +83,7 @@ const badgeIconStyle = tva({ warning: 'text-warning-600', success: 'text-success-600', info: 'text-info-600', - muted: 'text-secondary-600', + muted: 'text-background-800', }, size: { sm: 'h-3 w-3', @@ -93,58 +93,17 @@ const badgeIconStyle = tva({ }, }); -type IPrimitiveIcon = React.ComponentPropsWithoutRef & { - height?: number | string; - width?: number | string; - fill?: string; - color?: string; - size?: number | string; - stroke?: string; - as?: React.ElementType; - className?: string; -}; - -const PrimitiveIcon = React.forwardRef< - React.ElementRef, - IPrimitiveIcon ->(({ height, width, fill, color, size, stroke, as: AsComp, ...props }, ref) => { - const sizeProps = useMemo(() => { - if (size) return { size }; - if (height && width) return { height, width }; - if (height) return { height }; - if (width) return { width }; - return {}; - }, [size, height, width]); - - let colorProps = {}; - if (color) { - colorProps = { ...colorProps, color: color }; - } - if (stroke) { - colorProps = { ...colorProps, stroke: stroke }; - } - if (fill) { - colorProps = { ...colorProps, fill: fill }; - } - if (AsComp) { - return ; - } - return ( - - ); -}); - const ContextView = withStyleContext(View, SCOPE); -cssInterop(ContextView, { className: 'style' }); + cssInterop(PrimitiveIcon, { className: { target: 'style', nativeStyleToProp: { height: true, width: true, - // @ts-ignore + //@ts-expect-error fill: true, - color: true, + color: 'classNameColor', stroke: true, }, }, @@ -154,7 +113,7 @@ type IBadgeProps = React.ComponentPropsWithoutRef & VariantProps; const Badge = ({ children, - action = 'info', + action = 'muted', variant = 'solid', size = 'md', className, @@ -205,14 +164,14 @@ type IBadgeIconProps = React.ComponentPropsWithoutRef & VariantProps; const BadgeIcon = React.forwardRef< - React.ElementRef, + React.ElementRef, IBadgeIconProps >(({ className, size, ...props }, ref) => { const { size: parentSize, action: parentAction } = useStyleContext(SCOPE); if (typeof size === 'number') { return ( - ); } else if ( - (props.height !== undefined || props.width !== undefined) && + (props?.height !== undefined || props?.width !== undefined) && size === undefined ) { return ( - ; - handleClose: () => void; - handleOpen: () => void; -}>({ - visible: false, - bottomSheetRef: { current: null }, - handleClose: () => {}, - handleOpen: () => {}, -}); - -type IBottomSheetProps = React.ComponentProps; -export const BottomSheet = ({ - snapToIndex = 1, - onOpen, - onClose, - ...props -}: { - snapToIndex?: number; - children?: React.ReactNode; - onOpen?: () => void; - onClose?: () => void; -}) => { - const bottomSheetRef = useRef(null); - - const [visible, setVisible] = useState(false); - - const handleOpen = useCallback(() => { - bottomSheetRef.current?.snapToIndex(snapToIndex); - setVisible(true); - onOpen && onOpen(); - }, [onOpen, snapToIndex]); - - const handleClose = useCallback(() => { - bottomSheetRef.current?.close(); - setVisible(false); - onClose && onClose(); - }, [onClose]); - - return ( - - {props.children} - - ); -}; - -export const BottomSheetPortal = ({ - snapPoints, - handleComponent: DragIndicator, - backdropComponent: BackDrop, - ...props -}: Partial & { - defaultIsOpen?: boolean; - snapToIndex?: number; - snapPoints: string[]; -}) => { - const { bottomSheetRef, handleClose } = useContext(BottomSheetContext); - - const handleSheetChanges = useCallback( - (index: number) => { - if (index === 0 || index === -1) { - handleClose(); - } - }, - [handleClose] - ); - - return ( - - {props.children} - - ); -}; - -export const BottomSheetTrigger = ({ - className, - ...props -}: PressableProps & { className?: string }) => { - const { handleOpen } = useContext(BottomSheetContext); - return ( - { - props.onPress && props.onPress(e); - handleOpen(); - }} - {...props} - className={bottomSheetTriggerStyle({ - className: className, - })} - > - {props.children} - - ); -}; -type IBottomSheetBackdrop = React.ComponentProps< - typeof GorhomBottomSheetBackdrop ->; - -export const BottomSheetBackdrop = ({ - disappearsOnIndex = -1, - appearsOnIndex = 1, - className, - ...props -}: Partial & { className?: string }) => { - return ( - - ); -}; - -cssInterop(GorhomBottomSheetBackdrop, { className: 'style' }); - -type IBottomSheetDragIndicator = React.ComponentProps; - -export const BottomSheetDragIndicator = ({ - children, - className, - ...props -}: Partial & { className?: string }) => { - return ( - - {children} - - ); -}; - -cssInterop(BottomSheetHandle, { className: 'style' }); - -type IBottomSheetContent = React.ComponentProps; - -export const BottomSheetContent = ({ ...props }: IBottomSheetContent) => { - const { handleClose, visible } = useContext(BottomSheetContext); - const keyDownHandlers = useMemo(() => { - return Platform.OS === 'web' - ? { - onKeyDown: (e: React.KeyboardEvent) => { - if (e.key === 'Escape') { - e.preventDefault(); - handleClose(); - return; - } - }, - } - : {}; - }, [handleClose]); - - if (Platform.OS === 'web') - return ( - - {visible && ( - - {props.children} - - )} - - ); - - return ( - - {props.children} - - ); -}; - -cssInterop(GorhomBottomSheetView, { className: 'style' }); - -export const BottomSheetItem = ({ - children, - className, - closeOnSelect = true, - ...props -}: PressableProps & { - closeOnSelect?: boolean; -}) => { - const { handleClose } = useContext(BottomSheetContext); - return ( - { - if (closeOnSelect) { - handleClose(); - } - props.onPress && props.onPress(e); - }} - role="button" - > - {children} - - ); -}; - -export const BottomSheetItemText = ({ ...props }: TextProps) => { - return ; -}; - -export const BottomSheetScrollView = GorhomBottomSheetScrollView; -export const BottomSheetFlatList = GorhomBottomSheetFlatList; -export const BottomSheetSectionList = GorhomBottomSheetSectionList; -export const BottomSheetTextInput = GorhomBottomSheetInput; - -cssInterop(GorhomBottomSheetInput, { className: 'style' }); -cssInterop(GorhomBottomSheetScrollView, { className: 'style' }); -cssInterop(GorhomBottomSheetFlatList, { className: 'style' }); -cssInterop(GorhomBottomSheetSectionList, { className: 'style' }); diff --git a/expo-app/components/ui/button/index.tsx b/expo-app/components/ui/button/index.tsx index 1cb78b36..112ca504 100644 --- a/expo-app/components/ui/button/index.tsx +++ b/expo-app/components/ui/button/index.tsx @@ -1,109 +1,26 @@ 'use client'; -import React, { useMemo } from 'react'; +import React from 'react'; import { createButton } from '@gluestack-ui/button'; -import { Svg } from 'react-native-svg'; -import type { PressableProps } from 'react-native'; import { tva } from '@gluestack-ui/nativewind-utils/tva'; import { withStyleContext, useStyleContext, } from '@gluestack-ui/nativewind-utils/withStyleContext'; -import { withStyleContextAndStates } from '@gluestack-ui/nativewind-utils/withStyleContextAndStates'; import { cssInterop } from 'nativewind'; -import { withStates } from '@gluestack-ui/nativewind-utils/withStates'; -import { - ActivityIndicator, - Pressable, - Text, - View, - Platform, -} from 'react-native'; +import { ActivityIndicator, Pressable, Text, View } from 'react-native'; import type { VariantProps } from '@gluestack-ui/nativewind-utils'; +import { PrimitiveIcon, UIIcon } from '@gluestack-ui/icon'; const SCOPE = 'BUTTON'; -const ButtonWrapper = React.forwardRef< - React.ElementRef, - PressableProps ->(({ ...props }, ref) => { - return ; -}); - -type IPrimitiveIcon = React.ComponentPropsWithoutRef & { - height?: number | string; - width?: number | string; - fill?: string; - color?: string; - size?: number | string; - stroke?: string; - as?: React.ElementType; -}; -const PrimitiveIcon = React.forwardRef( - ( - { - height, - width, - fill, - color, - size, - stroke = 'currentColor', - as: AsComp, - ...props - }: IPrimitiveIcon, - ref: React.Ref - ) => { - const sizeProps = useMemo(() => { - if (size) return { size }; - if (height && width) return { height, width }; - if (height) return { height }; - if (width) return { width }; - return {}; - }, [size, height, width]); - - const colorProps = - stroke === 'currentColor' && color !== undefined ? color : stroke; - - if (AsComp) { - return ( - - ); - } - return ( - - ); - } -); -const Root = - Platform.OS === 'web' - ? withStyleContext(ButtonWrapper, SCOPE) - : withStyleContextAndStates(ButtonWrapper, SCOPE); +const Root = withStyleContext(Pressable, SCOPE); const UIButton = createButton({ Root: Root, Text, Group: View, Spinner: ActivityIndicator, - Icon: withStates(PrimitiveIcon), -}); - -cssInterop(Root, { className: 'style' }); -cssInterop(UIButton.Text, { className: 'style' }); -cssInterop(UIButton.Group, { className: 'style' }); -cssInterop(UIButton.Spinner, { - className: { target: 'style', nativeStyleToProp: { color: true } }, + Icon: UIIcon, }); cssInterop(PrimitiveIcon, { @@ -112,22 +29,21 @@ cssInterop(PrimitiveIcon, { nativeStyleToProp: { height: true, width: true, - // @ts-ignore fill: true, - color: true, + color: 'classNameColor', stroke: true, }, }, }); const buttonStyle = tva({ - base: 'group/button rounded bg-primary-500 flex-row items-center justify-center data-[focus-visible=true]:web:outline-none data-[focus-visible=true]:web:ring-2 data-[disabled=true]:opacity-40', + base: 'group/button rounded bg-primary-500 flex-row items-center justify-center data-[focus-visible=true]:web:outline-none data-[focus-visible=true]:web:ring-2 data-[disabled=true]:opacity-40 gap-2', variants: { action: { primary: 'bg-primary-500 data-[hover=true]:bg-primary-600 data-[active=true]:bg-primary-700 border-primary-300 data-[hover=true]:border-primary-400 data-[active=true]:border-primary-500 data-[focus-visible=true]:web:ring-indicator-info', secondary: - 'bg-secondary-500 border-secondary-300 data-[hover=true]:bg-secondary-600 data-[hover=true]:border-secondary-400 data-[active=true]:bg-secondary-700 data-[active=true]:border-secondary-500 data-[focus-visible=true]:web:ring-indicator-info', + 'bg-secondary-500 border-secondary-300 data-[hover=true]:bg-secondary-600 data-[hover=true]:border-secondary-400 data-[active=true]:bg-secondary-700 data-[active=true]:border-secondary-700 data-[focus-visible=true]:web:ring-indicator-info', positive: 'bg-success-500 border-success-300 data-[hover=true]:bg-success-600 data-[hover=true]:border-success-400 data-[active=true]:bg-success-700 data-[active=true]:border-success-500 data-[focus-visible=true]:web:ring-indicator-info', negative: @@ -209,7 +125,7 @@ const buttonTextStyle = tva({ primary: 'text-primary-600 data-[hover=true]:text-primary-600 data-[active=true]:text-primary-700', secondary: - 'text-secondary-600 data-[hover=true]:text-secondary-600 data-[active=true]:text-secondary-700', + 'text-typography-500 data-[hover=true]:text-typography-600 data-[active=true]:text-typography-700', positive: 'text-success-600 data-[hover=true]:text-success-600 data-[active=true]:text-success-700', negative: @@ -240,7 +156,7 @@ const buttonTextStyle = tva({ variant: 'solid', action: 'secondary', class: - 'text-typography-0 data-[hover=true]:text-typography-0 data-[active=true]:text-typography-0', + 'text-typography-800 data-[hover=true]:text-typography-800 data-[active=true]:text-typography-800', }, { variant: 'solid', @@ -264,7 +180,7 @@ const buttonTextStyle = tva({ variant: 'outline', action: 'secondary', class: - 'text-primary-500 data-[hover=true]:text-primary-500 data-[active=true]:text-primary-500', + 'text-typography-500 data-[hover=true]:text-primary-600 data-[active=true]:text-typography-700', }, { variant: 'outline', @@ -301,7 +217,7 @@ const buttonIconStyle = tva({ primary: 'text-primary-600 data-[hover=true]:text-primary-600 data-[active=true]:text-primary-700', secondary: - 'text-secondary-600 data-[hover=true]:text-secondary-600 data-[active=true]:text-secondary-700', + 'text-typography-500 data-[hover=true]:text-typography-600 data-[active=true]:text-typography-700', positive: 'text-success-600 data-[hover=true]:text-success-600 data-[active=true]:text-success-700', @@ -320,7 +236,7 @@ const buttonIconStyle = tva({ variant: 'solid', action: 'secondary', class: - 'text-typography-0 data-[hover=true]:text-typography-0 data-[active=true]:text-typography-0', + 'text-typography-800 data-[hover=true]:text-typography-800 data-[active=true]:text-typography-800', }, { variant: 'solid', @@ -353,6 +269,12 @@ const buttonGroupStyle = tva({ isAttached: { true: 'gap-0', }, + flexDirection: { + 'row': 'flex-row', + 'column': 'flex-col', + 'row-reverse': 'flex-row-reverse', + 'column-reverse': 'flex-col-reverse', + }, }, }); @@ -475,15 +397,31 @@ type IButtonGroupProps = React.ComponentPropsWithoutRef & const ButtonGroup = React.forwardRef< React.ElementRef, IButtonGroupProps ->(({ className, space = 'md', isAttached = false, ...props }, ref) => { - return ( - - ); -}); +>( + ( + { + className, + space = 'md', + isAttached = false, + flexDirection = 'column', + ...props + }, + ref + ) => { + return ( + + ); + } +); Button.displayName = 'Button'; ButtonText.displayName = 'ButtonText'; diff --git a/expo-app/components/ui/checkbox/index.tsx b/expo-app/components/ui/checkbox/index.tsx index aaaa8f01..4e85cace 100644 --- a/expo-app/components/ui/checkbox/index.tsx +++ b/expo-app/components/ui/checkbox/index.tsx @@ -1,19 +1,16 @@ 'use client'; -import React, { useMemo } from 'react'; +import React from 'react'; import { createCheckbox } from '@gluestack-ui/checkbox'; -import { View, Pressable, Text } from 'react-native'; +import { View, Pressable, Text, Platform } from 'react-native'; import type { TextProps, ViewProps } from 'react-native'; import { tva } from '@gluestack-ui/nativewind-utils/tva'; -import { Svg } from 'react-native-svg'; +import { PrimitiveIcon, IPrimitiveIcon, UIIcon } from '@gluestack-ui/icon'; import { withStyleContext, useStyleContext, } from '@gluestack-ui/nativewind-utils/withStyleContext'; -import { withStyleContextAndStates } from '@gluestack-ui/nativewind-utils/withStyleContextAndStates'; import { cssInterop } from 'nativewind'; -import { withStates } from '@gluestack-ui/nativewind-utils/withStates'; import type { VariantProps } from '@gluestack-ui/nativewind-utils'; -import { Platform } from 'react-native'; const IndicatorWrapper = React.forwardRef< React.ElementRef, @@ -28,81 +25,34 @@ const LabelWrapper = React.forwardRef, TextProps>( } ); -type IPrimitiveIcon = React.ComponentPropsWithoutRef & { - height?: number | string; - width?: number | string; - fill?: string; - color?: string; - size?: number | string; - stroke?: string; - as?: React.ElementType; - className?: string; -}; - const IconWrapper = React.forwardRef< React.ElementRef, IPrimitiveIcon >(({ ...props }, ref) => { - return ; -}); - -const PrimitiveIcon = React.forwardRef< - React.ElementRef, - IPrimitiveIcon ->(({ height, width, fill, color, size, stroke, as: AsComp, ...props }, ref) => { - const sizeProps = useMemo(() => { - if (size) return { size }; - if (height && width) return { height, width }; - if (height) return { height }; - if (width) return { width }; - return {}; - }, [size, height, width]); - - let colorProps = {}; - if (color) { - colorProps = { ...colorProps, color: color }; - } - if (stroke) { - colorProps = { ...colorProps, stroke: stroke }; - } - if (fill) { - colorProps = { ...colorProps, fill: fill }; - } - if (AsComp) { - return ; - } - return ( - - ); + return ; }); const SCOPE = 'CHECKBOX'; const UICheckbox = createCheckbox({ - // @ts-ignore + // @ts-expect-error Root: Platform.OS === 'web' ? withStyleContext(View, SCOPE) - : withStyleContextAndStates(Pressable, SCOPE), - Group: Platform.OS === 'web' ? View : withStates(View), - Icon: Platform.OS === 'web' ? IconWrapper : withStates(IconWrapper), - Label: Platform.OS === 'web' ? LabelWrapper : withStates(LabelWrapper), - Indicator: - Platform.OS === 'web' ? IndicatorWrapper : withStates(IndicatorWrapper), + : withStyleContext(Pressable, SCOPE), + Group: View, + Icon: IconWrapper, + Label: LabelWrapper, + Indicator: IndicatorWrapper, }); -cssInterop(UICheckbox, { className: 'style' }); -cssInterop(UICheckbox.Group, { className: 'style' }); -cssInterop(LabelWrapper, { className: 'style' }); -cssInterop(IndicatorWrapper, { className: 'style' }); -cssInterop(IconWrapper, { +cssInterop(PrimitiveIcon, { className: { target: 'style', nativeStyleToProp: { height: true, width: true, - // @ts-ignore fill: true, - color: true, + color: 'classNameColor', stroke: true, }, }, diff --git a/expo-app/components/ui/divider/index.tsx b/expo-app/components/ui/divider/index.tsx index 61404a4b..e9b663a6 100644 --- a/expo-app/components/ui/divider/index.tsx +++ b/expo-app/components/ui/divider/index.tsx @@ -1,9 +1,7 @@ 'use client'; import React from 'react'; -import { createDivider } from '@gluestack-ui/divider'; import { tva } from '@gluestack-ui/nativewind-utils/tva'; -import { View } from 'react-native'; -import { cssInterop } from 'nativewind'; +import { Platform, View } from 'react-native'; import type { VariantProps } from '@gluestack-ui/nativewind-utils'; const dividerStyle = tva({ @@ -16,21 +14,19 @@ const dividerStyle = tva({ }, }); -const UIDivider = createDivider({ Root: View }); - -cssInterop(UIDivider, { className: 'style' }); - -type IUIDividerProps = React.ComponentPropsWithoutRef & +type IUIDividerProps = React.ComponentPropsWithoutRef & VariantProps; const Divider = React.forwardRef< - React.ElementRef, + React.ElementRef, IUIDividerProps >(({ className, orientation = 'horizontal', ...props }, ref) => { return ( - & + VariantProps & { className?: string }; + +type IDrawerBackdropProps = React.ComponentProps & + VariantProps & { className?: string }; + +type IDrawerContentProps = React.ComponentProps & + VariantProps & { className?: string }; + +type IDrawerHeaderProps = React.ComponentProps & + VariantProps & { className?: string }; + +type IDrawerBodyProps = React.ComponentProps & + VariantProps & { className?: string }; + +type IDrawerFooterProps = React.ComponentProps & + VariantProps & { className?: string }; + +type IDrawerCloseButtonProps = React.ComponentProps< + typeof UIDrawer.CloseButton +> & + VariantProps & { className?: string }; + +const Drawer = React.forwardRef< + React.ElementRef, + IDrawerProps +>(({ className, size = 'sm', anchor = 'left', ...props }, ref) => { + return ( + + ); +}); + +const DrawerBackdrop = React.forwardRef< + React.ElementRef, + IDrawerBackdropProps +>(({ className, ...props }, ref) => { + return ( + + ); +}); + +const DrawerContent = React.forwardRef< + React.ElementRef, + IDrawerContentProps +>(({ className, ...props }, ref) => { + const { size: parentSize, anchor: parentAnchor } = useStyleContext(SCOPE); + + const drawerHeight = screenHeight * (sizes[parentSize] || sizes.md); + const drawerWidth = screenWidth * (sizes[parentSize] || sizes.md); + + const isHorizontal = parentAnchor === 'left' || parentAnchor === 'right'; + + const initialObj = isHorizontal + ? { x: parentAnchor === 'left' ? -drawerWidth : drawerWidth } + : { y: parentAnchor === 'top' ? -drawerHeight : drawerHeight }; + + const animateObj = isHorizontal ? { x: 0 } : { y: 0 }; + + const exitObj = isHorizontal + ? { x: parentAnchor === 'left' ? -drawerWidth : drawerWidth } + : { y: parentAnchor === 'top' ? -drawerHeight : drawerHeight }; + + const customClass = isHorizontal + ? `top-0 ${parentAnchor === 'left' ? 'left-0' : 'right-0'}` + : `left-0 ${parentAnchor === 'top' ? 'top-0' : 'bottom-0'}`; + + return ( + + ); +}); + +const DrawerHeader = React.forwardRef< + React.ElementRef, + IDrawerHeaderProps +>(({ className, ...props }, ref) => { + return ( + + ); +}); + +const DrawerBody = React.forwardRef< + React.ElementRef, + IDrawerBodyProps +>(({ className, ...props }, ref) => { + return ( + + ); +}); + +const DrawerFooter = React.forwardRef< + React.ElementRef, + IDrawerFooterProps +>(({ className, ...props }, ref) => { + return ( + + ); +}); + +const DrawerCloseButton = React.forwardRef< + React.ElementRef, + IDrawerCloseButtonProps +>(({ className, ...props }, ref) => { + return ( + + ); +}); + +Drawer.displayName = 'Drawer'; +DrawerBackdrop.displayName = 'DrawerBackdrop'; +DrawerContent.displayName = 'DrawerContent'; +DrawerHeader.displayName = 'DrawerHeader'; +DrawerBody.displayName = 'DrawerBody'; +DrawerFooter.displayName = 'DrawerFooter'; +DrawerCloseButton.displayName = 'DrawerCloseButton'; + +export { + Drawer, + DrawerBackdrop, + DrawerContent, + DrawerCloseButton, + DrawerHeader, + DrawerBody, + DrawerFooter, +}; diff --git a/expo-app/components/ui/fab/index.tsx b/expo-app/components/ui/fab/index.tsx index f1544824..98840f89 100644 --- a/expo-app/components/ui/fab/index.tsx +++ b/expo-app/components/ui/fab/index.tsx @@ -1,80 +1,32 @@ 'use client'; -import React, { useMemo } from 'react'; +import React from 'react'; import { createFab } from '@gluestack-ui/fab'; -import { Platform, Text } from 'react-native'; -import { Pressable } from 'react-native'; -import { Svg } from 'react-native-svg'; +import { Pressable, Text } from 'react-native'; import { tva } from '@gluestack-ui/nativewind-utils/tva'; import { withStyleContext, useStyleContext, } from '@gluestack-ui/nativewind-utils/withStyleContext'; -import { withStyleContextAndStates } from '@gluestack-ui/nativewind-utils/withStyleContextAndStates'; import { cssInterop } from 'nativewind'; import type { VariantProps } from '@gluestack-ui/nativewind-utils'; - -type IPrimitiveIcon = React.ComponentPropsWithoutRef & { - height?: number | string; - width?: number | string; - fill?: string; - color?: string; - size?: number | string; - stroke?: string; - as?: React.ElementType; - className?: string; -}; - -const PrimitiveIcon = React.forwardRef< - React.ElementRef, - IPrimitiveIcon ->(({ height, width, fill, color, size, stroke, as: AsComp, ...props }, ref) => { - const sizeProps = useMemo(() => { - if (size) return { size }; - if (height && width) return { height, width }; - if (height) return { height }; - if (width) return { width }; - return {}; - }, [size, height, width]); - - let colorProps = {}; - if (color) { - colorProps = { ...colorProps, color: color }; - } - if (stroke) { - colorProps = { ...colorProps, stroke: stroke }; - } - if (fill) { - colorProps = { ...colorProps, fill: fill }; - } - if (AsComp) { - return ; - } - return ( - - ); -}); +import { PrimitiveIcon, UIIcon } from '@gluestack-ui/icon'; const SCOPE = 'FAB'; +const Root = withStyleContext(Pressable, SCOPE); const UIFab = createFab({ - Root: - Platform.OS === 'web' - ? withStyleContext(Pressable, SCOPE) - : withStyleContextAndStates(Pressable, SCOPE), + Root: Root, Label: Text, - Icon: PrimitiveIcon, + Icon: UIIcon, }); -cssInterop(UIFab, { className: 'style' }); -cssInterop(UIFab.Label, { className: 'style' }); -cssInterop(UIFab.Icon, { +cssInterop(PrimitiveIcon, { className: { target: 'style', nativeStyleToProp: { height: true, width: true, - // @ts-ignore fill: true, - color: true, + color: 'classNameColor', stroke: true, }, }, @@ -147,7 +99,7 @@ const fabLabelStyle = tva({ }); const fabIconStyle = tva({ - base: 'text-typography-50 hover:text-typography-0 active:text-typography-0 fill-none', + base: 'text-typography-50 fill-none', variants: { size: { '2xs': 'h-3 w-3', diff --git a/expo-app/components/ui/form-control/index.tsx b/expo-app/components/ui/form-control/index.tsx index fcdf8cc1..895b207a 100644 --- a/expo-app/components/ui/form-control/index.tsx +++ b/expo-app/components/ui/form-control/index.tsx @@ -1,7 +1,6 @@ 'use client'; import { Text, View } from 'react-native'; -import React, { useMemo } from 'react'; -import { Svg } from 'react-native-svg'; +import React from 'react'; import { createFormControl } from '@gluestack-ui/form-control'; import { tva } from '@gluestack-ui/nativewind-utils/tva'; import { @@ -10,50 +9,10 @@ import { } from '@gluestack-ui/nativewind-utils/withStyleContext'; import { cssInterop } from 'nativewind'; import type { VariantProps } from '@gluestack-ui/nativewind-utils'; +import { PrimitiveIcon, UIIcon } from '@gluestack-ui/icon'; const SCOPE = 'FORM_CONTROL'; -type IPrimitiveIcon = React.ComponentPropsWithoutRef & { - height?: number | string; - width?: number | string; - fill?: string; - color?: string; - size?: number | string; - stroke?: string; - as?: React.ElementType; - className?: string; -}; - -const PrimitiveIcon = React.forwardRef< - React.ElementRef, - IPrimitiveIcon ->(({ height, width, fill, color, size, stroke, as: AsComp, ...props }, ref) => { - const sizeProps = useMemo(() => { - if (size) return { size }; - if (height && width) return { height, width }; - if (height) return { height }; - if (width) return { width }; - return {}; - }, [size, height, width]); - - let colorProps = {}; - if (color) { - colorProps = { ...colorProps, color: color }; - } - if (stroke) { - colorProps = { ...colorProps, stroke: stroke }; - } - if (fill) { - colorProps = { ...colorProps, fill: fill }; - } - if (AsComp) { - return ; - } - return ( - - ); -}); - const formControlStyle = tva({ base: 'flex flex-col', variants: { @@ -278,7 +237,7 @@ export const UIFormControl = createFormControl({ Root: withStyleContext(View, SCOPE), Error: View, ErrorText: Text, - ErrorIcon: PrimitiveIcon, + ErrorIcon: UIIcon, Label: View, LabelText: Text, LabelAstrick: FormControlLabelAstrick, @@ -286,20 +245,12 @@ export const UIFormControl = createFormControl({ HelperText: Text, }); -cssInterop(UIFormControl, { className: 'style' }); -cssInterop(UIFormControl.Error, { className: 'style' }); -cssInterop(UIFormControl.Error.Text, { className: 'style' }); -cssInterop(UIFormControl.Label, { className: 'style' }); -cssInterop(UIFormControl.Label.Text, { className: 'style' }); -cssInterop(UIFormControl.Helper, { className: 'style' }); -cssInterop(UIFormControl.Helper.Text, { className: 'style' }); -cssInterop(UIFormControl.Error.Icon, { +cssInterop(PrimitiveIcon, { className: { target: 'style', nativeStyleToProp: { height: true, width: true, - // @ts-ignore fill: true, color: true, stroke: true, diff --git a/expo-app/components/ui/gluestack-ui-provider/config.js b/expo-app/components/ui/gluestack-ui-provider/config.js deleted file mode 100644 index 5a480a63..00000000 --- a/expo-app/components/ui/gluestack-ui-provider/config.js +++ /dev/null @@ -1,304 +0,0 @@ -"use client"; -import { vars } from "nativewind"; -export const config = { - light: vars({ - "--color-primary-0": "#B3B3B3", - "--color-primary-50": "#999999", - "--color-primary-100": "#808080", - "--color-primary-200": "#737373", - "--color-primary-300": "#666666", - "--color-primary-400": "#525252", - "--color-primary-500": "#333333", - "--color-primary-600": "#292929", - "--color-primary-700": "#1F1F1F", - "--color-primary-800": "#0D0D0D", - "--color-primary-900": "#0A0A0A", - "--color-primary-950": "#080808", - /* Secondary */ - "--color-secondary-0": "#FEFFFF", - "--color-secondary-50": "#F1F2F2", - "--color-secondary-100": "#E7E8E8", - "--color-secondary-200": "#DBDBDB", - "--color-secondary-300": "#AFB0B0", - "--color-secondary-400": "#727373", - "--color-secondary-500": "#5E5F5F", - "--color-secondary-600": "#515252", - "--color-secondary-700": "#3F4040", - "--color-secondary-800": "#272626", - "--color-secondary-900": "#181717", - "--color-secondary-950": "#0B0C0C", - /* Tertiary */ - "--color-tertiary-0": "#FFFAF5", - "--color-tertiary-50": "#FFF2E5", - "--color-tertiary-100": "#FFE9D5", - "--color-tertiary-200": "#FED1AA", - "--color-tertiary-300": "#FDB474", - "--color-tertiary-400": "#FB9D4B", - "--color-tertiary-500": "#E78128", - "--color-tertiary-600": "#D7751F", - "--color-tertiary-700": "#B4621A", - "--color-tertiary-800": "#824917", - "--color-tertiary-900": "#6C3D13", - "--color-tertiary-950": "#543112", - /* Error */ - "--color-error-0": "#FEE9E9", - "--color-error-50": "#FEE2E2", - "--color-error-100": "#FECACA", - "--color-error-200": "#FCA5A5", - "--color-error-300": "#F87171", - "--color-error-400": "#EF4444", - "--color-error-500": "#E63535", - "--color-error-600": "#DC2626", - "--color-error-700": "#B91C1C", - "--color-error-800": "#991B1B", - "--color-error-900": "#7F1D1D", - "--color-error-950": "#531313", - /* Success */ - "--color-success-0": "#E4FFF4", - "--color-success-50": "#CAFFE8", - "--color-success-100": "#A2F1C0", - "--color-success-200": "#84D3A2", - "--color-success-300": "#66B584", - "--color-success-400": "#489766", - "--color-success-500": "#348352", - "--color-success-600": "#2A7948", - "--color-success-700": "#206F3E", - "--color-success-800": "#166534", - "--color-success-900": "#14532D", - "--color-success-950": "#1B3224", - /* Warning */ - "--color-warning-0": "#FFFDFB", - "--color-warning-50": "#FFF9F5", - "--color-warning-100": "#FFE7D5", - "--color-warning-200": "#FECDAA", - "--color-warning-300": "#FDAD74", - "--color-warning-400": "#FB954B", - "--color-warning-500": "#E77828", - "--color-warning-600": "#D76C1F", - "--color-warning-700": "#B45A1A", - "--color-warning-800": "#824417", - "--color-warning-900": "#6C3813", - "--color-warning-950": "#542D12", - /* Info */ - "--color-info-0": "#ECF8FE", - "--color-info-50": "#C7EBFC", - "--color-info-100": "#A2DDFA", - "--color-info-200": "#7CCFF8", - "--color-info-300": "#57C2F6", - "--color-info-400": "#32B4F4", - "--color-info-500": "#0DA6F2", - "--color-info-600": "#0B8DCD", - "--color-info-700": "#0973A8", - "--color-info-800": "#075A83", - "--color-info-900": "#05405D", - "--color-info-950": "#032638", - /* Typography */ - "--color-typography-0": "#FEFEFF", - "--color-typography-50": "#F5F5F5", - "--color-typography-100": "#E5E5E5", - "--color-typography-200": "#DBDBDC", - "--color-typography-300": "#D4D4D4", - "--color-typography-400": "#A3A3A3", - "--color-typography-500": "#8C8C8C", - "--color-typography-600": "#737373", - "--color-typography-700": "#525252", - "--color-typography-800": "#404040", - "--color-typography-900": "#262627", - "--color-typography-950": "#171717", - /* Outline */ - "--color-outline-0": "#FDFEFE", - "--color-outline-50": "#F3F3F3", - "--color-outline-100": "#E6E6E6", - "--color-outline-200": "#DDDCDB", - "--color-outline-300": "#D3D3D3", - "--color-outline-400": "#A5A3A3", - "--color-outline-500": "#8C8D8D", - "--color-outline-600": "#737474", - "--color-outline-700": "#535252", - "--color-outline-800": "#414141", - "--color-outline-900": "#272624", - "--color-outline-950": "#1A1717", - /* Background */ - "--color-background-0": "#FFFFFF", - "--color-background-50": "#F6F6F6", - "--color-background-100": "#F2F1F1", - "--color-background-200": "#DCDBDB", - "--color-background-300": "#D5D4D4", - "--color-background-400": "#A2A3A3", - "--color-background-500": "#8E8E8E", - "--color-background-600": "#747474", - "--color-background-700": "#535252", - "--color-background-800": "#414040", - "--color-background-900": "#272625", - "--color-background-950": "#181718", - /* Background Special */ - "--color-background-error": "#FEF1F1", - "--color-background-warning": "#FFF4EB", - "--color-background-success": "#EDFCF2", - "--color-background-muted": "#F6F6F7", - "--color-background-info": "#EBF8FE", - /* Border */ - "--color-border-0": "#FDFEFE", - "--color-border-50": "#F3F3F3", - "--color-border-100": "#E6E6E6", - "--color-border-200": "#DDDCDB", - "--color-border-300": "#D3D3D3", - "--color-border-400": "#A5A3A3", - "--color-border-500": "#8C8D8D", - "--color-border-600": "#737474", - "--color-border-700": "#535252", - "--color-border-800": "#414141", - "--color-border-900": "#272624", - "--color-border-950": "#1A1717", - }), - dark: vars({ - "--color-primary-0": "#828282", - "--color-primary-50": "#949494", - "--color-primary-100": "#9E9E9E", - "--color-primary-200": "#B3B3B3", - "--color-primary-300": "#C7C7C7", - "--color-primary-400": "#E6E6E6", - "--color-primary-500": "#F0F0F0", - "--color-primary-600": "#FAFAFA", - "--color-primary-700": "#FCFCFC", - "--color-primary-800": "#FDFDFD", - "--color-primary-900": "#FDFCFC", - "--color-primary-950": "#FDFCFC", - /* Secondary */ - "--color-secondary-0": "#0B0C0C", - "--color-secondary-50": "#181717", - "--color-secondary-100": "#272626", - "--color-secondary-200": "#3F4040", - "--color-secondary-300": "#515252", - "--color-secondary-400": "#5E5F5F", - "--color-secondary-500": "#727373", - "--color-secondary-600": "#AFB0B0", - "--color-secondary-700": "#DBDBDB", - "--color-secondary-800": "#E7E8E8", - "--color-secondary-900": "#F1F2F2", - "--color-secondary-950": "#FEFFFF", - /* Tertiary */ - "--color-tertiary-0": "#543112", - "--color-tertiary-50": "#6C3D13", - "--color-tertiary-100": "#824917", - "--color-tertiary-200": "#B4621A", - "--color-tertiary-300": "#D7751F", - "--color-tertiary-400": "#E78128", - "--color-tertiary-500": "#FB9D4B", - "--color-tertiary-600": "#FDB474", - "--color-tertiary-700": "#FED1AA", - "--color-tertiary-800": "#FFE9D5", - "--color-tertiary-900": "#FFF2E5", - "--color-tertiary-950": "#FFFAF5", - /* Error */ - "--color-error-0": "#531313", - "--color-error-50": "#7F1D1D", - "--color-error-100": "#991B1B", - "--color-error-200": "#B91C1C", - "--color-error-300": "#DC2626", - "--color-error-400": "#E63535", - "--color-error-500": "#EF4444", - "--color-error-600": "#F87171", - "--color-error-700": "#E63534", - "--color-error-800": "#FECACA", - "--color-error-900": "#FEE2E2", - "--color-error-950": "#FEE9E9", - /* Success */ - "--color-success-0": "#1B3224", - "--color-success-50": "#14532D", - "--color-success-100": "#166534", - "--color-success-200": "#206F3E", - "--color-success-300": "#2A7948", - "--color-success-400": "#348352", - "--color-success-500": "#489766", - "--color-success-600": "#66B584", - "--color-success-700": "#84D3A2", - "--color-success-800": "#A2F1C0", - "--color-success-900": "#CAFFE8", - "--color-success-950": "#E4FFF4", - /* Warning */ - "--color-warning-0": "#542D12", - "--color-warning-50": "#6C3813", - "--color-warning-100": "#824417", - "--color-warning-200": "#B45A1A", - "--color-warning-300": "#D76C1F", - "--color-warning-400": "#E77828", - "--color-warning-500": "#FB954B", - "--color-warning-600": "#FDAD74", - "--color-warning-700": "#FECDAA", - "--color-warning-800": "#FFE7D5", - "--color-warning-900": "#FFF9F5", - "--color-warning-950": "#FFFDFB", - /* Info */ - "--color-info-0": "#032638", - "--color-info-50": "#05405D", - "--color-info-100": "#075A83", - "--color-info-200": "#0973A8", - "--color-info-300": "#0B8DCD", - "--color-info-400": "#0DA6F2", - "--color-info-500": "#32B4F4", - "--color-info-600": "#57C2F6", - "--color-info-700": "#7CCFF8", - "--color-info-800": "#A2DDFA", - "--color-info-900": "#C7EBFC", - "--color-info-950": "#ECF8FE", - /* Typography */ - "--color-typography-0": "#171717", - "--color-typography-50": "#262627", - "--color-typography-100": "#404040", - "--color-typography-200": "#525252", - "--color-typography-300": "#737373", - "--color-typography-400": "#8C8C8C", - "--color-typography-500": "#A3A3A3", - "--color-typography-600": "#D4D4D4", - "--color-typography-700": "#DBDBDC", - "--color-typography-800": "#E5E5E5", - "--color-typography-900": "#F5F5F5", - "--color-typography-950": "#FEFEFF", - /* Outline */ - "--color-outline-0": "#1A1717", - "--color-outline-50": "#272624", - "--color-outline-100": "#414141", - "--color-outline-200": "#535252", - "--color-outline-300": "#737474", - "--color-outline-400": "#8C8D8D", - "--color-outline-500": "#A5A3A3", - "--color-outline-600": "#D3D3D3", - "--color-outline-700": "#DDDCDB", - "--color-outline-800": "#E6E6E6", - "--color-outline-900": "#F3F3F3", - "--color-outline-950": "#FDFEFE", - /* Background */ - "--color-background-0": "#121212", - "--color-background-50": "#272625", - "--color-background-100": "#414040", - "--color-background-200": "#535252", - "--color-background-300": "#747474", - "--color-background-400": "#8E8E8E", - "--color-background-500": "#A2A3A3", - "--color-background-600": "#D5D4D4", - "--color-background-700": "#DCDBDB", - "--color-background-800": "#F2F1F1", - "--color-background-900": "#F6F6F6", - "--color-background-950": "#FEFEFE", - /* Background Special */ - "--color-background-error": "#422B2B", - "--color-background-warning": "#412F23", - "--color-background-success": "#1C2B21", - "--color-background-muted": "#252526", - "--color-background-info": "#1A282E", - /* Border */ - "--color-border-0": "#1A1717", - "--color-border-50": "#272624", - "--color-border-100": "#414141", - "--color-border-200": "#535252", - "--color-border-300": "#737474", - "--color-border-400": "#8C8D8D", - "--color-border-500": "#A5A3A3", - "--color-border-600": "#D3D3D3", - "--color-border-700": "#DDDCDB", - "--color-border-800": "#E6E6E6", - "--color-border-900": "#F3F3F3", - "--color-border-950": "#FDFEFE", - }), -}; diff --git a/expo-app/components/ui/gluestack-ui-provider/config.ts b/expo-app/components/ui/gluestack-ui-provider/config.ts index 3b42a91a..f388cc6e 100644 --- a/expo-app/components/ui/gluestack-ui-provider/config.ts +++ b/expo-app/components/ui/gluestack-ui-provider/config.ts @@ -1,326 +1,309 @@ -"use client"; -import { vars } from "nativewind"; +'use client'; +import { vars } from 'nativewind'; export const config = { light: vars({ - "--color-primary-0": "#B3B3B3", - "--color-primary-50": "#999999", - "--color-primary-100": "#808080", - "--color-primary-200": "#737373", - "--color-primary-300": "#666666", - "--color-primary-400": "#525252", - "--color-primary-500": "#333333", - "--color-primary-600": "#292929", - "--color-primary-700": "#1F1F1F", - "--color-primary-800": "#0D0D0D", - "--color-primary-900": "#0A0A0A", - "--color-primary-950": "#080808", + '--color-primary-0': '179 179 179', + '--color-primary-50': '153 153 153', + '--color-primary-100': '128 128 128', + '--color-primary-200': '115 115 115', + '--color-primary-300': '102 102 102', + '--color-primary-400': '82 82 82', + '--color-primary-500': '51 51 51', + '--color-primary-600': '41 41 41', + '--color-primary-700': '31 31 31', + '--color-primary-800': '13 13 13', + '--color-primary-900': '10 10 10', + '--color-primary-950': '8 8 8', /* Secondary */ - "--color-secondary-0": "#FEFFFF", - "--color-secondary-50": "#F1F2F2", - "--color-secondary-100": "#E7E8E8", - "--color-secondary-200": "#DBDBDB", - "--color-secondary-300": "#AFB0B0", - "--color-secondary-400": "#727373", - "--color-secondary-500": "#5E5F5F", - "--color-secondary-600": "#515252", - "--color-secondary-700": "#3F4040", - "--color-secondary-800": "#272626", - "--color-secondary-900": "#181717", - "--color-secondary-950": "#0B0C0C", + '--color-secondary-0': '253 253 253', + '--color-secondary-50': '251 251 251', + '--color-secondary-100': '246 246 246', + '--color-secondary-200': '242 242 242', + '--color-secondary-300': '237 237 237', + '--color-secondary-400': '230 230 231', + '--color-secondary-500': '217 217 219', + '--color-secondary-600': '198 199 199', + '--color-secondary-700': '189 189 189', + '--color-secondary-800': '177 177 177', + '--color-secondary-900': '165 164 164', + '--color-secondary-950': '157 157 157', /* Tertiary */ - "--color-tertiary-0": "#FFFAF5", - "--color-tertiary-50": "#FFF2E5", - "--color-tertiary-100": "#FFE9D5", - "--color-tertiary-200": "#FED1AA", - "--color-tertiary-300": "#FDB474", - "--color-tertiary-400": "#FB9D4B", - "--color-tertiary-500": "#E78128", - "--color-tertiary-600": "#D7751F", - "--color-tertiary-700": "#B4621A", - "--color-tertiary-800": "#824917", - "--color-tertiary-900": "#6C3D13", - "--color-tertiary-950": "#543112", + '--color-tertiary-0': '255 250 245', + '--color-tertiary-50': '255 242 229', + '--color-tertiary-100': '255 233 213', + '--color-tertiary-200': '254 209 170', + '--color-tertiary-300': '253 180 116', + '--color-tertiary-400': '251 157 75', + '--color-tertiary-500': '231 129 40', + '--color-tertiary-600': '215 117 31', + '--color-tertiary-700': '180 98 26', + '--color-tertiary-800': '130 73 23', + '--color-tertiary-900': '108 61 19', + '--color-tertiary-950': '84 49 18', /* Error */ - "--color-error-0": "#FEE9E9", - "--color-error-50": "#FEE2E2", - "--color-error-100": "#FECACA", - "--color-error-200": "#FCA5A5", - "--color-error-300": "#F87171", - "--color-error-400": "#EF4444", - "--color-error-500": "#E63535", - "--color-error-600": "#DC2626", - "--color-error-700": "#B91C1C", - "--color-error-800": "#991B1B", - "--color-error-900": "#7F1D1D", - "--color-error-950": "#531313", + '--color-error-0': '254 233 233', + '--color-error-50': '254 226 226', + '--color-error-100': '254 202 202', + '--color-error-200': '252 165 165', + '--color-error-300': '248 113 113', + '--color-error-400': '239 68 68', + '--color-error-500': '230 53 53', + '--color-error-600': '220 38 38', + '--color-error-700': '185 28 28', + '--color-error-800': '153 27 27', + '--color-error-900': '127 29 29', + '--color-error-950': '83 19 19', /* Success */ - "--color-success-0": "#E4FFF4", - "--color-success-50": "#CAFFE8", - "--color-success-100": "#A2F1C0", - "--color-success-200": "#84D3A2", - "--color-success-300": "#66B584", - "--color-success-400": "#489766", - "--color-success-500": "#348352", - "--color-success-600": "#2A7948", - "--color-success-700": "#206F3E", - "--color-success-800": "#166534", - "--color-success-900": "#14532D", - "--color-success-950": "#1B3224", + '--color-success-0': '228 255 244', + '--color-success-50': '202 255 232', + '--color-success-100': '162 241 192', + '--color-success-200': '132 211 162', + '--color-success-300': '102 181 132', + '--color-success-400': '72 151 102', + '--color-success-500': '52 131 82', + '--color-success-600': '42 121 72', + '--color-success-700': '32 111 62', + '--color-success-800': '22 101 52', + '--color-success-900': '20 83 45', + '--color-success-950': '27 50 36', /* Warning */ - "--color-warning-0": "#FFFDFB", - "--color-warning-50": "#FFF9F5", - "--color-warning-100": "#FFE7D5", - "--color-warning-200": "#FECDAA", - "--color-warning-300": "#FDAD74", - "--color-warning-400": "#FB954B", - "--color-warning-500": "#E77828", - "--color-warning-600": "#D76C1F", - "--color-warning-700": "#B45A1A", - "--color-warning-800": "#824417", - "--color-warning-900": "#6C3813", - "--color-warning-950": "#542D12", + '--color-warning-0': '255 249 245', + '--color-warning-50': '255 244 236', + '--color-warning-100': '255 231 213', + '--color-warning-200': '254 205 170', + '--color-warning-300': '253 173 116', + '--color-warning-400': '251 149 75', + '--color-warning-500': '231 120 40', + '--color-warning-600': '215 108 31', + '--color-warning-700': '180 90 26', + '--color-warning-800': '130 68 23', + '--color-warning-900': '108 56 19', + '--color-warning-950': '84 45 18', /* Info */ - "--color-info-0": "#ECF8FE", - "--color-info-50": "#C7EBFC", - "--color-info-100": "#A2DDFA", - "--color-info-200": "#7CCFF8", - "--color-info-300": "#57C2F6", - "--color-info-400": "#32B4F4", - "--color-info-500": "#0DA6F2", - "--color-info-600": "#0B8DCD", - "--color-info-700": "#0973A8", - "--color-info-800": "#075A83", - "--color-info-900": "#05405D", - "--color-info-950": "#032638", + '--color-info-0': '236 248 254', + '--color-info-50': '199 235 252', + '--color-info-100': '162 221 250', + '--color-info-200': '124 207 248', + '--color-info-300': '87 194 246', + '--color-info-400': '50 180 244', + '--color-info-500': '13 166 242', + '--color-info-600': '11 141 205', + '--color-info-700': '9 115 168', + '--color-info-800': '7 90 131', + '--color-info-900': '5 64 93', + '--color-info-950': '3 38 56', /* Typography */ - "--color-typography-0": "#FEFEFF", - "--color-typography-50": "#F5F5F5", - "--color-typography-100": "#E5E5E5", - "--color-typography-200": "#DBDBDC", - "--color-typography-300": "#D4D4D4", - "--color-typography-400": "#A3A3A3", - "--color-typography-500": "#8C8C8C", - "--color-typography-600": "#737373", - "--color-typography-700": "#525252", - "--color-typography-800": "#404040", - "--color-typography-900": "#262627", - "--color-typography-950": "#171717", + '--color-typography-0': '254 254 255', + '--color-typography-50': '245 245 245', + '--color-typography-100': '229 229 229', + '--color-typography-200': '219 219 220', + '--color-typography-300': '212 212 212', + '--color-typography-400': '163 163 163', + '--color-typography-500': '140 140 140', + '--color-typography-600': '115 115 115', + '--color-typography-700': '82 82 82', + '--color-typography-800': '64 64 64', + '--color-typography-900': '38 38 39', + '--color-typography-950': '23 23 23', /* Outline */ - "--color-outline-0": "#FDFEFE", - "--color-outline-50": "#F3F3F3", - "--color-outline-100": "#E6E6E6", - "--color-outline-200": "#DDDCDB", - "--color-outline-300": "#D3D3D3", - "--color-outline-400": "#A5A3A3", - "--color-outline-500": "#8C8D8D", - "--color-outline-600": "#737474", - "--color-outline-700": "#535252", - "--color-outline-800": "#414141", - "--color-outline-900": "#272624", - "--color-outline-950": "#1A1717", + '--color-outline-0': '253 254 254', + '--color-outline-50': '243 243 243', + '--color-outline-100': '230 230 230', + '--color-outline-200': '221 220 219', + '--color-outline-300': '211 211 211', + '--color-outline-400': '165 163 163', + '--color-outline-500': '140 141 141', + '--color-outline-600': '115 116 116', + '--color-outline-700': '83 82 82', + '--color-outline-800': '65 65 65', + '--color-outline-900': '39 38 36', + '--color-outline-950': '26 23 23', + /* Background */ - "--color-background-0": "#FFFFFF", - "--color-background-50": "#F6F6F6", - "--color-background-100": "#F2F1F1", - "--color-background-200": "#DCDBDB", - "--color-background-300": "#D5D4D4", - "--color-background-400": "#A2A3A3", - "--color-background-500": "#8E8E8E", - "--color-background-600": "#747474", - "--color-background-700": "#535252", - "--color-background-800": "#414040", - "--color-background-900": "#272625", - "--color-background-950": "#181718", + '--color-background-0': '255 255 255', + '--color-background-50': '246 246 246', + '--color-background-100': '242 241 241', + '--color-background-200': '220 219 219', + '--color-background-300': '213 212 212', + '--color-background-400': '162 163 163', + '--color-background-500': '142 142 142', + '--color-background-600': '116 116 116', + '--color-background-700': '83 82 82', + '--color-background-800': '65 64 64', + '--color-background-900': '39 38 37', + '--color-background-950': '18 18 18', /* Background Special */ - "--color-background-error": "#FEF1F1", - "--color-background-warning": "#FFF4EB", - "--color-background-success": "#EDFCF2", - "--color-background-muted": "#F6F6F7", - "--color-background-info": "#EBF8FE", + '--color-background-error': '254 241 241', + '--color-background-warning': '255 243 234', + '--color-background-success': '237 252 242', + '--color-background-muted': '247 248 247', + '--color-background-info': '235 248 254', - /* Border */ - "--color-border-0": "#FDFEFE", - "--color-border-50": "#F3F3F3", - "--color-border-100": "#E6E6E6", - "--color-border-200": "#DDDCDB", - "--color-border-300": "#D3D3D3", - "--color-border-400": "#A5A3A3", - "--color-border-500": "#8C8D8D", - "--color-border-600": "#737474", - "--color-border-700": "#535252", - "--color-border-800": "#414141", - "--color-border-900": "#272624", - "--color-border-950": "#1A1717", + /* Focus Ring Indicator */ + '--color-indicator-primary': '55 55 55', + '--color-indicator-info': '83 153 236', + '--color-indicator-error': '185 28 28', }), dark: vars({ - "--color-primary-0": "#828282", - "--color-primary-50": "#949494", - "--color-primary-100": "#9E9E9E", - "--color-primary-200": "#B3B3B3", - "--color-primary-300": "#C7C7C7", - "--color-primary-400": "#E6E6E6", - "--color-primary-500": "#F0F0F0", - "--color-primary-600": "#FAFAFA", - "--color-primary-700": "#FCFCFC", - "--color-primary-800": "#FDFDFD", - "--color-primary-900": "#FDFCFC", - "--color-primary-950": "#FDFCFC", + '--color-primary-0': '166 166 166', + '--color-primary-50': '175 175 175', + '--color-primary-100': '186 186 186', + '--color-primary-200': '197 197 197', + '--color-primary-300': '212 212 212', + '--color-primary-400': '221 221 221', + '--color-primary-500': '230 230 230', + '--color-primary-600': '240 240 240', + '--color-primary-700': '250 250 250', + '--color-primary-800': '253 253 253', + '--color-primary-900': '254 249 249', + '--color-primary-950': '253 252 252', /* Secondary */ - "--color-secondary-0": "#0B0C0C", - "--color-secondary-50": "#181717", - "--color-secondary-100": "#272626", - "--color-secondary-200": "#3F4040", - "--color-secondary-300": "#515252", - "--color-secondary-400": "#5E5F5F", - "--color-secondary-500": "#727373", - "--color-secondary-600": "#AFB0B0", - "--color-secondary-700": "#DBDBDB", - "--color-secondary-800": "#E7E8E8", - "--color-secondary-900": "#F1F2F2", - "--color-secondary-950": "#FEFFFF", + '--color-secondary-0': '20 20 20', + '--color-secondary-50': '23 23 23', + '--color-secondary-100': '31 31 31', + '--color-secondary-200': '39 39 39', + '--color-secondary-300': '44 44 44', + '--color-secondary-400': '56 57 57', + '--color-secondary-500': '63 64 64', + '--color-secondary-600': '86 86 86', + '--color-secondary-700': '110 110 110', + '--color-secondary-800': '135 135 135', + '--color-secondary-900': '150 150 150', + '--color-secondary-950': '164 164 164', /* Tertiary */ - "--color-tertiary-0": "#543112", - "--color-tertiary-50": "#6C3D13", - "--color-tertiary-100": "#824917", - "--color-tertiary-200": "#B4621A", - "--color-tertiary-300": "#D7751F", - "--color-tertiary-400": "#E78128", - "--color-tertiary-500": "#FB9D4B", - "--color-tertiary-600": "#FDB474", - "--color-tertiary-700": "#FED1AA", - "--color-tertiary-800": "#FFE9D5", - "--color-tertiary-900": "#FFF2E5", - "--color-tertiary-950": "#FFFAF5", + '--color-tertiary-0': '84 49 18', + '--color-tertiary-50': '108 61 19', + '--color-tertiary-100': '130 73 23', + '--color-tertiary-200': '180 98 26', + '--color-tertiary-300': '215 117 31', + '--color-tertiary-400': '231 129 40', + '--color-tertiary-500': '251 157 75', + '--color-tertiary-600': '253 180 116', + '--color-tertiary-700': '254 209 170', + '--color-tertiary-800': '255 233 213', + '--color-tertiary-900': '255 242 229', + '--color-tertiary-950': '255 250 245', /* Error */ - "--color-error-0": "#531313", - "--color-error-50": "#7F1D1D", - "--color-error-100": "#991B1B", - "--color-error-200": "#B91C1C", - "--color-error-300": "#DC2626", - "--color-error-400": "#E63535", - "--color-error-500": "#EF4444", - "--color-error-600": "#F87171", - "--color-error-700": "#E63534", - "--color-error-800": "#FECACA", - "--color-error-900": "#FEE2E2", - "--color-error-950": "#FEE9E9", + '--color-error-0': '83 19 19', + '--color-error-50': '127 29 29', + '--color-error-100': '153 27 27', + '--color-error-200': '185 28 28', + '--color-error-300': '220 38 38', + '--color-error-400': '230 53 53', + '--color-error-500': '239 68 68', + '--color-error-600': '249 97 96', + '--color-error-700': '229 91 90', + '--color-error-800': '254 202 202', + '--color-error-900': '254 226 226', + '--color-error-950': '254 233 233', /* Success */ - "--color-success-0": "#1B3224", - "--color-success-50": "#14532D", - "--color-success-100": "#166534", - "--color-success-200": "#206F3E", - "--color-success-300": "#2A7948", - "--color-success-400": "#348352", - "--color-success-500": "#489766", - "--color-success-600": "#66B584", - "--color-success-700": "#84D3A2", - "--color-success-800": "#A2F1C0", - "--color-success-900": "#CAFFE8", - "--color-success-950": "#E4FFF4", + '--color-success-0': '27 50 36', + '--color-success-50': '20 83 45', + '--color-success-100': '22 101 52', + '--color-success-200': '32 111 62', + '--color-success-300': '42 121 72', + '--color-success-400': '52 131 82', + '--color-success-500': '72 151 102', + '--color-success-600': '102 181 132', + '--color-success-700': '132 211 162', + '--color-success-800': '162 241 192', + '--color-success-900': '202 255 232', + '--color-success-950': '228 255 244', /* Warning */ - "--color-warning-0": "#542D12", - "--color-warning-50": "#6C3813", - "--color-warning-100": "#824417", - "--color-warning-200": "#B45A1A", - "--color-warning-300": "#D76C1F", - "--color-warning-400": "#E77828", - "--color-warning-500": "#FB954B", - "--color-warning-600": "#FDAD74", - "--color-warning-700": "#FECDAA", - "--color-warning-800": "#FFE7D5", - "--color-warning-900": "#FFF9F5", - "--color-warning-950": "#FFFDFB", + '--color-warning-0': '84 45 18', + '--color-warning-50': '108 56 19', + '--color-warning-100': '130 68 23', + '--color-warning-200': '180 90 26', + '--color-warning-300': '215 108 31', + '--color-warning-400': '231 120 40', + '--color-warning-500': '251 149 75', + '--color-warning-600': '253 173 116', + '--color-warning-700': '254 205 170', + '--color-warning-800': '255 231 213', + '--color-warning-900': '255 244 237', + '--color-warning-950': '255 249 245', /* Info */ - "--color-info-0": "#032638", - "--color-info-50": "#05405D", - "--color-info-100": "#075A83", - "--color-info-200": "#0973A8", - "--color-info-300": "#0B8DCD", - "--color-info-400": "#0DA6F2", - "--color-info-500": "#32B4F4", - "--color-info-600": "#57C2F6", - "--color-info-700": "#7CCFF8", - "--color-info-800": "#A2DDFA", - "--color-info-900": "#C7EBFC", - "--color-info-950": "#ECF8FE", + '--color-info-0': '3 38 56', + '--color-info-50': '5 64 93', + '--color-info-100': '7 90 131', + '--color-info-200': '9 115 168', + '--color-info-300': '11 141 205', + '--color-info-400': '13 166 242', + '--color-info-500': '50 180 244', + '--color-info-600': '87 194 246', + '--color-info-700': '124 207 248', + '--color-info-800': '162 221 250', + '--color-info-900': '199 235 252', + '--color-info-950': '236 248 254', /* Typography */ - "--color-typography-0": "#171717", - "--color-typography-50": "#262627", - "--color-typography-100": "#404040", - "--color-typography-200": "#525252", - "--color-typography-300": "#737373", - "--color-typography-400": "#8C8C8C", - "--color-typography-500": "#A3A3A3", - "--color-typography-600": "#D4D4D4", - "--color-typography-700": "#DBDBDC", - "--color-typography-800": "#E5E5E5", - "--color-typography-900": "#F5F5F5", - "--color-typography-950": "#FEFEFF", + '--color-typography-0': '23 23 23', + '--color-typography-50': '38 38 39', + '--color-typography-100': '64 64 64', + '--color-typography-200': '82 82 82', + '--color-typography-300': '115 115 115', + '--color-typography-400': '140 140 140', + '--color-typography-500': '163 163 163', + '--color-typography-600': '212 212 212', + '--color-typography-700': '219 219 220', + '--color-typography-800': '229 229 229', + '--color-typography-900': '245 245 245', + '--color-typography-950': '254 254 255', /* Outline */ - "--color-outline-0": "#1A1717", - "--color-outline-50": "#272624", - "--color-outline-100": "#414141", - "--color-outline-200": "#535252", - "--color-outline-300": "#737474", - "--color-outline-400": "#8C8D8D", - "--color-outline-500": "#A5A3A3", - "--color-outline-600": "#D3D3D3", - "--color-outline-700": "#DDDCDB", - "--color-outline-800": "#E6E6E6", - "--color-outline-900": "#F3F3F3", - "--color-outline-950": "#FDFEFE", + '--color-outline-0': '26 23 23', + '--color-outline-50': '39 38 36', + '--color-outline-100': '65 65 65', + '--color-outline-200': '83 82 82', + '--color-outline-300': '115 116 116', + '--color-outline-400': '140 141 141', + '--color-outline-500': '165 163 163', + '--color-outline-600': '211 211 211', + '--color-outline-700': '221 220 219', + '--color-outline-800': '230 230 230', + '--color-outline-900': '243 243 243', + '--color-outline-950': '253 254 254', /* Background */ - "--color-background-0": "#121212", - "--color-background-50": "#272625", - "--color-background-100": "#414040", - "--color-background-200": "#535252", - "--color-background-300": "#747474", - "--color-background-400": "#8E8E8E", - "--color-background-500": "#A2A3A3", - "--color-background-600": "#D5D4D4", - "--color-background-700": "#DCDBDB", - "--color-background-800": "#F2F1F1", - "--color-background-900": "#F6F6F6", - "--color-background-950": "#FEFEFE", + '--color-background-0': '18 18 18', + '--color-background-50': '39 38 37', + '--color-background-100': '65 64 64', + '--color-background-200': '83 82 82', + '--color-background-300': '116 116 116', + '--color-background-400': '142 142 142', + '--color-background-500': '162 163 163', + '--color-background-600': '213 212 212', + '--color-background-700': '229 228 228', + '--color-background-800': '242 241 241', + '--color-background-900': '246 246 246', + '--color-background-950': '255 255 255', /* Background Special */ - "--color-background-error": "#422B2B", - "--color-background-warning": "#412F23", - "--color-background-success": "#1C2B21", - "--color-background-muted": "#252526", - "--color-background-info": "#1A282E", + '--color-background-error': '66 43 43', + '--color-background-warning': '65 47 35', + '--color-background-success': '28 43 33', + '--color-background-muted': '51 51 51', + '--color-background-info': '26 40 46', - /* Border */ - "--color-border-0": "#1A1717", - "--color-border-50": "#272624", - "--color-border-100": "#414141", - "--color-border-200": "#535252", - "--color-border-300": "#737474", - "--color-border-400": "#8C8D8D", - "--color-border-500": "#A5A3A3", - "--color-border-600": "#D3D3D3", - "--color-border-700": "#DDDCDB", - "--color-border-800": "#E6E6E6", - "--color-border-900": "#F3F3F3", - "--color-border-950": "#FDFEFE", + /* Focus Ring Indicator */ + '--color-indicator-primary': '247 247 247', + '--color-indicator-info': '161 199 245', + '--color-indicator-error': '232 70 69', }), }; diff --git a/expo-app/components/ui/gluestack-ui-provider/index.tsx b/expo-app/components/ui/gluestack-ui-provider/index.tsx index 4dc2cfe6..4855e434 100644 --- a/expo-app/components/ui/gluestack-ui-provider/index.tsx +++ b/expo-app/components/ui/gluestack-ui-provider/index.tsx @@ -1,22 +1,42 @@ import React from 'react'; import { config } from './config'; -import { View } from 'react-native'; +import { ColorSchemeName, useColorScheme, View, ViewProps } from 'react-native'; import { OverlayProvider } from '@gluestack-ui/overlay'; import { ToastProvider } from '@gluestack-ui/toast'; +import { colorScheme as colorSchemeNW } from 'nativewind'; + +type ModeType = 'light' | 'dark' | 'system'; + +const getColorSchemeName = ( + colorScheme: ColorSchemeName, + mode: ModeType +): 'light' | 'dark' => { + if (mode === 'system') { + return colorScheme ?? 'light'; + } + return mode; +}; export function GluestackUIProvider({ mode = 'light', ...props }: { - mode?: 'light' | 'dark'; - children?: any; + mode?: 'light' | 'dark' | 'system'; + children?: React.ReactNode; + style?: ViewProps['style']; }) { + const colorScheme = useColorScheme(); + + const colorSchemeName = getColorSchemeName(colorScheme, mode); + + colorSchemeNW.set(mode); + return ( diff --git a/expo-app/components/ui/gluestack-ui-provider/index.web.tsx b/expo-app/components/ui/gluestack-ui-provider/index.web.tsx index 086a7295..30cadaaa 100644 --- a/expo-app/components/ui/gluestack-ui-provider/index.web.tsx +++ b/expo-app/components/ui/gluestack-ui-provider/index.web.tsx @@ -1,36 +1,94 @@ 'use client'; -import React from 'react'; +import React, { useEffect, useLayoutEffect } from 'react'; import { config } from './config'; import { OverlayProvider } from '@gluestack-ui/overlay'; import { ToastProvider } from '@gluestack-ui/toast'; import { setFlushStyles } from '@gluestack-ui/nativewind-utils/flush'; +import { script } from './script'; + +const variableStyleTagId = 'nativewind-style'; +const createStyle = (styleTagId: string) => { + const style = document.createElement('style'); + style.id = styleTagId; + style.appendChild(document.createTextNode('')); + return style; +}; + +export const useSafeLayoutEffect = + typeof window !== 'undefined' ? useLayoutEffect : useEffect; export function GluestackUIProvider({ mode = 'light', ...props }: { - mode?: 'light' | 'dark'; - children?: any; + mode?: 'light' | 'dark' | 'system'; + children?: React.ReactNode; }) { - const stringcssvars = Object.keys(config[mode]).reduce((acc, cur) => { - acc += `${cur}:${config[mode][cur]};`; - return acc; - }, ''); - setFlushStyles(`:root {${stringcssvars}} `); - - if (config[mode] && typeof document !== 'undefined') { - const element = document.documentElement; - if (element) { - const head = element.querySelector('head'); - const style = document.createElement('style'); - style.innerHTML = `:root {${stringcssvars}} `; - if (head) head.appendChild(style); + let cssVariablesWithMode = ``; + Object.keys(config).forEach((configKey) => { + cssVariablesWithMode += + configKey === 'dark' ? `\n .dark {\n ` : `\n:root {\n`; + const cssVariables = Object.keys( + config[configKey as keyof typeof config] + ).reduce((acc: string, curr: string) => { + acc += `${curr}:${config[configKey as keyof typeof config][curr]}; `; + return acc; + }, ''); + cssVariablesWithMode += `${cssVariables} \n}`; + }); + + setFlushStyles(cssVariablesWithMode); + + const handleMediaQuery = React.useCallback((e: MediaQueryListEvent) => { + script(e.matches ? 'dark' : 'light'); + }, []); + + useSafeLayoutEffect(() => { + if (mode !== 'system') { + const documentElement = document.documentElement; + if (documentElement) { + documentElement.classList.add(mode); + documentElement.classList.remove(mode === 'light' ? 'dark' : 'light'); + documentElement.style.colorScheme = mode; + } + } + }, [mode]); + + useSafeLayoutEffect(() => { + if (mode !== 'system') return; + const media = window.matchMedia('(prefers-color-scheme: dark)'); + + media.addListener(handleMediaQuery); + + return () => media.removeListener(handleMediaQuery); + }, [handleMediaQuery]); + + useSafeLayoutEffect(() => { + if (typeof window !== 'undefined') { + const documentElement = document.documentElement; + if (documentElement) { + const head = documentElement.querySelector('head'); + let style = head?.querySelector(`[id='${variableStyleTagId}']`); + if (!style) { + style = createStyle(variableStyleTagId); + style.innerHTML = cssVariablesWithMode; + if (head) head.appendChild(style); + } + } } - } + }, []); return ( - - {props.children} - + <> + + + {props.children} + + ); } diff --git a/expo-app/components/ui/gluestack-ui-provider/script.ts b/expo-app/components/ui/gluestack-ui-provider/script.ts new file mode 100644 index 00000000..732d1363 --- /dev/null +++ b/expo-app/components/ui/gluestack-ui-provider/script.ts @@ -0,0 +1,19 @@ +export const script = (mode: string) => { + const documentElement = document.documentElement; + + function getSystemColorMode() { + return window.matchMedia('(prefers-color-scheme: dark)').matches + ? 'dark' + : 'light'; + } + + try { + const isSystem = mode === 'system'; + const theme = isSystem ? getSystemColorMode() : mode; + documentElement.classList.remove(theme === 'light' ? 'dark' : 'light'); + documentElement.classList.add(theme); + documentElement.style.colorScheme = theme; + } catch (e) { + console.error(e); + } +}; diff --git a/expo-app/components/ui/grid/index.tsx b/expo-app/components/ui/grid/index.tsx index 7c087a7c..7e0d36b9 100644 --- a/expo-app/components/ui/grid/index.tsx +++ b/expo-app/components/ui/grid/index.tsx @@ -13,8 +13,9 @@ import { cssInterop } from 'nativewind'; import { useBreakpointValue, getBreakPointValue, -} from '@gluestack-ui/nativewind-utils/useBreakpointValue'; -const { width } = Dimensions.get('window'); +} from '@/components/ui/utils/use-break-point-value'; + +const { width: DEVICE_WIDTH } = Dimensions.get('window'); const GridContext = createContext({}); @@ -117,6 +118,9 @@ type IGridProps = ViewProps & paddingRight?: number; paddingStart?: number; paddingEnd?: number; + borderWidth?: number; + borderLeftWidth?: number; + borderRightWidth?: number; _extra: { className: string; }; @@ -137,7 +141,7 @@ const Grid = forwardRef, IGridProps>( const colSpan2 = getBreakPointValue( generateResponsiveColSpans({ gridItemClassName }), - width + DEVICE_WIDTH ); const colSpan = colSpan2 ? colSpan2 : 1; @@ -182,6 +186,10 @@ const Grid = forwardRef, IGridProps>( }; }, [calculatedWidth, itemsPerRow, responsiveNumColumns, props]); + const borderLeftWidth = props?.borderLeftWidth || props?.borderWidth || 0; + const borderRightWidth = props?.borderRightWidth || props?.borderWidth || 0; + const borderWidthToSubtract = borderLeftWidth + borderRightWidth; + return ( , IGridProps>( const paddingRightToSubtract = props?.paddingEnd || props?.paddingRight || props?.padding || 0; - const width = + const gridWidth = event.nativeEvent.layout.width - paddingLeftToSubtract - - paddingRightToSubtract; + paddingRightToSubtract - + borderWidthToSubtract; - setCalculatedWidth(width); + setCalculatedWidth(gridWidth); }} {...props} > @@ -212,7 +221,6 @@ const Grid = forwardRef, IGridProps>( } ); -//@ts-ignore cssInterop(Grid, { className: { target: 'style', @@ -226,6 +234,9 @@ cssInterop(Grid, { paddingRight: 'paddingRight', paddingStart: 'paddingStart', paddingEnd: 'paddingEnd', + borderWidth: 'borderWidth', + borderLeftWidth: 'borderLeftWidth', + borderRightWidth: 'borderRightWidth', }, }, }); @@ -271,7 +282,7 @@ const GridItem = forwardRef, IGridItemProps>( return itemsPerRow[key].includes(props?.index); }); - const rowColsCount = itemsPerRow[row as string].length; + const rowColsCount = itemsPerRow[row as string]?.length; const space = columnGap || gap || 0; @@ -308,9 +319,7 @@ const GridItem = forwardRef, IGridItemProps>( // @ts-expect-error gridItemClass={gridItemClass} className={gridItemStyle({ - class: - className + ' ' + Platform.select({ web: gridItemClass ?? '' }) ?? - '', + class: className, })} {...props} style={[ diff --git a/expo-app/components/ui/heading/index.tsx b/expo-app/components/ui/heading/index.tsx index 226ab2fe..be876d41 100644 --- a/expo-app/components/ui/heading/index.tsx +++ b/expo-app/components/ui/heading/index.tsx @@ -1,8 +1,8 @@ import React, { forwardRef, memo } from 'react'; import { H1, H2, H3, H4, H5, H6 } from '@expo/html-elements'; -import { cssInterop } from 'nativewind'; import { headingStyle } from './styles'; import type { VariantProps } from '@gluestack-ui/nativewind-utils'; +import { cssInterop } from 'nativewind'; type IHeadingProps = VariantProps & React.ComponentPropsWithoutRef & { @@ -51,6 +51,7 @@ const MappedHeading = memo( class: className, })} {...props} + // @ts-expect-error ref={ref} /> ); @@ -69,6 +70,7 @@ const MappedHeading = memo( class: className, })} {...props} + // @ts-expect-error ref={ref} /> ); @@ -87,6 +89,7 @@ const MappedHeading = memo( class: className, })} {...props} + // @ts-expect-error ref={ref} /> ); @@ -105,6 +108,7 @@ const MappedHeading = memo( class: className, })} {...props} + // @ts-expect-error ref={ref} /> ); @@ -123,6 +127,7 @@ const MappedHeading = memo( class: className, })} {...props} + // @ts-expect-error ref={ref} /> ); @@ -142,6 +147,7 @@ const MappedHeading = memo( class: className, })} {...props} + // @ts-expect-error ref={ref} /> ); @@ -160,6 +166,7 @@ const MappedHeading = memo( class: className, })} {...props} + // @ts-expect-error ref={ref} /> ); diff --git a/expo-app/components/ui/icon/index.tsx b/expo-app/components/ui/icon/index.tsx index 6adbe8c1..bb0fd52c 100644 --- a/expo-app/components/ui/icon/index.tsx +++ b/expo-app/components/ui/icon/index.tsx @@ -1,58 +1,21 @@ 'use client'; -import React, { useMemo } from 'react'; +import React from 'react'; import { createIcon } from '@gluestack-ui/icon'; -import { Path, Svg } from 'react-native-svg'; +import { Path } from 'react-native-svg'; import { tva } from '@gluestack-ui/nativewind-utils/tva'; import { cssInterop } from 'nativewind'; import { VariantProps } from '@gluestack-ui/nativewind-utils'; - -type IPrimitiveIcon = { - height?: number | string; - width?: number | string; - fill?: string; - color?: string; - size?: number | string; - stroke?: string; - as?: React.ElementType; - className?: string; -}; - -const PrimitiveIcon = React.forwardRef< - React.ElementRef, - IPrimitiveIcon ->(({ height, width, fill, color, size, stroke, as: AsComp, ...props }, ref) => { - const sizeProps = useMemo(() => { - if (size) return { size }; - if (height && width) return { height, width }; - if (height) return { height }; - if (width) return { width }; - return {}; - }, [size, height, width]); - - let colorProps = {}; - if (color) { - colorProps = { ...colorProps, color: color }; - } - if (stroke) { - colorProps = { ...colorProps, stroke: stroke }; - } - if (fill) { - colorProps = { ...colorProps, fill: fill }; - } - if (AsComp) { - return ; - } - return ( - - ); -}); +import { PrimitiveIcon, IPrimitiveIcon, Svg } from '@gluestack-ui/icon'; export const UIIcon = createIcon({ Root: PrimitiveIcon, -}); +}) as React.ForwardRefExoticComponent< + React.ComponentPropsWithoutRef & + React.RefAttributes> +>; const iconStyle = tva({ - base: 'text-typography-950 fill-none', + base: 'text-typography-950 fill-none pointer-events-none', variants: { size: { '2xs': 'h-3 w-3', @@ -72,7 +35,7 @@ cssInterop(UIIcon, { height: true, width: true, fill: true, - color: true, + color: 'classNameColor', stroke: true, }, }, @@ -118,23 +81,28 @@ export const Icon = React.forwardRef, IIConProps>( type ParameterTypes = Omit[0], 'Root'>; const createIconUI = ({ ...props }: ParameterTypes) => { - const UIIconCreateIcon = createIcon({ Root: Svg, ...props }); + const UIIconCreateIcon = createIcon({ + Root: Svg, + ...props, + }) as React.ForwardRefExoticComponent< + React.ComponentPropsWithoutRef & + React.RefAttributes> + >; return React.forwardRef>( ( { className, size, - ...props + ...inComingProps }: VariantProps & React.ComponentPropsWithoutRef, ref ) => { return ( ); diff --git a/expo-app/components/ui/icon/index.web.tsx b/expo-app/components/ui/icon/index.web.tsx index 0896a283..424ed1d0 100644 --- a/expo-app/components/ui/icon/index.web.tsx +++ b/expo-app/components/ui/icon/index.web.tsx @@ -1,94 +1,16 @@ -import React, { useMemo } from 'react'; +'use client'; +import React from 'react'; import { createIcon } from '@gluestack-ui/icon'; import { tva } from '@gluestack-ui/nativewind-utils/tva'; import { VariantProps } from '@gluestack-ui/nativewind-utils'; - -const accessClassName = (style: any) => { - const obj = style[0]; - const keys = Object.keys(obj); //will return an array of keys - return obj[keys[1]]; -}; - -const Svg = React.forwardRef< - React.ElementRef<'svg'>, - React.ComponentPropsWithoutRef<'svg'> ->(({ style, className, ...props }, ref) => { - const calculateClassName = useMemo(() => { - return className === undefined ? accessClassName(style) : className; - }, [className, style]); - - return ; -}); - -type IPrimitiveIcon = { - height?: number | string; - width?: number | string; - fill?: string; - color?: string; - size?: number | string; - stroke?: string; - as?: React.ElementType; - className?: string; -}; - -const PrimitiveIcon = React.forwardRef< - React.ElementRef<'svg'>, - React.ComponentPropsWithoutRef<'svg'> & IPrimitiveIcon ->( - ( - { - height, - width, - fill, - color, - size, - stroke = 'currentColor', - as: AsComp, - ...props - }, - ref - ) => { - const sizeProps = useMemo(() => { - if (size) return { size }; - if (height && width) return { height, width }; - if (height) return { height }; - if (width) return { width }; - return {}; - }, [size, height, width]); - - const colorProps = - stroke === 'currentColor' && color !== undefined ? color : stroke; - - if (AsComp) { - return ( - - ); - } - return ( - - ); - } -); +import { PrimitiveIcon, Svg } from '@gluestack-ui/icon'; export const UIIcon = createIcon({ Root: PrimitiveIcon, }); const iconStyle = tva({ - base: 'text-typography-950 fill-none', + base: 'text-typography-950 fill-none pointer-events-none', variants: { size: { '2xs': 'h-3 w-3', @@ -141,9 +63,14 @@ export const Icon = React.forwardRef< type ParameterTypes = Omit[0], 'Root'>; -const createIconUI = ({ ...props }: ParameterTypes) => { - const UIIcon = createIcon({ Root: Svg, ...props }); +const accessClassName = (style: any) => { + const styleObject = Array.isArray(style) ? style[0] : style; + const keys = Object.keys(styleObject); + return styleObject[keys[1]]; +}; +const createIconUI = ({ ...props }: ParameterTypes) => { + const NewUIIcon = createIcon({ Root: Svg, ...props }); return React.forwardRef< React.ElementRef, React.ComponentPropsWithoutRef & @@ -151,16 +78,18 @@ const createIconUI = ({ ...props }: ParameterTypes) => { height?: number | string; width?: number | string; } - >(({ className, size, ...props }, ref) => { + >(({ className, ...inComingprops }, ref) => { + const calculateClassName = React.useMemo(() => { + return className === undefined + ? accessClassName(inComingprops?.style) + : className; + }, [className, inComingprops?.style]); return ( - + ); }); }; + export { createIconUI as createIcon }; // All Icons diff --git a/expo-app/components/ui/image/index.tsx b/expo-app/components/ui/image/index.tsx index 26879c42..1afc87a2 100644 --- a/expo-app/components/ui/image/index.tsx +++ b/expo-app/components/ui/image/index.tsx @@ -4,7 +4,6 @@ import { createImage } from '@gluestack-ui/image'; import { Platform, Image as RNImage } from 'react-native'; import { tva } from '@gluestack-ui/nativewind-utils/tva'; import type { VariantProps } from '@gluestack-ui/nativewind-utils'; -import { cssInterop } from 'nativewind'; const imageStyle = tva({ base: 'max-w-full', @@ -18,12 +17,12 @@ const imageStyle = tva({ 'xl': 'h-32 w-32', '2xl': 'h-64 w-64', 'full': 'h-full w-full', + 'none': '', }, }, }); const UIImage = createImage({ Root: RNImage }); -cssInterop(UIImage, { className: 'style' }); type ImageProps = VariantProps & React.ComponentProps; @@ -36,10 +35,11 @@ const Image = React.forwardRef< className={imageStyle({ size, class: className })} {...props} ref={ref} - //@ts-ignore + // @ts-expect-error style={ Platform.OS === 'web' - ? { height: 'revert-layer', width: 'revert-layer' } + ? // eslint-disable-next-line react-native/no-inline-styles + { height: 'revert-layer', width: 'revert-layer' } : undefined } /> diff --git a/expo-app/components/ui/input/index.tsx b/expo-app/components/ui/input/index.tsx index 3f2658ea..97aa1351 100644 --- a/expo-app/components/ui/input/index.tsx +++ b/expo-app/components/ui/input/index.tsx @@ -1,76 +1,36 @@ 'use client'; -import React, { useMemo } from 'react'; +import React from 'react'; import { createInput } from '@gluestack-ui/input'; -import { Svg } from 'react-native-svg'; -import { View, Pressable, TextInput, Platform } from 'react-native'; +import { View, Pressable, TextInput } from 'react-native'; import { tva } from '@gluestack-ui/nativewind-utils/tva'; import { withStyleContext, useStyleContext, } from '@gluestack-ui/nativewind-utils/withStyleContext'; -import { withStyleContextAndStates } from '@gluestack-ui/nativewind-utils/withStyleContextAndStates'; import { cssInterop } from 'nativewind'; -import { withStates } from '@gluestack-ui/nativewind-utils/withStates'; import type { VariantProps } from '@gluestack-ui/nativewind-utils'; -const SCOPE = 'INPUT'; - -type IPrimitiveIcon = { - height?: number | string; - width?: number | string; - fill?: string; - color?: string; - size?: number | string; - stroke?: string; - as?: React.ElementType; - className?: string; -}; - -const PrimitiveIcon = React.forwardRef< - React.ElementRef, - IPrimitiveIcon ->(({ height, width, fill, color, size, stroke, as: AsComp, ...props }, ref) => { - const sizeProps = useMemo(() => { - if (size) return { size }; - if (height && width) return { height, width }; - if (height) return { height }; - if (width) return { width }; - return {}; - }, [size, height, width]); +import { PrimitiveIcon, UIIcon } from '@gluestack-ui/icon'; - let colorProps = {}; - if (color) { - colorProps = { ...colorProps, color: color }; - } - if (stroke) { - colorProps = { ...colorProps, stroke: stroke }; - } - if (fill) { - colorProps = { ...colorProps, fill: fill }; - } - if (AsComp) { - return ; - } - return ( - - ); -}); - -const InputWrapper = React.forwardRef< - React.ElementRef, - React.ComponentProps ->(({ ...props }, ref) => { - return ; -}); +const SCOPE = 'INPUT'; const UIInput = createInput({ - // @ts-ignore - Root: - Platform.OS === 'web' - ? withStyleContext(InputWrapper, SCOPE) - : withStyleContextAndStates(InputWrapper, SCOPE), - Icon: PrimitiveIcon, + Root: withStyleContext(View, SCOPE), + Icon: UIIcon, Slot: Pressable, - Input: Platform.OS === 'web' ? TextInput : withStates(TextInput), + Input: TextInput, +}); + +cssInterop(PrimitiveIcon, { + className: { + target: 'style', + nativeStyleToProp: { + height: true, + width: true, + fill: true, + color: 'classNameColor', + stroke: true, + }, + }, }); const inputStyle = tva({ @@ -141,25 +101,6 @@ const inputFieldStyle = tva({ }, }); -cssInterop(InputWrapper, { className: 'style' }); -cssInterop(UIInput.Slot, { className: 'style' }); -cssInterop(UIInput.Input, { - className: { target: 'style', nativeStyleToProp: { textAlign: true } }, -}); -cssInterop(UIInput.Icon, { - className: { - target: 'style', - nativeStyleToProp: { - height: true, - width: true, - // @ts-ignore - fill: true, - color: true, - stroke: true, - }, - }, -}); - type IInputProps = React.ComponentProps & VariantProps & { className?: string }; const Input = React.forwardRef, IInputProps>( diff --git a/expo-app/components/ui/link/index.tsx b/expo-app/components/ui/link/index.tsx index 04e8d83f..a17b0b72 100644 --- a/expo-app/components/ui/link/index.tsx +++ b/expo-app/components/ui/link/index.tsx @@ -1,22 +1,17 @@ 'use client'; import { createLink } from '@gluestack-ui/link'; -import { Pressable, Platform } from 'react-native'; +import { Pressable } from 'react-native'; import { Text } from 'react-native'; import { tva } from '@gluestack-ui/nativewind-utils/tva'; import { withStyleContext } from '@gluestack-ui/nativewind-utils/withStyleContext'; -import { withStyleContextAndStates } from '@gluestack-ui/nativewind-utils/withStyleContextAndStates'; import { cssInterop } from 'nativewind'; -import { withStates } from '@gluestack-ui/nativewind-utils/withStates'; import type { VariantProps } from '@gluestack-ui/nativewind-utils'; import React from 'react'; export const UILink = createLink({ - Root: - Platform.OS === 'web' - ? withStyleContext(Pressable) - : withStyleContextAndStates(Pressable), - Text: Platform.OS === 'web' ? Text : withStates(Text), + Root: withStyleContext(Pressable), + Text: Text, }); cssInterop(UILink, { className: 'style' }); diff --git a/expo-app/components/ui/menu/index.tsx b/expo-app/components/ui/menu/index.tsx index 2eeffb62..1a3573ca 100644 --- a/expo-app/components/ui/menu/index.tsx +++ b/expo-app/components/ui/menu/index.tsx @@ -3,10 +3,9 @@ import React from 'react'; import { createMenu } from '@gluestack-ui/menu'; import { tva } from '@gluestack-ui/nativewind-utils/tva'; import { cssInterop } from 'nativewind'; -import { Pressable, Text, Platform, View } from 'react-native'; +import { Pressable, Text, View } from 'react-native'; import { Motion, AnimatePresence } from '@legendapp/motion'; import type { VariantProps } from '@gluestack-ui/nativewind-utils'; -import { withStates } from '@gluestack-ui/nativewind-utils/withStates'; const menuStyle = tva({ base: 'rounded-md bg-background-0 border border-outline-100 p-1 shadow-hard-5', @@ -115,15 +114,14 @@ const Separator = React.forwardRef( ); export const UIMenu = createMenu({ Root: Motion.View, - Item: Platform.OS === 'web' ? Item : withStates(Item), + Item: Item, Label: Text, Backdrop: BackdropPressable, AnimatePresence: AnimatePresence, Separator: Separator, }); -cssInterop(UIMenu, { className: 'style' }); -cssInterop(UIMenu.ItemLabel, { className: 'style' }); +cssInterop(Motion.View, { className: 'style' }); type IMenuProps = React.ComponentProps & VariantProps & { className?: string }; diff --git a/expo-app/components/ui/modal/index.tsx b/expo-app/components/ui/modal/index.tsx index f19e5118..e38fef1c 100644 --- a/expo-app/components/ui/modal/index.tsx +++ b/expo-app/components/ui/modal/index.tsx @@ -1,7 +1,7 @@ 'use client'; import React from 'react'; import { createModal } from '@gluestack-ui/modal'; -import { Pressable, View, ScrollView, Platform } from 'react-native'; +import { Pressable, View, ScrollView } from 'react-native'; import { Motion, AnimatePresence, @@ -12,19 +12,14 @@ import { withStyleContext, useStyleContext, } from '@gluestack-ui/nativewind-utils/withStyleContext'; -import { withStyleContextAndStates } from '@gluestack-ui/nativewind-utils/withStyleContextAndStates'; import { cssInterop } from 'nativewind'; import type { VariantProps } from '@gluestack-ui/nativewind-utils'; const AnimatedPressable = createMotionAnimatedComponent(Pressable); - const SCOPE = 'MODAL'; const UIModal = createModal({ - Root: - Platform.OS === 'web' - ? withStyleContext(View, SCOPE) - : withStyleContextAndStates(View, SCOPE), + Root: withStyleContext(View, SCOPE), Backdrop: AnimatedPressable, Content: Motion.View, Body: ScrollView, @@ -33,17 +28,9 @@ const UIModal = createModal({ Header: View, AnimatePresence: AnimatePresence, }); -cssInterop(UIModal, { className: 'style' }); -cssInterop(UIModal.Backdrop, { className: 'style' }); -cssInterop(UIModal.Content, { className: 'style' }); -cssInterop(UIModal.CloseButton, { className: 'style' }); -cssInterop(UIModal.Header, { className: 'style' }); -cssInterop(UIModal.Body, { - className: 'style', - contentContainerClassName: 'contentContainerStyle', - indicatorClassName: 'indicatorStyle', -}); -cssInterop(UIModal.Footer, { className: 'style' }); + +cssInterop(AnimatedPressable, { className: 'style' }); +cssInterop(Motion.View, { className: 'style' }); const modalStyle = tva({ base: 'group/modal w-full h-full justify-center items-center web:pointer-events-none', @@ -76,7 +63,7 @@ const modalContentStyle = tva({ }); const modalBodyStyle = tva({ - base: 'mt-4 mb-6', + base: 'mt-2 mb-6', }); const modalCloseButtonStyle = tva({ diff --git a/expo-app/components/ui/popover/index.tsx b/expo-app/components/ui/popover/index.tsx index 3854379e..5d53d65a 100644 --- a/expo-app/components/ui/popover/index.tsx +++ b/expo-app/components/ui/popover/index.tsx @@ -1,6 +1,6 @@ 'use client'; import React from 'react'; -import { View, Pressable, Platform, ScrollView } from 'react-native'; +import { View, Pressable, ScrollView } from 'react-native'; import { Motion, createMotionAnimatedComponent, @@ -12,26 +12,15 @@ import { withStyleContext, useStyleContext, } from '@gluestack-ui/nativewind-utils/withStyleContext'; -import { withStates } from '@gluestack-ui/nativewind-utils/withStates'; -import { withStyleContextAndStates } from '@gluestack-ui/nativewind-utils/withStyleContextAndStates'; import { cssInterop } from 'nativewind'; import type { VariantProps } from '@gluestack-ui/nativewind-utils'; const AnimatedPressable = createMotionAnimatedComponent(Pressable); const SCOPE = 'POPOVER'; -const ArrowWrapper = React.forwardRef(({ ...props }, ref) => { - return ; -}) as React.ForwardRefExoticComponent< - React.ElementRef & - React.ComponentProps ->; + const UIPopover = createPopover({ - Root: (Platform.OS === 'web' - ? withStyleContext(View, SCOPE) - : withStyleContextAndStates(View, SCOPE)) as ReturnType< - typeof withStyleContext - >, - Arrow: Platform.OS === 'web' ? Motion.View : withStates(ArrowWrapper), + Root: withStyleContext(View, SCOPE), + Arrow: Motion.View, Backdrop: AnimatedPressable, Body: ScrollView, CloseButton: Pressable, @@ -41,18 +30,8 @@ const UIPopover = createPopover({ AnimatePresence: AnimatePresence, }); -cssInterop(UIPopover, { className: 'style' }); -cssInterop(ArrowWrapper, { className: 'style' }); -cssInterop(UIPopover.Content, { className: 'style' }); -cssInterop(UIPopover.Header, { className: 'style' }); -cssInterop(UIPopover.Footer, { className: 'style' }); -cssInterop(UIPopover.Body, { - className: 'style', - contentContainerClassName: 'contentContainerStyle', - indicatorClassName: 'indicatorStyle', -}); -cssInterop(UIPopover.Backdrop, { className: 'style' }); -cssInterop(UIPopover.CloseButton, { className: 'style' }); +cssInterop(Motion.View, { className: 'style' }); +cssInterop(AnimatedPressable, { className: 'style' }); const popoverStyle = tva({ base: 'group/popover w-full h-full justify-center items-center web:pointer-events-none', @@ -72,29 +51,29 @@ const popoverArrowStyle = tva({ variants: { placement: { 'top left': - 'data-[flip=false]:border-t-transparent data-[flip=false]:border-l-transparent data-[flip=true]:border-b-transparent data-[flip=true]:border-r-transparent', + 'data-[flip=false]:border-t-0 data-[flip=false]:border-l-0 data-[flip=true]:border-b-0 data-[flip=true]:border-r-0', 'top': - 'data-[flip=false]:border-t-transparent data-[flip=false]:border-l-transparent data-[flip=true]:border-b-transparent data-[flip=true]:border-r-transparent', + 'data-[flip=false]:border-t-0 data-[flip=false]:border-l-0 data-[flip=true]:border-b-0 data-[flip=true]:border-r-0', 'top right': - 'data-[flip=false]:border-t-transparent data-[flip=false]:border-l-transparent data-[flip=true]:border-b-transparent data-[flip=true]:border-r-transparent', + 'data-[flip=false]:border-t-0 data-[flip=false]:border-l-0 data-[flip=true]:border-b-0 data-[flip=true]:border-r-0', 'bottom': - 'data-[flip=false]:border-b-transparent data-[flip=false]:border-r-transparent data-[flip=true]:border-t-transparent data-[flip=true]:border-l-transparent', + 'data-[flip=false]:border-b-0 data-[flip=false]:border-r-0 data-[flip=true]:border-t-0 data-[flip=true]:border-l-0', 'bottom left': - 'data-[flip=false]:border-b-transparent data-[flip=false]:border-r-transparent data-[flip=true]:border-t-transparent data-[flip=true]:border-l-transparent', + 'data-[flip=false]:border-b-0 data-[flip=false]:border-r-0 data-[flip=true]:border-t-0 data-[flip=true]:border-l-0', 'bottom right': - 'data-[flip=false]:border-b-transparent data-[flip=false]:border-r-transparent data-[flip=true]:border-t-transparent data-[flip=true]:border-l-transparent', + 'data-[flip=false]:border-b-0 data-[flip=false]:border-r-0 data-[flip=true]:border-t-0 data-[flip=true]:border-l-0', 'left': - 'data-[flip=false]:border-l-transparent data-[flip=false]:border-b-transparent data-[flip=true]:border-r-transparent data-[flip=true]:border-t-transparent', + 'data-[flip=false]:border-l-0 data-[flip=false]:border-b-0 data-[flip=true]:border-r-0 data-[flip=true]:border-t-0', 'left top': - 'data-[flip=false]:border-l-transparent data-[flip=false]:border-b-transparent data-[flip=true]:border-r-transparent data-[flip=true]:border-t-transparent', + 'data-[flip=false]:border-l-0 data-[flip=false]:border-b-0 data-[flip=true]:border-r-0 data-[flip=true]:border-t-0', 'left bottom': - 'data-[flip=false]:border-l-transparent data-[flip=false]:border-b-transparent data-[flip=true]:border-r-transparent data-[flip=true]:border-t-transparent', + 'data-[flip=false]:border-l-0 data-[flip=false]:border-b-0 data-[flip=true]:border-r-0 data-[flip=true]:border-t-0', 'right': - 'data-[flip=false]:border-r-transparent data-[flip=false]:border-t-transparent data-[flip=true]:border-l-transparent data-[flip=true]:border-b-transparent', + 'data-[flip=false]:border-r-0 data-[flip=false]:border-t-0 data-[flip=true]:border-l-0 data-[flip=true]:border-b-0', 'right top': - 'data-[flip=false]:border-r-transparent data-[flip=false]:border-t-transparent data-[flip=true]:border-l-transparent data-[flip=true]:border-b-transparent', + 'data-[flip=false]:border-r-0 data-[flip=false]:border-t-0 data-[flip=true]:border-l-0 data-[flip=true]:border-b-0', 'right bottom': - 'data-[flip=false]:border-r-transparent data-[flip=false]:border-t-transparent data-[flip=true]:border-l-transparent data-[flip=true]:border-b-transparent', + 'data-[flip=false]:border-r-0 data-[flip=false]:border-t-0 data-[flip=true]:border-l-0 data-[flip=true]:border-b-0', }, }, }); @@ -167,7 +146,6 @@ const Popover = React.forwardRef< ref={ref} placement={placement} {...props} - // @ts-ignore className={popoverStyle({ size, class: className })} context={{ size, placement }} pointerEvents="box-none" diff --git a/expo-app/components/ui/pressable/index.tsx b/expo-app/components/ui/pressable/index.tsx index 9bfc0c72..e6e5e0b4 100644 --- a/expo-app/components/ui/pressable/index.tsx +++ b/expo-app/components/ui/pressable/index.tsx @@ -1,27 +1,20 @@ 'use client'; import React from 'react'; import { createPressable } from '@gluestack-ui/pressable'; -import { Pressable as RNPressable, Platform } from 'react-native'; +import { Pressable as RNPressable } from 'react-native'; import { tva } from '@gluestack-ui/nativewind-utils/tva'; import { withStyleContext } from '@gluestack-ui/nativewind-utils/withStyleContext'; -import { withStyleContextAndStates } from '@gluestack-ui/nativewind-utils/withStyleContextAndStates'; -import { cssInterop } from 'nativewind'; import type { VariantProps } from '@gluestack-ui/nativewind-utils'; const UIPressable = createPressable({ - Root: - Platform.OS === 'web' - ? withStyleContext(RNPressable) - : withStyleContextAndStates(RNPressable), + Root: withStyleContext(RNPressable), }); const pressableStyle = tva({ base: 'data-[focus-visible=true]:outline-none data-[focus-visible=true]:ring-indicator-info data-[focus-visible=true]:ring-2 data-[disabled=true]:opacity-40', }); -cssInterop(UIPressable, { className: 'style' }); - type IPressableProps = Omit< React.ComponentProps, 'context' diff --git a/expo-app/components/ui/progress/index.tsx b/expo-app/components/ui/progress/index.tsx index d098dfdc..c51ac3d0 100644 --- a/expo-app/components/ui/progress/index.tsx +++ b/expo-app/components/ui/progress/index.tsx @@ -9,6 +9,7 @@ import { } from '@gluestack-ui/nativewind-utils/withStyleContext'; import { cssInterop } from 'nativewind'; import type { VariantProps } from '@gluestack-ui/nativewind-utils'; + const SCOPE = 'PROGRESS'; export const UIProgress = createProgress({ Root: withStyleContext(View, SCOPE), @@ -21,6 +22,10 @@ cssInterop(UIProgress.FilledTrack, { className: 'style' }); const progressStyle = tva({ base: 'bg-background-300 rounded-full w-full', variants: { + orientation: { + horizontal: 'w-full', + vertical: 'h-full', + }, size: { 'xs': 'h-1', 'sm': 'h-2', @@ -30,10 +35,48 @@ const progressStyle = tva({ '2xl': 'h-6', }, }, + compoundVariants: [ + { + orientation: 'vertical', + size: 'xs', + class: 'h-full w-1 justify-end', + }, + { + orientation: 'vertical', + size: 'sm', + class: 'h-full w-2 justify-end', + }, + { + orientation: 'vertical', + size: 'md', + class: 'h-full w-3 justify-end', + }, + { + orientation: 'vertical', + size: 'lg', + class: 'h-full w-4 justify-end', + }, + + { + orientation: 'vertical', + size: 'xl', + class: 'h-full w-5 justify-end', + }, + { + orientation: 'vertical', + size: '2xl', + class: 'h-full w-6 justify-end', + }, + ], }); + const progressFilledTrackStyle = tva({ base: 'bg-primary-500 rounded-full', parentVariants: { + orientation: { + horizontal: 'w-full', + vertical: 'h-full', + }, size: { 'xs': 'h-1', 'sm': 'h-2', @@ -43,6 +86,39 @@ const progressFilledTrackStyle = tva({ '2xl': 'h-6', }, }, + parentCompoundVariants: [ + { + orientation: 'vertical', + size: 'xs', + class: 'h-full w-1', + }, + { + orientation: 'vertical', + size: 'sm', + class: 'h-full w-2', + }, + { + orientation: 'vertical', + size: 'md', + class: 'h-full w-3', + }, + { + orientation: 'vertical', + size: 'lg', + class: 'h-full w-4', + }, + + { + orientation: 'vertical', + size: 'xl', + class: 'h-full w-5', + }, + { + orientation: 'vertical', + size: '2xl', + class: 'h-full w-6', + }, + ], }); type IProgressProps = VariantProps & @@ -53,13 +129,14 @@ type IProgressFilledTrackProps = VariantProps & export const Progress = React.forwardRef< React.ElementRef, IProgressProps ->(({ className, size = 'md', ...props }, ref) => { +>(({ className, size = 'md', orientation = 'horizontal', ...props }, ref) => { return ( ); }); @@ -68,7 +145,8 @@ export const ProgressFilledTrack = React.forwardRef< React.ElementRef, IProgressFilledTrackProps >(({ className, ...props }, ref) => { - const { size: parentSize } = useStyleContext(SCOPE); + const { size: parentSize, orientation: parentOrientation } = + useStyleContext(SCOPE); return ( , - React.ComponentProps ->(({ ...props }, ref) => { - return ; -}); - -const LabelWrapper = React.forwardRef< - React.ElementRef, - React.ComponentProps ->(({ ...props }, ref) => { - return ; -}); +const SCOPE = 'Radio'; -const IconWrapper = React.forwardRef< - React.ElementRef, - React.ComponentProps ->(({ ...props }, ref) => { - return ; +const UIRadio = createRadio({ + Root: (Platform.OS === 'web' + ? withStyleContext(View, SCOPE) + : withStyleContext(Pressable, SCOPE)) as ReturnType< + typeof withStyleContext + >, + Group: View, + Icon: UIIcon, + Indicator: View, + Label: Text, }); -type IPrimitiveIcon = { - height?: number | string; - width?: number | string; - fill?: string; - color?: string; - size?: number | string; - stroke?: string; - as?: React.ElementType; - className?: string; -}; - -const PrimitiveIcon = React.forwardRef< - React.ElementRef, - IPrimitiveIcon ->(({ height, width, fill, color, size, stroke, as: AsComp, ...props }, ref) => { - const sizeProps = useMemo(() => { - if (size) return { size }; - if (height && width) return { height, width }; - if (height) return { height }; - if (width) return { width }; - return {}; - }, [size, height, width]); - - let colorProps = {}; - if (color) { - colorProps = { ...colorProps, color: color }; - } - if (stroke) { - colorProps = { ...colorProps, stroke: stroke }; - } - if (fill) { - colorProps = { ...colorProps, fill: fill }; - } - if (AsComp) { - return ; - } - return ( - - ); +cssInterop(PrimitiveIcon, { + className: { + target: 'style', + nativeStyleToProp: { + height: true, + width: true, + fill: true, + color: 'classNameColor', + stroke: true, + }, + }, }); const radioStyle = tva({ @@ -132,39 +95,6 @@ const radioLabelStyle = tva({ }, }); -const SCOPE = 'Radio'; - -const UIRadio = createRadio({ - Root: (Platform.OS === 'web' - ? withStyleContext(View, SCOPE) - : withStyleContextAndStates(Pressable, SCOPE)) as ReturnType< - typeof withStyleContextAndStates - >, - Group: View, - Icon: Platform.OS === 'web' ? IconWrapper : withStates(IconWrapper), - Indicator: - Platform.OS === 'web' ? IndicatorWrapper : withStates(IndicatorWrapper), - Label: Platform.OS === 'web' ? LabelWrapper : withStates(LabelWrapper), -}); - -cssInterop(UIRadio, { className: 'style' }); -cssInterop(UIRadio.Group, { className: 'style' }); -cssInterop(IndicatorWrapper, { className: 'style' }); -cssInterop(LabelWrapper, { className: 'style' }); -cssInterop(IconWrapper, { - className: { - target: 'style', - nativeStyleToProp: { - height: true, - width: true, - // @ts-ignore - fill: true, - color: true, - stroke: true, - }, - }, -}); - type IRadioProps = Omit, 'context'> & VariantProps; const Radio = React.forwardRef, IRadioProps>( diff --git a/expo-app/components/ui/select/index.tsx b/expo-app/components/ui/select/index.tsx index 2c6ec85f..a81cd3e5 100644 --- a/expo-app/components/ui/select/index.tsx +++ b/expo-app/components/ui/select/index.tsx @@ -1,7 +1,8 @@ -import React, { useMemo } from 'react'; +'use client'; + +import React from 'react'; import { tva } from '@gluestack-ui/nativewind-utils/tva'; -import { Svg } from 'react-native-svg'; -import { withStyleContextAndStates } from '@gluestack-ui/nativewind-utils/withStyleContextAndStates'; +import { PrimitiveIcon, UIIcon } from '@gluestack-ui/icon'; import { withStyleContext, useStyleContext, @@ -23,7 +24,7 @@ import { ActionsheetSectionList, ActionsheetSectionHeaderText, } from './select-actionsheet'; -import { Pressable, View, TextInput, Platform } from 'react-native'; +import { Pressable, View, TextInput } from 'react-native'; const SelectTriggerWrapper = React.forwardRef< React.ElementRef, @@ -87,73 +88,12 @@ const selectInputStyle = tva({ }, }); -type IPrimitiveIcon = { - height?: number | string; - width?: number | string; - fill?: string; - color?: string; - size?: number | string; - stroke?: string; - as?: React.ElementType; - className?: string; - classNameColor?: string; -}; - -const PrimitiveIcon = React.forwardRef< - React.ElementRef, - IPrimitiveIcon ->( - ( - { - height, - width, - fill, - color, - classNameColor, - size, - stroke, - as: AsComp, - ...props - }, - ref - ) => { - color = color ?? classNameColor; - const sizeProps = useMemo(() => { - if (size) return { size }; - if (height && width) return { height, width }; - if (height) return { height }; - if (width) return { width }; - return {}; - }, [size, height, width]); - - let colorProps = {}; - if (fill) { - colorProps = { ...colorProps, fill: fill }; - } - if (stroke !== 'currentColor') { - colorProps = { ...colorProps, stroke: stroke }; - } else if (stroke === 'currentColor' && color !== undefined) { - colorProps = { ...colorProps, stroke: color }; - } - - if (AsComp) { - return ; - } - return ( - - ); - } -); - const UISelect = createSelect( { Root: View, - Trigger: - Platform.OS === 'web' - ? withStyleContext(SelectTriggerWrapper) - : withStyleContextAndStates(SelectTriggerWrapper), + Trigger: withStyleContext(SelectTriggerWrapper), Input: TextInput, - Icon: PrimitiveIcon, + Icon: UIIcon, }, { Portal: Actionsheet, @@ -176,8 +116,8 @@ cssInterop(UISelect.Input, { className: { target: 'style', nativeStyleToProp: { textAlign: true } }, }); cssInterop(SelectTriggerWrapper, { className: 'style' }); -//@ts-ignore -cssInterop(UISelect.Icon, { + +cssInterop(PrimitiveIcon, { className: { target: 'style', nativeStyleToProp: { @@ -308,7 +248,6 @@ const SelectContent = UISelect.Content; const SelectDragIndicator = UISelect.DragIndicator; const SelectDragIndicatorWrapper = UISelect.DragIndicatorWrapper; const SelectItem = UISelect.Item; -const SelectItemText = UISelect.ItemText; const SelectScrollView = UISelect.ScrollView; const SelectVirtualizedList = UISelect.VirtualizedList; const SelectFlatList = UISelect.FlatList; @@ -326,7 +265,6 @@ export { SelectDragIndicator, SelectDragIndicatorWrapper, SelectItem, - SelectItemText, SelectScrollView, SelectVirtualizedList, SelectFlatList, diff --git a/expo-app/components/ui/select/select-actionsheet.tsx b/expo-app/components/ui/select/select-actionsheet.tsx index ee3f1ebf..61ab0787 100644 --- a/expo-app/components/ui/select/select-actionsheet.tsx +++ b/expo-app/components/ui/select/select-actionsheet.tsx @@ -1,3 +1,5 @@ +'use client'; + import { H4 } from '@expo/html-elements'; import { createActionsheet } from '@gluestack-ui/actionsheet'; import { @@ -8,13 +10,11 @@ import { VirtualizedList, FlatList, SectionList, - Platform, } from 'react-native'; - +import { PrimitiveIcon, UIIcon } from '@gluestack-ui/icon'; import { tva } from '@gluestack-ui/nativewind-utils/tva'; import type { VariantProps } from '@gluestack-ui/nativewind-utils'; import { withStyleContext } from '@gluestack-ui/nativewind-utils/withStyleContext'; -import { withStyleContextAndStates } from '@gluestack-ui/nativewind-utils/withStyleContextAndStates'; import { cssInterop } from 'nativewind'; import { Motion, @@ -22,59 +22,14 @@ import { createMotionAnimatedComponent, } from '@legendapp/motion'; -import React, { useMemo } from 'react'; -import { Svg } from 'react-native-svg'; +import React from 'react'; const AnimatedPressable = createMotionAnimatedComponent(Pressable); -type IPrimitiveIcon = { - height?: number | string; - width?: number | string; - fill?: string; - color?: string; - size?: number | string; - stroke?: string; - as?: React.ElementType; - className?: string; -}; - -const PrimitiveIcon = React.forwardRef< - React.ElementRef, - IPrimitiveIcon ->(({ height, width, fill, color, size, stroke, as: AsComp, ...props }, ref) => { - const sizeProps = useMemo(() => { - if (size) return { size }; - if (height && width) return { height, width }; - if (height) return { height }; - if (width) return { width }; - return {}; - }, [size, height, width]); - - let colorProps = {}; - if (color) { - colorProps = { ...colorProps, color: color }; - } - if (stroke) { - colorProps = { ...colorProps, stroke: stroke }; - } - if (fill) { - colorProps = { ...colorProps, fill: fill }; - } - if (AsComp) { - return ; - } - return ( - - ); -}); - export const UIActionsheet = createActionsheet({ Root: View, Content: withStyleContext(Motion.View), - Item: - Platform.OS === 'web' - ? withStyleContext(Pressable) - : withStyleContextAndStates(Pressable), + Item: withStyleContext(Pressable), ItemText: Text, DragIndicator: View, IndicatorWrapper: View, @@ -84,7 +39,7 @@ export const UIActionsheet = createActionsheet({ FlatList: FlatList, SectionList: SectionList, SectionHeaderText: H4, - Icon: PrimitiveIcon, + Icon: UIIcon, AnimatePresence: AnimatePresence, }); @@ -117,7 +72,18 @@ cssInterop(UIActionsheet.FlatList, { }); cssInterop(UIActionsheet.SectionList, { className: 'style' }); cssInterop(UIActionsheet.SectionHeaderText, { className: 'style' }); -cssInterop(UIActionsheet.Icon, { className: 'style' }); +cssInterop(PrimitiveIcon, { + className: { + target: 'style', + nativeStyleToProp: { + height: true, + width: true, + fill: true, + color: 'classNameColor', + stroke: true, + }, + }, +}); const actionsheetStyle = tva({ base: 'w-full h-full web:pointer-events-none' }); diff --git a/expo-app/components/ui/slider/index.tsx b/expo-app/components/ui/slider/index.tsx index 455ccd2c..77c70c6d 100644 --- a/expo-app/components/ui/slider/index.tsx +++ b/expo-app/components/ui/slider/index.tsx @@ -1,47 +1,30 @@ 'use client'; import { createSlider } from '@gluestack-ui/slider'; import { Pressable } from 'react-native'; -import { View, Platform } from 'react-native'; +import { View } from 'react-native'; import React from 'react'; import { tva } from '@gluestack-ui/nativewind-utils/tva'; import { withStyleContext, useStyleContext, } from '@gluestack-ui/nativewind-utils/withStyleContext'; -import { withStyleContextAndStates } from '@gluestack-ui/nativewind-utils/withStyleContextAndStates'; -import { cssInterop } from 'nativewind'; -import { withStates } from '@gluestack-ui/nativewind-utils/withStates'; import type { VariantProps } from '@gluestack-ui/nativewind-utils'; - -const ThumbWrapper = React.forwardRef< - React.ElementRef, - React.ComponentProps ->((props, ref) => ); - -const FilledTrackWrapper = React.forwardRef< - React.ElementRef, - React.ComponentProps ->((props, ref) => ); +import { cssInterop } from 'nativewind'; const SCOPE = 'SLIDER'; +const Root = withStyleContext(View, SCOPE); export const UISlider = createSlider({ - Root: - Platform.OS === 'web' - ? withStyleContext(View, SCOPE) - : withStyleContextAndStates(View, SCOPE), - Thumb: Platform.OS === 'web' ? ThumbWrapper : withStates(View), + Root: Root, + Thumb: View, Track: Pressable, - FilledTrack: Platform.OS === 'web' ? FilledTrackWrapper : withStates(View), + FilledTrack: View, ThumbInteraction: View, }); -cssInterop(UISlider, { className: 'style' }); -cssInterop(ThumbWrapper, { className: 'style' }); cssInterop(UISlider.Track, { className: 'style' }); -cssInterop(FilledTrackWrapper, { className: 'style' }); const sliderStyle = tva({ - base: 'justify-center items-center data-[disabled=true]:web:opacity-40 data-[disabled=true]:web:pointer-events-none', + base: 'justify-center items-center data-[disabled=true]:opacity-40 data-[disabled=true]:web:pointer-events-none', variants: { orientation: { horizontal: 'w-full', @@ -60,7 +43,7 @@ const sliderStyle = tva({ }); const sliderThumbStyle = tva({ - base: 'bg-primary-500 absolute rounded-full data-[focus=true]:bg-primary-600 data-[active=true]:bg-primary-600 data-[hover=true]:bg-primary-600 data-[disabled=true]:bg-primary-500 web:cursor-pointer web:active:outline-4 web:active:outline web:active:outline-primary-400 data-[focus=true]:web:outline-4 data-[focus=true]:web:outline data-[focus=true]:web:outline-primary-400 shadow-hard-1', + base: 'bg-primary-500 absolute rounded-full data-[focus=true]:bg-primary-600 data-[active=true]:bg-primary-600 data-[hover=true]:bg-primary-600 data-[disabled=true]:bg-primary-500 web:cursor-pointer web:data-[active=true]:outline web:data-[active=true]:outline-4 web:data-[active=true]:outline-primary-400 shadow-hard-1', parentVariants: { size: { @@ -213,7 +196,6 @@ export const SliderThumb = React.forwardRef< return ( ; - const Spinner = React.forwardRef< - React.ElementRef, - ISpinnerProps ->(({ className, color, ...props }, ref) => { - return ( - - ); -}); + React.ElementRef, + React.ComponentProps +>( + ( + { + className, + color, + focusable = false, + 'aria-label': ariaLabel = 'loading', + ...props + }, + ref + ) => { + return ( + + ); + } +); Spinner.displayName = 'Spinner'; diff --git a/expo-app/components/ui/switch/index.tsx b/expo-app/components/ui/switch/index.tsx index 85d3e6de..c70e6668 100644 --- a/expo-app/components/ui/switch/index.tsx +++ b/expo-app/components/ui/switch/index.tsx @@ -1,29 +1,15 @@ 'use client'; import React from 'react'; -import { Switch as RNSwitch, Platform } from 'react-native'; +import { Switch as RNSwitch } from 'react-native'; import { createSwitch } from '@gluestack-ui/switch'; import { tva } from '@gluestack-ui/nativewind-utils/tva'; import { withStyleContext } from '@gluestack-ui/nativewind-utils/withStyleContext'; -import { withStyleContextAndStates } from '@gluestack-ui/nativewind-utils/withStyleContextAndStates'; -import { cssInterop } from 'nativewind'; import type { VariantProps } from '@gluestack-ui/nativewind-utils'; -const SwitchWrapper = React.forwardRef< - React.ElementRef, - React.ComponentProps ->(({ ...props }, ref) => { - return ; -}); - const UISwitch = createSwitch({ - Root: - Platform.OS === 'web' - ? withStyleContext(SwitchWrapper) - : withStyleContextAndStates(SwitchWrapper), + Root: withStyleContext(RNSwitch), }); -cssInterop(SwitchWrapper, { className: 'style' }); - const switchStyle = tva({ base: 'data-[focus=true]:outline-0 data-[focus=true]:ring-2 data-[focus=true]:ring-indicator-primary web:cursor-pointer disabled:cursor-not-allowed data-[disabled=true]:opacity-40 data-[invalid=true]:border-error-700 data-[invalid=true]:rounded-xl data-[invalid=true]:border-2', diff --git a/expo-app/components/ui/table/index.tsx b/expo-app/components/ui/table/index.tsx index 9cdd0f04..10fbd675 100644 --- a/expo-app/components/ui/table/index.tsx +++ b/expo-app/components/ui/table/index.tsx @@ -7,6 +7,7 @@ import { TR as ExpoTR, Caption as ExpoTCaption, } from '@expo/html-elements'; + import { tableStyle, tableHeaderStyle, @@ -19,8 +20,16 @@ import { } from './styles'; import { Text, View } from 'react-native'; -const TableHeaderContext = createContext({}); -const TableFooterContext = createContext({}); +const TableHeaderContext = createContext<{ + isHeaderRow: boolean; +}>({ + isHeaderRow: false, +}); +const TableFooterContext = createContext<{ + isFooterRow: boolean; +}>({ + isFooterRow: false, +}); type ITableProps = React.ComponentProps; type ITableHeaderProps = React.ComponentProps; @@ -39,6 +48,7 @@ const Table = React.forwardRef, ITableProps>( ({ className, ...props }, ref) => { return ( (({ className, ...props }, ref) => { return ( (({ className, ...props }, ref) => { return ( ({}); -const TableFooterContext = createContext({}); +const TableHeaderContext = createContext<{ + isHeaderRow: boolean; +}>({ + isHeaderRow: false, +}); +const TableFooterContext = createContext<{ + isFooterRow: boolean; +}>({ + isFooterRow: false, +}); const Table = React.forwardRef(({ className, ...props }: any, ref?: any) => { return ( diff --git a/expo-app/components/ui/textarea/index.tsx b/expo-app/components/ui/textarea/index.tsx index 4a5fd19f..0a9b0d90 100644 --- a/expo-app/components/ui/textarea/index.tsx +++ b/expo-app/components/ui/textarea/index.tsx @@ -1,36 +1,18 @@ 'use client'; import React from 'react'; import { createTextarea } from '@gluestack-ui/textarea'; -import { View, TextInput, Platform } from 'react-native'; +import { View, TextInput } from 'react-native'; import { tva } from '@gluestack-ui/nativewind-utils/tva'; import { withStyleContext, useStyleContext, } from '@gluestack-ui/nativewind-utils/withStyleContext'; -import { withStyleContextAndStates } from '@gluestack-ui/nativewind-utils/withStyleContextAndStates'; -import { cssInterop } from 'nativewind'; -import { withStates } from '@gluestack-ui/nativewind-utils/withStates'; import type { VariantProps } from '@gluestack-ui/nativewind-utils'; -const TextareaWrapper = React.forwardRef< - React.ElementRef, - React.ComponentProps ->(({ ...props }, ref) => { - return ; -}); - const SCOPE = 'TEXTAREA'; const UITextarea = createTextarea({ - Root: - Platform.OS === 'web' - ? withStyleContext(TextareaWrapper, SCOPE) - : withStyleContextAndStates(TextareaWrapper, SCOPE), - Input: Platform.OS === 'web' ? TextInput : withStates(TextInput), -}); - -cssInterop(TextareaWrapper, { className: 'style' }); -cssInterop(UITextarea.Input, { - className: { target: 'style', nativeStyleToProp: { textAlign: true } }, + Root: withStyleContext(View, SCOPE), + Input: TextInput, }); const textareaStyle = tva({ diff --git a/expo-app/components/ui/toast/index.tsx b/expo-app/components/ui/toast/index.tsx index 21c1f668..9acc3843 100644 --- a/expo-app/components/ui/toast/index.tsx +++ b/expo-app/components/ui/toast/index.tsx @@ -1,7 +1,7 @@ 'use client'; import React from 'react'; -import { createToast, createToastHook } from '@gluestack-ui/toast'; -import { Text, View, Platform } from 'react-native'; +import { createToastHook } from '@gluestack-ui/toast'; +import { AccessibilityInfo, Text, View } from 'react-native'; import { tva } from '@gluestack-ui/nativewind-utils/tva'; import { cssInterop } from 'nativewind'; import { Motion, AnimatePresence } from '@legendapp/motion'; @@ -9,24 +9,12 @@ import { withStyleContext, useStyleContext, } from '@gluestack-ui/nativewind-utils/withStyleContext'; -import { withStyleContextAndStates } from '@gluestack-ui/nativewind-utils/withStyleContextAndStates'; import type { VariantProps } from '@gluestack-ui/nativewind-utils'; export const useToast = createToastHook(Motion.View, AnimatePresence); const SCOPE = 'TOAST'; -export const UIToast = createToast({ - Root: - Platform.OS === 'web' - ? withStyleContext(View, SCOPE) - : withStyleContextAndStates(View, SCOPE), - Title: Text, - Description: Text, -}); cssInterop(Motion.View, { className: 'style' }); -cssInterop(UIToast, { className: 'style' }); -cssInterop(UIToast.Title, { className: 'style' }); -cssInterop(UIToast.Description, { className: 'style' }); const toastStyle = tva({ base: 'p-4 m-1 rounded-md gap-1 web:pointer-events-auto shadow-hard-5 border-outline-100', @@ -36,7 +24,7 @@ const toastStyle = tva({ warning: 'bg-warning-700', success: 'bg-success-700', info: 'bg-info-700', - muted: 'bg-secondary-700', + muted: 'bg-background-800', }, variant: { @@ -154,16 +142,17 @@ const toastDescriptionStyle = tva({ }, }); -type IToastProps = React.ComponentProps & { +const Root = withStyleContext(View, SCOPE); +type IToastProps = React.ComponentProps & { className?: string; } & VariantProps; export const Toast = React.forwardRef< - React.ElementRef, + React.ElementRef, IToastProps >(({ className, variant = 'solid', action = 'muted', ...props }, ref) => { return ( - & { +type IToastTitleProps = React.ComponentProps & { className?: string; } & VariantProps; export const ToastTitle = React.forwardRef< - React.ElementRef, + React.ElementRef, IToastTitleProps ->(({ className, size = 'md', ...props }, ref) => { +>(({ className, size = 'md', children, ...props }, ref) => { const { variant: parentVariant, action: parentAction } = useStyleContext(SCOPE); + React.useEffect(() => { + // Issue from react-native side + // Hack for now, will fix this later + AccessibilityInfo.announceForAccessibility(children as string); + }, [children]); + return ( - + > + {children} + ); }); -type IToastDescriptionProps = React.ComponentProps< - typeof UIToast.Description -> & { +type IToastDescriptionProps = React.ComponentProps & { className?: string; } & VariantProps; export const ToastDescription = React.forwardRef< - React.ElementRef, + React.ElementRef, IToastDescriptionProps >(({ className, size = 'md', ...props }, ref) => { const { variant: parentVariant } = useStyleContext(SCOPE); return ( - & VariantProps & { className?: string }; type ITooltipContentProps = React.ComponentProps & diff --git a/expo-app/components/ui/utils/use-break-point-value.ts b/expo-app/components/ui/utils/use-break-point-value.ts new file mode 100644 index 00000000..bc4b59a7 --- /dev/null +++ b/expo-app/components/ui/utils/use-break-point-value.ts @@ -0,0 +1,101 @@ +import { Dimensions, useWindowDimensions } from 'react-native'; +import { useEffect, useState } from 'react'; + +import resolveConfig from 'tailwindcss/resolveConfig'; +import tailwindConfig from 'tailwind.config'; + +const TailwindTheme = resolveConfig(tailwindConfig); +const screenSize = TailwindTheme.theme.screens; + +type breakpoints = keyof typeof screenSize | 'default'; + +type BreakPointValue = Partial>; + +const resolveScreenWidth: any = { + default: 0, +}; + +Object.entries(screenSize).forEach(([key, value]) => { + resolveScreenWidth[key] = parseInt(value.replace('px', ''), 10); +}); + +export const getBreakPointValue = (values: any, width: any) => { + if (typeof values !== 'object') return values; + + let finalBreakPointResolvedValue: any; + const mediaQueriesBreakpoints: any = [ + { + key: 'default', + breakpoint: 0, + isValid: true, + }, + ]; + Object.keys(resolveScreenWidth).forEach((key) => { + const isValid = isValidBreakpoint(resolveScreenWidth[key], width); + + mediaQueriesBreakpoints.push({ + key: key, + breakpoint: resolveScreenWidth[key], + isValid: isValid, + }); + }); + + mediaQueriesBreakpoints.sort((a: any, b: any) => a.breakpoint - b.breakpoint); + + mediaQueriesBreakpoints.forEach((breakpoint: any, index: any) => { + breakpoint.value = values.hasOwnProperty(breakpoint.key) + ? // @ts-ignore + values[breakpoint.key] + : mediaQueriesBreakpoints[index - 1]?.value || + mediaQueriesBreakpoints[0]?.value; + }); + + const lastValidObject = getLastValidObject(mediaQueriesBreakpoints); + + if (!lastValidObject) { + finalBreakPointResolvedValue = values; + } else { + finalBreakPointResolvedValue = lastValidObject?.value; + } + return finalBreakPointResolvedValue; +}; + +export function useBreakpointValue(values: BreakPointValue): any { + const { width } = useWindowDimensions(); + + const [currentBreakPointValue, setCurrentBreakPointValue] = useState( + getBreakPointValue(values, width) + ); + + useEffect(() => { + if (typeof values === 'object') { + const finalBreakPointResolvedValue = getBreakPointValue(values, width); + setCurrentBreakPointValue(finalBreakPointResolvedValue); + } + }, [values, width]); + + if (typeof values !== 'object') return values; + + return currentBreakPointValue; +} + +export function isValidBreakpoint( + breakPointWidth: any, + width: any = Dimensions.get('window')?.width +) { + const windowWidth = width; + + if (windowWidth >= breakPointWidth) { + return true; + } + return false; +} + +function getLastValidObject(mediaQueries: any) { + for (let i = mediaQueries.length - 1; i >= 0; i--) { + if (mediaQueries[i].isValid) { + return mediaQueries[i]; + } + } + return null; // No valid object found +} diff --git a/expo-app/gluestack-ui.config.json b/expo-app/gluestack-ui.config.json new file mode 100644 index 00000000..9825a95f --- /dev/null +++ b/expo-app/gluestack-ui.config.json @@ -0,0 +1,10 @@ +{ + "tailwind": { + "config": "tailwind.config.js", + "css": "global.css" + }, + "app": { + "entry": "app/_layout.tsx", + "components": "components/ui" + } +} \ No newline at end of file diff --git a/expo-app/metro.config.js b/expo-app/metro.config.js index f7b261c2..c9561b1d 100644 --- a/expo-app/metro.config.js +++ b/expo-app/metro.config.js @@ -13,4 +13,4 @@ config.resolver.nodeModulesPaths = [path.resolve(projectRoot, "node_modules")]; // module.exports = config; -module.exports = withNativeWind(config, { input: "./global.css" }); +module.exports = withNativeWind(config, { input: "./global.css" }); \ No newline at end of file diff --git a/expo-app/package.json b/expo-app/package.json index 432b0565..14f71ffd 100644 --- a/expo-app/package.json +++ b/expo-app/package.json @@ -4,47 +4,46 @@ "version": "1.0.0", "scripts": { "start": "npx expo start", - "android": "npx expo start --android", - "ios": "npx expo start --ios", - "web": "npx expo start --web", - "test": "jest --watchAll", - "postinstall": "patch-package" + "android": "DARK_MODE=media npx expo start --android", + "ios": "DARK_MODE=media npx expo start --ios", + "web": "DARK_MODE=media npx expo start --web", + "test": "jest --watchAll" }, "jest": { "preset": "jest-expo" }, "dependencies": { - "@expo/html-elements": "^0.10.1", + "@expo/html-elements": "0.4.2", "@expo/vector-icons": "^14.0.0", - "@gluestack-ui/accordion": "^1.0.6", - "@gluestack-ui/actionsheet": "^0.2.44", - "@gluestack-ui/alert": "^0.1.15", - "@gluestack-ui/alert-dialog": "^0.1.30", - "@gluestack-ui/avatar": "^0.1.17", - "@gluestack-ui/button": "^1.0.7", - "@gluestack-ui/checkbox": "^0.1.31", - "@gluestack-ui/divider": "^0.1.9", - "@gluestack-ui/fab": "^0.1.21", - "@gluestack-ui/form-control": "^0.1.18", - "@gluestack-ui/icon": "^0.1.22", - "@gluestack-ui/image": "^0.1.10", - "@gluestack-ui/input": "^0.1.31", - "@gluestack-ui/link": "^0.1.22", - "@gluestack-ui/menu": "^0.2.36", - "@gluestack-ui/modal": "^0.1.34", - "@gluestack-ui/nativewind-utils": "latest", - "@gluestack-ui/overlay": "latest", - "@gluestack-ui/popover": "^0.1.37", - "@gluestack-ui/pressable": "^0.1.16", - "@gluestack-ui/progress": "^0.1.16", - "@gluestack-ui/radio": "^0.1.32", - "@gluestack-ui/select": "^0.1.29", - "@gluestack-ui/slider": "^0.1.25", - "@gluestack-ui/spinner": "^0.1.14", - "@gluestack-ui/switch": "^0.1.22", - "@gluestack-ui/textarea": "^0.1.23", - "@gluestack-ui/toast": "^1.0.7", - "@gluestack-ui/tooltip": "^0.1.32", + "@gluestack-ui/accordion": "^1.0.8", + "@gluestack-ui/actionsheet": "^0.2.46", + "@gluestack-ui/alert": "^0.1.16", + "@gluestack-ui/alert-dialog": "^0.1.32", + "@gluestack-ui/avatar": "^0.1.18", + "@gluestack-ui/button": "^1.0.8", + "@gluestack-ui/checkbox": "^0.1.33", + "@gluestack-ui/divider": "^0.1.10", + "@gluestack-ui/fab": "^0.1.22", + "@gluestack-ui/form-control": "^0.1.19", + "@gluestack-ui/icon": "^0.1.24-alpha.0", + "@gluestack-ui/image": "^0.1.11", + "@gluestack-ui/input": "^0.1.32", + "@gluestack-ui/link": "^0.1.23", + "@gluestack-ui/menu": "^0.2.37", + "@gluestack-ui/modal": "^0.1.35", + "@gluestack-ui/nativewind-utils": "^1.0.26-alpha.2", + "@gluestack-ui/overlay": "^0.1.15", + "@gluestack-ui/popover": "^0.1.43", + "@gluestack-ui/pressable": "^0.1.17", + "@gluestack-ui/progress": "^0.1.18", + "@gluestack-ui/radio": "^0.1.34", + "@gluestack-ui/select": "^0.1.30", + "@gluestack-ui/slider": "^0.1.26", + "@gluestack-ui/spinner": "^0.1.15", + "@gluestack-ui/switch": "^0.1.23", + "@gluestack-ui/textarea": "^0.1.24", + "@gluestack-ui/toast": "^1.0.8", + "@gluestack-ui/tooltip": "^0.1.36-alpha.0", "@hookform/resolvers": "^3.3.4", "@legendapp/motion": "^2.4.0", "@react-navigation/native": "^6.0.2", @@ -66,17 +65,17 @@ "expo-updates": "~0.25.12", "expo-web-browser": "~13.0.3", "lucide-react-native": "^0.378.0", - "nativewind": "4.0.36", + "nativewind": "^4.1.23", "react": "18.2.0", "react-dom": "18.2.0", "react-hook-form": "^7.51.4", "react-native": "0.74.1", - "react-native-reanimated": "latest", - "react-native-safe-area-context": "4.10.1", + "react-native-reanimated": "^3.16.3", + "react-native-safe-area-context": "^4.14.0", "react-native-screens": "3.31.1", - "react-native-svg": "^15.2.0", + "react-native-svg": "^15.9.0", "react-native-web": "~0.19.6", - "tailwindcss": "3.4.3", + "tailwindcss": "^3.4.15", "zod": "^3.23.8" }, "devDependencies": { diff --git a/expo-app/patches/react-native-css-interop+0.0.36.patch b/expo-app/patches/react-native-css-interop+0.0.36.patch deleted file mode 100644 index 139276de..00000000 --- a/expo-app/patches/react-native-css-interop+0.0.36.patch +++ /dev/null @@ -1,346 +0,0 @@ -diff --git a/node_modules/react-native-css-interop/dist/runtime/api.d.ts b/node_modules/react-native-css-interop/dist/runtime/api.d.ts -index 05c3461..0e94bc5 100644 ---- a/node_modules/react-native-css-interop/dist/runtime/api.d.ts -+++ b/node_modules/react-native-css-interop/dist/runtime/api.d.ts -@@ -1 +1,2 @@ - export * from "./web/api"; -+export * from "./web/interopComponentsMap"; -diff --git a/node_modules/react-native-css-interop/dist/runtime/api.js b/node_modules/react-native-css-interop/dist/runtime/api.js -index d532aa8..340d8fd 100644 ---- a/node_modules/react-native-css-interop/dist/runtime/api.js -+++ b/node_modules/react-native-css-interop/dist/runtime/api.js -@@ -15,4 +15,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) { - }; - Object.defineProperty(exports, "__esModule", { value: true }); - __exportStar(require("./web/api"), exports); -+__exportStar(require("./web/interopComponentsMap"), exports); - //# sourceMappingURL=api.js.map -\ No newline at end of file -diff --git a/node_modules/react-native-css-interop/dist/runtime/api.js.map b/node_modules/react-native-css-interop/dist/runtime/api.js.map -index 7825b53..c59fa3b 100644 ---- a/node_modules/react-native-css-interop/dist/runtime/api.js.map -+++ b/node_modules/react-native-css-interop/dist/runtime/api.js.map -@@ -1 +1 @@ --{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/runtime/api.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4CAA0B"} -\ No newline at end of file -+{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/runtime/api.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4CAA0B;AAC1B,6DAA2C"} -\ No newline at end of file -diff --git a/node_modules/react-native-css-interop/dist/runtime/components.js b/node_modules/react-native-css-interop/dist/runtime/components.js -index c4832b0..63aa94e 100644 ---- a/node_modules/react-native-css-interop/dist/runtime/components.js -+++ b/node_modules/react-native-css-interop/dist/runtime/components.js -@@ -1,4 +1,5 @@ - "use strict"; -+"use client"; - Object.defineProperty(exports, "__esModule", { value: true }); - const react_native_1 = require("react-native"); - const api_1 = require("./api"); -diff --git a/node_modules/react-native-css-interop/dist/runtime/components.js.map b/node_modules/react-native-css-interop/dist/runtime/components.js.map -index 0101386..9549388 100644 ---- a/node_modules/react-native-css-interop/dist/runtime/components.js.map -+++ b/node_modules/react-native-css-interop/dist/runtime/components.js.map -@@ -1 +1 @@ --{"version":3,"file":"components.js","sourceRoot":"","sources":["../../src/runtime/components.ts"],"names":[],"mappings":";;AAAA,+CAkBsB;AAEtB,+BAA+C;AAE/C,IAAA,gBAAU,EAAC,oBAAK,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;AAC1C,IAAA,gBAAU,EAAC,wBAAS,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;AAC9C,IAAA,gBAAU,EAAC,2BAAY,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;AACjD,IAAA,gBAAU,EAAC,qBAAM,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;AAC3C,IAAA,gBAAU,EAAC,mBAAI,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;AACzC,IAAA,gBAAU,EAAC,iCAAkB,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;AACvD,IAAA,gBAAU,EAAC,+BAAgB,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;AACrD,IAAA,gBAAU,EAAC,uCAAwB,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;AAC7D,IAAA,gBAAU,EAAC,mBAAI,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;AACzC,IAAA,gBAAU,EAAC,gCAAiB,EAAE;IAC5B,SAAS,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;CACnE,CAAC,CAAC;AACH,IAAA,gBAAU,EAAC,wBAAS,EAAE;IACpB,SAAS,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,iBAAiB,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,EAAE;CAC3E,CAAC,CAAC;AACH,IAAA,gBAAU,EAAC,yBAAU,EAAE;IACrB,SAAS,EAAE,OAAO;IAClB,yBAAyB,EAAE,uBAAuB;IAClD,kBAAkB,EAAE,gBAAgB;CACrC,CAAC,CAAC;AACH,IAAA,gBAAU,EAAC,wBAAS,EAAE;IACpB,SAAS,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE;CACvE,CAAC,CAAC;AAEH,IAAA,gBAAU,EAAC,uBAAQ,EAAE;IACnB,SAAS,EAAE,OAAO;IAClB,4BAA4B,EAAE,0BAA0B;IACxD,4BAA4B,EAAE,0BAA0B;IACxD,sBAAsB,EAAE,oBAAoB;IAC5C,yBAAyB,EAAE,uBAAuB;IAClD,kBAAkB,EAAE,gBAAgB;CACrC,CAAC,CAAC;AACH,IAAA,gBAAU,EAAC,8BAAe,EAAE;IAC1B,SAAS,EAAE,OAAO;IAClB,cAAc,EAAE,YAAY;CAC7B,CAAC,CAAC;AACH,IAAA,gBAAU,EAAC,mCAAoB,EAAE;IAC/B,SAAS,EAAE,OAAO;IAClB,yBAAyB,EAAE,uBAAuB;CACnD,CAAC,CAAC;AACH,IAAA,gBAAU,EAAC,8BAAe,EAAE;IAC1B,SAAS,EAAE,OAAO;IAClB,4BAA4B,EAAE,0BAA0B;IACxD,4BAA4B,EAAE,0BAA0B;IACxD,yBAAyB,EAAE,uBAAuB;IAClD,kBAAkB,EAAE,gBAAgB;CACrC,CAAC,CAAC"} -\ No newline at end of file -+{"version":3,"file":"components.js","sourceRoot":"","sources":["../../src/runtime/components.ts"],"names":[],"mappings":";AAAA,YAAY,CAAC;;AAEb,+CAkBsB;AAEtB,+BAA+C;AAE/C,IAAA,gBAAU,EAAC,oBAAK,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;AAC1C,IAAA,gBAAU,EAAC,wBAAS,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;AAC9C,IAAA,gBAAU,EAAC,2BAAY,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;AACjD,IAAA,gBAAU,EAAC,qBAAM,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;AAC3C,IAAA,gBAAU,EAAC,mBAAI,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;AACzC,IAAA,gBAAU,EAAC,iCAAkB,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;AACvD,IAAA,gBAAU,EAAC,+BAAgB,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;AACrD,IAAA,gBAAU,EAAC,uCAAwB,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;AAC7D,IAAA,gBAAU,EAAC,mBAAI,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;AACzC,IAAA,gBAAU,EAAC,gCAAiB,EAAE;IAC5B,SAAS,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;CACnE,CAAC,CAAC;AACH,IAAA,gBAAU,EAAC,wBAAS,EAAE;IACpB,SAAS,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,iBAAiB,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,EAAE;CAC3E,CAAC,CAAC;AACH,IAAA,gBAAU,EAAC,yBAAU,EAAE;IACrB,SAAS,EAAE,OAAO;IAClB,yBAAyB,EAAE,uBAAuB;IAClD,kBAAkB,EAAE,gBAAgB;CACrC,CAAC,CAAC;AACH,IAAA,gBAAU,EAAC,wBAAS,EAAE;IACpB,SAAS,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE;CACvE,CAAC,CAAC;AAEH,IAAA,gBAAU,EAAC,uBAAQ,EAAE;IACnB,SAAS,EAAE,OAAO;IAClB,4BAA4B,EAAE,0BAA0B;IACxD,4BAA4B,EAAE,0BAA0B;IACxD,sBAAsB,EAAE,oBAAoB;IAC5C,yBAAyB,EAAE,uBAAuB;IAClD,kBAAkB,EAAE,gBAAgB;CACrC,CAAC,CAAC;AACH,IAAA,gBAAU,EAAC,8BAAe,EAAE;IAC1B,SAAS,EAAE,OAAO;IAClB,cAAc,EAAE,YAAY;CAC7B,CAAC,CAAC;AACH,IAAA,gBAAU,EAAC,mCAAoB,EAAE;IAC/B,SAAS,EAAE,OAAO;IAClB,yBAAyB,EAAE,uBAAuB;CACnD,CAAC,CAAC;AACH,IAAA,gBAAU,EAAC,8BAAe,EAAE;IAC1B,SAAS,EAAE,OAAO;IAClB,4BAA4B,EAAE,0BAA0B;IACxD,4BAA4B,EAAE,0BAA0B;IACxD,yBAAyB,EAAE,uBAAuB;IAClD,kBAAkB,EAAE,gBAAgB;CACrC,CAAC,CAAC"} -\ No newline at end of file -diff --git a/node_modules/react-native-css-interop/dist/runtime/native/resolve-value.d.ts b/node_modules/react-native-css-interop/dist/runtime/native/resolve-value.d.ts -index 05710bd..21028f3 100644 ---- a/node_modules/react-native-css-interop/dist/runtime/native/resolve-value.d.ts -+++ b/node_modules/react-native-css-interop/dist/runtime/native/resolve-value.d.ts -@@ -17,4 +17,8 @@ export declare function setDeep(target: Record, paths: string[], va - export declare function getWidth(state: PropState): number; - export declare function getHeight(state: PropState): number; - export declare const defaultValues: Record AnimatableValue)>; --export declare function calc(state: PropState, expression: RuntimeValueDescriptor[], style?: Record): string | number | undefined; -+export declare function calc(state: PropState, expression: RuntimeValueDescriptor, style?: Record): { -+ mode: string; -+ raw: number; -+ value: string | number; -+} | undefined; -diff --git a/node_modules/react-native-css-interop/dist/runtime/native/resolve-value.js b/node_modules/react-native-css-interop/dist/runtime/native/resolve-value.js -index 5f9c2b2..cec8e9a 100644 ---- a/node_modules/react-native-css-interop/dist/runtime/native/resolve-value.js -+++ b/node_modules/react-native-css-interop/dist/runtime/native/resolve-value.js -@@ -23,12 +23,59 @@ function resolveValue(state, descriptor, style) { - } - switch (descriptor.name) { - case "var": { -- const value = resolve(state, descriptor.arguments[0], style); -+ let value = resolve(state, descriptor.arguments[0], style); - if (typeof value === "string") -- return getVar(state, value, style); -+ value = getVar(state, value, style); -+ if (value === undefined && descriptor.arguments[1]) { -+ value = resolveValue(state, descriptor.arguments[1], style); -+ } -+ return value; - } - case "calc": { -- return calc(state, descriptor.arguments, style); -+ return calc(state, descriptor.arguments, style)?.value; -+ } -+ case "max": { -+ let mode; -+ let values = []; -+ for (const arg of descriptor.arguments) { -+ const result = calc(state, arg, style); -+ if (result) { -+ if (!mode) -+ mode = result?.mode; -+ if (result.mode === mode) { -+ values.push(result.raw); -+ } -+ } -+ } -+ const max = Math.max(...values); -+ return mode === "percentage" ? `${max}%` : max; -+ } -+ case "min": { -+ let mode; -+ let values = []; -+ for (const arg of descriptor.arguments) { -+ const result = calc(state, arg, style); -+ if (result) { -+ if (!mode) -+ mode = result?.mode; -+ if (result.mode === mode) { -+ values.push(result.raw); -+ } -+ } -+ } -+ const min = Math.min(...values); -+ return mode === "percentage" ? `${min}%` : min; -+ } -+ case "clamp": { -+ const min = calc(state, descriptor.arguments[0], style); -+ const val = calc(state, descriptor.arguments[1], style); -+ const max = calc(state, descriptor.arguments[2], style); -+ if (!min || !val || !max) -+ return; -+ if (min.mode !== val.mode && max.mode !== val.mode) -+ return; -+ const value = Math.max(min.raw, Math.min(val.raw, max.raw)); -+ return val.mode === "percentage" ? `${value}%` : value; - } - case "vh": { - const value = resolve(state, descriptor.arguments[0], style); -@@ -357,6 +404,9 @@ function calc(state, expression, style) { - const values = []; - const ops = []; - let mode; -+ if (!Array.isArray(expression)) { -+ expression = [expression]; -+ } - for (let token of expression) { - switch (typeof token) { - case "undefined": -@@ -427,7 +477,11 @@ function calc(state, expression, style) { - if (!mode) - return; - const value = round(values[0]); -- return mode === "percentage" ? `${value}%` : value; -+ return { -+ mode, -+ raw: value, -+ value: mode === "percentage" ? `${value}%` : value, -+ }; - } - exports.calc = calc; - //# sourceMappingURL=resolve-value.js.map -\ No newline at end of file -diff --git a/node_modules/react-native-css-interop/dist/runtime/native/resolve-value.js.map b/node_modules/react-native-css-interop/dist/runtime/native/resolve-value.js.map -index ae1884d..a14dc2e 100644 ---- a/node_modules/react-native-css-interop/dist/runtime/native/resolve-value.js.map -+++ b/node_modules/react-native-css-interop/dist/runtime/native/resolve-value.js.map -@@ -1 +1 @@ --{"version":3,"file":"resolve-value.js","sourceRoot":"","sources":["../../../src/runtime/native/resolve-value.ts"],"names":[],"mappings":"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"} -\ No newline at end of file -+{"version":3,"file":"resolve-value.js","sourceRoot":"","sources":["../../../src/runtime/native/resolve-value.ts"],"names":[],"mappings":"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"} -\ No newline at end of file -diff --git a/node_modules/react-native-css-interop/dist/runtime/test.d.ts b/node_modules/react-native-css-interop/dist/runtime/test.d.ts -deleted file mode 100644 -index a326c79..0000000 ---- a/node_modules/react-native-css-interop/dist/runtime/test.d.ts -+++ /dev/null -@@ -1 +0,0 @@ --export declare const testContext: Record; -diff --git a/node_modules/react-native-css-interop/dist/runtime/test.js b/node_modules/react-native-css-interop/dist/runtime/test.js -deleted file mode 100644 -index 9c6f4c8..0000000 ---- a/node_modules/react-native-css-interop/dist/runtime/test.js -+++ /dev/null -@@ -1,7 +0,0 @@ --"use strict"; --Object.defineProperty(exports, "__esModule", { value: true }); --exports.testContext = void 0; --exports.testContext = { -- "--theme-fg": "blue", --}; --//# sourceMappingURL=test.js.map -\ No newline at end of file -diff --git a/node_modules/react-native-css-interop/dist/runtime/test.js.map b/node_modules/react-native-css-interop/dist/runtime/test.js.map -deleted file mode 100644 -index 5ec3e17..0000000 ---- a/node_modules/react-native-css-interop/dist/runtime/test.js.map -+++ /dev/null -@@ -1 +0,0 @@ --{"version":3,"file":"test.js","sourceRoot":"","sources":["../../src/runtime/test.ts"],"names":[],"mappings":";;;AAAa,QAAA,WAAW,GAAwB;IAC9C,YAAY,EAAE,MAAM;CACrB,CAAC"} -\ No newline at end of file -diff --git a/node_modules/react-native-css-interop/dist/runtime/web/api.d.ts b/node_modules/react-native-css-interop/dist/runtime/web/api.d.ts -index d38ce4a..3ec4979 100644 ---- a/node_modules/react-native-css-interop/dist/runtime/web/api.d.ts -+++ b/node_modules/react-native-css-interop/dist/runtime/web/api.d.ts -@@ -1,16 +1,10 @@ --/// - import { CssInterop } from "../../types"; - export { StyleSheet } from "./stylesheet"; - export { colorScheme } from "./color-scheme"; - export { rem } from "./rem"; --export declare const interopComponents: Map>; -+export { useColorScheme } from "./useColorScheme"; - export declare const cssInterop: CssInterop; - export declare const remapProps: CssInterop; --export declare function useColorScheme(): { -- colorScheme: "light" | "dark" | undefined; -- setColorScheme: (value: "light" | "dark" | "system") => void; -- toggleColorScheme: () => void; --}; - export declare const useUnstableNativeVariable: (name: string) => undefined; - export declare function vars>(variables: T): Record; - export declare function useSafeAreaEnv(): {} | undefined; -diff --git a/node_modules/react-native-css-interop/dist/runtime/web/api.js b/node_modules/react-native-css-interop/dist/runtime/web/api.js -index 99eda40..5eb4764 100644 ---- a/node_modules/react-native-css-interop/dist/runtime/web/api.js -+++ b/node_modules/react-native-css-interop/dist/runtime/web/api.js -@@ -1,17 +1,19 @@ - "use strict"; -+"use client"; - Object.defineProperty(exports, "__esModule", { value: true }); --exports.useSafeAreaEnv = exports.vars = exports.useUnstableNativeVariable = exports.useColorScheme = exports.remapProps = exports.cssInterop = exports.interopComponents = exports.rem = exports.colorScheme = exports.StyleSheet = void 0; -+exports.useSafeAreaEnv = exports.vars = exports.useUnstableNativeVariable = exports.remapProps = exports.cssInterop = exports.useColorScheme = exports.rem = exports.colorScheme = exports.StyleSheet = void 0; - const react_1 = require("react"); - const config_1 = require("../config"); --const color_scheme_1 = require("./color-scheme"); - var stylesheet_1 = require("./stylesheet"); - Object.defineProperty(exports, "StyleSheet", { enumerable: true, get: function () { return stylesheet_1.StyleSheet; } }); --var color_scheme_2 = require("./color-scheme"); --Object.defineProperty(exports, "colorScheme", { enumerable: true, get: function () { return color_scheme_2.colorScheme; } }); -+var color_scheme_1 = require("./color-scheme"); -+Object.defineProperty(exports, "colorScheme", { enumerable: true, get: function () { return color_scheme_1.colorScheme; } }); - var rem_1 = require("./rem"); - Object.defineProperty(exports, "rem", { enumerable: true, get: function () { return rem_1.rem; } }); --exports.interopComponents = new Map(); -+const interopComponentsMap_1 = require("./interopComponentsMap"); - const ForwardRefSymbol = Symbol.for("react.forward_ref"); -+var useColorScheme_1 = require("./useColorScheme"); -+Object.defineProperty(exports, "useColorScheme", { enumerable: true, get: function () { return useColorScheme_1.useColorScheme; } }); - const cssInterop = (baseComponent, mapping) => { - const configs = (0, config_1.getNormalizeConfig)(mapping); - const interopComponent = (0, react_1.forwardRef)(function CssInteropComponent({ ...props }, ref) { -@@ -56,23 +58,11 @@ const cssInterop = (baseComponent, mapping) => { - } - }); - interopComponent.displayName = `CssInterop.${baseComponent.displayName ?? baseComponent.name ?? "unknown"}`; -- exports.interopComponents.set(baseComponent, interopComponent); -+ interopComponentsMap_1.interopComponents.set(baseComponent, interopComponent); - return interopComponent; - }; - exports.cssInterop = cssInterop; - exports.remapProps = exports.cssInterop; --function useColorScheme() { -- const [effect, setEffect] = (0, react_1.useState)(() => ({ -- rerun: () => setEffect((s) => ({ ...s })), -- dependencies: new Set(), -- })); -- return { -- colorScheme: color_scheme_1.colorScheme.get(effect), -- setColorScheme: color_scheme_1.colorScheme.set, -- toggleColorScheme: color_scheme_1.colorScheme.toggle, -- }; --} --exports.useColorScheme = useColorScheme; - const useUnstableNativeVariable = (name) => { - if (process.env.NODE_ENV !== "production") { - console.log("useUnstableNativeVariable is not supported on web."); -diff --git a/node_modules/react-native-css-interop/dist/runtime/web/api.js.map b/node_modules/react-native-css-interop/dist/runtime/web/api.js.map -index d64992f..38a7312 100644 ---- a/node_modules/react-native-css-interop/dist/runtime/web/api.js.map -+++ b/node_modules/react-native-css-interop/dist/runtime/web/api.js.map -@@ -1 +1 @@ --{"version":3,"file":"api.js","sourceRoot":"","sources":["../../../src/runtime/web/api.ts"],"names":[],"mappings":"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"} -\ No newline at end of file -+{"version":3,"file":"api.js","sourceRoot":"","sources":["../../../src/runtime/web/api.ts"],"names":[],"mappings":"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"} -\ No newline at end of file -diff --git a/node_modules/react-native-css-interop/dist/runtime/web/interopComponentsMap.d.ts b/node_modules/react-native-css-interop/dist/runtime/web/interopComponentsMap.d.ts -new file mode 100644 -index 0000000..303c043 ---- /dev/null -+++ b/node_modules/react-native-css-interop/dist/runtime/web/interopComponentsMap.d.ts -@@ -0,0 +1,2 @@ -+/// -+export declare const interopComponents: Map>; -diff --git a/node_modules/react-native-css-interop/dist/runtime/web/interopComponentsMap.js b/node_modules/react-native-css-interop/dist/runtime/web/interopComponentsMap.js -new file mode 100644 -index 0000000..3ff844a ---- /dev/null -+++ b/node_modules/react-native-css-interop/dist/runtime/web/interopComponentsMap.js -@@ -0,0 +1,5 @@ -+"use strict"; -+Object.defineProperty(exports, "__esModule", { value: true }); -+exports.interopComponents = void 0; -+exports.interopComponents = new Map(); -+//# sourceMappingURL=interopComponentsMap.js.map -\ No newline at end of file -diff --git a/node_modules/react-native-css-interop/dist/runtime/web/interopComponentsMap.js.map b/node_modules/react-native-css-interop/dist/runtime/web/interopComponentsMap.js.map -new file mode 100644 -index 0000000..601d610 ---- /dev/null -+++ b/node_modules/react-native-css-interop/dist/runtime/web/interopComponentsMap.js.map -@@ -0,0 +1 @@ -+{"version":3,"file":"interopComponentsMap.js","sourceRoot":"","sources":["../../../src/runtime/web/interopComponentsMap.ts"],"names":[],"mappings":";;;AAEa,QAAA,iBAAiB,GAAG,IAAI,GAAG,EAGrC,CAAC"} -\ No newline at end of file -diff --git a/node_modules/react-native-css-interop/dist/runtime/web/useColorScheme.d.ts b/node_modules/react-native-css-interop/dist/runtime/web/useColorScheme.d.ts -new file mode 100644 -index 0000000..874a890 ---- /dev/null -+++ b/node_modules/react-native-css-interop/dist/runtime/web/useColorScheme.d.ts -@@ -0,0 +1,5 @@ -+export declare function useColorScheme(): { -+ colorScheme: "light" | "dark" | undefined; -+ setColorScheme: (value: "light" | "dark" | "system") => void; -+ toggleColorScheme: () => void; -+}; -diff --git a/node_modules/react-native-css-interop/dist/runtime/web/useColorScheme.js b/node_modules/react-native-css-interop/dist/runtime/web/useColorScheme.js -new file mode 100644 -index 0000000..9de6ccb ---- /dev/null -+++ b/node_modules/react-native-css-interop/dist/runtime/web/useColorScheme.js -@@ -0,0 +1,18 @@ -+"use strict"; -+Object.defineProperty(exports, "__esModule", { value: true }); -+exports.useColorScheme = void 0; -+const react_1 = require("react"); -+const color_scheme_1 = require("./color-scheme"); -+function useColorScheme() { -+ const [effect, setEffect] = (0, react_1.useState)(() => ({ -+ rerun: () => setEffect((s) => ({ ...s })), -+ dependencies: new Set(), -+ })); -+ return { -+ colorScheme: color_scheme_1.colorScheme.get(effect), -+ setColorScheme: color_scheme_1.colorScheme.set, -+ toggleColorScheme: color_scheme_1.colorScheme.toggle, -+ }; -+} -+exports.useColorScheme = useColorScheme; -+//# sourceMappingURL=useColorScheme.js.map -\ No newline at end of file -diff --git a/node_modules/react-native-css-interop/dist/runtime/web/useColorScheme.js.map b/node_modules/react-native-css-interop/dist/runtime/web/useColorScheme.js.map -new file mode 100644 -index 0000000..69f3b00 ---- /dev/null -+++ b/node_modules/react-native-css-interop/dist/runtime/web/useColorScheme.js.map -@@ -0,0 +1 @@ -+{"version":3,"file":"useColorScheme.js","sourceRoot":"","sources":["../../../src/runtime/web/useColorScheme.ts"],"names":[],"mappings":";;;AAAA,iCAAiC;AACjC,iDAA6C;AAE7C,SAAgB,cAAc;IAC5B,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,IAAA,gBAAQ,EAAS,GAAG,EAAE,CAAC,CAAC;QAClD,KAAK,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;QACzC,YAAY,EAAE,IAAI,GAAG,EAAE;KACxB,CAAC,CAAC,CAAC;IAEJ,OAAO;QACL,WAAW,EAAE,0BAAW,CAAC,GAAG,CAAC,MAAM,CAAC;QACpC,cAAc,EAAE,0BAAW,CAAC,GAAG;QAC/B,iBAAiB,EAAE,0BAAW,CAAC,MAAM;KACtC,CAAC;AACJ,CAAC;AAXD,wCAWC"} -\ No newline at end of file diff --git a/expo-app/tailwind.config.js b/expo-app/tailwind.config.js index dc70374a..a5a3b864 100644 --- a/expo-app/tailwind.config.js +++ b/expo-app/tailwind.config.js @@ -1,209 +1,195 @@ -const gluestackPlugin = require("@gluestack-ui/nativewind-utils/tailwind-plugin"); +const gluestackPlugin = require('@gluestack-ui/nativewind-utils/tailwind-plugin'); /** @type {import('tailwindcss').Config} */ module.exports = { - darkMode: "class", + darkMode: "media", content: [ "./app/**/*.{js,jsx,ts,tsx}", "./components/*.{js,jsx,ts,tsx,mdx}", "./components/**/*.{js,jsx,ts,tsx}", "./screens/**/*.{js,jsx,ts,tsx}", ], - safelist: ["gap-x-2", "gap-y-6", "pl-4", "flex-wrap", "mb-12", "basis-[10%]"], + presets: [require('nativewind/preset')], theme: { - screens: { - base: "0", - xs: "400px", - sm: "480px", - md: "768px", - lg: "992px", - xl: "1280px", - }, extend: { colors: { primary: { - 0: "var(--color-primary-0)", - 50: "var(--color-primary-50)", - 100: "var(--color-primary-100)", - 200: "var(--color-primary-200)", - 300: "var(--color-primary-300)", - 400: "var(--color-primary-400)", - 500: "var(--color-primary-500)", - 600: "var(--color-primary-600)", - 700: "var(--color-primary-700)", - 800: "var(--color-primary-800)", - 900: "var(--color-primary-900)", - 950: "var(--color-primary-950)", + 0: 'rgb(var(--color-primary-0)/)', + 50: 'rgb(var(--color-primary-50)/)', + 100: 'rgb(var(--color-primary-100)/)', + 200: 'rgb(var(--color-primary-200)/)', + 300: 'rgb(var(--color-primary-300)/)', + 400: 'rgb(var(--color-primary-400)/)', + 500: 'rgb(var(--color-primary-500)/)', + 600: 'rgb(var(--color-primary-600)/)', + 700: 'rgb(var(--color-primary-700)/)', + 800: 'rgb(var(--color-primary-800)/)', + 900: 'rgb(var(--color-primary-900)/)', + 950: 'rgb(var(--color-primary-950)/)', }, secondary: { - 0: "var(--color-secondary-0)", - 50: "var(--color-secondary-50)", - 100: "var(--color-secondary-100)", - 200: "var(--color-secondary-200)", - 300: "var(--color-secondary-300)", - 400: "var(--color-secondary-400)", - 500: "var(--color-secondary-500)", - 600: "var(--color-secondary-600)", - 700: "var(--color-secondary-700)", - 800: "var(--color-secondary-800)", - 900: "var(--color-secondary-900)", - 950: "var(--color-secondary-950)", + 0: 'rgb(var(--color-secondary-0)/)', + 50: 'rgb(var(--color-secondary-50)/)', + 100: 'rgb(var(--color-secondary-100)/)', + 200: 'rgb(var(--color-secondary-200)/)', + 300: 'rgb(var(--color-secondary-300)/)', + 400: 'rgb(var(--color-secondary-400)/)', + 500: 'rgb(var(--color-secondary-500)/)', + 600: 'rgb(var(--color-secondary-600)/)', + 700: 'rgb(var(--color-secondary-700)/)', + 800: 'rgb(var(--color-secondary-800)/)', + 900: 'rgb(var(--color-secondary-900)/)', + 950: 'rgb(var(--color-secondary-950)/)', }, tertiary: { - 50: "var(--color-tertiary-50)", - 100: "var(--color-tertiary-100)", - 200: "var(--color-tertiary-200)", - 300: "var(--color-tertiary-300)", - 400: "var(--color-tertiary-400)", - 500: "var(--color-tertiary-500)", - 600: "var(--color-tertiary-600)", - 700: "var(--color-tertiary-700)", - 800: "var(--color-tertiary-800)", - 900: "var(--color-tertiary-900)", - 950: "var(--color-tertiary-950)", + 50: 'rgb(var(--color-tertiary-50)/)', + 100: 'rgb(var(--color-tertiary-100)/)', + 200: 'rgb(var(--color-tertiary-200)/)', + 300: 'rgb(var(--color-tertiary-300)/)', + 400: 'rgb(var(--color-tertiary-400)/)', + 500: 'rgb(var(--color-tertiary-500)/)', + 600: 'rgb(var(--color-tertiary-600)/)', + 700: 'rgb(var(--color-tertiary-700)/)', + 800: 'rgb(var(--color-tertiary-800)/)', + 900: 'rgb(var(--color-tertiary-900)/)', + 950: 'rgb(var(--color-tertiary-950)/)', }, error: { - 0: "var(--color-error-0)", - 50: "var(--color-error-50)", - 100: "var(--color-error-100)", - 200: "var(--color-error-200)", - 300: "var(--color-error-300)", - 400: "var(--color-error-400)", - 500: "var(--color-error-500)", - 600: "var(--color-error-600)", - 700: "var(--color-error-700)", - 800: "var(--color-error-800)", - 900: "var(--color-error-900)", - 950: "var(--color-error-950)", + 0: 'rgb(var(--color-error-0)/)', + 50: 'rgb(var(--color-error-50)/)', + 100: 'rgb(var(--color-error-100)/)', + 200: 'rgb(var(--color-error-200)/)', + 300: 'rgb(var(--color-error-300)/)', + 400: 'rgb(var(--color-error-400)/)', + 500: 'rgb(var(--color-error-500)/)', + 600: 'rgb(var(--color-error-600)/)', + 700: 'rgb(var(--color-error-700)/)', + 800: 'rgb(var(--color-error-800)/)', + 900: 'rgb(var(--color-error-900)/)', + 950: 'rgb(var(--color-error-950)/)', }, success: { - 0: "var(--color-success-0)", - 50: "var(--color-success-50)", - 100: "var(--color-success-100)", - 200: "var(--color-success-200)", - 300: "var(--color-success-300)", - 400: "var(--color-success-400)", - 500: "var(--color-success-500)", - 600: "var(--color-success-600)", - 700: "var(--color-success-700)", - 800: "var(--color-success-800)", - 900: "var(--color-success-900)", - 950: "var(--color-success-950)", + 0: 'rgb(var(--color-success-0)/)', + 50: 'rgb(var(--color-success-50)/)', + 100: 'rgb(var(--color-success-100)/)', + 200: 'rgb(var(--color-success-200)/)', + 300: 'rgb(var(--color-success-300)/)', + 400: 'rgb(var(--color-success-400)/)', + 500: 'rgb(var(--color-success-500)/)', + 600: 'rgb(var(--color-success-600)/)', + 700: 'rgb(var(--color-success-700)/)', + 800: 'rgb(var(--color-success-800)/)', + 900: 'rgb(var(--color-success-900)/)', + 950: 'rgb(var(--color-success-950)/)', }, warning: { - 0: "var(--color-warning-0)", - 50: "var(--color-warning-50)", - 100: "var(--color-warning-100)", - 200: "var(--color-warning-200)", - 300: "var(--color-warning-300)", - 400: "var(--color-warning-400)", - 500: "var(--color-warning-500)", - 600: "var(--color-warning-600)", - 700: "var(--color-warning-700)", - 800: "var(--color-warning-800)", - 900: "var(--color-warning-900)", - 950: "var(--color-warning-950)", + 0: 'rgb(var(--color-warning-0)/)', + 50: 'rgb(var(--color-warning-50)/)', + 100: 'rgb(var(--color-warning-100)/)', + 200: 'rgb(var(--color-warning-200)/)', + 300: 'rgb(var(--color-warning-300)/)', + 400: 'rgb(var(--color-warning-400)/)', + 500: 'rgb(var(--color-warning-500)/)', + 600: 'rgb(var(--color-warning-600)/)', + 700: 'rgb(var(--color-warning-700)/)', + 800: 'rgb(var(--color-warning-800)/)', + 900: 'rgb(var(--color-warning-900)/)', + 950: 'rgb(var(--color-warning-950)/)', }, info: { - 0: "var(--color-info-0)", - 50: "var(--color-info-50)", - 100: "var(--color-info-100)", - 200: "var(--color-info-200)", - 300: "var(--color-info-300)", - 400: "var(--color-info-400)", - 500: "var(--color-info-500)", - 600: "var(--color-info-600)", - 700: "var(--color-info-700)", - 800: "var(--color-info-800)", - 900: "var(--color-info-900)", - 950: "var(--color-info-950)", + 0: 'rgb(var(--color-info-0)/)', + 50: 'rgb(var(--color-info-50)/)', + 100: 'rgb(var(--color-info-100)/)', + 200: 'rgb(var(--color-info-200)/)', + 300: 'rgb(var(--color-info-300)/)', + 400: 'rgb(var(--color-info-400)/)', + 500: 'rgb(var(--color-info-500)/)', + 600: 'rgb(var(--color-info-600)/)', + 700: 'rgb(var(--color-info-700)/)', + 800: 'rgb(var(--color-info-800)/)', + 900: 'rgb(var(--color-info-900)/)', + 950: 'rgb(var(--color-info-950)/)', }, typography: { - 0: "var(--color-typography-0)", - 50: "var(--color-typography-50)", - 100: "var(--color-typography-100)", - 200: "var(--color-typography-200)", - 300: "var(--color-typography-300)", - 400: "var(--color-typography-400)", - 500: "var(--color-typography-500)", - 600: "var(--color-typography-600)", - 700: "var(--color-typography-700)", - 800: "var(--color-typography-800)", - 900: "var(--color-typography-900)", - 950: "var(--color-typography-950)", - white: "#FFFFFF", - gray: "#D4D4D4", - black: "#181718", + 0: 'rgb(var(--color-typography-0)/)', + 50: 'rgb(var(--color-typography-50)/)', + 100: 'rgb(var(--color-typography-100)/)', + 200: 'rgb(var(--color-typography-200)/)', + 300: 'rgb(var(--color-typography-300)/)', + 400: 'rgb(var(--color-typography-400)/)', + 500: 'rgb(var(--color-typography-500)/)', + 600: 'rgb(var(--color-typography-600)/)', + 700: 'rgb(var(--color-typography-700)/)', + 800: 'rgb(var(--color-typography-800)/)', + 900: 'rgb(var(--color-typography-900)/)', + 950: 'rgb(var(--color-typography-950)/)', + white: '#FFFFFF', + gray: '#D4D4D4', + black: '#181718', }, outline: { - 0: "var(--color-outline-0)", - 50: "var(--color-outline-50)", - 100: "var(--color-outline-100)", - 200: "var(--color-outline-200)", - 300: "var(--color-outline-300)", - 400: "var(--color-outline-400)", - 500: "var(--color-outline-500)", - 600: "var(--color-outline-600)", - 700: "var(--color-outline-700)", - 800: "var(--color-outline-800)", - 900: "var(--color-outline-900)", - 950: "var(--color-outline-950)", + 0: 'rgb(var(--color-outline-0)/)', + 50: 'rgb(var(--color-outline-50)/)', + 100: 'rgb(var(--color-outline-100)/)', + 200: 'rgb(var(--color-outline-200)/)', + 300: 'rgb(var(--color-outline-300)/)', + 400: 'rgb(var(--color-outline-400)/)', + 500: 'rgb(var(--color-outline-500)/)', + 600: 'rgb(var(--color-outline-600)/)', + 700: 'rgb(var(--color-outline-700)/)', + 800: 'rgb(var(--color-outline-800)/)', + 900: 'rgb(var(--color-outline-900)/)', + 950: 'rgb(var(--color-outline-950)/)', }, background: { - 0: "var(--color-background-0)", - 50: "var(--color-background-50)", - 100: "var(--color-background-100)", - 200: "var(--color-background-200)", - 300: "var(--color-background-300)", - 400: "var(--color-background-400)", - 500: "var(--color-background-500)", - 600: "var(--color-background-600)", - 700: "var(--color-background-700)", - 800: "var(--color-background-800)", - 900: "var(--color-background-900)", - 950: "var(--color-background-950)", - error: "var(--color-background-error)", - warning: "var(--color-background-warning)", - muted: "var(--color-background-muted)", - success: "var(--color-background-success)", - info: "var(--color-background-info)", - light: "#FBFBFB", - dark: "#181719", + 0: 'rgb(var(--color-background-0)/)', + 50: 'rgb(var(--color-background-50)/)', + 100: 'rgb(var(--color-background-100)/)', + 200: 'rgb(var(--color-background-200)/)', + 300: 'rgb(var(--color-background-300)/)', + 400: 'rgb(var(--color-background-400)/)', + 500: 'rgb(var(--color-background-500)/)', + 600: 'rgb(var(--color-background-600)/)', + 700: 'rgb(var(--color-background-700)/)', + 800: 'rgb(var(--color-background-800)/)', + 900: 'rgb(var(--color-background-900)/)', + 950: 'rgb(var(--color-background-950)/)', + error: 'rgb(var(--color-background-error)/)', + warning: 'rgb(var(--color-background-warning)/)', + muted: 'rgb(var(--color-background-muted)/)', + success: 'rgb(var(--color-background-success)/)', + info: 'rgb(var(--color-background-info)/)', + light: '#FBFBFB', + dark: '#181719', }, - border: { - 0: "var(--color-border-0)", - 50: "var(--color-border-50)", - 100: "var(--color-border-100)", - 200: "var(--color-border-200)", - 300: "var(--color-border-300)", - 400: "var(--color-border-400)", - 500: "var(--color-border-500)", - 600: "var(--color-border-600)", - 700: "var(--color-border-700)", - 800: "var(--color-border-800)", - 900: "var(--color-border-900)", - 950: "var(--color-border-950)", - error: "var(--color-border-error)", - warning: "var(--color-border-warning)", - muted: "var(--color-border-muted)", - success: "var(--color-border-success)", - info: "var(--color-border-info)", - light: "#FBFBFB", - dark: "#181719", + indicator: { + primary: 'rgb(var(--color-indicator-primary)/)', + info: 'rgb(var(--color-indicator-info)/)', + error: 'rgb(var(--color-indicator-error)/)', }, }, fontFamily: { - roboto: ["Roboto", "sans-serif"], + heading: undefined, + body: undefined, + mono: undefined, + roboto: ['Roboto', 'sans-serif'], }, fontWeight: { - hairline: "100", - extraBlack: "950", + extrablack: '950', }, fontSize: { - "2xs": "10px", + '2xs': '10px', }, - border: { - 2: "2px", + boxShadow: { + 'hard-1': '-2px 2px 8px 0px rgba(38, 38, 38, 0.20)', + 'hard-2': '0px 3px 10px 0px rgba(38, 38, 38, 0.20)', + 'hard-3': '2px 2px 8px 0px rgba(38, 38, 38, 0.20)', + 'hard-4': '0px -3px 10px 0px rgba(38, 38, 38, 0.20)', + 'hard-5': '0px 2px 10px 0px rgba(38, 38, 38, 0.10)', + 'soft-1': '0px 0px 10px rgba(38, 38, 38, 0.1)', + 'soft-2': '0px 0px 20px rgba(38, 38, 38, 0.2)', + 'soft-3': '0px 0px 30px rgba(38, 38, 38, 0.1)', + 'soft-4': '0px 0px 40px rgba(38, 38, 38, 0.1)', }, }, }, diff --git a/expo-app/tsconfig.json b/expo-app/tsconfig.json index 9b72f7f6..212543f8 100644 --- a/expo-app/tsconfig.json +++ b/expo-app/tsconfig.json @@ -10,6 +10,9 @@ "@/assets/*": [ "../../packages/shared/assets/*", "./assets/*" + ], + "tailwind.config": [ + "./tailwind.config.js" ] } }, @@ -17,6 +20,7 @@ "**/*.ts", "**/*.tsx", ".expo/types/**/*.ts", - "expo-env.d.ts" + "expo-env.d.ts", + "nativewind-env.d.ts" ] } \ No newline at end of file diff --git a/expo-app/yarn.lock b/expo-app/yarn.lock index 77e74e45..b8995bd7 100644 --- a/expo-app/yarn.lock +++ b/expo-app/yarn.lock @@ -1082,10 +1082,10 @@ resolve-from "^5.0.0" semver "^7.6.0" -"@expo/html-elements@^0.10.1": - version "0.10.1" - resolved "https://registry.yarnpkg.com/@expo/html-elements/-/html-elements-0.10.1.tgz#ec2625370cf1d4cb78efa954df45d422532d5ab6" - integrity sha512-3PTmtkV15D7+lykXVtvkH1jQ5Y6JE+e3zCaoMMux7z2cSLGQUNwDEUwG37gew3OEB1/E4/SEWgjvg8m7E6/e2Q== +"@expo/html-elements@0.4.2": + version "0.4.2" + resolved "https://registry.yarnpkg.com/@expo/html-elements/-/html-elements-0.4.2.tgz#4e9f6b9250af8d0befe3242fd42704cca2421e0e" + integrity sha512-lNioCgdtOrCMMqzHY+PCTdyuWBTU4yMBlOzPSkS4YFIWt9bq0zexM2ZJkpybTXmowNdE3zHO93xxAmiA2yDi2w== "@expo/image-utils@^0.5.0": version "0.5.1" @@ -1301,69 +1301,69 @@ dependencies: tslib "^2.4.0" -"@gluestack-ui/accordion@^1.0.6": - version "1.0.6" - resolved "https://registry.npmjs.org/@gluestack-ui/accordion/-/accordion-1.0.6.tgz" - integrity sha512-zB+IlfjP8Ew2wAjGbeNlT8sRebUpi5dldMBHpSSt7TwurhMaEUtum7XNGoFuiTx9zM8gMRvSGTwr/e7DqHW8aA== +"@gluestack-ui/accordion@^1.0.8": + version "1.0.8" + resolved "https://registry.yarnpkg.com/@gluestack-ui/accordion/-/accordion-1.0.8.tgz#29486b7ce125a880abf7d55e966f04987989e2d1" + integrity sha512-Hcq/mJ6zDaQuqh/2pVbJB8UbB5vyNSYmuRc5dFP5DFZredywPrkEpz2awJodaQRCMBIh8jm6NEYfndMIuRFBTA== dependencies: - "@gluestack-ui/utils" "^0.1.12" + "@gluestack-ui/utils" "^0.1.14" "@react-native-aria/accordion" "^0.0.2" "@react-native-aria/focus" "^0.2.9" "@react-native-aria/interactions" "0.2.13" -"@gluestack-ui/actionsheet@^0.2.44": - version "0.2.44" - resolved "https://registry.yarnpkg.com/@gluestack-ui/actionsheet/-/actionsheet-0.2.44.tgz#3cec30acfed7d590b2d783b34d40b24eb7074a0d" - integrity sha512-sLw/Pq5iMNliiddX1wGao3rj+6Brb2NZg6z2jRIoe6bvZoZ2x6ggQt2QznNeu6qRg0/sw3nwJUs5ZGMHGr4VeA== +"@gluestack-ui/actionsheet@^0.2.46": + version "0.2.46" + resolved "https://registry.yarnpkg.com/@gluestack-ui/actionsheet/-/actionsheet-0.2.46.tgz#3efb27d5aa480d5718cc762fa1bc6dfbbc35d1b1" + integrity sha512-zZ4t0gLtHeN6pDDBAPduqnB6ySnqKtWcQfdWQF0KSjpicxMmk22kJQEuPbPPurdZKvq2dCpzQMsJUKe1Xar7Sg== dependencies: - "@gluestack-ui/hooks" "0.1.11" - "@gluestack-ui/overlay" "^0.1.14" - "@gluestack-ui/transitions" "^0.1.10" - "@gluestack-ui/utils" "^0.1.12" + "@gluestack-ui/hooks" "0.1.12" + "@gluestack-ui/overlay" "^0.1.16" + "@gluestack-ui/transitions" "^0.1.11" + "@gluestack-ui/utils" "^0.1.14" "@react-native-aria/dialog" "^0.0.4" "@react-native-aria/focus" "^0.2.9" "@react-native-aria/interactions" "0.2.13" -"@gluestack-ui/alert-dialog@^0.1.30": - version "0.1.30" - resolved "https://registry.npmjs.org/@gluestack-ui/alert-dialog/-/alert-dialog-0.1.30.tgz" - integrity sha512-fTcoKlZnSGiobh18xJ0RdCaX3WgybeSu5A3X62yqTtUEVodxLMC5S/ZZmZ9SZhzAnRqi4Hpu5hQxiEK40Au86Q== +"@gluestack-ui/alert-dialog@^0.1.32": + version "0.1.32" + resolved "https://registry.yarnpkg.com/@gluestack-ui/alert-dialog/-/alert-dialog-0.1.32.tgz#d99b76a676edff2840008f03f4e3f1d2af38c330" + integrity sha512-+imIkN0SgEuikQKgevBw2uBUE0ypD4VygGkPGwq/t8WVLlKp/DCz3GQhsiZavkFi/fbXHNNldwOjSP4RjlYfFQ== dependencies: - "@gluestack-ui/hooks" "0.1.11" - "@gluestack-ui/overlay" "^0.1.14" - "@gluestack-ui/utils" "^0.1.12" + "@gluestack-ui/hooks" "0.1.12" + "@gluestack-ui/overlay" "^0.1.16" + "@gluestack-ui/utils" "^0.1.14" "@react-native-aria/dialog" "^0.0.4" "@react-native-aria/focus" "^0.2.9" "@react-native-aria/interactions" "0.2.13" -"@gluestack-ui/alert@^0.1.15": - version "0.1.15" - resolved "https://registry.npmjs.org/@gluestack-ui/alert/-/alert-0.1.15.tgz" - integrity sha512-Jlaz8awVHznQixVfc1WmO9C1Em7DuF23N44PVOiGe2fCotOOB68ru2cGggaqGlHDzqhPRVpP5Fls+gn8CRDf0Q== +"@gluestack-ui/alert@^0.1.16": + version "0.1.16" + resolved "https://registry.yarnpkg.com/@gluestack-ui/alert/-/alert-0.1.16.tgz#cede162e04c3dcb07a3da797221852bb7c127311" + integrity sha512-vE0litmicuKFJFp9TY3mRuZmyH/E24IdHlC0f3FZjfa+AzeOS+bZdKMRix2EYkvBGrA6uNffWUuHeXWQGMRVJQ== -"@gluestack-ui/avatar@^0.1.17": - version "0.1.17" - resolved "https://registry.yarnpkg.com/@gluestack-ui/avatar/-/avatar-0.1.17.tgz#7657defaa103c72c02fd57300bc79dc93ea47b77" - integrity sha512-L7R3GVjYK6o+tdCiCDZXvHjPi1FKwt9XAFHGlEsQ4dX6Qe7yWEi3K+e5UBpS1ugvja7SmNS+YZwvr+nnVcmohQ== +"@gluestack-ui/avatar@^0.1.18": + version "0.1.18" + resolved "https://registry.yarnpkg.com/@gluestack-ui/avatar/-/avatar-0.1.18.tgz#bb890a7b889060e01faf549f59a47d11c04ada1c" + integrity sha512-VA9XwtavYLYCWrjxHc2u9gRpV97cPRcr/6KJ4tLiMiQbiRL1b4zckiL+/F39fB6xjUOUQHl3Fjo/Yd8swa0MBg== dependencies: - "@gluestack-ui/utils" "^0.1.12" + "@gluestack-ui/utils" "^0.1.14" -"@gluestack-ui/button@^1.0.7": - version "1.0.7" - resolved "https://registry.npmjs.org/@gluestack-ui/button/-/button-1.0.7.tgz" - integrity sha512-6hz5BPoB+iHMpDvys6AbIpeRPbnFiqyE3SnnbKPSCj8lgl3Dr9sFln41BvDmqmZ98d0usJluk50rz8pVNRZRgw== +"@gluestack-ui/button@^1.0.8": + version "1.0.8" + resolved "https://registry.yarnpkg.com/@gluestack-ui/button/-/button-1.0.8.tgz#fb6c1a3e6c59561d0cd6e7d8d0f519034144c66d" + integrity sha512-60ZcFd0XWIwoWe35GSf5jdcgpDI4R1LcQr098SYMUoYg3cWNFrbKUIa+cdCtD7oV/crVFjrmyj+6wZpiyDtx5g== dependencies: - "@gluestack-ui/utils" "0.1.13" + "@gluestack-ui/utils" "0.1.14" "@react-native-aria/focus" "^0.2.9" "@react-native-aria/interactions" "0.2.13" -"@gluestack-ui/checkbox@^0.1.31": - version "0.1.31" - resolved "https://registry.npmjs.org/@gluestack-ui/checkbox/-/checkbox-0.1.31.tgz" - integrity sha512-o7mvEJoH0wGtRrlxtS/B/JWwDu91n6BQu8vej0SjfM1iAlbI1YfOYtk9Kf3ekjINGnANcXzfAVMKYSHVgzCCxQ== +"@gluestack-ui/checkbox@^0.1.33": + version "0.1.33" + resolved "https://registry.yarnpkg.com/@gluestack-ui/checkbox/-/checkbox-0.1.33.tgz#8fc6f6e9b4fe51118abf28b66a82b4667fb7b18b" + integrity sha512-sTbjWiqJDzwfIzp1ZUnHV4MnR08+mlfixsBNqJHCUPrcFCvW2DMFyyRKHWdgHj3BJcfPZQH/kYljVGzJQeAetA== dependencies: - "@gluestack-ui/form-control" "^0.1.18" - "@gluestack-ui/utils" "^0.1.12" + "@gluestack-ui/form-control" "^0.1.19" + "@gluestack-ui/utils" "^0.1.14" "@react-aria/visually-hidden" "^3.8.6" "@react-native-aria/checkbox" "^0.2.9" "@react-native-aria/focus" "^0.2.9" @@ -1371,78 +1371,78 @@ "@react-native-aria/utils" "0.2.11" "@react-stately/checkbox" "^3.4.2" -"@gluestack-ui/divider@^0.1.9": - version "0.1.9" - resolved "https://registry.npmjs.org/@gluestack-ui/divider/-/divider-0.1.9.tgz" - integrity sha512-wuQDEfgZwBoxxd9AKTNKxUK5W7EZ1SiuYpEljm77yekV3vw86t6X1AIJ+zIjDaOFzlNcvWx9ZD8NRXtRkDFiHw== +"@gluestack-ui/divider@^0.1.10": + version "0.1.10" + resolved "https://registry.yarnpkg.com/@gluestack-ui/divider/-/divider-0.1.10.tgz#506ec45f9b5183a0e3b293dbff7b7da19edcfda8" + integrity sha512-/hZx1Rmy4Pgln9AwAprAEQcxYPEHjHSNF4xCUWlK/q0peyiMT5Nagt54VnxykVn5A0b2zg5QKP0pOqOF9xeE6w== -"@gluestack-ui/fab@^0.1.21": - version "0.1.21" - resolved "https://registry.npmjs.org/@gluestack-ui/fab/-/fab-0.1.21.tgz" - integrity sha512-hQ7YZEoGOcujLHTx08dAGmcNMFn6tOBqScdaJpPc6NW+VIPOLD0sVS2zjZBUcqB2a63vIOm1wCzs9yw+IxBilQ== +"@gluestack-ui/fab@^0.1.22": + version "0.1.22" + resolved "https://registry.yarnpkg.com/@gluestack-ui/fab/-/fab-0.1.22.tgz#46861c5d886f5304fb8cf67033012cb4cc2d3239" + integrity sha512-kemsTSOFu18fL0stTAJ5O1FXcrDW2FULNpq3wJJT5aBiwHhQhvWHq1Dyzn/7kT2jSHrvNHDsTzzTcDzGIgVqmg== dependencies: - "@gluestack-ui/utils" "^0.1.12" + "@gluestack-ui/utils" "^0.1.14" "@react-native-aria/focus" "^0.2.9" "@react-native-aria/interactions" "0.2.13" -"@gluestack-ui/form-control@^0.1.18": - version "0.1.18" - resolved "https://registry.npmjs.org/@gluestack-ui/form-control/-/form-control-0.1.18.tgz" - integrity sha512-sVRdh5qZwZGddMiHTG0IHEEktO6iwgKFSoccjmK7P7U/shWt7xAdt5Hh2Rp7+2C/g02v76uFlycI+GhtbnwLGw== +"@gluestack-ui/form-control@^0.1.19": + version "0.1.19" + resolved "https://registry.yarnpkg.com/@gluestack-ui/form-control/-/form-control-0.1.19.tgz#7a75b65f5ec89da95c30442750d6f7af71db6868" + integrity sha512-6YbPbi/RZrXc5DyVPbxPV17FYaBoEl1yAdSwut8iE6n+yQekjluINrh2q5ZPWF2SGmyo7VSNcL85yeU5I97xHg== dependencies: - "@gluestack-ui/utils" "^0.1.12" + "@gluestack-ui/utils" "^0.1.14" "@react-native-aria/focus" "^0.2.9" -"@gluestack-ui/hooks@0.1.11": - version "0.1.11" - resolved "https://registry.npmjs.org/@gluestack-ui/hooks/-/hooks-0.1.11.tgz" - integrity sha512-bcBsF7bTo//JD6L9ekJu0rZs83qYD/pE/Uj3ih3OYEtGU0LDoYiGkBMmDRpVMcVv8bE3TCKivnhHaT/heafInA== +"@gluestack-ui/hooks@0.1.12": + version "0.1.12" + resolved "https://registry.yarnpkg.com/@gluestack-ui/hooks/-/hooks-0.1.12.tgz#4a92de73eec7b6ba6fc8e781c23417252993c95c" + integrity sha512-jMZS+aIPYvouRKkWUzOYFKeWyt+YFIojYFuSq8sNZTjAq72xtiKZQKxNwOgTorEDD4CAIk0bncRS0TneNSuMAA== -"@gluestack-ui/icon@^0.1.22": - version "0.1.22" - resolved "https://registry.yarnpkg.com/@gluestack-ui/icon/-/icon-0.1.22.tgz#3446ec5c118dbdf1ab7d139f7cca63ada7172909" - integrity sha512-6E8N0OEEike0p6ITRJoEYpRlHqjRAabekEVSOk/HM/v+MJONT613TlQari5ozBHcaNLn/JhJqRxNHxNrzxd+ZQ== +"@gluestack-ui/icon@^0.1.24-alpha.0": + version "0.1.24-alpha.0" + resolved "https://registry.yarnpkg.com/@gluestack-ui/icon/-/icon-0.1.24-alpha.0.tgz#2315eb76fe14801056bdc5f6083fe5ec8461216c" + integrity sha512-PHLG/BnEw4eUNLmsZ7aMHAPPMcD0GizNHE8e+88m9h0+6Qb5HJ9sQi2qnhviO2JRyDi2z2pR1XNLuOlhzkKJag== dependencies: - "@gluestack-ui/provider" "^0.1.6" - "@gluestack-ui/utils" "^0.1.12" + "@gluestack-ui/provider" "^0.1.13" + "@gluestack-ui/utils" "^0.1.14" "@react-native-aria/focus" "^0.2.9" -"@gluestack-ui/image@^0.1.10": - version "0.1.10" - resolved "https://registry.npmjs.org/@gluestack-ui/image/-/image-0.1.10.tgz" - integrity sha512-RrWfA6PPyO7qkyH4gGPEp6YFkyQ9/4DvGHpuso0oVQeRpYGKb/ciJuIUryR1X1yoKZzrJZqMrO4lT4Uf/4mlsg== +"@gluestack-ui/image@^0.1.11": + version "0.1.11" + resolved "https://registry.yarnpkg.com/@gluestack-ui/image/-/image-0.1.11.tgz#f7e624a4cdfc227a068e28331db457f31e7e1c94" + integrity sha512-Zg9+vdNr6jwM71RBxROzTSyNfLFOncBVSZfJX7nJ4N/8cRsSwbYCDJqt+UYe/+I1KYIpHCAICdgsJdas/lthkw== dependencies: - "@gluestack-ui/utils" "^0.1.12" + "@gluestack-ui/utils" "^0.1.14" "@react-native-aria/focus" "^0.2.9" "@react-native-aria/interactions" "0.2.13" -"@gluestack-ui/input@^0.1.31": - version "0.1.31" - resolved "https://registry.npmjs.org/@gluestack-ui/input/-/input-0.1.31.tgz" - integrity sha512-qunHYjHbuzafJhFaUHzDT28pjC7AgTUJ0jH//w53MLXmTCBDh7kEgqLt1Fxfh3/F7AAN2rLquiOOqdX14H6TOQ== +"@gluestack-ui/input@^0.1.32": + version "0.1.32" + resolved "https://registry.yarnpkg.com/@gluestack-ui/input/-/input-0.1.32.tgz#d4d64e43938b2cf9ee3f816fa774d08333305d28" + integrity sha512-RWtqpo0p37GYjwBTiMf4fpvKYe32OMa6lxFbDqPqEX1m994D9QwP7iWnDWA/9nr/Mf3eET6dMWbH4/eL4oZr8Q== dependencies: - "@gluestack-ui/form-control" "^0.1.18" - "@gluestack-ui/utils" "^0.1.13" + "@gluestack-ui/form-control" "^0.1.19" + "@gluestack-ui/utils" "^0.1.14" "@react-native-aria/focus" "^0.2.9" "@react-native-aria/interactions" "0.2.13" -"@gluestack-ui/link@^0.1.22": - version "0.1.22" - resolved "https://registry.npmjs.org/@gluestack-ui/link/-/link-0.1.22.tgz" - integrity sha512-eNUEhxYI9Mogpb+v+zGkZMh8caObhIlpfQKznGObCSsDHg3OmNuUqqL3MjpGVsYaqmQw9+vVR2ehxMEJiOg2xg== +"@gluestack-ui/link@^0.1.23": + version "0.1.23" + resolved "https://registry.yarnpkg.com/@gluestack-ui/link/-/link-0.1.23.tgz#624fa5adfbb7951529a7e48003d5bca926dd8ef3" + integrity sha512-j/YIdlq6V+Ad8c6X1EVL4jUI/Zo/L9S6WLZYPKNArlidRxjEME7d2maIl2O20ZcRSOHvee2VAf7HHNem+Jn+AA== dependencies: - "@gluestack-ui/utils" "^0.1.12" + "@gluestack-ui/utils" "^0.1.14" "@react-native-aria/focus" "^0.2.9" "@react-native-aria/interactions" "0.2.13" -"@gluestack-ui/menu@^0.2.36": - version "0.2.36" - resolved "https://registry.npmjs.org/@gluestack-ui/menu/-/menu-0.2.36.tgz" - integrity sha512-jCwnwVreXyo4MrKyW5jJ31jIBIeTe8EGPNYIJVLcim+NDSZTmUrrypVFw7lJDRz4iNwOaKQbqfu/iVeCGvsF5A== +"@gluestack-ui/menu@^0.2.37": + version "0.2.37" + resolved "https://registry.yarnpkg.com/@gluestack-ui/menu/-/menu-0.2.37.tgz#094f365d07648792e6b5081533b9592afc64ddfa" + integrity sha512-2XxDG4pNPygtKe6icI1SN9HdlDS3nqPd3CiJ8HSHsTywjCDHZbm6zBamK9evWiOuKArGaNtcjEtXEm6lm56CFw== dependencies: - "@gluestack-ui/hooks" "0.1.11" - "@gluestack-ui/overlay" "^0.1.14" - "@gluestack-ui/utils" "^0.1.12" + "@gluestack-ui/hooks" "0.1.12" + "@gluestack-ui/overlay" "^0.1.16" + "@gluestack-ui/utils" "^0.1.14" "@react-aria/menu" "^3.14.1" "@react-aria/overlays" "^3.19.0" "@react-native-aria/focus" "^0.2.9" @@ -1452,29 +1452,38 @@ "@react-stately/utils" "^3.6.0" react-stately "^3.21.0" -"@gluestack-ui/modal@^0.1.34": - version "0.1.34" - resolved "https://registry.npmjs.org/@gluestack-ui/modal/-/modal-0.1.34.tgz" - integrity sha512-fsweYLT/CRVTg4SJNq/Rr17SU3Xvk+IFA3hsgrNgkYoZZyvooGv2m+YHA9AEZBhNYePDjhxUqZwz7j7u3u/i8Q== +"@gluestack-ui/modal@^0.1.35": + version "0.1.35" + resolved "https://registry.yarnpkg.com/@gluestack-ui/modal/-/modal-0.1.35.tgz#5ed5df4b999926bc13456d94a2ae4fc647b98e16" + integrity sha512-KfA2aJ/ZsdM5rggAAJOykVHsOZf7aYjTfDNsd5JHUC7Uo8IrQAZJBX1DEz+Y3V8dPMXEIlEFGMaVh4o29nZXcw== dependencies: - "@gluestack-ui/hooks" "0.1.11" - "@gluestack-ui/overlay" "^0.1.14" - "@gluestack-ui/utils" "^0.1.12" + "@gluestack-ui/hooks" "0.1.12" + "@gluestack-ui/overlay" "^0.1.16" + "@gluestack-ui/utils" "^0.1.14" "@react-native-aria/dialog" "^0.0.4" "@react-native-aria/focus" "^0.2.9" "@react-native-aria/interactions" "0.2.13" "@react-native-aria/overlays" "^0.3.12" -"@gluestack-ui/nativewind-utils@latest": - version "1.0.23" - resolved "https://registry.npmjs.org/@gluestack-ui/nativewind-utils/-/nativewind-utils-1.0.23.tgz" - integrity sha512-4sLc24QwhYWEpyz/ApGqwLOzkZ/tUxpWHtsnIaibgmACcS+BaEebgfGwqmSp215cFE2UlMGofFKDCrdA5UGN0A== +"@gluestack-ui/nativewind-utils@^1.0.26-alpha.2": + version "1.0.26-alpha.2" + resolved "https://registry.yarnpkg.com/@gluestack-ui/nativewind-utils/-/nativewind-utils-1.0.26-alpha.2.tgz#c3ae0459f12e0187d985082681434d9ed7544cf4" + integrity sha512-YTIm6xLu/TBlnqWOE67cjcHFN7x1FE9iMPyspFD63lE8k58ZV5e9GngzS+HXQ+vfoumPMfY/Gxi5RJhIYy/tWA== dependencies: find-yarn-workspace-root "^2.0.0" patch-package "8.0.0" tailwind-variants "0.1.20" -"@gluestack-ui/overlay@0.1.15", "@gluestack-ui/overlay@^0.1.12", "@gluestack-ui/overlay@^0.1.14", "@gluestack-ui/overlay@^0.1.7", "@gluestack-ui/overlay@latest": +"@gluestack-ui/overlay@0.1.16", "@gluestack-ui/overlay@^0.1.16": + version "0.1.16" + resolved "https://registry.yarnpkg.com/@gluestack-ui/overlay/-/overlay-0.1.16.tgz#1902a0985c45dd829ed13892935a360be3f6fe2c" + integrity sha512-08QFwioMroNia33Fe1zqhHjUL/CErr2swMMcN6vNWNWad6VfwXx3dZIXJxCIL1W90Rz908pWfIGrQEYaT6VAkw== + dependencies: + "@react-native-aria/focus" "^0.2.9" + "@react-native-aria/interactions" "0.2.13" + "@react-native-aria/overlays" "^0.3.12" + +"@gluestack-ui/overlay@^0.1.15": version "0.1.15" resolved "https://registry.npmjs.org/@gluestack-ui/overlay/-/overlay-0.1.15.tgz" integrity sha512-yHInyJ/sH84X/3chun/tT+YfMIEX/680F31cMHQ5KsHRN4LwF3jOghUkS4592q3Wf32Zmqx0JwTrN8q6wOBT9A== @@ -1483,149 +1492,149 @@ "@react-native-aria/interactions" "0.2.13" "@react-native-aria/overlays" "^0.3.12" -"@gluestack-ui/popover@^0.1.37": - version "0.1.37" - resolved "https://registry.npmjs.org/@gluestack-ui/popover/-/popover-0.1.37.tgz" - integrity sha512-/THremYW8mjBoDn7ZLolKTFYD4rwGjysw9nA194R3e5ZelEbkJliosugqjKPKxq9yN53sUZlCt1jsxTQ1U4AOQ== +"@gluestack-ui/popover@^0.1.43": + version "0.1.43" + resolved "https://registry.yarnpkg.com/@gluestack-ui/popover/-/popover-0.1.43.tgz#7a9a4af29fecac0019cbec204a4f063c82ac5e0d" + integrity sha512-O+pcLWze+H/1fIzn+0Kx7rPgjOzXoUM4eVAM2f/vmqZ0g3hciT/2voNi2lV5mwwtfZOfNlWkgJZQHQ+DIkQx6g== dependencies: - "@gluestack-ui/hooks" "0.1.11" - "@gluestack-ui/overlay" "0.1.15" - "@gluestack-ui/utils" "^0.1.12" + "@gluestack-ui/hooks" "0.1.12" + "@gluestack-ui/overlay" "0.1.16" + "@gluestack-ui/utils" "^0.1.14" "@react-native-aria/dialog" "^0.0.4" "@react-native-aria/focus" "^0.2.9" "@react-native-aria/interactions" "0.2.13" "@react-native-aria/overlays" "0.3.14" -"@gluestack-ui/pressable@^0.1.16": - version "0.1.16" - resolved "https://registry.npmjs.org/@gluestack-ui/pressable/-/pressable-0.1.16.tgz" - integrity sha512-SGUqCCZyMgRtlDN5mO7CN0NM+NMG9S2M3BdhdjI48Jnaks1DdWxzZeaD5xlEhg+Ww/KtmGzVrlSKqPDvVyROiA== +"@gluestack-ui/pressable@^0.1.17": + version "0.1.17" + resolved "https://registry.yarnpkg.com/@gluestack-ui/pressable/-/pressable-0.1.17.tgz#96a09dc05e3b6beba8201dd83f6c19dafc875fff" + integrity sha512-tmyxyNsCCzF0spHwE6CcNq6WretE/Q42EQqvSGKvqk+HHetHGYdLdnWQ2jIxvdmFYXXqBwm5VbC0C8tzbc9A0w== dependencies: - "@gluestack-ui/utils" "^0.1.12" + "@gluestack-ui/utils" "^0.1.14" "@react-native-aria/focus" "^0.2.9" "@react-native-aria/interactions" "0.2.13" -"@gluestack-ui/progress@^0.1.16": - version "0.1.16" - resolved "https://registry.npmjs.org/@gluestack-ui/progress/-/progress-0.1.16.tgz" - integrity sha512-pjNh8hOhYHTq9ko7topyB9hVpky8eO53aDIeDeaCpzG+YdMGPwYi/QngpIH15YrCLKp2ofiwfXwf+E9IvlRMMg== +"@gluestack-ui/progress@^0.1.18": + version "0.1.18" + resolved "https://registry.yarnpkg.com/@gluestack-ui/progress/-/progress-0.1.18.tgz#9a659115b4579fee057c2d13bbc52e9e080a6958" + integrity sha512-WQCLdvqoiIIQnLBXG7+HDTREMbUfEy9rV7FuBMcBBqEFILuVT1W4hyuXLz/CPrUoCWZJ8OUKvLZvaWWzW8pA9Q== dependencies: - "@gluestack-ui/utils" "^0.1.12" + "@gluestack-ui/utils" "^0.1.14" -"@gluestack-ui/provider@^0.1.6": - version "0.1.12" - resolved "https://registry.npmjs.org/@gluestack-ui/provider/-/provider-0.1.12.tgz" - integrity sha512-EvDEknx6qkrJuKC8ygdixiTvnAAji9moArREueNJdhJp8Af53UIzgWk4m4oqGlRfgrw6p1xApgE/2VTwGE5f7w== +"@gluestack-ui/provider@^0.1.13": + version "0.1.13" + resolved "https://registry.yarnpkg.com/@gluestack-ui/provider/-/provider-0.1.13.tgz#4df09fa12655624688dc00fc24b58de36d72d739" + integrity sha512-kJaELgfowTBsJ90XIHW70LsvEg5PKdtmrjfmaU+Hea1spAPgPDh1z5gpmfVoUiZipUUdZoiUgnHbkVh5OMar4g== dependencies: "@react-native-aria/interactions" "0.2.13" tsconfig "7" - typescript "^4.9.4" + typescript "^5.6.3" -"@gluestack-ui/radio@^0.1.32": - version "0.1.32" - resolved "https://registry.npmjs.org/@gluestack-ui/radio/-/radio-0.1.32.tgz" - integrity sha512-lgm925KACPnCKUK790fVFreM/+Z4WQO2J5REb2SDXlRJcnGOKhJteGuHBDPUlH6CX2cjeY7gvOBb1J+mEllQTQ== +"@gluestack-ui/radio@^0.1.34": + version "0.1.34" + resolved "https://registry.yarnpkg.com/@gluestack-ui/radio/-/radio-0.1.34.tgz#939b18372ac6b032d563f0e54b2a730b84e3e196" + integrity sha512-6izkm5t+rbmPemkpIh0k9F9E3UdIFqbzKT6+WMUbmcaiHeTmWhI0njPiA0S8ge+RpKHXZmXgbiRK1TVkvu17Hw== dependencies: - "@gluestack-ui/form-control" "^0.1.18" - "@gluestack-ui/utils" "^0.1.12" + "@gluestack-ui/form-control" "^0.1.19" + "@gluestack-ui/utils" "^0.1.14" "@react-aria/visually-hidden" "^3.7.0" "@react-native-aria/focus" "^0.2.9" "@react-native-aria/interactions" "0.2.13" "@react-native-aria/radio" "^0.2.10" "@react-stately/radio" "^3.8.1" -"@gluestack-ui/react-native-aria@^0.1.5": - version "0.1.5" - resolved "https://registry.npmjs.org/@gluestack-ui/react-native-aria/-/react-native-aria-0.1.5.tgz" - integrity sha512-6IaE4fcBaGMu3kSDKAoo1wE5qXcoKDX5YA14zzYzXN2d67/K9NYSjpoo/GbxDWZVl45X6Z9QLS/SBP7SmsPO+Q== +"@gluestack-ui/react-native-aria@^0.1.6": + version "0.1.6" + resolved "https://registry.yarnpkg.com/@gluestack-ui/react-native-aria/-/react-native-aria-0.1.6.tgz#5b0292fe1b7794743c5ab92dd6bc35741cbffb33" + integrity sha512-uLsdiTacS6iBVvk/+6Vvh2AJN9u0OzTvT0FqTiM8vgtesZvSBpv1DN1o5cQR+C/7s56yujdjRXzmRarknm60Qg== dependencies: - "@react-native-aria/focus" "^0.2.7" + "@react-native-aria/focus" "^0.2.9" -"@gluestack-ui/select@^0.1.29": - version "0.1.29" - resolved "https://registry.yarnpkg.com/@gluestack-ui/select/-/select-0.1.29.tgz#9869573a3f74caeadac8372d942b048b51cb7eb6" - integrity sha512-YbcF2v2DfP1Z1VGPEUXzjC9EvDR2QDgFLCpuUbNpztZqjAFHmdIWtJtxyCg6TrjbfsSKkVuoiXZ5VFRiymfOdQ== +"@gluestack-ui/select@^0.1.30": + version "0.1.30" + resolved "https://registry.yarnpkg.com/@gluestack-ui/select/-/select-0.1.30.tgz#96a22e4702d228feeb05e2c630e613615f5bf79a" + integrity sha512-P47rX2vV6cX73Xvqgj3OyQC3Iw2Hj1r2jffdV2Ch+RzYGAbK97jfLJSG/MyK8awelw8s9r0U9VYgT8eez90ehg== dependencies: - "@gluestack-ui/form-control" "^0.1.18" - "@gluestack-ui/hooks" "0.1.11" - "@gluestack-ui/utils" "^0.1.12" + "@gluestack-ui/form-control" "^0.1.19" + "@gluestack-ui/hooks" "0.1.12" + "@gluestack-ui/utils" "^0.1.14" "@react-native-aria/focus" "^0.2.9" -"@gluestack-ui/slider@^0.1.25": - version "0.1.25" - resolved "https://registry.npmjs.org/@gluestack-ui/slider/-/slider-0.1.25.tgz" - integrity sha512-wqDBdj/ebhBZmYwsGic7MHtIhTsfc36bGOiiIxDjSFQCJX+8V++zQpl7HfAIn2CAZ2E0CpM5dhDxn3y71SOFkg== +"@gluestack-ui/slider@^0.1.26": + version "0.1.26" + resolved "https://registry.yarnpkg.com/@gluestack-ui/slider/-/slider-0.1.26.tgz#09abc0152e268e202605e3a0538a792d704a7e45" + integrity sha512-Fe7ab1RBPilWamYHU5M5uA7GK+9PmISkliye+PToYkJRpp43mOa5llKCaViQ3aALnhI7GAawcJtbSsvUTpFEvw== dependencies: - "@gluestack-ui/form-control" "^0.1.18" - "@gluestack-ui/hooks" "0.1.11" - "@gluestack-ui/utils" "^0.1.12" + "@gluestack-ui/form-control" "^0.1.19" + "@gluestack-ui/hooks" "0.1.12" + "@gluestack-ui/utils" "^0.1.14" "@react-aria/visually-hidden" "^3.8.1" "@react-native-aria/interactions" "0.2.13" "@react-native-aria/slider" "^0.2.11" "@react-stately/slider" "^3.2.4" -"@gluestack-ui/spinner@^0.1.14": - version "0.1.14" - resolved "https://registry.npmjs.org/@gluestack-ui/spinner/-/spinner-0.1.14.tgz" - integrity sha512-6uLUvyJMhYR/sIMU/purfaYPqaKiLqnBi0n0LiWRsJNGDgENqdWVHMJpGTdWaFuCLxumZ7xnp0wG2KAdG9UyyQ== +"@gluestack-ui/spinner@^0.1.15": + version "0.1.15" + resolved "https://registry.yarnpkg.com/@gluestack-ui/spinner/-/spinner-0.1.15.tgz#712276227568476f55672b7bbe0082478c0c0a65" + integrity sha512-jkXOGhna05HM2tcPKbA+t+vqcVRgRowwC6ES0A9kY5fcuURH1V41UFx/YWyHdSsHwmWlIoCCdWycF78UbNVdPg== -"@gluestack-ui/switch@^0.1.22": - version "0.1.22" - resolved "https://registry.npmjs.org/@gluestack-ui/switch/-/switch-0.1.22.tgz" - integrity sha512-R5gVyKh7O5vGUvao8VWI1ZAnVhlt2TFYpoiSILydbWLnYydqNa8EQujnXAH4RvjTS6/CVu/sH7sK03uKMmPdvA== +"@gluestack-ui/switch@^0.1.23": + version "0.1.23" + resolved "https://registry.yarnpkg.com/@gluestack-ui/switch/-/switch-0.1.23.tgz#4a1ba812a34be5a626ad6b1f55b3bc54cbabc3c8" + integrity sha512-Ur2EMsDyXMTUdXcvrs24InpXpqY0Mq2BhzfxdfvDWXEuPGn6+UFokIBTUE7HwHBWp07Gjqj6WGDiGnhKJMuT+w== dependencies: - "@gluestack-ui/form-control" "^0.1.18" - "@gluestack-ui/utils" "^0.1.12" + "@gluestack-ui/form-control" "^0.1.19" + "@gluestack-ui/utils" "^0.1.14" "@react-native-aria/focus" "^0.2.9" "@react-native-aria/interactions" "0.2.13" "@react-stately/toggle" "^3.4.4" -"@gluestack-ui/textarea@^0.1.23": - version "0.1.23" - resolved "https://registry.npmjs.org/@gluestack-ui/textarea/-/textarea-0.1.23.tgz" - integrity sha512-yZmCoj+0ZHkdqKMY/VTaW6AZ2EVGgaP4WOmXFnglWYsRDH+ZVUuBPYUJeqfko3WZ3gjgcS5vL+NKV98zirtyaA== +"@gluestack-ui/textarea@^0.1.24": + version "0.1.24" + resolved "https://registry.yarnpkg.com/@gluestack-ui/textarea/-/textarea-0.1.24.tgz#bf3f6379ec49fec21e30aea2ccf79865ecee3625" + integrity sha512-maABWaI+Vif9S5twBVzcF1pqv43NMigYuKNM7aNZA5+Mzi3/cf3esPpYjB2VFg3r3VKLZq9JbVFkgLq9MauFxw== dependencies: - "@gluestack-ui/form-control" "^0.1.18" - "@gluestack-ui/utils" "^0.1.13" + "@gluestack-ui/form-control" "^0.1.19" + "@gluestack-ui/utils" "^0.1.14" "@react-native-aria/focus" "^0.2.9" -"@gluestack-ui/toast@^1.0.7": - version "1.0.7" - resolved "https://registry.npmjs.org/@gluestack-ui/toast/-/toast-1.0.7.tgz" - integrity sha512-mmeJftStDsoRHYX+CXxR8lxiCKtQhiSyIAvqvhdDWTqf8Nz9JnCCQKj1zrV2pSnC89Bt+3msfE54cATuU1JF0w== +"@gluestack-ui/toast@^1.0.8": + version "1.0.8" + resolved "https://registry.yarnpkg.com/@gluestack-ui/toast/-/toast-1.0.8.tgz#af77d31fdf5fc440041c3a4e08ede4dd2b950e66" + integrity sha512-Lwa8YU6rvmo9JhBAiSJZZoSyuyvZMKnBHcDJc+cPTd6OYybHF4bcEAEXQRQRu86EY0SfU63trCC3hEbXaSFWCg== dependencies: - "@gluestack-ui/hooks" "0.1.11" - "@gluestack-ui/overlay" "^0.1.12" - "@gluestack-ui/transitions" "^0.1.10" - "@gluestack-ui/utils" "^0.1.12" + "@gluestack-ui/hooks" "0.1.12" + "@gluestack-ui/overlay" "^0.1.16" + "@gluestack-ui/transitions" "^0.1.11" + "@gluestack-ui/utils" "^0.1.14" "@react-native-aria/focus" "^0.2.9" -"@gluestack-ui/tooltip@^0.1.32": - version "0.1.32" - resolved "https://registry.npmjs.org/@gluestack-ui/tooltip/-/tooltip-0.1.32.tgz" - integrity sha512-IsHCnmwYSMOSsIcjF2NpFU1d0lzQETuIyQkkBE8vTB1nPVTpJDvRt5mmfcmn0B/aampA6JOYT7rrGsTj7cjcFA== +"@gluestack-ui/tooltip@^0.1.36-alpha.0": + version "0.1.36-alpha.0" + resolved "https://registry.yarnpkg.com/@gluestack-ui/tooltip/-/tooltip-0.1.36-alpha.0.tgz#ff435e8709967688814b377a49456fab014f7a8c" + integrity sha512-pKlbOp3n2U3AXpS3Yz7a1u2mwmE1AFeeTctsz8DfA+8LTn0d34O76dKMkJxjY84kAKfSPq3Yi4oAxgobQLoeww== dependencies: - "@gluestack-ui/hooks" "0.1.11" - "@gluestack-ui/overlay" "^0.1.14" - "@gluestack-ui/utils" "^0.1.12" + "@gluestack-ui/hooks" "0.1.12" + "@gluestack-ui/overlay" "^0.1.16" + "@gluestack-ui/utils" "^0.1.14" "@react-native-aria/focus" "^0.2.9" "@react-native-aria/interactions" "0.2.13" "@react-native-aria/overlays" "^0.3.12" -"@gluestack-ui/transitions@^0.1.10": - version "0.1.10" - resolved "https://registry.npmjs.org/@gluestack-ui/transitions/-/transitions-0.1.10.tgz" - integrity sha512-oOwYAmbebAowDCDZyRdGwhK2of46b642OZQxBBkln/BX7YEvY4PhQIfup0HUCG9YA5IzlQnw0iwqREbaVNKIgA== +"@gluestack-ui/transitions@^0.1.11": + version "0.1.11" + resolved "https://registry.yarnpkg.com/@gluestack-ui/transitions/-/transitions-0.1.11.tgz#e84a9841fabb8e67ce17cea979a1cd77b5edac56" + integrity sha512-GuCprzasuU8GKXm1GUmaVJ1Njiq72pQ4Ni0g+rg6kRQ7hyR0K4d0wdHRyFldHKmfLcQkM3i70rvYq/468hLKLw== dependencies: - "@gluestack-ui/overlay" "^0.1.7" - "@gluestack-ui/react-native-aria" "^0.1.5" - "@gluestack-ui/utils" "^0.1.9" - "@react-native-aria/focus" "^0.2.7" + "@gluestack-ui/overlay" "^0.1.16" + "@gluestack-ui/react-native-aria" "^0.1.6" + "@gluestack-ui/utils" "^0.1.14" + "@react-native-aria/focus" "^0.2.9" -"@gluestack-ui/utils@0.1.13", "@gluestack-ui/utils@^0.1.12", "@gluestack-ui/utils@^0.1.13", "@gluestack-ui/utils@^0.1.9": - version "0.1.13" - resolved "https://registry.npmjs.org/@gluestack-ui/utils/-/utils-0.1.13.tgz" - integrity sha512-L9+ddAn5FLtNJYut7KBGChelt+SvDW3C+6dXduZyP9DD1BoDVTRVwPVYblvbefZf2ZOdTALtHIIO3n/n1bWlbg== +"@gluestack-ui/utils@0.1.14", "@gluestack-ui/utils@^0.1.14": + version "0.1.14" + resolved "https://registry.yarnpkg.com/@gluestack-ui/utils/-/utils-0.1.14.tgz#83af7f58716fe9ec7ea7dc358a791d33b8271cd7" + integrity sha512-dGe2LWJi8KcNmfM/Nt/WAT0I5s2F/Lud7nR/gTyksdLs9AZ8YoRkKt0s4q0ofz6ku1yEHDLa/YOuk2+APd8qNQ== dependencies: "@react-native-aria/focus" "^0.2.9" @@ -2250,7 +2259,7 @@ "@react-types/dialog" "*" "@react-types/shared" "*" -"@react-native-aria/focus@^0.2.7", "@react-native-aria/focus@^0.2.9": +"@react-native-aria/focus@^0.2.9": version "0.2.9" resolved "https://registry.npmjs.org/@react-native-aria/focus/-/focus-0.2.9.tgz" integrity sha512-zVgOIzKwnsyyurUxlZnzUKB2ekK/cmK64sQJIKKUlkJKVxd2EAFf7Sjz/NVEoMhTODN3qGRASTv9bMk/pBzzVA== @@ -4119,6 +4128,11 @@ array-buffer-byte-length@^1.0.1: call-bind "^1.0.5" is-array-buffer "^3.0.4" +array-timsort@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/array-timsort/-/array-timsort-1.0.3.tgz#3c9e4199e54fb2b9c3fe5976396a21614ef0d926" + integrity sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ== + array-union@^2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz" @@ -4237,7 +4251,7 @@ babel-plugin-jest-hoist@^29.6.3: babel-plugin-module-resolver@^5.0.2: version "5.0.2" - resolved "https://registry.npmjs.org/babel-plugin-module-resolver/-/babel-plugin-module-resolver-5.0.2.tgz" + resolved "https://registry.yarnpkg.com/babel-plugin-module-resolver/-/babel-plugin-module-resolver-5.0.2.tgz#cdeac5d4aaa3b08dd1ac23ddbf516660ed2d293e" integrity sha512-9KtaCazHee2xc0ibfqsDeamwDps6FZNo5S0Q81dUqEuFzVwPhcT4J5jOqIVvgCA3Q/wO9hKYxN/Ds3tIsp5ygg== dependencies: find-babel-config "^2.1.1" @@ -4280,17 +4294,6 @@ babel-plugin-react-native-web@~0.19.10: resolved "https://registry.npmjs.org/babel-plugin-react-native-web/-/babel-plugin-react-native-web-0.19.12.tgz" integrity sha512-eYZ4+P6jNcB37lObWIg0pUbi7+3PKoU1Oie2j0C8UF3cXyXoR74tO2NBjI/FORb2LJyItJZEAmjU5pSaJYEL1w== -babel-plugin-tester@^11.0.4: - version "11.0.4" - resolved "https://registry.npmjs.org/babel-plugin-tester/-/babel-plugin-tester-11.0.4.tgz" - integrity sha512-cqswtpSPo0e++rZB0l/54EG17LL25l9gLgh59yXfnmNxX+2lZTIOpx2zt4YI9QIClVXc8xf63J6yWwKkzy0jNg== - dependencies: - core-js "^3.27.2" - debug "^4.3.4" - lodash.mergewith "^4.6.2" - prettier "^2.8.3" - strip-indent "^3.0.0" - babel-plugin-transform-flow-enums@^0.0.2: version "0.0.2" resolved "https://registry.npmjs.org/babel-plugin-transform-flow-enums/-/babel-plugin-transform-flow-enums-0.0.2.tgz" @@ -4605,9 +4608,9 @@ charenc@0.0.2, charenc@~0.0.1: resolved "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz" integrity sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA== -chokidar@^3.5.3: +chokidar@^3.6.0: version "3.6.0" - resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== dependencies: anymatch "~3.1.2" @@ -4815,6 +4818,17 @@ commander@^9.4.1: resolved "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz" integrity sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ== +comment-json@^4.2.5: + version "4.2.5" + resolved "https://registry.yarnpkg.com/comment-json/-/comment-json-4.2.5.tgz#482e085f759c2704b60bc6f97f55b8c01bc41e70" + integrity sha512-bKw/r35jR3HGt5PEPm1ljsQQGyCrR8sFGNiN5L+ykDHdpO8Smxkrkla9Yi6NkQyUrb8V54PGhfMs6NrIwtxtdw== + dependencies: + array-timsort "^1.0.3" + core-util-is "^1.0.3" + esprima "^4.0.1" + has-own-prop "^2.0.0" + repeat-string "^1.6.1" + commondir@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz" @@ -4882,12 +4896,7 @@ core-js-compat@^3.38.0: dependencies: browserslist "^4.23.3" -core-js@^3.27.2: - version "3.38.1" - resolved "https://registry.npmjs.org/core-js/-/core-js-3.38.1.tgz" - integrity sha512-OP35aUorbU3Zvlx7pjsFdu1rGNnD4pgw/CWoYzRY3t2EzoVT7shKHY1dlAy3f41cGIO7ZDPQimhGFTlEYkG/Hw== - -core-util-is@~1.0.0: +core-util-is@^1.0.3, core-util-is@~1.0.0: version "1.0.3" resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz" integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== @@ -5097,6 +5106,13 @@ debug@^3.1.0: dependencies: ms "^2.1.1" +debug@^4.3.7: + version "4.3.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.7.tgz#87945b4151a011d76d95a198d7111c865c360a52" + integrity sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ== + dependencies: + ms "^2.1.3" + decamelize@^1.2.0: version "1.2.0" resolved "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz" @@ -5763,7 +5779,7 @@ fast-deep-equal@^3.1.3: resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== -fast-glob@^3.2.5, fast-glob@^3.2.9, fast-glob@^3.3.0, fast-glob@^3.3.2: +fast-glob@^3.2.5, fast-glob@^3.2.9, fast-glob@^3.3.2: version "3.3.2" resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz" integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== @@ -6228,6 +6244,11 @@ has-flag@^4.0.0: resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== +has-own-prop@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-own-prop/-/has-own-prop-2.0.0.tgz#f0f95d58f65804f5d218db32563bb85b8e0417af" + integrity sha512-Pq0h+hvsVm6dDEa8x82GnLSYHOzNDt7f0ddFa3FqcQlgzEiptPqL+XrOJNavjOzSYiYWIrgeVYYgGlLmnxwilQ== + has-property-descriptors@^1.0.0, has-property-descriptors@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz" @@ -7249,9 +7270,9 @@ jimp-compact@0.16.1: resolved "https://registry.npmjs.org/jimp-compact/-/jimp-compact-0.16.1.tgz" integrity sha512-dZ6Ra7u1G8c4Letq/B5EzAxj4tLFHL+cGtdpR+PVm4yzPDj+lCk+AbivWt1eOM+ikzkowtyV7qSqX6qr3t71Ww== -jiti@^1.21.0: +jiti@^1.21.6: version "1.21.6" - resolved "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz" + resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.21.6.tgz#6c7f7398dd4b3142767f9a168af2f317a428d268" integrity sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w== joi@^17.2.1: @@ -7493,102 +7514,108 @@ lightningcss-darwin-arm64@1.19.0: resolved "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.19.0.tgz" integrity sha512-wIJmFtYX0rXHsXHSr4+sC5clwblEMji7HHQ4Ub1/CznVRxtCFha6JIt5JZaNf8vQrfdZnBxLLC6R8pC818jXqg== -lightningcss-darwin-arm64@1.22.0: - version "1.22.0" - resolved "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.22.0.tgz" - integrity sha512-aH2be3nNny+It5YEVm8tBSSdRlBVWQV8m2oJ7dESiYRzyY/E/bQUe2xlw5caaMuhlM9aoTMtOH25yzMhir0qPg== +lightningcss-darwin-arm64@1.28.2: + version "1.28.2" + resolved "https://registry.yarnpkg.com/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.28.2.tgz#a906fd84cb43d753cb5db9c367f8f38482e8fb03" + integrity sha512-/8cPSqZiusHSS+WQz0W4NuaqFjquys1x+NsdN/XOHb+idGHJSoJ7SoQTVl3DZuAgtPZwFZgRfb/vd1oi8uX6+g== lightningcss-darwin-x64@1.19.0: version "1.19.0" resolved "https://registry.yarnpkg.com/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.19.0.tgz#c867308b88859ba61a2c46c82b1ca52ff73a1bd0" integrity sha512-Lif1wD6P4poaw9c/4Uh2z+gmrWhw/HtXFoeZ3bEsv6Ia4tt8rOJBdkfVaUJ6VXmpKHALve+iTyP2+50xY1wKPw== -lightningcss-darwin-x64@1.22.0: - version "1.22.0" - resolved "https://registry.yarnpkg.com/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.22.0.tgz#1c5fe3e3ab31c9f1741f6d5d650ab683bd942854" - integrity sha512-9KHRFA0Y6mNxRHeoQMp0YaI0R0O2kOgUlYPRjuasU4d+pI8NRhVn9bt0yX9VPs5ibWX1RbDViSPtGJvYYrfVAQ== +lightningcss-darwin-x64@1.28.2: + version "1.28.2" + resolved "https://registry.yarnpkg.com/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.28.2.tgz#6c43249d4ae821416d0d78403eae56111d0c6a94" + integrity sha512-R7sFrXlgKjvoEG8umpVt/yutjxOL0z8KWf0bfPT3cYMOW4470xu5qSHpFdIOpRWwl3FKNMUdbKtMUjYt0h2j4g== -lightningcss-freebsd-x64@1.22.0: - version "1.22.0" - resolved "https://registry.yarnpkg.com/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.22.0.tgz#1ee7bcb68258b2cb1425bdc7ccb632233eae639c" - integrity sha512-xaYL3xperGwD85rQioDb52ozF3NAJb+9wrge3jD9lxGffplu0Mn35rXMptB8Uc2N9Mw1i3Bvl7+z1evlqVl7ww== +lightningcss-freebsd-x64@1.28.2: + version "1.28.2" + resolved "https://registry.yarnpkg.com/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.28.2.tgz#804bc6652c6721e94a92e7bbb5e65165376cf108" + integrity sha512-l2qrCT+x7crAY+lMIxtgvV10R8VurzHAoUZJaVFSlHrN8kRLTvEg9ObojIDIexqWJQvJcVVV3vfzsEynpiuvgA== lightningcss-linux-arm-gnueabihf@1.19.0: version "1.19.0" resolved "https://registry.yarnpkg.com/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.19.0.tgz#0f921dc45f2e5c3aea70fab98844ac0e5f2f81be" integrity sha512-P15VXY5682mTXaiDtbnLYQflc8BYb774j2R84FgDLJTN6Qp0ZjWEFyN1SPqyfTj2B2TFjRHRUvQSSZ7qN4Weig== -lightningcss-linux-arm-gnueabihf@1.22.0: - version "1.22.0" - resolved "https://registry.yarnpkg.com/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.22.0.tgz#1c4287ec7268dcee6d9dcccb3d0810ecdcd35b74" - integrity sha512-epQGvXIjOuxrZpMpMnRjK54ZqzhiHhCPLtHvw2fb6NeK2kK9YtF0wqmeTBiQ1AkbWfnnXGTstYaFNiadNK+StQ== +lightningcss-linux-arm-gnueabihf@1.28.2: + version "1.28.2" + resolved "https://registry.yarnpkg.com/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.28.2.tgz#c32595127b565690d854c9ff641831e4ad739ee1" + integrity sha512-DKMzpICBEKnL53X14rF7hFDu8KKALUJtcKdFUCW5YOlGSiwRSgVoRjM97wUm/E0NMPkzrTi/rxfvt7ruNK8meg== lightningcss-linux-arm64-gnu@1.19.0: version "1.19.0" resolved "https://registry.yarnpkg.com/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.19.0.tgz#027f9df9c7f4ffa127c37a71726245a5794d7ba2" integrity sha512-zwXRjWqpev8wqO0sv0M1aM1PpjHz6RVIsBcxKszIG83Befuh4yNysjgHVplF9RTU7eozGe3Ts7r6we1+Qkqsww== -lightningcss-linux-arm64-gnu@1.22.0: - version "1.22.0" - resolved "https://registry.yarnpkg.com/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.22.0.tgz#b8e6daee4a60020a4930fc3564669868e723a10d" - integrity sha512-AArGtKSY4DGTA8xP8SDyNyKtpsUl1Rzq6FW4JomeyUQ4nBrR71uPChksTpj3gmWuGhZeRKLeCUI1DBid/zhChg== +lightningcss-linux-arm64-gnu@1.28.2: + version "1.28.2" + resolved "https://registry.yarnpkg.com/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.28.2.tgz#85646f08c5efbfd7c94f8e5ed6392d5cf95fa42c" + integrity sha512-nhfjYkfymWZSxdtTNMWyhFk2ImUm0X7NAgJWFwnsYPOfmtWQEapzG/DXZTfEfMjSzERNUNJoQjPAbdqgB+sjiw== lightningcss-linux-arm64-musl@1.19.0: version "1.19.0" resolved "https://registry.yarnpkg.com/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.19.0.tgz#85ea987da868524eac6db94f8e1eaa23d0b688a3" integrity sha512-vSCKO7SDnZaFN9zEloKSZM5/kC5gbzUjoJQ43BvUpyTFUX7ACs/mDfl2Eq6fdz2+uWhUh7vf92c4EaaP4udEtA== -lightningcss-linux-arm64-musl@1.22.0: - version "1.22.0" - resolved "https://registry.yarnpkg.com/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.22.0.tgz#8d863a5470ee50369f13974325f2a3326b5f77df" - integrity sha512-RRraNgP8hnBPhInTTUdlFm+z16C/ghbxBG51Sw00hd7HUyKmEUKRozyc5od+/N6pOrX/bIh5vIbtMXIxsos0lg== +lightningcss-linux-arm64-musl@1.28.2: + version "1.28.2" + resolved "https://registry.yarnpkg.com/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.28.2.tgz#4d9bc20cf6de28c4d0c586d81c577891555ad831" + integrity sha512-1SPG1ZTNnphWvAv8RVOymlZ8BDtAg69Hbo7n4QxARvkFVCJAt0cgjAw1Fox0WEhf4PwnyoOBaVH0Z5YNgzt4dA== lightningcss-linux-x64-gnu@1.19.0: version "1.19.0" resolved "https://registry.yarnpkg.com/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.19.0.tgz#02bec89579ab4153dccc0def755d1fd9e3ee7f3c" integrity sha512-0AFQKvVzXf9byrXUq9z0anMGLdZJS+XSDqidyijI5njIwj6MdbvX2UZK/c4FfNmeRa2N/8ngTffoIuOUit5eIQ== -lightningcss-linux-x64-gnu@1.22.0: - version "1.22.0" - resolved "https://registry.yarnpkg.com/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.22.0.tgz#4798711d1897fe19fccd039640389c5049fb03fb" - integrity sha512-grdrhYGRi2KrR+bsXJVI0myRADqyA7ekprGxiuK5QRNkv7kj3Yq1fERDNyzZvjisHwKUi29sYMClscbtl+/Zpw== +lightningcss-linux-x64-gnu@1.28.2: + version "1.28.2" + resolved "https://registry.yarnpkg.com/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.28.2.tgz#74bd797d7157817c4e42ec45f1844a69636a9d82" + integrity sha512-ZhQy0FcO//INWUdo/iEdbefntTdpPVQ0XJwwtdbBuMQe+uxqZoytm9M+iqR9O5noWFaxK+nbS2iR/I80Q2Ofpg== lightningcss-linux-x64-musl@1.19.0: version "1.19.0" resolved "https://registry.yarnpkg.com/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.19.0.tgz#e36a5df8193ae961d22974635e4c100a1823bb8c" integrity sha512-SJoM8CLPt6ECCgSuWe+g0qo8dqQYVcPiW2s19dxkmSI5+Uu1GIRzyKA0b7QqmEXolA+oSJhQqCmJpzjY4CuZAg== -lightningcss-linux-x64-musl@1.22.0: - version "1.22.0" - resolved "https://registry.yarnpkg.com/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.22.0.tgz#1d34f5bf428b0d2d4550627e653231d33fda90f9" - integrity sha512-t5f90X+iQUtIyR56oXIHMBUyQFX/zwmPt72E6Dane3P8KNGlkijTg2I75XVQS860gNoEFzV7Mm5ArRRA7u5CAQ== +lightningcss-linux-x64-musl@1.28.2: + version "1.28.2" + resolved "https://registry.yarnpkg.com/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.28.2.tgz#13ce6db4c491ebbb93099d6427746ab7bff3774f" + integrity sha512-alb/j1NMrgQmSFyzTbN1/pvMPM+gdDw7YBuQ5VSgcFDypN3Ah0BzC2dTZbzwzaMdUVDszX6zH5MzjfVN1oGuww== + +lightningcss-win32-arm64-msvc@1.28.2: + version "1.28.2" + resolved "https://registry.yarnpkg.com/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.28.2.tgz#eaae12c4a58a545a3adf40b22ba9625e5c0ebd29" + integrity sha512-WnwcjcBeAt0jGdjlgbT9ANf30pF0C/QMb1XnLnH272DQU8QXh+kmpi24R55wmWBwaTtNAETZ+m35ohyeMiNt+g== lightningcss-win32-x64-msvc@1.19.0: version "1.19.0" resolved "https://registry.yarnpkg.com/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.19.0.tgz#0854dbd153035eca1396e2227c708ad43655a61c" integrity sha512-C+VuUTeSUOAaBZZOPT7Etn/agx/MatzJzGRkeV+zEABmPuntv1zihncsi+AyGmjkkzq3wVedEy7h0/4S84mUtg== -lightningcss-win32-x64-msvc@1.22.0: - version "1.22.0" - resolved "https://registry.yarnpkg.com/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.22.0.tgz#2fece601ea92298f73008bdf96ed0af8132d318f" - integrity sha512-64HTDtOOZE9PUCZJiZZQpyqXBbdby1lnztBccnqh+NtbKxjnGzP92R2ngcgeuqMPecMNqNWxgoWgTGpC+yN5Sw== +lightningcss-win32-x64-msvc@1.28.2: + version "1.28.2" + resolved "https://registry.yarnpkg.com/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.28.2.tgz#1f7c4474b2dc3dd1c12e22de32e4de23bdfa41e7" + integrity sha512-3piBifyT3avz22o6mDKywQC/OisH2yDK+caHWkiMsF82i3m5wDBadyCjlCQ5VNgzYkxrWZgiaxHDdd5uxsi0/A== -lightningcss@1.22.0: - version "1.22.0" - resolved "https://registry.npmjs.org/lightningcss/-/lightningcss-1.22.0.tgz" - integrity sha512-+z0qvwRVzs4XGRXelnWRNwqsXUx8k3bSkbP8vD42kYKSk3z9OM2P3e/gagT7ei/gwh8DTS80LZOFZV6lm8Z8Fg== +lightningcss@^1.27.0: + version "1.28.2" + resolved "https://registry.yarnpkg.com/lightningcss/-/lightningcss-1.28.2.tgz#cc26fad9ad64a621bd39ac6248095891cf584cce" + integrity sha512-ePLRrbt3fgjXI5VFZOLbvkLD5ZRuxGKm+wJ3ujCqBtL3NanDHPo/5zicR5uEKAPiIjBYF99BM4K4okvMznjkVA== dependencies: detect-libc "^1.0.3" optionalDependencies: - lightningcss-darwin-arm64 "1.22.0" - lightningcss-darwin-x64 "1.22.0" - lightningcss-freebsd-x64 "1.22.0" - lightningcss-linux-arm-gnueabihf "1.22.0" - lightningcss-linux-arm64-gnu "1.22.0" - lightningcss-linux-arm64-musl "1.22.0" - lightningcss-linux-x64-gnu "1.22.0" - lightningcss-linux-x64-musl "1.22.0" - lightningcss-win32-x64-msvc "1.22.0" + lightningcss-darwin-arm64 "1.28.2" + lightningcss-darwin-x64 "1.28.2" + lightningcss-freebsd-x64 "1.28.2" + lightningcss-linux-arm-gnueabihf "1.28.2" + lightningcss-linux-arm64-gnu "1.28.2" + lightningcss-linux-arm64-musl "1.28.2" + lightningcss-linux-x64-gnu "1.28.2" + lightningcss-linux-x64-musl "1.28.2" + lightningcss-win32-arm64-msvc "1.28.2" + lightningcss-win32-x64-msvc "1.28.2" lightningcss@~1.19.0: version "1.19.0" @@ -7648,11 +7675,6 @@ lodash.debounce@^4.0.8: resolved "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz" integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== -lodash.mergewith@^4.6.2: - version "4.6.2" - resolved "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz" - integrity sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ== - lodash.throttle@^4.1.1: version "4.1.1" resolved "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz" @@ -8004,7 +8026,7 @@ metro@0.80.10, metro@^0.80.3: ws "^7.5.10" yargs "^17.6.2" -micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5: +micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.8: version "4.0.8" resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz" integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== @@ -8049,11 +8071,6 @@ mimic-fn@^2.1.0: resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== -min-indent@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz" - integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== - minimatch@^3.0.2, minimatch@^3.0.4, minimatch@^3.1.1: version "3.1.2" resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" @@ -8158,7 +8175,7 @@ ms@2.1.2: resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -ms@2.1.3, ms@^2.1.1: +ms@2.1.3, ms@^2.1.1, ms@^2.1.3: version "2.1.3" resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== @@ -8177,12 +8194,14 @@ nanoid@^3.1.23, nanoid@^3.3.7: resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz" integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== -nativewind@4.0.36: - version "4.0.36" - resolved "https://registry.npmjs.org/nativewind/-/nativewind-4.0.36.tgz" - integrity sha512-nd0Xgjzaq0ISvUAjibZXcuSvvpX1BGX2mfOGBPZpjGfHL3By6fwLGsNhrKU6mi2FF30c+kdok3e2I4k/O0UO1Q== +nativewind@^4.1.23: + version "4.1.23" + resolved "https://registry.yarnpkg.com/nativewind/-/nativewind-4.1.23.tgz#badfa94a5cd2e12ff8971dd274d234cd843ca74e" + integrity sha512-oLX3suGI6ojQqWxdQezOSM5GmJ4KvMnMtmaSMN9Ggb5j7ysFt4nHxb1xs8RDjZR7BWc+bsetNJU8IQdQMHqRpg== dependencies: - react-native-css-interop "0.0.36" + comment-json "^4.2.5" + debug "^4.3.7" + react-native-css-interop "0.1.22" natural-compare@^1.4.0: version "1.4.0" @@ -8628,6 +8647,11 @@ picocolors@^1.0.0, picocolors@^1.0.1: resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz" integrity sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew== +picocolors@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" + integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== + picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.1: version "2.3.1" resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" @@ -8709,22 +8733,22 @@ postcss-js@^4.0.1: dependencies: camelcase-css "^2.0.1" -postcss-load-config@^4.0.1: +postcss-load-config@^4.0.2: version "4.0.2" - resolved "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz" + resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-4.0.2.tgz#7159dcf626118d33e299f485d6afe4aff7c4a3e3" integrity sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ== dependencies: lilconfig "^3.0.0" yaml "^2.3.4" -postcss-nested@^6.0.1: +postcss-nested@^6.2.0: version "6.2.0" - resolved "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz" + resolved "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-6.2.0.tgz#4c2d22ab5f20b9cb61e2c5c5915950784d068131" integrity sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ== dependencies: postcss-selector-parser "^6.1.1" -postcss-selector-parser@^6.0.11, postcss-selector-parser@^6.1.1: +postcss-selector-parser@^6.1.1, postcss-selector-parser@^6.1.2: version "6.1.2" resolved "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz" integrity sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg== @@ -8737,7 +8761,16 @@ postcss-value-parser@^4.0.0, postcss-value-parser@^4.2.0: resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz" integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== -postcss@^8.4.23, postcss@~8.4.32: +postcss@^8.4.47: + version "8.4.49" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.49.tgz#4ea479048ab059ab3ae61d082190fabfd994fe19" + integrity sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA== + dependencies: + nanoid "^3.3.7" + picocolors "^1.1.1" + source-map-js "^1.2.1" + +postcss@~8.4.32: version "8.4.44" resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.44.tgz" integrity sha512-Aweb9unOEpQ3ezu4Q00DPvvM2ZTUitJdNKeP/+uQgr1IBIqu574IaZoURId7BKtWMREwzKa9OgzPzezWGPWFQw== @@ -8746,11 +8779,6 @@ postcss@^8.4.23, postcss@~8.4.32: picocolors "^1.0.1" source-map-js "^1.2.0" -prettier@^2.8.3: - version "2.8.8" - resolved "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz" - integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== - pretty-bytes@5.6.0: version "5.6.0" resolved "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz" @@ -8937,16 +8965,17 @@ react-is@^17.0.1: resolved "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz" integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== -react-native-css-interop@0.0.36: - version "0.0.36" - resolved "https://registry.npmjs.org/react-native-css-interop/-/react-native-css-interop-0.0.36.tgz" - integrity sha512-ZWoKQlq6XrI5DB4BdPk5ABvJQsX7zls1SQYWuYXOQB8u5QE0KH3OfOGAGRZPekTjgkhjqGO4Bf8G2JTSWAYMSg== +react-native-css-interop@0.1.22: + version "0.1.22" + resolved "https://registry.yarnpkg.com/react-native-css-interop/-/react-native-css-interop-0.1.22.tgz#70cc6ca7a8f14126e123e44a19ceed74dd2a167a" + integrity sha512-Mu01e+H9G+fxSWvwtgWlF5MJBJC4VszTCBXopIpeR171lbeBInHb8aHqoqRPxmJpi3xIHryzqKFOJYAdk7PBxg== dependencies: "@babel/helper-module-imports" "^7.22.15" "@babel/traverse" "^7.23.0" "@babel/types" "^7.23.0" - babel-plugin-tester "^11.0.4" - lightningcss "1.22.0" + debug "^4.3.7" + lightningcss "^1.27.0" + semver "^7.6.3" react-native-helmet-async@2.0.4: version "2.0.4" @@ -8957,10 +8986,10 @@ react-native-helmet-async@2.0.4: react-fast-compare "^3.2.2" shallowequal "^1.1.0" -react-native-reanimated@latest: - version "3.15.1" - resolved "https://registry.npmjs.org/react-native-reanimated/-/react-native-reanimated-3.15.1.tgz" - integrity sha512-DbBeUUExtJ1x1nfE94I8qgDgWjq5ztM3IO/+XFO+agOkPeVpBs5cRnxHfJKrjqJ2MgwhJOUDmtHxo+tDsoeitg== +react-native-reanimated@^3.16.3: + version "3.16.3" + resolved "https://registry.yarnpkg.com/react-native-reanimated/-/react-native-reanimated-3.16.3.tgz#3b559dca49e9e40abcf5de834dc27fc05f856b66" + integrity sha512-OWlA6e1oHhytTpc7WiSZ7Tmb8OYwLKYZz29Sz6d6WAg60Hm5GuAiKIWUG7Ako7FLcYhFkA0pEQ2xPMEYUo9vlw== dependencies: "@babel/plugin-transform-arrow-functions" "^7.0.0-0" "@babel/plugin-transform-class-properties" "^7.0.0-0" @@ -8974,10 +9003,10 @@ react-native-reanimated@latest: convert-source-map "^2.0.0" invariant "^2.2.4" -react-native-safe-area-context@4.10.1: - version "4.10.1" - resolved "https://registry.npmjs.org/react-native-safe-area-context/-/react-native-safe-area-context-4.10.1.tgz" - integrity sha512-w8tCuowDorUkPoWPXmhqosovBr33YsukkwYCDERZFHAxIkx6qBadYxfeoaJ91nCQKjkNzGrK5qhoNOeSIcYSpA== +react-native-safe-area-context@^4.14.0: + version "4.14.0" + resolved "https://registry.yarnpkg.com/react-native-safe-area-context/-/react-native-safe-area-context-4.14.0.tgz#138f4b2e180cb7517c78bd5f4d4cf91325ba0b1a" + integrity sha512-/SyYpCulWQOnnXhRq6wepkhoyQMowHm1ptDyRz20s+YS/R9mbd+mK+jFyFCyXFJn8jp7vFl43VUCgspuOiEbwA== react-native-screens@3.31.1: version "3.31.1" @@ -8987,10 +9016,10 @@ react-native-screens@3.31.1: react-freeze "^1.0.0" warn-once "^0.1.0" -react-native-svg@^15.2.0: - version "15.6.0" - resolved "https://registry.npmjs.org/react-native-svg/-/react-native-svg-15.6.0.tgz" - integrity sha512-TUtR+h+yi1ODsd8FHdom1TpjfWOmnaK5pri5rnSBXnMqpzq8o2zZfonHTjPX+nS3wb/Pu2XsoARgYaHNjVWXhQ== +react-native-svg@^15.9.0: + version "15.9.0" + resolved "https://registry.yarnpkg.com/react-native-svg/-/react-native-svg-15.9.0.tgz#a742a63cb463502ce591fdfcf7b9e80544f0a8c2" + integrity sha512-pwo7hteAM0P8jNpPGQtiSd0SnbBhE8tNd94LT8AcZcbnH5AJdXBIcXU4+tWYYeGUjiNAH2E5d0T5XIfnvaz1gA== dependencies: css-select "^5.1.0" css-tree "^1.1.3" @@ -9280,6 +9309,11 @@ remove-trailing-slash@^0.1.0: resolved "https://registry.npmjs.org/remove-trailing-slash/-/remove-trailing-slash-0.1.1.tgz" integrity sha512-o4S4Qh6L2jpnCy83ysZDau+VORNvnFw07CKSAymkd6ICNVEPisMyzlc00KlvvicsxKck94SEwhDnMNdICzO+tA== +repeat-string@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + integrity sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w== + require-directory@^2.1.1: version "2.1.1" resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz" @@ -9494,7 +9528,7 @@ semver@^6.3.0, semver@^6.3.1: resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@^7.1.3, semver@^7.3.5, semver@^7.5.2, semver@^7.5.3, semver@^7.5.4, semver@^7.6.0: +semver@^7.1.3, semver@^7.3.5, semver@^7.5.2, semver@^7.5.3, semver@^7.5.4, semver@^7.6.0, semver@^7.6.3: version "7.6.3" resolved "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz" integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== @@ -9691,6 +9725,11 @@ source-map-js@^1.2.0: resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz" integrity sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg== +source-map-js@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46" + integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA== + source-map-support@0.5.13: version "0.5.13" resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz" @@ -9936,13 +9975,6 @@ strip-final-newline@^2.0.0: resolved "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz" integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== -strip-indent@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz" - integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== - dependencies: - min-indent "^1.0.0" - strip-json-comments@^2.0.0, strip-json-comments@~2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz" @@ -9981,9 +10013,9 @@ sucrase@3.34.0: pirates "^4.0.1" ts-interface-checker "^0.1.9" -sucrase@^3.32.0: +sucrase@^3.35.0: version "3.35.0" - resolved "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz" + resolved "https://registry.yarnpkg.com/sucrase/-/sucrase-3.35.0.tgz#57f17a3d7e19b36d8995f06679d121be914ae263" integrity sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA== dependencies: "@jridgewell/gen-mapping" "^0.3.2" @@ -10060,33 +10092,33 @@ tailwind-variants@0.1.20: dependencies: tailwind-merge "^1.14.0" -tailwindcss@3.4.3: - version "3.4.3" - resolved "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.3.tgz" - integrity sha512-U7sxQk/n397Bmx4JHbJx/iSOOv5G+II3f1kpLpY2QeUv5DcPdcTsYLlusZfq1NthHS1c1cZoyFmmkex1rzke0A== +tailwindcss@^3.4.15: + version "3.4.15" + resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.4.15.tgz#04808bf4bf1424b105047d19e7d4bfab368044a9" + integrity sha512-r4MeXnfBmSOuKUWmXe6h2CcyfzJCEk4F0pptO5jlnYSIViUkVmsawj80N5h2lO3gwcmSb4n3PuN+e+GC1Guylw== dependencies: "@alloc/quick-lru" "^5.2.0" arg "^5.0.2" - chokidar "^3.5.3" + chokidar "^3.6.0" didyoumean "^1.2.2" dlv "^1.1.3" - fast-glob "^3.3.0" + fast-glob "^3.3.2" glob-parent "^6.0.2" is-glob "^4.0.3" - jiti "^1.21.0" + jiti "^1.21.6" lilconfig "^2.1.0" - micromatch "^4.0.5" + micromatch "^4.0.8" normalize-path "^3.0.0" object-hash "^3.0.0" - picocolors "^1.0.0" - postcss "^8.4.23" + picocolors "^1.1.1" + postcss "^8.4.47" postcss-import "^15.1.0" postcss-js "^4.0.1" - postcss-load-config "^4.0.1" - postcss-nested "^6.0.1" - postcss-selector-parser "^6.0.11" - resolve "^1.22.2" - sucrase "^3.32.0" + postcss-load-config "^4.0.2" + postcss-nested "^6.2.0" + postcss-selector-parser "^6.1.2" + resolve "^1.22.8" + sucrase "^3.35.0" tar@^6.0.5, tar@^6.1.11: version "6.2.1" @@ -10372,10 +10404,10 @@ typedarray.prototype.slice@^1.0.3: typed-array-buffer "^1.0.2" typed-array-byte-offset "^1.0.2" -typescript@^4.9.4: - version "4.9.5" - resolved "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz" - integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== +typescript@^5.6.3: + version "5.7.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.7.2.tgz#3169cf8c4c8a828cde53ba9ecb3d2b1d5dd67be6" + integrity sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg== typescript@~5.3.3: version "5.3.3" diff --git a/next/app/layout.tsx b/next/app/layout.tsx index 1f9d0cfd..f98e8707 100644 --- a/next/app/layout.tsx +++ b/next/app/layout.tsx @@ -1,6 +1,6 @@ "use client"; - import { Inter } from "next/font/google"; +import "@/styles/global.css"; import StyledJsxRegistry from "./registry"; import { GluestackUIProvider } from "@/components/ui/gluestack-ui-provider"; diff --git a/next/app/registry.tsx b/next/app/registry.tsx index 470bc580..53996dce 100644 --- a/next/app/registry.tsx +++ b/next/app/registry.tsx @@ -1,14 +1,12 @@ -"use client"; +'use client'; -import "../styles/global.css"; -import React, { useRef, useState } from "react"; -import { useServerInsertedHTML } from "next/navigation"; -import { StyleRegistry, createStyleRegistry } from "styled-jsx"; -// eslint-disable-next-line @next/next/no-document-import-in-page -import { Main } from "next/document"; -import { flush } from "@gluestack-ui/nativewind-utils/flush"; +import React, { useRef, useState } from 'react'; +import { useServerInsertedHTML } from 'next/navigation'; +import { StyleRegistry, createStyleRegistry } from 'styled-jsx'; +import { Main } from 'next/document'; // @ts-ignore -import { AppRegistry } from "react-native-web"; +import { AppRegistry } from 'react-native-web'; +import { flush } from '@gluestack-ui/nativewind-utils/flush'; export default function StyledJsxRegistry({ children, @@ -21,8 +19,8 @@ export default function StyledJsxRegistry({ const isServerInserted = useRef(false); useServerInsertedHTML(() => { - AppRegistry.registerComponent("Main", () => Main); - const { getStyleElement } = AppRegistry.getApplication("Main"); + AppRegistry.registerComponent('Main', () => Main); + const { getStyleElement } = AppRegistry.getApplication('Main'); if (!isServerInserted.current) { isServerInserted.current = true; const styles = [getStyleElement(), jsxStyleRegistry.styles(), flush()]; diff --git a/next/components/ui/accordion/index.tsx b/next/components/ui/accordion/index.tsx index ca4711a7..7dbe6f8f 100644 --- a/next/components/ui/accordion/index.tsx +++ b/next/components/ui/accordion/index.tsx @@ -1,7 +1,6 @@ 'use client'; -import React, { useMemo } from 'react'; +import React from 'react'; import { createAccordion } from '@gluestack-ui/accordion'; -import { Svg } from 'react-native-svg'; import { View, Pressable, Text, Platform, TextProps } from 'react-native'; import { tva } from '@gluestack-ui/nativewind-utils/tva'; import type { VariantProps } from '@gluestack-ui/nativewind-utils'; @@ -9,9 +8,9 @@ import { withStyleContext, useStyleContext, } from '@gluestack-ui/nativewind-utils/withStyleContext'; -import { withStyleContextAndStates } from '@gluestack-ui/nativewind-utils/withStyleContextAndStates'; import { H3 } from '@expo/html-elements'; import { cssInterop } from 'nativewind'; +import { PrimitiveIcon, UIIcon } from '@gluestack-ui/icon'; const SCOPE = 'ACCORDION'; /** Styles */ @@ -30,7 +29,9 @@ const accordionStyle = tva({ }, }, }); + const accordionItemStyle = tva({ + base: '', parentVariants: { variant: { filled: 'bg-background-0', @@ -65,7 +66,7 @@ const accordionContentTextStyle = tva({ base: 'text-typography-700 font-normal', parentVariants: { size: { - sm: 'text-sm ', + sm: 'text-sm', md: 'text-base', lg: 'text-lg', }, @@ -75,79 +76,13 @@ const accordionHeaderStyle = tva({ base: 'mx-0 my-0', }); const accordionContentStyle = tva({ - base: 'px-5 mt-2 pb-5', + base: 'mt-4', }); const accordionTriggerStyle = tva({ - base: 'w-full py-5 px-5 flex-row justify-between items-center web:outline-none focus:outline-none data-[disabled=true]:opacity-40 data-[disabled=true]:cursor-not-allowed data-[focus-visible=true]:bg-background-50', + base: 'w-full flex-row justify-between items-center web:outline-none focus:outline-none data-[disabled=true]:opacity-40 data-[disabled=true]:cursor-not-allowed data-[focus-visible=true]:bg-background-50 py-3 px-4', }); -type IPrimitiveIcon = { - height?: number | string; - width?: number | string; - fill?: string; - color?: string; - size?: number | string; - stroke?: string; - as?: React.ElementType; - className?: string; -}; - -const PrimitiveIcon = React.forwardRef< - React.ElementRef, - IPrimitiveIcon & React.ComponentPropsWithoutRef ->( - ( - { - height, - width, - fill, - color, - size, - stroke = 'currentColor', - as: AsComp, - ...props - }, - ref - ) => { - const sizeProps = useMemo(() => { - if (size) return { size }; - if (height && width) return { height, width }; - if (height) return { height }; - if (width) return { width }; - return {}; - }, [size, height, width]); - - const colorProps = - stroke === 'currentColor' && color !== undefined ? color : stroke; - - if (AsComp) { - return ( - - ); - } - return ( - - ); - } -); - -const Root = - Platform.OS === 'web' - ? withStyleContext(View, SCOPE) - : withStyleContextAndStates(View, SCOPE); +const Root = withStyleContext(View, SCOPE); const Header = ( Platform.OS === 'web' ? H3 : View @@ -159,30 +94,20 @@ const UIAccordion = createAccordion({ Item: View, Header: Header, Trigger: Pressable, - Icon: PrimitiveIcon, + Icon: UIIcon, TitleText: Text, ContentText: Text, Content: View, }); -cssInterop(UIAccordion, { className: 'style' }); -cssInterop(UIAccordion.Item, { className: 'style' }); -cssInterop(UIAccordion.Header, { className: 'style' }); -cssInterop(UIAccordion.Trigger, { className: 'style' }); -cssInterop(UIAccordion.Icon, { className: 'style' }); -cssInterop(UIAccordion.TitleText, { className: 'style' }); -cssInterop(UIAccordion.Content, { className: 'style' }); -cssInterop(UIAccordion.ContentText, { className: 'style' }); -// @ts-ignore -cssInterop(UIAccordion.Icon, { +cssInterop(PrimitiveIcon, { className: { target: 'style', nativeStyleToProp: { height: true, width: true, - // @ts-ignore fill: true, - color: true, + color: 'classNameColor', stroke: true, }, }, diff --git a/next/components/ui/actionsheet/index.tsx b/next/components/ui/actionsheet/index.tsx index e80735b9..0dc14763 100644 --- a/next/components/ui/actionsheet/index.tsx +++ b/next/components/ui/actionsheet/index.tsx @@ -1,7 +1,6 @@ 'use client'; -import React, { useMemo } from 'react'; +import React from 'react'; import { H4 } from '@expo/html-elements'; -import { Svg } from 'react-native-svg'; import { createActionsheet } from '@gluestack-ui/actionsheet'; import { Pressable, @@ -11,13 +10,11 @@ import { VirtualizedList, FlatList, SectionList, - Platform, PressableProps, } from 'react-native'; - +import { PrimitiveIcon, UIIcon } from '@gluestack-ui/icon'; import { tva } from '@gluestack-ui/nativewind-utils/tva'; import type { VariantProps } from '@gluestack-ui/nativewind-utils'; -import { withStates } from '@gluestack-ui/nativewind-utils/withStates'; import { cssInterop } from 'nativewind'; import { Motion, @@ -25,68 +22,6 @@ import { createMotionAnimatedComponent, } from '@legendapp/motion'; -type IPrimitiveIcon = { - height?: number | string; - width?: number | string; - fill?: string; - color?: string; - size?: number | string; - stroke?: string; - as?: React.ElementType; - className?: string; -}; -const PrimitiveIcon = React.forwardRef< - React.ElementRef, - IPrimitiveIcon & React.ComponentPropsWithoutRef ->( - ( - { - height, - width, - fill, - color, - size, - stroke = 'currentColor', - as: AsComp, - ...props - }, - ref - ) => { - const sizeProps = useMemo(() => { - if (size) return { size }; - if (height && width) return { height, width }; - if (height) return { height }; - if (width) return { width }; - return {}; - }, [size, height, width]); - - const colorProps = - stroke === 'currentColor' && color !== undefined ? color : stroke; - - if (AsComp) { - return ( - - ); - } - return ( - - ); - } -); - const ItemWrapper = React.forwardRef< React.ElementRef, PressableProps @@ -99,7 +34,7 @@ const AnimatedPressable = createMotionAnimatedComponent(Pressable); export const UIActionsheet = createActionsheet({ Root: View, Content: Motion.View, - Item: Platform.OS === 'web' ? ItemWrapper : withStates(ItemWrapper), + Item: ItemWrapper, ItemText: Text, DragIndicator: View, IndicatorWrapper: View, @@ -109,7 +44,7 @@ export const UIActionsheet = createActionsheet({ FlatList: FlatList, SectionList: SectionList, SectionHeaderText: H4, - Icon: PrimitiveIcon, + Icon: UIIcon, AnimatePresence: AnimatePresence, }); @@ -142,15 +77,15 @@ cssInterop(UIActionsheet.FlatList, { }); cssInterop(UIActionsheet.SectionList, { className: 'style' }); cssInterop(UIActionsheet.SectionHeaderText, { className: 'style' }); -cssInterop(UIActionsheet.Icon, { + +cssInterop(PrimitiveIcon, { className: { target: 'style', nativeStyleToProp: { height: true, width: true, - // @ts-ignore fill: true, - color: true, + color: 'classNameColor', stroke: true, }, }, diff --git a/next/components/ui/alert-dialog/index.tsx b/next/components/ui/alert-dialog/index.tsx index 457db9c6..2bd63535 100644 --- a/next/components/ui/alert-dialog/index.tsx +++ b/next/components/ui/alert-dialog/index.tsx @@ -6,7 +6,7 @@ import { withStyleContext, useStyleContext, } from '@gluestack-ui/nativewind-utils/withStyleContext'; -import { withStyleContextAndStates } from '@gluestack-ui/nativewind-utils/withStyleContextAndStates'; + import { cssInterop } from 'nativewind'; import type { VariantProps } from '@gluestack-ui/nativewind-utils'; import { @@ -14,17 +14,14 @@ import { AnimatePresence, createMotionAnimatedComponent, } from '@legendapp/motion'; -import { View, Pressable, ScrollView, Platform } from 'react-native'; +import { View, Pressable, ScrollView } from 'react-native'; const AnimatedPressable = createMotionAnimatedComponent(Pressable); const SCOPE = 'ALERT_DIALOG'; const UIAccessibleAlertDialog = createAlertDialog({ - Root: - Platform.OS === 'web' - ? withStyleContext(View, SCOPE) - : withStyleContextAndStates(View, SCOPE), + Root: withStyleContext(View, SCOPE), Body: ScrollView, Content: Motion.View, CloseButton: Pressable, @@ -34,17 +31,8 @@ const UIAccessibleAlertDialog = createAlertDialog({ AnimatePresence: AnimatePresence, }); -cssInterop(UIAccessibleAlertDialog, { className: 'style' }); -cssInterop(UIAccessibleAlertDialog.Content, { className: 'style' }); -cssInterop(UIAccessibleAlertDialog.CloseButton, { className: 'style' }); -cssInterop(UIAccessibleAlertDialog.Header, { className: 'style' }); -cssInterop(UIAccessibleAlertDialog.Footer, { className: 'style' }); -cssInterop(UIAccessibleAlertDialog.Body, { - className: 'style', - contentContainerClassName: 'contentContainerStyle', - indicatorClassName: 'indicatorStyle', -}); -cssInterop(UIAccessibleAlertDialog.Backdrop, { className: 'style' }); +cssInterop(Motion.View, { className: 'style' }); +cssInterop(AnimatedPressable, { className: 'style' }); const alertDialogStyle = tva({ base: 'group/modal w-full h-full justify-center items-center web:pointer-events-none', diff --git a/next/components/ui/alert/index.tsx b/next/components/ui/alert/index.tsx index f98aceb9..90a2dfe9 100644 --- a/next/components/ui/alert/index.tsx +++ b/next/components/ui/alert/index.tsx @@ -6,10 +6,10 @@ import { withStyleContext, useStyleContext, } from '@gluestack-ui/nativewind-utils/withStyleContext'; -import React, { useMemo } from 'react'; -import { Svg } from 'react-native-svg'; +import React from 'react'; import { cssInterop } from 'nativewind'; import type { VariantProps } from '@gluestack-ui/nativewind-utils'; +import { PrimitiveIcon, UIIcon } from '@gluestack-ui/icon'; const SCOPE = 'ALERT'; @@ -33,7 +33,7 @@ const alertStyle = tva({ }); const alertTextStyle = tva({ - base: 'flex-1 font-normal font-body', + base: 'font-normal font-body', variants: { isTruncated: { @@ -100,77 +100,25 @@ const alertIconStyle = tva({ warning: 'text-warning-800', success: 'text-success-800', info: 'text-info-800', - muted: 'text-secondary-800', + muted: 'text-background-800', }, }, }); -type IPrimitiveIcon = React.ComponentPropsWithoutRef & { - height?: number | string; - width?: number | string; - fill?: string; - color?: string; - size?: number | string; - stroke?: string; - as?: React.ElementType; - className?: string; -}; - -const PrimitiveIcon = React.forwardRef< - React.ElementRef, - IPrimitiveIcon ->(({ height, width, fill, color, size, stroke, as: AsComp, ...props }, ref) => { - const sizeProps = useMemo(() => { - if (size) return { size }; - if (height && width) return { height, width }; - if (height) return { height }; - if (width) return { width }; - return {}; - }, [size, height, width]); - - let colorProps = {}; - if (color) { - colorProps = { ...colorProps, color: color }; - } - if (stroke) { - colorProps = { ...colorProps, stroke: stroke }; - } - if (fill) { - colorProps = { ...colorProps, fill: fill }; - } - if (AsComp) { - return ; - } - return ( - - ); -}); - -const IconWrapper = React.forwardRef< - React.ElementRef, - IPrimitiveIcon ->(({ ...props }, ref) => { - return ; -}); - export const UIAlert = createAlert({ Root: withStyleContext(View, SCOPE), Text: Text, - Icon: IconWrapper, + Icon: UIIcon, }); -cssInterop(UIAlert, { className: 'style' }); -//@ts-ignore -cssInterop(UIAlert.Text, { className: 'style' }); -cssInterop(IconWrapper, { +cssInterop(PrimitiveIcon, { className: { target: 'style', nativeStyleToProp: { height: true, width: true, - // @ts-ignore fill: true, - color: true, + color: 'classNameColor', stroke: true, }, }, diff --git a/next/components/ui/avatar/index.tsx b/next/components/ui/avatar/index.tsx index 31fcbdd1..b6863aa1 100644 --- a/next/components/ui/avatar/index.tsx +++ b/next/components/ui/avatar/index.tsx @@ -9,7 +9,6 @@ import { withStyleContext, useStyleContext, } from '@gluestack-ui/nativewind-utils/withStyleContext'; -import { cssInterop } from 'nativewind'; const SCOPE = 'AVATAR'; import type { VariantProps } from '@gluestack-ui/nativewind-utils'; @@ -21,12 +20,6 @@ const UIAvatar = createAvatar({ FallbackText: Text, }); -cssInterop(UIAvatar, { className: 'style' }); -cssInterop(UIAvatar.Badge, { className: 'style' }); -cssInterop(UIAvatar.Group, { className: 'style' }); -cssInterop(UIAvatar.Image, { className: 'style' }); -cssInterop(UIAvatar.FallbackText, { className: 'style' }); - const avatarStyle = tva({ base: 'rounded-full justify-center items-center relative bg-primary-600 group-[.avatar-group]/avatar-group:-ml-2.5', variants: { @@ -161,10 +154,11 @@ export const AvatarImage = React.forwardRef< className={avatarImageStyle({ class: className, })} - // @ts-ignore + // @ts-expect-error style={ Platform.OS === 'web' - ? { height: 'revert-layer', width: 'revert-layer' } + ? // eslint-disable-next-line react-native/no-inline-styles + { height: 'revert-layer', width: 'revert-layer' } : undefined } /> diff --git a/next/components/ui/badge/index.tsx b/next/components/ui/badge/index.tsx index 42bf6016..6363a340 100644 --- a/next/components/ui/badge/index.tsx +++ b/next/components/ui/badge/index.tsx @@ -1,7 +1,7 @@ 'use client'; -import React, { useMemo } from 'react'; +import React from 'react'; import { Text, View } from 'react-native'; -import { Svg } from 'react-native-svg'; +import { PrimitiveIcon, UIIcon } from '@gluestack-ui/icon'; import { tva } from '@gluestack-ui/nativewind-utils/tva'; import { withStyleContext, @@ -42,7 +42,7 @@ const badgeTextStyle = tva({ warning: 'text-warning-600', success: 'text-success-600', info: 'text-info-600', - muted: 'text-secondary-600', + muted: 'text-background-800', }, size: { sm: 'text-2xs', @@ -83,7 +83,7 @@ const badgeIconStyle = tva({ warning: 'text-warning-600', success: 'text-success-600', info: 'text-info-600', - muted: 'text-secondary-600', + muted: 'text-background-800', }, size: { sm: 'h-3 w-3', @@ -93,58 +93,17 @@ const badgeIconStyle = tva({ }, }); -type IPrimitiveIcon = React.ComponentPropsWithoutRef & { - height?: number | string; - width?: number | string; - fill?: string; - color?: string; - size?: number | string; - stroke?: string; - as?: React.ElementType; - className?: string; -}; - -const PrimitiveIcon = React.forwardRef< - React.ElementRef, - IPrimitiveIcon ->(({ height, width, fill, color, size, stroke, as: AsComp, ...props }, ref) => { - const sizeProps = useMemo(() => { - if (size) return { size }; - if (height && width) return { height, width }; - if (height) return { height }; - if (width) return { width }; - return {}; - }, [size, height, width]); - - let colorProps = {}; - if (color) { - colorProps = { ...colorProps, color: color }; - } - if (stroke) { - colorProps = { ...colorProps, stroke: stroke }; - } - if (fill) { - colorProps = { ...colorProps, fill: fill }; - } - if (AsComp) { - return ; - } - return ( - - ); -}); - const ContextView = withStyleContext(View, SCOPE); -cssInterop(ContextView, { className: 'style' }); + cssInterop(PrimitiveIcon, { className: { target: 'style', nativeStyleToProp: { height: true, width: true, - // @ts-ignore + //@ts-expect-error fill: true, - color: true, + color: 'classNameColor', stroke: true, }, }, @@ -154,7 +113,7 @@ type IBadgeProps = React.ComponentPropsWithoutRef & VariantProps; const Badge = ({ children, - action = 'info', + action = 'muted', variant = 'solid', size = 'md', className, @@ -205,14 +164,14 @@ type IBadgeIconProps = React.ComponentPropsWithoutRef & VariantProps; const BadgeIcon = React.forwardRef< - React.ElementRef, + React.ElementRef, IBadgeIconProps >(({ className, size, ...props }, ref) => { const { size: parentSize, action: parentAction } = useStyleContext(SCOPE); if (typeof size === 'number') { return ( - ); } else if ( - (props.height !== undefined || props.width !== undefined) && + (props?.height !== undefined || props?.width !== undefined) && size === undefined ) { return ( - ; - handleClose: () => void; - handleOpen: () => void; -}>({ - visible: false, - bottomSheetRef: { current: null }, - handleClose: () => {}, - handleOpen: () => {}, -}); - -type IBottomSheetProps = React.ComponentProps; -export const BottomSheet = ({ - snapToIndex = 1, - onOpen, - onClose, - ...props -}: { - snapToIndex?: number; - children?: React.ReactNode; - onOpen?: () => void; - onClose?: () => void; -}) => { - const bottomSheetRef = useRef(null); - - const [visible, setVisible] = useState(false); - - const handleOpen = useCallback(() => { - bottomSheetRef.current?.snapToIndex(snapToIndex); - setVisible(true); - onOpen && onOpen(); - }, [onOpen, snapToIndex]); - - const handleClose = useCallback(() => { - bottomSheetRef.current?.close(); - setVisible(false); - onClose && onClose(); - }, [onClose]); - - return ( - - {props.children} - - ); -}; - -export const BottomSheetPortal = ({ - snapPoints, - handleComponent: DragIndicator, - backdropComponent: BackDrop, - ...props -}: Partial & { - defaultIsOpen?: boolean; - snapToIndex?: number; - snapPoints: string[]; -}) => { - const { bottomSheetRef, handleClose } = useContext(BottomSheetContext); - - const handleSheetChanges = useCallback( - (index: number) => { - if (index === 0 || index === -1) { - handleClose(); - } - }, - [handleClose] - ); - - return ( - - {props.children} - - ); -}; - -export const BottomSheetTrigger = ({ - className, - ...props -}: PressableProps & { className?: string }) => { - const { handleOpen } = useContext(BottomSheetContext); - return ( - { - props.onPress && props.onPress(e); - handleOpen(); - }} - {...props} - className={bottomSheetTriggerStyle({ - className: className, - })} - > - {props.children} - - ); -}; -type IBottomSheetBackdrop = React.ComponentProps< - typeof GorhomBottomSheetBackdrop ->; - -export const BottomSheetBackdrop = ({ - disappearsOnIndex = -1, - appearsOnIndex = 1, - className, - ...props -}: Partial & { className?: string }) => { - return ( - - ); -}; - -cssInterop(GorhomBottomSheetBackdrop, { className: 'style' }); - -type IBottomSheetDragIndicator = React.ComponentProps; - -export const BottomSheetDragIndicator = ({ - children, - className, - ...props -}: Partial & { className?: string }) => { - return ( - - {children} - - ); -}; - -cssInterop(BottomSheetHandle, { className: 'style' }); - -type IBottomSheetContent = React.ComponentProps; - -export const BottomSheetContent = ({ ...props }: IBottomSheetContent) => { - const { handleClose, visible } = useContext(BottomSheetContext); - const keyDownHandlers = useMemo(() => { - return Platform.OS === 'web' - ? { - onKeyDown: (e: React.KeyboardEvent) => { - if (e.key === 'Escape') { - e.preventDefault(); - handleClose(); - return; - } - }, - } - : {}; - }, [handleClose]); - - if (Platform.OS === 'web') - return ( - - {visible && ( - - {props.children} - - )} - - ); - - return ( - - {props.children} - - ); -}; - -cssInterop(GorhomBottomSheetView, { className: 'style' }); - -export const BottomSheetItem = ({ - children, - className, - closeOnSelect = true, - ...props -}: PressableProps & { - closeOnSelect?: boolean; -}) => { - const { handleClose } = useContext(BottomSheetContext); - return ( - { - if (closeOnSelect) { - handleClose(); - } - props.onPress && props.onPress(e); - }} - role="button" - > - {children} - - ); -}; - -export const BottomSheetItemText = ({ ...props }: TextProps) => { - return ; -}; - -export const BottomSheetScrollView = GorhomBottomSheetScrollView; -export const BottomSheetFlatList = GorhomBottomSheetFlatList; -export const BottomSheetSectionList = GorhomBottomSheetSectionList; -export const BottomSheetTextInput = GorhomBottomSheetInput; - -cssInterop(GorhomBottomSheetInput, { className: 'style' }); -cssInterop(GorhomBottomSheetScrollView, { className: 'style' }); -cssInterop(GorhomBottomSheetFlatList, { className: 'style' }); -cssInterop(GorhomBottomSheetSectionList, { className: 'style' }); diff --git a/next/components/ui/button/index.tsx b/next/components/ui/button/index.tsx index 8000ba10..7d7802ee 100644 --- a/next/components/ui/button/index.tsx +++ b/next/components/ui/button/index.tsx @@ -1,257 +1,296 @@ -'use client'; -import React, { useMemo } from 'react'; -import { createButton } from '@gluestack-ui/button'; -import { Svg } from 'react-native-svg'; -import { tva } from '@gluestack-ui/nativewind-utils/tva'; +"use client"; +import React from "react"; +import { createButton } from "@gluestack-ui/button"; +import { tva } from "@gluestack-ui/nativewind-utils/tva"; import { withStyleContext, useStyleContext, -} from '@gluestack-ui/nativewind-utils/withStyleContext'; -import { withStyleContextAndStates } from '@gluestack-ui/nativewind-utils/withStyleContextAndStates'; -import { cssInterop } from 'nativewind'; -import type { VariantProps } from '@gluestack-ui/nativewind-utils'; +} from "@gluestack-ui/nativewind-utils/withStyleContext"; +import { cssInterop } from "nativewind"; +import { ActivityIndicator, Pressable, Text, View } from "react-native"; +import type { VariantProps } from "@gluestack-ui/nativewind-utils"; +import { PrimitiveIcon, UIIcon } from "@gluestack-ui/icon"; -import { - ActivityIndicator, - Pressable, - Text, - View, - Platform, -} from 'react-native'; - -const PrimitiveIcon = React.forwardRef( - ( - { height, width, fill = 'none', color, size, as: AsComp, ...props }: any, - ref?: any - ) => { - const sizeProps = useMemo(() => { - return size ? { size } : { height, width }; - }, [size, height, width]); - - if (AsComp) { - return ( - - ); - } - return ( - - ); - } -); +const SCOPE = "BUTTON"; -const SCOPE = 'BUTTON'; -const Root = - Platform.OS === 'web' - ? withStyleContext(Pressable, SCOPE) - : withStyleContextAndStates(Pressable, SCOPE); +const Root = withStyleContext(Pressable, SCOPE); const UIButton = createButton({ Root: Root, Text, Group: View, Spinner: ActivityIndicator, - Icon: PrimitiveIcon, + Icon: UIIcon, }); -cssInterop(UIButton, { className: 'style' }); -cssInterop(UIButton.Text, { className: 'style' }); -cssInterop(UIButton.Group, { className: 'style' }); -cssInterop(UIButton.Spinner, { className: 'style' }); -cssInterop(UIButton.Icon, { +cssInterop(PrimitiveIcon, { className: { - target: 'style', + target: "style", nativeStyleToProp: { - height: 'height', - width: 'width', - //@ts-ignore - fill: 'fill', - color: 'color', + height: true, + width: true, + fill: true, + color: "classNameColor", + stroke: true, }, }, }); const buttonStyle = tva({ - base: 'group/button rounded bg-primary-500 flex-row items-center justify-center data-[focus-visible=true]:web:outline-none data-[focus-visible=true]:web:ring-2 data-[disabled=true]:opacity-40', + base: "group/button rounded bg-primary-500 flex-row items-center justify-center data-[focus-visible=true]:web:outline-none data-[focus-visible=true]:web:ring-2 data-[disabled=true]:opacity-40 gap-2", variants: { action: { primary: - 'bg-primary-500 hover:bg-primary-600 active:bg-primary-700 border-primary-300 hover:border-primary-400 active:border-primary-500 data-[focus-visible=true]:web:ring-primary-300', + "bg-primary-500 data-[hover=true]:bg-primary-600 data-[active=true]:bg-primary-700 border-primary-300 data-[hover=true]:border-primary-400 data-[active=true]:border-primary-500 data-[focus-visible=true]:web:ring-indicator-info", secondary: - 'bg-secondary-500 border-secondary-300 hover:bg-secondary-600 hover:border-secondary-400 active:bg-secondary-700 active:border-secondary-500 data-[focus-visible=true]:web:ring-secondary-300', + "bg-secondary-500 border-secondary-300 data-[hover=true]:bg-secondary-600 data-[hover=true]:border-secondary-400 data-[active=true]:bg-secondary-700 data-[active=true]:border-secondary-700 data-[focus-visible=true]:web:ring-indicator-info", positive: - 'bg-success-500 border-success-300 hover:bg-success-600 hover:border-success-400 active:bg-success-700 active:border-success-500 data-[focus-visible=true]:web:ring-success-300', + "bg-success-500 border-success-300 data-[hover=true]:bg-success-600 data-[hover=true]:border-success-400 data-[active=true]:bg-success-700 data-[active=true]:border-success-500 data-[focus-visible=true]:web:ring-indicator-info", negative: - 'bg-error-500 border-error-300 hover:bg-error-600 hover:border-error-400 active:bg-error-700 active:border-error-500 data-[focus-visible=true]:web:ring-error-300', - default: 'bg-transparent hover:bg-background-50 active:bg-transparent', + "bg-error-500 border-error-300 data-[hover=true]:bg-error-600 data-[hover=true]:border-error-400 data-[active=true]:bg-error-700 data-[active=true]:border-error-500 data-[focus-visible=true]:web:ring-indicator-info", + default: + "bg-transparent data-[hover=true]:bg-background-50 data-[active=true]:bg-transparent", }, variant: { - link: 'px-0', + link: "px-0", outline: - 'bg-transparent border hover:bg-background-50 active:bg-transparent', - solid: '', + "bg-transparent border data-[hover=true]:bg-background-50 data-[active=true]:bg-transparent", + solid: "", }, size: { - xs: 'px-3.5 h-8', - sm: 'px-4 h-9', - md: 'px-5 h-10', - lg: 'px-6 h-11', + xs: "px-3.5 h-8", + sm: "px-4 h-9", + md: "px-5 h-10", + lg: "px-6 h-11", + xl: "px-7 h-12", }, }, compoundVariants: [ { - action: 'primary', - variant: 'link', - class: 'px-0 bg-transparent hover:bg-transparent active:bg-transparent', + action: "primary", + variant: "link", + class: + "px-0 bg-transparent data-[hover=true]:bg-transparent data-[active=true]:bg-transparent", }, { - action: 'secondary', - variant: 'link', - class: 'px-0 bg-transparent hover:bg-transparent active:bg-transparent', + action: "secondary", + variant: "link", + class: + "px-0 bg-transparent data-[hover=true]:bg-transparent data-[active=true]:bg-transparent", }, { - action: 'positive', - variant: 'link', - class: 'px-0 bg-transparent hover:bg-transparent active:bg-transparent', + action: "positive", + variant: "link", + class: + "px-0 bg-transparent data-[hover=true]:bg-transparent data-[active=true]:bg-transparent", }, { - action: 'negative', - variant: 'link', - class: 'px-0 bg-transparent hover:bg-transparent active:bg-transparent', + action: "negative", + variant: "link", + class: + "px-0 bg-transparent data-[hover=true]:bg-transparent data-[active=true]:bg-transparent", }, { - action: 'primary', - variant: 'outline', - class: 'bg-transparent hover:bg-background-50 active:bg-transparent', + action: "primary", + variant: "outline", + class: + "bg-transparent data-[hover=true]:bg-background-50 data-[active=true]:bg-transparent", }, { - action: 'secondary', - variant: 'outline', - class: 'bg-transparent hover:bg-background-50 active:bg-transparent', + action: "secondary", + variant: "outline", + class: + "bg-transparent data-[hover=true]:bg-background-50 data-[active=true]:bg-transparent", }, { - action: 'positive', - variant: 'outline', - class: 'bg-transparent hover:bg-background-50 active:bg-transparent', + action: "positive", + variant: "outline", + class: + "bg-transparent data-[hover=true]:bg-background-50 data-[active=true]:bg-transparent", }, { - action: 'negative', - variant: 'outline', - class: 'bg-transparent hover:bg-background-50 active:bg-transparent', + action: "negative", + variant: "outline", + class: + "bg-transparent data-[hover=true]:bg-background-50 data-[active=true]:bg-transparent", }, ], }); const buttonTextStyle = tva({ - base: 'text-typography-0 font-semibold web:select-none', + base: "text-typography-0 font-semibold web:select-none", parentVariants: { action: { primary: - 'text-primary-600 group-hover/button:text-primary-600 group-active/button:text-primary-700', + "text-primary-600 data-[hover=true]:text-primary-600 data-[active=true]:text-primary-700", secondary: - 'text-secondary-600 group-hover/button:text-secondary-600 group-active/button:text-secondary-700', + "text-typography-500 data-[hover=true]:text-typography-600 data-[active=true]:text-typography-700", positive: - 'text-success-600 group-hover/button:text-success-600 group-active/button:text-success-700', + "text-success-600 data-[hover=true]:text-success-600 data-[active=true]:text-success-700", negative: - 'text-error-600 group-hover/button:text-error-600 group-active/button:text-error-700', + "text-error-600 data-[hover=true]:text-error-600 data-[active=true]:text-error-700", }, variant: { - link: 'group-hover/button:underline group-active/button:underline', - outline: '', + link: "data-[hover=true]:underline data-[active=true]:underline", + outline: "", solid: - 'text-typography-0 group-hover/button:text-typography-0 group-active/button:text-typography-0', + "text-typography-0 data-[hover=true]:text-typography-0 data-[active=true]:text-typography-0", }, size: { - xs: 'text-xs', - sm: 'text-sm', - md: 'text-base', - lg: 'text-lg', + xs: "text-xs", + sm: "text-sm", + md: "text-base", + lg: "text-lg", + xl: "text-xl", }, }, parentCompoundVariants: [ { - variant: 'solid', - action: 'primary', + variant: "solid", + action: "primary", + class: + "text-typography-0 data-[hover=true]:text-typography-0 data-[active=true]:text-typography-0", + }, + { + variant: "solid", + action: "secondary", class: - 'text-typography-0 group-hover/button:text-typography-0 group-active/button:text-typography-0', + "text-typography-800 data-[hover=true]:text-typography-800 data-[active=true]:text-typography-800", }, { - variant: 'solid', - action: 'secondary', + variant: "solid", + action: "positive", class: - 'text-typography-0 group-hover/button:text-typography-0 group-active/button:text-typography-0', + "text-typography-0 data-[hover=true]:text-typography-0 data-[active=true]:text-typography-0", }, { - variant: 'solid', - action: 'positive', + variant: "solid", + action: "negative", class: - 'text-typography-0 group-hover/button:text-typography-0 group-active/button:text-typography-0', + "text-typography-0 data-[hover=true]:text-typography-0 data-[active=true]:text-typography-0", }, { - variant: 'solid', - action: 'negative', + variant: "outline", + action: "primary", class: - 'text-typography-0 group-hover/button:text-typography-0 group-active/button:text-typography-0', + "text-primary-500 data-[hover=true]:text-primary-500 data-[active=true]:text-primary-500", + }, + { + variant: "outline", + action: "secondary", + class: + "text-typography-500 data-[hover=true]:text-primary-600 data-[active=true]:text-typography-700", + }, + { + variant: "outline", + action: "positive", + class: + "text-primary-500 data-[hover=true]:text-primary-500 data-[active=true]:text-primary-500", + }, + { + variant: "outline", + action: "negative", + class: + "text-primary-500 data-[hover=true]:text-primary-500 data-[active=true]:text-primary-500", }, ], }); const buttonIconStyle = tva({ + base: "fill-none", parentVariants: { variant: { - link: 'group-hover/button:underline group-active/button:underline', - outline: '', - solid: '', + link: "data-[hover=true]:underline data-[active=true]:underline", + outline: "", + solid: + "text-typography-0 data-[hover=true]:text-typography-0 data-[active=true]:text-typography-0", }, size: { - '2xs': 'h-3 w-3', - 'xs': 'h-3.5 w-3.5', - 'sm': 'h-4 w-4', - 'md': 'h-[18px] w-[18px]', - 'lg': 'h-5 w-5', - 'xl': 'h-6 w-6', + xs: "h-3.5 w-3.5", + sm: "h-4 w-4", + md: "h-[18px] w-[18px]", + lg: "h-[18px] w-[18px]", + xl: "h-5 w-5", + }, + action: { + primary: + "text-primary-600 data-[hover=true]:text-primary-600 data-[active=true]:text-primary-700", + secondary: + "text-typography-500 data-[hover=true]:text-typography-600 data-[active=true]:text-typography-700", + positive: + "text-success-600 data-[hover=true]:text-success-600 data-[active=true]:text-success-700", + + negative: + "text-error-600 data-[hover=true]:text-error-600 data-[active=true]:text-error-700", }, }, + parentCompoundVariants: [ + { + variant: "solid", + action: "primary", + class: + "text-typography-0 data-[hover=true]:text-typography-0 data-[active=true]:text-typography-0", + }, + { + variant: "solid", + action: "secondary", + class: + "text-typography-800 data-[hover=true]:text-typography-800 data-[active=true]:text-typography-800", + }, + { + variant: "solid", + action: "positive", + class: + "text-typography-0 data-[hover=true]:text-typography-0 data-[active=true]:text-typography-0", + }, + { + variant: "solid", + action: "negative", + class: + "text-typography-0 data-[hover=true]:text-typography-0 data-[active=true]:text-typography-0", + }, + ], }); const buttonGroupStyle = tva({ - base: '', + base: "", variants: { space: { - 'xs': 'gap-1', - 'sm': 'gap-2', - 'md': 'gap-3', - 'lg': 'gap-4', - 'xl': 'gap-5', - '2xl': 'gap-6', - '3xl': 'gap-7', - '4xl': 'gap-8', + xs: "gap-1", + sm: "gap-2", + md: "gap-3", + lg: "gap-4", + xl: "gap-5", + "2xl": "gap-6", + "3xl": "gap-7", + "4xl": "gap-8", }, isAttached: { - true: 'gap-0', + true: "gap-0", + }, + flexDirection: { + row: "flex-row", + column: "flex-col", + "row-reverse": "flex-row-reverse", + "column-reverse": "flex-col-reverse", }, }, }); -type IButtonProps = Omit, 'context'> & - VariantProps; -const Button = React.forwardRef( +type IButtonProps = Omit< + React.ComponentPropsWithoutRef, + "context" +> & + VariantProps & { className?: string }; + +const Button = React.forwardRef< + React.ElementRef, + IButtonProps +>( ( - { - className, - variant = 'solid', - size = 'md', - action = 'primary', - ...props - }: { className?: string } & IButtonProps, - ref?: any + { className, variant = "solid", size = "md", action = "primary", ...props }, + ref ) => { return ( & - VariantProps; -const ButtonText = React.forwardRef( - ( - { - className, - variant, - size, - action, - ...props - }: { className?: string } & IButtonTextProps, - ref?: any - ) => { - const { - variant: parentVariant, - size: parentSize, - action: parentAction, - } = useStyleContext(SCOPE); +type IButtonTextProps = React.ComponentPropsWithoutRef & + VariantProps & { className?: string }; - return ( - - ); - } -); +const ButtonText = React.forwardRef< + React.ElementRef, + IButtonTextProps +>(({ className, variant, size, action, ...props }, ref) => { + const { + variant: parentVariant, + size: parentSize, + action: parentAction, + } = useStyleContext(SCOPE); + + return ( + + ); +}); const ButtonSpinner = UIButton.Spinner; -interface DefaultColors { - primary: string; - secondary: string; - positive: string; - negative: string; -} -const defaultColors: DefaultColors = { - primary: '#292929', - secondary: '#515252', - positive: '#2A7948', - negative: '#DC2626', -}; -type IButtonIcon = React.ComponentProps & - VariantProps; -const ButtonIcon = React.forwardRef( - ( - { - className, - size, - ...props - }: IButtonIcon & { - className?: any; - fill?: string; - color?: string; - as?: any; - }, - ref?: any - ) => { - const { - variant: parentVariant, - size: parentSize, - action: parentAction, - } = useStyleContext(SCOPE); +type IButtonIcon = React.ComponentPropsWithoutRef & + VariantProps & { + className?: string | undefined; + as?: React.ElementType; + height?: number; + width?: number; + }; - let localColor; - if (parentVariant !== 'solid') { - localColor = defaultColors[parentAction as keyof DefaultColors]; - } else { - localColor = 'gray'; - } - const { color = localColor } = props; +const ButtonIcon = React.forwardRef< + React.ElementRef, + IButtonIcon +>(({ className, size, ...props }, ref) => { + const { + variant: parentVariant, + size: parentSize, + action: parentAction, + } = useStyleContext(SCOPE); - if (typeof size === 'number') { - return ( - - ); - } else if ( - (props.height !== undefined || props.width !== undefined) && - size === undefined - ) { - return ( - - ); - } + if (typeof size === "number") { return ( + ); + } else if ( + (props?.height !== undefined || props?.width !== undefined) && + size === undefined + ) { + return ( + ); } -); + return ( + + ); +}); -type IButtonGroupProps = React.ComponentProps & +type IButtonGroupProps = React.ComponentPropsWithoutRef & VariantProps; -const ButtonGroup = React.forwardRef( + +const ButtonGroup = React.forwardRef< + React.ElementRef, + IButtonGroupProps +>( ( { className, - space = 'md', + space = "md", isAttached = false, + flexDirection = "column", ...props - }: { className?: string } & IButtonGroupProps, - ref?: any + }, + ref ) => { return ( @@ -412,10 +425,10 @@ const ButtonGroup = React.forwardRef( } ); -Button.displayName = 'Button'; -ButtonText.displayName = 'ButtonText'; -ButtonSpinner.displayName = 'ButtonSpinner'; -ButtonIcon.displayName = 'ButtonIcon'; -ButtonGroup.displayName = 'ButtonGroup'; +Button.displayName = "Button"; +ButtonText.displayName = "ButtonText"; +ButtonSpinner.displayName = "ButtonSpinner"; +ButtonIcon.displayName = "ButtonIcon"; +ButtonGroup.displayName = "ButtonGroup"; export { Button, ButtonText, ButtonSpinner, ButtonIcon, ButtonGroup }; diff --git a/next/components/ui/checkbox/index.tsx b/next/components/ui/checkbox/index.tsx index aaaa8f01..4e85cace 100644 --- a/next/components/ui/checkbox/index.tsx +++ b/next/components/ui/checkbox/index.tsx @@ -1,19 +1,16 @@ 'use client'; -import React, { useMemo } from 'react'; +import React from 'react'; import { createCheckbox } from '@gluestack-ui/checkbox'; -import { View, Pressable, Text } from 'react-native'; +import { View, Pressable, Text, Platform } from 'react-native'; import type { TextProps, ViewProps } from 'react-native'; import { tva } from '@gluestack-ui/nativewind-utils/tva'; -import { Svg } from 'react-native-svg'; +import { PrimitiveIcon, IPrimitiveIcon, UIIcon } from '@gluestack-ui/icon'; import { withStyleContext, useStyleContext, } from '@gluestack-ui/nativewind-utils/withStyleContext'; -import { withStyleContextAndStates } from '@gluestack-ui/nativewind-utils/withStyleContextAndStates'; import { cssInterop } from 'nativewind'; -import { withStates } from '@gluestack-ui/nativewind-utils/withStates'; import type { VariantProps } from '@gluestack-ui/nativewind-utils'; -import { Platform } from 'react-native'; const IndicatorWrapper = React.forwardRef< React.ElementRef, @@ -28,81 +25,34 @@ const LabelWrapper = React.forwardRef, TextProps>( } ); -type IPrimitiveIcon = React.ComponentPropsWithoutRef & { - height?: number | string; - width?: number | string; - fill?: string; - color?: string; - size?: number | string; - stroke?: string; - as?: React.ElementType; - className?: string; -}; - const IconWrapper = React.forwardRef< React.ElementRef, IPrimitiveIcon >(({ ...props }, ref) => { - return ; -}); - -const PrimitiveIcon = React.forwardRef< - React.ElementRef, - IPrimitiveIcon ->(({ height, width, fill, color, size, stroke, as: AsComp, ...props }, ref) => { - const sizeProps = useMemo(() => { - if (size) return { size }; - if (height && width) return { height, width }; - if (height) return { height }; - if (width) return { width }; - return {}; - }, [size, height, width]); - - let colorProps = {}; - if (color) { - colorProps = { ...colorProps, color: color }; - } - if (stroke) { - colorProps = { ...colorProps, stroke: stroke }; - } - if (fill) { - colorProps = { ...colorProps, fill: fill }; - } - if (AsComp) { - return ; - } - return ( - - ); + return ; }); const SCOPE = 'CHECKBOX'; const UICheckbox = createCheckbox({ - // @ts-ignore + // @ts-expect-error Root: Platform.OS === 'web' ? withStyleContext(View, SCOPE) - : withStyleContextAndStates(Pressable, SCOPE), - Group: Platform.OS === 'web' ? View : withStates(View), - Icon: Platform.OS === 'web' ? IconWrapper : withStates(IconWrapper), - Label: Platform.OS === 'web' ? LabelWrapper : withStates(LabelWrapper), - Indicator: - Platform.OS === 'web' ? IndicatorWrapper : withStates(IndicatorWrapper), + : withStyleContext(Pressable, SCOPE), + Group: View, + Icon: IconWrapper, + Label: LabelWrapper, + Indicator: IndicatorWrapper, }); -cssInterop(UICheckbox, { className: 'style' }); -cssInterop(UICheckbox.Group, { className: 'style' }); -cssInterop(LabelWrapper, { className: 'style' }); -cssInterop(IndicatorWrapper, { className: 'style' }); -cssInterop(IconWrapper, { +cssInterop(PrimitiveIcon, { className: { target: 'style', nativeStyleToProp: { height: true, width: true, - // @ts-ignore fill: true, - color: true, + color: 'classNameColor', stroke: true, }, }, diff --git a/next/components/ui/divider/index.tsx b/next/components/ui/divider/index.tsx index 61404a4b..e9b663a6 100644 --- a/next/components/ui/divider/index.tsx +++ b/next/components/ui/divider/index.tsx @@ -1,9 +1,7 @@ 'use client'; import React from 'react'; -import { createDivider } from '@gluestack-ui/divider'; import { tva } from '@gluestack-ui/nativewind-utils/tva'; -import { View } from 'react-native'; -import { cssInterop } from 'nativewind'; +import { Platform, View } from 'react-native'; import type { VariantProps } from '@gluestack-ui/nativewind-utils'; const dividerStyle = tva({ @@ -16,21 +14,19 @@ const dividerStyle = tva({ }, }); -const UIDivider = createDivider({ Root: View }); - -cssInterop(UIDivider, { className: 'style' }); - -type IUIDividerProps = React.ComponentPropsWithoutRef & +type IUIDividerProps = React.ComponentPropsWithoutRef & VariantProps; const Divider = React.forwardRef< - React.ElementRef, + React.ElementRef, IUIDividerProps >(({ className, orientation = 'horizontal', ...props }, ref) => { return ( - & + VariantProps & { className?: string }; + +type IDrawerBackdropProps = React.ComponentProps & + VariantProps & { className?: string }; + +type IDrawerContentProps = React.ComponentProps & + VariantProps & { className?: string }; + +type IDrawerHeaderProps = React.ComponentProps & + VariantProps & { className?: string }; + +type IDrawerBodyProps = React.ComponentProps & + VariantProps & { className?: string }; + +type IDrawerFooterProps = React.ComponentProps & + VariantProps & { className?: string }; + +type IDrawerCloseButtonProps = React.ComponentProps< + typeof UIDrawer.CloseButton +> & + VariantProps & { className?: string }; + +const Drawer = React.forwardRef< + React.ElementRef, + IDrawerProps +>(({ className, size = 'sm', anchor = 'left', ...props }, ref) => { + return ( + + ); +}); + +const DrawerBackdrop = React.forwardRef< + React.ElementRef, + IDrawerBackdropProps +>(({ className, ...props }, ref) => { + return ( + + ); +}); + +const DrawerContent = React.forwardRef< + React.ElementRef, + IDrawerContentProps +>(({ className, ...props }, ref) => { + const { size: parentSize, anchor: parentAnchor } = useStyleContext(SCOPE); + + const drawerHeight = screenHeight * (sizes[parentSize] || sizes.md); + const drawerWidth = screenWidth * (sizes[parentSize] || sizes.md); + + const isHorizontal = parentAnchor === 'left' || parentAnchor === 'right'; + + const initialObj = isHorizontal + ? { x: parentAnchor === 'left' ? -drawerWidth : drawerWidth } + : { y: parentAnchor === 'top' ? -drawerHeight : drawerHeight }; + + const animateObj = isHorizontal ? { x: 0 } : { y: 0 }; + + const exitObj = isHorizontal + ? { x: parentAnchor === 'left' ? -drawerWidth : drawerWidth } + : { y: parentAnchor === 'top' ? -drawerHeight : drawerHeight }; + + const customClass = isHorizontal + ? `top-0 ${parentAnchor === 'left' ? 'left-0' : 'right-0'}` + : `left-0 ${parentAnchor === 'top' ? 'top-0' : 'bottom-0'}`; + + return ( + + ); +}); + +const DrawerHeader = React.forwardRef< + React.ElementRef, + IDrawerHeaderProps +>(({ className, ...props }, ref) => { + return ( + + ); +}); + +const DrawerBody = React.forwardRef< + React.ElementRef, + IDrawerBodyProps +>(({ className, ...props }, ref) => { + return ( + + ); +}); + +const DrawerFooter = React.forwardRef< + React.ElementRef, + IDrawerFooterProps +>(({ className, ...props }, ref) => { + return ( + + ); +}); + +const DrawerCloseButton = React.forwardRef< + React.ElementRef, + IDrawerCloseButtonProps +>(({ className, ...props }, ref) => { + return ( + + ); +}); + +Drawer.displayName = 'Drawer'; +DrawerBackdrop.displayName = 'DrawerBackdrop'; +DrawerContent.displayName = 'DrawerContent'; +DrawerHeader.displayName = 'DrawerHeader'; +DrawerBody.displayName = 'DrawerBody'; +DrawerFooter.displayName = 'DrawerFooter'; +DrawerCloseButton.displayName = 'DrawerCloseButton'; + +export { + Drawer, + DrawerBackdrop, + DrawerContent, + DrawerCloseButton, + DrawerHeader, + DrawerBody, + DrawerFooter, +}; diff --git a/next/components/ui/fab/index.tsx b/next/components/ui/fab/index.tsx index f1544824..98840f89 100644 --- a/next/components/ui/fab/index.tsx +++ b/next/components/ui/fab/index.tsx @@ -1,80 +1,32 @@ 'use client'; -import React, { useMemo } from 'react'; +import React from 'react'; import { createFab } from '@gluestack-ui/fab'; -import { Platform, Text } from 'react-native'; -import { Pressable } from 'react-native'; -import { Svg } from 'react-native-svg'; +import { Pressable, Text } from 'react-native'; import { tva } from '@gluestack-ui/nativewind-utils/tva'; import { withStyleContext, useStyleContext, } from '@gluestack-ui/nativewind-utils/withStyleContext'; -import { withStyleContextAndStates } from '@gluestack-ui/nativewind-utils/withStyleContextAndStates'; import { cssInterop } from 'nativewind'; import type { VariantProps } from '@gluestack-ui/nativewind-utils'; - -type IPrimitiveIcon = React.ComponentPropsWithoutRef & { - height?: number | string; - width?: number | string; - fill?: string; - color?: string; - size?: number | string; - stroke?: string; - as?: React.ElementType; - className?: string; -}; - -const PrimitiveIcon = React.forwardRef< - React.ElementRef, - IPrimitiveIcon ->(({ height, width, fill, color, size, stroke, as: AsComp, ...props }, ref) => { - const sizeProps = useMemo(() => { - if (size) return { size }; - if (height && width) return { height, width }; - if (height) return { height }; - if (width) return { width }; - return {}; - }, [size, height, width]); - - let colorProps = {}; - if (color) { - colorProps = { ...colorProps, color: color }; - } - if (stroke) { - colorProps = { ...colorProps, stroke: stroke }; - } - if (fill) { - colorProps = { ...colorProps, fill: fill }; - } - if (AsComp) { - return ; - } - return ( - - ); -}); +import { PrimitiveIcon, UIIcon } from '@gluestack-ui/icon'; const SCOPE = 'FAB'; +const Root = withStyleContext(Pressable, SCOPE); const UIFab = createFab({ - Root: - Platform.OS === 'web' - ? withStyleContext(Pressable, SCOPE) - : withStyleContextAndStates(Pressable, SCOPE), + Root: Root, Label: Text, - Icon: PrimitiveIcon, + Icon: UIIcon, }); -cssInterop(UIFab, { className: 'style' }); -cssInterop(UIFab.Label, { className: 'style' }); -cssInterop(UIFab.Icon, { +cssInterop(PrimitiveIcon, { className: { target: 'style', nativeStyleToProp: { height: true, width: true, - // @ts-ignore fill: true, - color: true, + color: 'classNameColor', stroke: true, }, }, @@ -147,7 +99,7 @@ const fabLabelStyle = tva({ }); const fabIconStyle = tva({ - base: 'text-typography-50 hover:text-typography-0 active:text-typography-0 fill-none', + base: 'text-typography-50 fill-none', variants: { size: { '2xs': 'h-3 w-3', diff --git a/next/components/ui/form-control/index.tsx b/next/components/ui/form-control/index.tsx index fcdf8cc1..895b207a 100644 --- a/next/components/ui/form-control/index.tsx +++ b/next/components/ui/form-control/index.tsx @@ -1,7 +1,6 @@ 'use client'; import { Text, View } from 'react-native'; -import React, { useMemo } from 'react'; -import { Svg } from 'react-native-svg'; +import React from 'react'; import { createFormControl } from '@gluestack-ui/form-control'; import { tva } from '@gluestack-ui/nativewind-utils/tva'; import { @@ -10,50 +9,10 @@ import { } from '@gluestack-ui/nativewind-utils/withStyleContext'; import { cssInterop } from 'nativewind'; import type { VariantProps } from '@gluestack-ui/nativewind-utils'; +import { PrimitiveIcon, UIIcon } from '@gluestack-ui/icon'; const SCOPE = 'FORM_CONTROL'; -type IPrimitiveIcon = React.ComponentPropsWithoutRef & { - height?: number | string; - width?: number | string; - fill?: string; - color?: string; - size?: number | string; - stroke?: string; - as?: React.ElementType; - className?: string; -}; - -const PrimitiveIcon = React.forwardRef< - React.ElementRef, - IPrimitiveIcon ->(({ height, width, fill, color, size, stroke, as: AsComp, ...props }, ref) => { - const sizeProps = useMemo(() => { - if (size) return { size }; - if (height && width) return { height, width }; - if (height) return { height }; - if (width) return { width }; - return {}; - }, [size, height, width]); - - let colorProps = {}; - if (color) { - colorProps = { ...colorProps, color: color }; - } - if (stroke) { - colorProps = { ...colorProps, stroke: stroke }; - } - if (fill) { - colorProps = { ...colorProps, fill: fill }; - } - if (AsComp) { - return ; - } - return ( - - ); -}); - const formControlStyle = tva({ base: 'flex flex-col', variants: { @@ -278,7 +237,7 @@ export const UIFormControl = createFormControl({ Root: withStyleContext(View, SCOPE), Error: View, ErrorText: Text, - ErrorIcon: PrimitiveIcon, + ErrorIcon: UIIcon, Label: View, LabelText: Text, LabelAstrick: FormControlLabelAstrick, @@ -286,20 +245,12 @@ export const UIFormControl = createFormControl({ HelperText: Text, }); -cssInterop(UIFormControl, { className: 'style' }); -cssInterop(UIFormControl.Error, { className: 'style' }); -cssInterop(UIFormControl.Error.Text, { className: 'style' }); -cssInterop(UIFormControl.Label, { className: 'style' }); -cssInterop(UIFormControl.Label.Text, { className: 'style' }); -cssInterop(UIFormControl.Helper, { className: 'style' }); -cssInterop(UIFormControl.Helper.Text, { className: 'style' }); -cssInterop(UIFormControl.Error.Icon, { +cssInterop(PrimitiveIcon, { className: { target: 'style', nativeStyleToProp: { height: true, width: true, - // @ts-ignore fill: true, color: true, stroke: true, diff --git a/next/components/ui/gluestack-ui-provider/config.js b/next/components/ui/gluestack-ui-provider/config.js deleted file mode 100644 index 0a06501d..00000000 --- a/next/components/ui/gluestack-ui-provider/config.js +++ /dev/null @@ -1,304 +0,0 @@ -"use client"; -import { vars } from "nativewind"; -export const config = { - light: vars({ - "--color-primary-0": "#B3B3B3", - "--color-primary-50": "#999999", - "--color-primary-100": "#808080", - "--color-primary-200": "#737373", - "--color-primary-300": "#666666", - "--color-primary-400": "#525252", - "--color-primary-500": "#333333", - "--color-primary-600": "#292929", - "--color-primary-700": "#1F1F1F", - "--color-primary-800": "#0D0D0D", - "--color-primary-900": "#0A0A0A", - "--color-primary-950": "#080808", - /* Secondary */ - "--color-secondary-0": "#FEFFFF", - "--color-secondary-50": "#F1F2F2", - "--color-secondary-100": "#E7E8E8", - "--color-secondary-200": "#DBDBDB", - "--color-secondary-300": "#AFB0B0", - "--color-secondary-400": "#727373", - "--color-secondary-500": "#5E5F5F", - "--color-secondary-600": "#515252", - "--color-secondary-700": "#3F4040", - "--color-secondary-800": "#272626", - "--color-secondary-900": "#181717", - "--color-secondary-950": "#0B0C0C", - /* Tertiary */ - "--color-tertiary-0": "#FFFAF5", - "--color-tertiary-50": "#FFF2E5", - "--color-tertiary-100": "#FFE9D5", - "--color-tertiary-200": "#FED1AA", - "--color-tertiary-300": "#FDB474", - "--color-tertiary-400": "#FB9D4B", - "--color-tertiary-500": "#E78128", - "--color-tertiary-600": "#D7751F", - "--color-tertiary-700": "#B4621A", - "--color-tertiary-800": "#824917", - "--color-tertiary-900": "#6C3D13", - "--color-tertiary-950": "#543112", - /* Error */ - "--color-error-0": "#FEE9E9", - "--color-error-50": "#FEE2E2", - "--color-error-100": "#FECACA", - "--color-error-200": "#FCA5A5", - "--color-error-300": "#F87171", - "--color-error-400": "#EF4444", - "--color-error-500": "#E63535", - "--color-error-600": "#DC2626", - "--color-error-700": "#B91C1C", - "--color-error-800": "#991B1B", - "--color-error-900": "#7F1D1D", - "--color-error-950": "#531313", - /* Success */ - "--color-success-0": "#E4FFF4", - "--color-success-50": "#CAFFE8", - "--color-success-100": "#A2F1C0", - "--color-success-200": "#84D3A2", - "--color-success-300": "#66B584", - "--color-success-400": "#489766", - "--color-success-500": "#348352", - "--color-success-600": "#2A7948", - "--color-success-700": "#206F3E", - "--color-success-800": "#166534", - "--color-success-900": "#14532D", - "--color-success-950": "#1B3224", - /* Warning */ - "--color-warning-0": "#FFFDFB", - "--color-warning-50": "#FFF9F5", - "--color-warning-100": "#FFE7D5", - "--color-warning-200": "#FECDAA", - "--color-warning-300": "#FDAD74", - "--color-warning-400": "#FB954B", - "--color-warning-500": "#E77828", - "--color-warning-600": "#D76C1F", - "--color-warning-700": "#B45A1A", - "--color-warning-800": "#824417", - "--color-warning-900": "#6C3813", - "--color-warning-950": "#542D12", - /* Info */ - "--color-info-0": "#ECF8FE", - "--color-info-50": "#C7EBFC", - "--color-info-100": "#A2DDFA", - "--color-info-200": "#7CCFF8", - "--color-info-300": "#57C2F6", - "--color-info-400": "#32B4F4", - "--color-info-500": "#0DA6F2", - "--color-info-600": "#0B8DCD", - "--color-info-700": "#0973A8", - "--color-info-800": "#075A83", - "--color-info-900": "#05405D", - "--color-info-950": "#032638", - /* Typography */ - "--color-typography-0": "#FEFEFF", - "--color-typography-50": "#F5F5F5", - "--color-typography-100": "#E5E5E5", - "--color-typography-200": "#DBDBDC", - "--color-typography-300": "#D4D4D4", - "--color-typography-400": "#A3A3A3", - "--color-typography-500": "#8C8C8C", - "--color-typography-600": "#737373", - "--color-typography-700": "#525252", - "--color-typography-800": "#404040", - "--color-typography-900": "#262627", - "--color-typography-950": "#171717", - /* Outline */ - "--color-outline-0": "#FDFEFE", - "--color-outline-50": "#F3F3F3", - "--color-outline-100": "#E6E6E6", - "--color-outline-200": "#DDDCDB", - "--color-outline-300": "#D3D3D3", - "--color-outline-400": "#A5A3A3", - "--color-outline-500": "#8C8D8D", - "--color-outline-600": "#737474", - "--color-outline-700": "#535252", - "--color-outline-800": "#414141", - "--color-outline-900": "#272624", - "--color-outline-950": "#1A1717", - /* Background */ - "--color-background-0": "#FFFFFF", - "--color-background-50": "#F6F6F6", - "--color-background-100": "#F2F1F1", - "--color-background-200": "#DCDBDB", - "--color-background-300": "#D5D4D4", - "--color-background-400": "#A2A3A3", - "--color-background-500": "#8E8E8E", - "--color-background-600": "#747474", - "--color-background-700": "#535252", - "--color-background-800": "#414040", - "--color-background-900": "#272625", - "--color-background-950": "#181718", - /* Background Special */ - "--color-background-error": "#FEF1F1", - "--color-background-warning": "#FFF4EB", - "--color-background-success": "#EDFCF2", - "--color-background-muted": "#F6F6F7", - "--color-background-info": "#EBF8FE", - /* Border */ - "--color-border-0": "#FDFEFE", - "--color-border-50": "#F3F3F3", - "--color-border-100": "#E6E6E6", - "--color-border-200": "#DDDCDB", - "--color-border-300": "#D3D3D3", - "--color-border-400": "#A5A3A3", - "--color-border-500": "#8C8D8D", - "--color-border-600": "#737474", - "--color-border-700": "#535252", - "--color-border-800": "#414141", - "--color-border-900": "#272624", - "--color-border-950": "#1A1717", - }), - dark: vars({ - "--color-primary-0": "#828282", - "--color-primary-50": "#949494", - "--color-primary-100": "#9E9E9E", - "--color-primary-200": "#B3B3B3", - "--color-primary-300": "#C7C7C7", - "--color-primary-400": "#E6E6E6", - "--color-primary-500": "#F0F0F0", - "--color-primary-600": "#FAFAFA", - "--color-primary-700": "#FCFCFC", - "--color-primary-800": "#FDFDFD", - "--color-primary-900": "#FDFCFC", - "--color-primary-950": "#FDFCFC", - /* Secondary */ - "--color-secondary-0": "#0B0C0C", - "--color-secondary-50": "#181717", - "--color-secondary-100": "#272626", - "--color-secondary-200": "#3F4040", - "--color-secondary-300": "#515252", - "--color-secondary-400": "#5E5F5F", - "--color-secondary-500": "#727373", - "--color-secondary-600": "#AFB0B0", - "--color-secondary-700": "#DBDBDB", - "--color-secondary-800": "#E7E8E8", - "--color-secondary-900": "#F1F2F2", - "--color-secondary-950": "#FEFFFF", - /* Tertiary */ - "--color-tertiary-0": "#543112", - "--color-tertiary-50": "#6C3D13", - "--color-tertiary-100": "#824917", - "--color-tertiary-200": "#B4621A", - "--color-tertiary-300": "#D7751F", - "--color-tertiary-400": "#E78128", - "--color-tertiary-500": "#FB9D4B", - "--color-tertiary-600": "#FDB474", - "--color-tertiary-700": "#FED1AA", - "--color-tertiary-800": "#FFE9D5", - "--color-tertiary-900": "#FFF2E5", - "--color-tertiary-950": "#FFFAF5", - /* Error */ - "--color-error-0": "#531313", - "--color-error-50": "#7F1D1D", - "--color-error-100": "#991B1B", - "--color-error-200": "#B91C1C", - "--color-error-300": "#DC2626", - "--color-error-400": "#E63535", - "--color-error-500": "#EF4444", - "--color-error-600": "#F87171", - "--color-error-700": "#E63534", - "--color-error-800": "#FECACA", - "--color-error-900": "#FEE2E2", - "--color-error-950": "#FEE9E9", - /* Success */ - "--color-success-0": "#1B3224", - "--color-success-50": "#14532D", - "--color-success-100": "#166534", - "--color-success-200": "#206F3E", - "--color-success-300": "#2A7948", - "--color-success-400": "#348352", - "--color-success-500": "#489766", - "--color-success-600": "#66B584", - "--color-success-700": "#84D3A2", - "--color-success-800": "#A2F1C0", - "--color-success-900": "#CAFFE8", - "--color-success-950": "#E4FFF4", - /* Warning */ - "--color-warning-0": "#542D12", - "--color-warning-50": "#6C3813", - "--color-warning-100": "#824417", - "--color-warning-200": "#B45A1A", - "--color-warning-300": "#D76C1F", - "--color-warning-400": "#E77828", - "--color-warning-500": "#FB954B", - "--color-warning-600": "#FDAD74", - "--color-warning-700": "#FECDAA", - "--color-warning-800": "#FFE7D5", - "--color-warning-900": "#FFF9F5", - "--color-warning-950": "#FFFDFB", - /* Info */ - "--color-info-0": "#032638", - "--color-info-50": "#05405D", - "--color-info-100": "#075A83", - "--color-info-200": "#0973A8", - "--color-info-300": "#0B8DCD", - "--color-info-400": "#0DA6F2", - "--color-info-500": "#32B4F4", - "--color-info-600": "#57C2F6", - "--color-info-700": "#7CCFF8", - "--color-info-800": "#A2DDFA", - "--color-info-900": "#C7EBFC", - "--color-info-950": "#ECF8FE", - /* Typography */ - "--color-typography-0": "#171717", - "--color-typography-50": "#262627", - "--color-typography-100": "#404040", - "--color-typography-200": "#525252", - "--color-typography-300": "#737373", - "--color-typography-400": "#8C8C8C", - "--color-typography-500": "#A3A3A3", - "--color-typography-600": "#D4D4D4", - "--color-typography-700": "#DBDBDC", - "--color-typography-800": "#E5E5E5", - "--color-typography-900": "#F5F5F5", - "--color-typography-950": "#FEFEFF", - /* Outline */ - "--color-outline-0": "#1A1717", - "--color-outline-50": "#272624", - "--color-outline-100": "#414141", - "--color-outline-200": "#535252", - "--color-outline-300": "#737474", - "--color-outline-400": "#8C8D8D", - "--color-outline-500": "#A5A3A3", - "--color-outline-600": "#D3D3D3", - "--color-outline-700": "#DDDCDB", - "--color-outline-800": "#E6E6E6", - "--color-outline-900": "#F3F3F3", - "--color-outline-950": "#FDFEFE", - /* Background */ - "--color-background-0": "#121212", - "--color-background-50": "#272625", - "--color-background-100": "#414040", - "--color-background-200": "#535252", - "--color-background-300": "#747474", - "--color-background-400": "#8E8E8E", - "--color-background-500": "#A2A3A3", - "--color-background-600": "#D5D4D4", - "--color-background-700": "#DCDBDB", - "--color-background-800": "#F2F1F1", - "--color-background-900": "#F6F6F6", - "--color-background-950": "#FEFEFE", - /* Background Special */ - "--color-background-error": "#422B2B", - "--color-background-warning": "#412F23", - "--color-background-success": "#1C2B21", - "--color-background-muted": "#252526", - "--color-background-info": "#1A282E", - /* Border */ - "--color-border-0": "#1A1717", - "--color-border-50": "#272624", - "--color-border-100": "#414141", - "--color-border-200": "#535252", - "--color-border-300": "#737474", - "--color-border-400": "#8C8D8D", - "--color-border-500": "#A5A3A3", - "--color-border-600": "#D3D3D3", - "--color-border-700": "#DDDCDB", - "--color-border-800": "#E6E6E6", - "--color-border-900": "#F3F3F3", - "--color-border-950": "#FDFEFE", - }), -}; diff --git a/next/components/ui/gluestack-ui-provider/config.ts b/next/components/ui/gluestack-ui-provider/config.ts index 3b42a91a..f388cc6e 100644 --- a/next/components/ui/gluestack-ui-provider/config.ts +++ b/next/components/ui/gluestack-ui-provider/config.ts @@ -1,326 +1,309 @@ -"use client"; -import { vars } from "nativewind"; +'use client'; +import { vars } from 'nativewind'; export const config = { light: vars({ - "--color-primary-0": "#B3B3B3", - "--color-primary-50": "#999999", - "--color-primary-100": "#808080", - "--color-primary-200": "#737373", - "--color-primary-300": "#666666", - "--color-primary-400": "#525252", - "--color-primary-500": "#333333", - "--color-primary-600": "#292929", - "--color-primary-700": "#1F1F1F", - "--color-primary-800": "#0D0D0D", - "--color-primary-900": "#0A0A0A", - "--color-primary-950": "#080808", + '--color-primary-0': '179 179 179', + '--color-primary-50': '153 153 153', + '--color-primary-100': '128 128 128', + '--color-primary-200': '115 115 115', + '--color-primary-300': '102 102 102', + '--color-primary-400': '82 82 82', + '--color-primary-500': '51 51 51', + '--color-primary-600': '41 41 41', + '--color-primary-700': '31 31 31', + '--color-primary-800': '13 13 13', + '--color-primary-900': '10 10 10', + '--color-primary-950': '8 8 8', /* Secondary */ - "--color-secondary-0": "#FEFFFF", - "--color-secondary-50": "#F1F2F2", - "--color-secondary-100": "#E7E8E8", - "--color-secondary-200": "#DBDBDB", - "--color-secondary-300": "#AFB0B0", - "--color-secondary-400": "#727373", - "--color-secondary-500": "#5E5F5F", - "--color-secondary-600": "#515252", - "--color-secondary-700": "#3F4040", - "--color-secondary-800": "#272626", - "--color-secondary-900": "#181717", - "--color-secondary-950": "#0B0C0C", + '--color-secondary-0': '253 253 253', + '--color-secondary-50': '251 251 251', + '--color-secondary-100': '246 246 246', + '--color-secondary-200': '242 242 242', + '--color-secondary-300': '237 237 237', + '--color-secondary-400': '230 230 231', + '--color-secondary-500': '217 217 219', + '--color-secondary-600': '198 199 199', + '--color-secondary-700': '189 189 189', + '--color-secondary-800': '177 177 177', + '--color-secondary-900': '165 164 164', + '--color-secondary-950': '157 157 157', /* Tertiary */ - "--color-tertiary-0": "#FFFAF5", - "--color-tertiary-50": "#FFF2E5", - "--color-tertiary-100": "#FFE9D5", - "--color-tertiary-200": "#FED1AA", - "--color-tertiary-300": "#FDB474", - "--color-tertiary-400": "#FB9D4B", - "--color-tertiary-500": "#E78128", - "--color-tertiary-600": "#D7751F", - "--color-tertiary-700": "#B4621A", - "--color-tertiary-800": "#824917", - "--color-tertiary-900": "#6C3D13", - "--color-tertiary-950": "#543112", + '--color-tertiary-0': '255 250 245', + '--color-tertiary-50': '255 242 229', + '--color-tertiary-100': '255 233 213', + '--color-tertiary-200': '254 209 170', + '--color-tertiary-300': '253 180 116', + '--color-tertiary-400': '251 157 75', + '--color-tertiary-500': '231 129 40', + '--color-tertiary-600': '215 117 31', + '--color-tertiary-700': '180 98 26', + '--color-tertiary-800': '130 73 23', + '--color-tertiary-900': '108 61 19', + '--color-tertiary-950': '84 49 18', /* Error */ - "--color-error-0": "#FEE9E9", - "--color-error-50": "#FEE2E2", - "--color-error-100": "#FECACA", - "--color-error-200": "#FCA5A5", - "--color-error-300": "#F87171", - "--color-error-400": "#EF4444", - "--color-error-500": "#E63535", - "--color-error-600": "#DC2626", - "--color-error-700": "#B91C1C", - "--color-error-800": "#991B1B", - "--color-error-900": "#7F1D1D", - "--color-error-950": "#531313", + '--color-error-0': '254 233 233', + '--color-error-50': '254 226 226', + '--color-error-100': '254 202 202', + '--color-error-200': '252 165 165', + '--color-error-300': '248 113 113', + '--color-error-400': '239 68 68', + '--color-error-500': '230 53 53', + '--color-error-600': '220 38 38', + '--color-error-700': '185 28 28', + '--color-error-800': '153 27 27', + '--color-error-900': '127 29 29', + '--color-error-950': '83 19 19', /* Success */ - "--color-success-0": "#E4FFF4", - "--color-success-50": "#CAFFE8", - "--color-success-100": "#A2F1C0", - "--color-success-200": "#84D3A2", - "--color-success-300": "#66B584", - "--color-success-400": "#489766", - "--color-success-500": "#348352", - "--color-success-600": "#2A7948", - "--color-success-700": "#206F3E", - "--color-success-800": "#166534", - "--color-success-900": "#14532D", - "--color-success-950": "#1B3224", + '--color-success-0': '228 255 244', + '--color-success-50': '202 255 232', + '--color-success-100': '162 241 192', + '--color-success-200': '132 211 162', + '--color-success-300': '102 181 132', + '--color-success-400': '72 151 102', + '--color-success-500': '52 131 82', + '--color-success-600': '42 121 72', + '--color-success-700': '32 111 62', + '--color-success-800': '22 101 52', + '--color-success-900': '20 83 45', + '--color-success-950': '27 50 36', /* Warning */ - "--color-warning-0": "#FFFDFB", - "--color-warning-50": "#FFF9F5", - "--color-warning-100": "#FFE7D5", - "--color-warning-200": "#FECDAA", - "--color-warning-300": "#FDAD74", - "--color-warning-400": "#FB954B", - "--color-warning-500": "#E77828", - "--color-warning-600": "#D76C1F", - "--color-warning-700": "#B45A1A", - "--color-warning-800": "#824417", - "--color-warning-900": "#6C3813", - "--color-warning-950": "#542D12", + '--color-warning-0': '255 249 245', + '--color-warning-50': '255 244 236', + '--color-warning-100': '255 231 213', + '--color-warning-200': '254 205 170', + '--color-warning-300': '253 173 116', + '--color-warning-400': '251 149 75', + '--color-warning-500': '231 120 40', + '--color-warning-600': '215 108 31', + '--color-warning-700': '180 90 26', + '--color-warning-800': '130 68 23', + '--color-warning-900': '108 56 19', + '--color-warning-950': '84 45 18', /* Info */ - "--color-info-0": "#ECF8FE", - "--color-info-50": "#C7EBFC", - "--color-info-100": "#A2DDFA", - "--color-info-200": "#7CCFF8", - "--color-info-300": "#57C2F6", - "--color-info-400": "#32B4F4", - "--color-info-500": "#0DA6F2", - "--color-info-600": "#0B8DCD", - "--color-info-700": "#0973A8", - "--color-info-800": "#075A83", - "--color-info-900": "#05405D", - "--color-info-950": "#032638", + '--color-info-0': '236 248 254', + '--color-info-50': '199 235 252', + '--color-info-100': '162 221 250', + '--color-info-200': '124 207 248', + '--color-info-300': '87 194 246', + '--color-info-400': '50 180 244', + '--color-info-500': '13 166 242', + '--color-info-600': '11 141 205', + '--color-info-700': '9 115 168', + '--color-info-800': '7 90 131', + '--color-info-900': '5 64 93', + '--color-info-950': '3 38 56', /* Typography */ - "--color-typography-0": "#FEFEFF", - "--color-typography-50": "#F5F5F5", - "--color-typography-100": "#E5E5E5", - "--color-typography-200": "#DBDBDC", - "--color-typography-300": "#D4D4D4", - "--color-typography-400": "#A3A3A3", - "--color-typography-500": "#8C8C8C", - "--color-typography-600": "#737373", - "--color-typography-700": "#525252", - "--color-typography-800": "#404040", - "--color-typography-900": "#262627", - "--color-typography-950": "#171717", + '--color-typography-0': '254 254 255', + '--color-typography-50': '245 245 245', + '--color-typography-100': '229 229 229', + '--color-typography-200': '219 219 220', + '--color-typography-300': '212 212 212', + '--color-typography-400': '163 163 163', + '--color-typography-500': '140 140 140', + '--color-typography-600': '115 115 115', + '--color-typography-700': '82 82 82', + '--color-typography-800': '64 64 64', + '--color-typography-900': '38 38 39', + '--color-typography-950': '23 23 23', /* Outline */ - "--color-outline-0": "#FDFEFE", - "--color-outline-50": "#F3F3F3", - "--color-outline-100": "#E6E6E6", - "--color-outline-200": "#DDDCDB", - "--color-outline-300": "#D3D3D3", - "--color-outline-400": "#A5A3A3", - "--color-outline-500": "#8C8D8D", - "--color-outline-600": "#737474", - "--color-outline-700": "#535252", - "--color-outline-800": "#414141", - "--color-outline-900": "#272624", - "--color-outline-950": "#1A1717", + '--color-outline-0': '253 254 254', + '--color-outline-50': '243 243 243', + '--color-outline-100': '230 230 230', + '--color-outline-200': '221 220 219', + '--color-outline-300': '211 211 211', + '--color-outline-400': '165 163 163', + '--color-outline-500': '140 141 141', + '--color-outline-600': '115 116 116', + '--color-outline-700': '83 82 82', + '--color-outline-800': '65 65 65', + '--color-outline-900': '39 38 36', + '--color-outline-950': '26 23 23', + /* Background */ - "--color-background-0": "#FFFFFF", - "--color-background-50": "#F6F6F6", - "--color-background-100": "#F2F1F1", - "--color-background-200": "#DCDBDB", - "--color-background-300": "#D5D4D4", - "--color-background-400": "#A2A3A3", - "--color-background-500": "#8E8E8E", - "--color-background-600": "#747474", - "--color-background-700": "#535252", - "--color-background-800": "#414040", - "--color-background-900": "#272625", - "--color-background-950": "#181718", + '--color-background-0': '255 255 255', + '--color-background-50': '246 246 246', + '--color-background-100': '242 241 241', + '--color-background-200': '220 219 219', + '--color-background-300': '213 212 212', + '--color-background-400': '162 163 163', + '--color-background-500': '142 142 142', + '--color-background-600': '116 116 116', + '--color-background-700': '83 82 82', + '--color-background-800': '65 64 64', + '--color-background-900': '39 38 37', + '--color-background-950': '18 18 18', /* Background Special */ - "--color-background-error": "#FEF1F1", - "--color-background-warning": "#FFF4EB", - "--color-background-success": "#EDFCF2", - "--color-background-muted": "#F6F6F7", - "--color-background-info": "#EBF8FE", + '--color-background-error': '254 241 241', + '--color-background-warning': '255 243 234', + '--color-background-success': '237 252 242', + '--color-background-muted': '247 248 247', + '--color-background-info': '235 248 254', - /* Border */ - "--color-border-0": "#FDFEFE", - "--color-border-50": "#F3F3F3", - "--color-border-100": "#E6E6E6", - "--color-border-200": "#DDDCDB", - "--color-border-300": "#D3D3D3", - "--color-border-400": "#A5A3A3", - "--color-border-500": "#8C8D8D", - "--color-border-600": "#737474", - "--color-border-700": "#535252", - "--color-border-800": "#414141", - "--color-border-900": "#272624", - "--color-border-950": "#1A1717", + /* Focus Ring Indicator */ + '--color-indicator-primary': '55 55 55', + '--color-indicator-info': '83 153 236', + '--color-indicator-error': '185 28 28', }), dark: vars({ - "--color-primary-0": "#828282", - "--color-primary-50": "#949494", - "--color-primary-100": "#9E9E9E", - "--color-primary-200": "#B3B3B3", - "--color-primary-300": "#C7C7C7", - "--color-primary-400": "#E6E6E6", - "--color-primary-500": "#F0F0F0", - "--color-primary-600": "#FAFAFA", - "--color-primary-700": "#FCFCFC", - "--color-primary-800": "#FDFDFD", - "--color-primary-900": "#FDFCFC", - "--color-primary-950": "#FDFCFC", + '--color-primary-0': '166 166 166', + '--color-primary-50': '175 175 175', + '--color-primary-100': '186 186 186', + '--color-primary-200': '197 197 197', + '--color-primary-300': '212 212 212', + '--color-primary-400': '221 221 221', + '--color-primary-500': '230 230 230', + '--color-primary-600': '240 240 240', + '--color-primary-700': '250 250 250', + '--color-primary-800': '253 253 253', + '--color-primary-900': '254 249 249', + '--color-primary-950': '253 252 252', /* Secondary */ - "--color-secondary-0": "#0B0C0C", - "--color-secondary-50": "#181717", - "--color-secondary-100": "#272626", - "--color-secondary-200": "#3F4040", - "--color-secondary-300": "#515252", - "--color-secondary-400": "#5E5F5F", - "--color-secondary-500": "#727373", - "--color-secondary-600": "#AFB0B0", - "--color-secondary-700": "#DBDBDB", - "--color-secondary-800": "#E7E8E8", - "--color-secondary-900": "#F1F2F2", - "--color-secondary-950": "#FEFFFF", + '--color-secondary-0': '20 20 20', + '--color-secondary-50': '23 23 23', + '--color-secondary-100': '31 31 31', + '--color-secondary-200': '39 39 39', + '--color-secondary-300': '44 44 44', + '--color-secondary-400': '56 57 57', + '--color-secondary-500': '63 64 64', + '--color-secondary-600': '86 86 86', + '--color-secondary-700': '110 110 110', + '--color-secondary-800': '135 135 135', + '--color-secondary-900': '150 150 150', + '--color-secondary-950': '164 164 164', /* Tertiary */ - "--color-tertiary-0": "#543112", - "--color-tertiary-50": "#6C3D13", - "--color-tertiary-100": "#824917", - "--color-tertiary-200": "#B4621A", - "--color-tertiary-300": "#D7751F", - "--color-tertiary-400": "#E78128", - "--color-tertiary-500": "#FB9D4B", - "--color-tertiary-600": "#FDB474", - "--color-tertiary-700": "#FED1AA", - "--color-tertiary-800": "#FFE9D5", - "--color-tertiary-900": "#FFF2E5", - "--color-tertiary-950": "#FFFAF5", + '--color-tertiary-0': '84 49 18', + '--color-tertiary-50': '108 61 19', + '--color-tertiary-100': '130 73 23', + '--color-tertiary-200': '180 98 26', + '--color-tertiary-300': '215 117 31', + '--color-tertiary-400': '231 129 40', + '--color-tertiary-500': '251 157 75', + '--color-tertiary-600': '253 180 116', + '--color-tertiary-700': '254 209 170', + '--color-tertiary-800': '255 233 213', + '--color-tertiary-900': '255 242 229', + '--color-tertiary-950': '255 250 245', /* Error */ - "--color-error-0": "#531313", - "--color-error-50": "#7F1D1D", - "--color-error-100": "#991B1B", - "--color-error-200": "#B91C1C", - "--color-error-300": "#DC2626", - "--color-error-400": "#E63535", - "--color-error-500": "#EF4444", - "--color-error-600": "#F87171", - "--color-error-700": "#E63534", - "--color-error-800": "#FECACA", - "--color-error-900": "#FEE2E2", - "--color-error-950": "#FEE9E9", + '--color-error-0': '83 19 19', + '--color-error-50': '127 29 29', + '--color-error-100': '153 27 27', + '--color-error-200': '185 28 28', + '--color-error-300': '220 38 38', + '--color-error-400': '230 53 53', + '--color-error-500': '239 68 68', + '--color-error-600': '249 97 96', + '--color-error-700': '229 91 90', + '--color-error-800': '254 202 202', + '--color-error-900': '254 226 226', + '--color-error-950': '254 233 233', /* Success */ - "--color-success-0": "#1B3224", - "--color-success-50": "#14532D", - "--color-success-100": "#166534", - "--color-success-200": "#206F3E", - "--color-success-300": "#2A7948", - "--color-success-400": "#348352", - "--color-success-500": "#489766", - "--color-success-600": "#66B584", - "--color-success-700": "#84D3A2", - "--color-success-800": "#A2F1C0", - "--color-success-900": "#CAFFE8", - "--color-success-950": "#E4FFF4", + '--color-success-0': '27 50 36', + '--color-success-50': '20 83 45', + '--color-success-100': '22 101 52', + '--color-success-200': '32 111 62', + '--color-success-300': '42 121 72', + '--color-success-400': '52 131 82', + '--color-success-500': '72 151 102', + '--color-success-600': '102 181 132', + '--color-success-700': '132 211 162', + '--color-success-800': '162 241 192', + '--color-success-900': '202 255 232', + '--color-success-950': '228 255 244', /* Warning */ - "--color-warning-0": "#542D12", - "--color-warning-50": "#6C3813", - "--color-warning-100": "#824417", - "--color-warning-200": "#B45A1A", - "--color-warning-300": "#D76C1F", - "--color-warning-400": "#E77828", - "--color-warning-500": "#FB954B", - "--color-warning-600": "#FDAD74", - "--color-warning-700": "#FECDAA", - "--color-warning-800": "#FFE7D5", - "--color-warning-900": "#FFF9F5", - "--color-warning-950": "#FFFDFB", + '--color-warning-0': '84 45 18', + '--color-warning-50': '108 56 19', + '--color-warning-100': '130 68 23', + '--color-warning-200': '180 90 26', + '--color-warning-300': '215 108 31', + '--color-warning-400': '231 120 40', + '--color-warning-500': '251 149 75', + '--color-warning-600': '253 173 116', + '--color-warning-700': '254 205 170', + '--color-warning-800': '255 231 213', + '--color-warning-900': '255 244 237', + '--color-warning-950': '255 249 245', /* Info */ - "--color-info-0": "#032638", - "--color-info-50": "#05405D", - "--color-info-100": "#075A83", - "--color-info-200": "#0973A8", - "--color-info-300": "#0B8DCD", - "--color-info-400": "#0DA6F2", - "--color-info-500": "#32B4F4", - "--color-info-600": "#57C2F6", - "--color-info-700": "#7CCFF8", - "--color-info-800": "#A2DDFA", - "--color-info-900": "#C7EBFC", - "--color-info-950": "#ECF8FE", + '--color-info-0': '3 38 56', + '--color-info-50': '5 64 93', + '--color-info-100': '7 90 131', + '--color-info-200': '9 115 168', + '--color-info-300': '11 141 205', + '--color-info-400': '13 166 242', + '--color-info-500': '50 180 244', + '--color-info-600': '87 194 246', + '--color-info-700': '124 207 248', + '--color-info-800': '162 221 250', + '--color-info-900': '199 235 252', + '--color-info-950': '236 248 254', /* Typography */ - "--color-typography-0": "#171717", - "--color-typography-50": "#262627", - "--color-typography-100": "#404040", - "--color-typography-200": "#525252", - "--color-typography-300": "#737373", - "--color-typography-400": "#8C8C8C", - "--color-typography-500": "#A3A3A3", - "--color-typography-600": "#D4D4D4", - "--color-typography-700": "#DBDBDC", - "--color-typography-800": "#E5E5E5", - "--color-typography-900": "#F5F5F5", - "--color-typography-950": "#FEFEFF", + '--color-typography-0': '23 23 23', + '--color-typography-50': '38 38 39', + '--color-typography-100': '64 64 64', + '--color-typography-200': '82 82 82', + '--color-typography-300': '115 115 115', + '--color-typography-400': '140 140 140', + '--color-typography-500': '163 163 163', + '--color-typography-600': '212 212 212', + '--color-typography-700': '219 219 220', + '--color-typography-800': '229 229 229', + '--color-typography-900': '245 245 245', + '--color-typography-950': '254 254 255', /* Outline */ - "--color-outline-0": "#1A1717", - "--color-outline-50": "#272624", - "--color-outline-100": "#414141", - "--color-outline-200": "#535252", - "--color-outline-300": "#737474", - "--color-outline-400": "#8C8D8D", - "--color-outline-500": "#A5A3A3", - "--color-outline-600": "#D3D3D3", - "--color-outline-700": "#DDDCDB", - "--color-outline-800": "#E6E6E6", - "--color-outline-900": "#F3F3F3", - "--color-outline-950": "#FDFEFE", + '--color-outline-0': '26 23 23', + '--color-outline-50': '39 38 36', + '--color-outline-100': '65 65 65', + '--color-outline-200': '83 82 82', + '--color-outline-300': '115 116 116', + '--color-outline-400': '140 141 141', + '--color-outline-500': '165 163 163', + '--color-outline-600': '211 211 211', + '--color-outline-700': '221 220 219', + '--color-outline-800': '230 230 230', + '--color-outline-900': '243 243 243', + '--color-outline-950': '253 254 254', /* Background */ - "--color-background-0": "#121212", - "--color-background-50": "#272625", - "--color-background-100": "#414040", - "--color-background-200": "#535252", - "--color-background-300": "#747474", - "--color-background-400": "#8E8E8E", - "--color-background-500": "#A2A3A3", - "--color-background-600": "#D5D4D4", - "--color-background-700": "#DCDBDB", - "--color-background-800": "#F2F1F1", - "--color-background-900": "#F6F6F6", - "--color-background-950": "#FEFEFE", + '--color-background-0': '18 18 18', + '--color-background-50': '39 38 37', + '--color-background-100': '65 64 64', + '--color-background-200': '83 82 82', + '--color-background-300': '116 116 116', + '--color-background-400': '142 142 142', + '--color-background-500': '162 163 163', + '--color-background-600': '213 212 212', + '--color-background-700': '229 228 228', + '--color-background-800': '242 241 241', + '--color-background-900': '246 246 246', + '--color-background-950': '255 255 255', /* Background Special */ - "--color-background-error": "#422B2B", - "--color-background-warning": "#412F23", - "--color-background-success": "#1C2B21", - "--color-background-muted": "#252526", - "--color-background-info": "#1A282E", + '--color-background-error': '66 43 43', + '--color-background-warning': '65 47 35', + '--color-background-success': '28 43 33', + '--color-background-muted': '51 51 51', + '--color-background-info': '26 40 46', - /* Border */ - "--color-border-0": "#1A1717", - "--color-border-50": "#272624", - "--color-border-100": "#414141", - "--color-border-200": "#535252", - "--color-border-300": "#737474", - "--color-border-400": "#8C8D8D", - "--color-border-500": "#A5A3A3", - "--color-border-600": "#D3D3D3", - "--color-border-700": "#DDDCDB", - "--color-border-800": "#E6E6E6", - "--color-border-900": "#F3F3F3", - "--color-border-950": "#FDFEFE", + /* Focus Ring Indicator */ + '--color-indicator-primary': '247 247 247', + '--color-indicator-info': '161 199 245', + '--color-indicator-error': '232 70 69', }), }; diff --git a/next/components/ui/gluestack-ui-provider/index.tsx b/next/components/ui/gluestack-ui-provider/index.tsx index 4dc2cfe6..4855e434 100644 --- a/next/components/ui/gluestack-ui-provider/index.tsx +++ b/next/components/ui/gluestack-ui-provider/index.tsx @@ -1,22 +1,42 @@ import React from 'react'; import { config } from './config'; -import { View } from 'react-native'; +import { ColorSchemeName, useColorScheme, View, ViewProps } from 'react-native'; import { OverlayProvider } from '@gluestack-ui/overlay'; import { ToastProvider } from '@gluestack-ui/toast'; +import { colorScheme as colorSchemeNW } from 'nativewind'; + +type ModeType = 'light' | 'dark' | 'system'; + +const getColorSchemeName = ( + colorScheme: ColorSchemeName, + mode: ModeType +): 'light' | 'dark' => { + if (mode === 'system') { + return colorScheme ?? 'light'; + } + return mode; +}; export function GluestackUIProvider({ mode = 'light', ...props }: { - mode?: 'light' | 'dark'; - children?: any; + mode?: 'light' | 'dark' | 'system'; + children?: React.ReactNode; + style?: ViewProps['style']; }) { + const colorScheme = useColorScheme(); + + const colorSchemeName = getColorSchemeName(colorScheme, mode); + + colorSchemeNW.set(mode); + return ( diff --git a/next/components/ui/gluestack-ui-provider/index.web.tsx b/next/components/ui/gluestack-ui-provider/index.web.tsx index 086a7295..30cadaaa 100644 --- a/next/components/ui/gluestack-ui-provider/index.web.tsx +++ b/next/components/ui/gluestack-ui-provider/index.web.tsx @@ -1,36 +1,94 @@ 'use client'; -import React from 'react'; +import React, { useEffect, useLayoutEffect } from 'react'; import { config } from './config'; import { OverlayProvider } from '@gluestack-ui/overlay'; import { ToastProvider } from '@gluestack-ui/toast'; import { setFlushStyles } from '@gluestack-ui/nativewind-utils/flush'; +import { script } from './script'; + +const variableStyleTagId = 'nativewind-style'; +const createStyle = (styleTagId: string) => { + const style = document.createElement('style'); + style.id = styleTagId; + style.appendChild(document.createTextNode('')); + return style; +}; + +export const useSafeLayoutEffect = + typeof window !== 'undefined' ? useLayoutEffect : useEffect; export function GluestackUIProvider({ mode = 'light', ...props }: { - mode?: 'light' | 'dark'; - children?: any; + mode?: 'light' | 'dark' | 'system'; + children?: React.ReactNode; }) { - const stringcssvars = Object.keys(config[mode]).reduce((acc, cur) => { - acc += `${cur}:${config[mode][cur]};`; - return acc; - }, ''); - setFlushStyles(`:root {${stringcssvars}} `); - - if (config[mode] && typeof document !== 'undefined') { - const element = document.documentElement; - if (element) { - const head = element.querySelector('head'); - const style = document.createElement('style'); - style.innerHTML = `:root {${stringcssvars}} `; - if (head) head.appendChild(style); + let cssVariablesWithMode = ``; + Object.keys(config).forEach((configKey) => { + cssVariablesWithMode += + configKey === 'dark' ? `\n .dark {\n ` : `\n:root {\n`; + const cssVariables = Object.keys( + config[configKey as keyof typeof config] + ).reduce((acc: string, curr: string) => { + acc += `${curr}:${config[configKey as keyof typeof config][curr]}; `; + return acc; + }, ''); + cssVariablesWithMode += `${cssVariables} \n}`; + }); + + setFlushStyles(cssVariablesWithMode); + + const handleMediaQuery = React.useCallback((e: MediaQueryListEvent) => { + script(e.matches ? 'dark' : 'light'); + }, []); + + useSafeLayoutEffect(() => { + if (mode !== 'system') { + const documentElement = document.documentElement; + if (documentElement) { + documentElement.classList.add(mode); + documentElement.classList.remove(mode === 'light' ? 'dark' : 'light'); + documentElement.style.colorScheme = mode; + } + } + }, [mode]); + + useSafeLayoutEffect(() => { + if (mode !== 'system') return; + const media = window.matchMedia('(prefers-color-scheme: dark)'); + + media.addListener(handleMediaQuery); + + return () => media.removeListener(handleMediaQuery); + }, [handleMediaQuery]); + + useSafeLayoutEffect(() => { + if (typeof window !== 'undefined') { + const documentElement = document.documentElement; + if (documentElement) { + const head = documentElement.querySelector('head'); + let style = head?.querySelector(`[id='${variableStyleTagId}']`); + if (!style) { + style = createStyle(variableStyleTagId); + style.innerHTML = cssVariablesWithMode; + if (head) head.appendChild(style); + } + } } - } + }, []); return ( - - {props.children} - + <> +